@theokit/sdk 4.13.1 → 4.14.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/CHANGELOG.md +6 -0
- package/dist/{cron-C7catiH8.d.ts → cron-DY0uC1ng.d.ts} +7 -0
- package/dist/{cron-DK1WVZnI.d.cts → cron-ElTj1cSH.d.cts} +7 -0
- package/dist/cron.cjs +134 -8
- package/dist/cron.cjs.map +1 -1
- package/dist/cron.d.cts +1 -1
- package/dist/cron.d.ts +1 -1
- package/dist/cron.js +134 -8
- package/dist/cron.js.map +1 -1
- package/dist/eval.cjs +134 -8
- package/dist/eval.cjs.map +1 -1
- package/dist/eval.js +134 -8
- package/dist/eval.js.map +1 -1
- package/dist/index.cjs +134 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +134 -8
- package/dist/index.js.map +1 -1
- package/dist/internal/llm/openai.d.ts +1 -0
- package/dist/internal/providers/builtin/cerebras.d.ts +5 -0
- package/dist/internal/providers/builtin/cohere.d.ts +6 -0
- package/dist/internal/providers/builtin/deepinfra.d.ts +2 -0
- package/dist/internal/providers/builtin/google.d.ts +6 -0
- package/dist/internal/providers/builtin/groq.d.ts +2 -0
- package/dist/internal/providers/builtin/mistral.d.ts +2 -0
- package/dist/internal/providers/builtin/openai-compatible.d.ts +1 -0
- package/dist/internal/providers/builtin/perplexity.d.ts +5 -0
- package/dist/internal/providers/builtin/together.d.ts +2 -0
- package/dist/internal/providers/builtin/xai.d.ts +2 -0
- package/dist/models.cjs +116 -2
- package/dist/models.cjs.map +1 -1
- package/dist/models.js +116 -2
- package/dist/models.js.map +1 -1
- package/dist/provider-catalog.json +467 -143
- package/dist/types/provider-profile.d.ts +7 -0
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -14003,7 +14003,13 @@ var ANTHROPIC = {
|
|
|
14003
14003
|
baseUrl: "https://api.anthropic.com",
|
|
14004
14004
|
modelsUrl: "https://api.anthropic.com/v1/models",
|
|
14005
14005
|
hostname: "api.anthropic.com",
|
|
14006
|
-
fallbackModels: ["claude-opus-4-7", "claude-sonnet-4-6", "claude-haiku-4-5-20251001"]
|
|
14006
|
+
fallbackModels: ["claude-opus-4-7", "claude-sonnet-4-6", "claude-haiku-4-5-20251001"],
|
|
14007
|
+
// M45 — the Anthropic beta-features header (interleaved thinking + fine-grained tool streaming). An
|
|
14008
|
+
// Anthropic API constant, adapted verbatim from OpenCode's anthropic plugin (MIT © 2025 opencode). The
|
|
14009
|
+
// SANCTIONED behavior delta of M45 (ADR D4) — consumed by the anthropic transport's extraHeaders wiring.
|
|
14010
|
+
extraHeaders: {
|
|
14011
|
+
"anthropic-beta": "interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14"
|
|
14012
|
+
}
|
|
14007
14013
|
};
|
|
14008
14014
|
|
|
14009
14015
|
// src/internal/providers/builtin/bedrock.ts
|
|
@@ -14038,6 +14044,101 @@ function resolveBedrockBaseUrl(modelId) {
|
|
|
14038
14044
|
return `https://bedrock-runtime.${region}.amazonaws.com`;
|
|
14039
14045
|
}
|
|
14040
14046
|
|
|
14047
|
+
// src/internal/providers/builtin/openai-compatible.ts
|
|
14048
|
+
function openAiCompatibleProfile(p) {
|
|
14049
|
+
return {
|
|
14050
|
+
apiMode: "chat_completions",
|
|
14051
|
+
authType: "api_key",
|
|
14052
|
+
fallbackModels: [],
|
|
14053
|
+
...p
|
|
14054
|
+
};
|
|
14055
|
+
}
|
|
14056
|
+
|
|
14057
|
+
// src/internal/providers/builtin/cerebras.ts
|
|
14058
|
+
var CEREBRAS = openAiCompatibleProfile({
|
|
14059
|
+
name: "cerebras",
|
|
14060
|
+
baseUrl: "https://api.cerebras.ai/v1",
|
|
14061
|
+
envVars: ["CEREBRAS_API_KEY"],
|
|
14062
|
+
fallbackModels: ["gpt-oss-120b", "zai-glm-4.7"],
|
|
14063
|
+
extraHeaders: { "X-Cerebras-3rd-Party-Integration": "theokit" },
|
|
14064
|
+
hostname: "api.cerebras.ai"
|
|
14065
|
+
});
|
|
14066
|
+
|
|
14067
|
+
// src/internal/providers/builtin/cohere.ts
|
|
14068
|
+
var COHERE = openAiCompatibleProfile({
|
|
14069
|
+
name: "cohere",
|
|
14070
|
+
baseUrl: "https://api.cohere.ai/compatibility/v1",
|
|
14071
|
+
envVars: ["COHERE_API_KEY", "CO_API_KEY"],
|
|
14072
|
+
fallbackModels: ["command-a-03-2025"],
|
|
14073
|
+
hostname: "api.cohere.ai"
|
|
14074
|
+
});
|
|
14075
|
+
|
|
14076
|
+
// src/internal/providers/builtin/deepinfra.ts
|
|
14077
|
+
var DEEPINFRA = openAiCompatibleProfile({
|
|
14078
|
+
name: "deepinfra",
|
|
14079
|
+
baseUrl: "https://api.deepinfra.com/v1/openai",
|
|
14080
|
+
envVars: ["DEEPINFRA_API_KEY"],
|
|
14081
|
+
fallbackModels: ["Qwen/Qwen3-32B"],
|
|
14082
|
+
hostname: "api.deepinfra.com"
|
|
14083
|
+
});
|
|
14084
|
+
|
|
14085
|
+
// src/internal/providers/builtin/google.ts
|
|
14086
|
+
var GOOGLE = openAiCompatibleProfile({
|
|
14087
|
+
name: "google",
|
|
14088
|
+
baseUrl: "https://generativelanguage.googleapis.com/v1beta/openai",
|
|
14089
|
+
envVars: ["GOOGLE_API_KEY", "GEMINI_API_KEY"],
|
|
14090
|
+
fallbackModels: ["gemini-2.5-pro", "gemini-2.5-flash"],
|
|
14091
|
+
hostname: "generativelanguage.googleapis.com"
|
|
14092
|
+
});
|
|
14093
|
+
|
|
14094
|
+
// src/internal/providers/builtin/groq.ts
|
|
14095
|
+
var GROQ = openAiCompatibleProfile({
|
|
14096
|
+
name: "groq",
|
|
14097
|
+
baseUrl: "https://api.groq.com/openai/v1",
|
|
14098
|
+
envVars: ["GROQ_API_KEY"],
|
|
14099
|
+
fallbackModels: ["llama-3.3-70b-versatile", "llama-3.1-8b-instant"],
|
|
14100
|
+
hostname: "api.groq.com"
|
|
14101
|
+
});
|
|
14102
|
+
|
|
14103
|
+
// src/internal/providers/builtin/mistral.ts
|
|
14104
|
+
var MISTRAL = openAiCompatibleProfile({
|
|
14105
|
+
name: "mistral",
|
|
14106
|
+
baseUrl: "https://api.mistral.ai/v1",
|
|
14107
|
+
envVars: ["MISTRAL_API_KEY"],
|
|
14108
|
+
fallbackModels: ["mistral-large-latest", "codestral-latest"],
|
|
14109
|
+
hostname: "api.mistral.ai"
|
|
14110
|
+
});
|
|
14111
|
+
|
|
14112
|
+
// src/internal/providers/builtin/perplexity.ts
|
|
14113
|
+
var PERPLEXITY = openAiCompatibleProfile({
|
|
14114
|
+
name: "perplexity",
|
|
14115
|
+
baseUrl: "https://api.perplexity.ai",
|
|
14116
|
+
chatCompletionsPath: "/chat/completions",
|
|
14117
|
+
envVars: ["PERPLEXITY_API_KEY"],
|
|
14118
|
+
fallbackModels: ["sonar-pro", "sonar"],
|
|
14119
|
+
hostname: "api.perplexity.ai"
|
|
14120
|
+
});
|
|
14121
|
+
|
|
14122
|
+
// src/internal/providers/builtin/together.ts
|
|
14123
|
+
var TOGETHER = openAiCompatibleProfile({
|
|
14124
|
+
name: "together",
|
|
14125
|
+
aliases: ["togetherai"],
|
|
14126
|
+
baseUrl: "https://api.together.xyz/v1",
|
|
14127
|
+
envVars: ["TOGETHER_API_KEY"],
|
|
14128
|
+
fallbackModels: ["Qwen/Qwen2.5-7B-Instruct-Turbo"],
|
|
14129
|
+
hostname: "api.together.xyz"
|
|
14130
|
+
});
|
|
14131
|
+
|
|
14132
|
+
// src/internal/providers/builtin/xai.ts
|
|
14133
|
+
var XAI = openAiCompatibleProfile({
|
|
14134
|
+
name: "xai",
|
|
14135
|
+
aliases: ["grok"],
|
|
14136
|
+
baseUrl: "https://api.x.ai/v1",
|
|
14137
|
+
envVars: ["XAI_API_KEY"],
|
|
14138
|
+
fallbackModels: ["grok-4.5", "grok-4.3"],
|
|
14139
|
+
hostname: "api.x.ai"
|
|
14140
|
+
});
|
|
14141
|
+
|
|
14041
14142
|
// src/internal/providers/builtin/gemini.ts
|
|
14042
14143
|
var GEMINI = {
|
|
14043
14144
|
name: "gemini",
|
|
@@ -14462,7 +14563,11 @@ var OPENROUTER = {
|
|
|
14462
14563
|
baseUrl: "https://openrouter.ai/api",
|
|
14463
14564
|
modelsUrl: "https://openrouter.ai/api/v1/models",
|
|
14464
14565
|
hostname: "openrouter.ai",
|
|
14465
|
-
|
|
14566
|
+
// M45 — models refreshed (claude-3-haiku retired upstream).
|
|
14567
|
+
fallbackModels: ["openai/gpt-4o-mini", "anthropic/claude-haiku-4-5"],
|
|
14568
|
+
// M45 — OpenRouter app-attribution headers (mechanism from OpenCode's openrouter plugin, MIT; VALUES are
|
|
14569
|
+
// theokit's own — copying another app's referer would misattribute traffic).
|
|
14570
|
+
extraHeaders: { "HTTP-Referer": "https://usetheo.dev", "X-Title": "theokit" }
|
|
14466
14571
|
};
|
|
14467
14572
|
|
|
14468
14573
|
// src/internal/providers/builtin/vertex.ts
|
|
@@ -14511,6 +14616,15 @@ function registerBuiltins() {
|
|
|
14511
14616
|
registerProvider(LLAMACPP);
|
|
14512
14617
|
registerProvider(BEDROCK);
|
|
14513
14618
|
registerProvider(VERTEX);
|
|
14619
|
+
registerProvider(GOOGLE);
|
|
14620
|
+
registerProvider(MISTRAL);
|
|
14621
|
+
registerProvider(GROQ);
|
|
14622
|
+
registerProvider(COHERE);
|
|
14623
|
+
registerProvider(DEEPINFRA);
|
|
14624
|
+
registerProvider(TOGETHER);
|
|
14625
|
+
registerProvider(XAI);
|
|
14626
|
+
registerProvider(PERPLEXITY);
|
|
14627
|
+
registerProvider(CEREBRAS);
|
|
14514
14628
|
registerCatalogProviders();
|
|
14515
14629
|
}
|
|
14516
14630
|
|
|
@@ -14779,14 +14893,16 @@ var AnthropicClient = class {
|
|
|
14779
14893
|
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: HTTP+SSE handshake + accumulator is intentionally one block
|
|
14780
14894
|
async *stream(request, signal) {
|
|
14781
14895
|
const body = buildAnthropicBody(request);
|
|
14896
|
+
const headers = {
|
|
14897
|
+
"content-type": "application/json",
|
|
14898
|
+
"x-api-key": this.options.apiKey,
|
|
14899
|
+
"anthropic-version": this.options.version ?? "2023-06-01"
|
|
14900
|
+
};
|
|
14901
|
+
if (this.options.extraHeaders !== void 0) Object.assign(headers, this.options.extraHeaders);
|
|
14782
14902
|
const response = await this.fetchImpl(`${this.baseUrl}/v1/messages`, {
|
|
14783
14903
|
method: "POST",
|
|
14784
14904
|
signal,
|
|
14785
|
-
headers
|
|
14786
|
-
"content-type": "application/json",
|
|
14787
|
-
"x-api-key": this.options.apiKey,
|
|
14788
|
-
"anthropic-version": this.options.version ?? "2023-06-01"
|
|
14789
|
-
},
|
|
14905
|
+
headers,
|
|
14790
14906
|
body: JSON.stringify(body)
|
|
14791
14907
|
});
|
|
14792
14908
|
if (!response.ok) {
|
|
@@ -15663,11 +15779,13 @@ var OpenAIClient = class {
|
|
|
15663
15779
|
constructor(options) {
|
|
15664
15780
|
this.options = options;
|
|
15665
15781
|
this.baseUrl = options.baseUrl ?? "https://api.openai.com";
|
|
15782
|
+
this.chatPath = options.chatCompletionsPath ?? (/\/v\d+[a-z]*(\/|$)/.test(new URL(this.baseUrl).pathname) ? "/chat/completions" : "/v1/chat/completions");
|
|
15666
15783
|
this.fetchImpl = options.fetch ?? fetch;
|
|
15667
15784
|
}
|
|
15668
15785
|
options;
|
|
15669
15786
|
name = "openai";
|
|
15670
15787
|
baseUrl;
|
|
15788
|
+
chatPath;
|
|
15671
15789
|
fetchImpl;
|
|
15672
15790
|
/**
|
|
15673
15791
|
* Whether this client recovers leaked Hermes tool-call dialect from assistant
|
|
@@ -15690,7 +15808,7 @@ var OpenAIClient = class {
|
|
|
15690
15808
|
const providerId = this.options.providerName ?? this.name;
|
|
15691
15809
|
let response;
|
|
15692
15810
|
try {
|
|
15693
|
-
response = await this.fetchImpl(`${this.baseUrl}
|
|
15811
|
+
response = await this.fetchImpl(`${this.baseUrl}${this.chatPath}`, {
|
|
15694
15812
|
method: "POST",
|
|
15695
15813
|
signal,
|
|
15696
15814
|
headers,
|
|
@@ -16787,6 +16905,9 @@ function selectTransport(profile, apiKey) {
|
|
|
16787
16905
|
if (profile.extractToolCallsFromContent === true) {
|
|
16788
16906
|
opts.extractToolCallsFromContent = true;
|
|
16789
16907
|
}
|
|
16908
|
+
if (profile.chatCompletionsPath !== void 0) {
|
|
16909
|
+
opts.chatCompletionsPath = profile.chatCompletionsPath;
|
|
16910
|
+
}
|
|
16790
16911
|
if (profile.name === "openai" && process.env.OPENAI_ORGANIZATION !== void 0) {
|
|
16791
16912
|
opts.organization = process.env.OPENAI_ORGANIZATION;
|
|
16792
16913
|
}
|
|
@@ -16806,6 +16927,11 @@ function selectTransport(profile, apiKey) {
|
|
|
16806
16927
|
}
|
|
16807
16928
|
const opts = { apiKey };
|
|
16808
16929
|
opts.baseUrl = process.env.ANTHROPIC_API_BASE_URL ?? profile.baseUrl;
|
|
16930
|
+
const t = applyTransform();
|
|
16931
|
+
assertOAuthResolved(t);
|
|
16932
|
+
if (t.fetch !== void 0) opts.fetch = t.fetch;
|
|
16933
|
+
const merged = profile.extraHeaders !== void 0 || t.headers !== void 0 ? { ...profile.extraHeaders, ...t.headers } : void 0;
|
|
16934
|
+
if (merged !== void 0) opts.extraHeaders = merged;
|
|
16809
16935
|
return new AnthropicClient(opts);
|
|
16810
16936
|
}
|
|
16811
16937
|
if (profile.apiMode === "bedrock_anthropic") {
|