@codemieai/code 0.0.5 → 0.0.6
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 +248 -25
- package/bin/agent-executor.js +43 -0
- package/dist/agents/codemie-code/agent.d.ts.map +1 -1
- package/dist/agents/codemie-code/agent.js +5 -3
- package/dist/agents/codemie-code/agent.js.map +1 -1
- package/dist/agents/codemie-code/tokenUtils.d.ts +2 -2
- package/dist/agents/codemie-code/tokenUtils.js +2 -2
- package/dist/agents/codemie-code/tokenUtils.js.map +1 -1
- package/dist/agents/codemie-code/ui.d.ts.map +1 -1
- package/dist/agents/codemie-code/ui.js +0 -7
- package/dist/agents/codemie-code/ui.js.map +1 -1
- package/dist/agents/core/AgentCLI.d.ts +44 -0
- package/dist/agents/core/AgentCLI.d.ts.map +1 -0
- package/dist/agents/core/AgentCLI.js +223 -0
- package/dist/agents/core/AgentCLI.js.map +1 -0
- package/dist/agents/core/BaseAgentAdapter.d.ts +48 -0
- package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -0
- package/dist/agents/core/BaseAgentAdapter.js +224 -0
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -0
- package/dist/agents/core/types.d.ts +64 -0
- package/dist/agents/core/types.d.ts.map +1 -0
- package/dist/agents/core/types.js +5 -0
- package/dist/agents/core/types.js.map +1 -0
- package/dist/agents/plugins/claude.plugin.d.ts +13 -0
- package/dist/agents/plugins/claude.plugin.d.ts.map +1 -0
- package/dist/agents/plugins/claude.plugin.js +35 -0
- package/dist/agents/plugins/claude.plugin.js.map +1 -0
- package/dist/agents/plugins/codemie-code.plugin.d.ts +20 -0
- package/dist/agents/plugins/codemie-code.plugin.d.ts.map +1 -0
- package/dist/agents/plugins/codemie-code.plugin.js +137 -0
- package/dist/agents/plugins/codemie-code.plugin.js.map +1 -0
- package/dist/agents/plugins/codex.plugin.d.ts +13 -0
- package/dist/agents/plugins/codex.plugin.d.ts.map +1 -0
- package/dist/agents/plugins/codex.plugin.js +43 -0
- package/dist/agents/plugins/codex.plugin.js.map +1 -0
- package/dist/agents/plugins/gemini.plugin.d.ts +13 -0
- package/dist/agents/plugins/gemini.plugin.d.ts.map +1 -0
- package/dist/agents/plugins/gemini.plugin.js +43 -0
- package/dist/agents/plugins/gemini.plugin.js.map +1 -0
- package/dist/agents/registry.d.ts +6 -10
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +13 -7
- package/dist/agents/registry.js.map +1 -1
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +14 -180
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/profile.d.ts +3 -0
- package/dist/cli/commands/profile.d.ts.map +1 -0
- package/dist/cli/commands/profile.js +167 -0
- package/dist/cli/commands/profile.js.map +1 -0
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +226 -35
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/index.js +2 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/env/types.d.ts +79 -0
- package/dist/env/types.d.ts.map +1 -0
- package/dist/env/types.js +16 -0
- package/dist/env/types.js.map +1 -0
- package/dist/utils/config-loader.d.ts +57 -34
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +200 -27
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/model-fetcher.d.ts.map +1 -1
- package/dist/utils/model-fetcher.js +1 -3
- package/dist/utils/model-fetcher.js.map +1 -1
- package/package.json +6 -4
- package/bin/codemie-claude.js +0 -145
- package/bin/codemie-code.js +0 -136
- package/bin/codemie-codex.js +0 -137
- package/dist/agents/adapters/claude-code.d.ts +0 -17
- package/dist/agents/adapters/claude-code.d.ts.map +0 -1
- package/dist/agents/adapters/claude-code.js +0 -134
- package/dist/agents/adapters/claude-code.js.map +0 -1
- package/dist/agents/adapters/codemie-code.d.ts +0 -21
- package/dist/agents/adapters/codemie-code.d.ts.map +0 -1
- package/dist/agents/adapters/codemie-code.js +0 -110
- package/dist/agents/adapters/codemie-code.js.map +0 -1
- package/dist/agents/adapters/codex.d.ts +0 -17
- package/dist/agents/adapters/codex.d.ts.map +0 -1
- package/dist/agents/adapters/codex.js +0 -145
- package/dist/agents/adapters/codex.js.map +0 -1
- package/dist/cli/commands/run.d.ts +0 -3
- package/dist/cli/commands/run.d.ts.map +0 -1
- package/dist/cli/commands/run.js +0 -333
- package/dist/cli/commands/run.js.map +0 -1
- package/dist/utils/agent-compatibility.d.ts +0 -32
- package/dist/utils/agent-compatibility.d.ts.map +0 -1
- package/dist/utils/agent-compatibility.js +0 -140
- package/dist/utils/agent-compatibility.js.map +0 -1
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { logger } from '../../utils/logger.js';
|
|
2
|
-
import { CodeMieCode } from '../codemie-code/index.js';
|
|
3
|
-
import { loadCodeMieConfig } from '../codemie-code/config.js';
|
|
4
|
-
import { join } from 'path';
|
|
5
|
-
import { readFileSync } from 'fs';
|
|
6
|
-
import { getDirname } from '../../utils/dirname.js';
|
|
7
|
-
export class CodeMieCodeAdapter {
|
|
8
|
-
name = 'codemie-code';
|
|
9
|
-
displayName = 'CodeMie Native';
|
|
10
|
-
description = 'CodeMie Native Agent - Built-in LangGraph-based coding assistant';
|
|
11
|
-
async install() {
|
|
12
|
-
logger.info('CodeMie Native is built-in and already available');
|
|
13
|
-
// No installation needed - it's built into this package
|
|
14
|
-
}
|
|
15
|
-
async uninstall() {
|
|
16
|
-
logger.info('CodeMie Native is built-in and cannot be uninstalled');
|
|
17
|
-
// Cannot uninstall built-in agent
|
|
18
|
-
}
|
|
19
|
-
async isInstalled() {
|
|
20
|
-
// Always installed since it's built-in
|
|
21
|
-
return true;
|
|
22
|
-
}
|
|
23
|
-
async run(args, envOverrides) {
|
|
24
|
-
logger.info('Starting CodeMie Native Agent...');
|
|
25
|
-
try {
|
|
26
|
-
// Check if we have a valid configuration first
|
|
27
|
-
const workingDir = process.cwd();
|
|
28
|
-
try {
|
|
29
|
-
await loadCodeMieConfig(workingDir);
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
throw new Error('CodeMie configuration required. Please run: codemie setup');
|
|
33
|
-
}
|
|
34
|
-
// Determine the mode based on arguments
|
|
35
|
-
if (args.length === 0) {
|
|
36
|
-
// Interactive mode
|
|
37
|
-
await this.runInteractive(workingDir, envOverrides);
|
|
38
|
-
}
|
|
39
|
-
else if (args[0] === '--task' && args[1]) {
|
|
40
|
-
// Single task execution
|
|
41
|
-
const task = args.slice(1).join(' ');
|
|
42
|
-
await this.runTask(workingDir, task, envOverrides);
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
// Default to interactive with arguments as initial message
|
|
46
|
-
const initialMessage = args.join(' ');
|
|
47
|
-
await this.runInteractive(workingDir, envOverrides, initialMessage);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
catch (error) {
|
|
51
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
52
|
-
throw new Error(`Failed to run CodeMie Native: ${errorMessage}`);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
async runInteractive(workingDir, envOverrides, initialMessage) {
|
|
56
|
-
// Set environment variables if provided
|
|
57
|
-
if (envOverrides) {
|
|
58
|
-
Object.assign(process.env, envOverrides);
|
|
59
|
-
}
|
|
60
|
-
const codeMie = new CodeMieCode(workingDir);
|
|
61
|
-
await codeMie.initialize();
|
|
62
|
-
if (initialMessage) {
|
|
63
|
-
// Execute initial message then continue interactively
|
|
64
|
-
console.log(`> ${initialMessage}`);
|
|
65
|
-
await codeMie.executeTask(initialMessage);
|
|
66
|
-
console.log(''); // Add spacing
|
|
67
|
-
}
|
|
68
|
-
// Start interactive session
|
|
69
|
-
await codeMie.startInteractive();
|
|
70
|
-
}
|
|
71
|
-
async runTask(workingDir, task, envOverrides) {
|
|
72
|
-
// Set environment variables if provided
|
|
73
|
-
if (envOverrides) {
|
|
74
|
-
Object.assign(process.env, envOverrides);
|
|
75
|
-
}
|
|
76
|
-
const codeMie = new CodeMieCode(workingDir);
|
|
77
|
-
await codeMie.initialize();
|
|
78
|
-
// Execute single task with modern UI and exit
|
|
79
|
-
const result = await codeMie.executeTaskWithUI(task);
|
|
80
|
-
console.log(result);
|
|
81
|
-
}
|
|
82
|
-
async getVersion() {
|
|
83
|
-
try {
|
|
84
|
-
// Read version from package.json
|
|
85
|
-
const packageJsonPath = join(getDirname(import.meta.url), '../../../package.json');
|
|
86
|
-
const packageJsonContent = readFileSync(packageJsonPath, 'utf-8');
|
|
87
|
-
const packageJson = JSON.parse(packageJsonContent);
|
|
88
|
-
return `v${packageJson.version} (built-in)`;
|
|
89
|
-
}
|
|
90
|
-
catch {
|
|
91
|
-
return 'unknown (built-in)';
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Test connection and configuration without starting interactive mode
|
|
96
|
-
*/
|
|
97
|
-
async testConnection() {
|
|
98
|
-
try {
|
|
99
|
-
const result = await CodeMieCode.testConnection(process.cwd());
|
|
100
|
-
return result;
|
|
101
|
-
}
|
|
102
|
-
catch (error) {
|
|
103
|
-
return {
|
|
104
|
-
success: false,
|
|
105
|
-
error: error instanceof Error ? error.message : String(error)
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
//# sourceMappingURL=codemie-code.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codemie-code.js","sourceRoot":"","sources":["../../../src/agents/adapters/codemie-code.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { AgentAdapter } from '../registry.js';
|
|
2
|
-
export declare class CodexAdapter implements AgentAdapter {
|
|
3
|
-
name: string;
|
|
4
|
-
displayName: string;
|
|
5
|
-
description: string;
|
|
6
|
-
private ssoGateway;
|
|
7
|
-
install(): Promise<void>;
|
|
8
|
-
uninstall(): Promise<void>;
|
|
9
|
-
isInstalled(): Promise<boolean>;
|
|
10
|
-
run(args: string[], envOverrides?: Record<string, string>): Promise<void>;
|
|
11
|
-
/**
|
|
12
|
-
* Setup SSO authentication via local gateway if required
|
|
13
|
-
*/
|
|
14
|
-
private setupSSOGateway;
|
|
15
|
-
getVersion(): Promise<string | null>;
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=codex.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/agents/adapters/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAM9C,qBAAa,YAAa,YAAW,YAAY;IAC/C,IAAI,SAAW;IACf,WAAW,SAAW;IACtB,WAAW,SAAwC;IACnD,OAAO,CAAC,UAAU,CAA2B;IAEvC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAYxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAW1B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgE/E;;OAEG;YACW,eAAe;IA6CvB,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAQ3C"}
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import { exec } from '../../utils/exec.js';
|
|
2
|
-
import { logger } from '../../utils/logger.js';
|
|
3
|
-
import { spawn } from 'child_process';
|
|
4
|
-
import { SSOGateway } from '../../utils/sso-gateway.js';
|
|
5
|
-
export class CodexAdapter {
|
|
6
|
-
name = 'codex';
|
|
7
|
-
displayName = 'Codex';
|
|
8
|
-
description = 'OpenAI Codex - AI coding assistant';
|
|
9
|
-
ssoGateway = null;
|
|
10
|
-
async install() {
|
|
11
|
-
logger.info('Installing Codex...');
|
|
12
|
-
try {
|
|
13
|
-
// Install via npm
|
|
14
|
-
await exec('npm', ['install', '-g', '@openai/codex'], { timeout: 120000 });
|
|
15
|
-
logger.success('Codex installed successfully');
|
|
16
|
-
}
|
|
17
|
-
catch (error) {
|
|
18
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
19
|
-
throw new Error(`Failed to install Codex: ${errorMessage}`);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
async uninstall() {
|
|
23
|
-
logger.info('Uninstalling Codex...');
|
|
24
|
-
try {
|
|
25
|
-
await exec('npm', ['uninstall', '-g', '@openai/codex']);
|
|
26
|
-
logger.success('Codex uninstalled successfully');
|
|
27
|
-
}
|
|
28
|
-
catch (error) {
|
|
29
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
30
|
-
throw new Error(`Failed to uninstall Codex: ${errorMessage}`);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
async isInstalled() {
|
|
34
|
-
try {
|
|
35
|
-
const result = await exec('which', ['codex']);
|
|
36
|
-
return result.code === 0;
|
|
37
|
-
}
|
|
38
|
-
catch {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
async run(args, envOverrides) {
|
|
43
|
-
logger.info('Starting Codex...');
|
|
44
|
-
// Merge environment variables: process.env < envOverrides
|
|
45
|
-
let env = {
|
|
46
|
-
...process.env,
|
|
47
|
-
...envOverrides
|
|
48
|
-
};
|
|
49
|
-
// Handle SSO authentication via local gateway if configured
|
|
50
|
-
await this.setupSSOGateway(env);
|
|
51
|
-
// Build Codex arguments with model if specified
|
|
52
|
-
const codexArgs = [...args];
|
|
53
|
-
// Check if model is already specified in args
|
|
54
|
-
const hasModelArg = args.some((arg, idx) => (arg === '-m' || arg === '--model') && idx < args.length - 1);
|
|
55
|
-
// If model not in args but available in env, add it
|
|
56
|
-
if (!hasModelArg && (envOverrides?.CODEMIE_MODEL || envOverrides?.OPENAI_MODEL)) {
|
|
57
|
-
const model = envOverrides?.CODEMIE_MODEL || envOverrides?.OPENAI_MODEL;
|
|
58
|
-
if (model) {
|
|
59
|
-
codexArgs.unshift('--model', model);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
try {
|
|
63
|
-
// Spawn Codex
|
|
64
|
-
const child = spawn('codex', codexArgs, {
|
|
65
|
-
stdio: 'inherit',
|
|
66
|
-
env
|
|
67
|
-
});
|
|
68
|
-
return new Promise((resolve, reject) => {
|
|
69
|
-
child.on('error', (error) => {
|
|
70
|
-
reject(new Error(`Failed to start Codex: ${error.message}`));
|
|
71
|
-
});
|
|
72
|
-
child.on('exit', async (code) => {
|
|
73
|
-
// Clean up gateway when codex exits
|
|
74
|
-
if (this.ssoGateway) {
|
|
75
|
-
await this.ssoGateway.stop();
|
|
76
|
-
this.ssoGateway = null;
|
|
77
|
-
}
|
|
78
|
-
if (code === 0) {
|
|
79
|
-
resolve();
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
reject(new Error(`Codex exited with code ${code}`));
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
catch (error) {
|
|
88
|
-
// Clean up gateway on error
|
|
89
|
-
if (this.ssoGateway) {
|
|
90
|
-
await this.ssoGateway.stop();
|
|
91
|
-
this.ssoGateway = null;
|
|
92
|
-
}
|
|
93
|
-
throw error;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Setup SSO authentication via local gateway if required
|
|
98
|
-
*/
|
|
99
|
-
async setupSSOGateway(env) {
|
|
100
|
-
// Check if we're using SSO provider
|
|
101
|
-
const isSSOProvider = env.CODEMIE_PROVIDER === 'ai-run-sso' ||
|
|
102
|
-
(env.CODEMIE_BASE_URL?.includes('codemie')) ||
|
|
103
|
-
(env.OPENAI_BASE_URL?.includes('codemie'));
|
|
104
|
-
if (!isSSOProvider) {
|
|
105
|
-
return null; // No SSO, use regular authentication
|
|
106
|
-
}
|
|
107
|
-
try {
|
|
108
|
-
// Get the target API URL from environment
|
|
109
|
-
const targetApiUrl = env.CODEMIE_BASE_URL || env.OPENAI_BASE_URL;
|
|
110
|
-
if (!targetApiUrl) {
|
|
111
|
-
throw new Error('No API URL found for SSO authentication');
|
|
112
|
-
}
|
|
113
|
-
// Create and start the SSO gateway
|
|
114
|
-
this.ssoGateway = new SSOGateway({
|
|
115
|
-
targetApiUrl,
|
|
116
|
-
debug: !!(env.DEBUG || env.CODEMIE_DEBUG),
|
|
117
|
-
clientType: 'codex-cli'
|
|
118
|
-
});
|
|
119
|
-
const { port, url } = await this.ssoGateway.start();
|
|
120
|
-
// Point codex to use our local gateway
|
|
121
|
-
env.OPENAI_API_BASE = url;
|
|
122
|
-
env.OPENAI_API_KEY = 'gateway-handled'; // Placeholder since gateway handles auth
|
|
123
|
-
if (env.DEBUG || env.CODEMIE_DEBUG) {
|
|
124
|
-
logger.info('[DEBUG] SSO Gateway started for Codex');
|
|
125
|
-
logger.info(`[DEBUG] Gateway URL: ${url}`);
|
|
126
|
-
logger.info(`[DEBUG] Target API: ${targetApiUrl}`);
|
|
127
|
-
}
|
|
128
|
-
return { gatewayUrl: url, port };
|
|
129
|
-
}
|
|
130
|
-
catch (error) {
|
|
131
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
132
|
-
throw new Error(`SSO gateway setup failed: ${errorMessage}`);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
async getVersion() {
|
|
136
|
-
try {
|
|
137
|
-
const result = await exec('codex', ['--version']);
|
|
138
|
-
return result.stdout.trim();
|
|
139
|
-
}
|
|
140
|
-
catch {
|
|
141
|
-
return null;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
//# sourceMappingURL=codex.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/agents/adapters/codex.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
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,CA0G1C"}
|
package/dist/cli/commands/run.js
DELETED
|
@@ -1,333 +0,0 @@
|
|
|
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
|
-
import { validateProviderCompatibility as checkProviderCompatibility, displayCompatibilityError } from '../../utils/agent-compatibility.js';
|
|
10
|
-
const AGENT_MODEL_RULES = {
|
|
11
|
-
'codex': {
|
|
12
|
-
// Codex only supports OpenAI models
|
|
13
|
-
allowedProviders: ['openai', 'azure', 'litellm'],
|
|
14
|
-
blockedPatterns: [
|
|
15
|
-
/^claude/i, // Block any Claude 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: ['bedrock', 'openai', 'azure', '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: ['bedrock', 'openai', 'azure', 'litellm', 'ai-run-sso'],
|
|
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');
|
|
38
|
-
command
|
|
39
|
-
.description('Run an agent with your configured settings (prefer direct shortcuts: codemie-claude, codemie-codex, codemie-code)')
|
|
40
|
-
.argument('<agent>', 'Agent name to run (e.g., claude, codex, codemie-code)')
|
|
41
|
-
.argument('[args...]', 'Additional arguments to pass to the agent')
|
|
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
|
|
50
|
-
.action(async (agentName, args, options) => {
|
|
51
|
-
try {
|
|
52
|
-
const agent = AgentRegistry.getAgent(agentName);
|
|
53
|
-
if (!agent) {
|
|
54
|
-
throw new AgentNotFoundError(agentName);
|
|
55
|
-
}
|
|
56
|
-
// Check if installed
|
|
57
|
-
if (!(await agent.isInstalled())) {
|
|
58
|
-
logger.error(`${agent.displayName} is not installed. Install it first with: codemie install ${agentName}`);
|
|
59
|
-
process.exit(1);
|
|
60
|
-
}
|
|
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 provider compatibility
|
|
78
|
-
const providerResult = checkProviderCompatibility(agentName, config);
|
|
79
|
-
if (!providerResult.valid) {
|
|
80
|
-
displayCompatibilityError(providerResult, logger);
|
|
81
|
-
process.exit(1);
|
|
82
|
-
}
|
|
83
|
-
// Validate model compatibility for this agent
|
|
84
|
-
const modelValidation = await validateModelCompatibility(agentName, config, options.prompt !== false);
|
|
85
|
-
if (!modelValidation.valid) {
|
|
86
|
-
logger.error(`Model '${config.model}' is not compatible with ${agent.displayName}`);
|
|
87
|
-
process.exit(1);
|
|
88
|
-
}
|
|
89
|
-
// Use validated model
|
|
90
|
-
config.model = modelValidation.model;
|
|
91
|
-
// Export provider-specific environment variables
|
|
92
|
-
const providerEnv = ConfigLoader.exportProviderEnvVars(config);
|
|
93
|
-
// Collect all arguments to pass to the agent
|
|
94
|
-
const agentArgs = [...args];
|
|
95
|
-
// Add back unknown options that were parsed
|
|
96
|
-
const knownOptions = ['model', 'provider', 'apiKey', 'baseUrl', 'timeout', 'prompt'];
|
|
97
|
-
for (const [key, value] of Object.entries(options)) {
|
|
98
|
-
if (knownOptions.includes(key))
|
|
99
|
-
continue;
|
|
100
|
-
if (key.length === 1) {
|
|
101
|
-
agentArgs.push(`-${key}`);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
agentArgs.push(`--${key}`);
|
|
105
|
-
}
|
|
106
|
-
if (value !== true && value !== undefined) {
|
|
107
|
-
agentArgs.push(String(value));
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
// Run the agent
|
|
111
|
-
logger.info(`Starting ${agent.displayName} with model ${chalk.cyan(config.model)}...`);
|
|
112
|
-
await agent.run(agentArgs, providerEnv);
|
|
113
|
-
}
|
|
114
|
-
catch (error) {
|
|
115
|
-
logger.error('Failed to run agent:', error);
|
|
116
|
-
process.exit(1);
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
return command;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Validate model compatibility with agent and offer alternatives
|
|
123
|
-
*/
|
|
124
|
-
async function validateModelCompatibility(agentName, config, allowPrompt) {
|
|
125
|
-
const rules = AGENT_MODEL_RULES[agentName];
|
|
126
|
-
// If no rules defined for this agent, allow any model
|
|
127
|
-
if (!rules) {
|
|
128
|
-
return { valid: true, model: config.model };
|
|
129
|
-
}
|
|
130
|
-
const currentModel = config.model;
|
|
131
|
-
// Check if model matches any blocked pattern
|
|
132
|
-
const isBlocked = rules.blockedPatterns.some(pattern => pattern.test(currentModel));
|
|
133
|
-
if (!isBlocked) {
|
|
134
|
-
// Model is compatible
|
|
135
|
-
return { valid: true, model: currentModel };
|
|
136
|
-
}
|
|
137
|
-
// Model is incompatible
|
|
138
|
-
logger.warn(`${chalk.yellow('⚠')} Model '${chalk.cyan(currentModel)}' is not compatible with ${agentName}`);
|
|
139
|
-
console.log(chalk.dim(` ${agentName} requires OpenAI-compatible models (e.g., gpt-5, gpt-4o)`));
|
|
140
|
-
console.log(chalk.dim(` Claude models are not supported due to API incompatibilities\n`));
|
|
141
|
-
if (!allowPrompt) {
|
|
142
|
-
return { valid: false, model: currentModel };
|
|
143
|
-
}
|
|
144
|
-
// Fetch available models from provider
|
|
145
|
-
logger.info('Fetching available models from provider...');
|
|
146
|
-
let availableModels = await fetchAvailableModels(config);
|
|
147
|
-
// Filter to compatible models only
|
|
148
|
-
const compatibleModels = filterModelsByAgent(availableModels, agentName, rules.blockedPatterns);
|
|
149
|
-
// If API fetch failed or returned no compatible models, error out
|
|
150
|
-
if (compatibleModels.length === 0) {
|
|
151
|
-
logger.error('Failed to fetch compatible models from provider');
|
|
152
|
-
console.log(chalk.dim('\nPossible reasons:'));
|
|
153
|
-
console.log(chalk.dim(' • Provider API is unreachable'));
|
|
154
|
-
console.log(chalk.dim(' • Invalid API key or permissions'));
|
|
155
|
-
console.log(chalk.dim(' • No compatible models available on this provider'));
|
|
156
|
-
console.log(chalk.yellow('\nPlease verify your configuration or specify a model manually:'));
|
|
157
|
-
console.log(chalk.cyan(` codemie-${agentName} --model <model-name>\n`));
|
|
158
|
-
return { valid: false, model: currentModel };
|
|
159
|
-
}
|
|
160
|
-
availableModels = compatibleModels;
|
|
161
|
-
// Categorize into recommended and other
|
|
162
|
-
const { recommended, other } = categorizeModels(availableModels);
|
|
163
|
-
// Auto-detect best default model
|
|
164
|
-
const autoDefaultModel = recommended.length > 0 ? recommended[0] : availableModels[0];
|
|
165
|
-
// Offer to switch to compatible model
|
|
166
|
-
const { action } = await inquirer.prompt([
|
|
167
|
-
{
|
|
168
|
-
type: 'list',
|
|
169
|
-
name: 'action',
|
|
170
|
-
message: 'How would you like to proceed?',
|
|
171
|
-
choices: [
|
|
172
|
-
{
|
|
173
|
-
name: `Switch to recommended model (${chalk.cyan(autoDefaultModel)})`,
|
|
174
|
-
value: 'switch-default'
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
name: `Choose from available models (${availableModels.length} found)`,
|
|
178
|
-
value: 'choose'
|
|
179
|
-
},
|
|
180
|
-
{
|
|
181
|
-
name: 'Cancel',
|
|
182
|
-
value: 'cancel'
|
|
183
|
-
}
|
|
184
|
-
]
|
|
185
|
-
}
|
|
186
|
-
]);
|
|
187
|
-
if (action === 'cancel') {
|
|
188
|
-
return { valid: false, model: currentModel };
|
|
189
|
-
}
|
|
190
|
-
let selectedModel;
|
|
191
|
-
if (action === 'switch-default') {
|
|
192
|
-
selectedModel = autoDefaultModel;
|
|
193
|
-
}
|
|
194
|
-
else {
|
|
195
|
-
// Build choices with sections
|
|
196
|
-
const choices = [];
|
|
197
|
-
if (recommended.length > 0) {
|
|
198
|
-
choices.push(new inquirer.Separator('─── Recommended ───'));
|
|
199
|
-
choices.push(...recommended);
|
|
200
|
-
}
|
|
201
|
-
if (other.length > 0) {
|
|
202
|
-
choices.push(new inquirer.Separator('─── Other Available ───'));
|
|
203
|
-
choices.push(...other);
|
|
204
|
-
}
|
|
205
|
-
// Let user choose from available models
|
|
206
|
-
const { model } = await inquirer.prompt([
|
|
207
|
-
{
|
|
208
|
-
type: 'list',
|
|
209
|
-
name: 'model',
|
|
210
|
-
message: 'Choose a compatible model:',
|
|
211
|
-
choices,
|
|
212
|
-
pageSize: 15
|
|
213
|
-
}
|
|
214
|
-
]);
|
|
215
|
-
selectedModel = model;
|
|
216
|
-
}
|
|
217
|
-
// Ask if they want to save this as default
|
|
218
|
-
const { saveAsDefault } = await inquirer.prompt([
|
|
219
|
-
{
|
|
220
|
-
type: 'confirm',
|
|
221
|
-
name: 'saveAsDefault',
|
|
222
|
-
message: `Save ${chalk.cyan(selectedModel)} as your default model?`,
|
|
223
|
-
default: false
|
|
224
|
-
}
|
|
225
|
-
]);
|
|
226
|
-
if (saveAsDefault) {
|
|
227
|
-
await ConfigLoader.saveGlobalConfig({
|
|
228
|
-
...config,
|
|
229
|
-
model: selectedModel
|
|
230
|
-
});
|
|
231
|
-
logger.success(`Configuration updated: default model set to ${chalk.cyan(selectedModel)}`);
|
|
232
|
-
}
|
|
233
|
-
else {
|
|
234
|
-
logger.info(`Using ${chalk.cyan(selectedModel)} for this session only`);
|
|
235
|
-
}
|
|
236
|
-
return { valid: true, model: selectedModel };
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Validate configuration and prompt for missing values if needed
|
|
240
|
-
*/
|
|
241
|
-
async function validateAndPromptConfig(config, allowPrompt) {
|
|
242
|
-
const missing = [];
|
|
243
|
-
// Check required fields
|
|
244
|
-
if (!config.baseUrl)
|
|
245
|
-
missing.push('baseUrl');
|
|
246
|
-
if (!config.apiKey)
|
|
247
|
-
missing.push('apiKey');
|
|
248
|
-
if (!config.model)
|
|
249
|
-
missing.push('model');
|
|
250
|
-
// If nothing is missing, return success
|
|
251
|
-
if (missing.length === 0) {
|
|
252
|
-
return { valid: true, config };
|
|
253
|
-
}
|
|
254
|
-
// If prompts are disabled, fail
|
|
255
|
-
if (!allowPrompt) {
|
|
256
|
-
return { valid: false, config };
|
|
257
|
-
}
|
|
258
|
-
// Show what's missing
|
|
259
|
-
console.log(chalk.yellow('\n⚠ Configuration incomplete:\n'));
|
|
260
|
-
console.log(chalk.dim(` Missing: ${missing.join(', ')}\n`));
|
|
261
|
-
const { shouldConfigure } = await inquirer.prompt([
|
|
262
|
-
{
|
|
263
|
-
type: 'confirm',
|
|
264
|
-
name: 'shouldConfigure',
|
|
265
|
-
message: 'Would you like to configure now?',
|
|
266
|
-
default: true
|
|
267
|
-
}
|
|
268
|
-
]);
|
|
269
|
-
if (!shouldConfigure) {
|
|
270
|
-
return { valid: false, config };
|
|
271
|
-
}
|
|
272
|
-
// Prompt for missing values
|
|
273
|
-
const prompts = [];
|
|
274
|
-
if (!config.provider) {
|
|
275
|
-
prompts.push({
|
|
276
|
-
type: 'list',
|
|
277
|
-
name: 'provider',
|
|
278
|
-
message: 'Choose provider:',
|
|
279
|
-
choices: ['litellm', 'openai', 'azure', 'bedrock'],
|
|
280
|
-
default: 'litellm'
|
|
281
|
-
});
|
|
282
|
-
}
|
|
283
|
-
if (!config.baseUrl) {
|
|
284
|
-
prompts.push({
|
|
285
|
-
type: 'input',
|
|
286
|
-
name: 'baseUrl',
|
|
287
|
-
message: 'Enter API base URL:',
|
|
288
|
-
validate: (input) => input.trim() !== '' || 'Base URL is required'
|
|
289
|
-
});
|
|
290
|
-
}
|
|
291
|
-
if (!config.apiKey) {
|
|
292
|
-
prompts.push({
|
|
293
|
-
type: 'password',
|
|
294
|
-
name: 'apiKey',
|
|
295
|
-
message: 'Enter API key:',
|
|
296
|
-
mask: '*',
|
|
297
|
-
validate: (input) => input.trim() !== '' || 'API key is required'
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
if (!config.model) {
|
|
301
|
-
prompts.push({
|
|
302
|
-
type: 'input',
|
|
303
|
-
name: 'model',
|
|
304
|
-
message: 'Enter model name:',
|
|
305
|
-
default: 'claude-4-5-sonnet',
|
|
306
|
-
validate: (input) => input.trim() !== '' || 'Model is required'
|
|
307
|
-
});
|
|
308
|
-
}
|
|
309
|
-
const answers = await inquirer.prompt(prompts);
|
|
310
|
-
// Update config with answers
|
|
311
|
-
Object.assign(config, answers);
|
|
312
|
-
// Save to global config
|
|
313
|
-
const { saveConfig } = await inquirer.prompt([
|
|
314
|
-
{
|
|
315
|
-
type: 'confirm',
|
|
316
|
-
name: 'saveConfig',
|
|
317
|
-
message: 'Save this configuration globally?',
|
|
318
|
-
default: true
|
|
319
|
-
}
|
|
320
|
-
]);
|
|
321
|
-
if (saveConfig) {
|
|
322
|
-
await ConfigLoader.saveGlobalConfig({
|
|
323
|
-
provider: config.provider,
|
|
324
|
-
baseUrl: config.baseUrl,
|
|
325
|
-
apiKey: config.apiKey,
|
|
326
|
-
model: config.model,
|
|
327
|
-
timeout: config.timeout
|
|
328
|
-
});
|
|
329
|
-
logger.success('Configuration saved to ~/.codemie/config.json');
|
|
330
|
-
}
|
|
331
|
-
return { valid: true, config };
|
|
332
|
-
}
|
|
333
|
-
//# sourceMappingURL=run.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"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"}
|