@true-and-useful/janee 0.4.5 → 0.5.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.
- package/README.md +5 -0
- package/dist/cli/commands/capability.d.ts +26 -0
- package/dist/cli/commands/capability.d.ts.map +1 -0
- package/dist/cli/commands/capability.js +269 -0
- package/dist/cli/commands/capability.js.map +1 -0
- package/dist/cli/index.js +37 -0
- package/dist/cli/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -308,6 +308,11 @@ janee list # List configured services
|
|
|
308
308
|
janee list --json # Output as JSON (for integrations)
|
|
309
309
|
janee search [query] # Search service directory
|
|
310
310
|
janee search stripe --json # Search with JSON output
|
|
311
|
+
janee cap list # List capabilities
|
|
312
|
+
janee cap list --json # List capabilities as JSON
|
|
313
|
+
janee cap add <name> --service <service> # Add capability
|
|
314
|
+
janee cap edit <name> # Edit capability
|
|
315
|
+
janee cap remove <name> # Remove capability
|
|
311
316
|
janee serve # Start MCP server
|
|
312
317
|
janee logs # View audit log
|
|
313
318
|
janee logs -f # Tail audit log
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capability management commands
|
|
3
|
+
*/
|
|
4
|
+
export declare function capabilityListCommand(options?: {
|
|
5
|
+
json?: boolean;
|
|
6
|
+
}): Promise<void>;
|
|
7
|
+
export declare function capabilityAddCommand(name: string, options: {
|
|
8
|
+
service?: string;
|
|
9
|
+
ttl?: string;
|
|
10
|
+
autoApprove?: boolean;
|
|
11
|
+
requiresReason?: boolean;
|
|
12
|
+
allow?: string[];
|
|
13
|
+
deny?: string[];
|
|
14
|
+
}): Promise<void>;
|
|
15
|
+
export declare function capabilityEditCommand(name: string, options: {
|
|
16
|
+
ttl?: string;
|
|
17
|
+
autoApprove?: boolean;
|
|
18
|
+
requiresReason?: boolean;
|
|
19
|
+
allow?: string[];
|
|
20
|
+
deny?: string[];
|
|
21
|
+
clearRules?: boolean;
|
|
22
|
+
}): Promise<void>;
|
|
23
|
+
export declare function capabilityRemoveCommand(name: string, options?: {
|
|
24
|
+
yes?: boolean;
|
|
25
|
+
}): Promise<void>;
|
|
26
|
+
//# sourceMappingURL=capability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/capability.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAsB,qBAAqB,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAgF3F;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,GACA,OAAO,CAAC,IAAI,CAAC,CA6Df;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GACA,OAAO,CAAC,IAAI,CAAC,CAuDf;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9B,OAAO,CAAC,IAAI,CAAC,CA+Cf"}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Capability management commands
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.capabilityListCommand = capabilityListCommand;
|
|
40
|
+
exports.capabilityAddCommand = capabilityAddCommand;
|
|
41
|
+
exports.capabilityEditCommand = capabilityEditCommand;
|
|
42
|
+
exports.capabilityRemoveCommand = capabilityRemoveCommand;
|
|
43
|
+
const config_yaml_1 = require("../config-yaml");
|
|
44
|
+
async function capabilityListCommand(options = {}) {
|
|
45
|
+
try {
|
|
46
|
+
if (!(0, config_yaml_1.hasYAMLConfig)()) {
|
|
47
|
+
if (options.json) {
|
|
48
|
+
console.log(JSON.stringify({ error: 'No config found' }, null, 2));
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
console.log('No config found. Run `janee init` first.');
|
|
52
|
+
}
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
const config = (0, config_yaml_1.loadYAMLConfig)();
|
|
56
|
+
const capabilityNames = Object.keys(config.capabilities);
|
|
57
|
+
if (options.json) {
|
|
58
|
+
// JSON output
|
|
59
|
+
const capabilities = capabilityNames.map(name => {
|
|
60
|
+
const cap = config.capabilities[name];
|
|
61
|
+
return {
|
|
62
|
+
name,
|
|
63
|
+
service: cap.service,
|
|
64
|
+
ttl: cap.ttl,
|
|
65
|
+
autoApprove: cap.autoApprove,
|
|
66
|
+
requiresReason: cap.requiresReason,
|
|
67
|
+
allowRules: cap.rules?.allow || [],
|
|
68
|
+
denyRules: cap.rules?.deny || []
|
|
69
|
+
};
|
|
70
|
+
});
|
|
71
|
+
console.log(JSON.stringify({ capabilities }, null, 2));
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
// Human-readable output
|
|
75
|
+
if (capabilityNames.length === 0) {
|
|
76
|
+
console.log('No capabilities configured yet.');
|
|
77
|
+
console.log('');
|
|
78
|
+
console.log('Add a capability:');
|
|
79
|
+
console.log(' janee cap add <name> --service <service>');
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
console.log('');
|
|
83
|
+
console.log('Capabilities:');
|
|
84
|
+
for (const name of capabilityNames) {
|
|
85
|
+
const cap = config.capabilities[name];
|
|
86
|
+
const allowCount = cap.rules?.allow?.length || 0;
|
|
87
|
+
const denyCount = cap.rules?.deny?.length || 0;
|
|
88
|
+
const rules = allowCount + denyCount > 0 ? ` [${allowCount} allow, ${denyCount} deny]` : '';
|
|
89
|
+
console.log(` ${name}`);
|
|
90
|
+
console.log(` Service: ${cap.service}`);
|
|
91
|
+
console.log(` TTL: ${cap.ttl}`);
|
|
92
|
+
if (cap.autoApprove !== undefined) {
|
|
93
|
+
console.log(` Auto-approve: ${cap.autoApprove}`);
|
|
94
|
+
}
|
|
95
|
+
if (cap.requiresReason !== undefined) {
|
|
96
|
+
console.log(` Requires reason: ${cap.requiresReason}`);
|
|
97
|
+
}
|
|
98
|
+
if (rules) {
|
|
99
|
+
console.log(` Rules: ${rules}`);
|
|
100
|
+
}
|
|
101
|
+
console.log('');
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
if (error instanceof Error) {
|
|
106
|
+
if (options.json) {
|
|
107
|
+
console.log(JSON.stringify({ error: error.message }, null, 2));
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
console.error('❌ Error:', error.message);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
if (options.json) {
|
|
115
|
+
console.log(JSON.stringify({ error: 'Unknown error occurred' }, null, 2));
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
console.error('❌ Unknown error occurred');
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
async function capabilityAddCommand(name, options) {
|
|
125
|
+
try {
|
|
126
|
+
if (!(0, config_yaml_1.hasYAMLConfig)()) {
|
|
127
|
+
console.error('❌ No config found. Run `janee init` first.');
|
|
128
|
+
process.exit(1);
|
|
129
|
+
}
|
|
130
|
+
const config = (0, config_yaml_1.loadYAMLConfig)();
|
|
131
|
+
// Check if capability already exists
|
|
132
|
+
if (config.capabilities[name]) {
|
|
133
|
+
console.error(`❌ Capability "${name}" already exists. Use 'janee cap edit' to modify it.`);
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
136
|
+
// Service is required
|
|
137
|
+
if (!options.service) {
|
|
138
|
+
console.error('❌ --service is required');
|
|
139
|
+
process.exit(1);
|
|
140
|
+
}
|
|
141
|
+
// Check if service exists
|
|
142
|
+
if (!config.services[options.service]) {
|
|
143
|
+
console.error(`❌ Service "${options.service}" not found. Add it first with 'janee add'.`);
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
// Create capability
|
|
147
|
+
const capability = {
|
|
148
|
+
service: options.service,
|
|
149
|
+
ttl: options.ttl || '1h',
|
|
150
|
+
autoApprove: options.autoApprove,
|
|
151
|
+
requiresReason: options.requiresReason
|
|
152
|
+
};
|
|
153
|
+
// Add rules if provided
|
|
154
|
+
if (options.allow || options.deny) {
|
|
155
|
+
capability.rules = {};
|
|
156
|
+
if (options.allow) {
|
|
157
|
+
capability.rules.allow = options.allow;
|
|
158
|
+
}
|
|
159
|
+
if (options.deny) {
|
|
160
|
+
capability.rules.deny = options.deny;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
config.capabilities[name] = capability;
|
|
164
|
+
(0, config_yaml_1.saveYAMLConfig)(config);
|
|
165
|
+
console.log(`✅ Added capability "${name}"`);
|
|
166
|
+
console.log(` Service: ${capability.service}`);
|
|
167
|
+
console.log(` TTL: ${capability.ttl}`);
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
if (error instanceof Error) {
|
|
171
|
+
console.error('❌ Error:', error.message);
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
console.error('❌ Unknown error occurred');
|
|
175
|
+
}
|
|
176
|
+
process.exit(1);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
async function capabilityEditCommand(name, options) {
|
|
180
|
+
try {
|
|
181
|
+
if (!(0, config_yaml_1.hasYAMLConfig)()) {
|
|
182
|
+
console.error('❌ No config found. Run `janee init` first.');
|
|
183
|
+
process.exit(1);
|
|
184
|
+
}
|
|
185
|
+
const config = (0, config_yaml_1.loadYAMLConfig)();
|
|
186
|
+
// Check if capability exists
|
|
187
|
+
if (!config.capabilities[name]) {
|
|
188
|
+
console.error(`❌ Capability "${name}" not found`);
|
|
189
|
+
process.exit(1);
|
|
190
|
+
}
|
|
191
|
+
const capability = config.capabilities[name];
|
|
192
|
+
// Update fields if provided
|
|
193
|
+
if (options.ttl) {
|
|
194
|
+
capability.ttl = options.ttl;
|
|
195
|
+
}
|
|
196
|
+
if (options.autoApprove !== undefined) {
|
|
197
|
+
capability.autoApprove = options.autoApprove;
|
|
198
|
+
}
|
|
199
|
+
if (options.requiresReason !== undefined) {
|
|
200
|
+
capability.requiresReason = options.requiresReason;
|
|
201
|
+
}
|
|
202
|
+
// Handle rules
|
|
203
|
+
if (options.clearRules) {
|
|
204
|
+
delete capability.rules;
|
|
205
|
+
}
|
|
206
|
+
else if (options.allow || options.deny) {
|
|
207
|
+
if (!capability.rules) {
|
|
208
|
+
capability.rules = {};
|
|
209
|
+
}
|
|
210
|
+
if (options.allow) {
|
|
211
|
+
capability.rules.allow = options.allow;
|
|
212
|
+
}
|
|
213
|
+
if (options.deny) {
|
|
214
|
+
capability.rules.deny = options.deny;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
(0, config_yaml_1.saveYAMLConfig)(config);
|
|
218
|
+
console.log(`✅ Updated capability "${name}"`);
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
if (error instanceof Error) {
|
|
222
|
+
console.error('❌ Error:', error.message);
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
console.error('❌ Unknown error occurred');
|
|
226
|
+
}
|
|
227
|
+
process.exit(1);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
async function capabilityRemoveCommand(name, options = {}) {
|
|
231
|
+
try {
|
|
232
|
+
if (!(0, config_yaml_1.hasYAMLConfig)()) {
|
|
233
|
+
console.error('❌ No config found. Run `janee init` first.');
|
|
234
|
+
process.exit(1);
|
|
235
|
+
}
|
|
236
|
+
const config = (0, config_yaml_1.loadYAMLConfig)();
|
|
237
|
+
// Check if capability exists
|
|
238
|
+
if (!config.capabilities[name]) {
|
|
239
|
+
console.error(`❌ Capability "${name}" not found`);
|
|
240
|
+
process.exit(1);
|
|
241
|
+
}
|
|
242
|
+
// Confirm deletion (skip if --yes flag is set)
|
|
243
|
+
if (!options.yes) {
|
|
244
|
+
const readline = await Promise.resolve().then(() => __importStar(require('readline/promises')));
|
|
245
|
+
const { stdin: input, stdout: output } = await Promise.resolve().then(() => __importStar(require('process')));
|
|
246
|
+
const rl = readline.createInterface({ input, output });
|
|
247
|
+
const answer = await rl.question(`Are you sure you want to remove capability "${name}"? (y/N): `);
|
|
248
|
+
rl.close();
|
|
249
|
+
if (answer.toLowerCase() !== 'y' && answer.toLowerCase() !== 'yes') {
|
|
250
|
+
console.log('❌ Cancelled');
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
// Remove capability
|
|
255
|
+
delete config.capabilities[name];
|
|
256
|
+
(0, config_yaml_1.saveYAMLConfig)(config);
|
|
257
|
+
console.log(`✅ Capability "${name}" removed successfully!`);
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
if (error instanceof Error) {
|
|
261
|
+
console.error('❌ Error:', error.message);
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
console.error('❌ Unknown error occurred');
|
|
265
|
+
}
|
|
266
|
+
process.exit(1);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=capability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability.js","sourceRoot":"","sources":["../../../src/cli/commands/capability.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -15,6 +15,7 @@ const logs_1 = require("./commands/logs");
|
|
|
15
15
|
const sessions_1 = require("./commands/sessions");
|
|
16
16
|
const revoke_1 = require("./commands/revoke");
|
|
17
17
|
const search_1 = require("./commands/search");
|
|
18
|
+
const capability_1 = require("./commands/capability");
|
|
18
19
|
const fs_1 = require("fs");
|
|
19
20
|
const path_1 = require("path");
|
|
20
21
|
// Read version from package.json
|
|
@@ -82,5 +83,41 @@ program
|
|
|
82
83
|
.option('-v, --verbose', 'Show full details for each service')
|
|
83
84
|
.option('--json', 'Output as JSON')
|
|
84
85
|
.action((query, options) => (0, search_1.searchCommand)(query, options));
|
|
86
|
+
// Capability management subcommands
|
|
87
|
+
const cap = program.command('cap').description('Manage capabilities');
|
|
88
|
+
cap
|
|
89
|
+
.command('list')
|
|
90
|
+
.description('List all capabilities')
|
|
91
|
+
.option('--json', 'Output as JSON')
|
|
92
|
+
.action(capability_1.capabilityListCommand);
|
|
93
|
+
cap
|
|
94
|
+
.command('add <name>')
|
|
95
|
+
.description('Add a new capability')
|
|
96
|
+
.requiredOption('-s, --service <service>', 'Service to use')
|
|
97
|
+
.option('-t, --ttl <duration>', 'TTL (e.g., 1h, 30m)', '1h')
|
|
98
|
+
.option('--auto-approve', 'Auto-approve requests')
|
|
99
|
+
.option('--no-auto-approve', 'Require manual approval')
|
|
100
|
+
.option('--requires-reason', 'Require reason for requests')
|
|
101
|
+
.option('--no-requires-reason', 'Do not require reason')
|
|
102
|
+
.option('--allow <pattern...>', 'Allow rules (e.g., "GET /v1/*")')
|
|
103
|
+
.option('--deny <pattern...>', 'Deny rules (e.g., "DELETE *")')
|
|
104
|
+
.action(capability_1.capabilityAddCommand);
|
|
105
|
+
cap
|
|
106
|
+
.command('edit <name>')
|
|
107
|
+
.description('Edit an existing capability')
|
|
108
|
+
.option('-t, --ttl <duration>', 'Update TTL (e.g., 1h, 30m)')
|
|
109
|
+
.option('--auto-approve', 'Enable auto-approve')
|
|
110
|
+
.option('--no-auto-approve', 'Disable auto-approve')
|
|
111
|
+
.option('--requires-reason', 'Require reason for requests')
|
|
112
|
+
.option('--no-requires-reason', 'Do not require reason')
|
|
113
|
+
.option('--allow <pattern...>', 'Replace allow rules')
|
|
114
|
+
.option('--deny <pattern...>', 'Replace deny rules')
|
|
115
|
+
.option('--clear-rules', 'Clear all rules')
|
|
116
|
+
.action(capability_1.capabilityEditCommand);
|
|
117
|
+
cap
|
|
118
|
+
.command('remove <name>')
|
|
119
|
+
.description('Remove a capability')
|
|
120
|
+
.option('-y, --yes', 'Skip confirmation prompt')
|
|
121
|
+
.action(capability_1.capabilityRemoveCommand);
|
|
85
122
|
program.parse();
|
|
86
123
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;AAEA;;;GAGG;;AAEH,yCAAoC;AACpC,0CAA8C;AAC9C,wCAA4C;AAC5C,8CAAkD;AAClD,4CAAgD;AAChD,0CAA8C;AAC9C,0CAA8C;AAC9C,kDAAsD;AACtD,8CAAkD;AAClD,8CAAkD;AAClD,2BAAkC;AAClC,+BAA4B;AAE5B,iCAAiC;AACjC,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;AACtE,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;AAE/C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,kCAAkC,CAAC;KAC/C,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,WAAW;AACX,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,oBAAoB,EAAE,qFAAqF,CAAC;KACnH,MAAM,CAAC,uBAAuB,EAAE,kCAAkC,CAAC;KACnE,MAAM,CAAC,2BAA2B,EAAE,2BAA2B,CAAC;KAChE,MAAM,CAAC,sBAAsB,EAAE,wCAAwC,CAAC;KACxE,MAAM,CAAC,yBAAyB,EAAE,2CAA2C,CAAC;KAC9E,MAAM,CAAC,6BAA6B,EAAE,2CAA2C,CAAC;KAClF,MAAM,CAAC,2BAA2B,EAAE,mEAAmE,CAAC;KACxG,MAAM,CAAC,oBAAoB,EAAE,8CAA8C,CAAC;KAC5E,MAAM,CAAC,gBAAU,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,sBAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,iBAAiB,CAAC;KAC9B,MAAM,CAAC,cAAc,EAAE,0BAA0B,CAAC;KAClD,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,EAAE,IAAI,CAAC;KACpE,MAAM,CAAC,sBAAsB,EAAE,mBAAmB,CAAC;KACnD,MAAM,CAAC,QAAQ,EAAE,8CAA8C,CAAC;KAChE,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,0BAAe,CAAC,CAAC;AAE3B,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,sBAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,eAAe,EAAE,oCAAoC,CAAC;KAC7D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,IAAA,sBAAa,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAE7D,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;AAEA;;;GAGG;;AAEH,yCAAoC;AACpC,0CAA8C;AAC9C,wCAA4C;AAC5C,8CAAkD;AAClD,4CAAgD;AAChD,0CAA8C;AAC9C,0CAA8C;AAC9C,kDAAsD;AACtD,8CAAkD;AAClD,8CAAkD;AAClD,sDAK+B;AAC/B,2BAAkC;AAClC,+BAA4B;AAE5B,iCAAiC;AACjC,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;AACtE,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;AAE/C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,kCAAkC,CAAC;KAC/C,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,WAAW;AACX,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,oBAAoB,EAAE,qFAAqF,CAAC;KACnH,MAAM,CAAC,uBAAuB,EAAE,kCAAkC,CAAC;KACnE,MAAM,CAAC,2BAA2B,EAAE,2BAA2B,CAAC;KAChE,MAAM,CAAC,sBAAsB,EAAE,wCAAwC,CAAC;KACxE,MAAM,CAAC,yBAAyB,EAAE,2CAA2C,CAAC;KAC9E,MAAM,CAAC,6BAA6B,EAAE,2CAA2C,CAAC;KAClF,MAAM,CAAC,2BAA2B,EAAE,mEAAmE,CAAC;KACxG,MAAM,CAAC,oBAAoB,EAAE,8CAA8C,CAAC;KAC5E,MAAM,CAAC,gBAAU,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,sBAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,iBAAiB,CAAC;KAC9B,MAAM,CAAC,cAAc,EAAE,0BAA0B,CAAC;KAClD,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,EAAE,IAAI,CAAC;KACpE,MAAM,CAAC,sBAAsB,EAAE,mBAAmB,CAAC;KACnD,MAAM,CAAC,QAAQ,EAAE,8CAA8C,CAAC;KAChE,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,0BAAe,CAAC,CAAC;AAE3B,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,sBAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,eAAe,EAAE,oCAAoC,CAAC;KAC7D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,IAAA,sBAAa,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAE7D,oCAAoC;AACpC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;AAEtE,GAAG;KACA,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,kCAAqB,CAAC,CAAC;AAEjC,GAAG;KACA,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,sBAAsB,CAAC;KACnC,cAAc,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;KAC3D,MAAM,CAAC,sBAAsB,EAAE,qBAAqB,EAAE,IAAI,CAAC;KAC3D,MAAM,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;KACjD,MAAM,CAAC,mBAAmB,EAAE,yBAAyB,CAAC;KACtD,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,CAAC;KAC1D,MAAM,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;KACvD,MAAM,CAAC,sBAAsB,EAAE,iCAAiC,CAAC;KACjE,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,CAAC;KAC9D,MAAM,CAAC,iCAAoB,CAAC,CAAC;AAEhC,GAAG;KACA,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,CAAC;KAC5D,MAAM,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;KAC/C,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;KACnD,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,CAAC;KAC1D,MAAM,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;KACvD,MAAM,CAAC,sBAAsB,EAAE,qBAAqB,CAAC;KACrD,MAAM,CAAC,qBAAqB,EAAE,oBAAoB,CAAC;KACnD,MAAM,CAAC,eAAe,EAAE,iBAAiB,CAAC;KAC1C,MAAM,CAAC,kCAAqB,CAAC,CAAC;AAEjC,GAAG;KACA,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,qBAAqB,CAAC;KAClC,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,oCAAuB,CAAC,CAAC;AAEnC,OAAO,CAAC,KAAK,EAAE,CAAC"}
|