@oh-hai/cli 0.2.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 (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
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,15 @@ export declare function resolveSubmitIdentity(ctx: CommandContext): Promise<{
22
22
  * + the submitter-bound bearer). Uses `resolveIdentity` so a zero-config single stored identity is
23
23
  * discovered for the token lookup. A missing token is an auth error (exit 3). */
24
24
  export declare function requireToken(ctx: CommandContext): Promise<string>;
25
+ /** The bearer PLUS the resolved agent id, for `inbox watch`: the token drains the mailbox, while the
26
+ * agent id keys the concurrent-drain lock (the mailbox is scoped to the AGENT, not the bearer — one
27
+ * agent can hold several tokens, #323). `account` may be undefined (an env token with no
28
+ * `MA2H_AGENT_ID`, or an ambiguous store) — the caller degrades the guard to "unavailable" then,
29
+ * never keying on the token. A missing token is still an auth error (exit 3). */
30
+ export declare function requireWatchIdentity(ctx: CommandContext): Promise<{
31
+ token: string;
32
+ agentId: string | undefined;
33
+ }>;
25
34
  /** The bearer for an `--envelope` replay. The captured envelope already carries the submitting
26
35
  * `agent.id`, so fall back to it for the store lookup when no explicit `--account` was given —
27
36
  * otherwise a user with a stored login but no `default_account` following the replay example
@@ -49,6 +49,27 @@ export async function requireToken(ctx) {
49
49
  }
50
50
  return token;
51
51
  }
52
+ /** The bearer PLUS the resolved agent id, for `inbox watch`: the token drains the mailbox, while the
53
+ * agent id keys the concurrent-drain lock (the mailbox is scoped to the AGENT, not the bearer — one
54
+ * agent can hold several tokens, #323). `account` may be undefined (an env token with no
55
+ * `MA2H_AGENT_ID`, or an ambiguous store) — the caller degrades the guard to "unavailable" then,
56
+ * never keying on the token. A missing token is still an auth error (exit 3). */
57
+ export async function requireWatchIdentity(ctx) {
58
+ const store = ctx.config.tokenSource === "env" ? undefined : await ctx.runtime.openStore();
59
+ const { token, account } = await resolveIdentity(ctx.config, store);
60
+ if (token === undefined) {
61
+ throw new CliError("auth", NOT_AUTHENTICATED);
62
+ }
63
+ // The lock key must be the agent that OWNS this bearer. In the store-backed path the token was looked
64
+ // up BY the agent id (or discovered as the sole stored identity), so the two are bound. But an ENV
65
+ // token is not bound to config: an account from a machine default (`default_account` or a directory
66
+ // binding) may name a DIFFERENT agent than the env bearer — locking on it would guard the wrong agent
67
+ // while draining another's mailbox. So alongside an env token, only trust an EXPLICITLY-supplied agent
68
+ // id (`--account` / `MA2H_AGENT_ID`); otherwise leave it undefined so the guard degrades to a warning.
69
+ const explicit = ctx.config.accountSource === "flag" || ctx.config.accountSource === "env";
70
+ const agentId = ctx.config.tokenSource === "env" && !explicit ? undefined : account;
71
+ return { token, agentId };
72
+ }
52
73
  /** The bearer for an `--envelope` replay. The captured envelope already carries the submitting
53
74
  * `agent.id`, so fall back to it for the store lookup when no explicit `--account` was given —
54
75
  * otherwise a user with a stored login but no `default_account` following the replay example
@@ -1 +1 @@
1
- {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/commands/messaging/identity.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,+FAA+F;AAC/F,2FAA2F;AAC3F,gGAAgG;AAChG,iGAAiG;AAEjG,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,2FAA2F;AAC3F,MAAM,iBAAiB,GAAG,oFAAoF,CAAC;AAE/G;;;;;;4BAM4B;AAC5B,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAmB,EAAE,eAAwB;IAC/E,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IAC3F,MAAM,MAAM,GAAG,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;IACxG,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;sGAMsG;AACtG,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAmB;IAC7D,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IAC3F,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAChB,OAAO,EACP,2HAA2H,CAC5H,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACrC,CAAC;AAED;;kFAEkF;AAClF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAmB;IACpD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IAC3F,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;kFAGkF;AAClF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAmB,EAAE,eAAuB;IACnF,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IACxD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/commands/messaging/identity.ts"],"names":[],"mappings":"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"}
@@ -16,14 +16,15 @@ export declare function isActor(value: string): value is Actor;
16
16
  export declare function normalizePushUrl(raw: string): string;
17
17
  /** Parse `value:label` (label may itself contain ':'). Throws a usage CliError on a bad shape. */
18
18
  export declare function parseOption(raw: string): ResponseOption;
19
- /** A task/ask is resolvable only when allowed_resolvers names ≥1 concrete `human:<id>` the
20
- * resolve route is human-only and fail-closed (spec §5.4), so a message with none (or only
21
- * agent:/system: resolvers) can never be marked done and sits open until expiry. */
19
+ /** True when allowed_resolvers names ≥1 `human:<id>`. The Hub always lets the account OWNER resolve
20
+ * (issue #366) an omitted/empty list is owner-only, and a non-owner human may resolve only if
21
+ * explicitly listed (fail-closed, spec §5.4). Callers use this to nudge when the ONLY resolvers
22
+ * given are non-human: the resolve route is human-only, so such a list narrows to the owner alone. */
22
23
  export declare function hasHumanResolver(resolvers: readonly unknown[] | undefined): boolean;
23
24
  /** Stricter than `hasHumanResolver`: requires ≥1 `human:<id>` with a CONCRETE (non-wildcard,
24
25
  * non-empty) id. The Hub matches allowed_resolvers literally (`allowed.includes(actor)`), so a
25
- * captured `human:*` can never match any real actor — the replay guard must reject it exactly as
26
- * the compose path does, or the replayed ask/task is submitted unresolvable. */
26
+ * captured `human:*` can never match any real actor — the replay callers use this to note (and
27
+ * proceed) that only the account owner will be able to resolve the replayed ask/task. */
27
28
  export declare function hasConcreteHumanResolver(resolvers: readonly unknown[] | undefined): boolean;
28
29
  /** Read the `--envelope` source: inline JSON, `@<path>` (local file), or `@-` (stdin, via the
29
30
  * injected reader so tests never touch fd 0). */
@@ -53,16 +53,17 @@ export function parseOption(raw) {
53
53
  }
54
54
  return { value, label };
55
55
  }
56
- /** A task/ask is resolvable only when allowed_resolvers names ≥1 concrete `human:<id>` the
57
- * resolve route is human-only and fail-closed (spec §5.4), so a message with none (or only
58
- * agent:/system: resolvers) can never be marked done and sits open until expiry. */
56
+ /** True when allowed_resolvers names ≥1 `human:<id>`. The Hub always lets the account OWNER resolve
57
+ * (issue #366) an omitted/empty list is owner-only, and a non-owner human may resolve only if
58
+ * explicitly listed (fail-closed, spec §5.4). Callers use this to nudge when the ONLY resolvers
59
+ * given are non-human: the resolve route is human-only, so such a list narrows to the owner alone. */
59
60
  export function hasHumanResolver(resolvers) {
60
61
  return (resolvers ?? []).some((r) => typeof r === "string" && r.startsWith("human:"));
61
62
  }
62
63
  /** Stricter than `hasHumanResolver`: requires ≥1 `human:<id>` with a CONCRETE (non-wildcard,
63
64
  * non-empty) id. The Hub matches allowed_resolvers literally (`allowed.includes(actor)`), so a
64
- * captured `human:*` can never match any real actor — the replay guard must reject it exactly as
65
- * the compose path does, or the replayed ask/task is submitted unresolvable. */
65
+ * captured `human:*` can never match any real actor — the replay callers use this to note (and
66
+ * proceed) that only the account owner will be able to resolve the replayed ask/task. */
66
67
  export function hasConcreteHumanResolver(resolvers) {
67
68
  return (resolvers ?? []).some((r) => {
68
69
  if (typeof r !== "string" || !r.startsWith("human:"))
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/messaging/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/messaging/validate.ts"],"names":[],"mappings":"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"}
@@ -53,7 +53,7 @@ export const COMMANDS = [
53
53
  },
54
54
  {
55
55
  name: "whoami",
56
- summary: "show agent id + base URL + token presence (never the token)",
56
+ summary: "show agent id + how it resolved + base URL + token presence (never the token)",
57
57
  issue: 106,
58
58
  subcommands: [],
59
59
  help: [
@@ -61,7 +61,30 @@ export const COMMANDS = [
61
61
  "",
62
62
  "Usage: oh-hai whoami [--check]",
63
63
  "",
64
- "Prints agent id, base URL, and token presence. --check probes the Hub for validity.",
64
+ "Prints agent id, how it resolved (flag / env / directory binding / user config /",
65
+ "discovered), base URL, and token presence. --check probes the Hub for validity and,",
66
+ "when you're signed in as a human, prints your resolver id (`human:<id>`) — the actor",
67
+ "an agent addresses to route an ask/task to you.",
68
+ ].join("\n"),
69
+ },
70
+ {
71
+ name: "use",
72
+ summary: "bind this directory to an agent (per-project identity, no --account juggling)",
73
+ issue: 307,
74
+ subcommands: [],
75
+ help: [
76
+ "oh-hai use — bind the current directory to an agent (cli spec §4 / §6).",
77
+ "",
78
+ "Usage: oh-hai use <agent> bind this directory (and its subtree) to <agent>",
79
+ " oh-hai use --list list all directory bindings",
80
+ " oh-hai use --unset remove this directory's binding",
81
+ "",
82
+ "Sessions run from a bound directory tree resolve to its agent automatically — no",
83
+ "--account needed. Bindings are USER-side (~/.config/oh-hai/bindings.json), scoped per",
84
+ "Hub, and NEVER settable from a repo (credential-safety §6). Resolution walks up from",
85
+ "the current directory (git-style) to the nearest bound ancestor. Precedence:",
86
+ "--account / MA2H_AGENT_ID > directory binding > user default_account. Offline — no",
87
+ "Hub call, and the agent need not be logged in yet.",
65
88
  ].join("\n"),
66
89
  },
67
90
  {
@@ -87,10 +110,11 @@ export const COMMANDS = [
87
110
  "oh-hai ask — request a human decision.",
88
111
  "",
89
112
  "Usage: oh-hai ask submit --mode <select|input|confirm> --title <t>",
90
- " --resolver human:<id> [--option k:Label]... [--schema <json>]",
113
+ " [--resolver human:<id>]... [--option k:Label]... [--schema <json>]",
91
114
  " oh-hai ask await --id <id> [--interval <ms>] [--await-timeout <ms>]",
92
115
  "",
93
- "Carries a REQUIRED idempotency key. See cli spec §4.4.",
116
+ "Carries a REQUIRED idempotency key. --resolver is optional: with none, the account",
117
+ "owner can answer (it needn't be hand-typed). See cli spec §4.4.",
94
118
  ].join("\n"),
95
119
  },
96
120
  {
@@ -101,11 +125,12 @@ export const COMMANDS = [
101
125
  help: [
102
126
  "oh-hai task — hand a human a manual action.",
103
127
  "",
104
- "Usage: oh-hai task submit --instructions <text> --title <t> --resolver human:<id>",
128
+ "Usage: oh-hai task submit --instructions <text> --title <t> [--resolver human:<id>]...",
105
129
  " [--checklist <text>]... [--callback pull|push]",
106
130
  " oh-hai task await --id <id> [--interval <ms>] [--await-timeout <ms>]",
107
131
  "",
108
- "Terminal by default. See cli spec §4.4.",
132
+ "Terminal by default. --resolver is optional: with none, the account owner can mark",
133
+ "it done. See cli spec §4.4.",
109
134
  ].join("\n"),
110
135
  },
111
136
  {
@@ -131,14 +156,17 @@ export const COMMANDS = [
131
156
  help: [
132
157
  "oh-hai inbox — the human→agent inbound leg (MA2H v0.4).",
133
158
  "",
134
- "Usage: oh-hai inbox watch [--interval <ms>] [--once] [--max <n>]",
159
+ "Usage: oh-hai inbox watch [--interval <ms>] [--once] [--max <n>] [--force]",
135
160
  "",
136
161
  "watch drains your agent's mailbox, streams each directive to stdout for the",
137
162
  "agent runtime, posts a single batched ack, and — because each authenticated",
138
163
  "poll is the presence heartbeat — keeps you 'online' by polling on --interval",
139
164
  "(default 5000ms). Under --json each directive is one NDJSON envelope. --once",
140
165
  "drains a single batch and exits (cron / scripting). --max caps the drain size.",
141
- "See cli spec §4.7.",
166
+ "Only one watcher per identity may drain ON THIS MACHINE: a second is refused",
167
+ "(exit 10) so two local sessions can't race to consume the same directive; --force",
168
+ "takes over. Watchers on different machines aren't detected and will split the",
169
+ "mailbox. See cli spec §4.7.",
142
170
  ].join("\n"),
143
171
  },
144
172
  {
@@ -154,6 +182,41 @@ export const COMMANDS = [
154
182
  "Local checks run offline; connectivity + --test-notify are network checks. See cli spec §4.6.",
155
183
  ].join("\n"),
156
184
  },
185
+ {
186
+ name: "teach",
187
+ summary: "teach this machine's agents about OH HAI (AGENTS.md snippet)",
188
+ issue: 295,
189
+ subcommands: [],
190
+ help: [
191
+ "oh-hai teach — teach this machine's agents that OH HAI exists (cli spec §4.9).",
192
+ "",
193
+ "Usage: oh-hai teach [--global] [--dry-run] [--yes]",
194
+ "",
195
+ "Writes a vendor-neutral OH HAI snippet into the agent-instruction files this machine's",
196
+ "agents already read: the cross-vendor AGENTS.md (project-level by default; --global for",
197
+ "the user-level convention path) plus any detected vendor files (CLAUDE.md, GEMINI.md, …).",
198
+ "Idempotent — a stable marked block it updates in place, never a duplicate; never a secret.",
199
+ "--dry-run previews what it would touch; --yes skips the confirm (required under --json).",
200
+ ].join("\n"),
201
+ },
202
+ {
203
+ name: "upgrade",
204
+ summary: "check for a newer oh-hai and self-update (or print how)",
205
+ issue: 343,
206
+ subcommands: [],
207
+ help: [
208
+ "oh-hai upgrade — update the CLI to the latest published version (cli spec §4 / #277).",
209
+ "",
210
+ "Usage: oh-hai upgrade [--check]",
211
+ "",
212
+ "Checks the npm registry for a newer @oh-hai/cli and acts by how you installed it: a global npm",
213
+ "install self-updates with `npm i -g @oh-hai/cli@latest`, and a standalone binary downloads the",
214
+ "matching release, checksum-verifies it, and swaps itself in place — both only in interactive",
215
+ "sessions (a pipe / CI / --json prints guidance instead, never mutating silently). A source",
216
+ "checkout gets guidance rather than a fabricated upgrade. --check reports availability without",
217
+ "changing anything. Already-latest and offline are both reported honestly.",
218
+ ].join("\n"),
219
+ },
157
220
  ];
158
221
  export function findCommand(name) {
159
222
  return COMMANDS.find((command) => command.name === name);
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/commands/registry.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,mFAAmF;AACnF,kFAAkF;AAClF,kGAAkG;AAelG,MAAM,CAAC,MAAM,QAAQ,GAA2B;IAC9C;QACE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,8DAA8D;QACvE,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,EAAE;QACf,IAAI,EAAE;YACJ,gEAAgE;YAChE,EAAE;YACF,qBAAqB;YACrB,EAAE;YACF,mFAAmF;YACnF,oFAAoF;YACpF,sFAAsF;YACtF,uFAAuF;YACvF,mDAAmD;SACpD,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;IACD;QACE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,+CAA+C;QACxD,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,EAAE;QACf,IAAI,EAAE;YACJ,iEAAiE;YACjE,EAAE;YACF,wCAAwC;YACxC,uEAAuE;YACvE,EAAE;YACF,mFAAmF;YACnF,mFAAmF;YACnF,yEAAyE;YACzE,mFAAmF;YACnF,qCAAqC;SACtC,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,yBAAyB;QAClC,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,EAAE;QACf,IAAI,EAAE;YACJ,kFAAkF;YAClF,EAAE;YACF,+CAA+C;YAC/C,EAAE;YACF,6DAA6D;SAC9D,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,6DAA6D;QACtE,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,EAAE;QACf,IAAI,EAAE;YACJ,0EAA0E;YAC1E,EAAE;YACF,gCAAgC;YAChC,EAAE;YACF,qFAAqF;SACtF,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,uCAAuC;QAChD,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,EAAE;QACf,IAAI,EAAE;YACJ,uEAAuE;YACvE,EAAE;YACF,qFAAqF;YACrF,iDAAiD;YACjD,EAAE;YACF,2EAA2E;SAC5E,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;IACD;QACE,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,gCAAgC;QACzC,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;QAChC,IAAI,EAAE;YACJ,wCAAwC;YACxC,EAAE;YACF,oEAAoE;YACpE,wFAAwF;YACxF,6EAA6E;YAC7E,EAAE;YACF,wDAAwD;SACzD,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;IACD;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,qCAAqC;QAC9C,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;QAChC,IAAI,EAAE;YACJ,6CAA6C;YAC7C,EAAE;YACF,mFAAmF;YACnF,0EAA0E;YAC1E,8EAA8E;YAC9E,EAAE;YACF,yCAAyC;SAC1C,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,yCAAyC;QAClD,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;QACzC,IAAI,EAAE;YACJ,gDAAgD;YAChD,EAAE;YACF,2BAA2B;YAC3B,6CAA6C;YAC7C,yDAAyD;YACzD,EAAE;YACF,oBAAoB;SACrB,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;IACD;QACE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,8DAA8D;QACvE,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,IAAI,EAAE;YACJ,yDAAyD;YACzD,EAAE;YACF,kEAAkE;YAClE,EAAE;YACF,6EAA6E;YAC7E,6EAA6E;YAC7E,8EAA8E;YAC9E,8EAA8E;YAC9E,gFAAgF;YAChF,oBAAoB;SACrB,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,uDAAuD;QAChE,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,EAAE;QACf,IAAI,EAAE;YACJ,kEAAkE;YAClE,EAAE;YACF,sCAAsC;YACtC,EAAE;YACF,+FAA+F;SAChG,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;CACF,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/commands/registry.ts"],"names":[],"mappings":"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"}
@@ -7,3 +7,20 @@ export interface SetupPrecomputed {
7
7
  status?: MachineStatus;
8
8
  }
9
9
  export declare function setupCommand(ctx: CommandContext, pre?: SetupPrecomputed): Promise<void>;
10
+ /**
11
+ * Bare-`oh-hai` project-onboarding offer for an ALREADY-SET-UP machine (#322, part of #307). When this
12
+ * machine has MULTIPLE connected agents and the current directory is UNBOUND, the no-flag messaging
13
+ * workflow is ambiguous — resolution refuses to guess among several stored identities, so
14
+ * `notify`/`ask`/`task` fail without `--account`. Offer the one-prompt fix: create a PROJECT-SCOPED
15
+ * agent via the shared device flow (the human creates + labels it in the browser; the CLI can only
16
+ * SUGGEST the project name — the browser owns agent creation, and the CLI holds no human session to mint
17
+ * `/v1/agents` directly), then BIND this directory to the returned agent so sessions in the tree resolve
18
+ * to it with no `--account`. Purely additive: the single-agent and zero-config/env paths never reach the
19
+ * prompt (they carry `storedCount <= 1`), so the #271 happy path is untouched.
20
+ *
21
+ * Returns true when it HANDLED the bare invocation (it offered — whether the human accepted or declined),
22
+ * so the caller skips its default help; false when the conditions don't apply and the caller should print
23
+ * help as before. Never prompts (or hangs) under `--json` or a non-interactive stdin — the same gate
24
+ * `handleAlreadySetUp`'s reconnect prompt uses. Every gate lives here so the behavior is one testable unit.
25
+ */
26
+ export declare function offerProjectAgent(ctx: CommandContext, status: MachineStatus): Promise<boolean>;
@@ -10,7 +10,9 @@
10
10
  // - ALREADY set up → never a dead end: report the current identity, and (interactively) offer to
11
11
  // connect another agent / re-authorize. Under --json or a non-interactive stdin, just report and
12
12
  // exit 0 — no prompt, no hang.
13
+ import { basename, isAbsolute } from "node:path";
13
14
  import { originOf } from "../auth/resolve-token.js";
15
+ import { bindingStoreStatus, setBinding } from "../bindings.js";
14
16
  import { buildOk, serializeEnvelope } from "../envelope.js";
15
17
  import { sanitizeForTerminal } from "../terminal.js";
16
18
  import { machineStatus } from "../onboarding/status.js";
@@ -95,10 +97,19 @@ async function reportNextSteps(ctx, storedAgentId) {
95
97
  return;
96
98
  }
97
99
  // A configured account that isn't the agent just bound won't resolve this bearer (notify/ask look up
98
- // only the configured account). Note this rather than claim success.
100
+ // only the configured account). Note this rather than claim success — and give the remedy that matches
101
+ // HOW the account resolved: a directory binding still wins on the next command, so "run without
102
+ // --account" is wrong there; point at re-binding / unsetting the directory instead (§6, #321).
99
103
  if (ctx.config.account !== undefined && ctx.config.account !== storedAgentId) {
100
- ctx.io.err(`oh-hai: connected as ${stored}, but --account/MA2H_AGENT_ID is ${sanitizeForTerminal(ctx.config.account)}. ` +
101
- `Run without --account, or set MA2H_AGENT_ID=${stored}, to use this agent.`);
104
+ const active = sanitizeForTerminal(ctx.config.account);
105
+ if (ctx.config.accountSource === "binding") {
106
+ ctx.io.err(`oh-hai: connected as ${stored}, but this directory is bound to ${active}. ` +
107
+ `Run \`oh-hai use ${stored}\` to rebind it here (or \`oh-hai use --unset\`) to use this agent.`);
108
+ }
109
+ else {
110
+ ctx.io.err(`oh-hai: connected as ${stored}, but --account/MA2H_AGENT_ID is ${active}. ` +
111
+ `Run without --account, or set MA2H_AGENT_ID=${stored}, to use this agent.`);
112
+ }
102
113
  return;
103
114
  }
104
115
  // Zero-config resolution refuses to guess among multiple stored agents — adding a second one makes the
@@ -109,6 +120,9 @@ async function reportNextSteps(ctx, storedAgentId) {
109
120
  return;
110
121
  }
111
122
  ctx.io.err(allSet);
123
+ // The final onboarding step: teach this machine's agents that OH HAI exists so they actually reach for
124
+ // it. A pointer only — `teach` writes files, so it stays an explicit opt-in, never auto-run here.
125
+ ctx.io.err("oh-hai: to teach this machine's agents to use OH HAI, run `oh-hai teach` (writes an AGENTS.md snippet).");
112
126
  }
113
127
  /** Human phrasing for who the machine is connected as, across the env / sole / multiple cases. */
114
128
  function describeIdentity(status) {
@@ -118,4 +132,90 @@ function describeIdentity(status) {
118
132
  return "via the MA2H_AGENT_TOKEN environment credential";
119
133
  return `with ${status.storedCount} connected agents`;
120
134
  }
135
+ /**
136
+ * Bare-`oh-hai` project-onboarding offer for an ALREADY-SET-UP machine (#322, part of #307). When this
137
+ * machine has MULTIPLE connected agents and the current directory is UNBOUND, the no-flag messaging
138
+ * workflow is ambiguous — resolution refuses to guess among several stored identities, so
139
+ * `notify`/`ask`/`task` fail without `--account`. Offer the one-prompt fix: create a PROJECT-SCOPED
140
+ * agent via the shared device flow (the human creates + labels it in the browser; the CLI can only
141
+ * SUGGEST the project name — the browser owns agent creation, and the CLI holds no human session to mint
142
+ * `/v1/agents` directly), then BIND this directory to the returned agent so sessions in the tree resolve
143
+ * to it with no `--account`. Purely additive: the single-agent and zero-config/env paths never reach the
144
+ * prompt (they carry `storedCount <= 1`), so the #271 happy path is untouched.
145
+ *
146
+ * Returns true when it HANDLED the bare invocation (it offered — whether the human accepted or declined),
147
+ * so the caller skips its default help; false when the conditions don't apply and the caller should print
148
+ * help as before. Never prompts (or hangs) under `--json` or a non-interactive stdin — the same gate
149
+ * `handleAlreadySetUp`'s reconnect prompt uses. Every gate lives here so the behavior is one testable unit.
150
+ */
151
+ export async function offerProjectAgent(ctx, status) {
152
+ // Only the ambiguous multi-identity case warrants a prompt: >1 resolvable stored identity means the
153
+ // no-flag workflow can't pick one. `storedCount` is 0 on the env-token / configured-account paths, so
154
+ // those (and the single-agent default) fall straight through to help — the happy path stays prompt-free.
155
+ if (status.storedCount <= 1)
156
+ return false;
157
+ // A directory already bound to an agent resolves unambiguously — nothing to offer. `accountSource` is
158
+ // "binding" whenever resolution walked up to a binding on this dir OR an ancestor, so a subtree of a
159
+ // bound project is covered too. (Via the cli.ts bare dispatch this is redundant — a resolved binding
160
+ // sets `config.account`, which makes `machineStatus` report `storedCount <= 1`, so the gate above
161
+ // already returned — but it's the load-bearing bound-tree guard for a DIRECT caller / the unit tests,
162
+ // so keep it rather than rely on the storedCount coupling.)
163
+ if (ctx.config.accountSource === "binding")
164
+ return false;
165
+ // Never prompt under --json (stdout is reserved for the envelope) or a non-interactive stdin (a pipe /
166
+ // CI would block on a `readLine` that never gets a line) — mirrors `handleAlreadySetUp`'s gate. Gate on
167
+ // real TTY-ness, not merely `readLine` presence (production always wires `readLine`).
168
+ if (ctx.json)
169
+ return false;
170
+ const interactive = (ctx.runtime.isInteractive?.() ?? false) && ctx.runtime.readLine !== undefined;
171
+ if (!interactive)
172
+ return false;
173
+ // Need a writable bindings store with an absolute cwd to persist the bind; without it, don't send the
174
+ // human through a browser flow whose binding can't be written afterward (mirrors `use`'s write preflight
175
+ // — "unavailable"/"unsupported-version" both mean a bind would be lost or would clobber a newer file).
176
+ const io = ctx.runtime.bindingsIo;
177
+ if (io === undefined || !isAbsolute(io.cwd) || bindingStoreStatus(io) !== "ok")
178
+ return false;
179
+ const project = sanitizeForTerminal(basename(io.cwd));
180
+ ctx.io.err(`oh-hai: this machine has ${status.storedCount} connected agents and this directory isn't bound to one.`);
181
+ ctx.io.err(`oh-hai: create a new agent for "${project}" and bind this directory to it? [y/N]: `);
182
+ const answer = (await ctx.runtime.readLine()).trim().toLowerCase();
183
+ if (answer !== "y" && answer !== "yes") {
184
+ // Declined — point at the manual paths and stop. We HANDLED the bare invocation, so don't also print
185
+ // help (returning true suppresses the caller's fallback).
186
+ ctx.io.err("oh-hai: ok — run `oh-hai use <agent>` to bind this directory to an existing agent, or pass `--account <id>` per command.");
187
+ return true;
188
+ }
189
+ // Suggest the label the human types on /activate (the browser owns agent creation + labeling). The
190
+ // device flow stores the returned bearer under the new agent id — never printed (§5.4).
191
+ ctx.io.err(`oh-hai: approve in your browser and create an agent — suggested label: ${project}.`);
192
+ const agentId = await runDeviceCodeFlow(ctx, "setup");
193
+ const boundAgent = sanitizeForTerminal(agentId);
194
+ // Bind cwd → the new agent so this tree resolves to it with no --account (resolveConfig precedence:
195
+ // flag > env > binding > user-default). setBinding writes ONLY the user-side store (credential-safe §6).
196
+ //
197
+ // The write preflight above ran BEFORE the (multi-minute) browser approval, so re-check the store here:
198
+ // if it went unwritable during the wait, or a NEWER CLI wrote a v2 bindings.json meanwhile, blindly
199
+ // calling setBinding would throw a raw OS error (unwritable) or SILENTLY clobber the newer file
200
+ // (loadBindings read-degrades a v2 doc to [], then writeBindings stamps a fresh v1). The agent is
201
+ // already minted + its bearer stored, so don't fail opaquely — tell the human exactly how to finish the
202
+ // bind by hand (mirrors the post-mint recovery guidance in `agents create`, commands/agents.ts).
203
+ if (bindingStoreStatus(io) !== "ok") {
204
+ ctx.io.err(`oh-hai: connected as ${boundAgent}, but this directory's binding could not be written ` +
205
+ `(the bindings file changed during approval). Run \`oh-hai use ${boundAgent}\` here to bind it.`);
206
+ return true;
207
+ }
208
+ let path;
209
+ try {
210
+ path = setBinding(io, io.cwd, originOf(ctx.config.baseUrl), agentId);
211
+ }
212
+ catch {
213
+ ctx.io.err(`oh-hai: connected as ${boundAgent}, but the directory binding could not be saved. ` +
214
+ `Run \`oh-hai use ${boundAgent}\` here to bind this directory to it.`);
215
+ return true;
216
+ }
217
+ ctx.io.err(`oh-hai: bound ${sanitizeForTerminal(path)} → ${boundAgent} — this directory now acts as ${boundAgent}.`);
218
+ ctx.io.err('oh-hai: try `oh-hai notify --title "hello"`, or run `oh-hai doctor` to verify.');
219
+ return true;
220
+ }
121
221
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,+FAA+F;AAC/F,4FAA4F;AAC5F,EAAE;AACF,mGAAmG;AACnG,kGAAkG;AAClG,4FAA4F;AAC5F,qGAAqG;AACrG,0EAA0E;AAC1E,mGAAmG;AACnG,qGAAqG;AACrG,mCAAmC;AAEnC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAsB,MAAM,yBAAyB,CAAC;AAE5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAS/C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAmB,EAAE,MAAwB,EAAE;IAChF,iGAAiG;IACjG,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAE/B,oGAAoG;IACpG,sDAAsD;IACtD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAE9F,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;QACzB,OAAO;IACT,CAAC;IACD,MAAM,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACxC,CAAC;AAED;;;wEAGwE;AACxE,KAAK,UAAU,aAAa,CAAC,GAAmB;IAC9C,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACd,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,yCAAyC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrF,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAC;IAChG,CAAC;IACD,iGAAiG;IACjG,6EAA6E;IAC7E,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,wGAAwG;AACxG,KAAK,UAAU,kBAAkB,CAAC,GAAmB,EAAE,MAAqB;IAC1E,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEzC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,iEAAiE;QACjE,GAAG,CAAC,EAAE,CAAC,GAAG,CACR,iBAAiB,CACf,OAAO,CAAC,OAAO,EAAE;YACf,MAAM,EAAE,oBAAoB;YAC5B,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO;YAC5B,QAAQ,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;YAChC,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CACH,CACF,CAAC;QACF,OAAO;IACT,CAAC;IAED,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,wCAAwC,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAEvF,sGAAsG;IACtG,uGAAuG;IACvG,sGAAsG;IACtG,iGAAiG;IACjG,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC;IACnG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,4FAA4F,CAAC,CAAC;QACzG,OAAO;IACT,CAAC;IAED,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,QAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpE,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,eAAe,CAAC,GAAmB,EAAE,aAAqB;IACvE,IAAI,GAAG,CAAC,IAAI;QAAE,OAAO;IACrB,MAAM,MAAM,GAAG,iGAAiG,CAAC;IACjH,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAElD,gGAAgG;IAChG,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC3B,GAAG,CAAC,EAAE,CAAC,GAAG,CACR,wBAAwB,MAAM,kFAAkF,CACjH,CAAC;QACF,OAAO;IACT,CAAC;IACD,qGAAqG;IACrG,qEAAqE;IACrE,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;QAC7E,GAAG,CAAC,EAAE,CAAC,GAAG,CACR,wBAAwB,MAAM,oCAAoC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;YAC3G,+CAA+C,MAAM,sBAAsB,CAC9E,CAAC;QACF,OAAO;IACT,CAAC;IACD,uGAAuG;IACvG,4FAA4F;IAC5F,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,EAAE,CAAC,GAAG,CACR,gCAAgC,KAAK,CAAC,WAAW,0CAA0C,MAAM,GAAG;YAClG,mCAAmC,CACtC,CAAC;QACF,OAAO;IACT,CAAC;IACD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACrB,CAAC;AAED,kGAAkG;AAClG,SAAS,gBAAgB,CAAC,MAAqB;IAC7C,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,MAAM,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACrF,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK;QAAE,OAAO,iDAAiD,CAAC;IACtF,OAAO,QAAQ,MAAM,CAAC,WAAW,mBAAmB,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  // `oh-hai task` (docs/specs/cli.md §4.4) — hand a human a manual action. Subcommands `submit` +
2
2
  // `await`. Productized from `scripts/task.ts`: account-aware bearer, `--json` envelope, §7 exit
3
- // codes, injectable fetch. TERMINAL by default — `--callback` is pure opt-in; ≥1 `human:`
4
- // resolver is REQUIRED for a real submit (the resolve route is human-only). A task Response
5
- // carries no `value` (resolutions are completed / dismissed / expired).
3
+ // codes, injectable fetch. TERMINAL by default — `--callback` is pure opt-in. `--resolver` is
4
+ // OPTIONAL (issue #366): with none, the Hub lets the account owner mark the task done, so the agent
5
+ // needn't hand-type an id it can't know; `allowed_resolvers` is an optional narrowing. A task
6
+ // Response carries no `value` (resolutions are completed / dismissed / expired).
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";
@@ -67,7 +68,7 @@ async function taskSubmit(ctx, flags) {
67
68
  const callback = resolveCallback(flags); // undefined → terminal task (opt-in)
68
69
  const checklistRaw = Array.isArray(flags.checklist) ? flags.checklist.filter((c) => typeof c === "string") : [];
69
70
  const checklist = checklistRaw.map((text) => ({ text }));
70
- const resolvers = resolveResolvers(flags, dryRun, ctx);
71
+ const resolvers = resolveResolvers(flags, ctx);
71
72
  const action = { instructions };
72
73
  if (checklist.length > 0)
73
74
  action.checklist = checklist;
@@ -122,13 +123,13 @@ async function taskReplay(ctx, envelopeRaw, flags, dryRun) {
122
123
  throw new CliError("usage", `--envelope is not valid JSON: ${error instanceof Error ? error.message : String(error)}`);
123
124
  }
124
125
  const envelope = assertTaskEnvelope(parsed);
126
+ // A captured envelope with no concrete human:<id> in allowed_resolvers is still resolvable by the
127
+ // account owner (issue #366) — the Hub always authorizes the account owner (a non-owner human is
128
+ // fail-closed: it may resolve only if explicitly listed, so an omitted list is owner-only), so this
129
+ // is no longer a submit-blocking dead-end. Note it (an all-wildcard/agent narrowing is unusual) but proceed.
125
130
  if (!hasConcreteHumanResolver(replayResolvers(envelope))) {
126
- if (!dryRun) {
127
- throw new CliError("usage", "--envelope task has no concrete human:<id> resolver in action.allowed_resolvers (a wildcard can " +
128
- "never match): the resolve route is human-only, so it could never be marked done (inbox Done/Dismiss → " +
129
- "403) and would sit open forever. Capture the envelope with a concrete human resolver. (Use --dry-run to preview anyway.)");
130
- }
131
- ctx.io.err("⚠ --envelope task has no concrete human:<id> resolver: this previewed replay would be UNRESOLVABLE.");
131
+ ctx.io.err("note: --envelope task lists no concrete human:<id> in action.allowed_resolvers; it will be resolvable " +
132
+ "by the account owner (the resolve route is human-only).");
132
133
  }
133
134
  if (dryRun) {
134
135
  printDryRunEnvelope(ctx, "task.submit", envelope);
@@ -175,7 +176,7 @@ function resolveCallback(flags) {
175
176
  }
176
177
  return { mode: "pull" };
177
178
  }
178
- function resolveResolvers(flags, dryRun, ctx) {
179
+ function resolveResolvers(flags, ctx) {
179
180
  const raw = Array.isArray(flags.resolver) ? flags.resolver.filter((r) => typeof r === "string") : [];
180
181
  const resolvers = [];
181
182
  for (const r of raw) {
@@ -186,19 +187,15 @@ function resolveResolvers(flags, dryRun, ctx) {
186
187
  }
187
188
  resolvers.push(r);
188
189
  }
189
- // A task needs a concrete human resolver to be resolvable the resolve route is human-only, so
190
- // a task with none (or only agent:/system: resolvers) can never be marked done and stays open
191
- // forever. "Terminal by default" means the AGENT doesn't wait not that a human can act on a
192
- // human-resolver-less task. A real submit without one is a hard error; --dry-run may preview.
193
- if (!hasHumanResolver(resolvers)) {
194
- if (!dryRun) {
195
- const detail = resolvers.length > 0
196
- ? `the only --resolver(s) given (${resolvers.join(", ")}) are not human:<id>`
197
- : "with none it fails closed to agent:<id> only";
198
- throw new CliError("usage", `a task needs at least one --resolver human:<id>: ${detail}, and the resolve route is human-only, so ` +
199
- "the task could never be marked done. (Use --dry-run to preview the envelope without one.)");
200
- }
201
- ctx.io.err("⚠ no --resolver human:<id> given: this previewed task would be UNRESOLVABLE (resolve is human-only).");
190
+ // No --resolver is fine (issue #366): with no allowed_resolvers the Hub lets the account OWNER mark
191
+ // the task done the agent needn't (and can't reliably) hand-type the account's canonical human id.
192
+ // When you DO pass --resolver, it is a fully fail-closed narrowing: a non-owner human may resolve only
193
+ // if explicitly listed, an omitted/empty list is owner-only (not "any account human"), and the account
194
+ // owner always may regardless of the list. Only a task whose ONLY resolvers are non-human is a real
195
+ // dead-end (the resolve route is human-only), so keep just that nudge.
196
+ if (resolvers.length > 0 && !hasHumanResolver(resolvers)) {
197
+ ctx.io.err(`⚠ every --resolver given (${resolvers.join(", ")}) is non-human (agent:/system:); the resolve route is ` +
198
+ "human-only, so this task can only be marked done by the account owner. Omit --resolver or add a human:<id>.");
202
199
  }
203
200
  return resolvers;
204
201
  }