@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,232 @@
1
+ import ora from 'ora';
2
+ import { client } from '../lib/client.js';
3
+ import * as mode from '../lib/mode.js';
4
+ import { promptConfirm } from '../lib/prompts.js';
5
+ import * as output from '../lib/output.js';
6
+ export function registerLockdownCommands(program) {
7
+ const lockdown = program
8
+ .command('lockdown')
9
+ .description('Lockdown and breach detection commands');
10
+ // Lockdown status
11
+ lockdown
12
+ .command('status')
13
+ .description('Show current lockdown status')
14
+ .option('--json', 'Output as JSON')
15
+ .action(async (options) => {
16
+ const spinner = ora('Getting lockdown status...').start();
17
+ try {
18
+ const status = await mode.getLockdownStatus();
19
+ spinner.stop();
20
+ if (options.json) {
21
+ output.json(status);
22
+ return;
23
+ }
24
+ output.section('Lockdown Status');
25
+ const statusDisplay = {
26
+ 'Scope': status.scope,
27
+ 'Status': output.formatStatus(status.status),
28
+ 'Tenant': status.tenantId || 'N/A (System)',
29
+ 'Reason': status.reason || '-',
30
+ 'Triggered At': status.triggeredAt ? output.formatDate(status.triggeredAt) : '-',
31
+ 'Triggered By': status.triggeredBy || '-',
32
+ 'Escalation Count': status.escalationCount,
33
+ };
34
+ output.keyValue(statusDisplay);
35
+ if (status.metrics) {
36
+ output.section('Threat Metrics');
37
+ output.keyValue({
38
+ 'Auth Failures': status.metrics.authFailures,
39
+ 'API Abuse': status.metrics.apiAbuse,
40
+ 'Permission Violations': status.metrics.permissionViolations,
41
+ });
42
+ }
43
+ console.log();
44
+ }
45
+ catch (err) {
46
+ spinner.fail('Failed to get lockdown status');
47
+ output.error(err instanceof Error ? err.message : String(err));
48
+ process.exit(1);
49
+ }
50
+ finally {
51
+ await mode.closeLocalClient();
52
+ }
53
+ });
54
+ // Trigger lockdown (API only)
55
+ lockdown
56
+ .command('trigger <level> <reason>')
57
+ .description('Manually trigger a lockdown (level 1-4)')
58
+ .option('-y, --yes', 'Skip confirmation')
59
+ .action(async (level, reason, options) => {
60
+ if (mode.getMode() === 'local') {
61
+ output.error('Lockdown trigger requires API mode with authentication');
62
+ output.info('Use: znvault login first, or set ZNVAULT_API_KEY');
63
+ process.exit(1);
64
+ }
65
+ const levelNum = parseInt(level, 10);
66
+ if (isNaN(levelNum) || levelNum < 1 || levelNum > 4) {
67
+ output.error('Level must be between 1 and 4');
68
+ output.info(' Level 1: ALERT - Increased monitoring');
69
+ output.info(' Level 2: RESTRICT - Limited functionality');
70
+ output.info(' Level 3: LOCKDOWN - Most operations blocked');
71
+ output.info(' Level 4: PANIC - Full system lockdown');
72
+ process.exit(1);
73
+ }
74
+ try {
75
+ if (!options.yes) {
76
+ const levelNames = ['', 'ALERT', 'RESTRICT', 'LOCKDOWN', 'PANIC'];
77
+ const confirmed = await promptConfirm(`Are you sure you want to trigger ${levelNames[levelNum]} (level ${levelNum})?`);
78
+ if (!confirmed) {
79
+ output.info('Cancelled');
80
+ return;
81
+ }
82
+ }
83
+ const spinner = ora('Triggering lockdown...').start();
84
+ try {
85
+ const result = await client.triggerLockdown(levelNum, reason);
86
+ spinner.succeed('Lockdown triggered');
87
+ output.keyValue({
88
+ 'Success': result.success,
89
+ 'New Status': result.status,
90
+ });
91
+ }
92
+ catch (err) {
93
+ spinner.fail('Failed to trigger lockdown');
94
+ throw err;
95
+ }
96
+ }
97
+ catch (err) {
98
+ output.error(err instanceof Error ? err.message : String(err));
99
+ process.exit(1);
100
+ }
101
+ });
102
+ // Clear lockdown (API only)
103
+ lockdown
104
+ .command('clear <reason>')
105
+ .description('Clear the current lockdown')
106
+ .option('-y, --yes', 'Skip confirmation')
107
+ .action(async (reason, options) => {
108
+ if (mode.getMode() === 'local') {
109
+ output.error('Lockdown clear requires API mode with authentication');
110
+ output.info('Use: znvault login first, or set ZNVAULT_API_KEY');
111
+ process.exit(1);
112
+ }
113
+ try {
114
+ if (!options.yes) {
115
+ const confirmed = await promptConfirm('Are you sure you want to clear the lockdown?');
116
+ if (!confirmed) {
117
+ output.info('Cancelled');
118
+ return;
119
+ }
120
+ }
121
+ const spinner = ora('Clearing lockdown...').start();
122
+ try {
123
+ const result = await client.clearLockdown(reason);
124
+ spinner.succeed('Lockdown cleared');
125
+ output.keyValue({
126
+ 'Success': result.success,
127
+ 'Previous Status': result.previousStatus,
128
+ });
129
+ }
130
+ catch (err) {
131
+ spinner.fail('Failed to clear lockdown');
132
+ throw err;
133
+ }
134
+ }
135
+ catch (err) {
136
+ output.error(err instanceof Error ? err.message : String(err));
137
+ process.exit(1);
138
+ }
139
+ });
140
+ // Lockdown history
141
+ lockdown
142
+ .command('history')
143
+ .description('Show lockdown history')
144
+ .option('--limit <number>', 'Number of entries to show', '50')
145
+ .option('--json', 'Output as JSON')
146
+ .action(async (options) => {
147
+ const spinner = ora('Fetching lockdown history...').start();
148
+ try {
149
+ const history = await mode.getLockdownHistory(parseInt(options.limit, 10));
150
+ spinner.stop();
151
+ if (options.json) {
152
+ output.json(history);
153
+ return;
154
+ }
155
+ if (history.length === 0) {
156
+ output.info('No lockdown history found');
157
+ return;
158
+ }
159
+ output.table(['Time', 'Previous', 'New', 'Reason', 'By'], history.map(h => [
160
+ output.formatRelativeTime(h.ts),
161
+ h.previousStatus,
162
+ h.newStatus,
163
+ (h.transitionReason || '-').substring(0, 40),
164
+ h.changedBySystem ? 'System' : (h.changedByUserId?.substring(0, 8) || '-'),
165
+ ]));
166
+ output.info(`Showing ${history.length} entries`);
167
+ }
168
+ catch (err) {
169
+ spinner.fail('Failed to get lockdown history');
170
+ output.error(err instanceof Error ? err.message : String(err));
171
+ process.exit(1);
172
+ }
173
+ finally {
174
+ await mode.closeLocalClient();
175
+ }
176
+ });
177
+ // List threats
178
+ lockdown
179
+ .command('threats')
180
+ .description('List recent threat events')
181
+ .option('--category <cat>', 'Filter by category')
182
+ .option('--since <date>', 'Show threats since date (ISO format)')
183
+ .option('--limit <number>', 'Number of entries to show', '100')
184
+ .option('--json', 'Output as JSON')
185
+ .action(async (options) => {
186
+ const spinner = ora('Fetching threats...').start();
187
+ try {
188
+ const threats = await mode.getThreats({
189
+ category: options.category,
190
+ since: options.since,
191
+ limit: parseInt(options.limit, 10),
192
+ });
193
+ spinner.stop();
194
+ if (options.json) {
195
+ output.json(threats);
196
+ return;
197
+ }
198
+ if (threats.length === 0) {
199
+ output.info('No threats found');
200
+ return;
201
+ }
202
+ output.table(['Time', 'Category', 'Signal', 'IP', 'Endpoint', 'Level', 'Escalated'], threats.map(t => [
203
+ output.formatRelativeTime(t.ts),
204
+ t.category,
205
+ t.signal.substring(0, 20),
206
+ t.ip,
207
+ t.endpoint.substring(0, 25),
208
+ t.suggestedLevel,
209
+ t.escalated,
210
+ ]));
211
+ output.info(`Showing ${threats.length} threats`);
212
+ // Show category summary
213
+ const categories = threats.reduce((acc, t) => {
214
+ acc[t.category] = (acc[t.category] || 0) + 1;
215
+ return acc;
216
+ }, {});
217
+ if (Object.keys(categories).length > 1) {
218
+ output.section('By Category');
219
+ output.keyValue(categories);
220
+ }
221
+ }
222
+ catch (err) {
223
+ spinner.fail('Failed to get threats');
224
+ output.error(err instanceof Error ? err.message : String(err));
225
+ process.exit(1);
226
+ }
227
+ finally {
228
+ await mode.closeLocalClient();
229
+ }
230
+ });
231
+ }
232
+ //# sourceMappingURL=lockdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lockdown.js","sourceRoot":"","sources":["../../src/commands/lockdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerPermissionsCommands(program: Command): void;
3
+ //# sourceMappingURL=permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/commands/permissions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmLlE"}
@@ -0,0 +1,168 @@
1
+ // Path: znvault-cli/src/commands/permissions.ts
2
+ // Permissions commands - list and validate permissions from the API
3
+ import ora from 'ora';
4
+ import chalk from 'chalk';
5
+ import { client } from '../lib/client.js';
6
+ import * as output from '../lib/output.js';
7
+ export function registerPermissionsCommands(program) {
8
+ const perms = program
9
+ .command('permissions')
10
+ .alias('perm')
11
+ .description('Manage and view available permissions');
12
+ // List permissions
13
+ perms
14
+ .command('list')
15
+ .description('List all available permissions')
16
+ .option('-c, --category <category>', 'Filter by category')
17
+ .option('--json', 'Output as JSON')
18
+ .action(async (options) => {
19
+ const spinner = ora('Fetching permissions...').start();
20
+ try {
21
+ const result = await client.getPermissions(options.category);
22
+ spinner.stop();
23
+ if (options.json) {
24
+ output.json(result);
25
+ return;
26
+ }
27
+ console.log();
28
+ console.log(chalk.bold(`Available Permissions (${result.total} total)`));
29
+ console.log();
30
+ // Group by category for display
31
+ const byCategory = new Map();
32
+ for (const perm of result.permissions) {
33
+ const list = byCategory.get(perm.category) || [];
34
+ list.push(perm);
35
+ byCategory.set(perm.category, list);
36
+ }
37
+ // Display sorted by category
38
+ const sortedCategories = [...byCategory.keys()].sort();
39
+ for (const category of sortedCategories) {
40
+ const perms = byCategory.get(category) || [];
41
+ console.log(chalk.cyan.bold(` ${category.toUpperCase()}`));
42
+ for (const perm of perms) {
43
+ const desc = perm.description ? chalk.gray(` - ${perm.description}`) : '';
44
+ console.log(` ${chalk.white(perm.permission)}${desc}`);
45
+ }
46
+ console.log();
47
+ }
48
+ }
49
+ catch (err) {
50
+ spinner.fail('Failed to fetch permissions');
51
+ output.error(err instanceof Error ? err.message : String(err));
52
+ process.exit(1);
53
+ }
54
+ });
55
+ // List categories
56
+ perms
57
+ .command('categories')
58
+ .description('List permission categories')
59
+ .option('--json', 'Output as JSON')
60
+ .action(async (options) => {
61
+ const spinner = ora('Fetching categories...').start();
62
+ try {
63
+ const result = await client.getPermissions();
64
+ spinner.stop();
65
+ if (options.json) {
66
+ output.json({ categories: result.categories });
67
+ return;
68
+ }
69
+ console.log();
70
+ console.log(chalk.bold('Permission Categories'));
71
+ console.log();
72
+ for (const category of result.categories) {
73
+ console.log(` ${chalk.cyan(category)}`);
74
+ }
75
+ console.log();
76
+ }
77
+ catch (err) {
78
+ spinner.fail('Failed to fetch categories');
79
+ output.error(err instanceof Error ? err.message : String(err));
80
+ process.exit(1);
81
+ }
82
+ });
83
+ // Validate permissions
84
+ perms
85
+ .command('validate <permissions...>')
86
+ .description('Validate permission IDs')
87
+ .option('--json', 'Output as JSON')
88
+ .action(async (permissions, options) => {
89
+ const spinner = ora('Validating permissions...').start();
90
+ try {
91
+ const result = await client.validatePermissions(permissions);
92
+ spinner.stop();
93
+ if (options.json) {
94
+ output.json(result);
95
+ return;
96
+ }
97
+ console.log();
98
+ if (result.allValid) {
99
+ console.log(chalk.green.bold('✓ All permissions are valid'));
100
+ }
101
+ else {
102
+ console.log(chalk.red.bold('✗ Some permissions are invalid'));
103
+ }
104
+ console.log();
105
+ if (result.valid.length > 0) {
106
+ console.log(chalk.green('Valid:'));
107
+ for (const perm of result.valid) {
108
+ console.log(` ✓ ${perm}`);
109
+ }
110
+ }
111
+ if (result.invalid.length > 0) {
112
+ console.log();
113
+ console.log(chalk.red('Invalid:'));
114
+ for (const perm of result.invalid) {
115
+ console.log(` ✗ ${perm}`);
116
+ }
117
+ }
118
+ console.log();
119
+ if (!result.allValid) {
120
+ process.exit(1);
121
+ }
122
+ }
123
+ catch (err) {
124
+ spinner.fail('Failed to validate permissions');
125
+ output.error(err instanceof Error ? err.message : String(err));
126
+ process.exit(1);
127
+ }
128
+ });
129
+ // Search permissions
130
+ perms
131
+ .command('search <query>')
132
+ .description('Search permissions by name or description')
133
+ .option('--json', 'Output as JSON')
134
+ .action(async (query, options) => {
135
+ const spinner = ora('Searching permissions...').start();
136
+ try {
137
+ const result = await client.getPermissions();
138
+ spinner.stop();
139
+ const searchLower = query.toLowerCase();
140
+ const matches = result.permissions.filter((p) => p.permission.toLowerCase().includes(searchLower) ||
141
+ p.description.toLowerCase().includes(searchLower) ||
142
+ p.category.toLowerCase().includes(searchLower));
143
+ if (options.json) {
144
+ output.json({ permissions: matches, total: matches.length });
145
+ return;
146
+ }
147
+ console.log();
148
+ if (matches.length === 0) {
149
+ console.log(chalk.yellow(`No permissions found matching "${query}"`));
150
+ }
151
+ else {
152
+ console.log(chalk.bold(`Found ${matches.length} permission(s) matching "${query}":`));
153
+ console.log();
154
+ for (const perm of matches) {
155
+ const desc = perm.description ? chalk.gray(` - ${perm.description}`) : '';
156
+ console.log(` ${chalk.cyan(perm.category)}/${chalk.white(perm.permission)}${desc}`);
157
+ }
158
+ }
159
+ console.log();
160
+ }
161
+ catch (err) {
162
+ spinner.fail('Failed to search permissions');
163
+ output.error(err instanceof Error ? err.message : String(err));
164
+ process.exit(1);
165
+ }
166
+ });
167
+ }
168
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/commands/permissions.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,oEAAoE;AAGpE,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAc3C,MAAM,UAAU,2BAA2B,CAAC,OAAgB;IAC1D,MAAM,KAAK,GAAG,OAAO;SAClB,OAAO,CAAC,aAAa,CAAC;SACtB,KAAK,CAAC,MAAM,CAAC;SACb,WAAW,CAAC,uCAAuC,CAAC,CAAC;IAExD,mBAAmB;IACnB,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,gCAAgC,CAAC;SAC7C,MAAM,CAAC,2BAA2B,EAAE,oBAAoB,CAAC;SACzD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,OAAO,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;QAEvD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAwB,CAAC;YACpF,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACpB,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,gCAAgC;YAChC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAwB,CAAC;YACnD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACtC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACtC,CAAC;YAED,6BAA6B;YAC7B,MAAM,gBAAgB,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvD,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC5D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1E,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;gBAC5D,CAAC;gBACD,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,kBAAkB;IAClB,KAAK;SACF,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,OAAO,GAAG,GAAG,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;QAEtD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,EAAyB,CAAC;YACpE,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC/C,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC3C,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC3C,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,uBAAuB;IACvB,KAAK;SACF,OAAO,CAAC,2BAA2B,CAAC;SACpC,WAAW,CAAC,yBAAyB,CAAC;SACtC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,WAAqB,EAAE,OAAO,EAAE,EAAE;QAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC;QAEzD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YAC7D,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACpB,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAChE,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACnC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAChC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YAED,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;gBACnC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBAClC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,qBAAqB;IACrB,KAAK;SACF,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAAO,EAAE,EAAE;QACvC,MAAM,OAAO,GAAG,GAAG,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAC;QAExD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,EAAyB,CAAC;YACpE,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CACvC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAChD,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACjD,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CACjD,CAAC;YAEF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC7D,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kCAAkC,KAAK,GAAG,CAAC,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,4BAA4B,KAAK,IAAI,CAAC,CAAC,CAAC;gBACtF,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;oBAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;gBACvF,CAAC;YACH,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerPolicyCommands(program: Command): void;
3
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/commands/policy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6sB7D"}