@indigoai-us/hq-cli 5.130.0 → 5.132.0
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 +155 -1
- package/contracts/preflight/v1/fixtures.json +87 -0
- package/contracts/preflight/v1/schema.json +58 -0
- package/dist/command-catalog.generated.d.ts +39 -0
- package/dist/command-catalog.generated.js +50 -0
- package/dist/commands/dm.d.ts +2 -0
- package/dist/commands/dm.js +1 -1
- package/dist/commands/files.js +137 -9
- package/dist/commands/lanes.d.ts +13 -2
- package/dist/commands/lanes.js +394 -42
- package/dist/commands/mesh.js +66 -13
- package/dist/commands/update.js +1 -1
- package/dist/lib/bot/paths.d.ts +7 -5
- package/dist/lib/bot/paths.js +8 -1
- package/dist/lib/bot/prompt.d.ts +0 -2
- package/dist/lib/bot/prompt.js +5 -11
- package/dist/lib/bot/room-policy.d.ts +1 -24
- package/dist/lib/bot/room-policy.js +2 -35
- package/dist/lib/bot/run.d.ts +7 -8
- package/dist/lib/bot/run.js +21 -33
- package/dist/lib/bot/session.d.ts +1 -1
- package/dist/lib/bot/session.js +1 -1
- package/dist/lib/lanes/accounts.d.ts +6 -0
- package/dist/lib/lanes/accounts.js +2 -1
- package/dist/lib/lanes/config.d.ts +4 -0
- package/dist/lib/lanes/config.js +9 -0
- package/dist/lib/lanes/index.d.ts +10 -3
- package/dist/lib/lanes/index.js +5 -1
- package/dist/lib/lanes/mesh-events.js +4 -0
- package/dist/lib/lanes/models.d.ts +78 -0
- package/dist/lib/lanes/models.js +205 -0
- package/dist/lib/lanes/move-account.d.ts +56 -0
- package/dist/lib/lanes/move-account.js +193 -0
- package/dist/lib/lanes/provider-rejection.d.ts +86 -0
- package/dist/lib/lanes/provider-rejection.js +258 -0
- package/dist/lib/lanes/quota.d.ts +17 -0
- package/dist/lib/lanes/quota.js +24 -0
- package/dist/lib/lanes/reconcile-install.d.ts +24 -3
- package/dist/lib/lanes/reconcile-install.js +48 -12
- package/dist/lib/lanes/reconcile.js +41 -11
- package/dist/lib/lanes/spawn.js +26 -5
- package/dist/lib/lanes/store.js +10 -0
- package/dist/lib/lanes/types.d.ts +49 -2
- package/dist/lib/lanes/types.js +4 -3
- package/dist/lib/lanes/watcher.d.ts +27 -0
- package/dist/lib/lanes/watcher.js +68 -5
- package/dist/lib/mesh/api.d.ts +2 -0
- package/dist/lib/mesh/api.js +15 -2
- package/dist/lib/mesh/live/backfill-held.d.ts +4 -3
- package/dist/lib/mesh/live/backfill-held.js +37 -14
- package/dist/lib/mesh/live/daemon/doctor.d.ts +4 -0
- package/dist/lib/mesh/live/daemon/doctor.js +15 -4
- package/dist/lib/mesh/live/daemon/install.d.ts +5 -0
- package/dist/lib/mesh/live/daemon/install.js +84 -1
- package/dist/lib/mesh/live/daemon/run.d.ts +5 -0
- package/dist/lib/mesh/live/daemon/run.js +17 -4
- package/dist/lib/mesh/live/emit-client.d.ts +2 -0
- package/dist/lib/mesh/live/emit-client.js +15 -8
- package/dist/lib/mesh/live/emit-evidence.d.ts +19 -0
- package/dist/lib/mesh/live/emit-evidence.js +20 -2
- package/dist/lib/mesh/live/emit.d.ts +9 -0
- package/dist/lib/mesh/live/emit.js +28 -2
- package/dist/lib/mesh/live/flush.js +9 -3
- package/dist/lib/search-index/index.js +22 -3
- package/dist/lib/work-context/company.d.ts +16 -0
- package/dist/lib/work-context/company.js +46 -14
- package/dist/lib/work-context/preflight-contract.d.ts +28 -0
- package/dist/lib/work-context/preflight-contract.js +85 -0
- package/dist/main.js +11 -1
- package/dist/utils/cognito-session.d.ts +39 -0
- package/dist/utils/cognito-session.js +119 -3
- package/dist/utils/environmental-error.d.ts +18 -0
- package/dist/utils/environmental-error.js +240 -7
- package/dist/utils/expected-cli-error.d.ts +2 -0
- package/dist/utils/expected-cli-error.js +4 -0
- package/dist/utils/self-update.js +4 -1
- package/dist/utils/vault-api.d.ts +1 -0
- package/dist/utils/vault-api.js +11 -3
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,156 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [5.132.0] — 2026-09-22
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- `hq lanes resume <lane-id> --account <id>` and `hq lanes message <lane-id>
|
|
10
|
+
--account <id>` move a lane's provider session to another account of the
|
|
11
|
+
same provider and continue it there, with its full history. The claude
|
|
12
|
+
transcript (`projects/<encoded cwd>/<session>.jsonl`, plus the session's
|
|
13
|
+
subagent directory) or the codex rollout
|
|
14
|
+
(`sessions/YYYY/MM/DD/rollout-*-<session>.jsonl`) is copied into the target
|
|
15
|
+
account's home; the source copy stays, and a copy the target already holds
|
|
16
|
+
is refreshed when it differs, so a lane moved back resumes the turns it ran
|
|
17
|
+
elsewhere. Every check runs before anything is copied or written: the lane must not be running (`lane_running`), the
|
|
18
|
+
target must be an account of the lane's provider
|
|
19
|
+
(`account_provider_mismatch`), exist, be enabled, be logged in, hold no
|
|
20
|
+
quota hold (`account_quota_held`), and know the lane's model; a target that
|
|
21
|
+
pins a different model needs `--model <id>` (new on both commands, accepted
|
|
22
|
+
only with `--account`). Grok lanes are refused with
|
|
23
|
+
`provider_session_not_portable`; a missing transcript or rollout with
|
|
24
|
+
`provider_session_missing`, naming the path searched. The record's
|
|
25
|
+
`account` moves, `account_history` gains an `operator_move` entry,
|
|
26
|
+
`last_resume.account` names the account the run started on, and
|
|
27
|
+
`hq lanes show` prints them; a record that changed after the move was
|
|
28
|
+
prepared is refused with `account_move_conflict`. The capacity decision
|
|
29
|
+
runs under the target account's admission lock, and a moved lane holds its
|
|
30
|
+
slot (`pending_resume`) until its spawn claims it, so two moves cannot share
|
|
31
|
+
one free slot. A target at its running cap queues the lane there with
|
|
32
|
+
`pending_resume`, and the reconcile pass resumes the session on the target,
|
|
33
|
+
honouring `--no-compact`. Mesh events for a moved lane carry `account` and
|
|
34
|
+
`account_move`. Credential files are never copied.
|
|
35
|
+
|
|
36
|
+
- A provider-level turn failure is a named lane failure. When the worker's
|
|
37
|
+
stdout carries a codex `turn.failed` event, a Claude error result with an
|
|
38
|
+
HTTP status, or a grok error object, the watcher classifies the lane
|
|
39
|
+
`failed` with `terminal_reason: provider_rejected` and writes the
|
|
40
|
+
provider's message (capped), status, error class, `retryable`, and the
|
|
41
|
+
model and account the run used to `terminal_details`. Such an exit is never
|
|
42
|
+
`interrupted` and never spawns the envelope repair turn. A 429 stays on the
|
|
43
|
+
quota path. `hq lanes show` prints `terminal_reason` and
|
|
44
|
+
`terminal_details`.
|
|
45
|
+
- `hq lanes create --model` is validated against the provider's own model
|
|
46
|
+
list before anything is written: codex from the account home's
|
|
47
|
+
`models_cache.json`, grok from `grok models`, claude from the aliases and
|
|
48
|
+
full-name prefix in `claude --help`. An unknown id is refused with
|
|
49
|
+
`model_unsupported` naming the provider, the value, the source and the
|
|
50
|
+
accepted ids. A provider whose list cannot be read (missing, corrupt, or
|
|
51
|
+
unreadable cache; failed probe) is not validated. Validation runs before
|
|
52
|
+
the mesh thread is ensured and before the admission lock is taken, so a
|
|
53
|
+
refusal leaves nothing behind and a slow provider probe never holds the
|
|
54
|
+
lock. An unpinned create reads the list of every enabled account the
|
|
55
|
+
balanced choice could land on before the lock; the account is still chosen
|
|
56
|
+
under the lock, restricted to the accounts whose list accepted the model,
|
|
57
|
+
so nothing is refused once the mesh thread exists and no probe or catalog
|
|
58
|
+
read runs while the lock is held. A `grok models` or `claude --help` probe that exits nonzero
|
|
59
|
+
is not a catalog, whatever it printed, and skips validation. Every outpost
|
|
60
|
+
lane is validated at pickup on the executing host, after its account
|
|
61
|
+
binds, and fails with `model_unsupported` there; a lane cancelled during
|
|
62
|
+
the pickup probe stays cancelled and is not spawned. A picked-up lane is
|
|
63
|
+
stored ineligible for admission (`pickup_validation_pending`) until its
|
|
64
|
+
account binds, so the reconcile pass cannot spawn it while the probe is
|
|
65
|
+
out, and the failure write refuses an already-terminal or running record
|
|
66
|
+
inside its compare-and-swap.
|
|
67
|
+
- A codex `turn.failed` or grok error with status 429, or with no status and
|
|
68
|
+
a usage-limit or rate-limit message, now reaches the quota path (reset time
|
|
69
|
+
and account hold recorded) instead of ending `interrupted`, and skips the
|
|
70
|
+
envelope repair turn so the hold applies at once; an explicit non-429
|
|
71
|
+
status wins over quota-sounding text. The reconcile pass applies the same
|
|
72
|
+
routing when it recovers a lane whose worker and watcher both died. The
|
|
73
|
+
provider's output is scanned from the tail one line at a time, so a long
|
|
74
|
+
run's events are never all parsed and held at once. A 429 whose message
|
|
75
|
+
names no reset time holds the account for the provider's
|
|
76
|
+
`quota_default_hold_ms` (fifteen minutes unless configured), recorded with
|
|
77
|
+
`reset_source: default_hold`; a message with a reset time keeps that time.
|
|
78
|
+
|
|
79
|
+
### Fixed
|
|
80
|
+
|
|
81
|
+
- `hq lanes reconcile install` no longer copies the installing shell's PATH
|
|
82
|
+
into the systemd unit. The unit PATH is, per resolved provider, the
|
|
83
|
+
directory holding the command name and the real binary's directory when a
|
|
84
|
+
symlink points elsewhere, then the hq binary's directory, then the node
|
|
85
|
+
binary's directory, then `/usr/local/bin:/usr/bin:/bin`, deduplicated; directories synced from
|
|
86
|
+
another machine's profile are left out.
|
|
87
|
+
|
|
88
|
+
## [5.131.0] — 2026-09-22
|
|
89
|
+
|
|
90
|
+
### Added
|
|
91
|
+
|
|
92
|
+
- `hq files share` can post the share record to a project channel instead of a
|
|
93
|
+
DM: `--channel <name>` names the channel and `--mention <person>` (repeatable)
|
|
94
|
+
tags people in it. Using `--mention` without `--channel` is an error. If you
|
|
95
|
+
or a mentioned person are not members of that channel, access is still
|
|
96
|
+
granted and the record falls back to a DM, with a short note on the CLI.
|
|
97
|
+
- Offline preflight results the CLI can emit are published at
|
|
98
|
+
`contracts/preflight/v1/schema.json` and `fixtures.json` (included in the
|
|
99
|
+
package). `hq mesh contract preflight --print-fixtures` prints the same
|
|
100
|
+
document. A test fails if the committed fixtures drift from the emitter.
|
|
101
|
+
contractVersion stays pinned at 1 until hq-core's vendored copy moves with it.
|
|
102
|
+
|
|
103
|
+
### Fixed
|
|
104
|
+
|
|
105
|
+
## [Unreleased]
|
|
106
|
+
|
|
107
|
+
- Held-event repair no longer treats a later event timestamp as proof that
|
|
108
|
+
metadata belongs to the current session instance. A reused session id stays
|
|
109
|
+
unresolved when the held event's binding episode does not match the current
|
|
110
|
+
one. A CLI self-update now records the verified HQ root and rewrites a
|
|
111
|
+
legacy daemon unit (no `HQ_ROOT`, or `Restart=on-failure`) before restarting
|
|
112
|
+
it, so the new process does not come up with an empty root allowlist.
|
|
113
|
+
|
|
114
|
+
## [Unreleased]
|
|
115
|
+
|
|
116
|
+
- A machine credential (fleet box or local bot) no longer posts mesh events
|
|
117
|
+
with no company. `HQ_SPAWN_COMPANY`, the bot's company, or the identity
|
|
118
|
+
file is sent with the event. When none of those is set, the event is held
|
|
119
|
+
as `needs_company` and `hq mesh daemon doctor` shows the held count.
|
|
120
|
+
A membership probe that a machine token cannot answer leaves the company
|
|
121
|
+
in place and retries, instead of clearing it.
|
|
122
|
+
|
|
123
|
+
## [Unreleased]
|
|
124
|
+
|
|
125
|
+
- Expected caller errors from company resolution, membership, and qmd lookups
|
|
126
|
+
no longer create Sentry issues. Windows filesystem failures remain visible
|
|
127
|
+
and now include redacted path context plus a sync-aware diagnostic.
|
|
128
|
+
|
|
129
|
+
- An acknowledged Work Mesh register keeps the company on the session even
|
|
130
|
+
when there is no project, or a project and no task. The next flush posts a
|
|
131
|
+
held event for that session instead of leaving it held for lack of a company.
|
|
132
|
+
Tests cover each acked-register branch.
|
|
133
|
+
|
|
134
|
+
- `hq mesh project set` sends the project version it just read (`If-Match` and
|
|
135
|
+
`expectedVersion`). A 409 prints "The Board changed while you were editing.
|
|
136
|
+
Re-run to pick up the latest." and exits non-zero. `--json` includes
|
|
137
|
+
`VERSION_CONFLICT`.
|
|
138
|
+
|
|
139
|
+
- `hq mesh session` prints each rejected event's server code (and `--json`
|
|
140
|
+
includes `rejections`). A flush dead-letter row for a per-event rejection
|
|
141
|
+
stores that code next to `reason`.
|
|
142
|
+
|
|
143
|
+
- A Cognito refresh that comes back for a different subject is refused and the
|
|
144
|
+
active `cognito-tokens.json` is left unchanged. `hq mesh daemon doctor`
|
|
145
|
+
prints the whoami subject and the subject the daemon is using.
|
|
146
|
+
|
|
147
|
+
### Changed
|
|
148
|
+
|
|
149
|
+
- Local bots can reply to other people and bots in direct messages and in
|
|
150
|
+
connected rooms without an owner-only sender restriction. Each DM
|
|
151
|
+
correspondent has a separate conversation, and the owner's private context
|
|
152
|
+
stays out of other people's conversations. Bots retain their configured
|
|
153
|
+
owner and check suspicious requests before taking sensitive actions.
|
|
154
|
+
|
|
5
155
|
## [5.130.0] — 2026-09-22
|
|
6
156
|
|
|
7
157
|
### Fixed
|
|
@@ -313,7 +463,11 @@
|
|
|
313
463
|
with its tenant intact, the write reflects the true classification, and no
|
|
314
464
|
`projectId`, `taskId`, or binding episode is fabricated on partial paths.
|
|
315
465
|
Note: a company resolved by slug only (no uid) is still not attributed on
|
|
316
|
-
either path.
|
|
466
|
+
either path. Tests disable each of those two writers in turn
|
|
467
|
+
(`writeAckedRegisterState`, and the post-ack `writeSessionState`) and
|
|
468
|
+
require the other one to still land the company for a company-only ack
|
|
469
|
+
and a company-plus-project ack. The production write itself landed in
|
|
470
|
+
`28aee9e` (#670).
|
|
317
471
|
|
|
318
472
|
- The setup bot no longer posts the same question twice when a turn takes a
|
|
319
473
|
while: a question asked in an interim update is held back if the final
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"contractVersion": 1,
|
|
3
|
+
"source": "hq-cli contracts/preflight/v1/fixtures.json",
|
|
4
|
+
"classifications": [
|
|
5
|
+
"unresolved",
|
|
6
|
+
"needs_company",
|
|
7
|
+
"company_conflict",
|
|
8
|
+
"needs_project",
|
|
9
|
+
"needs_task",
|
|
10
|
+
"bound",
|
|
11
|
+
"untracked"
|
|
12
|
+
],
|
|
13
|
+
"fixtures": [
|
|
14
|
+
{
|
|
15
|
+
"contractVersion": 1,
|
|
16
|
+
"kind": "queued",
|
|
17
|
+
"classification": "unresolved",
|
|
18
|
+
"delivery": "queued",
|
|
19
|
+
"lifecycle": "open",
|
|
20
|
+
"sessionId": "sid-preflight-fixture",
|
|
21
|
+
"clientOperationId": "op-preflight-fixture"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"contractVersion": 1,
|
|
25
|
+
"kind": "needs_company",
|
|
26
|
+
"classification": "needs_company",
|
|
27
|
+
"delivery": "clean",
|
|
28
|
+
"lifecycle": "open",
|
|
29
|
+
"sessionId": "sid-preflight-fixture",
|
|
30
|
+
"clientOperationId": "op-preflight-fixture"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"contractVersion": 1,
|
|
34
|
+
"kind": "company_conflict",
|
|
35
|
+
"classification": "company_conflict",
|
|
36
|
+
"delivery": "clean",
|
|
37
|
+
"lifecycle": "open",
|
|
38
|
+
"sessionId": "sid-preflight-fixture",
|
|
39
|
+
"clientOperationId": "op-preflight-fixture"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"contractVersion": 1,
|
|
43
|
+
"kind": "queued",
|
|
44
|
+
"classification": "needs_project",
|
|
45
|
+
"delivery": "queued",
|
|
46
|
+
"lifecycle": "open",
|
|
47
|
+
"sessionId": "sid-preflight-fixture",
|
|
48
|
+
"clientOperationId": "op-preflight-fixture",
|
|
49
|
+
"companySlug": "acme",
|
|
50
|
+
"companyUid": "cmp_acme"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"contractVersion": 1,
|
|
54
|
+
"kind": "queued",
|
|
55
|
+
"classification": "needs_task",
|
|
56
|
+
"delivery": "queued",
|
|
57
|
+
"lifecycle": "open",
|
|
58
|
+
"sessionId": "sid-preflight-fixture",
|
|
59
|
+
"clientOperationId": "op-preflight-fixture",
|
|
60
|
+
"companySlug": "acme",
|
|
61
|
+
"companyUid": "cmp_acme",
|
|
62
|
+
"projectId": "dispatch-proj"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"contractVersion": 1,
|
|
66
|
+
"kind": "queued",
|
|
67
|
+
"classification": "bound",
|
|
68
|
+
"delivery": "queued",
|
|
69
|
+
"lifecycle": "open",
|
|
70
|
+
"sessionId": "sid-preflight-fixture",
|
|
71
|
+
"clientOperationId": "op-preflight-fixture",
|
|
72
|
+
"companySlug": "acme",
|
|
73
|
+
"companyUid": "cmp_acme",
|
|
74
|
+
"projectId": "dispatch-proj",
|
|
75
|
+
"taskId": "US-9"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"contractVersion": 1,
|
|
79
|
+
"kind": "untracked",
|
|
80
|
+
"classification": "untracked",
|
|
81
|
+
"delivery": "clean",
|
|
82
|
+
"lifecycle": "open",
|
|
83
|
+
"sessionId": "sid-preflight-fixture",
|
|
84
|
+
"clientOperationId": "op-preflight-fixture"
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://hq.getindigo.ai/schemas/work-context/preflight/v1/schema.json",
|
|
4
|
+
"title": "Offline preflight ContextResult",
|
|
5
|
+
"description": "Shapes hq mesh context reconcile --offline emits. Hook consumers must accept every fixture and reject any classification outside this enum. Bump contractVersion together with hq-core core/hooks/SessionStart/preflight-fixtures.json.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"contractVersion",
|
|
10
|
+
"kind",
|
|
11
|
+
"classification",
|
|
12
|
+
"delivery",
|
|
13
|
+
"lifecycle",
|
|
14
|
+
"sessionId",
|
|
15
|
+
"clientOperationId"
|
|
16
|
+
],
|
|
17
|
+
"properties": {
|
|
18
|
+
"contractVersion": { "type": "integer", "const": 1 },
|
|
19
|
+
"kind": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"enum": [
|
|
22
|
+
"queued",
|
|
23
|
+
"needs_company",
|
|
24
|
+
"company_conflict",
|
|
25
|
+
"untracked",
|
|
26
|
+
"bound",
|
|
27
|
+
"needs_project",
|
|
28
|
+
"needs_task",
|
|
29
|
+
"error"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
"classification": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"enum": [
|
|
35
|
+
"unresolved",
|
|
36
|
+
"needs_company",
|
|
37
|
+
"company_conflict",
|
|
38
|
+
"needs_project",
|
|
39
|
+
"needs_task",
|
|
40
|
+
"bound",
|
|
41
|
+
"untracked"
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
"delivery": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"enum": ["clean", "queued", "acked", "quarantined"]
|
|
47
|
+
},
|
|
48
|
+
"lifecycle": { "type": "string", "enum": ["open", "terminal"] },
|
|
49
|
+
"sessionId": { "type": "string", "minLength": 1 },
|
|
50
|
+
"clientOperationId": { "type": "string", "minLength": 1 },
|
|
51
|
+
"companySlug": { "type": "string", "minLength": 1 },
|
|
52
|
+
"companyUid": { "type": "string", "minLength": 1 },
|
|
53
|
+
"projectId": { "type": "string", "minLength": 1 },
|
|
54
|
+
"taskId": { "type": "string", "minLength": 1 },
|
|
55
|
+
"bindingEpisodeId": { "type": "string", "minLength": 1 },
|
|
56
|
+
"errorCode": { "type": "string", "minLength": 1 }
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -1677,6 +1677,12 @@ export declare const COMMAND_CATALOG: readonly [{
|
|
|
1677
1677
|
}, {
|
|
1678
1678
|
readonly flags: "--no-open";
|
|
1679
1679
|
readonly description: "Print the share-session URL but do not launch the browser";
|
|
1680
|
+
}, {
|
|
1681
|
+
readonly flags: "--channel <name>";
|
|
1682
|
+
readonly description: "Post the share record to this named channel instead of a DM";
|
|
1683
|
+
}, {
|
|
1684
|
+
readonly flags: "--mention <person>";
|
|
1685
|
+
readonly description: "Mention a person on the channel share record (repeatable)";
|
|
1680
1686
|
}];
|
|
1681
1687
|
readonly subcommands: readonly [];
|
|
1682
1688
|
}, {
|
|
@@ -5984,6 +5990,27 @@ export declare const COMMAND_CATALOG: readonly [{
|
|
|
5984
5990
|
}];
|
|
5985
5991
|
readonly subcommands: readonly [];
|
|
5986
5992
|
}];
|
|
5993
|
+
}, {
|
|
5994
|
+
readonly name: "contract";
|
|
5995
|
+
readonly description: "Print versioned work-mesh contracts for other repositories";
|
|
5996
|
+
readonly aliases: readonly [];
|
|
5997
|
+
readonly hidden: false;
|
|
5998
|
+
readonly usage: "[options] [command]";
|
|
5999
|
+
readonly arguments: readonly [];
|
|
6000
|
+
readonly options: readonly [];
|
|
6001
|
+
readonly subcommands: readonly [{
|
|
6002
|
+
readonly name: "preflight";
|
|
6003
|
+
readonly description: "Offline preflight ContextResult contract (contracts/preflight/v1)";
|
|
6004
|
+
readonly aliases: readonly [];
|
|
6005
|
+
readonly hidden: false;
|
|
6006
|
+
readonly usage: "[options]";
|
|
6007
|
+
readonly arguments: readonly [];
|
|
6008
|
+
readonly options: readonly [{
|
|
6009
|
+
readonly flags: "--print-fixtures";
|
|
6010
|
+
readonly description: "Write the fixture file JSON to stdout";
|
|
6011
|
+
}];
|
|
6012
|
+
readonly subcommands: readonly [];
|
|
6013
|
+
}];
|
|
5987
6014
|
}, {
|
|
5988
6015
|
readonly name: "session";
|
|
5989
6016
|
readonly description: "Local session-event spool: enqueue (printf-compatible), flush, and live status";
|
|
@@ -6753,6 +6780,12 @@ export declare const COMMAND_CATALOG: readonly [{
|
|
|
6753
6780
|
}, {
|
|
6754
6781
|
readonly flags: "--story <id>";
|
|
6755
6782
|
readonly description: "Re-point story attribution from this message";
|
|
6783
|
+
}, {
|
|
6784
|
+
readonly flags: "--account <id>";
|
|
6785
|
+
readonly description: "Move the lane's session to this account of its provider before the message resumes it";
|
|
6786
|
+
}, {
|
|
6787
|
+
readonly flags: "--model <id>";
|
|
6788
|
+
readonly description: "Model for the moved lane (with --account only)";
|
|
6756
6789
|
}, {
|
|
6757
6790
|
readonly flags: "--no-compact";
|
|
6758
6791
|
readonly description: "Skip the resume-time compaction check for this message";
|
|
@@ -6781,6 +6814,12 @@ export declare const COMMAND_CATALOG: readonly [{
|
|
|
6781
6814
|
}, {
|
|
6782
6815
|
readonly flags: "--story <id>";
|
|
6783
6816
|
readonly description: "Re-point story attribution from this resume";
|
|
6817
|
+
}, {
|
|
6818
|
+
readonly flags: "--account <id>";
|
|
6819
|
+
readonly description: "Move the lane's session to this account of its provider before resuming";
|
|
6820
|
+
}, {
|
|
6821
|
+
readonly flags: "--model <id>";
|
|
6822
|
+
readonly description: "Model for the moved lane (with --account only)";
|
|
6784
6823
|
}, {
|
|
6785
6824
|
readonly flags: "--no-compact";
|
|
6786
6825
|
readonly description: "Skip the resume-time compaction check for this resume";
|
|
@@ -2138,6 +2138,14 @@ export const COMMAND_CATALOG = [
|
|
|
2138
2138
|
{
|
|
2139
2139
|
"flags": "--no-open",
|
|
2140
2140
|
"description": "Print the share-session URL but do not launch the browser"
|
|
2141
|
+
},
|
|
2142
|
+
{
|
|
2143
|
+
"flags": "--channel <name>",
|
|
2144
|
+
"description": "Post the share record to this named channel instead of a DM"
|
|
2145
|
+
},
|
|
2146
|
+
{
|
|
2147
|
+
"flags": "--mention <person>",
|
|
2148
|
+
"description": "Mention a person on the channel share record (repeatable)"
|
|
2141
2149
|
}
|
|
2142
2150
|
],
|
|
2143
2151
|
"subcommands": []
|
|
@@ -7725,6 +7733,32 @@ export const COMMAND_CATALOG = [
|
|
|
7725
7733
|
}
|
|
7726
7734
|
]
|
|
7727
7735
|
},
|
|
7736
|
+
{
|
|
7737
|
+
"name": "contract",
|
|
7738
|
+
"description": "Print versioned work-mesh contracts for other repositories",
|
|
7739
|
+
"aliases": [],
|
|
7740
|
+
"hidden": false,
|
|
7741
|
+
"usage": "[options] [command]",
|
|
7742
|
+
"arguments": [],
|
|
7743
|
+
"options": [],
|
|
7744
|
+
"subcommands": [
|
|
7745
|
+
{
|
|
7746
|
+
"name": "preflight",
|
|
7747
|
+
"description": "Offline preflight ContextResult contract (contracts/preflight/v1)",
|
|
7748
|
+
"aliases": [],
|
|
7749
|
+
"hidden": false,
|
|
7750
|
+
"usage": "[options]",
|
|
7751
|
+
"arguments": [],
|
|
7752
|
+
"options": [
|
|
7753
|
+
{
|
|
7754
|
+
"flags": "--print-fixtures",
|
|
7755
|
+
"description": "Write the fixture file JSON to stdout"
|
|
7756
|
+
}
|
|
7757
|
+
],
|
|
7758
|
+
"subcommands": []
|
|
7759
|
+
}
|
|
7760
|
+
]
|
|
7761
|
+
},
|
|
7728
7762
|
{
|
|
7729
7763
|
"name": "session",
|
|
7730
7764
|
"description": "Local session-event spool: enqueue (printf-compatible), flush, and live status",
|
|
@@ -8729,6 +8763,14 @@ export const COMMAND_CATALOG = [
|
|
|
8729
8763
|
"flags": "--story <id>",
|
|
8730
8764
|
"description": "Re-point story attribution from this message"
|
|
8731
8765
|
},
|
|
8766
|
+
{
|
|
8767
|
+
"flags": "--account <id>",
|
|
8768
|
+
"description": "Move the lane's session to this account of its provider before the message resumes it"
|
|
8769
|
+
},
|
|
8770
|
+
{
|
|
8771
|
+
"flags": "--model <id>",
|
|
8772
|
+
"description": "Model for the moved lane (with --account only)"
|
|
8773
|
+
},
|
|
8732
8774
|
{
|
|
8733
8775
|
"flags": "--no-compact",
|
|
8734
8776
|
"description": "Skip the resume-time compaction check for this message"
|
|
@@ -8766,6 +8808,14 @@ export const COMMAND_CATALOG = [
|
|
|
8766
8808
|
"flags": "--story <id>",
|
|
8767
8809
|
"description": "Re-point story attribution from this resume"
|
|
8768
8810
|
},
|
|
8811
|
+
{
|
|
8812
|
+
"flags": "--account <id>",
|
|
8813
|
+
"description": "Move the lane's session to this account of its provider before resuming"
|
|
8814
|
+
},
|
|
8815
|
+
{
|
|
8816
|
+
"flags": "--model <id>",
|
|
8817
|
+
"description": "Model for the moved lane (with --account only)"
|
|
8818
|
+
},
|
|
8769
8819
|
{
|
|
8770
8820
|
"flags": "--no-compact",
|
|
8771
8821
|
"description": "Skip the resume-time compaction check for this resume"
|
package/dist/commands/dm.d.ts
CHANGED
|
@@ -190,6 +190,8 @@ export declare function buildConnectionActionBody(identifier: string, matched: C
|
|
|
190
190
|
} | {
|
|
191
191
|
withEmail: string;
|
|
192
192
|
};
|
|
193
|
+
/** Fetch the caller's channels (GET /v1/notify/channels). */
|
|
194
|
+
export declare function fetchChannels(token: string): Promise<ChannelSummary[]>;
|
|
193
195
|
/** One incoming DM as returned by GET /v1/notify/inbox. */
|
|
194
196
|
export interface DmInboxEvent {
|
|
195
197
|
eventId: string;
|
package/dist/commands/dm.js
CHANGED
|
@@ -489,7 +489,7 @@ async function runGroupSend(recipients, message) {
|
|
|
489
489
|
}
|
|
490
490
|
}
|
|
491
491
|
/** Fetch the caller's channels (GET /v1/notify/channels). */
|
|
492
|
-
async function fetchChannels(token) {
|
|
492
|
+
export async function fetchChannels(token) {
|
|
493
493
|
const res = await vaultApiFetch({ token, path: "/v1/notify/channels" });
|
|
494
494
|
if (!res.ok) {
|
|
495
495
|
const err = (await res.json().catch(() => ({})));
|