@kya-os/cli 0.1.0-beta.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.
Files changed (38) hide show
  1. package/README.md +81 -0
  2. package/dist/commands/check.d.ts +6 -0
  3. package/dist/commands/check.d.ts.map +1 -0
  4. package/dist/commands/check.js +150 -0
  5. package/dist/commands/check.js.map +1 -0
  6. package/dist/commands/claim.d.ts +2 -0
  7. package/dist/commands/claim.d.ts.map +1 -0
  8. package/dist/commands/claim.js +71 -0
  9. package/dist/commands/claim.js.map +1 -0
  10. package/dist/commands/env.d.ts +2 -0
  11. package/dist/commands/env.d.ts.map +1 -0
  12. package/dist/commands/env.js +217 -0
  13. package/dist/commands/env.js.map +1 -0
  14. package/dist/commands/init.d.ts +11 -0
  15. package/dist/commands/init.d.ts.map +1 -0
  16. package/dist/commands/init.js +159 -0
  17. package/dist/commands/init.js.map +1 -0
  18. package/dist/commands/rotate.d.ts +7 -0
  19. package/dist/commands/rotate.d.ts.map +1 -0
  20. package/dist/commands/rotate.js +106 -0
  21. package/dist/commands/rotate.js.map +1 -0
  22. package/dist/index.d.ts +3 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +77 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/utils/env-manager.d.ts +53 -0
  27. package/dist/utils/env-manager.d.ts.map +1 -0
  28. package/dist/utils/env-manager.js +177 -0
  29. package/dist/utils/env-manager.js.map +1 -0
  30. package/dist/utils/platform-detector.d.ts +42 -0
  31. package/dist/utils/platform-detector.d.ts.map +1 -0
  32. package/dist/utils/platform-detector.js +137 -0
  33. package/dist/utils/platform-detector.js.map +1 -0
  34. package/dist/utils/prompts.d.ts +23 -0
  35. package/dist/utils/prompts.d.ts.map +1 -0
  36. package/dist/utils/prompts.js +158 -0
  37. package/dist/utils/prompts.js.map +1 -0
  38. package/package.json +48 -0
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.init = init;
7
+ const mcp_i_1 = require("@kya-os/mcp-i");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const ora_1 = __importDefault(require("ora"));
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) {
16
+ try {
17
+ // Detect platform
18
+ const platformInfo = (0, platform_detector_1.detectPlatform)();
19
+ console.log(chalk_1.default.cyan('\n🔍 Detected environment:'));
20
+ console.log(` Platform: ${chalk_1.default.bold(platformInfo.platform)}`);
21
+ if (platformInfo.framework) {
22
+ console.log(` Framework: ${chalk_1.default.bold(platformInfo.framework)}`);
23
+ }
24
+ console.log(` Package Manager: ${chalk_1.default.bold(platformInfo.packageManager)}`);
25
+ // Check for existing configuration
26
+ const envManager = new env_manager_1.EnvManager();
27
+ const existingIdentityFile = (0, fs_1.existsSync)((0, path_1.join)(process.cwd(), '.mcp-identity.json'));
28
+ const existingEnvVars = envManager.getFromProcess();
29
+ if ((existingIdentityFile || existingEnvVars.MCP_IDENTITY_DID) && !options.force) {
30
+ (0, prompts_1.showWarning)('MCP-I is already configured in this project.');
31
+ console.log('Use --force to reconfigure.');
32
+ // Show current configuration
33
+ if (existingEnvVars.MCP_IDENTITY_DID) {
34
+ console.log(`\nCurrent DID: ${chalk_1.default.green(existingEnvVars.MCP_IDENTITY_DID)}`);
35
+ }
36
+ return;
37
+ }
38
+ // Prompt for configuration
39
+ const answers = await (0, prompts_1.promptForInit)({
40
+ name: options.name,
41
+ description: options.description,
42
+ repository: options.repository
43
+ });
44
+ // Determine directories configuration
45
+ let directories;
46
+ if (answers.directories === 'verified') {
47
+ directories = 'verified';
48
+ }
49
+ else if (answers.directories === 'none') {
50
+ directories = 'none';
51
+ }
52
+ else {
53
+ directories = answers.specificDirectories || [];
54
+ }
55
+ // Get platform-specific config
56
+ const platformConfig = (0, platform_detector_1.getPlatformSpecificConfig)(platformInfo.platform);
57
+ let identity;
58
+ let envVars = null;
59
+ if (!options.skipRegistration && answers.confirmRegistration) {
60
+ // Register agent
61
+ const spinner = (0, ora_1.default)('Registering agent with knowthat.ai...').start();
62
+ try {
63
+ identity = await (0, mcp_i_1.enableMCPIdentity)({
64
+ name: answers.name,
65
+ description: answers.description,
66
+ repository: answers.repository,
67
+ directories: directories,
68
+ storage: platformConfig.storage,
69
+ transport: platformConfig.transport,
70
+ mode: 'production',
71
+ logLevel: 'silent'
72
+ });
73
+ spinner.succeed('Agent registered successfully!');
74
+ // Extract environment variables
75
+ envVars = {
76
+ MCP_IDENTITY_DID: identity.did,
77
+ MCP_IDENTITY_PUBLIC_KEY: identity.publicKey,
78
+ MCP_IDENTITY_PRIVATE_KEY: identity.privateKey || '', // Access private key
79
+ MCP_IDENTITY_AGENT_ID: identity.agentId || '',
80
+ MCP_IDENTITY_AGENT_SLUG: identity.agentSlug || ''
81
+ };
82
+ console.log(`\n📝 ${chalk_1.default.bold('Agent Details:')}`);
83
+ console.log(` DID: ${chalk_1.default.green(identity.did)}`);
84
+ console.log(` Profile: ${chalk_1.default.cyan(`https://knowthat.ai/agents/${envVars.MCP_IDENTITY_AGENT_SLUG}`)}`);
85
+ // Try to get claim URL
86
+ try {
87
+ const { claimUrl } = await identity.requestEditAccess();
88
+ if (claimUrl) {
89
+ console.log(`\n🎯 ${chalk_1.default.bold('Claim your agent:')}`);
90
+ console.log(` ${chalk_1.default.cyan(claimUrl)}`);
91
+ console.log(` ${chalk_1.default.gray('(This link lets you manage your agent)')}`);
92
+ }
93
+ }
94
+ catch (error) {
95
+ // Claim URL might fail due to rate limiting
96
+ }
97
+ }
98
+ catch (error) {
99
+ spinner.fail('Registration failed');
100
+ if (error.message?.includes('429')) {
101
+ (0, prompts_1.showError)('Rate limit exceeded. Please wait a few minutes and try again.');
102
+ }
103
+ else if (error.message?.includes('500')) {
104
+ (0, prompts_1.showError)('Server error. The registry might be temporarily down.');
105
+ }
106
+ else {
107
+ (0, prompts_1.showError)(error.message || 'Failed to register agent');
108
+ }
109
+ console.log('\nYou can still create the configuration files and register later.');
110
+ answers.confirmEnvCreation = await (0, prompts_1.promptForInit)({ confirmEnvCreation: true }).then(a => a.confirmEnvCreation);
111
+ }
112
+ }
113
+ // Create environment files
114
+ if (answers.confirmEnvCreation && envVars) {
115
+ console.log(`\n📄 ${chalk_1.default.bold('Creating environment files...')}`);
116
+ try {
117
+ // Create actual env file
118
+ const envFile = platformConfig.envFile;
119
+ await envManager.createEnvFile(envFile, envVars, { force: options.force });
120
+ console.log(` ✓ Created ${chalk_1.default.green(envFile)}`);
121
+ // Create example file
122
+ const exampleFile = `${envFile}.example`;
123
+ await envManager.createEnvFile(exampleFile, envVars, { example: true });
124
+ console.log(` ✓ Created ${chalk_1.default.green(exampleFile)}`);
125
+ // Check gitignore
126
+ const { missing } = envManager.checkGitignore([envFile, '.mcp-identity.json']);
127
+ if (missing.length > 0) {
128
+ envManager.addToGitignore(missing);
129
+ console.log(` ✓ Added to ${chalk_1.default.green('.gitignore')}: ${missing.join(', ')}`);
130
+ }
131
+ }
132
+ catch (error) {
133
+ (0, prompts_1.showError)(`Failed to create environment files: ${error.message}`);
134
+ }
135
+ }
136
+ // Show next steps
137
+ console.log(`\n📋 ${chalk_1.default.bold('Next Steps:')}`);
138
+ console.log('\n1. Install the MCP-I package:');
139
+ console.log(` ${chalk_1.default.cyan(`${platformInfo.packageManager} install @kya-os/mcp-i`)}`);
140
+ console.log('\n2. Add to your code:');
141
+ console.log(` ${chalk_1.default.cyan('import "@kya-os/mcp-i/auto"')}`);
142
+ if (platformInfo.platform === 'vercel' || platformInfo.platform === 'nextjs') {
143
+ console.log('\n3. For production deployment:');
144
+ console.log(' - Go to Vercel Dashboard → Settings → Environment Variables');
145
+ console.log(' - Add all MCP_IDENTITY_* variables from .env.local');
146
+ console.log(` - Run: ${chalk_1.default.cyan('npx kya-os env copy')} to copy them to clipboard`);
147
+ }
148
+ console.log(`\n${chalk_1.default.bold('Platform-specific notes:')}`);
149
+ platformConfig.instructions.forEach((instruction, i) => {
150
+ console.log(`${i + 1}. ${instruction}`);
151
+ });
152
+ (0, prompts_1.showSuccess)('MCP-I initialization complete!');
153
+ }
154
+ catch (error) {
155
+ (0, prompts_1.showError)(error.message || 'Initialization failed');
156
+ process.exit(1);
157
+ }
158
+ }
159
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface RotateOptions {
2
+ force?: boolean;
3
+ reason?: string;
4
+ }
5
+ export declare function rotate(options: RotateOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=rotate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotate.d.ts","sourceRoot":"","sources":["../../src/commands/rotate.ts"],"names":[],"mappings":"AAQA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,iBAyGlD"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.rotate = rotate;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const ora_1 = __importDefault(require("ora"));
9
+ const mcp_i_1 = require("@kya-os/mcp-i");
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'));
16
+ // Check for existing identity
17
+ const envManager = new env_manager_1.EnvManager();
18
+ const processVars = envManager.getFromProcess();
19
+ if (!processVars.MCP_IDENTITY_DID) {
20
+ (0, prompts_1.showError)('No MCP-I identity found. Run "npx kya-os init" first.');
21
+ return;
22
+ }
23
+ // Confirm rotation
24
+ if (!options.force) {
25
+ const { confirm, reason } = await (0, prompts_1.confirmRotation)();
26
+ if (!confirm) {
27
+ console.log(chalk_1.default.gray('\nRotation cancelled.'));
28
+ return;
29
+ }
30
+ options.reason = reason;
31
+ }
32
+ (0, prompts_1.showWarning)('Key rotation will generate new cryptographic keys.');
33
+ console.log('The old keys will remain valid during a 7-day grace period.\n');
34
+ const spinner = (0, ora_1.default)('Rotating keys...').start();
35
+ try {
36
+ // Initialize identity from existing configuration
37
+ const identity = await mcp_i_1.MCPIdentity.init();
38
+ // Check if rotation is available
39
+ const keyHealth = identity.checkKeyHealth();
40
+ if (!keyHealth) {
41
+ spinner.fail('Key rotation not available (using memory storage)');
42
+ console.log(chalk_1.default.blue('ℹ️ Key rotation requires file storage. Serverless environments cannot rotate keys.'));
43
+ return;
44
+ }
45
+ // Show current key health
46
+ spinner.info('Current key status:');
47
+ console.log(` Age: ${Math.floor(keyHealth.age / (24 * 60 * 60 * 1000))} days`);
48
+ console.log(` Signatures: ${keyHealth.signatureCount.toLocaleString()}`);
49
+ console.log(` Should rotate: ${keyHealth.shouldRotate ? chalk_1.default.yellow('Yes') : chalk_1.default.green('No')}`);
50
+ // Perform rotation
51
+ spinner.start('Contacting registry...');
52
+ const result = await identity.rotateKeys(options.reason);
53
+ if (result.success) {
54
+ spinner.succeed('Keys rotated successfully!');
55
+ console.log(`\n${chalk_1.default.bold('🔐 New Keys Generated:')}`);
56
+ console.log(` Grace period ends: ${new Date(result.gracePeriodEnd).toLocaleDateString()}`);
57
+ console.log(` Old keys remain valid until then`);
58
+ // Get new identity info
59
+ const newVars = {
60
+ MCP_IDENTITY_DID: identity.did,
61
+ MCP_IDENTITY_PUBLIC_KEY: identity.publicKey,
62
+ MCP_IDENTITY_PRIVATE_KEY: identity.privateKey || '',
63
+ MCP_IDENTITY_AGENT_ID: identity.agentId || '',
64
+ MCP_IDENTITY_AGENT_SLUG: identity.agentSlug || ''
65
+ };
66
+ // Update environment files
67
+ console.log(`\n${chalk_1.default.bold('📄 Updating Environment Files:')}`);
68
+ const files = ['.env', '.env.local'];
69
+ for (const file of files) {
70
+ if ((0, fs_1.existsSync)((0, path_1.join)(process.cwd(), file))) {
71
+ try {
72
+ await envManager.createEnvFile(file, newVars, { force: true });
73
+ console.log(` ✓ Updated ${chalk_1.default.green(file)}`);
74
+ }
75
+ catch (error) {
76
+ console.log(` ✗ Failed to update ${chalk_1.default.red(file)}: ${error.message}`);
77
+ }
78
+ }
79
+ }
80
+ (0, prompts_1.showSuccess)('Key rotation complete!');
81
+ console.log(`\n${chalk_1.default.bold('⚠️ Important Next Steps:')}`);
82
+ console.log('\n1. Update production environment variables:');
83
+ console.log(` ${chalk_1.default.cyan('npx kya-os env copy')}`);
84
+ console.log('\n2. Deploy your application with new keys');
85
+ console.log('\n3. Monitor for any authentication issues');
86
+ console.log(`\n${chalk_1.default.yellow('Note:')} Both old and new keys will work for 7 days.`);
87
+ }
88
+ else {
89
+ spinner.fail('Key rotation failed');
90
+ (0, prompts_1.showError)(result.error || 'Unknown error during rotation');
91
+ }
92
+ }
93
+ catch (error) {
94
+ spinner.fail('Key rotation failed');
95
+ if (error.message?.includes('429')) {
96
+ (0, prompts_1.showError)('Rate limit exceeded. Please try again later.');
97
+ }
98
+ else if (error.message?.includes('Network')) {
99
+ (0, prompts_1.showError)('Network error. Check your internet connection.');
100
+ }
101
+ else {
102
+ (0, prompts_1.showError)(error.message || 'Failed to rotate keys');
103
+ }
104
+ }
105
+ }
106
+ //# sourceMappingURL=rotate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotate.js","sourceRoot":"","sources":["../../src/commands/rotate.ts"],"names":[],"mappings":";;;;;AAaA,wBAyGC;AAtHD,kDAA0B;AAC1B,8CAAsB;AACtB,yCAA4C;AAC5C,sDAAkD;AAClD,8CAAwF;AACxF,2BAAgC;AAChC,+BAA4B;AAOrB,KAAK,UAAU,MAAM,CAAC,OAAsB;IACjD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAE/C,8BAA8B;IAC9B,MAAM,UAAU,GAAG,IAAI,wBAAU,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAEhD,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;QAClC,IAAA,mBAAS,EAAC,uDAAuD,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,mBAAmB;IACnB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,yBAAe,GAAE,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QACD,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,IAAA,qBAAW,EAAC,oDAAoD,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAE7E,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEhD,IAAI,CAAC;QACH,kDAAkD;QAClD,MAAM,QAAQ,GAAG,MAAM,mBAAW,CAAC,IAAI,EAAE,CAAC;QAE1C,iCAAiC;QACjC,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC,CAAC;YAC/G,OAAO;QACT,CAAC;QAED,0BAA0B;QAC1B,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,kBAAkB,SAAS,CAAC,cAAc,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,qBAAqB,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAErG,mBAAmB;QACnB,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEzD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;YAE9C,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,IAAI,CAAC,MAAM,CAAC,cAAe,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAC9F,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YAEnD,wBAAwB;YACxB,MAAM,OAAO,GAAG;gBACd,gBAAgB,EAAE,QAAQ,CAAC,GAAG;gBAC9B,uBAAuB,EAAE,QAAQ,CAAC,SAAS;gBAC3C,wBAAwB,EAAG,QAAgB,CAAC,UAAU,IAAI,EAAE;gBAC5D,qBAAqB,EAAG,QAAgB,CAAC,OAAO,IAAI,EAAE;gBACtD,uBAAuB,EAAG,QAAgB,CAAC,SAAS,IAAI,EAAE;aAC3D,CAAC;YAEF,2BAA2B;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;YAEjE,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;oBAC1C,IAAI,CAAC;wBACH,MAAM,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC/D,OAAO,CAAC,GAAG,CAAC,gBAAgB,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACnD,CAAC;oBAAC,OAAO,KAAU,EAAE,CAAC;wBACpB,OAAO,CAAC,GAAG,CAAC,yBAAyB,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC5E,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAA,qBAAW,EAAC,wBAAwB,CAAC,CAAC;YAEtC,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;QAExF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACpC,IAAA,mBAAS,EAAC,MAAM,CAAC,KAAK,IAAI,+BAA+B,CAAC,CAAC;QAC7D,CAAC;IAEH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAEpC,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,IAAA,mBAAS,EAAC,8CAA8C,CAAC,CAAC;QAC5D,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9C,IAAA,mBAAS,EAAC,gDAAgD,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,IAAA,mBAAS,EAAC,KAAK,CAAC,OAAO,IAAI,uBAAuB,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const init_1 = require("./commands/init");
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();
15
+ // ASCII art logo
16
+ const logo = chalk_1.default.cyan(`
17
+ ╦╔═╦ ╦╔═╗ ╔═╗╔═╗
18
+ ╠╩╗╚╦╝╠═╣───║ ║╚═╗
19
+ ╩ ╩ ╩ ╩ ╩ ╚═╝╚═╝
20
+ `);
21
+ program
22
+ .name('kya-os')
23
+ .description('CLI for KYA-OS MCP-I setup and management')
24
+ .version('0.1.0')
25
+ .addHelpText('before', logo);
26
+ // Init command
27
+ program
28
+ .command('init')
29
+ .description('Initialize MCP-I in your project')
30
+ .option('-n, --name <name>', 'Agent name')
31
+ .option('-d, --description <description>', 'Agent description')
32
+ .option('-r, --repository <url>', 'Repository URL')
33
+ .option('-p, --platform <platform>', 'Target platform (auto-detected if not specified)')
34
+ .option('--skip-registration', 'Skip agent registration (create files only)')
35
+ .option('--force', 'Overwrite existing configuration')
36
+ .action(init_1.init);
37
+ // Check command
38
+ program
39
+ .command('check')
40
+ .description('Check MCP-I setup status')
41
+ .option('-v, --verbose', 'Show detailed information')
42
+ .action(check_1.check);
43
+ // Env command with subcommands
44
+ const envCommand = program
45
+ .command('env')
46
+ .description('Manage environment variables');
47
+ envCommand
48
+ .command('show')
49
+ .description('Show required environment variables')
50
+ .action(() => (0, env_1.env)('show'));
51
+ envCommand
52
+ .command('copy')
53
+ .description('Copy environment variables to clipboard')
54
+ .action(() => (0, env_1.env)('copy'));
55
+ envCommand
56
+ .command('verify')
57
+ .description('Verify environment variables are set correctly')
58
+ .action(() => (0, env_1.env)('verify'));
59
+ // Rotate command
60
+ program
61
+ .command('rotate')
62
+ .description('Rotate identity keys')
63
+ .option('-f, --force', 'Force rotation without confirmation')
64
+ .option('-r, --reason <reason>', 'Reason for rotation')
65
+ .action(rotate_1.rotate);
66
+ // Claim command
67
+ program
68
+ .command('claim')
69
+ .description('Get agent claim/edit URLs')
70
+ .action(claim_1.claim);
71
+ // Parse arguments
72
+ program.parse();
73
+ // Show help if no command specified
74
+ if (!process.argv.slice(2).length) {
75
+ program.outputHelp();
76
+ }
77
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AACA,yCAAoC;AACpC,kDAA0B;AAC1B,0CAAuC;AACvC,4CAAyC;AACzC,wCAAqC;AACrC,8CAA2C;AAC3C,4CAAyC;AAEzC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,iBAAiB;AACjB,MAAM,IAAI,GAAG,eAAK,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,WAAI,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,aAAK,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,IAAA,SAAG,EAAC,MAAM,CAAC,CAAC,CAAC;AAE7B,UAAU;KACP,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,SAAG,EAAC,MAAM,CAAC,CAAC,CAAC;AAE7B,UAAU;KACP,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,SAAG,EAAC,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,eAAM,CAAC,CAAC;AAElB,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,aAAK,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"}
@@ -0,0 +1,53 @@
1
+ export interface EnvVariables {
2
+ MCP_IDENTITY_DID: string;
3
+ MCP_IDENTITY_PUBLIC_KEY: string;
4
+ MCP_IDENTITY_PRIVATE_KEY: string;
5
+ MCP_IDENTITY_AGENT_ID: string;
6
+ MCP_IDENTITY_AGENT_SLUG: string;
7
+ }
8
+ export declare class EnvManager {
9
+ private projectRoot;
10
+ constructor(projectRoot?: string);
11
+ /**
12
+ * Create or update environment file with MCP-I variables
13
+ */
14
+ createEnvFile(filename: string, variables: EnvVariables, options?: {
15
+ force?: boolean;
16
+ example?: boolean;
17
+ }): Promise<void>;
18
+ /**
19
+ * Read environment variables from file
20
+ */
21
+ readEnvFile(filename: string): Partial<EnvVariables>;
22
+ /**
23
+ * Check if .gitignore includes env files
24
+ */
25
+ checkGitignore(envFiles: string[]): {
26
+ missing: string[];
27
+ ignored: string[];
28
+ };
29
+ /**
30
+ * Add files to .gitignore
31
+ */
32
+ addToGitignore(files: string[]): void;
33
+ /**
34
+ * Get environment variables from process.env
35
+ */
36
+ getFromProcess(): Partial<EnvVariables>;
37
+ /**
38
+ * Format environment variables for display
39
+ */
40
+ formatForDisplay(vars: Partial<EnvVariables>, hideSecrets?: boolean): string;
41
+ /**
42
+ * Format for clipboard (no masking)
43
+ */
44
+ formatForClipboard(vars: Partial<EnvVariables>): string;
45
+ /**
46
+ * Check if all required variables are present
47
+ */
48
+ validateVariables(vars: Partial<EnvVariables>): {
49
+ valid: boolean;
50
+ missing: string[];
51
+ };
52
+ }
53
+ //# sourceMappingURL=env-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-manager.d.ts","sourceRoot":"","sources":["../../src/utils/env-manager.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,uBAAuB,EAAE,MAAM,CAAC;IAChC,wBAAwB,EAAE,MAAM,CAAC;IACjC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,GAAE,MAAsB;IAI/C;;OAEG;IACG,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,YAAY,EACvB,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAO,GACnD,OAAO,CAAC,IAAI,CAAC;IAqChB;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA0BpD;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE;IA+B5E;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAsBrC;;OAEG;IACH,cAAc,IAAI,OAAO,CAAC,YAAY,CAAC;IAYvC;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,WAAW,UAAO,GAAG,MAAM;IAkBzE;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM;IAYvD;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;QAC9C,KAAK,EAAE,OAAO,CAAC;QACf,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB;CAgBF"}
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EnvManager = void 0;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ class EnvManager {
7
+ constructor(projectRoot = process.cwd()) {
8
+ this.projectRoot = projectRoot;
9
+ }
10
+ /**
11
+ * Create or update environment file with MCP-I variables
12
+ */
13
+ async createEnvFile(filename, variables, options = {}) {
14
+ const filepath = (0, path_1.join)(this.projectRoot, filename);
15
+ // Check if file exists
16
+ if ((0, fs_1.existsSync)(filepath) && !options.force && !options.example) {
17
+ throw new Error(`${filename} already exists. Use --force to overwrite.`);
18
+ }
19
+ let content = '';
20
+ // Add header
21
+ content += '# MCP-I Identity Configuration\n';
22
+ content += `# Generated by kya-os CLI on ${new Date().toISOString()}\n`;
23
+ if (options.example) {
24
+ content += '# Copy this file to .env.local and fill in your values\n';
25
+ content += '# DO NOT commit this file with real values\n\n';
26
+ // Use placeholders for example file
27
+ content += 'MCP_IDENTITY_DID="your-did-here"\n';
28
+ content += 'MCP_IDENTITY_PUBLIC_KEY="your-public-key-here"\n';
29
+ content += 'MCP_IDENTITY_PRIVATE_KEY="your-private-key-here"\n';
30
+ content += 'MCP_IDENTITY_AGENT_ID="your-agent-id-here"\n';
31
+ content += 'MCP_IDENTITY_AGENT_SLUG="your-agent-slug-here"\n';
32
+ }
33
+ else {
34
+ content += '# IMPORTANT: Do not commit this file to version control!\n\n';
35
+ // Use real values
36
+ Object.entries(variables).forEach(([key, value]) => {
37
+ content += `${key}="${value}"\n`;
38
+ });
39
+ }
40
+ // Write file
41
+ (0, fs_1.writeFileSync)(filepath, content, 'utf-8');
42
+ }
43
+ /**
44
+ * Read environment variables from file
45
+ */
46
+ readEnvFile(filename) {
47
+ const filepath = (0, path_1.join)(this.projectRoot, filename);
48
+ if (!(0, fs_1.existsSync)(filepath)) {
49
+ return {};
50
+ }
51
+ const content = (0, fs_1.readFileSync)(filepath, 'utf-8');
52
+ const vars = {};
53
+ // Parse env file
54
+ content.split('\n').forEach(line => {
55
+ // Skip comments and empty lines
56
+ if (line.startsWith('#') || !line.trim())
57
+ return;
58
+ const [key, ...valueParts] = line.split('=');
59
+ const value = valueParts.join('=').replace(/^["']|["']$/g, '');
60
+ if (key && value && key.startsWith('MCP_IDENTITY_')) {
61
+ vars[key] = value;
62
+ }
63
+ });
64
+ return vars;
65
+ }
66
+ /**
67
+ * Check if .gitignore includes env files
68
+ */
69
+ checkGitignore(envFiles) {
70
+ const gitignorePath = (0, path_1.join)(this.projectRoot, '.gitignore');
71
+ const missing = [];
72
+ const ignored = [];
73
+ if (!(0, fs_1.existsSync)(gitignorePath)) {
74
+ return { missing: envFiles, ignored: [] };
75
+ }
76
+ const gitignoreContent = (0, fs_1.readFileSync)(gitignorePath, 'utf-8');
77
+ const patterns = gitignoreContent.split('\n')
78
+ .filter(line => line.trim() && !line.startsWith('#'));
79
+ envFiles.forEach(file => {
80
+ const isIgnored = patterns.some(pattern => {
81
+ // Simple pattern matching (could be enhanced)
82
+ return pattern === file ||
83
+ pattern === `/${file}` ||
84
+ pattern.endsWith('*') && file.startsWith(pattern.slice(0, -1));
85
+ });
86
+ if (isIgnored) {
87
+ ignored.push(file);
88
+ }
89
+ else {
90
+ missing.push(file);
91
+ }
92
+ });
93
+ return { missing, ignored };
94
+ }
95
+ /**
96
+ * Add files to .gitignore
97
+ */
98
+ addToGitignore(files) {
99
+ const gitignorePath = (0, path_1.join)(this.projectRoot, '.gitignore');
100
+ // Read existing content or create new
101
+ let content = (0, fs_1.existsSync)(gitignorePath)
102
+ ? (0, fs_1.readFileSync)(gitignorePath, 'utf-8')
103
+ : '';
104
+ // Add newline if file doesn't end with one
105
+ if (content && !content.endsWith('\n')) {
106
+ content += '\n';
107
+ }
108
+ // Add section for MCP-I
109
+ content += '\n# MCP-I Identity Files\n';
110
+ files.forEach(file => {
111
+ content += `${file}\n`;
112
+ });
113
+ (0, fs_1.writeFileSync)(gitignorePath, content, 'utf-8');
114
+ }
115
+ /**
116
+ * Get environment variables from process.env
117
+ */
118
+ getFromProcess() {
119
+ const vars = {};
120
+ Object.keys(process.env).forEach(key => {
121
+ if (key.startsWith('MCP_IDENTITY_')) {
122
+ vars[key] = process.env[key];
123
+ }
124
+ });
125
+ return vars;
126
+ }
127
+ /**
128
+ * Format environment variables for display
129
+ */
130
+ formatForDisplay(vars, hideSecrets = true) {
131
+ let output = '';
132
+ Object.entries(vars).forEach(([key, value]) => {
133
+ if (!value)
134
+ return;
135
+ if (hideSecrets && key.includes('PRIVATE_KEY')) {
136
+ // Show only first/last few characters of private key
137
+ const masked = value.substring(0, 8) + '...' + value.substring(value.length - 8);
138
+ output += `${key}="${masked}"\n`;
139
+ }
140
+ else {
141
+ output += `${key}="${value}"\n`;
142
+ }
143
+ });
144
+ return output;
145
+ }
146
+ /**
147
+ * Format for clipboard (no masking)
148
+ */
149
+ formatForClipboard(vars) {
150
+ let output = '';
151
+ Object.entries(vars).forEach(([key, value]) => {
152
+ if (value) {
153
+ output += `${key}="${value}"\n`;
154
+ }
155
+ });
156
+ return output;
157
+ }
158
+ /**
159
+ * Check if all required variables are present
160
+ */
161
+ validateVariables(vars) {
162
+ const required = [
163
+ 'MCP_IDENTITY_DID',
164
+ 'MCP_IDENTITY_PUBLIC_KEY',
165
+ 'MCP_IDENTITY_PRIVATE_KEY',
166
+ 'MCP_IDENTITY_AGENT_ID',
167
+ 'MCP_IDENTITY_AGENT_SLUG'
168
+ ];
169
+ const missing = required.filter(key => !vars[key]);
170
+ return {
171
+ valid: missing.length === 0,
172
+ missing
173
+ };
174
+ }
175
+ }
176
+ exports.EnvManager = EnvManager;
177
+ //# sourceMappingURL=env-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-manager.js","sourceRoot":"","sources":["../../src/utils/env-manager.ts"],"names":[],"mappings":"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"}