nolo-cli 0.88.0-alpha.2 → 0.89.0-alpha.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.
Files changed (113) hide show
  1. package/{_executeModel-S7KQX4XS.js → _executeModel-I3XRMAJ2.js} +30 -30
  2. package/{action-JZ62BXLX.js → action-7GHFPDSQ.js} +4 -4
  3. package/{addContentAction-2ETXWERA.js → addContentAction-ZNVB2NOV.js} +2 -2
  4. package/{addDialogAgentAction-COSPGJ4K.js → addDialogAgentAction-CIDFWATM.js} +1 -1
  5. package/{agentDeleteCommand-J6Y2C5X2.js → agentDeleteCommand-DCTG26JW.js} +18 -18
  6. package/{agentEmailCommands-TGZ5DJAB.js → agentEmailCommands-MRRHBLDQ.js} +40 -40
  7. package/{agentListCommands-UIDWO3EG.js → agentListCommands-CUE46CSP.js} +20 -20
  8. package/{agentMachineCommands-FPSZ6FJ4.js → agentMachineCommands-FYDEKBIO.js} +18 -18
  9. package/{agentProviderCommands-65ZC2WB4.js → agentProviderCommands-X3FA6BUM.js} +87 -0
  10. package/{agentPullCommand-N7L2CT7L.js → agentPullCommand-U73W5IBM.js} +1 -1
  11. package/{agentRecordCommands-6SCONH5I.js → agentRecordCommands-P2MSNP7R.js} +39 -39
  12. package/{agentRunCommand-2IXI6Z2U.js → agentRunCommand-QJGP7JEN.js} +39 -39
  13. package/{agentRuntimeLocal-UYU2POZ7.js → agentRuntimeLocal-T43UNWAY.js} +15 -15
  14. package/{agentSlice-J5XXG3H7.js → agentSlice-7GDS5Q2S.js} +2 -2
  15. package/{appDeleteCommands-BVSKDJNM.js → appDeleteCommands-YBKY3VEI.js} +18 -18
  16. package/{appDeployCommands-UTPULKP3.js → appDeployCommands-EBC76HO4.js} +18 -18
  17. package/{appDeployStatusCommands-DKDE2ECO.js → appDeployStatusCommands-WXRC5KEK.js} +18 -18
  18. package/{appGetCommands-KT7A7JJQ.js → appGetCommands-VZZQEDOV.js} +18 -18
  19. package/{appListCommands-MTHRLBXS.js → appListCommands-HYSPVQ77.js} +18 -18
  20. package/{authCommand-NNFLRLGJ.js → authCommand-E4GDVKMW.js} +9 -9
  21. package/{authCommands-364ESL7K.js → authCommands-VOTT6XWX.js} +2 -2
  22. package/{builtinSkillRegistry-VXSNE7LM.js → builtinSkillRegistry-5SYVTS6Z.js} +3 -3
  23. package/{chatQueueReduxAdapter-6I4F5TQW.js → chatQueueReduxAdapter-CXEWIDFZ.js} +13 -13
  24. package/{chunk-NG4UT4K4.js → chunk-23RQKXP6.js} +1 -1
  25. package/{chunk-C3FZR5EC.js → chunk-2F7RJC6L.js} +1 -1
  26. package/{chunk-SR2I44ML.js → chunk-2XEVK4BT.js} +1 -1
  27. package/{chunk-BQKN5ZHZ.js → chunk-3T4PRBHV.js} +1 -1
  28. package/{chunk-M5K26BH3.js → chunk-4FRNB4ZG.js} +4 -4
  29. package/{chunk-X7WAX4JU.js → chunk-5EJZGJS2.js} +1 -1
  30. package/{chunk-MXUSPS2N.js → chunk-6H7GN3JL.js} +1554 -1529
  31. package/{chunk-5CEIOSBX.js → chunk-6RCZYDDC.js} +5 -5
  32. package/{chunk-PBMUDRON.js → chunk-6ZC5KPXV.js} +303 -18
  33. package/{chunk-MGRRXGZD.js → chunk-AYT2OKNM.js} +3 -3
  34. package/{chunk-KR3MGGC7.js → chunk-BNMZ7QUV.js} +1 -1
  35. package/{chunk-LHDV2QUI.js → chunk-DS3SQTDT.js} +1 -1
  36. package/{chunk-6LUUGZTS.js → chunk-EXWOCYCR.js} +3 -3
  37. package/{chunk-N4X2KIYL.js → chunk-GIG262ZG.js} +1 -1
  38. package/{chunk-WKJC6UOK.js → chunk-GRJTR4PU.js} +2 -2
  39. package/{chunk-T2EUOLNJ.js → chunk-GXWEF4IZ.js} +1 -1
  40. package/{chunk-M2ZBPSGH.js → chunk-IMDA4FW4.js} +19 -19
  41. package/{chunk-6IHWRTUK.js → chunk-IO7DYRPW.js} +3 -3
  42. package/{chunk-BEQGQMYW.js → chunk-IZAWJCG7.js} +1 -1
  43. package/{chunk-PP3LAL6G.js → chunk-JC2WQS66.js} +14 -14
  44. package/{chunk-S6FCVZ4I.js → chunk-JITSBA52.js} +2 -2
  45. package/{chunk-DJM4BCSB.js → chunk-KT6LENVP.js} +2 -2
  46. package/{chunk-QIU65GHY.js → chunk-L2VNQQ7M.js} +20 -20
  47. package/{chunk-IBT5GKZM.js → chunk-LEYH5NOH.js} +5 -5
  48. package/{chunk-RXX4GDIH.js → chunk-LS2ZANRJ.js} +1 -1
  49. package/{chunk-4YIWJYIX.js → chunk-LSV2BOJL.js} +1 -1
  50. package/{chunk-5HKWE6OQ.js → chunk-MFW4BGJS.js} +1 -1
  51. package/{chunk-NJBLAV2R.js → chunk-NVHJWYUO.js} +25 -25
  52. package/{chunk-IZWQKAGJ.js → chunk-OCL2YCAU.js} +3 -3
  53. package/{chunk-BXLB7DXE.js → chunk-P3AS5IPM.js} +97 -2
  54. package/{chunk-M67M3AK5.js → chunk-PHDKTASK.js} +1 -1
  55. package/{chunk-SENTM5XJ.js → chunk-Q246OUG5.js} +3 -3
  56. package/{chunk-WHYTL6XG.js → chunk-Q4KVAB6L.js} +2 -2
  57. package/{chunk-QDOYVIIL.js → chunk-S6STPUMG.js} +4 -4
  58. package/{chunk-PZCTYKGU.js → chunk-T4F2EQGN.js} +2 -2
  59. package/{chunk-A3GDWRW6.js → chunk-TGRQUFLU.js} +1 -1
  60. package/{chunk-KIAHQ37Z.js → chunk-UINEAQ2R.js} +1 -1
  61. package/{chunk-CADAR6QU.js → chunk-UO66QKGI.js} +2 -2
  62. package/{chunk-XPMTSMUR.js → chunk-US463UAD.js} +2 -2
  63. package/{chunk-AJHEFRGJ.js → chunk-UWMQ6FPM.js} +4 -0
  64. package/{chunk-TR54UTFI.js → chunk-VARZWSKW.js} +2 -2
  65. package/{chunk-KMIMGCZT.js → chunk-VQD6BTML.js} +3 -3
  66. package/{chunk-EVCXTAOR.js → chunk-VW3YGKWR.js} +8 -8
  67. package/{chunk-EFWQMKEG.js → chunk-W7PGACND.js} +9 -9
  68. package/{chunk-5XV64MAU.js → chunk-WSOMSDQB.js} +1 -1
  69. package/{chunk-TMPLPCVX.js → chunk-X77EN2BJ.js} +2 -2
  70. package/{chunk-WVXCW7DR.js → chunk-XCSSFPTB.js} +9 -4
  71. package/{chunk-2LX7X7HX.js → chunk-Y2IFJ7VM.js} +29 -1
  72. package/{chunk-EDZAJS6E.js → chunk-ZIHJVHFH.js} +1 -1
  73. package/{chunk-UMYXJWI3.js → chunk-ZKGIAM7I.js} +1 -1
  74. package/chunk-ZSG2AQU4.js +626 -0
  75. package/{contentThunks-2N2J3EGF.js → contentThunks-Y2ACIFDB.js} +14 -14
  76. package/{createAgentAutomationAction-7QO4ZVVP.js → createAgentAutomationAction-TNE3QMJR.js} +14 -14
  77. package/{createDialogAction-PC2IQ4T7.js → createDialogAction-BMGHBTQB.js} +16 -16
  78. package/{createPageAction-EFL5EC22.js → createPageAction-FFNIZPIS.js} +14 -14
  79. package/{dbSlice-JNK4XZ27.js → dbSlice-4CUQE35F.js} +1 -1
  80. package/{dialogCommands-BSOWO6CA.js → dialogCommands-3JC3BIXC.js} +18 -18
  81. package/{dialogSlice-W6X5G2KS.js → dialogSlice-3E7Z7HZV.js} +13 -13
  82. package/{docCreateCommands-LWZU23FP.js → docCreateCommands-6LNQLCTA.js} +17 -17
  83. package/{docDeleteCommands-RR6GKDDF.js → docDeleteCommands-ZJOAPWZS.js} +18 -18
  84. package/{docReadCommands-JP77ZTCY.js → docReadCommands-LJTRSBG6.js} +17 -17
  85. package/{docStore-DMNGPTL4.js → docStore-R47ABXBB.js} +2 -2
  86. package/{docUpdateCommands-T4OACV4V.js → docUpdateCommands-7P3QF3N2.js} +17 -17
  87. package/{getPricing-QVTUQQTM.js → getPricing-TV6ZB7ES.js} +3 -3
  88. package/{handleSendMessageAction-RJEXW5VS.js → handleSendMessageAction-FFYOGXAO.js} +13 -13
  89. package/index.js +58 -54
  90. package/{localDialogRead-GKTRZFAP.js → localDialogRead-BTFJ4V2I.js} +1 -1
  91. package/{localRuntimeDb-P37ZTX55.js → localRuntimeDb-SYQGUF4U.js} +1 -1
  92. package/{machineCommands-K3VQUSAX.js → machineCommands-FN5GGQV3.js} +37 -37
  93. package/{machineWsRunDispatch-P7RNOLMU.js → machineWsRunDispatch-H47IA7ZT.js} +37 -37
  94. package/{memberThunks-A6OAY77F.js → memberThunks-N35XAOC6.js} +2 -2
  95. package/{models-GS72DVJS.js → models-CMXFDBQH.js} +2 -2
  96. package/package.json +1 -1
  97. package/providerPresetApply-D2GGHPI7.js +214 -0
  98. package/providerRegistry-MU6C4ABD.js +31 -0
  99. package/{readlineWorkspace-FGQLVWLE.js → readlineWorkspace-NXKHYZEU.js} +45 -45
  100. package/{removeDialogAgentAction-6SGBZWSW.js → removeDialogAgentAction-O2POGBOE.js} +4 -4
  101. package/{runAgentClientLoop-75TQMT2H.js → runAgentClientLoop-CEBV5UPD.js} +28 -28
  102. package/{runtimeDoctorCommands-CROTMULY.js → runtimeDoctorCommands-X6WDBEQX.js} +2 -2
  103. package/{setDialogExtraReferencesAction-LC3SOVJO.js → setDialogExtraReferencesAction-KPSVVY3C.js} +2 -2
  104. package/{setPrimaryDialogAgentAction-XE2HIEVY.js → setPrimaryDialogAgentAction-RMJETONI.js} +4 -4
  105. package/{settingSlice-GJYAXZZ6.js → settingSlice-I6MTTNDX.js} +3 -3
  106. package/{spaceCommands-7GMVZQYI.js → spaceCommands-JHT4ALCQ.js} +17 -17
  107. package/{streamAgentChatTurn-JYKKAOEU.js → streamAgentChatTurn-SFCZP4GY.js} +34 -34
  108. package/{switchDialogAgentAction-EDYI5RLR.js → switchDialogAgentAction-OQSGWVQQ.js} +1 -1
  109. package/{tools-PCY3TDNR.js → tools-K3YOTESV.js} +25 -25
  110. package/{tuiSummaryLlmCaller-CCYGQDGB.js → tuiSummaryLlmCaller-T2OA5ZVB.js} +8 -8
  111. package/{updateDialogTitleAction-36NOSXEX.js → updateDialogTitleAction-CSPKYQRO.js} +14 -14
  112. package/{db-VQSAOWAO.js → db-WK5MDZVN.js} +1 -1
  113. package/{localRuntimeAuthority-R5UBODT3.js → localRuntimeAuthority-6IR6BBXE.js} +3 -3
@@ -9,1854 +9,1871 @@ import {
9
9
  platformHostedModels,
10
10
  toCnyCredits,
11
11
  zaiModels
12
- } from "./chunk-AJHEFRGJ.js";
12
+ } from "./chunk-UWMQ6FPM.js";
13
13
 
14
- // packages/integrations/anthropic/anthropicModels.ts
15
- var anthropicModels = [
14
+ // packages/integrations/qwen/models.ts
15
+ var qwenModels = [
16
+ // ── Qwen3 旗舰 ──
16
17
  {
17
- name: "claude-3-5-sonnet-latest",
18
- displayName: "Claude 3.5 Sonnet",
18
+ name: "qwen3.8-max",
19
+ displayName: "Qwen3.8 Max",
19
20
  hasVision: true,
20
- description: "Our most intelligent model to date",
21
- contextWindow: 2e5,
22
- maxOutputTokens: 8192,
23
- price: {
24
- input: 27,
25
- output: 135,
26
- cachingWrite: 33.75,
27
- cachingRead: 2.7
28
- }
21
+ contextWindow: 1e6,
22
+ maxOutputTokens: 131072,
23
+ jsonOutput: true,
24
+ fnCall: true,
25
+ supportsTool: true,
26
+ supportsReasoningEffort: true,
27
+ // 官方价:输入 ¥12/M、输出 ¥36/M;缓存命中 ¥1.5/M、显式缓存创建 ¥15/M、显式缓存命中 ¥1/M。
28
+ price: { input: toCnyCredits(12), output: toCnyCredits(36) },
29
+ provider: "qwen",
30
+ description: "2.4\u4E07\u4EBF\u53C2\u6570 MoE \u65D7\u8230\uFF0C1M \u4E0A\u4E0B\u6587\uFF08\u8F93\u5165 991K / \u8F93\u51FA 131K / \u601D\u7EF4\u94FE 262K\uFF09\uFF0C\u539F\u751F\u89C6\u89C9\u7406\u89E3\u8D2F\u7A7F\u89C4\u5212-\u6267\u884C-\u9A8C\u8BC1\uFF0C\u81EA\u4E3B\u7F16\u7A0B\u53EF\u4EA4\u4ED8\u5B8C\u6574\u9879\u76EE\u3002"
29
31
  },
30
32
  {
31
- name: "claude-3-7-sonnet-latest",
32
- displayName: "Claude 3.7 Sonnet",
33
+ name: "qwen3-max",
34
+ displayName: "Qwen3 Max",
33
35
  hasVision: true,
34
- description: "Our most intelligent model to date",
35
- contextWindow: 2e5,
36
- maxOutputTokens: 8192,
37
- price: {
38
- input: 27,
39
- output: 135,
40
- cachingWrite: 33.75,
41
- cachingRead: 2.7
42
- }
36
+ contextWindow: 262144,
37
+ maxOutputTokens: 32768,
38
+ jsonOutput: true,
39
+ fnCall: true,
40
+ supportsTool: true,
41
+ supportsReasoningEffort: true,
42
+ price: { input: toCnyCredits(6), output: toCnyCredits(24) },
43
+ provider: "qwen",
44
+ description: "\u5343\u95EE3 \u65D7\u8230\u6A21\u578B\uFF0C\u652F\u6301\u601D\u8003\u6A21\u5F0F\u3001\u51FD\u6570\u8C03\u7528\u3001\u7ED3\u6784\u5316\u8F93\u51FA\u3002"
43
45
  },
44
46
  {
45
- name: "claude-3-5-haiku-20241022",
46
- displayName: "Claude 3.5 Haiku",
47
- hasVision: false,
48
- description: "Fastest, most cost-effective model",
49
- contextWindow: 2e5,
50
- maxOutputTokens: 8192,
51
- price: {
52
- input: 7.2,
53
- output: 36,
54
- cachingWrite: 9,
55
- cachingRead: 0.72
56
- }
57
- }
58
- ];
59
-
60
- // packages/integrations/anthropic/anthropicOAuthModels.ts
61
- var oauthModel = ({ name, displayName, contextWindow, thinkingMode, maxOutputTokens }) => ({
62
- name,
63
- displayName,
64
- hasVision: true,
65
- description: `OAuth \u8BA2\u9605\u6A21\u578B\uFF08${displayName}\uFF0C${thinkingMode === "adaptive" ? "Adaptive thinking" : "Extended thinking"}\uFF09`,
66
- contextWindow,
67
- ...maxOutputTokens ? { maxOutputTokens } : {},
68
- supportsReasoningEffort: true,
69
- price: { input: 0, output: 0 }
70
- });
71
- var anthropicOAuthModels = [
72
- // 5 代(1M + Adaptive thinking always-on;官方 max output 128k)
73
- oauthModel({ name: "claude-fable-5", displayName: "Claude Fable 5", contextWindow: 1e6, thinkingMode: "adaptive", maxOutputTokens: 128e3 }),
74
- oauthModel({ name: "claude-opus-5", displayName: "Claude Opus 5", contextWindow: 1e6, thinkingMode: "adaptive", maxOutputTokens: 128e3 }),
75
- oauthModel({ name: "claude-sonnet-5", displayName: "Claude Sonnet 5", contextWindow: 1e6, thinkingMode: "adaptive", maxOutputTokens: 128e3 }),
76
- // 4.6/4.7/4.8 系(Adaptive thinking;context 官方未单列,参照 fuzzy claude-4.6→1M)
77
- oauthModel({ name: "claude-opus-4-8", displayName: "Claude Opus 4.8", contextWindow: 1e6, thinkingMode: "adaptive" }),
78
- oauthModel({ name: "claude-opus-4-7", displayName: "Claude Opus 4.7", contextWindow: 1e6, thinkingMode: "adaptive" }),
79
- oauthModel({ name: "claude-sonnet-4-6", displayName: "Claude Sonnet 4.6", contextWindow: 1e6, thinkingMode: "adaptive" }),
80
- oauthModel({ name: "claude-opus-4-6", displayName: "Claude Opus 4.6", contextWindow: 1e6, thinkingMode: "adaptive" }),
81
- // 4.5 系(Extended thinking;官方发布规格 1M)
82
- oauthModel({ name: "claude-opus-4-5-20251101", displayName: "Claude Opus 4.5", contextWindow: 1e6, thinkingMode: "extended" }),
83
- oauthModel({ name: "claude-sonnet-4-5-20250929", displayName: "Claude Sonnet 4.5", contextWindow: 1e6, thinkingMode: "extended" }),
84
- // haiku-4-5(官方明确 context=200k + Extended thinking)
85
- oauthModel({ name: "claude-haiku-4-5-20251001", displayName: "Claude Haiku 4.5", contextWindow: 2e5, thinkingMode: "extended" })
86
- ];
87
- var OAUTH_MODEL_THINKING_MODE = new Map(
88
- anthropicOAuthModels.map((m) => [m.name, m.thinkingMode])
89
- );
90
- function isAdaptiveThinkingModelId(model) {
91
- if (!model) return false;
92
- const tableMode = OAUTH_MODEL_THINKING_MODE.get(model);
93
- if (tableMode === "adaptive") return true;
94
- if (tableMode === "extended") return false;
95
- const n = model.toLowerCase();
96
- return n.includes("fable-5") || n.includes("opus-5") || n.includes("sonnet-5") || n.includes("opus-4-8") || n.includes("opus-4-7") || n.includes("sonnet-4-6") || n.includes("opus-4-6");
97
- }
98
-
99
- // packages/ai/agent/liveAudioModel.ts
100
- var DEFAULT_GOOGLE_LIVE_AUDIO_MODEL = "gemini-3.1-flash-live-preview";
101
-
102
- // packages/integrations/google/models.ts
103
- var googleModels = [
104
- {
105
- name: DEFAULT_GOOGLE_LIVE_AUDIO_MODEL,
106
- displayName: "Gemini 3.1 Flash Live",
107
- provider: "google",
108
- description: "Gemini Live API model for low-latency real-time voice conversations.",
47
+ name: "qwen3-max-preview",
48
+ displayName: "Qwen3 Max Preview",
109
49
  hasVision: true,
110
- hasAudio: true,
111
- contextWindow: 1048576,
112
- maxOutputTokens: 65500,
50
+ contextWindow: 81920,
51
+ maxOutputTokens: 32768,
52
+ jsonOutput: true,
53
+ fnCall: true,
113
54
  supportsTool: true,
114
- price: {
115
- input: 4,
116
- output: 24,
117
- cachingWrite: 0.4,
118
- cachingRead: 0.4
119
- }
55
+ supportsReasoningEffort: true,
56
+ price: { input: toCnyCredits(6), output: toCnyCredits(24) },
57
+ provider: "qwen"
120
58
  },
121
59
  {
122
- name: "gemini-3.6-flash",
123
- displayName: "Gemini 3.6 Flash",
124
- provider: "google",
125
- description: "Gemini 3.6 Flash model for fast frontier agentic, coding, and multimodal tasks.",
60
+ name: "qwen3-235b-a22b-instruct-2507",
61
+ displayName: "Qwen3 235B A22B Instruct",
126
62
  hasVision: true,
127
- hasAudio: true,
128
- contextWindow: 1048576,
129
- maxOutputTokens: 65536,
63
+ contextWindow: 262144,
64
+ maxOutputTokens: 32768,
65
+ jsonOutput: true,
66
+ fnCall: true,
130
67
  supportsTool: true,
131
68
  supportsReasoningEffort: true,
132
- price: {
133
- input: 12,
134
- output: 72,
135
- cachingWrite: 1.2,
136
- cachingRead: 1.2
137
- },
138
- serviceTierPriceMultipliers: {
139
- batch: { inputOutput: 0.5, cache: 0.5 },
140
- flex: { inputOutput: 0.5, cache: 0.08 / 0.15 },
141
- priority: { inputOutput: 1.8, cache: 1.8 }
142
- }
69
+ price: { input: toCnyCredits(4), output: toCnyCredits(12) },
70
+ provider: "qwen"
143
71
  },
144
72
  {
145
- name: "gemini-3.7-flash",
146
- displayName: "Gemini 3.7 Flash",
147
- provider: "google",
148
- description: "Gemini 3.7 Flash model for fast frontier agentic, coding, and multimodal tasks.",
73
+ name: "qwen3-next-80b-a3b-instruct",
74
+ displayName: "Qwen3 Next 80B A3B Instruct",
149
75
  hasVision: true,
150
- hasAudio: true,
76
+ contextWindow: 81920,
77
+ maxOutputTokens: 32768,
78
+ jsonOutput: true,
79
+ fnCall: true,
80
+ supportsTool: true,
81
+ supportsReasoningEffort: true,
82
+ price: { input: toCnyCredits(2), output: toCnyCredits(6) },
83
+ provider: "qwen"
84
+ },
85
+ // ── Qwen3-Coder 编程系列 ──
86
+ {
87
+ name: "qwen3-coder-plus",
88
+ displayName: "Qwen3 Coder Plus",
89
+ hasVision: false,
151
90
  contextWindow: 1048576,
152
91
  maxOutputTokens: 65536,
92
+ jsonOutput: true,
93
+ fnCall: true,
153
94
  supportsTool: true,
154
95
  supportsReasoningEffort: true,
155
- // Antigravity's subscription wire route is tiered; Gemini API uses this logical id.
156
- price: {
157
- input: 6,
158
- output: 30,
159
- cachingWrite: 0.6,
160
- cachingRead: 0.6
161
- }
96
+ price: { input: toCnyCredits(3), output: toCnyCredits(9) },
97
+ provider: "qwen",
98
+ description: "\u5343\u95EE3 \u7F16\u7A0B\u65D7\u8230\uFF0C1M \u957F\u4E0A\u4E0B\u6587\uFF0C\u9002\u5408\u4EE3\u7801\u751F\u6210\u4E0E Agent \u7F16\u7A0B\u3002"
162
99
  },
163
100
  {
164
- name: "gemini-3.8-flash",
165
- displayName: "Gemini 3.8 Flash",
166
- provider: "google",
167
- description: "Gemini 3.8 Flash model for fast frontier agentic, coding, and multimodal tasks.",
168
- hasVision: true,
169
- hasAudio: true,
101
+ name: "qwen3-coder-flash",
102
+ displayName: "Qwen3 Coder Flash",
103
+ hasVision: false,
170
104
  contextWindow: 1048576,
171
105
  maxOutputTokens: 65536,
106
+ jsonOutput: true,
107
+ fnCall: true,
172
108
  supportsTool: true,
173
109
  supportsReasoningEffort: true,
174
- price: {
175
- input: 6,
176
- output: 30,
177
- cachingWrite: 0.6,
178
- cachingRead: 0.6
179
- }
110
+ price: { input: toCnyCredits(1), output: toCnyCredits(3) },
111
+ provider: "qwen"
180
112
  },
181
113
  {
182
- name: "gemini-2.5-pro",
183
- displayName: "Gemini 2.5 Pro",
184
- provider: "google",
185
- description: "Gemini 2.5 Pro model for complex reasoning, coding, and large context multimodal tasks.",
186
- hasVision: true,
187
- hasAudio: true,
114
+ name: "qwen3-coder-480b-a35b-instruct",
115
+ displayName: "Qwen3 Coder 480B A35B Instruct",
116
+ hasVision: false,
188
117
  contextWindow: 1048576,
189
118
  maxOutputTokens: 65536,
119
+ jsonOutput: true,
120
+ fnCall: true,
190
121
  supportsTool: true,
191
122
  supportsReasoningEffort: true,
192
- price: {
193
- input: 10,
194
- output: 40,
195
- cachingWrite: 2.5,
196
- cachingRead: 2.5
197
- }
123
+ price: { input: toCnyCredits(5), output: toCnyCredits(15) },
124
+ provider: "qwen"
198
125
  },
126
+ // ── 长上下文 ──
199
127
  {
200
- name: "gemini-3.1-pro",
201
- displayName: "Gemini 3.1 Pro",
202
- provider: "google",
203
- description: "Gemini 3.1 Pro frontier reasoning, coding, and multimodal model.",
128
+ name: "qwen-long",
129
+ displayName: "Qwen Long",
130
+ hasVision: false,
131
+ contextWindow: 10485760,
132
+ maxOutputTokens: 8192,
133
+ jsonOutput: true,
134
+ fnCall: false,
135
+ supportsTool: false,
136
+ price: { input: toCnyCredits(0.5), output: toCnyCredits(2) },
137
+ provider: "qwen",
138
+ description: "10M \u8D85\u957F\u4E0A\u4E0B\u6587\uFF0C\u9002\u5408\u957F\u6587\u6863\u5904\u7406\u3002"
139
+ },
140
+ // ── 旧版主力(仍常用) ──
141
+ {
142
+ name: "qwen-plus",
143
+ displayName: "Qwen Plus",
204
144
  hasVision: true,
205
- hasAudio: true,
206
145
  contextWindow: 1048576,
207
- maxOutputTokens: 65536,
146
+ maxOutputTokens: 32768,
147
+ jsonOutput: true,
148
+ fnCall: true,
208
149
  supportsTool: true,
209
150
  supportsReasoningEffort: true,
210
- price: {
211
- input: 16,
212
- output: 96,
213
- cachingWrite: 4,
214
- cachingRead: 4
215
- }
151
+ price: { input: toCnyCredits(0.8), output: toCnyCredits(2) },
152
+ provider: "qwen"
153
+ },
154
+ {
155
+ name: "qwen-turbo",
156
+ displayName: "Qwen Turbo",
157
+ hasVision: false,
158
+ contextWindow: 131072,
159
+ maxOutputTokens: 8192,
160
+ jsonOutput: true,
161
+ fnCall: true,
162
+ supportsTool: true,
163
+ price: { input: toCnyCredits(0.3), output: toCnyCredits(0.6) },
164
+ provider: "qwen"
165
+ },
166
+ {
167
+ name: "qwen-flash",
168
+ displayName: "Qwen Flash",
169
+ hasVision: false,
170
+ contextWindow: 131072,
171
+ maxOutputTokens: 8192,
172
+ jsonOutput: true,
173
+ fnCall: true,
174
+ supportsTool: true,
175
+ price: { input: toCnyCredits(0.1), output: toCnyCredits(0.3) },
176
+ provider: "qwen"
177
+ },
178
+ // ── 推理(QwQ) ──
179
+ {
180
+ name: "qwq-plus",
181
+ displayName: "QwQ Plus",
182
+ hasVision: false,
183
+ contextWindow: 131072,
184
+ maxOutputTokens: 32768,
185
+ jsonOutput: true,
186
+ fnCall: true,
187
+ supportsTool: true,
188
+ supportsReasoningEffort: true,
189
+ price: { input: toCnyCredits(2), output: toCnyCredits(8) },
190
+ provider: "qwen",
191
+ description: "\u6DF1\u5EA6\u601D\u8003\u63A8\u7406\u6A21\u578B\u3002"
216
192
  }
217
193
  ];
218
-
219
- // packages/integrations/openai/models.ts
220
- var GPT_5_5_STANDARD_PRICE = {
221
- input: 40,
222
- output: 240,
223
- inputCacheHit: 4
224
- };
225
- var GPT_5_5_LONG_CONTEXT_PRICE = {
226
- input: 80,
227
- output: 360,
228
- inputCacheHit: 8
229
- };
230
- var GPT_5_5_PRO_STANDARD_PRICE = {
231
- input: 240,
232
- output: 1440,
233
- inputCacheHit: 0
234
- };
235
- var GPT_5_5_PRO_LONG_CONTEXT_PRICE = {
236
- input: 480,
237
- output: 2160,
238
- inputCacheHit: 0
239
- };
240
- var GPT_5_6_SOL_STANDARD_PRICE = {
241
- input: 40,
242
- output: 240,
243
- inputCacheHit: 4
244
- };
245
- var GPT_5_6_SOL_LONG_CONTEXT_PRICE = {
246
- input: 80,
247
- output: 360,
248
- inputCacheHit: 8
249
- };
250
- var GPT_5_6_TERRA_STANDARD_PRICE = {
251
- input: 16,
252
- output: 96,
253
- inputCacheHit: 1.6
254
- };
255
- var GPT_5_6_TERRA_LONG_CONTEXT_PRICE = {
256
- input: 32,
257
- output: 144,
258
- inputCacheHit: 3.2
259
- };
260
- var GPT_5_6_LUNA_PRICE = {
261
- input: 1.6,
262
- output: 9.6,
263
- inputCacheHit: 0.16
264
- };
265
- var GPT_6_ASTRA_STANDARD_PRICE = {
266
- input: 80,
267
- output: 400,
268
- inputCacheHit: 8
269
- };
270
- var GPT_6_ASTRA_LONG_CONTEXT_PRICE = {
271
- input: 160,
272
- output: 600,
273
- inputCacheHit: 16
274
- };
275
- var openAIModels = [
194
+ var qwenTokenPlanModels = [
195
+ // ── 千问 ──
276
196
  {
277
- name: "gpt-5.5",
278
- displayName: "GPT-5.5 Standard",
279
- endpointKey: "responses",
197
+ name: "qwen3.8-max",
198
+ displayName: "Qwen3.8 Max",
280
199
  hasVision: true,
281
- contextWindow: 1047576,
282
- maxOutputTokens: 128e3,
200
+ contextWindow: 1e6,
201
+ maxOutputTokens: 131072,
202
+ jsonOutput: true,
203
+ fnCall: true,
204
+ supportsTool: true,
283
205
  supportsReasoningEffort: true,
284
- price: GPT_5_5_STANDARD_PRICE,
285
- pricingStrategy: {
286
- type: "tiered_context",
287
- tiers: [
288
- {
289
- minContext: 272001,
290
- price: GPT_5_5_LONG_CONTEXT_PRICE
291
- }
292
- ]
293
- }
206
+ price: { input: 0, output: 0 },
207
+ provider: "qwen",
208
+ description: "2.4\u4E07\u4EBF\u53C2\u6570 MoE \u65D7\u8230\uFF0C\u63A8\u7406\u3001\u89C6\u89C9\u7406\u89E3\u3001\u6587\u672C\u751F\u6210\uFF1B1M \u4E0A\u4E0B\u6587\u3001131K \u8F93\u51FA\u3001262K \u601D\u7EF4\u94FE\u3002"
294
209
  },
295
210
  {
296
- name: "gpt-5.6-sol",
297
- displayName: "GPT-5.6 Sol (Flagship)",
298
- endpointKey: "responses",
299
- hasVision: true,
300
- contextWindow: 105e4,
301
- maxOutputTokens: 128e3,
211
+ name: "qwen3.7-max",
212
+ displayName: "Qwen3.7 Max",
213
+ hasVision: false,
214
+ contextWindow: 262144,
215
+ maxOutputTokens: 32768,
216
+ jsonOutput: true,
217
+ fnCall: true,
218
+ supportsTool: true,
302
219
  supportsReasoningEffort: true,
303
- price: GPT_5_6_SOL_STANDARD_PRICE,
304
- pricingStrategy: {
305
- type: "tiered_context",
306
- tiers: [
307
- {
308
- minContext: 272001,
309
- price: GPT_5_6_SOL_LONG_CONTEXT_PRICE
310
- }
311
- ]
312
- }
220
+ price: { input: 0, output: 0 },
221
+ provider: "qwen",
222
+ description: "\u63A8\u7406\u6A21\u578B\u3001\u6587\u672C\u751F\u6210\u3002"
313
223
  },
314
224
  {
315
- name: "gpt-5.6-terra",
316
- displayName: "GPT-5.6 Terra (Balanced)",
317
- endpointKey: "responses",
225
+ name: "qwen3.7-plus",
226
+ displayName: "Qwen3.7 Plus",
318
227
  hasVision: true,
319
- contextWindow: 105e4,
320
- maxOutputTokens: 128e3,
228
+ contextWindow: 262144,
229
+ maxOutputTokens: 32768,
230
+ jsonOutput: true,
231
+ fnCall: true,
232
+ supportsTool: true,
321
233
  supportsReasoningEffort: true,
322
- price: GPT_5_6_TERRA_STANDARD_PRICE,
323
- pricingStrategy: {
324
- type: "tiered_context",
325
- tiers: [
326
- {
327
- minContext: 272001,
328
- price: GPT_5_6_TERRA_LONG_CONTEXT_PRICE
329
- }
330
- ]
331
- }
234
+ price: { input: 0, output: 0 },
235
+ provider: "qwen",
236
+ description: "\u63A8\u7406\u6A21\u578B\u3001\u89C6\u89C9\u7406\u89E3\u3001\u6587\u672C\u751F\u6210\u3002"
332
237
  },
333
238
  {
334
- name: "gpt-5.6-luna",
335
- displayName: "GPT-5.6 Luna (Fast)",
336
- endpointKey: "responses",
239
+ name: "qwen3.6-flash",
240
+ displayName: "Qwen3.6 Flash",
337
241
  hasVision: true,
338
- contextWindow: 105e4,
339
- maxOutputTokens: 128e3,
242
+ contextWindow: 262144,
243
+ maxOutputTokens: 32768,
244
+ jsonOutput: true,
245
+ fnCall: true,
246
+ supportsTool: true,
340
247
  supportsReasoningEffort: true,
341
- price: GPT_5_6_LUNA_PRICE
248
+ price: { input: 0, output: 0 },
249
+ provider: "qwen",
250
+ description: "\u63A8\u7406\u6A21\u578B\u3001\u89C6\u89C9\u7406\u89E3\u3001\u6587\u672C\u751F\u6210\uFF08\u8F7B\u91CF\u5FEB\u901F\uFF09\u3002"
342
251
  },
252
+ // ── 智谱 AI ──
343
253
  {
344
- name: "gpt-6-astra",
345
- displayName: "GPT-6 Astra",
346
- endpointKey: "responses",
347
- hasVision: true,
348
- contextWindow: 105e4,
349
- maxOutputTokens: 128e3,
254
+ name: "glm-5.2",
255
+ displayName: "GLM 5.2",
256
+ hasVision: false,
257
+ contextWindow: 1e6,
258
+ maxOutputTokens: 16384,
259
+ jsonOutput: true,
260
+ fnCall: true,
261
+ supportsTool: true,
350
262
  supportsReasoningEffort: true,
351
- price: GPT_6_ASTRA_STANDARD_PRICE,
352
- pricingStrategy: {
353
- type: "tiered_context",
354
- tiers: [
355
- {
356
- minContext: 272001,
357
- price: GPT_6_ASTRA_LONG_CONTEXT_PRICE
358
- }
359
- ]
360
- }
263
+ price: { input: 0, output: 0 },
264
+ provider: "qwen",
265
+ description: "\u667A\u8C31 AI \u63A8\u7406\u6A21\u578B\u3001\u6587\u672C\u751F\u6210\u3002"
361
266
  },
267
+ // ── DeepSeek ──
362
268
  {
363
- name: "gpt-5.5-pro",
364
- displayName: "GPT-5.5 Pro",
365
- endpointKey: "responses",
366
- hasVision: true,
367
- contextWindow: 1047576,
368
- maxOutputTokens: 128e3,
269
+ name: "deepseek-v4-pro",
270
+ displayName: "DeepSeek V4 Pro",
271
+ hasVision: false,
272
+ contextWindow: 1e6,
273
+ maxOutputTokens: 384e3,
274
+ jsonOutput: true,
275
+ fnCall: true,
276
+ supportsTool: true,
369
277
  supportsReasoningEffort: true,
370
- price: GPT_5_5_PRO_STANDARD_PRICE,
371
- pricingStrategy: {
372
- type: "tiered_context",
373
- tiers: [
374
- {
375
- minContext: 272001,
376
- price: GPT_5_5_PRO_LONG_CONTEXT_PRICE
377
- }
378
- ]
379
- }
380
- }
381
- ];
382
-
383
- // packages/ai/llm/deepinfra.ts
384
- var DEEPINFRA_CLAUDE_HAIKU_PRICE = {
385
- input: 1 * 9,
386
- output: 5 * 9
387
- };
388
- var DEEPINFRA_CLAUDE_SONNET_PRICE = {
389
- input: 3 * 9,
390
- output: 15 * 9
391
- };
392
- var DEEPINFRA_CLAUDE_OPUS_PRICE = {
393
- input: 5 * 9,
394
- output: 25 * 9
395
- };
396
- var DEEPINFRA_CLAUDE_FABLE_PRICE = {
397
- input: 10 * 9,
398
- output: 50 * 9
399
- };
400
- var deepinfraModels = [
401
- {
402
- name: "anthropic/claude-haiku-4-5",
403
- displayName: "Anthropic: Claude Haiku 4.5",
404
- hasVision: true,
405
- price: { ...DEEPINFRA_CLAUDE_HAIKU_PRICE },
406
- contextWindow: 195e3,
407
- maxOutputTokens: 4092,
408
- supportsTool: false
409
- },
410
- {
411
- name: "anthropic/claude-sonnet-5",
412
- displayName: "Anthropic: Claude Sonnet 5",
413
- hasVision: true,
414
- price: { ...DEEPINFRA_CLAUDE_SONNET_PRICE },
415
- contextWindow: 976e3,
416
- maxOutputTokens: 4092,
417
- supportsTool: false
278
+ price: { input: 0, output: 0 },
279
+ provider: "qwen",
280
+ description: "DeepSeek \u63A8\u7406\u6A21\u578B\u3001\u6587\u672C\u751F\u6210\u3002"
418
281
  },
282
+ // ── 万相(图片生成)──
419
283
  {
420
- name: "anthropic/claude-opus-5",
421
- displayName: "Anthropic: Claude Opus 5",
422
- hasVision: true,
423
- price: { ...DEEPINFRA_CLAUDE_OPUS_PRICE },
424
- contextWindow: 976e3,
425
- maxOutputTokens: 4092,
426
- supportsTool: false
284
+ name: "wan2.7-image",
285
+ displayName: "Wan2.7 Image",
286
+ hasVision: false,
287
+ hasImageOutput: true,
288
+ contextWindow: 0,
289
+ maxOutputTokens: 0,
290
+ price: { input: 0, output: 0 },
291
+ provider: "qwen",
292
+ description: "\u4E07\u76F8\u56FE\u7247\u751F\u6210\u3002"
427
293
  },
428
294
  {
429
- name: "anthropic/claude-fable-5",
430
- displayName: "Anthropic: Claude Fable 5",
431
- hasVision: true,
432
- price: { ...DEEPINFRA_CLAUDE_FABLE_PRICE },
433
- contextWindow: 976e3,
434
- maxOutputTokens: 4092,
435
- supportsTool: false
436
- }
437
- ];
438
-
439
- // packages/ai/llm/baseten.ts
440
- var BASETEN_GLM_53_FLASH_MODEL = "zai-org/GLM-5.3-Flash";
441
- var BASETEN_GLM_53_FLASH_PRICE = {
442
- input: 1.2,
443
- inputCacheHit: 0.24,
444
- output: 4
445
- };
446
- var basetenModels = [
447
- {
448
- name: BASETEN_GLM_53_FLASH_MODEL,
449
- displayName: "GLM 5.3 Flash",
450
- hasVision: true,
451
- price: { ...BASETEN_GLM_53_FLASH_PRICE },
452
- maxOutputTokens: 131072,
453
- contextWindow: 1048576,
454
- supportsTool: true,
455
- supportsReasoningEffort: true
295
+ name: "wan2.7-image-pro",
296
+ displayName: "Wan2.7 Image Pro",
297
+ hasVision: false,
298
+ hasImageOutput: true,
299
+ contextWindow: 0,
300
+ maxOutputTokens: 0,
301
+ price: { input: 0, output: 0 },
302
+ provider: "qwen",
303
+ description: "\u4E07\u76F8\u56FE\u7247\u751F\u6210\uFF08Pro\uFF09\u3002"
456
304
  }
457
305
  ];
458
306
 
459
- // packages/ai/llm/runinfra.ts
460
- var RUNINFRA_GLM_53_FLASH_MODEL = "glm-5-3-flash";
461
- var RUNINFRA_GLM_53_FLASH_PRICE = {
462
- input: 0.8,
463
- inputCacheHit: 0.08,
464
- output: 3.2
465
- };
466
- var runinfraModels = [
307
+ // packages/integrations/moonshot/models.ts
308
+ var moonshotModels = [
309
+ // ── 旗舰 ──
467
310
  {
468
- name: RUNINFRA_GLM_53_FLASH_MODEL,
469
- displayName: "GLM 5.3 Flash",
311
+ name: "kimi-k3",
312
+ displayName: "Kimi K3",
470
313
  hasVision: true,
471
- price: { ...RUNINFRA_GLM_53_FLASH_PRICE },
472
- maxOutputTokens: 1048576,
473
- contextWindow: 1048576,
314
+ contextWindow: 1e6,
315
+ maxOutputTokens: 262144,
316
+ jsonOutput: true,
317
+ fnCall: true,
474
318
  supportsTool: true,
475
- supportsReasoningEffort: true
476
- }
477
- ];
478
-
479
- // packages/integrations/xai/models.ts
480
- var xaiModels = [
319
+ supportsReasoningEffort: true,
320
+ price: { input: 24, output: 120 },
321
+ provider: "moonshot",
322
+ description: "Moonshot \u65D7\u8230\u6A21\u578B\uFF0C\u539F\u751F\u591A\u6A21\u6001\uFF0C1M \u4E0A\u4E0B\u6587\uFF0C\u957F\u7A0B\u7F16\u7A0B\u4E0E\u6DF1\u5EA6\u63A8\u7406\u3002"
323
+ },
324
+ // ── 通用 ──
481
325
  {
482
- name: "grok-4.6",
483
- displayName: "Grok 4.6",
326
+ name: "kimi-k2.6",
327
+ displayName: "Kimi K2.6",
484
328
  hasVision: true,
485
- contextWindow: 5e5,
486
- price: { input: 16, output: 48, inputCacheHit: 4 },
487
- pricingStrategy: {
488
- type: "tiered_context",
489
- tiers: [
490
- {
491
- minContext: 200001,
492
- price: { input: 32, output: 96, inputCacheHit: 8 }
493
- }
494
- ]
495
- },
329
+ contextWindow: 262144,
330
+ maxOutputTokens: 262144,
331
+ jsonOutput: true,
496
332
  fnCall: true,
497
- jsonOutput: true
498
- }
499
- ];
500
-
501
- // packages/ai/llm/fireworks.ts
502
- var fireworksModels = [
503
- {
504
- name: "accounts/fireworks/models/minimax-m3",
505
- displayName: "MiniMax: MiniMax M3",
506
- hasVision: true,
507
- price: {
508
- input: 2.4,
509
- output: 9.6,
510
- cachingRead: 0.48
511
- },
512
- contextWindow: 512e3,
513
- supportsTool: true
333
+ supportsTool: true,
334
+ supportsReasoningEffort: true,
335
+ price: { input: 4.8, output: 19.2 },
336
+ provider: "moonshot",
337
+ description: "Moonshot \u9AD8\u6027\u80FD\u901A\u7528\u6A21\u578B\u3002"
514
338
  }
515
339
  ];
516
-
517
- // packages/integrations/qwen/models.ts
518
- var qwenModels = [
519
- // ── Qwen3 旗舰 ──
340
+ var kimiCodeModels = [
341
+ // ── 旗舰编程 ──
520
342
  {
521
- name: "qwen3.8-max",
522
- displayName: "Qwen3.8 Max",
343
+ name: "k3",
344
+ displayName: "Kimi K3",
523
345
  hasVision: true,
524
346
  contextWindow: 1e6,
525
- maxOutputTokens: 131072,
347
+ maxOutputTokens: 262144,
526
348
  jsonOutput: true,
527
349
  fnCall: true,
528
350
  supportsTool: true,
529
351
  supportsReasoningEffort: true,
530
- // 官方价:输入 ¥12/M、输出 ¥36/M;缓存命中 ¥1.5/M、显式缓存创建 ¥15/M、显式缓存命中 ¥1/M。
531
- price: { input: toCnyCredits(12), output: toCnyCredits(36) },
532
- provider: "qwen",
533
- description: "2.4\u4E07\u4EBF\u53C2\u6570 MoE \u65D7\u8230\uFF0C1M \u4E0A\u4E0B\u6587\uFF08\u8F93\u5165 991K / \u8F93\u51FA 131K / \u601D\u7EF4\u94FE 262K\uFF09\uFF0C\u539F\u751F\u89C6\u89C9\u7406\u89E3\u8D2F\u7A7F\u89C4\u5212-\u6267\u884C-\u9A8C\u8BC1\uFF0C\u81EA\u4E3B\u7F16\u7A0B\u53EF\u4EA4\u4ED8\u5B8C\u6574\u9879\u76EE\u3002"
352
+ price: { input: 0, output: 0 },
353
+ provider: "moonshot",
354
+ description: "Kimi \u6700\u5F3A\u65D7\u8230\u7F16\u7A0B\u6A21\u578B\uFF0C2.8T \u53C2\u6570\uFF0C1M \u4E0A\u4E0B\u6587\uFF0Clow/high/max \u4E09\u6863\u601D\u8003\u6DF1\u5EA6\uFF0C\u64C5\u957F\u590D\u6742\u5DE5\u7A0B\u4E0E\u957F\u7A0B\u63A8\u7406\u3002Moderato \u53CA\u4EE5\u4E0A\u53EF\u7528\u3002"
534
355
  },
356
+ // ── 旗舰编程(256K 上下文版)──
535
357
  {
536
- name: "qwen3-max",
537
- displayName: "Qwen3 Max",
358
+ name: "k3-256k",
359
+ displayName: "Kimi K3 256K",
538
360
  hasVision: true,
539
361
  contextWindow: 262144,
540
- maxOutputTokens: 32768,
362
+ maxOutputTokens: 262144,
541
363
  jsonOutput: true,
542
364
  fnCall: true,
543
365
  supportsTool: true,
544
366
  supportsReasoningEffort: true,
545
- price: { input: toCnyCredits(6), output: toCnyCredits(24) },
546
- provider: "qwen",
547
- description: "\u5343\u95EE3 \u65D7\u8230\u6A21\u578B\uFF0C\u652F\u6301\u601D\u8003\u6A21\u5F0F\u3001\u51FD\u6570\u8C03\u7528\u3001\u7ED3\u6784\u5316\u8F93\u51FA\u3002"
367
+ price: { input: 0, output: 0 },
368
+ provider: "moonshot",
369
+ description: "K3 \u7684 256K \u4E0A\u4E0B\u6587\u7248\uFF0C\u6D88\u8017\u7EA6\u4E3A k3 \u7684\u4E00\u534A\uFF0C\u9002\u5408\u65E5\u5E38\u95EE\u7B54\u4E0E\u4EE3\u7801\u8865\u5168\u3002\u4E0D\u652F\u6301\u89C6\u9891\u8F93\u5165\u3002Moderato \u53CA\u4EE5\u4E0A\u53EF\u7528\u3002"
548
370
  },
371
+ // ── 成熟编程 ──
549
372
  {
550
- name: "qwen3-max-preview",
551
- displayName: "Qwen3 Max Preview",
373
+ name: "kimi-for-coding",
374
+ displayName: "Kimi K2.7 Code",
552
375
  hasVision: true,
553
- contextWindow: 81920,
554
- maxOutputTokens: 32768,
376
+ contextWindow: 262144,
377
+ maxOutputTokens: 262144,
555
378
  jsonOutput: true,
556
379
  fnCall: true,
557
380
  supportsTool: true,
558
381
  supportsReasoningEffort: true,
559
- price: { input: toCnyCredits(6), output: toCnyCredits(24) },
560
- provider: "qwen"
382
+ price: { input: 0, output: 0 },
383
+ provider: "moonshot",
384
+ description: "\u6210\u719F\u7A33\u5B9A\u7684 Coding \u6A21\u578B\uFF0CThinking \u5F00\u542F\u4E0B\u53EF\u9760\u9075\u5FAA\u6307\u4EE4\uFF0C\u7F16\u7A0B\u4EFB\u52A1\u6210\u529F\u7387\u9AD8\u3002\u6240\u6709\u4F1A\u5458\u53EF\u7528\u3002"
561
385
  },
386
+ // ── 高速编程 ──
562
387
  {
563
- name: "qwen3-235b-a22b-instruct-2507",
564
- displayName: "Qwen3 235B A22B Instruct",
388
+ name: "kimi-for-coding-highspeed",
389
+ displayName: "Kimi K2.7 Code \u9AD8\u901F\u7248",
565
390
  hasVision: true,
566
391
  contextWindow: 262144,
567
- maxOutputTokens: 32768,
392
+ maxOutputTokens: 262144,
568
393
  jsonOutput: true,
569
394
  fnCall: true,
570
395
  supportsTool: true,
571
396
  supportsReasoningEffort: true,
572
- price: { input: toCnyCredits(4), output: toCnyCredits(12) },
573
- provider: "qwen"
574
- },
397
+ price: { input: 0, output: 0 },
398
+ provider: "moonshot",
399
+ description: "K2.7 Code \u9AD8\u901F\u7248\uFF0C\u7F16\u7801\u80FD\u529B\u4E00\u81F4\uFF0C\u8F93\u51FA\u901F\u5EA6\u7EA6 6 \u500D\u3001\u6D88\u8017\u7EA6 3 \u500D\u3002Allegretto \u53CA\u4EE5\u4E0A\u53EF\u7528\u3002"
400
+ }
401
+ ];
402
+
403
+ // packages/integrations/stepfun/models.ts
404
+ var stepfunModels = [
405
+ // ── 旗舰多模态推理 ──
575
406
  {
576
- name: "qwen3-next-80b-a3b-instruct",
577
- displayName: "Qwen3 Next 80B A3B Instruct",
407
+ name: "step-3.7-flash",
408
+ displayName: "Step 3.7 Flash",
578
409
  hasVision: true,
579
- contextWindow: 81920,
580
- maxOutputTokens: 32768,
410
+ contextWindow: 262144,
411
+ maxOutputTokens: 65536,
581
412
  jsonOutput: true,
582
413
  fnCall: true,
583
414
  supportsTool: true,
584
415
  supportsReasoningEffort: true,
585
- price: { input: toCnyCredits(2), output: toCnyCredits(6) },
586
- provider: "qwen"
416
+ // 官方价:输入 ¥1.35/M、缓存命中 ¥0.27/M、输出 ¥8.1/M
417
+ price: {
418
+ input: toCnyCredits(1.35),
419
+ output: toCnyCredits(8.1),
420
+ inputCacheHit: toCnyCredits(0.27)
421
+ },
422
+ provider: "stepfun",
423
+ description: "\u9636\u8DC3\u661F\u8FB0\u65D7\u8230\u591A\u6A21\u6001\u63A8\u7406\u6A21\u578B\uFF0C256K \u4E0A\u4E0B\u6587\uFF0C\u9AD8\u901F\u63A8\u7406 + \u539F\u751F\u591A\u6A21\u6001 + \u5DE5\u5177\u8C03\u7528\uFF0C\u9488\u5BF9 Agent \u4E0E Coding \u6DF1\u5EA6\u4F18\u5316\u3002"
587
424
  },
588
- // ── Qwen3-Coder 编程系列 ──
589
425
  {
590
- name: "qwen3-coder-plus",
591
- displayName: "Qwen3 Coder Plus",
592
- hasVision: false,
593
- contextWindow: 1048576,
426
+ name: "step-5-preview",
427
+ displayName: "Step 5 Preview",
428
+ hasVision: true,
429
+ // 官方规格:1M context window / 64k max output(600B 总参 / 27B 激活 MoE)
430
+ contextWindow: 1e6,
594
431
  maxOutputTokens: 65536,
595
432
  jsonOutput: true,
596
433
  fnCall: true,
597
434
  supportsTool: true,
598
435
  supportsReasoningEffort: true,
599
- price: { input: toCnyCredits(3), output: toCnyCredits(9) },
600
- provider: "qwen",
601
- description: "\u5343\u95EE3 \u7F16\u7A0B\u65D7\u8230\uFF0C1M \u957F\u4E0A\u4E0B\u6587\uFF0C\u9002\u5408\u4EE3\u7801\u751F\u6210\u4E0E Agent \u7F16\u7A0B\u3002"
436
+ // 官方价:输入 ¥7/M、缓存命中 ¥0.35/M、输出 ¥20/M
437
+ price: {
438
+ input: toCnyCredits(7),
439
+ output: toCnyCredits(20),
440
+ inputCacheHit: toCnyCredits(0.35)
441
+ },
442
+ provider: "stepfun",
443
+ description: "\u9636\u8DC3\u661F\u8FB0\u65B0\u4E00\u4EE3\u65D7\u8230\u591A\u6A21\u6001\u63A8\u7406\u6A21\u578B\uFF0C1M \u4E0A\u4E0B\u6587\uFF0C\u652F\u6301\u590D\u6742\u903B\u8F91\u5206\u89E3\u4E0E\u957F\u7A0B\u89C4\u5212\u3002"
602
444
  },
445
+ // ── 旗舰语言推理 ──
603
446
  {
604
- name: "qwen3-coder-flash",
605
- displayName: "Qwen3 Coder Flash",
447
+ name: "step-3.5-flash",
448
+ displayName: "Step 3.5 Flash",
606
449
  hasVision: false,
607
- contextWindow: 1048576,
450
+ contextWindow: 262144,
608
451
  maxOutputTokens: 65536,
609
452
  jsonOutput: true,
610
453
  fnCall: true,
611
454
  supportsTool: true,
612
455
  supportsReasoningEffort: true,
613
- price: { input: toCnyCredits(1), output: toCnyCredits(3) },
614
- provider: "qwen"
456
+ // 官方价:输入 ¥0.7/M、缓存命中 ¥0.14/M、输出 ¥2.1/M
457
+ price: {
458
+ input: toCnyCredits(0.7),
459
+ output: toCnyCredits(2.1),
460
+ inputCacheHit: toCnyCredits(0.14)
461
+ },
462
+ provider: "stepfun",
463
+ description: "\u9636\u8DC3\u661F\u8FB0\u65D7\u8230\u8BED\u8A00\u63A8\u7406\u6A21\u578B\uFF0C196B \u603B\u53C2\u6570 / 11B \u6FC0\u6D3B\u53C2\u6570 MoE\uFF0C\u9AD8\u901F\u63A8\u7406\u4E0E\u5DE5\u5177\u8C03\u7528\u3002"
615
464
  },
616
465
  {
617
- name: "qwen3-coder-480b-a35b-instruct",
618
- displayName: "Qwen3 Coder 480B A35B Instruct",
466
+ name: "step-3.5-flash-2603",
467
+ displayName: "Step 3.5 Flash (Agent\u4F18\u5316\u7248)",
619
468
  hasVision: false,
620
- contextWindow: 1048576,
469
+ contextWindow: 262144,
621
470
  maxOutputTokens: 65536,
622
471
  jsonOutput: true,
623
472
  fnCall: true,
624
473
  supportsTool: true,
625
474
  supportsReasoningEffort: true,
626
- price: { input: toCnyCredits(5), output: toCnyCredits(15) },
627
- provider: "qwen"
475
+ price: {
476
+ input: toCnyCredits(0.7),
477
+ output: toCnyCredits(2.1),
478
+ inputCacheHit: toCnyCredits(0.14)
479
+ },
480
+ provider: "stepfun",
481
+ description: "\u9488\u5BF9\u9AD8\u9891 Agent \u573A\u666F\u4F18\u5316\uFF0CToken \u6548\u7387\u4E0E\u63A8\u7406\u901F\u5EA6\u66F4\u4F73\uFF0C\u652F\u6301 low/high reasoning_effort\u3002"
628
482
  },
629
- // ── 长上下文 ──
483
+ // ── 经典视觉模型 ──
630
484
  {
631
- name: "qwen-long",
632
- displayName: "Qwen Long",
633
- hasVision: false,
634
- contextWindow: 10485760,
485
+ name: "step-1o-turbo-vision",
486
+ displayName: "Step 1o Turbo Vision",
487
+ hasVision: true,
488
+ contextWindow: 65536,
635
489
  maxOutputTokens: 8192,
636
490
  jsonOutput: true,
637
- fnCall: false,
638
- supportsTool: false,
639
- price: { input: toCnyCredits(0.5), output: toCnyCredits(2) },
640
- provider: "qwen",
641
- description: "10M \u8D85\u957F\u4E0A\u4E0B\u6587\uFF0C\u9002\u5408\u957F\u6587\u6863\u5904\u7406\u3002"
491
+ fnCall: true,
492
+ supportsTool: true,
493
+ price: {
494
+ input: toCnyCredits(2.5),
495
+ output: toCnyCredits(8),
496
+ inputCacheHit: toCnyCredits(0.5)
497
+ },
498
+ provider: "stepfun",
499
+ description: "\u9AD8\u54CD\u5E94\u901F\u5EA6\u89C6\u89C9\u6A21\u578B\uFF0C\u652F\u6301\u56FE\u7247\u4E0E\u6587\u6863\u7406\u89E3\u3002"
642
500
  },
643
- // ── 旧版主力(仍常用) ──
501
+ // ── 经典通用语言模型 ──
644
502
  {
645
- name: "qwen-plus",
646
- displayName: "Qwen Plus",
647
- hasVision: true,
648
- contextWindow: 1048576,
649
- maxOutputTokens: 32768,
503
+ name: "step-2-16k",
504
+ displayName: "Step 2 16K",
505
+ hasVision: false,
506
+ contextWindow: 16384,
507
+ maxOutputTokens: 4096,
650
508
  jsonOutput: true,
651
509
  fnCall: true,
652
510
  supportsTool: true,
653
- supportsReasoningEffort: true,
654
- price: { input: toCnyCredits(0.8), output: toCnyCredits(2) },
655
- provider: "qwen"
511
+ price: { input: toCnyCredits(38), output: toCnyCredits(120) },
512
+ provider: "stepfun",
513
+ description: "\u5343\u4EBF\u53C2\u6570 MoE \u8BED\u8A00\u5927\u6A21\u578B\uFF0C\u9002\u5408\u903B\u8F91\u590D\u6742\u957F\u6587\u672C\u751F\u6210\u3002"
656
514
  },
657
515
  {
658
- name: "qwen-turbo",
659
- displayName: "Qwen Turbo",
516
+ name: "step-1-flash",
517
+ displayName: "Step 1 Flash",
660
518
  hasVision: false,
661
- contextWindow: 131072,
662
- maxOutputTokens: 8192,
519
+ contextWindow: 8192,
520
+ maxOutputTokens: 4096,
663
521
  jsonOutput: true,
664
522
  fnCall: true,
665
523
  supportsTool: true,
666
- price: { input: toCnyCredits(0.3), output: toCnyCredits(0.6) },
667
- provider: "qwen"
524
+ price: { input: toCnyCredits(1), output: toCnyCredits(4) },
525
+ provider: "stepfun"
668
526
  },
669
527
  {
670
- name: "qwen-flash",
671
- displayName: "Qwen Flash",
528
+ name: "step-1-8k",
529
+ displayName: "Step 1 8K",
672
530
  hasVision: false,
673
- contextWindow: 131072,
674
- maxOutputTokens: 8192,
531
+ contextWindow: 8192,
532
+ maxOutputTokens: 4096,
675
533
  jsonOutput: true,
676
534
  fnCall: true,
677
535
  supportsTool: true,
678
- price: { input: toCnyCredits(0.1), output: toCnyCredits(0.3) },
679
- provider: "qwen"
536
+ price: { input: toCnyCredits(5), output: toCnyCredits(20) },
537
+ provider: "stepfun"
680
538
  },
681
- // ── 推理(QwQ) ──
682
539
  {
683
- name: "qwq-plus",
684
- displayName: "QwQ Plus",
540
+ name: "step-1-32k",
541
+ displayName: "Step 1 32K",
542
+ hasVision: false,
543
+ contextWindow: 32768,
544
+ maxOutputTokens: 4096,
545
+ jsonOutput: true,
546
+ fnCall: true,
547
+ supportsTool: true,
548
+ price: { input: toCnyCredits(15), output: toCnyCredits(70) },
549
+ provider: "stepfun"
550
+ },
551
+ {
552
+ name: "step-1-128k",
553
+ displayName: "Step 1 128K",
685
554
  hasVision: false,
686
555
  contextWindow: 131072,
687
- maxOutputTokens: 32768,
556
+ maxOutputTokens: 4096,
688
557
  jsonOutput: true,
689
558
  fnCall: true,
690
559
  supportsTool: true,
691
- supportsReasoningEffort: true,
692
- price: { input: toCnyCredits(2), output: toCnyCredits(8) },
693
- provider: "qwen",
694
- description: "\u6DF1\u5EA6\u601D\u8003\u63A8\u7406\u6A21\u578B\u3002"
560
+ price: { input: toCnyCredits(40), output: toCnyCredits(200) },
561
+ provider: "stepfun"
562
+ },
563
+ {
564
+ name: "step-1-256k",
565
+ displayName: "Step 1 256K",
566
+ hasVision: false,
567
+ contextWindow: 262144,
568
+ maxOutputTokens: 4096,
569
+ jsonOutput: true,
570
+ fnCall: true,
571
+ supportsTool: true,
572
+ price: { input: toCnyCredits(60), output: toCnyCredits(300) },
573
+ provider: "stepfun"
574
+ },
575
+ {
576
+ name: "step-1v-8k",
577
+ displayName: "Step 1V 8K",
578
+ hasVision: true,
579
+ contextWindow: 8192,
580
+ maxOutputTokens: 4096,
581
+ jsonOutput: true,
582
+ fnCall: true,
583
+ supportsTool: true,
584
+ price: { input: toCnyCredits(5), output: toCnyCredits(20) },
585
+ provider: "stepfun"
586
+ },
587
+ {
588
+ name: "step-1v-32k",
589
+ displayName: "Step 1V 32K",
590
+ hasVision: true,
591
+ contextWindow: 32768,
592
+ maxOutputTokens: 4096,
593
+ jsonOutput: true,
594
+ fnCall: true,
595
+ supportsTool: true,
596
+ price: { input: toCnyCredits(15), output: toCnyCredits(70) },
597
+ provider: "stepfun"
695
598
  }
696
599
  ];
697
- var qwenTokenPlanModels = [
698
- // ── 千问 ──
600
+ var stepfunStepPlanModels = [
699
601
  {
700
- name: "qwen3.8-max",
701
- displayName: "Qwen3.8 Max",
602
+ name: "step-5-preview",
603
+ displayName: "Step 5 Preview",
702
604
  hasVision: true,
605
+ // Step Plan 订阅端同样开放 1M context(见 Step Plan / Claude Code 接入文档)
703
606
  contextWindow: 1e6,
704
- maxOutputTokens: 131072,
607
+ maxOutputTokens: 65536,
705
608
  jsonOutput: true,
706
609
  fnCall: true,
707
610
  supportsTool: true,
708
611
  supportsReasoningEffort: true,
709
612
  price: { input: 0, output: 0 },
710
- provider: "qwen",
711
- description: "2.4\u4E07\u4EBF\u53C2\u6570 MoE \u65D7\u8230\uFF0C\u63A8\u7406\u3001\u89C6\u89C9\u7406\u89E3\u3001\u6587\u672C\u751F\u6210\uFF1B1M \u4E0A\u4E0B\u6587\u3001131K \u8F93\u51FA\u3001262K \u601D\u7EF4\u94FE\u3002"
613
+ provider: "stepfun",
614
+ description: "\u9636\u8DC3\u661F\u8FB0\u65B0\u4E00\u4EE3\u65D7\u8230\u591A\u6A21\u6001\u63A8\u7406\u6A21\u578B\uFF0C1M \u4E0A\u4E0B\u6587\uFF0C\u64C5\u957F\u590D\u6742\u4EFB\u52A1\u5206\u89E3\u4E0E\u591A\u6B65\u8BA1\u5212\u3002"
712
615
  },
713
616
  {
714
- name: "qwen3.7-max",
715
- displayName: "Qwen3.7 Max",
716
- hasVision: false,
617
+ name: "step-3.7-flash",
618
+ displayName: "Step 3.7 Flash",
619
+ hasVision: true,
717
620
  contextWindow: 262144,
718
- maxOutputTokens: 32768,
621
+ maxOutputTokens: 65536,
719
622
  jsonOutput: true,
720
623
  fnCall: true,
721
624
  supportsTool: true,
722
625
  supportsReasoningEffort: true,
723
626
  price: { input: 0, output: 0 },
724
- provider: "qwen",
725
- description: "\u63A8\u7406\u6A21\u578B\u3001\u6587\u672C\u751F\u6210\u3002"
627
+ provider: "stepfun",
628
+ description: "\u9636\u8DC3\u661F\u8FB0\u65D7\u8230\u591A\u6A21\u6001\u63A8\u7406\u6A21\u578B\uFF0C256K \u4E0A\u4E0B\u6587\uFF0C\u9AD8\u901F\u63A8\u7406 + \u539F\u751F\u591A\u6A21\u6001 + \u5DE5\u5177\u8C03\u7528\uFF0CAgent \u6DF1\u5EA6\u9002\u914D\u3002"
726
629
  },
727
630
  {
728
- name: "qwen3.7-plus",
729
- displayName: "Qwen3.7 Plus",
730
- hasVision: true,
631
+ name: "step-3.5-flash",
632
+ displayName: "Step 3.5 Flash",
633
+ hasVision: false,
731
634
  contextWindow: 262144,
732
- maxOutputTokens: 32768,
635
+ maxOutputTokens: 65536,
733
636
  jsonOutput: true,
734
637
  fnCall: true,
735
638
  supportsTool: true,
736
639
  supportsReasoningEffort: true,
737
640
  price: { input: 0, output: 0 },
738
- provider: "qwen",
739
- description: "\u63A8\u7406\u6A21\u578B\u3001\u89C6\u89C9\u7406\u89E3\u3001\u6587\u672C\u751F\u6210\u3002"
641
+ provider: "stepfun",
642
+ description: "\u9636\u8DC3\u661F\u8FB0\u65D7\u8230\u8BED\u8A00\u63A8\u7406\u6A21\u578B\uFF0C196B MoE \u67B6\u6784\uFF0C\u9AD8\u901F\u63A8\u7406\u4E0E\u5DE5\u5177\u8C03\u7528\u3002"
740
643
  },
741
644
  {
742
- name: "qwen3.6-flash",
743
- displayName: "Qwen3.6 Flash",
744
- hasVision: true,
645
+ name: "step-3.5-flash-2603",
646
+ displayName: "Step 3.5 Flash (Agent\u4F18\u5316\u7248)",
647
+ hasVision: false,
745
648
  contextWindow: 262144,
746
- maxOutputTokens: 32768,
649
+ maxOutputTokens: 65536,
747
650
  jsonOutput: true,
748
651
  fnCall: true,
749
652
  supportsTool: true,
750
653
  supportsReasoningEffort: true,
751
654
  price: { input: 0, output: 0 },
752
- provider: "qwen",
753
- description: "\u63A8\u7406\u6A21\u578B\u3001\u89C6\u89C9\u7406\u89E3\u3001\u6587\u672C\u751F\u6210\uFF08\u8F7B\u91CF\u5FEB\u901F\uFF09\u3002"
655
+ provider: "stepfun",
656
+ description: "\u9488\u5BF9\u9AD8\u9891 Agent \u573A\u666F\u4F18\u5316\uFF0C\u66F4\u4F73 Token \u6548\u7387\u4E0E\u63A8\u7406\u901F\u5EA6\uFF0C\u652F\u6301 low/high \u63A8\u7406\u5F3A\u5EA6\u3002"
754
657
  },
755
- // ── 智谱 AI ──
756
658
  {
757
- name: "glm-5.2",
758
- displayName: "GLM 5.2",
759
- hasVision: false,
760
- contextWindow: 1e6,
761
- maxOutputTokens: 16384,
659
+ name: "step-1o-turbo-vision",
660
+ displayName: "Step 1o Turbo Vision",
661
+ hasVision: true,
662
+ contextWindow: 65536,
663
+ maxOutputTokens: 8192,
762
664
  jsonOutput: true,
763
665
  fnCall: true,
764
666
  supportsTool: true,
765
- supportsReasoningEffort: true,
766
667
  price: { input: 0, output: 0 },
767
- provider: "qwen",
768
- description: "\u667A\u8C31 AI \u63A8\u7406\u6A21\u578B\u3001\u6587\u672C\u751F\u6210\u3002"
668
+ provider: "stepfun"
769
669
  },
770
- // ── DeepSeek ──
771
670
  {
772
- name: "deepseek-v4-pro",
773
- displayName: "DeepSeek V4 Pro",
671
+ name: "step-2-16k",
672
+ displayName: "Step 2 16K",
774
673
  hasVision: false,
775
- contextWindow: 1e6,
776
- maxOutputTokens: 384e3,
674
+ contextWindow: 16384,
675
+ maxOutputTokens: 4096,
777
676
  jsonOutput: true,
778
677
  fnCall: true,
779
678
  supportsTool: true,
780
- supportsReasoningEffort: true,
781
679
  price: { input: 0, output: 0 },
782
- provider: "qwen",
783
- description: "DeepSeek \u63A8\u7406\u6A21\u578B\u3001\u6587\u672C\u751F\u6210\u3002"
680
+ provider: "stepfun"
784
681
  },
785
- // ── 万相(图片生成)──
786
682
  {
787
- name: "wan2.7-image",
788
- displayName: "Wan2.7 Image",
683
+ name: "step-router-v1",
684
+ displayName: "Step Router V1",
789
685
  hasVision: false,
790
- hasImageOutput: true,
791
- contextWindow: 0,
792
- maxOutputTokens: 0,
793
- price: { input: 0, output: 0 },
794
- provider: "qwen",
795
- description: "\u4E07\u76F8\u56FE\u7247\u751F\u6210\u3002"
796
- },
797
- {
798
- name: "wan2.7-image-pro",
799
- displayName: "Wan2.7 Image Pro",
800
- hasVision: false,
801
- hasImageOutput: true,
802
- contextWindow: 0,
803
- maxOutputTokens: 0,
804
- price: { input: 0, output: 0 },
805
- provider: "qwen",
806
- description: "\u4E07\u76F8\u56FE\u7247\u751F\u6210\uFF08Pro\uFF09\u3002"
807
- }
808
- ];
809
-
810
- // packages/integrations/moonshot/models.ts
811
- var moonshotModels = [
812
- // ── 旗舰 ──
813
- {
814
- name: "kimi-k3",
815
- displayName: "Kimi K3",
816
- hasVision: true,
817
- contextWindow: 1e6,
818
- maxOutputTokens: 262144,
819
- jsonOutput: true,
820
- fnCall: true,
821
- supportsTool: true,
822
- supportsReasoningEffort: true,
823
- price: { input: 24, output: 120 },
824
- provider: "moonshot",
825
- description: "Moonshot \u65D7\u8230\u6A21\u578B\uFF0C\u539F\u751F\u591A\u6A21\u6001\uFF0C1M \u4E0A\u4E0B\u6587\uFF0C\u957F\u7A0B\u7F16\u7A0B\u4E0E\u6DF1\u5EA6\u63A8\u7406\u3002"
826
- },
827
- // ── 通用 ──
828
- {
829
- name: "kimi-k2.6",
830
- displayName: "Kimi K2.6",
831
- hasVision: true,
832
686
  contextWindow: 262144,
833
- maxOutputTokens: 262144,
687
+ maxOutputTokens: 65536,
834
688
  jsonOutput: true,
835
689
  fnCall: true,
836
690
  supportsTool: true,
837
691
  supportsReasoningEffort: true,
838
- price: { input: 4.8, output: 19.2 },
839
- provider: "moonshot",
840
- description: "Moonshot \u9AD8\u6027\u80FD\u901A\u7528\u6A21\u578B\u3002"
692
+ price: { input: 0, output: 0 },
693
+ provider: "stepfun",
694
+ description: "\u667A\u80FD\u8DEF\u7531\u6A21\u578B\uFF0C\u81EA\u52A8\u5728 Step \u7CFB\u5217\u6A21\u578B\u95F4\u8C03\u5EA6\uFF0C\u8BA2\u9605\u53EF\u7528\u3002"
841
695
  }
842
696
  ];
843
- var kimiCodeModels = [
844
- // ── 旗舰编程 ──
697
+
698
+ // packages/integrations/opencode/models.ts
699
+ var opencodeGoModels = [
700
+ // ── OpenAI ──
845
701
  {
846
- name: "k3",
847
- displayName: "Kimi K3",
702
+ name: "gpt-5.6-luna",
703
+ displayName: "GPT-5.6 Luna (Fast)",
848
704
  hasVision: true,
849
- contextWindow: 1e6,
850
- maxOutputTokens: 262144,
705
+ contextWindow: 272e3,
706
+ maxOutputTokens: 128e3,
851
707
  jsonOutput: true,
852
708
  fnCall: true,
853
709
  supportsTool: true,
854
- supportsReasoningEffort: true,
855
710
  price: { input: 0, output: 0 },
856
- provider: "moonshot",
857
- description: "Kimi \u6700\u5F3A\u65D7\u8230\u7F16\u7A0B\u6A21\u578B\uFF0C2.8T \u53C2\u6570\uFF0C1M \u4E0A\u4E0B\u6587\uFF0Clow/high/max \u4E09\u6863\u601D\u8003\u6DF1\u5EA6\uFF0C\u64C5\u957F\u590D\u6742\u5DE5\u7A0B\u4E0E\u957F\u7A0B\u63A8\u7406\u3002Moderato \u53CA\u4EE5\u4E0A\u53EF\u7528\u3002"
711
+ provider: "opencode-go",
712
+ description: "OpenAI GPT-5.6 Luna \u5FEB\u901F\u6A21\u578B\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
858
713
  },
859
- // ── 旗舰编程(256K 上下文版)──
714
+ // gpt-5.6-sol 不在 Go 订阅内:GET /models 不返回它,直接调用返回
715
+ // 401 "Model gpt-5.6-sol is not supported"(实测 2026-08-03)。
716
+ // ── Grok ──
860
717
  {
861
- name: "k3-256k",
862
- displayName: "Kimi K3 256K",
718
+ name: "grok-4.5",
719
+ displayName: "Grok 4.5",
863
720
  hasVision: true,
864
- contextWindow: 262144,
721
+ contextWindow: 5e5,
865
722
  maxOutputTokens: 262144,
866
723
  jsonOutput: true,
867
724
  fnCall: true,
868
725
  supportsTool: true,
869
- supportsReasoningEffort: true,
870
726
  price: { input: 0, output: 0 },
871
- provider: "moonshot",
872
- description: "K3 \u7684 256K \u4E0A\u4E0B\u6587\u7248\uFF0C\u6D88\u8017\u7EA6\u4E3A k3 \u7684\u4E00\u534A\uFF0C\u9002\u5408\u65E5\u5E38\u95EE\u7B54\u4E0E\u4EE3\u7801\u8865\u5168\u3002\u4E0D\u652F\u6301\u89C6\u9891\u8F93\u5165\u3002Moderato \u53CA\u4EE5\u4E0A\u53EF\u7528\u3002"
727
+ provider: "opencode-go",
728
+ description: "xAI Grok 4.5\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
873
729
  },
874
- // ── 成熟编程 ──
730
+ // ── Kimi ──
875
731
  {
876
- name: "kimi-for-coding",
877
- displayName: "Kimi K2.7 Code",
732
+ name: "kimi-k3",
733
+ displayName: "Kimi K3",
878
734
  hasVision: true,
879
- contextWindow: 262144,
735
+ contextWindow: 1e6,
880
736
  maxOutputTokens: 262144,
881
737
  jsonOutput: true,
882
738
  fnCall: true,
883
739
  supportsTool: true,
884
- supportsReasoningEffort: true,
885
740
  price: { input: 0, output: 0 },
886
- provider: "moonshot",
887
- description: "\u6210\u719F\u7A33\u5B9A\u7684 Coding \u6A21\u578B\uFF0CThinking \u5F00\u542F\u4E0B\u53EF\u9760\u9075\u5FAA\u6307\u4EE4\uFF0C\u7F16\u7A0B\u4EFB\u52A1\u6210\u529F\u7387\u9AD8\u3002\u6240\u6709\u4F1A\u5458\u53EF\u7528\u3002"
741
+ provider: "opencode-go",
742
+ description: "Kimi K3 \u65D7\u8230\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
888
743
  },
889
- // ── 高速编程 ──
744
+ // ── Qwen ──
890
745
  {
891
- name: "kimi-for-coding-highspeed",
892
- displayName: "Kimi K2.7 Code \u9AD8\u901F\u7248",
746
+ name: "qwen3.8-max",
747
+ displayName: "Qwen3.8 Max",
893
748
  hasVision: true,
894
749
  contextWindow: 262144,
895
- maxOutputTokens: 262144,
750
+ maxOutputTokens: 32768,
896
751
  jsonOutput: true,
897
752
  fnCall: true,
898
753
  supportsTool: true,
899
- supportsReasoningEffort: true,
900
754
  price: { input: 0, output: 0 },
901
- provider: "moonshot",
902
- description: "K2.7 Code \u9AD8\u901F\u7248\uFF0C\u7F16\u7801\u80FD\u529B\u4E00\u81F4\uFF0C\u8F93\u51FA\u901F\u5EA6\u7EA6 6 \u500D\u3001\u6D88\u8017\u7EA6 3 \u500D\u3002Allegretto \u53CA\u4EE5\u4E0A\u53EF\u7528\u3002"
903
- }
904
- ];
905
-
906
- // packages/integrations/stepfun/models.ts
907
- var stepfunModels = [
908
- // ── 旗舰多模态推理 ──
909
- {
910
- name: "step-3.7-flash",
911
- displayName: "Step 3.7 Flash",
912
- hasVision: true,
913
- contextWindow: 262144,
914
- maxOutputTokens: 65536,
915
- jsonOutput: true,
916
- fnCall: true,
917
- supportsTool: true,
918
- supportsReasoningEffort: true,
919
- // 官方价:输入 ¥1.35/M、缓存命中 ¥0.27/M、输出 ¥8.1/M
920
- price: {
921
- input: toCnyCredits(1.35),
922
- output: toCnyCredits(8.1),
923
- inputCacheHit: toCnyCredits(0.27)
924
- },
925
- provider: "stepfun",
926
- description: "\u9636\u8DC3\u661F\u8FB0\u65D7\u8230\u591A\u6A21\u6001\u63A8\u7406\u6A21\u578B\uFF0C256K \u4E0A\u4E0B\u6587\uFF0C\u9AD8\u901F\u63A8\u7406 + \u539F\u751F\u591A\u6A21\u6001 + \u5DE5\u5177\u8C03\u7528\uFF0C\u9488\u5BF9 Agent \u4E0E Coding \u6DF1\u5EA6\u4F18\u5316\u3002"
927
- },
928
- {
929
- name: "step-5-preview",
930
- displayName: "Step 5 Preview",
931
- hasVision: true,
932
- contextWindow: 262144,
933
- maxOutputTokens: 65536,
934
- jsonOutput: true,
935
- fnCall: true,
936
- supportsTool: true,
937
- supportsReasoningEffort: true,
938
- // 官方价:输入 ¥7/M、缓存命中 ¥0.35/M、输出 ¥20/M
939
- price: {
940
- input: toCnyCredits(7),
941
- output: toCnyCredits(20),
942
- inputCacheHit: toCnyCredits(0.35)
943
- },
944
- provider: "stepfun",
945
- description: "\u9636\u8DC3\u661F\u8FB0\u65B0\u4E00\u4EE3\u65D7\u8230\u591A\u6A21\u6001\u63A8\u7406\u6A21\u578B\uFF0C\u652F\u6301\u590D\u6742\u903B\u8F91\u5206\u89E3\u4E0E\u957F\u7A0B\u89C4\u5212\u3002"
755
+ provider: "opencode-go",
756
+ description: "\u5343\u95EE 3.8 Max \u65D7\u8230\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
946
757
  },
947
- // ── 旗舰语言推理 ──
948
758
  {
949
- name: "step-3.5-flash",
950
- displayName: "Step 3.5 Flash",
759
+ name: "qwen3.7-max",
760
+ displayName: "Qwen3.7 Max",
951
761
  hasVision: false,
952
762
  contextWindow: 262144,
953
- maxOutputTokens: 65536,
763
+ maxOutputTokens: 32768,
954
764
  jsonOutput: true,
955
765
  fnCall: true,
956
766
  supportsTool: true,
957
- supportsReasoningEffort: true,
958
- // 官方价:输入 ¥0.7/M、缓存命中 ¥0.14/M、输出 ¥2.1/M
959
- price: {
960
- input: toCnyCredits(0.7),
961
- output: toCnyCredits(2.1),
962
- inputCacheHit: toCnyCredits(0.14)
963
- },
964
- provider: "stepfun",
965
- description: "\u9636\u8DC3\u661F\u8FB0\u65D7\u8230\u8BED\u8A00\u63A8\u7406\u6A21\u578B\uFF0C196B \u603B\u53C2\u6570 / 11B \u6FC0\u6D3B\u53C2\u6570 MoE\uFF0C\u9AD8\u901F\u63A8\u7406\u4E0E\u5DE5\u5177\u8C03\u7528\u3002"
767
+ price: { input: 0, output: 0 },
768
+ provider: "opencode-go",
769
+ description: "\u5343\u95EE 3.7 Max\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
966
770
  },
771
+ // ── GLM ──
967
772
  {
968
- name: "step-3.5-flash-2603",
969
- displayName: "Step 3.5 Flash (Agent\u4F18\u5316\u7248)",
773
+ name: "glm-5.2",
774
+ displayName: "GLM 5.2",
970
775
  hasVision: false,
971
- contextWindow: 262144,
972
- maxOutputTokens: 65536,
973
- jsonOutput: true,
974
- fnCall: true,
975
- supportsTool: true,
976
- supportsReasoningEffort: true,
977
- price: {
978
- input: toCnyCredits(0.7),
979
- output: toCnyCredits(2.1),
980
- inputCacheHit: toCnyCredits(0.14)
981
- },
982
- provider: "stepfun",
983
- description: "\u9488\u5BF9\u9AD8\u9891 Agent \u573A\u666F\u4F18\u5316\uFF0CToken \u6548\u7387\u4E0E\u63A8\u7406\u901F\u5EA6\u66F4\u4F73\uFF0C\u652F\u6301 low/high reasoning_effort\u3002"
984
- },
985
- // ── 经典视觉模型 ──
986
- {
987
- name: "step-1o-turbo-vision",
988
- displayName: "Step 1o Turbo Vision",
989
- hasVision: true,
990
- contextWindow: 65536,
991
- maxOutputTokens: 8192,
776
+ contextWindow: 1e6,
777
+ maxOutputTokens: 16384,
992
778
  jsonOutput: true,
993
779
  fnCall: true,
994
780
  supportsTool: true,
995
- price: {
996
- input: toCnyCredits(2.5),
997
- output: toCnyCredits(8),
998
- inputCacheHit: toCnyCredits(0.5)
999
- },
1000
- provider: "stepfun",
1001
- description: "\u9AD8\u54CD\u5E94\u901F\u5EA6\u89C6\u89C9\u6A21\u578B\uFF0C\u652F\u6301\u56FE\u7247\u4E0E\u6587\u6863\u7406\u89E3\u3002"
781
+ price: { input: 0, output: 0 },
782
+ provider: "opencode-go",
783
+ description: "\u667A\u8C31 GLM 5.2\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
1002
784
  },
1003
- // ── 经典通用语言模型 ──
785
+ // ── MiMo ──
1004
786
  {
1005
- name: "step-2-16k",
1006
- displayName: "Step 2 16K",
787
+ name: "mimo-v2.5-pro",
788
+ displayName: "MiMo V2.5 Pro",
1007
789
  hasVision: false,
1008
- contextWindow: 16384,
1009
- maxOutputTokens: 4096,
790
+ contextWindow: 131072,
791
+ maxOutputTokens: 16384,
1010
792
  jsonOutput: true,
1011
793
  fnCall: true,
1012
794
  supportsTool: true,
1013
- price: { input: toCnyCredits(38), output: toCnyCredits(120) },
1014
- provider: "stepfun",
1015
- description: "\u5343\u4EBF\u53C2\u6570 MoE \u8BED\u8A00\u5927\u6A21\u578B\uFF0C\u9002\u5408\u903B\u8F91\u590D\u6742\u957F\u6587\u672C\u751F\u6210\u3002"
795
+ price: { input: 0, output: 0 },
796
+ provider: "opencode-go",
797
+ description: "\u5C0F\u7C73 MiMo V2.5 Pro\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
1016
798
  },
799
+ // ── MiniMax ──
1017
800
  {
1018
- name: "step-1-flash",
1019
- displayName: "Step 1 Flash",
1020
- hasVision: false,
1021
- contextWindow: 8192,
1022
- maxOutputTokens: 4096,
801
+ name: "minimax-m3",
802
+ displayName: "MiniMax M3",
803
+ hasVision: true,
804
+ contextWindow: 1e6,
805
+ maxOutputTokens: 262144,
1023
806
  jsonOutput: true,
1024
807
  fnCall: true,
1025
808
  supportsTool: true,
1026
- price: { input: toCnyCredits(1), output: toCnyCredits(4) },
1027
- provider: "stepfun"
809
+ price: { input: 0, output: 0 },
810
+ provider: "opencode-go",
811
+ description: "MiniMax M3\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
1028
812
  },
813
+ // ── DeepSeek ──
1029
814
  {
1030
- name: "step-1-8k",
1031
- displayName: "Step 1 8K",
815
+ name: "deepseek-v4-pro",
816
+ displayName: "DeepSeek V4 Pro",
1032
817
  hasVision: false,
1033
- contextWindow: 8192,
1034
- maxOutputTokens: 4096,
818
+ contextWindow: 1e6,
819
+ maxOutputTokens: 384e3,
1035
820
  jsonOutput: true,
1036
821
  fnCall: true,
1037
822
  supportsTool: true,
1038
- price: { input: toCnyCredits(5), output: toCnyCredits(20) },
1039
- provider: "stepfun"
823
+ price: { input: 0, output: 0 },
824
+ provider: "opencode-go",
825
+ description: "DeepSeek V4 Pro\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
1040
826
  },
1041
827
  {
1042
- name: "step-1-32k",
1043
- displayName: "Step 1 32K",
828
+ name: "deepseek-v4-flash",
829
+ displayName: "DeepSeek V4 Flash",
1044
830
  hasVision: false,
1045
- contextWindow: 32768,
1046
- maxOutputTokens: 4096,
1047
- jsonOutput: true,
1048
- fnCall: true,
1049
- supportsTool: true,
1050
- price: { input: toCnyCredits(15), output: toCnyCredits(70) },
1051
- provider: "stepfun"
1052
- },
1053
- {
1054
- name: "step-1-128k",
1055
- displayName: "Step 1 128K",
1056
- hasVision: false,
1057
- contextWindow: 131072,
1058
- maxOutputTokens: 4096,
1059
- jsonOutput: true,
1060
- fnCall: true,
1061
- supportsTool: true,
1062
- price: { input: toCnyCredits(40), output: toCnyCredits(200) },
1063
- provider: "stepfun"
1064
- },
1065
- {
1066
- name: "step-1-256k",
1067
- displayName: "Step 1 256K",
1068
- hasVision: false,
1069
- contextWindow: 262144,
1070
- maxOutputTokens: 4096,
1071
- jsonOutput: true,
1072
- fnCall: true,
1073
- supportsTool: true,
1074
- price: { input: toCnyCredits(60), output: toCnyCredits(300) },
1075
- provider: "stepfun"
1076
- },
1077
- {
1078
- name: "step-1v-8k",
1079
- displayName: "Step 1V 8K",
1080
- hasVision: true,
1081
- contextWindow: 8192,
1082
- maxOutputTokens: 4096,
1083
- jsonOutput: true,
1084
- fnCall: true,
1085
- supportsTool: true,
1086
- price: { input: toCnyCredits(5), output: toCnyCredits(20) },
1087
- provider: "stepfun"
1088
- },
1089
- {
1090
- name: "step-1v-32k",
1091
- displayName: "Step 1V 32K",
1092
- hasVision: true,
1093
- contextWindow: 32768,
1094
- maxOutputTokens: 4096,
1095
- jsonOutput: true,
1096
- fnCall: true,
1097
- supportsTool: true,
1098
- price: { input: toCnyCredits(15), output: toCnyCredits(70) },
1099
- provider: "stepfun"
1100
- }
1101
- ];
1102
- var stepfunStepPlanModels = [
1103
- {
1104
- name: "step-3.7-flash",
1105
- displayName: "Step 3.7 Flash",
1106
- hasVision: true,
1107
- contextWindow: 262144,
1108
- maxOutputTokens: 65536,
1109
- jsonOutput: true,
1110
- fnCall: true,
1111
- supportsTool: true,
1112
- supportsReasoningEffort: true,
1113
- price: { input: 0, output: 0 },
1114
- provider: "stepfun",
1115
- description: "\u9636\u8DC3\u661F\u8FB0\u65D7\u8230\u591A\u6A21\u6001\u63A8\u7406\u6A21\u578B\uFF0C256K \u4E0A\u4E0B\u6587\uFF0C\u9AD8\u901F\u63A8\u7406 + \u539F\u751F\u591A\u6A21\u6001 + \u5DE5\u5177\u8C03\u7528\uFF0CAgent \u6DF1\u5EA6\u9002\u914D\u3002"
1116
- },
1117
- {
1118
- name: "step-5-preview",
1119
- displayName: "Step 5 Preview",
1120
- hasVision: true,
1121
- contextWindow: 262144,
1122
- maxOutputTokens: 65536,
1123
- jsonOutput: true,
1124
- fnCall: true,
1125
- supportsTool: true,
1126
- supportsReasoningEffort: true,
1127
- price: { input: 0, output: 0 },
1128
- provider: "stepfun",
1129
- description: "\u9636\u8DC3\u661F\u8FB0\u65B0\u4E00\u4EE3\u65D7\u8230\u591A\u6A21\u6001\u63A8\u7406\u6A21\u578B\uFF0C\u64C5\u957F\u590D\u6742\u4EFB\u52A1\u5206\u89E3\u4E0E\u591A\u6B65\u8BA1\u5212\u3002"
1130
- },
1131
- {
1132
- name: "step-3.5-flash",
1133
- displayName: "Step 3.5 Flash",
1134
- hasVision: false,
1135
- contextWindow: 262144,
1136
- maxOutputTokens: 65536,
1137
- jsonOutput: true,
1138
- fnCall: true,
1139
- supportsTool: true,
1140
- supportsReasoningEffort: true,
1141
- price: { input: 0, output: 0 },
1142
- provider: "stepfun",
1143
- description: "\u9636\u8DC3\u661F\u8FB0\u65D7\u8230\u8BED\u8A00\u63A8\u7406\u6A21\u578B\uFF0C196B MoE \u67B6\u6784\uFF0C\u9AD8\u901F\u63A8\u7406\u4E0E\u5DE5\u5177\u8C03\u7528\u3002"
1144
- },
1145
- {
1146
- name: "step-3.5-flash-2603",
1147
- displayName: "Step 3.5 Flash (Agent\u4F18\u5316\u7248)",
1148
- hasVision: false,
1149
- contextWindow: 262144,
1150
- maxOutputTokens: 65536,
1151
- jsonOutput: true,
1152
- fnCall: true,
1153
- supportsTool: true,
1154
- supportsReasoningEffort: true,
1155
- price: { input: 0, output: 0 },
1156
- provider: "stepfun",
1157
- description: "\u9488\u5BF9\u9AD8\u9891 Agent \u573A\u666F\u4F18\u5316\uFF0C\u66F4\u4F73 Token \u6548\u7387\u4E0E\u63A8\u7406\u901F\u5EA6\uFF0C\u652F\u6301 low/high \u63A8\u7406\u5F3A\u5EA6\u3002"
1158
- },
1159
- {
1160
- name: "step-1o-turbo-vision",
1161
- displayName: "Step 1o Turbo Vision",
1162
- hasVision: true,
1163
- contextWindow: 65536,
1164
- maxOutputTokens: 8192,
1165
- jsonOutput: true,
1166
- fnCall: true,
1167
- supportsTool: true,
1168
- price: { input: 0, output: 0 },
1169
- provider: "stepfun"
1170
- },
1171
- {
1172
- name: "step-2-16k",
1173
- displayName: "Step 2 16K",
1174
- hasVision: false,
1175
- contextWindow: 16384,
1176
- maxOutputTokens: 4096,
831
+ contextWindow: 1e6,
832
+ maxOutputTokens: 384e3,
1177
833
  jsonOutput: true,
1178
834
  fnCall: true,
1179
835
  supportsTool: true,
1180
836
  price: { input: 0, output: 0 },
1181
- provider: "stepfun"
837
+ provider: "opencode-go",
838
+ description: "DeepSeek V4 Flash\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
1182
839
  }
1183
840
  ];
1184
841
 
1185
- // packages/integrations/opencode/models.ts
1186
- var opencodeGoModels = [
1187
- // ── OpenAI ──
1188
- {
1189
- name: "gpt-5.6-luna",
1190
- displayName: "GPT-5.6 Luna (Fast)",
1191
- hasVision: true,
1192
- contextWindow: 272e3,
1193
- maxOutputTokens: 128e3,
1194
- jsonOutput: true,
1195
- fnCall: true,
1196
- supportsTool: true,
1197
- price: { input: 0, output: 0 },
1198
- provider: "opencode-go",
1199
- description: "OpenAI GPT-5.6 Luna \u5FEB\u901F\u6A21\u578B\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
1200
- },
1201
- // gpt-5.6-sol 不在 Go 订阅内:GET /models 不返回它,直接调用返回
1202
- // 401 "Model gpt-5.6-sol is not supported"(实测 2026-08-03)。
1203
- // ── Grok ──
1204
- {
1205
- name: "grok-4.5",
1206
- displayName: "Grok 4.5",
1207
- hasVision: true,
1208
- contextWindow: 5e5,
1209
- maxOutputTokens: 262144,
1210
- jsonOutput: true,
1211
- fnCall: true,
1212
- supportsTool: true,
1213
- price: { input: 0, output: 0 },
1214
- provider: "opencode-go",
1215
- description: "xAI Grok 4.5\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
1216
- },
1217
- // ── Kimi ──
1218
- {
1219
- name: "kimi-k3",
1220
- displayName: "Kimi K3",
1221
- hasVision: true,
1222
- contextWindow: 1e6,
1223
- maxOutputTokens: 262144,
1224
- jsonOutput: true,
1225
- fnCall: true,
1226
- supportsTool: true,
1227
- price: { input: 0, output: 0 },
1228
- provider: "opencode-go",
1229
- description: "Kimi K3 \u65D7\u8230\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
1230
- },
1231
- // ── Qwen ──
1232
- {
1233
- name: "qwen3.8-max",
1234
- displayName: "Qwen3.8 Max",
1235
- hasVision: true,
1236
- contextWindow: 262144,
1237
- maxOutputTokens: 32768,
1238
- jsonOutput: true,
1239
- fnCall: true,
1240
- supportsTool: true,
1241
- price: { input: 0, output: 0 },
1242
- provider: "opencode-go",
1243
- description: "\u5343\u95EE 3.8 Max \u65D7\u8230\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
1244
- },
1245
- {
1246
- name: "qwen3.7-max",
1247
- displayName: "Qwen3.7 Max",
1248
- hasVision: false,
1249
- contextWindow: 262144,
1250
- maxOutputTokens: 32768,
1251
- jsonOutput: true,
1252
- fnCall: true,
1253
- supportsTool: true,
1254
- price: { input: 0, output: 0 },
1255
- provider: "opencode-go",
1256
- description: "\u5343\u95EE 3.7 Max\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
1257
- },
1258
- // ── GLM ──
1259
- {
1260
- name: "glm-5.2",
1261
- displayName: "GLM 5.2",
1262
- hasVision: false,
1263
- contextWindow: 1e6,
1264
- maxOutputTokens: 16384,
1265
- jsonOutput: true,
1266
- fnCall: true,
1267
- supportsTool: true,
1268
- price: { input: 0, output: 0 },
1269
- provider: "opencode-go",
1270
- description: "\u667A\u8C31 GLM 5.2\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
1271
- },
1272
- // ── MiMo ──
1273
- {
1274
- name: "mimo-v2.5-pro",
1275
- displayName: "MiMo V2.5 Pro",
1276
- hasVision: false,
1277
- contextWindow: 131072,
1278
- maxOutputTokens: 16384,
1279
- jsonOutput: true,
1280
- fnCall: true,
1281
- supportsTool: true,
1282
- price: { input: 0, output: 0 },
1283
- provider: "opencode-go",
1284
- description: "\u5C0F\u7C73 MiMo V2.5 Pro\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
1285
- },
1286
- // ── MiniMax ──
842
+ // node_modules/valibot/dist/index.mjs
843
+ var store$4;
844
+ var DEFAULT_CONFIG = {
845
+ lang: void 0,
846
+ message: void 0,
847
+ abortEarly: void 0,
848
+ abortPipeEarly: void 0
849
+ };
850
+ // @__NO_SIDE_EFFECTS__
851
+ function getGlobalConfig(config$1) {
852
+ if (!config$1 && !store$4) return DEFAULT_CONFIG;
853
+ return {
854
+ lang: config$1?.lang ?? store$4?.lang,
855
+ message: config$1?.message,
856
+ abortEarly: config$1?.abortEarly ?? store$4?.abortEarly,
857
+ abortPipeEarly: config$1?.abortPipeEarly ?? store$4?.abortPipeEarly
858
+ };
859
+ }
860
+ var store$3;
861
+ // @__NO_SIDE_EFFECTS__
862
+ function getGlobalMessage(lang) {
863
+ return store$3?.get(lang);
864
+ }
865
+ var store$2;
866
+ // @__NO_SIDE_EFFECTS__
867
+ function getSchemaMessage(lang) {
868
+ return store$2?.get(lang);
869
+ }
870
+ var store$1;
871
+ // @__NO_SIDE_EFFECTS__
872
+ function getSpecificMessage(reference, lang) {
873
+ return store$1?.get(reference)?.get(lang);
874
+ }
875
+ // @__NO_SIDE_EFFECTS__
876
+ function _stringify(input) {
877
+ const type = typeof input;
878
+ if (type === "string") return `"${input}"`;
879
+ if (type === "number" || type === "bigint" || type === "boolean") return `${input}`;
880
+ if (type === "object" || type === "function") return (input && Object.getPrototypeOf(input)?.constructor?.name) ?? "null";
881
+ return type;
882
+ }
883
+ function _addIssue(context, label, dataset, config$1, other) {
884
+ const input = other && "input" in other ? other.input : dataset.value;
885
+ const expected = other?.expected ?? context.expects ?? null;
886
+ const received = other?.received ?? /* @__PURE__ */ _stringify(input);
887
+ const issue = {
888
+ kind: context.kind,
889
+ type: context.type,
890
+ input,
891
+ expected,
892
+ received,
893
+ message: `Invalid ${label}: ${expected ? `Expected ${expected} but r` : "R"}eceived ${received}`,
894
+ requirement: context.requirement,
895
+ path: other?.path,
896
+ issues: other?.issues,
897
+ lang: config$1.lang,
898
+ abortEarly: config$1.abortEarly,
899
+ abortPipeEarly: config$1.abortPipeEarly
900
+ };
901
+ const isSchema = context.kind === "schema";
902
+ const message$1 = other?.message ?? context.message ?? /* @__PURE__ */ getSpecificMessage(context.reference, issue.lang) ?? (isSchema ? /* @__PURE__ */ getSchemaMessage(issue.lang) : null) ?? config$1.message ?? /* @__PURE__ */ getGlobalMessage(issue.lang);
903
+ if (message$1 !== void 0) issue.message = typeof message$1 === "function" ? message$1(issue) : message$1;
904
+ if (isSchema) dataset.typed = false;
905
+ if (dataset.issues) dataset.issues.push(issue);
906
+ else dataset.issues = [issue];
907
+ }
908
+ // @__NO_SIDE_EFFECTS__
909
+ function _isSameValueZero(value1, value2) {
910
+ return value1 === value2 || Number.isNaN(value1) && Number.isNaN(value2);
911
+ }
912
+ // @__NO_SIDE_EFFECTS__
913
+ function _isValidObjectKey(object$1, key) {
914
+ return Object.prototype.hasOwnProperty.call(object$1, key) && key !== "__proto__" && key !== "prototype" && key !== "constructor";
915
+ }
916
+ // @__NO_SIDE_EFFECTS__
917
+ function _joinExpects(values$1, separator) {
918
+ const list = [...new Set(values$1)];
919
+ if (list.length > 1) return `(${list.join(` ${separator} `)})`;
920
+ return list[0] ?? "never";
921
+ }
922
+ function _standardSchema(schema) {
923
+ schema["~standard"] = {
924
+ version: 1,
925
+ vendor: "valibot",
926
+ validate: (value$1) => schema["~run"]({ value: value$1 }, /* @__PURE__ */ getGlobalConfig())
927
+ };
928
+ return schema;
929
+ }
930
+ var EMOJI_REGEX = new RegExp("^(?:[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|(?![\\p{Emoji_Modifier_Base}\\u{1F1E6}-\\u{1F1FF}])\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|(?![\\p{Emoji_Modifier_Base}\\u{1F1E6}-\\u{1F1FF}])\\p{Emoji_Presentation}))*)+$", "u");
931
+ // @__NO_SIDE_EFFECTS__
932
+ function minLength(requirement, message$1) {
933
+ return {
934
+ kind: "validation",
935
+ type: "min_length",
936
+ reference: minLength,
937
+ async: false,
938
+ expects: `>=${requirement}`,
939
+ requirement,
940
+ message: message$1,
941
+ "~run"(dataset, config$1) {
942
+ if (dataset.typed && dataset.value.length < this.requirement) _addIssue(this, "length", dataset, config$1, { received: `${dataset.value.length}` });
943
+ return dataset;
944
+ }
945
+ };
946
+ }
947
+ // @__NO_SIDE_EFFECTS__
948
+ function transform(operation) {
949
+ return {
950
+ kind: "transformation",
951
+ type: "transform",
952
+ reference: transform,
953
+ async: false,
954
+ operation,
955
+ "~run"(dataset) {
956
+ dataset.value = this.operation(dataset.value);
957
+ return dataset;
958
+ }
959
+ };
960
+ }
961
+ // @__NO_SIDE_EFFECTS__
962
+ function trim() {
963
+ return {
964
+ kind: "transformation",
965
+ type: "trim",
966
+ reference: trim,
967
+ async: false,
968
+ "~run"(dataset) {
969
+ dataset.value = dataset.value.trim();
970
+ return dataset;
971
+ }
972
+ };
973
+ }
974
+ // @__NO_SIDE_EFFECTS__
975
+ function getFallback(schema, dataset, config$1) {
976
+ return typeof schema.fallback === "function" ? schema.fallback(dataset, config$1) : schema.fallback;
977
+ }
978
+ // @__NO_SIDE_EFFECTS__
979
+ function getDefault(schema, dataset, config$1) {
980
+ return typeof schema.default === "function" ? schema.default(dataset, config$1) : schema.default;
981
+ }
982
+ // @__NO_SIDE_EFFECTS__
983
+ function array(item, message$1) {
984
+ return _standardSchema({
985
+ kind: "schema",
986
+ type: "array",
987
+ reference: array,
988
+ expects: "Array",
989
+ async: false,
990
+ item,
991
+ message: message$1,
992
+ "~run"(dataset, config$1) {
993
+ const input = dataset.value;
994
+ if (Array.isArray(input)) {
995
+ dataset.typed = true;
996
+ dataset.value = [];
997
+ for (let key = 0; key < input.length; key++) {
998
+ const value$1 = input[key];
999
+ const itemDataset = this.item["~run"]({ value: value$1 }, config$1);
1000
+ if (itemDataset.issues) {
1001
+ const pathItem = {
1002
+ type: "array",
1003
+ origin: "value",
1004
+ input,
1005
+ key,
1006
+ value: value$1
1007
+ };
1008
+ for (const issue of itemDataset.issues) {
1009
+ if (issue.path) issue.path.unshift(pathItem);
1010
+ else issue.path = [pathItem];
1011
+ dataset.issues?.push(issue);
1012
+ }
1013
+ if (!dataset.issues) dataset.issues = itemDataset.issues;
1014
+ if (config$1.abortEarly) {
1015
+ dataset.typed = false;
1016
+ break;
1017
+ }
1018
+ }
1019
+ if (!itemDataset.typed) dataset.typed = false;
1020
+ dataset.value.push(itemDataset.value);
1021
+ }
1022
+ } else _addIssue(this, "type", dataset, config$1);
1023
+ return dataset;
1024
+ }
1025
+ });
1026
+ }
1027
+ // @__NO_SIDE_EFFECTS__
1028
+ function literal(literal_, message$1) {
1029
+ return _standardSchema({
1030
+ kind: "schema",
1031
+ type: "literal",
1032
+ reference: literal,
1033
+ expects: /* @__PURE__ */ _stringify(literal_),
1034
+ async: false,
1035
+ literal: literal_,
1036
+ message: message$1,
1037
+ "~run"(dataset, config$1) {
1038
+ if (/* @__PURE__ */ _isSameValueZero(dataset.value, this.literal)) dataset.typed = true;
1039
+ else _addIssue(this, "type", dataset, config$1);
1040
+ return dataset;
1041
+ }
1042
+ });
1043
+ }
1044
+ // @__NO_SIDE_EFFECTS__
1045
+ function looseObject(entries$1, message$1) {
1046
+ return _standardSchema({
1047
+ kind: "schema",
1048
+ type: "loose_object",
1049
+ reference: looseObject,
1050
+ expects: "Object",
1051
+ async: false,
1052
+ entries: entries$1,
1053
+ message: message$1,
1054
+ "~run"(dataset, config$1) {
1055
+ const input = dataset.value;
1056
+ if (input && typeof input === "object") {
1057
+ dataset.typed = true;
1058
+ dataset.value = {};
1059
+ for (const key in this.entries) {
1060
+ const valueSchema = this.entries[key];
1061
+ if (key in input || (valueSchema.type === "exact_optional" || valueSchema.type === "optional" || valueSchema.type === "nullish") && valueSchema.default !== void 0) {
1062
+ const value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);
1063
+ const valueDataset = valueSchema["~run"]({ value: value$1 }, config$1);
1064
+ if (valueDataset.issues) {
1065
+ const pathItem = {
1066
+ type: "object",
1067
+ origin: "value",
1068
+ input,
1069
+ key,
1070
+ value: value$1
1071
+ };
1072
+ for (const issue of valueDataset.issues) {
1073
+ if (issue.path) issue.path.unshift(pathItem);
1074
+ else issue.path = [pathItem];
1075
+ dataset.issues?.push(issue);
1076
+ }
1077
+ if (!dataset.issues) dataset.issues = valueDataset.issues;
1078
+ if (config$1.abortEarly) {
1079
+ dataset.typed = false;
1080
+ break;
1081
+ }
1082
+ }
1083
+ if (!valueDataset.typed) dataset.typed = false;
1084
+ dataset.value[key] = valueDataset.value;
1085
+ } else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);
1086
+ else if (valueSchema.type !== "exact_optional" && valueSchema.type !== "optional" && valueSchema.type !== "nullish") {
1087
+ _addIssue(this, "key", dataset, config$1, {
1088
+ input: void 0,
1089
+ expected: `"${key}"`,
1090
+ path: [{
1091
+ type: "object",
1092
+ origin: "key",
1093
+ input,
1094
+ key,
1095
+ value: input[key]
1096
+ }]
1097
+ });
1098
+ if (config$1.abortEarly) break;
1099
+ }
1100
+ }
1101
+ if (!dataset.issues || !config$1.abortEarly) {
1102
+ for (const key in input) if (/* @__PURE__ */ _isValidObjectKey(input, key) && !Object.prototype.hasOwnProperty.call(this.entries, key)) dataset.value[key] = input[key];
1103
+ }
1104
+ } else _addIssue(this, "type", dataset, config$1);
1105
+ return dataset;
1106
+ }
1107
+ });
1108
+ }
1109
+ // @__NO_SIDE_EFFECTS__
1110
+ function object(entries$1, message$1) {
1111
+ return _standardSchema({
1112
+ kind: "schema",
1113
+ type: "object",
1114
+ reference: object,
1115
+ expects: "Object",
1116
+ async: false,
1117
+ entries: entries$1,
1118
+ message: message$1,
1119
+ "~run"(dataset, config$1) {
1120
+ const input = dataset.value;
1121
+ if (input && typeof input === "object") {
1122
+ dataset.typed = true;
1123
+ dataset.value = {};
1124
+ for (const key in this.entries) {
1125
+ const valueSchema = this.entries[key];
1126
+ if (key in input || (valueSchema.type === "exact_optional" || valueSchema.type === "optional" || valueSchema.type === "nullish") && valueSchema.default !== void 0) {
1127
+ const value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);
1128
+ const valueDataset = valueSchema["~run"]({ value: value$1 }, config$1);
1129
+ if (valueDataset.issues) {
1130
+ const pathItem = {
1131
+ type: "object",
1132
+ origin: "value",
1133
+ input,
1134
+ key,
1135
+ value: value$1
1136
+ };
1137
+ for (const issue of valueDataset.issues) {
1138
+ if (issue.path) issue.path.unshift(pathItem);
1139
+ else issue.path = [pathItem];
1140
+ dataset.issues?.push(issue);
1141
+ }
1142
+ if (!dataset.issues) dataset.issues = valueDataset.issues;
1143
+ if (config$1.abortEarly) {
1144
+ dataset.typed = false;
1145
+ break;
1146
+ }
1147
+ }
1148
+ if (!valueDataset.typed) dataset.typed = false;
1149
+ dataset.value[key] = valueDataset.value;
1150
+ } else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);
1151
+ else if (valueSchema.type !== "exact_optional" && valueSchema.type !== "optional" && valueSchema.type !== "nullish") {
1152
+ _addIssue(this, "key", dataset, config$1, {
1153
+ input: void 0,
1154
+ expected: `"${key}"`,
1155
+ path: [{
1156
+ type: "object",
1157
+ origin: "key",
1158
+ input,
1159
+ key,
1160
+ value: input[key]
1161
+ }]
1162
+ });
1163
+ if (config$1.abortEarly) break;
1164
+ }
1165
+ }
1166
+ } else _addIssue(this, "type", dataset, config$1);
1167
+ return dataset;
1168
+ }
1169
+ });
1170
+ }
1171
+ // @__NO_SIDE_EFFECTS__
1172
+ function optional(wrapped, default_) {
1173
+ return _standardSchema({
1174
+ kind: "schema",
1175
+ type: "optional",
1176
+ reference: optional,
1177
+ expects: `(${wrapped.expects} | undefined)`,
1178
+ async: false,
1179
+ wrapped,
1180
+ default: default_,
1181
+ "~run"(dataset, config$1) {
1182
+ if (dataset.value === void 0) {
1183
+ if (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault(this, dataset, config$1);
1184
+ if (dataset.value === void 0) {
1185
+ dataset.typed = true;
1186
+ return dataset;
1187
+ }
1188
+ }
1189
+ return this.wrapped["~run"](dataset, config$1);
1190
+ }
1191
+ });
1192
+ }
1193
+ // @__NO_SIDE_EFFECTS__
1194
+ function picklist(options, message$1) {
1195
+ return _standardSchema({
1196
+ kind: "schema",
1197
+ type: "picklist",
1198
+ reference: picklist,
1199
+ expects: /* @__PURE__ */ _joinExpects(options.map(_stringify), "|"),
1200
+ async: false,
1201
+ options,
1202
+ message: message$1,
1203
+ "~run"(dataset, config$1) {
1204
+ if (this.options.includes(dataset.value)) dataset.typed = true;
1205
+ else _addIssue(this, "type", dataset, config$1);
1206
+ return dataset;
1207
+ }
1208
+ });
1209
+ }
1210
+ // @__NO_SIDE_EFFECTS__
1211
+ function record(key, value$1, message$1) {
1212
+ return _standardSchema({
1213
+ kind: "schema",
1214
+ type: "record",
1215
+ reference: record,
1216
+ expects: "Object",
1217
+ async: false,
1218
+ key,
1219
+ value: value$1,
1220
+ message: message$1,
1221
+ "~run"(dataset, config$1) {
1222
+ const input = dataset.value;
1223
+ if (input && typeof input === "object") {
1224
+ dataset.typed = true;
1225
+ dataset.value = {};
1226
+ for (const entryKey in input) if (/* @__PURE__ */ _isValidObjectKey(input, entryKey)) {
1227
+ const entryValue = input[entryKey];
1228
+ const keyDataset = this.key["~run"]({ value: entryKey }, config$1);
1229
+ if (keyDataset.issues) {
1230
+ const pathItem = {
1231
+ type: "object",
1232
+ origin: "key",
1233
+ input,
1234
+ key: entryKey,
1235
+ value: entryValue
1236
+ };
1237
+ for (const issue of keyDataset.issues) {
1238
+ issue.path = [pathItem];
1239
+ dataset.issues?.push(issue);
1240
+ }
1241
+ if (!dataset.issues) dataset.issues = keyDataset.issues;
1242
+ if (config$1.abortEarly) {
1243
+ dataset.typed = false;
1244
+ break;
1245
+ }
1246
+ }
1247
+ const valueDataset = this.value["~run"]({ value: entryValue }, config$1);
1248
+ if (valueDataset.issues) {
1249
+ const pathItem = {
1250
+ type: "object",
1251
+ origin: "value",
1252
+ input,
1253
+ key: entryKey,
1254
+ value: entryValue
1255
+ };
1256
+ for (const issue of valueDataset.issues) {
1257
+ if (issue.path) issue.path.unshift(pathItem);
1258
+ else issue.path = [pathItem];
1259
+ dataset.issues?.push(issue);
1260
+ }
1261
+ if (!dataset.issues) dataset.issues = valueDataset.issues;
1262
+ if (config$1.abortEarly) {
1263
+ dataset.typed = false;
1264
+ break;
1265
+ }
1266
+ }
1267
+ if (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;
1268
+ if (keyDataset.typed) dataset.value[keyDataset.value] = valueDataset.value;
1269
+ }
1270
+ } else _addIssue(this, "type", dataset, config$1);
1271
+ return dataset;
1272
+ }
1273
+ });
1274
+ }
1275
+ // @__NO_SIDE_EFFECTS__
1276
+ function string(message$1) {
1277
+ return _standardSchema({
1278
+ kind: "schema",
1279
+ type: "string",
1280
+ reference: string,
1281
+ expects: "string",
1282
+ async: false,
1283
+ message: message$1,
1284
+ "~run"(dataset, config$1) {
1285
+ if (typeof dataset.value === "string") dataset.typed = true;
1286
+ else _addIssue(this, "type", dataset, config$1);
1287
+ return dataset;
1288
+ }
1289
+ });
1290
+ }
1291
+ // @__NO_SIDE_EFFECTS__
1292
+ function pipe(...pipe$1) {
1293
+ return _standardSchema({
1294
+ ...pipe$1[0],
1295
+ pipe: pipe$1,
1296
+ "~run"(dataset, config$1) {
1297
+ for (const item of pipe$1) if (item.kind !== "metadata") {
1298
+ if (dataset.issues && (item.kind === "schema" || item.kind === "transformation")) {
1299
+ dataset.typed = false;
1300
+ break;
1301
+ }
1302
+ if (!dataset.issues || !config$1.abortEarly && !config$1.abortPipeEarly) dataset = item["~run"](dataset, config$1);
1303
+ }
1304
+ return dataset;
1305
+ }
1306
+ });
1307
+ }
1308
+
1309
+ // packages/ai/agent/createAgentSchema.ts
1310
+ var DEFAULT_REASONING_EFFORT = "medium";
1311
+ var PROVIDER_REASONING_EFFORT_VALUES = {
1312
+ openai: ["none", "minimal", "low", "medium", "high", "xhigh", "max"],
1313
+ deepseek: ["low", "high", "max"],
1314
+ // nolo (Ollama Cloud) 支持 DeepSeek/Kimi/GLM 等 thinking 模型,
1315
+ // reasoning_effort 通过 OpenAI 兼容端点透传到 Ollama Cloud。
1316
+ nolo: ["low", "high", "max"],
1317
+ xai: ["low", "medium", "high"],
1318
+ grok: ["low", "medium", "high"],
1319
+ // none:关闭思考;必须保留,否则上游 clamp 会把 none 抬成 low,
1320
+ // kimi-code proxy 的 none/off → thinking.disabled 分支永远接不到。
1321
+ kimi: ["none", "low", "high", "max"],
1322
+ moonshot: ["none", "low", "high", "max"],
1323
+ // Qwen 用 enable_thinking (bool) 而非 reasoning_effort → 隐藏下拉
1324
+ qwen: [],
1325
+ // MiniMax M3: 接受这些值但所有非 none 效果相同
1326
+ minimax: ["none", "low", "medium", "high"],
1327
+ // Cursor: 推理强度在模型名后缀 (如 -high),不走独立参数
1328
+ cursor: [],
1329
+ // MiMo: 保守默认
1330
+ mimo: ["low", "medium", "high"],
1331
+ // CommandCode Provider API 透传 reasoning_effort(low/medium/high/xhigh/max),
1332
+ // 端点按各模型支持的子集自动 clamp(见 commandcode.ai/docs/provider-api)。
1333
+ commandcode: ["low", "medium", "high", "xhigh", "max"],
1334
+ // 阶跃星辰(StepFun)推理模型(step-3.5-flash-2603 / step-3.7-flash 等)支持 low / medium / high
1335
+ stepfun: ["none", "low", "medium", "high"]
1336
+ };
1337
+ var greetingMenuItemSchema = object({
1338
+ id: pipe(string(), minLength(1)),
1339
+ label: pipe(string(), minLength(1)),
1340
+ userMessage: optional(string())
1341
+ });
1342
+ var greetingConfigSchema = object({
1343
+ text: optional(pipe(string(), trim())),
1344
+ menu: optional(array(greetingMenuItemSchema))
1345
+ });
1346
+ var runtimeToolPolicySchema = looseObject({
1347
+ version: optional(literal(1)),
1348
+ agentTools: optional(array(string())),
1349
+ runtimeTools: optional(array(string())),
1350
+ workspace: optional(
1351
+ object({
1352
+ mode: optional(picklist(["none", "current", "lease"])),
1353
+ writableRoots: optional(array(string())),
1354
+ cwd: optional(string())
1355
+ })
1356
+ ),
1357
+ shell: optional(record(string(), string())),
1358
+ isolation: optional(record(string(), string())),
1359
+ git: optional(record(string(), string())),
1360
+ budget: optional(record(string(), string())),
1361
+ audit: optional(record(string(), string()))
1362
+ });
1363
+ var referenceItemSchema = pipe(
1364
+ object({
1365
+ dbKey: string(),
1366
+ title: string(),
1367
+ type: picklist(["knowledge", "instruction", "page"])
1368
+ }),
1369
+ transform((data) => ({
1370
+ ...data,
1371
+ type: data.type === "page" ? "knowledge" : data.type
1372
+ }))
1373
+ );
1374
+
1375
+ // packages/integrations/anthropic/anthropicModels.ts
1376
+ var anthropicModels = [
1287
1377
  {
1288
- name: "minimax-m3",
1289
- displayName: "MiniMax M3",
1378
+ name: "claude-3-5-sonnet-latest",
1379
+ displayName: "Claude 3.5 Sonnet",
1290
1380
  hasVision: true,
1291
- contextWindow: 1e6,
1292
- maxOutputTokens: 262144,
1293
- jsonOutput: true,
1294
- fnCall: true,
1295
- supportsTool: true,
1296
- price: { input: 0, output: 0 },
1297
- provider: "opencode-go",
1298
- description: "MiniMax M3\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
1381
+ description: "Our most intelligent model to date",
1382
+ contextWindow: 2e5,
1383
+ maxOutputTokens: 8192,
1384
+ price: {
1385
+ input: 27,
1386
+ output: 135,
1387
+ cachingWrite: 33.75,
1388
+ cachingRead: 2.7
1389
+ }
1299
1390
  },
1300
- // ── DeepSeek ──
1301
1391
  {
1302
- name: "deepseek-v4-pro",
1303
- displayName: "DeepSeek V4 Pro",
1304
- hasVision: false,
1305
- contextWindow: 1e6,
1306
- maxOutputTokens: 384e3,
1307
- jsonOutput: true,
1308
- fnCall: true,
1309
- supportsTool: true,
1310
- price: { input: 0, output: 0 },
1311
- provider: "opencode-go",
1312
- description: "DeepSeek V4 Pro\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
1392
+ name: "claude-3-7-sonnet-latest",
1393
+ displayName: "Claude 3.7 Sonnet",
1394
+ hasVision: true,
1395
+ description: "Our most intelligent model to date",
1396
+ contextWindow: 2e5,
1397
+ maxOutputTokens: 8192,
1398
+ price: {
1399
+ input: 27,
1400
+ output: 135,
1401
+ cachingWrite: 33.75,
1402
+ cachingRead: 2.7
1403
+ }
1313
1404
  },
1314
1405
  {
1315
- name: "deepseek-v4-flash",
1316
- displayName: "DeepSeek V4 Flash",
1406
+ name: "claude-3-5-haiku-20241022",
1407
+ displayName: "Claude 3.5 Haiku",
1317
1408
  hasVision: false,
1318
- contextWindow: 1e6,
1319
- maxOutputTokens: 384e3,
1320
- jsonOutput: true,
1321
- fnCall: true,
1322
- supportsTool: true,
1323
- price: { input: 0, output: 0 },
1324
- provider: "opencode-go",
1325
- description: "DeepSeek V4 Flash\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
1409
+ description: "Fastest, most cost-effective model",
1410
+ contextWindow: 2e5,
1411
+ maxOutputTokens: 8192,
1412
+ price: {
1413
+ input: 7.2,
1414
+ output: 36,
1415
+ cachingWrite: 9,
1416
+ cachingRead: 0.72
1417
+ }
1326
1418
  }
1327
1419
  ];
1328
1420
 
1329
- // node_modules/valibot/dist/index.mjs
1330
- var store$4;
1331
- var DEFAULT_CONFIG = {
1332
- lang: void 0,
1333
- message: void 0,
1334
- abortEarly: void 0,
1335
- abortPipeEarly: void 0
1336
- };
1337
- // @__NO_SIDE_EFFECTS__
1338
- function getGlobalConfig(config$1) {
1339
- if (!config$1 && !store$4) return DEFAULT_CONFIG;
1340
- return {
1341
- lang: config$1?.lang ?? store$4?.lang,
1342
- message: config$1?.message,
1343
- abortEarly: config$1?.abortEarly ?? store$4?.abortEarly,
1344
- abortPipeEarly: config$1?.abortPipeEarly ?? store$4?.abortPipeEarly
1345
- };
1346
- }
1347
- var store$3;
1348
- // @__NO_SIDE_EFFECTS__
1349
- function getGlobalMessage(lang) {
1350
- return store$3?.get(lang);
1351
- }
1352
- var store$2;
1353
- // @__NO_SIDE_EFFECTS__
1354
- function getSchemaMessage(lang) {
1355
- return store$2?.get(lang);
1356
- }
1357
- var store$1;
1358
- // @__NO_SIDE_EFFECTS__
1359
- function getSpecificMessage(reference, lang) {
1360
- return store$1?.get(reference)?.get(lang);
1361
- }
1362
- // @__NO_SIDE_EFFECTS__
1363
- function _stringify(input) {
1364
- const type = typeof input;
1365
- if (type === "string") return `"${input}"`;
1366
- if (type === "number" || type === "bigint" || type === "boolean") return `${input}`;
1367
- if (type === "object" || type === "function") return (input && Object.getPrototypeOf(input)?.constructor?.name) ?? "null";
1368
- return type;
1369
- }
1370
- function _addIssue(context, label, dataset, config$1, other) {
1371
- const input = other && "input" in other ? other.input : dataset.value;
1372
- const expected = other?.expected ?? context.expects ?? null;
1373
- const received = other?.received ?? /* @__PURE__ */ _stringify(input);
1374
- const issue = {
1375
- kind: context.kind,
1376
- type: context.type,
1377
- input,
1378
- expected,
1379
- received,
1380
- message: `Invalid ${label}: ${expected ? `Expected ${expected} but r` : "R"}eceived ${received}`,
1381
- requirement: context.requirement,
1382
- path: other?.path,
1383
- issues: other?.issues,
1384
- lang: config$1.lang,
1385
- abortEarly: config$1.abortEarly,
1386
- abortPipeEarly: config$1.abortPipeEarly
1387
- };
1388
- const isSchema = context.kind === "schema";
1389
- const message$1 = other?.message ?? context.message ?? /* @__PURE__ */ getSpecificMessage(context.reference, issue.lang) ?? (isSchema ? /* @__PURE__ */ getSchemaMessage(issue.lang) : null) ?? config$1.message ?? /* @__PURE__ */ getGlobalMessage(issue.lang);
1390
- if (message$1 !== void 0) issue.message = typeof message$1 === "function" ? message$1(issue) : message$1;
1391
- if (isSchema) dataset.typed = false;
1392
- if (dataset.issues) dataset.issues.push(issue);
1393
- else dataset.issues = [issue];
1394
- }
1395
- // @__NO_SIDE_EFFECTS__
1396
- function _isSameValueZero(value1, value2) {
1397
- return value1 === value2 || Number.isNaN(value1) && Number.isNaN(value2);
1398
- }
1399
- // @__NO_SIDE_EFFECTS__
1400
- function _isValidObjectKey(object$1, key) {
1401
- return Object.prototype.hasOwnProperty.call(object$1, key) && key !== "__proto__" && key !== "prototype" && key !== "constructor";
1402
- }
1403
- // @__NO_SIDE_EFFECTS__
1404
- function _joinExpects(values$1, separator) {
1405
- const list = [...new Set(values$1)];
1406
- if (list.length > 1) return `(${list.join(` ${separator} `)})`;
1407
- return list[0] ?? "never";
1408
- }
1409
- function _standardSchema(schema) {
1410
- schema["~standard"] = {
1411
- version: 1,
1412
- vendor: "valibot",
1413
- validate: (value$1) => schema["~run"]({ value: value$1 }, /* @__PURE__ */ getGlobalConfig())
1414
- };
1415
- return schema;
1421
+ // packages/integrations/anthropic/anthropicOAuthModels.ts
1422
+ var oauthModel = ({ name, displayName, contextWindow, thinkingMode, maxOutputTokens }) => ({
1423
+ name,
1424
+ displayName,
1425
+ hasVision: true,
1426
+ description: `OAuth \u8BA2\u9605\u6A21\u578B\uFF08${displayName}\uFF0C${thinkingMode === "adaptive" ? "Adaptive thinking" : "Extended thinking"}\uFF09`,
1427
+ contextWindow,
1428
+ ...maxOutputTokens ? { maxOutputTokens } : {},
1429
+ supportsReasoningEffort: true,
1430
+ price: { input: 0, output: 0 }
1431
+ });
1432
+ var anthropicOAuthModels = [
1433
+ // 5 代(1M + Adaptive thinking always-on;官方 max output 128k)
1434
+ oauthModel({ name: "claude-fable-5", displayName: "Claude Fable 5", contextWindow: 1e6, thinkingMode: "adaptive", maxOutputTokens: 128e3 }),
1435
+ oauthModel({ name: "claude-opus-5", displayName: "Claude Opus 5", contextWindow: 1e6, thinkingMode: "adaptive", maxOutputTokens: 128e3 }),
1436
+ oauthModel({ name: "claude-sonnet-5", displayName: "Claude Sonnet 5", contextWindow: 1e6, thinkingMode: "adaptive", maxOutputTokens: 128e3 }),
1437
+ // 4.6/4.7/4.8 系(Adaptive thinking;context 官方未单列,参照 fuzzy claude-4.6→1M)
1438
+ oauthModel({ name: "claude-opus-4-8", displayName: "Claude Opus 4.8", contextWindow: 1e6, thinkingMode: "adaptive" }),
1439
+ oauthModel({ name: "claude-opus-4-7", displayName: "Claude Opus 4.7", contextWindow: 1e6, thinkingMode: "adaptive" }),
1440
+ oauthModel({ name: "claude-sonnet-4-6", displayName: "Claude Sonnet 4.6", contextWindow: 1e6, thinkingMode: "adaptive" }),
1441
+ oauthModel({ name: "claude-opus-4-6", displayName: "Claude Opus 4.6", contextWindow: 1e6, thinkingMode: "adaptive" }),
1442
+ // 4.5 系(Extended thinking;官方发布规格 1M)
1443
+ oauthModel({ name: "claude-opus-4-5-20251101", displayName: "Claude Opus 4.5", contextWindow: 1e6, thinkingMode: "extended" }),
1444
+ oauthModel({ name: "claude-sonnet-4-5-20250929", displayName: "Claude Sonnet 4.5", contextWindow: 1e6, thinkingMode: "extended" }),
1445
+ // haiku-4-5(官方明确 context=200k + Extended thinking)
1446
+ oauthModel({ name: "claude-haiku-4-5-20251001", displayName: "Claude Haiku 4.5", contextWindow: 2e5, thinkingMode: "extended" })
1447
+ ];
1448
+ var OAUTH_MODEL_THINKING_MODE = new Map(
1449
+ anthropicOAuthModels.map((m) => [m.name, m.thinkingMode])
1450
+ );
1451
+ function isAdaptiveThinkingModelId(model) {
1452
+ if (!model) return false;
1453
+ const tableMode = OAUTH_MODEL_THINKING_MODE.get(model);
1454
+ if (tableMode === "adaptive") return true;
1455
+ if (tableMode === "extended") return false;
1456
+ const n = model.toLowerCase();
1457
+ return n.includes("fable-5") || n.includes("opus-5") || n.includes("sonnet-5") || n.includes("opus-4-8") || n.includes("opus-4-7") || n.includes("sonnet-4-6") || n.includes("opus-4-6");
1416
1458
  }
1417
- var EMOJI_REGEX = new RegExp("^(?:[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|(?![\\p{Emoji_Modifier_Base}\\u{1F1E6}-\\u{1F1FF}])\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|(?![\\p{Emoji_Modifier_Base}\\u{1F1E6}-\\u{1F1FF}])\\p{Emoji_Presentation}))*)+$", "u");
1418
- // @__NO_SIDE_EFFECTS__
1419
- function minLength(requirement, message$1) {
1420
- return {
1421
- kind: "validation",
1422
- type: "min_length",
1423
- reference: minLength,
1424
- async: false,
1425
- expects: `>=${requirement}`,
1426
- requirement,
1427
- message: message$1,
1428
- "~run"(dataset, config$1) {
1429
- if (dataset.typed && dataset.value.length < this.requirement) _addIssue(this, "length", dataset, config$1, { received: `${dataset.value.length}` });
1430
- return dataset;
1459
+
1460
+ // packages/ai/agent/liveAudioModel.ts
1461
+ var DEFAULT_GOOGLE_LIVE_AUDIO_MODEL = "gemini-3.1-flash-live-preview";
1462
+
1463
+ // packages/integrations/google/models.ts
1464
+ var googleModels = [
1465
+ {
1466
+ name: DEFAULT_GOOGLE_LIVE_AUDIO_MODEL,
1467
+ displayName: "Gemini 3.1 Flash Live",
1468
+ provider: "google",
1469
+ description: "Gemini Live API model for low-latency real-time voice conversations.",
1470
+ hasVision: true,
1471
+ hasAudio: true,
1472
+ contextWindow: 1048576,
1473
+ maxOutputTokens: 65500,
1474
+ supportsTool: true,
1475
+ price: {
1476
+ input: 4,
1477
+ output: 24,
1478
+ cachingWrite: 0.4,
1479
+ cachingRead: 0.4
1431
1480
  }
1432
- };
1433
- }
1434
- // @__NO_SIDE_EFFECTS__
1435
- function transform(operation) {
1436
- return {
1437
- kind: "transformation",
1438
- type: "transform",
1439
- reference: transform,
1440
- async: false,
1441
- operation,
1442
- "~run"(dataset) {
1443
- dataset.value = this.operation(dataset.value);
1444
- return dataset;
1481
+ },
1482
+ {
1483
+ name: "gemini-3.6-flash",
1484
+ displayName: "Gemini 3.6 Flash",
1485
+ provider: "google",
1486
+ description: "Gemini 3.6 Flash model for fast frontier agentic, coding, and multimodal tasks.",
1487
+ hasVision: true,
1488
+ hasAudio: true,
1489
+ contextWindow: 1048576,
1490
+ maxOutputTokens: 65536,
1491
+ supportsTool: true,
1492
+ supportsReasoningEffort: true,
1493
+ price: {
1494
+ input: 12,
1495
+ output: 72,
1496
+ cachingWrite: 1.2,
1497
+ cachingRead: 1.2
1498
+ },
1499
+ serviceTierPriceMultipliers: {
1500
+ batch: { inputOutput: 0.5, cache: 0.5 },
1501
+ flex: { inputOutput: 0.5, cache: 0.08 / 0.15 },
1502
+ priority: { inputOutput: 1.8, cache: 1.8 }
1445
1503
  }
1446
- };
1447
- }
1448
- // @__NO_SIDE_EFFECTS__
1449
- function trim() {
1450
- return {
1451
- kind: "transformation",
1452
- type: "trim",
1453
- reference: trim,
1454
- async: false,
1455
- "~run"(dataset) {
1456
- dataset.value = dataset.value.trim();
1457
- return dataset;
1504
+ },
1505
+ {
1506
+ name: "gemini-3.7-flash",
1507
+ displayName: "Gemini 3.7 Flash",
1508
+ provider: "google",
1509
+ description: "Gemini 3.7 Flash model for fast frontier agentic, coding, and multimodal tasks.",
1510
+ hasVision: true,
1511
+ hasAudio: true,
1512
+ contextWindow: 1048576,
1513
+ maxOutputTokens: 65536,
1514
+ supportsTool: true,
1515
+ supportsReasoningEffort: true,
1516
+ // Antigravity's subscription wire route is tiered; Gemini API uses this logical id.
1517
+ price: {
1518
+ input: 6,
1519
+ output: 30,
1520
+ cachingWrite: 0.6,
1521
+ cachingRead: 0.6
1458
1522
  }
1459
- };
1460
- }
1461
- // @__NO_SIDE_EFFECTS__
1462
- function getFallback(schema, dataset, config$1) {
1463
- return typeof schema.fallback === "function" ? schema.fallback(dataset, config$1) : schema.fallback;
1464
- }
1465
- // @__NO_SIDE_EFFECTS__
1466
- function getDefault(schema, dataset, config$1) {
1467
- return typeof schema.default === "function" ? schema.default(dataset, config$1) : schema.default;
1468
- }
1469
- // @__NO_SIDE_EFFECTS__
1470
- function array(item, message$1) {
1471
- return _standardSchema({
1472
- kind: "schema",
1473
- type: "array",
1474
- reference: array,
1475
- expects: "Array",
1476
- async: false,
1477
- item,
1478
- message: message$1,
1479
- "~run"(dataset, config$1) {
1480
- const input = dataset.value;
1481
- if (Array.isArray(input)) {
1482
- dataset.typed = true;
1483
- dataset.value = [];
1484
- for (let key = 0; key < input.length; key++) {
1485
- const value$1 = input[key];
1486
- const itemDataset = this.item["~run"]({ value: value$1 }, config$1);
1487
- if (itemDataset.issues) {
1488
- const pathItem = {
1489
- type: "array",
1490
- origin: "value",
1491
- input,
1492
- key,
1493
- value: value$1
1494
- };
1495
- for (const issue of itemDataset.issues) {
1496
- if (issue.path) issue.path.unshift(pathItem);
1497
- else issue.path = [pathItem];
1498
- dataset.issues?.push(issue);
1499
- }
1500
- if (!dataset.issues) dataset.issues = itemDataset.issues;
1501
- if (config$1.abortEarly) {
1502
- dataset.typed = false;
1503
- break;
1504
- }
1505
- }
1506
- if (!itemDataset.typed) dataset.typed = false;
1507
- dataset.value.push(itemDataset.value);
1508
- }
1509
- } else _addIssue(this, "type", dataset, config$1);
1510
- return dataset;
1523
+ },
1524
+ {
1525
+ name: "gemini-3.8-flash",
1526
+ displayName: "Gemini 3.8 Flash",
1527
+ provider: "google",
1528
+ description: "Gemini 3.8 Flash model for fast frontier agentic, coding, and multimodal tasks.",
1529
+ hasVision: true,
1530
+ hasAudio: true,
1531
+ contextWindow: 1048576,
1532
+ maxOutputTokens: 65536,
1533
+ supportsTool: true,
1534
+ supportsReasoningEffort: true,
1535
+ price: {
1536
+ input: 6,
1537
+ output: 30,
1538
+ cachingWrite: 0.6,
1539
+ cachingRead: 0.6
1511
1540
  }
1512
- });
1513
- }
1514
- // @__NO_SIDE_EFFECTS__
1515
- function literal(literal_, message$1) {
1516
- return _standardSchema({
1517
- kind: "schema",
1518
- type: "literal",
1519
- reference: literal,
1520
- expects: /* @__PURE__ */ _stringify(literal_),
1521
- async: false,
1522
- literal: literal_,
1523
- message: message$1,
1524
- "~run"(dataset, config$1) {
1525
- if (/* @__PURE__ */ _isSameValueZero(dataset.value, this.literal)) dataset.typed = true;
1526
- else _addIssue(this, "type", dataset, config$1);
1527
- return dataset;
1541
+ },
1542
+ {
1543
+ name: "gemini-2.5-pro",
1544
+ displayName: "Gemini 2.5 Pro",
1545
+ provider: "google",
1546
+ description: "Gemini 2.5 Pro model for complex reasoning, coding, and large context multimodal tasks.",
1547
+ hasVision: true,
1548
+ hasAudio: true,
1549
+ contextWindow: 1048576,
1550
+ maxOutputTokens: 65536,
1551
+ supportsTool: true,
1552
+ supportsReasoningEffort: true,
1553
+ price: {
1554
+ input: 10,
1555
+ output: 40,
1556
+ cachingWrite: 2.5,
1557
+ cachingRead: 2.5
1528
1558
  }
1529
- });
1530
- }
1531
- // @__NO_SIDE_EFFECTS__
1532
- function looseObject(entries$1, message$1) {
1533
- return _standardSchema({
1534
- kind: "schema",
1535
- type: "loose_object",
1536
- reference: looseObject,
1537
- expects: "Object",
1538
- async: false,
1539
- entries: entries$1,
1540
- message: message$1,
1541
- "~run"(dataset, config$1) {
1542
- const input = dataset.value;
1543
- if (input && typeof input === "object") {
1544
- dataset.typed = true;
1545
- dataset.value = {};
1546
- for (const key in this.entries) {
1547
- const valueSchema = this.entries[key];
1548
- if (key in input || (valueSchema.type === "exact_optional" || valueSchema.type === "optional" || valueSchema.type === "nullish") && valueSchema.default !== void 0) {
1549
- const value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);
1550
- const valueDataset = valueSchema["~run"]({ value: value$1 }, config$1);
1551
- if (valueDataset.issues) {
1552
- const pathItem = {
1553
- type: "object",
1554
- origin: "value",
1555
- input,
1556
- key,
1557
- value: value$1
1558
- };
1559
- for (const issue of valueDataset.issues) {
1560
- if (issue.path) issue.path.unshift(pathItem);
1561
- else issue.path = [pathItem];
1562
- dataset.issues?.push(issue);
1563
- }
1564
- if (!dataset.issues) dataset.issues = valueDataset.issues;
1565
- if (config$1.abortEarly) {
1566
- dataset.typed = false;
1567
- break;
1568
- }
1569
- }
1570
- if (!valueDataset.typed) dataset.typed = false;
1571
- dataset.value[key] = valueDataset.value;
1572
- } else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);
1573
- else if (valueSchema.type !== "exact_optional" && valueSchema.type !== "optional" && valueSchema.type !== "nullish") {
1574
- _addIssue(this, "key", dataset, config$1, {
1575
- input: void 0,
1576
- expected: `"${key}"`,
1577
- path: [{
1578
- type: "object",
1579
- origin: "key",
1580
- input,
1581
- key,
1582
- value: input[key]
1583
- }]
1584
- });
1585
- if (config$1.abortEarly) break;
1586
- }
1587
- }
1588
- if (!dataset.issues || !config$1.abortEarly) {
1589
- for (const key in input) if (/* @__PURE__ */ _isValidObjectKey(input, key) && !Object.prototype.hasOwnProperty.call(this.entries, key)) dataset.value[key] = input[key];
1559
+ },
1560
+ {
1561
+ name: "gemini-3.1-pro",
1562
+ displayName: "Gemini 3.1 Pro",
1563
+ provider: "google",
1564
+ description: "Gemini 3.1 Pro frontier reasoning, coding, and multimodal model.",
1565
+ hasVision: true,
1566
+ hasAudio: true,
1567
+ contextWindow: 1048576,
1568
+ maxOutputTokens: 65536,
1569
+ supportsTool: true,
1570
+ supportsReasoningEffort: true,
1571
+ price: {
1572
+ input: 16,
1573
+ output: 96,
1574
+ cachingWrite: 4,
1575
+ cachingRead: 4
1576
+ }
1577
+ }
1578
+ ];
1579
+
1580
+ // packages/integrations/openai/models.ts
1581
+ var GPT_5_5_STANDARD_PRICE = {
1582
+ input: 40,
1583
+ output: 240,
1584
+ inputCacheHit: 4
1585
+ };
1586
+ var GPT_5_5_LONG_CONTEXT_PRICE = {
1587
+ input: 80,
1588
+ output: 360,
1589
+ inputCacheHit: 8
1590
+ };
1591
+ var GPT_5_5_PRO_STANDARD_PRICE = {
1592
+ input: 240,
1593
+ output: 1440,
1594
+ inputCacheHit: 0
1595
+ };
1596
+ var GPT_5_5_PRO_LONG_CONTEXT_PRICE = {
1597
+ input: 480,
1598
+ output: 2160,
1599
+ inputCacheHit: 0
1600
+ };
1601
+ var GPT_5_6_SOL_STANDARD_PRICE = {
1602
+ input: 40,
1603
+ output: 240,
1604
+ inputCacheHit: 4
1605
+ };
1606
+ var GPT_5_6_SOL_LONG_CONTEXT_PRICE = {
1607
+ input: 80,
1608
+ output: 360,
1609
+ inputCacheHit: 8
1610
+ };
1611
+ var GPT_5_6_TERRA_STANDARD_PRICE = {
1612
+ input: 16,
1613
+ output: 96,
1614
+ inputCacheHit: 1.6
1615
+ };
1616
+ var GPT_5_6_TERRA_LONG_CONTEXT_PRICE = {
1617
+ input: 32,
1618
+ output: 144,
1619
+ inputCacheHit: 3.2
1620
+ };
1621
+ var GPT_5_6_LUNA_PRICE = {
1622
+ input: 1.6,
1623
+ output: 9.6,
1624
+ inputCacheHit: 0.16
1625
+ };
1626
+ var GPT_6_ASTRA_STANDARD_PRICE = {
1627
+ input: 80,
1628
+ output: 400,
1629
+ inputCacheHit: 8
1630
+ };
1631
+ var GPT_6_ASTRA_LONG_CONTEXT_PRICE = {
1632
+ input: 160,
1633
+ output: 600,
1634
+ inputCacheHit: 16
1635
+ };
1636
+ var openAIModels = [
1637
+ {
1638
+ name: "gpt-5.5",
1639
+ displayName: "GPT-5.5 Standard",
1640
+ endpointKey: "responses",
1641
+ hasVision: true,
1642
+ contextWindow: 1047576,
1643
+ maxOutputTokens: 128e3,
1644
+ supportsReasoningEffort: true,
1645
+ price: GPT_5_5_STANDARD_PRICE,
1646
+ pricingStrategy: {
1647
+ type: "tiered_context",
1648
+ tiers: [
1649
+ {
1650
+ minContext: 272001,
1651
+ price: GPT_5_5_LONG_CONTEXT_PRICE
1590
1652
  }
1591
- } else _addIssue(this, "type", dataset, config$1);
1592
- return dataset;
1653
+ ]
1593
1654
  }
1594
- });
1595
- }
1596
- // @__NO_SIDE_EFFECTS__
1597
- function object(entries$1, message$1) {
1598
- return _standardSchema({
1599
- kind: "schema",
1600
- type: "object",
1601
- reference: object,
1602
- expects: "Object",
1603
- async: false,
1604
- entries: entries$1,
1605
- message: message$1,
1606
- "~run"(dataset, config$1) {
1607
- const input = dataset.value;
1608
- if (input && typeof input === "object") {
1609
- dataset.typed = true;
1610
- dataset.value = {};
1611
- for (const key in this.entries) {
1612
- const valueSchema = this.entries[key];
1613
- if (key in input || (valueSchema.type === "exact_optional" || valueSchema.type === "optional" || valueSchema.type === "nullish") && valueSchema.default !== void 0) {
1614
- const value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);
1615
- const valueDataset = valueSchema["~run"]({ value: value$1 }, config$1);
1616
- if (valueDataset.issues) {
1617
- const pathItem = {
1618
- type: "object",
1619
- origin: "value",
1620
- input,
1621
- key,
1622
- value: value$1
1623
- };
1624
- for (const issue of valueDataset.issues) {
1625
- if (issue.path) issue.path.unshift(pathItem);
1626
- else issue.path = [pathItem];
1627
- dataset.issues?.push(issue);
1628
- }
1629
- if (!dataset.issues) dataset.issues = valueDataset.issues;
1630
- if (config$1.abortEarly) {
1631
- dataset.typed = false;
1632
- break;
1633
- }
1634
- }
1635
- if (!valueDataset.typed) dataset.typed = false;
1636
- dataset.value[key] = valueDataset.value;
1637
- } else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);
1638
- else if (valueSchema.type !== "exact_optional" && valueSchema.type !== "optional" && valueSchema.type !== "nullish") {
1639
- _addIssue(this, "key", dataset, config$1, {
1640
- input: void 0,
1641
- expected: `"${key}"`,
1642
- path: [{
1643
- type: "object",
1644
- origin: "key",
1645
- input,
1646
- key,
1647
- value: input[key]
1648
- }]
1649
- });
1650
- if (config$1.abortEarly) break;
1651
- }
1655
+ },
1656
+ {
1657
+ name: "gpt-5.6-sol",
1658
+ displayName: "GPT-5.6 Sol (Flagship)",
1659
+ endpointKey: "responses",
1660
+ hasVision: true,
1661
+ contextWindow: 105e4,
1662
+ maxOutputTokens: 128e3,
1663
+ supportsReasoningEffort: true,
1664
+ price: GPT_5_6_SOL_STANDARD_PRICE,
1665
+ pricingStrategy: {
1666
+ type: "tiered_context",
1667
+ tiers: [
1668
+ {
1669
+ minContext: 272001,
1670
+ price: GPT_5_6_SOL_LONG_CONTEXT_PRICE
1652
1671
  }
1653
- } else _addIssue(this, "type", dataset, config$1);
1654
- return dataset;
1672
+ ]
1655
1673
  }
1656
- });
1657
- }
1658
- // @__NO_SIDE_EFFECTS__
1659
- function optional(wrapped, default_) {
1660
- return _standardSchema({
1661
- kind: "schema",
1662
- type: "optional",
1663
- reference: optional,
1664
- expects: `(${wrapped.expects} | undefined)`,
1665
- async: false,
1666
- wrapped,
1667
- default: default_,
1668
- "~run"(dataset, config$1) {
1669
- if (dataset.value === void 0) {
1670
- if (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault(this, dataset, config$1);
1671
- if (dataset.value === void 0) {
1672
- dataset.typed = true;
1673
- return dataset;
1674
+ },
1675
+ {
1676
+ name: "gpt-5.6-terra",
1677
+ displayName: "GPT-5.6 Terra (Balanced)",
1678
+ endpointKey: "responses",
1679
+ hasVision: true,
1680
+ contextWindow: 105e4,
1681
+ maxOutputTokens: 128e3,
1682
+ supportsReasoningEffort: true,
1683
+ price: GPT_5_6_TERRA_STANDARD_PRICE,
1684
+ pricingStrategy: {
1685
+ type: "tiered_context",
1686
+ tiers: [
1687
+ {
1688
+ minContext: 272001,
1689
+ price: GPT_5_6_TERRA_LONG_CONTEXT_PRICE
1674
1690
  }
1675
- }
1676
- return this.wrapped["~run"](dataset, config$1);
1677
- }
1678
- });
1679
- }
1680
- // @__NO_SIDE_EFFECTS__
1681
- function picklist(options, message$1) {
1682
- return _standardSchema({
1683
- kind: "schema",
1684
- type: "picklist",
1685
- reference: picklist,
1686
- expects: /* @__PURE__ */ _joinExpects(options.map(_stringify), "|"),
1687
- async: false,
1688
- options,
1689
- message: message$1,
1690
- "~run"(dataset, config$1) {
1691
- if (this.options.includes(dataset.value)) dataset.typed = true;
1692
- else _addIssue(this, "type", dataset, config$1);
1693
- return dataset;
1691
+ ]
1694
1692
  }
1695
- });
1696
- }
1697
- // @__NO_SIDE_EFFECTS__
1698
- function record(key, value$1, message$1) {
1699
- return _standardSchema({
1700
- kind: "schema",
1701
- type: "record",
1702
- reference: record,
1703
- expects: "Object",
1704
- async: false,
1705
- key,
1706
- value: value$1,
1707
- message: message$1,
1708
- "~run"(dataset, config$1) {
1709
- const input = dataset.value;
1710
- if (input && typeof input === "object") {
1711
- dataset.typed = true;
1712
- dataset.value = {};
1713
- for (const entryKey in input) if (/* @__PURE__ */ _isValidObjectKey(input, entryKey)) {
1714
- const entryValue = input[entryKey];
1715
- const keyDataset = this.key["~run"]({ value: entryKey }, config$1);
1716
- if (keyDataset.issues) {
1717
- const pathItem = {
1718
- type: "object",
1719
- origin: "key",
1720
- input,
1721
- key: entryKey,
1722
- value: entryValue
1723
- };
1724
- for (const issue of keyDataset.issues) {
1725
- issue.path = [pathItem];
1726
- dataset.issues?.push(issue);
1727
- }
1728
- if (!dataset.issues) dataset.issues = keyDataset.issues;
1729
- if (config$1.abortEarly) {
1730
- dataset.typed = false;
1731
- break;
1732
- }
1733
- }
1734
- const valueDataset = this.value["~run"]({ value: entryValue }, config$1);
1735
- if (valueDataset.issues) {
1736
- const pathItem = {
1737
- type: "object",
1738
- origin: "value",
1739
- input,
1740
- key: entryKey,
1741
- value: entryValue
1742
- };
1743
- for (const issue of valueDataset.issues) {
1744
- if (issue.path) issue.path.unshift(pathItem);
1745
- else issue.path = [pathItem];
1746
- dataset.issues?.push(issue);
1747
- }
1748
- if (!dataset.issues) dataset.issues = valueDataset.issues;
1749
- if (config$1.abortEarly) {
1750
- dataset.typed = false;
1751
- break;
1752
- }
1753
- }
1754
- if (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;
1755
- if (keyDataset.typed) dataset.value[keyDataset.value] = valueDataset.value;
1693
+ },
1694
+ {
1695
+ name: "gpt-5.6-luna",
1696
+ displayName: "GPT-5.6 Luna (Fast)",
1697
+ endpointKey: "responses",
1698
+ hasVision: true,
1699
+ contextWindow: 105e4,
1700
+ maxOutputTokens: 128e3,
1701
+ supportsReasoningEffort: true,
1702
+ price: GPT_5_6_LUNA_PRICE
1703
+ },
1704
+ {
1705
+ name: "gpt-6-astra",
1706
+ displayName: "GPT-6 Astra",
1707
+ endpointKey: "responses",
1708
+ hasVision: true,
1709
+ contextWindow: 105e4,
1710
+ maxOutputTokens: 128e3,
1711
+ supportsReasoningEffort: true,
1712
+ price: GPT_6_ASTRA_STANDARD_PRICE,
1713
+ pricingStrategy: {
1714
+ type: "tiered_context",
1715
+ tiers: [
1716
+ {
1717
+ minContext: 272001,
1718
+ price: GPT_6_ASTRA_LONG_CONTEXT_PRICE
1756
1719
  }
1757
- } else _addIssue(this, "type", dataset, config$1);
1758
- return dataset;
1759
- }
1760
- });
1761
- }
1762
- // @__NO_SIDE_EFFECTS__
1763
- function string(message$1) {
1764
- return _standardSchema({
1765
- kind: "schema",
1766
- type: "string",
1767
- reference: string,
1768
- expects: "string",
1769
- async: false,
1770
- message: message$1,
1771
- "~run"(dataset, config$1) {
1772
- if (typeof dataset.value === "string") dataset.typed = true;
1773
- else _addIssue(this, "type", dataset, config$1);
1774
- return dataset;
1720
+ ]
1775
1721
  }
1776
- });
1777
- }
1778
- // @__NO_SIDE_EFFECTS__
1779
- function pipe(...pipe$1) {
1780
- return _standardSchema({
1781
- ...pipe$1[0],
1782
- pipe: pipe$1,
1783
- "~run"(dataset, config$1) {
1784
- for (const item of pipe$1) if (item.kind !== "metadata") {
1785
- if (dataset.issues && (item.kind === "schema" || item.kind === "transformation")) {
1786
- dataset.typed = false;
1787
- break;
1722
+ },
1723
+ {
1724
+ name: "gpt-5.5-pro",
1725
+ displayName: "GPT-5.5 Pro",
1726
+ endpointKey: "responses",
1727
+ hasVision: true,
1728
+ contextWindow: 1047576,
1729
+ maxOutputTokens: 128e3,
1730
+ supportsReasoningEffort: true,
1731
+ price: GPT_5_5_PRO_STANDARD_PRICE,
1732
+ pricingStrategy: {
1733
+ type: "tiered_context",
1734
+ tiers: [
1735
+ {
1736
+ minContext: 272001,
1737
+ price: GPT_5_5_PRO_LONG_CONTEXT_PRICE
1788
1738
  }
1789
- if (!dataset.issues || !config$1.abortEarly && !config$1.abortPipeEarly) dataset = item["~run"](dataset, config$1);
1790
- }
1791
- return dataset;
1739
+ ]
1792
1740
  }
1793
- });
1794
- }
1741
+ }
1742
+ ];
1795
1743
 
1796
- // packages/ai/agent/createAgentSchema.ts
1797
- var PROVIDER_REASONING_EFFORT_VALUES = {
1798
- openai: ["none", "minimal", "low", "medium", "high", "xhigh", "max"],
1799
- deepseek: ["low", "high", "max"],
1800
- // nolo (Ollama Cloud) 支持 DeepSeek/Kimi/GLM 等 thinking 模型,
1801
- // reasoning_effort 通过 OpenAI 兼容端点透传到 Ollama Cloud。
1802
- nolo: ["low", "high", "max"],
1803
- xai: ["low", "medium", "high"],
1804
- grok: ["low", "medium", "high"],
1805
- // none:关闭思考;必须保留,否则上游 clamp 会把 none 抬成 low,
1806
- // kimi-code proxy 的 none/off → thinking.disabled 分支永远接不到。
1807
- kimi: ["none", "low", "high", "max"],
1808
- moonshot: ["none", "low", "high", "max"],
1809
- // Qwen 用 enable_thinking (bool) 而非 reasoning_effort → 隐藏下拉
1810
- qwen: [],
1811
- // MiniMax M3: 接受这些值但所有非 none 效果相同
1812
- minimax: ["none", "low", "medium", "high"],
1813
- // Cursor: 推理强度在模型名后缀 (如 -high),不走独立参数
1814
- cursor: [],
1815
- // MiMo: 保守默认
1816
- mimo: ["low", "medium", "high"],
1817
- // CommandCode Provider API 透传 reasoning_effort(low/medium/high/xhigh/max),
1818
- // 端点按各模型支持的子集自动 clamp(见 commandcode.ai/docs/provider-api)。
1819
- commandcode: ["low", "medium", "high", "xhigh", "max"],
1820
- // 阶跃星辰(StepFun)推理模型(step-3.5-flash-2603 / step-3.7-flash 等)支持 low / medium / high
1821
- stepfun: ["none", "low", "medium", "high"]
1744
+ // packages/ai/llm/deepinfra.ts
1745
+ var DEEPINFRA_CLAUDE_HAIKU_PRICE = {
1746
+ input: 1 * 9,
1747
+ output: 5 * 9
1822
1748
  };
1823
- var greetingMenuItemSchema = object({
1824
- id: pipe(string(), minLength(1)),
1825
- label: pipe(string(), minLength(1)),
1826
- userMessage: optional(string())
1827
- });
1828
- var greetingConfigSchema = object({
1829
- text: optional(pipe(string(), trim())),
1830
- menu: optional(array(greetingMenuItemSchema))
1831
- });
1832
- var runtimeToolPolicySchema = looseObject({
1833
- version: optional(literal(1)),
1834
- agentTools: optional(array(string())),
1835
- runtimeTools: optional(array(string())),
1836
- workspace: optional(
1837
- object({
1838
- mode: optional(picklist(["none", "current", "lease"])),
1839
- writableRoots: optional(array(string())),
1840
- cwd: optional(string())
1841
- })
1842
- ),
1843
- shell: optional(record(string(), string())),
1844
- isolation: optional(record(string(), string())),
1845
- git: optional(record(string(), string())),
1846
- budget: optional(record(string(), string())),
1847
- audit: optional(record(string(), string()))
1848
- });
1849
- var referenceItemSchema = pipe(
1850
- object({
1851
- dbKey: string(),
1852
- title: string(),
1853
- type: picklist(["knowledge", "instruction", "page"])
1854
- }),
1855
- transform((data) => ({
1856
- ...data,
1857
- type: data.type === "page" ? "knowledge" : data.type
1858
- }))
1859
- );
1749
+ var DEEPINFRA_CLAUDE_SONNET_PRICE = {
1750
+ input: 3 * 9,
1751
+ output: 15 * 9
1752
+ };
1753
+ var DEEPINFRA_CLAUDE_OPUS_PRICE = {
1754
+ input: 5 * 9,
1755
+ output: 25 * 9
1756
+ };
1757
+ var DEEPINFRA_CLAUDE_FABLE_PRICE = {
1758
+ input: 10 * 9,
1759
+ output: 50 * 9
1760
+ };
1761
+ var deepinfraModels = [
1762
+ {
1763
+ name: "anthropic/claude-haiku-4-5",
1764
+ displayName: "Anthropic: Claude Haiku 4.5",
1765
+ hasVision: true,
1766
+ price: { ...DEEPINFRA_CLAUDE_HAIKU_PRICE },
1767
+ contextWindow: 195e3,
1768
+ maxOutputTokens: 4092,
1769
+ supportsTool: false
1770
+ },
1771
+ {
1772
+ name: "anthropic/claude-sonnet-5",
1773
+ displayName: "Anthropic: Claude Sonnet 5",
1774
+ hasVision: true,
1775
+ price: { ...DEEPINFRA_CLAUDE_SONNET_PRICE },
1776
+ contextWindow: 976e3,
1777
+ maxOutputTokens: 4092,
1778
+ supportsTool: false
1779
+ },
1780
+ {
1781
+ name: "anthropic/claude-opus-5",
1782
+ displayName: "Anthropic: Claude Opus 5",
1783
+ hasVision: true,
1784
+ price: { ...DEEPINFRA_CLAUDE_OPUS_PRICE },
1785
+ contextWindow: 976e3,
1786
+ maxOutputTokens: 4092,
1787
+ supportsTool: false
1788
+ },
1789
+ {
1790
+ name: "anthropic/claude-fable-5",
1791
+ displayName: "Anthropic: Claude Fable 5",
1792
+ hasVision: true,
1793
+ price: { ...DEEPINFRA_CLAUDE_FABLE_PRICE },
1794
+ contextWindow: 976e3,
1795
+ maxOutputTokens: 4092,
1796
+ supportsTool: false
1797
+ }
1798
+ ];
1799
+
1800
+ // packages/ai/llm/baseten.ts
1801
+ var BASETEN_GLM_53_FLASH_MODEL = "zai-org/GLM-5.3-Flash";
1802
+ var BASETEN_GLM_53_FLASH_PRICE = {
1803
+ input: 1.2,
1804
+ inputCacheHit: 0.24,
1805
+ output: 4
1806
+ };
1807
+ var basetenModels = [
1808
+ {
1809
+ name: BASETEN_GLM_53_FLASH_MODEL,
1810
+ displayName: "GLM 5.3 Flash",
1811
+ hasVision: true,
1812
+ price: { ...BASETEN_GLM_53_FLASH_PRICE },
1813
+ maxOutputTokens: 131072,
1814
+ contextWindow: 1048576,
1815
+ supportsTool: true,
1816
+ supportsReasoningEffort: true
1817
+ }
1818
+ ];
1819
+
1820
+ // packages/ai/llm/runinfra.ts
1821
+ var RUNINFRA_GLM_53_FLASH_MODEL = "glm-5-3-flash";
1822
+ var RUNINFRA_GLM_53_FLASH_PRICE = {
1823
+ input: 0.8,
1824
+ inputCacheHit: 0.08,
1825
+ output: 3.2
1826
+ };
1827
+ var runinfraModels = [
1828
+ {
1829
+ name: RUNINFRA_GLM_53_FLASH_MODEL,
1830
+ displayName: "GLM 5.3 Flash",
1831
+ hasVision: true,
1832
+ price: { ...RUNINFRA_GLM_53_FLASH_PRICE },
1833
+ maxOutputTokens: 1048576,
1834
+ contextWindow: 1048576,
1835
+ supportsTool: true,
1836
+ supportsReasoningEffort: true
1837
+ }
1838
+ ];
1839
+
1840
+ // packages/integrations/xai/models.ts
1841
+ var xaiModels = [
1842
+ {
1843
+ name: "grok-4.6",
1844
+ displayName: "Grok 4.6",
1845
+ hasVision: true,
1846
+ contextWindow: 5e5,
1847
+ price: { input: 16, output: 48, inputCacheHit: 4 },
1848
+ pricingStrategy: {
1849
+ type: "tiered_context",
1850
+ tiers: [
1851
+ {
1852
+ minContext: 200001,
1853
+ price: { input: 32, output: 96, inputCacheHit: 8 }
1854
+ }
1855
+ ]
1856
+ },
1857
+ fnCall: true,
1858
+ jsonOutput: true
1859
+ }
1860
+ ];
1861
+
1862
+ // packages/ai/llm/fireworks.ts
1863
+ var fireworksModels = [
1864
+ {
1865
+ name: "accounts/fireworks/models/minimax-m3",
1866
+ displayName: "MiniMax: MiniMax M3",
1867
+ hasVision: true,
1868
+ price: {
1869
+ input: 2.4,
1870
+ output: 9.6,
1871
+ cachingRead: 0.48
1872
+ },
1873
+ contextWindow: 512e3,
1874
+ supportsTool: true
1875
+ }
1876
+ ];
1860
1877
 
1861
1878
  // packages/ai/llm/reasoningModels.ts
1862
1879
  var REASONING_MODEL_NAMES = /* @__PURE__ */ new Set([
@@ -2188,6 +2205,14 @@ function getApiEndpoint(agent) {
2188
2205
 
2189
2206
  export {
2190
2207
  isAdaptiveThinkingModelId,
2208
+ qwenModels,
2209
+ qwenTokenPlanModels,
2210
+ moonshotModels,
2211
+ kimiCodeModels,
2212
+ stepfunModels,
2213
+ stepfunStepPlanModels,
2214
+ opencodeGoModels,
2215
+ DEFAULT_REASONING_EFFORT,
2191
2216
  isModelSupportReasoningEffort,
2192
2217
  clampReasoningEffort,
2193
2218
  MODEL_LOOKUP_MAP,