@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
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple HTTP Client for Provider Plugins
|
|
3
|
+
*
|
|
4
|
+
* Lightweight HTTP client with timeout, redirect, and retry support
|
|
5
|
+
*/
|
|
6
|
+
import https from 'https';
|
|
7
|
+
import http from 'http';
|
|
8
|
+
import { URL } from 'url';
|
|
9
|
+
import { logger } from '../../../utils/logger.js';
|
|
10
|
+
import { sanitizeHeaders } from '../../../utils/sanitize.js';
|
|
11
|
+
/**
|
|
12
|
+
* Simple HTTP Client
|
|
13
|
+
*/
|
|
14
|
+
export class HTTPClient {
|
|
15
|
+
config;
|
|
16
|
+
constructor(config = {}) {
|
|
17
|
+
this.config = {
|
|
18
|
+
timeout: 5000,
|
|
19
|
+
maxRedirects: 5,
|
|
20
|
+
maxRetries: 3,
|
|
21
|
+
rejectUnauthorized: false,
|
|
22
|
+
headers: {},
|
|
23
|
+
...config
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Perform HTTP GET request with retry logic
|
|
28
|
+
*/
|
|
29
|
+
async get(url, headers) {
|
|
30
|
+
return this.withRetry(() => this.request('GET', url, undefined, headers));
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Perform HTTP POST request with retry logic
|
|
34
|
+
*/
|
|
35
|
+
async post(url, data, headers) {
|
|
36
|
+
return this.withRetry(() => this.request('POST', url, data, headers));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Perform HTTP GET request with redirect support (returns raw string)
|
|
40
|
+
*/
|
|
41
|
+
async getRaw(url, headers) {
|
|
42
|
+
return this.requestWithRedirects(url, {
|
|
43
|
+
method: 'GET',
|
|
44
|
+
headers: {
|
|
45
|
+
...this.config.headers,
|
|
46
|
+
...headers
|
|
47
|
+
},
|
|
48
|
+
rejectUnauthorized: this.config.rejectUnauthorized,
|
|
49
|
+
timeout: this.config.timeout
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Perform HTTP request
|
|
54
|
+
*/
|
|
55
|
+
async request(method, url, data, headers) {
|
|
56
|
+
return new Promise((resolve, reject) => {
|
|
57
|
+
const parsedUrl = new URL(url);
|
|
58
|
+
const isHttps = parsedUrl.protocol === 'https:';
|
|
59
|
+
const client = isHttps ? https : http;
|
|
60
|
+
const requestHeaders = {
|
|
61
|
+
'Content-Type': 'application/json',
|
|
62
|
+
...this.config.headers,
|
|
63
|
+
...headers
|
|
64
|
+
};
|
|
65
|
+
const body = data ? JSON.stringify(data) : undefined;
|
|
66
|
+
if (body) {
|
|
67
|
+
requestHeaders['Content-Length'] = Buffer.byteLength(body).toString();
|
|
68
|
+
}
|
|
69
|
+
const options = {
|
|
70
|
+
hostname: parsedUrl.hostname,
|
|
71
|
+
port: parsedUrl.port || (isHttps ? 443 : 80),
|
|
72
|
+
path: parsedUrl.pathname + parsedUrl.search,
|
|
73
|
+
method,
|
|
74
|
+
headers: requestHeaders,
|
|
75
|
+
timeout: this.config.timeout
|
|
76
|
+
};
|
|
77
|
+
const req = client.request(options, (res) => {
|
|
78
|
+
let responseData = '';
|
|
79
|
+
res.on('data', (chunk) => {
|
|
80
|
+
responseData += chunk;
|
|
81
|
+
});
|
|
82
|
+
res.on('end', () => {
|
|
83
|
+
try {
|
|
84
|
+
const parsedData = responseData ? JSON.parse(responseData) : null;
|
|
85
|
+
const response = {
|
|
86
|
+
status: res.statusCode || 0,
|
|
87
|
+
statusText: res.statusMessage || '',
|
|
88
|
+
data: parsedData,
|
|
89
|
+
headers: res.headers
|
|
90
|
+
};
|
|
91
|
+
if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
|
|
92
|
+
resolve(response);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
reject(new Error(`HTTP ${res.statusCode}: ${res.statusMessage}`));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
reject(new Error(`Failed to parse response: ${error instanceof Error ? error.message : String(error)}`));
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
req.on('error', (error) => {
|
|
104
|
+
reject(error);
|
|
105
|
+
});
|
|
106
|
+
req.on('timeout', () => {
|
|
107
|
+
req.destroy();
|
|
108
|
+
reject(new Error(`Request timeout after ${this.config.timeout}ms`));
|
|
109
|
+
});
|
|
110
|
+
if (body) {
|
|
111
|
+
req.write(body);
|
|
112
|
+
}
|
|
113
|
+
req.end();
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Make HTTP request with automatic redirect following
|
|
118
|
+
* Handles 301, 302, 303, 307, 308 redirects following HTTP standards
|
|
119
|
+
*/
|
|
120
|
+
async requestWithRedirects(url, requestOptions, redirectCount = 0) {
|
|
121
|
+
if (redirectCount >= this.config.maxRedirects) {
|
|
122
|
+
throw new Error(`Too many redirects (${redirectCount}). Possible redirect loop.`);
|
|
123
|
+
}
|
|
124
|
+
const parsedUrl = new URL(url);
|
|
125
|
+
const protocol = parsedUrl.protocol === 'https:' ? https : http;
|
|
126
|
+
const options = {
|
|
127
|
+
...requestOptions,
|
|
128
|
+
hostname: parsedUrl.hostname,
|
|
129
|
+
port: parsedUrl.port || (parsedUrl.protocol === 'https:' ? 443 : 80),
|
|
130
|
+
path: parsedUrl.pathname + parsedUrl.search,
|
|
131
|
+
};
|
|
132
|
+
if (logger.isDebugMode()) {
|
|
133
|
+
logger.debug(`[HTTP Request] ${options.method} ${url}`);
|
|
134
|
+
logger.debug(`[Headers]`, sanitizeHeaders(requestOptions.headers));
|
|
135
|
+
if (redirectCount > 0) {
|
|
136
|
+
logger.debug(`[Redirect] Following redirect #${redirectCount}`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return new Promise((resolve, reject) => {
|
|
140
|
+
const req = protocol.request(options, (res) => {
|
|
141
|
+
let data = '';
|
|
142
|
+
res.on('data', (chunk) => {
|
|
143
|
+
data += chunk;
|
|
144
|
+
});
|
|
145
|
+
res.on('end', async () => {
|
|
146
|
+
const statusCode = res.statusCode || 0;
|
|
147
|
+
if (logger.isDebugMode()) {
|
|
148
|
+
logger.debug(`[HTTP Response] ${statusCode} ${res.statusMessage}`);
|
|
149
|
+
logger.debug(`[Response Headers]`, sanitizeHeaders(res.headers));
|
|
150
|
+
}
|
|
151
|
+
// Handle redirects (301, 302, 303, 307, 308)
|
|
152
|
+
if (statusCode >= 300 && statusCode < 400) {
|
|
153
|
+
const location = res.headers['location'];
|
|
154
|
+
if (!location) {
|
|
155
|
+
reject(new Error(`Redirect ${statusCode} without Location header`));
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
// Resolve relative URLs against current URL
|
|
159
|
+
const redirectUrl = new URL(location, url).toString();
|
|
160
|
+
logger.info(`[Redirect] ${statusCode} -> ${redirectUrl}`);
|
|
161
|
+
// Update cookies from Set-Cookie headers if present
|
|
162
|
+
const setCookieHeaders = res.headers['set-cookie'];
|
|
163
|
+
if (setCookieHeaders && requestOptions.headers) {
|
|
164
|
+
const existingCookies = requestOptions.headers['cookie'] || '';
|
|
165
|
+
const newCookies = setCookieHeaders
|
|
166
|
+
.map(cookie => cookie.split(';')[0]) // Extract cookie name=value
|
|
167
|
+
.join('; ');
|
|
168
|
+
requestOptions.headers['cookie'] = existingCookies
|
|
169
|
+
? `${existingCookies}; ${newCookies}`
|
|
170
|
+
: newCookies;
|
|
171
|
+
}
|
|
172
|
+
// For 303, change POST/PUT to GET
|
|
173
|
+
if (statusCode === 303 && options.method !== 'GET' && options.method !== 'HEAD') {
|
|
174
|
+
requestOptions.method = 'GET';
|
|
175
|
+
delete requestOptions.headers?.['content-length'];
|
|
176
|
+
delete requestOptions.headers?.['content-type'];
|
|
177
|
+
}
|
|
178
|
+
try {
|
|
179
|
+
// Follow the redirect
|
|
180
|
+
const redirectResponse = await this.requestWithRedirects(redirectUrl, requestOptions, redirectCount + 1);
|
|
181
|
+
resolve(redirectResponse);
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
reject(error);
|
|
185
|
+
}
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
// Not a redirect, return response
|
|
189
|
+
resolve({
|
|
190
|
+
statusCode,
|
|
191
|
+
statusMessage: res.statusMessage,
|
|
192
|
+
headers: res.headers,
|
|
193
|
+
data
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
req.on('error', (error) => {
|
|
198
|
+
if (logger.isDebugMode()) {
|
|
199
|
+
logger.error(`[HTTP Error]`, error);
|
|
200
|
+
}
|
|
201
|
+
reject(error);
|
|
202
|
+
});
|
|
203
|
+
req.on('timeout', () => {
|
|
204
|
+
req.destroy();
|
|
205
|
+
reject(new Error('Request timeout'));
|
|
206
|
+
});
|
|
207
|
+
req.end();
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Retry wrapper with exponential backoff
|
|
212
|
+
*/
|
|
213
|
+
async withRetry(fn) {
|
|
214
|
+
let lastError;
|
|
215
|
+
for (let attempt = 1; attempt <= this.config.maxRetries; attempt++) {
|
|
216
|
+
try {
|
|
217
|
+
return await fn();
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
lastError = error;
|
|
221
|
+
// Don't retry auth errors
|
|
222
|
+
if (lastError.message.includes('SSO session expired') ||
|
|
223
|
+
lastError.message.includes('401') ||
|
|
224
|
+
lastError.message.includes('403')) {
|
|
225
|
+
throw lastError;
|
|
226
|
+
}
|
|
227
|
+
// Log retry attempt
|
|
228
|
+
logger.warn(`[Retry] Request failed (attempt ${attempt}/${this.config.maxRetries}): ${lastError.message}`);
|
|
229
|
+
if (attempt < this.config.maxRetries) {
|
|
230
|
+
// Exponential backoff: 1s, 2s, 4s
|
|
231
|
+
const delay = Math.pow(2, attempt - 1) * 1000;
|
|
232
|
+
logger.debug(`[Retry] Waiting ${delay}ms before retry...`);
|
|
233
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
throw lastError;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=http-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../../src/providers/core/base/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Decorators
|
|
3
|
+
*
|
|
4
|
+
* Auto-registration decorators for provider plugins
|
|
5
|
+
*/
|
|
6
|
+
import type { ProviderTemplate } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Auto-registration decorator
|
|
9
|
+
*
|
|
10
|
+
* Automatically registers provider on import
|
|
11
|
+
*/
|
|
12
|
+
export declare function registerProvider<T extends ProviderTemplate>(template: T): T;
|
|
13
|
+
//# sourceMappingURL=decorators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../../src/providers/core/decorators.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAE3E"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Decorators
|
|
3
|
+
*
|
|
4
|
+
* Auto-registration decorators for provider plugins
|
|
5
|
+
*/
|
|
6
|
+
import { ProviderRegistry } from './registry.js';
|
|
7
|
+
/**
|
|
8
|
+
* Auto-registration decorator
|
|
9
|
+
*
|
|
10
|
+
* Automatically registers provider on import
|
|
11
|
+
*/
|
|
12
|
+
export function registerProvider(template) {
|
|
13
|
+
return ProviderRegistry.registerProvider(template);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=decorators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../src/providers/core/decorators.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGjD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAA6B,QAAW;IACtE,OAAO,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Core Module
|
|
3
|
+
*
|
|
4
|
+
* Main exports for provider plugin architecture
|
|
5
|
+
*/
|
|
6
|
+
export type { ProviderTemplate, ProviderCapability, ModelMetadata, ModelInfo, HealthCheckResult, HealthCheckDetail, HealthCheckConfig, ProviderHealthCheck, InstallProgress, ModelInstallerProxy, ProviderModelFetcher, ProviderCredentials, ValidationResult, ProviderSetupSteps } from './types.js';
|
|
7
|
+
export { ProviderRegistry } from './registry.js';
|
|
8
|
+
export { registerProvider } from './decorators.js';
|
|
9
|
+
export { BaseHealthCheck } from './base/BaseHealthCheck.js';
|
|
10
|
+
export { BaseModelProxy } from './base/BaseModelProxy.js';
|
|
11
|
+
export { HTTPClient } from './base/http-client.js';
|
|
12
|
+
export type { HTTPClientConfig, HTTPResponse } from './base/http-client.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/core/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Core Module
|
|
3
|
+
*
|
|
4
|
+
* Main exports for provider plugin architecture
|
|
5
|
+
*/
|
|
6
|
+
// Registry
|
|
7
|
+
export { ProviderRegistry } from './registry.js';
|
|
8
|
+
// Decorators
|
|
9
|
+
export { registerProvider } from './decorators.js';
|
|
10
|
+
// Base Classes
|
|
11
|
+
export { BaseHealthCheck } from './base/BaseHealthCheck.js';
|
|
12
|
+
export { BaseModelProxy } from './base/BaseModelProxy.js';
|
|
13
|
+
export { HTTPClient } from './base/http-client.js';
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/core/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH,WAAW;AACX,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,aAAa;AACb,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,eAAe;AACf,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Registry
|
|
3
|
+
*
|
|
4
|
+
* Central registry for all provider plugins
|
|
5
|
+
*/
|
|
6
|
+
import type { ProviderTemplate, ProviderHealthCheck, ProviderModelFetcher, ProviderSetupSteps } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Provider Registry
|
|
9
|
+
*
|
|
10
|
+
* Central registry for all provider plugins
|
|
11
|
+
*/
|
|
12
|
+
export declare class ProviderRegistry {
|
|
13
|
+
private static providers;
|
|
14
|
+
private static healthChecks;
|
|
15
|
+
private static modelProxies;
|
|
16
|
+
private static setupSteps;
|
|
17
|
+
/**
|
|
18
|
+
* Register provider template
|
|
19
|
+
*/
|
|
20
|
+
static registerProvider<T extends ProviderTemplate>(template: T): T;
|
|
21
|
+
/**
|
|
22
|
+
* Register health check
|
|
23
|
+
*/
|
|
24
|
+
static registerHealthCheck(name: string, healthCheck: ProviderHealthCheck): void;
|
|
25
|
+
/**
|
|
26
|
+
* Register model proxy
|
|
27
|
+
*/
|
|
28
|
+
static registerModelProxy(name: string, proxy: ProviderModelFetcher): void;
|
|
29
|
+
/**
|
|
30
|
+
* Register setup steps
|
|
31
|
+
*/
|
|
32
|
+
static registerSetupSteps(name: string, steps: ProviderSetupSteps): void;
|
|
33
|
+
/**
|
|
34
|
+
* Get provider by name
|
|
35
|
+
*/
|
|
36
|
+
static getProvider(name: string): ProviderTemplate | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Get all providers
|
|
39
|
+
*/
|
|
40
|
+
static getAllProviders(): ProviderTemplate[];
|
|
41
|
+
/**
|
|
42
|
+
* Get health check for provider
|
|
43
|
+
*/
|
|
44
|
+
static getHealthCheck(provider: string): ProviderHealthCheck | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Get model proxy for provider
|
|
47
|
+
*/
|
|
48
|
+
static getModelProxy(provider: string): ProviderModelFetcher | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* Get setup steps for provider
|
|
51
|
+
*/
|
|
52
|
+
static getSetupSteps(provider: string): ProviderSetupSteps | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Check if provider is registered
|
|
55
|
+
*/
|
|
56
|
+
static hasProvider(name: string): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Get all provider names
|
|
59
|
+
*/
|
|
60
|
+
static getProviderNames(): string[];
|
|
61
|
+
/**
|
|
62
|
+
* Clear all registrations (mainly for testing)
|
|
63
|
+
*/
|
|
64
|
+
static clear(): void;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/providers/core/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,SAAS,CAA4C;IACpE,OAAO,CAAC,MAAM,CAAC,YAAY,CAA+C;IAC1E,OAAO,CAAC,MAAM,CAAC,YAAY,CAAgD;IAC3E,OAAO,CAAC,MAAM,CAAC,UAAU,CAA8C;IAEvE;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC;IAKnE;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,GAAG,IAAI;IAIhF;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAI1E;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAIxE;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAI9D;;OAEG;IACH,MAAM,CAAC,eAAe,IAAI,gBAAgB,EAAE;IAI5C;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAUxE;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAUxE;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAItE;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIzC;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI,MAAM,EAAE;IAInC;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;CAMrB"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Registry
|
|
3
|
+
*
|
|
4
|
+
* Central registry for all provider plugins
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Provider Registry
|
|
8
|
+
*
|
|
9
|
+
* Central registry for all provider plugins
|
|
10
|
+
*/
|
|
11
|
+
export class ProviderRegistry {
|
|
12
|
+
static providers = new Map();
|
|
13
|
+
static healthChecks = new Map();
|
|
14
|
+
static modelProxies = new Map();
|
|
15
|
+
static setupSteps = new Map();
|
|
16
|
+
/**
|
|
17
|
+
* Register provider template
|
|
18
|
+
*/
|
|
19
|
+
static registerProvider(template) {
|
|
20
|
+
this.providers.set(template.name, template);
|
|
21
|
+
return template;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Register health check
|
|
25
|
+
*/
|
|
26
|
+
static registerHealthCheck(name, healthCheck) {
|
|
27
|
+
this.healthChecks.set(name, healthCheck);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Register model proxy
|
|
31
|
+
*/
|
|
32
|
+
static registerModelProxy(name, proxy) {
|
|
33
|
+
this.modelProxies.set(name, proxy);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Register setup steps
|
|
37
|
+
*/
|
|
38
|
+
static registerSetupSteps(name, steps) {
|
|
39
|
+
this.setupSteps.set(name, steps);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get provider by name
|
|
43
|
+
*/
|
|
44
|
+
static getProvider(name) {
|
|
45
|
+
return this.providers.get(name);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get all providers
|
|
49
|
+
*/
|
|
50
|
+
static getAllProviders() {
|
|
51
|
+
return Array.from(this.providers.values());
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get health check for provider
|
|
55
|
+
*/
|
|
56
|
+
static getHealthCheck(provider) {
|
|
57
|
+
// Find health check that supports this provider
|
|
58
|
+
for (const healthCheck of this.healthChecks.values()) {
|
|
59
|
+
if (healthCheck.supports(provider)) {
|
|
60
|
+
return healthCheck;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get model proxy for provider
|
|
67
|
+
*/
|
|
68
|
+
static getModelProxy(provider) {
|
|
69
|
+
// Find model proxy that supports this provider
|
|
70
|
+
for (const proxy of this.modelProxies.values()) {
|
|
71
|
+
if (proxy.supports(provider)) {
|
|
72
|
+
return proxy;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get setup steps for provider
|
|
79
|
+
*/
|
|
80
|
+
static getSetupSteps(provider) {
|
|
81
|
+
return this.setupSteps.get(provider);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Check if provider is registered
|
|
85
|
+
*/
|
|
86
|
+
static hasProvider(name) {
|
|
87
|
+
return this.providers.has(name);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get all provider names
|
|
91
|
+
*/
|
|
92
|
+
static getProviderNames() {
|
|
93
|
+
return Array.from(this.providers.keys());
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Clear all registrations (mainly for testing)
|
|
97
|
+
*/
|
|
98
|
+
static clear() {
|
|
99
|
+
this.providers.clear();
|
|
100
|
+
this.healthChecks.clear();
|
|
101
|
+
this.modelProxies.clear();
|
|
102
|
+
this.setupSteps.clear();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/providers/core/registry.ts"],"names":[],"mappings":"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"}
|