@arkhera30/cli 0.1.3 → 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.
@@ -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/arkhera/horus/qmd-daemon:latest
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/arkhera/horus/anvil:latest
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/arkhera/horus/vault:latest
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/arkhera/horus/vault-mcp:latest
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/arkhera/horus/forge:latest
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
@@ -3,6 +3,7 @@
3
3
  // src/index.ts
4
4
  import { Command as Command10 } from "commander";
5
5
  import chalk10 from "chalk";
6
+ import { createRequire } from "module";
6
7
 
7
8
  // src/commands/setup.ts
8
9
  import { Command } from "commander";
@@ -297,6 +298,13 @@ async function detectRuntime(preferred) {
297
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"
298
299
  );
299
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
+ }
300
308
  async function composeStreaming(runtime, args) {
301
309
  const bin = runtime.name;
302
310
  const result = await execa(bin, ["compose", ...args], {
@@ -541,14 +549,23 @@ var setupCommand = new Command("setup").description("Interactive first-run setup
541
549
  console.error(error.message);
542
550
  process.exit(1);
543
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
+ }
544
562
  console.log("");
545
563
  console.log(chalk.bold("Pulling container images..."));
546
564
  try {
547
- await composeStreaming(runtime, ["pull"]);
548
- } catch (error) {
549
- console.log(chalk.red("Failed to pull images."));
550
- console.log(chalk.dim(error.message));
551
- 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."));
552
569
  }
553
570
  console.log("");
554
571
  console.log(chalk.bold("Starting Horus services..."));
@@ -1247,14 +1264,23 @@ var updateCommand = new Command7("update").description("Update Horus to the late
1247
1264
  snapshotSpinner.warn("Could not save snapshot (update will proceed)");
1248
1265
  console.log(chalk7.dim(error.message));
1249
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
+ }
1250
1277
  console.log("");
1251
1278
  console.log(chalk7.bold("Pulling latest images..."));
1252
1279
  try {
1253
- await composeStreaming(runtime, ["pull"]);
1254
- } catch (error) {
1255
- console.log(chalk7.red("Failed to pull images."));
1256
- console.log(chalk7.dim(error.message));
1257
- 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."));
1258
1284
  }
1259
1285
  console.log("");
1260
1286
  console.log(chalk7.bold("Restarting services..."));
@@ -1774,8 +1800,10 @@ backupCommand.command("restore <file>").description("Restore Horus data from a b
1774
1800
  });
1775
1801
 
1776
1802
  // src/index.ts
1803
+ var require2 = createRequire(import.meta.url);
1804
+ var { version } = require2("../package.json");
1777
1805
  var program = new Command10();
1778
- program.name("horus").description("CLI for managing the Horus Docker Compose stack").version("0.1.0");
1806
+ program.name("horus").description("CLI for managing the Horus Docker Compose stack").version(version);
1779
1807
  program.addCommand(setupCommand);
1780
1808
  program.addCommand(upCommand);
1781
1809
  program.addCommand(downCommand);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arkhera30/cli",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "CLI for managing the Horus AI development stack",
5
5
  "type": "module",
6
6
  "bin": {