@zincapp/znvault-cli 2.1.0

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 (122) hide show
  1. package/README.md +310 -0
  2. package/dist/commands/agent.d.ts +3 -0
  3. package/dist/commands/agent.d.ts.map +1 -0
  4. package/dist/commands/agent.js +660 -0
  5. package/dist/commands/agent.js.map +1 -0
  6. package/dist/commands/apikey.d.ts +3 -0
  7. package/dist/commands/apikey.d.ts.map +1 -0
  8. package/dist/commands/apikey.js +767 -0
  9. package/dist/commands/apikey.js.map +1 -0
  10. package/dist/commands/audit.d.ts +3 -0
  11. package/dist/commands/audit.d.ts.map +1 -0
  12. package/dist/commands/audit.js +147 -0
  13. package/dist/commands/audit.js.map +1 -0
  14. package/dist/commands/auth.d.ts +3 -0
  15. package/dist/commands/auth.d.ts.map +1 -0
  16. package/dist/commands/auth.js +426 -0
  17. package/dist/commands/auth.js.map +1 -0
  18. package/dist/commands/cert.d.ts +3 -0
  19. package/dist/commands/cert.d.ts.map +1 -0
  20. package/dist/commands/cert.js +398 -0
  21. package/dist/commands/cert.js.map +1 -0
  22. package/dist/commands/cluster.d.ts +3 -0
  23. package/dist/commands/cluster.d.ts.map +1 -0
  24. package/dist/commands/cluster.js +228 -0
  25. package/dist/commands/cluster.js.map +1 -0
  26. package/dist/commands/emergency.d.ts +3 -0
  27. package/dist/commands/emergency.d.ts.map +1 -0
  28. package/dist/commands/emergency.js +223 -0
  29. package/dist/commands/emergency.js.map +1 -0
  30. package/dist/commands/health.d.ts +3 -0
  31. package/dist/commands/health.d.ts.map +1 -0
  32. package/dist/commands/health.js +188 -0
  33. package/dist/commands/health.js.map +1 -0
  34. package/dist/commands/lockdown.d.ts +3 -0
  35. package/dist/commands/lockdown.d.ts.map +1 -0
  36. package/dist/commands/lockdown.js +232 -0
  37. package/dist/commands/lockdown.js.map +1 -0
  38. package/dist/commands/permissions.d.ts +3 -0
  39. package/dist/commands/permissions.d.ts.map +1 -0
  40. package/dist/commands/permissions.js +168 -0
  41. package/dist/commands/permissions.js.map +1 -0
  42. package/dist/commands/policy.d.ts +3 -0
  43. package/dist/commands/policy.d.ts.map +1 -0
  44. package/dist/commands/policy.js +660 -0
  45. package/dist/commands/policy.js.map +1 -0
  46. package/dist/commands/superadmin.d.ts +3 -0
  47. package/dist/commands/superadmin.d.ts.map +1 -0
  48. package/dist/commands/superadmin.js +203 -0
  49. package/dist/commands/superadmin.js.map +1 -0
  50. package/dist/commands/tenant.d.ts +3 -0
  51. package/dist/commands/tenant.d.ts.map +1 -0
  52. package/dist/commands/tenant.js +277 -0
  53. package/dist/commands/tenant.js.map +1 -0
  54. package/dist/commands/update.d.ts +9 -0
  55. package/dist/commands/update.d.ts.map +1 -0
  56. package/dist/commands/update.js +359 -0
  57. package/dist/commands/update.js.map +1 -0
  58. package/dist/commands/user.d.ts +3 -0
  59. package/dist/commands/user.d.ts.map +1 -0
  60. package/dist/commands/user.js +363 -0
  61. package/dist/commands/user.js.map +1 -0
  62. package/dist/index.d.ts +3 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +82 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/lib/client.d.ts +246 -0
  67. package/dist/lib/client.d.ts.map +1 -0
  68. package/dist/lib/client.js +734 -0
  69. package/dist/lib/client.js.map +1 -0
  70. package/dist/lib/config.d.ts +130 -0
  71. package/dist/lib/config.d.ts.map +1 -0
  72. package/dist/lib/config.js +342 -0
  73. package/dist/lib/config.js.map +1 -0
  74. package/dist/lib/db.d.ts +111 -0
  75. package/dist/lib/db.d.ts.map +1 -0
  76. package/dist/lib/db.js +698 -0
  77. package/dist/lib/db.js.map +1 -0
  78. package/dist/lib/local.d.ts +41 -0
  79. package/dist/lib/local.d.ts.map +1 -0
  80. package/dist/lib/local.js +236 -0
  81. package/dist/lib/local.js.map +1 -0
  82. package/dist/lib/mode.d.ts +210 -0
  83. package/dist/lib/mode.d.ts.map +1 -0
  84. package/dist/lib/mode.js +389 -0
  85. package/dist/lib/mode.js.map +1 -0
  86. package/dist/lib/output.d.ts +61 -0
  87. package/dist/lib/output.d.ts.map +1 -0
  88. package/dist/lib/output.js +190 -0
  89. package/dist/lib/output.js.map +1 -0
  90. package/dist/lib/prompts.d.ts +32 -0
  91. package/dist/lib/prompts.d.ts.map +1 -0
  92. package/dist/lib/prompts.js +96 -0
  93. package/dist/lib/prompts.js.map +1 -0
  94. package/dist/services/auto-update-daemon.d.ts +48 -0
  95. package/dist/services/auto-update-daemon.d.ts.map +1 -0
  96. package/dist/services/auto-update-daemon.js +296 -0
  97. package/dist/services/auto-update-daemon.js.map +1 -0
  98. package/dist/services/signature-verifier.d.ts +38 -0
  99. package/dist/services/signature-verifier.d.ts.map +1 -0
  100. package/dist/services/signature-verifier.js +209 -0
  101. package/dist/services/signature-verifier.js.map +1 -0
  102. package/dist/services/update-checker.d.ts +39 -0
  103. package/dist/services/update-checker.d.ts.map +1 -0
  104. package/dist/services/update-checker.js +198 -0
  105. package/dist/services/update-checker.js.map +1 -0
  106. package/dist/services/update-installer.d.ts +54 -0
  107. package/dist/services/update-installer.d.ts.map +1 -0
  108. package/dist/services/update-installer.js +360 -0
  109. package/dist/services/update-installer.js.map +1 -0
  110. package/dist/types/index.d.ts +411 -0
  111. package/dist/types/index.d.ts.map +1 -0
  112. package/dist/types/index.js +2 -0
  113. package/dist/types/index.js.map +1 -0
  114. package/dist/types/update.d.ts +137 -0
  115. package/dist/types/update.d.ts.map +1 -0
  116. package/dist/types/update.js +27 -0
  117. package/dist/types/update.js.map +1 -0
  118. package/dist/utils/platform.d.ts +35 -0
  119. package/dist/utils/platform.d.ts.map +1 -0
  120. package/dist/utils/platform.js +115 -0
  121. package/dist/utils/platform.js.map +1 -0
  122. package/package.json +59 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/lib/db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ interface LocalConfig {
2
+ databaseUrl: string;
3
+ databaseSsl: boolean;
4
+ nodeId?: string;
5
+ }
6
+ /**
7
+ * Check if we're running on a vault node
8
+ */
9
+ export declare function isVaultNode(): boolean;
10
+ /**
11
+ * Check if running as root (required to read service environment)
12
+ */
13
+ export declare function isRoot(): boolean;
14
+ /**
15
+ * Check if local mode is available and should be used
16
+ */
17
+ export declare function isLocalModeAvailable(): boolean;
18
+ /**
19
+ * Get local mode configuration
20
+ * Returns null if local mode is not available or properly configured
21
+ */
22
+ export declare function getLocalConfig(): LocalConfig | null;
23
+ /**
24
+ * Get the current vault version from VERSION file
25
+ */
26
+ export declare function getLocalVaultVersion(): string | null;
27
+ /**
28
+ * Check if the vault service is running
29
+ */
30
+ export declare function isVaultServiceRunning(): boolean;
31
+ /**
32
+ * Get a description of local mode status for display
33
+ */
34
+ export declare function getLocalModeStatus(): {
35
+ available: boolean;
36
+ reason?: string;
37
+ nodeId?: string;
38
+ vaultVersion?: string;
39
+ };
40
+ export {};
41
+ //# sourceMappingURL=local.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/lib/local.ts"],"names":[],"mappings":"AA2BA,UAAU,WAAW;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAMrC;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,OAAO,CAEhC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAQ9C;AAiED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CAwDnD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAUpD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAY/C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAqCA"}
@@ -0,0 +1,236 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ /**
4
+ * Local mode detection and configuration.
5
+ *
6
+ * When running on a vault node with sudo, the CLI can bypass API authentication
7
+ * and access the database directly. This is useful for:
8
+ * - Emergency operations when locked out
9
+ * - Administrative tasks without needing to configure credentials
10
+ * - Quick health checks and diagnostics
11
+ *
12
+ * Requirements for local mode:
13
+ * 1. Running on a vault node (detected by presence of /opt/znvault/current)
14
+ * 2. Running as root or with sudo (to read service environment)
15
+ * 3. DATABASE_URL available (from env or service config)
16
+ */
17
+ const VAULT_INSTALL_PATH = '/opt/znvault/current';
18
+ const SERVICE_ENV_PATHS = [
19
+ '/etc/znvault/env',
20
+ '/opt/zn-vault/.env', // Default systemd EnvironmentFile location
21
+ '/opt/znvault/.env',
22
+ '/opt/znvault/current/.env',
23
+ ];
24
+ const SYSTEMD_ENV_PATH = '/etc/systemd/system/zn-vault.service.d/env.conf';
25
+ /**
26
+ * Check if we're running on a vault node
27
+ */
28
+ export function isVaultNode() {
29
+ try {
30
+ return fs.existsSync(VAULT_INSTALL_PATH);
31
+ }
32
+ catch {
33
+ return false;
34
+ }
35
+ }
36
+ /**
37
+ * Check if running as root (required to read service environment)
38
+ */
39
+ export function isRoot() {
40
+ return process.getuid?.() === 0;
41
+ }
42
+ /**
43
+ * Check if local mode is available and should be used
44
+ */
45
+ export function isLocalModeAvailable() {
46
+ // Already have DATABASE_URL in env
47
+ if (process.env.DATABASE_URL) {
48
+ return true;
49
+ }
50
+ // On vault node with root access
51
+ return isVaultNode() && isRoot();
52
+ }
53
+ /**
54
+ * Parse environment file content into key-value pairs
55
+ */
56
+ function parseEnvFile(content) {
57
+ const env = {};
58
+ for (const line of content.split('\n')) {
59
+ const trimmed = line.trim();
60
+ // Skip comments and empty lines
61
+ if (!trimmed || trimmed.startsWith('#'))
62
+ continue;
63
+ // Handle systemd format: Environment="KEY=VALUE"
64
+ const systemdMatch = trimmed.match(/^Environment="?([^"=]+)=(.+?)"?$/);
65
+ if (systemdMatch) {
66
+ env[systemdMatch[1]] = systemdMatch[2].replace(/^["']|["']$/g, '');
67
+ continue;
68
+ }
69
+ // Handle standard format: KEY=VALUE or export KEY=VALUE
70
+ const match = trimmed.match(/^(?:export\s+)?([A-Z_][A-Z0-9_]*)=(.*)$/i);
71
+ if (match) {
72
+ let value = match[2];
73
+ // Remove surrounding quotes
74
+ value = value.replace(/^["']|["']$/g, '');
75
+ env[match[1]] = value;
76
+ }
77
+ }
78
+ return env;
79
+ }
80
+ /**
81
+ * Read environment from service configuration files
82
+ */
83
+ function readServiceEnv() {
84
+ const combined = {};
85
+ // Try each possible env file location
86
+ for (const envPath of SERVICE_ENV_PATHS) {
87
+ try {
88
+ if (fs.existsSync(envPath)) {
89
+ const content = fs.readFileSync(envPath, 'utf-8');
90
+ Object.assign(combined, parseEnvFile(content));
91
+ }
92
+ }
93
+ catch {
94
+ // Skip files we can't read
95
+ }
96
+ }
97
+ // Also try systemd environment override
98
+ try {
99
+ if (fs.existsSync(SYSTEMD_ENV_PATH)) {
100
+ const content = fs.readFileSync(SYSTEMD_ENV_PATH, 'utf-8');
101
+ Object.assign(combined, parseEnvFile(content));
102
+ }
103
+ }
104
+ catch {
105
+ // Skip if can't read
106
+ }
107
+ return combined;
108
+ }
109
+ /**
110
+ * Get local mode configuration
111
+ * Returns null if local mode is not available or properly configured
112
+ */
113
+ export function getLocalConfig() {
114
+ // First check if DATABASE_URL is already in environment
115
+ if (process.env.DATABASE_URL) {
116
+ return {
117
+ databaseUrl: process.env.DATABASE_URL,
118
+ databaseSsl: process.env.DATABASE_SSL === 'true',
119
+ nodeId: process.env.HA_NODE_ID,
120
+ };
121
+ }
122
+ // Not on a vault node
123
+ if (!isVaultNode()) {
124
+ return null;
125
+ }
126
+ // Need root to read service env
127
+ if (!isRoot()) {
128
+ return null;
129
+ }
130
+ // Read service environment
131
+ const serviceEnv = readServiceEnv();
132
+ // Inject service env vars into process.env for use by db.ts
133
+ if (serviceEnv.HA_ENABLED)
134
+ process.env.HA_ENABLED = serviceEnv.HA_ENABLED;
135
+ if (serviceEnv.HA_NODE_ID)
136
+ process.env.HA_NODE_ID = serviceEnv.HA_NODE_ID;
137
+ if (serviceEnv.REDIS_URL)
138
+ process.env.REDIS_URL = serviceEnv.REDIS_URL;
139
+ if (serviceEnv.REDIS_SENTINEL_NODES)
140
+ process.env.REDIS_SENTINEL_NODES = serviceEnv.REDIS_SENTINEL_NODES;
141
+ if (serviceEnv.REDIS_SENTINEL_MASTER)
142
+ process.env.REDIS_SENTINEL_MASTER = serviceEnv.REDIS_SENTINEL_MASTER;
143
+ // Check for DATABASE_URL
144
+ const databaseUrl = serviceEnv.DATABASE_URL;
145
+ if (!databaseUrl) {
146
+ // Try to construct from individual DB_* variables
147
+ const host = serviceEnv.DB_HOST || serviceEnv.POSTGRES_HOST;
148
+ const port = serviceEnv.DB_PORT || serviceEnv.POSTGRES_PORT || '5432';
149
+ const database = serviceEnv.DB_NAME || serviceEnv.POSTGRES_DB || 'znvault';
150
+ const user = serviceEnv.DB_USER || serviceEnv.POSTGRES_USER;
151
+ const password = serviceEnv.DB_PASSWORD || serviceEnv.POSTGRES_PASSWORD;
152
+ if (host && user && password) {
153
+ return {
154
+ databaseUrl: `postgres://${user}:${encodeURIComponent(password)}@${host}:${port}/${database}`,
155
+ databaseSsl: serviceEnv.DATABASE_SSL === 'true' || serviceEnv.DB_SSL === 'true',
156
+ nodeId: serviceEnv.HA_NODE_ID,
157
+ };
158
+ }
159
+ return null;
160
+ }
161
+ return {
162
+ databaseUrl,
163
+ databaseSsl: serviceEnv.DATABASE_SSL === 'true',
164
+ nodeId: serviceEnv.HA_NODE_ID,
165
+ };
166
+ }
167
+ /**
168
+ * Get the current vault version from VERSION file
169
+ */
170
+ export function getLocalVaultVersion() {
171
+ try {
172
+ const versionPath = path.join(VAULT_INSTALL_PATH, 'VERSION');
173
+ if (fs.existsSync(versionPath)) {
174
+ return fs.readFileSync(versionPath, 'utf-8').trim();
175
+ }
176
+ }
177
+ catch {
178
+ // Ignore errors
179
+ }
180
+ return null;
181
+ }
182
+ /**
183
+ * Check if the vault service is running
184
+ */
185
+ export function isVaultServiceRunning() {
186
+ try {
187
+ // Check if process is listening on expected port
188
+ const { execSync } = require('node:child_process');
189
+ const result = execSync('systemctl is-active zn-vault 2>/dev/null || true', {
190
+ encoding: 'utf-8',
191
+ timeout: 5000,
192
+ });
193
+ return result.trim() === 'active';
194
+ }
195
+ catch {
196
+ return false;
197
+ }
198
+ }
199
+ /**
200
+ * Get a description of local mode status for display
201
+ */
202
+ export function getLocalModeStatus() {
203
+ if (process.env.DATABASE_URL) {
204
+ return {
205
+ available: true,
206
+ reason: 'DATABASE_URL environment variable set',
207
+ nodeId: process.env.HA_NODE_ID,
208
+ };
209
+ }
210
+ if (!isVaultNode()) {
211
+ return {
212
+ available: false,
213
+ reason: 'Not running on a vault node (missing /opt/znvault/current)',
214
+ };
215
+ }
216
+ if (!isRoot()) {
217
+ return {
218
+ available: false,
219
+ reason: 'Local mode requires root access. Try: sudo znvault <command>',
220
+ };
221
+ }
222
+ const config = getLocalConfig();
223
+ if (!config) {
224
+ return {
225
+ available: false,
226
+ reason: 'Could not find DATABASE_URL in service configuration',
227
+ };
228
+ }
229
+ return {
230
+ available: true,
231
+ reason: 'Running on vault node with root access',
232
+ nodeId: config.nodeId,
233
+ vaultVersion: getLocalVaultVersion() || undefined,
234
+ };
235
+ }
236
+ //# sourceMappingURL=local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/lib/local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;;;;;;;;;;GAaG;AAEH,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAClD,MAAM,iBAAiB,GAAG;IACxB,kBAAkB;IAClB,oBAAoB,EAAS,2CAA2C;IACxE,mBAAmB;IACnB,2BAA2B;CAC5B,CAAC;AACF,MAAM,gBAAgB,GAAG,iDAAiD,CAAC;AAQ3E;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM;IACpB,OAAO,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,mCAAmC;IACnC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iCAAiC;IACjC,OAAO,WAAW,EAAE,IAAI,MAAM,EAAE,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,GAAG,GAA2B,EAAE,CAAC;IAEvC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,gCAAgC;QAChC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAElD,iDAAiD;QACjD,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACvE,IAAI,YAAY,EAAE,CAAC;YACjB,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YACnE,SAAS;QACX,CAAC;QAED,wDAAwD;QACxD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACxE,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACrB,4BAA4B;YAC5B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YAC1C,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,SAAS,cAAc;IACrB,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAE5C,sCAAsC;IACtC,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAClD,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,qBAAqB;IACvB,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,wDAAwD;IACxD,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC7B,OAAO;YACL,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;YACrC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,MAAM;YAChD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;SAC/B,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gCAAgC;IAChC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2BAA2B;IAC3B,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IAEpC,4DAA4D;IAC5D,IAAI,UAAU,CAAC,UAAU;QAAE,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IAC1E,IAAI,UAAU,CAAC,UAAU;QAAE,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IAC1E,IAAI,UAAU,CAAC,SAAS;QAAE,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;IACvE,IAAI,UAAU,CAAC,oBAAoB;QAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,UAAU,CAAC,oBAAoB,CAAC;IACxG,IAAI,UAAU,CAAC,qBAAqB;QAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,UAAU,CAAC,qBAAqB,CAAC;IAE3G,yBAAyB;IACzB,MAAM,WAAW,GAAG,UAAU,CAAC,YAAY,CAAC;IAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,kDAAkD;QAClD,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,aAAa,CAAC;QAC5D,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,aAAa,IAAI,MAAM,CAAC;QACtE,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,WAAW,IAAI,SAAS,CAAC;QAC3E,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,aAAa,CAAC;QAC5D,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,iBAAiB,CAAC;QAExE,IAAI,IAAI,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC7B,OAAO;gBACL,WAAW,EAAE,cAAc,IAAI,IAAI,kBAAkB,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,QAAQ,EAAE;gBAC7F,WAAW,EAAE,UAAU,CAAC,YAAY,KAAK,MAAM,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM;gBAC/E,MAAM,EAAE,UAAU,CAAC,UAAU;aAC9B,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,WAAW;QACX,WAAW,EAAE,UAAU,CAAC,YAAY,KAAK,MAAM;QAC/C,MAAM,EAAE,UAAU,CAAC,UAAU;KAC9B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gBAAgB;IAClB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,IAAI,CAAC;QACH,iDAAiD;QACjD,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,kDAAkD,EAAE;YAC1E,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAMhC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC7B,OAAO;YACL,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,uCAAuC;YAC/C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;SAC/B,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACnB,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,4DAA4D;SACrE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACd,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,8DAA8D;SACvE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,sDAAsD;SAC/D,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,wCAAwC;QAChD,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,YAAY,EAAE,oBAAoB,EAAE,IAAI,SAAS;KAClD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,210 @@
1
+ import type { HealthResponse, ClusterStatus, TenantWithUsage, TenantUsage, User, Superadmin, LockdownStatus, ThreatEvent, LockdownHistoryEntry, AuditEntry, AuditVerifyResult } from '../types/index.js';
2
+ /**
3
+ * Unified interface for CLI operations.
4
+ *
5
+ * This module provides a unified interface that automatically chooses between:
6
+ * - Local mode (direct database access) when running with sudo on a vault node
7
+ * - API mode (HTTP requests) when configured with credentials
8
+ *
9
+ * Local mode is preferred when available as it doesn't require authentication.
10
+ */
11
+ export type Mode = 'local' | 'api';
12
+ /**
13
+ * Force a specific mode (for testing)
14
+ */
15
+ export declare function setMode(mode: Mode | null): void;
16
+ /**
17
+ * Determine which mode to use
18
+ */
19
+ export declare function getMode(): Mode;
20
+ /**
21
+ * Check if any authentication is available for API mode
22
+ */
23
+ export declare function hasApiAuth(): boolean;
24
+ /**
25
+ * Get a description of current mode for display
26
+ */
27
+ export declare function getModeDescription(): string;
28
+ /**
29
+ * Close local client connection
30
+ */
31
+ export declare function closeLocalClient(): Promise<void>;
32
+ /**
33
+ * Health check
34
+ */
35
+ export declare function health(): Promise<HealthResponse>;
36
+ /**
37
+ * Leader health check (API only - local mode returns regular health)
38
+ */
39
+ export declare function leaderHealth(): Promise<HealthResponse>;
40
+ /**
41
+ * Cluster status
42
+ */
43
+ export declare function clusterStatus(): Promise<ClusterStatus>;
44
+ /**
45
+ * List tenants
46
+ */
47
+ export declare function listTenants(options?: {
48
+ status?: string;
49
+ withUsage?: boolean;
50
+ }): Promise<TenantWithUsage[]>;
51
+ /**
52
+ * Get tenant
53
+ */
54
+ export declare function getTenant(id: string, withUsage?: boolean): Promise<TenantWithUsage | null>;
55
+ /**
56
+ * Get tenant usage
57
+ */
58
+ export declare function getTenantUsage(id: string): Promise<TenantUsage>;
59
+ /**
60
+ * List users
61
+ */
62
+ export declare function listUsers(options?: {
63
+ tenantId?: string;
64
+ role?: string;
65
+ status?: string;
66
+ }): Promise<User[]>;
67
+ /**
68
+ * Get user
69
+ */
70
+ export declare function getUser(id: string): Promise<User | null>;
71
+ /**
72
+ * List superadmins
73
+ */
74
+ export declare function listSuperadmins(): Promise<Superadmin[]>;
75
+ /**
76
+ * Get lockdown status
77
+ */
78
+ export declare function getLockdownStatus(): Promise<LockdownStatus>;
79
+ /**
80
+ * Get lockdown history
81
+ */
82
+ export declare function getLockdownHistory(limit?: number): Promise<LockdownHistoryEntry[]>;
83
+ /**
84
+ * Get threat events
85
+ */
86
+ export declare function getThreats(options?: {
87
+ category?: string;
88
+ since?: string;
89
+ limit?: number;
90
+ }): Promise<ThreatEvent[]>;
91
+ /**
92
+ * List audit entries
93
+ */
94
+ export declare function listAudit(options?: {
95
+ user?: string;
96
+ action?: string;
97
+ startDate?: string;
98
+ endDate?: string;
99
+ limit?: number;
100
+ }): Promise<AuditEntry[]>;
101
+ /**
102
+ * Verify audit chain
103
+ */
104
+ export declare function verifyAuditChain(): Promise<AuditVerifyResult>;
105
+ /**
106
+ * Test database connection (local mode only)
107
+ */
108
+ export declare function testConnection(): Promise<{
109
+ success: boolean;
110
+ message: string;
111
+ }>;
112
+ /**
113
+ * Get user status (local mode only returns full status)
114
+ */
115
+ export declare function getUserStatus(username: string): Promise<{
116
+ found: boolean;
117
+ user?: {
118
+ id: string;
119
+ username: string;
120
+ email: string | null;
121
+ role: string;
122
+ status: string;
123
+ totpEnabled: boolean;
124
+ failedAttempts: number;
125
+ lockedUntil: string | null;
126
+ lastLogin: string | null;
127
+ };
128
+ }>;
129
+ /**
130
+ * Reset user password (local mode only)
131
+ */
132
+ export declare function resetPassword(username: string, newPassword: string): Promise<{
133
+ success: boolean;
134
+ message: string;
135
+ }>;
136
+ /**
137
+ * Unlock user (local mode only)
138
+ */
139
+ export declare function unlockUser(username: string): Promise<{
140
+ success: boolean;
141
+ message: string;
142
+ }>;
143
+ /**
144
+ * Disable TOTP (local mode only)
145
+ */
146
+ export declare function disableTotp(username: string): Promise<{
147
+ success: boolean;
148
+ message: string;
149
+ }>;
150
+ /**
151
+ * Trigger lockdown (API only - requires authenticated admin action)
152
+ */
153
+ export declare function triggerLockdown(level: 1 | 2 | 3 | 4, reason: string): Promise<{
154
+ success: boolean;
155
+ status: string;
156
+ }>;
157
+ /**
158
+ * Clear lockdown (API only - requires authenticated admin action)
159
+ */
160
+ export declare function clearLockdown(reason: string): Promise<{
161
+ success: boolean;
162
+ previousStatus: string;
163
+ }>;
164
+ /**
165
+ * Cluster takeover (API only)
166
+ */
167
+ export declare function clusterTakeover(): Promise<{
168
+ success: boolean;
169
+ message: string;
170
+ nodeId: string;
171
+ }>;
172
+ /**
173
+ * Cluster release (API only)
174
+ */
175
+ export declare function clusterRelease(): Promise<{
176
+ success: boolean;
177
+ message: string;
178
+ }>;
179
+ /**
180
+ * Cluster maintenance mode (API only)
181
+ */
182
+ export declare function clusterMaintenance(enable: boolean): Promise<{
183
+ success: boolean;
184
+ maintenanceMode: boolean;
185
+ }>;
186
+ /**
187
+ * Generic GET request (API mode only)
188
+ */
189
+ export declare function apiGet<T = unknown>(endpoint: string): Promise<T>;
190
+ /**
191
+ * Generic POST request (API mode only)
192
+ */
193
+ export declare function apiPost<T = unknown>(endpoint: string, body: unknown): Promise<T>;
194
+ /**
195
+ * Generic DELETE request (API mode only)
196
+ */
197
+ export declare function apiDelete<T = unknown>(endpoint: string): Promise<T>;
198
+ /**
199
+ * Generic PATCH request (API mode only)
200
+ */
201
+ export declare function apiPatch<T = unknown>(endpoint: string, body: unknown): Promise<T>;
202
+ /**
203
+ * Get WebSocket URL for a given endpoint path
204
+ */
205
+ export declare function getWebSocketUrl(wsPath: string): Promise<string>;
206
+ /**
207
+ * Get authentication headers for WebSocket connection
208
+ */
209
+ export declare function getAuthHeaders(): Promise<Record<string, string>>;
210
+ //# sourceMappingURL=mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode.d.ts","sourceRoot":"","sources":["../../src/lib/mode.ts"],"names":[],"mappings":"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"}