@indigoai-us/hq-cli 5.345.151 → 5.345.153
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.
- package/CHANGELOG.md +129 -0
- package/dist/bin/hq-auth-refresh.d.ts +4 -0
- package/dist/bin/hq-auth-refresh.js +9 -1
- package/dist/command-catalog.generated.d.ts +188 -3
- package/dist/command-catalog.generated.js +230 -3
- package/dist/command-registration-plan.d.ts +6 -0
- package/dist/command-registration-plan.js +1 -0
- package/dist/commands/agent-enroll.d.ts +12 -0
- package/dist/commands/agent-enroll.js +37 -4
- package/dist/commands/core-policy.js +4 -4
- package/dist/commands/core-session-project-native.js +19 -4
- package/dist/commands/decide.d.ts +13 -0
- package/dist/commands/decide.js +74 -0
- package/dist/commands/files.js +23 -7
- package/dist/commands/integrations-connect.js +24 -1
- package/dist/commands/integrations-core.d.ts +14 -0
- package/dist/commands/integrations-core.js +19 -1
- package/dist/commands/integrations-import.js +22 -1
- package/dist/commands/integrations.js +43 -2
- package/dist/commands/lanes-message.js +4 -11
- package/dist/commands/lanes-questions.js +3 -0
- package/dist/commands/lanes-resume.js +4 -11
- package/dist/commands/lanes-stories.js +3 -0
- package/dist/commands/rescue.d.ts +7 -0
- package/dist/commands/rescue.js +22 -13
- package/dist/commands/run.js +14 -5
- package/dist/commands/secrets.d.ts +13 -0
- package/dist/commands/secrets.js +51 -8
- package/dist/hq-cloud-sync-runner/bin/sync-runner.js +186 -186
- package/dist/hq-cloud-sync-runner/package.json +1 -1
- package/dist/lib/agent-kit/adopt-identity.d.ts +7 -1
- package/dist/lib/agent-kit/adopt-identity.js +18 -3
- package/dist/lib/agent-kit/services.d.ts +3 -1
- package/dist/lib/agent-kit/services.js +5 -1
- package/dist/lib/daemon/ops/policy.d.ts +9 -1
- package/dist/lib/daemon/ops/policy.js +37 -2
- package/dist/lib/decisions/client.d.ts +67 -0
- package/dist/lib/decisions/client.js +120 -0
- package/dist/lib/decisions/expiry.d.ts +2 -0
- package/dist/lib/decisions/expiry.js +12 -0
- package/dist/lib/decisions/fixtures/us001.d.ts +137 -0
- package/dist/lib/decisions/fixtures/us001.js +21 -0
- package/dist/lib/decisions/import-lanes.d.ts +16 -0
- package/dist/lib/decisions/import-lanes.js +152 -0
- package/dist/lib/decisions/principal.d.ts +11 -0
- package/dist/lib/decisions/principal.js +52 -0
- package/dist/lib/doctor/checks/claude-wiring.d.ts +2 -2
- package/dist/lib/doctor/checks/claude-wiring.js +21 -10
- package/dist/lib/doctor/checks/work-context.js +7 -2
- package/dist/lib/doctor/fix/apply.d.ts +3 -2
- package/dist/lib/doctor/fix/apply.js +19 -15
- package/dist/lib/doctor/fix/refresh-sync-progress.d.ts +14 -0
- package/dist/lib/doctor/fix/refresh-sync-progress.js +30 -2
- package/dist/lib/doctor/fix/remediation.js +4 -2
- package/dist/lib/doctor/hook-gate-profiles.d.ts +19 -0
- package/dist/lib/doctor/hook-gate-profiles.js +34 -0
- package/dist/lib/doctor/types.d.ts +5 -0
- package/dist/lib/install/provider-wrappers.js +5 -1
- package/dist/lib/lanes/autopilot.js +4 -1
- package/dist/lib/lanes/imported-question.d.ts +5 -0
- package/dist/lib/lanes/imported-question.js +17 -0
- package/dist/lib/lanes/questions.d.ts +0 -5
- package/dist/lib/lanes/questions.js +2 -0
- package/dist/lib/lanes/reconcile.js +21 -10
- package/dist/lib/lanes/store.d.ts +0 -8
- package/dist/lib/lanes/store.js +2 -1
- package/dist/lib/lanes/stories.d.ts +15 -0
- package/dist/lib/lanes/stories.js +25 -0
- package/dist/lib/mesh/client.d.ts +8 -0
- package/dist/lib/mesh/client.js +44 -3
- package/dist/lib/mesh/denial-codes.js +1 -1
- package/dist/lib/mesh/live/daemon/run.d.ts +9 -1
- package/dist/lib/mesh/live/daemon/run.js +30 -1
- package/dist/lib/mesh/live/flush.d.ts +7 -0
- package/dist/lib/mesh/live/flush.js +53 -10
- package/dist/lib/registry/registry.js +6 -0
- package/dist/lib/scan-packages/index.js +7 -3
- package/dist/lib/work-context/organize.d.ts +2 -0
- package/dist/lib/work-context/organize.js +22 -4
- package/dist/lib/workers-registry/index.d.ts +12 -1
- package/dist/lib/workers-registry/index.js +39 -1
- package/dist/utils/cognito-session.d.ts +4 -1
- package/dist/utils/cognito-session.js +11 -1
- package/dist/utils/hook-trust.d.ts +27 -0
- package/dist/utils/hook-trust.js +150 -8
- package/dist/utils/shipped-codex-hooks.d.ts +17 -0
- package/dist/utils/shipped-codex-hooks.js +86 -0
- package/package.json +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,135 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [5.345.153] — 2026-10-21
|
|
6
|
+
- `hq-auth-refresh --min-validity-seconds N` now applies to person sessions,
|
|
7
|
+
not only machine tokens: a person session with less than N seconds left
|
|
8
|
+
(120 to 1800, default 120) is renewed. New `--force` renews a person session
|
|
9
|
+
even while it is still valid. The deploy identity resolver can use these to
|
|
10
|
+
stop returning `login_required` while `hq whoami` shows a valid session.
|
|
11
|
+
- `hq doctor --fix` now rotates stale sync-manifest uploads across runs. Each
|
|
12
|
+
run starts after the last company it tried, so a machine with many stale
|
|
13
|
+
company manifests reaches all of them, and a company whose upload keeps
|
|
14
|
+
failing no longer blocks the rest. When stale journals and stale manifests
|
|
15
|
+
are both pending, one of the two network repair slots goes to a manifest
|
|
16
|
+
upload. The run still makes at most two network repairs in total.
|
|
17
|
+
- Work Mesh sessions held because their company was missing now drain once
|
|
18
|
+
your membership confirms the company. Before this, after
|
|
19
|
+
`hq mesh daemon install` those sessions kept piling up in the held and
|
|
20
|
+
dead-letter queues when the session only knew the company's slug. The daemon
|
|
21
|
+
now looks the slug up through your membership, and retries the held backlog
|
|
22
|
+
every 15 minutes instead of only at start. Sessions whose company cannot be
|
|
23
|
+
confirmed stay held.
|
|
24
|
+
- Each agent kit now keeps its machine sign-in tokens in its own folder
|
|
25
|
+
(`token-state/` inside the agent's directory) instead of the shared
|
|
26
|
+
`~/.hq/work-mesh/daemon/cognito-tokens.json`. Before this, an agent running on
|
|
27
|
+
your computer could write to that shared file and your own `hq` commands,
|
|
28
|
+
such as a deploy, would then act as a machine and fail with
|
|
29
|
+
`login_required`. Kits installed before this release pick up the new folder
|
|
30
|
+
without being reinstalled. A token file an agent already wrote to the shared
|
|
31
|
+
location is not removed by this change.
|
|
32
|
+
- When a company's work registry is turned off, `hq doctor` no longer reports
|
|
33
|
+
the held work sessions as a login problem (`AUTH_DENIED`). It now says the
|
|
34
|
+
work registry is disabled and gives the setting a company admin can turn on:
|
|
35
|
+
`hq company --company <slug> settings set --work-registry-enabled true`.
|
|
36
|
+
Sessions held for this reason are re-sent by `hq mesh context requeue` once
|
|
37
|
+
the registry is on.
|
|
38
|
+
- `hq agent enroll` on a computer that already has an enrolled bot now tells
|
|
39
|
+
you to add the new bot with `--name <bot>`, so it gets its own agent
|
|
40
|
+
identity. It no longer suggests `--replace`, which overwrites the first
|
|
41
|
+
bot's credentials. When more than one bot is enrolled on the computer,
|
|
42
|
+
enroll prints the `HQ_AGENT_DIR` value the new bot must run with. Every bot,
|
|
43
|
+
including the first one's MCP server, needs its own `HQ_AGENT_DIR`, or it
|
|
44
|
+
acts as another bot.
|
|
45
|
+
- `hq doctor` no longer fails a hook just because it is left out of the
|
|
46
|
+
`minimal` hook profile on purpose. A hook must now be listed in the lowest
|
|
47
|
+
profile it appears in and every stricter one. Missing from the profile you are running
|
|
48
|
+
(`HQ_HOOK_PROFILE`, `standard` by default) is still a failure, because the
|
|
49
|
+
hook does not run; missing only from a profile you are not running is a
|
|
50
|
+
warning. A hook listed only in `strict` still fails under `standard`.
|
|
51
|
+
`hq doctor --fix` repairs both cases.
|
|
52
|
+
- `hq integrations approve` now prints the provider result when the gateway
|
|
53
|
+
runs the approved call in the background. Before, the command waited for the
|
|
54
|
+
queue row to report `resumed` and then printed only "Approved — the call
|
|
55
|
+
completed.", so paid results such as Apollo matches were lost. The CLI now
|
|
56
|
+
reads the stored result back from the queue row (the call does not run
|
|
57
|
+
again) and prints it; `--json` adds it as `result`. For a call that already
|
|
58
|
+
ran, running `hq integrations approve <queueId>` again returns its stored
|
|
59
|
+
result.
|
|
60
|
+
- `hq run` no longer refuses to start when varlock reports only warnings, such
|
|
61
|
+
as "Value is very short! Is it actually sensitive?" or a 2-character value
|
|
62
|
+
that is sensitive by default. Warnings are printed to stderr and the command
|
|
63
|
+
runs. Real errors still stop `hq run` with exit code 1.
|
|
64
|
+
- Added `hq decide ask|list|show|answer|talk|withdraw|import-lanes` for owner Queue decisions. Release 1 accepts asks from personal local bots and lets the personal local bot import option-style questions addressed to that owner. Imported questions become read-only in legacy lanes; advanced questions are skipped with counts. Ask resolves --company and accepts --expires (default 72h), matching the US-001 decisions service contract. Requires that service before use.
|
|
65
|
+
- Company members can now add apps with `hq integrations connect`, `catalog`,
|
|
66
|
+
`inspect`, `discover`, `import`, and `reconnect --connect`; guests are still
|
|
67
|
+
refused by the server. Removing and governing apps is unchanged.
|
|
68
|
+
- When a member tries to reconnect or replace an app someone else connected,
|
|
69
|
+
the CLI explains that an owner or admin has to reconnect it, instead of
|
|
70
|
+
printing the raw `INTEGRATION_RECONNECT_FORBIDDEN` refusal.
|
|
71
|
+
- `hq integrations connect <app>` on an app someone else connected now tells a
|
|
72
|
+
member to ask an owner or admin, rather than suggesting `reconnect` or
|
|
73
|
+
`--force`, which the server would refuse.
|
|
74
|
+
- `hq integrations import` skips a connector that someone else already
|
|
75
|
+
connected and keeps importing the rest.
|
|
76
|
+
- `hq lanes message --project <p>` and `hq lanes resume --project <p>` now
|
|
77
|
+
work on a lane that has no story. Before this, moving a no-story lane to
|
|
78
|
+
another project appended a stories entry with an empty story id, the lane
|
|
79
|
+
schema rejected it, and the whole write rolled back. The lane now moves to
|
|
80
|
+
the new project, keeps its no-story reason, and gains no story entry.
|
|
81
|
+
`hq lanes stories add` refuses an empty story id with `missing_story`.
|
|
82
|
+
- The unit suite now passes on a developer Mac with a temporary HOME. A setup file gives every test worker the canonical macOS temp directory (`/private/var/...`) and strips HQ, Claude Code and Codex session variables, so a run started from inside an HQ session behaves like CI. Local macOS runs use at most 4 workers unless `--maxWorkers` is passed. Tests no longer pick up Homebrew bash, `/opt/homebrew/bin`, an installed HQ.app, or BSD `stat` differences, and node stubs work when node's path contains a space. Every test worker also puts a stand-in `crontab` first on PATH, and a test fails if `crontab` would resolve to anything else, so no test can edit the real user crontab (a temp HOME does not isolate it). The agent-kit fallback install test now injects its own crontab runner. Linux-only tests (Linux login-home lanes accounts) and the clean-clone checks that need a case-sensitive, non-normalizing filesystem are skipped with a stated reason where they cannot run.
|
|
83
|
+
- The daemon policy index notices a policy file added or removed even when the file watcher misses the event, which macOS FSEvents can do right after a watcher starts. `list()` compares directory stamps taken at the last rebuild.
|
|
84
|
+
- An autopilot lock records the real time it was taken, not the injected clock value.
|
|
85
|
+
- The registry canonicalises directories with the native realpath on macOS, so `/var` and `/private/var` spellings of one directory map to the same key. A registry entry saved with letter case that differs from the disk may need re-registering.
|
|
86
|
+
- The provider wrapper's perl timeout fallback (used where `timeout` is not installed, such as macOS) no longer prints "Alarm clock" to the terminal. The exit status is still 142.
|
|
87
|
+
- `hq core policy` age report prints the awk error for the platform it ran on, and the differential corpus recorder maps both macOS spellings of `$HOME` to `<HOME>`.
|
|
88
|
+
- `hq mesh context organize` now lists fresh candidates when the session's pending decision has expired, instead of returning the same expired decision. Choosing an option or `--create-project` after that no longer fails with `DECISION_EXPIRED` or `DECISION_WINDOW_MISSING`.
|
|
89
|
+
- The published core E2E harness tears down reliably on macOS.
|
|
90
|
+
- Windows lock acquisition now waits out transient EPERM/EBUSY instead of failing early.
|
|
91
|
+
- Worker registry rebuild no longer walks into nested git checkouts. A folder below the scan root that holds a `.git` file (linked worktree) or `.git` folder (clone) is treated as a separate checkout: a `worker.yaml` directly inside it still registers, but nothing beneath it is read. `workspace/worktrees/`, `node_modules/`, and `.git/` folders are skipped wherever they appear. A company folder (`companies/<slug>`) or its `workers/` folder kept as its own repository still registers every worker. The worker-id clash check in `hq core scan-packages` uses the same rule.
|
|
92
|
+
|
|
93
|
+
## [5.345.152] — 2026-10-20
|
|
94
|
+
- The bundled sync engine now uses hq-cloud 6.18.91. When a company Outpost
|
|
95
|
+
fails to start and the server has already cleaned it up,
|
|
96
|
+
`hq outposts provision --company <slug>` (and `create --company --name`)
|
|
97
|
+
stops right away and says nothing was left running, you were not charged,
|
|
98
|
+
and it is safe to run the same command again. `hq outposts status --company`
|
|
99
|
+
shows the same line, and `--json` adds `code: "failed_cleaned_up"` and
|
|
100
|
+
`retrySafe: true`. Other blocked reasons keep their existing text.
|
|
101
|
+
- CI: the "changelog entry" check sets up Node before it runs, so it no longer
|
|
102
|
+
fails with "node: command not found" on the self-hosted ARM runners. No change
|
|
103
|
+
to the `hq` command itself.
|
|
104
|
+
- `hq files share --with out_…` and `hq files unshare --with out_…` now accept
|
|
105
|
+
a company Outpost id, with read or write. `hq files acl` shows the grantee as
|
|
106
|
+
`Outpost (out_…)`; `--json` output is unchanged.
|
|
107
|
+
- `hq secrets share --with out_…` now refuses write or admin for a company
|
|
108
|
+
Outpost with "Company Outposts can only be given read access to a secret."
|
|
109
|
+
before anything is sent. Leaving out `--permission` for an Outpost gives it
|
|
110
|
+
read. A server refusal for the same reason shows the same message.
|
|
111
|
+
- `hq rescue` (and so `/update-hq`) now re-trusts HQ's own Codex hooks after a
|
|
112
|
+
successful rescue. Before this, an update that changed a hook command left
|
|
113
|
+
Codex holding the old trusted hash, so Codex skipped that hook until you ran
|
|
114
|
+
`hq reindex`. Rescue trusts a hook only when its entry in the HQ root's
|
|
115
|
+
`.codex/hooks.json` or `.codex/config.toml` matches the copy shipped in the
|
|
116
|
+
installed core release, which it reads from GitHub at the synced commit.
|
|
117
|
+
It reads that copy only from `indigoai-us/hq-core` or
|
|
118
|
+
`indigoai-us/hq-core-staging`; if `core/core.yaml` names any other repo
|
|
119
|
+
(for example after `hq rescue --source <fork>`), rescue trusts nothing.
|
|
120
|
+
Hooks you added to those files by hand, or shipped entries you edited, are
|
|
121
|
+
never trusted. User and managed hooks are left alone, and hooks that are
|
|
122
|
+
already trusted are not rewritten. Rescue does not re-enable a shipped hook
|
|
123
|
+
you disabled; it only refreshes that hook's trust (`hq reindex` still
|
|
124
|
+
re-enables shipped hooks). Nothing happens when Codex is not installed, and
|
|
125
|
+
`--check` never touches hook trust. Rescue prints a warning that points at
|
|
126
|
+
`hq reindex` and keeps its exit status when the shipped files cannot be
|
|
127
|
+
read, when the release does not ship a file an HQ hook comes from, when a
|
|
128
|
+
shipped file does not parse, when the repo is not an HQ core repo, or when
|
|
129
|
+
the trust step fails.
|
|
130
|
+
- `hq secrets exec` run without a session id (no `HQ_SESSION_ID`, `CLAUDE_CODE_SESSION_ID`, `CLAUDE_SESSION_ID`, `CODEX_SESSION_ID`, `CODEX_THREAD_ID` or `GROK_SESSION_ID`), such as a launchd or cron job, no longer borrows the company lock of whichever interactive session last wrote the sessions `.current` pointer. Before this, a job could load the same-named secret from that session's company. Such a job must now pass `--company <slug>` or `--personal`. Otherwise it prints how to fix the call and exits 78 without reading the vault. An `HQ_API_KEY` (`hqk_`) caller is unaffected because its key is bound to one company. A caller with its own session id keeps the existing lock rules: `--company` can only pick a company inside that session's lock.
|
|
131
|
+
- Defines the Windows acceptance bar for the native hook engine and checks it before a release. Hook checks whose stories are not merged yet are reported as pending and do not block other releases. A failed check still blocks the release.
|
|
132
|
+
- A pass requires runner evidence for that commit. Counts written into corpus files, a source-text match, or a signed-off latency number with no report stay pending and do not block a release.
|
|
133
|
+
|
|
5
134
|
## [5.345.151] — 2026-10-20
|
|
6
135
|
- `hq lanes link _deliver` no longer hands a conductor message to a subagent. Subagent hook events share the root session id, so a subagent tool call used to claim the message and the root session never saw it. Child payloads, including Grok child sessions (`subagent_type`) and Codex child threads, now get nothing and the message stays queued until the root session's next tool call or stop. SubagentStop no longer delivers. A parent session id alone does not mark a child, so resumed, forked, or launcher-spawned Grok roots still receive their messages.
|
|
7
136
|
- If you leave out `--company`, `hq meetings invite <url>` now uses your only active company. If you belong to several companies, it lists them and asks you to pick one. The command used to send the invite as Personal instead. Personal can never record, so you saw the HQ Workforce upgrade prompt even when your company already had meeting recording.
|
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
* shell out to a plain binary instead of a subcommand. Equivalent to
|
|
7
7
|
* `hq auth refresh`.
|
|
8
8
|
*
|
|
9
|
+
* Flags: `--min-validity-seconds N` renews a person session that has less than
|
|
10
|
+
* N seconds left (default 120); `--force` renews it even when still valid.
|
|
11
|
+
*
|
|
9
12
|
* Exit 0 if a valid session is ensured now (healthy cache hit, refresh, or
|
|
10
13
|
* machine-token mint). Exit 1 if no valid session could be ensured
|
|
11
14
|
* non-interactively.
|
|
@@ -16,6 +19,7 @@ import "../node-network-compat.js";
|
|
|
16
19
|
import type { refreshCachedSession } from "../utils/cognito-session.js";
|
|
17
20
|
type RefreshSession = (options?: {
|
|
18
21
|
minValiditySeconds?: number;
|
|
22
|
+
force?: boolean;
|
|
19
23
|
}) => ReturnType<typeof refreshCachedSession>;
|
|
20
24
|
export declare function runAuthRefresh(refreshSession?: RefreshSession): Promise<number>;
|
|
21
25
|
export declare function startAuthRefresh(acquireLease?: typeof acquireCurrentPackageUseLease, updateRequestPending?: () => boolean): Promise<number>;
|
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
* shell out to a plain binary instead of a subcommand. Equivalent to
|
|
7
7
|
* `hq auth refresh`.
|
|
8
8
|
*
|
|
9
|
+
* Flags: `--min-validity-seconds N` renews a person session that has less than
|
|
10
|
+
* N seconds left (default 120); `--force` renews it even when still valid.
|
|
11
|
+
*
|
|
9
12
|
* Exit 0 if a valid session is ensured now (healthy cache hit, refresh, or
|
|
10
13
|
* machine-token mint). Exit 1 if no valid session could be ensured
|
|
11
14
|
* non-interactively.
|
|
@@ -17,6 +20,7 @@ import { acquireCurrentPackageUseLease, currentPackageUseUpdatePending, } from "
|
|
|
17
20
|
import "../node-network-compat.js";
|
|
18
21
|
import { isMainModule } from "../utils/is-main-module.js";
|
|
19
22
|
const MIN_VALIDITY_FLAG = "--min-validity-seconds";
|
|
23
|
+
const FORCE_FLAG = "--force";
|
|
20
24
|
function parseMinimumValiditySeconds(argv, env) {
|
|
21
25
|
let raw;
|
|
22
26
|
let fromFlag = false;
|
|
@@ -53,7 +57,11 @@ export async function runAuthRefresh(refreshSession) {
|
|
|
53
57
|
let exitCode = 1;
|
|
54
58
|
try {
|
|
55
59
|
const minValiditySeconds = parseMinimumValiditySeconds(process.argv.slice(2), process.env);
|
|
56
|
-
const
|
|
60
|
+
const force = process.argv.slice(2).includes(FORCE_FLAG);
|
|
61
|
+
const result = await (refreshSession ?? refresh)({
|
|
62
|
+
...(minValiditySeconds === undefined ? {} : { minValiditySeconds }),
|
|
63
|
+
...(force ? { force } : {}),
|
|
64
|
+
});
|
|
57
65
|
if (result.refreshed) {
|
|
58
66
|
exitCode = 0;
|
|
59
67
|
}
|
|
@@ -27,6 +27,191 @@ export type CommandCatalogEntry = {
|
|
|
27
27
|
readonly subcommands: readonly CommandCatalogEntry[];
|
|
28
28
|
};
|
|
29
29
|
export declare const COMMAND_CATALOG: readonly [{
|
|
30
|
+
readonly name: "decide";
|
|
31
|
+
readonly description: "Ask and answer owner decisions in the HQ Queue";
|
|
32
|
+
readonly aliases: readonly [];
|
|
33
|
+
readonly hidden: false;
|
|
34
|
+
readonly helpOption: true;
|
|
35
|
+
readonly helpCommand: true;
|
|
36
|
+
readonly usage: "[options] [command]";
|
|
37
|
+
readonly helpText: readonly [];
|
|
38
|
+
readonly arguments: readonly [];
|
|
39
|
+
readonly options: readonly [];
|
|
40
|
+
readonly subcommands: readonly [{
|
|
41
|
+
readonly name: "ask";
|
|
42
|
+
readonly description: "Create an option-choice owner decision as the personal local bot";
|
|
43
|
+
readonly aliases: readonly [];
|
|
44
|
+
readonly hidden: false;
|
|
45
|
+
readonly helpOption: true;
|
|
46
|
+
readonly helpCommand: false;
|
|
47
|
+
readonly usage: "[options] <statement>";
|
|
48
|
+
readonly helpText: readonly [];
|
|
49
|
+
readonly arguments: readonly [{
|
|
50
|
+
readonly name: "statement";
|
|
51
|
+
readonly required: true;
|
|
52
|
+
readonly variadic: false;
|
|
53
|
+
readonly description: "";
|
|
54
|
+
}];
|
|
55
|
+
readonly options: readonly [{
|
|
56
|
+
readonly flags: "--to <audience>";
|
|
57
|
+
readonly description: "Decision audience";
|
|
58
|
+
readonly hidden: false;
|
|
59
|
+
readonly choices: readonly ["me"];
|
|
60
|
+
readonly defaultValue: "me";
|
|
61
|
+
}, {
|
|
62
|
+
readonly flags: "--option <id|label>";
|
|
63
|
+
readonly description: "Choice, repeatable";
|
|
64
|
+
readonly hidden: false;
|
|
65
|
+
readonly defaultValue: readonly [];
|
|
66
|
+
}, {
|
|
67
|
+
readonly flags: "--recommend <id>";
|
|
68
|
+
readonly description: "Recommended option id";
|
|
69
|
+
readonly hidden: false;
|
|
70
|
+
}, {
|
|
71
|
+
readonly flags: "--context-link <url>";
|
|
72
|
+
readonly description: "Context link, repeatable";
|
|
73
|
+
readonly hidden: false;
|
|
74
|
+
readonly defaultValue: readonly [];
|
|
75
|
+
}, {
|
|
76
|
+
readonly flags: "--context <text>";
|
|
77
|
+
readonly description: "Short context brief";
|
|
78
|
+
readonly hidden: false;
|
|
79
|
+
readonly defaultValue: "";
|
|
80
|
+
}, {
|
|
81
|
+
readonly flags: "--company <slug|uid>";
|
|
82
|
+
readonly description: "Company (defaults to the active company)";
|
|
83
|
+
readonly hidden: false;
|
|
84
|
+
}, {
|
|
85
|
+
readonly flags: "--expires <duration|iso>";
|
|
86
|
+
readonly description: "Expiry duration (m, h, d) or ISO date-time";
|
|
87
|
+
readonly hidden: false;
|
|
88
|
+
readonly defaultValue: "72h";
|
|
89
|
+
}, {
|
|
90
|
+
readonly flags: "--commitment <id>";
|
|
91
|
+
readonly description: "Related commitment";
|
|
92
|
+
readonly hidden: false;
|
|
93
|
+
}, {
|
|
94
|
+
readonly flags: "--json";
|
|
95
|
+
readonly description: "Print the decision record";
|
|
96
|
+
readonly hidden: false;
|
|
97
|
+
}];
|
|
98
|
+
readonly subcommands: readonly [];
|
|
99
|
+
}, {
|
|
100
|
+
readonly name: "list";
|
|
101
|
+
readonly description: "Read your decisions across companies, oldest first";
|
|
102
|
+
readonly aliases: readonly [];
|
|
103
|
+
readonly hidden: false;
|
|
104
|
+
readonly helpOption: true;
|
|
105
|
+
readonly helpCommand: false;
|
|
106
|
+
readonly usage: "[options]";
|
|
107
|
+
readonly helpText: readonly [];
|
|
108
|
+
readonly arguments: readonly [];
|
|
109
|
+
readonly options: readonly [{
|
|
110
|
+
readonly flags: "--open";
|
|
111
|
+
readonly description: "List open decisions";
|
|
112
|
+
readonly hidden: false;
|
|
113
|
+
}, {
|
|
114
|
+
readonly flags: "--json";
|
|
115
|
+
readonly description: "Print JSON";
|
|
116
|
+
readonly hidden: false;
|
|
117
|
+
}];
|
|
118
|
+
readonly subcommands: readonly [];
|
|
119
|
+
}, {
|
|
120
|
+
readonly name: "show";
|
|
121
|
+
readonly description: "Show a visible decision, including its options and answer";
|
|
122
|
+
readonly aliases: readonly [];
|
|
123
|
+
readonly hidden: false;
|
|
124
|
+
readonly helpOption: true;
|
|
125
|
+
readonly helpCommand: false;
|
|
126
|
+
readonly usage: "[options] <id>";
|
|
127
|
+
readonly helpText: readonly [];
|
|
128
|
+
readonly arguments: readonly [{
|
|
129
|
+
readonly name: "id";
|
|
130
|
+
readonly required: true;
|
|
131
|
+
readonly variadic: false;
|
|
132
|
+
readonly description: "";
|
|
133
|
+
}];
|
|
134
|
+
readonly options: readonly [];
|
|
135
|
+
readonly subcommands: readonly [];
|
|
136
|
+
}, {
|
|
137
|
+
readonly name: "answer";
|
|
138
|
+
readonly description: "Answer with an option ID; the server enforces expiry and first answer";
|
|
139
|
+
readonly aliases: readonly [];
|
|
140
|
+
readonly hidden: false;
|
|
141
|
+
readonly helpOption: true;
|
|
142
|
+
readonly helpCommand: false;
|
|
143
|
+
readonly usage: "[options] <id>";
|
|
144
|
+
readonly helpText: readonly [];
|
|
145
|
+
readonly arguments: readonly [{
|
|
146
|
+
readonly name: "id";
|
|
147
|
+
readonly required: true;
|
|
148
|
+
readonly variadic: false;
|
|
149
|
+
readonly description: "";
|
|
150
|
+
}];
|
|
151
|
+
readonly options: readonly [{
|
|
152
|
+
readonly flags: "--choice <id>";
|
|
153
|
+
readonly description: "Option id";
|
|
154
|
+
readonly hidden: false;
|
|
155
|
+
}, {
|
|
156
|
+
readonly flags: "--source <source>";
|
|
157
|
+
readonly description: "Answer surface";
|
|
158
|
+
readonly hidden: false;
|
|
159
|
+
readonly choices: readonly ["desktop", "thread"];
|
|
160
|
+
readonly defaultValue: "desktop";
|
|
161
|
+
}];
|
|
162
|
+
readonly subcommands: readonly [];
|
|
163
|
+
}, {
|
|
164
|
+
readonly name: "talk";
|
|
165
|
+
readonly description: "Open the decision's bot conversation";
|
|
166
|
+
readonly aliases: readonly [];
|
|
167
|
+
readonly hidden: false;
|
|
168
|
+
readonly helpOption: true;
|
|
169
|
+
readonly helpCommand: false;
|
|
170
|
+
readonly usage: "[options] <id>";
|
|
171
|
+
readonly helpText: readonly [];
|
|
172
|
+
readonly arguments: readonly [{
|
|
173
|
+
readonly name: "id";
|
|
174
|
+
readonly required: true;
|
|
175
|
+
readonly variadic: false;
|
|
176
|
+
readonly description: "";
|
|
177
|
+
}];
|
|
178
|
+
readonly options: readonly [];
|
|
179
|
+
readonly subcommands: readonly [];
|
|
180
|
+
}, {
|
|
181
|
+
readonly name: "withdraw";
|
|
182
|
+
readonly description: "Withdraw a decision you asked";
|
|
183
|
+
readonly aliases: readonly [];
|
|
184
|
+
readonly hidden: false;
|
|
185
|
+
readonly helpOption: true;
|
|
186
|
+
readonly helpCommand: false;
|
|
187
|
+
readonly usage: "[options] <id>";
|
|
188
|
+
readonly helpText: readonly [];
|
|
189
|
+
readonly arguments: readonly [{
|
|
190
|
+
readonly name: "id";
|
|
191
|
+
readonly required: true;
|
|
192
|
+
readonly variadic: false;
|
|
193
|
+
readonly description: "";
|
|
194
|
+
}];
|
|
195
|
+
readonly options: readonly [];
|
|
196
|
+
readonly subcommands: readonly [];
|
|
197
|
+
}, {
|
|
198
|
+
readonly name: "import-lanes";
|
|
199
|
+
readonly description: "Import option-style legacy questions once; report skipped advanced questions";
|
|
200
|
+
readonly aliases: readonly [];
|
|
201
|
+
readonly hidden: false;
|
|
202
|
+
readonly helpOption: true;
|
|
203
|
+
readonly helpCommand: false;
|
|
204
|
+
readonly usage: "[options]";
|
|
205
|
+
readonly helpText: readonly [];
|
|
206
|
+
readonly arguments: readonly [];
|
|
207
|
+
readonly options: readonly [{
|
|
208
|
+
readonly flags: "--json";
|
|
209
|
+
readonly description: "Print import counts and skipped question reasons";
|
|
210
|
+
readonly hidden: false;
|
|
211
|
+
}];
|
|
212
|
+
readonly subcommands: readonly [];
|
|
213
|
+
}];
|
|
214
|
+
}, {
|
|
30
215
|
readonly name: "modules";
|
|
31
216
|
readonly description: "Module management commands";
|
|
32
217
|
readonly aliases: readonly [];
|
|
@@ -2058,7 +2243,7 @@ export declare const COMMAND_CATALOG: readonly [{
|
|
|
2058
2243
|
readonly hidden: false;
|
|
2059
2244
|
}, {
|
|
2060
2245
|
readonly flags: "--permission <level>";
|
|
2061
|
-
readonly description: "Permission level: read | write | admin";
|
|
2246
|
+
readonly description: "Permission level: read | write | admin (required, except for a company Outpost, which can only be given read and defaults to it)";
|
|
2062
2247
|
readonly hidden: false;
|
|
2063
2248
|
}];
|
|
2064
2249
|
readonly subcommands: readonly [];
|
|
@@ -2813,7 +2998,7 @@ export declare const COMMAND_CATALOG: readonly [{
|
|
|
2813
2998
|
}];
|
|
2814
2999
|
readonly options: readonly [{
|
|
2815
3000
|
readonly flags: "--with <principal>";
|
|
2816
|
-
readonly description: "Email address, group id, or '@all' to share with every active company member";
|
|
3001
|
+
readonly description: "Email address, group id, company Outpost id (out_...), or '@all' to share with every active company member";
|
|
2817
3002
|
readonly hidden: false;
|
|
2818
3003
|
}, {
|
|
2819
3004
|
readonly flags: "--permission <level>";
|
|
@@ -2859,7 +3044,7 @@ export declare const COMMAND_CATALOG: readonly [{
|
|
|
2859
3044
|
}];
|
|
2860
3045
|
readonly options: readonly [{
|
|
2861
3046
|
readonly flags: "--with <principal>";
|
|
2862
|
-
readonly description: "Person uid, agent uid, email address, group id, or '@all' to remove the grant";
|
|
3047
|
+
readonly description: "Person uid, agent uid, company Outpost id (out_...), email address, group id, or '@all' to remove the grant";
|
|
2863
3048
|
readonly hidden: false;
|
|
2864
3049
|
}];
|
|
2865
3050
|
readonly subcommands: readonly [];
|
|
@@ -1,5 +1,232 @@
|
|
|
1
1
|
// This file is generated by scripts/generate-command-catalog.mjs. Do not edit.
|
|
2
2
|
export const COMMAND_CATALOG = [
|
|
3
|
+
{
|
|
4
|
+
"name": "decide",
|
|
5
|
+
"description": "Ask and answer owner decisions in the HQ Queue",
|
|
6
|
+
"aliases": [],
|
|
7
|
+
"hidden": false,
|
|
8
|
+
"helpOption": true,
|
|
9
|
+
"helpCommand": true,
|
|
10
|
+
"usage": "[options] [command]",
|
|
11
|
+
"helpText": [],
|
|
12
|
+
"arguments": [],
|
|
13
|
+
"options": [],
|
|
14
|
+
"subcommands": [
|
|
15
|
+
{
|
|
16
|
+
"name": "ask",
|
|
17
|
+
"description": "Create an option-choice owner decision as the personal local bot",
|
|
18
|
+
"aliases": [],
|
|
19
|
+
"hidden": false,
|
|
20
|
+
"helpOption": true,
|
|
21
|
+
"helpCommand": false,
|
|
22
|
+
"usage": "[options] <statement>",
|
|
23
|
+
"helpText": [],
|
|
24
|
+
"arguments": [
|
|
25
|
+
{
|
|
26
|
+
"name": "statement",
|
|
27
|
+
"required": true,
|
|
28
|
+
"variadic": false,
|
|
29
|
+
"description": ""
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"options": [
|
|
33
|
+
{
|
|
34
|
+
"flags": "--to <audience>",
|
|
35
|
+
"description": "Decision audience",
|
|
36
|
+
"hidden": false,
|
|
37
|
+
"choices": [
|
|
38
|
+
"me"
|
|
39
|
+
],
|
|
40
|
+
"defaultValue": "me"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"flags": "--option <id|label>",
|
|
44
|
+
"description": "Choice, repeatable",
|
|
45
|
+
"hidden": false,
|
|
46
|
+
"defaultValue": []
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"flags": "--recommend <id>",
|
|
50
|
+
"description": "Recommended option id",
|
|
51
|
+
"hidden": false
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"flags": "--context-link <url>",
|
|
55
|
+
"description": "Context link, repeatable",
|
|
56
|
+
"hidden": false,
|
|
57
|
+
"defaultValue": []
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"flags": "--context <text>",
|
|
61
|
+
"description": "Short context brief",
|
|
62
|
+
"hidden": false,
|
|
63
|
+
"defaultValue": ""
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"flags": "--company <slug|uid>",
|
|
67
|
+
"description": "Company (defaults to the active company)",
|
|
68
|
+
"hidden": false
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"flags": "--expires <duration|iso>",
|
|
72
|
+
"description": "Expiry duration (m, h, d) or ISO date-time",
|
|
73
|
+
"hidden": false,
|
|
74
|
+
"defaultValue": "72h"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"flags": "--commitment <id>",
|
|
78
|
+
"description": "Related commitment",
|
|
79
|
+
"hidden": false
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"flags": "--json",
|
|
83
|
+
"description": "Print the decision record",
|
|
84
|
+
"hidden": false
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
"subcommands": []
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"name": "list",
|
|
91
|
+
"description": "Read your decisions across companies, oldest first",
|
|
92
|
+
"aliases": [],
|
|
93
|
+
"hidden": false,
|
|
94
|
+
"helpOption": true,
|
|
95
|
+
"helpCommand": false,
|
|
96
|
+
"usage": "[options]",
|
|
97
|
+
"helpText": [],
|
|
98
|
+
"arguments": [],
|
|
99
|
+
"options": [
|
|
100
|
+
{
|
|
101
|
+
"flags": "--open",
|
|
102
|
+
"description": "List open decisions",
|
|
103
|
+
"hidden": false
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"flags": "--json",
|
|
107
|
+
"description": "Print JSON",
|
|
108
|
+
"hidden": false
|
|
109
|
+
}
|
|
110
|
+
],
|
|
111
|
+
"subcommands": []
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"name": "show",
|
|
115
|
+
"description": "Show a visible decision, including its options and answer",
|
|
116
|
+
"aliases": [],
|
|
117
|
+
"hidden": false,
|
|
118
|
+
"helpOption": true,
|
|
119
|
+
"helpCommand": false,
|
|
120
|
+
"usage": "[options] <id>",
|
|
121
|
+
"helpText": [],
|
|
122
|
+
"arguments": [
|
|
123
|
+
{
|
|
124
|
+
"name": "id",
|
|
125
|
+
"required": true,
|
|
126
|
+
"variadic": false,
|
|
127
|
+
"description": ""
|
|
128
|
+
}
|
|
129
|
+
],
|
|
130
|
+
"options": [],
|
|
131
|
+
"subcommands": []
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"name": "answer",
|
|
135
|
+
"description": "Answer with an option ID; the server enforces expiry and first answer",
|
|
136
|
+
"aliases": [],
|
|
137
|
+
"hidden": false,
|
|
138
|
+
"helpOption": true,
|
|
139
|
+
"helpCommand": false,
|
|
140
|
+
"usage": "[options] <id>",
|
|
141
|
+
"helpText": [],
|
|
142
|
+
"arguments": [
|
|
143
|
+
{
|
|
144
|
+
"name": "id",
|
|
145
|
+
"required": true,
|
|
146
|
+
"variadic": false,
|
|
147
|
+
"description": ""
|
|
148
|
+
}
|
|
149
|
+
],
|
|
150
|
+
"options": [
|
|
151
|
+
{
|
|
152
|
+
"flags": "--choice <id>",
|
|
153
|
+
"description": "Option id",
|
|
154
|
+
"hidden": false
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"flags": "--source <source>",
|
|
158
|
+
"description": "Answer surface",
|
|
159
|
+
"hidden": false,
|
|
160
|
+
"choices": [
|
|
161
|
+
"desktop",
|
|
162
|
+
"thread"
|
|
163
|
+
],
|
|
164
|
+
"defaultValue": "desktop"
|
|
165
|
+
}
|
|
166
|
+
],
|
|
167
|
+
"subcommands": []
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"name": "talk",
|
|
171
|
+
"description": "Open the decision's bot conversation",
|
|
172
|
+
"aliases": [],
|
|
173
|
+
"hidden": false,
|
|
174
|
+
"helpOption": true,
|
|
175
|
+
"helpCommand": false,
|
|
176
|
+
"usage": "[options] <id>",
|
|
177
|
+
"helpText": [],
|
|
178
|
+
"arguments": [
|
|
179
|
+
{
|
|
180
|
+
"name": "id",
|
|
181
|
+
"required": true,
|
|
182
|
+
"variadic": false,
|
|
183
|
+
"description": ""
|
|
184
|
+
}
|
|
185
|
+
],
|
|
186
|
+
"options": [],
|
|
187
|
+
"subcommands": []
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"name": "withdraw",
|
|
191
|
+
"description": "Withdraw a decision you asked",
|
|
192
|
+
"aliases": [],
|
|
193
|
+
"hidden": false,
|
|
194
|
+
"helpOption": true,
|
|
195
|
+
"helpCommand": false,
|
|
196
|
+
"usage": "[options] <id>",
|
|
197
|
+
"helpText": [],
|
|
198
|
+
"arguments": [
|
|
199
|
+
{
|
|
200
|
+
"name": "id",
|
|
201
|
+
"required": true,
|
|
202
|
+
"variadic": false,
|
|
203
|
+
"description": ""
|
|
204
|
+
}
|
|
205
|
+
],
|
|
206
|
+
"options": [],
|
|
207
|
+
"subcommands": []
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"name": "import-lanes",
|
|
211
|
+
"description": "Import option-style legacy questions once; report skipped advanced questions",
|
|
212
|
+
"aliases": [],
|
|
213
|
+
"hidden": false,
|
|
214
|
+
"helpOption": true,
|
|
215
|
+
"helpCommand": false,
|
|
216
|
+
"usage": "[options]",
|
|
217
|
+
"helpText": [],
|
|
218
|
+
"arguments": [],
|
|
219
|
+
"options": [
|
|
220
|
+
{
|
|
221
|
+
"flags": "--json",
|
|
222
|
+
"description": "Print import counts and skipped question reasons",
|
|
223
|
+
"hidden": false
|
|
224
|
+
}
|
|
225
|
+
],
|
|
226
|
+
"subcommands": []
|
|
227
|
+
}
|
|
228
|
+
]
|
|
229
|
+
},
|
|
3
230
|
{
|
|
4
231
|
"name": "modules",
|
|
5
232
|
"description": "Module management commands",
|
|
@@ -2469,7 +2696,7 @@ export const COMMAND_CATALOG = [
|
|
|
2469
2696
|
},
|
|
2470
2697
|
{
|
|
2471
2698
|
"flags": "--permission <level>",
|
|
2472
|
-
"description": "Permission level: read | write | admin",
|
|
2699
|
+
"description": "Permission level: read | write | admin (required, except for a company Outpost, which can only be given read and defaults to it)",
|
|
2473
2700
|
"hidden": false
|
|
2474
2701
|
}
|
|
2475
2702
|
],
|
|
@@ -3380,7 +3607,7 @@ export const COMMAND_CATALOG = [
|
|
|
3380
3607
|
"options": [
|
|
3381
3608
|
{
|
|
3382
3609
|
"flags": "--with <principal>",
|
|
3383
|
-
"description": "Email address, group id, or '@all' to share with every active company member",
|
|
3610
|
+
"description": "Email address, group id, company Outpost id (out_...), or '@all' to share with every active company member",
|
|
3384
3611
|
"hidden": false
|
|
3385
3612
|
},
|
|
3386
3613
|
{
|
|
@@ -3437,7 +3664,7 @@ export const COMMAND_CATALOG = [
|
|
|
3437
3664
|
"options": [
|
|
3438
3665
|
{
|
|
3439
3666
|
"flags": "--with <principal>",
|
|
3440
|
-
"description": "Person uid, agent uid, email address, group id, or '@all' to remove the grant",
|
|
3667
|
+
"description": "Person uid, agent uid, company Outpost id (out_...), email address, group id, or '@all' to remove the grant",
|
|
3441
3668
|
"hidden": false
|
|
3442
3669
|
}
|
|
3443
3670
|
],
|