@theokit/sdk 4.14.0 → 4.15.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/dist/index.cjs CHANGED
@@ -758,13 +758,13 @@ function setAgentFacade(facade) {
758
758
  globalThis[FACADE_KEY] = facade;
759
759
  }
760
760
  function getAgentFacade() {
761
- const registered3 = globalThis[FACADE_KEY];
762
- if (registered3 === void 0) {
761
+ const registered2 = globalThis[FACADE_KEY];
762
+ if (registered2 === void 0) {
763
763
  throw new Error(
764
764
  "internal: Agent facade not registered. The `agent.ts` module must be loaded before internal subsystems (LocalAgent.runUntil/fork, eval, scorers, cron) invoke it."
765
765
  );
766
766
  }
767
- return registered3;
767
+ return registered2;
768
768
  }
769
769
  var FACADE_KEY;
770
770
  var init_agent_factory_registry = __esm({
@@ -13247,6 +13247,9 @@ function getCatalogCapabilities(providerId) {
13247
13247
  _capabilitiesCache = {};
13248
13248
  for (const entry of Object.values(catalog)) {
13249
13249
  _capabilitiesCache[entry.id] = entry.capabilities;
13250
+ for (const alias of entry.aliases ?? []) {
13251
+ if (_capabilitiesCache[alias] === void 0) _capabilitiesCache[alias] = entry.capabilities;
13252
+ }
13250
13253
  }
13251
13254
  }
13252
13255
  return _capabilitiesCache[providerId];
@@ -14082,11 +14085,22 @@ var DEEPINFRA = openAiCompatibleProfile({
14082
14085
  hostname: "api.deepinfra.com"
14083
14086
  });
14084
14087
 
14088
+ // src/internal/providers/builtin/gemini.ts
14089
+ var GEMINI = {
14090
+ name: "gemini",
14091
+ apiMode: "chat_completions",
14092
+ envVars: ["OPENROUTER_API_KEY"],
14093
+ authType: "api_key",
14094
+ baseUrl: "https://openrouter.ai/api",
14095
+ hostname: "openrouter.ai",
14096
+ fallbackModels: ["google/gemini-2.0-flash-001"]
14097
+ };
14098
+
14085
14099
  // src/internal/providers/builtin/google.ts
14086
14100
  var GOOGLE = openAiCompatibleProfile({
14087
14101
  name: "google",
14088
14102
  baseUrl: "https://generativelanguage.googleapis.com/v1beta/openai",
14089
- envVars: ["GOOGLE_API_KEY", "GEMINI_API_KEY"],
14103
+ envVars: ["GOOGLE_API_KEY", "GEMINI_API_KEY", "GOOGLE_GENERATIVE_AI_API_KEY"],
14090
14104
  fallbackModels: ["gemini-2.5-pro", "gemini-2.5-flash"],
14091
14105
  hostname: "generativelanguage.googleapis.com"
14092
14106
  });
@@ -14100,56 +14114,6 @@ var GROQ = openAiCompatibleProfile({
14100
14114
  hostname: "api.groq.com"
14101
14115
  });
14102
14116
 
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
-
14142
- // src/internal/providers/builtin/gemini.ts
14143
- var GEMINI = {
14144
- name: "gemini",
14145
- apiMode: "chat_completions",
14146
- envVars: ["OPENROUTER_API_KEY"],
14147
- authType: "api_key",
14148
- baseUrl: "https://openrouter.ai/api",
14149
- hostname: "openrouter.ai",
14150
- fallbackModels: ["google/gemini-2.0-flash-001"]
14151
- };
14152
-
14153
14117
  // src/internal/providers/builtin/llamacpp.ts
14154
14118
  var LLAMACPP = {
14155
14119
  name: "llamacpp",
@@ -14176,6 +14140,15 @@ var LMSTUDIO = {
14176
14140
  fallbackModels: ["loaded-model"]
14177
14141
  };
14178
14142
 
14143
+ // src/internal/providers/builtin/mistral.ts
14144
+ var MISTRAL = openAiCompatibleProfile({
14145
+ name: "mistral",
14146
+ baseUrl: "https://api.mistral.ai/v1",
14147
+ envVars: ["MISTRAL_API_KEY"],
14148
+ fallbackModels: ["mistral-large-latest", "codestral-latest"],
14149
+ hostname: "api.mistral.ai"
14150
+ });
14151
+
14179
14152
  // src/internal/providers/builtin/ollama.ts
14180
14153
  var OLLAMA = {
14181
14154
  name: "ollama",
@@ -14570,6 +14543,26 @@ var OPENROUTER = {
14570
14543
  extraHeaders: { "HTTP-Referer": "https://usetheo.dev", "X-Title": "theokit" }
14571
14544
  };
14572
14545
 
14546
+ // src/internal/providers/builtin/perplexity.ts
14547
+ var PERPLEXITY = openAiCompatibleProfile({
14548
+ name: "perplexity",
14549
+ baseUrl: "https://api.perplexity.ai",
14550
+ chatCompletionsPath: "/chat/completions",
14551
+ envVars: ["PERPLEXITY_API_KEY"],
14552
+ fallbackModels: ["sonar-pro", "sonar"],
14553
+ hostname: "api.perplexity.ai"
14554
+ });
14555
+
14556
+ // src/internal/providers/builtin/together.ts
14557
+ var TOGETHER = openAiCompatibleProfile({
14558
+ name: "together",
14559
+ aliases: ["togetherai"],
14560
+ baseUrl: "https://api.together.xyz/v1",
14561
+ envVars: ["TOGETHER_API_KEY"],
14562
+ fallbackModels: ["Qwen/Qwen2.5-7B-Instruct-Turbo"],
14563
+ hostname: "api.together.xyz"
14564
+ });
14565
+
14573
14566
  // src/internal/providers/builtin/vertex.ts
14574
14567
  var VERTEX = {
14575
14568
  name: "vertex",
@@ -14601,11 +14594,26 @@ function stripVertexPrefix(modelId) {
14601
14594
  return modelId.replace(/^vertex\/(anthropic|google)\//, "");
14602
14595
  }
14603
14596
 
14597
+ // src/internal/providers/builtin/xai.ts
14598
+ var XAI = openAiCompatibleProfile({
14599
+ name: "xai",
14600
+ aliases: ["grok"],
14601
+ baseUrl: "https://api.x.ai/v1",
14602
+ envVars: ["XAI_API_KEY"],
14603
+ fallbackModels: ["grok-4.5", "grok-4.3"],
14604
+ hostname: "api.x.ai"
14605
+ });
14606
+
14604
14607
  // src/internal/providers/builtin/index.ts
14605
- var registered2 = false;
14608
+ var _registeredState = (() => {
14609
+ const g = globalThis;
14610
+ const sym = /* @__PURE__ */ Symbol.for("theokit-sdk.providers.builtins-registered");
14611
+ if (g[sym] === void 0) g[sym] = { done: false };
14612
+ return g[sym];
14613
+ })();
14606
14614
  function registerBuiltins() {
14607
- if (registered2) return;
14608
- registered2 = true;
14615
+ if (_registeredState.done) return;
14616
+ _registeredState.done = true;
14609
14617
  registerProvider(ANTHROPIC);
14610
14618
  registerProvider(OPENAI);
14611
14619
  registerProvider(OPENAI_CHATGPT);
@@ -15775,11 +15783,18 @@ var StreamSuppressionBuffer = class {
15775
15783
  };
15776
15784
 
15777
15785
  // src/internal/llm/openai.ts
15786
+ function deriveChatPath(baseUrl) {
15787
+ try {
15788
+ return /\/v\d+[a-z]*(\/|$)/.test(new URL(baseUrl).pathname) ? "/chat/completions" : "/v1/chat/completions";
15789
+ } catch {
15790
+ return "/v1/chat/completions";
15791
+ }
15792
+ }
15778
15793
  var OpenAIClient = class {
15779
15794
  constructor(options) {
15780
15795
  this.options = options;
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");
15796
+ this.baseUrl = (options.baseUrl ?? "https://api.openai.com").replace(/\/+$/, "");
15797
+ this.chatPath = options.chatCompletionsPath ?? deriveChatPath(this.baseUrl);
15783
15798
  this.fetchImpl = options.fetch ?? fetch;
15784
15799
  }
15785
15800
  options;
@@ -17250,12 +17265,12 @@ function resolveMcpCwd(configCwd) {
17250
17265
 
17251
17266
  // src/internal/providers/register-plugin-providers.ts
17252
17267
  function registerPluginProviderProfiles(entries) {
17253
- let registered3 = 0;
17268
+ let registered2 = 0;
17254
17269
  for (const entry of entries) {
17255
17270
  registerProvider(entry.profile);
17256
- registered3 += 1;
17271
+ registered2 += 1;
17257
17272
  }
17258
- return registered3;
17273
+ return registered2;
17259
17274
  }
17260
17275
 
17261
17276
  // src/internal/local-agent/real-local-run.ts
@@ -17580,12 +17595,12 @@ var pluginProvidersAnnounced = false;
17580
17595
  function resolveRunProvider(options) {
17581
17596
  registerBuiltins();
17582
17597
  const profiles = options.pluginManager?.aggregated.providerProfiles ?? [];
17583
- const registered3 = registerPluginProviderProfiles(profiles);
17584
- if (registered3 > 0 && !pluginProvidersAnnounced) {
17598
+ const registered2 = registerPluginProviderProfiles(profiles);
17599
+ if (registered2 > 0 && !pluginProvidersAnnounced) {
17585
17600
  pluginProvidersAnnounced = true;
17586
17601
  const names = profiles.map((e) => e.profile.name).join(", ");
17587
17602
  process.stderr.write(
17588
- `[theokit-sdk] registered ${registered3} plugin provider profile(s): ${names}
17603
+ `[theokit-sdk] registered ${registered2} plugin provider profile(s): ${names}
17589
17604
  `
17590
17605
  );
17591
17606
  }