@huynle/hub 0.8.5 → 0.8.6
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 +13 -0
- package/package.json +1 -1
- package/packages/claude-code/package.json +1 -1
- package/packages/cli/dist/hub-cli.js +6 -6
- package/packages/cli/package.json +1 -1
- package/packages/codex/package.json +1 -1
- package/packages/node/package.json +1 -1
- package/packages/preset/package.json +1 -1
- package/packages/protocol/package.json +1 -1
- package/packages/runtime-openshell/package.json +1 -1
- package/packages/runtime-sdk/package.json +1 -1
- package/packages/sdk/package.json +1 -1
- package/packages/spoke-sdk/package.json +1 -1
- package/src/central/install/install.ps1 +1 -1
- package/src/central/install/install.sh +1 -1
- package/src/spoke/herdr.ts +3 -2
- package/src/spoke/localhub.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.8.6
|
|
4
|
+
|
|
5
|
+
A Windows fix release: OpenCode with the hub plugin no longer flashes a console window every few seconds on Windows,
|
|
6
|
+
and the installer ends with what is left to do. Machines pick up the fixed plugin when OpenCode restarts. No migration
|
|
7
|
+
is needed.
|
|
8
|
+
|
|
9
|
+
### Fixes
|
|
10
|
+
- **Windows: no more flashing console window while OpenCode runs.** The hub plugin polls Herdr (`herdr agent list`)
|
|
11
|
+
every few seconds; on Windows each poll opened a console window for a moment. It and the plugin's local hub now
|
|
12
|
+
start hidden (`windowsHide`).
|
|
13
|
+
- **The installer's last line says what is left** when the machine is set up but not ready yet: usually start
|
|
14
|
+
OpenCode and keep it open so the machine shows online (it read like a failure before).
|
|
15
|
+
|
|
3
16
|
## 0.8.5
|
|
4
17
|
|
|
5
18
|
Set up Hub on a machine in one line. The console's new **Set up Hub on a machine** (avatar menu, Settings → Machines
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@huynle/hub",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.6",
|
|
4
4
|
"description": "Hub: a harness-agnostic central hub your AI agent harnesses connect to (OpenCode first). Follow, steer and stop sessions from your phone or browser, with notifications, optional hands-free Voice and a self-hostable server.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Huy Le",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@huynle/hub-claude-code",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.6",
|
|
4
4
|
"private": true,
|
|
5
5
|
"description": "The Claude Code hooks spoke: per-user daemon, hook bridge, plugin dir, `hub claude` wrapper and daemon-backed MCP server (internal; shipped inside @huynle/hub, not published on its own).",
|
|
6
6
|
"license": "MIT",
|
|
@@ -7,7 +7,7 @@ import { createInterface } from "readline";
|
|
|
7
7
|
// packages/cli/package.json
|
|
8
8
|
var package_default = {
|
|
9
9
|
name: "@huynle/hub-cli",
|
|
10
|
-
version: "0.8.
|
|
10
|
+
version: "0.8.6",
|
|
11
11
|
private: true,
|
|
12
12
|
description: "The hub CLI (`hub` / `hubctl`) for agents and scripts (internal; bundled into @huynle/hub, not published on its own).",
|
|
13
13
|
license: "MIT",
|
|
@@ -8945,7 +8945,7 @@ import { arch as osArch, platform as osPlatform } from "node:os";
|
|
|
8945
8945
|
// packages/node/package.json
|
|
8946
8946
|
var package_default2 = {
|
|
8947
8947
|
name: "@huynle/hub-node",
|
|
8948
|
-
version: "0.8.
|
|
8948
|
+
version: "0.8.6",
|
|
8949
8949
|
private: true,
|
|
8950
8950
|
description: "`hub node`: the per-machine daemon that prepares, collects and cleans up launch workspaces (internal; shipped inside @huynle/hub, not published on its own).",
|
|
8951
8951
|
license: "MIT",
|
|
@@ -10037,7 +10037,7 @@ import path14 from "node:path";
|
|
|
10037
10037
|
// packages/runtime-openshell/package.json
|
|
10038
10038
|
var package_default3 = {
|
|
10039
10039
|
name: "@huynle/hub-runtime-openshell",
|
|
10040
|
-
version: "0.8.
|
|
10040
|
+
version: "0.8.6",
|
|
10041
10041
|
private: true,
|
|
10042
10042
|
description: "The `openshell` runtime of `hub node`: launches in NVIDIA OpenShell sandboxes, driven through the openshell CLI (internal; shipped inside @huynle/hub, not published on its own).",
|
|
10043
10043
|
license: "MIT",
|
|
@@ -13721,7 +13721,7 @@ import path23 from "node:path";
|
|
|
13721
13721
|
// packages/claude-code/package.json
|
|
13722
13722
|
var package_default4 = {
|
|
13723
13723
|
name: "@huynle/hub-claude-code",
|
|
13724
|
-
version: "0.8.
|
|
13724
|
+
version: "0.8.6",
|
|
13725
13725
|
private: true,
|
|
13726
13726
|
description: "The Claude Code hooks spoke: per-user daemon, hook bridge, plugin dir, `hub claude` wrapper and daemon-backed MCP server (internal; shipped inside @huynle/hub, not published on its own).",
|
|
13727
13727
|
license: "MIT",
|
|
@@ -14010,7 +14010,7 @@ import path26 from "node:path";
|
|
|
14010
14010
|
// packages/preset/package.json
|
|
14011
14011
|
var package_default5 = {
|
|
14012
14012
|
name: "@huynle/hub-preset",
|
|
14013
|
-
version: "0.8.
|
|
14013
|
+
version: "0.8.6",
|
|
14014
14014
|
private: true,
|
|
14015
14015
|
description: "The preset spoke: drives a harness without a spoke of its own through a terminal pane (tmux), described by a data-only preset; official presets in presets/ (internal; shipped inside @huynle/hub, not published on its own).",
|
|
14016
14016
|
license: "MIT",
|
|
@@ -14535,7 +14535,7 @@ import { openSync as openSync6, closeSync as closeSync6, readFileSync as readFil
|
|
|
14535
14535
|
// packages/codex/package.json
|
|
14536
14536
|
var package_default6 = {
|
|
14537
14537
|
name: "@huynle/hub-codex",
|
|
14538
|
-
version: "0.8.
|
|
14538
|
+
version: "0.8.6",
|
|
14539
14539
|
private: true,
|
|
14540
14540
|
description: "The Codex app-server spoke: attaches to Codex's app-server (its own over stdio, and the shared daemon's socket when present), and the `hub codex` wrapper (internal; shipped inside @huynle/hub, not published on its own).",
|
|
14541
14541
|
license: "MIT",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@huynle/hub-codex",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.6",
|
|
4
4
|
"private": true,
|
|
5
5
|
"description": "The Codex app-server spoke: attaches to Codex's app-server (its own over stdio, and the shared daemon's socket when present), and the `hub codex` wrapper (internal; shipped inside @huynle/hub, not published on its own).",
|
|
6
6
|
"license": "MIT",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@huynle/hub-node",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.6",
|
|
4
4
|
"private": true,
|
|
5
5
|
"description": "`hub node`: the per-machine daemon that prepares, collects and cleans up launch workspaces (internal; shipped inside @huynle/hub, not published on its own).",
|
|
6
6
|
"license": "MIT",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@huynle/hub-preset",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.6",
|
|
4
4
|
"private": true,
|
|
5
5
|
"description": "The preset spoke: drives a harness without a spoke of its own through a terminal pane (tmux), described by a data-only preset; official presets in presets/ (internal; shipped inside @huynle/hub, not published on its own).",
|
|
6
6
|
"license": "MIT",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@huynle/hub-runtime-openshell",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.6",
|
|
4
4
|
"private": true,
|
|
5
5
|
"description": "The `openshell` runtime of `hub node`: launches in NVIDIA OpenShell sandboxes, driven through the openshell CLI (internal; shipped inside @huynle/hub, not published on its own).",
|
|
6
6
|
"license": "MIT",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@huynle/hub-spoke-sdk",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.6",
|
|
4
4
|
"private": true,
|
|
5
5
|
"description": "Harness-neutral spoke building blocks: hub connection, enrollment, tokens, idempotent deliver, prompt references, HarnessSpoke (internal; shipped inside @huynle/hub, not published on its own).",
|
|
6
6
|
"license": "MIT",
|
|
@@ -335,7 +335,7 @@ function Invoke-HubSetup {
|
|
|
335
335
|
$rc = Invoke-HubTool @('setup', 'verify', '--profile', $SetupProfile)
|
|
336
336
|
switch ($rc) {
|
|
337
337
|
0 { Write-HubSay "done: this machine is set up for $HubUrl" 'Green' }
|
|
338
|
-
15 { Write-HubSay
|
|
338
|
+
15 { Write-HubSay "set up for $HubUrl; to finish, do the next steps above (usually: start OpenCode with 'opencode' and keep it open, so this machine shows online), then check with: hubctl setup verify" 'Cyan' }
|
|
339
339
|
default { throw "setup verify failed (hubctl exit $rc)" }
|
|
340
340
|
}
|
|
341
341
|
} catch {
|
|
@@ -257,7 +257,7 @@ main() {
|
|
|
257
257
|
fi
|
|
258
258
|
case "$hub_rc" in
|
|
259
259
|
0) hub_say "done: this machine is set up for $HUB_URL" ;;
|
|
260
|
-
15) hub_say "
|
|
260
|
+
15) hub_say "set up for $HUB_URL; to finish, do the next steps above (usually: start OpenCode with \`opencode\` and keep it open, so this machine shows online), then check with: hubctl setup verify" ;;
|
|
261
261
|
*) hub_die "$hub_rc" "setup verify failed (hubctl exit $hub_rc)" ;;
|
|
262
262
|
esac
|
|
263
263
|
return 0
|
package/src/spoke/herdr.ts
CHANGED
|
@@ -17,9 +17,10 @@ export const AGENT_START_TIMEOUT_MS = 20_000
|
|
|
17
17
|
|
|
18
18
|
const STDERR_MAX = 300
|
|
19
19
|
|
|
20
|
-
export function herdrRunner(bin = "herdr"): HerdrRunner {
|
|
20
|
+
export function herdrRunner(bin = "herdr", spawn: typeof Bun.spawn = Bun.spawn): HerdrRunner {
|
|
21
21
|
return async (args, timeoutMs) => {
|
|
22
|
-
|
|
22
|
+
// windowsHide: on Windows each poll would otherwise flash a console window (no-op elsewhere).
|
|
23
|
+
const proc = spawn([bin, ...args], { stdin: "ignore", stdout: "pipe", stderr: "pipe", windowsHide: true })
|
|
23
24
|
const what = `herdr ${args.slice(0, 2).join(" ")}`
|
|
24
25
|
const stdout = collect(proc.stdout)
|
|
25
26
|
const stderr = collect(proc.stderr)
|
package/src/spoke/localhub.ts
CHANGED
|
@@ -213,6 +213,7 @@ export async function ensureLocalHub(server: string, options: LocalHubOptions =
|
|
|
213
213
|
child = (options.spawn ?? (nodeSpawn as unknown as SpawnLike))(runtime.command, [hubScript(root)], {
|
|
214
214
|
cwd: root,
|
|
215
215
|
detached: true,
|
|
216
|
+
windowsHide: true,
|
|
216
217
|
stdio: ["ignore", log, log],
|
|
217
218
|
env: childEnv,
|
|
218
219
|
})
|