@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.
- package/README.md +81 -0
- package/dist/commands/check.d.ts +6 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +150 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/claim.d.ts +2 -0
- package/dist/commands/claim.d.ts.map +1 -0
- package/dist/commands/claim.js +71 -0
- package/dist/commands/claim.js.map +1 -0
- package/dist/commands/env.d.ts +2 -0
- package/dist/commands/env.d.ts.map +1 -0
- package/dist/commands/env.js +217 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/init.d.ts +11 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +159 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/rotate.d.ts +7 -0
- package/dist/commands/rotate.d.ts.map +1 -0
- package/dist/commands/rotate.js +106 -0
- package/dist/commands/rotate.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +77 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/env-manager.d.ts +53 -0
- package/dist/utils/env-manager.d.ts.map +1 -0
- package/dist/utils/env-manager.js +177 -0
- package/dist/utils/env-manager.js.map +1 -0
- package/dist/utils/platform-detector.d.ts +42 -0
- package/dist/utils/platform-detector.d.ts.map +1 -0
- package/dist/utils/platform-detector.js +137 -0
- package/dist/utils/platform-detector.js.map +1 -0
- package/dist/utils/prompts.d.ts +23 -0
- package/dist/utils/prompts.d.ts.map +1 -0
- package/dist/utils/prompts.js +158 -0
- package/dist/utils/prompts.js.map +1 -0
- package/package.json +48 -0
package/README.md
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# KYA-OS CLI
|
|
2
|
+
|
|
3
|
+
> š Command-line tool for easy MCP-I setup and management
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx kya-os@latest init
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
The KYA-OS CLI simplifies the setup and management of MCP-I (Model Context Protocol - Identity) in your projects. Similar to tools like `create-react-app` or `shadcn-ui`, it provides a zero-friction way to get started with cryptographic identity for your AI agents.
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- šÆ **Zero-config setup** - Automatically detects your project type
|
|
18
|
+
- š **Secure by default** - Handles environment variables safely
|
|
19
|
+
- š **Platform aware** - Special handling for Next.js, Vercel, Lambda
|
|
20
|
+
- š **Ready-to-deploy** - Generates production-ready configuration
|
|
21
|
+
- š **Key management** - Built-in key rotation support
|
|
22
|
+
|
|
23
|
+
## Commands
|
|
24
|
+
|
|
25
|
+
### `init`
|
|
26
|
+
Initialize MCP-I in your project
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npx kya-os@latest init
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### `check`
|
|
33
|
+
Verify your MCP-I setup
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npx kya-os@latest check
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### `env`
|
|
40
|
+
Manage environment variables
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npx kya-os@latest env show # Display required variables
|
|
44
|
+
npx kya-os@latest env copy # Copy to clipboard
|
|
45
|
+
npx kya-os@latest env verify # Check if properly set
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### `rotate`
|
|
49
|
+
Rotate your identity keys
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
npx kya-os@latest rotate
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### `claim`
|
|
56
|
+
Get your agent claim URL
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npx kya-os@latest claim
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Platform Support
|
|
63
|
+
|
|
64
|
+
- ā
Next.js / Vercel
|
|
65
|
+
- ā
Node.js
|
|
66
|
+
- ā
AWS Lambda
|
|
67
|
+
- ā
Docker
|
|
68
|
+
- ā
Edge Functions
|
|
69
|
+
|
|
70
|
+
## Requirements
|
|
71
|
+
|
|
72
|
+
- Node.js 16+
|
|
73
|
+
- npm, yarn, or pnpm
|
|
74
|
+
|
|
75
|
+
## Status
|
|
76
|
+
|
|
77
|
+
š§ **Coming Soon** - This CLI tool is currently in planning phase. Check back soon!
|
|
78
|
+
|
|
79
|
+
## License
|
|
80
|
+
|
|
81
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAQA,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAWD,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,iBA8JhD"}
|
|
@@ -0,0 +1,150 @@
|
|
|
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.check = check;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const ora_1 = __importDefault(require("ora"));
|
|
9
|
+
const fs_1 = require("fs");
|
|
10
|
+
const path_1 = require("path");
|
|
11
|
+
const env_manager_1 = require("../utils/env-manager");
|
|
12
|
+
const platform_detector_1 = require("../utils/platform-detector");
|
|
13
|
+
const prompts_1 = require("../utils/prompts");
|
|
14
|
+
async function check(options) {
|
|
15
|
+
console.log(chalk_1.default.cyan('\nš Checking MCP-I Configuration\n'));
|
|
16
|
+
const envManager = new env_manager_1.EnvManager();
|
|
17
|
+
let hasIssues = false;
|
|
18
|
+
// 1. Check for identity files
|
|
19
|
+
console.log(chalk_1.default.bold('š Identity Files:'));
|
|
20
|
+
const identityFile = (0, path_1.join)(process.cwd(), '.mcp-identity.json');
|
|
21
|
+
const hasIdentityFile = (0, fs_1.existsSync)(identityFile);
|
|
22
|
+
if (hasIdentityFile) {
|
|
23
|
+
console.log(` ā ${chalk_1.default.green('.mcp-identity.json')} found`);
|
|
24
|
+
if (options.verbose) {
|
|
25
|
+
try {
|
|
26
|
+
const identity = JSON.parse((0, fs_1.readFileSync)(identityFile, 'utf-8'));
|
|
27
|
+
console.log(` DID: ${chalk_1.default.gray(identity.did)}`);
|
|
28
|
+
console.log(` Agent: ${chalk_1.default.gray(identity.agentSlug)}`);
|
|
29
|
+
console.log(` Registered: ${chalk_1.default.gray(identity.registeredAt)}`);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
console.log(` ${chalk_1.default.red('Error reading file')}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
console.log(` ā ${chalk_1.default.red('.mcp-identity.json')} not found`);
|
|
38
|
+
hasIssues = true;
|
|
39
|
+
}
|
|
40
|
+
// 2. Check environment files
|
|
41
|
+
console.log(`\n${chalk_1.default.bold('š Environment Files:')}`);
|
|
42
|
+
const platformInfo = (0, platform_detector_1.detectPlatform)();
|
|
43
|
+
const envFiles = ['.env', '.env.local', '.env.production'];
|
|
44
|
+
let foundEnvFile = false;
|
|
45
|
+
for (const file of envFiles) {
|
|
46
|
+
if ((0, fs_1.existsSync)((0, path_1.join)(process.cwd(), file))) {
|
|
47
|
+
console.log(` ā ${chalk_1.default.green(file)} found`);
|
|
48
|
+
foundEnvFile = true;
|
|
49
|
+
if (options.verbose) {
|
|
50
|
+
const vars = envManager.readEnvFile(file);
|
|
51
|
+
const { valid, missing } = envManager.validateVariables(vars);
|
|
52
|
+
if (valid) {
|
|
53
|
+
console.log(` ${chalk_1.default.gray('All required variables present')}`);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
console.log(` ${chalk_1.default.yellow(`Missing: ${missing.join(', ')}`)}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (!foundEnvFile) {
|
|
62
|
+
console.log(` ā ${chalk_1.default.red('No environment files found')}`);
|
|
63
|
+
hasIssues = true;
|
|
64
|
+
}
|
|
65
|
+
// 3. Check environment variables
|
|
66
|
+
console.log(`\n${chalk_1.default.bold('š Environment Variables:')}`);
|
|
67
|
+
const processVars = envManager.getFromProcess();
|
|
68
|
+
const { valid, missing } = envManager.validateVariables(processVars);
|
|
69
|
+
if (valid) {
|
|
70
|
+
console.log(` ā ${chalk_1.default.green('All required variables set')}`);
|
|
71
|
+
if (options.verbose) {
|
|
72
|
+
console.log('\n' + envManager.formatForDisplay(processVars));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
console.log(` ā ${chalk_1.default.red(`Missing variables: ${missing.join(', ')}`)}`);
|
|
77
|
+
hasIssues = true;
|
|
78
|
+
}
|
|
79
|
+
// 4. Check .gitignore
|
|
80
|
+
console.log(`\n${chalk_1.default.bold('š« Git Security:')}`);
|
|
81
|
+
const sensitiveFiles = ['.env', '.env.local', '.mcp-identity.json'];
|
|
82
|
+
const { missing: notIgnored } = envManager.checkGitignore(sensitiveFiles);
|
|
83
|
+
if (notIgnored.length === 0) {
|
|
84
|
+
console.log(` ā ${chalk_1.default.green('All sensitive files in .gitignore')}`);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
console.log(` ā ${chalk_1.default.red('Not in .gitignore:')} ${notIgnored.join(', ')}`);
|
|
88
|
+
console.log(` ${chalk_1.default.yellow('Run: npx kya-os init --force to fix')}`);
|
|
89
|
+
hasIssues = true;
|
|
90
|
+
}
|
|
91
|
+
// 5. Test registry connection (if we have identity)
|
|
92
|
+
if (processVars.MCP_IDENTITY_DID && options.verbose) {
|
|
93
|
+
console.log(`\n${chalk_1.default.bold('š Registry Connection:')}`);
|
|
94
|
+
const spinner = (0, ora_1.default)('Testing connection to knowthat.ai...').start();
|
|
95
|
+
try {
|
|
96
|
+
const response = await fetch('https://knowthat.ai/api/health');
|
|
97
|
+
if (response.ok) {
|
|
98
|
+
spinner.succeed('Connected to knowthat.ai');
|
|
99
|
+
// Try to fetch agent info
|
|
100
|
+
if (processVars.MCP_IDENTITY_AGENT_SLUG) {
|
|
101
|
+
const agentResponse = await fetch(`https://knowthat.ai/api/agents/${processVars.MCP_IDENTITY_AGENT_SLUG}`);
|
|
102
|
+
if (agentResponse.ok) {
|
|
103
|
+
console.log(` ā ${chalk_1.default.green('Agent found in registry')}`);
|
|
104
|
+
const agent = await agentResponse.json();
|
|
105
|
+
console.log(` Name: ${chalk_1.default.gray(agent.name)}`);
|
|
106
|
+
console.log(` Status: ${chalk_1.default.gray(agent.status)}`);
|
|
107
|
+
console.log(` Profile: ${chalk_1.default.cyan(`https://knowthat.ai/agents/${processVars.MCP_IDENTITY_AGENT_SLUG}`)}`);
|
|
108
|
+
}
|
|
109
|
+
else if (agentResponse.status === 404) {
|
|
110
|
+
console.log(` ā ${chalk_1.default.yellow('Agent not found in registry')}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
spinner.fail('Failed to connect to knowthat.ai');
|
|
116
|
+
hasIssues = true;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
spinner.fail('Network error connecting to knowthat.ai');
|
|
121
|
+
hasIssues = true;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// 6. Platform-specific checks
|
|
125
|
+
console.log(`\n${chalk_1.default.bold('š Platform Configuration:')}`);
|
|
126
|
+
console.log(` Platform: ${chalk_1.default.cyan(platformInfo.platform)}`);
|
|
127
|
+
if (platformInfo.platform === 'vercel' || platformInfo.platform === 'nextjs') {
|
|
128
|
+
if (!processVars.MCP_IDENTITY_DID) {
|
|
129
|
+
console.log(` ${chalk_1.default.yellow('ā ļø Remember to add environment variables to Vercel Dashboard')}`);
|
|
130
|
+
console.log(` ${chalk_1.default.gray('Run: npx kya-os env copy')}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// Summary
|
|
134
|
+
console.log(`\n${chalk_1.default.bold('š Summary:')}`);
|
|
135
|
+
if (!hasIssues) {
|
|
136
|
+
(0, prompts_1.showSuccess)('MCP-I is properly configured!');
|
|
137
|
+
if (processVars.MCP_IDENTITY_DID) {
|
|
138
|
+
console.log(`\nšÆ Your agent DID: ${chalk_1.default.green(processVars.MCP_IDENTITY_DID)}`);
|
|
139
|
+
if (processVars.MCP_IDENTITY_AGENT_SLUG) {
|
|
140
|
+
console.log(`š Agent profile: ${chalk_1.default.cyan(`https://knowthat.ai/agents/${processVars.MCP_IDENTITY_AGENT_SLUG}`)}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
(0, prompts_1.showWarning)('Some configuration issues found');
|
|
146
|
+
console.log('\nTo fix issues, run:');
|
|
147
|
+
console.log(chalk_1.default.cyan(' npx kya-os init'));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim.d.ts","sourceRoot":"","sources":["../../src/commands/claim.ts"],"names":[],"mappings":"AAMA,wBAAsB,KAAK,kBAuE1B"}
|
|
@@ -0,0 +1,71 @@
|
|
|
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.claim = claim;
|
|
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
|
+
async function claim() {
|
|
13
|
+
console.log(chalk_1.default.cyan('\nšÆ Agent Management URLs\n'));
|
|
14
|
+
// Check for existing identity
|
|
15
|
+
const envManager = new env_manager_1.EnvManager();
|
|
16
|
+
const processVars = envManager.getFromProcess();
|
|
17
|
+
if (!processVars.MCP_IDENTITY_DID) {
|
|
18
|
+
(0, prompts_1.showError)('No MCP-I identity found. Run "npx kya-os init" first.');
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const spinner = (0, ora_1.default)('Retrieving management URLs...').start();
|
|
22
|
+
try {
|
|
23
|
+
// Initialize identity
|
|
24
|
+
const identity = await mcp_i_1.MCPIdentity.init();
|
|
25
|
+
// Request edit access
|
|
26
|
+
const { editUrl, claimUrl } = await identity.requestEditAccess();
|
|
27
|
+
spinner.succeed('URLs retrieved successfully!');
|
|
28
|
+
console.log(`\n${chalk_1.default.bold('š Agent Information:')}`);
|
|
29
|
+
console.log(` DID: ${chalk_1.default.gray(processVars.MCP_IDENTITY_DID)}`);
|
|
30
|
+
if (processVars.MCP_IDENTITY_AGENT_SLUG) {
|
|
31
|
+
console.log(` Profile: ${chalk_1.default.cyan(`https://knowthat.ai/agents/${processVars.MCP_IDENTITY_AGENT_SLUG}`)}`);
|
|
32
|
+
}
|
|
33
|
+
if (claimUrl) {
|
|
34
|
+
console.log(`\n${chalk_1.default.bold('šÆ Claim Your Agent:')}`);
|
|
35
|
+
console.log(` ${chalk_1.default.cyan(claimUrl)}`);
|
|
36
|
+
console.log(`\n ${chalk_1.default.gray('Use this link to:')}`);
|
|
37
|
+
console.log(` ${chalk_1.default.gray('⢠Set up your account')}`);
|
|
38
|
+
console.log(` ${chalk_1.default.gray('⢠Edit agent details')}`);
|
|
39
|
+
console.log(` ${chalk_1.default.gray('⢠Add logos and descriptions')}`);
|
|
40
|
+
console.log(` ${chalk_1.default.gray('⢠Manage directory listings')}`);
|
|
41
|
+
console.log(` ${chalk_1.default.gray('⢠View analytics')}`);
|
|
42
|
+
(0, prompts_1.showInfo)('This is a one-time claim link. Once claimed, use the edit URL.');
|
|
43
|
+
}
|
|
44
|
+
console.log(`\n${chalk_1.default.bold('āļø Edit Your Agent:')}`);
|
|
45
|
+
console.log(` ${chalk_1.default.cyan(editUrl)}`);
|
|
46
|
+
console.log(` ${chalk_1.default.gray('(Requires authentication after claiming)')}`);
|
|
47
|
+
// Check if agent is draft
|
|
48
|
+
if (processVars.MCP_IDENTITY_DID?.includes('localhost')) {
|
|
49
|
+
(0, prompts_1.showInfo)('This is a development/draft agent. It won\'t appear in public directories.');
|
|
50
|
+
}
|
|
51
|
+
(0, prompts_1.showSuccess)('Management URLs ready!');
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
spinner.fail('Failed to retrieve URLs');
|
|
55
|
+
if (error.message?.includes('429')) {
|
|
56
|
+
(0, prompts_1.showError)('Rate limit exceeded. Please try again in a few minutes.');
|
|
57
|
+
}
|
|
58
|
+
else if (error.message?.includes('Network')) {
|
|
59
|
+
(0, prompts_1.showError)('Network error. Check your internet connection.');
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
(0, prompts_1.showError)(error.message || 'Failed to get management URLs');
|
|
63
|
+
// Provide fallback URL
|
|
64
|
+
if (processVars.MCP_IDENTITY_AGENT_SLUG) {
|
|
65
|
+
console.log(`\n${chalk_1.default.gray('You can try visiting directly:')}`);
|
|
66
|
+
console.log(`${chalk_1.default.cyan(`https://knowthat.ai/agents/${processVars.MCP_IDENTITY_AGENT_SLUG}`)}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=claim.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim.js","sourceRoot":"","sources":["../../src/commands/claim.ts"],"names":[],"mappings":";;;;;AAMA,sBAuEC;AA7ED,kDAA0B;AAC1B,8CAAsB;AACtB,yCAA4C;AAC5C,sDAAkD;AAClD,8CAAoE;AAE7D,KAAK,UAAU,KAAK;IACzB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAExD,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,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,+BAA+B,CAAC,CAAC,KAAK,EAAE,CAAC;IAE7D,IAAI,CAAC;QACH,sBAAsB;QACtB,MAAM,QAAQ,GAAG,MAAM,mBAAW,CAAC,IAAI,EAAE,CAAC;QAE1C,sBAAsB;QACtB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAEjE,OAAO,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;QAEhD,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,WAAW,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAEnE,IAAI,WAAW,CAAC,uBAAuB,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,eAAe,eAAK,CAAC,IAAI,CAAC,8BAA8B,WAAW,CAAC,uBAAuB,EAAE,CAAC,EAAE,CAAC,CAAC;QAChH,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,QAAQ,eAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;YAEpD,IAAA,kBAAQ,EAAC,gEAAgE,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,EAAE,CAAC,CAAC;QAE5E,0BAA0B;QAC1B,IAAI,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACxD,IAAA,kBAAQ,EAAC,4EAA4E,CAAC,CAAC;QACzF,CAAC;QAED,IAAA,qBAAW,EAAC,wBAAwB,CAAC,CAAC;IAExC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAExC,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,IAAA,mBAAS,EAAC,yDAAyD,CAAC,CAAC;QACvE,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,+BAA+B,CAAC,CAAC;YAE5D,uBAAuB;YACvB,IAAI,WAAW,CAAC,uBAAuB,EAAE,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,8BAA8B,WAAW,CAAC,uBAAuB,EAAE,CAAC,EAAE,CAAC,CAAC;YACpG,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"AASA,wBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,iBAc/D"}
|
|
@@ -0,0 +1,217 @@
|
|
|
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.env = env;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const child_process_1 = require("child_process");
|
|
9
|
+
const util_1 = require("util");
|
|
10
|
+
const env_manager_1 = require("../utils/env-manager");
|
|
11
|
+
const platform_detector_1 = require("../utils/platform-detector");
|
|
12
|
+
const prompts_1 = require("../utils/prompts");
|
|
13
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
14
|
+
async function env(subcommand) {
|
|
15
|
+
const envManager = new env_manager_1.EnvManager();
|
|
16
|
+
switch (subcommand) {
|
|
17
|
+
case 'show':
|
|
18
|
+
await showEnv(envManager);
|
|
19
|
+
break;
|
|
20
|
+
case 'copy':
|
|
21
|
+
await copyEnv(envManager);
|
|
22
|
+
break;
|
|
23
|
+
case 'verify':
|
|
24
|
+
await verifyEnv(envManager);
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async function showEnv(envManager) {
|
|
29
|
+
console.log(chalk_1.default.cyan('\nš MCP-I Environment Variables\n'));
|
|
30
|
+
// Try to get from multiple sources
|
|
31
|
+
let vars = envManager.getFromProcess();
|
|
32
|
+
if (!vars.MCP_IDENTITY_DID) {
|
|
33
|
+
// Try reading from files
|
|
34
|
+
const files = ['.env.local', '.env', '.env.production'];
|
|
35
|
+
for (const file of files) {
|
|
36
|
+
const fileVars = envManager.readEnvFile(file);
|
|
37
|
+
if (fileVars.MCP_IDENTITY_DID) {
|
|
38
|
+
vars = fileVars;
|
|
39
|
+
console.log(chalk_1.default.gray(`(from ${file})\n`));
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
console.log(chalk_1.default.gray('(from process.env)\n'));
|
|
46
|
+
}
|
|
47
|
+
if (!vars.MCP_IDENTITY_DID) {
|
|
48
|
+
(0, prompts_1.showError)('No MCP-I environment variables found');
|
|
49
|
+
console.log('Run the following to initialize:');
|
|
50
|
+
console.log(chalk_1.default.cyan(' npx kya-os init'));
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// Display variables (with masked private key)
|
|
54
|
+
console.log(envManager.formatForDisplay(vars, true));
|
|
55
|
+
// Platform-specific instructions
|
|
56
|
+
const platform = (0, platform_detector_1.detectPlatform)();
|
|
57
|
+
console.log(chalk_1.default.bold('\nš Platform-specific usage:\n'));
|
|
58
|
+
if (platform.platform === 'vercel' || platform.platform === 'nextjs') {
|
|
59
|
+
console.log('For Vercel deployment:');
|
|
60
|
+
console.log('1. Copy these variables: ' + chalk_1.default.cyan('npx kya-os env copy'));
|
|
61
|
+
console.log('2. Go to Vercel Dashboard ā Settings ā Environment Variables');
|
|
62
|
+
console.log('3. Add each variable for Production/Preview/Development as needed');
|
|
63
|
+
}
|
|
64
|
+
else if (platform.platform === 'lambda') {
|
|
65
|
+
console.log('For AWS Lambda:');
|
|
66
|
+
console.log('1. Add to your Lambda function configuration');
|
|
67
|
+
console.log('2. Or use AWS Systems Manager Parameter Store');
|
|
68
|
+
console.log('3. Or add to your serverless.yml/SAM template');
|
|
69
|
+
}
|
|
70
|
+
else if (platform.platform === 'docker') {
|
|
71
|
+
console.log('For Docker:');
|
|
72
|
+
console.log('1. Add to docker-compose.yml under environment:');
|
|
73
|
+
console.log('2. Or use --env-file with docker run');
|
|
74
|
+
console.log('3. Or build args in Dockerfile');
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
console.log('Add these to your deployment platform\'s environment configuration.');
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async function copyEnv(envManager) {
|
|
81
|
+
console.log(chalk_1.default.cyan('\nš Copying MCP-I Environment Variables\n'));
|
|
82
|
+
// Get variables
|
|
83
|
+
let vars = envManager.getFromProcess();
|
|
84
|
+
if (!vars.MCP_IDENTITY_DID) {
|
|
85
|
+
const files = ['.env.local', '.env'];
|
|
86
|
+
for (const file of files) {
|
|
87
|
+
const fileVars = envManager.readEnvFile(file);
|
|
88
|
+
if (fileVars.MCP_IDENTITY_DID) {
|
|
89
|
+
vars = fileVars;
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (!vars.MCP_IDENTITY_DID) {
|
|
95
|
+
(0, prompts_1.showError)('No MCP-I environment variables found');
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
// Format for clipboard (no masking)
|
|
99
|
+
const formatted = envManager.formatForClipboard(vars);
|
|
100
|
+
// Try to copy to clipboard
|
|
101
|
+
try {
|
|
102
|
+
// Detect OS and use appropriate command
|
|
103
|
+
const platform = process.platform;
|
|
104
|
+
let command;
|
|
105
|
+
if (platform === 'darwin') {
|
|
106
|
+
command = 'pbcopy';
|
|
107
|
+
}
|
|
108
|
+
else if (platform === 'win32') {
|
|
109
|
+
command = 'clip';
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
// Linux - try xclip first, then xsel
|
|
113
|
+
try {
|
|
114
|
+
await execAsync('which xclip');
|
|
115
|
+
command = 'xclip -selection clipboard';
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
try {
|
|
119
|
+
await execAsync('which xsel');
|
|
120
|
+
command = 'xsel --clipboard --input';
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
throw new Error('No clipboard utility found. Install xclip or xsel.');
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Copy to clipboard
|
|
128
|
+
const proc = (0, child_process_1.exec)(command);
|
|
129
|
+
if (proc.stdin) {
|
|
130
|
+
proc.stdin.write(formatted);
|
|
131
|
+
proc.stdin.end();
|
|
132
|
+
}
|
|
133
|
+
await new Promise((resolve, reject) => {
|
|
134
|
+
proc.on('exit', (code) => {
|
|
135
|
+
if (code === 0)
|
|
136
|
+
resolve(null);
|
|
137
|
+
else
|
|
138
|
+
reject(new Error(`Clipboard command failed with code ${code}`));
|
|
139
|
+
});
|
|
140
|
+
proc.on('error', reject);
|
|
141
|
+
});
|
|
142
|
+
(0, prompts_1.showSuccess)('Environment variables copied to clipboard!');
|
|
143
|
+
console.log('\nNext steps:');
|
|
144
|
+
console.log('1. Paste into your deployment platform\'s environment configuration');
|
|
145
|
+
console.log('2. Make sure to save/apply the changes');
|
|
146
|
+
console.log('\n' + chalk_1.default.yellow('ā ļø Keep these values secure - they contain your private key!'));
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
(0, prompts_1.showError)(`Failed to copy to clipboard: ${error.message}`);
|
|
150
|
+
console.log('\nManual copy:\n');
|
|
151
|
+
console.log(chalk_1.default.gray('ā'.repeat(60)));
|
|
152
|
+
console.log(formatted);
|
|
153
|
+
console.log(chalk_1.default.gray('ā'.repeat(60)));
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
async function verifyEnv(envManager) {
|
|
157
|
+
console.log(chalk_1.default.cyan('\nā
Verifying MCP-I Environment\n'));
|
|
158
|
+
// Check process.env
|
|
159
|
+
const processVars = envManager.getFromProcess();
|
|
160
|
+
const { valid: processValid, missing: processMissing } = envManager.validateVariables(processVars);
|
|
161
|
+
console.log(chalk_1.default.bold('Process Environment:'));
|
|
162
|
+
if (processValid) {
|
|
163
|
+
console.log(` ā ${chalk_1.default.green('All variables present in process.env')}`);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
console.log(` ā ${chalk_1.default.red('Missing from process.env:')} ${processMissing.join(', ')}`);
|
|
167
|
+
}
|
|
168
|
+
// Check files
|
|
169
|
+
console.log(chalk_1.default.bold('\nEnvironment Files:'));
|
|
170
|
+
const files = ['.env', '.env.local', '.env.production'];
|
|
171
|
+
let foundValidFile = false;
|
|
172
|
+
for (const file of files) {
|
|
173
|
+
const fileVars = envManager.readEnvFile(file);
|
|
174
|
+
if (fileVars.MCP_IDENTITY_DID) {
|
|
175
|
+
const { valid, missing } = envManager.validateVariables(fileVars);
|
|
176
|
+
if (valid) {
|
|
177
|
+
console.log(` ā ${chalk_1.default.green(file)} - All variables present`);
|
|
178
|
+
foundValidFile = true;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
console.log(` ā ļø ${chalk_1.default.yellow(file)} - Missing: ${missing.join(', ')}`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (!foundValidFile && !processValid) {
|
|
186
|
+
console.log(` ā ${chalk_1.default.red('No valid environment configuration found')}`);
|
|
187
|
+
}
|
|
188
|
+
// Platform-specific checks
|
|
189
|
+
const platform = (0, platform_detector_1.detectPlatform)();
|
|
190
|
+
console.log(chalk_1.default.bold('\nPlatform-Specific:'));
|
|
191
|
+
if (platform.platform === 'vercel' || platform.platform === 'nextjs') {
|
|
192
|
+
if (process.env.VERCEL) {
|
|
193
|
+
console.log(` ā ${chalk_1.default.green('Running on Vercel')}`);
|
|
194
|
+
if (processValid) {
|
|
195
|
+
console.log(` ā ${chalk_1.default.green('Environment variables configured in Vercel')}`);
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
console.log(` ā ${chalk_1.default.red('Environment variables not found - add to Vercel Dashboard')}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
console.log(` ā¹ļø ${chalk_1.default.blue('Local development - using .env.local')}`);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
// Summary
|
|
206
|
+
console.log(chalk_1.default.bold('\nSummary:'));
|
|
207
|
+
if (processValid || foundValidFile) {
|
|
208
|
+
(0, prompts_1.showSuccess)('Environment configuration is valid!');
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
(0, prompts_1.showError)('Environment configuration issues found');
|
|
212
|
+
console.log('\nTo fix:');
|
|
213
|
+
console.log('1. Run: ' + chalk_1.default.cyan('npx kya-os init'));
|
|
214
|
+
console.log('2. Or manually create .env file with required variables');
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":";;;;;AASA,kBAcC;AAvBD,kDAA0B;AAC1B,iDAAqC;AACrC,+BAAiC;AACjC,sDAAkD;AAClD,kEAA4D;AAC5D,8CAA0D;AAE1D,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAE3B,KAAK,UAAU,GAAG,CAAC,UAAsC;IAC9D,MAAM,UAAU,GAAG,IAAI,wBAAU,EAAE,CAAC;IAEpC,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,MAAM;YACT,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;YAC1B,MAAM;QACR,KAAK,MAAM;YACT,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;YAC1B,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;YAC5B,MAAM;IACV,CAAC;AACH,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,UAAsB;IAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;IAE9D,mCAAmC;IACnC,IAAI,IAAI,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAEvC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3B,yBAAyB;QACzB,MAAM,KAAK,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACxD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBAC9B,IAAI,GAAG,QAAQ,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC;gBAC5C,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3B,IAAA,mBAAS,EAAC,sCAAsC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,8CAA8C;IAC9C,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAErD,iCAAiC;IACjC,MAAM,QAAQ,GAAG,IAAA,kCAAc,GAAE,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAE3D,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;IACnF,CAAC;SAAM,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC/D,CAAC;SAAM,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;IACrF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,UAAsB;IAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;IAEtE,gBAAgB;IAChB,IAAI,IAAI,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAEvC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBAC9B,IAAI,GAAG,QAAQ,CAAC;gBAChB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3B,IAAA,mBAAS,EAAC,sCAAsC,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IAED,oCAAoC;IACpC,MAAM,SAAS,GAAG,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEtD,2BAA2B;IAC3B,IAAI,CAAC;QACH,wCAAwC;QACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,IAAI,OAAe,CAAC;QAEpB,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,GAAG,QAAQ,CAAC;QACrB,CAAC;aAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YAChC,OAAO,GAAG,MAAM,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,qCAAqC;YACrC,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,aAAa,CAAC,CAAC;gBAC/B,OAAO,GAAG,4BAA4B,CAAC;YACzC,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC;oBACH,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC;oBAC9B,OAAO,GAAG,0BAA0B,CAAC;gBACvC,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,MAAM,IAAI,GAAG,IAAA,oBAAI,EAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACvB,IAAI,IAAI,KAAK,CAAC;oBAAE,OAAO,CAAC,IAAI,CAAC,CAAC;;oBACzB,MAAM,CAAC,IAAI,KAAK,CAAC,sCAAsC,IAAI,EAAE,CAAC,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,IAAA,qBAAW,EAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,MAAM,CAAC,+DAA+D,CAAC,CAAC,CAAC;IAEpG,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAA,mBAAS,EAAC,gCAAgC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,UAAsB;IAC7C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAE7D,oBAAoB;IACpB,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAChD,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAEnG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAChD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,QAAQ,eAAK,CAAC,KAAK,CAAC,sCAAsC,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,QAAQ,eAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED,cAAc;IACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC;IACxD,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YAC9B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAClE,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,QAAQ,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBACjE,cAAc,GAAG,IAAI,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,UAAU,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,cAAc,IAAI,CAAC,YAAY,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,QAAQ,eAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,IAAA,kCAAc,GAAE,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAEhD,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACrE,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,QAAQ,eAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YACxD,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,QAAQ,eAAK,CAAC,KAAK,CAAC,4CAA4C,CAAC,EAAE,CAAC,CAAC;YACnF,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,QAAQ,eAAK,CAAC,GAAG,CAAC,2DAA2D,CAAC,EAAE,CAAC,CAAC;YAChG,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,UAAU,eAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IACtC,IAAI,YAAY,IAAI,cAAc,EAAE,CAAC;QACnC,IAAA,qBAAW,EAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,IAAA,mBAAS,EAAC,wCAAwC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,eAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACzE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface InitOptions {
|
|
2
|
+
name?: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
repository?: string;
|
|
5
|
+
platform?: string;
|
|
6
|
+
skipRegistration?: boolean;
|
|
7
|
+
force?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function init(options: InitOptions): Promise<void>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AASA,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,iBAkK9C"}
|