@codemieai/code 0.0.7 → 0.0.8
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 +265 -47
- package/bin/agent-executor.js +6 -4
- package/dist/agents/codemie-code/agent.d.ts.map +1 -1
- package/dist/agents/codemie-code/agent.js +29 -28
- 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 +4 -3
- package/dist/agents/codemie-code/config.js.map +1 -1
- package/dist/agents/codemie-code/index.d.ts.map +1 -1
- package/dist/agents/codemie-code/index.js +10 -9
- package/dist/agents/codemie-code/index.js.map +1 -1
- package/dist/agents/codemie-code/tools/index.d.ts.map +1 -1
- package/dist/agents/codemie-code/tools/index.js +6 -5
- package/dist/agents/codemie-code/tools/index.js.map +1 -1
- package/dist/agents/codemie-code/ui/todoPanel.js +9 -9
- package/dist/agents/codemie-code/ui/todoPanel.js.map +1 -1
- package/dist/agents/codemie-code/ui.d.ts.map +1 -1
- package/dist/agents/codemie-code/ui.js +34 -33
- package/dist/agents/codemie-code/ui.js.map +1 -1
- package/dist/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +31 -16
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.js +5 -11
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/plugins/claude.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude.plugin.js +9 -0
- package/dist/agents/plugins/claude.plugin.js.map +1 -1
- package/dist/agents/plugins/codemie-code.plugin.d.ts +4 -0
- package/dist/agents/plugins/codemie-code.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/codemie-code.plugin.js +9 -2
- package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
- package/dist/agents/registry.d.ts +1 -0
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +3 -2
- package/dist/agents/registry.js.map +1 -1
- package/dist/cli/commands/auth.js +5 -5
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/config.js +21 -21
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/doctor/checks/AIConfigCheck.d.ts +13 -0
- package/dist/cli/commands/doctor/checks/AIConfigCheck.d.ts.map +1 -0
- package/dist/cli/commands/doctor/checks/AIConfigCheck.js +135 -0
- package/dist/cli/commands/doctor/checks/AIConfigCheck.js.map +1 -0
- package/dist/cli/commands/doctor/checks/AgentsCheck.d.ts +10 -0
- package/dist/cli/commands/doctor/checks/AgentsCheck.d.ts.map +1 -0
- package/dist/cli/commands/doctor/checks/AgentsCheck.js +57 -0
- package/dist/cli/commands/doctor/checks/AgentsCheck.js.map +1 -0
- package/dist/cli/commands/doctor/checks/NodeVersionCheck.d.ts +9 -0
- package/dist/cli/commands/doctor/checks/NodeVersionCheck.d.ts.map +1 -0
- package/dist/cli/commands/doctor/checks/NodeVersionCheck.js +38 -0
- package/dist/cli/commands/doctor/checks/NodeVersionCheck.js.map +1 -0
- package/dist/cli/commands/doctor/checks/NpmCheck.d.ts +9 -0
- package/dist/cli/commands/doctor/checks/NpmCheck.d.ts.map +1 -0
- package/dist/cli/commands/doctor/checks/NpmCheck.js +28 -0
- package/dist/cli/commands/doctor/checks/NpmCheck.js.map +1 -0
- package/dist/cli/commands/doctor/checks/WorkflowsCheck.d.ts +9 -0
- package/dist/cli/commands/doctor/checks/WorkflowsCheck.d.ts.map +1 -0
- package/dist/cli/commands/doctor/checks/WorkflowsCheck.js +72 -0
- package/dist/cli/commands/doctor/checks/WorkflowsCheck.js.map +1 -0
- package/dist/cli/commands/doctor/checks/index.d.ts +9 -0
- package/dist/cli/commands/doctor/checks/index.d.ts.map +1 -0
- package/dist/cli/commands/doctor/checks/index.js +9 -0
- package/dist/cli/commands/doctor/checks/index.js.map +1 -0
- package/dist/cli/commands/doctor/formatter.d.ts +53 -0
- package/dist/cli/commands/doctor/formatter.d.ts.map +1 -0
- package/dist/cli/commands/doctor/formatter.js +153 -0
- package/dist/cli/commands/doctor/formatter.js.map +1 -0
- package/dist/cli/commands/{doctor.d.ts → doctor/index.d.ts} +4 -1
- package/dist/cli/commands/doctor/index.d.ts.map +1 -0
- package/dist/cli/commands/doctor/index.js +67 -0
- package/dist/cli/commands/doctor/index.js.map +1 -0
- package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.d.ts +11 -0
- package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.d.ts.map +1 -0
- package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.js +192 -0
- package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.js.map +1 -0
- package/dist/cli/commands/doctor/providers/BaseProviderCheck.d.ts +12 -0
- package/dist/cli/commands/doctor/providers/BaseProviderCheck.d.ts.map +1 -0
- package/dist/cli/commands/doctor/providers/BaseProviderCheck.js +12 -0
- package/dist/cli/commands/doctor/providers/BaseProviderCheck.js.map +1 -0
- package/dist/cli/commands/doctor/providers/StandardProviderCheck.d.ts +11 -0
- package/dist/cli/commands/doctor/providers/StandardProviderCheck.d.ts.map +1 -0
- package/dist/cli/commands/doctor/providers/StandardProviderCheck.js +97 -0
- package/dist/cli/commands/doctor/providers/StandardProviderCheck.js.map +1 -0
- package/dist/cli/commands/doctor/providers/index.d.ts +30 -0
- package/dist/cli/commands/doctor/providers/index.d.ts.map +1 -0
- package/dist/cli/commands/doctor/providers/index.js +66 -0
- package/dist/cli/commands/doctor/providers/index.js.map +1 -0
- package/dist/cli/commands/doctor/types.d.ts +59 -0
- package/dist/cli/commands/doctor/types.d.ts.map +1 -0
- package/dist/cli/commands/doctor/types.js +5 -0
- package/dist/cli/commands/doctor/types.js.map +1 -0
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +24 -8
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/list.js +3 -3
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/profile.js +6 -6
- package/dist/cli/commands/profile.js.map +1 -1
- package/dist/cli/commands/setup.js +51 -38
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/uninstall.d.ts.map +1 -1
- package/dist/cli/commands/uninstall.js +19 -4
- package/dist/cli/commands/uninstall.js.map +1 -1
- package/dist/cli/commands/workflow.d.ts.map +1 -1
- package/dist/cli/commands/workflow.js +30 -59
- package/dist/cli/commands/workflow.js.map +1 -1
- package/dist/cli/index.js +1 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/env/types.d.ts.map +1 -1
- package/dist/env/types.js +2 -2
- package/dist/env/types.js.map +1 -1
- package/dist/utils/async-tips.js +6 -6
- package/dist/utils/async-tips.js.map +1 -1
- package/dist/utils/codemie-integration-validator.d.ts +3 -2
- package/dist/utils/codemie-integration-validator.d.ts.map +1 -1
- package/dist/utils/codemie-integration-validator.js +38 -11
- package/dist/utils/codemie-integration-validator.js.map +1 -1
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +17 -6
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/credential-store.d.ts.map +1 -1
- package/dist/utils/credential-store.js +55 -24
- package/dist/utils/credential-store.js.map +1 -1
- package/dist/utils/first-time.d.ts +8 -0
- package/dist/utils/first-time.d.ts.map +1 -1
- package/dist/utils/first-time.js +133 -86
- package/dist/utils/first-time.js.map +1 -1
- package/dist/utils/logger.d.ts +19 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +93 -8
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/sso-auth.d.ts.map +1 -1
- package/dist/utils/sso-auth.js +24 -10
- package/dist/utils/sso-auth.js.map +1 -1
- package/dist/utils/sso-gateway.d.ts +28 -0
- package/dist/utils/sso-gateway.d.ts.map +1 -1
- package/dist/utils/sso-gateway.js +197 -46
- package/dist/utils/sso-gateway.js.map +1 -1
- package/dist/utils/tips.js +3 -3
- package/dist/utils/tips.js.map +1 -1
- package/dist/workflows/installer.d.ts.map +1 -1
- package/dist/workflows/installer.js +3 -8
- package/dist/workflows/installer.js.map +1 -1
- package/package.json +6 -2
- package/dist/cli/commands/doctor.d.ts.map +0 -1
- package/dist/cli/commands/doctor.js +0 -365
- package/dist/cli/commands/doctor.js.map +0 -1
- package/dist/cli/commands/tools.d.ts +0 -6
- package/dist/cli/commands/tools.d.ts.map +0 -1
- package/dist/cli/commands/tools.js +0 -244
- package/dist/cli/commands/tools.js.map +0 -1
- package/dist/clients/adapters/github.d.ts +0 -17
- package/dist/clients/adapters/github.d.ts.map +0 -1
- package/dist/clients/adapters/github.js +0 -150
- package/dist/clients/adapters/github.js.map +0 -1
- package/dist/clients/adapters/gitlab.d.ts +0 -17
- package/dist/clients/adapters/gitlab.d.ts.map +0 -1
- package/dist/clients/adapters/gitlab.js +0 -147
- package/dist/clients/adapters/gitlab.js.map +0 -1
- package/dist/clients/registry.d.ts +0 -20
- package/dist/clients/registry.d.ts.map +0 -1
- package/dist/clients/registry.js +0 -27
- package/dist/clients/registry.js.map +0 -1
- package/dist/tools/detector.d.ts +0 -33
- package/dist/tools/detector.d.ts.map +0 -1
- package/dist/tools/detector.js +0 -145
- package/dist/tools/detector.js.map +0 -1
- package/dist/tools/index.d.ts +0 -8
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -8
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/manager.d.ts +0 -21
- package/dist/tools/manager.d.ts.map +0 -1
- package/dist/tools/manager.js +0 -104
- package/dist/tools/manager.js.map +0 -1
- package/dist/tools/registry.d.ts +0 -8
- package/dist/tools/registry.d.ts.map +0 -1
- package/dist/tools/registry.js +0 -36
- package/dist/tools/registry.js.map +0 -1
- package/dist/tools/types.d.ts +0 -41
- package/dist/tools/types.d.ts.map +0 -1
- package/dist/tools/types.js +0 -5
- package/dist/tools/types.js.map +0 -1
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI-Run SSO provider health check
|
|
3
|
+
*/
|
|
4
|
+
import ora from 'ora';
|
|
5
|
+
import { CodeMieSSO } from '../../../../utils/sso-auth.js';
|
|
6
|
+
import { validateCodeMieConnectivity, fetchCodeMieModelsFromConfig, fetchCodeMieIntegrationsFromConfig } from '../../../../utils/codemie-model-fetcher.js';
|
|
7
|
+
import { BaseProviderCheck } from './BaseProviderCheck.js';
|
|
8
|
+
export class AIRunSSOProviderCheck extends BaseProviderCheck {
|
|
9
|
+
supportedProviders = ['ai-run-sso'];
|
|
10
|
+
async check(config) {
|
|
11
|
+
const details = [];
|
|
12
|
+
let success = true;
|
|
13
|
+
// Check CodeMie URL
|
|
14
|
+
if (config.codeMieUrl) {
|
|
15
|
+
details.push({
|
|
16
|
+
status: 'ok',
|
|
17
|
+
message: `CodeMie URL: ${config.codeMieUrl}`
|
|
18
|
+
});
|
|
19
|
+
// Check connectivity
|
|
20
|
+
const connectivitySpinner = ora('Checking CodeMie server connectivity...').start();
|
|
21
|
+
try {
|
|
22
|
+
await validateCodeMieConnectivity();
|
|
23
|
+
connectivitySpinner.stop();
|
|
24
|
+
details.push({
|
|
25
|
+
status: 'ok',
|
|
26
|
+
message: 'CodeMie server accessible'
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
connectivitySpinner.stop();
|
|
31
|
+
details.push({
|
|
32
|
+
status: 'error',
|
|
33
|
+
message: `Server connectivity failed: ${error instanceof Error ? error.message : String(error)}`
|
|
34
|
+
});
|
|
35
|
+
success = false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
details.push({
|
|
40
|
+
status: 'error',
|
|
41
|
+
message: 'CodeMie URL not configured',
|
|
42
|
+
hint: 'Run: codemie setup'
|
|
43
|
+
});
|
|
44
|
+
success = false;
|
|
45
|
+
}
|
|
46
|
+
// Check SSO credentials
|
|
47
|
+
try {
|
|
48
|
+
const sso = new CodeMieSSO();
|
|
49
|
+
const credentials = await sso.getStoredCredentials();
|
|
50
|
+
if (credentials) {
|
|
51
|
+
details.push({
|
|
52
|
+
status: 'ok',
|
|
53
|
+
message: 'SSO credentials stored'
|
|
54
|
+
});
|
|
55
|
+
// Check expiration
|
|
56
|
+
if (credentials.expiresAt) {
|
|
57
|
+
const expiresIn = Math.max(0, credentials.expiresAt - Date.now());
|
|
58
|
+
if (expiresIn > 0) {
|
|
59
|
+
const hours = Math.floor(expiresIn / (1000 * 60 * 60));
|
|
60
|
+
details.push({
|
|
61
|
+
status: 'ok',
|
|
62
|
+
message: `Session expires in: ${hours} hours`
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
details.push({
|
|
67
|
+
status: 'error',
|
|
68
|
+
message: 'SSO session expired',
|
|
69
|
+
hint: 'Run: codemie auth refresh'
|
|
70
|
+
});
|
|
71
|
+
success = false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Test API access
|
|
75
|
+
const apiSpinner = ora('Testing API access...').start();
|
|
76
|
+
try {
|
|
77
|
+
const models = await fetchCodeMieModelsFromConfig();
|
|
78
|
+
apiSpinner.stop();
|
|
79
|
+
details.push({
|
|
80
|
+
status: 'ok',
|
|
81
|
+
message: `API access working (${models.length} models available)`
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
apiSpinner.stop();
|
|
86
|
+
details.push({
|
|
87
|
+
status: 'error',
|
|
88
|
+
message: `API access error: ${error instanceof Error ? error.message : String(error)}`
|
|
89
|
+
});
|
|
90
|
+
if (error instanceof Error && error.message.includes('expired')) {
|
|
91
|
+
details.push({
|
|
92
|
+
status: 'info',
|
|
93
|
+
message: 'Session expired',
|
|
94
|
+
hint: 'Run: codemie auth refresh'
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
success = false;
|
|
98
|
+
}
|
|
99
|
+
// Check CodeMie integrations (optional)
|
|
100
|
+
if (config.codeMieIntegration) {
|
|
101
|
+
const displayValue = config.codeMieIntegration.alias || config.codeMieIntegration.id || 'unknown';
|
|
102
|
+
details.push({
|
|
103
|
+
status: 'info',
|
|
104
|
+
message: `Integration: ${displayValue}`
|
|
105
|
+
});
|
|
106
|
+
const integrationSpinner = ora('Validating CodeMie integration...').start();
|
|
107
|
+
try {
|
|
108
|
+
const integrations = await fetchCodeMieIntegrationsFromConfig();
|
|
109
|
+
const litellmIntegrations = integrations.filter(i => i.credential_type === 'LiteLLM');
|
|
110
|
+
if (litellmIntegrations.length === 0) {
|
|
111
|
+
integrationSpinner.fail('No LiteLLM integrations found');
|
|
112
|
+
details.push({
|
|
113
|
+
status: 'error',
|
|
114
|
+
message: 'No LiteLLM integrations available',
|
|
115
|
+
hint: 'Contact support to set up LiteLLM integration'
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
// Use ID for validation if available, otherwise fall back to alias
|
|
120
|
+
const validationKey = config.codeMieIntegration.id ? 'id' : 'alias';
|
|
121
|
+
const validationValue = config.codeMieIntegration.id || config.codeMieIntegration.alias;
|
|
122
|
+
const hasSelectedIntegration = litellmIntegrations.some(i => i[validationKey] === validationValue);
|
|
123
|
+
if (hasSelectedIntegration) {
|
|
124
|
+
const selectedIntegration = litellmIntegrations.find(i => i[validationKey] === validationValue);
|
|
125
|
+
const displayName = selectedIntegration?.project_name
|
|
126
|
+
? `${selectedIntegration.alias} (${selectedIntegration.project_name})`
|
|
127
|
+
: selectedIntegration?.alias || validationValue;
|
|
128
|
+
integrationSpinner.succeed(`Integration validated: ${displayName}`);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
integrationSpinner.fail('Selected integration not found');
|
|
132
|
+
details.push({
|
|
133
|
+
status: 'error',
|
|
134
|
+
message: 'Configured integration not found'
|
|
135
|
+
});
|
|
136
|
+
// Show available integrations
|
|
137
|
+
details.push({
|
|
138
|
+
status: 'info',
|
|
139
|
+
message: 'Available LiteLLM integrations:'
|
|
140
|
+
});
|
|
141
|
+
litellmIntegrations.forEach(integration => {
|
|
142
|
+
const displayName = integration.project_name
|
|
143
|
+
? `${integration.alias} (${integration.project_name})`
|
|
144
|
+
: integration.alias;
|
|
145
|
+
details.push({
|
|
146
|
+
status: 'info',
|
|
147
|
+
message: ` • ${displayName}`
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
details.push({
|
|
151
|
+
status: 'info',
|
|
152
|
+
message: '',
|
|
153
|
+
hint: 'Run: codemie setup to reconfigure'
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
integrationSpinner.fail('Integration validation failed');
|
|
160
|
+
details.push({
|
|
161
|
+
status: 'error',
|
|
162
|
+
message: `Integration error: ${error instanceof Error ? error.message : String(error)}`
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
details.push({
|
|
168
|
+
status: 'info',
|
|
169
|
+
message: 'No integration configured (optional)'
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
details.push({
|
|
175
|
+
status: 'error',
|
|
176
|
+
message: 'SSO credentials not found',
|
|
177
|
+
hint: 'Run: codemie auth login'
|
|
178
|
+
});
|
|
179
|
+
success = false;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
details.push({
|
|
184
|
+
status: 'error',
|
|
185
|
+
message: `Error checking SSO credentials: ${error instanceof Error ? error.message : String(error)}`
|
|
186
|
+
});
|
|
187
|
+
success = false;
|
|
188
|
+
}
|
|
189
|
+
return this.createResult('SSO Configuration', success, details);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=AIRunSSOProviderCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIRunSSOProviderCheck.js","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/providers/AIRunSSOProviderCheck.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for provider-specific health checks
|
|
3
|
+
*/
|
|
4
|
+
import { CodeMieConfigOptions } from '../../../../utils/config-loader.js';
|
|
5
|
+
import { ProviderHealthCheck, HealthCheckResult, HealthCheckDetail } from '../types.js';
|
|
6
|
+
export declare abstract class BaseProviderCheck implements ProviderHealthCheck {
|
|
7
|
+
abstract readonly supportedProviders: string[];
|
|
8
|
+
supports(provider: string): boolean;
|
|
9
|
+
abstract check(config: CodeMieConfigOptions): Promise<HealthCheckResult>;
|
|
10
|
+
protected createResult(name: string, success: boolean, details: HealthCheckDetail[]): HealthCheckResult;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=BaseProviderCheck.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseProviderCheck.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/providers/BaseProviderCheck.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAExF,8BAAsB,iBAAkB,YAAW,mBAAmB;IACpE,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAE/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAExE,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,iBAAiB;CAGxG"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for provider-specific health checks
|
|
3
|
+
*/
|
|
4
|
+
export class BaseProviderCheck {
|
|
5
|
+
supports(provider) {
|
|
6
|
+
return this.supportedProviders.includes(provider);
|
|
7
|
+
}
|
|
8
|
+
createResult(name, success, details) {
|
|
9
|
+
return { name, success, details };
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=BaseProviderCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseProviderCheck.js","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/providers/BaseProviderCheck.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,OAAgB,iBAAiB;IAGrC,QAAQ,CAAC,QAAgB;QACvB,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAIS,YAAY,CAAC,IAAY,EAAE,OAAgB,EAAE,OAA4B;QACjF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standard provider health check (OpenAI, Azure, LiteLLM, Gemini, etc.)
|
|
3
|
+
*/
|
|
4
|
+
import { CodeMieConfigOptions } from '../../../../utils/config-loader.js';
|
|
5
|
+
import { BaseProviderCheck } from './BaseProviderCheck.js';
|
|
6
|
+
import { HealthCheckResult } from '../types.js';
|
|
7
|
+
export declare class StandardProviderCheck extends BaseProviderCheck {
|
|
8
|
+
readonly supportedProviders: string[];
|
|
9
|
+
check(config: CodeMieConfigOptions): Promise<HealthCheckResult>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=StandardProviderCheck.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StandardProviderCheck.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/providers/StandardProviderCheck.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAG1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAqB,MAAM,aAAa,CAAC;AAEnE,qBAAa,qBAAsB,SAAQ,iBAAiB;IAC1D,QAAQ,CAAC,kBAAkB,WAAqD;IAE1E,KAAK,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CA4FtE"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standard provider health check (OpenAI, Azure, LiteLLM, Gemini, etc.)
|
|
3
|
+
*/
|
|
4
|
+
import ora from 'ora';
|
|
5
|
+
import { checkProviderHealth } from '../../../../utils/health-checker.js';
|
|
6
|
+
import { fetchAvailableModels } from '../../../../utils/model-fetcher.js';
|
|
7
|
+
import { BaseProviderCheck } from './BaseProviderCheck.js';
|
|
8
|
+
export class StandardProviderCheck extends BaseProviderCheck {
|
|
9
|
+
supportedProviders = ['openai', 'azure', 'litellm', 'gemini', 'codex'];
|
|
10
|
+
async check(config) {
|
|
11
|
+
const details = [];
|
|
12
|
+
let success = true;
|
|
13
|
+
// Test connectivity
|
|
14
|
+
if (config.baseUrl && config.apiKey && config.model) {
|
|
15
|
+
const healthSpinner = ora('Validating credentials and endpoint...').start();
|
|
16
|
+
try {
|
|
17
|
+
const startTime = Date.now();
|
|
18
|
+
const result = await checkProviderHealth(config.baseUrl, config.apiKey);
|
|
19
|
+
const duration = Date.now() - startTime;
|
|
20
|
+
if (!result.success) {
|
|
21
|
+
throw new Error(result.message);
|
|
22
|
+
}
|
|
23
|
+
healthSpinner.succeed('Credentials validated');
|
|
24
|
+
details.push({
|
|
25
|
+
status: 'ok',
|
|
26
|
+
message: `Response time: ${duration}ms`
|
|
27
|
+
});
|
|
28
|
+
details.push({
|
|
29
|
+
status: 'info',
|
|
30
|
+
message: `Status: ${result.message}`
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
35
|
+
healthSpinner.fail('Connection test failed');
|
|
36
|
+
details.push({
|
|
37
|
+
status: 'error',
|
|
38
|
+
message: `Connection error: ${errorMessage}`
|
|
39
|
+
});
|
|
40
|
+
success = false;
|
|
41
|
+
}
|
|
42
|
+
// Fetch and verify models (skip for Bedrock)
|
|
43
|
+
if (config.provider !== 'bedrock') {
|
|
44
|
+
const modelsSpinner = ora('Fetching available models...').start();
|
|
45
|
+
try {
|
|
46
|
+
const availableModels = await fetchAvailableModels({
|
|
47
|
+
provider: config.provider,
|
|
48
|
+
baseUrl: config.baseUrl,
|
|
49
|
+
apiKey: config.apiKey,
|
|
50
|
+
model: config.model,
|
|
51
|
+
timeout: config.timeout || 300
|
|
52
|
+
});
|
|
53
|
+
if (availableModels.length > 0) {
|
|
54
|
+
modelsSpinner.succeed(`Found ${availableModels.length} available models`);
|
|
55
|
+
// Check if configured model exists
|
|
56
|
+
const configuredModel = config.model;
|
|
57
|
+
const modelExists = availableModels.includes(configuredModel);
|
|
58
|
+
if (modelExists) {
|
|
59
|
+
details.push({
|
|
60
|
+
status: 'ok',
|
|
61
|
+
message: `Configured model '${configuredModel}' is available`
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
details.push({
|
|
66
|
+
status: 'warn',
|
|
67
|
+
message: `Configured model '${configuredModel}' not found in available models`
|
|
68
|
+
});
|
|
69
|
+
details.push({
|
|
70
|
+
status: 'info',
|
|
71
|
+
message: `Available models: ${availableModels.slice(0, 5).join(', ')}${availableModels.length > 5 ? '...' : ''}`
|
|
72
|
+
});
|
|
73
|
+
success = false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
modelsSpinner.warn('Could not fetch models from provider');
|
|
78
|
+
details.push({
|
|
79
|
+
status: 'info',
|
|
80
|
+
message: `Using configured model: ${config.model}`
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
86
|
+
modelsSpinner.warn('Model verification skipped');
|
|
87
|
+
details.push({
|
|
88
|
+
status: 'info',
|
|
89
|
+
message: `Model verification error: ${errorMessage}`
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return this.createResult('Connectivity Test', success, details);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=StandardProviderCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StandardProviderCheck.js","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/providers/StandardProviderCheck.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider health checks registry
|
|
3
|
+
*/
|
|
4
|
+
import { CodeMieConfigOptions } from '../../../../utils/config-loader.js';
|
|
5
|
+
import { ProviderHealthCheck, HealthCheckResult } from '../types.js';
|
|
6
|
+
export { BaseProviderCheck } from './BaseProviderCheck.js';
|
|
7
|
+
export { AIRunSSOProviderCheck } from './AIRunSSOProviderCheck.js';
|
|
8
|
+
export { StandardProviderCheck } from './StandardProviderCheck.js';
|
|
9
|
+
/**
|
|
10
|
+
* Registry of all provider-specific health checks
|
|
11
|
+
*/
|
|
12
|
+
declare class ProviderCheckRegistry {
|
|
13
|
+
private checks;
|
|
14
|
+
/**
|
|
15
|
+
* Get applicable checks for a given provider
|
|
16
|
+
*/
|
|
17
|
+
getChecksForProvider(provider: string): ProviderHealthCheck[];
|
|
18
|
+
/**
|
|
19
|
+
* Run all applicable provider checks
|
|
20
|
+
* @param config Configuration to check
|
|
21
|
+
* @param onProgress Optional callback called before each check starts
|
|
22
|
+
*/
|
|
23
|
+
runChecks(config: CodeMieConfigOptions, onProgress?: (checkName: string) => void): Promise<HealthCheckResult[]>;
|
|
24
|
+
/**
|
|
25
|
+
* Register a custom provider check
|
|
26
|
+
*/
|
|
27
|
+
register(check: ProviderHealthCheck): void;
|
|
28
|
+
}
|
|
29
|
+
export declare const providerCheckRegistry: ProviderCheckRegistry;
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;GAEG;AACH,cAAM,qBAAqB;IACzB,OAAO,CAAC,MAAM,CAGZ;IAEF;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAI7D;;;;OAIG;IACG,SAAS,CACb,MAAM,EAAE,oBAAoB,EAC5B,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GACvC,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAiC/B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;CAG3C;AAGD,eAAO,MAAM,qBAAqB,uBAA8B,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider health checks registry
|
|
3
|
+
*/
|
|
4
|
+
import { AIRunSSOProviderCheck } from './AIRunSSOProviderCheck.js';
|
|
5
|
+
import { StandardProviderCheck } from './StandardProviderCheck.js';
|
|
6
|
+
export { BaseProviderCheck } from './BaseProviderCheck.js';
|
|
7
|
+
export { AIRunSSOProviderCheck } from './AIRunSSOProviderCheck.js';
|
|
8
|
+
export { StandardProviderCheck } from './StandardProviderCheck.js';
|
|
9
|
+
/**
|
|
10
|
+
* Registry of all provider-specific health checks
|
|
11
|
+
*/
|
|
12
|
+
class ProviderCheckRegistry {
|
|
13
|
+
checks = [
|
|
14
|
+
new AIRunSSOProviderCheck(),
|
|
15
|
+
new StandardProviderCheck()
|
|
16
|
+
];
|
|
17
|
+
/**
|
|
18
|
+
* Get applicable checks for a given provider
|
|
19
|
+
*/
|
|
20
|
+
getChecksForProvider(provider) {
|
|
21
|
+
return this.checks.filter(check => check.supports(provider));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Run all applicable provider checks
|
|
25
|
+
* @param config Configuration to check
|
|
26
|
+
* @param onProgress Optional callback called before each check starts
|
|
27
|
+
*/
|
|
28
|
+
async runChecks(config, onProgress) {
|
|
29
|
+
if (!config.provider) {
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
const applicableChecks = this.getChecksForProvider(config.provider);
|
|
33
|
+
const results = [];
|
|
34
|
+
for (const check of applicableChecks) {
|
|
35
|
+
try {
|
|
36
|
+
// Notify progress if callback provided
|
|
37
|
+
if (onProgress) {
|
|
38
|
+
onProgress('Provider');
|
|
39
|
+
}
|
|
40
|
+
const result = await check.check(config);
|
|
41
|
+
results.push(result);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
// If a check throws an error, capture it
|
|
45
|
+
results.push({
|
|
46
|
+
name: 'Provider Check Error',
|
|
47
|
+
success: false,
|
|
48
|
+
details: [{
|
|
49
|
+
status: 'error',
|
|
50
|
+
message: `Check failed: ${error instanceof Error ? error.message : String(error)}`
|
|
51
|
+
}]
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return results;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Register a custom provider check
|
|
59
|
+
*/
|
|
60
|
+
register(check) {
|
|
61
|
+
this.checks.push(check);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Export singleton instance
|
|
65
|
+
export const providerCheckRegistry = new ProviderCheckRegistry();
|
|
66
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;GAEG;AACH,MAAM,qBAAqB;IACjB,MAAM,GAA0B;QACtC,IAAI,qBAAqB,EAAE;QAC3B,IAAI,qBAAqB,EAAE;KAC5B,CAAC;IAEF;;OAEG;IACH,oBAAoB,CAAC,QAAgB;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CACb,MAA4B,EAC5B,UAAwC;QAExC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpE,MAAM,OAAO,GAAwB,EAAE,CAAC;QAExC,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;YACrC,IAAI,CAAC;gBACH,uCAAuC;gBACvC,IAAI,UAAU,EAAE,CAAC;oBACf,UAAU,CAAC,UAAU,CAAC,CAAC;gBACzB,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACzC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,yCAAyC;gBACzC,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,sBAAsB;oBAC5B,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,CAAC;4BACR,MAAM,EAAE,OAAO;4BACf,OAAO,EAAE,iBAAiB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;yBACnF,CAAC;iBACH,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,KAA0B;QACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,4BAA4B;AAC5B,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,EAAE,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health check types and interfaces
|
|
3
|
+
*/
|
|
4
|
+
import { CodeMieConfigOptions } from '../../../utils/config-loader.js';
|
|
5
|
+
/**
|
|
6
|
+
* Status of a health check item
|
|
7
|
+
*/
|
|
8
|
+
export type HealthStatus = 'ok' | 'warn' | 'error' | 'info';
|
|
9
|
+
/**
|
|
10
|
+
* Individual health check detail
|
|
11
|
+
*/
|
|
12
|
+
export interface HealthCheckDetail {
|
|
13
|
+
status: HealthStatus;
|
|
14
|
+
message: string;
|
|
15
|
+
hint?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Result of a health check
|
|
19
|
+
*/
|
|
20
|
+
export interface HealthCheckResult {
|
|
21
|
+
name: string;
|
|
22
|
+
success: boolean;
|
|
23
|
+
details: HealthCheckDetail[];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Progress callback for individual items
|
|
27
|
+
*/
|
|
28
|
+
export type ProgressCallback = (message: string) => void;
|
|
29
|
+
/**
|
|
30
|
+
* Item display callback for showing items one by one
|
|
31
|
+
*/
|
|
32
|
+
export type ItemDisplayCallback = (itemName: string, result: HealthCheckDetail) => void;
|
|
33
|
+
/**
|
|
34
|
+
* Base interface for all health checks
|
|
35
|
+
*/
|
|
36
|
+
export interface HealthCheck {
|
|
37
|
+
name: string;
|
|
38
|
+
run(onProgress?: ProgressCallback): Promise<HealthCheckResult>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Health check that supports item-by-item display
|
|
42
|
+
*/
|
|
43
|
+
export interface ItemWiseHealthCheck extends HealthCheck {
|
|
44
|
+
runWithItemDisplay(onStartItem: (itemName: string) => void, onDisplayItem: (detail: HealthCheckDetail) => void): Promise<HealthCheckResult>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Provider-specific health check
|
|
48
|
+
*/
|
|
49
|
+
export interface ProviderHealthCheck {
|
|
50
|
+
/**
|
|
51
|
+
* Check if this provider check supports the given provider
|
|
52
|
+
*/
|
|
53
|
+
supports(provider: string): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Run provider-specific health checks
|
|
56
|
+
*/
|
|
57
|
+
check(config: CodeMieConfigOptions): Promise<HealthCheckResult>;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/doctor/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAExF;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,UAAU,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAChE;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,kBAAkB,CAChB,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,EACvC,aAAa,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,GACjD,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAEpC;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACjE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/cli/commands/doctor/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,oBAAoB,IAAI,OAAO,CA+F9C"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import { AgentRegistry } from '../../agents/registry.js';
|
|
3
|
-
import { logger } from '../../utils/logger.js';
|
|
4
3
|
import { asyncTipDisplay } from '../../utils/async-tips.js';
|
|
5
|
-
import { AgentInstallationError } from '../../utils/errors.js';
|
|
4
|
+
import { AgentInstallationError, getErrorMessage } from '../../utils/errors.js';
|
|
6
5
|
import ora from 'ora';
|
|
7
6
|
import chalk from 'chalk';
|
|
8
7
|
export function createInstallCommand() {
|
|
@@ -21,11 +20,11 @@ export function createInstallCommand() {
|
|
|
21
20
|
const installed = await agent.isInstalled();
|
|
22
21
|
const status = installed ? chalk.green('✓ installed') : chalk.yellow('○ not installed');
|
|
23
22
|
const version = installed ? await agent.getVersion() : null;
|
|
24
|
-
const versionStr = version ? chalk.
|
|
23
|
+
const versionStr = version ? chalk.white(` (${version})`) : '';
|
|
25
24
|
console.log(chalk.bold(` ${agent.displayName}`) + versionStr);
|
|
26
25
|
console.log(` Command: ${chalk.cyan(`codemie install ${agent.name}`)}`);
|
|
27
26
|
console.log(` Status: ${status}`);
|
|
28
|
-
console.log(` ${chalk.
|
|
27
|
+
console.log(` ${chalk.white(agent.description)}`);
|
|
29
28
|
console.log();
|
|
30
29
|
}
|
|
31
30
|
console.log(chalk.cyan('💡 Tip:') + ' Run ' + chalk.blueBright('codemie install <agent>') + ' to install an agent');
|
|
@@ -38,7 +37,7 @@ export function createInstallCommand() {
|
|
|
38
37
|
}
|
|
39
38
|
// Check if already installed
|
|
40
39
|
if (await agent.isInstalled()) {
|
|
41
|
-
|
|
40
|
+
console.log(chalk.blueBright(`${agent.displayName} is already installed`));
|
|
42
41
|
return;
|
|
43
42
|
}
|
|
44
43
|
const spinner = ora(`Installing ${agent.displayName}...`).start();
|
|
@@ -52,8 +51,10 @@ export function createInstallCommand() {
|
|
|
52
51
|
// Show how to run the newly installed agent
|
|
53
52
|
console.log();
|
|
54
53
|
console.log(chalk.cyan('💡 Next steps:'));
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
// Handle special case where agent name already includes 'codemie-' prefix
|
|
55
|
+
const command = agent.name.startsWith('codemie-') ? agent.name : `codemie-${agent.name}`;
|
|
56
|
+
console.log(chalk.white(` Interactive mode:`), chalk.blueBright(command));
|
|
57
|
+
console.log(chalk.white(` Single task:`), chalk.blueBright(`${command} --task "your task"`));
|
|
57
58
|
console.log();
|
|
58
59
|
}
|
|
59
60
|
catch (error) {
|
|
@@ -62,7 +63,22 @@ export function createInstallCommand() {
|
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
65
|
catch (error) {
|
|
65
|
-
|
|
66
|
+
// Handle AgentInstallationError with helpful suggestions
|
|
67
|
+
if (error instanceof AgentInstallationError) {
|
|
68
|
+
console.error(chalk.red(`✗ ${getErrorMessage(error)}`));
|
|
69
|
+
console.log();
|
|
70
|
+
console.log(chalk.cyan('💡 Available agents:'));
|
|
71
|
+
const allAgents = AgentRegistry.getAllAgents();
|
|
72
|
+
for (const agent of allAgents) {
|
|
73
|
+
console.log(chalk.white(` • ${agent.name}`));
|
|
74
|
+
}
|
|
75
|
+
console.log();
|
|
76
|
+
console.log(chalk.cyan('💡 Tip:') + ' Run ' + chalk.blueBright('codemie install') + ' to see all agents');
|
|
77
|
+
console.log();
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
// For other errors, show simple message
|
|
81
|
+
console.error(chalk.red(`✗ Installation failed: ${getErrorMessage(error)}`));
|
|
66
82
|
process.exit(1);
|
|
67
83
|
}
|
|
68
84
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"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"}
|