@arkhera30/cli 0.1.4 → 0.1.5
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/compose/docker-compose.yml +5 -5
- package/dist/index.js +35 -10
- package/package.json +1 -1
|
@@ -26,7 +26,7 @@ services:
|
|
|
26
26
|
#
|
|
27
27
|
# start_period covers first-boot GGUF model download (~1-2 GB) + initial embed.
|
|
28
28
|
qmd-daemon:
|
|
29
|
-
image: ghcr.io/
|
|
29
|
+
image: ghcr.io/arjunkhera/horus/qmd-daemon:latest
|
|
30
30
|
environment:
|
|
31
31
|
- QMD_DAEMON_PORT=8181
|
|
32
32
|
volumes:
|
|
@@ -51,7 +51,7 @@ services:
|
|
|
51
51
|
# ── Anvil ──────────────────────────────────────────────────────────────────
|
|
52
52
|
# Notes system and MCP server. Indexes markdown files from the Notes repo.
|
|
53
53
|
anvil:
|
|
54
|
-
image: ghcr.io/
|
|
54
|
+
image: ghcr.io/arjunkhera/horus/anvil:latest
|
|
55
55
|
ports:
|
|
56
56
|
- "${ANVIL_PORT:-8100}:8100"
|
|
57
57
|
volumes:
|
|
@@ -94,7 +94,7 @@ services:
|
|
|
94
94
|
# ── Vault ──────────────────────────────────────────────────────────────────
|
|
95
95
|
# Knowledge service. Semantic search over the knowledge-base repo.
|
|
96
96
|
vault:
|
|
97
|
-
image: ghcr.io/
|
|
97
|
+
image: ghcr.io/arjunkhera/horus/vault:latest
|
|
98
98
|
ports:
|
|
99
99
|
- "${VAULT_PORT:-8000}:8000"
|
|
100
100
|
volumes:
|
|
@@ -140,7 +140,7 @@ services:
|
|
|
140
140
|
# ── Vault MCP ──────────────────────────────────────────────────────────────
|
|
141
141
|
# Thin MCP adapter that translates MCP tool calls to Vault REST API calls.
|
|
142
142
|
vault-mcp:
|
|
143
|
-
image: ghcr.io/
|
|
143
|
+
image: ghcr.io/arjunkhera/horus/vault-mcp:latest
|
|
144
144
|
ports:
|
|
145
145
|
- "${VAULT_MCP_PORT:-8300}:8300"
|
|
146
146
|
environment:
|
|
@@ -172,7 +172,7 @@ services:
|
|
|
172
172
|
# ── Forge ──────────────────────────────────────────────────────────────────
|
|
173
173
|
# Workspace manager and package registry MCP server.
|
|
174
174
|
forge:
|
|
175
|
-
image: ghcr.io/
|
|
175
|
+
image: ghcr.io/arjunkhera/horus/forge:latest
|
|
176
176
|
ports:
|
|
177
177
|
- "${FORGE_PORT:-8200}:8200"
|
|
178
178
|
volumes:
|
package/dist/index.js
CHANGED
|
@@ -298,6 +298,13 @@ async function detectRuntime(preferred) {
|
|
|
298
298
|
"No container runtime found.\n\nHorus requires Docker or Podman with the Compose plugin.\n\nInstall one of:\n - Docker Desktop: https://www.docker.com/products/docker-desktop/\n - Podman Desktop: https://podman-desktop.io/\n"
|
|
299
299
|
);
|
|
300
300
|
}
|
|
301
|
+
async function registryLogin(runtime, registry, token, username = "horus") {
|
|
302
|
+
const result = await execa(runtime.name, ["login", registry, "-u", username, "--password-stdin"], {
|
|
303
|
+
input: token,
|
|
304
|
+
reject: false
|
|
305
|
+
});
|
|
306
|
+
return result.exitCode === 0;
|
|
307
|
+
}
|
|
301
308
|
async function composeStreaming(runtime, args) {
|
|
302
309
|
const bin = runtime.name;
|
|
303
310
|
const result = await execa(bin, ["compose", ...args], {
|
|
@@ -542,14 +549,23 @@ var setupCommand = new Command("setup").description("Interactive first-run setup
|
|
|
542
549
|
console.error(error.message);
|
|
543
550
|
process.exit(1);
|
|
544
551
|
}
|
|
552
|
+
const ghcrToken = config.github_token || process.env.GITHUB_TOKEN || "";
|
|
553
|
+
if (ghcrToken) {
|
|
554
|
+
const loginSpinner = ora("Authenticating with ghcr.io...").start();
|
|
555
|
+
const ok = await registryLogin(runtime, "ghcr.io", ghcrToken);
|
|
556
|
+
if (ok) {
|
|
557
|
+
loginSpinner.succeed("Authenticated with ghcr.io");
|
|
558
|
+
} else {
|
|
559
|
+
loginSpinner.warn("GHCR login failed \u2014 private images may not pull");
|
|
560
|
+
}
|
|
561
|
+
}
|
|
545
562
|
console.log("");
|
|
546
563
|
console.log(chalk.bold("Pulling container images..."));
|
|
547
564
|
try {
|
|
548
|
-
await composeStreaming(runtime, ["pull"]);
|
|
549
|
-
} catch
|
|
550
|
-
console.log(chalk.
|
|
551
|
-
console.log(chalk.dim(
|
|
552
|
-
process.exit(1);
|
|
565
|
+
await composeStreaming(runtime, ["pull", "--ignore-pull-failures"]);
|
|
566
|
+
} catch {
|
|
567
|
+
console.log(chalk.yellow("Some images could not be pulled."));
|
|
568
|
+
console.log(chalk.dim("Continuing \u2014 services will be built from source if build contexts are available."));
|
|
553
569
|
}
|
|
554
570
|
console.log("");
|
|
555
571
|
console.log(chalk.bold("Starting Horus services..."));
|
|
@@ -1248,14 +1264,23 @@ var updateCommand = new Command7("update").description("Update Horus to the late
|
|
|
1248
1264
|
snapshotSpinner.warn("Could not save snapshot (update will proceed)");
|
|
1249
1265
|
console.log(chalk7.dim(error.message));
|
|
1250
1266
|
}
|
|
1267
|
+
const ghcrToken = config.github_token || process.env.GITHUB_TOKEN || "";
|
|
1268
|
+
if (ghcrToken) {
|
|
1269
|
+
const loginSpinner = ora6("Authenticating with ghcr.io...").start();
|
|
1270
|
+
const ok = await registryLogin(runtime, "ghcr.io", ghcrToken);
|
|
1271
|
+
if (ok) {
|
|
1272
|
+
loginSpinner.succeed("Authenticated with ghcr.io");
|
|
1273
|
+
} else {
|
|
1274
|
+
loginSpinner.warn("GHCR login failed \u2014 private images may not pull");
|
|
1275
|
+
}
|
|
1276
|
+
}
|
|
1251
1277
|
console.log("");
|
|
1252
1278
|
console.log(chalk7.bold("Pulling latest images..."));
|
|
1253
1279
|
try {
|
|
1254
|
-
await composeStreaming(runtime, ["pull"]);
|
|
1255
|
-
} catch
|
|
1256
|
-
console.log(chalk7.
|
|
1257
|
-
console.log(chalk7.dim(
|
|
1258
|
-
process.exit(1);
|
|
1280
|
+
await composeStreaming(runtime, ["pull", "--ignore-pull-failures"]);
|
|
1281
|
+
} catch {
|
|
1282
|
+
console.log(chalk7.yellow("Some images could not be pulled."));
|
|
1283
|
+
console.log(chalk7.dim("Continuing \u2014 services will be built from source if build contexts are available."));
|
|
1259
1284
|
}
|
|
1260
1285
|
console.log("");
|
|
1261
1286
|
console.log(chalk7.bold("Restarting services..."));
|