@indigoai-us/hq-cli 5.345.147 → 5.345.149

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 (168) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/README.md +2 -0
  3. package/assets/bot-workers/setup/worker.yaml +11 -0
  4. package/dist/command-catalog.generated.d.ts +341 -11
  5. package/dist/command-catalog.generated.js +421 -11
  6. package/dist/command-help.js +2 -1
  7. package/dist/commands/access.d.ts +45 -2
  8. package/dist/commands/access.js +537 -223
  9. package/dist/commands/agent-inbox.js +2 -1
  10. package/dist/commands/billing-usage.d.ts +33 -2
  11. package/dist/commands/billing-usage.js +75 -4
  12. package/dist/commands/bot.js +2 -2
  13. package/dist/commands/channels.d.ts +27 -0
  14. package/dist/commands/channels.js +108 -4
  15. package/dist/commands/cloud.js +31 -1
  16. package/dist/commands/core-refresh-vault-access-native.d.ts +33 -0
  17. package/dist/commands/core-refresh-vault-access-native.js +356 -28
  18. package/dist/commands/core-work-mesh-bind-trusted-native.d.ts +9 -0
  19. package/dist/commands/core-work-mesh-bind-trusted-native.js +26 -19
  20. package/dist/commands/core.js +9 -0
  21. package/dist/commands/daemon.d.ts +7 -0
  22. package/dist/commands/daemon.js +37 -3
  23. package/dist/commands/dm.js +18 -3
  24. package/dist/commands/doctor.d.ts +11 -1
  25. package/dist/commands/doctor.js +56 -1
  26. package/dist/commands/install-global.d.ts +8 -8
  27. package/dist/commands/install-global.js +139 -61
  28. package/dist/commands/lanes-shared.d.ts +3 -1
  29. package/dist/commands/lanes.d.ts +4 -4
  30. package/dist/commands/lanes.js +380 -25
  31. package/dist/commands/library-add.d.ts +31 -1
  32. package/dist/commands/library-add.js +69 -2
  33. package/dist/commands/library.js +37 -3
  34. package/dist/commands/pack-install.d.ts +2 -2
  35. package/dist/commands/pack-install.js +133 -35
  36. package/dist/commands/reindex.js +19 -0
  37. package/dist/commands/sync-manifest.d.ts +2 -9
  38. package/dist/commands/sync-manifest.js +4 -15
  39. package/dist/hook-engine-path.d.ts +4 -0
  40. package/dist/hook-engine-path.js +43 -0
  41. package/dist/hq-cloud-sync-runner/bin/sync-runner.js +2783 -2354
  42. package/dist/hq-cloud-sync-runner/package.json +1 -1
  43. package/dist/index.d.ts +10 -0
  44. package/dist/index.js +76 -5
  45. package/dist/lazy-commands.js +2 -0
  46. package/dist/lib/agent-kit/inbox-redact.d.ts +44 -0
  47. package/dist/lib/agent-kit/inbox-redact.js +361 -0
  48. package/dist/lib/agent-kit/inbox-state.js +11 -2
  49. package/dist/lib/agent-kit/mcp/tools.js +2 -1
  50. package/dist/lib/agent-kit/run/inbox.js +36 -7
  51. package/dist/lib/anywhere-runtime-flag-key.d.ts +3 -0
  52. package/dist/lib/anywhere-runtime-flag-key.js +9 -0
  53. package/dist/lib/billing/usage-cost.d.ts +31 -1
  54. package/dist/lib/billing/usage-cost.js +46 -0
  55. package/dist/lib/company-skill-wrapper.js +6 -4
  56. package/dist/lib/daemon/install.d.ts +47 -1
  57. package/dist/lib/daemon/install.js +181 -15
  58. package/dist/lib/daemon/lock.d.ts +32 -0
  59. package/dist/lib/daemon/lock.js +55 -2
  60. package/dist/lib/db/local.d.ts +2 -2
  61. package/dist/lib/db/local.js +2 -2
  62. package/dist/lib/db/sql.js +2 -2
  63. package/dist/lib/db/sqlite-binding.d.ts +22 -0
  64. package/dist/lib/db/sqlite-binding.js +168 -0
  65. package/dist/lib/doctor/__testing__/run-doctor.js +4 -0
  66. package/dist/lib/doctor/checks/anywhere.d.ts +15 -0
  67. package/dist/lib/doctor/checks/anywhere.js +77 -11
  68. package/dist/lib/doctor/checks/cli-path.d.ts +12 -0
  69. package/dist/lib/doctor/checks/cli-path.js +46 -0
  70. package/dist/lib/doctor/checks/hook-engine.d.ts +4 -0
  71. package/dist/lib/doctor/checks/hook-engine.js +17 -0
  72. package/dist/lib/doctor/checks/sync-health.d.ts +7 -0
  73. package/dist/lib/doctor/checks/sync-health.js +38 -2
  74. package/dist/lib/doctor/checks/temp-homes.d.ts +19 -0
  75. package/dist/lib/doctor/checks/temp-homes.js +54 -0
  76. package/dist/lib/doctor/fix/apply.d.ts +90 -1
  77. package/dist/lib/doctor/fix/apply.js +176 -10
  78. package/dist/lib/doctor/fix/json-output.d.ts +4 -1
  79. package/dist/lib/doctor/fix/json-output.js +6 -0
  80. package/dist/lib/doctor/fix/remediation.d.ts +7 -1
  81. package/dist/lib/doctor/fix/remediation.js +23 -1
  82. package/dist/lib/doctor/registry.js +10 -0
  83. package/dist/lib/doctor/temp-home-sweeper.d.ts +149 -0
  84. package/dist/lib/doctor/temp-home-sweeper.js +418 -0
  85. package/dist/lib/flag-registry-worker-source.generated.d.ts +1 -1
  86. package/dist/lib/flag-registry-worker-source.generated.js +1 -1
  87. package/dist/lib/flag-registry.js +9 -1
  88. package/dist/lib/flag-snapshot-file.js +8 -3
  89. package/dist/lib/hook-engine/reconcile.d.ts +9 -0
  90. package/dist/lib/hook-engine/reconcile.js +134 -0
  91. package/dist/lib/hook-engine/registration.d.ts +17 -0
  92. package/dist/lib/hook-engine/registration.js +50 -0
  93. package/dist/lib/hook-engine/resolve.d.ts +31 -0
  94. package/dist/lib/hook-engine/resolve.js +134 -0
  95. package/dist/lib/install/claude-targets.d.ts +2 -1
  96. package/dist/lib/install/claude-targets.js +8 -3
  97. package/dist/lib/install/codex-targets.d.ts +3 -0
  98. package/dist/lib/install/codex-targets.js +15 -4
  99. package/dist/lib/install/hook-target.d.ts +9 -0
  100. package/dist/lib/install/hook-target.js +39 -0
  101. package/dist/lib/lanes/admission-host.d.ts +1 -0
  102. package/dist/lib/lanes/admission-host.js +8 -1
  103. package/dist/lib/lanes/admission.d.ts +4 -0
  104. package/dist/lib/lanes/admission.js +6 -2
  105. package/dist/lib/lanes/envelope-repair-dispatch.d.ts +5 -0
  106. package/dist/lib/lanes/envelope-repair-dispatch.js +12 -1
  107. package/dist/lib/lanes/index.d.ts +2 -2
  108. package/dist/lib/lanes/index.js +1 -1
  109. package/dist/lib/lanes/keep-alive.js +4 -1
  110. package/dist/lib/lanes/local-host-identity.d.ts +40 -0
  111. package/dist/lib/lanes/local-host-identity.js +314 -0
  112. package/dist/lib/lanes/reaper.d.ts +1 -1
  113. package/dist/lib/lanes/reaper.js +7 -0
  114. package/dist/lib/lanes/reconcile.d.ts +4 -0
  115. package/dist/lib/lanes/reconcile.js +16 -8
  116. package/dist/lib/lanes/spawn.d.ts +20 -0
  117. package/dist/lib/lanes/spawn.js +48 -2
  118. package/dist/lib/lanes/status-fields.js +6 -1
  119. package/dist/lib/lanes/store.js +8 -1
  120. package/dist/lib/lanes/throttle.d.ts +49 -6
  121. package/dist/lib/lanes/throttle.js +154 -17
  122. package/dist/lib/lanes/types.d.ts +22 -1
  123. package/dist/lib/lanes/types.js +27 -3
  124. package/dist/lib/lanes/watcher.js +27 -2
  125. package/dist/lib/lanes/worker-continuity.d.ts +2 -0
  126. package/dist/lib/lanes/worker-continuity.js +18 -11
  127. package/dist/lib/manifest-disabled.d.ts +13 -0
  128. package/dist/lib/manifest-disabled.js +19 -0
  129. package/dist/lib/service-manager/launchd.d.ts +1 -0
  130. package/dist/lib/service-manager/launchd.js +1 -1
  131. package/dist/lib/windows/console-encoding.d.ts +24 -0
  132. package/dist/lib/windows/console-encoding.js +83 -0
  133. package/dist/lib/windows/install-followup.d.ts +35 -0
  134. package/dist/lib/windows/install-followup.js +142 -0
  135. package/dist/lib/windows/user-path.d.ts +125 -0
  136. package/dist/lib/windows/user-path.js +275 -0
  137. package/dist/lib/work-context/auto-bind.d.ts +1 -1
  138. package/dist/lib/work-context/auto-bind.js +22 -3
  139. package/dist/lib/work-context/lane-bind.d.ts +31 -0
  140. package/dist/lib/work-context/lane-bind.js +101 -0
  141. package/dist/lib/work-context/organize.js +1 -0
  142. package/dist/lib/work-context/prd-sync.js +7 -0
  143. package/dist/lib/work-context/project.d.ts +36 -10
  144. package/dist/lib/work-context/project.js +130 -41
  145. package/dist/lib/work-context/reconcile.d.ts +6 -0
  146. package/dist/lib/work-context/reconcile.js +25 -5
  147. package/dist/lib/work-context/state.d.ts +6 -0
  148. package/dist/lib/work-context/state.js +29 -1
  149. package/dist/main.js +2 -1
  150. package/dist/unknown-command.d.ts +18 -0
  151. package/dist/unknown-command.js +88 -0
  152. package/dist/utils/cognito-session.d.ts +8 -0
  153. package/dist/utils/cognito-session.js +14 -2
  154. package/dist/utils/copy-tree.d.ts +61 -0
  155. package/dist/utils/copy-tree.js +249 -0
  156. package/dist/utils/environmental-error.js +7 -3
  157. package/dist/utils/hook-trust.d.ts +9 -0
  158. package/dist/utils/hook-trust.js +30 -2
  159. package/dist/utils/npm-invocation.d.ts +27 -0
  160. package/dist/utils/npm-invocation.js +54 -0
  161. package/dist/utils/qmd-native-binding-error.js +3 -1
  162. package/dist/utils/resolve-executable.d.ts +2 -0
  163. package/dist/utils/resolve-executable.js +6 -2
  164. package/dist/utils/safe-link.d.ts +50 -0
  165. package/dist/utils/safe-link.js +300 -0
  166. package/package.json +17 -5
  167. package/scripts/hook-engine-manifest.mjs +22 -0
  168. package/scripts/install-hook-engine.mjs +10 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,71 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [5.345.149] — 2026-10-19
6
+ - `hq access` answers faster. It checks the exact path first and, on a miss,
7
+ looks only in the nearest folder instead of listing the whole vault. It
8
+ loads the member list only when it is about to send an access request.
9
+ Results and denial reasons are the same as before.
10
+ - `hq access` takes several paths at once (`hq access a.md b.md`) or reads
11
+ them from `--stdin`, one per line. Each path gets its own result, `--json`
12
+ prints an array, and the exit code is the highest one across the paths.
13
+ - A folder path now resolves to the folder, and the three spellings `docs`,
14
+ `docs/` and `docs/*` all check the same folder. Before, a bare folder name
15
+ was matched against every file in the vault and usually came back
16
+ ambiguous.
17
+ - Two `hq bot create` error messages now call HQ's built-in bot "your assistant" instead of "setup bot", matching the desktop app. Using `--kind company` with the setup worker now says "HQ's assistant is always a personal bot; drop --kind company.", and using the reserved name `setup` with another worker now says the name is reserved for HQ's assistant. The reserved name and the worker are still `setup`, so commands are unchanged.
18
+ - `hq channels list` takes `--json`, `--active-since <time|duration>` and
19
+ `--sort activity`. `--active-since 2h` (or an ISO time) lists only the
20
+ channels and group DMs with activity since then, newest first, so a sweep
21
+ no longer has to read all of your channels to find the busy ones. `--json`
22
+ includes each channel's last-activity time and unread count.
23
+ - New `hq channels changes [--cursor <token>]` prints the channels that changed
24
+ since the last call's cursor, as JSON. With no cursor it prints a full
25
+ snapshot and a cursor to use next time.
26
+ - `hq dm channel <channel id> --json` no longer downloads your whole channel
27
+ list first, so reading one channel by id takes about a second.
28
+ - `hq billing usage` no longer prices meters for a company or personal account
29
+ on a flat plan (for example a Workforce company that subscribed before usage
30
+ pricing). It shows the readings and one line saying usage meters are not
31
+ billed, with no per-meter cost and no projected bill. `--json` carries
32
+ `onUsagePricing` and leaves out the cost fields. The plan comes from the
33
+ server; when an older server does not send it, the command uses the billing
34
+ summary, and it shows no cost when neither says.
35
+ - `hq library add` now reaches the company vault for members in `shared` or `custom` sync mode. When the library folder is outside the membership's sync scope, the command pins it the same way `hq files get` does, so the next sync uploads the new placeholders and teammates and cloud search can find them. `all` mode and folders already covered by a grant or pin are left alone. If the sync scope cannot be read or the pin cannot be written, the command prints a warning with the exact `hq files get <folder>/ --company <co>` command to run. `--json` output reports this as `syncScope`.
36
+ - `hq library add --to <folder>` no longer pins the whole target folder for `shared` or `custom` sync. Outside the default `library/` folder it pins only the placeholders it wrote, so the rest of that folder stays out of sync. When the pin cannot be written or the sync scope cannot be read, the warning lists the exact paths to add to `.hq/pins.json` (the `hq files get library/` command is still printed for the default folder).
37
+ - Windows cold-install polish. The first `hq` command adds the npm folder that holds `hq.cmd` to the user PATH (HKCU only), idempotently, and broadcasts the environment change. It never edits the machine PATH. `hq doctor` still prints the exact PowerShell command when that folder is missing. npm install no longer needs a package postinstall for the mesh daemon: `hq mesh daemon install --if-stale` runs once on the first real command for that CLI version (the postinstall now only pins the native hook engine), and better-sqlite3 loads from its prebuilt binary or fails with `npm install -g @indigoai-us/hq-cli --allow-scripts=better-sqlite3`. On a Windows console that is not UTF-8, hq prints ASCII instead of a garbled em dash. `hq invite --help` and other unknown commands print `unknown command` plus a nested did-you-mean and exit non-zero, instead of the main help. When the hqd named pipe cannot be used, `hq doctor` says whether hqd is down, access was denied, the pipe is missing, or hqd did not answer. On Windows, `hq reindex` now finds the npm `codex.cmd` shim on PATH and runs it through cmd.exe, so Codex hook trust no longer fails with `spawn codex ENOENT`. When Codex is missing, reindex names it and says how to fix it. Any hook-trust failure now says that runtime will not run HQ hooks until trust succeeds and to rerun `hq reindex`. The SessionStart vault-access refresh (`hq core refresh-vault-access`) exits right away when nobody is signed in to HQ. Each child `hq` call it makes has a 30-second timeout (`HQ_VAULT_ACCESS_TIMEOUT_MS` changes it) and runs with `HQ_NO_BROWSER_LOGIN=1`, so a signed-out child fails fast instead of waiting on a browser login.
38
+ - Register the pinned native hook launcher behind the default-off hook-engine-launcher flag, with Claude exec form, Codex commandWindows, and reindex rollback to bash. Project hook files are converted in place and restored exactly, and a registration file that cannot be read no longer stops the others or their Codex trust. Codex hooks are only trusted after their file was written and verified.
39
+
40
+ ## [5.345.148] — 2026-10-19
41
+
42
+ - The `hq lanes` free-memory gate (`throttle.min_available_mem_mb`) now reads the same values as macOS `memory_pressure`: the system-wide free percentage and the pressure level. A Mac that `memory_pressure` reports as normal with enough free memory no longer holds new lanes. While the gate is set, new lanes wait at the warn or critical level. The old `vm_stat` reading, which leaves out purgeable and compressible memory, is used only when those values cannot be read. A memory hold is recorded as `memory_hold` in the throttle state and in `hq lanes admit` output, with the signal, the reading, the level and the threshold.
43
+ - The agent inbox mirror no longer stores owner credentials. `actingContext.credentials` is removed before an item is written to the per-message file or `inbox.jsonl`, and files that already contain it are rewritten on the next inbox read or poll. The rest of the item, including other acting-context fields, is kept. `hq dm inbox`, `hq agent inbox`, and the `hq_inbox_read` tool use the same removal. A scrub logs how many records changed and nothing from the record.
44
+ - HQ Anywhere ignores cached flag-disable decisions after one hour if the registry cannot refresh. Explicit environment kill switches and the required person opt-in still apply.
45
+ - `hq lanes` no longer loses a local lane when the network name changes (Mac.localdomain → Mac.lan, or a bare `Mac` once the machine reports `Mac.lan`). New lanes record a stable id under `~/.hq/lane-host.json`, plus this machine's hardware id. A copied home directory gets a new id instead of sharing the source machine's. A lane stamped with an earlier hostname of this machine still resumes, accepts messages, and keeps the worker's provider thread. Those lanes still count as local load. A lane from another machine stays remote. `worker_lane_busy` names the blocking lane and `hq lanes stop <lane-id>`. A corrupt lane host file names the file and how to restore or delete it, and read-only commands do not rewrite it.
46
+
47
+ - `hq doctor --fix` now uploads a fresh sync manifest when one is out of date, and it lists every sync check it could not clear, with the reason and the next step in plain words. The same list appears as `unresolved` in `hq doctor --fix --json`. When `HQ_SYNC_MANIFEST_DISABLED` is set, the stale-manifest row says so and tells you to unset it. A manifest upload that runs past 90 seconds is reported as timed out.
48
+ - `hq lanes` no longer marks a finished `--no-story` lane failed when its envelope sets `story_complete: true` with a `story_status` other than `done`. A lane with no board story now takes its status from `story_complete`. Story-bound lanes keep the strict check.
49
+ - Envelope repair for a lane admitted by another lane's watcher no longer fails with "lane lanes not found". The watcher recorded its own script as the CLI path, so the repair started a watcher for a lane named "lanes". Newly started watchers record the real CLI path, and repair refuses a lanes runner script as the CLI path with a clear error. Watchers already running keep the old path until they exit.
50
+ - Work Mesh no longer attaches a session to a lane another session owns. An explicit trusted project bind stays until the session binds again, including after the outbox repairs acknowledged registrations, and is refused when that project belongs to a different company. Only a session id from `--session` or the process environment can make a bind trusted. The shared session pointer file cannot. A bind with an invalid `--session` id now stops with an error.
51
+ - The bundled sync engine now uses hq-cloud 6.18.88, which adds Company Outpost commands.
52
+ `hq outposts list --company <slug>` lists a company's Outposts. `status`, `login`,
53
+ `login-code`, `refresh-config` and the `jobs` commands take `--outpost <name|id>` to pick
54
+ one Outpost when a company has several. `hq outposts jobs` can now edit, pause, resume,
55
+ delete and run a job now. Provisioning keeps checking status after a create error instead
56
+ of reporting the Outpost as not created. A company job that has not run yet shows its
57
+ health as pending.
58
+ - `hq lanes create --runner subagent` registers a lane that an in-session Claude subagent runs, so that work shows on the lanes board. `hq lanes progress` reports its progress and result.
59
+ - The setup bot now ends its first message with the "Who do you work with?" card when the desktop app's first-run handoff shows the team step is not settled. It does not add the card when that step is settled.
60
+ - `hq sync push` splits the success line when the sync engine reports which skips were already up to date. "N already up to date" counts only those files. Other skips are listed separately, for example "2 skipped (1 conflict, 1 broken link)". Until an hq-cloud release that includes this detail is bundled, the line stays "N skipped" and does not name each file. Per-file reasons appear after that release.
61
+ - Temp homes. `hq doctor` warns about idle throwaway HOME folders in the temp dirs: `tmp.*` folders (untouched for 90+ minutes) that hold a `.rustup` or `.cargo` download, and `hq-temp-home.*` folders left by `core/scripts/with-temp-home.sh`. The check is a shallow scan that adds about 1 s on a cold first run and well under a second after that. `hq doctor --sweep-temp-homes [--dry-run]` measures and removes them and reports the GB freed. It skips a folder in use (the wrapper's lock file names a live process, or a process of this user has its cwd or an open file there; on Linux, also a process whose HOME is there), never follows symlinks, and leaves every other temp folder alone. `hq lanes create` adds a temp-home rule to every lane brief (claude, codex and grok) that names the wrapper by its absolute path under the HQ root.
62
+ - `hq core refresh-vault-access --company <slug>` no longer drops other companies from `.hq/vault-access.json`. A scoped refresh replaces only the companies it queried successfully and keeps every other company's entry. Revoked grants still drop out for the refreshed company, and an unscoped refresh still rewrites the whole file. Concurrent refreshes take a lock file that records its owner, so they no longer overwrite each other. A lock left by a refresh that died is reclaimed safely, either once it is 30 seconds old or right away when its process on this machine has exited. The success line now names the refreshed companies, for example `(2 companies, refreshed: acme, identity: …)`.
63
+ - Package the native hook engine for six platforms, with version-pinned offline installation and `hq core hook-engine-path`. `hq doctor` reports missing or damaged native engines while existing bash hooks remain active. Platform signing and publication are opt-in; CLI releases and installs remain independent of signing setup.
64
+ - Adds the Windows hook launcher and custom Bash hook runner for the upcoming native hook engine. Hooks run without visible console flashes, preserve their input, output and exit status, reject oversized captured output, and clean up Windows child processes when the engine exits. Host registration and native built-in hooks follow separately.
65
+ - Windows fixes for `hq install --global`, `hq daemon install` and `hq doctor`. When Windows refuses a symlink, skill folders fall back to a junction. When Windows refuses the junction too (for example a skill folder on a network path), HQ copies the folder and marks the copy with a `.hq-skill-copy` file; install says which skills were copied, and uninstall removes only links and the copies HQ marked, never a folder you made. The marker records the copy's name and a hash of its files, so a copy you edited, renamed or duplicated is kept and named in a notice instead of deleted. The copy step skips only a link back to a folder it is still inside, so a loop finishes, while a link to a sibling folder or a second link to the same folder each gets a full copy. If a rollback keeps a copy you changed, it says so in the install log. A failed install rolls back what it wrote instead of leaving a half-written `~/.claude` and `~/.hq/root`. Link removal, including the company skill wrapper's cleanup, deletes only the link, never the folder it points to, and removing a real folder never recurses through a link inside it. A symlink EPERM now names Developer Mode instead of cloud sync. After install, and in `hq doctor`, HQ warns when the npm folder holding `hq.cmd` is not on your Windows PATH and prints the exact PowerShell command to add it; the command also tells Windows the environment changed, so new terminals see it. HQ does not change PATH itself. An empty user Path is now read as empty instead of unreadable. `hq daemon install` says "Installed and started" only once a new daemon process is confirmed, and a daemon that was already running before the install is stopped first and not counted as the new start. HQ stops that process only after it confirms, right before the stop, that the process command line is `hq daemon run` and that it started before the daemon lock was written. If HQ cannot confirm this, including when Windows cannot read process details, it leaves the process alone and prints how to find and stop an older daemon. `hq daemon uninstall` uses the same check. When no daemon starts and you are not signed in to Windows, it says the daemon starts at your next sign-in. When you are signed in, it reports that the daemon did not start, exits non-zero, and points to `hq daemon status` and the task's last result. Under PowerShell Constrained Language Mode, where HQ cannot run the check, it says the check was unavailable and prints the next-sign-in message without failing. When the check itself breaks, it reports that the daemon did not start and that it could not check whether you are signed in, and exits non-zero. The sign-in check uses the Windows session API through PowerShell, so it works on Windows Home and in any display language. `hq doctor` now says hqd is not running, and points to `hq daemon status`, instead of blaming an unsafe named-pipe ACL.
66
+ - `hq install` copies pack payloads in Node instead of spawning `rsync`, so git-subpath and local-directory pack installs work on Windows. Reinstalling over a prior install removes links in it as links and never deletes what they point at.
67
+ - `hq install @scope/pack` runs npm's `npm-cli.js` with Node on Windows instead of spawning the `npm.cmd` shim, which failed with `ENOENT`.
68
+ - `hq install C:\path\to\pack`, and UNC or `.\` relative paths, are recognized as local-directory installs on Windows instead of failing with "Cannot classify source".
69
+
5
70
  ## [5.345.147] — 2026-10-18
6
71
 
7
72
  - Worker registry rebuild now also skips Codex worktrees (`.codex/worktrees/`). Same nested-checkout trap as `.claude/worktrees/`.
package/README.md CHANGED
@@ -7,6 +7,8 @@ npm install -g @indigoai-us/hq-cli
7
7
  hq --help
8
8
  ```
9
9
 
10
+ On Windows, the first `hq` command adds the folder that holds `hq.cmd` to your user PATH (HKCU only, not the machine PATH). You do not need to approve npm install scripts for hq itself. If the local database cannot load better-sqlite3 because npm skipped its install script, HQ tries to download the prebuilt binary. If that fails, the error names `npm install -g @indigoai-us/hq-cli --allow-scripts=better-sqlite3`.
11
+
10
12
  ## Marketplace package verification
11
13
 
12
14
  Marketplace packages must include an Ed25519 signature made with a platform
@@ -294,6 +294,17 @@ instructions: |
294
294
  management tools: what kind of business they run, and what else a
295
295
  business like theirs should set up. For someone who joined a team it is
296
296
  the tour.
297
+ - When the team step is not settled (`company` is not in `done`, or
298
+ `team` is missing or null), end your first message with this block, as
299
+ the very last thing, so the app shows its "Who do you work with?" card:
300
+
301
+ ```hq-block
302
+ {"v":1,"blocks":[{"kind":"team"}]}
303
+ ```
304
+
305
+ Copy it exactly, the JSON on its own line, with no other fields. Never
306
+ add it when the team step is settled, and send it in your first message
307
+ only.
297
308
  - Do not ask the explain-or-jump question. The person already chose to jump
298
309
  straight in, in the app; write `Intro: skipped` in your progress note.
299
310
  - Do not greet again and do not repeat the plan: the app already sent your
@@ -3125,20 +3125,20 @@ export declare const COMMAND_CATALOG: readonly [{
3125
3125
  }];
3126
3126
  }, {
3127
3127
  readonly name: "access";
3128
- readonly description: "Tell whether a vault file exists and whether you can read it. Never a bare not-found. Exit codes: 0 local/not-synced, 2 never-existed, 3 no-access, 4 ambiguous.";
3128
+ readonly description: "Tell whether a vault file exists and whether you can read it. Never a bare not-found. Takes one or more paths or queries. Exit codes: 0 local/not-synced, 2 never-existed, 3 no-access, 4 ambiguous.";
3129
3129
  readonly aliases: readonly [];
3130
3130
  readonly hidden: false;
3131
3131
  readonly helpOption: true;
3132
3132
  readonly helpCommand: false;
3133
- readonly usage: "[options] <path-or-query>";
3133
+ readonly usage: "[options] [vault-path...]";
3134
3134
  readonly helpText: readonly [{
3135
3135
  readonly position: "after";
3136
- readonly text: "\nExit codes:\n 0 local or not-synced (file exists and you can read it)\n 2 never-existed (the path was never created)\n 3 no-access (the file exists but you cannot read it)\n 4 ambiguous (several keys matched; pick one)\n";
3136
+ readonly text: "\nExit codes:\n 0 local or not-synced (file exists and you can read it)\n 2 never-existed (the path was never created)\n 3 no-access (the file exists but you cannot read it)\n 4 ambiguous (several keys matched; pick one)\n\nWith several paths, each gets its own result block and the exit code is the\nhighest one across the paths.\n";
3137
3137
  }];
3138
3138
  readonly arguments: readonly [{
3139
- readonly name: "path-or-query";
3140
- readonly required: true;
3141
- readonly variadic: false;
3139
+ readonly name: "vault-path";
3140
+ readonly required: false;
3141
+ readonly variadic: true;
3142
3142
  readonly description: "";
3143
3143
  }];
3144
3144
  readonly options: readonly [{
@@ -3151,7 +3151,11 @@ export declare const COMMAND_CATALOG: readonly [{
3151
3151
  readonly hidden: false;
3152
3152
  }, {
3153
3153
  readonly flags: "--json";
3154
- readonly description: "Print a single JSON object";
3154
+ readonly description: "Print a single JSON object (an array for several paths)";
3155
+ readonly hidden: false;
3156
+ }, {
3157
+ readonly flags: "--stdin";
3158
+ readonly description: "Read more paths from stdin, one per line";
3155
3159
  readonly hidden: false;
3156
3160
  }, {
3157
3161
  readonly flags: "--no-fix";
@@ -4026,7 +4030,35 @@ export declare const COMMAND_CATALOG: readonly [{
4026
4030
  readonly usage: "[options]";
4027
4031
  readonly helpText: readonly [];
4028
4032
  readonly arguments: readonly [];
4029
- readonly options: readonly [];
4033
+ readonly options: readonly [{
4034
+ readonly flags: "--json";
4035
+ readonly description: "Output the channel array as JSON, including activity fields.";
4036
+ readonly hidden: false;
4037
+ }, {
4038
+ readonly flags: "--active-since <when>";
4039
+ readonly description: "Only channels with activity at or after an ISO time or a duration back from now (30m, 2h, 1d); newest first.";
4040
+ readonly hidden: false;
4041
+ }, {
4042
+ readonly flags: "--sort <order>";
4043
+ readonly description: "'activity' lists the most recently active channels first.";
4044
+ readonly hidden: false;
4045
+ }];
4046
+ readonly subcommands: readonly [];
4047
+ }, {
4048
+ readonly name: "changes";
4049
+ readonly description: "Print the channels that changed since a feed cursor, as JSON (no cursor → full snapshot).";
4050
+ readonly aliases: readonly [];
4051
+ readonly hidden: false;
4052
+ readonly helpOption: true;
4053
+ readonly helpCommand: false;
4054
+ readonly usage: "[options]";
4055
+ readonly helpText: readonly [];
4056
+ readonly arguments: readonly [];
4057
+ readonly options: readonly [{
4058
+ readonly flags: "--cursor <token>";
4059
+ readonly description: "Cursor from the previous `hq channels changes` response.";
4060
+ readonly hidden: false;
4061
+ }];
4030
4062
  readonly subcommands: readonly [];
4031
4063
  }, {
4032
4064
  readonly name: "members";
@@ -7342,15 +7374,23 @@ export declare const COMMAND_CATALOG: readonly [{
7342
7374
  readonly flags: "--company <slug>";
7343
7375
  readonly description: "Provision the company's Outpost instead of your personal box";
7344
7376
  readonly hidden: false;
7377
+ }, {
7378
+ readonly flags: "--name <name>";
7379
+ readonly description: "With --company: not sent. This server creates the company's main Outpost and does not take a name yet";
7380
+ readonly hidden: false;
7345
7381
  }, {
7346
7382
  readonly flags: "--yes";
7347
- readonly description: "Confirm the $80/month charge (required to provision)";
7383
+ readonly description: "Confirm the monthly charge (required to provision or create)";
7384
+ readonly hidden: false;
7385
+ }, {
7386
+ readonly flags: "--json";
7387
+ readonly description: "With --company, emit one JSON object. Progress goes to stderr.";
7348
7388
  readonly hidden: false;
7349
7389
  }];
7350
7390
  readonly subcommands: readonly [];
7351
7391
  }, {
7352
7392
  readonly name: "list";
7353
- readonly description: "List every Outpost you own";
7393
+ readonly description: "List every Outpost you own, or a company's Outposts with --company";
7354
7394
  readonly aliases: readonly [];
7355
7395
  readonly hidden: false;
7356
7396
  readonly helpOption: true;
@@ -7359,6 +7399,10 @@ export declare const COMMAND_CATALOG: readonly [{
7359
7399
  readonly helpText: readonly [];
7360
7400
  readonly arguments: readonly [];
7361
7401
  readonly options: readonly [{
7402
+ readonly flags: "--company <slug>";
7403
+ readonly description: "List the company's Outposts";
7404
+ readonly hidden: false;
7405
+ }, {
7362
7406
  readonly flags: "--json";
7363
7407
  readonly description: "Emit raw JSON";
7364
7408
  readonly hidden: false;
@@ -7382,6 +7426,10 @@ export declare const COMMAND_CATALOG: readonly [{
7382
7426
  readonly flags: "--company <slug>";
7383
7427
  readonly description: "Show the company Outpost, its jobs, and each job's run status";
7384
7428
  readonly hidden: false;
7429
+ }, {
7430
+ readonly flags: "--outpost <name|id>";
7431
+ readonly description: "Which company Outpost, when the company has more than one";
7432
+ readonly hidden: false;
7385
7433
  }, {
7386
7434
  readonly flags: "--json";
7387
7435
  readonly description: "Emit raw JSON";
@@ -7390,7 +7438,7 @@ export declare const COMMAND_CATALOG: readonly [{
7390
7438
  readonly subcommands: readonly [];
7391
7439
  }, {
7392
7440
  readonly name: "jobs";
7393
- readonly description: "Register a job on a company Outpost";
7441
+ readonly description: "Register, edit, pause, resume, delete, or run a job on a company Outpost";
7394
7442
  readonly aliases: readonly [];
7395
7443
  readonly hidden: false;
7396
7444
  readonly helpOption: true;
@@ -7437,12 +7485,217 @@ export declare const COMMAND_CATALOG: readonly [{
7437
7485
  readonly flags: "--context <json>";
7438
7486
  readonly description: "Optional JSON object stored with the job";
7439
7487
  readonly hidden: false;
7488
+ }, {
7489
+ readonly flags: "--outpost <name|id>";
7490
+ readonly description: "Which company Outpost runs the job, when the company has more than one";
7491
+ readonly hidden: false;
7440
7492
  }, {
7441
7493
  readonly flags: "--json";
7442
7494
  readonly description: "Emit the job id and accepted revision as JSON";
7443
7495
  readonly hidden: false;
7444
7496
  }];
7445
7497
  readonly subcommands: readonly [];
7498
+ }, {
7499
+ readonly name: "edit";
7500
+ readonly description: "Change a company job. Omitted fields stay as they are. Requires --revision";
7501
+ readonly aliases: readonly [];
7502
+ readonly hidden: false;
7503
+ readonly helpOption: true;
7504
+ readonly helpCommand: false;
7505
+ readonly usage: "[options] <jobId>";
7506
+ readonly helpText: readonly [];
7507
+ readonly arguments: readonly [{
7508
+ readonly name: "jobId";
7509
+ readonly required: true;
7510
+ readonly variadic: false;
7511
+ readonly description: "Job id from hq outposts status --company <slug>";
7512
+ }];
7513
+ readonly options: readonly [{
7514
+ readonly flags: "--company <slug>";
7515
+ readonly description: "Company that owns the Outpost";
7516
+ readonly hidden: false;
7517
+ }, {
7518
+ readonly flags: "--outpost <name|id>";
7519
+ readonly description: "Which company Outpost, when the company has more than one";
7520
+ readonly hidden: false;
7521
+ }, {
7522
+ readonly flags: "--revision <rev>";
7523
+ readonly description: "Accepted revision you last saw. Required for edit and delete --yes";
7524
+ readonly hidden: false;
7525
+ }, {
7526
+ readonly flags: "--prompt <text>";
7527
+ readonly description: "What the job should do. Omit to keep the current prompt";
7528
+ readonly hidden: false;
7529
+ }, {
7530
+ readonly flags: "--timezone <name>";
7531
+ readonly description: "IANA timezone, such as America/New_York. Omit to keep the current timezone";
7532
+ readonly hidden: false;
7533
+ }, {
7534
+ readonly flags: "--cron <expr>";
7535
+ readonly description: "Recurring schedule: rate(N minutes|hours|days), a five-field cron with * for day of month and month (such as \"*/15 * * * *\"; translated to the AWS form), or cron(MIN HOUR ? * DOW *). Omit to keep the current schedule";
7536
+ readonly hidden: false;
7537
+ }, {
7538
+ readonly flags: "--at <iso>";
7539
+ readonly description: "One-time ISO-8601 instant. Do not combine with --cron";
7540
+ readonly hidden: false;
7541
+ }, {
7542
+ readonly flags: "--script <text>";
7543
+ readonly description: "Precondition script stored with the job. Omit to keep the current script";
7544
+ readonly hidden: false;
7545
+ }, {
7546
+ readonly flags: "--context <json>";
7547
+ readonly description: "JSON object stored with the job. Omit to keep the current context";
7548
+ readonly hidden: false;
7549
+ }, {
7550
+ readonly flags: "--clear-script";
7551
+ readonly description: "Remove the job's precondition script";
7552
+ readonly hidden: false;
7553
+ }, {
7554
+ readonly flags: "--clear-context";
7555
+ readonly description: "Remove the job's stored context";
7556
+ readonly hidden: false;
7557
+ }, {
7558
+ readonly flags: "--json";
7559
+ readonly description: "Emit the result as JSON";
7560
+ readonly hidden: false;
7561
+ }];
7562
+ readonly subcommands: readonly [];
7563
+ }, {
7564
+ readonly name: "pause";
7565
+ readonly description: "Pause a company job";
7566
+ readonly aliases: readonly [];
7567
+ readonly hidden: false;
7568
+ readonly helpOption: true;
7569
+ readonly helpCommand: false;
7570
+ readonly usage: "[options] <jobId>";
7571
+ readonly helpText: readonly [];
7572
+ readonly arguments: readonly [{
7573
+ readonly name: "jobId";
7574
+ readonly required: true;
7575
+ readonly variadic: false;
7576
+ readonly description: "Job id from hq outposts status --company <slug>";
7577
+ }];
7578
+ readonly options: readonly [{
7579
+ readonly flags: "--company <slug>";
7580
+ readonly description: "Company that owns the Outpost";
7581
+ readonly hidden: false;
7582
+ }, {
7583
+ readonly flags: "--outpost <name|id>";
7584
+ readonly description: "Which company Outpost, when the company has more than one";
7585
+ readonly hidden: false;
7586
+ }, {
7587
+ readonly flags: "--revision <rev>";
7588
+ readonly description: "Accepted revision you last saw. Required for edit and delete --yes";
7589
+ readonly hidden: false;
7590
+ }, {
7591
+ readonly flags: "--json";
7592
+ readonly description: "Emit the result as JSON";
7593
+ readonly hidden: false;
7594
+ }];
7595
+ readonly subcommands: readonly [];
7596
+ }, {
7597
+ readonly name: "resume";
7598
+ readonly description: "Resume a paused company job";
7599
+ readonly aliases: readonly [];
7600
+ readonly hidden: false;
7601
+ readonly helpOption: true;
7602
+ readonly helpCommand: false;
7603
+ readonly usage: "[options] <jobId>";
7604
+ readonly helpText: readonly [];
7605
+ readonly arguments: readonly [{
7606
+ readonly name: "jobId";
7607
+ readonly required: true;
7608
+ readonly variadic: false;
7609
+ readonly description: "Job id from hq outposts status --company <slug>";
7610
+ }];
7611
+ readonly options: readonly [{
7612
+ readonly flags: "--company <slug>";
7613
+ readonly description: "Company that owns the Outpost";
7614
+ readonly hidden: false;
7615
+ }, {
7616
+ readonly flags: "--outpost <name|id>";
7617
+ readonly description: "Which company Outpost, when the company has more than one";
7618
+ readonly hidden: false;
7619
+ }, {
7620
+ readonly flags: "--revision <rev>";
7621
+ readonly description: "Accepted revision you last saw. Required for edit and delete --yes";
7622
+ readonly hidden: false;
7623
+ }, {
7624
+ readonly flags: "--json";
7625
+ readonly description: "Emit the result as JSON";
7626
+ readonly hidden: false;
7627
+ }];
7628
+ readonly subcommands: readonly [];
7629
+ }, {
7630
+ readonly name: "delete";
7631
+ readonly description: "Delete a company job (requires --yes)";
7632
+ readonly aliases: readonly [];
7633
+ readonly hidden: false;
7634
+ readonly helpOption: true;
7635
+ readonly helpCommand: false;
7636
+ readonly usage: "[options] <jobId>";
7637
+ readonly helpText: readonly [];
7638
+ readonly arguments: readonly [{
7639
+ readonly name: "jobId";
7640
+ readonly required: true;
7641
+ readonly variadic: false;
7642
+ readonly description: "Job id from hq outposts status --company <slug>";
7643
+ }];
7644
+ readonly options: readonly [{
7645
+ readonly flags: "--company <slug>";
7646
+ readonly description: "Company that owns the Outpost";
7647
+ readonly hidden: false;
7648
+ }, {
7649
+ readonly flags: "--outpost <name|id>";
7650
+ readonly description: "Which company Outpost, when the company has more than one";
7651
+ readonly hidden: false;
7652
+ }, {
7653
+ readonly flags: "--revision <rev>";
7654
+ readonly description: "Accepted revision you last saw. Required for edit and delete --yes";
7655
+ readonly hidden: false;
7656
+ }, {
7657
+ readonly flags: "--yes";
7658
+ readonly description: "Confirm deletion of this job";
7659
+ readonly hidden: false;
7660
+ }, {
7661
+ readonly flags: "--json";
7662
+ readonly description: "Emit the result as JSON";
7663
+ readonly hidden: false;
7664
+ }];
7665
+ readonly subcommands: readonly [];
7666
+ }, {
7667
+ readonly name: "run-now";
7668
+ readonly description: "Run a company job once now";
7669
+ readonly aliases: readonly [];
7670
+ readonly hidden: false;
7671
+ readonly helpOption: true;
7672
+ readonly helpCommand: false;
7673
+ readonly usage: "[options] <jobId>";
7674
+ readonly helpText: readonly [];
7675
+ readonly arguments: readonly [{
7676
+ readonly name: "jobId";
7677
+ readonly required: true;
7678
+ readonly variadic: false;
7679
+ readonly description: "Job id from hq outposts status --company <slug>";
7680
+ }];
7681
+ readonly options: readonly [{
7682
+ readonly flags: "--company <slug>";
7683
+ readonly description: "Company that owns the Outpost";
7684
+ readonly hidden: false;
7685
+ }, {
7686
+ readonly flags: "--outpost <name|id>";
7687
+ readonly description: "Which company Outpost, when the company has more than one";
7688
+ readonly hidden: false;
7689
+ }, {
7690
+ readonly flags: "--revision <rev>";
7691
+ readonly description: "Accepted revision you last saw. Required for edit and delete --yes";
7692
+ readonly hidden: false;
7693
+ }, {
7694
+ readonly flags: "--json";
7695
+ readonly description: "Emit the result as JSON";
7696
+ readonly hidden: false;
7697
+ }];
7698
+ readonly subcommands: readonly [];
7446
7699
  }];
7447
7700
  }, {
7448
7701
  readonly name: "exec";
@@ -7612,6 +7865,10 @@ export declare const COMMAND_CATALOG: readonly [{
7612
7865
  readonly flags: "--company <slug>";
7613
7866
  readonly description: "Company slug";
7614
7867
  readonly hidden: false;
7868
+ }, {
7869
+ readonly flags: "--outpost <name|id>";
7870
+ readonly description: "Which company Outpost, when the company has more than one";
7871
+ readonly hidden: false;
7615
7872
  }, {
7616
7873
  readonly flags: "--json";
7617
7874
  readonly description: "Emit raw JSON";
@@ -7656,6 +7913,10 @@ export declare const COMMAND_CATALOG: readonly [{
7656
7913
  readonly flags: "--company <slug>";
7657
7914
  readonly description: "Request a new sign-in link for the company's Outpost (owner or admin)";
7658
7915
  readonly hidden: false;
7916
+ }, {
7917
+ readonly flags: "--outpost <name|id>";
7918
+ readonly description: "Which company Outpost, when the company has more than one";
7919
+ readonly hidden: false;
7659
7920
  }, {
7660
7921
  readonly flags: "--json";
7661
7922
  readonly description: "Emit raw JSON";
@@ -7685,6 +7946,10 @@ export declare const COMMAND_CATALOG: readonly [{
7685
7946
  readonly flags: "--company <slug>";
7686
7947
  readonly description: "Sign in the company's Outpost (owner or admin)";
7687
7948
  readonly hidden: false;
7949
+ }, {
7950
+ readonly flags: "--outpost <name|id>";
7951
+ readonly description: "Which company Outpost, when the company has more than one";
7952
+ readonly hidden: false;
7688
7953
  }, {
7689
7954
  readonly flags: "--json";
7690
7955
  readonly description: "Emit raw JSON";
@@ -8157,6 +8422,26 @@ export declare const COMMAND_CATALOG: readonly [{
8157
8422
  readonly hidden: false;
8158
8423
  }];
8159
8424
  readonly subcommands: readonly [];
8425
+ }, {
8426
+ readonly name: "hook-engine-path";
8427
+ readonly description: "Print the offline, version-pinned native hook engine path";
8428
+ readonly aliases: readonly [];
8429
+ readonly hidden: false;
8430
+ readonly helpOption: true;
8431
+ readonly helpCommand: false;
8432
+ readonly usage: "[options]";
8433
+ readonly helpText: readonly [];
8434
+ readonly arguments: readonly [];
8435
+ readonly options: readonly [{
8436
+ readonly flags: "--repair";
8437
+ readonly description: "Repair the pinned copy after closing running hook processes";
8438
+ readonly hidden: false;
8439
+ }, {
8440
+ readonly flags: "--for-registration";
8441
+ readonly description: "Print a path only when the offline launcher flag is enabled";
8442
+ readonly hidden: false;
8443
+ }];
8444
+ readonly subcommands: readonly [];
8160
8445
  }, {
8161
8446
  readonly name: "ontology";
8162
8447
  readonly description: "Checkpoint ontology steps run by the checkpoint sibling (gated by checkpoint.ontology)";
@@ -10657,6 +10942,14 @@ export declare const COMMAND_CATALOG: readonly [{
10657
10942
  readonly flags: "--client-health-report";
10658
10943
  readonly description: "Resolve the opt-in hq-flags gate used by the client-health report hook.";
10659
10944
  readonly hidden: true;
10945
+ }, {
10946
+ readonly flags: "--sweep-temp-homes";
10947
+ readonly description: "Delete idle temp homes (90+ minutes untouched, not in use): tmp.* folders holding .rustup or .cargo, and hq-temp-home.* folders left by the wrapper. Reports GB freed.";
10948
+ readonly hidden: false;
10949
+ }, {
10950
+ readonly flags: "--dry-run";
10951
+ readonly description: "With --sweep-temp-homes, list what would be removed and delete nothing.";
10952
+ readonly hidden: false;
10660
10953
  }, {
10661
10954
  readonly flags: "--yes";
10662
10955
  readonly description: "Skip the interactive --fix confirmation (non-interactive use).";
@@ -14072,6 +14365,10 @@ export declare const COMMAND_CATALOG: readonly [{
14072
14365
  readonly flags: "--provider <name>";
14073
14366
  readonly description: "claude | codex | grok";
14074
14367
  readonly hidden: false;
14368
+ }, {
14369
+ readonly flags: "--runner <kind>";
14370
+ readonly description: "process (default) | subagent: register a lane an in-session Claude subagent runs; skips admission and starts no process";
14371
+ readonly hidden: false;
14075
14372
  }, {
14076
14373
  readonly flags: "--remote-control";
14077
14374
  readonly description: "Open a Claude lane in Remote Control using account a for login and the selected account for inference";
@@ -14135,6 +14432,39 @@ export declare const COMMAND_CATALOG: readonly [{
14135
14432
  readonly hidden: false;
14136
14433
  }];
14137
14434
  readonly subcommands: readonly [];
14435
+ }, {
14436
+ readonly name: "progress";
14437
+ readonly description: "Report on a subagent lane: a progress line, the final envelope, or a failure";
14438
+ readonly aliases: readonly [];
14439
+ readonly hidden: false;
14440
+ readonly helpOption: true;
14441
+ readonly helpCommand: false;
14442
+ readonly usage: "[options] <lane-id>";
14443
+ readonly helpText: readonly [];
14444
+ readonly arguments: readonly [{
14445
+ readonly name: "lane-id";
14446
+ readonly required: true;
14447
+ readonly variadic: false;
14448
+ readonly description: "Lane id";
14449
+ }];
14450
+ readonly options: readonly [{
14451
+ readonly flags: "--line <text>";
14452
+ readonly description: "Progress line shown as the lane's last line";
14453
+ readonly hidden: false;
14454
+ }, {
14455
+ readonly flags: "--envelope <path>";
14456
+ readonly description: "Final hq-lane-envelope.v1 file; the lane state follows its decision";
14457
+ readonly hidden: false;
14458
+ }, {
14459
+ readonly flags: "--failed <reason>";
14460
+ readonly description: "Mark the lane failed when the subagent ended without an envelope";
14461
+ readonly hidden: false;
14462
+ }, {
14463
+ readonly flags: "--json";
14464
+ readonly description: "JSON on stdout (always)";
14465
+ readonly hidden: false;
14466
+ }];
14467
+ readonly subcommands: readonly [];
14138
14468
  }, {
14139
14469
  readonly name: "approve-target";
14140
14470
  readonly description: "";