@codemieai/code 0.0.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/.claude/agents/README.md +298 -0
- package/.claude/agents/release-manager.md +857 -0
- package/CLAUDE.md +856 -0
- package/LICENSE +201 -0
- package/README.md +917 -0
- package/bin/codemie-code.js +23 -0
- package/bin/codemie.js +8 -0
- package/dist/agents/adapters/aider.d.ts +12 -0
- package/dist/agents/adapters/aider.d.ts.map +1 -0
- package/dist/agents/adapters/aider.js +80 -0
- package/dist/agents/adapters/aider.js.map +1 -0
- package/dist/agents/adapters/claude-code.d.ts +12 -0
- package/dist/agents/adapters/claude-code.d.ts.map +1 -0
- package/dist/agents/adapters/claude-code.js +98 -0
- package/dist/agents/adapters/claude-code.js.map +1 -0
- package/dist/agents/adapters/codemie-code.d.ts +12 -0
- package/dist/agents/adapters/codemie-code.d.ts.map +1 -0
- package/dist/agents/adapters/codemie-code.js +42 -0
- package/dist/agents/adapters/codemie-code.js.map +1 -0
- package/dist/agents/adapters/codex.d.ts +12 -0
- package/dist/agents/adapters/codex.d.ts.map +1 -0
- package/dist/agents/adapters/codex.js +80 -0
- package/dist/agents/adapters/codex.js.map +1 -0
- package/dist/agents/registry.d.ts +18 -0
- package/dist/agents/registry.d.ts.map +1 -0
- package/dist/agents/registry.js +35 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/cli/cli.d.ts +4 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/cli.js +107 -0
- package/dist/cli/cli.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +128 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/install.d.ts +3 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +76 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/list.d.ts +3 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +50 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +3 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -0
- package/dist/cli/commands/mcp.js +459 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/run.d.ts +3 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +41 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/uninstall.d.ts +3 -0
- package/dist/cli/commands/uninstall.d.ts.map +1 -0
- package/dist/cli/commands/uninstall.js +71 -0
- package/dist/cli/commands/uninstall.js.map +1 -0
- package/dist/cli/commands/version.d.ts +3 -0
- package/dist/cli/commands/version.d.ts.map +1 -0
- package/dist/cli/commands/version.js +28 -0
- package/dist/cli/commands/version.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +50 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/code/agent-events.d.ts +39 -0
- package/dist/code/agent-events.d.ts.map +1 -0
- package/dist/code/agent-events.js +4 -0
- package/dist/code/agent-events.js.map +1 -0
- package/dist/code/agent.d.ts +19 -0
- package/dist/code/agent.d.ts.map +1 -0
- package/dist/code/agent.js +144 -0
- package/dist/code/agent.js.map +1 -0
- package/dist/code/config.d.ts +13 -0
- package/dist/code/config.d.ts.map +1 -0
- package/dist/code/config.js +41 -0
- package/dist/code/config.js.map +1 -0
- package/dist/code/index.d.ts +19 -0
- package/dist/code/index.d.ts.map +1 -0
- package/dist/code/index.js +400 -0
- package/dist/code/index.js.map +1 -0
- package/dist/code/prompts.d.ts +2 -0
- package/dist/code/prompts.d.ts.map +1 -0
- package/dist/code/prompts.js +45 -0
- package/dist/code/prompts.js.map +1 -0
- package/dist/code/tools/command.d.ts +8 -0
- package/dist/code/tools/command.d.ts.map +1 -0
- package/dist/code/tools/command.js +83 -0
- package/dist/code/tools/command.js.map +1 -0
- package/dist/code/tools/diff-utils.d.ts +2 -0
- package/dist/code/tools/diff-utils.d.ts.map +1 -0
- package/dist/code/tools/diff-utils.js +45 -0
- package/dist/code/tools/diff-utils.js.map +1 -0
- package/dist/code/tools/filesystem.d.ts +11 -0
- package/dist/code/tools/filesystem.d.ts.map +1 -0
- package/dist/code/tools/filesystem.js +442 -0
- package/dist/code/tools/filesystem.js.map +1 -0
- package/dist/code/tools/git.d.ts +7 -0
- package/dist/code/tools/git.d.ts.map +1 -0
- package/dist/code/tools/git.js +111 -0
- package/dist/code/tools/git.js.map +1 -0
- package/dist/code/tools/mcp.d.ts +13 -0
- package/dist/code/tools/mcp.d.ts.map +1 -0
- package/dist/code/tools/mcp.js +230 -0
- package/dist/code/tools/mcp.js.map +1 -0
- package/dist/data/tips.json +118 -0
- package/dist/env/manager.d.ts +14 -0
- package/dist/env/manager.d.ts.map +1 -0
- package/dist/env/manager.js +99 -0
- package/dist/env/manager.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/ui/terminal-ui.d.ts +73 -0
- package/dist/ui/terminal-ui.d.ts.map +1 -0
- package/dist/ui/terminal-ui.js +900 -0
- package/dist/ui/terminal-ui.js.map +1 -0
- package/dist/utils/async-tips.d.ts +64 -0
- package/dist/utils/async-tips.d.ts.map +1 -0
- package/dist/utils/async-tips.js +242 -0
- package/dist/utils/async-tips.js.map +1 -0
- package/dist/utils/env-mapper.d.ts +40 -0
- package/dist/utils/env-mapper.d.ts.map +1 -0
- package/dist/utils/env-mapper.js +122 -0
- package/dist/utils/env-mapper.js.map +1 -0
- package/dist/utils/errors.d.ts +25 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +58 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/exec.d.ts +12 -0
- package/dist/utils/exec.d.ts.map +1 -0
- package/dist/utils/exec.js +49 -0
- package/dist/utils/exec.js.map +1 -0
- package/dist/utils/logger.d.ts +19 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +53 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/tips.d.ts +35 -0
- package/dist/utils/tips.d.ts.map +1 -0
- package/dist/utils/tips.js +132 -0
- package/dist/utils/tips.js.map +1 -0
- package/docs/USER_GUIDE.md +573 -0
- package/eslint.config.mjs +43 -0
- package/package.json +66 -0
- package/tests/agent-direct.test.mjs +45 -0
- package/tests/agent-output.test.mjs +64 -0
- package/tests/codemie-code.test.mjs +42 -0
- package/tests/context7-only.test.mjs +42 -0
- package/tests/conversation-flow.test.mjs +63 -0
- package/tests/interactive-simulation.test.mjs +60 -0
- package/tests/live-output.test.mjs +53 -0
- package/tests/mcp-context7.test.mjs +105 -0
- package/tests/mcp-e2e.test.mjs +109 -0
- package/tests/mcp-time-server.test.mjs +58 -0
- package/tests/streaming.test.mjs +57 -0
- package/tests/test-helpers.mjs +94 -0
- package/tests/text-wrapping.test.mjs +33 -0
- package/tests/tool-count.test.mjs +81 -0
- package/tests/ui-format.test.mjs +39 -0
- package/tests/ui-state.test.mjs +72 -0
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.createMCPCommand = createMCPCommand;
|
|
40
|
+
const commander_1 = require("commander");
|
|
41
|
+
const fs = __importStar(require("fs/promises"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const os = __importStar(require("os"));
|
|
44
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
45
|
+
const errors_js_1 = require("../../utils/errors.js");
|
|
46
|
+
function createMCPCommand() {
|
|
47
|
+
const mcp = new commander_1.Command('mcp');
|
|
48
|
+
mcp
|
|
49
|
+
.description('Manage MCP (Model Context Protocol) servers for CodeMie Code');
|
|
50
|
+
// List command
|
|
51
|
+
mcp
|
|
52
|
+
.command('list')
|
|
53
|
+
.description('List all available MCP servers')
|
|
54
|
+
.option('-v, --verbose', 'Show detailed configuration')
|
|
55
|
+
.action(async (options) => {
|
|
56
|
+
await listMCPServers(options.verbose);
|
|
57
|
+
});
|
|
58
|
+
// Add command
|
|
59
|
+
mcp
|
|
60
|
+
.command('add <name> <command-or-url>')
|
|
61
|
+
.description('Add a new MCP server configuration')
|
|
62
|
+
.option('-t, --transport <type>', 'Transport type (stdio, sse, streamable_http)', 'stdio')
|
|
63
|
+
.option('-a, --args <args...>', 'Command arguments (for stdio transport)')
|
|
64
|
+
.option('-e, --env <vars...>', 'Environment variables (KEY=VALUE format)')
|
|
65
|
+
.action(async (name, commandOrUrl, options) => {
|
|
66
|
+
await addMCPServer(name, commandOrUrl, options);
|
|
67
|
+
});
|
|
68
|
+
// Remove command
|
|
69
|
+
mcp
|
|
70
|
+
.command('remove <name>')
|
|
71
|
+
.alias('rm')
|
|
72
|
+
.description('Remove an MCP server configuration')
|
|
73
|
+
.action(async (name) => {
|
|
74
|
+
await removeMCPServer(name);
|
|
75
|
+
});
|
|
76
|
+
// Test command
|
|
77
|
+
mcp
|
|
78
|
+
.command('test <server>')
|
|
79
|
+
.description('Test if an MCP server configuration is valid')
|
|
80
|
+
.action(async (serverName) => {
|
|
81
|
+
await testMCPServer(serverName);
|
|
82
|
+
});
|
|
83
|
+
// Servers command
|
|
84
|
+
mcp
|
|
85
|
+
.command('servers')
|
|
86
|
+
.description('Show which MCP servers would be loaded')
|
|
87
|
+
.option('-s, --servers <names>', 'Comma-separated list of server names')
|
|
88
|
+
.action(async (options) => {
|
|
89
|
+
await showServersToLoad(options.servers);
|
|
90
|
+
});
|
|
91
|
+
return mcp;
|
|
92
|
+
}
|
|
93
|
+
async function loadMCPConfigs() {
|
|
94
|
+
const toolkit = await loadToolkitServers();
|
|
95
|
+
const global = await loadGlobalServers();
|
|
96
|
+
return { toolkit, global };
|
|
97
|
+
}
|
|
98
|
+
async function loadToolkitServers() {
|
|
99
|
+
const bundledPath = path.join(__dirname, '../../../mcp/servers.json');
|
|
100
|
+
try {
|
|
101
|
+
const content = await fs.readFile(bundledPath, 'utf-8');
|
|
102
|
+
return JSON.parse(content);
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async function loadGlobalServers() {
|
|
109
|
+
const globalConfigPath = path.join(os.homedir(), '.codemie', 'config.json');
|
|
110
|
+
try {
|
|
111
|
+
const content = await fs.readFile(globalConfigPath, 'utf-8');
|
|
112
|
+
const config = JSON.parse(content);
|
|
113
|
+
if (config.mcpServers) {
|
|
114
|
+
return { mcpServers: config.mcpServers };
|
|
115
|
+
}
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
function getAllServers(toolkit, global) {
|
|
123
|
+
const allServers = {};
|
|
124
|
+
// Add toolkit servers first
|
|
125
|
+
if (toolkit?.mcpServers) {
|
|
126
|
+
Object.assign(allServers, toolkit.mcpServers);
|
|
127
|
+
}
|
|
128
|
+
// Global servers override toolkit servers
|
|
129
|
+
if (global?.mcpServers) {
|
|
130
|
+
Object.assign(allServers, global.mcpServers);
|
|
131
|
+
}
|
|
132
|
+
return allServers;
|
|
133
|
+
}
|
|
134
|
+
function formatCommand(config) {
|
|
135
|
+
if (config.command) {
|
|
136
|
+
const command = config.command;
|
|
137
|
+
const args = config.args || [];
|
|
138
|
+
if (args.length > 0) {
|
|
139
|
+
const argsStr = args.slice(0, 2).join(' ');
|
|
140
|
+
return args.length > 2 ? `${command} ${argsStr}...` : `${command} ${argsStr}`;
|
|
141
|
+
}
|
|
142
|
+
return command;
|
|
143
|
+
}
|
|
144
|
+
else if (config.url) {
|
|
145
|
+
return config.url;
|
|
146
|
+
}
|
|
147
|
+
return '-';
|
|
148
|
+
}
|
|
149
|
+
function getServerType(config) {
|
|
150
|
+
if (config.command) {
|
|
151
|
+
if (config.command === 'npx')
|
|
152
|
+
return 'Node.js';
|
|
153
|
+
if (config.command === 'uvx' || config.command === 'python')
|
|
154
|
+
return 'Python';
|
|
155
|
+
return 'External';
|
|
156
|
+
}
|
|
157
|
+
return 'HTTP';
|
|
158
|
+
}
|
|
159
|
+
async function listMCPServers(verbose) {
|
|
160
|
+
console.log(chalk_1.default.bold.cyan('\n═══════════════════════════════════════════════'));
|
|
161
|
+
console.log(chalk_1.default.bold.cyan(' Available MCP Servers for CodeMie Code'));
|
|
162
|
+
console.log(chalk_1.default.bold.cyan('═══════════════════════════════════════════════\n'));
|
|
163
|
+
const { toolkit, global } = await loadMCPConfigs();
|
|
164
|
+
const allServers = getAllServers(toolkit, global);
|
|
165
|
+
if (Object.keys(allServers).length === 0) {
|
|
166
|
+
console.log(chalk_1.default.yellow('No MCP servers found in any configuration.\n'));
|
|
167
|
+
console.log(chalk_1.default.dim('To add MCP servers, edit:'));
|
|
168
|
+
console.log(chalk_1.default.dim(` ${path.join(os.homedir(), '.codemie', 'config.json')}\n`));
|
|
169
|
+
console.log(chalk_1.default.dim('Example configuration:'));
|
|
170
|
+
console.log(chalk_1.default.dim(' "mcpServers": {'));
|
|
171
|
+
console.log(chalk_1.default.dim(' "my-server": {'));
|
|
172
|
+
console.log(chalk_1.default.dim(' "command": "npx",'));
|
|
173
|
+
console.log(chalk_1.default.dim(' "args": ["-y", "@my/mcp-server"]'));
|
|
174
|
+
console.log(chalk_1.default.dim(' }'));
|
|
175
|
+
console.log(chalk_1.default.dim(' }'));
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
// Print table header
|
|
179
|
+
const nameWidth = 20;
|
|
180
|
+
const transportWidth = 12;
|
|
181
|
+
const commandWidth = 35;
|
|
182
|
+
const sourceWidth = 18;
|
|
183
|
+
console.log(chalk_1.default.cyan(padRight('Server Name', nameWidth)) +
|
|
184
|
+
chalk_1.default.green(padRight('Transport', transportWidth)) +
|
|
185
|
+
chalk_1.default.blue(padRight('Command/URL', commandWidth)) +
|
|
186
|
+
chalk_1.default.yellow(padRight('Source', sourceWidth)));
|
|
187
|
+
console.log(chalk_1.default.gray('─'.repeat(nameWidth + transportWidth + commandWidth + sourceWidth)));
|
|
188
|
+
// Get toolkit and global server names for source attribution
|
|
189
|
+
const toolkitServerNames = toolkit?.mcpServers ? Object.keys(toolkit.mcpServers) : [];
|
|
190
|
+
const globalServerNames = global?.mcpServers ? Object.keys(global.mcpServers) : [];
|
|
191
|
+
// Print servers
|
|
192
|
+
for (const [name, config] of Object.entries(allServers)) {
|
|
193
|
+
const transport = config.transport || 'stdio';
|
|
194
|
+
const command = formatCommand(config);
|
|
195
|
+
const source = globalServerNames.includes(name)
|
|
196
|
+
? (toolkitServerNames.includes(name) ? 'Global (override)' : 'Global Config')
|
|
197
|
+
: 'Toolkit';
|
|
198
|
+
console.log(chalk_1.default.cyan(padRight(name, nameWidth)) +
|
|
199
|
+
chalk_1.default.green(padRight(transport, transportWidth)) +
|
|
200
|
+
chalk_1.default.blue(padRight(command, commandWidth)) +
|
|
201
|
+
chalk_1.default.yellow(padRight(source, sourceWidth)));
|
|
202
|
+
if (verbose && config.env && Object.keys(config.env).length > 0) {
|
|
203
|
+
const envVars = Object.keys(config.env).join(', ');
|
|
204
|
+
console.log(chalk_1.default.dim(` Environment: ${envVars}`));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
console.log();
|
|
208
|
+
// Show config paths
|
|
209
|
+
console.log(chalk_1.default.cyan('Configuration Files:'));
|
|
210
|
+
const bundledPath = path.join(__dirname, '../../../mcp/servers.json');
|
|
211
|
+
if (toolkit) {
|
|
212
|
+
console.log(chalk_1.default.dim(` • Toolkit: ${bundledPath}`));
|
|
213
|
+
}
|
|
214
|
+
const globalPath = path.join(os.homedir(), '.codemie', 'config.json');
|
|
215
|
+
if (global) {
|
|
216
|
+
console.log(chalk_1.default.dim(` • Global: ${globalPath}`));
|
|
217
|
+
}
|
|
218
|
+
console.log();
|
|
219
|
+
console.log(chalk_1.default.dim('To use these servers with codemie-code:'));
|
|
220
|
+
console.log(chalk_1.default.dim(' • Auto-loaded: codemie-code'));
|
|
221
|
+
console.log(chalk_1.default.dim(' (all configured servers load automatically)'));
|
|
222
|
+
console.log();
|
|
223
|
+
console.log(chalk_1.default.dim(' • Specific servers: codemie-code --mcp-servers filesystem,cli-mcp-server'));
|
|
224
|
+
console.log(chalk_1.default.dim(' (load only specified servers)\n'));
|
|
225
|
+
}
|
|
226
|
+
async function testMCPServer(serverName) {
|
|
227
|
+
const { toolkit, global } = await loadMCPConfigs();
|
|
228
|
+
const allServers = getAllServers(toolkit, global);
|
|
229
|
+
if (!allServers[serverName]) {
|
|
230
|
+
console.log(chalk_1.default.red(`\n✗ Server '${serverName}' not found in configuration.\n`));
|
|
231
|
+
console.log(chalk_1.default.yellow('Available servers:'));
|
|
232
|
+
for (const name of Object.keys(allServers)) {
|
|
233
|
+
console.log(chalk_1.default.dim(` • ${name}`));
|
|
234
|
+
}
|
|
235
|
+
console.log();
|
|
236
|
+
console.log(chalk_1.default.dim('Use \'codemie-code mcp list\' to see all servers'));
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
const config = allServers[serverName];
|
|
240
|
+
const source = global?.mcpServers?.[serverName] ? 'Global Config' : 'Toolkit Config';
|
|
241
|
+
console.log(chalk_1.default.bold.cyan(`\n╔═══════════════════════════════════════════════╗`));
|
|
242
|
+
console.log(chalk_1.default.bold.cyan(`║ MCP Server Test: ${padRight(serverName, 28)}║`));
|
|
243
|
+
console.log(chalk_1.default.bold.cyan(`╚═══════════════════════════════════════════════╝\n`));
|
|
244
|
+
console.log(chalk_1.default.green(`✓ Server '${serverName}' found in configuration`));
|
|
245
|
+
console.log(chalk_1.default.cyan('Source: ') + source);
|
|
246
|
+
console.log(chalk_1.default.cyan('Transport: ') + (config.transport || 'stdio'));
|
|
247
|
+
const transport = config.transport || 'stdio';
|
|
248
|
+
if (transport === 'stdio') {
|
|
249
|
+
if (config.command) {
|
|
250
|
+
console.log(chalk_1.default.cyan('Command: ') + config.command);
|
|
251
|
+
if (config.args && config.args.length > 0) {
|
|
252
|
+
console.log(chalk_1.default.cyan('Arguments: ') + config.args.join(' '));
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
console.log(chalk_1.default.yellow('⚠ Missing \'command\' field for stdio transport'));
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
else if (transport === 'sse' || transport === 'streamable_http') {
|
|
260
|
+
if (config.url) {
|
|
261
|
+
console.log(chalk_1.default.cyan('URL: ') + config.url);
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
console.log(chalk_1.default.yellow(`⚠ Missing 'url' field for ${transport} transport`));
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
if (config.env && Object.keys(config.env).length > 0) {
|
|
268
|
+
const envVars = Object.keys(config.env).join(', ');
|
|
269
|
+
console.log(chalk_1.default.cyan('Environment Variables: ') + envVars);
|
|
270
|
+
}
|
|
271
|
+
console.log();
|
|
272
|
+
console.log(chalk_1.default.dim('To use this server:'));
|
|
273
|
+
console.log(chalk_1.default.dim(` codemie-code --mcp-servers ${serverName}\n`));
|
|
274
|
+
}
|
|
275
|
+
async function showServersToLoad(serversParam) {
|
|
276
|
+
if (!serversParam) {
|
|
277
|
+
console.log(chalk_1.default.yellow('\nNo MCP servers specified. Use --servers option.\n'));
|
|
278
|
+
console.log(chalk_1.default.dim('Example usage:'));
|
|
279
|
+
console.log(chalk_1.default.dim(' codemie-code mcp servers --servers filesystem,cli-mcp-server\n'));
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
const serverNames = serversParam.split(',').map(s => s.trim()).filter(Boolean);
|
|
283
|
+
if (serverNames.length === 0) {
|
|
284
|
+
console.log(chalk_1.default.yellow('\nNo valid server names provided\n'));
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
const { toolkit, global } = await loadMCPConfigs();
|
|
288
|
+
const allServers = getAllServers(toolkit, global);
|
|
289
|
+
const missingServers = serverNames.filter(name => !allServers[name]);
|
|
290
|
+
const availableServers = serverNames.filter(name => allServers[name]);
|
|
291
|
+
if (missingServers.length > 0) {
|
|
292
|
+
console.log(chalk_1.default.red('\n✗ The following servers were not found:'));
|
|
293
|
+
for (const server of missingServers) {
|
|
294
|
+
console.log(chalk_1.default.dim(` • ${server}`));
|
|
295
|
+
}
|
|
296
|
+
console.log();
|
|
297
|
+
console.log(chalk_1.default.yellow('Use \'codemie-code mcp list\' to see available servers\n'));
|
|
298
|
+
}
|
|
299
|
+
if (availableServers.length > 0) {
|
|
300
|
+
console.log(chalk_1.default.green('\n✓ The following servers would be loaded:\n'));
|
|
301
|
+
const nameWidth = 22;
|
|
302
|
+
const transportWidth = 12;
|
|
303
|
+
const commandWidth = 35;
|
|
304
|
+
const typeWidth = 10;
|
|
305
|
+
console.log(chalk_1.default.cyan(padRight('Server', nameWidth)) +
|
|
306
|
+
chalk_1.default.green(padRight('Transport', transportWidth)) +
|
|
307
|
+
chalk_1.default.blue(padRight('Command/URL', commandWidth)) +
|
|
308
|
+
chalk_1.default.yellow(padRight('Type', typeWidth)));
|
|
309
|
+
console.log(chalk_1.default.gray('─'.repeat(nameWidth + transportWidth + commandWidth + typeWidth)));
|
|
310
|
+
for (const name of availableServers) {
|
|
311
|
+
const config = allServers[name];
|
|
312
|
+
const transport = config.transport || 'stdio';
|
|
313
|
+
const command = formatCommand(config);
|
|
314
|
+
const type = getServerType(config);
|
|
315
|
+
console.log(chalk_1.default.cyan(padRight(name, nameWidth)) +
|
|
316
|
+
chalk_1.default.green(padRight(transport, transportWidth)) +
|
|
317
|
+
chalk_1.default.blue(padRight(command, commandWidth)) +
|
|
318
|
+
chalk_1.default.yellow(padRight(type, typeWidth)));
|
|
319
|
+
}
|
|
320
|
+
console.log();
|
|
321
|
+
console.log(chalk_1.default.dim('Start codemie-code with these servers:'));
|
|
322
|
+
console.log(chalk_1.default.dim(` codemie-code --mcp-servers ${availableServers.join(',')}\n`));
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
function padRight(str, width) {
|
|
326
|
+
if (str.length >= width) {
|
|
327
|
+
return str.substring(0, width - 3) + '...';
|
|
328
|
+
}
|
|
329
|
+
return str + ' '.repeat(width - str.length);
|
|
330
|
+
}
|
|
331
|
+
async function ensureCodemieDir() {
|
|
332
|
+
const codemieDir = path.join(os.homedir(), '.codemie');
|
|
333
|
+
try {
|
|
334
|
+
await fs.mkdir(codemieDir, { recursive: true });
|
|
335
|
+
}
|
|
336
|
+
catch (error) {
|
|
337
|
+
throw new Error(`Failed to create .codemie directory: ${(0, errors_js_1.getErrorMessage)(error)}`);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
async function loadGlobalConfig() {
|
|
341
|
+
const globalConfigPath = path.join(os.homedir(), '.codemie', 'config.json');
|
|
342
|
+
try {
|
|
343
|
+
const content = await fs.readFile(globalConfigPath, 'utf-8');
|
|
344
|
+
return JSON.parse(content);
|
|
345
|
+
}
|
|
346
|
+
catch (error) {
|
|
347
|
+
if (error && typeof error === 'object' && 'code' in error && error.code === 'ENOENT') {
|
|
348
|
+
return {};
|
|
349
|
+
}
|
|
350
|
+
throw error;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
async function saveGlobalConfig(config) {
|
|
354
|
+
await ensureCodemieDir();
|
|
355
|
+
const globalConfigPath = path.join(os.homedir(), '.codemie', 'config.json');
|
|
356
|
+
await fs.writeFile(globalConfigPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
357
|
+
}
|
|
358
|
+
async function addMCPServer(name, commandOrUrl, options) {
|
|
359
|
+
// Validate transport type
|
|
360
|
+
const validTransports = ['stdio', 'sse', 'streamable_http'];
|
|
361
|
+
if (!validTransports.includes(options.transport)) {
|
|
362
|
+
console.log(chalk_1.default.red(`\n✗ Invalid transport type: ${options.transport}`));
|
|
363
|
+
console.log(chalk_1.default.yellow(`Valid types: ${validTransports.join(', ')}\n`));
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
// Build server configuration
|
|
367
|
+
const serverConfig = {
|
|
368
|
+
transport: options.transport
|
|
369
|
+
};
|
|
370
|
+
if (options.transport === 'stdio') {
|
|
371
|
+
serverConfig.command = commandOrUrl;
|
|
372
|
+
if (options.args && options.args.length > 0) {
|
|
373
|
+
serverConfig.args = options.args;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
else {
|
|
377
|
+
serverConfig.url = commandOrUrl;
|
|
378
|
+
}
|
|
379
|
+
// Parse environment variables
|
|
380
|
+
if (options.env && options.env.length > 0) {
|
|
381
|
+
serverConfig.env = {};
|
|
382
|
+
for (const envVar of options.env) {
|
|
383
|
+
const [key, ...valueParts] = envVar.split('=');
|
|
384
|
+
const value = valueParts.join('=');
|
|
385
|
+
if (key && value) {
|
|
386
|
+
serverConfig.env[key] = value;
|
|
387
|
+
}
|
|
388
|
+
else {
|
|
389
|
+
console.log(chalk_1.default.yellow(`\n⚠ Invalid environment variable format: ${envVar}`));
|
|
390
|
+
console.log(chalk_1.default.dim('Expected format: KEY=VALUE\n'));
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
try {
|
|
396
|
+
// Load global config
|
|
397
|
+
const config = await loadGlobalConfig();
|
|
398
|
+
// Initialize mcpServers if not exists
|
|
399
|
+
if (!config.mcpServers || typeof config.mcpServers !== 'object') {
|
|
400
|
+
config.mcpServers = {};
|
|
401
|
+
}
|
|
402
|
+
const mcpServers = config.mcpServers;
|
|
403
|
+
// Check if server already exists
|
|
404
|
+
const isUpdate = mcpServers[name] !== undefined;
|
|
405
|
+
// Add/update server
|
|
406
|
+
mcpServers[name] = serverConfig;
|
|
407
|
+
config.mcpServers = mcpServers;
|
|
408
|
+
// Save config
|
|
409
|
+
await saveGlobalConfig(config);
|
|
410
|
+
// Success message
|
|
411
|
+
if (isUpdate) {
|
|
412
|
+
console.log(chalk_1.default.green(`\n✓ Updated MCP server configuration: ${name}`));
|
|
413
|
+
}
|
|
414
|
+
else {
|
|
415
|
+
console.log(chalk_1.default.green(`\n✓ Added MCP server configuration: ${name}`));
|
|
416
|
+
}
|
|
417
|
+
// Show configuration
|
|
418
|
+
console.log(chalk_1.default.cyan('\nConfiguration:'));
|
|
419
|
+
console.log(JSON.stringify(serverConfig, null, 2));
|
|
420
|
+
console.log(chalk_1.default.dim(`\nSaved to: ${path.join(os.homedir(), '.codemie', 'config.json')}`));
|
|
421
|
+
console.log(chalk_1.default.dim(`\nTo use this server:`));
|
|
422
|
+
console.log(chalk_1.default.dim(` codemie-code --mcp-servers ${name}\n`));
|
|
423
|
+
}
|
|
424
|
+
catch (error) {
|
|
425
|
+
console.log(chalk_1.default.red(`\n✗ Failed to add MCP server: ${(0, errors_js_1.getErrorMessage)(error)}\n`));
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
async function removeMCPServer(name) {
|
|
429
|
+
try {
|
|
430
|
+
// Load global config
|
|
431
|
+
const config = await loadGlobalConfig();
|
|
432
|
+
// Check if mcpServers exists
|
|
433
|
+
if (!config.mcpServers || typeof config.mcpServers !== 'object') {
|
|
434
|
+
console.log(chalk_1.default.yellow(`\n⚠ No MCP servers configured\n`));
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
const mcpServers = config.mcpServers;
|
|
438
|
+
// Check if server exists
|
|
439
|
+
if (!mcpServers[name]) {
|
|
440
|
+
console.log(chalk_1.default.yellow(`\n⚠ MCP server '${name}' not found in global configuration\n`));
|
|
441
|
+
console.log(chalk_1.default.dim('Available servers:'));
|
|
442
|
+
for (const serverName of Object.keys(mcpServers)) {
|
|
443
|
+
console.log(chalk_1.default.dim(` • ${serverName}`));
|
|
444
|
+
}
|
|
445
|
+
console.log();
|
|
446
|
+
return;
|
|
447
|
+
}
|
|
448
|
+
// Remove server
|
|
449
|
+
delete mcpServers[name];
|
|
450
|
+
config.mcpServers = mcpServers;
|
|
451
|
+
// Save config
|
|
452
|
+
await saveGlobalConfig(config);
|
|
453
|
+
console.log(chalk_1.default.green(`\n✓ Removed MCP server: ${name}\n`));
|
|
454
|
+
}
|
|
455
|
+
catch (error) {
|
|
456
|
+
console.log(chalk_1.default.red(`\n✗ Failed to remove MCP server: ${(0, errors_js_1.getErrorMessage)(error)}\n`));
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,gBAAgB,IAAI,OAAO,CAqC1C"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createRunCommand = createRunCommand;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const registry_1 = require("../../agents/registry");
|
|
6
|
+
const logger_1 = require("../../utils/logger");
|
|
7
|
+
const errors_1 = require("../../utils/errors");
|
|
8
|
+
function createRunCommand() {
|
|
9
|
+
const command = new commander_1.Command('run');
|
|
10
|
+
command
|
|
11
|
+
.description('Run an agent')
|
|
12
|
+
.argument('<agent>', 'Agent name to run')
|
|
13
|
+
.argument('[args...]', 'Additional arguments to pass to the agent')
|
|
14
|
+
.option('-m, --model <model>', 'Model to use')
|
|
15
|
+
.action(async (agentName, args, options) => {
|
|
16
|
+
try {
|
|
17
|
+
const agent = registry_1.AgentRegistry.getAgent(agentName);
|
|
18
|
+
if (!agent) {
|
|
19
|
+
throw new errors_1.AgentNotFoundError(agentName);
|
|
20
|
+
}
|
|
21
|
+
// Check if installed
|
|
22
|
+
if (!(await agent.isInstalled())) {
|
|
23
|
+
logger_1.logger.error(`${agent.displayName} is not installed. Install it first with: codemie install ${agentName}`);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
// Set model environment variable if provided
|
|
27
|
+
if (options.model) {
|
|
28
|
+
const envVar = `${agentName.toUpperCase().replace('-', '_')}_MODEL`;
|
|
29
|
+
process.env[envVar] = options.model;
|
|
30
|
+
}
|
|
31
|
+
// Run the agent
|
|
32
|
+
await agent.run(args);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
logger_1.logger.error('Failed to run agent:', error);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
return command;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":";;AAKA,4CAqCC;AA1CD,yCAAoC;AACpC,oDAAsD;AACtD,+CAA4C;AAC5C,+CAAwD;AAExD,SAAgB,gBAAgB;IAC9B,MAAM,OAAO,GAAG,IAAI,mBAAO,CAAC,KAAK,CAAC,CAAC;IAEnC,OAAO;SACJ,WAAW,CAAC,cAAc,CAAC;SAC3B,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;SACxC,QAAQ,CAAC,WAAW,EAAE,2CAA2C,CAAC;SAClE,MAAM,CAAC,qBAAqB,EAAE,cAAc,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,IAAc,EAAE,OAAO,EAAE,EAAE;QAC3D,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,wBAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAEhD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,2BAAkB,CAAC,SAAS,CAAC,CAAC;YAC1C,CAAC;YAED,qBAAqB;YACrB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBACjC,eAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,WAAW,6DAA6D,SAAS,EAAE,CAAC,CAAC;gBAC3G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,6CAA6C;YAC7C,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,MAAM,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC;gBACpE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;YACtC,CAAC;YAED,gBAAgB;YAChB,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,eAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,sBAAsB,IAAI,OAAO,CAmEhD"}
|
|
@@ -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.createUninstallCommand = createUninstallCommand;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const registry_1 = require("../../agents/registry");
|
|
9
|
+
const logger_1 = require("../../utils/logger");
|
|
10
|
+
const errors_1 = require("../../utils/errors");
|
|
11
|
+
const ora_1 = __importDefault(require("ora"));
|
|
12
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
13
|
+
function createUninstallCommand() {
|
|
14
|
+
const command = new commander_1.Command('uninstall');
|
|
15
|
+
command
|
|
16
|
+
.description('Uninstall an agent')
|
|
17
|
+
.argument('[agent]', 'Agent name to uninstall')
|
|
18
|
+
.action(async (agentName) => {
|
|
19
|
+
try {
|
|
20
|
+
// If no agent name provided, show installed agents
|
|
21
|
+
if (!agentName) {
|
|
22
|
+
const installedAgents = await registry_1.AgentRegistry.getInstalledAgents();
|
|
23
|
+
if (installedAgents.length === 0) {
|
|
24
|
+
console.log();
|
|
25
|
+
console.log(chalk_1.default.yellow('No agents are currently installed.'));
|
|
26
|
+
console.log();
|
|
27
|
+
console.log(chalk_1.default.cyan('💡 Tip:') + ' Run ' + chalk_1.default.blueBright('codemie list') + ' to see all available agents');
|
|
28
|
+
console.log();
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
console.log();
|
|
32
|
+
console.log(chalk_1.default.bold('Installed agents:\n'));
|
|
33
|
+
for (const agent of installedAgents) {
|
|
34
|
+
const version = await agent.getVersion();
|
|
35
|
+
const versionStr = version ? chalk_1.default.gray(` (${version})`) : '';
|
|
36
|
+
console.log(chalk_1.default.bold(` ${agent.displayName}`) + versionStr);
|
|
37
|
+
console.log(` Command: ${chalk_1.default.cyan(`codemie uninstall ${agent.name}`)}`);
|
|
38
|
+
console.log(` ${chalk_1.default.gray(agent.description)}`);
|
|
39
|
+
console.log();
|
|
40
|
+
}
|
|
41
|
+
console.log(chalk_1.default.cyan('💡 Tip:') + ' Run ' + chalk_1.default.blueBright('codemie uninstall <agent>') + ' to uninstall an agent');
|
|
42
|
+
console.log();
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const agent = registry_1.AgentRegistry.getAgent(agentName);
|
|
46
|
+
if (!agent) {
|
|
47
|
+
throw new errors_1.AgentNotFoundError(agentName);
|
|
48
|
+
}
|
|
49
|
+
// Check if installed
|
|
50
|
+
if (!(await agent.isInstalled())) {
|
|
51
|
+
logger_1.logger.info(`${agent.displayName} is not installed`);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const spinner = (0, ora_1.default)(`Uninstalling ${agent.displayName}...`).start();
|
|
55
|
+
try {
|
|
56
|
+
await agent.uninstall();
|
|
57
|
+
spinner.succeed(`${agent.displayName} uninstalled successfully`);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
spinner.fail(`Failed to uninstall ${agent.displayName}`);
|
|
61
|
+
throw error;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
logger_1.logger.error('Uninstallation failed:', error);
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
return command;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=uninstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/cli/commands/uninstall.ts"],"names":[],"mappings":";;;;;AAOA,wDAmEC;AA1ED,yCAAoC;AACpC,oDAAsD;AACtD,+CAA4C;AAC5C,+CAAwD;AACxD,8CAAsB;AACtB,kDAA0B;AAE1B,SAAgB,sBAAsB;IACpC,MAAM,OAAO,GAAG,IAAI,mBAAO,CAAC,WAAW,CAAC,CAAC;IAEzC,OAAO;SACJ,WAAW,CAAC,oBAAoB,CAAC;SACjC,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;SAC9C,MAAM,CAAC,KAAK,EAAE,SAAkB,EAAE,EAAE;QACnC,IAAI,CAAC;YACH,mDAAmD;YACnD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,eAAe,GAAG,MAAM,wBAAa,CAAC,kBAAkB,EAAE,CAAC;gBAEjE,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjC,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC;oBAChE,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,GAAG,eAAK,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,8BAA8B,CAAC,CAAC;oBACjH,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO;gBACT,CAAC;gBAED,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBAE/C,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;oBACpC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;oBACzC,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAE9D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;oBAC/D,OAAO,CAAC,GAAG,CAAC,gBAAgB,eAAK,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC7E,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;oBACpD,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChB,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,GAAG,eAAK,CAAC,UAAU,CAAC,2BAA2B,CAAC,GAAG,wBAAwB,CAAC,CAAC;gBACxH,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAAG,wBAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAEhD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,2BAAkB,CAAC,SAAS,CAAC,CAAC;YAC1C,CAAC;YAED,qBAAqB;YACrB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBACjC,eAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,WAAW,mBAAmB,CAAC,CAAC;gBACrD,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,gBAAgB,KAAK,CAAC,WAAW,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;YAEpE,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC;gBACxB,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,WAAW,2BAA2B,CAAC,CAAC;YACnE,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,uBAAuB,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;gBACzD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,eAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,oBAAoB,IAAI,OAAO,CAiB9C"}
|