@arkhera30/cli 0.3.1 → 0.3.3

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.
Files changed (2) hide show
  1. package/dist/index.js +70 -0
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -43,6 +43,7 @@ var LEGACY_HORUS_DIR = join(homedir(), ".horus");
43
43
  var CONFIG_PATH = join(HORUS_DIR, "config.yaml");
44
44
  var ENV_PATH = join(HORUS_DIR, ".env");
45
45
  var COMPOSE_PATH = join(HORUS_DIR, "docker-compose.yml");
46
+ var COMPOSE_TEST_PATH = join(HORUS_DIR, "docker-compose.test.yml");
46
47
  var DEFAULT_PORTS = {
47
48
  anvil: 8100,
48
49
  vault_rest: 8e3,
@@ -725,6 +726,63 @@ var HORUS_UI_SERVICE = ` # \u2500\u2500 Horus UI \u2500\u2500\u2500\u2500\u2500
725
726
  timeout: 5s
726
727
  start_period: 30s
727
728
  retries: 3`;
729
+ var TEST_COMPOSE_CONTENT = `# \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
730
+ # Horus \u2014 Shadow Stack Overlay for Integration Testing
731
+ # \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
732
+ # Usage (managed by \`horus test-env acquire\`):
733
+ #
734
+ # docker compose \\
735
+ # -p horus-test-0 \\
736
+ # -f ~/Horus/docker-compose.yml \\
737
+ # -f ~/Horus/docker-compose.test.yml \\
738
+ # up -d
739
+ #
740
+ # All TEST_PORT_* and TEST_DATA_PATH are set by \`horus test-env acquire\`.
741
+ # Slot 0 defaults: ports 9100-9399, data at ~/Horus/data/test-env/slot-0/
742
+ #
743
+ # NOTE: vault-personal is assumed as the primary vault name. If your config
744
+ # uses a different vault name, set TEST_VAULT_NAME accordingly.
745
+ # \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
746
+
747
+ services:
748
+ anvil:
749
+ ports:
750
+ - "\${TEST_PORT_ANVIL:-9100}:8100"
751
+ volumes:
752
+ - "\${TEST_DATA_PATH:-/tmp/horus-test}/notes:/data/notes:rw"
753
+
754
+ vault-personal:
755
+ ports:
756
+ - "\${TEST_PORT_VAULT_SVC:-9101}:8000"
757
+ volumes:
758
+ - "\${TEST_DATA_PATH:-/tmp/horus-test}/vaults/personal:/data/knowledge-repo:rw"
759
+
760
+ vault-router:
761
+ ports:
762
+ - "\${TEST_PORT_VAULT_ROUTER:-9150}:8400"
763
+
764
+ vault-mcp:
765
+ ports:
766
+ - "\${TEST_PORT_VAULT_MCP:-9200}:8300"
767
+
768
+ forge:
769
+ ports:
770
+ - "\${TEST_PORT_FORGE:-9250}:8200"
771
+ volumes:
772
+ - "\${TEST_DATA_PATH:-/tmp/horus-test}/registry:/data/registry:rw"
773
+ - "\${TEST_DATA_PATH:-/tmp/horus-test}/workspaces:/data/workspaces:rw"
774
+ - "\${TEST_DATA_PATH:-/tmp/horus-test}/sessions:/data/sessions:rw"
775
+
776
+ typesense:
777
+ ports:
778
+ - "\${TEST_PORT_TYPESENSE:-9108}:8108"
779
+ volumes:
780
+ - "\${TEST_DATA_PATH:-/tmp/horus-test}/typesense-data:/data"
781
+
782
+ horus-ui:
783
+ ports:
784
+ - "\${TEST_PORT_UI:-9260}:8400"
785
+ `;
728
786
  function generateComposeFile(config, runtime) {
729
787
  const vaultEntries = Object.entries(config.vaults).sort(([a], [b]) => a.localeCompare(b));
730
788
  const vaultServices = vaultEntries.map(([name, vault], index) => {
@@ -874,6 +932,7 @@ function installComposeFile(config, runtime) {
874
932
  ensureHorusDir();
875
933
  const content = generateComposeFile(config, runtime);
876
934
  writeFileSync2(COMPOSE_PATH, content, "utf-8");
935
+ writeFileSync2(COMPOSE_TEST_PATH, TEST_COMPOSE_CONTENT, "utf-8");
877
936
  }
878
937
 
879
938
  // src/commands/connect.ts
@@ -2800,6 +2859,17 @@ function buildComposeEnv(runtime, ports, slotDataPath) {
2800
2859
  ...process.env,
2801
2860
  HORUS_RUNTIME: runtime.name,
2802
2861
  TEST_DATA_PATH: slotDataPath,
2862
+ // Override base compose port variables so the base file binds to test ports.
2863
+ // Without these, Docker Compose merges (appends) the ports lists from both
2864
+ // files, causing both the production port (e.g. 8100) and the test port
2865
+ // (e.g. 9100) to be bound — failing if the production stack is already up.
2866
+ ANVIL_PORT: String(ports.anvil),
2867
+ FORGE_PORT: String(ports.forge),
2868
+ VAULT_MCP_PORT: String(ports.vault_mcp),
2869
+ VAULT_ROUTER_PORT: String(ports.vault_router),
2870
+ VAULT_REST_PORT_PERSONAL: String(ports.vault_svc),
2871
+ TYPESENSE_PORT: String(ports.typesense),
2872
+ // TEST_PORT_* vars for overlay reference (harmless duplicates after above fix)
2803
2873
  TEST_PORT_ANVIL: String(ports.anvil),
2804
2874
  TEST_PORT_TYPESENSE: String(ports.typesense),
2805
2875
  TEST_PORT_VAULT_SVC: String(ports.vault_svc),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arkhera30/cli",
3
- "version": "0.3.1",
3
+ "version": "0.3.3",
4
4
  "description": "CLI for managing the Horus AI development stack",
5
5
  "type": "module",
6
6
  "bin": {