lookatstudy-mobile 0.31.7 → 0.32.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.
- package/package.json +1 -1
- package/server.cjs +169 -102
- package/web/assets/{CanvasStage-TGdCSqt3.js → CanvasStage-C5AjAi8o.js} +1 -1
- package/web/assets/{CommandPalette-CHM12_sF.js → CommandPalette-CMByQ1xA.js} +1 -1
- package/web/assets/{CourseSearchPanel-DF9APWFv.js → CourseSearchPanel-BlV2XeFD.js} +1 -1
- package/web/assets/{ExamView-DLR5HoNp.js → ExamView-BuzkmoG_.js} +1 -1
- package/web/assets/{ReviewPanel-B_YP_pZQ.js → ReviewPanel-Zve2SZUA.js} +1 -1
- package/web/assets/{SettingsView-Bx2o-pfB.js → SettingsView-ClrQQG3O.js} +2 -2
- package/web/assets/{VoicePanel-BYFfvEVi.js → VoicePanel-CrCt12Iw.js} +1 -1
- package/web/assets/{abnfDiagram-VCTEODGH-Cu2R2LAy.js → abnfDiagram-VCTEODGH-CvhdvCcB.js} +1 -1
- package/web/assets/{abnfDiagram-VCTEODGH-ODA7YWAP-BnXWQp3G.js → abnfDiagram-VCTEODGH-ODA7YWAP-0U3o9k-P.js} +1 -1
- package/web/assets/{architectureDiagram-5GKGNRK7-M4Dw8xar.js → architectureDiagram-5GKGNRK7-B7KWD0vf.js} +1 -1
- package/web/assets/{architectureDiagram-5GKGNRK7-C4PU3XN7-DahuHkce.js → architectureDiagram-5GKGNRK7-C4PU3XN7-BWNxjRJN.js} +1 -1
- package/web/assets/{arrow-right-CVGVL6C1.js → arrow-right-BUOXWVDJ.js} +1 -1
- package/web/assets/{blockDiagram-I7D4REHJ-D3EcOa_p.js → blockDiagram-I7D4REHJ-C2JsQ5gD.js} +1 -1
- package/web/assets/{blockDiagram-NRAW4CY4-UMJ6PMQQ-QEzeGe8E.js → blockDiagram-NRAW4CY4-UMJ6PMQQ-BFITa5i3.js} +1 -1
- package/web/assets/{c4Diagram-7LVT6UL2-BUCL7rZn.js → c4Diagram-7LVT6UL2-BKdIKfT2.js} +1 -1
- package/web/assets/{c4Diagram-UCG6FXSJ-75X3U2P3-B8oP2IYw.js → c4Diagram-UCG6FXSJ-75X3U2P3-frDapyTO.js} +1 -1
- package/web/assets/channel-B9w8tMGs.js +1 -0
- package/web/assets/{chunk-2Q5K7J3B-CGJQ-hQN.js → chunk-2Q5K7J3B-B9edEgx0.js} +1 -1
- package/web/assets/{chunk-5VM5RSS4-B3w02eai.js → chunk-5VM5RSS4-gTXbbOyw.js} +1 -1
- package/web/assets/{chunk-7XDTSPCN-D4A2-2lm.js → chunk-7XDTSPCN-WE5tnF0h.js} +1 -1
- package/web/assets/{chunk-CTNIYPP6-hhtVib9x.js → chunk-CTNIYPP6-BkodKTJ4.js} +1 -1
- package/web/assets/{chunk-CXNFBKHE-BNkpCvd2.js → chunk-CXNFBKHE-HwiQMaWc.js} +1 -1
- package/web/assets/{chunk-F27PBJKO-5K2-ZPrn.js → chunk-F27PBJKO-blDtmndB.js} +1 -1
- package/web/assets/{chunk-IMKFNOWR-D1Ml1Mzf.js → chunk-IMKFNOWR-c2ANK639.js} +1 -1
- package/web/assets/{chunk-ISA7TJRJ-DLdIn_DI.js → chunk-ISA7TJRJ-ORNUxxCz.js} +1 -1
- package/web/assets/{chunk-JWPE2WC7-CAKjh0CL.js → chunk-JWPE2WC7-B6N2oaft.js} +1 -1
- package/web/assets/{chunk-LV3HUYFY-Cs1uR2bk.js → chunk-LV3HUYFY-BCm0PQly.js} +1 -1
- package/web/assets/{chunk-M3IUQBOH-BAb49ehL.js → chunk-M3IUQBOH-DN38nuN1.js} +1 -1
- package/web/assets/{chunk-NDIOYS4C-Bmmi29ny.js → chunk-NDIOYS4C-Bo6GgJFG.js} +1 -1
- package/web/assets/{chunk-POPQ4Y6H-DPdVQk2j.js → chunk-POPQ4Y6H-DIzvpHxe.js} +1 -1
- package/web/assets/{chunk-RE4WF27V-BblJwncb.js → chunk-RE4WF27V-D8jfGB_4.js} +1 -1
- package/web/assets/{chunk-SVP7TREG-C83rFeRV.js → chunk-SVP7TREG-CxnNazbc.js} +1 -1
- package/web/assets/{chunk-TICWLB2K-CYUnWUTu.js → chunk-TICWLB2K-DURl3-X9.js} +1 -1
- package/web/assets/{chunk-VII2H2IX-wrWerw4E.js → chunk-VII2H2IX-B_sArj8v.js} +1 -1
- package/web/assets/{chunk-X5GNSKZ3-H2at5jDj.js → chunk-X5GNSKZ3-DYVuF3lP.js} +1 -1
- package/web/assets/{chunk-XCWWM2C3-DPOArozO.js → chunk-XCWWM2C3-D8AZk6R6.js} +1 -1
- package/web/assets/{chunk-XXDRQBXY-AZAmE8ID.js → chunk-XXDRQBXY-CkpBnoOj.js} +1 -1
- package/web/assets/classDiagram-DTDB5LWJ-LWRDKZ5K-Bc5E8Hix.js +1 -0
- package/web/assets/classDiagram-ZZMXUADV-BZZyCoYc.js +1 -0
- package/web/assets/classDiagram-v2-JRS7N3AN-2BZHGRP2-Bc5E8Hix.js +1 -0
- package/web/assets/classDiagram-v2-VYDZK3BY-BZZyCoYc.js +1 -0
- package/web/assets/{core-BQaddixm.js → core-B8sIFi4Z.js} +1 -1
- package/web/assets/{cose-bilkent-JH36ORCC-OB24KH3T-CzP72rDL.js → cose-bilkent-JH36ORCC-OB24KH3T-IvJ21Kzu.js} +1 -1
- package/web/assets/{cose-bilkent-JH36ORCC-BGgw7SLv.js → cose-bilkent-JH36ORCC-y34bWcV3.js} +1 -1
- package/web/assets/{cynefin-OW5HDTMX-Cf_5_a-5.js → cynefin-OW5HDTMX-BhCbnffL.js} +1 -1
- package/web/assets/{cynefin-OW5HDTMX-GVF3BKWE-QAODk723.js → cynefin-OW5HDTMX-GVF3BKWE-DZCD-8FK.js} +1 -1
- package/web/assets/{cynefinDiagram-5FMLGOSQ-H3WIRU3N-BMoFtzs4.js → cynefinDiagram-5FMLGOSQ-H3WIRU3N-DYZPSd2_.js} +1 -1
- package/web/assets/{cynefinDiagram-5FMLGOSQ-Dw7nxRB2.js → cynefinDiagram-5FMLGOSQ-hxpWMOtC.js} +1 -1
- package/web/assets/{dagre-3AP2YEHR-DCERTXHT-EXtmDj8z.js → dagre-3AP2YEHR-DCERTXHT-BX8eflJW.js} +1 -1
- package/web/assets/{dagre-GXQ25YYZ-vlVGk53L.js → dagre-GXQ25YYZ-CzyQyaZs.js} +1 -1
- package/web/assets/{diagram-S7CK7UJ4-Bqxk_WnH.js → diagram-S7CK7UJ4-COWdoy1M.js} +1 -1
- package/web/assets/{diagram-S7CK7UJ4-MULGZGEL-cYMkf34W.js → diagram-S7CK7UJ4-MULGZGEL-CqJqO9UI.js} +1 -1
- package/web/assets/{diagram-UQ7AKVKN-k45bHpF2.js → diagram-UQ7AKVKN-BTrH3UHo.js} +1 -1
- package/web/assets/{diagram-UQ7AKVKN-YQBY353J-a3LPFT-2.js → diagram-UQ7AKVKN-YQBY353J-QrzubupF.js} +1 -1
- package/web/assets/{diagram-VSXAHHWV-ywKgruN8.js → diagram-VSXAHHWV-DPZOIzCd.js} +1 -1
- package/web/assets/{diagram-VSXAHHWV-WLNH2ELY-CfUT8xTb.js → diagram-VSXAHHWV-WLNH2ELY-BCati379.js} +1 -1
- package/web/assets/{diagram-VX7I27RA-XW6YQV5G-VB__YYq8.js → diagram-VX7I27RA-XW6YQV5G-DqXG6n6Y.js} +1 -1
- package/web/assets/{diagram-VX7I27RA-CAwuC4cN.js → diagram-VX7I27RA-_xIvruEB.js} +1 -1
- package/web/assets/{diagram-Z3DM3KII-HG7RF65D-Cw_cUnc3.js → diagram-Z3DM3KII-HG7RF65D-Croiubkf.js} +1 -1
- package/web/assets/{diagram-Z3DM3KII-6mXMMWHO.js → diagram-Z3DM3KII-ksHvfnAi.js} +1 -1
- package/web/assets/{ebnfDiagram-PWID7BFC-OKY4VHYD-DVmOt1sC.js → ebnfDiagram-PWID7BFC-OKY4VHYD-CGcKoMMQ.js} +1 -1
- package/web/assets/{ebnfDiagram-PWID7BFC-IEFUdX_n.js → ebnfDiagram-PWID7BFC-noMSXuIk.js} +1 -1
- package/web/assets/{erDiagram-RLTQ6QDP-DpExbTGr.js → erDiagram-RLTQ6QDP-cL-kIfCG.js} +1 -1
- package/web/assets/{erDiagram-SSCWMZ5O-PIPKOIK7-D1h-NZGN.js → erDiagram-SSCWMZ5O-PIPKOIK7-D9Zc1NAW.js} +1 -1
- package/web/assets/{flowDiagram-A5DVABFB-2Z4AVO5R-XG2DkOPz.js → flowDiagram-A5DVABFB-2Z4AVO5R-mUdmnAxr.js} +1 -1
- package/web/assets/{flowDiagram-HODETNUW-CVQJVAT3.js → flowDiagram-HODETNUW-BwP5kUwO.js} +1 -1
- package/web/assets/{ganttDiagram-EL5Y4UJY-DvHP_TWQ.js → ganttDiagram-EL5Y4UJY-BE3keQkK.js} +1 -1
- package/web/assets/{ganttDiagram-EL5Y4UJY-JZNG7GOG-vYYYlTWP.js → ganttDiagram-EL5Y4UJY-JZNG7GOG-ejS74W4D.js} +1 -1
- package/web/assets/{gitGraphDiagram-WWUBYQGX-DMWMLL3G-ByL0LqqM.js → gitGraphDiagram-WWUBYQGX-DMWMLL3G-BkacjsFO.js} +1 -1
- package/web/assets/{gitGraphDiagram-WWUBYQGX-ry9IYeEW.js → gitGraphDiagram-WWUBYQGX-DZ1hemyK.js} +1 -1
- package/web/assets/{index-DTWKz0no.js → index-CBjzutcq.js} +1 -1
- package/web/assets/{index-CpqYeXwi.js → index-knlcEee4.js} +3 -3
- package/web/assets/{index-DxdKBzKI.js → index-pVpu1lqj.js} +1 -1
- package/web/assets/{infoDiagram-27XIBGKW-DDvG0vRy.js → infoDiagram-27XIBGKW-D5SmDceD.js} +1 -1
- package/web/assets/{infoDiagram-RXCK75RN-HANS5KVC-CKCxEXCf.js → infoDiagram-RXCK75RN-HANS5KVC-aXapDflI.js} +1 -1
- package/web/assets/{ishikawaDiagram-5VMMS53U-7GCIT7WU-CTlbVC9t.js → ishikawaDiagram-5VMMS53U-7GCIT7WU-Bc9UsCs_.js} +1 -1
- package/web/assets/{ishikawaDiagram-5VMMS53U-Cw8yiB-F.js → ishikawaDiagram-5VMMS53U-B74LRTCh.js} +1 -1
- package/web/assets/{journeyDiagram-3NMN7TZE-DmrBkHng.js → journeyDiagram-3NMN7TZE-BDaoWTSE.js} +1 -1
- package/web/assets/{journeyDiagram-EYS64GPL-OAPELBT7-Si9Q0sfo.js → journeyDiagram-EYS64GPL-OAPELBT7-MrPU_Ez8.js} +1 -1
- package/web/assets/{kanban-definition-3QL26DDD-I7RKWQQY-Cmxj0lSG.js → kanban-definition-3QL26DDD-I7RKWQQY-Cm3vdIeM.js} +1 -1
- package/web/assets/{kanban-definition-UXKFOSKX-B9P8PowG.js → kanban-definition-UXKFOSKX-SS8pMp0v.js} +1 -1
- package/web/assets/{katex-N6JRN4PM-DxqGi6j9.js → katex-N6JRN4PM-hIPFODWi.js} +1 -1
- package/web/assets/{layout-BDlJmzcm.js → layout-D8EinnOm.js} +1 -1
- package/web/assets/{main-B__n4XtS.js → main-48BT8Y-5.js} +6 -6
- package/web/assets/{mermaid-layout-elk.core-Dx3N9ecp.js → mermaid-layout-elk.core-BpWpx6UM.js} +2 -2
- package/web/assets/{mermaid.core-C8pP4TOq.js → mermaid.core-B5r2lVOh.js} +5 -5
- package/web/assets/{mindmap-definition-FBJOCRG2-KIYZG64Y-DflIxMHU.js → mindmap-definition-FBJOCRG2-KIYZG64Y-hpeP-5hz.js} +1 -1
- package/web/assets/{mindmap-definition-YA3MSWOX-D7LtXxe-.js → mindmap-definition-YA3MSWOX-De5xL7n7.js} +1 -1
- package/web/assets/{pegDiagram-XKGWAZYB-pUj4QKy1.js → pegDiagram-XKGWAZYB-CdIyH0Fn.js} +1 -1
- package/web/assets/{pegDiagram-XKGWAZYB-OIP57N6J-CuysK57C.js → pegDiagram-XKGWAZYB-OIP57N6J-CR8lJ0Uf.js} +1 -1
- package/web/assets/{pieDiagram-E7YTZNPT-2UOTW327-DltaWtWn.js → pieDiagram-E7YTZNPT-2UOTW327-DnJ5X3O6.js} +1 -1
- package/web/assets/{pieDiagram-E7YTZNPT-CjuS4Iw_.js → pieDiagram-E7YTZNPT-BfYDyK9E.js} +1 -1
- package/web/assets/{quadrantDiagram-AXDQQJYC-CRg__odF.js → quadrantDiagram-AXDQQJYC-Cza5JG_-.js} +1 -1
- package/web/assets/{quadrantDiagram-AXDQQJYC-SN3ASJJK-C4vbXljb.js → quadrantDiagram-AXDQQJYC-SN3ASJJK-Bcepwx-u.js} +1 -1
- package/web/assets/{railroadDiagram-O6MQD6OU-34742W6X-BOuq75jQ.js → railroadDiagram-O6MQD6OU-34742W6X-NzeT7rIi.js} +1 -1
- package/web/assets/{railroadDiagram-O6MQD6OU-BVk902Tj.js → railroadDiagram-O6MQD6OU-C95urtld.js} +1 -1
- package/web/assets/{render-O7CIS3YK-1SHrMp-T.js → render-O7CIS3YK-C6VkwFv4.js} +7 -7
- package/web/assets/{requirementDiagram-BXWQKSXE-C-_kr3sQ.js → requirementDiagram-BXWQKSXE-BAlq4SmX.js} +1 -1
- package/web/assets/{requirementDiagram-EFPCY7ZU-NGAFFSMB-Zbjh4VeP.js → requirementDiagram-EFPCY7ZU-NGAFFSMB-DzevWop7.js} +1 -1
- package/web/assets/{rotate-ccw-C9BY0Gz8.js → rotate-ccw-Cg9NLquP.js} +1 -1
- package/web/assets/{sankeyDiagram-P5KCCOFB-3D3M4XPB-CtvZgMFX.js → sankeyDiagram-P5KCCOFB-3D3M4XPB-DApmapmK.js} +1 -1
- package/web/assets/{sankeyDiagram-P5KCCOFB-DFLAuL3x.js → sankeyDiagram-P5KCCOFB-BD8XvM6V.js} +1 -1
- package/web/assets/{sequenceDiagram-WJ2MYXX4-B2EVFaO8.js → sequenceDiagram-WJ2MYXX4-3QbrYVOI.js} +1 -1
- package/web/assets/{sequenceDiagram-WJ2MYXX4-Q2IOPB4R-CqDp8b1C.js → sequenceDiagram-WJ2MYXX4-Q2IOPB4R-0NYlnM84.js} +1 -1
- package/web/assets/{sizeCapture-INFHLROL-Cbom96XM.js → sizeCapture-INFHLROL-B6CyQprA.js} +1 -1
- package/web/assets/{sizeCapture-X5ZJPWSS-PSGVOMYM-BvErvm0i.js → sizeCapture-X5ZJPWSS-PSGVOMYM-BNAT5QMm.js} +1 -1
- package/web/assets/{stateDiagram-D77RDMKH-XLx2BqV-.js → stateDiagram-D77RDMKH-00SC5Yaa.js} +1 -1
- package/web/assets/{stateDiagram-HBIQ2CUA-4M2S6MAN-DC7ZJpzy.js → stateDiagram-HBIQ2CUA-4M2S6MAN-irstRbtp.js} +1 -1
- package/web/assets/stateDiagram-v2-4QOOHH4V-LBBLA2WV-eCbd9dBW.js +1 -0
- package/web/assets/stateDiagram-v2-MP3YSRHH-3vtW0ec_.js +1 -0
- package/web/assets/{swimlanes-42K2YHIH-DXOm92Ms.js → swimlanes-42K2YHIH-CmbMI_md.js} +1 -1
- package/web/assets/{swimlanes-XN3QIQJK-N6N2CCQ6-DapyVwam.js → swimlanes-XN3QIQJK-N6N2CCQ6-BqITgbLG.js} +1 -1
- package/web/assets/swimlanesDiagram-VK2B7HYN-E6N4H5SY-nuGcWYId.js +8 -0
- package/web/assets/swimlanesDiagram-VR7AAH4N-CjHyszkJ.js +8 -0
- package/web/assets/{timeline-definition-24CTP7MA-CqR5xGhd.js → timeline-definition-24CTP7MA-CLCGIomU.js} +1 -1
- package/web/assets/{timeline-definition-24CTP7MA-KN7RSRVM-Ig7L1AVw.js → timeline-definition-24CTP7MA-KN7RSRVM-BYuvwtyK.js} +1 -1
- package/web/assets/{vennDiagram-4TSXK5OY-AKJ7LXAN-BGN15FYj.js → vennDiagram-4TSXK5OY-AKJ7LXAN-AoK44fps.js} +1 -1
- package/web/assets/{vennDiagram-4TSXK5OY-BIbMP5jQ.js → vennDiagram-4TSXK5OY-DCfqg183.js} +1 -1
- package/web/assets/{wardleyDiagram-VM6X3IG4-3B6A3BN5-D1BsAchW.js → wardleyDiagram-VM6X3IG4-3B6A3BN5-B1lE0M48.js} +1 -1
- package/web/assets/{wardleyDiagram-VM6X3IG4-B9GgWLzM.js → wardleyDiagram-VM6X3IG4-D1GxucqJ.js} +1 -1
- package/web/assets/{xychartDiagram-S5SC5T6Z-Ci-xFIuF.js → xychartDiagram-S5SC5T6Z-DlDA8yrW.js} +1 -1
- package/web/assets/{xychartDiagram-S5SC5T6Z-OBDNV6WG-Ch9v1QOx.js → xychartDiagram-S5SC5T6Z-OBDNV6WG-D9XtPaPY.js} +1 -1
- package/web/index.html +1 -1
- package/web/assets/channel-D7Ih6EIf.js +0 -1
- package/web/assets/classDiagram-DTDB5LWJ-LWRDKZ5K-BR03vFar.js +0 -1
- package/web/assets/classDiagram-ZZMXUADV-BtZeWkYk.js +0 -1
- package/web/assets/classDiagram-v2-JRS7N3AN-2BZHGRP2-BR03vFar.js +0 -1
- package/web/assets/classDiagram-v2-VYDZK3BY-BtZeWkYk.js +0 -1
- package/web/assets/stateDiagram-v2-4QOOHH4V-LBBLA2WV-CFQLhU6X.js +0 -1
- package/web/assets/stateDiagram-v2-MP3YSRHH-DYFP3G7n.js +0 -1
- package/web/assets/swimlanesDiagram-VK2B7HYN-E6N4H5SY-xotulGrd.js +0 -8
- package/web/assets/swimlanesDiagram-VR7AAH4N-DwIflKdO.js +0 -8
package/package.json
CHANGED
package/server.cjs
CHANGED
|
@@ -60668,22 +60668,23 @@ var init_llm_presets = __esm({
|
|
|
60668
60668
|
"use strict";
|
|
60669
60669
|
PROVIDER_PRESETS = [
|
|
60670
60670
|
// ================================================================
|
|
60671
|
-
// 智谱 GLM — 标准按量计费端点
|
|
60671
|
+
// 智谱 GLM — 标准按量计费端点(模型清单 = z.ai /models 实测 + 常驻免费档)
|
|
60672
60672
|
// ================================================================
|
|
60673
60673
|
{
|
|
60674
60674
|
id: "glm",
|
|
60675
60675
|
label: "\u667A\u8C31 GLM\uFF08\u6807\u51C6 API\uFF09",
|
|
60676
60676
|
protocol: "openai-compatible",
|
|
60677
60677
|
baseUrl: "https://open.bigmodel.cn/api/paas/v4",
|
|
60678
|
-
defaultModel: "glm-
|
|
60678
|
+
defaultModel: "glm-5.3-flash",
|
|
60679
60679
|
models: [
|
|
60680
|
-
{ id: "glm-
|
|
60681
|
-
{ id: "glm-5.
|
|
60682
|
-
{ id: "glm-5.
|
|
60680
|
+
{ id: "glm-5.3", label: "GLM-5.3\uFF08\u65D7\u8230 \xB7 1.3M\u4E0A\u4E0B\u6587\uFF09", contextWindow: 1310720, capabilities: ["chat", "reasoning", "tools"], pricing: { input: 1.4, output: 4.4 } },
|
|
60681
|
+
{ id: "glm-5.3-flash", label: "GLM-5.3-Flash\uFF08\u5FEB\u901F \xB7 \u652F\u6301\u770B\u56FE\uFF09", contextWindow: 1310720, capabilities: ["chat", "tools", "vision"], pricing: { input: 0.15, output: 0.5 } },
|
|
60682
|
+
{ id: "glm-5.2", label: "GLM-5.2\uFF08\u4E0A\u4EE3\u65D7\u8230 \xB7 1M\u4E0A\u4E0B\u6587\uFF09", contextWindow: 1e6, capabilities: ["chat", "reasoning", "tools"], pricing: { input: 0.5, output: 1.5 } },
|
|
60683
|
+
{ id: "glm-5", label: "GLM-5\uFF08\u901A\u7528\uFF09", contextWindow: null, capabilities: ["chat", "reasoning", "tools"] },
|
|
60684
|
+
{ id: "glm-5-turbo", label: "GLM-5-Turbo\uFF08\u6781\u901F\uFF09", contextWindow: null, capabilities: ["chat", "tools"] },
|
|
60683
60685
|
{ id: "glm-4.7", label: "GLM-4.7\uFF08\u5747\u8861\uFF09", contextWindow: 2e5, capabilities: ["chat", "tools"], pricing: { input: 0.14, output: 0.28 } },
|
|
60684
|
-
{ id: "glm-4.
|
|
60685
|
-
{ id: "glm-4
|
|
60686
|
-
{ id: "glm-4-long", label: "GLM-4-Long\uFF081M\u8D85\u957F\u4E0A\u4E0B\u6587\uFF09", contextWindow: 1e6, capabilities: ["chat"], pricing: { input: 0.07, output: 0.14 } }
|
|
60686
|
+
{ id: "glm-4.5-air", label: "GLM-4.5-Air\uFF08\u8F7B\u91CF\u4FBF\u5B9C\uFF09", contextWindow: null, capabilities: ["chat", "tools"] },
|
|
60687
|
+
{ id: "glm-4-flash", label: "GLM-4-Flash\uFF08\u514D\u8D39\uFF09", contextWindow: 128e3, free: true, capabilities: ["chat"], pricing: { input: 0, output: 0 } }
|
|
60687
60688
|
],
|
|
60688
60689
|
apiKeySetting: "glm_api_key",
|
|
60689
60690
|
keyUrl: "https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys",
|
|
@@ -60691,18 +60692,23 @@ var init_llm_presets = __esm({
|
|
|
60691
60692
|
note: "\u56FD\u5185\u63A8\u8350 \xB7 \u6309\u91CF\u8BA1\u8D39 \xB7 \u6709\u514D\u8D39\u989D\u5EA6"
|
|
60692
60693
|
},
|
|
60693
60694
|
// ================================================================
|
|
60694
|
-
// 智谱 GLM — CodingPlan
|
|
60695
|
+
// 智谱 GLM — CodingPlan 订阅端点(性价比最高;清单 = coding /models 实测)
|
|
60695
60696
|
// ================================================================
|
|
60696
60697
|
{
|
|
60697
60698
|
id: "glm-codingplan",
|
|
60698
60699
|
label: "\u667A\u8C31 GLM\uFF08CodingPlan \u8BA2\u9605\uFF09",
|
|
60699
60700
|
protocol: "openai-compatible",
|
|
60700
60701
|
baseUrl: "https://open.bigmodel.cn/api/coding/paas/v4",
|
|
60701
|
-
defaultModel: "glm-5.
|
|
60702
|
+
defaultModel: "glm-5.3",
|
|
60702
60703
|
models: [
|
|
60703
|
-
{ id: "glm-5.
|
|
60704
|
-
{ id: "glm-5.3-flash", label: "GLM-5.3-Flash\uFF08\u5FEB\u901F \xB7 \u652F\u6301\u770B\u56FE\uFF09", contextWindow:
|
|
60705
|
-
{ id: "glm-
|
|
60704
|
+
{ id: "glm-5.3", label: "GLM-5.3\uFF08\u65D7\u8230\uFF09", contextWindow: 1310720, capabilities: ["chat", "reasoning", "tools"] },
|
|
60705
|
+
{ id: "glm-5.3-flash", label: "GLM-5.3-Flash\uFF08\u5FEB\u901F \xB7 \u652F\u6301\u770B\u56FE\uFF09", contextWindow: 1310720, capabilities: ["chat", "tools", "vision"] },
|
|
60706
|
+
{ id: "glm-5.2", label: "GLM-5.2\uFF08\u4E0A\u4EE3\u65D7\u8230\uFF09", contextWindow: 1e6, capabilities: ["chat", "reasoning", "tools"] },
|
|
60707
|
+
{ id: "glm-5", label: "GLM-5\uFF08\u901A\u7528\uFF09", contextWindow: null, capabilities: ["chat", "reasoning", "tools"] },
|
|
60708
|
+
{ id: "glm-5-turbo", label: "GLM-5-Turbo\uFF08\u6781\u901F\uFF09", contextWindow: null, capabilities: ["chat", "tools"] },
|
|
60709
|
+
{ id: "glm-4.7", label: "GLM-4.7\uFF08\u5747\u8861\uFF09", contextWindow: 2e5, capabilities: ["chat", "tools"] },
|
|
60710
|
+
{ id: "glm-4.6", label: "GLM-4.6\uFF08\u7F16\u7801\u5F3A\uFF09", contextWindow: 2e5, capabilities: ["chat", "reasoning", "tools"] },
|
|
60711
|
+
{ id: "glm-4.5-air", label: "GLM-4.5-Air\uFF08\u8F7B\u91CF\u4FBF\u5B9C\uFF09", contextWindow: null, capabilities: ["chat", "tools"] }
|
|
60706
60712
|
],
|
|
60707
60713
|
apiKeySetting: "glm_codingplan_key",
|
|
60708
60714
|
keyUrl: "https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys",
|
|
@@ -60710,26 +60716,27 @@ var init_llm_presets = __esm({
|
|
|
60710
60716
|
note: "\u{1F680} CodingPlan \u8BA2\u9605 \xB7 \u6027\u4EF7\u6BD4\u6700\u9AD8 \xB7 \u9700 CodingPlan key"
|
|
60711
60717
|
},
|
|
60712
60718
|
// ================================================================
|
|
60713
|
-
// DeepSeek —
|
|
60719
|
+
// DeepSeek — V4 世代;thinking 参数(none/low/high/max,默认开=high);
|
|
60720
|
+
// 旧 deepseek-chat/deepseek-reasoner 模型名 2026-07 已退役(官方迁移公告)
|
|
60714
60721
|
// ================================================================
|
|
60715
60722
|
{
|
|
60716
60723
|
id: "deepseek",
|
|
60717
60724
|
label: "DeepSeek",
|
|
60718
60725
|
protocol: "openai-compatible",
|
|
60719
60726
|
baseUrl: "https://api.deepseek.com",
|
|
60720
|
-
defaultModel: "deepseek-v4-flash",
|
|
60727
|
+
defaultModel: "deepseek-v4.1-flash",
|
|
60721
60728
|
models: [
|
|
60722
|
-
{ id: "deepseek-v4-flash", label: "DeepSeek V4 Flash\uFF08\
|
|
60723
|
-
{ id: "deepseek-v4-pro", label: "DeepSeek V4 Pro\uFF08\u65D7\u8230\uFF09", contextWindow:
|
|
60724
|
-
{ id: "deepseek-
|
|
60729
|
+
{ id: "deepseek-v4.1-flash", label: "DeepSeek V4.1 Flash\uFF08\u63A8\u8350 \xB7 1M\u4E0A\u4E0B\u6587 \xB7 \u652F\u6301\u770B\u56FE\uFF09", contextWindow: 1048576, capabilities: ["chat", "tools", "vision"], pricing: { input: 0.15, output: 0.6 } },
|
|
60730
|
+
{ id: "deepseek-v4-pro", label: "DeepSeek V4 Pro\uFF08\u65D7\u8230 \xB7 1M\u4E0A\u4E0B\u6587\uFF09", contextWindow: 1048576, capabilities: ["chat", "reasoning", "tools"], pricing: { input: 0.84, output: 1.68 } },
|
|
60731
|
+
{ id: "deepseek-v4-flash", label: "DeepSeek V4 Flash\uFF08\u4E0A\u4EE3\u5FEB\u6863\uFF09", contextWindow: 64e3, capabilities: ["chat", "tools"], pricing: { input: 0.14, output: 0.28 } }
|
|
60725
60732
|
],
|
|
60726
60733
|
apiKeySetting: "deepseek_api_key",
|
|
60727
60734
|
keyUrl: "https://platform.deepseek.com/api_keys",
|
|
60728
60735
|
docsUrl: "https://api-docs.deepseek.com/",
|
|
60729
|
-
note: "\u56FD\u5185 \xB7 \u63A8\u7406\
|
|
60736
|
+
note: "\u56FD\u5185 \xB7 \u63A8\u7406\u5F3A \xB7 V4.1 Flash \u652F\u6301\u770B\u56FE"
|
|
60730
60737
|
},
|
|
60731
60738
|
// ================================================================
|
|
60732
|
-
// Moonshot Kimi —
|
|
60739
|
+
// Moonshot Kimi — k3 旗舰(1M·看图),k2.5/k2.6 混合思考(默认开)
|
|
60733
60740
|
// ================================================================
|
|
60734
60741
|
{
|
|
60735
60742
|
id: "kimi",
|
|
@@ -60738,7 +60745,9 @@ var init_llm_presets = __esm({
|
|
|
60738
60745
|
baseUrl: "https://api.moonshot.cn/v1",
|
|
60739
60746
|
defaultModel: "kimi-k3",
|
|
60740
60747
|
models: [
|
|
60741
|
-
{ id: "kimi-k3", label: "Kimi K3\
|
|
60748
|
+
{ id: "kimi-k3", label: "Kimi K3\uFF08\u65D7\u8230 \xB7 1M\u4E0A\u4E0B\u6587 \xB7 \u770B\u56FE\uFF09", contextWindow: 1048576, capabilities: ["chat", "tools", "vision"], pricing: { input: 2.3, output: 11.55 } },
|
|
60749
|
+
{ id: "kimi-k2.6", label: "Kimi K2.6\uFF08\u6DF7\u5408\u601D\u8003 \xB7 \u770B\u56FE\uFF09", contextWindow: 262144, capabilities: ["chat", "tools", "vision"], pricing: { input: 0.95, output: 4 } },
|
|
60750
|
+
{ id: "kimi-k2.7-code", label: "Kimi K2.7 Code\uFF08\u4EE3\u7801\uFF09", contextWindow: 262144, capabilities: ["chat", "tools", "vision"], pricing: { input: 0.71, output: 3.5 } }
|
|
60742
60751
|
],
|
|
60743
60752
|
apiKeySetting: "kimi_api_key",
|
|
60744
60753
|
keyUrl: "https://platform.kimi.com/console/api-keys",
|
|
@@ -60746,18 +60755,18 @@ var init_llm_presets = __esm({
|
|
|
60746
60755
|
note: "\u56FD\u5185 \xB7 \u8D85\u957F\u4E0A\u4E0B\u6587"
|
|
60747
60756
|
},
|
|
60748
60757
|
// ================================================================
|
|
60749
|
-
// 通义千问 Qwen
|
|
60758
|
+
// 通义千问 Qwen(阿里云百炼)— qwen3.5 世代(全系多模态)
|
|
60750
60759
|
// ================================================================
|
|
60751
60760
|
{
|
|
60752
60761
|
id: "qwen",
|
|
60753
60762
|
label: "\u901A\u4E49\u5343\u95EE Qwen",
|
|
60754
60763
|
protocol: "openai-compatible",
|
|
60755
60764
|
baseUrl: "https://dashscope.aliyuncs.com/compatible-mode/v1",
|
|
60756
|
-
defaultModel: "
|
|
60765
|
+
defaultModel: "qwen3.5-plus",
|
|
60757
60766
|
models: [
|
|
60758
|
-
{ id: "
|
|
60759
|
-
{ id: "
|
|
60760
|
-
{ id: "
|
|
60767
|
+
{ id: "qwen3.5-plus", label: "Qwen3.5 Plus\uFF08\u5747\u8861 \xB7 1M\u4E0A\u4E0B\u6587 \xB7 \u770B\u56FE\uFF09", contextWindow: 1e6, capabilities: ["chat", "tools", "vision"], pricing: { input: 0.3, output: 1.8 } },
|
|
60768
|
+
{ id: "qwen3.5-flash", label: "Qwen3.5 Flash\uFF08\u5FEB/\u4FBF\u5B9C \xB7 1M\u4E0A\u4E0B\u6587 \xB7 \u770B\u56FE\uFF09", contextWindow: 1e6, capabilities: ["chat", "tools", "vision"], pricing: { input: 0.07, output: 0.26 } },
|
|
60769
|
+
{ id: "qwen3.5-122b-a10b", label: "Qwen3.5 122B-A10B\uFF08\u5F00\u6E90\u65D7\u8230\u6258\u7BA1\uFF09", contextWindow: 262144, capabilities: ["chat", "tools", "vision"], pricing: { input: 0.26, output: 2.08 } }
|
|
60761
60770
|
],
|
|
60762
60771
|
apiKeySetting: "qwen_api_key",
|
|
60763
60772
|
keyUrl: "https://dashscope.console.aliyun.com/apiKey",
|
|
@@ -60765,56 +60774,57 @@ var init_llm_presets = __esm({
|
|
|
60765
60774
|
note: "\u56FD\u5185 \xB7 \u963F\u91CC\u4E91\u767E\u70BC"
|
|
60766
60775
|
},
|
|
60767
60776
|
// ================================================================
|
|
60768
|
-
// SiliconCloud
|
|
60777
|
+
// SiliconCloud 硅基流动(聚合平台;模型名随上游滚动,以控制台列表为准)
|
|
60769
60778
|
// ================================================================
|
|
60770
60779
|
{
|
|
60771
60780
|
id: "siliconcloud",
|
|
60772
60781
|
label: "SiliconCloud \u7845\u57FA\u6D41\u52A8",
|
|
60773
60782
|
protocol: "openai-compatible",
|
|
60774
60783
|
baseUrl: "https://api.siliconflow.cn/v1",
|
|
60775
|
-
defaultModel: "deepseek-ai/DeepSeek-
|
|
60784
|
+
defaultModel: "deepseek-ai/DeepSeek-V4.1",
|
|
60776
60785
|
models: [
|
|
60777
|
-
{ id: "deepseek-ai/DeepSeek-
|
|
60778
|
-
{ id: "Qwen/
|
|
60786
|
+
{ id: "deepseek-ai/DeepSeek-V4.1", label: "DeepSeek V4.1", contextWindow: 1048576, capabilities: ["chat", "tools"] },
|
|
60787
|
+
{ id: "Qwen/Qwen3.5-122B-A10B", label: "Qwen3.5 122B-A10B", contextWindow: 262144, capabilities: ["chat", "tools"] }
|
|
60779
60788
|
],
|
|
60780
60789
|
apiKeySetting: "siliconcloud_api_key",
|
|
60781
60790
|
keyUrl: "https://cloud.siliconflow.cn/account/ak",
|
|
60782
60791
|
docsUrl: "https://docs.siliconflow.cn/",
|
|
60783
|
-
note: "\u805A\u5408\u5E73\u53F0 \xB7 \
|
|
60792
|
+
note: "\u805A\u5408\u5E73\u53F0 \xB7 \u6A21\u578B\u968F\u4E0A\u6E38\u6EDA\u52A8,\u4EE5\u63A7\u5236\u53F0\u5217\u8868\u4E3A\u51C6"
|
|
60784
60793
|
},
|
|
60785
60794
|
// ================================================================
|
|
60786
|
-
// OpenRouter
|
|
60795
|
+
// OpenRouter(国际聚合,应用内另有全量自动发现;此为常驻精选)
|
|
60787
60796
|
// ================================================================
|
|
60788
60797
|
{
|
|
60789
60798
|
id: "openrouter",
|
|
60790
60799
|
label: "OpenRouter\uFF08\u56FD\u9645\u805A\u5408\uFF09",
|
|
60791
60800
|
protocol: "openai-compatible",
|
|
60792
60801
|
baseUrl: "https://openrouter.ai/api/v1",
|
|
60793
|
-
defaultModel: "z-ai/glm-5.
|
|
60802
|
+
defaultModel: "z-ai/glm-5.3-flash",
|
|
60794
60803
|
models: [
|
|
60795
|
-
{ id: "z-ai/glm-5.
|
|
60796
|
-
{ id: "
|
|
60797
|
-
{ id: "
|
|
60798
|
-
{ id: "google/gemini-flash
|
|
60804
|
+
{ id: "z-ai/glm-5.3-flash", label: "GLM-5.3-Flash\uFF08\u4FBF\u5B9C \xB7 \u770B\u56FE\uFF09", contextWindow: 1310720, capabilities: ["chat", "tools", "vision"], pricing: { input: 0.15, output: 0.5 } },
|
|
60805
|
+
{ id: "openai/gpt-5.6-luna", label: "GPT-5.6 Luna\uFF08\u4FBF\u5B9C \xB7 \u770B\u56FE\uFF09", contextWindow: 105e4, capabilities: ["chat", "tools", "vision"], pricing: { input: 0.2, output: 1.2 } },
|
|
60806
|
+
{ id: "anthropic/claude-sonnet-5", label: "Claude Sonnet 5\uFF08\u5747\u8861 \xB7 \u770B\u56FE\uFF09", contextWindow: 1e6, capabilities: ["chat", "tools", "vision"], pricing: { input: 2, output: 10 } },
|
|
60807
|
+
{ id: "google/gemini-3.8-flash", label: "Gemini 3.8 Flash\uFF08\u5FEB \xB7 \u770B\u56FE\uFF09", contextWindow: 1048576, capabilities: ["chat", "vision"], pricing: { input: 0.75, output: 3.75 } },
|
|
60808
|
+
{ id: "deepseek/deepseek-v4.1-flash", label: "DeepSeek V4.1 Flash\uFF08\u4FBF\u5B9C \xB7 \u770B\u56FE\uFF09", contextWindow: 1048576, capabilities: ["chat", "tools", "vision"], pricing: { input: 0.15, output: 0.6 } }
|
|
60799
60809
|
],
|
|
60800
60810
|
apiKeySetting: "openrouter_api_key",
|
|
60801
60811
|
keyUrl: "https://openrouter.ai/keys",
|
|
60802
60812
|
docsUrl: "https://openrouter.ai/docs",
|
|
60803
|
-
note: "\u56FD\u9645\u805A\u5408 \xB7 \
|
|
60813
|
+
note: "\u56FD\u9645\u805A\u5408 \xB7 \u5E94\u7528\u5185\u53EF\u53D1\u73B0\u5168\u90E8 400+ \u6A21\u578B \xB7 \u9700\u6D77\u5916\u7F51\u7EDC"
|
|
60804
60814
|
},
|
|
60805
60815
|
// ================================================================
|
|
60806
|
-
// OpenAI
|
|
60816
|
+
// OpenAI — GPT-5.6 世代(id/价格/模态取自 OpenRouter 实时返回)
|
|
60807
60817
|
// ================================================================
|
|
60808
60818
|
{
|
|
60809
60819
|
id: "openai",
|
|
60810
60820
|
label: "OpenAI",
|
|
60811
60821
|
protocol: "openai-compatible",
|
|
60812
60822
|
baseUrl: "https://api.openai.com/v1",
|
|
60813
|
-
defaultModel: "gpt-
|
|
60823
|
+
defaultModel: "gpt-5.6-luna",
|
|
60814
60824
|
models: [
|
|
60815
|
-
{ id: "gpt-
|
|
60816
|
-
{ id: "gpt-
|
|
60817
|
-
{ id: "
|
|
60825
|
+
{ id: "gpt-5.6-luna", label: "GPT-5.6 Luna\uFF08\u4FBF\u5B9C \xB7 \u770B\u56FE\uFF09", contextWindow: 105e4, capabilities: ["chat", "tools", "vision"], pricing: { input: 0.2, output: 1.2 } },
|
|
60826
|
+
{ id: "gpt-5.6-sol", label: "GPT-5.6 Sol\uFF08\u5747\u8861\uFF09", contextWindow: 105e4, capabilities: ["chat", "tools", "vision"], pricing: { input: 2, output: 10 } },
|
|
60827
|
+
{ id: "gpt-5.6-terra-pro", label: "GPT-5.6 Terra Pro\uFF08\u65D7\u8230\uFF09", contextWindow: 105e4, capabilities: ["chat", "reasoning", "tools", "vision"], pricing: { input: 2, output: 12 } }
|
|
60818
60828
|
],
|
|
60819
60829
|
apiKeySetting: "openai_api_key",
|
|
60820
60830
|
keyUrl: "https://platform.openai.com/api-keys",
|
|
@@ -60822,33 +60832,34 @@ var init_llm_presets = __esm({
|
|
|
60822
60832
|
note: "\u9700\u6D77\u5916\u7F51\u7EDC"
|
|
60823
60833
|
},
|
|
60824
60834
|
// ================================================================
|
|
60825
|
-
// Anthropic Claude
|
|
60835
|
+
// Anthropic Claude — 5 世代(fable 5.1 旗舰/opus 5/sonnet 5;1M 上下文)
|
|
60826
60836
|
// ================================================================
|
|
60827
60837
|
{
|
|
60828
60838
|
id: "anthropic",
|
|
60829
60839
|
label: "Anthropic Claude",
|
|
60830
60840
|
protocol: "anthropic",
|
|
60831
|
-
defaultModel: "claude-
|
|
60841
|
+
defaultModel: "claude-sonnet-5",
|
|
60832
60842
|
models: [
|
|
60833
|
-
{ id: "claude-
|
|
60834
|
-
{ id: "claude-
|
|
60843
|
+
{ id: "claude-sonnet-5", label: "Claude Sonnet 5\uFF08\u5747\u8861 \xB7 \u770B\u56FE\uFF09", contextWindow: 1e6, capabilities: ["chat", "tools", "vision"], pricing: { input: 2, output: 10 } },
|
|
60844
|
+
{ id: "claude-opus-5", label: "Claude Opus 5\uFF08\u5F3A \xB7 \u770B\u56FE\uFF09", contextWindow: 1e6, capabilities: ["chat", "tools", "vision"], pricing: { input: 5, output: 25 } },
|
|
60845
|
+
{ id: "claude-fable-5.1", label: "Claude Fable 5.1\uFF08\u65D7\u8230 \xB7 \u770B\u56FE\uFF09", contextWindow: 1e6, capabilities: ["chat", "tools", "vision"], pricing: { input: 10, output: 50 } }
|
|
60835
60846
|
],
|
|
60836
60847
|
apiKeySetting: "anthropic_api_key",
|
|
60837
60848
|
keyUrl: "https://console.anthropic.com/settings/keys",
|
|
60838
60849
|
docsUrl: "https://docs.anthropic.com/",
|
|
60839
|
-
note: "\u9700\u6D77\u5916\u7F51\u7EDC \xB7 \u957F\u4E0A\u4E0B\u6587"
|
|
60850
|
+
note: "\u9700\u6D77\u5916\u7F51\u7EDC \xB7 1M \u957F\u4E0A\u4E0B\u6587"
|
|
60840
60851
|
},
|
|
60841
60852
|
// ================================================================
|
|
60842
|
-
// Google Gemini
|
|
60853
|
+
// Google Gemini — 3.8/3.7 Flash(1M 上下文全模态;Pro 未见于 /models 返回)
|
|
60843
60854
|
// ================================================================
|
|
60844
60855
|
{
|
|
60845
60856
|
id: "google",
|
|
60846
60857
|
label: "Google Gemini",
|
|
60847
60858
|
protocol: "google",
|
|
60848
|
-
defaultModel: "gemini-
|
|
60859
|
+
defaultModel: "gemini-3.8-flash",
|
|
60849
60860
|
models: [
|
|
60850
|
-
{ id: "gemini-
|
|
60851
|
-
{ id: "gemini-
|
|
60861
|
+
{ id: "gemini-3.8-flash", label: "Gemini 3.8 Flash\uFF08\u5FEB \xB7 \u770B\u56FE\uFF09", contextWindow: 1048576, capabilities: ["chat", "vision"], pricing: { input: 0.75, output: 3.75 } },
|
|
60862
|
+
{ id: "gemini-3.7-flash", label: "Gemini 3.7 Flash\uFF08\u4E0A\u4EE3\uFF09", contextWindow: 1048576, capabilities: ["chat", "vision"], pricing: { input: 0.75, output: 3.75 } }
|
|
60852
60863
|
],
|
|
60853
60864
|
apiKeySetting: "google_api_key",
|
|
60854
60865
|
keyUrl: "https://aistudio.google.com/app/apikey",
|
|
@@ -60856,74 +60867,73 @@ var init_llm_presets = __esm({
|
|
|
60856
60867
|
note: "\u9700\u6D77\u5916\u7F51\u7EDC \xB7 \u8D85\u957F\u4E0A\u4E0B\u6587"
|
|
60857
60868
|
},
|
|
60858
60869
|
// ================================================================
|
|
60859
|
-
// Groq —
|
|
60870
|
+
// Groq — Llama 4 世代(LPU 极速;官方模型列表)
|
|
60860
60871
|
// ================================================================
|
|
60861
60872
|
{
|
|
60862
60873
|
id: "groq",
|
|
60863
60874
|
label: "Groq",
|
|
60864
60875
|
protocol: "openai-compatible",
|
|
60865
60876
|
baseUrl: "https://api.groq.com/openai/v1",
|
|
60866
|
-
defaultModel: "llama-
|
|
60877
|
+
defaultModel: "meta-llama/llama-4-maverick-17b-128e-instruct",
|
|
60867
60878
|
models: [
|
|
60868
|
-
{ id: "llama-
|
|
60869
|
-
{ id: "llama-
|
|
60870
|
-
{ id: "deepseek-r1-distill-llama-70b", label: "DeepSeek R1 Distill 70B\uFF08\u63A8\u7406\uFF09", contextWindow: 128e3, capabilities: ["chat", "reasoning"] }
|
|
60879
|
+
{ id: "meta-llama/llama-4-maverick-17b-128e-instruct", label: "Llama 4 Maverick\uFF08\u5747\u8861 \xB7 \u770B\u56FE\uFF09", contextWindow: null, capabilities: ["chat", "tools", "vision"] },
|
|
60880
|
+
{ id: "meta-llama/llama-4-scout-17b-16e-instruct", label: "Llama 4 Scout\uFF08\u5FEB \xB7 \u770B\u56FE\uFF09", contextWindow: null, capabilities: ["chat", "vision"] }
|
|
60871
60881
|
],
|
|
60872
60882
|
apiKeySetting: "groq_api_key",
|
|
60873
60883
|
keyUrl: "https://console.groq.com/keys",
|
|
60874
|
-
docsUrl: "https://
|
|
60884
|
+
docsUrl: "https://console.groq.com/docs/models",
|
|
60875
60885
|
note: "\u8D85\u5FEB\u63A8\u7406 \xB7 \u514D\u8D39\u989D\u5EA6"
|
|
60876
60886
|
},
|
|
60877
60887
|
// ================================================================
|
|
60878
|
-
// Together AI — 开源模型托管
|
|
60888
|
+
// Together AI — 开源模型托管(Llama 4 官方命名;低置信,以控制台为准)
|
|
60879
60889
|
// ================================================================
|
|
60880
60890
|
{
|
|
60881
60891
|
id: "together",
|
|
60882
60892
|
label: "Together AI",
|
|
60883
60893
|
protocol: "openai-compatible",
|
|
60884
60894
|
baseUrl: "https://api.together.xyz/v1",
|
|
60885
|
-
defaultModel: "meta-llama/Llama-
|
|
60895
|
+
defaultModel: "meta-llama/Llama-4-Scout-17B-16E-Instruct",
|
|
60886
60896
|
models: [
|
|
60887
|
-
{ id: "meta-llama/Llama-
|
|
60888
|
-
{ id: "
|
|
60889
|
-
{ id: "deepseek-ai/DeepSeek-R1", label: "DeepSeek R1", contextWindow: 128e3, capabilities: ["chat", "reasoning"] }
|
|
60897
|
+
{ id: "meta-llama/Llama-4-Scout-17B-16E-Instruct", label: "Llama 4 Scout", contextWindow: null, capabilities: ["chat", "vision"] },
|
|
60898
|
+
{ id: "meta-llama/Llama-4-Maverick-17B-128E-Instruct", label: "Llama 4 Maverick", contextWindow: null, capabilities: ["chat", "vision"] }
|
|
60890
60899
|
],
|
|
60891
60900
|
apiKeySetting: "together_api_key",
|
|
60892
60901
|
keyUrl: "https://api.together.ai/settings/api-keys",
|
|
60893
60902
|
docsUrl: "https://docs.together.ai/",
|
|
60894
|
-
note: "\u5F00\u6E90\u6A21\u578B \xB7 \u6D77\u5916"
|
|
60903
|
+
note: "\u5F00\u6E90\u6A21\u578B \xB7 \u6D77\u5916 \xB7 \u547D\u540D\u4EE5\u63A7\u5236\u53F0\u4E3A\u51C6"
|
|
60895
60904
|
},
|
|
60896
60905
|
// ================================================================
|
|
60897
|
-
// Mistral AI —
|
|
60906
|
+
// Mistral AI — 2512/2603 世代(id/价格/模态取自 OpenRouter 返回)
|
|
60898
60907
|
// ================================================================
|
|
60899
60908
|
{
|
|
60900
60909
|
id: "mistral",
|
|
60901
60910
|
label: "Mistral AI",
|
|
60902
60911
|
protocol: "openai-compatible",
|
|
60903
60912
|
baseUrl: "https://api.mistral.ai/v1",
|
|
60904
|
-
defaultModel: "mistral-
|
|
60913
|
+
defaultModel: "mistral-medium-3-5",
|
|
60905
60914
|
models: [
|
|
60906
|
-
{ id: "mistral-
|
|
60907
|
-
{ id: "mistral-
|
|
60908
|
-
{ id: "
|
|
60915
|
+
{ id: "mistral-medium-3-5", label: "Mistral Medium 3.5\uFF08\u5747\u8861 \xB7 \u770B\u56FE\uFF09", contextWindow: 262144, capabilities: ["chat", "tools", "vision"], pricing: { input: 1.5, output: 7.5 } },
|
|
60916
|
+
{ id: "mistral-large-2512", label: "Mistral Large 2512\uFF08\u5927\u676F\u4FBF\u5B9C\uFF09", contextWindow: 262144, capabilities: ["chat", "tools", "vision"], pricing: { input: 0.5, output: 1.5 } },
|
|
60917
|
+
{ id: "mistral-small-2603", label: "Mistral Small 2603\uFF08\u5FEB/\u4FBF\u5B9C \xB7 \u770B\u56FE\uFF09", contextWindow: 262144, capabilities: ["chat", "vision"], pricing: { input: 0.15, output: 0.6 } }
|
|
60909
60918
|
],
|
|
60910
60919
|
apiKeySetting: "mistral_api_key",
|
|
60911
60920
|
keyUrl: "https://console.mistral.ai/api-keys",
|
|
60912
60921
|
docsUrl: "https://docs.mistral.ai/",
|
|
60913
|
-
note: "\u6B27\u6D32 \xB7 \
|
|
60922
|
+
note: "\u6B27\u6D32 \xB7 \u6D77\u5916"
|
|
60914
60923
|
},
|
|
60915
60924
|
// ================================================================
|
|
60916
|
-
// xAI Grok —
|
|
60925
|
+
// xAI Grok — 4.x 世代(4.3/4.5/4.6 认 reasoning_effort;裸 grok-4 传参报错已避开)
|
|
60917
60926
|
// ================================================================
|
|
60918
60927
|
{
|
|
60919
60928
|
id: "xai",
|
|
60920
60929
|
label: "xAI Grok",
|
|
60921
60930
|
protocol: "openai-compatible",
|
|
60922
60931
|
baseUrl: "https://api.x.ai/v1",
|
|
60923
|
-
defaultModel: "grok-3
|
|
60932
|
+
defaultModel: "grok-4.3",
|
|
60924
60933
|
models: [
|
|
60925
|
-
{ id: "grok-
|
|
60926
|
-
{ id: "grok-3
|
|
60934
|
+
{ id: "grok-4.6", label: "Grok 4.6\uFF08\u65D7\u8230 \xB7 \u770B\u56FE\uFF09", contextWindow: 5e5, capabilities: ["chat", "reasoning", "tools", "vision"], pricing: { input: 2, output: 6 } },
|
|
60935
|
+
{ id: "grok-4.3", label: "Grok 4.3\uFF081M\u4E0A\u4E0B\u6587 \xB7 \u6027\u4EF7\u6BD4\uFF09", contextWindow: 1e6, capabilities: ["chat", "reasoning", "tools", "vision"], pricing: { input: 1.25, output: 2.5 } },
|
|
60936
|
+
{ id: "grok-4.20", label: "Grok 4.20\uFF082M\u8D85\u957F\u4E0A\u4E0B\u6587\uFF09", contextWindow: 2e6, capabilities: ["chat", "reasoning", "tools", "vision"], pricing: { input: 1.25, output: 2.5 } }
|
|
60927
60937
|
],
|
|
60928
60938
|
apiKeySetting: "xai_api_key",
|
|
60929
60939
|
keyUrl: "https://console.x.ai/",
|
|
@@ -60931,63 +60941,58 @@ var init_llm_presets = __esm({
|
|
|
60931
60941
|
note: "\u6D77\u5916 \xB7 \u5B9E\u65F6\u4FE1\u606F"
|
|
60932
60942
|
},
|
|
60933
60943
|
// ================================================================
|
|
60934
|
-
//
|
|
60944
|
+
// 火山引擎豆包 — Seed 世代(深度思考默认开;thinking.type+reasoning_effort 方言)
|
|
60935
60945
|
// ================================================================
|
|
60936
60946
|
{
|
|
60937
60947
|
id: "volcano",
|
|
60938
60948
|
label: "\u706B\u5C71\u5F15\u64CE\u8C46\u5305",
|
|
60939
60949
|
protocol: "openai-compatible",
|
|
60940
60950
|
baseUrl: "https://ark.cn-beijing.volces.com/api/v3",
|
|
60941
|
-
defaultModel: "doubao-
|
|
60951
|
+
defaultModel: "doubao-seed-2-0-pro-260215",
|
|
60942
60952
|
models: [
|
|
60943
|
-
{ id: "doubao-
|
|
60944
|
-
{ id: "doubao-1.5-lite-32k", label: "Doubao 1.5 Lite\uFF08\u5FEB/\u4FBF\u5B9C\uFF09", contextWindow: 32e3, capabilities: ["chat"] },
|
|
60945
|
-
{ id: "deepseek-r1-250120", label: "DeepSeek R1\uFF08\u706B\u5C71\u7248\uFF09", contextWindow: 64e3, capabilities: ["chat", "reasoning"] }
|
|
60953
|
+
{ id: "doubao-seed-2-0-pro-260215", label: "Doubao Seed 2.0 Pro\uFF08\u65D7\u8230 \xB7 \u6DF1\u5EA6\u601D\u8003\uFF09", contextWindow: null, capabilities: ["chat", "reasoning", "tools"] }
|
|
60946
60954
|
],
|
|
60947
60955
|
apiKeySetting: "volcano_api_key",
|
|
60948
60956
|
keyUrl: "https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey",
|
|
60949
|
-
docsUrl: "https://www.volcengine.com/docs/82379/",
|
|
60950
|
-
note: "\u56FD\u5185 \xB7 \u5B57\u8282\
|
|
60957
|
+
docsUrl: "https://www.volcengine.com/docs/82379/1330310",
|
|
60958
|
+
note: "\u56FD\u5185 \xB7 \u5B57\u8282 \xB7 \u5B8C\u6574\u6A21\u578B id \u89C1\u65B9\u821F\u63A7\u5236\u53F0"
|
|
60951
60959
|
},
|
|
60952
60960
|
// ================================================================
|
|
60953
|
-
//
|
|
60961
|
+
// 百度文心(千帆 v2 OpenAI 兼容)— ERNIE 5.0 全模态世代
|
|
60954
60962
|
// ================================================================
|
|
60955
60963
|
{
|
|
60956
60964
|
id: "baidu",
|
|
60957
60965
|
label: "\u767E\u5EA6\u6587\u5FC3",
|
|
60958
60966
|
protocol: "openai-compatible",
|
|
60959
60967
|
baseUrl: "https://qianfan.baidubce.com/v2",
|
|
60960
|
-
defaultModel: "ernie-
|
|
60968
|
+
defaultModel: "ernie-5.0",
|
|
60961
60969
|
models: [
|
|
60962
|
-
{ id: "ernie-
|
|
60963
|
-
{ id: "ernie-3.5-8k-latest", label: "ERNIE 3.5\uFF08\u5747\u8861\uFF09", contextWindow: 8e3, capabilities: ["chat"] },
|
|
60964
|
-
{ id: "ernie-speed-128k", label: "ERNIE Speed 128K\uFF08\u957F\u4E0A\u4E0B\u6587\uFF09", contextWindow: 128e3, capabilities: ["chat"] }
|
|
60970
|
+
{ id: "ernie-5.0", label: "ERNIE 5.0\uFF08\u65D7\u8230 \xB7 \u5168\u6A21\u6001\u770B\u56FE\uFF09", contextWindow: null, capabilities: ["chat", "tools", "vision"] }
|
|
60965
60971
|
],
|
|
60966
60972
|
apiKeySetting: "baidu_api_key",
|
|
60967
60973
|
keyUrl: "https://console.bce.baidu.com/iam/#/iam/apikey/list",
|
|
60968
|
-
docsUrl: "https://cloud.baidu.com/doc/
|
|
60969
|
-
note: "\u56FD\u5185 \xB7 \u767E\u5EA6"
|
|
60974
|
+
docsUrl: "https://cloud.baidu.com/doc/qianfan/s/rmh4stp0j",
|
|
60975
|
+
note: "\u56FD\u5185 \xB7 \u767E\u5EA6 \xB7 \u66F4\u591A\u6A21\u578B\u89C1\u5343\u5E06\u6A21\u578B\u5217\u8868"
|
|
60970
60976
|
},
|
|
60971
60977
|
// ================================================================
|
|
60972
|
-
// MiniMax
|
|
60978
|
+
// MiniMax — M2 世代(交错思考常开,官方 API 无禁用开关)
|
|
60973
60979
|
// ================================================================
|
|
60974
60980
|
{
|
|
60975
60981
|
id: "minimax",
|
|
60976
60982
|
label: "MiniMax",
|
|
60977
60983
|
protocol: "openai-compatible",
|
|
60978
60984
|
baseUrl: "https://api.minimax.chat/v1",
|
|
60979
|
-
defaultModel: "
|
|
60985
|
+
defaultModel: "MiniMax-M2.7",
|
|
60980
60986
|
models: [
|
|
60981
|
-
{ id: "
|
|
60982
|
-
{ id: "abab6.5-chat", label: "abab6.5\uFF08\u65D7\u8230\uFF09", contextWindow: 8192, capabilities: ["chat", "tools"] }
|
|
60987
|
+
{ id: "MiniMax-M2.7", label: "MiniMax M2.7\uFF08\u5F53\u524D\u4E16\u4EE3 \xB7 \u601D\u8003\u5E38\u5F00\uFF09", contextWindow: 204800, capabilities: ["chat", "tools"], pricing: { input: 0.3, output: 1.2 } }
|
|
60983
60988
|
],
|
|
60984
60989
|
apiKeySetting: "minimax_api_key",
|
|
60985
60990
|
keyUrl: "https://platform.minimaxi.com/user-center/basic-information/interface-key",
|
|
60986
|
-
docsUrl: "https://platform.
|
|
60987
|
-
note: "\u56FD\u5185 \xB7 \
|
|
60991
|
+
docsUrl: "https://platform.minimax.io/docs/",
|
|
60992
|
+
note: "\u56FD\u5185 \xB7 \u601D\u8003\u5E38\u5F00(\u5B98\u65B9\u65E0\u601D\u8003\u5F00\u5173)"
|
|
60988
60993
|
},
|
|
60989
60994
|
// ================================================================
|
|
60990
|
-
// 百川 Baichuan
|
|
60995
|
+
// 百川 Baichuan(无 2026-09 新资料,维持旧条目;以控制台为准)
|
|
60991
60996
|
// ================================================================
|
|
60992
60997
|
{
|
|
60993
60998
|
id: "baichuan",
|
|
@@ -61002,20 +61007,20 @@ var init_llm_presets = __esm({
|
|
|
61002
61007
|
apiKeySetting: "baichuan_api_key",
|
|
61003
61008
|
keyUrl: "https://platform.baichuan-ai.com/console/apikey",
|
|
61004
61009
|
docsUrl: "https://platform.baichuan-ai.com/docs/api",
|
|
61005
|
-
note: "\u56FD\u5185 \xB7 \u767E\u5DDD\u667A\u80FD"
|
|
61010
|
+
note: "\u56FD\u5185 \xB7 \u767E\u5DDD\u667A\u80FD \xB7 \u5F85\u6838(\u4EE5\u63A7\u5236\u53F0\u4E3A\u51C6)"
|
|
61006
61011
|
},
|
|
61007
61012
|
// ================================================================
|
|
61008
|
-
// 阶跃星辰 StepFun
|
|
61013
|
+
// 阶跃星辰 StepFun — Step 3.7 世代(多模态推理,默认关思考,enable_thinking 方言)
|
|
61009
61014
|
// ================================================================
|
|
61010
61015
|
{
|
|
61011
61016
|
id: "stepfun",
|
|
61012
61017
|
label: "\u9636\u8DC3\u661F\u8FB0 StepFun",
|
|
61013
61018
|
protocol: "openai-compatible",
|
|
61014
61019
|
baseUrl: "https://api.stepfun.com/v1",
|
|
61015
|
-
defaultModel: "step-
|
|
61020
|
+
defaultModel: "step-3.7-flash",
|
|
61016
61021
|
models: [
|
|
61017
|
-
{ id: "step-
|
|
61018
|
-
{ id: "step-
|
|
61022
|
+
{ id: "step-3.7-flash", label: "Step 3.7 Flash\uFF08\u65D7\u8230 \xB7 \u591A\u6A21\u6001\u63A8\u7406 \xB7 \u770B\u56FE\uFF09", contextWindow: null, capabilities: ["chat", "reasoning", "tools", "vision"] },
|
|
61023
|
+
{ id: "step-3.5-flash", label: "Step 3.5 Flash\uFF08\u4E0A\u4EE3\uFF09", contextWindow: null, capabilities: ["chat", "reasoning", "tools", "vision"] }
|
|
61019
61024
|
],
|
|
61020
61025
|
apiKeySetting: "stepfun_api_key",
|
|
61021
61026
|
keyUrl: "https://platform.stepfun.com/interface-key",
|
|
@@ -61471,6 +61476,19 @@ function llmFamilyOf(providerId, baseUrl, model) {
|
|
|
61471
61476
|
return "qwen";
|
|
61472
61477
|
if (url2.includes("siliconflow"))
|
|
61473
61478
|
return "siliconcloud";
|
|
61479
|
+
if (url2.includes("deepseek") || m.startsWith("deepseek-"))
|
|
61480
|
+
return "deepseek";
|
|
61481
|
+
if (url2.includes("moonshot") || m.startsWith("kimi-"))
|
|
61482
|
+
return "kimi";
|
|
61483
|
+
if (url2.includes("volces.com") || m.startsWith("doubao-"))
|
|
61484
|
+
return "volcano";
|
|
61485
|
+
if (url2.includes("stepfun") || m.startsWith("step-"))
|
|
61486
|
+
return "stepfun";
|
|
61487
|
+
if (url2.includes("x.ai") || m.startsWith("grok-")) {
|
|
61488
|
+
if (/^(grok-3-mini|grok-4\.(?:[3-9]|\d{2,}))/.test(m))
|
|
61489
|
+
return "grok-effort";
|
|
61490
|
+
return providerId;
|
|
61491
|
+
}
|
|
61474
61492
|
return providerId;
|
|
61475
61493
|
}
|
|
61476
61494
|
function reasoningPlanFor(providerId, protocol, effort, hints) {
|
|
@@ -61546,6 +61564,54 @@ var init_reasoning_effort = __esm({
|
|
|
61546
61564
|
deep: (b) => {
|
|
61547
61565
|
b.enable_thinking = true;
|
|
61548
61566
|
}
|
|
61567
|
+
},
|
|
61568
|
+
// 以下五家 2026-09-12 进表(官方文档核对;除 GLM 外无 key 未实测端点,行为以文档为准):
|
|
61569
|
+
// DeepSeek V4 世代:thinking 字符串参数 none/low/high/max,默认开且默认 high。
|
|
61570
|
+
deepseek: {
|
|
61571
|
+
fast: (b) => {
|
|
61572
|
+
b.thinking = "none";
|
|
61573
|
+
},
|
|
61574
|
+
deep: (b) => {
|
|
61575
|
+
b.thinking = "max";
|
|
61576
|
+
}
|
|
61577
|
+
},
|
|
61578
|
+
// Moonshot Kimi:k2.5/k2.6 混合思考默认开,thinking 对象参数可关(平台文档)。
|
|
61579
|
+
kimi: {
|
|
61580
|
+
fast: (b) => {
|
|
61581
|
+
b.thinking = { type: "disabled" };
|
|
61582
|
+
},
|
|
61583
|
+
deep: (b) => {
|
|
61584
|
+
b.thinking = { type: "enabled" };
|
|
61585
|
+
}
|
|
61586
|
+
},
|
|
61587
|
+
// 火山方舟豆包 Seed:与 GLM 同款方言(thinking.type + reasoning_effort,官方深度思考文档)。
|
|
61588
|
+
volcano: {
|
|
61589
|
+
fast: (b) => {
|
|
61590
|
+
b.thinking = { type: "disabled" };
|
|
61591
|
+
b.reasoning_effort = "low";
|
|
61592
|
+
},
|
|
61593
|
+
deep: (b) => {
|
|
61594
|
+
b.thinking = { type: "enabled" };
|
|
61595
|
+
}
|
|
61596
|
+
},
|
|
61597
|
+
// 阶跃 Step 3.x:enable_thinking 布尔(与 Qwen 同款;Step 3.7 默认关,deep 档才有感)。
|
|
61598
|
+
stepfun: {
|
|
61599
|
+
fast: (b) => {
|
|
61600
|
+
b.enable_thinking = false;
|
|
61601
|
+
},
|
|
61602
|
+
deep: (b) => {
|
|
61603
|
+
b.enable_thinking = true;
|
|
61604
|
+
}
|
|
61605
|
+
},
|
|
61606
|
+
// xAI Grok:reasoning_effort(grok-4.3 none/low/medium/high 默认 high,4.5/4.6 支持;
|
|
61607
|
+
// 裸 grok-4 传参报错 → 家族判定按模型门控,进不了表就落 none)。
|
|
61608
|
+
"grok-effort": {
|
|
61609
|
+
fast: (b) => {
|
|
61610
|
+
b.reasoning_effort = "low";
|
|
61611
|
+
},
|
|
61612
|
+
deep: (b) => {
|
|
61613
|
+
b.reasoning_effort = "high";
|
|
61614
|
+
}
|
|
61549
61615
|
}
|
|
61550
61616
|
};
|
|
61551
61617
|
OPENAI_EFFORT = { fast: "low", deep: "high" };
|
|
@@ -560053,8 +560119,9 @@ async function cutCompanionFigure(deps, input) {
|
|
|
560053
560119
|
const locateAt = async (dataUrl, maxOutputTokens) => {
|
|
560054
560120
|
const llm = resolveVisionLlm(deps.db);
|
|
560055
560121
|
usedVision = `${llm.provider.label}/${llm.model}`;
|
|
560122
|
+
const built = buildImportModel(llm);
|
|
560056
560123
|
return generateTextWithTimeout(
|
|
560057
|
-
|
|
560124
|
+
built.model,
|
|
560058
560125
|
[
|
|
560059
560126
|
{
|
|
560060
560127
|
role: "user",
|
|
@@ -560064,7 +560131,7 @@ async function cutCompanionFigure(deps, input) {
|
|
|
560064
560131
|
]
|
|
560065
560132
|
}
|
|
560066
560133
|
],
|
|
560067
|
-
{ maxOutputTokens }
|
|
560134
|
+
{ maxOutputTokens, ...built.providerOptions ? { providerOptions: built.providerOptions } : {} }
|
|
560068
560135
|
);
|
|
560069
560136
|
};
|
|
560070
560137
|
const locate = deps.locate ?? ((dataUrl) => locateAt(dataUrl, LOCATE_MAX_TOKENS));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r,j as h}from"./index-3R9G44mo.js";import{c as T,u as L,P as D}from"./main-
|
|
1
|
+
import{r,j as h}from"./index-3R9G44mo.js";import{c as T,u as L,P as D}from"./main-48BT8Y-5.js";/**
|
|
2
2
|
* @license lucide-react v0.468.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as s,j as t}from"./index-3R9G44mo.js";import{c as y,u as v,b as k,L as j,F as N,M as w,G as C,T as M,d as _}from"./main-
|
|
1
|
+
import{r as s,j as t}from"./index-3R9G44mo.js";import{c as y,u as v,b as k,L as j,F as N,M as w,G as C,T as M,d as _}from"./main-48BT8Y-5.js";/**
|
|
2
2
|
* @license lucide-react v0.468.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as u,j as t}from"./index-3R9G44mo.js";import{c as C,U as I,u as y,a as L,d as S,X as N,B as M,T as E,C as R}from"./main-
|
|
1
|
+
import{r as u,j as t}from"./index-3R9G44mo.js";import{c as C,U as I,u as y,a as L,d as S,X as N,B as M,T as E,C as R}from"./main-48BT8Y-5.js";/**
|
|
2
2
|
* @license lucide-react v0.468.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as o,h as U,j as e,c as ie}from"./index-3R9G44mo.js";import{c as te,u as ce,a as j,g as de,T as z,h as Y,L as V,i as oe,X as xe}from"./main-
|
|
1
|
+
import{r as o,h as U,j as e,c as ie}from"./index-3R9G44mo.js";import{c as te,u as ce,a as j,g as de,T as z,h as Y,L as V,i as oe,X as xe}from"./main-48BT8Y-5.js";import{R as G}from"./rotate-ccw-Cg9NLquP.js";import{A as q}from"./arrow-right-BUOXWVDJ.js";/**
|
|
2
2
|
* @license lucide-react v0.468.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|