@true-and-useful/janee 0.4.3 → 0.4.5
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 +15 -9
- package/dist/cli/commands/list.d.ts +3 -1
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +43 -4
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/logs.d.ts +1 -0
- package/dist/cli/commands/logs.d.ts.map +1 -1
- package/dist/cli/commands/logs.js +36 -2
- package/dist/cli/commands/logs.js.map +1 -1
- package/dist/cli/commands/remove.d.ts +3 -1
- package/dist/cli/commands/remove.d.ts.map +1 -1
- package/dist/cli/commands/remove.js +10 -8
- package/dist/cli/commands/remove.js.map +1 -1
- package/dist/cli/commands/search.d.ts +4 -1
- package/dist/cli/commands/search.d.ts.map +1 -1
- package/dist/cli/commands/search.js +31 -3
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/sessions.d.ts +3 -1
- package/dist/cli/commands/sessions.d.ts.map +1 -1
- package/dist/cli/commands/sessions.js +41 -6
- package/dist/cli/commands/sessions.js.map +1 -1
- package/dist/cli/config-yaml.d.ts +8 -1
- package/dist/cli/config-yaml.d.ts.map +1 -1
- package/dist/cli/config-yaml.js +75 -54
- package/dist/cli/config-yaml.js.map +1 -1
- package/dist/cli/index.js +13 -2
- package/dist/cli/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -299,16 +299,22 @@ capabilities:
|
|
|
299
299
|
## CLI Reference
|
|
300
300
|
|
|
301
301
|
```bash
|
|
302
|
-
janee init
|
|
303
|
-
janee add
|
|
302
|
+
janee init # Set up ~/.janee/ with example config
|
|
303
|
+
janee add # Add a service (interactive)
|
|
304
304
|
janee add stripe -u https://api.stripe.com -k sk_xxx # Add with args
|
|
305
|
-
janee remove <service>
|
|
306
|
-
janee
|
|
307
|
-
janee
|
|
308
|
-
janee
|
|
309
|
-
janee
|
|
310
|
-
janee
|
|
311
|
-
janee
|
|
305
|
+
janee remove <service> # Remove a service
|
|
306
|
+
janee remove <service> --yes # Remove without confirmation
|
|
307
|
+
janee list # List configured services
|
|
308
|
+
janee list --json # Output as JSON (for integrations)
|
|
309
|
+
janee search [query] # Search service directory
|
|
310
|
+
janee search stripe --json # Search with JSON output
|
|
311
|
+
janee serve # Start MCP server
|
|
312
|
+
janee logs # View audit log
|
|
313
|
+
janee logs -f # Tail audit log
|
|
314
|
+
janee logs --json # Output as JSON
|
|
315
|
+
janee sessions # List active sessions
|
|
316
|
+
janee sessions --json # Output as JSON
|
|
317
|
+
janee revoke <id> # Kill a session
|
|
312
318
|
```
|
|
313
319
|
|
|
314
320
|
### Non-interactive Setup (for AI agents)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAEA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAEA,wBAAsB,WAAW,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAyFjF"}
|
|
@@ -2,15 +2,44 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.listCommand = listCommand;
|
|
4
4
|
const config_yaml_1 = require("../config-yaml");
|
|
5
|
-
async function listCommand() {
|
|
5
|
+
async function listCommand(options = {}) {
|
|
6
6
|
try {
|
|
7
7
|
if (!(0, config_yaml_1.hasYAMLConfig)()) {
|
|
8
|
-
|
|
8
|
+
if (options.json) {
|
|
9
|
+
console.log(JSON.stringify({ error: 'No config found' }, null, 2));
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
console.log('No config found. Run `janee init` first.');
|
|
13
|
+
}
|
|
9
14
|
process.exit(1);
|
|
10
15
|
}
|
|
11
16
|
const config = (0, config_yaml_1.loadYAMLConfig)();
|
|
12
17
|
const serviceNames = Object.keys(config.services);
|
|
13
18
|
const capabilityNames = Object.keys(config.capabilities);
|
|
19
|
+
if (options.json) {
|
|
20
|
+
// JSON output - no secrets
|
|
21
|
+
const services = serviceNames.map(name => {
|
|
22
|
+
const service = config.services[name];
|
|
23
|
+
return {
|
|
24
|
+
name,
|
|
25
|
+
baseUrl: service.baseUrl,
|
|
26
|
+
authType: service.auth.type
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
const capabilities = capabilityNames.map(name => {
|
|
30
|
+
const cap = config.capabilities[name];
|
|
31
|
+
return {
|
|
32
|
+
name,
|
|
33
|
+
service: cap.service,
|
|
34
|
+
ttl: cap.ttl,
|
|
35
|
+
allowRules: cap.rules?.allow?.length || 0,
|
|
36
|
+
denyRules: cap.rules?.deny?.length || 0
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
console.log(JSON.stringify({ services, capabilities }, null, 2));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
// Human-readable output
|
|
14
43
|
if (serviceNames.length === 0) {
|
|
15
44
|
console.log('No services configured yet.');
|
|
16
45
|
console.log('');
|
|
@@ -43,10 +72,20 @@ async function listCommand() {
|
|
|
43
72
|
}
|
|
44
73
|
catch (error) {
|
|
45
74
|
if (error instanceof Error) {
|
|
46
|
-
|
|
75
|
+
if (options.json) {
|
|
76
|
+
console.log(JSON.stringify({ error: error.message }, null, 2));
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
console.error('❌ Error:', error.message);
|
|
80
|
+
}
|
|
47
81
|
}
|
|
48
82
|
else {
|
|
49
|
-
|
|
83
|
+
if (options.json) {
|
|
84
|
+
console.log(JSON.stringify({ error: 'Unknown error occurred' }, null, 2));
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
console.error('❌ Unknown error occurred');
|
|
88
|
+
}
|
|
50
89
|
}
|
|
51
90
|
process.exit(1);
|
|
52
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":";;AAEA,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/logs.ts"],"names":[],"mappings":"AAGA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/logs.ts"],"names":[],"mappings":"AAGA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6FhB"}
|
|
@@ -7,6 +7,11 @@ async function logsCommand(options) {
|
|
|
7
7
|
try {
|
|
8
8
|
const auditLogger = new audit_1.AuditLogger((0, config_yaml_1.getAuditDir)());
|
|
9
9
|
if (options.follow) {
|
|
10
|
+
// JSON mode not supported for follow (streaming)
|
|
11
|
+
if (options.json) {
|
|
12
|
+
console.log(JSON.stringify({ error: '--json not supported with --follow' }, null, 2));
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
10
15
|
// Tail logs in real-time
|
|
11
16
|
console.log('Following logs (Ctrl+C to stop)...\n');
|
|
12
17
|
for await (const event of auditLogger.tail()) {
|
|
@@ -23,6 +28,25 @@ async function logsCommand(options) {
|
|
|
23
28
|
limit,
|
|
24
29
|
service: options.service
|
|
25
30
|
});
|
|
31
|
+
if (options.json) {
|
|
32
|
+
// JSON output
|
|
33
|
+
const output = events.reverse().map(event => ({
|
|
34
|
+
id: event.id,
|
|
35
|
+
timestamp: event.timestamp,
|
|
36
|
+
method: event.method,
|
|
37
|
+
service: event.service,
|
|
38
|
+
path: event.path,
|
|
39
|
+
statusCode: event.statusCode,
|
|
40
|
+
duration: event.duration,
|
|
41
|
+
agentId: event.agentId,
|
|
42
|
+
denied: event.denied,
|
|
43
|
+
denyReason: event.denyReason,
|
|
44
|
+
reason: event.reason
|
|
45
|
+
}));
|
|
46
|
+
console.log(JSON.stringify({ logs: output }, null, 2));
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// Human-readable output
|
|
26
50
|
if (events.length === 0) {
|
|
27
51
|
console.log('No logs found.');
|
|
28
52
|
console.log('');
|
|
@@ -44,10 +68,20 @@ async function logsCommand(options) {
|
|
|
44
68
|
}
|
|
45
69
|
catch (error) {
|
|
46
70
|
if (error instanceof Error) {
|
|
47
|
-
|
|
71
|
+
if (options.json) {
|
|
72
|
+
console.log(JSON.stringify({ error: error.message }, null, 2));
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
console.error('❌ Error:', error.message);
|
|
76
|
+
}
|
|
48
77
|
}
|
|
49
78
|
else {
|
|
50
|
-
|
|
79
|
+
if (options.json) {
|
|
80
|
+
console.log(JSON.stringify({ error: 'Unknown error occurred' }, null, 2));
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
console.error('❌ Unknown error occurred');
|
|
84
|
+
}
|
|
51
85
|
}
|
|
52
86
|
process.exit(1);
|
|
53
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/cli/commands/logs.ts"],"names":[],"mappings":";;AAGA,
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/cli/commands/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/remove.ts"],"names":[],"mappings":"AAIA,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/remove.ts"],"names":[],"mappings":"AAIA,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEvG"}
|
|
@@ -37,7 +37,7 @@ exports.removeCommand = removeCommand;
|
|
|
37
37
|
const readline = __importStar(require("readline/promises"));
|
|
38
38
|
const process_1 = require("process");
|
|
39
39
|
const config_yaml_1 = require("../config-yaml");
|
|
40
|
-
async function removeCommand(serviceName) {
|
|
40
|
+
async function removeCommand(serviceName, options = {}) {
|
|
41
41
|
try {
|
|
42
42
|
// Check for YAML config
|
|
43
43
|
if (!(0, config_yaml_1.hasYAMLConfig)()) {
|
|
@@ -50,7 +50,6 @@ async function removeCommand(serviceName) {
|
|
|
50
50
|
console.error(`❌ Service "${serviceName}" not found`);
|
|
51
51
|
process.exit(1);
|
|
52
52
|
}
|
|
53
|
-
const rl = readline.createInterface({ input: process_1.stdin, output: process_1.stdout });
|
|
54
53
|
// Check for capabilities using this service
|
|
55
54
|
const dependentCaps = Object.entries(config.capabilities)
|
|
56
55
|
.filter(([_, cap]) => cap.service === serviceName)
|
|
@@ -60,12 +59,15 @@ async function removeCommand(serviceName) {
|
|
|
60
59
|
dependentCaps.forEach(cap => console.log(` - ${cap}`));
|
|
61
60
|
console.log();
|
|
62
61
|
}
|
|
63
|
-
// Confirm deletion
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
62
|
+
// Confirm deletion (skip if --yes flag is set)
|
|
63
|
+
if (!options.yes) {
|
|
64
|
+
const rl = readline.createInterface({ input: process_1.stdin, output: process_1.stdout });
|
|
65
|
+
const answer = await rl.question(`Are you sure you want to remove service "${serviceName}"? This cannot be undone. (y/N): `);
|
|
66
|
+
rl.close();
|
|
67
|
+
if (answer.toLowerCase() !== 'y' && answer.toLowerCase() !== 'yes') {
|
|
68
|
+
console.log('❌ Cancelled');
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
69
71
|
}
|
|
70
72
|
// Remove service
|
|
71
73
|
delete config.services[serviceName];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/cli/commands/remove.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/cli/commands/remove.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Search the service directory
|
|
3
3
|
*/
|
|
4
|
-
export declare function searchCommand(query?: string,
|
|
4
|
+
export declare function searchCommand(query?: string, options?: {
|
|
5
|
+
verbose?: boolean;
|
|
6
|
+
json?: boolean;
|
|
7
|
+
}): void;
|
|
5
8
|
//# sourceMappingURL=search.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmCH,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,IAAI,CA0DvG"}
|
|
@@ -20,12 +20,35 @@ function formatService(service, verbose = false) {
|
|
|
20
20
|
}
|
|
21
21
|
return lines.join('\n');
|
|
22
22
|
}
|
|
23
|
-
function
|
|
23
|
+
function serviceToJSON(service) {
|
|
24
|
+
return {
|
|
25
|
+
name: service.name,
|
|
26
|
+
description: service.description,
|
|
27
|
+
baseUrl: service.baseUrl,
|
|
28
|
+
authType: service.auth.type,
|
|
29
|
+
authFields: service.auth.fields,
|
|
30
|
+
category: service.tags[0] || 'other',
|
|
31
|
+
tags: service.tags,
|
|
32
|
+
docs: service.docs
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function searchCommand(query, options = {}) {
|
|
36
|
+
const verbose = options.verbose || false;
|
|
37
|
+
const json = options.json || false;
|
|
24
38
|
if (!query) {
|
|
25
|
-
// List all
|
|
39
|
+
// List all services
|
|
40
|
+
const categories = (0, directory_1.listByCategory)();
|
|
41
|
+
const allServices = [];
|
|
42
|
+
for (const [_, services] of categories) {
|
|
43
|
+
allServices.push(...services);
|
|
44
|
+
}
|
|
45
|
+
if (json) {
|
|
46
|
+
console.log(JSON.stringify(allServices.map(serviceToJSON), null, 2));
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// Human-readable output
|
|
26
50
|
console.log('📚 Janee Service Directory\n');
|
|
27
51
|
console.log('Usage: janee search <query>\n');
|
|
28
|
-
const categories = (0, directory_1.listByCategory)();
|
|
29
52
|
for (const [category, services] of categories) {
|
|
30
53
|
console.log(`\n${category.toUpperCase()}`);
|
|
31
54
|
console.log('─'.repeat(40));
|
|
@@ -37,6 +60,11 @@ function searchCommand(query, verbose = false) {
|
|
|
37
60
|
return;
|
|
38
61
|
}
|
|
39
62
|
const results = (0, directory_1.searchDirectory)(query);
|
|
63
|
+
if (json) {
|
|
64
|
+
console.log(JSON.stringify(results.map(serviceToJSON), null, 2));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
// Human-readable output
|
|
40
68
|
if (results.length === 0) {
|
|
41
69
|
console.log(`No services found matching "${query}"`);
|
|
42
70
|
console.log('\nRun "janee search" to see all available services');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":";AAAA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sessions.ts"],"names":[],"mappings":"AAeA,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sessions.ts"],"names":[],"mappings":"AAeA,wBAAsB,eAAe,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA6FrF"}
|
|
@@ -7,13 +7,18 @@ exports.sessionsCommand = sessionsCommand;
|
|
|
7
7
|
const config_yaml_1 = require("../config-yaml");
|
|
8
8
|
const fs_1 = __importDefault(require("fs"));
|
|
9
9
|
const path_1 = __importDefault(require("path"));
|
|
10
|
-
async function sessionsCommand() {
|
|
10
|
+
async function sessionsCommand(options = {}) {
|
|
11
11
|
try {
|
|
12
12
|
const sessionsFile = path_1.default.join((0, config_yaml_1.getConfigDir)(), 'sessions.json');
|
|
13
13
|
if (!fs_1.default.existsSync(sessionsFile)) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
if (options.json) {
|
|
15
|
+
console.log(JSON.stringify({ sessions: [] }, null, 2));
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
console.log('No active sessions');
|
|
19
|
+
console.log('');
|
|
20
|
+
console.log('Sessions will appear when agents access APIs via MCP.');
|
|
21
|
+
}
|
|
17
22
|
return;
|
|
18
23
|
}
|
|
19
24
|
const data = fs_1.default.readFileSync(sessionsFile, 'utf8');
|
|
@@ -23,6 +28,26 @@ async function sessionsCommand() {
|
|
|
23
28
|
const active = sessions.filter(s => {
|
|
24
29
|
return !s.revoked && new Date(s.expiresAt) > now;
|
|
25
30
|
});
|
|
31
|
+
if (options.json) {
|
|
32
|
+
// JSON output
|
|
33
|
+
const output = active.map(session => {
|
|
34
|
+
const expires = new Date(session.expiresAt);
|
|
35
|
+
const ttl = Math.floor((expires.getTime() - now.getTime()) / 1000);
|
|
36
|
+
return {
|
|
37
|
+
id: session.id,
|
|
38
|
+
capability: session.capability,
|
|
39
|
+
service: session.service,
|
|
40
|
+
agentId: session.agentId,
|
|
41
|
+
reason: session.reason,
|
|
42
|
+
createdAt: session.createdAt,
|
|
43
|
+
expiresAt: session.expiresAt,
|
|
44
|
+
ttlSeconds: ttl
|
|
45
|
+
};
|
|
46
|
+
});
|
|
47
|
+
console.log(JSON.stringify({ sessions: output }, null, 2));
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
// Human-readable output
|
|
26
51
|
if (active.length === 0) {
|
|
27
52
|
console.log('No active sessions');
|
|
28
53
|
return;
|
|
@@ -51,10 +76,20 @@ async function sessionsCommand() {
|
|
|
51
76
|
}
|
|
52
77
|
catch (error) {
|
|
53
78
|
if (error instanceof Error) {
|
|
54
|
-
|
|
79
|
+
if (options.json) {
|
|
80
|
+
console.log(JSON.stringify({ error: error.message }, null, 2));
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
console.error('❌ Error:', error.message);
|
|
84
|
+
}
|
|
55
85
|
}
|
|
56
86
|
else {
|
|
57
|
-
|
|
87
|
+
if (options.json) {
|
|
88
|
+
console.log(JSON.stringify({ error: 'Unknown error occurred' }, null, 2));
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
console.error('❌ Unknown error occurred');
|
|
92
|
+
}
|
|
58
93
|
}
|
|
59
94
|
process.exit(1);
|
|
60
95
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/cli/commands/sessions.ts"],"names":[],"mappings":";;;;;AAeA,
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/cli/commands/sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,7 @@ export interface ServerConfig {
|
|
|
35
35
|
port: number;
|
|
36
36
|
host: string;
|
|
37
37
|
logBodies?: boolean;
|
|
38
|
+
strictDecryption?: boolean;
|
|
38
39
|
}
|
|
39
40
|
export interface JaneeYAMLConfig {
|
|
40
41
|
version: string;
|
|
@@ -44,8 +45,14 @@ export interface JaneeYAMLConfig {
|
|
|
44
45
|
services: Record<string, ServiceConfig>;
|
|
45
46
|
capabilities: Record<string, CapabilityConfig>;
|
|
46
47
|
}
|
|
47
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Get config directory path (dynamically computed for testability)
|
|
50
|
+
*/
|
|
48
51
|
export declare function getConfigDir(): string;
|
|
52
|
+
/**
|
|
53
|
+
* Get audit directory path
|
|
54
|
+
*/
|
|
55
|
+
export declare function getAuditDir(): string;
|
|
49
56
|
/**
|
|
50
57
|
* Check if using YAML config
|
|
51
58
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-yaml.d.ts","sourceRoot":"","sources":["../../src/cli/config-yaml.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,iBAAiB,CAAC;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"config-yaml.d.ts","sourceRoot":"","sources":["../../src/cli/config-yaml.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,iBAAiB,CAAC;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAChD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAgBD;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AA0BD;;GAEG;AACH,wBAAgB,cAAc,IAAI,eAAe,CAwEhD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAkC5D;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,eAAe,CAuBhD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,GACf,IAAI,CAaN;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,gBAAgB,GAC1B,IAAI,CAaN;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAyDpC"}
|
package/dist/cli/config-yaml.js
CHANGED
|
@@ -7,8 +7,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
7
7
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
8
|
};
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.getAuditDir = getAuditDir;
|
|
11
10
|
exports.getConfigDir = getConfigDir;
|
|
11
|
+
exports.getAuditDir = getAuditDir;
|
|
12
12
|
exports.hasYAMLConfig = hasYAMLConfig;
|
|
13
13
|
exports.loadYAMLConfig = loadYAMLConfig;
|
|
14
14
|
exports.saveYAMLConfig = saveYAMLConfig;
|
|
@@ -21,79 +21,93 @@ const path_1 = __importDefault(require("path"));
|
|
|
21
21
|
const os_1 = __importDefault(require("os"));
|
|
22
22
|
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
23
23
|
const crypto_1 = require("../core/crypto");
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const AUDIT_DIR = path_1.default.join(CONFIG_DIR, 'logs');
|
|
28
|
-
function getAuditDir() {
|
|
29
|
-
return AUDIT_DIR;
|
|
30
|
-
}
|
|
24
|
+
/**
|
|
25
|
+
* Get config directory path (dynamically computed for testability)
|
|
26
|
+
*/
|
|
31
27
|
function getConfigDir() {
|
|
32
|
-
return
|
|
28
|
+
return path_1.default.join(os_1.default.homedir(), '.janee');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get YAML config file path
|
|
32
|
+
*/
|
|
33
|
+
function getConfigFileYAML() {
|
|
34
|
+
return path_1.default.join(getConfigDir(), 'config.yaml');
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get JSON config file path
|
|
38
|
+
*/
|
|
39
|
+
function getConfigFileJSON() {
|
|
40
|
+
return path_1.default.join(getConfigDir(), 'config.json');
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get audit directory path
|
|
44
|
+
*/
|
|
45
|
+
function getAuditDir() {
|
|
46
|
+
return path_1.default.join(getConfigDir(), 'logs');
|
|
33
47
|
}
|
|
34
48
|
/**
|
|
35
49
|
* Check if using YAML config
|
|
36
50
|
*/
|
|
37
51
|
function hasYAMLConfig() {
|
|
38
|
-
return fs_1.default.existsSync(
|
|
52
|
+
return fs_1.default.existsSync(getConfigFileYAML());
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Helper to decrypt a secret with strict/lenient mode
|
|
56
|
+
*/
|
|
57
|
+
function tryDecrypt(encrypted, masterKey, strictMode, fieldDescription) {
|
|
58
|
+
try {
|
|
59
|
+
return (0, crypto_1.decryptSecret)(encrypted, masterKey);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
if (strictMode) {
|
|
63
|
+
throw new Error(`Failed to decrypt ${fieldDescription}. ` +
|
|
64
|
+
`This usually means the value is corrupted or the master key is wrong. ` +
|
|
65
|
+
`To allow plaintext values (not recommended), set server.strictDecryption: false in config.yaml`);
|
|
66
|
+
}
|
|
67
|
+
// Lenient mode: assume plaintext
|
|
68
|
+
return encrypted;
|
|
69
|
+
}
|
|
39
70
|
}
|
|
40
71
|
/**
|
|
41
72
|
* Load YAML configuration
|
|
42
73
|
*/
|
|
43
74
|
function loadYAMLConfig() {
|
|
44
|
-
if (!fs_1.default.existsSync(
|
|
75
|
+
if (!fs_1.default.existsSync(getConfigFileYAML())) {
|
|
45
76
|
throw new Error('No YAML config found. Run migration or init.');
|
|
46
77
|
}
|
|
47
|
-
const content = fs_1.default.readFileSync(
|
|
78
|
+
const content = fs_1.default.readFileSync(getConfigFileYAML(), 'utf8');
|
|
48
79
|
const config = js_yaml_1.default.load(content);
|
|
49
80
|
// Ensure services and capabilities are objects (YAML parses empty sections as null)
|
|
50
81
|
config.services = config.services || {};
|
|
51
82
|
config.capabilities = config.capabilities || {};
|
|
52
|
-
//
|
|
83
|
+
// Strict decryption mode (default: true)
|
|
84
|
+
const strictDecryption = config.server?.strictDecryption ?? true;
|
|
85
|
+
// Decrypt service auth keys
|
|
53
86
|
for (const [name, service] of Object.entries(config.services)) {
|
|
54
87
|
const svc = service;
|
|
55
88
|
if (svc.auth.type === 'bearer' && svc.auth.key) {
|
|
56
|
-
|
|
57
|
-
svc.auth.key = (0, crypto_1.decryptSecret)(svc.auth.key, config.masterKey);
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
// Key is plaintext, use as-is
|
|
61
|
-
}
|
|
89
|
+
svc.auth.key = tryDecrypt(svc.auth.key, config.masterKey, strictDecryption, `bearer token for service "${name}"`);
|
|
62
90
|
}
|
|
63
91
|
else if (svc.auth.type === 'hmac' || svc.auth.type === 'hmac-bybit' || svc.auth.type === 'hmac-okx') {
|
|
64
92
|
if (svc.auth.apiKey) {
|
|
65
|
-
|
|
66
|
-
svc.auth.apiKey = (0, crypto_1.decryptSecret)(svc.auth.apiKey, config.masterKey);
|
|
67
|
-
}
|
|
68
|
-
catch {
|
|
69
|
-
// Key is plaintext, use as-is
|
|
70
|
-
}
|
|
93
|
+
svc.auth.apiKey = tryDecrypt(svc.auth.apiKey, config.masterKey, strictDecryption, `API key for service "${name}"`);
|
|
71
94
|
}
|
|
72
95
|
if (svc.auth.apiSecret) {
|
|
73
|
-
|
|
74
|
-
svc.auth.apiSecret = (0, crypto_1.decryptSecret)(svc.auth.apiSecret, config.masterKey);
|
|
75
|
-
}
|
|
76
|
-
catch {
|
|
77
|
-
// Key is plaintext, use as-is
|
|
78
|
-
}
|
|
96
|
+
svc.auth.apiSecret = tryDecrypt(svc.auth.apiSecret, config.masterKey, strictDecryption, `API secret for service "${name}"`);
|
|
79
97
|
}
|
|
80
98
|
if (svc.auth.passphrase) {
|
|
81
|
-
|
|
82
|
-
svc.auth.passphrase = (0, crypto_1.decryptSecret)(svc.auth.passphrase, config.masterKey);
|
|
83
|
-
}
|
|
84
|
-
catch {
|
|
85
|
-
// Passphrase is plaintext, use as-is
|
|
86
|
-
}
|
|
99
|
+
svc.auth.passphrase = tryDecrypt(svc.auth.passphrase, config.masterKey, strictDecryption, `passphrase for service "${name}"`);
|
|
87
100
|
}
|
|
88
101
|
}
|
|
89
|
-
else if (svc.auth.type === '
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
catch {
|
|
94
|
-
// Credentials are plaintext, use as-is
|
|
102
|
+
else if (svc.auth.type === 'headers' && svc.auth.headers) {
|
|
103
|
+
// Decrypt each header value
|
|
104
|
+
for (const [headerName, headerValue] of Object.entries(svc.auth.headers)) {
|
|
105
|
+
svc.auth.headers[headerName] = tryDecrypt(headerValue, config.masterKey, strictDecryption, `header "${headerName}" for service "${name}"`);
|
|
95
106
|
}
|
|
96
107
|
}
|
|
108
|
+
else if (svc.auth.type === 'service-account' && svc.auth.credentials) {
|
|
109
|
+
svc.auth.credentials = tryDecrypt(svc.auth.credentials, config.masterKey, strictDecryption, `service account credentials for service "${name}"`);
|
|
110
|
+
}
|
|
97
111
|
}
|
|
98
112
|
return config;
|
|
99
113
|
}
|
|
@@ -119,6 +133,12 @@ function saveYAMLConfig(config) {
|
|
|
119
133
|
svc.auth.passphrase = (0, crypto_1.encryptSecret)(svc.auth.passphrase, config.masterKey);
|
|
120
134
|
}
|
|
121
135
|
}
|
|
136
|
+
else if (svc.auth.type === 'headers' && svc.auth.headers) {
|
|
137
|
+
// Encrypt each header value
|
|
138
|
+
for (const headerName of Object.keys(svc.auth.headers)) {
|
|
139
|
+
svc.auth.headers[headerName] = (0, crypto_1.encryptSecret)(svc.auth.headers[headerName], config.masterKey);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
122
142
|
else if (svc.auth.type === 'service-account' && svc.auth.credentials) {
|
|
123
143
|
svc.auth.credentials = (0, crypto_1.encryptSecret)(svc.auth.credentials, config.masterKey);
|
|
124
144
|
}
|
|
@@ -127,16 +147,16 @@ function saveYAMLConfig(config) {
|
|
|
127
147
|
indent: 2,
|
|
128
148
|
lineWidth: 120
|
|
129
149
|
});
|
|
130
|
-
fs_1.default.writeFileSync(
|
|
150
|
+
fs_1.default.writeFileSync(getConfigFileYAML(), yamlContent, { mode: 0o600 });
|
|
131
151
|
}
|
|
132
152
|
/**
|
|
133
153
|
* Initialize new YAML config
|
|
134
154
|
*/
|
|
135
155
|
function initYAMLConfig() {
|
|
136
|
-
if (!fs_1.default.existsSync(
|
|
137
|
-
fs_1.default.mkdirSync(
|
|
156
|
+
if (!fs_1.default.existsSync(getConfigDir())) {
|
|
157
|
+
fs_1.default.mkdirSync(getConfigDir(), { mode: 0o700, recursive: true });
|
|
138
158
|
}
|
|
139
|
-
if (fs_1.default.existsSync(
|
|
159
|
+
if (fs_1.default.existsSync(getConfigFileYAML())) {
|
|
140
160
|
throw new Error('Config already exists');
|
|
141
161
|
}
|
|
142
162
|
const config = {
|
|
@@ -144,7 +164,8 @@ function initYAMLConfig() {
|
|
|
144
164
|
masterKey: (0, crypto_1.generateMasterKey)(),
|
|
145
165
|
server: {
|
|
146
166
|
port: 9119,
|
|
147
|
-
host: 'localhost'
|
|
167
|
+
host: 'localhost',
|
|
168
|
+
strictDecryption: true // Fail hard on decryption errors (recommended)
|
|
148
169
|
},
|
|
149
170
|
services: {},
|
|
150
171
|
capabilities: {}
|
|
@@ -184,14 +205,14 @@ function addCapabilityYAML(name, capConfig) {
|
|
|
184
205
|
* Migrate from JSON to YAML config
|
|
185
206
|
*/
|
|
186
207
|
function migrateToYAML() {
|
|
187
|
-
if (!fs_1.default.existsSync(
|
|
208
|
+
if (!fs_1.default.existsSync(getConfigFileJSON())) {
|
|
188
209
|
throw new Error('No JSON config to migrate');
|
|
189
210
|
}
|
|
190
|
-
if (fs_1.default.existsSync(
|
|
211
|
+
if (fs_1.default.existsSync(getConfigFileYAML())) {
|
|
191
212
|
throw new Error('YAML config already exists');
|
|
192
213
|
}
|
|
193
214
|
// Load old JSON config
|
|
194
|
-
const oldConfig = JSON.parse(fs_1.default.readFileSync(
|
|
215
|
+
const oldConfig = JSON.parse(fs_1.default.readFileSync(getConfigFileJSON(), 'utf8'));
|
|
195
216
|
// Create new YAML config
|
|
196
217
|
const newConfig = {
|
|
197
218
|
version: '0.2.0',
|
|
@@ -226,10 +247,10 @@ function migrateToYAML() {
|
|
|
226
247
|
indent: 2,
|
|
227
248
|
lineWidth: 120
|
|
228
249
|
});
|
|
229
|
-
fs_1.default.writeFileSync(
|
|
250
|
+
fs_1.default.writeFileSync(getConfigFileYAML(), yamlContent, { mode: 0o600 });
|
|
230
251
|
console.log('✅ Migrated to YAML config');
|
|
231
|
-
console.log(`Old config backed up at: ${
|
|
252
|
+
console.log(`Old config backed up at: ${getConfigFileJSON()}.bak`);
|
|
232
253
|
// Backup old config
|
|
233
|
-
fs_1.default.renameSync(
|
|
254
|
+
fs_1.default.renameSync(getConfigFileJSON(), `${getConfigFileJSON()}.bak`);
|
|
234
255
|
}
|
|
235
256
|
//# sourceMappingURL=config-yaml.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-yaml.js","sourceRoot":"","sources":["../../src/cli/config-yaml.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;
|
|
1
|
+
{"version":3,"file":"config-yaml.js","sourceRoot":"","sources":["../../src/cli/config-yaml.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -15,11 +15,17 @@ 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 fs_1 = require("fs");
|
|
19
|
+
const path_1 = require("path");
|
|
20
|
+
// Read version from package.json
|
|
21
|
+
const packageJsonPath = (0, path_1.join)(__dirname, '../../package.json');
|
|
22
|
+
const packageJson = JSON.parse((0, fs_1.readFileSync)(packageJsonPath, 'utf8'));
|
|
23
|
+
const version = packageJson.version || '0.0.0';
|
|
18
24
|
const program = new commander_1.Command();
|
|
19
25
|
program
|
|
20
26
|
.name('janee')
|
|
21
27
|
.description('Secrets management for AI agents')
|
|
22
|
-
.version(
|
|
28
|
+
.version(version);
|
|
23
29
|
// Commands
|
|
24
30
|
program
|
|
25
31
|
.command('init')
|
|
@@ -42,6 +48,7 @@ program
|
|
|
42
48
|
program
|
|
43
49
|
.command('remove <service>')
|
|
44
50
|
.description('Remove a service from Janee')
|
|
51
|
+
.option('-y, --yes', 'Skip confirmation prompt')
|
|
45
52
|
.action(remove_1.removeCommand);
|
|
46
53
|
program
|
|
47
54
|
.command('serve')
|
|
@@ -50,6 +57,7 @@ program
|
|
|
50
57
|
program
|
|
51
58
|
.command('list')
|
|
52
59
|
.description('List configured services')
|
|
60
|
+
.option('--json', 'Output as JSON')
|
|
53
61
|
.action(list_1.listCommand);
|
|
54
62
|
program
|
|
55
63
|
.command('logs')
|
|
@@ -57,10 +65,12 @@ program
|
|
|
57
65
|
.option('-f, --follow', 'Follow logs in real-time')
|
|
58
66
|
.option('-n, --lines <count>', 'Number of recent logs to show', '20')
|
|
59
67
|
.option('-s, --service <name>', 'Filter by service')
|
|
68
|
+
.option('--json', 'Output as JSON (not supported with --follow)')
|
|
60
69
|
.action(logs_1.logsCommand);
|
|
61
70
|
program
|
|
62
71
|
.command('sessions')
|
|
63
72
|
.description('List active sessions')
|
|
73
|
+
.option('--json', 'Output as JSON')
|
|
64
74
|
.action(sessions_1.sessionsCommand);
|
|
65
75
|
program
|
|
66
76
|
.command('revoke <session>')
|
|
@@ -70,6 +80,7 @@ program
|
|
|
70
80
|
.command('search [query]')
|
|
71
81
|
.description('Search the service directory')
|
|
72
82
|
.option('-v, --verbose', 'Show full details for each service')
|
|
73
|
-
.
|
|
83
|
+
.option('--json', 'Output as JSON')
|
|
84
|
+
.action((query, options) => (0, search_1.searchCommand)(query, options));
|
|
74
85
|
program.parse();
|
|
75
86
|
//# 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;
|
|
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"}
|