@kya-os/cli 0.1.0-beta.1 ā 0.1.0-beta.3
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/commands/check.js +51 -57
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/claim.js +33 -39
- package/dist/commands/claim.js.map +1 -1
- package/dist/commands/env.js +43 -49
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/init.js +44 -50
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/rotate.js +31 -37
- package/dist/commands/rotate.js.map +1 -1
- package/dist/index.js +16 -21
- package/dist/index.js.map +1 -1
- package/dist/utils/env-manager.js +16 -20
- package/dist/utils/env-manager.js.map +1 -1
- package/dist/utils/platform-detector.js +15 -19
- package/dist/utils/platform-detector.js.map +1 -1
- package/dist/utils/prompts.js +21 -34
- package/dist/utils/prompts.js.map +1 -1
- package/package.json +5 -4
package/dist/commands/init.js
CHANGED
|
@@ -1,42 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const platform_detector_1 = require("../utils/platform-detector");
|
|
11
|
-
const env_manager_1 = require("../utils/env-manager");
|
|
12
|
-
const prompts_1 = require("../utils/prompts");
|
|
13
|
-
const fs_1 = require("fs");
|
|
14
|
-
const path_1 = require("path");
|
|
15
|
-
async function init(options) {
|
|
1
|
+
import { enableMCPIdentity } from '@kya-os/mcp-i';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import ora from 'ora';
|
|
4
|
+
import { detectPlatform, getPlatformSpecificConfig } from '../utils/platform-detector.js';
|
|
5
|
+
import { EnvManager } from '../utils/env-manager.js';
|
|
6
|
+
import { promptForInit, showSuccess, showError, showWarning } from '../utils/prompts.js';
|
|
7
|
+
import { existsSync } from 'fs';
|
|
8
|
+
import { join } from 'path';
|
|
9
|
+
export async function init(options) {
|
|
16
10
|
try {
|
|
17
11
|
// Detect platform
|
|
18
|
-
const platformInfo =
|
|
19
|
-
console.log(
|
|
20
|
-
console.log(` Platform: ${
|
|
12
|
+
const platformInfo = detectPlatform();
|
|
13
|
+
console.log(chalk.cyan('\nš Detected environment:'));
|
|
14
|
+
console.log(` Platform: ${chalk.bold(platformInfo.platform)}`);
|
|
21
15
|
if (platformInfo.framework) {
|
|
22
|
-
console.log(` Framework: ${
|
|
16
|
+
console.log(` Framework: ${chalk.bold(platformInfo.framework)}`);
|
|
23
17
|
}
|
|
24
|
-
console.log(` Package Manager: ${
|
|
18
|
+
console.log(` Package Manager: ${chalk.bold(platformInfo.packageManager)}`);
|
|
25
19
|
// Check for existing configuration
|
|
26
|
-
const envManager = new
|
|
27
|
-
const existingIdentityFile =
|
|
20
|
+
const envManager = new EnvManager();
|
|
21
|
+
const existingIdentityFile = existsSync(join(process.cwd(), '.mcp-identity.json'));
|
|
28
22
|
const existingEnvVars = envManager.getFromProcess();
|
|
29
23
|
if ((existingIdentityFile || existingEnvVars.MCP_IDENTITY_DID) && !options.force) {
|
|
30
|
-
|
|
24
|
+
showWarning('MCP-I is already configured in this project.');
|
|
31
25
|
console.log('Use --force to reconfigure.');
|
|
32
26
|
// Show current configuration
|
|
33
27
|
if (existingEnvVars.MCP_IDENTITY_DID) {
|
|
34
|
-
console.log(`\nCurrent DID: ${
|
|
28
|
+
console.log(`\nCurrent DID: ${chalk.green(existingEnvVars.MCP_IDENTITY_DID)}`);
|
|
35
29
|
}
|
|
36
30
|
return;
|
|
37
31
|
}
|
|
38
32
|
// Prompt for configuration
|
|
39
|
-
const answers = await
|
|
33
|
+
const answers = await promptForInit({
|
|
40
34
|
name: options.name,
|
|
41
35
|
description: options.description,
|
|
42
36
|
repository: options.repository
|
|
@@ -53,14 +47,14 @@ async function init(options) {
|
|
|
53
47
|
directories = answers.specificDirectories || [];
|
|
54
48
|
}
|
|
55
49
|
// Get platform-specific config
|
|
56
|
-
const platformConfig =
|
|
50
|
+
const platformConfig = getPlatformSpecificConfig(platformInfo.platform);
|
|
57
51
|
let identity;
|
|
58
52
|
let envVars = null;
|
|
59
53
|
if (!options.skipRegistration && answers.confirmRegistration) {
|
|
60
54
|
// Register agent
|
|
61
|
-
const spinner = (
|
|
55
|
+
const spinner = ora('Registering agent with knowthat.ai...').start();
|
|
62
56
|
try {
|
|
63
|
-
identity = await
|
|
57
|
+
identity = await enableMCPIdentity({
|
|
64
58
|
name: answers.name,
|
|
65
59
|
description: answers.description,
|
|
66
60
|
repository: answers.repository,
|
|
@@ -79,16 +73,16 @@ async function init(options) {
|
|
|
79
73
|
MCP_IDENTITY_AGENT_ID: identity.agentId || '',
|
|
80
74
|
MCP_IDENTITY_AGENT_SLUG: identity.agentSlug || ''
|
|
81
75
|
};
|
|
82
|
-
console.log(`\nš ${
|
|
83
|
-
console.log(` DID: ${
|
|
84
|
-
console.log(` Profile: ${
|
|
76
|
+
console.log(`\nš ${chalk.bold('Agent Details:')}`);
|
|
77
|
+
console.log(` DID: ${chalk.green(identity.did)}`);
|
|
78
|
+
console.log(` Profile: ${chalk.cyan(`https://knowthat.ai/agents/${envVars.MCP_IDENTITY_AGENT_SLUG}`)}`);
|
|
85
79
|
// Try to get claim URL
|
|
86
80
|
try {
|
|
87
81
|
const { claimUrl } = await identity.requestEditAccess();
|
|
88
82
|
if (claimUrl) {
|
|
89
|
-
console.log(`\nšÆ ${
|
|
90
|
-
console.log(` ${
|
|
91
|
-
console.log(` ${
|
|
83
|
+
console.log(`\nšÆ ${chalk.bold('Claim your agent:')}`);
|
|
84
|
+
console.log(` ${chalk.cyan(claimUrl)}`);
|
|
85
|
+
console.log(` ${chalk.gray('(This link lets you manage your agent)')}`);
|
|
92
86
|
}
|
|
93
87
|
}
|
|
94
88
|
catch (error) {
|
|
@@ -98,61 +92,61 @@ async function init(options) {
|
|
|
98
92
|
catch (error) {
|
|
99
93
|
spinner.fail('Registration failed');
|
|
100
94
|
if (error.message?.includes('429')) {
|
|
101
|
-
|
|
95
|
+
showError('Rate limit exceeded. Please wait a few minutes and try again.');
|
|
102
96
|
}
|
|
103
97
|
else if (error.message?.includes('500')) {
|
|
104
|
-
|
|
98
|
+
showError('Server error. The registry might be temporarily down.');
|
|
105
99
|
}
|
|
106
100
|
else {
|
|
107
|
-
|
|
101
|
+
showError(error.message || 'Failed to register agent');
|
|
108
102
|
}
|
|
109
103
|
console.log('\nYou can still create the configuration files and register later.');
|
|
110
|
-
answers.confirmEnvCreation = await
|
|
104
|
+
answers.confirmEnvCreation = await promptForInit({ confirmEnvCreation: true }).then(a => a.confirmEnvCreation);
|
|
111
105
|
}
|
|
112
106
|
}
|
|
113
107
|
// Create environment files
|
|
114
108
|
if (answers.confirmEnvCreation && envVars) {
|
|
115
|
-
console.log(`\nš ${
|
|
109
|
+
console.log(`\nš ${chalk.bold('Creating environment files...')}`);
|
|
116
110
|
try {
|
|
117
111
|
// Create actual env file
|
|
118
112
|
const envFile = platformConfig.envFile;
|
|
119
113
|
await envManager.createEnvFile(envFile, envVars, { force: options.force });
|
|
120
|
-
console.log(` ā Created ${
|
|
114
|
+
console.log(` ā Created ${chalk.green(envFile)}`);
|
|
121
115
|
// Create example file
|
|
122
116
|
const exampleFile = `${envFile}.example`;
|
|
123
117
|
await envManager.createEnvFile(exampleFile, envVars, { example: true });
|
|
124
|
-
console.log(` ā Created ${
|
|
118
|
+
console.log(` ā Created ${chalk.green(exampleFile)}`);
|
|
125
119
|
// Check gitignore
|
|
126
120
|
const { missing } = envManager.checkGitignore([envFile, '.mcp-identity.json']);
|
|
127
121
|
if (missing.length > 0) {
|
|
128
122
|
envManager.addToGitignore(missing);
|
|
129
|
-
console.log(` ā Added to ${
|
|
123
|
+
console.log(` ā Added to ${chalk.green('.gitignore')}: ${missing.join(', ')}`);
|
|
130
124
|
}
|
|
131
125
|
}
|
|
132
126
|
catch (error) {
|
|
133
|
-
|
|
127
|
+
showError(`Failed to create environment files: ${error.message}`);
|
|
134
128
|
}
|
|
135
129
|
}
|
|
136
130
|
// Show next steps
|
|
137
|
-
console.log(`\nš ${
|
|
131
|
+
console.log(`\nš ${chalk.bold('Next Steps:')}`);
|
|
138
132
|
console.log('\n1. Install the MCP-I package:');
|
|
139
|
-
console.log(` ${
|
|
133
|
+
console.log(` ${chalk.cyan(`${platformInfo.packageManager} install @kya-os/mcp-i`)}`);
|
|
140
134
|
console.log('\n2. Add to your code:');
|
|
141
|
-
console.log(` ${
|
|
135
|
+
console.log(` ${chalk.cyan('import "@kya-os/mcp-i/auto"')}`);
|
|
142
136
|
if (platformInfo.platform === 'vercel' || platformInfo.platform === 'nextjs') {
|
|
143
137
|
console.log('\n3. For production deployment:');
|
|
144
138
|
console.log(' - Go to Vercel Dashboard ā Settings ā Environment Variables');
|
|
145
139
|
console.log(' - Add all MCP_IDENTITY_* variables from .env.local');
|
|
146
|
-
console.log(` - Run: ${
|
|
140
|
+
console.log(` - Run: ${chalk.cyan('npx kya-os env copy')} to copy them to clipboard`);
|
|
147
141
|
}
|
|
148
|
-
console.log(`\n${
|
|
142
|
+
console.log(`\n${chalk.bold('Platform-specific notes:')}`);
|
|
149
143
|
platformConfig.instructions.forEach((instruction, i) => {
|
|
150
144
|
console.log(`${i + 1}. ${instruction}`);
|
|
151
145
|
});
|
|
152
|
-
|
|
146
|
+
showSuccess('MCP-I initialization complete!');
|
|
153
147
|
}
|
|
154
148
|
catch (error) {
|
|
155
|
-
|
|
149
|
+
showError(error.message || 'Initialization failed');
|
|
156
150
|
process.exit(1);
|
|
157
151
|
}
|
|
158
152
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/rotate.js
CHANGED
|
@@ -1,58 +1,52 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const env_manager_1 = require("../utils/env-manager");
|
|
11
|
-
const prompts_1 = require("../utils/prompts");
|
|
12
|
-
const fs_1 = require("fs");
|
|
13
|
-
const path_1 = require("path");
|
|
14
|
-
async function rotate(options) {
|
|
15
|
-
console.log(chalk_1.default.cyan('\nš Key Rotation\n'));
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import { MCPIdentity } from '@kya-os/mcp-i';
|
|
4
|
+
import { EnvManager } from '../utils/env-manager.js';
|
|
5
|
+
import { confirmRotation, showSuccess, showError, showWarning } from '../utils/prompts.js';
|
|
6
|
+
import { existsSync } from 'fs';
|
|
7
|
+
import { join } from 'path';
|
|
8
|
+
export async function rotate(options) {
|
|
9
|
+
console.log(chalk.cyan('\nš Key Rotation\n'));
|
|
16
10
|
// Check for existing identity
|
|
17
|
-
const envManager = new
|
|
11
|
+
const envManager = new EnvManager();
|
|
18
12
|
const processVars = envManager.getFromProcess();
|
|
19
13
|
if (!processVars.MCP_IDENTITY_DID) {
|
|
20
|
-
|
|
14
|
+
showError('No MCP-I identity found. Run "npx kya-os init" first.');
|
|
21
15
|
return;
|
|
22
16
|
}
|
|
23
17
|
// Confirm rotation
|
|
24
18
|
if (!options.force) {
|
|
25
|
-
const { confirm, reason } = await
|
|
19
|
+
const { confirm, reason } = await confirmRotation();
|
|
26
20
|
if (!confirm) {
|
|
27
|
-
console.log(
|
|
21
|
+
console.log(chalk.gray('\nRotation cancelled.'));
|
|
28
22
|
return;
|
|
29
23
|
}
|
|
30
24
|
options.reason = reason;
|
|
31
25
|
}
|
|
32
|
-
|
|
26
|
+
showWarning('Key rotation will generate new cryptographic keys.');
|
|
33
27
|
console.log('The old keys will remain valid during a 7-day grace period.\n');
|
|
34
|
-
const spinner = (
|
|
28
|
+
const spinner = ora('Rotating keys...').start();
|
|
35
29
|
try {
|
|
36
30
|
// Initialize identity from existing configuration
|
|
37
|
-
const identity = await
|
|
31
|
+
const identity = await MCPIdentity.init();
|
|
38
32
|
// Check if rotation is available
|
|
39
33
|
const keyHealth = identity.checkKeyHealth();
|
|
40
34
|
if (!keyHealth) {
|
|
41
35
|
spinner.fail('Key rotation not available (using memory storage)');
|
|
42
|
-
console.log(
|
|
36
|
+
console.log(chalk.blue('ā¹ļø Key rotation requires file storage. Serverless environments cannot rotate keys.'));
|
|
43
37
|
return;
|
|
44
38
|
}
|
|
45
39
|
// Show current key health
|
|
46
40
|
spinner.info('Current key status:');
|
|
47
41
|
console.log(` Age: ${Math.floor(keyHealth.age / (24 * 60 * 60 * 1000))} days`);
|
|
48
42
|
console.log(` Signatures: ${keyHealth.signatureCount.toLocaleString()}`);
|
|
49
|
-
console.log(` Should rotate: ${keyHealth.shouldRotate ?
|
|
43
|
+
console.log(` Should rotate: ${keyHealth.shouldRotate ? chalk.yellow('Yes') : chalk.green('No')}`);
|
|
50
44
|
// Perform rotation
|
|
51
45
|
spinner.start('Contacting registry...');
|
|
52
46
|
const result = await identity.rotateKeys(options.reason);
|
|
53
47
|
if (result.success) {
|
|
54
48
|
spinner.succeed('Keys rotated successfully!');
|
|
55
|
-
console.log(`\n${
|
|
49
|
+
console.log(`\n${chalk.bold('š New Keys Generated:')}`);
|
|
56
50
|
console.log(` Grace period ends: ${new Date(result.gracePeriodEnd).toLocaleDateString()}`);
|
|
57
51
|
console.log(` Old keys remain valid until then`);
|
|
58
52
|
// Get new identity info
|
|
@@ -64,42 +58,42 @@ async function rotate(options) {
|
|
|
64
58
|
MCP_IDENTITY_AGENT_SLUG: identity.agentSlug || ''
|
|
65
59
|
};
|
|
66
60
|
// Update environment files
|
|
67
|
-
console.log(`\n${
|
|
61
|
+
console.log(`\n${chalk.bold('š Updating Environment Files:')}`);
|
|
68
62
|
const files = ['.env', '.env.local'];
|
|
69
63
|
for (const file of files) {
|
|
70
|
-
if (
|
|
64
|
+
if (existsSync(join(process.cwd(), file))) {
|
|
71
65
|
try {
|
|
72
66
|
await envManager.createEnvFile(file, newVars, { force: true });
|
|
73
|
-
console.log(` ā Updated ${
|
|
67
|
+
console.log(` ā Updated ${chalk.green(file)}`);
|
|
74
68
|
}
|
|
75
69
|
catch (error) {
|
|
76
|
-
console.log(` ā Failed to update ${
|
|
70
|
+
console.log(` ā Failed to update ${chalk.red(file)}: ${error.message}`);
|
|
77
71
|
}
|
|
78
72
|
}
|
|
79
73
|
}
|
|
80
|
-
|
|
81
|
-
console.log(`\n${
|
|
74
|
+
showSuccess('Key rotation complete!');
|
|
75
|
+
console.log(`\n${chalk.bold('ā ļø Important Next Steps:')}`);
|
|
82
76
|
console.log('\n1. Update production environment variables:');
|
|
83
|
-
console.log(` ${
|
|
77
|
+
console.log(` ${chalk.cyan('npx kya-os env copy')}`);
|
|
84
78
|
console.log('\n2. Deploy your application with new keys');
|
|
85
79
|
console.log('\n3. Monitor for any authentication issues');
|
|
86
|
-
console.log(`\n${
|
|
80
|
+
console.log(`\n${chalk.yellow('Note:')} Both old and new keys will work for 7 days.`);
|
|
87
81
|
}
|
|
88
82
|
else {
|
|
89
83
|
spinner.fail('Key rotation failed');
|
|
90
|
-
|
|
84
|
+
showError(result.error || 'Unknown error during rotation');
|
|
91
85
|
}
|
|
92
86
|
}
|
|
93
87
|
catch (error) {
|
|
94
88
|
spinner.fail('Key rotation failed');
|
|
95
89
|
if (error.message?.includes('429')) {
|
|
96
|
-
|
|
90
|
+
showError('Rate limit exceeded. Please try again later.');
|
|
97
91
|
}
|
|
98
92
|
else if (error.message?.includes('Network')) {
|
|
99
|
-
|
|
93
|
+
showError('Network error. Check your internet connection.');
|
|
100
94
|
}
|
|
101
95
|
else {
|
|
102
|
-
|
|
96
|
+
showError(error.message || 'Failed to rotate keys');
|
|
103
97
|
}
|
|
104
98
|
}
|
|
105
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rotate.js","sourceRoot":"","sources":["../../src/commands/rotate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rotate.js","sourceRoot":"","sources":["../../src/commands/rotate.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,19 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
const check_1 = require("./commands/check");
|
|
11
|
-
const env_1 = require("./commands/env");
|
|
12
|
-
const rotate_1 = require("./commands/rotate");
|
|
13
|
-
const claim_1 = require("./commands/claim");
|
|
14
|
-
const program = new commander_1.Command();
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { init } from './commands/init.js';
|
|
5
|
+
import { check } from './commands/check.js';
|
|
6
|
+
import { env } from './commands/env.js';
|
|
7
|
+
import { rotate } from './commands/rotate.js';
|
|
8
|
+
import { claim } from './commands/claim.js';
|
|
9
|
+
const program = new Command();
|
|
15
10
|
// ASCII art logo
|
|
16
|
-
const logo =
|
|
11
|
+
const logo = chalk.cyan(`
|
|
17
12
|
ā¦āā⦠ā¦āāā āāāāāā
|
|
18
13
|
ā ā©āāā¦āā āā£āāāā āāāā
|
|
19
14
|
ā© ā© ā© ā© ā© āāāāāā
|
|
@@ -33,13 +28,13 @@ program
|
|
|
33
28
|
.option('-p, --platform <platform>', 'Target platform (auto-detected if not specified)')
|
|
34
29
|
.option('--skip-registration', 'Skip agent registration (create files only)')
|
|
35
30
|
.option('--force', 'Overwrite existing configuration')
|
|
36
|
-
.action(
|
|
31
|
+
.action(init);
|
|
37
32
|
// Check command
|
|
38
33
|
program
|
|
39
34
|
.command('check')
|
|
40
35
|
.description('Check MCP-I setup status')
|
|
41
36
|
.option('-v, --verbose', 'Show detailed information')
|
|
42
|
-
.action(
|
|
37
|
+
.action(check);
|
|
43
38
|
// Env command with subcommands
|
|
44
39
|
const envCommand = program
|
|
45
40
|
.command('env')
|
|
@@ -47,27 +42,27 @@ const envCommand = program
|
|
|
47
42
|
envCommand
|
|
48
43
|
.command('show')
|
|
49
44
|
.description('Show required environment variables')
|
|
50
|
-
.action(() =>
|
|
45
|
+
.action(() => env('show'));
|
|
51
46
|
envCommand
|
|
52
47
|
.command('copy')
|
|
53
48
|
.description('Copy environment variables to clipboard')
|
|
54
|
-
.action(() =>
|
|
49
|
+
.action(() => env('copy'));
|
|
55
50
|
envCommand
|
|
56
51
|
.command('verify')
|
|
57
52
|
.description('Verify environment variables are set correctly')
|
|
58
|
-
.action(() =>
|
|
53
|
+
.action(() => env('verify'));
|
|
59
54
|
// Rotate command
|
|
60
55
|
program
|
|
61
56
|
.command('rotate')
|
|
62
57
|
.description('Rotate identity keys')
|
|
63
58
|
.option('-f, --force', 'Force rotation without confirmation')
|
|
64
59
|
.option('-r, --reason <reason>', 'Reason for rotation')
|
|
65
|
-
.action(
|
|
60
|
+
.action(rotate);
|
|
66
61
|
// Claim command
|
|
67
62
|
program
|
|
68
63
|
.command('claim')
|
|
69
64
|
.description('Get agent claim/edit URLs')
|
|
70
|
-
.action(
|
|
65
|
+
.action(claim);
|
|
71
66
|
// Parse arguments
|
|
72
67
|
program.parse();
|
|
73
68
|
// Show help if no command specified
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,iBAAiB;AACjB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;;;;CAIvB,CAAC,CAAC;AAEH,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAE/B,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,mBAAmB,EAAE,YAAY,CAAC;KACzC,MAAM,CAAC,iCAAiC,EAAE,mBAAmB,CAAC;KAC9D,MAAM,CAAC,wBAAwB,EAAE,gBAAgB,CAAC;KAClD,MAAM,CAAC,2BAA2B,EAAE,kDAAkD,CAAC;KACvF,MAAM,CAAC,qBAAqB,EAAE,6CAA6C,CAAC;KAC5E,MAAM,CAAC,SAAS,EAAE,kCAAkC,CAAC;KACrD,MAAM,CAAC,IAAI,CAAC,CAAC;AAEhB,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;KACpD,MAAM,CAAC,KAAK,CAAC,CAAC;AAEjB,+BAA+B;AAC/B,MAAM,UAAU,GAAG,OAAO;KACvB,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,8BAA8B,CAAC,CAAC;AAE/C,UAAU;KACP,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAE7B,UAAU;KACP,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAE7B,UAAU;KACP,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE/B,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,aAAa,EAAE,qCAAqC,CAAC;KAC5D,MAAM,CAAC,uBAAuB,EAAE,qBAAqB,CAAC;KACtD,MAAM,CAAC,MAAM,CAAC,CAAC;AAElB,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEjB,kBAAkB;AAClB,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,oCAAoC;AACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const fs_1 = require("fs");
|
|
5
|
-
const path_1 = require("path");
|
|
6
|
-
class EnvManager {
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
export class EnvManager {
|
|
7
4
|
constructor(projectRoot = process.cwd()) {
|
|
8
5
|
this.projectRoot = projectRoot;
|
|
9
6
|
}
|
|
@@ -11,9 +8,9 @@ class EnvManager {
|
|
|
11
8
|
* Create or update environment file with MCP-I variables
|
|
12
9
|
*/
|
|
13
10
|
async createEnvFile(filename, variables, options = {}) {
|
|
14
|
-
const filepath =
|
|
11
|
+
const filepath = join(this.projectRoot, filename);
|
|
15
12
|
// Check if file exists
|
|
16
|
-
if (
|
|
13
|
+
if (existsSync(filepath) && !options.force && !options.example) {
|
|
17
14
|
throw new Error(`${filename} already exists. Use --force to overwrite.`);
|
|
18
15
|
}
|
|
19
16
|
let content = '';
|
|
@@ -38,17 +35,17 @@ class EnvManager {
|
|
|
38
35
|
});
|
|
39
36
|
}
|
|
40
37
|
// Write file
|
|
41
|
-
|
|
38
|
+
writeFileSync(filepath, content, 'utf-8');
|
|
42
39
|
}
|
|
43
40
|
/**
|
|
44
41
|
* Read environment variables from file
|
|
45
42
|
*/
|
|
46
43
|
readEnvFile(filename) {
|
|
47
|
-
const filepath =
|
|
48
|
-
if (!
|
|
44
|
+
const filepath = join(this.projectRoot, filename);
|
|
45
|
+
if (!existsSync(filepath)) {
|
|
49
46
|
return {};
|
|
50
47
|
}
|
|
51
|
-
const content =
|
|
48
|
+
const content = readFileSync(filepath, 'utf-8');
|
|
52
49
|
const vars = {};
|
|
53
50
|
// Parse env file
|
|
54
51
|
content.split('\n').forEach(line => {
|
|
@@ -67,13 +64,13 @@ class EnvManager {
|
|
|
67
64
|
* Check if .gitignore includes env files
|
|
68
65
|
*/
|
|
69
66
|
checkGitignore(envFiles) {
|
|
70
|
-
const gitignorePath =
|
|
67
|
+
const gitignorePath = join(this.projectRoot, '.gitignore');
|
|
71
68
|
const missing = [];
|
|
72
69
|
const ignored = [];
|
|
73
|
-
if (!
|
|
70
|
+
if (!existsSync(gitignorePath)) {
|
|
74
71
|
return { missing: envFiles, ignored: [] };
|
|
75
72
|
}
|
|
76
|
-
const gitignoreContent =
|
|
73
|
+
const gitignoreContent = readFileSync(gitignorePath, 'utf-8');
|
|
77
74
|
const patterns = gitignoreContent.split('\n')
|
|
78
75
|
.filter(line => line.trim() && !line.startsWith('#'));
|
|
79
76
|
envFiles.forEach(file => {
|
|
@@ -96,10 +93,10 @@ class EnvManager {
|
|
|
96
93
|
* Add files to .gitignore
|
|
97
94
|
*/
|
|
98
95
|
addToGitignore(files) {
|
|
99
|
-
const gitignorePath =
|
|
96
|
+
const gitignorePath = join(this.projectRoot, '.gitignore');
|
|
100
97
|
// Read existing content or create new
|
|
101
|
-
let content =
|
|
102
|
-
?
|
|
98
|
+
let content = existsSync(gitignorePath)
|
|
99
|
+
? readFileSync(gitignorePath, 'utf-8')
|
|
103
100
|
: '';
|
|
104
101
|
// Add newline if file doesn't end with one
|
|
105
102
|
if (content && !content.endsWith('\n')) {
|
|
@@ -110,7 +107,7 @@ class EnvManager {
|
|
|
110
107
|
files.forEach(file => {
|
|
111
108
|
content += `${file}\n`;
|
|
112
109
|
});
|
|
113
|
-
|
|
110
|
+
writeFileSync(gitignorePath, content, 'utf-8');
|
|
114
111
|
}
|
|
115
112
|
/**
|
|
116
113
|
* Get environment variables from process.env
|
|
@@ -173,5 +170,4 @@ class EnvManager {
|
|
|
173
170
|
};
|
|
174
171
|
}
|
|
175
172
|
}
|
|
176
|
-
exports.EnvManager = EnvManager;
|
|
177
173
|
//# sourceMappingURL=env-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-manager.js","sourceRoot":"","sources":["../../src/utils/env-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"env-manager.js","sourceRoot":"","sources":["../../src/utils/env-manager.ts"],"names":[],"mappings":"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"}
|