@codemieai/code 0.0.15 → 0.0.16
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 +24 -9
- package/dist/agents/codemie-code/agent.js +2 -2
- 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 +12 -4
- package/dist/agents/codemie-code/config.js.map +1 -1
- package/dist/agents/codemie-code/tools/planning.d.ts +1 -1
- package/dist/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +5 -4
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.d.ts +1 -5
- package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.js +5 -26
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/plugins/claude.plugin.js +1 -1
- package/dist/agents/plugins/claude.plugin.js.map +1 -1
- package/dist/agents/plugins/codemie-code.plugin.js +1 -1
- package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
- package/dist/agents/plugins/codex.plugin.js +2 -2
- package/dist/agents/plugins/codex.plugin.js.map +1 -1
- package/dist/agents/plugins/deepagents.plugin.js +1 -1
- package/dist/agents/plugins/deepagents.plugin.js.map +1 -1
- package/dist/agents/plugins/gemini.plugin.js +1 -1
- package/dist/agents/plugins/gemini.plugin.js.map +1 -1
- package/dist/analytics/index.d.ts.map +1 -1
- package/dist/analytics/index.js +3 -11
- package/dist/analytics/index.js.map +1 -1
- package/dist/analytics/remote-submission/cursor-manager.d.ts +1 -1
- package/dist/analytics/remote-submission/cursor-manager.js +2 -2
- package/dist/analytics/remote-submission/cursor-manager.js.map +1 -1
- package/dist/analytics/remote-submission/index.d.ts +2 -2
- package/dist/analytics/remote-submission/index.d.ts.map +1 -1
- package/dist/analytics/remote-submission/index.js +1 -1
- package/dist/analytics/remote-submission/index.js.map +1 -1
- package/dist/analytics/remote-submission/lock-manager.d.ts +1 -1
- package/dist/analytics/remote-submission/lock-manager.js +2 -2
- package/dist/analytics/remote-submission/lock-manager.js.map +1 -1
- package/dist/analytics/remote-submission/metric-transformer.d.ts +2 -30
- package/dist/analytics/remote-submission/metric-transformer.d.ts.map +1 -1
- package/dist/analytics/remote-submission/metric-transformer.js +24 -117
- package/dist/analytics/remote-submission/metric-transformer.js.map +1 -1
- package/dist/analytics/remote-submission/submitter.d.ts +1 -0
- package/dist/analytics/remote-submission/submitter.d.ts.map +1 -1
- package/dist/analytics/remote-submission/submitter.js +18 -37
- package/dist/analytics/remote-submission/submitter.js.map +1 -1
- package/dist/analytics/remote-submission/types.d.ts +5 -51
- package/dist/analytics/remote-submission/types.d.ts.map +1 -1
- package/dist/analytics/remote-submission/types.js.map +1 -1
- package/dist/cli/commands/auth.d.ts.map +1 -1
- package/dist/cli/commands/auth.js +10 -5
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/doctor/checks/AIConfigCheck.d.ts.map +1 -1
- package/dist/cli/commands/doctor/checks/AIConfigCheck.js +12 -5
- package/dist/cli/commands/doctor/checks/AIConfigCheck.js.map +1 -1
- package/dist/cli/commands/doctor/formatter.d.ts +1 -1
- package/dist/cli/commands/doctor/formatter.d.ts.map +1 -1
- package/dist/cli/commands/doctor/formatter.js +1 -6
- package/dist/cli/commands/doctor/formatter.js.map +1 -1
- package/dist/cli/commands/doctor/index.d.ts.map +1 -1
- package/dist/cli/commands/doctor/index.js +23 -8
- package/dist/cli/commands/doctor/index.js.map +1 -1
- package/dist/cli/commands/doctor/type-adapters.d.ts +18 -0
- package/dist/cli/commands/doctor/type-adapters.d.ts.map +1 -0
- package/dist/cli/commands/doctor/type-adapters.js +75 -0
- package/dist/cli/commands/doctor/type-adapters.js.map +1 -0
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +1 -6
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +0 -5
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/profile.js +90 -12
- package/dist/cli/commands/profile.js.map +1 -1
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +159 -660
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +4 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/providers/core/base/BaseHealthCheck.d.ts +57 -0
- package/dist/providers/core/base/BaseHealthCheck.d.ts.map +1 -0
- package/dist/providers/core/base/BaseHealthCheck.js +121 -0
- package/dist/providers/core/base/BaseHealthCheck.js.map +1 -0
- package/dist/providers/core/base/BaseModelProxy.d.ts +45 -0
- package/dist/providers/core/base/BaseModelProxy.d.ts.map +1 -0
- package/dist/providers/core/base/BaseModelProxy.js +43 -0
- package/dist/providers/core/base/BaseModelProxy.js.map +1 -0
- package/dist/providers/core/base/http-client.d.ts +57 -0
- package/dist/providers/core/base/http-client.d.ts.map +1 -0
- package/dist/providers/core/base/http-client.js +240 -0
- package/dist/providers/core/base/http-client.js.map +1 -0
- package/dist/providers/core/decorators.d.ts +13 -0
- package/dist/providers/core/decorators.d.ts.map +1 -0
- package/dist/providers/core/decorators.js +15 -0
- package/dist/providers/core/decorators.js.map +1 -0
- package/dist/providers/core/index.d.ts +13 -0
- package/dist/providers/core/index.d.ts.map +1 -0
- package/dist/providers/core/index.js +14 -0
- package/dist/providers/core/index.js.map +1 -0
- package/dist/providers/core/registry.d.ts +66 -0
- package/dist/providers/core/registry.d.ts.map +1 -0
- package/dist/providers/core/registry.js +105 -0
- package/dist/providers/core/registry.js.map +1 -0
- package/dist/providers/core/types.d.ts +285 -0
- package/dist/providers/core/types.d.ts.map +1 -0
- package/dist/providers/core/types.js +7 -0
- package/dist/providers/core/types.js.map +1 -0
- package/dist/providers/index.d.ts +20 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +22 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/integration/setup-ui.d.ts +76 -0
- package/dist/providers/integration/setup-ui.d.ts.map +1 -0
- package/dist/providers/integration/setup-ui.js +141 -0
- package/dist/providers/integration/setup-ui.js.map +1 -0
- package/dist/providers/plugins/litellm/index.d.ts +8 -0
- package/dist/providers/plugins/litellm/index.d.ts.map +1 -0
- package/dist/providers/plugins/litellm/index.js +12 -0
- package/dist/providers/plugins/litellm/index.js.map +1 -0
- package/dist/providers/plugins/litellm/litellm.models.d.ts +27 -0
- package/dist/providers/plugins/litellm/litellm.models.d.ts.map +1 -0
- package/dist/providers/plugins/litellm/litellm.models.js +48 -0
- package/dist/providers/plugins/litellm/litellm.models.js.map +1 -0
- package/dist/providers/plugins/litellm/litellm.setup-steps.d.ts +8 -0
- package/dist/providers/plugins/litellm/litellm.setup-steps.d.ts.map +1 -0
- package/dist/providers/plugins/litellm/litellm.setup-steps.js +52 -0
- package/dist/providers/plugins/litellm/litellm.setup-steps.js.map +1 -0
- package/dist/providers/plugins/litellm/litellm.template.d.ts +11 -0
- package/dist/providers/plugins/litellm/litellm.template.d.ts.map +1 -0
- package/dist/providers/plugins/litellm/litellm.template.js +59 -0
- package/dist/providers/plugins/litellm/litellm.template.js.map +1 -0
- package/dist/providers/plugins/ollama/index.d.ts +11 -0
- package/dist/providers/plugins/ollama/index.d.ts.map +1 -0
- package/dist/providers/plugins/ollama/index.js +11 -0
- package/dist/providers/plugins/ollama/index.js.map +1 -0
- package/dist/providers/plugins/ollama/ollama.health.d.ts +48 -0
- package/dist/providers/plugins/ollama/ollama.health.d.ts.map +1 -0
- package/dist/providers/plugins/ollama/ollama.health.js +87 -0
- package/dist/providers/plugins/ollama/ollama.health.js.map +1 -0
- package/dist/providers/plugins/ollama/ollama.models.d.ts +47 -0
- package/dist/providers/plugins/ollama/ollama.models.d.ts.map +1 -0
- package/dist/providers/plugins/ollama/ollama.models.js +252 -0
- package/dist/providers/plugins/ollama/ollama.models.js.map +1 -0
- package/dist/providers/plugins/ollama/ollama.setup-steps.d.ts +16 -0
- package/dist/providers/plugins/ollama/ollama.setup-steps.d.ts.map +1 -0
- package/dist/providers/plugins/ollama/ollama.setup-steps.js +164 -0
- package/dist/providers/plugins/ollama/ollama.setup-steps.js.map +1 -0
- package/dist/providers/plugins/ollama/ollama.template.d.ts +11 -0
- package/dist/providers/plugins/ollama/ollama.template.d.ts.map +1 -0
- package/dist/providers/plugins/ollama/ollama.template.js +87 -0
- package/dist/providers/plugins/ollama/ollama.template.js.map +1 -0
- package/dist/providers/plugins/sso/index.d.ts +12 -0
- package/dist/providers/plugins/sso/index.d.ts.map +1 -0
- package/dist/providers/plugins/sso/index.js +12 -0
- package/dist/providers/plugins/sso/index.js.map +1 -0
- package/dist/providers/plugins/sso/sso.auth.d.ts +50 -0
- package/dist/providers/plugins/sso/sso.auth.d.ts.map +1 -0
- package/dist/{utils/sso-auth.js → providers/plugins/sso/sso.auth.js} +37 -2
- package/dist/providers/plugins/sso/sso.auth.js.map +1 -0
- package/dist/providers/plugins/sso/sso.health.d.ts +44 -0
- package/dist/providers/plugins/sso/sso.health.d.ts.map +1 -0
- package/dist/providers/plugins/sso/sso.health.js +178 -0
- package/dist/providers/plugins/sso/sso.health.js.map +1 -0
- package/dist/{utils/codemie-model-fetcher.d.ts → providers/plugins/sso/sso.http-client.d.ts} +16 -5
- package/dist/providers/plugins/sso/sso.http-client.d.ts.map +1 -0
- package/dist/providers/plugins/sso/sso.http-client.js +187 -0
- package/dist/providers/plugins/sso/sso.http-client.js.map +1 -0
- package/dist/providers/plugins/sso/sso.models.d.ts +48 -0
- package/dist/providers/plugins/sso/sso.models.d.ts.map +1 -0
- package/dist/providers/plugins/sso/sso.models.js +139 -0
- package/dist/providers/plugins/sso/sso.models.js.map +1 -0
- package/dist/providers/plugins/sso/sso.setup-steps.d.ts +16 -0
- package/dist/providers/plugins/sso/sso.setup-steps.d.ts.map +1 -0
- package/dist/providers/plugins/sso/sso.setup-steps.js +145 -0
- package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -0
- package/dist/providers/plugins/sso/sso.template.d.ts +11 -0
- package/dist/providers/plugins/sso/sso.template.d.ts.map +1 -0
- package/dist/providers/plugins/sso/sso.template.js +35 -0
- package/dist/providers/plugins/sso/sso.template.js.map +1 -0
- package/dist/proxy/errors.d.ts.map +1 -0
- package/dist/proxy/errors.js.map +1 -0
- package/dist/proxy/http-client.d.ts.map +1 -0
- package/dist/{utils/proxy → proxy}/http-client.js +1 -1
- package/dist/proxy/http-client.js.map +1 -0
- package/dist/proxy/plugins/header-injection.plugin.d.ts.map +1 -0
- package/dist/{utils/proxy → proxy}/plugins/header-injection.plugin.js +7 -3
- package/dist/proxy/plugins/header-injection.plugin.js.map +1 -0
- package/dist/{utils/proxy → proxy}/plugins/index.d.ts +2 -2
- package/dist/proxy/plugins/index.d.ts.map +1 -0
- package/dist/{utils/proxy → proxy}/plugins/index.js +3 -5
- package/dist/proxy/plugins/index.js.map +1 -0
- package/dist/proxy/plugins/logging.plugin.d.ts +22 -0
- package/dist/proxy/plugins/logging.plugin.d.ts.map +1 -0
- package/dist/proxy/plugins/logging.plugin.js +92 -0
- package/dist/proxy/plugins/logging.plugin.js.map +1 -0
- package/dist/proxy/plugins/registry.d.ts.map +1 -0
- package/dist/{utils/proxy → proxy}/plugins/registry.js +1 -1
- package/dist/proxy/plugins/registry.js.map +1 -0
- package/dist/proxy/plugins/sso-auth.plugin.d.ts.map +1 -0
- package/dist/{utils/proxy → proxy}/plugins/sso-auth.plugin.js +1 -1
- package/dist/proxy/plugins/sso-auth.plugin.js.map +1 -0
- package/dist/{utils/proxy → proxy}/plugins/types.d.ts +3 -3
- package/dist/proxy/plugins/types.d.ts.map +1 -0
- package/dist/proxy/plugins/types.js.map +1 -0
- package/dist/proxy/types.d.ts.map +1 -0
- package/dist/proxy/types.js.map +1 -0
- package/dist/utils/codemie-proxy.d.ts +5 -4
- package/dist/utils/codemie-proxy.d.ts.map +1 -1
- package/dist/utils/codemie-proxy.js +31 -26
- package/dist/utils/codemie-proxy.js.map +1 -1
- package/dist/utils/config-loader.d.ts +1 -6
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +30 -90
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/credential-store.d.ts +1 -1
- package/dist/utils/credential-store.d.ts.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +0 -2
- package/dist/utils/logger.js.map +1 -1
- package/package.json +1 -1
- package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.d.ts +0 -11
- package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.d.ts.map +0 -1
- package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.js +0 -264
- package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.js.map +0 -1
- package/dist/cli/commands/doctor/providers/BaseProviderCheck.d.ts +0 -12
- package/dist/cli/commands/doctor/providers/BaseProviderCheck.d.ts.map +0 -1
- package/dist/cli/commands/doctor/providers/BaseProviderCheck.js +0 -12
- package/dist/cli/commands/doctor/providers/BaseProviderCheck.js.map +0 -1
- package/dist/cli/commands/doctor/providers/StandardProviderCheck.d.ts +0 -11
- package/dist/cli/commands/doctor/providers/StandardProviderCheck.d.ts.map +0 -1
- package/dist/cli/commands/doctor/providers/StandardProviderCheck.js +0 -97
- package/dist/cli/commands/doctor/providers/StandardProviderCheck.js.map +0 -1
- package/dist/cli/commands/doctor/providers/index.d.ts +0 -30
- package/dist/cli/commands/doctor/providers/index.d.ts.map +0 -1
- package/dist/cli/commands/doctor/providers/index.js +0 -66
- package/dist/cli/commands/doctor/providers/index.js.map +0 -1
- package/dist/types/sso.d.ts +0 -42
- package/dist/types/sso.d.ts.map +0 -1
- package/dist/types/sso.js +0 -2
- package/dist/types/sso.js.map +0 -1
- package/dist/utils/async-tips.d.ts +0 -64
- package/dist/utils/async-tips.d.ts.map +0 -1
- package/dist/utils/async-tips.js +0 -203
- package/dist/utils/async-tips.js.map +0 -1
- package/dist/utils/codemie-integration-validator.d.ts +0 -18
- package/dist/utils/codemie-integration-validator.d.ts.map +0 -1
- package/dist/utils/codemie-integration-validator.js +0 -119
- package/dist/utils/codemie-integration-validator.js.map +0 -1
- package/dist/utils/codemie-model-fetcher.d.ts.map +0 -1
- package/dist/utils/codemie-model-fetcher.js +0 -317
- package/dist/utils/codemie-model-fetcher.js.map +0 -1
- package/dist/utils/health-checker.d.ts +0 -20
- package/dist/utils/health-checker.d.ts.map +0 -1
- package/dist/utils/health-checker.js +0 -172
- package/dist/utils/health-checker.js.map +0 -1
- package/dist/utils/model-fetcher.d.ts +0 -21
- package/dist/utils/model-fetcher.d.ts.map +0 -1
- package/dist/utils/model-fetcher.js +0 -148
- package/dist/utils/model-fetcher.js.map +0 -1
- package/dist/utils/proxy/errors.d.ts.map +0 -1
- package/dist/utils/proxy/errors.js.map +0 -1
- package/dist/utils/proxy/http-client.d.ts.map +0 -1
- package/dist/utils/proxy/http-client.js.map +0 -1
- package/dist/utils/proxy/plugins/analytics.plugin.d.ts +0 -19
- package/dist/utils/proxy/plugins/analytics.plugin.d.ts.map +0 -1
- package/dist/utils/proxy/plugins/analytics.plugin.js +0 -84
- package/dist/utils/proxy/plugins/analytics.plugin.js.map +0 -1
- package/dist/utils/proxy/plugins/header-injection.plugin.d.ts.map +0 -1
- package/dist/utils/proxy/plugins/header-injection.plugin.js.map +0 -1
- package/dist/utils/proxy/plugins/index.d.ts.map +0 -1
- package/dist/utils/proxy/plugins/index.js.map +0 -1
- package/dist/utils/proxy/plugins/registry.d.ts.map +0 -1
- package/dist/utils/proxy/plugins/registry.js.map +0 -1
- package/dist/utils/proxy/plugins/sso-auth.plugin.d.ts.map +0 -1
- package/dist/utils/proxy/plugins/sso-auth.plugin.js.map +0 -1
- package/dist/utils/proxy/plugins/types.d.ts.map +0 -1
- package/dist/utils/proxy/plugins/types.js.map +0 -1
- package/dist/utils/proxy/types.d.ts.map +0 -1
- package/dist/utils/proxy/types.js.map +0 -1
- package/dist/utils/sso-auth.d.ts +0 -15
- package/dist/utils/sso-auth.d.ts.map +0 -1
- package/dist/utils/sso-auth.js.map +0 -1
- package/dist/utils/tips.d.ts +0 -35
- package/dist/utils/tips.d.ts.map +0 -1
- package/dist/utils/tips.js +0 -93
- package/dist/utils/tips.js.map +0 -1
- /package/dist/{utils/proxy → proxy}/errors.d.ts +0 -0
- /package/dist/{utils/proxy → proxy}/errors.js +0 -0
- /package/dist/{utils/proxy → proxy}/http-client.d.ts +0 -0
- /package/dist/{utils/proxy → proxy}/plugins/header-injection.plugin.d.ts +0 -0
- /package/dist/{utils/proxy → proxy}/plugins/registry.d.ts +0 -0
- /package/dist/{utils/proxy → proxy}/plugins/sso-auth.plugin.d.ts +0 -0
- /package/dist/{utils/proxy → proxy}/plugins/types.js +0 -0
- /package/dist/{utils/proxy → proxy}/types.d.ts +0 -0
- /package/dist/{utils/proxy → proxy}/types.js +0 -0
|
@@ -1,317 +0,0 @@
|
|
|
1
|
-
import { CredentialStore } from './credential-store.js';
|
|
2
|
-
import https from 'https';
|
|
3
|
-
import http from 'http';
|
|
4
|
-
import { URL } from 'url';
|
|
5
|
-
import { logger } from './logger.js';
|
|
6
|
-
import { sanitizeHeaders } from './sanitize.js';
|
|
7
|
-
// Common endpoint paths
|
|
8
|
-
export const CODEMIE_ENDPOINTS = {
|
|
9
|
-
MODELS: '/v1/llm_models',
|
|
10
|
-
USER_SETTINGS: '/v1/settings/user'
|
|
11
|
-
};
|
|
12
|
-
// Configuration
|
|
13
|
-
const MAX_REDIRECTS = 5;
|
|
14
|
-
const MAX_RETRIES = 3;
|
|
15
|
-
/**
|
|
16
|
-
* Make HTTPS/HTTP request with automatic redirect following
|
|
17
|
-
* Handles 301, 302, 303, 307, 308 redirects following HTTP standards
|
|
18
|
-
*/
|
|
19
|
-
async function makeRequestWithRedirects(url, requestOptions, redirectCount = 0) {
|
|
20
|
-
if (redirectCount >= MAX_REDIRECTS) {
|
|
21
|
-
throw new Error(`Too many redirects (${redirectCount}). Possible redirect loop.`);
|
|
22
|
-
}
|
|
23
|
-
const parsedUrl = new URL(url);
|
|
24
|
-
const protocol = parsedUrl.protocol === 'https:' ? https : http;
|
|
25
|
-
const options = {
|
|
26
|
-
...requestOptions,
|
|
27
|
-
hostname: parsedUrl.hostname,
|
|
28
|
-
port: parsedUrl.port || (parsedUrl.protocol === 'https:' ? 443 : 80),
|
|
29
|
-
path: parsedUrl.pathname + parsedUrl.search,
|
|
30
|
-
};
|
|
31
|
-
if (logger.isDebugMode()) {
|
|
32
|
-
logger.debug(`[HTTP Request] ${options.method} ${url}`);
|
|
33
|
-
logger.debug(`[Headers]`, sanitizeHeaders(requestOptions.headers));
|
|
34
|
-
if (redirectCount > 0) {
|
|
35
|
-
logger.debug(`[Redirect] Following redirect #${redirectCount}`);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return new Promise((resolve, reject) => {
|
|
39
|
-
const req = protocol.request(options, (res) => {
|
|
40
|
-
let data = '';
|
|
41
|
-
res.on('data', (chunk) => {
|
|
42
|
-
data += chunk;
|
|
43
|
-
});
|
|
44
|
-
res.on('end', async () => {
|
|
45
|
-
const statusCode = res.statusCode || 0;
|
|
46
|
-
if (logger.isDebugMode()) {
|
|
47
|
-
logger.debug(`[HTTP Response] ${statusCode} ${res.statusMessage}`);
|
|
48
|
-
logger.debug(`[Response Headers]`, sanitizeHeaders(res.headers));
|
|
49
|
-
}
|
|
50
|
-
// Handle redirects (301, 302, 303, 307, 308)
|
|
51
|
-
if (statusCode >= 300 && statusCode < 400) {
|
|
52
|
-
const location = res.headers['location'];
|
|
53
|
-
if (!location) {
|
|
54
|
-
reject(new Error(`Redirect ${statusCode} without Location header`));
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
// Resolve relative URLs against current URL
|
|
58
|
-
const redirectUrl = new URL(location, url).toString();
|
|
59
|
-
logger.info(`[Redirect] ${statusCode} -> ${redirectUrl}`);
|
|
60
|
-
// Update cookies from Set-Cookie headers if present
|
|
61
|
-
const setCookieHeaders = res.headers['set-cookie'];
|
|
62
|
-
if (setCookieHeaders && requestOptions.headers) {
|
|
63
|
-
const existingCookies = requestOptions.headers['cookie'] || '';
|
|
64
|
-
const newCookies = setCookieHeaders
|
|
65
|
-
.map(cookie => cookie.split(';')[0]) // Extract cookie name=value
|
|
66
|
-
.join('; ');
|
|
67
|
-
requestOptions.headers['cookie'] = existingCookies
|
|
68
|
-
? `${existingCookies}; ${newCookies}`
|
|
69
|
-
: newCookies;
|
|
70
|
-
}
|
|
71
|
-
// For 303, change POST/PUT to GET
|
|
72
|
-
if (statusCode === 303 && options.method !== 'GET' && options.method !== 'HEAD') {
|
|
73
|
-
requestOptions.method = 'GET';
|
|
74
|
-
delete requestOptions.headers?.['content-length'];
|
|
75
|
-
delete requestOptions.headers?.['content-type'];
|
|
76
|
-
}
|
|
77
|
-
try {
|
|
78
|
-
// Follow the redirect
|
|
79
|
-
const redirectResponse = await makeRequestWithRedirects(redirectUrl, requestOptions, redirectCount + 1);
|
|
80
|
-
resolve(redirectResponse);
|
|
81
|
-
}
|
|
82
|
-
catch (error) {
|
|
83
|
-
reject(error);
|
|
84
|
-
}
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
// Not a redirect, return response
|
|
88
|
-
resolve({
|
|
89
|
-
statusCode,
|
|
90
|
-
statusMessage: res.statusMessage,
|
|
91
|
-
headers: res.headers,
|
|
92
|
-
data
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
req.on('error', (error) => {
|
|
97
|
-
if (logger.isDebugMode()) {
|
|
98
|
-
logger.error(`[HTTP Error]`, error);
|
|
99
|
-
}
|
|
100
|
-
reject(error);
|
|
101
|
-
});
|
|
102
|
-
req.on('timeout', () => {
|
|
103
|
-
req.destroy();
|
|
104
|
-
reject(new Error('Request timeout'));
|
|
105
|
-
});
|
|
106
|
-
req.end();
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Retry wrapper with exponential backoff
|
|
111
|
-
*/
|
|
112
|
-
async function withRetry(fn, operation, maxRetries = MAX_RETRIES) {
|
|
113
|
-
let lastError;
|
|
114
|
-
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
115
|
-
try {
|
|
116
|
-
return await fn();
|
|
117
|
-
}
|
|
118
|
-
catch (error) {
|
|
119
|
-
lastError = error;
|
|
120
|
-
// Don't retry auth errors
|
|
121
|
-
if (lastError.message.includes('SSO session expired') ||
|
|
122
|
-
lastError.message.includes('401') ||
|
|
123
|
-
lastError.message.includes('403')) {
|
|
124
|
-
throw lastError;
|
|
125
|
-
}
|
|
126
|
-
// Log retry attempt
|
|
127
|
-
logger.warn(`[Retry] ${operation} failed (attempt ${attempt}/${maxRetries}): ${lastError.message}`);
|
|
128
|
-
if (attempt < maxRetries) {
|
|
129
|
-
// Exponential backoff: 1s, 2s, 4s
|
|
130
|
-
const delay = Math.pow(2, attempt - 1) * 1000;
|
|
131
|
-
logger.debug(`[Retry] Waiting ${delay}ms before retry...`);
|
|
132
|
-
await new Promise(resolve => setTimeout(resolve, delay));
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
throw lastError;
|
|
137
|
-
}
|
|
138
|
-
export async function fetchCodeMieModels(apiUrl, cookies) {
|
|
139
|
-
return withRetry(async () => {
|
|
140
|
-
const cookieString = Object.entries(cookies)
|
|
141
|
-
.map(([key, value]) => `${key}=${value}`)
|
|
142
|
-
.join(';');
|
|
143
|
-
const url = `${apiUrl}${CODEMIE_ENDPOINTS.MODELS}`;
|
|
144
|
-
const requestOptions = {
|
|
145
|
-
method: 'GET',
|
|
146
|
-
headers: {
|
|
147
|
-
'cookie': cookieString,
|
|
148
|
-
'Content-Type': 'application/json',
|
|
149
|
-
'User-Agent': 'CodeMie-CLI/1.0.0',
|
|
150
|
-
'X-CodeMie-Client': 'codemie-cli'
|
|
151
|
-
},
|
|
152
|
-
// Handle certificate issues commonly found in enterprise environments
|
|
153
|
-
rejectUnauthorized: false, // Allow self-signed certificates
|
|
154
|
-
timeout: 10000
|
|
155
|
-
};
|
|
156
|
-
const response = await makeRequestWithRedirects(url, requestOptions);
|
|
157
|
-
if (!response.statusCode || response.statusCode < 200 || response.statusCode >= 300) {
|
|
158
|
-
if (response.statusCode === 401 || response.statusCode === 403) {
|
|
159
|
-
throw new Error('SSO session expired - please run setup again');
|
|
160
|
-
}
|
|
161
|
-
throw new Error(`Failed to fetch models: ${response.statusCode} ${response.statusMessage}`);
|
|
162
|
-
}
|
|
163
|
-
// Parse the response
|
|
164
|
-
const models = JSON.parse(response.data);
|
|
165
|
-
if (!Array.isArray(models)) {
|
|
166
|
-
return [];
|
|
167
|
-
}
|
|
168
|
-
// Filter and map models based on the actual API response structure
|
|
169
|
-
const filteredModels = models
|
|
170
|
-
.filter(model => {
|
|
171
|
-
if (!model)
|
|
172
|
-
return false;
|
|
173
|
-
// Check for different possible model ID fields
|
|
174
|
-
const hasId = model.id && model.id.trim() !== '';
|
|
175
|
-
const hasBaseName = model.base_name && model.base_name.trim() !== '';
|
|
176
|
-
const hasDeploymentName = model.deployment_name && model.deployment_name.trim() !== '';
|
|
177
|
-
return hasId || hasBaseName || hasDeploymentName;
|
|
178
|
-
})
|
|
179
|
-
.map(model => {
|
|
180
|
-
// Use the most appropriate identifier field
|
|
181
|
-
return model.id || model.base_name || model.deployment_name || model.label || 'unknown';
|
|
182
|
-
})
|
|
183
|
-
.filter(id => id !== 'unknown')
|
|
184
|
-
.sort();
|
|
185
|
-
return filteredModels;
|
|
186
|
-
}, 'fetchCodeMieModels');
|
|
187
|
-
}
|
|
188
|
-
export async function fetchCodeMieModelsFromConfig() {
|
|
189
|
-
const store = CredentialStore.getInstance();
|
|
190
|
-
const credentials = await store.retrieveSSOCredentials();
|
|
191
|
-
if (!credentials) {
|
|
192
|
-
throw new Error('No SSO credentials found - please run setup');
|
|
193
|
-
}
|
|
194
|
-
return fetchCodeMieModels(credentials.apiUrl, credentials.cookies);
|
|
195
|
-
}
|
|
196
|
-
export async function fetchCodeMieIntegrations(apiUrl, cookies, endpointPath = CODEMIE_ENDPOINTS.USER_SETTINGS) {
|
|
197
|
-
const cookieString = Object.entries(cookies)
|
|
198
|
-
.map(([key, value]) => `${key}=${value}`)
|
|
199
|
-
.join(';');
|
|
200
|
-
const allIntegrations = [];
|
|
201
|
-
let currentPage = 0;
|
|
202
|
-
const perPage = 50;
|
|
203
|
-
let hasMorePages = true;
|
|
204
|
-
while (hasMorePages) {
|
|
205
|
-
try {
|
|
206
|
-
// Build URL with query parameters to filter by LiteLLM type
|
|
207
|
-
const filters = JSON.stringify({ type: ['LiteLLM'] });
|
|
208
|
-
const queryParams = new URLSearchParams({
|
|
209
|
-
page: currentPage.toString(),
|
|
210
|
-
per_page: perPage.toString(),
|
|
211
|
-
filters: filters
|
|
212
|
-
});
|
|
213
|
-
const fullUrl = `${apiUrl}${endpointPath}?${queryParams.toString()}`;
|
|
214
|
-
const pageIntegrations = await fetchIntegrationsPage(fullUrl, cookieString);
|
|
215
|
-
if (pageIntegrations.length === 0) {
|
|
216
|
-
hasMorePages = false;
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
allIntegrations.push(...pageIntegrations);
|
|
220
|
-
// If we got fewer items than requested, we've reached the last page
|
|
221
|
-
if (pageIntegrations.length < perPage) {
|
|
222
|
-
hasMorePages = false;
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
currentPage++;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
catch {
|
|
230
|
-
hasMorePages = false;
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
return allIntegrations;
|
|
234
|
-
}
|
|
235
|
-
async function fetchIntegrationsPage(fullUrl, cookieString) {
|
|
236
|
-
return withRetry(async () => {
|
|
237
|
-
const requestOptions = {
|
|
238
|
-
method: 'GET',
|
|
239
|
-
headers: {
|
|
240
|
-
'cookie': cookieString,
|
|
241
|
-
'Content-Type': 'application/json',
|
|
242
|
-
'User-Agent': 'CodeMie-CLI/1.0.0',
|
|
243
|
-
'X-CodeMie-Client': 'codemie-cli'
|
|
244
|
-
},
|
|
245
|
-
// Handle certificate issues commonly found in enterprise environments
|
|
246
|
-
rejectUnauthorized: false, // Allow self-signed certificates
|
|
247
|
-
timeout: 10000
|
|
248
|
-
};
|
|
249
|
-
const response = await makeRequestWithRedirects(fullUrl, requestOptions);
|
|
250
|
-
if (!response.statusCode || response.statusCode < 200 || response.statusCode >= 300) {
|
|
251
|
-
if (response.statusCode === 401 || response.statusCode === 403) {
|
|
252
|
-
throw new Error('SSO session expired - please run setup again');
|
|
253
|
-
}
|
|
254
|
-
if (response.statusCode === 404) {
|
|
255
|
-
throw new Error(`Integrations endpoint not found. Response: ${response.data}`);
|
|
256
|
-
}
|
|
257
|
-
throw new Error(`Failed to fetch integrations: ${response.statusCode} ${response.statusMessage}`);
|
|
258
|
-
}
|
|
259
|
-
// Parse the response - handle flexible response structure
|
|
260
|
-
const responseData = JSON.parse(response.data);
|
|
261
|
-
// Extract integrations from response - try all possible locations
|
|
262
|
-
let integrations = [];
|
|
263
|
-
// Try different possible property names and structures
|
|
264
|
-
const possibleArrays = [
|
|
265
|
-
responseData, // Direct array
|
|
266
|
-
responseData.integrations,
|
|
267
|
-
responseData.credentials,
|
|
268
|
-
responseData.data,
|
|
269
|
-
responseData.items,
|
|
270
|
-
responseData.results,
|
|
271
|
-
responseData.user_integrations,
|
|
272
|
-
responseData.personal_integrations,
|
|
273
|
-
responseData.available_integrations
|
|
274
|
-
].filter(arr => Array.isArray(arr));
|
|
275
|
-
if (possibleArrays.length > 0) {
|
|
276
|
-
integrations = possibleArrays[0];
|
|
277
|
-
}
|
|
278
|
-
else {
|
|
279
|
-
// Try to find nested objects that might contain arrays
|
|
280
|
-
for (const value of Object.values(responseData)) {
|
|
281
|
-
if (typeof value === 'object' && value !== null) {
|
|
282
|
-
const nestedArrays = Object.values(value).filter(Array.isArray);
|
|
283
|
-
if (nestedArrays.length > 0) {
|
|
284
|
-
integrations = nestedArrays[0];
|
|
285
|
-
break;
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
// Filter and validate integrations (already filtered by API, but double-check)
|
|
291
|
-
const validIntegrations = integrations
|
|
292
|
-
.filter(integration => {
|
|
293
|
-
return integration &&
|
|
294
|
-
integration.alias &&
|
|
295
|
-
integration.credential_type &&
|
|
296
|
-
integration.alias.trim() !== '' &&
|
|
297
|
-
integration.credential_type.trim() !== '';
|
|
298
|
-
})
|
|
299
|
-
.sort((a, b) => a.alias.localeCompare(b.alias));
|
|
300
|
-
return validIntegrations;
|
|
301
|
-
}, 'fetchIntegrationsPage');
|
|
302
|
-
}
|
|
303
|
-
export async function fetchCodeMieIntegrationsFromConfig() {
|
|
304
|
-
const store = CredentialStore.getInstance();
|
|
305
|
-
const credentials = await store.retrieveSSOCredentials();
|
|
306
|
-
if (!credentials) {
|
|
307
|
-
throw new Error('No SSO credentials found - please run setup');
|
|
308
|
-
}
|
|
309
|
-
return fetchCodeMieIntegrations(credentials.apiUrl, credentials.cookies);
|
|
310
|
-
}
|
|
311
|
-
export async function validateCodeMieConnectivity() {
|
|
312
|
-
// Following the codemie-ide-plugin pattern, we don't perform connectivity validation
|
|
313
|
-
// Instead, we trust that the SSO flow will handle any connectivity issues
|
|
314
|
-
// This function is kept for compatibility but essentially becomes a no-op
|
|
315
|
-
return Promise.resolve();
|
|
316
|
-
}
|
|
317
|
-
//# sourceMappingURL=codemie-model-fetcher.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codemie-model-fetcher.js","sourceRoot":"","sources":["../../src/utils/codemie-model-fetcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Result of health check
|
|
3
|
-
*/
|
|
4
|
-
export interface HealthCheckResult {
|
|
5
|
-
success: boolean;
|
|
6
|
-
message: string;
|
|
7
|
-
details?: any;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Check provider health endpoint
|
|
11
|
-
*
|
|
12
|
-
* For LiteLLM: https://docs.litellm.ai/docs/proxy/health
|
|
13
|
-
* Typically at /health endpoint
|
|
14
|
-
*/
|
|
15
|
-
export declare function checkProviderHealth(baseUrl: string, apiKey: string): Promise<HealthCheckResult>;
|
|
16
|
-
/**
|
|
17
|
-
* Quick validation - just checks if URL is reachable
|
|
18
|
-
*/
|
|
19
|
-
export declare function quickValidation(baseUrl: string, apiKey: string): Promise<boolean>;
|
|
20
|
-
//# sourceMappingURL=health-checker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"health-checker.d.ts","sourceRoot":"","sources":["../../src/utils/health-checker.ts"],"names":[],"mappings":"AAYA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,GAAG,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC,CA6B5B;AAmID;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAGlB"}
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import https from 'https';
|
|
2
|
-
import http from 'http';
|
|
3
|
-
import { URL } from 'url';
|
|
4
|
-
/**
|
|
5
|
-
* Check provider health endpoint
|
|
6
|
-
*
|
|
7
|
-
* For LiteLLM: https://docs.litellm.ai/docs/proxy/health
|
|
8
|
-
* Typically at /health endpoint
|
|
9
|
-
*/
|
|
10
|
-
export async function checkProviderHealth(baseUrl, apiKey) {
|
|
11
|
-
try {
|
|
12
|
-
// Try /health endpoint first (LiteLLM, common pattern)
|
|
13
|
-
let result = await tryHealthEndpoint(baseUrl, apiKey, '/health');
|
|
14
|
-
if (result.success) {
|
|
15
|
-
return result;
|
|
16
|
-
}
|
|
17
|
-
// Fallback: Try /v1/models endpoint (OpenAI-compatible)
|
|
18
|
-
result = await tryHealthEndpoint(baseUrl, apiKey, '/v1/models');
|
|
19
|
-
if (result.success) {
|
|
20
|
-
return {
|
|
21
|
-
success: true,
|
|
22
|
-
message: 'Provider is reachable (verified via /v1/models)',
|
|
23
|
-
details: result.details
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
return {
|
|
27
|
-
success: false,
|
|
28
|
-
message: 'Could not verify provider health',
|
|
29
|
-
details: result.details
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
return {
|
|
34
|
-
success: false,
|
|
35
|
-
message: error instanceof Error ? error.message : String(error)
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Try a specific health endpoint
|
|
41
|
-
*/
|
|
42
|
-
async function tryHealthEndpoint(baseUrl, apiKey, path) {
|
|
43
|
-
try {
|
|
44
|
-
// Ensure baseUrl ends with / for proper path joining
|
|
45
|
-
const normalizedBase = baseUrl.endsWith('/') ? baseUrl : baseUrl + '/';
|
|
46
|
-
// Remove leading / from path to avoid URL replacement
|
|
47
|
-
const normalizedPath = path.startsWith('/') ? path.substring(1) : path;
|
|
48
|
-
const url = new URL(normalizedPath, normalizedBase);
|
|
49
|
-
const isHttps = url.protocol === 'https:';
|
|
50
|
-
const client = isHttps ? https : http;
|
|
51
|
-
return await new Promise((resolve) => {
|
|
52
|
-
const options = {
|
|
53
|
-
hostname: url.hostname,
|
|
54
|
-
port: url.port || (isHttps ? 443 : 80),
|
|
55
|
-
path: url.pathname + url.search,
|
|
56
|
-
method: 'GET',
|
|
57
|
-
headers: {
|
|
58
|
-
'Authorization': `Bearer ${apiKey}`,
|
|
59
|
-
'Content-Type': 'application/json'
|
|
60
|
-
},
|
|
61
|
-
timeout: 10000 // 10 second timeout
|
|
62
|
-
};
|
|
63
|
-
const req = client.request(options, (res) => {
|
|
64
|
-
let data = '';
|
|
65
|
-
res.on('data', (chunk) => {
|
|
66
|
-
data += chunk;
|
|
67
|
-
});
|
|
68
|
-
res.on('end', () => {
|
|
69
|
-
if (res.statusCode === 200) {
|
|
70
|
-
try {
|
|
71
|
-
const response = JSON.parse(data);
|
|
72
|
-
resolve({
|
|
73
|
-
success: true,
|
|
74
|
-
message: `Health check passed (${path})`,
|
|
75
|
-
details: response
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
catch {
|
|
79
|
-
// Non-JSON response but 200 OK
|
|
80
|
-
resolve({
|
|
81
|
-
success: true,
|
|
82
|
-
message: `Health check passed (${path})`,
|
|
83
|
-
details: { raw: data }
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
else if (res.statusCode === 401) {
|
|
88
|
-
resolve({
|
|
89
|
-
success: false,
|
|
90
|
-
message: 'Invalid API key (401 Unauthorized)',
|
|
91
|
-
details: { statusCode: res.statusCode, body: data }
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
else if (res.statusCode === 403) {
|
|
95
|
-
resolve({
|
|
96
|
-
success: false,
|
|
97
|
-
message: 'Access forbidden - check API key permissions (403)',
|
|
98
|
-
details: { statusCode: res.statusCode, body: data }
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
else if (res.statusCode === 404) {
|
|
102
|
-
resolve({
|
|
103
|
-
success: false,
|
|
104
|
-
message: `Endpoint not found (${path})`,
|
|
105
|
-
details: { statusCode: res.statusCode }
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
resolve({
|
|
110
|
-
success: false,
|
|
111
|
-
message: `HTTP ${res.statusCode}: ${data}`,
|
|
112
|
-
details: { statusCode: res.statusCode, body: data }
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
req.on('error', (error) => {
|
|
118
|
-
if (error.message.includes('ENOTFOUND')) {
|
|
119
|
-
resolve({
|
|
120
|
-
success: false,
|
|
121
|
-
message: 'Host not found - check base URL',
|
|
122
|
-
details: error
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
else if (error.message.includes('ECONNREFUSED')) {
|
|
126
|
-
resolve({
|
|
127
|
-
success: false,
|
|
128
|
-
message: 'Connection refused - service may be down',
|
|
129
|
-
details: error
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
else if (error.message.includes('ETIMEDOUT')) {
|
|
133
|
-
resolve({
|
|
134
|
-
success: false,
|
|
135
|
-
message: 'Connection timeout - check network/firewall',
|
|
136
|
-
details: error
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
resolve({
|
|
141
|
-
success: false,
|
|
142
|
-
message: `Connection error: ${error.message}`,
|
|
143
|
-
details: error
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
req.on('timeout', () => {
|
|
148
|
-
req.destroy();
|
|
149
|
-
resolve({
|
|
150
|
-
success: false,
|
|
151
|
-
message: 'Request timeout (10s)',
|
|
152
|
-
details: { timeout: true }
|
|
153
|
-
});
|
|
154
|
-
});
|
|
155
|
-
req.end();
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
catch (error) {
|
|
159
|
-
return {
|
|
160
|
-
success: false,
|
|
161
|
-
message: error instanceof Error ? error.message : String(error)
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Quick validation - just checks if URL is reachable
|
|
167
|
-
*/
|
|
168
|
-
export async function quickValidation(baseUrl, apiKey) {
|
|
169
|
-
const result = await checkProviderHealth(baseUrl, apiKey);
|
|
170
|
-
return result.success;
|
|
171
|
-
}
|
|
172
|
-
//# sourceMappingURL=health-checker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"health-checker.js","sourceRoot":"","sources":["../../src/utils/health-checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { CodeMieConfigOptions } from './config-loader.js';
|
|
2
|
-
/**
|
|
3
|
-
* Fetch available models from provider API
|
|
4
|
-
*/
|
|
5
|
-
export declare function fetchAvailableModels(config: CodeMieConfigOptions): Promise<string[]>;
|
|
6
|
-
/**
|
|
7
|
-
* Filter models based on agent compatibility rules
|
|
8
|
-
*/
|
|
9
|
-
export declare function filterModelsByAgent(models: string[], agentName: string, blockedPatterns: RegExp[]): string[];
|
|
10
|
-
/**
|
|
11
|
-
* Categorize models into recommended and other
|
|
12
|
-
*/
|
|
13
|
-
export declare function categorizeModels(models: string[]): {
|
|
14
|
-
recommended: string[];
|
|
15
|
-
other: string[];
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* Clear the model cache (useful for testing or forcing refresh)
|
|
19
|
-
*/
|
|
20
|
-
export declare function clearModelCache(): void;
|
|
21
|
-
//# sourceMappingURL=model-fetcher.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-fetcher.d.ts","sourceRoot":"","sources":["../../src/utils/model-fetcher.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAyB1D;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAkC1F;AA2ED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EAAE,GACxB,MAAM,EAAE,CAUV;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG;IAClD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAoBA;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}
|