@theokit/sdk 4.14.0 → 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 +6 -0
- package/dist/cron.cjs +77 -65
- package/dist/cron.cjs.map +1 -1
- package/dist/cron.js +77 -65
- package/dist/cron.js.map +1 -1
- package/dist/eval.cjs +77 -65
- package/dist/eval.cjs.map +1 -1
- package/dist/eval.js +77 -65
- package/dist/eval.js.map +1 -1
- package/dist/index.cjs +80 -65
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +80 -65
- package/dist/index.js.map +1 -1
- package/dist/internal/llm/openai.d.ts +28 -0
- package/dist/internal/providers/builtin/cohere.d.ts +3 -1
- package/dist/models.cjs +59 -54
- package/dist/models.cjs.map +1 -1
- package/dist/models.js +59 -54
- package/dist/models.js.map +1 -1
- package/dist/provider-catalog.json +143 -467
- package/package.json +1 -1
|
@@ -1,4 +1,32 @@
|
|
|
1
1
|
import type { LlmClient, LlmEvent, LlmFinish, LlmRequest } from "./types.js";
|
|
2
|
+
export interface OpenAIClientOptions {
|
|
3
|
+
apiKey: string;
|
|
4
|
+
baseUrl?: string;
|
|
5
|
+
organization?: string;
|
|
6
|
+
fetch?: typeof fetch;
|
|
7
|
+
/**
|
|
8
|
+
* Provider name for error mapping dispatch (T1.1, ADR D185). When set
|
|
9
|
+
* to `"ollama"`, transport and HTTP errors go through `mapOllamaTransportError`
|
|
10
|
+
* / `mapOllamaHttpError` for actionable messages before falling back to
|
|
11
|
+
* the generic OpenAI-compatible mapper. Default `"openai"`.
|
|
12
|
+
*/
|
|
13
|
+
providerName?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Opt-in leaked-dialect safe-parse (theokit#58 follow-up). When `true`, a finish that carries
|
|
16
|
+
* ZERO native `tool_calls` has its assistant text scanned for the Hermes `<function=…></tool_call>`
|
|
17
|
+
* dialect; any recovered calls are surfaced as real `tool_calls` so the loop executes them.
|
|
18
|
+
* Default `false` — a code assistant can legitimately print a literal `<function=` in code text.
|
|
19
|
+
*/
|
|
20
|
+
extractToolCallsFromContent?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* M41 — extra HTTP headers merged into the request (the profile's static `extraHeaders` + a provider
|
|
23
|
+
* `transform.headers(ctx)`). Spread AFTER the base `authorization`/`content-type`, so a provider that owns
|
|
24
|
+
* its auth CAN override them by design (document this on `ProviderTransform.headers`).
|
|
25
|
+
*/
|
|
26
|
+
extraHeaders?: Record<string, string>;
|
|
27
|
+
/** M45 — explicit chat-completions path (from `ProviderProfile.chatCompletionsPath`). */
|
|
28
|
+
chatCompletionsPath?: string;
|
|
29
|
+
}
|
|
2
30
|
interface OpenAIDeltaChunk {
|
|
3
31
|
choices?: Array<{
|
|
4
32
|
index: number;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* M45 — Cohere via its OpenAI-compatibility surface (`api.cohere.ai/compatibility/v1` — the native v2 API
|
|
3
3
|
* is NOT chat_completions; the discovery flagged the old catalog baseUrl as doubly wrong). Models per
|
|
4
|
-
* models.dev `cohere` (2026-07 snapshot).
|
|
4
|
+
* models.dev `cohere` (2026-07 snapshot). SOURCE NOTE (review L2): the compatibility endpoint + `CO_API_KEY`
|
|
5
|
+
* come from Cohere's own docs/python-SDK convention (not vendored in this repo's references) — verify with a
|
|
6
|
+
* live smoke when a key is available.
|
|
5
7
|
*/
|
|
6
8
|
export declare const COHERE: import("../types.js").ProviderProfile;
|
package/dist/models.cjs
CHANGED
|
@@ -445,11 +445,22 @@ var DEEPINFRA = openAiCompatibleProfile({
|
|
|
445
445
|
hostname: "api.deepinfra.com"
|
|
446
446
|
});
|
|
447
447
|
|
|
448
|
+
// src/internal/providers/builtin/gemini.ts
|
|
449
|
+
var GEMINI = {
|
|
450
|
+
name: "gemini",
|
|
451
|
+
apiMode: "chat_completions",
|
|
452
|
+
envVars: ["OPENROUTER_API_KEY"],
|
|
453
|
+
authType: "api_key",
|
|
454
|
+
baseUrl: "https://openrouter.ai/api",
|
|
455
|
+
hostname: "openrouter.ai",
|
|
456
|
+
fallbackModels: ["google/gemini-2.0-flash-001"]
|
|
457
|
+
};
|
|
458
|
+
|
|
448
459
|
// src/internal/providers/builtin/google.ts
|
|
449
460
|
var GOOGLE = openAiCompatibleProfile({
|
|
450
461
|
name: "google",
|
|
451
462
|
baseUrl: "https://generativelanguage.googleapis.com/v1beta/openai",
|
|
452
|
-
envVars: ["GOOGLE_API_KEY", "GEMINI_API_KEY"],
|
|
463
|
+
envVars: ["GOOGLE_API_KEY", "GEMINI_API_KEY", "GOOGLE_GENERATIVE_AI_API_KEY"],
|
|
453
464
|
fallbackModels: ["gemini-2.5-pro", "gemini-2.5-flash"],
|
|
454
465
|
hostname: "generativelanguage.googleapis.com"
|
|
455
466
|
});
|
|
@@ -463,56 +474,6 @@ var GROQ = openAiCompatibleProfile({
|
|
|
463
474
|
hostname: "api.groq.com"
|
|
464
475
|
});
|
|
465
476
|
|
|
466
|
-
// src/internal/providers/builtin/mistral.ts
|
|
467
|
-
var MISTRAL = openAiCompatibleProfile({
|
|
468
|
-
name: "mistral",
|
|
469
|
-
baseUrl: "https://api.mistral.ai/v1",
|
|
470
|
-
envVars: ["MISTRAL_API_KEY"],
|
|
471
|
-
fallbackModels: ["mistral-large-latest", "codestral-latest"],
|
|
472
|
-
hostname: "api.mistral.ai"
|
|
473
|
-
});
|
|
474
|
-
|
|
475
|
-
// src/internal/providers/builtin/perplexity.ts
|
|
476
|
-
var PERPLEXITY = openAiCompatibleProfile({
|
|
477
|
-
name: "perplexity",
|
|
478
|
-
baseUrl: "https://api.perplexity.ai",
|
|
479
|
-
chatCompletionsPath: "/chat/completions",
|
|
480
|
-
envVars: ["PERPLEXITY_API_KEY"],
|
|
481
|
-
fallbackModels: ["sonar-pro", "sonar"],
|
|
482
|
-
hostname: "api.perplexity.ai"
|
|
483
|
-
});
|
|
484
|
-
|
|
485
|
-
// src/internal/providers/builtin/together.ts
|
|
486
|
-
var TOGETHER = openAiCompatibleProfile({
|
|
487
|
-
name: "together",
|
|
488
|
-
aliases: ["togetherai"],
|
|
489
|
-
baseUrl: "https://api.together.xyz/v1",
|
|
490
|
-
envVars: ["TOGETHER_API_KEY"],
|
|
491
|
-
fallbackModels: ["Qwen/Qwen2.5-7B-Instruct-Turbo"],
|
|
492
|
-
hostname: "api.together.xyz"
|
|
493
|
-
});
|
|
494
|
-
|
|
495
|
-
// src/internal/providers/builtin/xai.ts
|
|
496
|
-
var XAI = openAiCompatibleProfile({
|
|
497
|
-
name: "xai",
|
|
498
|
-
aliases: ["grok"],
|
|
499
|
-
baseUrl: "https://api.x.ai/v1",
|
|
500
|
-
envVars: ["XAI_API_KEY"],
|
|
501
|
-
fallbackModels: ["grok-4.5", "grok-4.3"],
|
|
502
|
-
hostname: "api.x.ai"
|
|
503
|
-
});
|
|
504
|
-
|
|
505
|
-
// src/internal/providers/builtin/gemini.ts
|
|
506
|
-
var GEMINI = {
|
|
507
|
-
name: "gemini",
|
|
508
|
-
apiMode: "chat_completions",
|
|
509
|
-
envVars: ["OPENROUTER_API_KEY"],
|
|
510
|
-
authType: "api_key",
|
|
511
|
-
baseUrl: "https://openrouter.ai/api",
|
|
512
|
-
hostname: "openrouter.ai",
|
|
513
|
-
fallbackModels: ["google/gemini-2.0-flash-001"]
|
|
514
|
-
};
|
|
515
|
-
|
|
516
477
|
// src/internal/providers/builtin/llamacpp.ts
|
|
517
478
|
var LLAMACPP = {
|
|
518
479
|
name: "llamacpp",
|
|
@@ -539,6 +500,15 @@ var LMSTUDIO = {
|
|
|
539
500
|
fallbackModels: ["loaded-model"]
|
|
540
501
|
};
|
|
541
502
|
|
|
503
|
+
// src/internal/providers/builtin/mistral.ts
|
|
504
|
+
var MISTRAL = openAiCompatibleProfile({
|
|
505
|
+
name: "mistral",
|
|
506
|
+
baseUrl: "https://api.mistral.ai/v1",
|
|
507
|
+
envVars: ["MISTRAL_API_KEY"],
|
|
508
|
+
fallbackModels: ["mistral-large-latest", "codestral-latest"],
|
|
509
|
+
hostname: "api.mistral.ai"
|
|
510
|
+
});
|
|
511
|
+
|
|
542
512
|
// src/internal/providers/builtin/ollama.ts
|
|
543
513
|
var OLLAMA = {
|
|
544
514
|
name: "ollama",
|
|
@@ -933,6 +903,26 @@ var OPENROUTER = {
|
|
|
933
903
|
extraHeaders: { "HTTP-Referer": "https://usetheo.dev", "X-Title": "theokit" }
|
|
934
904
|
};
|
|
935
905
|
|
|
906
|
+
// src/internal/providers/builtin/perplexity.ts
|
|
907
|
+
var PERPLEXITY = openAiCompatibleProfile({
|
|
908
|
+
name: "perplexity",
|
|
909
|
+
baseUrl: "https://api.perplexity.ai",
|
|
910
|
+
chatCompletionsPath: "/chat/completions",
|
|
911
|
+
envVars: ["PERPLEXITY_API_KEY"],
|
|
912
|
+
fallbackModels: ["sonar-pro", "sonar"],
|
|
913
|
+
hostname: "api.perplexity.ai"
|
|
914
|
+
});
|
|
915
|
+
|
|
916
|
+
// src/internal/providers/builtin/together.ts
|
|
917
|
+
var TOGETHER = openAiCompatibleProfile({
|
|
918
|
+
name: "together",
|
|
919
|
+
aliases: ["togetherai"],
|
|
920
|
+
baseUrl: "https://api.together.xyz/v1",
|
|
921
|
+
envVars: ["TOGETHER_API_KEY"],
|
|
922
|
+
fallbackModels: ["Qwen/Qwen2.5-7B-Instruct-Turbo"],
|
|
923
|
+
hostname: "api.together.xyz"
|
|
924
|
+
});
|
|
925
|
+
|
|
936
926
|
// src/internal/providers/builtin/vertex.ts
|
|
937
927
|
var VERTEX = {
|
|
938
928
|
name: "vertex",
|
|
@@ -949,11 +939,26 @@ var VERTEX = {
|
|
|
949
939
|
]
|
|
950
940
|
};
|
|
951
941
|
|
|
942
|
+
// src/internal/providers/builtin/xai.ts
|
|
943
|
+
var XAI = openAiCompatibleProfile({
|
|
944
|
+
name: "xai",
|
|
945
|
+
aliases: ["grok"],
|
|
946
|
+
baseUrl: "https://api.x.ai/v1",
|
|
947
|
+
envVars: ["XAI_API_KEY"],
|
|
948
|
+
fallbackModels: ["grok-4.5", "grok-4.3"],
|
|
949
|
+
hostname: "api.x.ai"
|
|
950
|
+
});
|
|
951
|
+
|
|
952
952
|
// src/internal/providers/builtin/index.ts
|
|
953
|
-
var
|
|
953
|
+
var _registeredState = (() => {
|
|
954
|
+
const g = globalThis;
|
|
955
|
+
const sym = /* @__PURE__ */ Symbol.for("theokit-sdk.providers.builtins-registered");
|
|
956
|
+
if (g[sym] === void 0) g[sym] = { done: false };
|
|
957
|
+
return g[sym];
|
|
958
|
+
})();
|
|
954
959
|
function registerBuiltins() {
|
|
955
|
-
if (
|
|
956
|
-
|
|
960
|
+
if (_registeredState.done) return;
|
|
961
|
+
_registeredState.done = true;
|
|
957
962
|
registerProvider(ANTHROPIC);
|
|
958
963
|
registerProvider(OPENAI);
|
|
959
964
|
registerProvider(OPENAI_CHATGPT);
|