@arkhera30/cli 0.3.10 → 0.3.12

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 +67 -5
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -54,8 +54,12 @@ var DEFAULT_PORTS = {
54
54
  ui: 8400,
55
55
  // horus-ui — user-facing web interface
56
56
  forge: 8200,
57
- typesense: 8108
57
+ typesense: 8108,
58
58
  // Typesense search engine
59
+ neo4j_http: 7474,
60
+ // Neo4j Browser / HTTP API
61
+ neo4j_bolt: 7687
62
+ // Neo4j Bolt protocol
59
63
  };
60
64
  var DEFAULT_DATA_DIR = join(homedir(), "Horus", "data");
61
65
  var SERVICES = [
@@ -65,7 +69,8 @@ var SERVICES = [
65
69
  "vault-mcp",
66
70
  "forge",
67
71
  "horus-ui",
68
- "typesense"
72
+ "typesense",
73
+ "neo4j"
69
74
  ];
70
75
  var CONFIG_VERSION = "1.0";
71
76
 
@@ -135,7 +140,9 @@ function buildConfigFromParsed(parsed) {
135
140
  vault_mcp: parsedPorts?.vault_mcp ?? defaults.ports.vault_mcp,
136
141
  vault_router: parsedPorts?.vault_router ?? defaults.ports.vault_router,
137
142
  forge: parsedPorts?.forge ?? defaults.ports.forge,
138
- typesense: parsedPorts?.typesense ?? defaults.ports.typesense
143
+ typesense: parsedPorts?.typesense ?? defaults.ports.typesense,
144
+ neo4j_http: parsedPorts?.neo4j_http ?? defaults.ports.neo4j_http,
145
+ neo4j_bolt: parsedPorts?.neo4j_bolt ?? defaults.ports.neo4j_bolt
139
146
  },
140
147
  repos: {
141
148
  anvil_notes: repos?.anvil_notes ?? defaults.repos.anvil_notes,
@@ -236,6 +243,8 @@ function generateEnv(config) {
236
243
  `VAULT_ROUTER_PORT=${config.ports.vault_router}`,
237
244
  `FORGE_PORT=${config.ports.forge}`,
238
245
  `TYPESENSE_PORT=${config.ports.typesense}`,
246
+ `NEO4J_HTTP_PORT=${config.ports.neo4j_http}`,
247
+ `NEO4J_BOLT_PORT=${config.ports.neo4j_bolt}`,
239
248
  "",
240
249
  "# Search",
241
250
  `TYPESENSE_API_KEY=${config.search.api_key}`,
@@ -684,6 +693,38 @@ var FORGE_SERVICE = ` # \u2500\u2500 Forge \u2500\u2500\u2500\u2500\u2500\u2500
684
693
  timeout: 5s
685
694
  start_period: 60s
686
695
  retries: 3`;
696
+ var NEO4J_SERVICE = ` # \u2500\u2500 Neo4j \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
697
+ # Graph database for relationship-aware knowledge queries.
698
+ neo4j:
699
+ image: neo4j:5-community
700
+ ports:
701
+ - "\${NEO4J_HTTP_PORT:-7474}:7474"
702
+ - "\${NEO4J_BOLT_PORT:-7687}:7687"
703
+ volumes:
704
+ - neo4j-data:/data
705
+ - neo4j-logs:/logs
706
+ environment:
707
+ - NEO4J_AUTH=neo4j/horus-neo4j
708
+ - NEO4J_server_memory_heap_initial__size=256m
709
+ - NEO4J_server_memory_heap_max__size=512m
710
+ - NEO4J_server_memory_pagecache_size=256m
711
+ - NEO4J_PLUGINS=[]
712
+ networks:
713
+ - horus-net
714
+ restart: unless-stopped
715
+ stop_grace_period: 30s
716
+ deploy:
717
+ resources:
718
+ limits:
719
+ memory: 1g
720
+ reservations:
721
+ memory: 512m
722
+ healthcheck:
723
+ test: ["CMD", "wget", "--spider", "-q", "http://localhost:7474"]
724
+ interval: 30s
725
+ timeout: 10s
726
+ start_period: 60s
727
+ retries: 3`;
687
728
  var TYPESENSE_SERVICE = ` # \u2500\u2500 Typesense \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
688
729
  # Full-text and vector search engine for unified Horus Search.
689
730
  typesense:
@@ -804,6 +845,14 @@ services:
804
845
  horus-ui:
805
846
  ports:
806
847
  - "\${TEST_PORT_UI:-9260}:8400"
848
+
849
+ neo4j:
850
+ ports:
851
+ - "\${TEST_PORT_NEO4J_HTTP:-9474}:7474"
852
+ - "\${TEST_PORT_NEO4J_BOLT:-9687}:7687"
853
+ volumes:
854
+ - "\${TEST_DATA_PATH:-/tmp/horus-test}/neo4j-data:/data"
855
+ - "\${TEST_DATA_PATH:-/tmp/horus-test}/neo4j-logs:/logs"
807
856
  `;
808
857
  }
809
858
  function generateComposeFile(config, runtime) {
@@ -837,9 +886,14 @@ function generateComposeFile(config, runtime) {
837
886
  - TYPESENSE_HOST=typesense
838
887
  - TYPESENSE_PORT=8108
839
888
  - TYPESENSE_API_KEY=\${TYPESENSE_API_KEY:-horus-local-key}
889
+ - NEO4J_URI=bolt://neo4j:7687
890
+ - NEO4J_USER=neo4j
891
+ - NEO4J_PASSWORD=horus-neo4j
840
892
  depends_on:
841
893
  typesense:
842
894
  condition: service_healthy
895
+ neo4j:
896
+ condition: service_healthy
843
897
  networks:
844
898
  - horus-net
845
899
  restart: unless-stopped
@@ -917,7 +971,11 @@ ${vaultRouterDependsOn}
917
971
  timeout: 5s
918
972
  start_period: 30s
919
973
  retries: 3`;
920
- const vaultVolumeEntries = vaultEntries.map(([name]) => ` vault-${name}-workspace:`).join("\n");
974
+ const vaultVolumeEntries = [
975
+ ...vaultEntries.map(([name]) => ` vault-${name}-workspace:`),
976
+ " neo4j-data:",
977
+ " neo4j-logs:"
978
+ ].join("\n");
921
979
  const sections = [
922
980
  "# \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",
923
981
  "# Horus \u2014 Generated Docker Compose",
@@ -936,6 +994,8 @@ ${vaultRouterDependsOn}
936
994
  "",
937
995
  FORGE_SERVICE,
938
996
  "",
997
+ NEO4J_SERVICE,
998
+ "",
939
999
  TYPESENSE_SERVICE,
940
1000
  "",
941
1001
  ...config.enable_ui !== false ? [HORUS_UI_SERVICE, ""] : [],
@@ -1433,7 +1493,9 @@ var setupCommand = new Command2("setup").description("Interactive first-run setu
1433
1493
  vault_mcp: vault_mcp ?? DEFAULT_PORTS.vault_mcp,
1434
1494
  vault_router: vault_router ?? DEFAULT_PORTS.vault_router,
1435
1495
  forge: forge ?? DEFAULT_PORTS.forge,
1436
- typesense: DEFAULT_PORTS.typesense
1496
+ typesense: DEFAULT_PORTS.typesense,
1497
+ neo4j_http: DEFAULT_PORTS.neo4j_http,
1498
+ neo4j_bolt: DEFAULT_PORTS.neo4j_bolt
1437
1499
  };
1438
1500
  }
1439
1501
  console.log("");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arkhera30/cli",
3
- "version": "0.3.10",
3
+ "version": "0.3.12",
4
4
  "description": "CLI for managing the Horus AI development stack",
5
5
  "type": "module",
6
6
  "bin": {