@indigoai-us/hq-cli 5.345.197 → 5.345.198

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 CHANGED
@@ -2,6 +2,72 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [5.345.198] — 2026-11-04
6
+ - A personal bot that locked itself to its HQ's only company no longer resumes old conversations under that lock after the HQ gains a second company, loses its only company, or switches to a different one. On restart it archives those conversations and starts fresh, as it already did when a bot's company settings changed. A company bot whose bot.json lists "personal" as well as its company now starts normally after this upgrade, including with unfinished work, instead of stopping with "could not isolate previous company conversations". A personal bot no longer treats an extra top-level manifest key such as `version:` or `deployments:` as a company, and it reads a manifest saved with a UTF-8 byte order mark.
7
+ - A local bot no longer asks "Which company is this for?" in every channel when its HQ has only one company. A personal bot (including one created before bot kinds existed) with no company in bot.json now locks its sessions to the HQ's only company, scheduled jobs included. A bot with two or more real companies stays unbound and does not guess. A "personal" entry in a company bot's membership list no longer counts as a second company.
8
+ - `hq deploy domains search` prints whether each name is available, taken, not available because it is already delegated, premium, or unsupported, plus the registrar first-year and renewal prices. When the server is in test mode it prints "Test mode: sandbox prices. Nothing real is registered or charged." Taken and delegated names are not offered for purchase.
9
+ - `hq deploy domains buy` takes `--use app:<app id>`, `base`, or `hold`. The confirmation shows the registrar first-year price, the renewal, the hosting tier, the 60-day transfer lock, and that purchases are final. It sends that use and the consent record. It buys only when the quote has a US dollar first-year price that matches `--price`. A retry with `--idempotency-key` still sends that order when search says the name is missing or taken.
10
+ - `hq deploy domains owned` lists purchased domains. `show` prints one domain with its nameservers, whether the registrar nameservers are set, what it is attached to, and its events. `renew cancel` and `renew resume` turn automatic renewal off and back on.
11
+ - `hq deploy domains records list` prints each record id. `add`, `set`, and `delete` manage DNS records on a purchased domain and mark the records HQ has locked.
12
+ - Require explicit confirmation before changing domain auto-renewal, disclose renewal markup, and show purchase notices before --yes submissions.
13
+ - `hq secrets exec`, `hq secrets env` and `hq secrets get --reveal` work inside
14
+ a company Outpost job (a delegated `HQ_MACHINE_SESSION_FILE` session). They
15
+ used to fail with "Company workload principal is unsupported on this route"
16
+ because they read through the batch route, which hq-pro refuses to a company
17
+ Outpost. Under such a session each requested secret is now read with
18
+ `GET /secrets/{companyUid}/name/{name}`, the company comes from the session
19
+ (no `--company` needed; a different company is refused), no telemetry event
20
+ is sent, and nothing is cached. The Outpost still reads only secrets shared
21
+ with its `out_…` principal (`hq secrets --company <co> share NAME --with
22
+ out_…`). People, API keys and agents keep the batch route.
23
+ - Company Outpost jobs cannot read script-locked secrets. Under an Outpost
24
+ session the secrets commands now say so instead of "Reveal is disabled".
25
+ - Refuse CLI release tags without a fresh, commit-bound local check that all four pinned HQ Fleet Local files are published. `pnpm release:tag` runs the authenticated preflight before pushing a tag; CI needs no new credential.
26
+ - `hq bot restart`, `hq bot restore` and `hq bot create` now say why the HQ Fleet
27
+ Runtime download is unavailable when a machine has no GitHub token: HQ has not
28
+ published that runtime release yet, or the HQ sign-in on the machine could not
29
+ be used. Before, both cases showed the same "Sign in with `hq login`" error
30
+ even for a signed-in customer.
31
+ - `hq-hook`: each `~/.hq/logs/hook-engine.jsonl` line is now written to the file in one piece. Hooks that ran at the same time could mix their lines together, because a line went to the file one JSON token at a time. A test runs eight writers at once and checks every line reads back as whole JSON.
32
+ - macOS hook package notarization now authenticates with an App Store Connect
33
+ API key (`notarytool --key/--key-id/--issuer`), as the desktop app release
34
+ does, instead of an Apple ID and app-specific password. The signing script
35
+ writes the `.p8` key to an owner-only file in the runner temp directory and
36
+ removes it on exit, and it fails before signing with an error naming
37
+ `APPLE_API_KEY_ID`, `APPLE_API_ISSUER_ID` and `APPLE_API_PRIVATE_KEY` when any
38
+ of them is empty. A rejected submission now prints the notary log. The release
39
+ workflow passes the three API key secrets and no longer passes `APPLE_ID` or
40
+ `APPLE_PASSWORD`.
41
+ - macOS hook package signing now adds its temporary keychain to the user
42
+ keychain search list before `codesign`, as the desktop app release does, and
43
+ restores the saved list on exit. Without it `codesign` reported "no identity
44
+ found" even with a valid identity in the keychain. The script also checks the
45
+ keychain before signing and fails with a clear error naming
46
+ `APPLE_SIGNING_IDENTITY` when no valid identity matches it, printing only the
47
+ identity count. Darwin packages still need the `APPLE_CERTIFICATE` secret re-set
48
+ to the current Developer ID Application certificate before they can sign.
49
+ - `hq-hook`: the Linux package check no longer fails a good binary when the
50
+ docker client writes a notice to stderr; only hq-hook's own stderr inside
51
+ the Amazon Linux 2023 container counts. The image is pinned by digest and
52
+ its pull is retried up to three times with backoff.
53
+ - `hq-hook`: the Linux x64 and arm64 hook packages now link against glibc
54
+ 2.28 instead of the build runner's 2.39, so they run on Amazon Linux 2023,
55
+ Debian 11 and Ubuntu 20.04 without the loader writing "weak version
56
+ 'GLIBC_2.39' not found" to stderr on every call. The package build now
57
+ fails if a Linux binary references a newer glibc version or writes to
58
+ stderr on Amazon Linux 2023.
59
+ - `hq integrations connect google` and `hq integrations reconnect google --connect`
60
+ now send you to the HQ console Integrations page, where Google Workspace signs
61
+ in. Before, they posted a name no catalog entry matched and ended with
62
+ "mcpUrl is required" and no link. Connecting any other name the catalog cannot
63
+ resolve now says so and points at `hq integrations catalog` and `--mcp-url`.
64
+ - `hq signals run` no longer fails the extract step with `worklist failed:
65
+ spawnSync bash ETIMEDOUT` on a company with a large meetings backlog. The
66
+ listing call's budget now grows with the item cap (60 seconds plus 10 seconds
67
+ per item, 260 seconds at the default cap of 20) instead of a flat 60 seconds,
68
+ because every item without an audience in its frontmatter costs one `hq files
69
+ acl` lookup over the network.
70
+
5
71
  ## [5.345.197] — 2026-11-03
6
72
  - `hq-hook`: the `block-credential-file-read` port follows the round-7 bash
7
73
  guard (hq-core-staging #1770) and its pin moves to it. A git or npm `://`
@@ -20189,7 +20189,7 @@ export declare const COMMAND_CATALOG: readonly [{
20189
20189
  }];
20190
20190
  }, {
20191
20191
  readonly name: "domains";
20192
- readonly description: "Manage custom domains on your deployed apps, and buy domains";
20192
+ readonly description: "Manage custom domains on your deployed apps, buy domains, and edit their DNS";
20193
20193
  readonly aliases: readonly [];
20194
20194
  readonly hidden: false;
20195
20195
  readonly helpOption: true;
@@ -20197,7 +20197,7 @@ export declare const COMMAND_CATALOG: readonly [{
20197
20197
  readonly usage: "[options] [command]";
20198
20198
  readonly helpText: readonly [{
20199
20199
  readonly position: "after";
20200
- readonly text: "\nadd, remove and buy ask for approval in an interactive terminal. Without one (a script, CI, or a Windows shell that does not report a terminal, such as Git Bash under mintty), pass --yes.";
20200
+ readonly text: "\nadd, remove and buy ask for approval in an interactive terminal. buy accepts y or --yes. Without a terminal (a script, CI, or a Windows shell that does not report a terminal, such as Git Bash under mintty), pass --yes.";
20201
20201
  }];
20202
20202
  readonly arguments: readonly [];
20203
20203
  readonly options: readonly [];
@@ -20452,7 +20452,7 @@ export declare const COMMAND_CATALOG: readonly [{
20452
20452
  }];
20453
20453
  }, {
20454
20454
  readonly name: "search";
20455
- readonly description: "Check whether a domain can be bought, and its price";
20455
+ readonly description: "Check whether a domain can be bought, with availability and registrar prices";
20456
20456
  readonly aliases: readonly [];
20457
20457
  readonly hidden: false;
20458
20458
  readonly helpOption: true;
@@ -20477,7 +20477,7 @@ export declare const COMMAND_CATALOG: readonly [{
20477
20477
  readonly subcommands: readonly [];
20478
20478
  }, {
20479
20479
  readonly name: "buy";
20480
- readonly description: "Buy a domain for the company (owner or admin)";
20480
+ readonly description: "Buy a domain for the company and say what it is for (owner or admin)";
20481
20481
  readonly aliases: readonly [];
20482
20482
  readonly hidden: false;
20483
20483
  readonly helpOption: true;
@@ -20491,8 +20491,12 @@ export declare const COMMAND_CATALOG: readonly [{
20491
20491
  readonly description: "";
20492
20492
  }];
20493
20493
  readonly options: readonly [{
20494
+ readonly flags: "--use <use>";
20495
+ readonly description: "what the domain is for: app:<app id>, base, or hold";
20496
+ readonly hidden: false;
20497
+ }, {
20494
20498
  readonly flags: "--price <usd>";
20495
- readonly description: "first-year price shown by 'hq deploy domains search'";
20499
+ readonly description: "first-year registrar price shown by 'hq deploy domains search'";
20496
20500
  readonly hidden: false;
20497
20501
  }, {
20498
20502
  readonly flags: "--registrant-file <path>";
@@ -20508,7 +20512,52 @@ export declare const COMMAND_CATALOG: readonly [{
20508
20512
  readonly hidden: false;
20509
20513
  }, {
20510
20514
  readonly flags: "--yes";
20511
- readonly description: "buy without a prompt";
20515
+ readonly description: "buy without a prompt, after you have read the transfer lock and final-purchase notice";
20516
+ readonly hidden: false;
20517
+ }, {
20518
+ readonly flags: "--json";
20519
+ readonly description: "print machine-readable JSON";
20520
+ readonly hidden: false;
20521
+ }];
20522
+ readonly subcommands: readonly [];
20523
+ }, {
20524
+ readonly name: "owned";
20525
+ readonly description: "List domains this company bought";
20526
+ readonly aliases: readonly [];
20527
+ readonly hidden: false;
20528
+ readonly helpOption: true;
20529
+ readonly helpCommand: false;
20530
+ readonly usage: "[options]";
20531
+ readonly helpText: readonly [];
20532
+ readonly arguments: readonly [];
20533
+ readonly options: readonly [{
20534
+ readonly flags: "--company <slug>";
20535
+ readonly description: "use this company instead of the active company";
20536
+ readonly hidden: false;
20537
+ }, {
20538
+ readonly flags: "--json";
20539
+ readonly description: "print machine-readable JSON";
20540
+ readonly hidden: false;
20541
+ }];
20542
+ readonly subcommands: readonly [];
20543
+ }, {
20544
+ readonly name: "show";
20545
+ readonly description: "Show one purchased domain, including nameservers and events";
20546
+ readonly aliases: readonly [];
20547
+ readonly hidden: false;
20548
+ readonly helpOption: true;
20549
+ readonly helpCommand: false;
20550
+ readonly usage: "[options] <domain>";
20551
+ readonly helpText: readonly [];
20552
+ readonly arguments: readonly [{
20553
+ readonly name: "domain";
20554
+ readonly required: true;
20555
+ readonly variadic: false;
20556
+ readonly description: "";
20557
+ }];
20558
+ readonly options: readonly [{
20559
+ readonly flags: "--company <slug>";
20560
+ readonly description: "use this company instead of the active company";
20512
20561
  readonly hidden: false;
20513
20562
  }, {
20514
20563
  readonly flags: "--json";
@@ -20516,6 +20565,238 @@ export declare const COMMAND_CATALOG: readonly [{
20516
20565
  readonly hidden: false;
20517
20566
  }];
20518
20567
  readonly subcommands: readonly [];
20568
+ }, {
20569
+ readonly name: "renew";
20570
+ readonly description: "Turn automatic renewal off or back on for a purchased domain";
20571
+ readonly aliases: readonly [];
20572
+ readonly hidden: false;
20573
+ readonly helpOption: true;
20574
+ readonly helpCommand: true;
20575
+ readonly usage: "[options] [command]";
20576
+ readonly helpText: readonly [];
20577
+ readonly arguments: readonly [];
20578
+ readonly options: readonly [];
20579
+ readonly subcommands: readonly [{
20580
+ readonly name: "cancel";
20581
+ readonly description: "Stop automatic renewal for a purchased domain";
20582
+ readonly aliases: readonly [];
20583
+ readonly hidden: false;
20584
+ readonly helpOption: true;
20585
+ readonly helpCommand: false;
20586
+ readonly usage: "[options] <domain>";
20587
+ readonly helpText: readonly [];
20588
+ readonly arguments: readonly [{
20589
+ readonly name: "domain";
20590
+ readonly required: true;
20591
+ readonly variadic: false;
20592
+ readonly description: "";
20593
+ }];
20594
+ readonly options: readonly [{
20595
+ readonly flags: "--yes";
20596
+ readonly description: "Confirm the billing setting change";
20597
+ readonly hidden: false;
20598
+ }, {
20599
+ readonly flags: "--company <slug>";
20600
+ readonly description: "use this company instead of the active company";
20601
+ readonly hidden: false;
20602
+ }, {
20603
+ readonly flags: "--json";
20604
+ readonly description: "print machine-readable JSON";
20605
+ readonly hidden: false;
20606
+ }];
20607
+ readonly subcommands: readonly [];
20608
+ }, {
20609
+ readonly name: "resume";
20610
+ readonly description: "Turn automatic renewal back on for a purchased domain";
20611
+ readonly aliases: readonly [];
20612
+ readonly hidden: false;
20613
+ readonly helpOption: true;
20614
+ readonly helpCommand: false;
20615
+ readonly usage: "[options] <domain>";
20616
+ readonly helpText: readonly [];
20617
+ readonly arguments: readonly [{
20618
+ readonly name: "domain";
20619
+ readonly required: true;
20620
+ readonly variadic: false;
20621
+ readonly description: "";
20622
+ }];
20623
+ readonly options: readonly [{
20624
+ readonly flags: "--yes";
20625
+ readonly description: "Confirm the billing setting change";
20626
+ readonly hidden: false;
20627
+ }, {
20628
+ readonly flags: "--company <slug>";
20629
+ readonly description: "use this company instead of the active company";
20630
+ readonly hidden: false;
20631
+ }, {
20632
+ readonly flags: "--json";
20633
+ readonly description: "print machine-readable JSON";
20634
+ readonly hidden: false;
20635
+ }];
20636
+ readonly subcommands: readonly [];
20637
+ }];
20638
+ }, {
20639
+ readonly name: "records";
20640
+ readonly description: "Manage DNS records on a domain this company bought";
20641
+ readonly aliases: readonly [];
20642
+ readonly hidden: false;
20643
+ readonly helpOption: true;
20644
+ readonly helpCommand: true;
20645
+ readonly usage: "[options] [command]";
20646
+ readonly helpText: readonly [];
20647
+ readonly arguments: readonly [];
20648
+ readonly options: readonly [];
20649
+ readonly subcommands: readonly [{
20650
+ readonly name: "list";
20651
+ readonly description: "List DNS records, marking the ones HQ has locked";
20652
+ readonly aliases: readonly [];
20653
+ readonly hidden: false;
20654
+ readonly helpOption: true;
20655
+ readonly helpCommand: false;
20656
+ readonly usage: "[options] <domain>";
20657
+ readonly helpText: readonly [];
20658
+ readonly arguments: readonly [{
20659
+ readonly name: "domain";
20660
+ readonly required: true;
20661
+ readonly variadic: false;
20662
+ readonly description: "";
20663
+ }];
20664
+ readonly options: readonly [{
20665
+ readonly flags: "--company <slug>";
20666
+ readonly description: "use this company instead of the active company";
20667
+ readonly hidden: false;
20668
+ }, {
20669
+ readonly flags: "--json";
20670
+ readonly description: "print machine-readable JSON";
20671
+ readonly hidden: false;
20672
+ }];
20673
+ readonly subcommands: readonly [];
20674
+ }, {
20675
+ readonly name: "add";
20676
+ readonly description: "Add a DNS record";
20677
+ readonly aliases: readonly [];
20678
+ readonly hidden: false;
20679
+ readonly helpOption: true;
20680
+ readonly helpCommand: false;
20681
+ readonly usage: "[options] <domain>";
20682
+ readonly helpText: readonly [];
20683
+ readonly arguments: readonly [{
20684
+ readonly name: "domain";
20685
+ readonly required: true;
20686
+ readonly variadic: false;
20687
+ readonly description: "";
20688
+ }];
20689
+ readonly options: readonly [{
20690
+ readonly flags: "--type <type>";
20691
+ readonly description: "A, AAAA, CNAME, MX, TXT, SRV, or CAA";
20692
+ readonly hidden: false;
20693
+ }, {
20694
+ readonly flags: "--name <name>";
20695
+ readonly description: "record name, such as www or the full domain";
20696
+ readonly hidden: false;
20697
+ }, {
20698
+ readonly flags: "--value <value>";
20699
+ readonly description: "record value (repeat for more than one)";
20700
+ readonly hidden: false;
20701
+ readonly defaultValue: readonly [];
20702
+ }, {
20703
+ readonly flags: "--ttl <seconds>";
20704
+ readonly description: "time to live in seconds";
20705
+ readonly hidden: false;
20706
+ }, {
20707
+ readonly flags: "--company <slug>";
20708
+ readonly description: "use this company instead of the active company";
20709
+ readonly hidden: false;
20710
+ }, {
20711
+ readonly flags: "--json";
20712
+ readonly description: "print machine-readable JSON";
20713
+ readonly hidden: false;
20714
+ }];
20715
+ readonly subcommands: readonly [];
20716
+ }, {
20717
+ readonly name: "set";
20718
+ readonly description: "Change a DNS record by id, or by name and type";
20719
+ readonly aliases: readonly [];
20720
+ readonly hidden: false;
20721
+ readonly helpOption: true;
20722
+ readonly helpCommand: false;
20723
+ readonly usage: "[options] <domain>";
20724
+ readonly helpText: readonly [];
20725
+ readonly arguments: readonly [{
20726
+ readonly name: "domain";
20727
+ readonly required: true;
20728
+ readonly variadic: false;
20729
+ readonly description: "";
20730
+ }];
20731
+ readonly options: readonly [{
20732
+ readonly flags: "--record <id>";
20733
+ readonly description: "record id from 'hq deploy domains records list'";
20734
+ readonly hidden: false;
20735
+ }, {
20736
+ readonly flags: "--name <name>";
20737
+ readonly description: "record name, together with --type";
20738
+ readonly hidden: false;
20739
+ }, {
20740
+ readonly flags: "--type <type>";
20741
+ readonly description: "record type, together with --name";
20742
+ readonly hidden: false;
20743
+ }, {
20744
+ readonly flags: "--value <value>";
20745
+ readonly description: "replacement value (repeat for more than one)";
20746
+ readonly hidden: false;
20747
+ readonly defaultValue: readonly [];
20748
+ }, {
20749
+ readonly flags: "--ttl <seconds>";
20750
+ readonly description: "replacement time to live in seconds";
20751
+ readonly hidden: false;
20752
+ }, {
20753
+ readonly flags: "--company <slug>";
20754
+ readonly description: "use this company instead of the active company";
20755
+ readonly hidden: false;
20756
+ }, {
20757
+ readonly flags: "--json";
20758
+ readonly description: "print machine-readable JSON";
20759
+ readonly hidden: false;
20760
+ }];
20761
+ readonly subcommands: readonly [];
20762
+ }, {
20763
+ readonly name: "delete";
20764
+ readonly description: "Delete a DNS record by id, or by name and type";
20765
+ readonly aliases: readonly [];
20766
+ readonly hidden: false;
20767
+ readonly helpOption: true;
20768
+ readonly helpCommand: false;
20769
+ readonly usage: "[options] <domain>";
20770
+ readonly helpText: readonly [];
20771
+ readonly arguments: readonly [{
20772
+ readonly name: "domain";
20773
+ readonly required: true;
20774
+ readonly variadic: false;
20775
+ readonly description: "";
20776
+ }];
20777
+ readonly options: readonly [{
20778
+ readonly flags: "--record <id>";
20779
+ readonly description: "record id from 'hq deploy domains records list'";
20780
+ readonly hidden: false;
20781
+ }, {
20782
+ readonly flags: "--name <name>";
20783
+ readonly description: "record name, together with --type";
20784
+ readonly hidden: false;
20785
+ }, {
20786
+ readonly flags: "--type <type>";
20787
+ readonly description: "record type, together with --name";
20788
+ readonly hidden: false;
20789
+ }, {
20790
+ readonly flags: "--company <slug>";
20791
+ readonly description: "use this company instead of the active company";
20792
+ readonly hidden: false;
20793
+ }, {
20794
+ readonly flags: "--json";
20795
+ readonly description: "print machine-readable JSON";
20796
+ readonly hidden: false;
20797
+ }];
20798
+ readonly subcommands: readonly [];
20799
+ }];
20519
20800
  }];
20520
20801
  }];
20521
20802
  }, {