@indigoai-us/hq-cli 5.118.1 → 5.118.2
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 +19 -0
- package/dist/command-catalog.generated.d.ts +4 -1
- package/dist/command-catalog.generated.js +5 -1
- package/dist/commands/agents.d.ts +1 -0
- package/dist/commands/agents.js +10 -2
- package/dist/lib/billing/plan-lock.js +3 -1
- package/dist/lib/plan-limit-nag.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [5.118.2] — 2026-09-17
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- The locked-workspace notice now says what you can still do. A locked
|
|
10
|
+
workspace is read-only for new things, but deleting still works — which
|
|
11
|
+
matters, because every fix the notice lists (remove members, disconnect
|
|
12
|
+
integrations, delete secrets, deprovision agents) is a delete. The notice
|
|
13
|
+
states that outright instead of leaving "read-only" to be guessed at.
|
|
14
|
+
|
|
15
|
+
- The plan-limit box names the plan: "HQ Starter plan limit exceeded" rather
|
|
16
|
+
than "HQ plan limit exceeded".
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- `hq agents provision --model` now sets the brain model during creation. A
|
|
21
|
+
model such as `gpt-5.5` or `grok-4.6` selects the agents-v2 runtime unless
|
|
22
|
+
`--provider` is specified, avoiding a later box recreation to change brains.
|
|
23
|
+
|
|
5
24
|
## [5.118.1] — 2026-09-17
|
|
6
25
|
|
|
7
26
|
### Fixed
|
|
@@ -3812,7 +3812,10 @@ export declare const COMMAND_CATALOG: readonly [{
|
|
|
3812
3812
|
readonly description: "Agent slug (defaults to a slug of <name>)";
|
|
3813
3813
|
}, {
|
|
3814
3814
|
readonly flags: "--provider <provider>";
|
|
3815
|
-
readonly description: "Runtime:
|
|
3815
|
+
readonly description: "Runtime: agents-v2 (recommended) | codex | grok | claude (legacy). A --model selects agents-v2 by default";
|
|
3816
|
+
}, {
|
|
3817
|
+
readonly flags: "--model <model>";
|
|
3818
|
+
readonly description: "Brain model, for example gpt-5.5 or grok-4.6";
|
|
3816
3819
|
}, {
|
|
3817
3820
|
readonly flags: "--auth-mode <mode>";
|
|
3818
3821
|
readonly description: "Auth: subscription | apiKey (default subscription)";
|
|
@@ -4926,7 +4926,11 @@ export const COMMAND_CATALOG = [
|
|
|
4926
4926
|
},
|
|
4927
4927
|
{
|
|
4928
4928
|
"flags": "--provider <provider>",
|
|
4929
|
-
"description": "Runtime:
|
|
4929
|
+
"description": "Runtime: agents-v2 (recommended) | codex | grok | claude (legacy). A --model selects agents-v2 by default"
|
|
4930
|
+
},
|
|
4931
|
+
{
|
|
4932
|
+
"flags": "--model <model>",
|
|
4933
|
+
"description": "Brain model, for example gpt-5.5 or grok-4.6"
|
|
4930
4934
|
},
|
|
4931
4935
|
{
|
|
4932
4936
|
"flags": "--auth-mode <mode>",
|
|
@@ -171,6 +171,7 @@ export interface ProvisionAgentInput {
|
|
|
171
171
|
slug: string;
|
|
172
172
|
codexAuthMode: "subscription" | "apiKey";
|
|
173
173
|
provider?: "codex" | "grok" | "claude" | "agents-v2";
|
|
174
|
+
codexModel?: string;
|
|
174
175
|
codexApiKey?: string;
|
|
175
176
|
idempotencyKey: string;
|
|
176
177
|
title?: string;
|
package/dist/commands/agents.js
CHANGED
|
@@ -1074,7 +1074,8 @@ export function registerAgentsCommand(program) {
|
|
|
1074
1074
|
.description("Provision a new cloud agent (company-specific monthly price shown before creation)")
|
|
1075
1075
|
.option("--company <slug>", "Company slug (resolves to companyUid)")
|
|
1076
1076
|
.option("--slug <slug>", "Agent slug (defaults to a slug of <name>)")
|
|
1077
|
-
.option("--provider <provider>", "Runtime:
|
|
1077
|
+
.option("--provider <provider>", "Runtime: agents-v2 (recommended) | codex | grok | claude (legacy). A --model selects agents-v2 by default")
|
|
1078
|
+
.option("--model <model>", "Brain model, for example gpt-5.5 or grok-4.6")
|
|
1078
1079
|
.option("--auth-mode <mode>", "Auth: subscription | apiKey (default subscription)", "subscription")
|
|
1079
1080
|
.option("--api-key-env <VAR>", "Env var holding the API key for --auth-mode apiKey (never pass the key as a flag)")
|
|
1080
1081
|
.option("--title <title>", "Org-chart job title")
|
|
@@ -1088,7 +1089,13 @@ export function registerAgentsCommand(program) {
|
|
|
1088
1089
|
// unrecognised value, silently provisioning a billable box the operator
|
|
1089
1090
|
// did not ask for. They now exit(1) instead — see parseEnumOption.
|
|
1090
1091
|
const authMode = parseEnumOption(opts.authMode, VALID_AUTH_MODES, "--auth-mode") ?? "subscription";
|
|
1091
|
-
const
|
|
1092
|
+
const explicitProvider = parseEnumOption(opts.provider, VALID_PROVIDERS, "--provider");
|
|
1093
|
+
if (opts.model !== undefined &&
|
|
1094
|
+
!/^[A-Za-z0-9._-]{1,64}$/.test(opts.model)) {
|
|
1095
|
+
console.error(chalk.red("--model must be a model identifier (letters, digits, dot, dash, underscore; max 64 chars)."));
|
|
1096
|
+
process.exit(1);
|
|
1097
|
+
}
|
|
1098
|
+
const provider = explicitProvider ?? (opts.model ? "agents-v2" : undefined);
|
|
1092
1099
|
// claude is subscription-only on hq-pro (rejectIncompatibleProviderAuthMode
|
|
1093
1100
|
// returns AGENT_PROVIDER_INCOMPATIBLE_WITH_AUTH_MODE). Catch it here so the
|
|
1094
1101
|
// operator gets a direct message instead of a 400 from the control plane
|
|
@@ -1139,6 +1146,7 @@ export function registerAgentsCommand(program) {
|
|
|
1139
1146
|
slug,
|
|
1140
1147
|
codexAuthMode: authMode,
|
|
1141
1148
|
...(provider ? { provider } : {}),
|
|
1149
|
+
...(opts.model ? { codexModel: opts.model } : {}),
|
|
1142
1150
|
...(codexApiKey ? { codexApiKey } : {}),
|
|
1143
1151
|
idempotencyKey,
|
|
1144
1152
|
...(opts.title ? { title: opts.title } : {}),
|
|
@@ -281,7 +281,9 @@ export function renderPlanLockNotice(status) {
|
|
|
281
281
|
if (lock.reasons.includes("agents")) {
|
|
282
282
|
lines.push(` Agents allowed on Starter: ${agentTarget(lock)}.`);
|
|
283
283
|
}
|
|
284
|
-
lines.push(" This workspace is read-only until it is fixed
|
|
284
|
+
lines.push(" Nothing has been deleted. This workspace is read-only until it is fixed:");
|
|
285
|
+
lines.push(" you can still delete things, but you cannot create, invite or upload.");
|
|
286
|
+
lines.push(" Two ways to fix it:");
|
|
285
287
|
const remedy = lock.reasons.length
|
|
286
288
|
? lock.reasons.map((reason) => reasonRemedy(reason, lock)).join(", and ")
|
|
287
289
|
: "come back under the Starter plan limits";
|
|
@@ -190,7 +190,7 @@ function withinDayWindow(shownAt, nowMs) {
|
|
|
190
190
|
return nowMs - shownAt < DAY_MS;
|
|
191
191
|
}
|
|
192
192
|
function buildOverBox(overEntries, upgradeUrl) {
|
|
193
|
-
const title = "⚠ HQ plan limit exceeded";
|
|
193
|
+
const title = "⚠ HQ Starter plan limit exceeded";
|
|
194
194
|
const upgrade = `Upgrade: ${upgradeUrl}`;
|
|
195
195
|
const resourceLines = overEntries.map(([key, entry]) => ` ${key}: ${entry.used}/${entry.limit}${dimensionSuffix(key)}`);
|
|
196
196
|
const contentLines = [title, "", ...resourceLines, "", upgrade];
|