@jacobbd/relay-ai 0.12.6 → 0.12.8
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/{chunk-5MEDBKPX.js → chunk-BK34AFR4.js} +2 -2
- package/dist/{chunk-VPDX24ZR.js → chunk-HLPRPOIV.js} +64 -18
- package/dist/chunk-HLPRPOIV.js.map +1 -0
- package/dist/{chunk-6ULON7FU.js → chunk-VUEGVJMH.js} +2 -2
- package/dist/cli.js +43 -11
- package/dist/cli.js.map +1 -1
- package/dist/core/index.js +63 -17
- package/dist/core/index.js.map +1 -1
- package/dist/{manual-models-EIKWUZEG.js → manual-models-BAWTDEYL.js} +3 -3
- package/dist/{ui-command-U3L4LI2K.js → ui-command-QUT3R4HW.js} +4 -4
- package/package.json +1 -1
- package/dist/chunk-VPDX24ZR.js.map +0 -1
- /package/dist/{chunk-5MEDBKPX.js.map → chunk-BK34AFR4.js.map} +0 -0
- /package/dist/{chunk-6ULON7FU.js.map → chunk-VUEGVJMH.js.map} +0 -0
- /package/dist/{manual-models-EIKWUZEG.js.map → manual-models-BAWTDEYL.js.map} +0 -0
- /package/dist/{ui-command-U3L4LI2K.js.map → ui-command-QUT3R4HW.js.map} +0 -0
package/dist/core/index.js
CHANGED
|
@@ -50,7 +50,7 @@ import { join as join2 } from "path";
|
|
|
50
50
|
// package.json
|
|
51
51
|
var package_default = {
|
|
52
52
|
name: "@jacobbd/relay-ai",
|
|
53
|
-
version: "0.12.
|
|
53
|
+
version: "0.12.8",
|
|
54
54
|
publishConfig: {
|
|
55
55
|
access: "public"
|
|
56
56
|
},
|
|
@@ -1513,12 +1513,14 @@ async function createLanguageModel(spec) {
|
|
|
1513
1513
|
var ANTHROPIC_EFFORT_LEVELS = ["low", "medium", "high"];
|
|
1514
1514
|
var OPENAI_EFFORT_LEVELS = ["low", "medium", "high"];
|
|
1515
1515
|
var GEMINI_EFFORT_LEVELS = ["low", "medium", "high"];
|
|
1516
|
-
var MISTRAL_EFFORT_LEVELS = ["high", "
|
|
1516
|
+
var MISTRAL_EFFORT_LEVELS = ["high", "none"];
|
|
1517
1517
|
var XAI_CHAT_EFFORT_LEVELS = ["low", "high"];
|
|
1518
1518
|
var XAI_RESPONSES_EFFORT_LEVELS = ["low", "medium", "high"];
|
|
1519
1519
|
var OPENROUTER_EFFORT_LEVELS = ["none", "minimal", "low", "medium", "high", "xhigh"];
|
|
1520
|
-
var DEEPSEEK_EFFORT_LEVELS = ["high", "max", "
|
|
1520
|
+
var DEEPSEEK_EFFORT_LEVELS = ["high", "max", "none"];
|
|
1521
|
+
var DEEPSEEK_NATIVE_EFFORT_LEVELS = ["low", "medium", "high", "xhigh", "none"];
|
|
1521
1522
|
var GLM_52_EFFORT_LEVELS = ["high", "xhigh"];
|
|
1523
|
+
var GLM_53_EFFORT_LEVELS = ["low", "medium", "high", "xhigh"];
|
|
1522
1524
|
var EMPTY_REASONING = {
|
|
1523
1525
|
levels: [],
|
|
1524
1526
|
defaultLevel: "",
|
|
@@ -1574,9 +1576,10 @@ function xaiDefaultReasoningEffort(modelId) {
|
|
|
1574
1576
|
if (lower === "grok-4.5" || lower.startsWith("grok-4.5-")) return "high";
|
|
1575
1577
|
return "low";
|
|
1576
1578
|
}
|
|
1579
|
+
var DEEPSEEK_V4_REASONING_ID = /^deepseek-v4(?:\.\d+)?-(?:flash|pro)(?:-|$)/;
|
|
1577
1580
|
function isDeepSeekReasoningModel(modelId) {
|
|
1578
1581
|
const lower = modelId.toLowerCase();
|
|
1579
|
-
return
|
|
1582
|
+
return DEEPSEEK_V4_REASONING_ID.test(lower) || lower === "deepseek-reasoner" || lower === "deepseek-chat";
|
|
1580
1583
|
}
|
|
1581
1584
|
function isKimiReasoningModel(modelId) {
|
|
1582
1585
|
const lower = modelId.toLowerCase();
|
|
@@ -1586,6 +1589,10 @@ function isGlm52ReasoningModel(modelId) {
|
|
|
1586
1589
|
const lower = modelId.toLowerCase();
|
|
1587
1590
|
return lower === "glm-5.2" || lower === "z-ai/glm-5.2" || lower === "zai/glm-5.2" || lower === "zai-org/glm-5.2" || lower === "zai-org/glm5.2" || lower === "glm5.2";
|
|
1588
1591
|
}
|
|
1592
|
+
var GLM_53_REASONING_ID = /^(?:[a-z0-9-]+\/)?glm-?5\.3(?:-|$)/;
|
|
1593
|
+
function isGlm53ReasoningModel(modelId) {
|
|
1594
|
+
return GLM_53_REASONING_ID.test(modelId.toLowerCase().trim());
|
|
1595
|
+
}
|
|
1589
1596
|
function toCamelCase(str) {
|
|
1590
1597
|
return str.replace(/[-_]([a-z])/g, (_, g) => g.toUpperCase());
|
|
1591
1598
|
}
|
|
@@ -1624,37 +1631,41 @@ function openRouterReasoningCapabilities(metadata) {
|
|
|
1624
1631
|
}
|
|
1625
1632
|
return EMPTY_REASONING;
|
|
1626
1633
|
}
|
|
1627
|
-
function
|
|
1634
|
+
function deepSeekAcceptsNativeEfforts(metadata) {
|
|
1635
|
+
const providerId = metadata?.providerId?.toLowerCase();
|
|
1636
|
+
if (providerId === "go" || providerId === "zen" || providerId === "opencode-go" || providerId === "opencode") {
|
|
1637
|
+
return true;
|
|
1638
|
+
}
|
|
1639
|
+
return metadata?.apiBaseUrl?.includes("opencode.ai") === true;
|
|
1640
|
+
}
|
|
1641
|
+
function mapCodexEffortToDeepSeek(effort, nativeEfforts) {
|
|
1628
1642
|
switch (effort) {
|
|
1629
1643
|
case "off":
|
|
1630
1644
|
case "none":
|
|
1631
1645
|
return "off";
|
|
1632
1646
|
case "low":
|
|
1647
|
+
return nativeEfforts ? "low" : "high";
|
|
1633
1648
|
case "medium":
|
|
1649
|
+
return nativeEfforts ? "medium" : "high";
|
|
1634
1650
|
case "high":
|
|
1635
1651
|
return "high";
|
|
1636
1652
|
case "xhigh":
|
|
1637
1653
|
case "max":
|
|
1638
1654
|
return "max";
|
|
1639
1655
|
default:
|
|
1640
|
-
if (effort === "high" || effort === "max") return effort;
|
|
1641
1656
|
return void 0;
|
|
1642
1657
|
}
|
|
1643
1658
|
}
|
|
1644
|
-
function deepSeekEffortProviderOptions(effort) {
|
|
1645
|
-
const mapped = mapCodexEffortToDeepSeek(effort);
|
|
1659
|
+
function deepSeekEffortProviderOptions(effort, metadata) {
|
|
1660
|
+
const mapped = mapCodexEffortToDeepSeek(effort, deepSeekAcceptsNativeEfforts(metadata));
|
|
1646
1661
|
if (!mapped) return void 0;
|
|
1662
|
+
const key = metadata?.providerId ? toCamelCase(metadata.providerId) : "openaiCompatible";
|
|
1647
1663
|
const thinking = { type: mapped === "off" ? "disabled" : "enabled" };
|
|
1648
|
-
const spread = { thinking };
|
|
1649
1664
|
if (mapped === "off") {
|
|
1650
|
-
return {
|
|
1651
|
-
deepseek: spread,
|
|
1652
|
-
openaiCompatible: spread
|
|
1653
|
-
};
|
|
1665
|
+
return { [key]: { thinking } };
|
|
1654
1666
|
}
|
|
1655
1667
|
return {
|
|
1656
|
-
|
|
1657
|
-
deepseek: spread
|
|
1668
|
+
[key]: { reasoningEffort: mapped, thinking }
|
|
1658
1669
|
};
|
|
1659
1670
|
}
|
|
1660
1671
|
function mapCodexEffortToAnthropic(effort) {
|
|
@@ -1735,6 +1746,21 @@ function mapCodexEffortToGlm52(effort) {
|
|
|
1735
1746
|
return void 0;
|
|
1736
1747
|
}
|
|
1737
1748
|
}
|
|
1749
|
+
function mapCodexEffortToGlm53(effort) {
|
|
1750
|
+
switch (effort) {
|
|
1751
|
+
case "low":
|
|
1752
|
+
return "low";
|
|
1753
|
+
case "medium":
|
|
1754
|
+
return "medium";
|
|
1755
|
+
case "high":
|
|
1756
|
+
return "high";
|
|
1757
|
+
case "xhigh":
|
|
1758
|
+
case "max":
|
|
1759
|
+
return "max";
|
|
1760
|
+
default:
|
|
1761
|
+
return void 0;
|
|
1762
|
+
}
|
|
1763
|
+
}
|
|
1738
1764
|
function mapCodexEffortToXai(effort, supportsMedium) {
|
|
1739
1765
|
switch (effort) {
|
|
1740
1766
|
case "low":
|
|
@@ -1878,8 +1904,9 @@ function resolveRawReasoningCapabilities(npm, modelId, metadata) {
|
|
|
1878
1904
|
return EMPTY_REASONING;
|
|
1879
1905
|
}
|
|
1880
1906
|
if (isDeepSeekReasoningModel(modelId)) {
|
|
1907
|
+
const levels = deepSeekAcceptsNativeEfforts(metadata) ? [...DEEPSEEK_NATIVE_EFFORT_LEVELS] : [...DEEPSEEK_EFFORT_LEVELS];
|
|
1881
1908
|
return {
|
|
1882
|
-
levels
|
|
1909
|
+
levels,
|
|
1883
1910
|
defaultLevel: "high",
|
|
1884
1911
|
supportsSummaries: true,
|
|
1885
1912
|
mode: "controllable",
|
|
@@ -1899,6 +1926,17 @@ function resolveRawReasoningCapabilities(npm, modelId, metadata) {
|
|
|
1899
1926
|
wireFormat: { kind: "openai-reasoning-effort" }
|
|
1900
1927
|
};
|
|
1901
1928
|
}
|
|
1929
|
+
if (isGlm53ReasoningModel(modelId)) {
|
|
1930
|
+
return {
|
|
1931
|
+
levels: [...GLM_53_EFFORT_LEVELS],
|
|
1932
|
+
defaultLevel: "high",
|
|
1933
|
+
supportsSummaries: false,
|
|
1934
|
+
mode: "controllable",
|
|
1935
|
+
source: "provider-rule",
|
|
1936
|
+
confidence: "documented",
|
|
1937
|
+
wireFormat: { kind: "openai-reasoning-effort" }
|
|
1938
|
+
};
|
|
1939
|
+
}
|
|
1902
1940
|
if (isGlm52ReasoningModel(modelId)) {
|
|
1903
1941
|
return {
|
|
1904
1942
|
levels: [...GLM_52_EFFORT_LEVELS],
|
|
@@ -1988,7 +2026,7 @@ function effortProviderOptions(npm, effort, modelId, metadata) {
|
|
|
1988
2026
|
if (npm === "@ai-sdk/openai-compatible" || npm === "@ai-sdk/openai") {
|
|
1989
2027
|
if (!modelId) return void 0;
|
|
1990
2028
|
if (isDeepSeekReasoningModel(modelId)) {
|
|
1991
|
-
return deepSeekEffortProviderOptions(effort);
|
|
2029
|
+
return deepSeekEffortProviderOptions(effort, metadata);
|
|
1992
2030
|
}
|
|
1993
2031
|
if (isKimiReasoningModel(modelId)) {
|
|
1994
2032
|
const reasoningEffort = mapCodexEffortToOpenAICompatible(effort);
|
|
@@ -1998,6 +2036,14 @@ function effortProviderOptions(npm, effort, modelId, metadata) {
|
|
|
1998
2036
|
}
|
|
1999
2037
|
return void 0;
|
|
2000
2038
|
}
|
|
2039
|
+
if (isGlm53ReasoningModel(modelId)) {
|
|
2040
|
+
const reasoningEffort = mapCodexEffortToGlm53(effort);
|
|
2041
|
+
if (reasoningEffort) {
|
|
2042
|
+
const key = metadata?.providerId ? toCamelCase(metadata.providerId) : "openaiCompatible";
|
|
2043
|
+
return { [key]: { reasoningEffort } };
|
|
2044
|
+
}
|
|
2045
|
+
return void 0;
|
|
2046
|
+
}
|
|
2001
2047
|
if (isGlm52ReasoningModel(modelId)) {
|
|
2002
2048
|
const reasoningEffort = mapCodexEffortToGlm52(effort);
|
|
2003
2049
|
if (reasoningEffort) {
|