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