@codemieai/code 0.0.4 → 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.
Files changed (90) hide show
  1. package/README.md +248 -25
  2. package/bin/agent-executor.js +43 -0
  3. package/dist/agents/codemie-code/agent.d.ts.map +1 -1
  4. package/dist/agents/codemie-code/agent.js +5 -3
  5. package/dist/agents/codemie-code/agent.js.map +1 -1
  6. package/dist/agents/codemie-code/tokenUtils.d.ts +2 -2
  7. package/dist/agents/codemie-code/tokenUtils.js +2 -2
  8. package/dist/agents/codemie-code/tokenUtils.js.map +1 -1
  9. package/dist/agents/codemie-code/ui.d.ts.map +1 -1
  10. package/dist/agents/codemie-code/ui.js +0 -7
  11. package/dist/agents/codemie-code/ui.js.map +1 -1
  12. package/dist/agents/core/AgentCLI.d.ts +44 -0
  13. package/dist/agents/core/AgentCLI.d.ts.map +1 -0
  14. package/dist/agents/core/AgentCLI.js +223 -0
  15. package/dist/agents/core/AgentCLI.js.map +1 -0
  16. package/dist/agents/core/BaseAgentAdapter.d.ts +48 -0
  17. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -0
  18. package/dist/agents/core/BaseAgentAdapter.js +224 -0
  19. package/dist/agents/core/BaseAgentAdapter.js.map +1 -0
  20. package/dist/agents/core/types.d.ts +64 -0
  21. package/dist/agents/core/types.d.ts.map +1 -0
  22. package/dist/agents/core/types.js +5 -0
  23. package/dist/agents/core/types.js.map +1 -0
  24. package/dist/agents/plugins/claude.plugin.d.ts +13 -0
  25. package/dist/agents/plugins/claude.plugin.d.ts.map +1 -0
  26. package/dist/agents/plugins/claude.plugin.js +35 -0
  27. package/dist/agents/plugins/claude.plugin.js.map +1 -0
  28. package/dist/agents/plugins/codemie-code.plugin.d.ts +20 -0
  29. package/dist/agents/plugins/codemie-code.plugin.d.ts.map +1 -0
  30. package/dist/agents/plugins/codemie-code.plugin.js +137 -0
  31. package/dist/agents/plugins/codemie-code.plugin.js.map +1 -0
  32. package/dist/agents/plugins/codex.plugin.d.ts +13 -0
  33. package/dist/agents/plugins/codex.plugin.d.ts.map +1 -0
  34. package/dist/agents/plugins/codex.plugin.js +43 -0
  35. package/dist/agents/plugins/codex.plugin.js.map +1 -0
  36. package/dist/agents/plugins/gemini.plugin.d.ts +13 -0
  37. package/dist/agents/plugins/gemini.plugin.d.ts.map +1 -0
  38. package/dist/agents/plugins/gemini.plugin.js +43 -0
  39. package/dist/agents/plugins/gemini.plugin.js.map +1 -0
  40. package/dist/agents/registry.d.ts +6 -10
  41. package/dist/agents/registry.d.ts.map +1 -1
  42. package/dist/agents/registry.js +13 -7
  43. package/dist/agents/registry.js.map +1 -1
  44. package/dist/cli/commands/config.d.ts.map +1 -1
  45. package/dist/cli/commands/config.js +14 -180
  46. package/dist/cli/commands/config.js.map +1 -1
  47. package/dist/cli/commands/profile.d.ts +3 -0
  48. package/dist/cli/commands/profile.d.ts.map +1 -0
  49. package/dist/cli/commands/profile.js +167 -0
  50. package/dist/cli/commands/profile.js.map +1 -0
  51. package/dist/cli/commands/setup.d.ts.map +1 -1
  52. package/dist/cli/commands/setup.js +226 -35
  53. package/dist/cli/commands/setup.js.map +1 -1
  54. package/dist/cli/index.js +2 -2
  55. package/dist/cli/index.js.map +1 -1
  56. package/dist/env/types.d.ts +79 -0
  57. package/dist/env/types.d.ts.map +1 -0
  58. package/dist/env/types.js +16 -0
  59. package/dist/env/types.js.map +1 -0
  60. package/dist/utils/config-loader.d.ts +57 -34
  61. package/dist/utils/config-loader.d.ts.map +1 -1
  62. package/dist/utils/config-loader.js +200 -27
  63. package/dist/utils/config-loader.js.map +1 -1
  64. package/dist/utils/model-fetcher.d.ts.map +1 -1
  65. package/dist/utils/model-fetcher.js +1 -3
  66. package/dist/utils/model-fetcher.js.map +1 -1
  67. package/package.json +6 -4
  68. package/bin/codemie-claude.js +0 -145
  69. package/bin/codemie-code.js +0 -136
  70. package/bin/codemie-codex.js +0 -137
  71. package/dist/agents/adapters/claude-code.d.ts +0 -17
  72. package/dist/agents/adapters/claude-code.d.ts.map +0 -1
  73. package/dist/agents/adapters/claude-code.js +0 -134
  74. package/dist/agents/adapters/claude-code.js.map +0 -1
  75. package/dist/agents/adapters/codemie-code.d.ts +0 -21
  76. package/dist/agents/adapters/codemie-code.d.ts.map +0 -1
  77. package/dist/agents/adapters/codemie-code.js +0 -110
  78. package/dist/agents/adapters/codemie-code.js.map +0 -1
  79. package/dist/agents/adapters/codex.d.ts +0 -17
  80. package/dist/agents/adapters/codex.d.ts.map +0 -1
  81. package/dist/agents/adapters/codex.js +0 -145
  82. package/dist/agents/adapters/codex.js.map +0 -1
  83. package/dist/cli/commands/run.d.ts +0 -3
  84. package/dist/cli/commands/run.d.ts.map +0 -1
  85. package/dist/cli/commands/run.js +0 -333
  86. package/dist/cli/commands/run.js.map +0 -1
  87. package/dist/utils/agent-compatibility.d.ts +0 -32
  88. package/dist/utils/agent-compatibility.d.ts.map +0 -1
  89. package/dist/utils/agent-compatibility.js +0 -140
  90. 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,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function createRunCommand(): Command;
3
- //# sourceMappingURL=run.d.ts.map
@@ -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"}
@@ -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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"}