@theokit/sdk 4.13.1 → 4.14.1
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 +12 -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 +159 -21
- 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 +159 -21
- package/dist/cron.js.map +1 -1
- package/dist/eval.cjs +159 -21
- package/dist/eval.cjs.map +1 -1
- package/dist/eval.js +159 -21
- package/dist/eval.js.map +1 -1
- package/dist/index.cjs +162 -21
- 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 +162 -21
- package/dist/index.js.map +1 -1
- package/dist/internal/llm/openai.d.ts +29 -0
- package/dist/internal/providers/builtin/cerebras.d.ts +5 -0
- package/dist/internal/providers/builtin/cohere.d.ts +8 -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 +124 -5
- package/dist/models.cjs.map +1 -1
- package/dist/models.js +124 -5
- package/dist/models.js.map +1 -1
- package/dist/types/provider-profile.d.ts +7 -0
- package/package.json +1 -1
package/dist/cron.d.cts
CHANGED
package/dist/cron.d.ts
CHANGED
package/dist/cron.js
CHANGED
|
@@ -749,13 +749,13 @@ function setAgentFacade(facade) {
|
|
|
749
749
|
globalThis[FACADE_KEY] = facade;
|
|
750
750
|
}
|
|
751
751
|
function getAgentFacade() {
|
|
752
|
-
const
|
|
753
|
-
if (
|
|
752
|
+
const registered2 = globalThis[FACADE_KEY];
|
|
753
|
+
if (registered2 === void 0) {
|
|
754
754
|
throw new Error(
|
|
755
755
|
"internal: Agent facade not registered. The `agent.ts` module must be loaded before internal subsystems (LocalAgent.runUntil/fork, eval, scorers, cron) invoke it."
|
|
756
756
|
);
|
|
757
757
|
}
|
|
758
|
-
return
|
|
758
|
+
return registered2;
|
|
759
759
|
}
|
|
760
760
|
var FACADE_KEY;
|
|
761
761
|
var init_agent_factory_registry = __esm({
|
|
@@ -11404,7 +11404,13 @@ var ANTHROPIC = {
|
|
|
11404
11404
|
baseUrl: "https://api.anthropic.com",
|
|
11405
11405
|
modelsUrl: "https://api.anthropic.com/v1/models",
|
|
11406
11406
|
hostname: "api.anthropic.com",
|
|
11407
|
-
fallbackModels: ["claude-opus-4-7", "claude-sonnet-4-6", "claude-haiku-4-5-20251001"]
|
|
11407
|
+
fallbackModels: ["claude-opus-4-7", "claude-sonnet-4-6", "claude-haiku-4-5-20251001"],
|
|
11408
|
+
// M45 — the Anthropic beta-features header (interleaved thinking + fine-grained tool streaming). An
|
|
11409
|
+
// Anthropic API constant, adapted verbatim from OpenCode's anthropic plugin (MIT © 2025 opencode). The
|
|
11410
|
+
// SANCTIONED behavior delta of M45 (ADR D4) — consumed by the anthropic transport's extraHeaders wiring.
|
|
11411
|
+
extraHeaders: {
|
|
11412
|
+
"anthropic-beta": "interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14"
|
|
11413
|
+
}
|
|
11408
11414
|
};
|
|
11409
11415
|
|
|
11410
11416
|
// src/internal/providers/builtin/bedrock.ts
|
|
@@ -11439,6 +11445,44 @@ function resolveBedrockBaseUrl(modelId) {
|
|
|
11439
11445
|
return `https://bedrock-runtime.${region}.amazonaws.com`;
|
|
11440
11446
|
}
|
|
11441
11447
|
|
|
11448
|
+
// src/internal/providers/builtin/openai-compatible.ts
|
|
11449
|
+
function openAiCompatibleProfile(p) {
|
|
11450
|
+
return {
|
|
11451
|
+
apiMode: "chat_completions",
|
|
11452
|
+
authType: "api_key",
|
|
11453
|
+
fallbackModels: [],
|
|
11454
|
+
...p
|
|
11455
|
+
};
|
|
11456
|
+
}
|
|
11457
|
+
|
|
11458
|
+
// src/internal/providers/builtin/cerebras.ts
|
|
11459
|
+
var CEREBRAS = openAiCompatibleProfile({
|
|
11460
|
+
name: "cerebras",
|
|
11461
|
+
baseUrl: "https://api.cerebras.ai/v1",
|
|
11462
|
+
envVars: ["CEREBRAS_API_KEY"],
|
|
11463
|
+
fallbackModels: ["gpt-oss-120b", "zai-glm-4.7"],
|
|
11464
|
+
extraHeaders: { "X-Cerebras-3rd-Party-Integration": "theokit" },
|
|
11465
|
+
hostname: "api.cerebras.ai"
|
|
11466
|
+
});
|
|
11467
|
+
|
|
11468
|
+
// src/internal/providers/builtin/cohere.ts
|
|
11469
|
+
var COHERE = openAiCompatibleProfile({
|
|
11470
|
+
name: "cohere",
|
|
11471
|
+
baseUrl: "https://api.cohere.ai/compatibility/v1",
|
|
11472
|
+
envVars: ["COHERE_API_KEY", "CO_API_KEY"],
|
|
11473
|
+
fallbackModels: ["command-a-03-2025"],
|
|
11474
|
+
hostname: "api.cohere.ai"
|
|
11475
|
+
});
|
|
11476
|
+
|
|
11477
|
+
// src/internal/providers/builtin/deepinfra.ts
|
|
11478
|
+
var DEEPINFRA = openAiCompatibleProfile({
|
|
11479
|
+
name: "deepinfra",
|
|
11480
|
+
baseUrl: "https://api.deepinfra.com/v1/openai",
|
|
11481
|
+
envVars: ["DEEPINFRA_API_KEY"],
|
|
11482
|
+
fallbackModels: ["Qwen/Qwen3-32B"],
|
|
11483
|
+
hostname: "api.deepinfra.com"
|
|
11484
|
+
});
|
|
11485
|
+
|
|
11442
11486
|
// src/internal/providers/builtin/gemini.ts
|
|
11443
11487
|
var GEMINI = {
|
|
11444
11488
|
name: "gemini",
|
|
@@ -11450,6 +11494,24 @@ var GEMINI = {
|
|
|
11450
11494
|
fallbackModels: ["google/gemini-2.0-flash-001"]
|
|
11451
11495
|
};
|
|
11452
11496
|
|
|
11497
|
+
// src/internal/providers/builtin/google.ts
|
|
11498
|
+
var GOOGLE = openAiCompatibleProfile({
|
|
11499
|
+
name: "google",
|
|
11500
|
+
baseUrl: "https://generativelanguage.googleapis.com/v1beta/openai",
|
|
11501
|
+
envVars: ["GOOGLE_API_KEY", "GEMINI_API_KEY", "GOOGLE_GENERATIVE_AI_API_KEY"],
|
|
11502
|
+
fallbackModels: ["gemini-2.5-pro", "gemini-2.5-flash"],
|
|
11503
|
+
hostname: "generativelanguage.googleapis.com"
|
|
11504
|
+
});
|
|
11505
|
+
|
|
11506
|
+
// src/internal/providers/builtin/groq.ts
|
|
11507
|
+
var GROQ = openAiCompatibleProfile({
|
|
11508
|
+
name: "groq",
|
|
11509
|
+
baseUrl: "https://api.groq.com/openai/v1",
|
|
11510
|
+
envVars: ["GROQ_API_KEY"],
|
|
11511
|
+
fallbackModels: ["llama-3.3-70b-versatile", "llama-3.1-8b-instant"],
|
|
11512
|
+
hostname: "api.groq.com"
|
|
11513
|
+
});
|
|
11514
|
+
|
|
11453
11515
|
// src/internal/providers/builtin/llamacpp.ts
|
|
11454
11516
|
var LLAMACPP = {
|
|
11455
11517
|
name: "llamacpp",
|
|
@@ -11476,6 +11538,15 @@ var LMSTUDIO = {
|
|
|
11476
11538
|
fallbackModels: ["loaded-model"]
|
|
11477
11539
|
};
|
|
11478
11540
|
|
|
11541
|
+
// src/internal/providers/builtin/mistral.ts
|
|
11542
|
+
var MISTRAL = openAiCompatibleProfile({
|
|
11543
|
+
name: "mistral",
|
|
11544
|
+
baseUrl: "https://api.mistral.ai/v1",
|
|
11545
|
+
envVars: ["MISTRAL_API_KEY"],
|
|
11546
|
+
fallbackModels: ["mistral-large-latest", "codestral-latest"],
|
|
11547
|
+
hostname: "api.mistral.ai"
|
|
11548
|
+
});
|
|
11549
|
+
|
|
11479
11550
|
// src/internal/providers/builtin/ollama.ts
|
|
11480
11551
|
var OLLAMA = {
|
|
11481
11552
|
name: "ollama",
|
|
@@ -11863,9 +11934,33 @@ var OPENROUTER = {
|
|
|
11863
11934
|
baseUrl: "https://openrouter.ai/api",
|
|
11864
11935
|
modelsUrl: "https://openrouter.ai/api/v1/models",
|
|
11865
11936
|
hostname: "openrouter.ai",
|
|
11866
|
-
|
|
11937
|
+
// M45 — models refreshed (claude-3-haiku retired upstream).
|
|
11938
|
+
fallbackModels: ["openai/gpt-4o-mini", "anthropic/claude-haiku-4-5"],
|
|
11939
|
+
// M45 — OpenRouter app-attribution headers (mechanism from OpenCode's openrouter plugin, MIT; VALUES are
|
|
11940
|
+
// theokit's own — copying another app's referer would misattribute traffic).
|
|
11941
|
+
extraHeaders: { "HTTP-Referer": "https://usetheo.dev", "X-Title": "theokit" }
|
|
11867
11942
|
};
|
|
11868
11943
|
|
|
11944
|
+
// src/internal/providers/builtin/perplexity.ts
|
|
11945
|
+
var PERPLEXITY = openAiCompatibleProfile({
|
|
11946
|
+
name: "perplexity",
|
|
11947
|
+
baseUrl: "https://api.perplexity.ai",
|
|
11948
|
+
chatCompletionsPath: "/chat/completions",
|
|
11949
|
+
envVars: ["PERPLEXITY_API_KEY"],
|
|
11950
|
+
fallbackModels: ["sonar-pro", "sonar"],
|
|
11951
|
+
hostname: "api.perplexity.ai"
|
|
11952
|
+
});
|
|
11953
|
+
|
|
11954
|
+
// src/internal/providers/builtin/together.ts
|
|
11955
|
+
var TOGETHER = openAiCompatibleProfile({
|
|
11956
|
+
name: "together",
|
|
11957
|
+
aliases: ["togetherai"],
|
|
11958
|
+
baseUrl: "https://api.together.xyz/v1",
|
|
11959
|
+
envVars: ["TOGETHER_API_KEY"],
|
|
11960
|
+
fallbackModels: ["Qwen/Qwen2.5-7B-Instruct-Turbo"],
|
|
11961
|
+
hostname: "api.together.xyz"
|
|
11962
|
+
});
|
|
11963
|
+
|
|
11869
11964
|
// src/internal/providers/builtin/vertex.ts
|
|
11870
11965
|
var VERTEX = {
|
|
11871
11966
|
name: "vertex",
|
|
@@ -11897,11 +11992,26 @@ function stripVertexPrefix(modelId) {
|
|
|
11897
11992
|
return modelId.replace(/^vertex\/(anthropic|google)\//, "");
|
|
11898
11993
|
}
|
|
11899
11994
|
|
|
11995
|
+
// src/internal/providers/builtin/xai.ts
|
|
11996
|
+
var XAI = openAiCompatibleProfile({
|
|
11997
|
+
name: "xai",
|
|
11998
|
+
aliases: ["grok"],
|
|
11999
|
+
baseUrl: "https://api.x.ai/v1",
|
|
12000
|
+
envVars: ["XAI_API_KEY"],
|
|
12001
|
+
fallbackModels: ["grok-4.5", "grok-4.3"],
|
|
12002
|
+
hostname: "api.x.ai"
|
|
12003
|
+
});
|
|
12004
|
+
|
|
11900
12005
|
// src/internal/providers/builtin/index.ts
|
|
11901
|
-
var
|
|
12006
|
+
var _registeredState = (() => {
|
|
12007
|
+
const g = globalThis;
|
|
12008
|
+
const sym = /* @__PURE__ */ Symbol.for("theokit-sdk.providers.builtins-registered");
|
|
12009
|
+
if (g[sym] === void 0) g[sym] = { done: false };
|
|
12010
|
+
return g[sym];
|
|
12011
|
+
})();
|
|
11902
12012
|
function registerBuiltins() {
|
|
11903
|
-
if (
|
|
11904
|
-
|
|
12013
|
+
if (_registeredState.done) return;
|
|
12014
|
+
_registeredState.done = true;
|
|
11905
12015
|
registerProvider(ANTHROPIC);
|
|
11906
12016
|
registerProvider(OPENAI);
|
|
11907
12017
|
registerProvider(OPENAI_CHATGPT);
|
|
@@ -11912,6 +12022,15 @@ function registerBuiltins() {
|
|
|
11912
12022
|
registerProvider(LLAMACPP);
|
|
11913
12023
|
registerProvider(BEDROCK);
|
|
11914
12024
|
registerProvider(VERTEX);
|
|
12025
|
+
registerProvider(GOOGLE);
|
|
12026
|
+
registerProvider(MISTRAL);
|
|
12027
|
+
registerProvider(GROQ);
|
|
12028
|
+
registerProvider(COHERE);
|
|
12029
|
+
registerProvider(DEEPINFRA);
|
|
12030
|
+
registerProvider(TOGETHER);
|
|
12031
|
+
registerProvider(XAI);
|
|
12032
|
+
registerProvider(PERPLEXITY);
|
|
12033
|
+
registerProvider(CEREBRAS);
|
|
11915
12034
|
registerCatalogProviders();
|
|
11916
12035
|
}
|
|
11917
12036
|
|
|
@@ -12179,14 +12298,16 @@ var AnthropicClient = class {
|
|
|
12179
12298
|
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: HTTP+SSE handshake + accumulator is intentionally one block
|
|
12180
12299
|
async *stream(request, signal) {
|
|
12181
12300
|
const body = buildAnthropicBody(request);
|
|
12301
|
+
const headers = {
|
|
12302
|
+
"content-type": "application/json",
|
|
12303
|
+
"x-api-key": this.options.apiKey,
|
|
12304
|
+
"anthropic-version": this.options.version ?? "2023-06-01"
|
|
12305
|
+
};
|
|
12306
|
+
if (this.options.extraHeaders !== void 0) Object.assign(headers, this.options.extraHeaders);
|
|
12182
12307
|
const response = await this.fetchImpl(`${this.baseUrl}/v1/messages`, {
|
|
12183
12308
|
method: "POST",
|
|
12184
12309
|
signal,
|
|
12185
|
-
headers
|
|
12186
|
-
"content-type": "application/json",
|
|
12187
|
-
"x-api-key": this.options.apiKey,
|
|
12188
|
-
"anthropic-version": this.options.version ?? "2023-06-01"
|
|
12189
|
-
},
|
|
12310
|
+
headers,
|
|
12190
12311
|
body: JSON.stringify(body)
|
|
12191
12312
|
});
|
|
12192
12313
|
if (!response.ok) {
|
|
@@ -13059,15 +13180,24 @@ var StreamSuppressionBuffer = class {
|
|
|
13059
13180
|
};
|
|
13060
13181
|
|
|
13061
13182
|
// src/internal/llm/openai.ts
|
|
13183
|
+
function deriveChatPath(baseUrl) {
|
|
13184
|
+
try {
|
|
13185
|
+
return /\/v\d+[a-z]*(\/|$)/.test(new URL(baseUrl).pathname) ? "/chat/completions" : "/v1/chat/completions";
|
|
13186
|
+
} catch {
|
|
13187
|
+
return "/v1/chat/completions";
|
|
13188
|
+
}
|
|
13189
|
+
}
|
|
13062
13190
|
var OpenAIClient = class {
|
|
13063
13191
|
constructor(options) {
|
|
13064
13192
|
this.options = options;
|
|
13065
|
-
this.baseUrl = options.baseUrl ?? "https://api.openai.com";
|
|
13193
|
+
this.baseUrl = (options.baseUrl ?? "https://api.openai.com").replace(/\/+$/, "");
|
|
13194
|
+
this.chatPath = options.chatCompletionsPath ?? deriveChatPath(this.baseUrl);
|
|
13066
13195
|
this.fetchImpl = options.fetch ?? fetch;
|
|
13067
13196
|
}
|
|
13068
13197
|
options;
|
|
13069
13198
|
name = "openai";
|
|
13070
13199
|
baseUrl;
|
|
13200
|
+
chatPath;
|
|
13071
13201
|
fetchImpl;
|
|
13072
13202
|
/**
|
|
13073
13203
|
* Whether this client recovers leaked Hermes tool-call dialect from assistant
|
|
@@ -13090,7 +13220,7 @@ var OpenAIClient = class {
|
|
|
13090
13220
|
const providerId = this.options.providerName ?? this.name;
|
|
13091
13221
|
let response;
|
|
13092
13222
|
try {
|
|
13093
|
-
response = await this.fetchImpl(`${this.baseUrl}
|
|
13223
|
+
response = await this.fetchImpl(`${this.baseUrl}${this.chatPath}`, {
|
|
13094
13224
|
method: "POST",
|
|
13095
13225
|
signal,
|
|
13096
13226
|
headers,
|
|
@@ -14187,6 +14317,9 @@ function selectTransport(profile, apiKey) {
|
|
|
14187
14317
|
if (profile.extractToolCallsFromContent === true) {
|
|
14188
14318
|
opts.extractToolCallsFromContent = true;
|
|
14189
14319
|
}
|
|
14320
|
+
if (profile.chatCompletionsPath !== void 0) {
|
|
14321
|
+
opts.chatCompletionsPath = profile.chatCompletionsPath;
|
|
14322
|
+
}
|
|
14190
14323
|
if (profile.name === "openai" && process.env.OPENAI_ORGANIZATION !== void 0) {
|
|
14191
14324
|
opts.organization = process.env.OPENAI_ORGANIZATION;
|
|
14192
14325
|
}
|
|
@@ -14206,6 +14339,11 @@ function selectTransport(profile, apiKey) {
|
|
|
14206
14339
|
}
|
|
14207
14340
|
const opts = { apiKey };
|
|
14208
14341
|
opts.baseUrl = process.env.ANTHROPIC_API_BASE_URL ?? profile.baseUrl;
|
|
14342
|
+
const t = applyTransform();
|
|
14343
|
+
assertOAuthResolved(t);
|
|
14344
|
+
if (t.fetch !== void 0) opts.fetch = t.fetch;
|
|
14345
|
+
const merged = profile.extraHeaders !== void 0 || t.headers !== void 0 ? { ...profile.extraHeaders, ...t.headers } : void 0;
|
|
14346
|
+
if (merged !== void 0) opts.extraHeaders = merged;
|
|
14209
14347
|
return new AnthropicClient(opts);
|
|
14210
14348
|
}
|
|
14211
14349
|
if (profile.apiMode === "bedrock_anthropic") {
|
|
@@ -14523,12 +14661,12 @@ function resolveMcpCwd(configCwd) {
|
|
|
14523
14661
|
|
|
14524
14662
|
// src/internal/providers/register-plugin-providers.ts
|
|
14525
14663
|
function registerPluginProviderProfiles(entries) {
|
|
14526
|
-
let
|
|
14664
|
+
let registered2 = 0;
|
|
14527
14665
|
for (const entry of entries) {
|
|
14528
14666
|
registerProvider(entry.profile);
|
|
14529
|
-
|
|
14667
|
+
registered2 += 1;
|
|
14530
14668
|
}
|
|
14531
|
-
return
|
|
14669
|
+
return registered2;
|
|
14532
14670
|
}
|
|
14533
14671
|
|
|
14534
14672
|
// src/internal/local-agent/real-local-run.ts
|
|
@@ -14853,12 +14991,12 @@ var pluginProvidersAnnounced = false;
|
|
|
14853
14991
|
function resolveRunProvider(options) {
|
|
14854
14992
|
registerBuiltins();
|
|
14855
14993
|
const profiles = options.pluginManager?.aggregated.providerProfiles ?? [];
|
|
14856
|
-
const
|
|
14857
|
-
if (
|
|
14994
|
+
const registered2 = registerPluginProviderProfiles(profiles);
|
|
14995
|
+
if (registered2 > 0 && !pluginProvidersAnnounced) {
|
|
14858
14996
|
pluginProvidersAnnounced = true;
|
|
14859
14997
|
const names = profiles.map((e) => e.profile.name).join(", ");
|
|
14860
14998
|
process.stderr.write(
|
|
14861
|
-
`[theokit-sdk] registered ${
|
|
14999
|
+
`[theokit-sdk] registered ${registered2} plugin provider profile(s): ${names}
|
|
14862
15000
|
`
|
|
14863
15001
|
);
|
|
14864
15002
|
}
|