@jacobbd/relay-ai 0.12.5 → 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-S7HYE2FI.js → chunk-BK34AFR4.js} +10 -4
- package/dist/{chunk-S7HYE2FI.js.map → chunk-BK34AFR4.js.map} +1 -1
- package/dist/{chunk-2LUDFIZX.js → chunk-HLPRPOIV.js} +75 -18
- package/dist/chunk-HLPRPOIV.js.map +1 -0
- package/dist/{chunk-SJEJAHKL.js → chunk-VUEGVJMH.js} +2 -2
- package/dist/cli.js +169 -32
- 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-WCK2QGLV.js → manual-models-BAWTDEYL.js} +3 -3
- package/dist/{ui-command-7AZ7SLTB.js → ui-command-QUT3R4HW.js} +4 -4
- package/package.json +1 -1
- package/dist/chunk-2LUDFIZX.js.map +0 -1
- /package/dist/{chunk-SJEJAHKL.js.map → chunk-VUEGVJMH.js.map} +0 -0
- /package/dist/{manual-models-WCK2QGLV.js.map → manual-models-BAWTDEYL.js.map} +0 -0
- /package/dist/{ui-command-7AZ7SLTB.js.map → ui-command-QUT3R4HW.js.map} +0 -0
|
@@ -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.
|
|
10
|
+
version: "0.12.8",
|
|
11
11
|
publishConfig: {
|
|
12
12
|
access: "public"
|
|
13
13
|
},
|
|
@@ -694,6 +694,13 @@ function decodeAuthEntry(value) {
|
|
|
694
694
|
if (typeof value === "string" && value.trim()) return value.trim();
|
|
695
695
|
if (!value || typeof value !== "object") return null;
|
|
696
696
|
const record = value;
|
|
697
|
+
if (record["type"] === "api" && typeof record["key"] === "string" && record["key"].trim()) {
|
|
698
|
+
return {
|
|
699
|
+
type: "api",
|
|
700
|
+
key: record["key"],
|
|
701
|
+
metadata: record["metadata"] && typeof record["metadata"] === "object" && !Array.isArray(record["metadata"]) ? record["metadata"] : void 0
|
|
702
|
+
};
|
|
703
|
+
}
|
|
697
704
|
if (record["type"] === "oauth" && typeof record["access"] === "string" && typeof record["refresh"] === "string" && typeof record["expires"] === "number") {
|
|
698
705
|
return {
|
|
699
706
|
type: "oauth",
|
|
@@ -747,6 +754,9 @@ function readOpencodeAuthFile(env = process.env) {
|
|
|
747
754
|
function isOpencodeOAuth(entry) {
|
|
748
755
|
return !!entry && typeof entry === "object" && entry.type === "oauth";
|
|
749
756
|
}
|
|
757
|
+
function isOpencodeApi(entry) {
|
|
758
|
+
return !!entry && typeof entry === "object" && entry.type === "api";
|
|
759
|
+
}
|
|
750
760
|
function oauthCredentialToKeychainJson(cred) {
|
|
751
761
|
return JSON.stringify(cred);
|
|
752
762
|
}
|
|
@@ -3585,12 +3595,14 @@ async function createLanguageModel(spec) {
|
|
|
3585
3595
|
var ANTHROPIC_EFFORT_LEVELS = ["low", "medium", "high"];
|
|
3586
3596
|
var OPENAI_EFFORT_LEVELS = ["low", "medium", "high"];
|
|
3587
3597
|
var GEMINI_EFFORT_LEVELS = ["low", "medium", "high"];
|
|
3588
|
-
var MISTRAL_EFFORT_LEVELS = ["high", "
|
|
3598
|
+
var MISTRAL_EFFORT_LEVELS = ["high", "none"];
|
|
3589
3599
|
var XAI_CHAT_EFFORT_LEVELS = ["low", "high"];
|
|
3590
3600
|
var XAI_RESPONSES_EFFORT_LEVELS = ["low", "medium", "high"];
|
|
3591
3601
|
var OPENROUTER_EFFORT_LEVELS = ["none", "minimal", "low", "medium", "high", "xhigh"];
|
|
3592
|
-
var DEEPSEEK_EFFORT_LEVELS = ["high", "max", "
|
|
3602
|
+
var DEEPSEEK_EFFORT_LEVELS = ["high", "max", "none"];
|
|
3603
|
+
var DEEPSEEK_NATIVE_EFFORT_LEVELS = ["low", "medium", "high", "xhigh", "none"];
|
|
3593
3604
|
var GLM_52_EFFORT_LEVELS = ["high", "xhigh"];
|
|
3605
|
+
var GLM_53_EFFORT_LEVELS = ["low", "medium", "high", "xhigh"];
|
|
3594
3606
|
var EMPTY_REASONING = {
|
|
3595
3607
|
levels: [],
|
|
3596
3608
|
defaultLevel: "",
|
|
@@ -3656,9 +3668,10 @@ function xaiDefaultReasoningEffort(modelId) {
|
|
|
3656
3668
|
if (lower === "grok-4.5" || lower.startsWith("grok-4.5-")) return "high";
|
|
3657
3669
|
return "low";
|
|
3658
3670
|
}
|
|
3671
|
+
var DEEPSEEK_V4_REASONING_ID = /^deepseek-v4(?:\.\d+)?-(?:flash|pro)(?:-|$)/;
|
|
3659
3672
|
function isDeepSeekReasoningModel(modelId) {
|
|
3660
3673
|
const lower = modelId.toLowerCase();
|
|
3661
|
-
return
|
|
3674
|
+
return DEEPSEEK_V4_REASONING_ID.test(lower) || lower === "deepseek-reasoner" || lower === "deepseek-chat";
|
|
3662
3675
|
}
|
|
3663
3676
|
function isKimiReasoningModel(modelId) {
|
|
3664
3677
|
const lower = modelId.toLowerCase();
|
|
@@ -3668,6 +3681,10 @@ function isGlm52ReasoningModel(modelId) {
|
|
|
3668
3681
|
const lower = modelId.toLowerCase();
|
|
3669
3682
|
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";
|
|
3670
3683
|
}
|
|
3684
|
+
var GLM_53_REASONING_ID = /^(?:[a-z0-9-]+\/)?glm-?5\.3(?:-|$)/;
|
|
3685
|
+
function isGlm53ReasoningModel(modelId) {
|
|
3686
|
+
return GLM_53_REASONING_ID.test(modelId.toLowerCase().trim());
|
|
3687
|
+
}
|
|
3671
3688
|
function toCamelCase(str) {
|
|
3672
3689
|
return str.replace(/[-_]([a-z])/g, (_, g) => g.toUpperCase());
|
|
3673
3690
|
}
|
|
@@ -3706,37 +3723,41 @@ function openRouterReasoningCapabilities(metadata) {
|
|
|
3706
3723
|
}
|
|
3707
3724
|
return EMPTY_REASONING;
|
|
3708
3725
|
}
|
|
3709
|
-
function
|
|
3726
|
+
function deepSeekAcceptsNativeEfforts(metadata) {
|
|
3727
|
+
const providerId = metadata?.providerId?.toLowerCase();
|
|
3728
|
+
if (providerId === "go" || providerId === "zen" || providerId === "opencode-go" || providerId === "opencode") {
|
|
3729
|
+
return true;
|
|
3730
|
+
}
|
|
3731
|
+
return metadata?.apiBaseUrl?.includes("opencode.ai") === true;
|
|
3732
|
+
}
|
|
3733
|
+
function mapCodexEffortToDeepSeek(effort, nativeEfforts) {
|
|
3710
3734
|
switch (effort) {
|
|
3711
3735
|
case "off":
|
|
3712
3736
|
case "none":
|
|
3713
3737
|
return "off";
|
|
3714
3738
|
case "low":
|
|
3739
|
+
return nativeEfforts ? "low" : "high";
|
|
3715
3740
|
case "medium":
|
|
3741
|
+
return nativeEfforts ? "medium" : "high";
|
|
3716
3742
|
case "high":
|
|
3717
3743
|
return "high";
|
|
3718
3744
|
case "xhigh":
|
|
3719
3745
|
case "max":
|
|
3720
3746
|
return "max";
|
|
3721
3747
|
default:
|
|
3722
|
-
if (effort === "high" || effort === "max") return effort;
|
|
3723
3748
|
return void 0;
|
|
3724
3749
|
}
|
|
3725
3750
|
}
|
|
3726
|
-
function deepSeekEffortProviderOptions(effort) {
|
|
3727
|
-
const mapped = mapCodexEffortToDeepSeek(effort);
|
|
3751
|
+
function deepSeekEffortProviderOptions(effort, metadata) {
|
|
3752
|
+
const mapped = mapCodexEffortToDeepSeek(effort, deepSeekAcceptsNativeEfforts(metadata));
|
|
3728
3753
|
if (!mapped) return void 0;
|
|
3754
|
+
const key = metadata?.providerId ? toCamelCase(metadata.providerId) : "openaiCompatible";
|
|
3729
3755
|
const thinking = { type: mapped === "off" ? "disabled" : "enabled" };
|
|
3730
|
-
const spread = { thinking };
|
|
3731
3756
|
if (mapped === "off") {
|
|
3732
|
-
return {
|
|
3733
|
-
deepseek: spread,
|
|
3734
|
-
openaiCompatible: spread
|
|
3735
|
-
};
|
|
3757
|
+
return { [key]: { thinking } };
|
|
3736
3758
|
}
|
|
3737
3759
|
return {
|
|
3738
|
-
|
|
3739
|
-
deepseek: spread
|
|
3760
|
+
[key]: { reasoningEffort: mapped, thinking }
|
|
3740
3761
|
};
|
|
3741
3762
|
}
|
|
3742
3763
|
function mapCodexEffortToAnthropic(effort) {
|
|
@@ -3817,6 +3838,21 @@ function mapCodexEffortToGlm52(effort) {
|
|
|
3817
3838
|
return void 0;
|
|
3818
3839
|
}
|
|
3819
3840
|
}
|
|
3841
|
+
function mapCodexEffortToGlm53(effort) {
|
|
3842
|
+
switch (effort) {
|
|
3843
|
+
case "low":
|
|
3844
|
+
return "low";
|
|
3845
|
+
case "medium":
|
|
3846
|
+
return "medium";
|
|
3847
|
+
case "high":
|
|
3848
|
+
return "high";
|
|
3849
|
+
case "xhigh":
|
|
3850
|
+
case "max":
|
|
3851
|
+
return "max";
|
|
3852
|
+
default:
|
|
3853
|
+
return void 0;
|
|
3854
|
+
}
|
|
3855
|
+
}
|
|
3820
3856
|
function mapCodexEffortToXai(effort, supportsMedium) {
|
|
3821
3857
|
switch (effort) {
|
|
3822
3858
|
case "low":
|
|
@@ -3960,8 +3996,9 @@ function resolveRawReasoningCapabilities(npm, modelId, metadata) {
|
|
|
3960
3996
|
return EMPTY_REASONING;
|
|
3961
3997
|
}
|
|
3962
3998
|
if (isDeepSeekReasoningModel(modelId)) {
|
|
3999
|
+
const levels = deepSeekAcceptsNativeEfforts(metadata) ? [...DEEPSEEK_NATIVE_EFFORT_LEVELS] : [...DEEPSEEK_EFFORT_LEVELS];
|
|
3963
4000
|
return {
|
|
3964
|
-
levels
|
|
4001
|
+
levels,
|
|
3965
4002
|
defaultLevel: "high",
|
|
3966
4003
|
supportsSummaries: true,
|
|
3967
4004
|
mode: "controllable",
|
|
@@ -3981,6 +4018,17 @@ function resolveRawReasoningCapabilities(npm, modelId, metadata) {
|
|
|
3981
4018
|
wireFormat: { kind: "openai-reasoning-effort" }
|
|
3982
4019
|
};
|
|
3983
4020
|
}
|
|
4021
|
+
if (isGlm53ReasoningModel(modelId)) {
|
|
4022
|
+
return {
|
|
4023
|
+
levels: [...GLM_53_EFFORT_LEVELS],
|
|
4024
|
+
defaultLevel: "high",
|
|
4025
|
+
supportsSummaries: false,
|
|
4026
|
+
mode: "controllable",
|
|
4027
|
+
source: "provider-rule",
|
|
4028
|
+
confidence: "documented",
|
|
4029
|
+
wireFormat: { kind: "openai-reasoning-effort" }
|
|
4030
|
+
};
|
|
4031
|
+
}
|
|
3984
4032
|
if (isGlm52ReasoningModel(modelId)) {
|
|
3985
4033
|
return {
|
|
3986
4034
|
levels: [...GLM_52_EFFORT_LEVELS],
|
|
@@ -4076,7 +4124,7 @@ function effortProviderOptions(npm, effort, modelId, metadata) {
|
|
|
4076
4124
|
if (npm === "@ai-sdk/openai-compatible" || npm === "@ai-sdk/openai") {
|
|
4077
4125
|
if (!modelId) return void 0;
|
|
4078
4126
|
if (isDeepSeekReasoningModel(modelId)) {
|
|
4079
|
-
return deepSeekEffortProviderOptions(effort);
|
|
4127
|
+
return deepSeekEffortProviderOptions(effort, metadata);
|
|
4080
4128
|
}
|
|
4081
4129
|
if (isKimiReasoningModel(modelId)) {
|
|
4082
4130
|
const reasoningEffort = mapCodexEffortToOpenAICompatible(effort);
|
|
@@ -4086,6 +4134,14 @@ function effortProviderOptions(npm, effort, modelId, metadata) {
|
|
|
4086
4134
|
}
|
|
4087
4135
|
return void 0;
|
|
4088
4136
|
}
|
|
4137
|
+
if (isGlm53ReasoningModel(modelId)) {
|
|
4138
|
+
const reasoningEffort = mapCodexEffortToGlm53(effort);
|
|
4139
|
+
if (reasoningEffort) {
|
|
4140
|
+
const key = metadata?.providerId ? toCamelCase(metadata.providerId) : "openaiCompatible";
|
|
4141
|
+
return { [key]: { reasoningEffort } };
|
|
4142
|
+
}
|
|
4143
|
+
return void 0;
|
|
4144
|
+
}
|
|
4089
4145
|
if (isGlm52ReasoningModel(modelId)) {
|
|
4090
4146
|
const reasoningEffort = mapCodexEffortToGlm52(effort);
|
|
4091
4147
|
if (reasoningEffort) {
|
|
@@ -5190,6 +5246,7 @@ export {
|
|
|
5190
5246
|
routeLookupIds,
|
|
5191
5247
|
readOpencodeAuthFile,
|
|
5192
5248
|
isOpencodeOAuth,
|
|
5249
|
+
isOpencodeApi,
|
|
5193
5250
|
oauthCredentialToKeychainJson,
|
|
5194
5251
|
tokensToStoredCredential,
|
|
5195
5252
|
supportsNativeOAuth,
|
|
@@ -5263,4 +5320,4 @@ export {
|
|
|
5263
5320
|
streamAnthropicResponse,
|
|
5264
5321
|
generateAnthropicResponse
|
|
5265
5322
|
};
|
|
5266
|
-
//# sourceMappingURL=chunk-
|
|
5323
|
+
//# sourceMappingURL=chunk-HLPRPOIV.js.map
|