@sriinnu/kosha-discovery 0.5.0
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/LICENSE +21 -0
- package/README.md +286 -0
- package/dist/aliases.d.ts +51 -0
- package/dist/aliases.d.ts.map +1 -0
- package/dist/aliases.js +115 -0
- package/dist/aliases.js.map +1 -0
- package/dist/cache.d.ts +57 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +123 -0
- package/dist/cache.js.map +1 -0
- package/dist/cli-commands.d.ts +142 -0
- package/dist/cli-commands.d.ts.map +1 -0
- package/dist/cli-commands.js +746 -0
- package/dist/cli-commands.js.map +1 -0
- package/dist/cli-format.d.ts +119 -0
- package/dist/cli-format.d.ts.map +1 -0
- package/dist/cli-format.js +171 -0
- package/dist/cli-format.js.map +1 -0
- package/dist/cli.d.ts +15 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +143 -0
- package/dist/cli.js.map +1 -0
- package/dist/credentials/index.d.ts +2 -0
- package/dist/credentials/index.d.ts.map +1 -0
- package/dist/credentials/index.js +2 -0
- package/dist/credentials/index.js.map +1 -0
- package/dist/credentials/resolver.d.ts +170 -0
- package/dist/credentials/resolver.d.ts.map +1 -0
- package/dist/credentials/resolver.js +597 -0
- package/dist/credentials/resolver.js.map +1 -0
- package/dist/discovery/anthropic.d.ts +49 -0
- package/dist/discovery/anthropic.d.ts.map +1 -0
- package/dist/discovery/anthropic.js +101 -0
- package/dist/discovery/anthropic.js.map +1 -0
- package/dist/discovery/base.d.ts +59 -0
- package/dist/discovery/base.d.ts.map +1 -0
- package/dist/discovery/base.js +123 -0
- package/dist/discovery/base.js.map +1 -0
- package/dist/discovery/bedrock.d.ts +122 -0
- package/dist/discovery/bedrock.d.ts.map +1 -0
- package/dist/discovery/bedrock.js +356 -0
- package/dist/discovery/bedrock.js.map +1 -0
- package/dist/discovery/cerebras.d.ts +43 -0
- package/dist/discovery/cerebras.d.ts.map +1 -0
- package/dist/discovery/cerebras.js +65 -0
- package/dist/discovery/cerebras.js.map +1 -0
- package/dist/discovery/cohere.d.ts +57 -0
- package/dist/discovery/cohere.d.ts.map +1 -0
- package/dist/discovery/cohere.js +82 -0
- package/dist/discovery/cohere.js.map +1 -0
- package/dist/discovery/deepinfra.d.ts +41 -0
- package/dist/discovery/deepinfra.d.ts.map +1 -0
- package/dist/discovery/deepinfra.js +86 -0
- package/dist/discovery/deepinfra.js.map +1 -0
- package/dist/discovery/deepseek.d.ts +17 -0
- package/dist/discovery/deepseek.d.ts.map +1 -0
- package/dist/discovery/deepseek.js +45 -0
- package/dist/discovery/deepseek.js.map +1 -0
- package/dist/discovery/fireworks.d.ts +48 -0
- package/dist/discovery/fireworks.d.ts.map +1 -0
- package/dist/discovery/fireworks.js +101 -0
- package/dist/discovery/fireworks.js.map +1 -0
- package/dist/discovery/glm.d.ts +17 -0
- package/dist/discovery/glm.d.ts.map +1 -0
- package/dist/discovery/glm.js +52 -0
- package/dist/discovery/glm.js.map +1 -0
- package/dist/discovery/google.d.ts +53 -0
- package/dist/discovery/google.d.ts.map +1 -0
- package/dist/discovery/google.js +122 -0
- package/dist/discovery/google.js.map +1 -0
- package/dist/discovery/groq.d.ts +44 -0
- package/dist/discovery/groq.d.ts.map +1 -0
- package/dist/discovery/groq.js +89 -0
- package/dist/discovery/groq.js.map +1 -0
- package/dist/discovery/index.d.ts +48 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +116 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/discovery/llama-cpp.d.ts +45 -0
- package/dist/discovery/llama-cpp.d.ts.map +1 -0
- package/dist/discovery/llama-cpp.js +137 -0
- package/dist/discovery/llama-cpp.js.map +1 -0
- package/dist/discovery/minimax.d.ts +16 -0
- package/dist/discovery/minimax.d.ts.map +1 -0
- package/dist/discovery/minimax.js +56 -0
- package/dist/discovery/minimax.js.map +1 -0
- package/dist/discovery/mistral.d.ts +45 -0
- package/dist/discovery/mistral.d.ts.map +1 -0
- package/dist/discovery/mistral.js +82 -0
- package/dist/discovery/mistral.js.map +1 -0
- package/dist/discovery/moonshot.d.ts +16 -0
- package/dist/discovery/moonshot.d.ts.map +1 -0
- package/dist/discovery/moonshot.js +46 -0
- package/dist/discovery/moonshot.js.map +1 -0
- package/dist/discovery/nvidia.d.ts +60 -0
- package/dist/discovery/nvidia.d.ts.map +1 -0
- package/dist/discovery/nvidia.js +145 -0
- package/dist/discovery/nvidia.js.map +1 -0
- package/dist/discovery/ollama.d.ts +57 -0
- package/dist/discovery/ollama.d.ts.map +1 -0
- package/dist/discovery/ollama.js +151 -0
- package/dist/discovery/ollama.js.map +1 -0
- package/dist/discovery/openai-compatible.d.ts +126 -0
- package/dist/discovery/openai-compatible.d.ts.map +1 -0
- package/dist/discovery/openai-compatible.js +161 -0
- package/dist/discovery/openai-compatible.js.map +1 -0
- package/dist/discovery/openai.d.ts +62 -0
- package/dist/discovery/openai.d.ts.map +1 -0
- package/dist/discovery/openai.js +157 -0
- package/dist/discovery/openai.js.map +1 -0
- package/dist/discovery/openrouter.d.ts +78 -0
- package/dist/discovery/openrouter.d.ts.map +1 -0
- package/dist/discovery/openrouter.js +184 -0
- package/dist/discovery/openrouter.js.map +1 -0
- package/dist/discovery/perplexity.d.ts +66 -0
- package/dist/discovery/perplexity.d.ts.map +1 -0
- package/dist/discovery/perplexity.js +86 -0
- package/dist/discovery/perplexity.js.map +1 -0
- package/dist/discovery/together.d.ts +41 -0
- package/dist/discovery/together.d.ts.map +1 -0
- package/dist/discovery/together.js +88 -0
- package/dist/discovery/together.js.map +1 -0
- package/dist/discovery/vertex.d.ts +146 -0
- package/dist/discovery/vertex.d.ts.map +1 -0
- package/dist/discovery/vertex.js +371 -0
- package/dist/discovery/vertex.js.map +1 -0
- package/dist/discovery/zai.d.ts +17 -0
- package/dist/discovery/zai.d.ts.map +1 -0
- package/dist/discovery/zai.js +51 -0
- package/dist/discovery/zai.js.map +1 -0
- package/dist/discovery-contract.d.ts +186 -0
- package/dist/discovery-contract.d.ts.map +1 -0
- package/dist/discovery-contract.js +115 -0
- package/dist/discovery-contract.js.map +1 -0
- package/dist/discovery-routes.d.ts +14 -0
- package/dist/discovery-routes.d.ts.map +1 -0
- package/dist/discovery-routes.js +98 -0
- package/dist/discovery-routes.js.map +1 -0
- package/dist/enrichment/index.d.ts +2 -0
- package/dist/enrichment/index.d.ts.map +1 -0
- package/dist/enrichment/index.js +2 -0
- package/dist/enrichment/index.js.map +1 -0
- package/dist/enrichment/litellm.d.ts +52 -0
- package/dist/enrichment/litellm.d.ts.map +1 -0
- package/dist/enrichment/litellm.js +205 -0
- package/dist/enrichment/litellm.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/normalize.d.ts +64 -0
- package/dist/normalize.d.ts.map +1 -0
- package/dist/normalize.js +166 -0
- package/dist/normalize.js.map +1 -0
- package/dist/provider-catalog.d.ts +62 -0
- package/dist/provider-catalog.d.ts.map +1 -0
- package/dist/provider-catalog.js +331 -0
- package/dist/provider-catalog.js.map +1 -0
- package/dist/registry-delta.d.ts +17 -0
- package/dist/registry-delta.d.ts.map +1 -0
- package/dist/registry-delta.js +74 -0
- package/dist/registry-delta.js.map +1 -0
- package/dist/registry-discovery.d.ts +66 -0
- package/dist/registry-discovery.d.ts.map +1 -0
- package/dist/registry-discovery.js +339 -0
- package/dist/registry-discovery.js.map +1 -0
- package/dist/registry-query.d.ts +74 -0
- package/dist/registry-query.d.ts.map +1 -0
- package/dist/registry-query.js +310 -0
- package/dist/registry-query.js.map +1 -0
- package/dist/registry-runtime.d.ts +48 -0
- package/dist/registry-runtime.d.ts.map +1 -0
- package/dist/registry-runtime.js +255 -0
- package/dist/registry-runtime.js.map +1 -0
- package/dist/registry-selection.d.ts +31 -0
- package/dist/registry-selection.d.ts.map +1 -0
- package/dist/registry-selection.js +167 -0
- package/dist/registry-selection.js.map +1 -0
- package/dist/registry-state.d.ts +92 -0
- package/dist/registry-state.d.ts.map +1 -0
- package/dist/registry-state.js +35 -0
- package/dist/registry-state.js.map +1 -0
- package/dist/registry.d.ts +127 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +248 -0
- package/dist/registry.js.map +1 -0
- package/dist/resilience.d.ts +212 -0
- package/dist/resilience.d.ts.map +1 -0
- package/dist/resilience.js +292 -0
- package/dist/resilience.js.map +1 -0
- package/dist/security.d.ts +44 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +184 -0
- package/dist/security.js.map +1 -0
- package/dist/server.d.ts +41 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +320 -0
- package/dist/server.js.map +1 -0
- package/dist/shell-safe.d.ts +15 -0
- package/dist/shell-safe.d.ts.map +1 -0
- package/dist/shell-safe.js +20 -0
- package/dist/shell-safe.js.map +1 -0
- package/dist/types.d.ts +365 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -0
- package/logo.svg +81 -0
- package/package.json +85 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/discovery/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,cAAc,EAA2B,MAAM,WAAW,CAAC;AAkBpE;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,cAAc;IACtD,QAAQ,CAAC,UAAU,eAAe;IAClC,QAAQ,CAAC,YAAY,eAAe;IACpC,QAAQ,CAAC,OAAO,+BAA+B;IAE/C;;;;;OAKG;IACG,QAAQ,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAiClG;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;CAMxB"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* kosha-discovery — Anthropic provider discoverer.
|
|
3
|
+
*
|
|
4
|
+
* Queries the Anthropic `/v1/models` endpoint to enumerate all available
|
|
5
|
+
* Claude models and maps them into normalized {@link ModelCard} objects.
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import { BaseDiscoverer, MAX_MODELS_PER_PROVIDER } from "./base.js";
|
|
9
|
+
/**
|
|
10
|
+
* Discovers models available through the Anthropic API.
|
|
11
|
+
*
|
|
12
|
+
* Authentication is via `x-api-key` header. The endpoint is paginated,
|
|
13
|
+
* so we loop until `has_more` is false.
|
|
14
|
+
*/
|
|
15
|
+
export class AnthropicDiscoverer extends BaseDiscoverer {
|
|
16
|
+
providerId = "anthropic";
|
|
17
|
+
providerName = "Anthropic";
|
|
18
|
+
baseUrl = "https://api.anthropic.com";
|
|
19
|
+
/**
|
|
20
|
+
* Fetch all models from the Anthropic API using cursor-based pagination.
|
|
21
|
+
* @param credential - Must contain an `apiKey` or `accessToken`.
|
|
22
|
+
* @param options - Optional timeout override (default 10 s).
|
|
23
|
+
* @returns Normalized model cards, or an empty array if unauthenticated.
|
|
24
|
+
*/
|
|
25
|
+
async discover(credential, options) {
|
|
26
|
+
const apiKey = credential.apiKey ?? credential.accessToken;
|
|
27
|
+
if (!apiKey) {
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
const timeoutMs = this.validateTimeout(options?.timeout);
|
|
31
|
+
const headers = {
|
|
32
|
+
"x-api-key": apiKey,
|
|
33
|
+
"anthropic-version": "2023-06-01",
|
|
34
|
+
};
|
|
35
|
+
const allModels = [];
|
|
36
|
+
let url = `${this.baseUrl}/v1/models?limit=100`;
|
|
37
|
+
// Cursor-based pagination: keep fetching pages while `has_more` is true.
|
|
38
|
+
// Each page returns up to 100 models; `last_id` serves as the cursor.
|
|
39
|
+
while (url) {
|
|
40
|
+
const response = await this.fetchJSON(url, headers, timeoutMs);
|
|
41
|
+
allModels.push(...response.data);
|
|
42
|
+
if (allModels.length >= MAX_MODELS_PER_PROVIDER)
|
|
43
|
+
break;
|
|
44
|
+
if (response.has_more && response.last_id) {
|
|
45
|
+
url = `${this.baseUrl}/v1/models?limit=100&after_id=${response.last_id}`;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
url = "";
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return allModels.map((model) => this.toModelCard(model));
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Convert an Anthropic API model object into a normalized {@link ModelCard}.
|
|
55
|
+
*/
|
|
56
|
+
toModelCard(model) {
|
|
57
|
+
const capabilities = this.inferCapabilities(model.id);
|
|
58
|
+
const mode = model.id.toLowerCase().includes("embed") ? "embedding" : "chat";
|
|
59
|
+
return this.makeCard({
|
|
60
|
+
id: model.id,
|
|
61
|
+
name: model.display_name || model.id,
|
|
62
|
+
provider: this.providerId,
|
|
63
|
+
mode,
|
|
64
|
+
capabilities,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Infer capability flags from the model ID string.
|
|
69
|
+
*
|
|
70
|
+
* All Claude chat models get "chat", "code", "nlu", and "function_calling".
|
|
71
|
+
* Vision is added for Claude 3+ models (detected via regex).
|
|
72
|
+
* @param modelId - The canonical Anthropic model ID.
|
|
73
|
+
*/
|
|
74
|
+
inferCapabilities(modelId) {
|
|
75
|
+
const id = modelId.toLowerCase();
|
|
76
|
+
// Embedding models have a single capability
|
|
77
|
+
if (id.includes("embed")) {
|
|
78
|
+
return ["embedding"];
|
|
79
|
+
}
|
|
80
|
+
// All Claude chat models get base capabilities
|
|
81
|
+
const capabilities = ["chat", "code", "nlu", "function_calling"];
|
|
82
|
+
// Claude 3+ models have multimodal vision support
|
|
83
|
+
if (this.hasVisionSupport(id)) {
|
|
84
|
+
capabilities.push("vision");
|
|
85
|
+
}
|
|
86
|
+
return capabilities;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Check whether a model ID indicates vision (multimodal) support.
|
|
90
|
+
*
|
|
91
|
+
* @param id - Lowercased model ID.
|
|
92
|
+
* @returns `true` for Claude 3, 3.5, 4, 4.5, 4.6, etc.
|
|
93
|
+
*/
|
|
94
|
+
hasVisionSupport(id) {
|
|
95
|
+
// Matches "claude-3", "claude-4", "claude-4-6", etc.
|
|
96
|
+
// The regex captures a major version >= 3, covering all current and future multimodal Claude models.
|
|
97
|
+
const visionPattern = /claude-([3-9]|[1-9]\d)/;
|
|
98
|
+
return visionPattern.test(id);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=anthropic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/discovery/anthropic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* kosha-discovery — Base discoverer abstraction.
|
|
3
|
+
*
|
|
4
|
+
* Provides shared HTTP fetching, timeout handling, and {@link ModelCard}
|
|
5
|
+
* construction logic that every concrete provider discoverer inherits.
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import type { CredentialResult, ModelCard, ProviderDiscoverer } from "../types.js";
|
|
9
|
+
/** Safety cap for paginated model listing. */
|
|
10
|
+
export declare const MAX_MODELS_PER_PROVIDER = 10000;
|
|
11
|
+
/**
|
|
12
|
+
* Abstract base class for all provider discoverers.
|
|
13
|
+
*
|
|
14
|
+
* Subclasses only need to implement {@link discover} and set the three
|
|
15
|
+
* readonly identity fields; the base class supplies `fetchJSON` for
|
|
16
|
+
* HTTP calls and `makeCard` for building uniform {@link ModelCard} objects.
|
|
17
|
+
*/
|
|
18
|
+
export declare abstract class BaseDiscoverer implements ProviderDiscoverer {
|
|
19
|
+
abstract readonly providerId: string;
|
|
20
|
+
abstract readonly providerName: string;
|
|
21
|
+
abstract readonly baseUrl: string;
|
|
22
|
+
/**
|
|
23
|
+
* Query the provider's API and return a list of normalized model cards.
|
|
24
|
+
* @param credential - Resolved credential for authentication.
|
|
25
|
+
* @param options - Optional per-request timeout override.
|
|
26
|
+
*/
|
|
27
|
+
abstract discover(credential: CredentialResult, options?: {
|
|
28
|
+
timeout?: number;
|
|
29
|
+
}): Promise<ModelCard[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Fetch JSON from a URL with timeout and automatic retry on transient errors.
|
|
32
|
+
*
|
|
33
|
+
* Retries up to {@link maxRetries} times with exponential backoff on:
|
|
34
|
+
* - Network failures (fetch throws)
|
|
35
|
+
* - Timeout / abort errors
|
|
36
|
+
* - Server errors (HTTP 5xx)
|
|
37
|
+
*
|
|
38
|
+
* Client errors (4xx) are thrown immediately without retry.
|
|
39
|
+
*/
|
|
40
|
+
protected fetchJSON<T>(url: string, headers?: Record<string, string>, timeoutMs?: number): Promise<T>;
|
|
41
|
+
/**
|
|
42
|
+
* Create a ModelCard with sensible defaults for missing fields.
|
|
43
|
+
*
|
|
44
|
+
* - `originProvider` defaults to `partial.provider` when not explicitly set,
|
|
45
|
+
* which is correct for first-party providers (e.g. "anthropic" serving its
|
|
46
|
+
* own Claude models). Aggregators like openrouter or managed services like
|
|
47
|
+
* bedrock/vertex should pass an explicit `originProvider` to distinguish
|
|
48
|
+
* the serving layer from the original model creator.
|
|
49
|
+
* - `region` and `projectId` are passed through unchanged when present
|
|
50
|
+
* (used by Bedrock and Vertex AI respectively).
|
|
51
|
+
*/
|
|
52
|
+
/** Validate and normalise a timeout value. Returns defaultMs when invalid. */
|
|
53
|
+
protected validateTimeout(timeout: number | undefined, defaultMs?: number): number;
|
|
54
|
+
protected makeCard(partial: Partial<ModelCard> & {
|
|
55
|
+
id: string;
|
|
56
|
+
provider: string;
|
|
57
|
+
}): ModelCard;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/discovery/base.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGnF,8CAA8C;AAC9C,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAa9C;;;;;;GAMG;AACH,8BAAsB,cAAe,YAAW,kBAAkB;IACjE,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAElC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAErG;;;;;;;;;OASG;cACa,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC;IAwD3G;;;;;;;;;;OAUG;IACH,8EAA8E;IAC9E,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,SAAS,GAAG,MAAM;IAIlF,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;CAkB7F"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* kosha-discovery — Base discoverer abstraction.
|
|
3
|
+
*
|
|
4
|
+
* Provides shared HTTP fetching, timeout handling, and {@link ModelCard}
|
|
5
|
+
* construction logic that every concrete provider discoverer inherits.
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import { assertCleanPayload } from "../security.js";
|
|
9
|
+
/** Safety cap for paginated model listing. */
|
|
10
|
+
export const MAX_MODELS_PER_PROVIDER = 10_000;
|
|
11
|
+
/** Common API-key patterns to redact from error messages. */
|
|
12
|
+
const API_KEY_PATTERN = /\b(sk-[A-Za-z0-9_-]{8,}|key-[A-Za-z0-9_-]{8,}|Bearer\s+[A-Za-z0-9._\-]{20,})\b/gi;
|
|
13
|
+
/** Sanitize a response body before including it in an error message. */
|
|
14
|
+
function sanitizeErrorBody(raw, maxLen = 200) {
|
|
15
|
+
const redacted = raw.replace(API_KEY_PATTERN, "[REDACTED]");
|
|
16
|
+
if (redacted.length <= maxLen)
|
|
17
|
+
return redacted;
|
|
18
|
+
return `${redacted.slice(0, maxLen)}…[truncated]`;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Abstract base class for all provider discoverers.
|
|
22
|
+
*
|
|
23
|
+
* Subclasses only need to implement {@link discover} and set the three
|
|
24
|
+
* readonly identity fields; the base class supplies `fetchJSON` for
|
|
25
|
+
* HTTP calls and `makeCard` for building uniform {@link ModelCard} objects.
|
|
26
|
+
*/
|
|
27
|
+
export class BaseDiscoverer {
|
|
28
|
+
/**
|
|
29
|
+
* Fetch JSON from a URL with timeout and automatic retry on transient errors.
|
|
30
|
+
*
|
|
31
|
+
* Retries up to {@link maxRetries} times with exponential backoff on:
|
|
32
|
+
* - Network failures (fetch throws)
|
|
33
|
+
* - Timeout / abort errors
|
|
34
|
+
* - Server errors (HTTP 5xx)
|
|
35
|
+
*
|
|
36
|
+
* Client errors (4xx) are thrown immediately without retry.
|
|
37
|
+
*/
|
|
38
|
+
async fetchJSON(url, headers, timeoutMs = 10_000) {
|
|
39
|
+
const maxRetries = 3;
|
|
40
|
+
const baseDelayMs = 500;
|
|
41
|
+
let lastError;
|
|
42
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
43
|
+
const controller = new AbortController();
|
|
44
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
45
|
+
try {
|
|
46
|
+
const response = await fetch(url, {
|
|
47
|
+
headers,
|
|
48
|
+
signal: controller.signal,
|
|
49
|
+
});
|
|
50
|
+
if (!response.ok) {
|
|
51
|
+
const body = await response.text().catch(() => "");
|
|
52
|
+
const safeBody = body ? sanitizeErrorBody(body) : "";
|
|
53
|
+
const err = new Error(`${this.providerName} API error: ${response.status} ${response.statusText}${safeBody ? ` — ${safeBody}` : ""}`);
|
|
54
|
+
// 4xx client errors are not transient — fail immediately
|
|
55
|
+
if (response.status >= 400 && response.status < 500) {
|
|
56
|
+
throw err;
|
|
57
|
+
}
|
|
58
|
+
// 5xx server errors are retryable
|
|
59
|
+
lastError = err;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
const data = (await response.json());
|
|
63
|
+
assertCleanPayload(data, `${this.providerName} API`);
|
|
64
|
+
return data;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
if (error instanceof DOMException && error.name === "AbortError") {
|
|
69
|
+
lastError = new Error(`${this.providerName} API request timed out after ${timeoutMs}ms`);
|
|
70
|
+
}
|
|
71
|
+
else if (error instanceof Error) {
|
|
72
|
+
// 4xx errors rethrown above will have already propagated
|
|
73
|
+
lastError = error;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
lastError = new Error(String(error));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
clearTimeout(timer);
|
|
81
|
+
}
|
|
82
|
+
// Wait before retrying (exponential backoff: 500ms, 1s, 2s)
|
|
83
|
+
if (attempt < maxRetries - 1) {
|
|
84
|
+
await new Promise((resolve) => setTimeout(resolve, baseDelayMs * 2 ** attempt));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
throw lastError ?? new Error(`${this.providerName} API request failed after ${maxRetries} attempts`);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Create a ModelCard with sensible defaults for missing fields.
|
|
91
|
+
*
|
|
92
|
+
* - `originProvider` defaults to `partial.provider` when not explicitly set,
|
|
93
|
+
* which is correct for first-party providers (e.g. "anthropic" serving its
|
|
94
|
+
* own Claude models). Aggregators like openrouter or managed services like
|
|
95
|
+
* bedrock/vertex should pass an explicit `originProvider` to distinguish
|
|
96
|
+
* the serving layer from the original model creator.
|
|
97
|
+
* - `region` and `projectId` are passed through unchanged when present
|
|
98
|
+
* (used by Bedrock and Vertex AI respectively).
|
|
99
|
+
*/
|
|
100
|
+
/** Validate and normalise a timeout value. Returns defaultMs when invalid. */
|
|
101
|
+
validateTimeout(timeout, defaultMs = 10_000) {
|
|
102
|
+
return (Number.isFinite(timeout) && timeout > 0) ? timeout : defaultMs;
|
|
103
|
+
}
|
|
104
|
+
makeCard(partial) {
|
|
105
|
+
const capabilities = partial.capabilities ?? ["chat"];
|
|
106
|
+
return {
|
|
107
|
+
name: partial.id,
|
|
108
|
+
mode: "chat",
|
|
109
|
+
capabilities,
|
|
110
|
+
rawCapabilities: partial.rawCapabilities ?? [...capabilities],
|
|
111
|
+
contextWindow: 0,
|
|
112
|
+
maxOutputTokens: 0,
|
|
113
|
+
aliases: [],
|
|
114
|
+
discoveredAt: Date.now(),
|
|
115
|
+
source: "api",
|
|
116
|
+
// originProvider falls back to the serving provider when the caller
|
|
117
|
+
// does not supply a more-specific original creator.
|
|
118
|
+
originProvider: partial.originProvider ?? partial.provider,
|
|
119
|
+
...partial,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/discovery/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* kosha-discovery — AWS Bedrock model discoverer.
|
|
3
|
+
*
|
|
4
|
+
* Resolution strategy (in order):
|
|
5
|
+
* 1. AWS SDK (`@aws-sdk/client-bedrock`) — if installed in the host project.
|
|
6
|
+
* 2. AWS CLI fallback (`aws bedrock list-foundation-models --output json`).
|
|
7
|
+
* 3. Static fallback list of well-known Bedrock foundation models (Feb 2026).
|
|
8
|
+
*
|
|
9
|
+
* Credentials use the standard AWS credential chain:
|
|
10
|
+
* environment variables (`AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY`),
|
|
11
|
+
* `~/.aws/credentials`, EC2 / ECS instance-metadata IAM roles, etc.
|
|
12
|
+
* No explicit credential is required by this discoverer — the SDK and CLI
|
|
13
|
+
* both pick up the ambient credential automatically.
|
|
14
|
+
*
|
|
15
|
+
* @module
|
|
16
|
+
*/
|
|
17
|
+
import type { CredentialResult, ModelCard } from "../types.js";
|
|
18
|
+
import { BaseDiscoverer } from "./base.js";
|
|
19
|
+
/**
|
|
20
|
+
* Discovers models available through AWS Bedrock.
|
|
21
|
+
*
|
|
22
|
+
* Tries three resolution strategies in order:
|
|
23
|
+
* 1. `@aws-sdk/client-bedrock` (if installed in the host project).
|
|
24
|
+
* 2. AWS CLI (`aws bedrock list-foundation-models`).
|
|
25
|
+
* 3. Static fallback catalogue.
|
|
26
|
+
*
|
|
27
|
+
* The `credential` argument is optional in the sense that the AWS SDK and CLI
|
|
28
|
+
* both rely on the ambient credential chain. However, the `credential.metadata`
|
|
29
|
+
* bag may carry an explicit `{ region }` override.
|
|
30
|
+
*/
|
|
31
|
+
export declare class BedrockDiscoverer extends BaseDiscoverer {
|
|
32
|
+
readonly providerId = "bedrock";
|
|
33
|
+
readonly providerName = "AWS Bedrock";
|
|
34
|
+
readonly baseUrl = "https://bedrock.us-east-1.amazonaws.com";
|
|
35
|
+
/**
|
|
36
|
+
* Discover all foundation models available on AWS Bedrock.
|
|
37
|
+
*
|
|
38
|
+
* Resolution order: SDK → CLI → static fallback.
|
|
39
|
+
*
|
|
40
|
+
* @param credential - Optional credential; `metadata.region` overrides the
|
|
41
|
+
* `AWS_DEFAULT_REGION` environment variable.
|
|
42
|
+
* @param options - Optional timeout in milliseconds (used for CLI exec).
|
|
43
|
+
*/
|
|
44
|
+
discover(credential: CredentialResult, options?: {
|
|
45
|
+
timeout?: number;
|
|
46
|
+
}): Promise<ModelCard[]>;
|
|
47
|
+
/**
|
|
48
|
+
* Use `@aws-sdk/client-bedrock` to list foundation models.
|
|
49
|
+
*
|
|
50
|
+
* Dynamic import prevents a hard dependency: the SDK is optional and must
|
|
51
|
+
* be installed separately by the host project. If the import fails we
|
|
52
|
+
* throw so the caller can fall through to the next strategy.
|
|
53
|
+
*
|
|
54
|
+
* @throws When `@aws-sdk/client-bedrock` is not installed, or the API call fails.
|
|
55
|
+
*/
|
|
56
|
+
private discoverViaSdk;
|
|
57
|
+
/**
|
|
58
|
+
* Use the `aws` CLI to list foundation models.
|
|
59
|
+
*
|
|
60
|
+
* Runs `aws bedrock list-foundation-models --region {region} --output json`
|
|
61
|
+
* synchronously. Wrapped in try/catch so failures are surfaced to the caller
|
|
62
|
+
* as thrown errors, letting `discover()` fall through gracefully.
|
|
63
|
+
*
|
|
64
|
+
* @throws When the `aws` CLI is not installed or returns a non-zero exit code.
|
|
65
|
+
*/
|
|
66
|
+
private discoverViaCli;
|
|
67
|
+
/**
|
|
68
|
+
* Return a hardcoded catalogue of well-known Bedrock foundation models.
|
|
69
|
+
*
|
|
70
|
+
* Used when neither the SDK nor the CLI is available. All entries have
|
|
71
|
+
* `source: "manual"` and zero context/output token limits — the litellm
|
|
72
|
+
* enrichment pass is expected to populate those fields later.
|
|
73
|
+
*/
|
|
74
|
+
private staticFallback;
|
|
75
|
+
/**
|
|
76
|
+
* Convert a raw Bedrock foundation model summary into a {@link ModelCard}.
|
|
77
|
+
*
|
|
78
|
+
* @param model - Raw model summary from SDK or CLI.
|
|
79
|
+
* @param source - Whether the data came from a live API call or static data.
|
|
80
|
+
* @param credential - Used to attach the resolved AWS region.
|
|
81
|
+
*/
|
|
82
|
+
private toModelCard;
|
|
83
|
+
/**
|
|
84
|
+
* Infer the primary {@link ModelMode} from Bedrock output modalities.
|
|
85
|
+
*
|
|
86
|
+
* Bedrock reports modalities as uppercase strings: "TEXT", "IMAGE", "EMBEDDING".
|
|
87
|
+
* We pick the most specific non-TEXT modality first; TEXT-only → "chat".
|
|
88
|
+
*/
|
|
89
|
+
private inferMode;
|
|
90
|
+
/**
|
|
91
|
+
* Infer capability flags from Bedrock input/output modalities and inference types.
|
|
92
|
+
*
|
|
93
|
+
* - "embedding" models → ["embedding"]
|
|
94
|
+
* - "image" output-only models → ["image"]
|
|
95
|
+
* - All chat models get ["chat"] plus optional vision/code/function_calling
|
|
96
|
+
*/
|
|
97
|
+
private inferCapabilities;
|
|
98
|
+
/**
|
|
99
|
+
* Resolve the AWS region to use for API calls.
|
|
100
|
+
*
|
|
101
|
+
* Priority: `credential.metadata.region` > `AWS_DEFAULT_REGION` env var > `"us-east-1"`.
|
|
102
|
+
*/
|
|
103
|
+
private resolveRegion;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Extract the origin provider from a Bedrock model ID.
|
|
107
|
+
*
|
|
108
|
+
* Bedrock model IDs follow the pattern `{vendor}.{model-name}-v{n}:{variant}`,
|
|
109
|
+
* e.g. `anthropic.claude-opus-4-6-v1:0` → `"anthropic"`.
|
|
110
|
+
*
|
|
111
|
+
* Falls back to `"unknown"` for unrecognised vendor prefixes.
|
|
112
|
+
*
|
|
113
|
+
* @param modelId - A Bedrock foundation model ID.
|
|
114
|
+
* @returns The canonical origin provider string.
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* inferOriginFromBedrockId("anthropic.claude-sonnet-4-6-v1:0") // "anthropic"
|
|
118
|
+
* inferOriginFromBedrockId("meta.llama3-3-70b-instruct-v1:0") // "meta"
|
|
119
|
+
* inferOriginFromBedrockId("amazon.titan-text-premier-v2:0") // "amazon"
|
|
120
|
+
*/
|
|
121
|
+
export declare function inferOriginFromBedrockId(modelId: string): string;
|
|
122
|
+
//# sourceMappingURL=bedrock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bedrock.d.ts","sourceRoot":"","sources":["../../src/discovery/bedrock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAa,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAwH3C;;;;;;;;;;;GAWG;AACH,qBAAa,iBAAkB,SAAQ,cAAc;IACpD,QAAQ,CAAC,UAAU,aAAa;IAChC,QAAQ,CAAC,YAAY,iBAAiB;IACtC,QAAQ,CAAC,OAAO,6CAA6C;IAE7D;;;;;;;;OAQG;IACG,QAAQ,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA6BlG;;;;;;;;OAQG;YACW,cAAc;IAmB5B;;;;;;;;OAQG;YACW,cAAc;IAuC5B;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAoBtB;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAwBnB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAiBjB;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAoCzB;;;;OAIG;IACH,OAAO,CAAC,aAAa;CAGrB;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAShE"}
|