@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.
- package/dist/index.js +67 -5
- 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 =
|
|
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("");
|