@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/eval.cjs
CHANGED
|
@@ -11402,7 +11402,13 @@ var ANTHROPIC = {
|
|
|
11402
11402
|
baseUrl: "https://api.anthropic.com",
|
|
11403
11403
|
modelsUrl: "https://api.anthropic.com/v1/models",
|
|
11404
11404
|
hostname: "api.anthropic.com",
|
|
11405
|
-
fallbackModels: ["claude-opus-4-7", "claude-sonnet-4-6", "claude-haiku-4-5-20251001"]
|
|
11405
|
+
fallbackModels: ["claude-opus-4-7", "claude-sonnet-4-6", "claude-haiku-4-5-20251001"],
|
|
11406
|
+
// M45 — the Anthropic beta-features header (interleaved thinking + fine-grained tool streaming). An
|
|
11407
|
+
// Anthropic API constant, adapted verbatim from OpenCode's anthropic plugin (MIT © 2025 opencode). The
|
|
11408
|
+
// SANCTIONED behavior delta of M45 (ADR D4) — consumed by the anthropic transport's extraHeaders wiring.
|
|
11409
|
+
extraHeaders: {
|
|
11410
|
+
"anthropic-beta": "interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14"
|
|
11411
|
+
}
|
|
11406
11412
|
};
|
|
11407
11413
|
|
|
11408
11414
|
// src/internal/providers/builtin/bedrock.ts
|
|
@@ -11437,6 +11443,101 @@ function resolveBedrockBaseUrl(modelId) {
|
|
|
11437
11443
|
return `https://bedrock-runtime.${region}.amazonaws.com`;
|
|
11438
11444
|
}
|
|
11439
11445
|
|
|
11446
|
+
// src/internal/providers/builtin/openai-compatible.ts
|
|
11447
|
+
function openAiCompatibleProfile(p) {
|
|
11448
|
+
return {
|
|
11449
|
+
apiMode: "chat_completions",
|
|
11450
|
+
authType: "api_key",
|
|
11451
|
+
fallbackModels: [],
|
|
11452
|
+
...p
|
|
11453
|
+
};
|
|
11454
|
+
}
|
|
11455
|
+
|
|
11456
|
+
// src/internal/providers/builtin/cerebras.ts
|
|
11457
|
+
var CEREBRAS = openAiCompatibleProfile({
|
|
11458
|
+
name: "cerebras",
|
|
11459
|
+
baseUrl: "https://api.cerebras.ai/v1",
|
|
11460
|
+
envVars: ["CEREBRAS_API_KEY"],
|
|
11461
|
+
fallbackModels: ["gpt-oss-120b", "zai-glm-4.7"],
|
|
11462
|
+
extraHeaders: { "X-Cerebras-3rd-Party-Integration": "theokit" },
|
|
11463
|
+
hostname: "api.cerebras.ai"
|
|
11464
|
+
});
|
|
11465
|
+
|
|
11466
|
+
// src/internal/providers/builtin/cohere.ts
|
|
11467
|
+
var COHERE = openAiCompatibleProfile({
|
|
11468
|
+
name: "cohere",
|
|
11469
|
+
baseUrl: "https://api.cohere.ai/compatibility/v1",
|
|
11470
|
+
envVars: ["COHERE_API_KEY", "CO_API_KEY"],
|
|
11471
|
+
fallbackModels: ["command-a-03-2025"],
|
|
11472
|
+
hostname: "api.cohere.ai"
|
|
11473
|
+
});
|
|
11474
|
+
|
|
11475
|
+
// src/internal/providers/builtin/deepinfra.ts
|
|
11476
|
+
var DEEPINFRA = openAiCompatibleProfile({
|
|
11477
|
+
name: "deepinfra",
|
|
11478
|
+
baseUrl: "https://api.deepinfra.com/v1/openai",
|
|
11479
|
+
envVars: ["DEEPINFRA_API_KEY"],
|
|
11480
|
+
fallbackModels: ["Qwen/Qwen3-32B"],
|
|
11481
|
+
hostname: "api.deepinfra.com"
|
|
11482
|
+
});
|
|
11483
|
+
|
|
11484
|
+
// src/internal/providers/builtin/google.ts
|
|
11485
|
+
var GOOGLE = openAiCompatibleProfile({
|
|
11486
|
+
name: "google",
|
|
11487
|
+
baseUrl: "https://generativelanguage.googleapis.com/v1beta/openai",
|
|
11488
|
+
envVars: ["GOOGLE_API_KEY", "GEMINI_API_KEY"],
|
|
11489
|
+
fallbackModels: ["gemini-2.5-pro", "gemini-2.5-flash"],
|
|
11490
|
+
hostname: "generativelanguage.googleapis.com"
|
|
11491
|
+
});
|
|
11492
|
+
|
|
11493
|
+
// src/internal/providers/builtin/groq.ts
|
|
11494
|
+
var GROQ = openAiCompatibleProfile({
|
|
11495
|
+
name: "groq",
|
|
11496
|
+
baseUrl: "https://api.groq.com/openai/v1",
|
|
11497
|
+
envVars: ["GROQ_API_KEY"],
|
|
11498
|
+
fallbackModels: ["llama-3.3-70b-versatile", "llama-3.1-8b-instant"],
|
|
11499
|
+
hostname: "api.groq.com"
|
|
11500
|
+
});
|
|
11501
|
+
|
|
11502
|
+
// src/internal/providers/builtin/mistral.ts
|
|
11503
|
+
var MISTRAL = openAiCompatibleProfile({
|
|
11504
|
+
name: "mistral",
|
|
11505
|
+
baseUrl: "https://api.mistral.ai/v1",
|
|
11506
|
+
envVars: ["MISTRAL_API_KEY"],
|
|
11507
|
+
fallbackModels: ["mistral-large-latest", "codestral-latest"],
|
|
11508
|
+
hostname: "api.mistral.ai"
|
|
11509
|
+
});
|
|
11510
|
+
|
|
11511
|
+
// src/internal/providers/builtin/perplexity.ts
|
|
11512
|
+
var PERPLEXITY = openAiCompatibleProfile({
|
|
11513
|
+
name: "perplexity",
|
|
11514
|
+
baseUrl: "https://api.perplexity.ai",
|
|
11515
|
+
chatCompletionsPath: "/chat/completions",
|
|
11516
|
+
envVars: ["PERPLEXITY_API_KEY"],
|
|
11517
|
+
fallbackModels: ["sonar-pro", "sonar"],
|
|
11518
|
+
hostname: "api.perplexity.ai"
|
|
11519
|
+
});
|
|
11520
|
+
|
|
11521
|
+
// src/internal/providers/builtin/together.ts
|
|
11522
|
+
var TOGETHER = openAiCompatibleProfile({
|
|
11523
|
+
name: "together",
|
|
11524
|
+
aliases: ["togetherai"],
|
|
11525
|
+
baseUrl: "https://api.together.xyz/v1",
|
|
11526
|
+
envVars: ["TOGETHER_API_KEY"],
|
|
11527
|
+
fallbackModels: ["Qwen/Qwen2.5-7B-Instruct-Turbo"],
|
|
11528
|
+
hostname: "api.together.xyz"
|
|
11529
|
+
});
|
|
11530
|
+
|
|
11531
|
+
// src/internal/providers/builtin/xai.ts
|
|
11532
|
+
var XAI = openAiCompatibleProfile({
|
|
11533
|
+
name: "xai",
|
|
11534
|
+
aliases: ["grok"],
|
|
11535
|
+
baseUrl: "https://api.x.ai/v1",
|
|
11536
|
+
envVars: ["XAI_API_KEY"],
|
|
11537
|
+
fallbackModels: ["grok-4.5", "grok-4.3"],
|
|
11538
|
+
hostname: "api.x.ai"
|
|
11539
|
+
});
|
|
11540
|
+
|
|
11440
11541
|
// src/internal/providers/builtin/gemini.ts
|
|
11441
11542
|
var GEMINI = {
|
|
11442
11543
|
name: "gemini",
|
|
@@ -11861,7 +11962,11 @@ var OPENROUTER = {
|
|
|
11861
11962
|
baseUrl: "https://openrouter.ai/api",
|
|
11862
11963
|
modelsUrl: "https://openrouter.ai/api/v1/models",
|
|
11863
11964
|
hostname: "openrouter.ai",
|
|
11864
|
-
|
|
11965
|
+
// M45 — models refreshed (claude-3-haiku retired upstream).
|
|
11966
|
+
fallbackModels: ["openai/gpt-4o-mini", "anthropic/claude-haiku-4-5"],
|
|
11967
|
+
// M45 — OpenRouter app-attribution headers (mechanism from OpenCode's openrouter plugin, MIT; VALUES are
|
|
11968
|
+
// theokit's own — copying another app's referer would misattribute traffic).
|
|
11969
|
+
extraHeaders: { "HTTP-Referer": "https://usetheo.dev", "X-Title": "theokit" }
|
|
11865
11970
|
};
|
|
11866
11971
|
|
|
11867
11972
|
// src/internal/providers/builtin/vertex.ts
|
|
@@ -11910,6 +12015,15 @@ function registerBuiltins() {
|
|
|
11910
12015
|
registerProvider(LLAMACPP);
|
|
11911
12016
|
registerProvider(BEDROCK);
|
|
11912
12017
|
registerProvider(VERTEX);
|
|
12018
|
+
registerProvider(GOOGLE);
|
|
12019
|
+
registerProvider(MISTRAL);
|
|
12020
|
+
registerProvider(GROQ);
|
|
12021
|
+
registerProvider(COHERE);
|
|
12022
|
+
registerProvider(DEEPINFRA);
|
|
12023
|
+
registerProvider(TOGETHER);
|
|
12024
|
+
registerProvider(XAI);
|
|
12025
|
+
registerProvider(PERPLEXITY);
|
|
12026
|
+
registerProvider(CEREBRAS);
|
|
11913
12027
|
registerCatalogProviders();
|
|
11914
12028
|
}
|
|
11915
12029
|
|
|
@@ -12177,14 +12291,16 @@ var AnthropicClient = class {
|
|
|
12177
12291
|
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: HTTP+SSE handshake + accumulator is intentionally one block
|
|
12178
12292
|
async *stream(request, signal) {
|
|
12179
12293
|
const body = buildAnthropicBody(request);
|
|
12294
|
+
const headers = {
|
|
12295
|
+
"content-type": "application/json",
|
|
12296
|
+
"x-api-key": this.options.apiKey,
|
|
12297
|
+
"anthropic-version": this.options.version ?? "2023-06-01"
|
|
12298
|
+
};
|
|
12299
|
+
if (this.options.extraHeaders !== void 0) Object.assign(headers, this.options.extraHeaders);
|
|
12180
12300
|
const response = await this.fetchImpl(`${this.baseUrl}/v1/messages`, {
|
|
12181
12301
|
method: "POST",
|
|
12182
12302
|
signal,
|
|
12183
|
-
headers
|
|
12184
|
-
"content-type": "application/json",
|
|
12185
|
-
"x-api-key": this.options.apiKey,
|
|
12186
|
-
"anthropic-version": this.options.version ?? "2023-06-01"
|
|
12187
|
-
},
|
|
12303
|
+
headers,
|
|
12188
12304
|
body: JSON.stringify(body)
|
|
12189
12305
|
});
|
|
12190
12306
|
if (!response.ok) {
|
|
@@ -13061,11 +13177,13 @@ var OpenAIClient = class {
|
|
|
13061
13177
|
constructor(options) {
|
|
13062
13178
|
this.options = options;
|
|
13063
13179
|
this.baseUrl = options.baseUrl ?? "https://api.openai.com";
|
|
13180
|
+
this.chatPath = options.chatCompletionsPath ?? (/\/v\d+[a-z]*(\/|$)/.test(new URL(this.baseUrl).pathname) ? "/chat/completions" : "/v1/chat/completions");
|
|
13064
13181
|
this.fetchImpl = options.fetch ?? fetch;
|
|
13065
13182
|
}
|
|
13066
13183
|
options;
|
|
13067
13184
|
name = "openai";
|
|
13068
13185
|
baseUrl;
|
|
13186
|
+
chatPath;
|
|
13069
13187
|
fetchImpl;
|
|
13070
13188
|
/**
|
|
13071
13189
|
* Whether this client recovers leaked Hermes tool-call dialect from assistant
|
|
@@ -13088,7 +13206,7 @@ var OpenAIClient = class {
|
|
|
13088
13206
|
const providerId = this.options.providerName ?? this.name;
|
|
13089
13207
|
let response;
|
|
13090
13208
|
try {
|
|
13091
|
-
response = await this.fetchImpl(`${this.baseUrl}
|
|
13209
|
+
response = await this.fetchImpl(`${this.baseUrl}${this.chatPath}`, {
|
|
13092
13210
|
method: "POST",
|
|
13093
13211
|
signal,
|
|
13094
13212
|
headers,
|
|
@@ -14185,6 +14303,9 @@ function selectTransport(profile, apiKey) {
|
|
|
14185
14303
|
if (profile.extractToolCallsFromContent === true) {
|
|
14186
14304
|
opts.extractToolCallsFromContent = true;
|
|
14187
14305
|
}
|
|
14306
|
+
if (profile.chatCompletionsPath !== void 0) {
|
|
14307
|
+
opts.chatCompletionsPath = profile.chatCompletionsPath;
|
|
14308
|
+
}
|
|
14188
14309
|
if (profile.name === "openai" && process.env.OPENAI_ORGANIZATION !== void 0) {
|
|
14189
14310
|
opts.organization = process.env.OPENAI_ORGANIZATION;
|
|
14190
14311
|
}
|
|
@@ -14204,6 +14325,11 @@ function selectTransport(profile, apiKey) {
|
|
|
14204
14325
|
}
|
|
14205
14326
|
const opts = { apiKey };
|
|
14206
14327
|
opts.baseUrl = process.env.ANTHROPIC_API_BASE_URL ?? profile.baseUrl;
|
|
14328
|
+
const t = applyTransform();
|
|
14329
|
+
assertOAuthResolved(t);
|
|
14330
|
+
if (t.fetch !== void 0) opts.fetch = t.fetch;
|
|
14331
|
+
const merged = profile.extraHeaders !== void 0 || t.headers !== void 0 ? { ...profile.extraHeaders, ...t.headers } : void 0;
|
|
14332
|
+
if (merged !== void 0) opts.extraHeaders = merged;
|
|
14207
14333
|
return new AnthropicClient(opts);
|
|
14208
14334
|
}
|
|
14209
14335
|
if (profile.apiMode === "bedrock_anthropic") {
|