@indigoai-us/hq-cli 5.247.1 → 5.249.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 CHANGED
@@ -2,10 +2,26 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [5.249.0] — 2026-09-27
6
+
7
+ ### Fixed
8
+
9
+ - Plan-limit notices prefer the current usage-limits upgrade URL and can use
10
+ the company console billing page as a default-off hq-flags fallback.
11
+
12
+ ## [5.248.0] — 2026-09-27
13
+
14
+ ### Changed
15
+
16
+ - Internal: moved the message and resume subcommands out of src/commands/lanes.ts; no behaviour change
17
+
5
18
  ## [5.247.1] — 2026-09-27
6
19
 
7
20
  ### Fixed
8
21
 
22
+ - `hq core hq-session set company_slug` accepts case-sensitive ASCII company
23
+ IDs that match company directory names and writes the same value to the
24
+ session scope capability.
9
25
  - `hq bot create setup` stops before creating a bot when the reserved setup slug exists but its record cannot be verified.
10
26
 
11
27
  ## [5.247.0] — 2026-09-27
@@ -99,8 +99,8 @@ cmd_set() {
99
99
  # session_scope_mint's own character-set rule; `personal` is a valid slug.
100
100
  if [ "$key" = "company_slug" ] && [ -n "$value" ]; then
101
101
  case "$value" in
102
- *[!a-z0-9_-]*)
103
- echo "hq-session: invalid company_slug: '$value' (allowed characters: a-z 0-9 - _)" >&2
102
+ *[!a-zA-Z0-9_-]*)
103
+ echo "hq-session: invalid company_slug: '$value' (allowed characters: A-Z a-z 0-9 - _)" >&2
104
104
  exit 1
105
105
  ;;
106
106
  esac
@@ -29,7 +29,7 @@ session_scope_mint() {
29
29
  [ -n "$root" ] && [ -n "$sid" ] && [ -n "$slug" ] || return 1
30
30
 
31
31
  case "$slug" in
32
- ''|*[!a-z0-9_-]*)
32
+ ''|*[!a-zA-Z0-9_-]*)
33
33
  echo "session-scope-capability: invalid company_slug: $slug" >&2
34
34
  return 1
35
35
  ;;
@@ -17,6 +17,8 @@
17
17
  * "key" but is really OAuth-protected still connects on the first try.
18
18
  */
19
19
  import { Command } from "commander";
20
+ import { consoleOrigin } from "../utils/console-origin.js";
21
+ export { consoleOrigin };
20
22
  import type { AdminConnection } from "./integrations-core.js";
21
23
  import { type InstallInput } from "./integrations-api.js";
22
24
  interface ConnectOptions {
@@ -57,19 +59,6 @@ interface ConnectTarget {
57
59
  /** Human label for prompts and success lines. */
58
60
  label: string;
59
61
  }
60
- /**
61
- * The console that fronts the control plane this CLI is pointed at.
62
- *
63
- * A handoff must land on the console for the SAME backend, because that
64
- * console starts its own OAuth flow against its own backend. Sending a staging
65
- * session to the production console would connect the app in the wrong place —
66
- * so when the control plane is overridden and its console cannot be derived,
67
- * return undefined and say so rather than guess a host.
68
- *
69
- * `HQ_CONSOLE_URL` is the explicit override; otherwise the console is the
70
- * control-plane host with its `hqapi.` prefix removed.
71
- */
72
- export declare function consoleOrigin(vaultApiUrl?: string): string | undefined;
73
62
  /**
74
63
  * The console's Integrations page for a company, the console root when the
75
64
  * caller never named one (a single-membership session resolves the company
@@ -95,5 +84,4 @@ export declare function bringYourOwnClientHandoff(target: ConnectTarget, opts: C
95
84
  export declare function googleClientTypeHint(clientId: string, authorizationUrl: string): string | null;
96
85
  export declare function findAlreadyConnected(connections: readonly AdminConnection[], app: string): AdminConnection | undefined;
97
86
  export declare function registerConnectCommands(integrations: Command): void;
98
- export {};
99
87
  //# sourceMappingURL=integrations-connect.d.ts.map
@@ -18,7 +18,9 @@
18
18
  */
19
19
  import chalk from "chalk";
20
20
  import open from "open";
21
- import { DEFAULT_VAULT_API_URL, ensureCognitoIdToken, } from "../utils/cognito-session.js";
21
+ import { ensureCognitoIdToken } from "../utils/cognito-session.js";
22
+ import { consoleOrigin } from "../utils/console-origin.js";
23
+ export { consoleOrigin };
22
24
  import { getCompanyUid } from "../utils/vault-api.js";
23
25
  import { redactSensitiveUrl, redactUrlsInText } from "../utils/redact-url.js";
24
26
  import { IntegrationsCliError, bareProvider, connectionDomain, fetchAdminSurface, printJson, revokedConnectionDetails, resolveConnection, } from "./integrations-core.js";
@@ -536,37 +538,6 @@ async function connectViaOAuth(token, companyUid, target, opts) {
536
538
  listener.close();
537
539
  }
538
540
  }
539
- const PRODUCTION_CONSOLE_ORIGIN = "https://hq.computer";
540
- const PRODUCTION_VAULT_API_HOST = "hqapi.hq.computer";
541
- /**
542
- * The console that fronts the control plane this CLI is pointed at.
543
- *
544
- * A handoff must land on the console for the SAME backend, because that
545
- * console starts its own OAuth flow against its own backend. Sending a staging
546
- * session to the production console would connect the app in the wrong place —
547
- * so when the control plane is overridden and its console cannot be derived,
548
- * return undefined and say so rather than guess a host.
549
- *
550
- * `HQ_CONSOLE_URL` is the explicit override; otherwise the console is the
551
- * control-plane host with its `hqapi.` prefix removed.
552
- */
553
- export function consoleOrigin(vaultApiUrl = DEFAULT_VAULT_API_URL) {
554
- const explicit = process.env.HQ_CONSOLE_URL?.trim();
555
- if (explicit)
556
- return explicit.replace(/\/+$/, "");
557
- let api;
558
- try {
559
- api = new URL(vaultApiUrl);
560
- }
561
- catch {
562
- return undefined;
563
- }
564
- if (api.host === PRODUCTION_VAULT_API_HOST)
565
- return PRODUCTION_CONSOLE_ORIGIN;
566
- if (!api.hostname.startsWith("hqapi."))
567
- return undefined;
568
- return `${api.protocol}//${api.host.slice("hqapi.".length)}`;
569
- }
570
541
  /**
571
542
  * The console's Integrations page for a company, the console root when the
572
543
  * caller never named one (a single-membership session resolves the company
@@ -0,0 +1,9 @@
1
+ import { type Ctx, type LaneMessageHandlerDeps, type LaneMessageOptions } from "./lanes-shared.js";
2
+ export declare function createLaneMessageHandlers(deps: LaneMessageHandlerDeps): {
3
+ runMessage: (ctx: Ctx, laneId: string, opts: LaneMessageOptions) => Promise<void>;
4
+ recoverQueuedMessages: (ctx: Ctx, laneId: string) => Promise<{
5
+ action: "none" | "resumed" | "undeliverable";
6
+ message_count: number;
7
+ }>;
8
+ };
9
+ //# sourceMappingURL=lanes-message.d.ts.map