@indemn/cli 1.1.1 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/auth.d.ts.map +1 -1
- package/dist/cli/auth.js +20 -44
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/sdk/client.d.ts.map +1 -1
- package/dist/sdk/client.js +8 -0
- package/dist/sdk/client.js.map +1 -1
- package/package.json +2 -2
- package/src/cli/auth.ts +19 -45
- package/src/cli/index.ts +1 -1
- package/src/sdk/client.ts +7 -0
package/dist/cli/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyCpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsG3D"}
|
package/dist/cli/auth.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import ora from 'ora';
|
|
3
3
|
import * as readline from 'readline';
|
|
4
|
+
import { Writable } from 'node:stream';
|
|
4
5
|
import { login, logout, whoami } from '../sdk/auth.js';
|
|
5
6
|
import { printError, printSuccess, printJson } from './utils/output.js';
|
|
6
7
|
function prompt(question) {
|
|
@@ -17,61 +18,30 @@ function prompt(question) {
|
|
|
17
18
|
}
|
|
18
19
|
function promptPassword(question) {
|
|
19
20
|
return new Promise((resolve) => {
|
|
21
|
+
const mutedOutput = new Writable({
|
|
22
|
+
write(_chunk, _encoding, callback) { callback(); },
|
|
23
|
+
});
|
|
20
24
|
const rl = readline.createInterface({
|
|
21
25
|
input: process.stdin,
|
|
22
|
-
output:
|
|
26
|
+
output: mutedOutput,
|
|
27
|
+
terminal: true,
|
|
23
28
|
});
|
|
24
|
-
// Disable echoing by writing to stdout manually
|
|
25
29
|
process.stdout.write(question);
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
let password = '';
|
|
32
|
-
const onData = (char) => {
|
|
33
|
-
const c = char.toString('utf8');
|
|
34
|
-
if (c === '\n' || c === '\r' || c === '\u0004') {
|
|
35
|
-
if (stdin.isTTY) {
|
|
36
|
-
stdin.setRawMode(wasRaw ?? false);
|
|
37
|
-
}
|
|
38
|
-
stdin.removeListener('data', onData);
|
|
39
|
-
process.stdout.write('\n');
|
|
40
|
-
rl.close();
|
|
41
|
-
resolve(password);
|
|
42
|
-
}
|
|
43
|
-
else if (c === '\u0003') {
|
|
44
|
-
// Ctrl+C
|
|
45
|
-
if (stdin.isTTY) {
|
|
46
|
-
stdin.setRawMode(wasRaw ?? false);
|
|
47
|
-
}
|
|
48
|
-
stdin.removeListener('data', onData);
|
|
49
|
-
rl.close();
|
|
50
|
-
process.exit(1);
|
|
51
|
-
}
|
|
52
|
-
else if (c === '\u007f' || c === '\b') {
|
|
53
|
-
// Backspace
|
|
54
|
-
if (password.length > 0) {
|
|
55
|
-
password = password.slice(0, -1);
|
|
56
|
-
process.stdout.write('\b \b');
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
password += c;
|
|
61
|
-
process.stdout.write('*');
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
stdin.on('data', onData);
|
|
30
|
+
rl.question('', (answer) => {
|
|
31
|
+
process.stdout.write('\n');
|
|
32
|
+
rl.close();
|
|
33
|
+
resolve(answer);
|
|
34
|
+
});
|
|
65
35
|
});
|
|
66
36
|
}
|
|
67
37
|
export function registerAuthCommands(program) {
|
|
68
38
|
program
|
|
69
39
|
.command('login')
|
|
70
40
|
.description('Authenticate with Indemn platform')
|
|
71
|
-
.option('--env <environment>', 'Target environment'
|
|
41
|
+
.option('--env <environment>', 'Target environment')
|
|
72
42
|
.action(async (options) => {
|
|
73
43
|
try {
|
|
74
|
-
const env = options.env;
|
|
44
|
+
const env = (options.env || process.env.INDEMN_ENV || 'dev');
|
|
75
45
|
if (env !== 'dev' && env !== 'production') {
|
|
76
46
|
printError('Environment must be "dev" or "production"');
|
|
77
47
|
process.exit(1);
|
|
@@ -107,7 +77,13 @@ export function registerAuthCommands(program) {
|
|
|
107
77
|
}
|
|
108
78
|
catch (err) {
|
|
109
79
|
spinner.fail('Authentication failed');
|
|
110
|
-
|
|
80
|
+
if (err instanceof Error) {
|
|
81
|
+
printError(err.message);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
printError(err);
|
|
85
|
+
}
|
|
86
|
+
process.exit(1);
|
|
111
87
|
}
|
|
112
88
|
}
|
|
113
89
|
catch (err) {
|
package/dist/cli/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAExE,SAAS,MAAM,CAAC,QAAgB;IAC9B,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IACH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB;IACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -11,7 +11,7 @@ const program = new Command();
|
|
|
11
11
|
program
|
|
12
12
|
.name('indemn')
|
|
13
13
|
.description('CLI for managing Indemn AI agents')
|
|
14
|
-
.version('1.
|
|
14
|
+
.version('1.2.0');
|
|
15
15
|
program.option('--env <environment>', 'Environment (dev or production)');
|
|
16
16
|
// Hook to set environment before any command runs
|
|
17
17
|
program.hook('preAction', (thisCommand) => {
|
package/dist/sdk/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/sdk/client.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/sdk/client.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,KAAK,EAAe,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAe3F,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,KAAK,CAAmB;gBAEpB,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE;IAgBjF,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,CAAC;IAQ3C,MAAM,CAAC,UAAU,IAAI,YAAY,GAAG,IAAI;IAiBxC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAatD,MAAM,CAAC,WAAW,IAAI,IAAI;IAK1B,cAAc,IAAI,WAAW;IAC7B,QAAQ,IAAI,MAAM;IAClB,SAAS,IAAI,MAAM;IACnB,QAAQ,IAAI,gBAAgB;IAE5B,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,aAAa;IAKf,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAiBjF,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAalE,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAajE,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAapD,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAa/E,SAAS,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAShE,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAS/D,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IASlD,iBAAiB,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;YAYlG,qBAAqB;YAyBrB,mBAAmB;CAOlC"}
|
package/dist/sdk/client.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import Conf from 'conf';
|
|
2
|
+
import { chmodSync } from 'node:fs';
|
|
2
3
|
const DEFAULT_HOSTS = {
|
|
3
4
|
dev: {
|
|
4
5
|
copilot: 'https://devcopilot.indemn.ai/api',
|
|
@@ -60,6 +61,13 @@ export class IndemnClient {
|
|
|
60
61
|
for (const [key, value] of Object.entries(config)) {
|
|
61
62
|
store.set(key, value);
|
|
62
63
|
}
|
|
64
|
+
// Restrict config file to owner-only (contains API key)
|
|
65
|
+
try {
|
|
66
|
+
chmodSync(store.path, 0o600);
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// Non-fatal — Windows doesn't support Unix permissions
|
|
70
|
+
}
|
|
63
71
|
}
|
|
64
72
|
static clearConfig() {
|
|
65
73
|
const store = IndemnClient.getConfigStore();
|
package/dist/sdk/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/sdk/client.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/sdk/client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@indemn/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "CLI, MCP server, and plugin for managing Indemn AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/sdk/index.js",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"firebase": "^11.6.0",
|
|
38
38
|
"ora": "^8.2.0",
|
|
39
39
|
"react": "^19.2.4",
|
|
40
|
-
"socket.io-client": "^4.8.
|
|
40
|
+
"socket.io-client": "^4.8.3",
|
|
41
41
|
"zod": "^3.24.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
package/src/cli/auth.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Command } from 'commander';
|
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import ora from 'ora';
|
|
4
4
|
import * as readline from 'readline';
|
|
5
|
+
import { Writable } from 'node:stream';
|
|
5
6
|
import { login, logout, whoami } from '../sdk/auth.js';
|
|
6
7
|
import type { Environment } from '../sdk/types.js';
|
|
7
8
|
import { printError, printSuccess, printJson } from './utils/output.js';
|
|
@@ -21,52 +22,20 @@ function prompt(question: string): Promise<string> {
|
|
|
21
22
|
|
|
22
23
|
function promptPassword(question: string): Promise<string> {
|
|
23
24
|
return new Promise((resolve) => {
|
|
25
|
+
const mutedOutput = new Writable({
|
|
26
|
+
write(_chunk, _encoding, callback) { callback(); },
|
|
27
|
+
});
|
|
24
28
|
const rl = readline.createInterface({
|
|
25
29
|
input: process.stdin,
|
|
26
|
-
output:
|
|
30
|
+
output: mutedOutput,
|
|
31
|
+
terminal: true,
|
|
27
32
|
});
|
|
28
|
-
|
|
29
|
-
// Disable echoing by writing to stdout manually
|
|
30
33
|
process.stdout.write(question);
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
let password = '';
|
|
39
|
-
const onData = (char: Buffer) => {
|
|
40
|
-
const c = char.toString('utf8');
|
|
41
|
-
if (c === '\n' || c === '\r' || c === '\u0004') {
|
|
42
|
-
if (stdin.isTTY) {
|
|
43
|
-
stdin.setRawMode(wasRaw ?? false);
|
|
44
|
-
}
|
|
45
|
-
stdin.removeListener('data', onData);
|
|
46
|
-
process.stdout.write('\n');
|
|
47
|
-
rl.close();
|
|
48
|
-
resolve(password);
|
|
49
|
-
} else if (c === '\u0003') {
|
|
50
|
-
// Ctrl+C
|
|
51
|
-
if (stdin.isTTY) {
|
|
52
|
-
stdin.setRawMode(wasRaw ?? false);
|
|
53
|
-
}
|
|
54
|
-
stdin.removeListener('data', onData);
|
|
55
|
-
rl.close();
|
|
56
|
-
process.exit(1);
|
|
57
|
-
} else if (c === '\u007f' || c === '\b') {
|
|
58
|
-
// Backspace
|
|
59
|
-
if (password.length > 0) {
|
|
60
|
-
password = password.slice(0, -1);
|
|
61
|
-
process.stdout.write('\b \b');
|
|
62
|
-
}
|
|
63
|
-
} else {
|
|
64
|
-
password += c;
|
|
65
|
-
process.stdout.write('*');
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
stdin.on('data', onData);
|
|
34
|
+
rl.question('', (answer) => {
|
|
35
|
+
process.stdout.write('\n');
|
|
36
|
+
rl.close();
|
|
37
|
+
resolve(answer);
|
|
38
|
+
});
|
|
70
39
|
});
|
|
71
40
|
}
|
|
72
41
|
|
|
@@ -74,10 +43,10 @@ export function registerAuthCommands(program: Command): void {
|
|
|
74
43
|
program
|
|
75
44
|
.command('login')
|
|
76
45
|
.description('Authenticate with Indemn platform')
|
|
77
|
-
.option('--env <environment>', 'Target environment'
|
|
46
|
+
.option('--env <environment>', 'Target environment')
|
|
78
47
|
.action(async (options) => {
|
|
79
48
|
try {
|
|
80
|
-
const env = options.env as Environment;
|
|
49
|
+
const env = (options.env || process.env.INDEMN_ENV || 'dev') as Environment;
|
|
81
50
|
if (env !== 'dev' && env !== 'production') {
|
|
82
51
|
printError('Environment must be "dev" or "production"');
|
|
83
52
|
process.exit(1);
|
|
@@ -116,7 +85,12 @@ export function registerAuthCommands(program: Command): void {
|
|
|
116
85
|
console.log(chalk.dim(` API Key: ${result.apiKey.substring(0, 12)}...`));
|
|
117
86
|
} catch (err) {
|
|
118
87
|
spinner.fail('Authentication failed');
|
|
119
|
-
|
|
88
|
+
if (err instanceof Error) {
|
|
89
|
+
printError(err.message);
|
|
90
|
+
} else {
|
|
91
|
+
printError(err);
|
|
92
|
+
}
|
|
93
|
+
process.exit(1);
|
|
120
94
|
}
|
|
121
95
|
} catch (err) {
|
|
122
96
|
printError(err);
|
package/src/cli/index.ts
CHANGED
package/src/sdk/client.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import Conf from 'conf';
|
|
2
|
+
import { chmodSync } from 'node:fs';
|
|
2
3
|
import type { ApiResponse, Environment, EnvironmentHosts, IndemnConfig } from './types.js';
|
|
3
4
|
|
|
4
5
|
const DEFAULT_HOSTS: Record<Environment, EnvironmentHosts> = {
|
|
@@ -66,6 +67,12 @@ export class IndemnClient {
|
|
|
66
67
|
for (const [key, value] of Object.entries(config)) {
|
|
67
68
|
store.set(key as keyof IndemnConfig, value);
|
|
68
69
|
}
|
|
70
|
+
// Restrict config file to owner-only (contains API key)
|
|
71
|
+
try {
|
|
72
|
+
chmodSync(store.path, 0o600);
|
|
73
|
+
} catch {
|
|
74
|
+
// Non-fatal — Windows doesn't support Unix permissions
|
|
75
|
+
}
|
|
69
76
|
}
|
|
70
77
|
|
|
71
78
|
static clearConfig(): void {
|