@indigoai-us/hq-cli 5.180.0 → 5.181.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,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [5.181.0] — 2026-09-24
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- `hq daemon` runs the session host from the hq-cloud copy it keeps up to date (hq-cloud's `hq-outpost-session-host`, when that copy has it), the same way it already runs sync and the outpost heartbeat, and restarts it after an hq-cloud update. Session-host fixes, such as starting on an Outpost that signs in with machine credentials, now reach boxes without an hq CLI release.
|
|
10
|
+
|
|
5
11
|
## [5.180.0] — 2026-09-24
|
|
6
12
|
|
|
7
13
|
## [5.179.1] — 2026-09-24
|
package/dist/commands/daemon.js
CHANGED
|
@@ -432,7 +432,7 @@ async function runServiceSelfUpdate(d) {
|
|
|
432
432
|
updateCli: cliSelfUpdatable() ? () => daemonSelfUpdate({ env }) : null,
|
|
433
433
|
tools: TOOL_NAMES.map((name) => hostToolUpdater(name, env, d.home)),
|
|
434
434
|
updateHqCloud: async () => updateManagedHqCloud(paths.root, env),
|
|
435
|
-
hqCloudUnits: hqCloudUnits(detected.type),
|
|
435
|
+
hqCloudUnits: hqCloudUnits(detected.type, enabledServices(detected.type, readDaemonConfig(paths.configPath))),
|
|
436
436
|
requestDaemonRestart: () => writeControlRequest(paths.requestsDir, { action: "restart-daemon" }),
|
|
437
437
|
requestRestart: (unit) => writeControlRequest(paths.requestsDir, { action: "restart", unit }),
|
|
438
438
|
log: d.out,
|
|
@@ -64,6 +64,8 @@ export interface PlanContext {
|
|
|
64
64
|
syncRunnerPath: string | null;
|
|
65
65
|
/** hq-cloud's `hq-outpost-heartbeat` bin, when the hq-cloud in use has one. */
|
|
66
66
|
heartbeatRunnerPath: string | null;
|
|
67
|
+
/** hq-cloud's `hq-outpost-session-host` bin, when the hq-cloud in use has one. */
|
|
68
|
+
sessionHostRunnerPath: string | null;
|
|
67
69
|
signedIn: boolean;
|
|
68
70
|
/** ~/.hq-agent/kit.json exists. */
|
|
69
71
|
kitConfigured: boolean;
|
|
@@ -89,11 +91,12 @@ export interface PlanContext {
|
|
|
89
91
|
codexRunnerScript: string | null;
|
|
90
92
|
}
|
|
91
93
|
/**
|
|
92
|
-
* The units that run hq-cloud's code on
|
|
93
|
-
*
|
|
94
|
-
*
|
|
94
|
+
* The units that run hq-cloud's code on this host, restarted after the updater
|
|
95
|
+
* installs a new hq-cloud. Only outposts and self-hosted machines run the
|
|
96
|
+
* outpost heartbeat (agent machines run the agent kit's own); the session host
|
|
97
|
+
* is included wherever it is enabled.
|
|
95
98
|
*/
|
|
96
|
-
export declare function hqCloudUnits(machineType: MachineType): ServiceName[];
|
|
99
|
+
export declare function hqCloudUnits(machineType: MachineType, enabled: readonly ServiceName[]): ServiceName[];
|
|
97
100
|
/** Written by outpost provisioning; the daemon runs it rather than re-implementing Codex login and relay setup. */
|
|
98
101
|
export declare const CODEX_RUNNER_SCRIPT = "/usr/local/bin/outpost-codex-runner.sh";
|
|
99
102
|
/** The outpost's Claude runner script, read for the session name it uses. */
|
|
@@ -97,12 +97,18 @@ function firstBlock(checks) {
|
|
|
97
97
|
return hit ? { state: "waiting", reason: hit[1] } : undefined;
|
|
98
98
|
}
|
|
99
99
|
/**
|
|
100
|
-
* The units that run hq-cloud's code on
|
|
101
|
-
*
|
|
102
|
-
*
|
|
100
|
+
* The units that run hq-cloud's code on this host, restarted after the updater
|
|
101
|
+
* installs a new hq-cloud. Only outposts and self-hosted machines run the
|
|
102
|
+
* outpost heartbeat (agent machines run the agent kit's own); the session host
|
|
103
|
+
* is included wherever it is enabled.
|
|
103
104
|
*/
|
|
104
|
-
export function hqCloudUnits(machineType) {
|
|
105
|
-
|
|
105
|
+
export function hqCloudUnits(machineType, enabled) {
|
|
106
|
+
const units = ["sync"];
|
|
107
|
+
if (machineType === "outpost" || machineType === "self-hosted")
|
|
108
|
+
units.push("heartbeat");
|
|
109
|
+
if (enabled.includes("session-host"))
|
|
110
|
+
units.push("session-host");
|
|
111
|
+
return units;
|
|
106
112
|
}
|
|
107
113
|
/** Written by outpost provisioning; the daemon runs it rather than re-implementing Codex login and relay setup. */
|
|
108
114
|
export const CODEX_RUNNER_SCRIPT = "/usr/local/bin/outpost-codex-runner.sh";
|
|
@@ -181,7 +187,10 @@ function planService(service, ctx) {
|
|
|
181
187
|
case "session-host":
|
|
182
188
|
return [
|
|
183
189
|
base(service, {
|
|
184
|
-
|
|
190
|
+
// hq-cloud's own session host picks up hq-cloud updates without a CLI release.
|
|
191
|
+
command: ctx.sessionHostRunnerPath
|
|
192
|
+
? { type: "node", script: ctx.sessionHostRunnerPath, args: [] }
|
|
193
|
+
: { type: "hq", args: ["outposts", "session-host"] },
|
|
185
194
|
env: ctx.hqRoot ? { HQ_ROOT: ctx.hqRoot } : {},
|
|
186
195
|
blocked: firstBlock([[!ctx.signedIn, NOT_SIGNED_IN]]),
|
|
187
196
|
}),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Which hq-cloud the daemon runs sync
|
|
2
|
+
* Which hq-cloud the daemon runs sync, the outpost heartbeat and the session host from.
|
|
3
3
|
*
|
|
4
4
|
* The hq CLI ships with a copy of hq-cloud, but hq-cloud releases more often
|
|
5
5
|
* than the CLI. The updater keeps a newer copy of the same major version in
|
|
@@ -27,6 +27,8 @@ export interface HqCloudRunners {
|
|
|
27
27
|
syncRunner: string | null;
|
|
28
28
|
/** `hq-outpost-heartbeat`, which older hq-cloud releases do not have. */
|
|
29
29
|
heartbeat: string | null;
|
|
30
|
+
/** `hq-outpost-session-host`, which older hq-cloud releases do not have. */
|
|
31
|
+
sessionHost: string | null;
|
|
30
32
|
}
|
|
31
33
|
export declare function hqCloudRunners(root: string, exists?: (p: string) => boolean): HqCloudRunners;
|
|
32
34
|
/** Install the newest release of the bundled major version, never older than the bundled copy. */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Which hq-cloud the daemon runs sync
|
|
2
|
+
* Which hq-cloud the daemon runs sync, the outpost heartbeat and the session host from.
|
|
3
3
|
*
|
|
4
4
|
* The hq CLI ships with a copy of hq-cloud, but hq-cloud releases more often
|
|
5
5
|
* than the CLI. The updater keeps a newer copy of the same major version in
|
|
@@ -48,7 +48,11 @@ export function hqCloudRunners(root, exists = fs.existsSync) {
|
|
|
48
48
|
const p = path.join(root, "dist", "bin", name);
|
|
49
49
|
return exists(p) ? p : null;
|
|
50
50
|
};
|
|
51
|
-
return {
|
|
51
|
+
return {
|
|
52
|
+
syncRunner: bin("sync-runner.js"),
|
|
53
|
+
heartbeat: bin("outpost-heartbeat.js"),
|
|
54
|
+
sessionHost: bin("outpost-session-host.js"),
|
|
55
|
+
};
|
|
52
56
|
}
|
|
53
57
|
/** Install the newest release of the bundled major version, never older than the bundled copy. */
|
|
54
58
|
export function hqCloudInstallCommand(prefix, bundledVersion, platform = process.platform) {
|
package/dist/lib/daemon/run.js
CHANGED
|
@@ -249,7 +249,7 @@ export async function runDaemon(opts) {
|
|
|
249
249
|
const hqRoot = configured && fs.existsSync(configured) ? configured : undefined;
|
|
250
250
|
// Re-picked every reconcile, so a newer hq-cloud from the updater is used as soon as it lands.
|
|
251
251
|
const hqCloud = currentHqCloud(paths.root);
|
|
252
|
-
const runners = hqCloud ? hqCloudRunners(hqCloud.root) : { syncRunner: null, heartbeat: null };
|
|
252
|
+
const runners = hqCloud ? hqCloudRunners(hqCloud.root) : { syncRunner: null, heartbeat: null, sessionHost: null };
|
|
253
253
|
return planUnits(enabledServices(machineType, config), {
|
|
254
254
|
machineType,
|
|
255
255
|
platform,
|
|
@@ -257,6 +257,7 @@ export async function runDaemon(opts) {
|
|
|
257
257
|
hqRoot,
|
|
258
258
|
syncRunnerPath: runners.syncRunner,
|
|
259
259
|
heartbeatRunnerPath: runners.heartbeat,
|
|
260
|
+
sessionHostRunnerPath: runners.sessionHost,
|
|
260
261
|
signedIn: signedIn(env, home, log),
|
|
261
262
|
kitConfigured: fs.existsSync(agentKitPaths(home, env).kitConfigPath),
|
|
262
263
|
desktopAppManagesSync: machineType === "desktop" &&
|