@jacobbd/relay-ai 0.12.9 → 0.12.10

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.
@@ -87,7 +87,7 @@ import {
87
87
  translateRequest,
88
88
  upstreamHttpStatus,
89
89
  validateCustomEndpointUrl
90
- } from "./chunk-3KCKQRRR.js";
90
+ } from "./chunk-OIL75EGI.js";
91
91
 
92
92
  // src/registry/google-model-id.ts
93
93
  var GOOGLE_MODEL_PREFIX = "models/";
@@ -9806,4 +9806,4 @@ export {
9806
9806
  supportsClaudeTransparentMode,
9807
9807
  buildHttpProxyRoutes
9808
9808
  };
9809
- //# sourceMappingURL=chunk-KVH362S4.js.map
9809
+ //# sourceMappingURL=chunk-2KEDU24N.js.map
@@ -7,7 +7,7 @@ import { join } from "path";
7
7
  // package.json
8
8
  var package_default = {
9
9
  name: "@jacobbd/relay-ai",
10
- version: "0.12.9",
10
+ version: "0.12.10",
11
11
  publishConfig: {
12
12
  access: "public"
13
13
  },
@@ -3668,14 +3668,14 @@ function xaiDefaultReasoningEffort(modelId) {
3668
3668
  if (lower === "grok-4.5" || lower.startsWith("grok-4.5-")) return "high";
3669
3669
  return "low";
3670
3670
  }
3671
- var DEEPSEEK_V4_REASONING_ID = /^deepseek-v4(?:\.\d+)?-(?:flash|pro)(?:-|$)/;
3671
+ var DEEPSEEK_V4_REASONING_ID = /^(?:[a-z0-9-]+\/)?deepseek-v4(?:\.\d+)?-(?:flash|pro)(?:-|$)/;
3672
3672
  function isDeepSeekReasoningModel(modelId) {
3673
3673
  const lower = modelId.toLowerCase();
3674
3674
  return DEEPSEEK_V4_REASONING_ID.test(lower) || lower === "deepseek-reasoner" || lower === "deepseek-chat";
3675
3675
  }
3676
+ var KIMI_REASONING_ID = /^(?:[a-z0-9-]+\/)?kimi-/;
3676
3677
  function isKimiReasoningModel(modelId) {
3677
- const lower = modelId.toLowerCase();
3678
- return lower.startsWith("kimi-");
3678
+ return KIMI_REASONING_ID.test(modelId.toLowerCase().trim());
3679
3679
  }
3680
3680
  function isGlm52ReasoningModel(modelId) {
3681
3681
  const lower = modelId.toLowerCase();
@@ -3725,10 +3725,11 @@ function openRouterReasoningCapabilities(metadata) {
3725
3725
  }
3726
3726
  function deepSeekAcceptsNativeEfforts(metadata) {
3727
3727
  const providerId = metadata?.providerId?.toLowerCase();
3728
- if (providerId === "go" || providerId === "zen" || providerId === "opencode-go" || providerId === "opencode") {
3728
+ if (providerId === "go" || providerId === "zen" || providerId === "opencode-go" || providerId === "opencode" || providerId === "commandcode") {
3729
3729
  return true;
3730
3730
  }
3731
- return metadata?.apiBaseUrl?.includes("opencode.ai") === true;
3731
+ const baseUrl = metadata?.apiBaseUrl;
3732
+ return baseUrl?.includes("opencode.ai") === true || baseUrl?.includes("commandcode.ai") === true;
3732
3733
  }
3733
3734
  function mapCodexEffortToDeepSeek(effort, nativeEfforts) {
3734
3735
  switch (effort) {
@@ -4724,9 +4725,54 @@ function collapseSchemaUnionTypes(value) {
4724
4725
  }
4725
4726
  return out;
4726
4727
  }
4728
+ function isDigit(ch) {
4729
+ return ch !== void 0 && ch >= "0" && ch <= "9";
4730
+ }
4731
+ function rewriteNulEscapesInPattern(pattern) {
4732
+ let out = "";
4733
+ let escaped = false;
4734
+ let changed = false;
4735
+ for (let i = 0; i < pattern.length; i += 1) {
4736
+ const ch = pattern[i];
4737
+ if (escaped) {
4738
+ escaped = false;
4739
+ if (ch === "0" && !isDigit(pattern[i + 1])) {
4740
+ out += "x00";
4741
+ changed = true;
4742
+ } else {
4743
+ out += ch;
4744
+ }
4745
+ continue;
4746
+ }
4747
+ if (ch === "\\") escaped = true;
4748
+ out += ch;
4749
+ }
4750
+ return changed ? out : null;
4751
+ }
4752
+ function rewriteNulPatternEscapes(value) {
4753
+ if (Array.isArray(value)) {
4754
+ let changed2 = false;
4755
+ const out2 = value.map((entry) => {
4756
+ const next = rewriteNulPatternEscapes(entry);
4757
+ if (next !== entry) changed2 = true;
4758
+ return next;
4759
+ });
4760
+ return changed2 ? out2 : value;
4761
+ }
4762
+ if (!value || typeof value !== "object") return value;
4763
+ let changed = false;
4764
+ const out = {};
4765
+ for (const [key, child] of Object.entries(value)) {
4766
+ const next = key === "pattern" && typeof child === "string" ? rewriteNulEscapesInPattern(child) ?? child : rewriteNulPatternEscapes(child);
4767
+ if (next !== child) changed = true;
4768
+ out[key] = next;
4769
+ }
4770
+ return changed ? out : value;
4771
+ }
4727
4772
  function normalizeToolSchemaForNpm(schema, npm) {
4728
- if (!npm || !GOOGLE_NPM.has(npm)) return schema;
4729
- return collapseSchemaUnionTypes(schema);
4773
+ const portable = rewriteNulPatternEscapes(schema);
4774
+ if (!npm || !GOOGLE_NPM.has(npm)) return portable;
4775
+ return collapseSchemaUnionTypes(portable);
4730
4776
  }
4731
4777
 
4732
4778
  // src/sdk-adapter.ts
@@ -5321,4 +5367,4 @@ export {
5321
5367
  streamAnthropicResponse,
5322
5368
  generateAnthropicResponse
5323
5369
  };
5324
- //# sourceMappingURL=chunk-3KCKQRRR.js.map
5370
+ //# sourceMappingURL=chunk-OIL75EGI.js.map