@codemieai/code 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.codemie/guides/git-workflow.md +493 -0
- package/CLAUDE.md +130 -761
- package/README.md +283 -695
- package/bin/codemie-claude.js +122 -0
- package/bin/codemie-code.js +90 -15
- package/bin/codemie-codex.js +138 -0
- package/bin/codemie.js +1 -1
- package/config.example.json +10 -0
- package/dist/agents/adapters/claude-code.d.ts +2 -2
- package/dist/agents/adapters/claude-code.d.ts.map +1 -1
- package/dist/agents/adapters/claude-code.js +20 -42
- package/dist/agents/adapters/claude-code.js.map +1 -1
- package/dist/agents/adapters/codemie-code.d.ts +11 -2
- package/dist/agents/adapters/codemie-code.d.ts.map +1 -1
- package/dist/agents/adapters/codemie-code.js +93 -25
- package/dist/agents/adapters/codemie-code.js.map +1 -1
- package/dist/agents/adapters/codex.d.ts +2 -2
- package/dist/agents/adapters/codex.d.ts.map +1 -1
- package/dist/agents/adapters/codex.js +31 -24
- package/dist/agents/adapters/codex.js.map +1 -1
- package/dist/agents/codemie-code/agent.d.ts +89 -0
- package/dist/agents/codemie-code/agent.d.ts.map +1 -0
- package/dist/agents/codemie-code/agent.js +523 -0
- package/dist/agents/codemie-code/agent.js.map +1 -0
- package/dist/agents/codemie-code/config.d.ts +40 -0
- package/dist/agents/codemie-code/config.d.ts.map +1 -0
- package/dist/agents/codemie-code/config.js +276 -0
- package/dist/agents/codemie-code/config.js.map +1 -0
- package/dist/agents/codemie-code/filters.d.ts +91 -0
- package/dist/agents/codemie-code/filters.d.ts.map +1 -0
- package/dist/agents/codemie-code/filters.js +328 -0
- package/dist/agents/codemie-code/filters.js.map +1 -0
- package/dist/agents/codemie-code/index.d.ts +78 -0
- package/dist/agents/codemie-code/index.d.ts.map +1 -0
- package/dist/agents/codemie-code/index.js +259 -0
- package/dist/agents/codemie-code/index.js.map +1 -0
- package/dist/agents/codemie-code/prompts.d.ts +11 -0
- package/dist/agents/codemie-code/prompts.d.ts.map +1 -0
- package/dist/agents/codemie-code/prompts.js +31 -0
- package/dist/agents/codemie-code/prompts.js.map +1 -0
- package/dist/agents/codemie-code/streaming/events.d.ts +7 -0
- package/dist/agents/codemie-code/streaming/events.d.ts.map +1 -0
- package/dist/agents/codemie-code/streaming/events.js +7 -0
- package/dist/agents/codemie-code/streaming/events.js.map +1 -0
- package/dist/agents/codemie-code/streaming/formatter.d.ts +2 -0
- package/dist/agents/codemie-code/streaming/formatter.d.ts.map +1 -0
- package/dist/agents/codemie-code/streaming/formatter.js +2 -0
- package/dist/agents/codemie-code/streaming/formatter.js.map +1 -0
- package/dist/agents/codemie-code/streaming/ui.d.ts +2 -0
- package/dist/agents/codemie-code/streaming/ui.d.ts.map +1 -0
- package/dist/agents/codemie-code/streaming/ui.js +2 -0
- package/dist/agents/codemie-code/streaming/ui.js.map +1 -0
- package/dist/agents/codemie-code/tokenUtils.d.ts +108 -0
- package/dist/agents/codemie-code/tokenUtils.d.ts.map +1 -0
- package/dist/agents/codemie-code/tokenUtils.js +220 -0
- package/dist/agents/codemie-code/tokenUtils.js.map +1 -0
- package/dist/agents/codemie-code/toolMetadata.d.ts +15 -0
- package/dist/agents/codemie-code/toolMetadata.d.ts.map +1 -0
- package/dist/agents/codemie-code/toolMetadata.js +315 -0
- package/dist/agents/codemie-code/toolMetadata.js.map +1 -0
- package/dist/agents/codemie-code/tools/command.d.ts +2 -0
- package/dist/agents/codemie-code/tools/command.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/command.js +2 -0
- package/dist/agents/codemie-code/tools/command.js.map +1 -0
- package/dist/agents/codemie-code/tools/filesystem.d.ts +2 -0
- package/dist/agents/codemie-code/tools/filesystem.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/filesystem.js +2 -0
- package/dist/agents/codemie-code/tools/filesystem.js.map +1 -0
- package/dist/agents/codemie-code/tools/git.d.ts +2 -0
- package/dist/agents/codemie-code/tools/git.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/git.js +2 -0
- package/dist/agents/codemie-code/tools/git.js.map +1 -0
- package/dist/agents/codemie-code/tools/index.d.ts +19 -0
- package/dist/agents/codemie-code/tools/index.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/index.js +239 -0
- package/dist/agents/codemie-code/tools/index.js.map +1 -0
- package/dist/agents/codemie-code/tools/security.d.ts +2 -0
- package/dist/agents/codemie-code/tools/security.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/security.js +2 -0
- package/dist/agents/codemie-code/tools/security.js.map +1 -0
- package/dist/agents/codemie-code/types.d.ts +254 -0
- package/dist/agents/codemie-code/types.d.ts.map +1 -0
- package/dist/agents/codemie-code/types.js +35 -0
- package/dist/agents/codemie-code/types.js.map +1 -0
- package/dist/agents/codemie-code/ui.d.ts +83 -0
- package/dist/agents/codemie-code/ui.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui.js +624 -0
- package/dist/agents/codemie-code/ui.js.map +1 -0
- package/dist/agents/registry.d.ts +1 -1
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +7 -13
- package/dist/agents/registry.js.map +1 -1
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +323 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +113 -69
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/env.d.ts +3 -0
- package/dist/cli/commands/env.d.ts.map +1 -0
- package/dist/cli/commands/env.js +19 -0
- package/dist/cli/commands/env.js.map +1 -0
- package/dist/cli/commands/install.js +27 -33
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/list.js +18 -24
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +307 -21
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/setup.d.ts +3 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +357 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/uninstall.js +24 -30
- package/dist/cli/commands/uninstall.js.map +1 -1
- package/dist/cli/commands/version.d.ts.map +1 -1
- package/dist/cli/commands/version.js +11 -16
- package/dist/cli/commands/version.js.map +1 -1
- package/dist/cli/index.js +47 -31
- package/dist/cli/index.js.map +1 -1
- package/dist/env/manager.js +9 -46
- package/dist/env/manager.js.map +1 -1
- package/dist/index.d.ts +6 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -43
- package/dist/index.js.map +1 -1
- package/dist/utils/async-tips.d.ts.map +1 -1
- package/dist/utils/async-tips.js +16 -55
- package/dist/utils/async-tips.js.map +1 -1
- package/dist/utils/clipboard.d.ts +16 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +179 -0
- package/dist/utils/clipboard.js.map +1 -0
- package/dist/utils/config-loader.d.ts +96 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +351 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/dist/utils/dirname.d.ts +7 -0
- package/dist/utils/dirname.d.ts.map +1 -0
- package/dist/utils/dirname.js +11 -0
- package/dist/utils/dirname.js.map +1 -0
- package/dist/utils/errors.js +7 -17
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/exec.js +3 -6
- package/dist/utils/exec.js.map +1 -1
- package/dist/utils/first-time.d.ts +34 -0
- package/dist/utils/first-time.d.ts.map +1 -0
- package/dist/utils/first-time.js +245 -0
- package/dist/utils/first-time.js.map +1 -0
- package/dist/utils/health-checker.d.ts +20 -0
- package/dist/utils/health-checker.d.ts.map +1 -0
- package/dist/utils/health-checker.js +168 -0
- package/dist/utils/health-checker.js.map +1 -0
- package/dist/utils/logger.js +12 -18
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/model-fetcher.d.ts +21 -0
- package/dist/utils/model-fetcher.d.ts.map +1 -0
- package/dist/utils/model-fetcher.js +137 -0
- package/dist/utils/model-fetcher.js.map +1 -0
- package/dist/utils/tips.d.ts.map +1 -1
- package/dist/utils/tips.js +13 -52
- package/dist/utils/tips.js.map +1 -1
- package/package.json +17 -23
- package/scripts/README.md +80 -0
- package/scripts/release.sh +156 -0
- package/dist/agents/adapters/aider.d.ts +0 -12
- package/dist/agents/adapters/aider.d.ts.map +0 -1
- package/dist/agents/adapters/aider.js +0 -80
- package/dist/agents/adapters/aider.js.map +0 -1
- package/dist/cli/cli.d.ts +0 -4
- package/dist/cli/cli.d.ts.map +0 -1
- package/dist/cli/cli.js +0 -107
- package/dist/cli/cli.js.map +0 -1
- package/dist/cli/commands/mcp.d.ts +0 -3
- package/dist/cli/commands/mcp.d.ts.map +0 -1
- package/dist/cli/commands/mcp.js +0 -459
- package/dist/cli/commands/mcp.js.map +0 -1
- package/dist/code/agent-events.d.ts +0 -39
- package/dist/code/agent-events.d.ts.map +0 -1
- package/dist/code/agent-events.js +0 -4
- package/dist/code/agent-events.js.map +0 -1
- package/dist/code/agent.d.ts +0 -19
- package/dist/code/agent.d.ts.map +0 -1
- package/dist/code/agent.js +0 -144
- package/dist/code/agent.js.map +0 -1
- package/dist/code/config.d.ts +0 -13
- package/dist/code/config.d.ts.map +0 -1
- package/dist/code/config.js +0 -41
- package/dist/code/config.js.map +0 -1
- package/dist/code/index.d.ts +0 -19
- package/dist/code/index.d.ts.map +0 -1
- package/dist/code/index.js +0 -400
- package/dist/code/index.js.map +0 -1
- package/dist/code/prompts.d.ts +0 -2
- package/dist/code/prompts.d.ts.map +0 -1
- package/dist/code/prompts.js +0 -45
- package/dist/code/prompts.js.map +0 -1
- package/dist/code/tools/command.d.ts +0 -8
- package/dist/code/tools/command.d.ts.map +0 -1
- package/dist/code/tools/command.js +0 -83
- package/dist/code/tools/command.js.map +0 -1
- package/dist/code/tools/diff-utils.d.ts +0 -2
- package/dist/code/tools/diff-utils.d.ts.map +0 -1
- package/dist/code/tools/diff-utils.js +0 -45
- package/dist/code/tools/diff-utils.js.map +0 -1
- package/dist/code/tools/filesystem.d.ts +0 -11
- package/dist/code/tools/filesystem.d.ts.map +0 -1
- package/dist/code/tools/filesystem.js +0 -442
- package/dist/code/tools/filesystem.js.map +0 -1
- package/dist/code/tools/git.d.ts +0 -7
- package/dist/code/tools/git.d.ts.map +0 -1
- package/dist/code/tools/git.js +0 -111
- package/dist/code/tools/git.js.map +0 -1
- package/dist/code/tools/mcp.d.ts +0 -13
- package/dist/code/tools/mcp.d.ts.map +0 -1
- package/dist/code/tools/mcp.js +0 -230
- package/dist/code/tools/mcp.js.map +0 -1
- package/dist/data/tips.json +0 -118
- package/dist/ui/terminal-ui.d.ts +0 -73
- package/dist/ui/terminal-ui.d.ts.map +0 -1
- package/dist/ui/terminal-ui.js +0 -900
- package/dist/ui/terminal-ui.js.map +0 -1
- package/dist/utils/env-mapper.d.ts +0 -40
- package/dist/utils/env-mapper.d.ts.map +0 -1
- package/dist/utils/env-mapper.js +0 -122
- package/dist/utils/env-mapper.js.map +0 -1
- package/docs/USER_GUIDE.md +0 -573
- package/tests/agent-direct.test.mjs +0 -45
- package/tests/agent-output.test.mjs +0 -64
- package/tests/codemie-code.test.mjs +0 -42
- package/tests/context7-only.test.mjs +0 -42
- package/tests/conversation-flow.test.mjs +0 -63
- package/tests/interactive-simulation.test.mjs +0 -60
- package/tests/live-output.test.mjs +0 -53
- package/tests/mcp-context7.test.mjs +0 -105
- package/tests/mcp-e2e.test.mjs +0 -109
- package/tests/mcp-time-server.test.mjs +0 -58
- package/tests/streaming.test.mjs +0 -57
- package/tests/test-helpers.mjs +0 -94
- package/tests/text-wrapping.test.mjs +0 -33
- package/tests/tool-count.test.mjs +0 -81
- package/tests/ui-format.test.mjs +0 -39
- package/tests/ui-state.test.mjs +0 -72
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,gBAAgB,IAAI,OAAO,CAmB1C"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { FirstTimeExperience } from '../../utils/first-time.js';
|
|
3
|
+
export function createEnvCommand() {
|
|
4
|
+
const command = new Command('env');
|
|
5
|
+
command
|
|
6
|
+
.description('Show required environment variables for manual configuration')
|
|
7
|
+
.argument('[provider]', 'Provider: ai-run, bedrock, anthropic, azure', 'ai-run')
|
|
8
|
+
.action((provider) => {
|
|
9
|
+
const validProviders = ['ai-run', 'bedrock', 'anthropic', 'azure'];
|
|
10
|
+
if (!validProviders.includes(provider)) {
|
|
11
|
+
console.error(`Invalid provider: ${provider}`);
|
|
12
|
+
console.error(`Valid providers: ${validProviders.join(', ')}`);
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
FirstTimeExperience.showManualSetup(provider);
|
|
16
|
+
});
|
|
17
|
+
return command;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/cli/commands/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,MAAM,UAAU,gBAAgB;IAC9B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IAEnC,OAAO;SACJ,WAAW,CAAC,8DAA8D,CAAC;SAC3E,QAAQ,CAAC,YAAY,EAAE,6CAA6C,EAAE,QAAQ,CAAC;SAC/E,MAAM,CAAC,CAAC,QAAgB,EAAE,EAAE;QAC3B,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAEnE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,KAAK,CAAC,oBAAoB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,mBAAmB,CAAC,eAAe,CAAC,QAAwD,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1,64 +1,58 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
const async_tips_1 = require("../../utils/async-tips");
|
|
11
|
-
const errors_1 = require("../../utils/errors");
|
|
12
|
-
const ora_1 = __importDefault(require("ora"));
|
|
13
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
14
|
-
function createInstallCommand() {
|
|
15
|
-
const command = new commander_1.Command('install');
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { AgentRegistry } from '../../agents/registry.js';
|
|
3
|
+
import { logger } from '../../utils/logger.js';
|
|
4
|
+
import { asyncTipDisplay } from '../../utils/async-tips.js';
|
|
5
|
+
import { AgentInstallationError } from '../../utils/errors.js';
|
|
6
|
+
import ora from 'ora';
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
export function createInstallCommand() {
|
|
9
|
+
const command = new Command('install');
|
|
16
10
|
command
|
|
17
|
-
.description('Install an agent')
|
|
18
|
-
.argument('[agent]', 'Agent name to install')
|
|
11
|
+
.description('Install an external AI coding agent (e.g., claude, codex)')
|
|
12
|
+
.argument('[agent]', 'Agent name to install (run without argument to see available agents)')
|
|
19
13
|
.action(async (agentName) => {
|
|
20
14
|
try {
|
|
21
15
|
// If no agent name provided, show available agents
|
|
22
16
|
if (!agentName) {
|
|
23
|
-
const agents =
|
|
17
|
+
const agents = AgentRegistry.getAllAgents();
|
|
24
18
|
console.log();
|
|
25
|
-
console.log(
|
|
19
|
+
console.log(chalk.bold('Available agents to install:\n'));
|
|
26
20
|
for (const agent of agents) {
|
|
27
21
|
const installed = await agent.isInstalled();
|
|
28
|
-
const status = installed ?
|
|
22
|
+
const status = installed ? chalk.green('✓ installed') : chalk.yellow('○ not installed');
|
|
29
23
|
const version = installed ? await agent.getVersion() : null;
|
|
30
|
-
const versionStr = version ?
|
|
31
|
-
console.log(
|
|
32
|
-
console.log(` Command: ${
|
|
24
|
+
const versionStr = version ? chalk.gray(` (${version})`) : '';
|
|
25
|
+
console.log(chalk.bold(` ${agent.displayName}`) + versionStr);
|
|
26
|
+
console.log(` Command: ${chalk.cyan(`codemie install ${agent.name}`)}`);
|
|
33
27
|
console.log(` Status: ${status}`);
|
|
34
|
-
console.log(` ${
|
|
28
|
+
console.log(` ${chalk.gray(agent.description)}`);
|
|
35
29
|
console.log();
|
|
36
30
|
}
|
|
37
|
-
console.log(
|
|
31
|
+
console.log(chalk.cyan('💡 Tip:') + ' Run ' + chalk.blueBright('codemie install <agent>') + ' to install an agent');
|
|
38
32
|
console.log();
|
|
39
33
|
return;
|
|
40
34
|
}
|
|
41
|
-
const agent =
|
|
35
|
+
const agent = AgentRegistry.getAgent(agentName);
|
|
42
36
|
if (!agent) {
|
|
43
|
-
throw new
|
|
37
|
+
throw new AgentInstallationError(agentName, `Unknown agent. Use 'codemie list' to see available agents.`);
|
|
44
38
|
}
|
|
45
39
|
// Check if already installed
|
|
46
40
|
if (await agent.isInstalled()) {
|
|
47
|
-
|
|
41
|
+
logger.info(`${agent.displayName} is already installed`);
|
|
48
42
|
return;
|
|
49
43
|
}
|
|
50
|
-
const spinner = (
|
|
44
|
+
const spinner = ora(`Installing ${agent.displayName}...`).start();
|
|
51
45
|
try {
|
|
52
46
|
// Show tips during installation
|
|
53
47
|
const installPromise = agent.install();
|
|
54
|
-
const stopTips =
|
|
48
|
+
const stopTips = asyncTipDisplay.showDuring(installPromise);
|
|
55
49
|
await installPromise;
|
|
56
50
|
stopTips();
|
|
57
51
|
spinner.succeed(`${agent.displayName} installed successfully`);
|
|
58
52
|
// Show how to run the newly installed agent
|
|
59
53
|
console.log();
|
|
60
|
-
console.log(
|
|
61
|
-
console.log(
|
|
54
|
+
console.log(chalk.cyan('💡 Next steps:'));
|
|
55
|
+
console.log(chalk.white(` Run the agent with:`), chalk.blueBright(`codemie run ${agentName}`));
|
|
62
56
|
console.log();
|
|
63
57
|
}
|
|
64
58
|
catch (error) {
|
|
@@ -67,7 +61,7 @@ function createInstallCommand() {
|
|
|
67
61
|
}
|
|
68
62
|
}
|
|
69
63
|
catch (error) {
|
|
70
|
-
|
|
64
|
+
logger.error('Installation failed:', error);
|
|
71
65
|
process.exit(1);
|
|
72
66
|
}
|
|
73
67
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,47 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
const registry_1 = require("../../agents/registry");
|
|
9
|
-
const logger_1 = require("../../utils/logger");
|
|
10
|
-
const tips_1 = require("../../utils/tips");
|
|
11
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
12
|
-
function createListCommand() {
|
|
13
|
-
const command = new commander_1.Command('list');
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { AgentRegistry } from '../../agents/registry.js';
|
|
3
|
+
import { logger } from '../../utils/logger.js';
|
|
4
|
+
import { tipDisplay } from '../../utils/tips.js';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
export function createListCommand() {
|
|
7
|
+
const command = new Command('list');
|
|
14
8
|
command
|
|
15
9
|
.description('List all available agents')
|
|
16
10
|
.option('-i, --installed', 'Show only installed agents')
|
|
17
11
|
.action(async (options) => {
|
|
18
12
|
try {
|
|
19
13
|
const agents = options.installed
|
|
20
|
-
? await
|
|
21
|
-
:
|
|
14
|
+
? await AgentRegistry.getInstalledAgents()
|
|
15
|
+
: AgentRegistry.getAllAgents();
|
|
22
16
|
if (agents.length === 0) {
|
|
23
|
-
|
|
17
|
+
logger.info(options.installed ? 'No agents installed' : 'No agents available');
|
|
24
18
|
return;
|
|
25
19
|
}
|
|
26
|
-
console.log(
|
|
20
|
+
console.log(chalk.bold('\nAvailable Agents:\n'));
|
|
27
21
|
for (const agent of agents) {
|
|
28
22
|
const installed = await agent.isInstalled();
|
|
29
|
-
const status = installed ?
|
|
23
|
+
const status = installed ? chalk.green('✓ installed') : chalk.gray('not installed');
|
|
30
24
|
const version = installed ? await agent.getVersion() : null;
|
|
31
|
-
const versionStr = version ?
|
|
32
|
-
console.log(
|
|
33
|
-
console.log(` Command: ${
|
|
25
|
+
const versionStr = version ? chalk.gray(` (${version})`) : '';
|
|
26
|
+
console.log(chalk.bold(` ${agent.displayName}`) + versionStr);
|
|
27
|
+
console.log(` Command: ${chalk.cyan(agent.name)}`);
|
|
34
28
|
console.log(` Status: ${status}`);
|
|
35
|
-
console.log(` ${
|
|
29
|
+
console.log(` ${chalk.gray(agent.description)}`);
|
|
36
30
|
console.log();
|
|
37
31
|
}
|
|
38
32
|
// Show a helpful tip after listing agents (unless in assistant context)
|
|
39
33
|
if (!options.installed && !process.env.CODEMIE_IN_ASSISTANT) {
|
|
40
|
-
|
|
34
|
+
tipDisplay.showRandomTip();
|
|
41
35
|
}
|
|
42
36
|
}
|
|
43
37
|
catch (error) {
|
|
44
|
-
|
|
38
|
+
logger.error('Failed to list agents:', error);
|
|
45
39
|
process.exit(1);
|
|
46
40
|
}
|
|
47
41
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,iBAAiB;IAC/B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpC,OAAO;SACJ,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;SACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS;gBAC9B,CAAC,CAAC,MAAM,aAAa,CAAC,kBAAkB,EAAE;gBAC1C,CAAC,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;YAEjC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;gBAC/E,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;YAEjD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACpF,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC5D,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAE9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACtD,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBACpD,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;YAED,wEAAwE;YACxE,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;gBAC5D,UAAU,CAAC,aAAa,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,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"}
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+CpC,wBAAgB,gBAAgB,IAAI,OAAO,CAmG1C"}
|
package/dist/cli/commands/run.js
CHANGED
|
@@ -1,41 +1,327 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import inquirer from 'inquirer';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { AgentRegistry } from '../../agents/registry.js';
|
|
5
|
+
import { logger } from '../../utils/logger.js';
|
|
6
|
+
import { AgentNotFoundError } from '../../utils/errors.js';
|
|
7
|
+
import { ConfigLoader } from '../../utils/config-loader.js';
|
|
8
|
+
import { fetchAvailableModels, filterModelsByAgent, categorizeModels } from '../../utils/model-fetcher.js';
|
|
9
|
+
const AGENT_MODEL_RULES = {
|
|
10
|
+
'codex': {
|
|
11
|
+
// Codex only supports OpenAI models
|
|
12
|
+
allowedProviders: ['openai', 'azure', 'ai-run', 'litellm'],
|
|
13
|
+
blockedPatterns: [
|
|
14
|
+
/^claude/i, // Block any Claude models
|
|
15
|
+
/anthropic/i, // Block Anthropic models
|
|
16
|
+
/bedrock.*claude/i // Block Bedrock Claude models
|
|
17
|
+
],
|
|
18
|
+
fallbackModels: [], // No fallback - must fetch from API
|
|
19
|
+
defaultModel: undefined // Will be auto-detected from available models
|
|
20
|
+
},
|
|
21
|
+
'claude': {
|
|
22
|
+
// Claude supports both Claude and GPT models
|
|
23
|
+
allowedProviders: ['anthropic', 'bedrock', 'openai', 'azure', 'ai-run', 'litellm'],
|
|
24
|
+
blockedPatterns: [], // No restrictions
|
|
25
|
+
fallbackModels: [], // No fallback - must fetch from API
|
|
26
|
+
defaultModel: undefined // Will be auto-detected from available models
|
|
27
|
+
},
|
|
28
|
+
'codemie-code': {
|
|
29
|
+
// CodeMie Native supports all providers and models via LangChain
|
|
30
|
+
allowedProviders: ['anthropic', 'bedrock', 'openai', 'azure', 'ai-run', 'litellm'],
|
|
31
|
+
blockedPatterns: [], // No restrictions - supports all models
|
|
32
|
+
fallbackModels: [], // No fallback - must fetch from API
|
|
33
|
+
defaultModel: undefined // Will be auto-detected from available models
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
export function createRunCommand() {
|
|
37
|
+
const command = new Command('run');
|
|
10
38
|
command
|
|
11
|
-
.description('Run an agent')
|
|
12
|
-
.argument('<agent>', 'Agent name to run')
|
|
39
|
+
.description('Run an agent with your configured settings')
|
|
40
|
+
.argument('<agent>', 'Agent name to run (e.g., claude, codex)')
|
|
13
41
|
.argument('[args...]', 'Additional arguments to pass to the agent')
|
|
14
|
-
.option('-m, --model <model>', '
|
|
42
|
+
.option('-m, --model <model>', 'Override model')
|
|
43
|
+
.option('-p, --provider <provider>', 'Override provider')
|
|
44
|
+
.option('--api-key <key>', 'Override API key')
|
|
45
|
+
.option('--base-url <url>', 'Override base URL')
|
|
46
|
+
.option('--timeout <seconds>', 'Override timeout (in seconds)', parseInt)
|
|
47
|
+
.option('--no-prompt', 'Disable interactive prompts (fail if config missing)')
|
|
48
|
+
.allowUnknownOption() // Allow passing unknown options to the agent
|
|
49
|
+
.passThroughOptions() // Pass through options to the agent
|
|
15
50
|
.action(async (agentName, args, options) => {
|
|
16
51
|
try {
|
|
17
|
-
const agent =
|
|
52
|
+
const agent = AgentRegistry.getAgent(agentName);
|
|
18
53
|
if (!agent) {
|
|
19
|
-
throw new
|
|
54
|
+
throw new AgentNotFoundError(agentName);
|
|
20
55
|
}
|
|
21
56
|
// Check if installed
|
|
22
57
|
if (!(await agent.isInstalled())) {
|
|
23
|
-
|
|
58
|
+
logger.error(`${agent.displayName} is not installed. Install it first with: codemie install ${agentName}`);
|
|
24
59
|
process.exit(1);
|
|
25
60
|
}
|
|
26
|
-
//
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
61
|
+
// Load configuration with CLI overrides
|
|
62
|
+
let config = await ConfigLoader.load(process.cwd(), {
|
|
63
|
+
model: options.model,
|
|
64
|
+
provider: options.provider,
|
|
65
|
+
apiKey: options.apiKey,
|
|
66
|
+
baseUrl: options.baseUrl,
|
|
67
|
+
timeout: options.timeout
|
|
68
|
+
});
|
|
69
|
+
// Validate configuration
|
|
70
|
+
const validationResult = await validateAndPromptConfig(config, options.prompt !== false);
|
|
71
|
+
if (!validationResult.valid) {
|
|
72
|
+
logger.error('Configuration incomplete. Run: codemie setup');
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
// Use validated config
|
|
76
|
+
config = validationResult.config;
|
|
77
|
+
// Validate model compatibility for this agent
|
|
78
|
+
const modelValidation = await validateModelCompatibility(agentName, config, options.prompt !== false);
|
|
79
|
+
if (!modelValidation.valid) {
|
|
80
|
+
logger.error(`Model '${config.model}' is not compatible with ${agent.displayName}`);
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
// Use validated model
|
|
84
|
+
config.model = modelValidation.model;
|
|
85
|
+
// Export provider-specific environment variables
|
|
86
|
+
const providerEnv = ConfigLoader.exportProviderEnvVars(config);
|
|
87
|
+
// Collect all arguments to pass to the agent
|
|
88
|
+
const agentArgs = [...args];
|
|
89
|
+
// Add back unknown options that were parsed
|
|
90
|
+
const knownOptions = ['model', 'provider', 'apiKey', 'baseUrl', 'timeout', 'prompt'];
|
|
91
|
+
for (const [key, value] of Object.entries(options)) {
|
|
92
|
+
if (knownOptions.includes(key))
|
|
93
|
+
continue;
|
|
94
|
+
if (key.length === 1) {
|
|
95
|
+
agentArgs.push(`-${key}`);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
agentArgs.push(`--${key}`);
|
|
99
|
+
}
|
|
100
|
+
if (value !== true && value !== undefined) {
|
|
101
|
+
agentArgs.push(String(value));
|
|
102
|
+
}
|
|
30
103
|
}
|
|
31
104
|
// Run the agent
|
|
32
|
-
|
|
105
|
+
logger.info(`Starting ${agent.displayName} with model ${chalk.cyan(config.model)}...`);
|
|
106
|
+
await agent.run(agentArgs, providerEnv);
|
|
33
107
|
}
|
|
34
108
|
catch (error) {
|
|
35
|
-
|
|
109
|
+
logger.error('Failed to run agent:', error);
|
|
36
110
|
process.exit(1);
|
|
37
111
|
}
|
|
38
112
|
});
|
|
39
113
|
return command;
|
|
40
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Validate model compatibility with agent and offer alternatives
|
|
117
|
+
*/
|
|
118
|
+
async function validateModelCompatibility(agentName, config, allowPrompt) {
|
|
119
|
+
const rules = AGENT_MODEL_RULES[agentName];
|
|
120
|
+
// If no rules defined for this agent, allow any model
|
|
121
|
+
if (!rules) {
|
|
122
|
+
return { valid: true, model: config.model };
|
|
123
|
+
}
|
|
124
|
+
const currentModel = config.model;
|
|
125
|
+
// Check if model matches any blocked pattern
|
|
126
|
+
const isBlocked = rules.blockedPatterns.some(pattern => pattern.test(currentModel));
|
|
127
|
+
if (!isBlocked) {
|
|
128
|
+
// Model is compatible
|
|
129
|
+
return { valid: true, model: currentModel };
|
|
130
|
+
}
|
|
131
|
+
// Model is incompatible
|
|
132
|
+
logger.warn(`${chalk.yellow('⚠')} Model '${chalk.cyan(currentModel)}' is not compatible with ${agentName}`);
|
|
133
|
+
console.log(chalk.dim(` ${agentName} requires OpenAI-compatible models (e.g., gpt-5, gpt-4o)`));
|
|
134
|
+
console.log(chalk.dim(` Claude models are not supported due to API incompatibilities\n`));
|
|
135
|
+
if (!allowPrompt) {
|
|
136
|
+
return { valid: false, model: currentModel };
|
|
137
|
+
}
|
|
138
|
+
// Fetch available models from provider
|
|
139
|
+
logger.info('Fetching available models from provider...');
|
|
140
|
+
let availableModels = await fetchAvailableModels(config);
|
|
141
|
+
// Filter to compatible models only
|
|
142
|
+
const compatibleModels = filterModelsByAgent(availableModels, agentName, rules.blockedPatterns);
|
|
143
|
+
// If API fetch failed or returned no compatible models, error out
|
|
144
|
+
if (compatibleModels.length === 0) {
|
|
145
|
+
logger.error('Failed to fetch compatible models from provider');
|
|
146
|
+
console.log(chalk.dim('\nPossible reasons:'));
|
|
147
|
+
console.log(chalk.dim(' • Provider API is unreachable'));
|
|
148
|
+
console.log(chalk.dim(' • Invalid API key or permissions'));
|
|
149
|
+
console.log(chalk.dim(' • No compatible models available on this provider'));
|
|
150
|
+
console.log(chalk.yellow('\nPlease verify your configuration or specify a model manually:'));
|
|
151
|
+
console.log(chalk.cyan(` codemie run ${agentName} --model <model-name>\n`));
|
|
152
|
+
return { valid: false, model: currentModel };
|
|
153
|
+
}
|
|
154
|
+
availableModels = compatibleModels;
|
|
155
|
+
// Categorize into recommended and other
|
|
156
|
+
const { recommended, other } = categorizeModels(availableModels);
|
|
157
|
+
// Auto-detect best default model
|
|
158
|
+
const autoDefaultModel = recommended.length > 0 ? recommended[0] : availableModels[0];
|
|
159
|
+
// Offer to switch to compatible model
|
|
160
|
+
const { action } = await inquirer.prompt([
|
|
161
|
+
{
|
|
162
|
+
type: 'list',
|
|
163
|
+
name: 'action',
|
|
164
|
+
message: 'How would you like to proceed?',
|
|
165
|
+
choices: [
|
|
166
|
+
{
|
|
167
|
+
name: `Switch to recommended model (${chalk.cyan(autoDefaultModel)})`,
|
|
168
|
+
value: 'switch-default'
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
name: `Choose from available models (${availableModels.length} found)`,
|
|
172
|
+
value: 'choose'
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
name: 'Cancel',
|
|
176
|
+
value: 'cancel'
|
|
177
|
+
}
|
|
178
|
+
]
|
|
179
|
+
}
|
|
180
|
+
]);
|
|
181
|
+
if (action === 'cancel') {
|
|
182
|
+
return { valid: false, model: currentModel };
|
|
183
|
+
}
|
|
184
|
+
let selectedModel;
|
|
185
|
+
if (action === 'switch-default') {
|
|
186
|
+
selectedModel = autoDefaultModel;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
// Build choices with sections
|
|
190
|
+
const choices = [];
|
|
191
|
+
if (recommended.length > 0) {
|
|
192
|
+
choices.push(new inquirer.Separator('─── Recommended ───'));
|
|
193
|
+
choices.push(...recommended);
|
|
194
|
+
}
|
|
195
|
+
if (other.length > 0) {
|
|
196
|
+
choices.push(new inquirer.Separator('─── Other Available ───'));
|
|
197
|
+
choices.push(...other);
|
|
198
|
+
}
|
|
199
|
+
// Let user choose from available models
|
|
200
|
+
const { model } = await inquirer.prompt([
|
|
201
|
+
{
|
|
202
|
+
type: 'list',
|
|
203
|
+
name: 'model',
|
|
204
|
+
message: 'Choose a compatible model:',
|
|
205
|
+
choices,
|
|
206
|
+
pageSize: 15
|
|
207
|
+
}
|
|
208
|
+
]);
|
|
209
|
+
selectedModel = model;
|
|
210
|
+
}
|
|
211
|
+
// Ask if they want to save this as default
|
|
212
|
+
const { saveAsDefault } = await inquirer.prompt([
|
|
213
|
+
{
|
|
214
|
+
type: 'confirm',
|
|
215
|
+
name: 'saveAsDefault',
|
|
216
|
+
message: `Save ${chalk.cyan(selectedModel)} as your default model?`,
|
|
217
|
+
default: false
|
|
218
|
+
}
|
|
219
|
+
]);
|
|
220
|
+
if (saveAsDefault) {
|
|
221
|
+
await ConfigLoader.saveGlobalConfig({
|
|
222
|
+
...config,
|
|
223
|
+
model: selectedModel
|
|
224
|
+
});
|
|
225
|
+
logger.success(`Configuration updated: default model set to ${chalk.cyan(selectedModel)}`);
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
logger.info(`Using ${chalk.cyan(selectedModel)} for this session only`);
|
|
229
|
+
}
|
|
230
|
+
return { valid: true, model: selectedModel };
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Validate configuration and prompt for missing values if needed
|
|
234
|
+
*/
|
|
235
|
+
async function validateAndPromptConfig(config, allowPrompt) {
|
|
236
|
+
const missing = [];
|
|
237
|
+
// Check required fields
|
|
238
|
+
if (!config.baseUrl)
|
|
239
|
+
missing.push('baseUrl');
|
|
240
|
+
if (!config.apiKey)
|
|
241
|
+
missing.push('apiKey');
|
|
242
|
+
if (!config.model)
|
|
243
|
+
missing.push('model');
|
|
244
|
+
// If nothing is missing, return success
|
|
245
|
+
if (missing.length === 0) {
|
|
246
|
+
return { valid: true, config };
|
|
247
|
+
}
|
|
248
|
+
// If prompts are disabled, fail
|
|
249
|
+
if (!allowPrompt) {
|
|
250
|
+
return { valid: false, config };
|
|
251
|
+
}
|
|
252
|
+
// Show what's missing
|
|
253
|
+
console.log(chalk.yellow('\n⚠ Configuration incomplete:\n'));
|
|
254
|
+
console.log(chalk.dim(` Missing: ${missing.join(', ')}\n`));
|
|
255
|
+
const { shouldConfigure } = await inquirer.prompt([
|
|
256
|
+
{
|
|
257
|
+
type: 'confirm',
|
|
258
|
+
name: 'shouldConfigure',
|
|
259
|
+
message: 'Would you like to configure now?',
|
|
260
|
+
default: true
|
|
261
|
+
}
|
|
262
|
+
]);
|
|
263
|
+
if (!shouldConfigure) {
|
|
264
|
+
return { valid: false, config };
|
|
265
|
+
}
|
|
266
|
+
// Prompt for missing values
|
|
267
|
+
const prompts = [];
|
|
268
|
+
if (!config.provider) {
|
|
269
|
+
prompts.push({
|
|
270
|
+
type: 'list',
|
|
271
|
+
name: 'provider',
|
|
272
|
+
message: 'Choose provider:',
|
|
273
|
+
choices: ['ai-run', 'anthropic', 'openai', 'azure', 'bedrock', 'litellm'],
|
|
274
|
+
default: 'ai-run'
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
if (!config.baseUrl) {
|
|
278
|
+
prompts.push({
|
|
279
|
+
type: 'input',
|
|
280
|
+
name: 'baseUrl',
|
|
281
|
+
message: 'Enter API base URL:',
|
|
282
|
+
validate: (input) => input.trim() !== '' || 'Base URL is required'
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
if (!config.apiKey) {
|
|
286
|
+
prompts.push({
|
|
287
|
+
type: 'password',
|
|
288
|
+
name: 'apiKey',
|
|
289
|
+
message: 'Enter API key:',
|
|
290
|
+
mask: '*',
|
|
291
|
+
validate: (input) => input.trim() !== '' || 'API key is required'
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
if (!config.model) {
|
|
295
|
+
prompts.push({
|
|
296
|
+
type: 'input',
|
|
297
|
+
name: 'model',
|
|
298
|
+
message: 'Enter model name:',
|
|
299
|
+
default: 'claude-4-5-sonnet',
|
|
300
|
+
validate: (input) => input.trim() !== '' || 'Model is required'
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
const answers = await inquirer.prompt(prompts);
|
|
304
|
+
// Update config with answers
|
|
305
|
+
Object.assign(config, answers);
|
|
306
|
+
// Save to global config
|
|
307
|
+
const { saveConfig } = await inquirer.prompt([
|
|
308
|
+
{
|
|
309
|
+
type: 'confirm',
|
|
310
|
+
name: 'saveConfig',
|
|
311
|
+
message: 'Save this configuration globally?',
|
|
312
|
+
default: true
|
|
313
|
+
}
|
|
314
|
+
]);
|
|
315
|
+
if (saveConfig) {
|
|
316
|
+
await ConfigLoader.saveGlobalConfig({
|
|
317
|
+
provider: config.provider,
|
|
318
|
+
baseUrl: config.baseUrl,
|
|
319
|
+
apiKey: config.apiKey,
|
|
320
|
+
model: config.model,
|
|
321
|
+
timeout: config.timeout
|
|
322
|
+
});
|
|
323
|
+
logger.success('Configuration saved to ~/.codemie/config.json');
|
|
324
|
+
}
|
|
325
|
+
return { valid: true, config };
|
|
326
|
+
}
|
|
41
327
|
//# sourceMappingURL=run.js.map
|