nolo-cli 0.84.0-alpha.1 → 0.84.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/README.md +2 -2
  2. package/{_executeModel-IULR47HG.js → _executeModel-BPUR2QYH.js} +51 -50
  3. package/{action-D22U6CTH.js → action-P4TNFGAD.js} +11 -11
  4. package/{addContentAction-XAPUTGL4.js → addContentAction-MB2HHMDZ.js} +9 -9
  5. package/{addDialogAgentAction-M7VLLBZM.js → addDialogAgentAction-S2NRBCWW.js} +9 -9
  6. package/{agentDeleteCommand-2S4WCDQC.js → agentDeleteCommand-MNAA6MIG.js} +32 -30
  7. package/{agentEmailCommands-V3ADGHX7.js → agentEmailCommands-SK34WJKU.js} +70 -66
  8. package/{agentGrantCommands-R3VQEZJR.js → agentGrantCommands-M3XFO6EN.js} +2 -2
  9. package/{agentListCommands-EPK3S274.js → agentListCommands-I26MKI4T.js} +55 -36
  10. package/{agentMachineCommands-XMZWK7P3.js → agentMachineCommands-M6QDR6P3.js} +32 -30
  11. package/{agentProviderCommands-65ZC2WB4.js → agentProviderCommands-X3UNW77C.js} +87 -0
  12. package/{agentPullCommand-N7L2CT7L.js → agentPullCommand-O5MPVJ5E.js} +3 -3
  13. package/agentRecordCommands-HTHLO2MM.js +129 -0
  14. package/{agentRunCommand-VUWNWC7C.js → agentRunCommand-IAIRCMTH.js} +70 -65
  15. package/{agentRunControl-T44MESII.js → agentRunControl-AVJR4JW4.js} +2 -2
  16. package/{agentRuntimeLocal-YRONTDLM.js → agentRuntimeLocal-3WTYYIT2.js} +32 -26
  17. package/{agentSlice-2P7OJFES.js → agentSlice-TVP3HINW.js} +10 -10
  18. package/{appDeleteCommands-YS7UGMP3.js → appDeleteCommands-SB5TNLKY.js} +32 -30
  19. package/{appDeployCommands-XIE5Z4BE.js → appDeployCommands-2IPKZINV.js} +32 -30
  20. package/{appDeployStatusCommands-54UDVYET.js → appDeployStatusCommands-K63TFUID.js} +32 -30
  21. package/{appGetCommands-6XYLBCRN.js → appGetCommands-VU2SLNEH.js} +32 -30
  22. package/{appListCommands-VEGH7SF5.js → appListCommands-S3T4DJ36.js} +32 -30
  23. package/{authCommand-JIEOFHXW.js → authCommand-HGP2XTKC.js} +185 -28
  24. package/{authCommands-ILTBI6JV.js → authCommands-RGOGCPP6.js} +4 -5
  25. package/builtinSkillRegistry-Q2VVY3SC.js +33 -0
  26. package/{chatQueueReduxAdapter-GPYCH5Z2.js → chatQueueReduxAdapter-TWIYKVIZ.js} +25 -25
  27. package/{chromeCommands-VOIRNJBL.js → chromeCommands-FZYAU75D.js} +1 -1
  28. package/{chromeOpsCommands-M7DPCX2T.js → chromeOpsCommands-62P2Q2YB.js} +31 -1
  29. package/{chunk-C3FZR5EC.js → chunk-2F7RJC6L.js} +1 -1
  30. package/{chunk-BOYUESO7.js → chunk-3AMA42ZI.js} +1 -1
  31. package/{chunk-RZOJRTKR.js → chunk-3BGIKIPF.js} +444 -920
  32. package/{chunk-HQUORJTM.js → chunk-3BMYXEUW.js} +1 -1
  33. package/{chunk-EBKMQULC.js → chunk-3IUWIAHP.js} +13 -15
  34. package/{chunk-NTW5GWDM.js → chunk-3VNWWVKB.js} +2 -0
  35. package/{chunk-4SZ37KLL.js → chunk-3VUWPRFW.js} +50 -30
  36. package/{chunk-WL2RKIBF.js → chunk-3YIAR5UI.js} +1 -1
  37. package/{chunk-DWUCB2A3.js → chunk-42V6BK2E.js} +1 -1
  38. package/{chunk-AX7RMXSH.js → chunk-4MK3I7Y4.js} +38 -4
  39. package/{chunk-PF6O3GR3.js → chunk-52Q2IW2X.js} +1340 -1273
  40. package/{chunk-Y3NZYLPG.js → chunk-5MEYHVIB.js} +1 -1
  41. package/{chunk-5XTOKQLW.js → chunk-5UTFL4QJ.js} +6 -2
  42. package/chunk-5ZUL4CUO.js +10 -0
  43. package/{chunk-6YTOJY35.js → chunk-6D2JFXLY.js} +35 -0
  44. package/{chunk-E6RGHPDR.js → chunk-6D6VBVEW.js} +4 -6
  45. package/{chunk-FZGV4FGK.js → chunk-6GFOD3TK.js} +260 -140
  46. package/{chunk-TMPLPCVX.js → chunk-6OZ36FXI.js} +2 -2
  47. package/{chunk-PZM3EENV.js → chunk-6Z7MY3V7.js} +1 -1
  48. package/{chunk-BYEJ7K2Z.js → chunk-7S4YWN7P.js} +1 -1
  49. package/{chunk-SREASRV5.js → chunk-ABQYVJBJ.js} +1 -1
  50. package/chunk-ACTMNVHM.js +93 -0
  51. package/{chunk-ZZCJUXUI.js → chunk-AHAHBQMU.js} +2 -2
  52. package/{chunk-BJCWNHVU.js → chunk-BFDFRLLQ.js} +2 -2
  53. package/chunk-BMQ2MJUK.js +153 -0
  54. package/chunk-BNGW5ASC.js +344 -0
  55. package/{chunk-2KDR4CWE.js → chunk-BYMV6QZG.js} +24 -1
  56. package/{chunk-73BR2IQT.js → chunk-CWQINZEA.js} +127 -7
  57. package/{chunk-HTMVBPOF.js → chunk-DD6XE56O.js} +19 -72
  58. package/{chunk-CADAR6QU.js → chunk-EYAQT56M.js} +4 -3
  59. package/{chunk-CJCJF5XB.js → chunk-FDTR4QJ6.js} +4 -2
  60. package/{chunk-D6XYLSOS.js → chunk-FKNWP6SG.js} +1 -1
  61. package/{chunk-3VPDELAP.js → chunk-FP76KI2Y.js} +1500 -84
  62. package/chunk-FV3JEYR3.js +870 -0
  63. package/{chunk-GCJ3IS5M.js → chunk-GIVFXPWK.js} +177 -6
  64. package/chunk-GMZLP5DV.js +82 -0
  65. package/{chunk-LHDV2QUI.js → chunk-GNCCNNZD.js} +4 -2
  66. package/{chunk-XWNRAIUL.js → chunk-GP5LKBUZ.js} +6 -16
  67. package/{chunk-PZCTYKGU.js → chunk-GQBOR3G6.js} +2 -2
  68. package/{chunk-NFT2AOK5.js → chunk-H4AHY5BU.js} +13 -85
  69. package/{chunk-FNGAF7C4.js → chunk-HAFJ3NDE.js} +137 -12
  70. package/{chunk-ZVN6I33J.js → chunk-HCT7U36O.js} +9 -5
  71. package/{chunk-7QVPPOEC.js → chunk-HKNXJGEC.js} +43 -43
  72. package/{chunk-3JQ2NRYU.js → chunk-HVURBGF3.js} +4 -4
  73. package/{chunk-OZX2IPKM.js → chunk-HYJFRTLW.js} +2 -2
  74. package/{chunk-HH65VA5U.js → chunk-I3TQJXQ7.js} +109 -6
  75. package/{chunk-UDQWGU7F.js → chunk-J4MOO56S.js} +1 -1
  76. package/{chunk-KC5FAHVS.js → chunk-JEDZAO7L.js} +1 -1
  77. package/{chunk-6XIE5ZGI.js → chunk-JPGCXHNM.js} +1 -1
  78. package/{chunk-DUJWWUGV.js → chunk-K36IXSCQ.js} +1 -1
  79. package/{chunk-KRMWO2NN.js → chunk-KAUSRTO6.js} +3 -3
  80. package/{chunk-7FWPLK4M.js → chunk-LJ5VW2UJ.js} +1 -1
  81. package/{chunk-GHEJJGJI.js → chunk-LMREEBWT.js} +833 -109
  82. package/{chunk-RXX4GDIH.js → chunk-LS2ZANRJ.js} +1 -1
  83. package/chunk-LVIFM7VW.js +1625 -0
  84. package/{chunk-BJIRLHJR.js → chunk-M2EJHDJP.js} +4 -0
  85. package/{chunk-EVBFYPDC.js → chunk-MC4XLIJ7.js} +6 -2
  86. package/{chunk-KEZNSFGD.js → chunk-MZYBSTMH.js} +11 -173
  87. package/chunk-OCZKATRC.js +129 -0
  88. package/{chunk-MXUSPS2N.js → chunk-OIVSQH2O.js} +1510 -1592
  89. package/{chunk-E36HZARC.js → chunk-P5EVSOPA.js} +93 -17
  90. package/{chunk-SZLVDREM.js → chunk-PBA4UJBK.js} +3 -3
  91. package/{chunk-URWDSZRW.js → chunk-PMAIQX7A.js} +3 -3
  92. package/{chunk-AETZ7AD6.js → chunk-Q554LLSI.js} +1 -1
  93. package/{chunk-AJHEFRGJ.js → chunk-Q67DOFOO.js} +214 -5
  94. package/{chunk-UZ6XXCVR.js → chunk-QDSINZM3.js} +15 -2
  95. package/{chunk-NRALD3CC.js → chunk-QSHEEA5N.js} +54 -10
  96. package/chunk-QU7KDSZX.js +677 -0
  97. package/{chunk-T25L377S.js → chunk-RPJUFEGR.js} +10 -10
  98. package/{chunk-QCZX4FTW.js → chunk-SH43IESU.js} +173 -15
  99. package/{chunk-SPAQ4PVV.js → chunk-SV5IJK6K.js} +1 -1
  100. package/{chunk-BKJO7LDP.js → chunk-U4OKDZFH.js} +6 -6
  101. package/{chunk-DM4FBSWG.js → chunk-UDVH2P4A.js} +7 -7
  102. package/{chunk-4EJ5QYB5.js → chunk-UEVXFHQB.js} +2 -2
  103. package/{chunk-JYYZCK2Z.js → chunk-V7E4PXQD.js} +1 -1
  104. package/{chunk-NHRQCXIQ.js → chunk-VMFTFOWF.js} +13 -3
  105. package/{chunk-YFADVSZE.js → chunk-VRTTFDBM.js} +7 -6
  106. package/{chunk-U7YP7ECK.js → chunk-WP5UXDA5.js} +84 -13
  107. package/{chunk-5J7W2VWW.js → chunk-WV42OMV7.js} +6 -265
  108. package/{chunk-3QPYFHAH.js → chunk-XD2MJFUG.js} +1 -1
  109. package/{chunk-IDGYOD2O.js → chunk-XP3VVAPG.js} +3174 -223
  110. package/{chunk-ETLZZQJE.js → chunk-Z2PV6O2T.js} +121 -26
  111. package/{chunk-BZNGCVAW.js → chunk-Z5625XML.js} +4 -4
  112. package/{contentThunks-THSCADSK.js → contentThunks-JYWI7G7I.js} +26 -26
  113. package/{cooldownCommands-BSCH2W7P.js → cooldownCommands-REAWYVTY.js} +2 -2
  114. package/{createAgentAutomationAction-WGN3UQ5A.js → createAgentAutomationAction-Z4SUJ54Y.js} +26 -26
  115. package/{createDialogAction-3EN2NLH7.js → createDialogAction-RCHFLVJ2.js} +29 -29
  116. package/{createPageAction-4VK473QV.js → createPageAction-YK2253XQ.js} +28 -28
  117. package/{dbSlice-GKGGFNOB.js → dbSlice-A6C6H32X.js} +8 -8
  118. package/{deleteFile-LWSR674W.js → deleteFile-YG6QMJLU.js} +3 -3
  119. package/{dialogCommands-PS4NWYY7.js → dialogCommands-X4UOZQWX.js} +36 -32
  120. package/{dialogSlice-CLV7SVOZ.js → dialogSlice-IVTWLCE2.js} +31 -25
  121. package/{docCreateCommands-4KANZJR6.js → docCreateCommands-VD6TGHG4.js} +33 -31
  122. package/{docDeleteCommands-F2S2TRUF.js → docDeleteCommands-OT3R2G4W.js} +34 -32
  123. package/{docReadCommands-B2WDPZQE.js → docReadCommands-2G7BIXSH.js} +33 -31
  124. package/{docStore-TDLCHWPF.js → docStore-UENKCCDX.js} +9 -9
  125. package/{docUpdateCommands-E7TKHRIO.js → docUpdateCommands-45MVJKZA.js} +33 -31
  126. package/{fetchMessages-DRABNDPZ.js → fetchMessages-EIU7UFFK.js} +3 -4
  127. package/{getPricing-QVTUQQTM.js → getPricing-LUSEABA6.js} +4 -4
  128. package/{handleSendMessageAction-AHL3ZHE4.js → handleSendMessageAction-LM2J4HC3.js} +66 -74
  129. package/index.js +99 -86
  130. package/{localDialogRead-PUQKFI73.js → localDialogRead-BTFJ4V2I.js} +2 -2
  131. package/{localRuntimeDb-P37ZTX55.js → localRuntimeDb-SYQGUF4U.js} +1 -1
  132. package/{machineCommands-OTABVXOA.js → machineCommands-6N6MQIE6.js} +69 -65
  133. package/{machineWsRunDispatch-V4EVQSMZ.js → machineWsRunDispatch-7MFKVQCR.js} +65 -61
  134. package/{memberThunks-KATHH3F4.js → memberThunks-P2ECUJ56.js} +9 -9
  135. package/{models-GS72DVJS.js → models-T3SG6MJ5.js} +2 -2
  136. package/{offlineMarxistsAgentCommand-GEH6SNNA.js → offlineMarxistsAgentCommand-HGXZV4XJ.js} +1 -1
  137. package/package.json +1 -1
  138. package/pdf-U6KSUEZZ.js +26435 -0
  139. package/providerPresetApply-XI3WUPTI.js +214 -0
  140. package/providerRegistry-KEPWWGXD.js +31 -0
  141. package/{read-LC6HVYBN.js → read-COE3ZYR6.js} +5 -4
  142. package/{readDocTool-N3ERJHHF.js → readDocTool-5USN4A6V.js} +1 -1
  143. package/{readlineWorkspace-IIT3FQ6I.js → readlineWorkspace-JWBON5CX.js} +291 -135
  144. package/{removeDialogAgentAction-F5GPTALR.js → removeDialogAgentAction-W66BJ7CF.js} +12 -12
  145. package/{runAgentClientLoop-7TQM7IAR.js → runAgentClientLoop-TA4SSPHE.js} +49 -49
  146. package/{runtimeDoctorCommands-CROTMULY.js → runtimeDoctorCommands-X6WDBEQX.js} +2 -2
  147. package/{setDialogExtraReferencesAction-AY4ZCF3A.js → setDialogExtraReferencesAction-2ALKG3WA.js} +10 -10
  148. package/{setPrimaryDialogAgentAction-HPMG7V3R.js → setPrimaryDialogAgentAction-TQZB55F6.js} +12 -12
  149. package/{settingSlice-OEJA4NQO.js → settingSlice-P4ZW7K5X.js} +10 -10
  150. package/{spaceCommands-FSYH7AL4.js → spaceCommands-6NSAXB7D.js} +31 -29
  151. package/{streamAgentChatTurn-6EF6TVFK.js → streamAgentChatTurn-X5ENGUIS.js} +126 -65
  152. package/{switchDialogAgentAction-HMDZTZ4I.js → switchDialogAgentAction-3KI72HHS.js} +9 -9
  153. package/{tableCommands-SUNTHAYX.js → tableCommands-O6NWHFKV.js} +1 -1
  154. package/{toolApiClient-VGYUB4P5.js → toolApiClient-G3M73RTB.js} +3 -3
  155. package/{tools-R3QNWWTD.js → tools-XRQR7ZZR.js} +45 -45
  156. package/tuiSummaryLlmCaller-UFGFOIIW.js +128 -0
  157. package/{updateCommands-Y363MC3L.js → updateCommands-2M74UL7P.js} +2 -2
  158. package/{updateDialogTitleAction-F3EUOWOB.js → updateDialogTitleAction-ESUUD3GT.js} +46 -29
  159. package/agentRecordCommands-WFPWLWOF.js +0 -125
  160. package/chunk-FMODTASJ.js +0 -109
  161. package/chunk-I42VC5KR.js +0 -15
  162. package/chunk-NB5SIWC4.js +0 -611
  163. package/chunk-NG4UT4K4.js +0 -79
  164. package/codingSkills-7S6523WH.js +0 -48
  165. package/tuiSummaryLlmCaller-PWOXTCBF.js +0 -116
  166. package/{chunk-3RAG2NAD.js → chunk-UKWGR5SS.js} +3 -3
  167. package/{db-VQSAOWAO.js → db-WK5MDZVN.js} +1 -1
  168. package/{localRuntimeAuthority-R5UBODT3.js → localRuntimeAuthority-6IR6BBXE.js} +3 -3
@@ -9,750 +9,646 @@ import {
9
9
  platformHostedModels,
10
10
  toCnyCredits,
11
11
  zaiModels
12
- } from "./chunk-AJHEFRGJ.js";
12
+ } from "./chunk-Q67DOFOO.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\u539F\u751F\u56FE\u50CF+\u89C6\u9891\u7406\u89E3\uFF08\u65E0\u9700\u5916\u6302\u89C6\u89C9\u6A21\u578B\uFF09\uFF0C\u4E09\u6863 reasoning_effort\uFF08low/medium/high\uFF09\uFF0C\u5DE5\u5177\u8C03\u7528\uFF0C\u9488\u5BF9 Agent \u4E0E Coding \u6DF1\u5EA6\u4F18\u5316\uFF1B\u6743\u91CD\u5F00\u6E90\uFF08Apache 2.0\uFF09\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\uFF082026-09 \u53D1\u5E03\uFF09\uFF0C1M \u4E0A\u4E0B\u6587\uFF0C\u6587\u672C+\u56FE\u50CF+\u89C6\u9891\u8F93\u5165\uFF0C64k \u6700\u5927\u8F93\u51FA\uFF0C\u4E09\u6863 reasoning_effort\uFF0C\u652F\u6301\u590D\u6742\u903B\u8F91\u5206\u89E3\u4E0E\u957F\u7A0B\u89C4\u5212\uFF1BArtificial Analysis \u667A\u80FD\u6307\u6570 44\uFF0C\u4E3A StepFun \u7CFB\u6700\u9AD8\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\uFF1B\u6743\u91CD\u5F00\u6E90\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
+ // 官方价:输入 ¥0.7/M、缓存命中 ¥0.14/M、输出 ¥2.1/M
476
+ price: {
477
+ input: toCnyCredits(0.7),
478
+ output: toCnyCredits(2.1),
479
+ inputCacheHit: toCnyCredits(0.14)
480
+ },
481
+ provider: "stepfun",
482
+ 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\u6CE8\u610F\uFF1AArtificial Analysis \u5DF2\u6807\u8BB0\u4E3A deprecated\uFF0C\u5B98\u65B9\u63A8\u8350\u8FC1\u79FB\u5230 step-3.7-flash\u3002"
628
483
  },
629
- // ── 长上下文 ──
484
+ // ── 经典视觉模型 ──
630
485
  {
631
- name: "qwen-long",
632
- displayName: "Qwen Long",
633
- hasVision: false,
634
- contextWindow: 10485760,
486
+ name: "step-1o-turbo-vision",
487
+ displayName: "Step 1o Turbo Vision",
488
+ hasVision: true,
489
+ contextWindow: 65536,
635
490
  maxOutputTokens: 8192,
636
491
  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"
492
+ fnCall: true,
493
+ supportsTool: true,
494
+ // 官方价:输入 ¥2.5/M、缓存命中 ¥0.5/M、输出 ¥8/M
495
+ price: {
496
+ input: toCnyCredits(2.5),
497
+ output: toCnyCredits(8),
498
+ inputCacheHit: toCnyCredits(0.5)
499
+ },
500
+ provider: "stepfun",
501
+ description: "\u9AD8\u54CD\u5E94\u901F\u5EA6\u89C6\u89C9\u6A21\u578B\uFF0C\u652F\u6301\u56FE\u7247\u4E0E\u6587\u6863\u7406\u89E3\uFF1B\u5B98\u65B9\u9000\u5F79\u516C\u544A\u4E2D\u591A\u6570\u65E7\u6A21\u578B\u7684\u6307\u5B9A\u66FF\u6362\u76EE\u6807\u3002"
502
+ }
503
+ ];
504
+ var stepfunStepPlanModels = [
505
+ {
506
+ name: "step-5-preview",
507
+ displayName: "Step 5 Preview",
508
+ hasVision: true,
509
+ // Step Plan 订阅端同样开放 1M context(见 Step Plan / Claude Code 接入文档)
510
+ contextWindow: 1e6,
511
+ maxOutputTokens: 65536,
512
+ jsonOutput: true,
513
+ fnCall: true,
514
+ supportsTool: true,
515
+ supportsReasoningEffort: true,
516
+ price: { input: 0, output: 0 },
517
+ provider: "stepfun",
518
+ description: "\u9636\u8DC3\u661F\u8FB0\u65B0\u4E00\u4EE3\u65D7\u8230\u591A\u6A21\u6001\u63A8\u7406\u6A21\u578B\uFF0C1M \u4E0A\u4E0B\u6587\uFF0C\u6587\u672C+\u56FE\u50CF+\u89C6\u9891\u8F93\u5165\uFF0C\u64C5\u957F\u590D\u6742\u4EFB\u52A1\u5206\u89E3\u4E0E\u591A\u6B65\u8BA1\u5212\u3002"
642
519
  },
643
- // ── 旧版主力(仍常用) ──
644
520
  {
645
- name: "qwen-plus",
646
- displayName: "Qwen Plus",
521
+ name: "step-3.7-flash",
522
+ displayName: "Step 3.7 Flash",
647
523
  hasVision: true,
648
- contextWindow: 1048576,
649
- maxOutputTokens: 32768,
524
+ contextWindow: 262144,
525
+ maxOutputTokens: 65536,
650
526
  jsonOutput: true,
651
527
  fnCall: true,
652
528
  supportsTool: true,
653
529
  supportsReasoningEffort: true,
654
- price: { input: toCnyCredits(0.8), output: toCnyCredits(2) },
655
- provider: "qwen"
530
+ price: { input: 0, output: 0 },
531
+ provider: "stepfun",
532
+ description: "\u9636\u8DC3\u661F\u8FB0\u65D7\u8230\u591A\u6A21\u6001\u63A8\u7406\u6A21\u578B\uFF0C256K \u4E0A\u4E0B\u6587\uFF0C\u539F\u751F\u56FE\u50CF+\u89C6\u9891\u7406\u89E3\uFF0C\u9AD8\u901F\u63A8\u7406 + \u5DE5\u5177\u8C03\u7528\uFF0CAgent \u6DF1\u5EA6\u9002\u914D\u3002"
656
533
  },
657
534
  {
658
- name: "qwen-turbo",
659
- displayName: "Qwen Turbo",
535
+ name: "step-3.5-flash",
536
+ displayName: "Step 3.5 Flash",
660
537
  hasVision: false,
661
- contextWindow: 131072,
662
- maxOutputTokens: 8192,
538
+ contextWindow: 262144,
539
+ maxOutputTokens: 65536,
663
540
  jsonOutput: true,
664
541
  fnCall: true,
665
542
  supportsTool: true,
666
- price: { input: toCnyCredits(0.3), output: toCnyCredits(0.6) },
667
- provider: "qwen"
543
+ supportsReasoningEffort: true,
544
+ price: { input: 0, output: 0 },
545
+ provider: "stepfun",
546
+ 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"
668
547
  },
669
548
  {
670
- name: "qwen-flash",
671
- displayName: "Qwen Flash",
549
+ name: "step-3.5-flash-2603",
550
+ displayName: "Step 3.5 Flash (Agent\u4F18\u5316\u7248)",
672
551
  hasVision: false,
673
- contextWindow: 131072,
674
- maxOutputTokens: 8192,
552
+ contextWindow: 262144,
553
+ maxOutputTokens: 65536,
675
554
  jsonOutput: true,
676
555
  fnCall: true,
677
556
  supportsTool: true,
678
- price: { input: toCnyCredits(0.1), output: toCnyCredits(0.3) },
679
- provider: "qwen"
557
+ supportsReasoningEffort: true,
558
+ price: { input: 0, output: 0 },
559
+ provider: "stepfun",
560
+ 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\uFF1B\u5B98\u65B9\u63A8\u8350\u8FC1\u79FB\u5230 step-3.7-flash\u3002"
680
561
  },
681
- // ── 推理(QwQ) ──
682
562
  {
683
- name: "qwq-plus",
684
- displayName: "QwQ Plus",
563
+ name: "step-router-v1",
564
+ displayName: "Step Router V1",
685
565
  hasVision: false,
686
- contextWindow: 131072,
687
- maxOutputTokens: 32768,
566
+ contextWindow: 262144,
567
+ maxOutputTokens: 65536,
688
568
  jsonOutput: true,
689
569
  fnCall: true,
690
570
  supportsTool: true,
691
571
  supportsReasoningEffort: true,
692
- price: { input: toCnyCredits(2), output: toCnyCredits(8) },
693
- provider: "qwen",
694
- description: "\u6DF1\u5EA6\u601D\u8003\u63A8\u7406\u6A21\u578B\u3002"
572
+ price: { input: 0, output: 0 },
573
+ provider: "stepfun",
574
+ description: "\u667A\u80FD\u8DEF\u7531\u6A21\u578B\uFF0C\u6309\u4EFB\u52A1\u590D\u6742\u5EA6\u81EA\u52A8\u5728 Step \u7CFB\u5217\u6A21\u578B\u95F4\u8C03\u5EA6\uFF0C\u8BA2\u9605\u53EF\u7528\u3002"
695
575
  }
696
576
  ];
697
- var qwenTokenPlanModels = [
698
- // ── 千问 ──
577
+
578
+ // packages/integrations/opencode/models.ts
579
+ var opencodeGoModels = [
580
+ // ── OpenAI ──
699
581
  {
700
- name: "qwen3.8-max",
701
- displayName: "Qwen3.8 Max",
582
+ name: "gpt-5.6-luna",
583
+ displayName: "GPT-5.6 Luna (Fast)",
702
584
  hasVision: true,
703
- contextWindow: 1e6,
704
- maxOutputTokens: 131072,
585
+ contextWindow: 272e3,
586
+ maxOutputTokens: 128e3,
705
587
  jsonOutput: true,
706
588
  fnCall: true,
707
589
  supportsTool: true,
708
- supportsReasoningEffort: true,
709
590
  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"
591
+ provider: "opencode-go",
592
+ description: "OpenAI GPT-5.6 Luna \u5FEB\u901F\u6A21\u578B\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
712
593
  },
594
+ // gpt-5.6-sol 不在 Go 订阅内:GET /models 不返回它,直接调用返回
595
+ // 401 "Model gpt-5.6-sol is not supported"(实测 2026-08-03)。
596
+ // ── Grok ──
713
597
  {
714
- name: "qwen3.7-max",
715
- displayName: "Qwen3.7 Max",
716
- hasVision: false,
717
- contextWindow: 262144,
718
- maxOutputTokens: 32768,
598
+ name: "grok-4.5",
599
+ displayName: "Grok 4.5",
600
+ hasVision: true,
601
+ contextWindow: 5e5,
602
+ maxOutputTokens: 262144,
719
603
  jsonOutput: true,
720
604
  fnCall: true,
721
605
  supportsTool: true,
722
- supportsReasoningEffort: true,
723
606
  price: { input: 0, output: 0 },
724
- provider: "qwen",
725
- description: "\u63A8\u7406\u6A21\u578B\u3001\u6587\u672C\u751F\u6210\u3002"
607
+ provider: "opencode-go",
608
+ description: "xAI Grok 4.5\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
726
609
  },
610
+ // ── Kimi ──
727
611
  {
728
- name: "qwen3.7-plus",
729
- displayName: "Qwen3.7 Plus",
612
+ name: "kimi-k3",
613
+ displayName: "Kimi K3",
614
+ hasVision: true,
615
+ contextWindow: 1e6,
616
+ maxOutputTokens: 262144,
617
+ jsonOutput: true,
618
+ fnCall: true,
619
+ supportsTool: true,
620
+ price: { input: 0, output: 0 },
621
+ provider: "opencode-go",
622
+ description: "Kimi K3 \u65D7\u8230\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
623
+ },
624
+ // ── Qwen ──
625
+ {
626
+ name: "qwen3.8-max",
627
+ displayName: "Qwen3.8 Max",
730
628
  hasVision: true,
731
629
  contextWindow: 262144,
732
630
  maxOutputTokens: 32768,
733
631
  jsonOutput: true,
734
632
  fnCall: true,
735
633
  supportsTool: true,
736
- supportsReasoningEffort: true,
737
634
  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"
635
+ provider: "opencode-go",
636
+ description: "\u5343\u95EE 3.8 Max \u65D7\u8230\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
740
637
  },
741
638
  {
742
- name: "qwen3.6-flash",
743
- displayName: "Qwen3.6 Flash",
744
- hasVision: true,
639
+ name: "qwen3.7-max",
640
+ displayName: "Qwen3.7 Max",
641
+ hasVision: false,
745
642
  contextWindow: 262144,
746
643
  maxOutputTokens: 32768,
747
644
  jsonOutput: true,
748
645
  fnCall: true,
749
646
  supportsTool: true,
750
- supportsReasoningEffort: true,
751
647
  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"
648
+ provider: "opencode-go",
649
+ description: "\u5343\u95EE 3.7 Max\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
754
650
  },
755
- // ── 智谱 AI ──
651
+ // ── GLM ──
756
652
  {
757
653
  name: "glm-5.2",
758
654
  displayName: "GLM 5.2",
@@ -762,10 +658,37 @@ var qwenTokenPlanModels = [
762
658
  jsonOutput: true,
763
659
  fnCall: true,
764
660
  supportsTool: true,
765
- supportsReasoningEffort: true,
766
661
  price: { input: 0, output: 0 },
767
- provider: "qwen",
768
- description: "\u667A\u8C31 AI \u63A8\u7406\u6A21\u578B\u3001\u6587\u672C\u751F\u6210\u3002"
662
+ provider: "opencode-go",
663
+ description: "\u667A\u8C31 GLM 5.2\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
664
+ },
665
+ // ── MiMo ──
666
+ {
667
+ name: "mimo-v2.5-pro",
668
+ displayName: "MiMo V2.5 Pro",
669
+ hasVision: false,
670
+ contextWindow: 131072,
671
+ maxOutputTokens: 16384,
672
+ jsonOutput: true,
673
+ fnCall: true,
674
+ supportsTool: true,
675
+ price: { input: 0, output: 0 },
676
+ provider: "opencode-go",
677
+ description: "\u5C0F\u7C73 MiMo V2.5 Pro\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
678
+ },
679
+ // ── MiniMax ──
680
+ {
681
+ name: "minimax-m3",
682
+ displayName: "MiniMax M3",
683
+ hasVision: true,
684
+ contextWindow: 1e6,
685
+ maxOutputTokens: 262144,
686
+ jsonOutput: true,
687
+ fnCall: true,
688
+ supportsTool: true,
689
+ price: { input: 0, output: 0 },
690
+ provider: "opencode-go",
691
+ description: "MiniMax M3\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
769
692
  },
770
693
  // ── DeepSeek ──
771
694
  {
@@ -777,1086 +700,1063 @@ var qwenTokenPlanModels = [
777
700
  jsonOutput: true,
778
701
  fnCall: true,
779
702
  supportsTool: true,
780
- supportsReasoningEffort: true,
781
703
  price: { input: 0, output: 0 },
782
- provider: "qwen",
783
- description: "DeepSeek \u63A8\u7406\u6A21\u578B\u3001\u6587\u672C\u751F\u6210\u3002"
704
+ provider: "opencode-go",
705
+ description: "DeepSeek V4 Pro\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
784
706
  },
785
- // ── 万相(图片生成)──
786
707
  {
787
- name: "wan2.7-image",
788
- displayName: "Wan2.7 Image",
708
+ name: "deepseek-v4-flash",
709
+ displayName: "DeepSeek V4 Flash",
789
710
  hasVision: false,
790
- hasImageOutput: true,
791
- contextWindow: 0,
792
- maxOutputTokens: 0,
711
+ contextWindow: 1e6,
712
+ maxOutputTokens: 384e3,
713
+ jsonOutput: true,
714
+ fnCall: true,
715
+ supportsTool: true,
793
716
  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
- contextWindow: 262144,
833
- maxOutputTokens: 262144,
834
- jsonOutput: true,
835
- fnCall: true,
836
- supportsTool: true,
837
- supportsReasoningEffort: true,
838
- price: { input: 4.8, output: 19.2 },
839
- provider: "moonshot",
840
- description: "Moonshot \u9AD8\u6027\u80FD\u901A\u7528\u6A21\u578B\u3002"
841
- }
842
- ];
843
- var kimiCodeModels = [
844
- // ── 旗舰编程 ──
845
- {
846
- name: "k3",
847
- displayName: "Kimi K3",
848
- hasVision: true,
849
- contextWindow: 1e6,
850
- maxOutputTokens: 262144,
851
- jsonOutput: true,
852
- fnCall: true,
853
- supportsTool: true,
854
- supportsReasoningEffort: true,
855
- 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"
858
- },
859
- // ── 旗舰编程(256K 上下文版)──
860
- {
861
- name: "k3-256k",
862
- displayName: "Kimi K3 256K",
863
- hasVision: true,
864
- contextWindow: 262144,
865
- maxOutputTokens: 262144,
866
- jsonOutput: true,
867
- fnCall: true,
868
- supportsTool: true,
869
- supportsReasoningEffort: true,
870
- 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"
873
- },
874
- // ── 成熟编程 ──
875
- {
876
- name: "kimi-for-coding",
877
- displayName: "Kimi K2.7 Code",
878
- hasVision: true,
879
- contextWindow: 262144,
880
- maxOutputTokens: 262144,
881
- jsonOutput: true,
882
- fnCall: true,
883
- supportsTool: true,
884
- supportsReasoningEffort: true,
885
- 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"
888
- },
889
- // ── 高速编程 ──
890
- {
891
- name: "kimi-for-coding-highspeed",
892
- displayName: "Kimi K2.7 Code \u9AD8\u901F\u7248",
893
- hasVision: true,
894
- contextWindow: 262144,
895
- maxOutputTokens: 262144,
896
- jsonOutput: true,
897
- fnCall: true,
898
- supportsTool: true,
899
- supportsReasoningEffort: true,
900
- 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"
717
+ provider: "opencode-go",
718
+ description: "DeepSeek V4 Flash\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
903
719
  }
904
720
  ];
905
721
 
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"
946
- },
947
- // ── 旗舰语言推理 ──
948
- {
949
- name: "step-3.5-flash",
950
- displayName: "Step 3.5 Flash",
951
- hasVision: false,
952
- contextWindow: 262144,
953
- maxOutputTokens: 65536,
954
- jsonOutput: true,
955
- fnCall: true,
956
- 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"
966
- },
967
- {
968
- name: "step-3.5-flash-2603",
969
- displayName: "Step 3.5 Flash (Agent\u4F18\u5316\u7248)",
970
- 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,
992
- jsonOutput: true,
993
- fnCall: true,
994
- 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"
1002
- },
1003
- // ── 经典通用语言模型 ──
1004
- {
1005
- name: "step-2-16k",
1006
- displayName: "Step 2 16K",
1007
- hasVision: false,
1008
- contextWindow: 16384,
1009
- maxOutputTokens: 4096,
1010
- jsonOutput: true,
1011
- fnCall: true,
1012
- 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"
1016
- },
1017
- {
1018
- name: "step-1-flash",
1019
- displayName: "Step 1 Flash",
1020
- hasVision: false,
1021
- contextWindow: 8192,
1022
- maxOutputTokens: 4096,
1023
- jsonOutput: true,
1024
- fnCall: true,
1025
- supportsTool: true,
1026
- price: { input: toCnyCredits(1), output: toCnyCredits(4) },
1027
- provider: "stepfun"
1028
- },
1029
- {
1030
- name: "step-1-8k",
1031
- displayName: "Step 1 8K",
1032
- hasVision: false,
1033
- contextWindow: 8192,
1034
- maxOutputTokens: 4096,
1035
- jsonOutput: true,
1036
- fnCall: true,
1037
- supportsTool: true,
1038
- price: { input: toCnyCredits(5), output: toCnyCredits(20) },
1039
- provider: "stepfun"
1040
- },
1041
- {
1042
- name: "step-1-32k",
1043
- displayName: "Step 1 32K",
1044
- 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,
1177
- jsonOutput: true,
1178
- fnCall: true,
1179
- supportsTool: true,
1180
- price: { input: 0, output: 0 },
1181
- provider: "stepfun"
1182
- }
1183
- ];
722
+ // node_modules/valibot/dist/index.mjs
723
+ var store$4;
724
+ var DEFAULT_CONFIG = {
725
+ lang: void 0,
726
+ message: void 0,
727
+ abortEarly: void 0,
728
+ abortPipeEarly: void 0
729
+ };
730
+ // @__NO_SIDE_EFFECTS__
731
+ function getGlobalConfig(config$1) {
732
+ if (!config$1 && !store$4) return DEFAULT_CONFIG;
733
+ return {
734
+ lang: config$1?.lang ?? store$4?.lang,
735
+ message: config$1?.message,
736
+ abortEarly: config$1?.abortEarly ?? store$4?.abortEarly,
737
+ abortPipeEarly: config$1?.abortPipeEarly ?? store$4?.abortPipeEarly
738
+ };
739
+ }
740
+ var store$3;
741
+ // @__NO_SIDE_EFFECTS__
742
+ function getGlobalMessage(lang) {
743
+ return store$3?.get(lang);
744
+ }
745
+ var store$2;
746
+ // @__NO_SIDE_EFFECTS__
747
+ function getSchemaMessage(lang) {
748
+ return store$2?.get(lang);
749
+ }
750
+ var store$1;
751
+ // @__NO_SIDE_EFFECTS__
752
+ function getSpecificMessage(reference, lang) {
753
+ return store$1?.get(reference)?.get(lang);
754
+ }
755
+ // @__NO_SIDE_EFFECTS__
756
+ function _stringify(input) {
757
+ const type = typeof input;
758
+ if (type === "string") return `"${input}"`;
759
+ if (type === "number" || type === "bigint" || type === "boolean") return `${input}`;
760
+ if (type === "object" || type === "function") return (input && Object.getPrototypeOf(input)?.constructor?.name) ?? "null";
761
+ return type;
762
+ }
763
+ function _addIssue(context, label, dataset, config$1, other) {
764
+ const input = other && "input" in other ? other.input : dataset.value;
765
+ const expected = other?.expected ?? context.expects ?? null;
766
+ const received = other?.received ?? /* @__PURE__ */ _stringify(input);
767
+ const issue = {
768
+ kind: context.kind,
769
+ type: context.type,
770
+ input,
771
+ expected,
772
+ received,
773
+ message: `Invalid ${label}: ${expected ? `Expected ${expected} but r` : "R"}eceived ${received}`,
774
+ requirement: context.requirement,
775
+ path: other?.path,
776
+ issues: other?.issues,
777
+ lang: config$1.lang,
778
+ abortEarly: config$1.abortEarly,
779
+ abortPipeEarly: config$1.abortPipeEarly
780
+ };
781
+ const isSchema = context.kind === "schema";
782
+ 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);
783
+ if (message$1 !== void 0) issue.message = typeof message$1 === "function" ? message$1(issue) : message$1;
784
+ if (isSchema) dataset.typed = false;
785
+ if (dataset.issues) dataset.issues.push(issue);
786
+ else dataset.issues = [issue];
787
+ }
788
+ // @__NO_SIDE_EFFECTS__
789
+ function _isSameValueZero(value1, value2) {
790
+ return value1 === value2 || Number.isNaN(value1) && Number.isNaN(value2);
791
+ }
792
+ // @__NO_SIDE_EFFECTS__
793
+ function _isValidObjectKey(object$1, key) {
794
+ return Object.prototype.hasOwnProperty.call(object$1, key) && key !== "__proto__" && key !== "prototype" && key !== "constructor";
795
+ }
796
+ // @__NO_SIDE_EFFECTS__
797
+ function _joinExpects(values$1, separator) {
798
+ const list = [...new Set(values$1)];
799
+ if (list.length > 1) return `(${list.join(` ${separator} `)})`;
800
+ return list[0] ?? "never";
801
+ }
802
+ function _standardSchema(schema) {
803
+ schema["~standard"] = {
804
+ version: 1,
805
+ vendor: "valibot",
806
+ validate: (value$1) => schema["~run"]({ value: value$1 }, /* @__PURE__ */ getGlobalConfig())
807
+ };
808
+ return schema;
809
+ }
810
+ 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");
811
+ // @__NO_SIDE_EFFECTS__
812
+ function minLength(requirement, message$1) {
813
+ return {
814
+ kind: "validation",
815
+ type: "min_length",
816
+ reference: minLength,
817
+ async: false,
818
+ expects: `>=${requirement}`,
819
+ requirement,
820
+ message: message$1,
821
+ "~run"(dataset, config$1) {
822
+ if (dataset.typed && dataset.value.length < this.requirement) _addIssue(this, "length", dataset, config$1, { received: `${dataset.value.length}` });
823
+ return dataset;
824
+ }
825
+ };
826
+ }
827
+ // @__NO_SIDE_EFFECTS__
828
+ function transform(operation) {
829
+ return {
830
+ kind: "transformation",
831
+ type: "transform",
832
+ reference: transform,
833
+ async: false,
834
+ operation,
835
+ "~run"(dataset) {
836
+ dataset.value = this.operation(dataset.value);
837
+ return dataset;
838
+ }
839
+ };
840
+ }
841
+ // @__NO_SIDE_EFFECTS__
842
+ function trim() {
843
+ return {
844
+ kind: "transformation",
845
+ type: "trim",
846
+ reference: trim,
847
+ async: false,
848
+ "~run"(dataset) {
849
+ dataset.value = dataset.value.trim();
850
+ return dataset;
851
+ }
852
+ };
853
+ }
854
+ // @__NO_SIDE_EFFECTS__
855
+ function getFallback(schema, dataset, config$1) {
856
+ return typeof schema.fallback === "function" ? schema.fallback(dataset, config$1) : schema.fallback;
857
+ }
858
+ // @__NO_SIDE_EFFECTS__
859
+ function getDefault(schema, dataset, config$1) {
860
+ return typeof schema.default === "function" ? schema.default(dataset, config$1) : schema.default;
861
+ }
862
+ // @__NO_SIDE_EFFECTS__
863
+ function array(item, message$1) {
864
+ return _standardSchema({
865
+ kind: "schema",
866
+ type: "array",
867
+ reference: array,
868
+ expects: "Array",
869
+ async: false,
870
+ item,
871
+ message: message$1,
872
+ "~run"(dataset, config$1) {
873
+ const input = dataset.value;
874
+ if (Array.isArray(input)) {
875
+ dataset.typed = true;
876
+ dataset.value = [];
877
+ for (let key = 0; key < input.length; key++) {
878
+ const value$1 = input[key];
879
+ const itemDataset = this.item["~run"]({ value: value$1 }, config$1);
880
+ if (itemDataset.issues) {
881
+ const pathItem = {
882
+ type: "array",
883
+ origin: "value",
884
+ input,
885
+ key,
886
+ value: value$1
887
+ };
888
+ for (const issue of itemDataset.issues) {
889
+ if (issue.path) issue.path.unshift(pathItem);
890
+ else issue.path = [pathItem];
891
+ dataset.issues?.push(issue);
892
+ }
893
+ if (!dataset.issues) dataset.issues = itemDataset.issues;
894
+ if (config$1.abortEarly) {
895
+ dataset.typed = false;
896
+ break;
897
+ }
898
+ }
899
+ if (!itemDataset.typed) dataset.typed = false;
900
+ dataset.value.push(itemDataset.value);
901
+ }
902
+ } else _addIssue(this, "type", dataset, config$1);
903
+ return dataset;
904
+ }
905
+ });
906
+ }
907
+ // @__NO_SIDE_EFFECTS__
908
+ function literal(literal_, message$1) {
909
+ return _standardSchema({
910
+ kind: "schema",
911
+ type: "literal",
912
+ reference: literal,
913
+ expects: /* @__PURE__ */ _stringify(literal_),
914
+ async: false,
915
+ literal: literal_,
916
+ message: message$1,
917
+ "~run"(dataset, config$1) {
918
+ if (/* @__PURE__ */ _isSameValueZero(dataset.value, this.literal)) dataset.typed = true;
919
+ else _addIssue(this, "type", dataset, config$1);
920
+ return dataset;
921
+ }
922
+ });
923
+ }
924
+ // @__NO_SIDE_EFFECTS__
925
+ function looseObject(entries$1, message$1) {
926
+ return _standardSchema({
927
+ kind: "schema",
928
+ type: "loose_object",
929
+ reference: looseObject,
930
+ expects: "Object",
931
+ async: false,
932
+ entries: entries$1,
933
+ message: message$1,
934
+ "~run"(dataset, config$1) {
935
+ const input = dataset.value;
936
+ if (input && typeof input === "object") {
937
+ dataset.typed = true;
938
+ dataset.value = {};
939
+ for (const key in this.entries) {
940
+ const valueSchema = this.entries[key];
941
+ if (key in input || (valueSchema.type === "exact_optional" || valueSchema.type === "optional" || valueSchema.type === "nullish") && valueSchema.default !== void 0) {
942
+ const value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);
943
+ const valueDataset = valueSchema["~run"]({ value: value$1 }, config$1);
944
+ if (valueDataset.issues) {
945
+ const pathItem = {
946
+ type: "object",
947
+ origin: "value",
948
+ input,
949
+ key,
950
+ value: value$1
951
+ };
952
+ for (const issue of valueDataset.issues) {
953
+ if (issue.path) issue.path.unshift(pathItem);
954
+ else issue.path = [pathItem];
955
+ dataset.issues?.push(issue);
956
+ }
957
+ if (!dataset.issues) dataset.issues = valueDataset.issues;
958
+ if (config$1.abortEarly) {
959
+ dataset.typed = false;
960
+ break;
961
+ }
962
+ }
963
+ if (!valueDataset.typed) dataset.typed = false;
964
+ dataset.value[key] = valueDataset.value;
965
+ } else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);
966
+ else if (valueSchema.type !== "exact_optional" && valueSchema.type !== "optional" && valueSchema.type !== "nullish") {
967
+ _addIssue(this, "key", dataset, config$1, {
968
+ input: void 0,
969
+ expected: `"${key}"`,
970
+ path: [{
971
+ type: "object",
972
+ origin: "key",
973
+ input,
974
+ key,
975
+ value: input[key]
976
+ }]
977
+ });
978
+ if (config$1.abortEarly) break;
979
+ }
980
+ }
981
+ if (!dataset.issues || !config$1.abortEarly) {
982
+ for (const key in input) if (/* @__PURE__ */ _isValidObjectKey(input, key) && !Object.prototype.hasOwnProperty.call(this.entries, key)) dataset.value[key] = input[key];
983
+ }
984
+ } else _addIssue(this, "type", dataset, config$1);
985
+ return dataset;
986
+ }
987
+ });
988
+ }
989
+ // @__NO_SIDE_EFFECTS__
990
+ function object(entries$1, message$1) {
991
+ return _standardSchema({
992
+ kind: "schema",
993
+ type: "object",
994
+ reference: object,
995
+ expects: "Object",
996
+ async: false,
997
+ entries: entries$1,
998
+ message: message$1,
999
+ "~run"(dataset, config$1) {
1000
+ const input = dataset.value;
1001
+ if (input && typeof input === "object") {
1002
+ dataset.typed = true;
1003
+ dataset.value = {};
1004
+ for (const key in this.entries) {
1005
+ const valueSchema = this.entries[key];
1006
+ if (key in input || (valueSchema.type === "exact_optional" || valueSchema.type === "optional" || valueSchema.type === "nullish") && valueSchema.default !== void 0) {
1007
+ const value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);
1008
+ const valueDataset = valueSchema["~run"]({ value: value$1 }, config$1);
1009
+ if (valueDataset.issues) {
1010
+ const pathItem = {
1011
+ type: "object",
1012
+ origin: "value",
1013
+ input,
1014
+ key,
1015
+ value: value$1
1016
+ };
1017
+ for (const issue of valueDataset.issues) {
1018
+ if (issue.path) issue.path.unshift(pathItem);
1019
+ else issue.path = [pathItem];
1020
+ dataset.issues?.push(issue);
1021
+ }
1022
+ if (!dataset.issues) dataset.issues = valueDataset.issues;
1023
+ if (config$1.abortEarly) {
1024
+ dataset.typed = false;
1025
+ break;
1026
+ }
1027
+ }
1028
+ if (!valueDataset.typed) dataset.typed = false;
1029
+ dataset.value[key] = valueDataset.value;
1030
+ } else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);
1031
+ else if (valueSchema.type !== "exact_optional" && valueSchema.type !== "optional" && valueSchema.type !== "nullish") {
1032
+ _addIssue(this, "key", dataset, config$1, {
1033
+ input: void 0,
1034
+ expected: `"${key}"`,
1035
+ path: [{
1036
+ type: "object",
1037
+ origin: "key",
1038
+ input,
1039
+ key,
1040
+ value: input[key]
1041
+ }]
1042
+ });
1043
+ if (config$1.abortEarly) break;
1044
+ }
1045
+ }
1046
+ } else _addIssue(this, "type", dataset, config$1);
1047
+ return dataset;
1048
+ }
1049
+ });
1050
+ }
1051
+ // @__NO_SIDE_EFFECTS__
1052
+ function optional(wrapped, default_) {
1053
+ return _standardSchema({
1054
+ kind: "schema",
1055
+ type: "optional",
1056
+ reference: optional,
1057
+ expects: `(${wrapped.expects} | undefined)`,
1058
+ async: false,
1059
+ wrapped,
1060
+ default: default_,
1061
+ "~run"(dataset, config$1) {
1062
+ if (dataset.value === void 0) {
1063
+ if (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault(this, dataset, config$1);
1064
+ if (dataset.value === void 0) {
1065
+ dataset.typed = true;
1066
+ return dataset;
1067
+ }
1068
+ }
1069
+ return this.wrapped["~run"](dataset, config$1);
1070
+ }
1071
+ });
1072
+ }
1073
+ // @__NO_SIDE_EFFECTS__
1074
+ function picklist(options, message$1) {
1075
+ return _standardSchema({
1076
+ kind: "schema",
1077
+ type: "picklist",
1078
+ reference: picklist,
1079
+ expects: /* @__PURE__ */ _joinExpects(options.map(_stringify), "|"),
1080
+ async: false,
1081
+ options,
1082
+ message: message$1,
1083
+ "~run"(dataset, config$1) {
1084
+ if (this.options.includes(dataset.value)) dataset.typed = true;
1085
+ else _addIssue(this, "type", dataset, config$1);
1086
+ return dataset;
1087
+ }
1088
+ });
1089
+ }
1090
+ // @__NO_SIDE_EFFECTS__
1091
+ function record(key, value$1, message$1) {
1092
+ return _standardSchema({
1093
+ kind: "schema",
1094
+ type: "record",
1095
+ reference: record,
1096
+ expects: "Object",
1097
+ async: false,
1098
+ key,
1099
+ value: value$1,
1100
+ message: message$1,
1101
+ "~run"(dataset, config$1) {
1102
+ const input = dataset.value;
1103
+ if (input && typeof input === "object") {
1104
+ dataset.typed = true;
1105
+ dataset.value = {};
1106
+ for (const entryKey in input) if (/* @__PURE__ */ _isValidObjectKey(input, entryKey)) {
1107
+ const entryValue = input[entryKey];
1108
+ const keyDataset = this.key["~run"]({ value: entryKey }, config$1);
1109
+ if (keyDataset.issues) {
1110
+ const pathItem = {
1111
+ type: "object",
1112
+ origin: "key",
1113
+ input,
1114
+ key: entryKey,
1115
+ value: entryValue
1116
+ };
1117
+ for (const issue of keyDataset.issues) {
1118
+ issue.path = [pathItem];
1119
+ dataset.issues?.push(issue);
1120
+ }
1121
+ if (!dataset.issues) dataset.issues = keyDataset.issues;
1122
+ if (config$1.abortEarly) {
1123
+ dataset.typed = false;
1124
+ break;
1125
+ }
1126
+ }
1127
+ const valueDataset = this.value["~run"]({ value: entryValue }, config$1);
1128
+ if (valueDataset.issues) {
1129
+ const pathItem = {
1130
+ type: "object",
1131
+ origin: "value",
1132
+ input,
1133
+ key: entryKey,
1134
+ value: entryValue
1135
+ };
1136
+ for (const issue of valueDataset.issues) {
1137
+ if (issue.path) issue.path.unshift(pathItem);
1138
+ else issue.path = [pathItem];
1139
+ dataset.issues?.push(issue);
1140
+ }
1141
+ if (!dataset.issues) dataset.issues = valueDataset.issues;
1142
+ if (config$1.abortEarly) {
1143
+ dataset.typed = false;
1144
+ break;
1145
+ }
1146
+ }
1147
+ if (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;
1148
+ if (keyDataset.typed) dataset.value[keyDataset.value] = valueDataset.value;
1149
+ }
1150
+ } else _addIssue(this, "type", dataset, config$1);
1151
+ return dataset;
1152
+ }
1153
+ });
1154
+ }
1155
+ // @__NO_SIDE_EFFECTS__
1156
+ function string(message$1) {
1157
+ return _standardSchema({
1158
+ kind: "schema",
1159
+ type: "string",
1160
+ reference: string,
1161
+ expects: "string",
1162
+ async: false,
1163
+ message: message$1,
1164
+ "~run"(dataset, config$1) {
1165
+ if (typeof dataset.value === "string") dataset.typed = true;
1166
+ else _addIssue(this, "type", dataset, config$1);
1167
+ return dataset;
1168
+ }
1169
+ });
1170
+ }
1171
+ // @__NO_SIDE_EFFECTS__
1172
+ function pipe(...pipe$1) {
1173
+ return _standardSchema({
1174
+ ...pipe$1[0],
1175
+ pipe: pipe$1,
1176
+ "~run"(dataset, config$1) {
1177
+ for (const item of pipe$1) if (item.kind !== "metadata") {
1178
+ if (dataset.issues && (item.kind === "schema" || item.kind === "transformation")) {
1179
+ dataset.typed = false;
1180
+ break;
1181
+ }
1182
+ if (!dataset.issues || !config$1.abortEarly && !config$1.abortPipeEarly) dataset = item["~run"](dataset, config$1);
1183
+ }
1184
+ return dataset;
1185
+ }
1186
+ });
1187
+ }
1184
1188
 
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 ──
1189
+ // packages/ai/agent/createAgentSchema.ts
1190
+ var DEFAULT_REASONING_EFFORT = "medium";
1191
+ var PROVIDER_REASONING_EFFORT_VALUES = {
1192
+ openai: ["none", "minimal", "low", "medium", "high", "xhigh", "max"],
1193
+ deepseek: ["low", "high", "max"],
1194
+ // nolo (Ollama Cloud) 支持 DeepSeek/Kimi/GLM 等 thinking 模型,
1195
+ // reasoning_effort 通过 OpenAI 兼容端点透传到 Ollama Cloud。
1196
+ nolo: ["low", "high", "max"],
1197
+ xai: ["low", "medium", "high"],
1198
+ grok: ["low", "medium", "high"],
1199
+ // none:关闭思考;必须保留,否则上游 clamp 会把 none 抬成 low,
1200
+ // kimi-code proxy 的 none/off → thinking.disabled 分支永远接不到。
1201
+ kimi: ["none", "low", "high", "max"],
1202
+ moonshot: ["none", "low", "high", "max"],
1203
+ // Qwen 用 enable_thinking (bool) 而非 reasoning_effort → 隐藏下拉
1204
+ qwen: [],
1205
+ // MiniMax M3: 接受这些值但所有非 none 效果相同
1206
+ minimax: ["none", "low", "medium", "high"],
1207
+ // Cursor: 推理强度在模型名后缀 (如 -high),不走独立参数
1208
+ cursor: [],
1209
+ // MiMo: 保守默认
1210
+ mimo: ["low", "medium", "high"],
1211
+ // CommandCode Provider API 透传 reasoning_effort(low/medium/high/xhigh/max),
1212
+ // 端点按各模型支持的子集自动 clamp(见 commandcode.ai/docs/provider-api)。
1213
+ commandcode: ["low", "medium", "high", "xhigh", "max"],
1214
+ // 阶跃星辰(StepFun)推理模型(step-3.5-flash-2603 / step-3.7-flash 等)支持 low / medium / high
1215
+ stepfun: ["none", "low", "medium", "high"]
1216
+ };
1217
+ var greetingMenuItemSchema = object({
1218
+ id: pipe(string(), minLength(1)),
1219
+ label: pipe(string(), minLength(1)),
1220
+ userMessage: optional(string())
1221
+ });
1222
+ var greetingConfigSchema = object({
1223
+ text: optional(pipe(string(), trim())),
1224
+ menu: optional(array(greetingMenuItemSchema))
1225
+ });
1226
+ var runtimeToolPolicySchema = looseObject({
1227
+ version: optional(literal(1)),
1228
+ agentTools: optional(array(string())),
1229
+ runtimeTools: optional(array(string())),
1230
+ workspace: optional(
1231
+ object({
1232
+ mode: optional(picklist(["none", "current", "lease"])),
1233
+ writableRoots: optional(array(string())),
1234
+ cwd: optional(string())
1235
+ })
1236
+ ),
1237
+ shell: optional(record(string(), string())),
1238
+ isolation: optional(record(string(), string())),
1239
+ git: optional(record(string(), string())),
1240
+ budget: optional(record(string(), string())),
1241
+ audit: optional(record(string(), string()))
1242
+ });
1243
+ var referenceItemSchema = pipe(
1244
+ object({
1245
+ dbKey: string(),
1246
+ title: string(),
1247
+ type: picklist(["knowledge", "instruction", "page"])
1248
+ }),
1249
+ transform((data) => ({
1250
+ ...data,
1251
+ type: data.type === "page" ? "knowledge" : data.type
1252
+ }))
1253
+ );
1254
+
1255
+ // packages/integrations/anthropic/anthropicModels.ts
1256
+ var anthropicModels = [
1287
1257
  {
1288
- name: "minimax-m3",
1289
- displayName: "MiniMax M3",
1258
+ name: "claude-3-5-sonnet-latest",
1259
+ displayName: "Claude 3.5 Sonnet",
1290
1260
  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"
1261
+ description: "Our most intelligent model to date",
1262
+ contextWindow: 2e5,
1263
+ maxOutputTokens: 8192,
1264
+ price: {
1265
+ input: 27,
1266
+ output: 135,
1267
+ cachingWrite: 33.75,
1268
+ cachingRead: 2.7
1269
+ }
1299
1270
  },
1300
- // ── DeepSeek ──
1301
1271
  {
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"
1272
+ name: "claude-3-7-sonnet-latest",
1273
+ displayName: "Claude 3.7 Sonnet",
1274
+ hasVision: true,
1275
+ description: "Our most intelligent model to date",
1276
+ contextWindow: 2e5,
1277
+ maxOutputTokens: 8192,
1278
+ price: {
1279
+ input: 27,
1280
+ output: 135,
1281
+ cachingWrite: 33.75,
1282
+ cachingRead: 2.7
1283
+ }
1313
1284
  },
1314
1285
  {
1315
- name: "deepseek-v4-flash",
1316
- displayName: "DeepSeek V4 Flash",
1286
+ name: "claude-3-5-haiku-20241022",
1287
+ displayName: "Claude 3.5 Haiku",
1317
1288
  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"
1289
+ description: "Fastest, most cost-effective model",
1290
+ contextWindow: 2e5,
1291
+ maxOutputTokens: 8192,
1292
+ price: {
1293
+ input: 7.2,
1294
+ output: 36,
1295
+ cachingWrite: 9,
1296
+ cachingRead: 0.72
1297
+ }
1326
1298
  }
1327
1299
  ];
1328
1300
 
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;
1301
+ // packages/integrations/anthropic/anthropicOAuthModels.ts
1302
+ var oauthModel = ({ name, displayName, contextWindow, thinkingMode, maxOutputTokens }) => ({
1303
+ name,
1304
+ displayName,
1305
+ hasVision: true,
1306
+ description: `OAuth \u8BA2\u9605\u6A21\u578B\uFF08${displayName}\uFF0C${thinkingMode === "adaptive" ? "Adaptive thinking" : "Extended thinking"}\uFF09`,
1307
+ contextWindow,
1308
+ ...maxOutputTokens ? { maxOutputTokens } : {},
1309
+ supportsReasoningEffort: true,
1310
+ price: { input: 0, output: 0 }
1311
+ });
1312
+ var anthropicOAuthModels = [
1313
+ // 5 代(1M + Adaptive thinking always-on;官方 max output 128k)
1314
+ oauthModel({ name: "claude-fable-5", displayName: "Claude Fable 5", contextWindow: 1e6, thinkingMode: "adaptive", maxOutputTokens: 128e3 }),
1315
+ oauthModel({ name: "claude-opus-5", displayName: "Claude Opus 5", contextWindow: 1e6, thinkingMode: "adaptive", maxOutputTokens: 128e3 }),
1316
+ oauthModel({ name: "claude-sonnet-5", displayName: "Claude Sonnet 5", contextWindow: 1e6, thinkingMode: "adaptive", maxOutputTokens: 128e3 }),
1317
+ // 4.6/4.7/4.8 系(Adaptive thinking;context 官方未单列,参照 fuzzy claude-4.6→1M)
1318
+ oauthModel({ name: "claude-opus-4-8", displayName: "Claude Opus 4.8", contextWindow: 1e6, thinkingMode: "adaptive" }),
1319
+ oauthModel({ name: "claude-opus-4-7", displayName: "Claude Opus 4.7", contextWindow: 1e6, thinkingMode: "adaptive" }),
1320
+ oauthModel({ name: "claude-sonnet-4-6", displayName: "Claude Sonnet 4.6", contextWindow: 1e6, thinkingMode: "adaptive" }),
1321
+ oauthModel({ name: "claude-opus-4-6", displayName: "Claude Opus 4.6", contextWindow: 1e6, thinkingMode: "adaptive" }),
1322
+ // 4.5 系(Extended thinking;官方发布规格 1M)
1323
+ oauthModel({ name: "claude-opus-4-5-20251101", displayName: "Claude Opus 4.5", contextWindow: 1e6, thinkingMode: "extended" }),
1324
+ oauthModel({ name: "claude-sonnet-4-5-20250929", displayName: "Claude Sonnet 4.5", contextWindow: 1e6, thinkingMode: "extended" }),
1325
+ // haiku-4-5(官方明确 context=200k + Extended thinking)
1326
+ oauthModel({ name: "claude-haiku-4-5-20251001", displayName: "Claude Haiku 4.5", contextWindow: 2e5, thinkingMode: "extended" })
1327
+ ];
1328
+ var OAUTH_MODEL_THINKING_MODE = new Map(
1329
+ anthropicOAuthModels.map((m) => [m.name, m.thinkingMode])
1330
+ );
1331
+ function isAdaptiveThinkingModelId(model) {
1332
+ if (!model) return false;
1333
+ const tableMode = OAUTH_MODEL_THINKING_MODE.get(model);
1334
+ if (tableMode === "adaptive") return true;
1335
+ if (tableMode === "extended") return false;
1336
+ const n = model.toLowerCase();
1337
+ 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
1338
  }
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;
1339
+
1340
+ // packages/ai/agent/liveAudioModel.ts
1341
+ var DEFAULT_GOOGLE_LIVE_AUDIO_MODEL = "gemini-3.1-flash-live-preview";
1342
+
1343
+ // packages/integrations/google/models.ts
1344
+ var googleModels = [
1345
+ {
1346
+ name: DEFAULT_GOOGLE_LIVE_AUDIO_MODEL,
1347
+ displayName: "Gemini 3.1 Flash Live",
1348
+ provider: "google",
1349
+ description: "Gemini Live API model for low-latency real-time voice conversations.",
1350
+ hasVision: true,
1351
+ hasAudio: true,
1352
+ contextWindow: 1048576,
1353
+ maxOutputTokens: 65500,
1354
+ supportsTool: true,
1355
+ price: {
1356
+ input: 4,
1357
+ output: 24,
1358
+ cachingWrite: 0.4,
1359
+ cachingRead: 0.4
1360
+ }
1361
+ },
1362
+ {
1363
+ name: "gemini-3.6-flash",
1364
+ displayName: "Gemini 3.6 Flash",
1365
+ provider: "google",
1366
+ description: "Gemini 3.6 Flash model for fast frontier agentic, coding, and multimodal tasks.",
1367
+ hasVision: true,
1368
+ hasAudio: true,
1369
+ contextWindow: 1048576,
1370
+ maxOutputTokens: 65536,
1371
+ supportsTool: true,
1372
+ supportsReasoningEffort: true,
1373
+ price: {
1374
+ input: 12,
1375
+ output: 72,
1376
+ cachingWrite: 1.2,
1377
+ cachingRead: 1.2
1378
+ },
1379
+ serviceTierPriceMultipliers: {
1380
+ batch: { inputOutput: 0.5, cache: 0.5 },
1381
+ flex: { inputOutput: 0.5, cache: 0.08 / 0.15 },
1382
+ priority: { inputOutput: 1.8, cache: 1.8 }
1431
1383
  }
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;
1384
+ },
1385
+ {
1386
+ name: "gemini-3.7-flash",
1387
+ displayName: "Gemini 3.7 Flash",
1388
+ provider: "google",
1389
+ description: "Gemini 3.7 Flash model for fast frontier agentic, coding, and multimodal tasks.",
1390
+ hasVision: true,
1391
+ hasAudio: true,
1392
+ contextWindow: 1048576,
1393
+ maxOutputTokens: 65536,
1394
+ supportsTool: true,
1395
+ supportsReasoningEffort: true,
1396
+ // Antigravity's subscription wire route is tiered; Gemini API uses this logical id.
1397
+ price: {
1398
+ input: 6,
1399
+ output: 30,
1400
+ cachingWrite: 0.6,
1401
+ cachingRead: 0.6
1445
1402
  }
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;
1403
+ },
1404
+ {
1405
+ name: "gemini-3.8-flash",
1406
+ displayName: "Gemini 3.8 Flash",
1407
+ provider: "google",
1408
+ description: "Gemini 3.8 Flash model for fast frontier agentic, coding, and multimodal tasks.",
1409
+ hasVision: true,
1410
+ hasAudio: true,
1411
+ contextWindow: 1048576,
1412
+ maxOutputTokens: 65536,
1413
+ supportsTool: true,
1414
+ supportsReasoningEffort: true,
1415
+ price: {
1416
+ input: 6,
1417
+ output: 30,
1418
+ cachingWrite: 0.6,
1419
+ cachingRead: 0.6
1458
1420
  }
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;
1421
+ },
1422
+ {
1423
+ name: "gemini-2.5-pro",
1424
+ displayName: "Gemini 2.5 Pro",
1425
+ provider: "google",
1426
+ description: "Gemini 2.5 Pro model for complex reasoning, coding, and large context multimodal tasks.",
1427
+ hasVision: true,
1428
+ hasAudio: true,
1429
+ contextWindow: 1048576,
1430
+ maxOutputTokens: 65536,
1431
+ supportsTool: true,
1432
+ supportsReasoningEffort: true,
1433
+ price: {
1434
+ input: 10,
1435
+ output: 40,
1436
+ cachingWrite: 2.5,
1437
+ cachingRead: 2.5
1511
1438
  }
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;
1439
+ },
1440
+ {
1441
+ name: "gemini-3.1-pro",
1442
+ displayName: "Gemini 3.1 Pro",
1443
+ provider: "google",
1444
+ description: "Gemini 3.1 Pro frontier reasoning, coding, and multimodal model.",
1445
+ hasVision: true,
1446
+ hasAudio: true,
1447
+ contextWindow: 1048576,
1448
+ maxOutputTokens: 65536,
1449
+ supportsTool: true,
1450
+ supportsReasoningEffort: true,
1451
+ price: {
1452
+ input: 16,
1453
+ output: 96,
1454
+ cachingWrite: 4,
1455
+ cachingRead: 4
1528
1456
  }
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];
1457
+ }
1458
+ ];
1459
+
1460
+ // packages/integrations/openai/models.ts
1461
+ var GPT_5_5_STANDARD_PRICE = {
1462
+ input: 40,
1463
+ output: 240,
1464
+ inputCacheHit: 4
1465
+ };
1466
+ var GPT_5_5_LONG_CONTEXT_PRICE = {
1467
+ input: 80,
1468
+ output: 360,
1469
+ inputCacheHit: 8
1470
+ };
1471
+ var GPT_5_5_PRO_STANDARD_PRICE = {
1472
+ input: 240,
1473
+ output: 1440,
1474
+ inputCacheHit: 0
1475
+ };
1476
+ var GPT_5_5_PRO_LONG_CONTEXT_PRICE = {
1477
+ input: 480,
1478
+ output: 2160,
1479
+ inputCacheHit: 0
1480
+ };
1481
+ var GPT_5_6_SOL_STANDARD_PRICE = {
1482
+ input: 32,
1483
+ output: 160,
1484
+ inputCacheHit: 3.2
1485
+ };
1486
+ var GPT_5_6_SOL_LONG_CONTEXT_PRICE = {
1487
+ input: 64,
1488
+ output: 240,
1489
+ inputCacheHit: 6.4
1490
+ };
1491
+ var GPT_5_6_TERRA_STANDARD_PRICE = {
1492
+ input: 16,
1493
+ output: 96,
1494
+ inputCacheHit: 1.6
1495
+ };
1496
+ var GPT_5_6_TERRA_LONG_CONTEXT_PRICE = {
1497
+ input: 32,
1498
+ output: 144,
1499
+ inputCacheHit: 3.2
1500
+ };
1501
+ var GPT_5_6_LUNA_PRICE = {
1502
+ input: 1.6,
1503
+ output: 9.6,
1504
+ inputCacheHit: 0.16
1505
+ };
1506
+ var GPT_6_ASTRA_STANDARD_PRICE = {
1507
+ input: 80,
1508
+ output: 400,
1509
+ inputCacheHit: 8
1510
+ };
1511
+ var GPT_6_ASTRA_LONG_CONTEXT_PRICE = {
1512
+ input: 160,
1513
+ output: 600,
1514
+ inputCacheHit: 16
1515
+ };
1516
+ var openAIModels = [
1517
+ {
1518
+ name: "gpt-5.5",
1519
+ displayName: "GPT-5.5 Standard",
1520
+ endpointKey: "responses",
1521
+ hasVision: true,
1522
+ contextWindow: 1047576,
1523
+ maxOutputTokens: 128e3,
1524
+ supportsReasoningEffort: true,
1525
+ price: GPT_5_5_STANDARD_PRICE,
1526
+ pricingStrategy: {
1527
+ type: "tiered_context",
1528
+ tiers: [
1529
+ {
1530
+ minContext: 272001,
1531
+ price: GPT_5_5_LONG_CONTEXT_PRICE
1590
1532
  }
1591
- } else _addIssue(this, "type", dataset, config$1);
1592
- return dataset;
1533
+ ]
1593
1534
  }
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
- }
1535
+ },
1536
+ {
1537
+ name: "gpt-5.6-sol",
1538
+ displayName: "GPT-5.6 Sol (Flagship)",
1539
+ endpointKey: "responses",
1540
+ hasVision: true,
1541
+ contextWindow: 105e4,
1542
+ maxOutputTokens: 128e3,
1543
+ supportsReasoningEffort: true,
1544
+ price: GPT_5_6_SOL_STANDARD_PRICE,
1545
+ pricingStrategy: {
1546
+ type: "tiered_context",
1547
+ tiers: [
1548
+ {
1549
+ minContext: 272001,
1550
+ price: GPT_5_6_SOL_LONG_CONTEXT_PRICE
1652
1551
  }
1653
- } else _addIssue(this, "type", dataset, config$1);
1654
- return dataset;
1552
+ ]
1655
1553
  }
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;
1554
+ },
1555
+ {
1556
+ name: "gpt-5.6-terra",
1557
+ displayName: "GPT-5.6 Terra (Balanced)",
1558
+ endpointKey: "responses",
1559
+ hasVision: true,
1560
+ contextWindow: 105e4,
1561
+ maxOutputTokens: 128e3,
1562
+ supportsReasoningEffort: true,
1563
+ price: GPT_5_6_TERRA_STANDARD_PRICE,
1564
+ pricingStrategy: {
1565
+ type: "tiered_context",
1566
+ tiers: [
1567
+ {
1568
+ minContext: 272001,
1569
+ price: GPT_5_6_TERRA_LONG_CONTEXT_PRICE
1674
1570
  }
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;
1571
+ ]
1694
1572
  }
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;
1573
+ },
1574
+ {
1575
+ name: "gpt-5.6-luna",
1576
+ displayName: "GPT-5.6 Luna (Fast)",
1577
+ // 已知缺口(2026-09-24 官网核对):官方对 >272K 输入有 2x/1.5x 规则,本条目
1578
+ // 未建模档位;平台托管侧又明确「价不随档位浮动」。是否给 BYO 档位属于计费
1579
+ // 策略决定,留待 owner 决策,不在此顺手改。
1580
+ endpointKey: "responses",
1581
+ hasVision: true,
1582
+ contextWindow: 105e4,
1583
+ maxOutputTokens: 128e3,
1584
+ supportsReasoningEffort: true,
1585
+ price: GPT_5_6_LUNA_PRICE
1586
+ },
1587
+ {
1588
+ name: "gpt-6-astra",
1589
+ displayName: "GPT-6 Astra",
1590
+ endpointKey: "responses",
1591
+ hasVision: true,
1592
+ contextWindow: 105e4,
1593
+ maxOutputTokens: 128e3,
1594
+ supportsReasoningEffort: true,
1595
+ price: GPT_6_ASTRA_STANDARD_PRICE,
1596
+ pricingStrategy: {
1597
+ type: "tiered_context",
1598
+ tiers: [
1599
+ {
1600
+ minContext: 272001,
1601
+ price: GPT_6_ASTRA_LONG_CONTEXT_PRICE
1756
1602
  }
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;
1603
+ ]
1775
1604
  }
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;
1605
+ },
1606
+ {
1607
+ name: "gpt-5.5-pro",
1608
+ displayName: "GPT-5.5 Pro",
1609
+ endpointKey: "responses",
1610
+ hasVision: true,
1611
+ contextWindow: 1047576,
1612
+ maxOutputTokens: 128e3,
1613
+ supportsReasoningEffort: true,
1614
+ price: GPT_5_5_PRO_STANDARD_PRICE,
1615
+ pricingStrategy: {
1616
+ type: "tiered_context",
1617
+ tiers: [
1618
+ {
1619
+ minContext: 272001,
1620
+ price: GPT_5_5_PRO_LONG_CONTEXT_PRICE
1788
1621
  }
1789
- if (!dataset.issues || !config$1.abortEarly && !config$1.abortPipeEarly) dataset = item["~run"](dataset, config$1);
1790
- }
1791
- return dataset;
1622
+ ]
1792
1623
  }
1793
- });
1794
- }
1624
+ }
1625
+ ];
1795
1626
 
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"]
1627
+ // packages/ai/llm/deepinfra.ts
1628
+ var DEEPINFRA_CLAUDE_HAIKU_PRICE = {
1629
+ input: 1 * 9,
1630
+ output: 5 * 9
1822
1631
  };
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
- );
1632
+ var DEEPINFRA_CLAUDE_SONNET_PRICE = {
1633
+ input: 3 * 9,
1634
+ output: 15 * 9
1635
+ };
1636
+ var DEEPINFRA_CLAUDE_OPUS_PRICE = {
1637
+ input: 5 * 9,
1638
+ output: 25 * 9
1639
+ };
1640
+ var DEEPINFRA_CLAUDE_FABLE_PRICE = {
1641
+ input: 10 * 9,
1642
+ output: 50 * 9
1643
+ };
1644
+ var deepinfraModels = [
1645
+ {
1646
+ name: "anthropic/claude-haiku-4-5",
1647
+ displayName: "Anthropic: Claude Haiku 4.5",
1648
+ hasVision: true,
1649
+ price: { ...DEEPINFRA_CLAUDE_HAIKU_PRICE },
1650
+ contextWindow: 195e3,
1651
+ maxOutputTokens: 4092,
1652
+ supportsTool: false
1653
+ },
1654
+ {
1655
+ name: "anthropic/claude-sonnet-5",
1656
+ displayName: "Anthropic: Claude Sonnet 5",
1657
+ hasVision: true,
1658
+ price: { ...DEEPINFRA_CLAUDE_SONNET_PRICE },
1659
+ contextWindow: 976e3,
1660
+ maxOutputTokens: 4092,
1661
+ supportsTool: false
1662
+ },
1663
+ {
1664
+ name: "anthropic/claude-opus-5",
1665
+ displayName: "Anthropic: Claude Opus 5",
1666
+ hasVision: true,
1667
+ price: { ...DEEPINFRA_CLAUDE_OPUS_PRICE },
1668
+ contextWindow: 976e3,
1669
+ maxOutputTokens: 4092,
1670
+ supportsTool: false
1671
+ },
1672
+ {
1673
+ name: "anthropic/claude-fable-5",
1674
+ displayName: "Anthropic: Claude Fable 5",
1675
+ hasVision: true,
1676
+ price: { ...DEEPINFRA_CLAUDE_FABLE_PRICE },
1677
+ contextWindow: 976e3,
1678
+ maxOutputTokens: 4092,
1679
+ supportsTool: false
1680
+ }
1681
+ ];
1682
+
1683
+ // packages/ai/llm/baseten.ts
1684
+ var BASETEN_GLM_53_FLASH_MODEL = "zai-org/GLM-5.3-Flash";
1685
+ var BASETEN_GLM_53_FLASH_PRICE = {
1686
+ input: 1.2,
1687
+ inputCacheHit: 0.24,
1688
+ output: 4
1689
+ };
1690
+ var basetenModels = [
1691
+ {
1692
+ name: BASETEN_GLM_53_FLASH_MODEL,
1693
+ displayName: "GLM 5.3 Flash",
1694
+ hasVision: true,
1695
+ price: { ...BASETEN_GLM_53_FLASH_PRICE },
1696
+ maxOutputTokens: 131072,
1697
+ contextWindow: 1048576,
1698
+ supportsTool: true,
1699
+ supportsReasoningEffort: true
1700
+ }
1701
+ ];
1702
+
1703
+ // packages/ai/llm/runinfra.ts
1704
+ var RUNINFRA_GLM_53_FLASH_MODEL = "glm-5-3-flash";
1705
+ var RUNINFRA_GLM_53_FLASH_PRICE = {
1706
+ input: 0.8,
1707
+ inputCacheHit: 0.08,
1708
+ output: 3.2
1709
+ };
1710
+ var runinfraModels = [
1711
+ {
1712
+ name: RUNINFRA_GLM_53_FLASH_MODEL,
1713
+ displayName: "GLM 5.3 Flash",
1714
+ hasVision: true,
1715
+ price: { ...RUNINFRA_GLM_53_FLASH_PRICE },
1716
+ maxOutputTokens: 1048576,
1717
+ contextWindow: 1048576,
1718
+ supportsTool: true,
1719
+ supportsReasoningEffort: true
1720
+ }
1721
+ ];
1722
+
1723
+ // packages/integrations/xai/models.ts
1724
+ var xaiModels = [
1725
+ {
1726
+ name: "grok-4.6",
1727
+ displayName: "Grok 4.6",
1728
+ hasVision: true,
1729
+ contextWindow: 5e5,
1730
+ price: { input: 16, output: 48, inputCacheHit: 4 },
1731
+ pricingStrategy: {
1732
+ type: "tiered_context",
1733
+ tiers: [
1734
+ {
1735
+ minContext: 200001,
1736
+ price: { input: 32, output: 96, inputCacheHit: 8 }
1737
+ }
1738
+ ]
1739
+ },
1740
+ fnCall: true,
1741
+ jsonOutput: true
1742
+ }
1743
+ ];
1744
+
1745
+ // packages/ai/llm/fireworks.ts
1746
+ var fireworksModels = [
1747
+ {
1748
+ name: "accounts/fireworks/models/minimax-m3",
1749
+ displayName: "MiniMax: MiniMax M3",
1750
+ hasVision: true,
1751
+ price: {
1752
+ input: 2.4,
1753
+ output: 9.6,
1754
+ cachingRead: 0.48
1755
+ },
1756
+ contextWindow: 512e3,
1757
+ supportsTool: true
1758
+ }
1759
+ ];
1860
1760
 
1861
1761
  // packages/ai/llm/reasoningModels.ts
1862
1762
  var REASONING_MODEL_NAMES = /* @__PURE__ */ new Set([
@@ -1872,6 +1772,7 @@ var REASONING_MODEL_NAMES = /* @__PURE__ */ new Set([
1872
1772
  "gemini-3.1-pro-preview",
1873
1773
  "gpt-5.5-pro",
1874
1774
  "gpt-6-astra",
1775
+ "gpt-6-luna",
1875
1776
  "gpt-5.6-sol",
1876
1777
  "gpt-5.6-terra",
1877
1778
  "gpt-5.6-luna",
@@ -1948,6 +1849,14 @@ function clampReasoningEffort(effort, provider) {
1948
1849
  var stepfunAllModels = [...stepfunModels, ...stepfunStepPlanModels];
1949
1850
  var moonshotAllModels = [...moonshotModels, ...kimiCodeModels];
1950
1851
  var qwenAllModels = [...qwenModels, ...qwenTokenPlanModels];
1852
+ var devinModels = [
1853
+ { name: "swe-2-max", displayName: "SWE-2 Max", hasVision: true, contextWindow: 262e3, price: { input: 0, output: 0 } },
1854
+ { name: "swe-2-high", displayName: "SWE-2 High", hasVision: true, contextWindow: 262e3, price: { input: 0, output: 0 } },
1855
+ { name: "swe-2-medium", displayName: "SWE-2 Medium", hasVision: true, contextWindow: 262e3, price: { input: 0, output: 0 } },
1856
+ { name: "swe-1-7", displayName: "SWE-1.7 Max", hasVision: true, contextWindow: 262e3, price: { input: 0, output: 0 } },
1857
+ { name: "swe-1-7-lightning", displayName: "SWE-1.7 Lightning Max", hasVision: true, contextWindow: 202752, price: { input: 0, output: 0 } },
1858
+ { name: "swe-1-6-fast", displayName: "SWE-1.6 Fast", hasVision: true, contextWindow: 2e5, price: { input: 0, output: 0 } }
1859
+ ];
1951
1860
  var MODEL_MAP = {
1952
1861
  // anthropic: anthropicModels,
1953
1862
  google: googleModels,
@@ -1967,6 +1876,7 @@ var MODEL_MAP = {
1967
1876
  };
1968
1877
  var MODEL_LOOKUP_MAP = {
1969
1878
  anthropic: [...anthropicModels, ...anthropicOAuthModels],
1879
+ devin: devinModels,
1970
1880
  xai: xaiModels,
1971
1881
  "opencode-go": opencodeGoModels,
1972
1882
  opencode: opencodeGoModels,
@@ -2188,6 +2098,14 @@ function getApiEndpoint(agent) {
2188
2098
 
2189
2099
  export {
2190
2100
  isAdaptiveThinkingModelId,
2101
+ qwenModels,
2102
+ qwenTokenPlanModels,
2103
+ moonshotModels,
2104
+ kimiCodeModels,
2105
+ stepfunModels,
2106
+ stepfunStepPlanModels,
2107
+ opencodeGoModels,
2108
+ DEFAULT_REASONING_EFFORT,
2191
2109
  isModelSupportReasoningEffort,
2192
2110
  clampReasoningEffort,
2193
2111
  MODEL_LOOKUP_MAP,