@arkhera30/cli 0.2.1 → 0.2.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.
- package/dist/index.js +50 -5
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -48,8 +48,10 @@ var DEFAULT_PORTS = {
|
|
|
48
48
|
vault_rest: 8e3,
|
|
49
49
|
// keep for individual vault instances
|
|
50
50
|
vault_mcp: 8300,
|
|
51
|
-
vault_router:
|
|
52
|
-
//
|
|
51
|
+
vault_router: 8050,
|
|
52
|
+
// internal routing layer
|
|
53
|
+
ui: 8400,
|
|
54
|
+
// horus-ui — user-facing web interface
|
|
53
55
|
forge: 8200
|
|
54
56
|
};
|
|
55
57
|
var DEFAULT_DATA_DIR = join(homedir(), "Horus", "data");
|
|
@@ -59,7 +61,8 @@ var SERVICES = [
|
|
|
59
61
|
"vault-router",
|
|
60
62
|
// replaces 'vault'
|
|
61
63
|
"vault-mcp",
|
|
62
|
-
"forge"
|
|
64
|
+
"forge",
|
|
65
|
+
"horus-ui"
|
|
63
66
|
];
|
|
64
67
|
var CONFIG_VERSION = "1.0";
|
|
65
68
|
|
|
@@ -657,6 +660,46 @@ var FORGE_SERVICE = ` # \u2500\u2500 Forge \u2500\u2500\u2500\u2500\u2500\u2500
|
|
|
657
660
|
timeout: 5s
|
|
658
661
|
start_period: 60s
|
|
659
662
|
retries: 3`;
|
|
663
|
+
var HORUS_UI_SERVICE = ` # \u2500\u2500 Horus UI \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
|
|
664
|
+
# Web interface \u2014 React SPA served by Express proxy on port 8400.
|
|
665
|
+
# Proxies /api/anvil, /api/vault, /api/forge to the respective services.
|
|
666
|
+
# Stores dashboard configs and preferences in _system/ui/ (not indexed by Anvil).
|
|
667
|
+
horus-ui:
|
|
668
|
+
image: ghcr.io/arjunkhera/horus/horus-ui:latest
|
|
669
|
+
ports:
|
|
670
|
+
- "\${UI_PORT:-8400}:8400"
|
|
671
|
+
volumes:
|
|
672
|
+
- \${HORUS_DATA_PATH}/notes:/data/notes:rw
|
|
673
|
+
environment:
|
|
674
|
+
- PORT=8400
|
|
675
|
+
- HORUS_DATA_PATH=/data/notes
|
|
676
|
+
- ANVIL_URL=http://anvil:8100
|
|
677
|
+
- VAULT_URL=http://vault-mcp:8300
|
|
678
|
+
- FORGE_URL=http://forge:8200
|
|
679
|
+
- NODE_ENV=production
|
|
680
|
+
depends_on:
|
|
681
|
+
anvil:
|
|
682
|
+
condition: service_healthy
|
|
683
|
+
vault-mcp:
|
|
684
|
+
condition: service_healthy
|
|
685
|
+
forge:
|
|
686
|
+
condition: service_healthy
|
|
687
|
+
networks:
|
|
688
|
+
- horus-net
|
|
689
|
+
restart: unless-stopped
|
|
690
|
+
stop_grace_period: 10s
|
|
691
|
+
deploy:
|
|
692
|
+
resources:
|
|
693
|
+
limits:
|
|
694
|
+
memory: 256m
|
|
695
|
+
reservations:
|
|
696
|
+
memory: 64m
|
|
697
|
+
healthcheck:
|
|
698
|
+
test: ["CMD", "curl", "-f", "http://localhost:8400/api/health"]
|
|
699
|
+
interval: 30s
|
|
700
|
+
timeout: 5s
|
|
701
|
+
start_period: 30s
|
|
702
|
+
retries: 3`;
|
|
660
703
|
function generateComposeFile(config, runtime) {
|
|
661
704
|
const vaultEntries = Object.entries(config.vaults).sort(([a], [b]) => a.localeCompare(b));
|
|
662
705
|
const vaultServices = vaultEntries.map(([name, vault], index) => {
|
|
@@ -717,7 +760,7 @@ function generateComposeFile(config, runtime) {
|
|
|
717
760
|
vault-router:
|
|
718
761
|
image: ghcr.io/arjunkhera/horus/vault-router:latest
|
|
719
762
|
ports:
|
|
720
|
-
- "\${VAULT_ROUTER_PORT:-
|
|
763
|
+
- "\${VAULT_ROUTER_PORT:-8050}:8400"
|
|
721
764
|
environment:
|
|
722
765
|
- VAULT_ENDPOINTS=${vaultEndpoints}
|
|
723
766
|
- VAULT_DEFAULT=${defaultVaultName}
|
|
@@ -733,7 +776,7 @@ ${vaultRouterDependsOn}
|
|
|
733
776
|
reservations:
|
|
734
777
|
memory: 64m
|
|
735
778
|
healthcheck:
|
|
736
|
-
test: ["CMD", "
|
|
779
|
+
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8400/health')"]
|
|
737
780
|
interval: 30s
|
|
738
781
|
timeout: 10s
|
|
739
782
|
start_period: 30s
|
|
@@ -789,6 +832,8 @@ ${vaultRouterDependsOn}
|
|
|
789
832
|
"",
|
|
790
833
|
FORGE_SERVICE,
|
|
791
834
|
"",
|
|
835
|
+
HORUS_UI_SERVICE,
|
|
836
|
+
"",
|
|
792
837
|
"# \u2500\u2500 Networks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",
|
|
793
838
|
"networks:",
|
|
794
839
|
" horus-net:",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arkhera30/cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"description": "CLI for managing the Horus AI development stack",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"@types/node": "^20.0.0",
|
|
25
25
|
"tsup": "^8.0.0",
|
|
26
26
|
"typescript": "^5.4.0",
|
|
27
|
+
"vite": "^6.0.0",
|
|
27
28
|
"vitest": "^4.0.18"
|
|
28
29
|
},
|
|
29
30
|
"engines": {
|