@codemieai/code 0.0.3 → 0.0.5
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 +375 -325
- package/bin/codemie-claude.js +23 -0
- package/bin/codemie-code.js +49 -11
- package/bin/codemie-codex.js +12 -13
- package/dist/agents/adapters/claude-code.d.ts +5 -0
- package/dist/agents/adapters/claude-code.d.ts.map +1 -1
- package/dist/agents/adapters/claude-code.js +76 -18
- package/dist/agents/adapters/claude-code.js.map +1 -1
- package/dist/agents/adapters/codex.d.ts +5 -0
- package/dist/agents/adapters/codex.d.ts.map +1 -1
- package/dist/agents/adapters/codex.js +75 -17
- package/dist/agents/adapters/codex.js.map +1 -1
- package/dist/agents/codemie-code/agent.d.ts.map +1 -1
- package/dist/agents/codemie-code/agent.js +187 -21
- package/dist/agents/codemie-code/agent.js.map +1 -1
- package/dist/agents/codemie-code/config.d.ts.map +1 -1
- package/dist/agents/codemie-code/config.js +29 -27
- package/dist/agents/codemie-code/config.js.map +1 -1
- package/dist/agents/codemie-code/index.d.ts +16 -2
- package/dist/agents/codemie-code/index.d.ts.map +1 -1
- package/dist/agents/codemie-code/index.js +74 -6
- package/dist/agents/codemie-code/index.js.map +1 -1
- package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts +87 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts.map +1 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.js +957 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.js.map +1 -0
- package/dist/agents/codemie-code/modes/planMode.d.ts +116 -0
- package/dist/agents/codemie-code/modes/planMode.d.ts.map +1 -0
- package/dist/agents/codemie-code/modes/planMode.js +537 -0
- package/dist/agents/codemie-code/modes/planMode.js.map +1 -0
- package/dist/agents/codemie-code/prompts.d.ts +29 -0
- package/dist/agents/codemie-code/prompts.d.ts.map +1 -1
- package/dist/agents/codemie-code/prompts.js +129 -0
- package/dist/agents/codemie-code/prompts.js.map +1 -1
- package/dist/agents/codemie-code/storage/todoStorage.d.ts +78 -0
- package/dist/agents/codemie-code/storage/todoStorage.d.ts.map +1 -0
- package/dist/agents/codemie-code/storage/todoStorage.js +225 -0
- package/dist/agents/codemie-code/storage/todoStorage.js.map +1 -0
- package/dist/agents/codemie-code/tokenUtils.js +1 -1
- package/dist/agents/codemie-code/tokenUtils.js.map +1 -1
- package/dist/agents/codemie-code/tools/index.d.ts +26 -0
- package/dist/agents/codemie-code/tools/index.d.ts.map +1 -1
- package/dist/agents/codemie-code/tools/index.js +182 -14
- package/dist/agents/codemie-code/tools/index.js.map +1 -1
- package/dist/agents/codemie-code/tools/planning.d.ts +53 -0
- package/dist/agents/codemie-code/tools/planning.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/planning.js +224 -0
- package/dist/agents/codemie-code/tools/planning.js.map +1 -0
- package/dist/agents/codemie-code/types.d.ts +170 -6
- package/dist/agents/codemie-code/types.d.ts.map +1 -1
- package/dist/agents/codemie-code/types.js.map +1 -1
- package/dist/agents/codemie-code/ui/progressTracker.d.ts +125 -0
- package/dist/agents/codemie-code/ui/progressTracker.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/progressTracker.js +343 -0
- package/dist/agents/codemie-code/ui/progressTracker.js.map +1 -0
- package/dist/agents/codemie-code/ui/todoPanel.d.ts +112 -0
- package/dist/agents/codemie-code/ui/todoPanel.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/todoPanel.js +318 -0
- package/dist/agents/codemie-code/ui/todoPanel.js.map +1 -0
- package/dist/agents/codemie-code/ui.d.ts +106 -10
- package/dist/agents/codemie-code/ui.d.ts.map +1 -1
- package/dist/agents/codemie-code/ui.js +913 -129
- package/dist/agents/codemie-code/ui.js.map +1 -1
- package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts +87 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.js +293 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.js.map +1 -0
- package/dist/agents/codemie-code/utils/todoParser.d.ts +41 -0
- package/dist/agents/codemie-code/utils/todoParser.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/todoParser.js +305 -0
- package/dist/agents/codemie-code/utils/todoParser.js.map +1 -0
- package/dist/agents/codemie-code/utils/todoValidator.d.ts +65 -0
- package/dist/agents/codemie-code/utils/todoValidator.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/todoValidator.js +249 -0
- package/dist/agents/codemie-code/utils/todoValidator.js.map +1 -0
- package/dist/agents/codemie-code/validators/planValidator.d.ts +94 -0
- package/dist/agents/codemie-code/validators/planValidator.d.ts.map +1 -0
- package/dist/agents/codemie-code/validators/planValidator.js +281 -0
- package/dist/agents/codemie-code/validators/planValidator.js.map +1 -0
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +7 -5
- package/dist/agents/registry.js.map +1 -1
- package/dist/cli/commands/auth.d.ts +3 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +170 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +40 -13
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +209 -16
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/env.js +3 -3
- package/dist/cli/commands/env.js.map +1 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +2 -1
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +15 -9
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +177 -11
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/tools.d.ts +6 -0
- package/dist/cli/commands/tools.d.ts.map +1 -0
- package/dist/cli/commands/tools.js +244 -0
- package/dist/cli/commands/tools.js.map +1 -0
- package/dist/cli/commands/version.js +1 -1
- package/dist/cli/commands/version.js.map +1 -1
- package/dist/cli/commands/workflow.d.ts +6 -0
- package/dist/cli/commands/workflow.d.ts.map +1 -0
- package/dist/cli/commands/workflow.js +424 -0
- package/dist/cli/commands/workflow.js.map +1 -0
- package/dist/cli/index.js +39 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/clients/adapters/github.d.ts +17 -0
- package/dist/clients/adapters/github.d.ts.map +1 -0
- package/dist/clients/adapters/github.js +150 -0
- package/dist/clients/adapters/github.js.map +1 -0
- package/dist/clients/adapters/gitlab.d.ts +17 -0
- package/dist/clients/adapters/gitlab.d.ts.map +1 -0
- package/dist/clients/adapters/gitlab.js +147 -0
- package/dist/clients/adapters/gitlab.js.map +1 -0
- package/dist/clients/registry.d.ts +20 -0
- package/dist/clients/registry.d.ts.map +1 -0
- package/dist/clients/registry.js +27 -0
- package/dist/clients/registry.js.map +1 -0
- package/dist/tools/detector.d.ts +33 -0
- package/dist/tools/detector.d.ts.map +1 -0
- package/dist/tools/detector.js +145 -0
- package/dist/tools/detector.js.map +1 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/manager.d.ts +21 -0
- package/dist/tools/manager.d.ts.map +1 -0
- package/dist/tools/manager.js +104 -0
- package/dist/tools/manager.js.map +1 -0
- package/dist/tools/registry.d.ts +8 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +36 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/types.d.ts +41 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +5 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/types/sso.d.ts +42 -0
- package/dist/types/sso.d.ts.map +1 -0
- package/dist/types/sso.js +2 -0
- package/dist/types/sso.js.map +1 -0
- package/dist/utils/agent-compatibility.d.ts +32 -0
- package/dist/utils/agent-compatibility.d.ts.map +1 -0
- package/dist/utils/agent-compatibility.js +140 -0
- package/dist/utils/agent-compatibility.js.map +1 -0
- package/dist/utils/codemie-integration-validator.d.ts +17 -0
- package/dist/utils/codemie-integration-validator.d.ts.map +1 -0
- package/dist/utils/codemie-integration-validator.js +105 -0
- package/dist/utils/codemie-integration-validator.js.map +1 -0
- package/dist/utils/codemie-model-fetcher.d.ts +11 -0
- package/dist/utils/codemie-model-fetcher.d.ts.map +1 -0
- package/dist/utils/codemie-model-fetcher.js +242 -0
- package/dist/utils/codemie-model-fetcher.js.map +1 -0
- package/dist/utils/config-loader.d.ts +23 -1
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +73 -27
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/credential-store.d.ts +16 -0
- package/dist/utils/credential-store.d.ts.map +1 -0
- package/dist/utils/credential-store.js +109 -0
- package/dist/utils/credential-store.js.map +1 -0
- package/dist/utils/first-time.d.ts +1 -1
- package/dist/utils/first-time.d.ts.map +1 -1
- package/dist/utils/first-time.js +52 -71
- package/dist/utils/first-time.js.map +1 -1
- package/dist/utils/health-checker.d.ts.map +1 -1
- package/dist/utils/health-checker.js +5 -1
- package/dist/utils/health-checker.js.map +1 -1
- package/dist/utils/model-fetcher.d.ts.map +1 -1
- package/dist/utils/model-fetcher.js +15 -2
- package/dist/utils/model-fetcher.js.map +1 -1
- package/dist/utils/sso-auth.d.ts +15 -0
- package/dist/utils/sso-auth.d.ts.map +1 -0
- package/dist/utils/sso-auth.js +207 -0
- package/dist/utils/sso-auth.js.map +1 -0
- package/dist/utils/sso-gateway.d.ts +47 -0
- package/dist/utils/sso-gateway.d.ts.map +1 -0
- package/dist/utils/sso-gateway.js +298 -0
- package/dist/utils/sso-gateway.js.map +1 -0
- package/dist/workflows/detector.d.ts +37 -0
- package/dist/workflows/detector.d.ts.map +1 -0
- package/dist/workflows/detector.js +160 -0
- package/dist/workflows/detector.js.map +1 -0
- package/dist/workflows/index.d.ts +8 -0
- package/dist/workflows/index.d.ts.map +1 -0
- package/dist/workflows/index.js +8 -0
- package/dist/workflows/index.js.map +1 -0
- package/dist/workflows/installer.d.ts +24 -0
- package/dist/workflows/installer.d.ts.map +1 -0
- package/dist/workflows/installer.js +105 -0
- package/dist/workflows/installer.js.map +1 -0
- package/dist/workflows/registry.d.ts +29 -0
- package/dist/workflows/registry.d.ts.map +1 -0
- package/dist/workflows/registry.js +54 -0
- package/dist/workflows/registry.js.map +1 -0
- package/dist/workflows/templates/github/metadata.d.ts +6 -0
- package/dist/workflows/templates/github/metadata.d.ts.map +1 -0
- package/dist/workflows/templates/github/metadata.js +111 -0
- package/dist/workflows/templates/github/metadata.js.map +1 -0
- package/dist/workflows/templates/gitlab/metadata.d.ts +6 -0
- package/dist/workflows/templates/gitlab/metadata.d.ts.map +1 -0
- package/dist/workflows/templates/gitlab/metadata.js +14 -0
- package/dist/workflows/templates/gitlab/metadata.js.map +1 -0
- package/dist/workflows/types.d.ts +71 -0
- package/dist/workflows/types.d.ts.map +1 -0
- package/dist/workflows/types.js +5 -0
- package/dist/workflows/types.js.map +1 -0
- package/package.json +19 -6
- package/src/workflows/templates/github/code-ci.yml +529 -0
- package/src/workflows/templates/github/inline-fix.yml +665 -0
- package/src/workflows/templates/github/pr-review.yml +677 -0
- package/.claude/agents/README.md +0 -298
- package/.claude/agents/release-manager.md +0 -857
- package/.codemie/guides/git-workflow.md +0 -493
- package/CLAUDE.md +0 -225
- package/config.example.json +0 -10
- package/dist/agents/codemie-code/streaming/events.d.ts +0 -7
- package/dist/agents/codemie-code/streaming/events.d.ts.map +0 -1
- package/dist/agents/codemie-code/streaming/events.js +0 -7
- package/dist/agents/codemie-code/streaming/events.js.map +0 -1
- package/dist/agents/codemie-code/streaming/formatter.d.ts +0 -2
- package/dist/agents/codemie-code/streaming/formatter.d.ts.map +0 -1
- package/dist/agents/codemie-code/streaming/formatter.js +0 -2
- package/dist/agents/codemie-code/streaming/formatter.js.map +0 -1
- package/dist/agents/codemie-code/streaming/ui.d.ts +0 -2
- package/dist/agents/codemie-code/streaming/ui.d.ts.map +0 -1
- package/dist/agents/codemie-code/streaming/ui.js +0 -2
- package/dist/agents/codemie-code/streaming/ui.js.map +0 -1
- package/dist/agents/codemie-code/tools/command.d.ts +0 -2
- package/dist/agents/codemie-code/tools/command.d.ts.map +0 -1
- package/dist/agents/codemie-code/tools/command.js +0 -2
- package/dist/agents/codemie-code/tools/command.js.map +0 -1
- package/dist/agents/codemie-code/tools/filesystem.d.ts +0 -2
- package/dist/agents/codemie-code/tools/filesystem.d.ts.map +0 -1
- package/dist/agents/codemie-code/tools/filesystem.js +0 -2
- package/dist/agents/codemie-code/tools/filesystem.js.map +0 -1
- package/dist/agents/codemie-code/tools/git.d.ts +0 -2
- package/dist/agents/codemie-code/tools/git.d.ts.map +0 -1
- package/dist/agents/codemie-code/tools/git.js +0 -2
- package/dist/agents/codemie-code/tools/git.js.map +0 -1
- package/dist/agents/codemie-code/tools/security.d.ts +0 -2
- package/dist/agents/codemie-code/tools/security.d.ts.map +0 -1
- package/dist/agents/codemie-code/tools/security.js +0 -2
- package/dist/agents/codemie-code/tools/security.js.map +0 -1
- package/eslint.config.mjs +0 -43
- package/scripts/README.md +0 -80
- package/scripts/release.sh +0 -156
package/bin/codemie-claude.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import { ClaudeCodeAdapter } from '../dist/agents/adapters/claude-code.js';
|
|
9
9
|
import { ConfigLoader } from '../dist/utils/config-loader.js';
|
|
10
10
|
import { logger } from '../dist/utils/logger.js';
|
|
11
|
+
import { validateProviderCompatibility, validateModelCompatibility, displayCompatibilityError } from '../dist/utils/agent-compatibility.js';
|
|
11
12
|
import { Command } from 'commander';
|
|
12
13
|
import { readFileSync } from 'fs';
|
|
13
14
|
import { join } from 'path';
|
|
@@ -57,12 +58,34 @@ program
|
|
|
57
58
|
timeout: options.timeout
|
|
58
59
|
});
|
|
59
60
|
|
|
61
|
+
// Handle SSO provider detection
|
|
62
|
+
if (config.provider === 'ai-run-sso' || (config.baseUrl && config.baseUrl.includes('codemie'))) {
|
|
63
|
+
// Update provider to ai-run-sso if detected from baseUrl
|
|
64
|
+
if (config.provider !== 'ai-run-sso') {
|
|
65
|
+
config.provider = 'ai-run-sso';
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
60
69
|
// Validate essential configuration
|
|
61
70
|
if (!config.baseUrl || !config.apiKey || !config.model) {
|
|
62
71
|
logger.error('Configuration incomplete. Run: codemie setup');
|
|
63
72
|
process.exit(1);
|
|
64
73
|
}
|
|
65
74
|
|
|
75
|
+
// Validate provider compatibility
|
|
76
|
+
const providerResult = validateProviderCompatibility('claude', config);
|
|
77
|
+
if (!providerResult.valid) {
|
|
78
|
+
displayCompatibilityError(providerResult, logger);
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Validate model compatibility
|
|
83
|
+
const modelResult = validateModelCompatibility('claude', config);
|
|
84
|
+
if (!modelResult.valid) {
|
|
85
|
+
displayCompatibilityError(modelResult, logger);
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
|
|
66
89
|
// Export provider-specific environment variables
|
|
67
90
|
const providerEnv = ConfigLoader.exportProviderEnvVars(config);
|
|
68
91
|
|
package/bin/codemie-code.js
CHANGED
|
@@ -12,6 +12,7 @@ import { Command } from 'commander';
|
|
|
12
12
|
import { readFileSync } from 'fs';
|
|
13
13
|
import { join } from 'path';
|
|
14
14
|
import { getDirname } from '../dist/utils/dirname.js';
|
|
15
|
+
import chalk from 'chalk';
|
|
15
16
|
|
|
16
17
|
const program = new Command();
|
|
17
18
|
|
|
@@ -32,39 +33,76 @@ program
|
|
|
32
33
|
.version(version)
|
|
33
34
|
.option('--task <task>', 'Execute a single task and exit')
|
|
34
35
|
.option('--debug', 'Enable debug logging')
|
|
36
|
+
.option('--plan', 'Enable structured planning mode with visual todo tracking')
|
|
37
|
+
.option('--plan-only', 'Generate plan without execution (planning phase only)')
|
|
35
38
|
.argument('[message...]', 'Initial message or conversation starter')
|
|
36
39
|
.action(async (message, options) => {
|
|
37
40
|
try {
|
|
38
41
|
const workingDir = process.cwd();
|
|
39
42
|
|
|
40
|
-
//
|
|
43
|
+
// Initialize the agent with debug flag
|
|
44
|
+
const codeMie = new CodeMieCode(workingDir);
|
|
45
|
+
|
|
41
46
|
try {
|
|
42
|
-
await
|
|
47
|
+
await codeMie.initialize({ debug: options.debug });
|
|
43
48
|
} catch (error) {
|
|
44
49
|
logger.error('CodeMie configuration required. Please run: codemie setup');
|
|
45
50
|
process.exit(1);
|
|
46
51
|
}
|
|
47
52
|
|
|
48
|
-
// Initialize the agent
|
|
49
|
-
const codeMie = new CodeMieCode(workingDir);
|
|
50
|
-
await codeMie.initialize();
|
|
51
|
-
|
|
52
53
|
if (options.task) {
|
|
53
54
|
// Single task execution with modern UI
|
|
54
|
-
const
|
|
55
|
+
const planOptions = {
|
|
56
|
+
planMode: options.plan || options.planOnly,
|
|
57
|
+
planOnly: options.planOnly
|
|
58
|
+
};
|
|
59
|
+
const result = await codeMie.executeTaskWithUI(options.task, planOptions);
|
|
55
60
|
console.log(result);
|
|
56
61
|
} else if (message.length > 0) {
|
|
57
62
|
// Execute initial message then continue interactively
|
|
58
63
|
const initialMessage = message.join(' ');
|
|
59
64
|
console.log(`> ${initialMessage}`);
|
|
60
|
-
|
|
65
|
+
|
|
66
|
+
const planOptions = {
|
|
67
|
+
planMode: options.plan || options.planOnly,
|
|
68
|
+
planOnly: options.planOnly
|
|
69
|
+
};
|
|
70
|
+
await codeMie.executeTaskWithUI(initialMessage, planOptions);
|
|
61
71
|
console.log(''); // Add spacing
|
|
62
72
|
|
|
63
|
-
// Start interactive session
|
|
64
|
-
|
|
73
|
+
// Start interactive session (with plan mode if enabled)
|
|
74
|
+
if (options.plan && !options.planOnly) {
|
|
75
|
+
// Enable plan mode for interactive session
|
|
76
|
+
const agent = codeMie.getAgent();
|
|
77
|
+
if (agent) {
|
|
78
|
+
const { CodeMieTerminalUI } = await import('../dist/agents/codemie-code/ui.js');
|
|
79
|
+
const ui = new CodeMieTerminalUI(agent);
|
|
80
|
+
ui.enablePlanMode();
|
|
81
|
+
await ui.startInteractive();
|
|
82
|
+
ui.dispose();
|
|
83
|
+
} else {
|
|
84
|
+
await codeMie.startInteractive();
|
|
85
|
+
}
|
|
86
|
+
} else if (!options.planOnly) {
|
|
87
|
+
await codeMie.startInteractive();
|
|
88
|
+
}
|
|
65
89
|
} else {
|
|
66
90
|
// Pure interactive mode
|
|
67
|
-
|
|
91
|
+
if (options.plan) {
|
|
92
|
+
// Enable plan mode for interactive session (no extra console message)
|
|
93
|
+
const agent = codeMie.getAgent();
|
|
94
|
+
if (agent) {
|
|
95
|
+
const { CodeMieTerminalUI } = await import('../dist/agents/codemie-code/ui.js');
|
|
96
|
+
const ui = new CodeMieTerminalUI(agent);
|
|
97
|
+
ui.enablePlanMode();
|
|
98
|
+
await ui.startInteractive();
|
|
99
|
+
ui.dispose();
|
|
100
|
+
} else {
|
|
101
|
+
await codeMie.startInteractive();
|
|
102
|
+
}
|
|
103
|
+
} else {
|
|
104
|
+
await codeMie.startInteractive();
|
|
105
|
+
}
|
|
68
106
|
}
|
|
69
107
|
} catch (error) {
|
|
70
108
|
logger.error('Failed to run CodeMie Native:', error);
|
package/bin/codemie-codex.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import { CodexAdapter } from '../dist/agents/adapters/codex.js';
|
|
9
9
|
import { ConfigLoader } from '../dist/utils/config-loader.js';
|
|
10
10
|
import { logger } from '../dist/utils/logger.js';
|
|
11
|
+
import { validateProviderCompatibility, validateModelCompatibility, displayCompatibilityError } from '../dist/utils/agent-compatibility.js';
|
|
11
12
|
import { Command } from 'commander';
|
|
12
13
|
import { readFileSync } from 'fs';
|
|
13
14
|
import { join } from 'path';
|
|
@@ -63,19 +64,17 @@ program
|
|
|
63
64
|
process.exit(1);
|
|
64
65
|
}
|
|
65
66
|
|
|
66
|
-
// Validate
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
console.log(' 2. Use Claude agent instead: codemie-claude');
|
|
78
|
-
console.log(' 3. Override model for this session: codemie-codex --model gpt-4o');
|
|
67
|
+
// Validate provider compatibility
|
|
68
|
+
const providerResult = validateProviderCompatibility('codex', config);
|
|
69
|
+
if (!providerResult.valid) {
|
|
70
|
+
displayCompatibilityError(providerResult, logger);
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Validate model compatibility
|
|
75
|
+
const modelResult = validateModelCompatibility('codex', config);
|
|
76
|
+
if (!modelResult.valid) {
|
|
77
|
+
displayCompatibilityError(modelResult, logger);
|
|
79
78
|
process.exit(1);
|
|
80
79
|
}
|
|
81
80
|
|
|
@@ -3,10 +3,15 @@ export declare class ClaudeCodeAdapter implements AgentAdapter {
|
|
|
3
3
|
name: string;
|
|
4
4
|
displayName: string;
|
|
5
5
|
description: string;
|
|
6
|
+
private ssoGateway;
|
|
6
7
|
install(): Promise<void>;
|
|
7
8
|
uninstall(): Promise<void>;
|
|
8
9
|
isInstalled(): Promise<boolean>;
|
|
9
10
|
run(args: string[], envOverrides?: Record<string, string>): Promise<void>;
|
|
10
11
|
getVersion(): Promise<string | null>;
|
|
12
|
+
/**
|
|
13
|
+
* Setup SSO authentication via local gateway if required
|
|
14
|
+
*/
|
|
15
|
+
private setupSSOGateway;
|
|
11
16
|
}
|
|
12
17
|
//# sourceMappingURL=claude-code.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../src/agents/adapters/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../src/agents/adapters/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAM9C,qBAAa,iBAAkB,YAAW,YAAY;IACpD,IAAI,SAAY;IAChB,WAAW,SAAiB;IAC5B,WAAW,SAA+C;IAC1D,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;IAgDzE,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAS1C;;OAEG;YACW,eAAe;CA4C9B"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { exec } from '../../utils/exec.js';
|
|
2
2
|
import { logger } from '../../utils/logger.js';
|
|
3
3
|
import { spawn } from 'child_process';
|
|
4
|
+
import { SSOGateway } from '../../utils/sso-gateway.js';
|
|
4
5
|
export class ClaudeCodeAdapter {
|
|
5
6
|
name = 'claude';
|
|
6
7
|
displayName = 'Claude Code';
|
|
7
|
-
description = '
|
|
8
|
+
description = 'Claude Code - official Anthropic CLI tool';
|
|
9
|
+
ssoGateway = null;
|
|
8
10
|
async install() {
|
|
9
11
|
logger.info('Installing Claude Code...');
|
|
10
12
|
try {
|
|
@@ -40,28 +42,45 @@ export class ClaudeCodeAdapter {
|
|
|
40
42
|
async run(args, envOverrides) {
|
|
41
43
|
logger.info('Starting Claude Code...');
|
|
42
44
|
// Merge environment variables: process.env < envOverrides
|
|
43
|
-
|
|
45
|
+
let env = {
|
|
44
46
|
...process.env,
|
|
45
47
|
...envOverrides
|
|
46
48
|
};
|
|
47
|
-
//
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
reject(new Error(`Failed to start Claude Code: ${error.message}`));
|
|
49
|
+
// Handle SSO authentication via local gateway if configured
|
|
50
|
+
await this.setupSSOGateway(env);
|
|
51
|
+
try {
|
|
52
|
+
// Spawn Claude Code
|
|
53
|
+
const child = spawn('claude', args, {
|
|
54
|
+
stdio: 'inherit',
|
|
55
|
+
env
|
|
55
56
|
});
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
return new Promise((resolve, reject) => {
|
|
58
|
+
child.on('error', (error) => {
|
|
59
|
+
reject(new Error(`Failed to start Claude Code: ${error.message}`));
|
|
60
|
+
});
|
|
61
|
+
child.on('exit', async (code) => {
|
|
62
|
+
// Clean up gateway when claude exits
|
|
63
|
+
if (this.ssoGateway) {
|
|
64
|
+
await this.ssoGateway.stop();
|
|
65
|
+
this.ssoGateway = null;
|
|
66
|
+
}
|
|
67
|
+
if (code === 0) {
|
|
68
|
+
resolve();
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
reject(new Error(`Claude Code exited with code ${code}`));
|
|
72
|
+
}
|
|
73
|
+
});
|
|
63
74
|
});
|
|
64
|
-
}
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
// Clean up gateway on error
|
|
78
|
+
if (this.ssoGateway) {
|
|
79
|
+
await this.ssoGateway.stop();
|
|
80
|
+
this.ssoGateway = null;
|
|
81
|
+
}
|
|
82
|
+
throw error;
|
|
83
|
+
}
|
|
65
84
|
}
|
|
66
85
|
async getVersion() {
|
|
67
86
|
try {
|
|
@@ -72,5 +91,44 @@ export class ClaudeCodeAdapter {
|
|
|
72
91
|
return null;
|
|
73
92
|
}
|
|
74
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Setup SSO authentication via local gateway if required
|
|
96
|
+
*/
|
|
97
|
+
async setupSSOGateway(env) {
|
|
98
|
+
// Check if we're using SSO provider
|
|
99
|
+
// Only activate SSO gateway for explicit ai-run-sso provider
|
|
100
|
+
// Do NOT activate for litellm or other providers, even if their URLs contain "codemie"
|
|
101
|
+
const isSSOProvider = env.CODEMIE_PROVIDER === 'ai-run-sso';
|
|
102
|
+
if (!isSSOProvider) {
|
|
103
|
+
return null; // No SSO, use regular authentication
|
|
104
|
+
}
|
|
105
|
+
try {
|
|
106
|
+
// Get the target API URL from environment
|
|
107
|
+
const targetApiUrl = env.CODEMIE_BASE_URL || env.OPENAI_BASE_URL;
|
|
108
|
+
if (!targetApiUrl) {
|
|
109
|
+
throw new Error('No API URL found for SSO authentication');
|
|
110
|
+
}
|
|
111
|
+
// Create and start the SSO gateway
|
|
112
|
+
this.ssoGateway = new SSOGateway({
|
|
113
|
+
targetApiUrl,
|
|
114
|
+
debug: !!(env.DEBUG || env.CODEMIE_DEBUG),
|
|
115
|
+
clientType: 'codemie-claude'
|
|
116
|
+
});
|
|
117
|
+
const { port, url } = await this.ssoGateway.start();
|
|
118
|
+
// Point claude to use our local gateway
|
|
119
|
+
env.ANTHROPIC_BASE_URL = url;
|
|
120
|
+
env.ANTHROPIC_AUTH_TOKEN = 'gateway-handled'; // Placeholder since gateway handles auth
|
|
121
|
+
if (env.DEBUG || env.CODEMIE_DEBUG) {
|
|
122
|
+
logger.info('[DEBUG] SSO Gateway started for Claude Code');
|
|
123
|
+
logger.info(`[DEBUG] Gateway URL: ${url}`);
|
|
124
|
+
logger.info(`[DEBUG] Target API: ${targetApiUrl}`);
|
|
125
|
+
}
|
|
126
|
+
return { gatewayUrl: url, port };
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
130
|
+
throw new Error(`SSO gateway setup failed: ${errorMessage}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
75
133
|
}
|
|
76
134
|
//# sourceMappingURL=claude-code.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/agents/adapters/claude-code.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/agents/adapters/claude-code.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,15 @@ export declare class CodexAdapter implements AgentAdapter {
|
|
|
3
3
|
name: string;
|
|
4
4
|
displayName: string;
|
|
5
5
|
description: string;
|
|
6
|
+
private ssoGateway;
|
|
6
7
|
install(): Promise<void>;
|
|
7
8
|
uninstall(): Promise<void>;
|
|
8
9
|
isInstalled(): Promise<boolean>;
|
|
9
10
|
run(args: string[], envOverrides?: Record<string, string>): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Setup SSO authentication via local gateway if required
|
|
13
|
+
*/
|
|
14
|
+
private setupSSOGateway;
|
|
10
15
|
getVersion(): Promise<string | null>;
|
|
11
16
|
}
|
|
12
17
|
//# sourceMappingURL=codex.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/agents/adapters/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
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,10 +1,12 @@
|
|
|
1
1
|
import { exec } from '../../utils/exec.js';
|
|
2
2
|
import { logger } from '../../utils/logger.js';
|
|
3
3
|
import { spawn } from 'child_process';
|
|
4
|
+
import { SSOGateway } from '../../utils/sso-gateway.js';
|
|
4
5
|
export class CodexAdapter {
|
|
5
6
|
name = 'codex';
|
|
6
7
|
displayName = 'Codex';
|
|
7
8
|
description = 'OpenAI Codex - AI coding assistant';
|
|
9
|
+
ssoGateway = null;
|
|
8
10
|
async install() {
|
|
9
11
|
logger.info('Installing Codex...');
|
|
10
12
|
try {
|
|
@@ -40,10 +42,12 @@ export class CodexAdapter {
|
|
|
40
42
|
async run(args, envOverrides) {
|
|
41
43
|
logger.info('Starting Codex...');
|
|
42
44
|
// Merge environment variables: process.env < envOverrides
|
|
43
|
-
|
|
45
|
+
let env = {
|
|
44
46
|
...process.env,
|
|
45
47
|
...envOverrides
|
|
46
48
|
};
|
|
49
|
+
// Handle SSO authentication via local gateway if configured
|
|
50
|
+
await this.setupSSOGateway(env);
|
|
47
51
|
// Build Codex arguments with model if specified
|
|
48
52
|
const codexArgs = [...args];
|
|
49
53
|
// Check if model is already specified in args
|
|
@@ -55,24 +59,78 @@ export class CodexAdapter {
|
|
|
55
59
|
codexArgs.unshift('--model', model);
|
|
56
60
|
}
|
|
57
61
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
return new Promise((resolve, reject) => {
|
|
64
|
-
child.on('error', (error) => {
|
|
65
|
-
reject(new Error(`Failed to start Codex: ${error.message}`));
|
|
62
|
+
try {
|
|
63
|
+
// Spawn Codex
|
|
64
|
+
const child = spawn('codex', codexArgs, {
|
|
65
|
+
stdio: 'inherit',
|
|
66
|
+
env
|
|
66
67
|
});
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|
+
});
|
|
74
85
|
});
|
|
75
|
-
}
|
|
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
|
+
}
|
|
76
134
|
}
|
|
77
135
|
async getVersion() {
|
|
78
136
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/agents/adapters/codex.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/agents/adapters/codex.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agents/codemie-code/agent.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agents/codemie-code/agent.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAA6B,MAAM,YAAY,CAAC;AACtG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAO/D,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,qBAAqB,CAAuB;IACpD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,oBAAoB,CAA2B;IACvD,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,KAAK,CAYX;gBAEU,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE;IAmB1D;;OAEG;IACH,OAAO,CAAC,SAAS;IA2LjB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA2B1B;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAE,cAAc,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAuOvG;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4F1B;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BtD;;OAEG;IACH,YAAY,IAAI,IAAI;IA4BpB;;OAEG;IACH,UAAU,IAAI,WAAW,EAAE;IAI3B;;OAEG;IACH,QAAQ,IAAI,UAAU;IAItB;;OAEG;IACH,QAAQ,IAAI,cAAc,EAAE;IAI5B;;OAEG;IACH,SAAS,IAAI,aAAa;IAQ1B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC;QAC3B,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;QAChC,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IAsBF;;OAEG;IACH,OAAO,CAAC,YAAY;IA8BpB;;OAEG;IACH,OAAO,CAAC,aAAa;IAuBrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB;;OAEG;IACH,OAAO,CAAC,yBAAyB;CAclC"}
|