@indigoai-us/hq-cli 5.268.0 → 5.270.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 +36 -0
- package/dist/command-catalog.generated.d.ts +77 -4
- package/dist/command-catalog.generated.js +98 -4
- package/dist/commands/files.js +6 -3
- package/dist/commands/lanes-hold.d.ts +2 -0
- package/dist/commands/lanes-hold.js +122 -310
- package/dist/commands/lanes-message.js +6 -4
- package/dist/commands/lanes-review.d.ts +10 -0
- package/dist/commands/lanes-review.js +56 -0
- package/dist/commands/lanes-shared.d.ts +1 -0
- package/dist/commands/lanes.d.ts +2 -0
- package/dist/commands/lanes.js +29 -4
- package/dist/lib/billing/plan-limit-upgrade-url.d.ts +1 -4
- package/dist/lib/billing/plan-limit-upgrade-url.js +7 -18
- package/dist/lib/doctor/checks/sync-runtime.d.ts +1 -1
- package/dist/lib/doctor/checks/sync-runtime.js +69 -19
- package/dist/lib/lanes/blocker-freshness.js +2 -1
- package/dist/lib/lanes/keep-alive.js +49 -20
- package/dist/lib/lanes/kr-freshness.js +3 -2
- package/dist/lib/lanes/lane-company.d.ts +3 -2
- package/dist/lib/lanes/lane-company.js +21 -4
- package/dist/lib/lanes/manager-status-gate.js +5 -3
- package/dist/lib/lanes/merge-command.d.ts +14 -0
- package/dist/lib/lanes/merge-command.js +363 -0
- package/dist/lib/lanes/reviews.d.ts +38 -0
- package/dist/lib/lanes/reviews.js +395 -0
- package/dist/lib/lanes/watcher.js +4 -2
- package/dist/lib/plan-limit-nag.js +2 -4
- package/dist/utils/feedback-logs.d.ts +14 -9
- package/dist/utils/feedback-logs.js +43 -14
- package/dist/utils/local-files-overview.d.ts +4 -2
- package/dist/utils/local-files-overview.js +47 -6
- package/dist/utils/sync-log-sources.d.ts +15 -0
- package/dist/utils/sync-log-sources.js +36 -0
- package/dist/utils/version-gate.d.ts +1 -0
- package/dist/utils/version-gate.js +6 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,38 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [5.270.0] — 2026-09-28
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Company billing links in CLI plan-limit notices no longer depend on the
|
|
10
|
+
rollout flag.
|
|
11
|
+
|
|
12
|
+
### Removed
|
|
13
|
+
|
|
14
|
+
- Removed stale gate language from hire-grant command help. Enforcement remains
|
|
15
|
+
unconditional; backfill remains dry-run only.
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- `hq files unshare --with` now accepts the same person UID principals as direct grants.
|
|
20
|
+
- The update gate no longer retries failed Windows installs through `sudo -n`.
|
|
21
|
+
|
|
22
|
+
## [5.269.0] — 2026-09-28
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
|
|
26
|
+
- Keep-alive no longer treats cancelled, killed, or failed project workers as
|
|
27
|
+
replacement leads, and recognizes descendants whose session senior belongs
|
|
28
|
+
to the lead.
|
|
29
|
+
- Company-scoped lane flags resolve ownership from a complete lane company,
|
|
30
|
+
then a complete mesh company, then the lane's unique project company.
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
|
|
34
|
+
- Add `hq lanes review` records and optional reviewed-head checks to
|
|
35
|
+
`hq lanes hold check` for senior lanes.
|
|
36
|
+
|
|
5
37
|
## [5.268.0] — 2026-09-28
|
|
6
38
|
|
|
7
39
|
### Fixed
|
|
@@ -319,6 +351,10 @@
|
|
|
319
351
|
- Removed the unused `cli.network.force-ipv4` hq-flags lookup and forced IPv4
|
|
320
352
|
startup path. The existing Node family-attempt timeout remains unchanged.
|
|
321
353
|
- `hq auth login` continues when it cannot read or save the remembered provider. It prints a dim warning with the state path and error code; a save failure does not turn a successful sign-in into a login failure.
|
|
354
|
+
- `hq doctor`, client health metadata, and feedback attachments now use the
|
|
355
|
+
newest sync-log source from the desktop app or configured daemon directory.
|
|
356
|
+
Daemon `HQ_DAEMON_DIR` overrides and log rotations are supported, and
|
|
357
|
+
numeric runner error levels count in health metadata.
|
|
322
358
|
|
|
323
359
|
## [5.242.0] — 2026-09-27
|
|
324
360
|
|
|
@@ -1701,7 +1701,7 @@ export declare const COMMAND_CATALOG: readonly [{
|
|
|
1701
1701
|
}];
|
|
1702
1702
|
readonly options: readonly [{
|
|
1703
1703
|
readonly flags: "--with <principal>";
|
|
1704
|
-
readonly description: "
|
|
1704
|
+
readonly description: "Person uid, email address, group id, or '@all' to remove the grant";
|
|
1705
1705
|
}];
|
|
1706
1706
|
readonly subcommands: readonly [];
|
|
1707
1707
|
}, {
|
|
@@ -7471,6 +7471,79 @@ export declare const COMMAND_CATALOG: readonly [{
|
|
|
7471
7471
|
}];
|
|
7472
7472
|
readonly subcommands: readonly [];
|
|
7473
7473
|
}];
|
|
7474
|
+
}, {
|
|
7475
|
+
readonly name: "review";
|
|
7476
|
+
readonly description: "Record manager review of pull-request heads";
|
|
7477
|
+
readonly aliases: readonly [];
|
|
7478
|
+
readonly hidden: false;
|
|
7479
|
+
readonly usage: "[options] [command]";
|
|
7480
|
+
readonly arguments: readonly [];
|
|
7481
|
+
readonly options: readonly [];
|
|
7482
|
+
readonly subcommands: readonly [{
|
|
7483
|
+
readonly name: "record";
|
|
7484
|
+
readonly description: "Record a review against an exact pull-request head";
|
|
7485
|
+
readonly aliases: readonly [];
|
|
7486
|
+
readonly hidden: false;
|
|
7487
|
+
readonly usage: "[options] <repo> <pr-number>";
|
|
7488
|
+
readonly arguments: readonly [{
|
|
7489
|
+
readonly name: "repo";
|
|
7490
|
+
readonly required: true;
|
|
7491
|
+
readonly variadic: false;
|
|
7492
|
+
}, {
|
|
7493
|
+
readonly name: "pr-number";
|
|
7494
|
+
readonly required: true;
|
|
7495
|
+
readonly variadic: false;
|
|
7496
|
+
}];
|
|
7497
|
+
readonly options: readonly [{
|
|
7498
|
+
readonly flags: "--head <sha>";
|
|
7499
|
+
readonly description: "40-character commit SHA that was reviewed";
|
|
7500
|
+
}, {
|
|
7501
|
+
readonly flags: "--worker <lane-id>";
|
|
7502
|
+
readonly description: "Worker lane whose output was reviewed";
|
|
7503
|
+
}, {
|
|
7504
|
+
readonly flags: "--note <text>";
|
|
7505
|
+
readonly description: "Short note about the review";
|
|
7506
|
+
}, {
|
|
7507
|
+
readonly flags: "--json";
|
|
7508
|
+
readonly description: "Print JSON";
|
|
7509
|
+
}];
|
|
7510
|
+
readonly subcommands: readonly [];
|
|
7511
|
+
}, {
|
|
7512
|
+
readonly name: "show";
|
|
7513
|
+
readonly description: "Show the review record for one pull request";
|
|
7514
|
+
readonly aliases: readonly [];
|
|
7515
|
+
readonly hidden: false;
|
|
7516
|
+
readonly usage: "[options] <repo> <pr-number>";
|
|
7517
|
+
readonly arguments: readonly [{
|
|
7518
|
+
readonly name: "repo";
|
|
7519
|
+
readonly required: true;
|
|
7520
|
+
readonly variadic: false;
|
|
7521
|
+
}, {
|
|
7522
|
+
readonly name: "pr-number";
|
|
7523
|
+
readonly required: true;
|
|
7524
|
+
readonly variadic: false;
|
|
7525
|
+
}];
|
|
7526
|
+
readonly options: readonly [{
|
|
7527
|
+
readonly flags: "--json";
|
|
7528
|
+
readonly description: "Print JSON";
|
|
7529
|
+
}];
|
|
7530
|
+
readonly subcommands: readonly [];
|
|
7531
|
+
}, {
|
|
7532
|
+
readonly name: "list";
|
|
7533
|
+
readonly description: "List recorded pull-request reviews";
|
|
7534
|
+
readonly aliases: readonly [];
|
|
7535
|
+
readonly hidden: false;
|
|
7536
|
+
readonly usage: "[options]";
|
|
7537
|
+
readonly arguments: readonly [];
|
|
7538
|
+
readonly options: readonly [{
|
|
7539
|
+
readonly flags: "--repo <owner/repo>";
|
|
7540
|
+
readonly description: "Limit results to one repository";
|
|
7541
|
+
}, {
|
|
7542
|
+
readonly flags: "--json";
|
|
7543
|
+
readonly description: "Print JSON";
|
|
7544
|
+
}];
|
|
7545
|
+
readonly subcommands: readonly [];
|
|
7546
|
+
}];
|
|
7474
7547
|
}, {
|
|
7475
7548
|
readonly name: "outpost-pruner";
|
|
7476
7549
|
readonly description: "Inspect, install, and run safe outpost worktree pruning";
|
|
@@ -7682,7 +7755,7 @@ export declare const COMMAND_CATALOG: readonly [{
|
|
|
7682
7755
|
readonly description: "Non-negative safe integer hire grant";
|
|
7683
7756
|
}, {
|
|
7684
7757
|
readonly flags: "--grant-context <base64url>";
|
|
7685
|
-
readonly description: "Primary-authorized hire hierarchy
|
|
7758
|
+
readonly description: "Primary-authorized hire hierarchy context";
|
|
7686
7759
|
}, {
|
|
7687
7760
|
readonly flags: "--json";
|
|
7688
7761
|
readonly description: "JSON on stdout (always)";
|
|
@@ -7734,7 +7807,7 @@ export declare const COMMAND_CATALOG: readonly [{
|
|
|
7734
7807
|
readonly subcommands: readonly [];
|
|
7735
7808
|
}, {
|
|
7736
7809
|
readonly name: "backfill-grants";
|
|
7737
|
-
readonly description: "Preview
|
|
7810
|
+
readonly description: "Preview missing hire grants for alive manager lanes; writes are disabled";
|
|
7738
7811
|
readonly aliases: readonly [];
|
|
7739
7812
|
readonly hidden: false;
|
|
7740
7813
|
readonly usage: "[options]";
|
|
@@ -7744,7 +7817,7 @@ export declare const COMMAND_CATALOG: readonly [{
|
|
|
7744
7817
|
readonly description: "Print proposed values without writing (default)";
|
|
7745
7818
|
}, {
|
|
7746
7819
|
readonly flags: "--apply";
|
|
7747
|
-
readonly description: "
|
|
7820
|
+
readonly description: "Retained for compatibility; writes are disabled";
|
|
7748
7821
|
}, {
|
|
7749
7822
|
readonly flags: "--json";
|
|
7750
7823
|
readonly description: "JSON on stdout (always)";
|
|
@@ -2170,7 +2170,7 @@ export const COMMAND_CATALOG = [
|
|
|
2170
2170
|
"options": [
|
|
2171
2171
|
{
|
|
2172
2172
|
"flags": "--with <principal>",
|
|
2173
|
-
"description": "
|
|
2173
|
+
"description": "Person uid, email address, group id, or '@all' to remove the grant"
|
|
2174
2174
|
}
|
|
2175
2175
|
],
|
|
2176
2176
|
"subcommands": []
|
|
@@ -9658,6 +9658,100 @@ export const COMMAND_CATALOG = [
|
|
|
9658
9658
|
}
|
|
9659
9659
|
]
|
|
9660
9660
|
},
|
|
9661
|
+
{
|
|
9662
|
+
"name": "review",
|
|
9663
|
+
"description": "Record manager review of pull-request heads",
|
|
9664
|
+
"aliases": [],
|
|
9665
|
+
"hidden": false,
|
|
9666
|
+
"usage": "[options] [command]",
|
|
9667
|
+
"arguments": [],
|
|
9668
|
+
"options": [],
|
|
9669
|
+
"subcommands": [
|
|
9670
|
+
{
|
|
9671
|
+
"name": "record",
|
|
9672
|
+
"description": "Record a review against an exact pull-request head",
|
|
9673
|
+
"aliases": [],
|
|
9674
|
+
"hidden": false,
|
|
9675
|
+
"usage": "[options] <repo> <pr-number>",
|
|
9676
|
+
"arguments": [
|
|
9677
|
+
{
|
|
9678
|
+
"name": "repo",
|
|
9679
|
+
"required": true,
|
|
9680
|
+
"variadic": false
|
|
9681
|
+
},
|
|
9682
|
+
{
|
|
9683
|
+
"name": "pr-number",
|
|
9684
|
+
"required": true,
|
|
9685
|
+
"variadic": false
|
|
9686
|
+
}
|
|
9687
|
+
],
|
|
9688
|
+
"options": [
|
|
9689
|
+
{
|
|
9690
|
+
"flags": "--head <sha>",
|
|
9691
|
+
"description": "40-character commit SHA that was reviewed"
|
|
9692
|
+
},
|
|
9693
|
+
{
|
|
9694
|
+
"flags": "--worker <lane-id>",
|
|
9695
|
+
"description": "Worker lane whose output was reviewed"
|
|
9696
|
+
},
|
|
9697
|
+
{
|
|
9698
|
+
"flags": "--note <text>",
|
|
9699
|
+
"description": "Short note about the review"
|
|
9700
|
+
},
|
|
9701
|
+
{
|
|
9702
|
+
"flags": "--json",
|
|
9703
|
+
"description": "Print JSON"
|
|
9704
|
+
}
|
|
9705
|
+
],
|
|
9706
|
+
"subcommands": []
|
|
9707
|
+
},
|
|
9708
|
+
{
|
|
9709
|
+
"name": "show",
|
|
9710
|
+
"description": "Show the review record for one pull request",
|
|
9711
|
+
"aliases": [],
|
|
9712
|
+
"hidden": false,
|
|
9713
|
+
"usage": "[options] <repo> <pr-number>",
|
|
9714
|
+
"arguments": [
|
|
9715
|
+
{
|
|
9716
|
+
"name": "repo",
|
|
9717
|
+
"required": true,
|
|
9718
|
+
"variadic": false
|
|
9719
|
+
},
|
|
9720
|
+
{
|
|
9721
|
+
"name": "pr-number",
|
|
9722
|
+
"required": true,
|
|
9723
|
+
"variadic": false
|
|
9724
|
+
}
|
|
9725
|
+
],
|
|
9726
|
+
"options": [
|
|
9727
|
+
{
|
|
9728
|
+
"flags": "--json",
|
|
9729
|
+
"description": "Print JSON"
|
|
9730
|
+
}
|
|
9731
|
+
],
|
|
9732
|
+
"subcommands": []
|
|
9733
|
+
},
|
|
9734
|
+
{
|
|
9735
|
+
"name": "list",
|
|
9736
|
+
"description": "List recorded pull-request reviews",
|
|
9737
|
+
"aliases": [],
|
|
9738
|
+
"hidden": false,
|
|
9739
|
+
"usage": "[options]",
|
|
9740
|
+
"arguments": [],
|
|
9741
|
+
"options": [
|
|
9742
|
+
{
|
|
9743
|
+
"flags": "--repo <owner/repo>",
|
|
9744
|
+
"description": "Limit results to one repository"
|
|
9745
|
+
},
|
|
9746
|
+
{
|
|
9747
|
+
"flags": "--json",
|
|
9748
|
+
"description": "Print JSON"
|
|
9749
|
+
}
|
|
9750
|
+
],
|
|
9751
|
+
"subcommands": []
|
|
9752
|
+
}
|
|
9753
|
+
]
|
|
9754
|
+
},
|
|
9661
9755
|
{
|
|
9662
9756
|
"name": "outpost-pruner",
|
|
9663
9757
|
"description": "Inspect, install, and run safe outpost worktree pruning",
|
|
@@ -9932,7 +10026,7 @@ export const COMMAND_CATALOG = [
|
|
|
9932
10026
|
},
|
|
9933
10027
|
{
|
|
9934
10028
|
"flags": "--grant-context <base64url>",
|
|
9935
|
-
"description": "Primary-authorized hire hierarchy
|
|
10029
|
+
"description": "Primary-authorized hire hierarchy context"
|
|
9936
10030
|
},
|
|
9937
10031
|
{
|
|
9938
10032
|
"flags": "--json",
|
|
@@ -10001,7 +10095,7 @@ export const COMMAND_CATALOG = [
|
|
|
10001
10095
|
},
|
|
10002
10096
|
{
|
|
10003
10097
|
"name": "backfill-grants",
|
|
10004
|
-
"description": "Preview
|
|
10098
|
+
"description": "Preview missing hire grants for alive manager lanes; writes are disabled",
|
|
10005
10099
|
"aliases": [],
|
|
10006
10100
|
"hidden": false,
|
|
10007
10101
|
"usage": "[options]",
|
|
@@ -10013,7 +10107,7 @@ export const COMMAND_CATALOG = [
|
|
|
10013
10107
|
},
|
|
10014
10108
|
{
|
|
10015
10109
|
"flags": "--apply",
|
|
10016
|
-
"description": "
|
|
10110
|
+
"description": "Retained for compatibility; writes are disabled"
|
|
10017
10111
|
},
|
|
10018
10112
|
{
|
|
10019
10113
|
"flags": "--json",
|
package/dist/commands/files.js
CHANGED
|
@@ -262,7 +262,7 @@ export function registerFilesCommand(program) {
|
|
|
262
262
|
files
|
|
263
263
|
.command("unshare <prefix>")
|
|
264
264
|
.description("Remove a file access grant. A trailing slash targets the private-folder row exactly.")
|
|
265
|
-
.requiredOption("--with <principal>", "
|
|
265
|
+
.requiredOption("--with <principal>", "Person uid, email address, group id, or '@all' to remove the grant")
|
|
266
266
|
.action(async (prefix, opts) => {
|
|
267
267
|
try {
|
|
268
268
|
// Unshare MUTATES access with no preview, and it resolves the target
|
|
@@ -278,7 +278,8 @@ export function registerFilesCommand(program) {
|
|
|
278
278
|
const isAll = principal === "@all";
|
|
279
279
|
const isEmail = !isAll && EMAIL_PATTERN.test(principal);
|
|
280
280
|
const isGroup = !isAll && GROUP_ID_PATTERN.test(principal);
|
|
281
|
-
|
|
281
|
+
const isPerson = !isAll && !isEmail && !isGroup && PERSON_UID_PATTERN.test(principal);
|
|
282
|
+
if (!isAll && !isEmail && !isGroup && !isPerson) {
|
|
282
283
|
console.error(chalk.red(`Invalid principal '${principal}': must be '@all', an email address, or a group id matching grp_<alphanumeric>`));
|
|
283
284
|
process.exit(1);
|
|
284
285
|
}
|
|
@@ -286,7 +287,9 @@ export function registerFilesCommand(program) {
|
|
|
286
287
|
? "company-wide"
|
|
287
288
|
: isEmail
|
|
288
289
|
? "email"
|
|
289
|
-
:
|
|
290
|
+
: isGroup
|
|
291
|
+
? "group"
|
|
292
|
+
: "person";
|
|
290
293
|
const granteeId = isAll
|
|
291
294
|
? ""
|
|
292
295
|
: isEmail
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
2
|
import type { LaneCompanyRef } from "../lib/lanes/types.js";
|
|
3
3
|
export declare const LANES_REPO_MERGE_HOLD_FLAG = "lanes.repo-merge-hold";
|
|
4
|
+
export declare const LANES_REVIEW_BEFORE_MERGE_FLAG = "lanes.review-before-merge";
|
|
4
5
|
export declare const REPO_MERGE_HOLDS_REL: string;
|
|
5
6
|
declare const HOLD_SCHEMA_VERSION = "hq-lanes-repo-merge-hold.v1";
|
|
6
7
|
interface HoldHistoryEntry {
|
|
@@ -31,6 +32,7 @@ export interface LaneRepoMergeHoldDeps {
|
|
|
31
32
|
now: () => Date;
|
|
32
33
|
env: NodeJS.ProcessEnv;
|
|
33
34
|
mergeHoldEnabled?: (company: LaneCompanyRef) => boolean | Promise<boolean>;
|
|
35
|
+
mergeReviewEnabled?: (company: LaneCompanyRef) => boolean | Promise<boolean>;
|
|
34
36
|
}
|
|
35
37
|
type WrapHandler = <Args extends unknown[]>(action: (...args: Args) => Promise<void>) => (...args: Args) => Promise<void>;
|
|
36
38
|
export declare function repoMergeHoldPath(hqRoot: string, repo: string): string;
|