turbollm 1.13.6 → 1.14.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/README.md +19 -0
- package/dist/{chunk-FJDRILNH.js → chunk-IX5FQWMQ.js} +14 -1
- package/dist/{chunk-5IU2DOOW.js → chunk-J24U6O5Q.js} +38 -2
- package/dist/cli.js +1619 -308
- package/dist/code-routes.js +1 -1
- package/dist/code-run-manager.js +1 -1
- package/dist/{distiller-3S34HCI6.js → distiller-PS7TKBY6.js} +1 -1
- package/dist/webdist/assets/{AgentEditPage-BzG20IJo.js → AgentEditPage-DiJIyQ5c.js} +1 -1
- package/dist/webdist/assets/{ChatScreen-CGTfgk6t.js → ChatScreen-okIINvx9.js} +9 -9
- package/dist/webdist/assets/CodeComposer-Cjg4xu5i.js +1 -0
- package/dist/webdist/assets/CodeHomeScreen-aqIQxmWg.js +1 -0
- package/dist/webdist/assets/{CodeSessionScreen-BF_ck2zI.js → CodeSessionScreen-C1iDX1Dz.js} +11 -11
- package/dist/webdist/assets/CustomizeScreen-BskDZVOp.js +4 -0
- package/dist/webdist/assets/EnginesScreen-DT_E6Bqd.js +10 -0
- package/dist/webdist/assets/HardwareSection-Dy-7b_gI.js +1 -0
- package/dist/webdist/assets/JevPlaygroundScreen-BJ9EXDPE.js +4 -0
- package/dist/webdist/assets/ModelDetailDialog-C5ejpvy6.js +1 -0
- package/dist/webdist/assets/ModelLoadMenu-CUgsolzj.js +1 -0
- package/dist/webdist/assets/{ModelsScreen-C4X4NjE2.js → ModelsScreen-DDtp63UR.js} +2 -2
- package/dist/webdist/assets/OnboardingScreen-BlX_k6qt.js +1 -0
- package/dist/webdist/assets/RoutineEditPage-Cc0idJ-3.js +1 -0
- package/dist/webdist/assets/RoutinesPanel-OqbQ0SmB.js +1 -0
- package/dist/webdist/assets/SettingsScreen-C9rK-X9n.js +2 -0
- package/dist/webdist/assets/{SidebarResizeHandle-CJUpye8c.js → SidebarResizeHandle-BgR_YpxG.js} +2 -2
- package/dist/webdist/assets/{SkillEditPage-CHhkakhI.js → SkillEditPage-Bd_elRU6.js} +1 -1
- package/dist/webdist/assets/{ToolApprovalBar-C6_ZJDzC.js → ToolApprovalBar-CUotEGv6.js} +15 -15
- package/dist/webdist/assets/WorkspaceScreen-DF5OMiKx.js +1 -0
- package/dist/webdist/assets/{abnfDiagram-N423BO3Z-CjZCDJJe.js → abnfDiagram-N423BO3Z-D4qUs6KP.js} +1 -1
- package/dist/webdist/assets/{agent-api-Q07TJf7T.js → agent-api-wjr1CSL9.js} +1 -1
- package/dist/webdist/assets/{arc-DEmyGdWp.js → arc-Dez50YO9.js} +1 -1
- package/dist/webdist/assets/{architectureDiagram-T3A2C74G-BuR_LXcC.js → architectureDiagram-T3A2C74G-DmsRR1_Y.js} +1 -1
- package/dist/webdist/assets/badge-CksW7yOr.js +1 -0
- package/dist/webdist/assets/{blockDiagram-VBNYF7ZC-uBPjcCWa.js → blockDiagram-VBNYF7ZC-DVsOGm63.js} +1 -1
- package/dist/webdist/assets/{c4Diagram-5PPSVZJV-B2N1IXTa.js → c4Diagram-5PPSVZJV-DuD2IKcf.js} +1 -1
- package/dist/webdist/assets/channel-CyfqT0Zk.js +1 -0
- package/dist/webdist/assets/{chat-api-CP-1zHWH.js → chat-api-CUEHqc3o.js} +1 -1
- package/dist/webdist/assets/{chat-queries-C19981zO.js → chat-queries-CzD9RmqG.js} +1 -1
- package/dist/webdist/assets/{chevron-down-Be9un6T0.js → chevron-down-CMthk8sq.js} +1 -1
- package/dist/webdist/assets/{chevron-left-8-aTOHPO.js → chevron-left-BHsjloFD.js} +1 -1
- package/dist/webdist/assets/{chevron-right-DQlioXo8.js → chevron-right-rb18aZPa.js} +1 -1
- package/dist/webdist/assets/{chunk-2GRJ4B5K-TlR5T4Vi.js → chunk-2GRJ4B5K-mCrgEnOk.js} +1 -1
- package/dist/webdist/assets/{chunk-2Q5K7J3B-5kezfKDh.js → chunk-2Q5K7J3B-CB--nQz8.js} +1 -1
- package/dist/webdist/assets/{chunk-5RXB4S5H-C8ItBvcB.js → chunk-5RXB4S5H-npnDTsGI.js} +1 -1
- package/dist/webdist/assets/{chunk-5VM5RSS4-BXvuKQZV.js → chunk-5VM5RSS4-Dy-_qijb.js} +1 -1
- package/dist/webdist/assets/{chunk-6Q2QTUOP-Cbta8vGG.js → chunk-6Q2QTUOP-xi2-gUVB.js} +1 -1
- package/dist/webdist/assets/{chunk-GF5L2VYU-CIuHLncz.js → chunk-GF5L2VYU-BhJKGS3t.js} +1 -1
- package/dist/webdist/assets/{chunk-JWPE2WC7-8rGGjIyo.js → chunk-JWPE2WC7-CgK6Phiy.js} +1 -1
- package/dist/webdist/assets/{chunk-KBJHAD2P-DFvvwuKz.js → chunk-KBJHAD2P-rJP8cgbH.js} +1 -1
- package/dist/webdist/assets/{chunk-RYQCIY6F-B3c_vHIM.js → chunk-RYQCIY6F-LMXaxAUW.js} +1 -1
- package/dist/webdist/assets/{chunk-XXDRQBXY-DFBG-ven.js → chunk-XXDRQBXY-Egaue6FK.js} +1 -1
- package/dist/webdist/assets/{circle-check-DWL-BNw2.js → circle-check-UpG6b-yk.js} +1 -1
- package/dist/webdist/assets/{circle-x-CCKv4SGG.js → circle-x-BbWW1cEW.js} +1 -1
- package/dist/webdist/assets/classDiagram-JCYQIIEL-vs5mQ5z7.js +1 -0
- package/dist/webdist/assets/classDiagram-v2-OCEON4UE-vs5mQ5z7.js +1 -0
- package/dist/webdist/assets/collapsible-Bvt-3Dje.js +1 -0
- package/dist/webdist/assets/common-7bKxHlFN.js +1 -0
- package/dist/webdist/assets/{cose-bilkent-JH36ORCC-xnHX_e1i.js → cose-bilkent-JH36ORCC-BplRQRpJ.js} +1 -1
- package/dist/webdist/assets/{cynefin-VYW2F7L2-DqLKYsq-.js → cynefin-VYW2F7L2-BEssnT89.js} +1 -1
- package/dist/webdist/assets/{cynefinDiagram-MW4NZA55-B_QMRv50.js → cynefinDiagram-MW4NZA55-CmN23mXI.js} +1 -1
- package/dist/webdist/assets/{dagre-VZM6K2ZE-DCFGMRws.js → dagre-VZM6K2ZE-BnzVfHdw.js} +1 -1
- package/dist/webdist/assets/{diagram-7IWD3JNH-1ct9pPXF.js → diagram-7IWD3JNH-Bvf1BnM2.js} +1 -1
- package/dist/webdist/assets/{diagram-B4RE2ZJO-DqYEblJb.js → diagram-B4RE2ZJO-8CeAGkn6.js} +1 -1
- package/dist/webdist/assets/{diagram-LBJQPF4R-CT-3lsOW.js → diagram-LBJQPF4R-C8UmzDjJ.js} +1 -1
- package/dist/webdist/assets/{diagram-Q27KOJAE-Bspp2eCN.js → diagram-Q27KOJAE-ExDIWzGa.js} +1 -1
- package/dist/webdist/assets/{diagram-UB23O5K3-DB_Hg65f.js → diagram-UB23O5K3-NTOlUSNM.js} +1 -1
- package/dist/webdist/assets/{dropdown-menu-dzMJR6N9.js → dropdown-menu-C7XdhXfN.js} +1 -1
- package/dist/webdist/assets/{ebnfDiagram-BXEA7PRR-kk9-pxcN.js → ebnfDiagram-BXEA7PRR-DSLXnVcA.js} +1 -1
- package/dist/webdist/assets/{erDiagram-JOGREHBK-BCI0nybn.js → erDiagram-JOGREHBK-C9N6ltou.js} +1 -1
- package/dist/webdist/assets/{file-text-B94KmADS.js → file-text-0lpSyfWS.js} +1 -1
- package/dist/webdist/assets/{flowDiagram-UKHOOZJN-CPzxY-LP.js → flowDiagram-UKHOOZJN-BEpdoBJK.js} +1 -1
- package/dist/webdist/assets/{folder-input-DL3mQB2F.js → folder-input-CA06TkHQ.js} +1 -1
- package/dist/webdist/assets/{folder-plus-Wpcb9ENt.js → folder-plus-1PSVHL0Z.js} +1 -1
- package/dist/webdist/assets/{ganttDiagram-PKOTCBZU-DozbuEKD.js → ganttDiagram-PKOTCBZU-JBTZctPg.js} +1 -1
- package/dist/webdist/assets/{git-branch-yfPP244o.js → git-branch-LGIPJBji.js} +1 -1
- package/dist/webdist/assets/{gitGraphDiagram-DS77QQ5N-CA_nEHp7.js → gitGraphDiagram-DS77QQ5N-BE8GgT4b.js} +1 -1
- package/dist/webdist/assets/{globe-DnAghWjQ.js → globe-BZvXG7nu.js} +1 -1
- package/dist/webdist/assets/{index-Bs1-t0Ft.js → index-BAqhUJky.js} +1 -1
- package/dist/webdist/assets/index-BoD2hVgN.css +1 -0
- package/dist/webdist/assets/index-DZjLhFsI.js +15 -0
- package/dist/webdist/assets/{infoDiagram-6WML65LV-EBvusVlh.js → infoDiagram-6WML65LV-CQK2P3-1.js} +1 -1
- package/dist/webdist/assets/{ishikawaDiagram-WSZJBQD7-VEUjJ6iO.js → ishikawaDiagram-WSZJBQD7-JgMGUhtq.js} +1 -1
- package/dist/webdist/assets/{journeyDiagram-NVQOT4AX-DNV1VMnS.js → journeyDiagram-NVQOT4AX-FJXvRlwV.js} +1 -1
- package/dist/webdist/assets/{kanban-definition-27J2QSJJ-B7bGb4hd.js → kanban-definition-27J2QSJJ-DHUtWhPw.js} +1 -1
- package/dist/webdist/assets/{linear-C5BAUlj1.js → linear-BXMrvrnx.js} +1 -1
- package/dist/webdist/assets/{lock-B4ECw-T0.js → lock-BuQP3O8t.js} +1 -1
- package/dist/webdist/assets/{mermaid.core-BGxUfnBa.js → mermaid.core-S_RQyOsW.js} +4 -4
- package/dist/webdist/assets/{mindmap-definition-FAOFIHXS-BcuS9e3b.js → mindmap-definition-FAOFIHXS-D6uoAnSN.js} +1 -1
- package/dist/webdist/assets/model-kind-C1rLvNZj.js +1 -0
- package/dist/webdist/assets/{monitor-o9jnBqQh.js → monitor-B4zAo7OI.js} +1 -1
- package/dist/webdist/assets/{pegDiagram-VL7TDLO6-B8r_GRtJ.js → pegDiagram-VL7TDLO6-xbZuTOco.js} +1 -1
- package/dist/webdist/assets/{pencil-MwR3RvUZ.js → pencil-BWfgZfTf.js} +1 -1
- package/dist/webdist/assets/{personas-CFMpT4jP.js → personas-CM56vmHR.js} +1 -1
- package/dist/webdist/assets/{pieDiagram-7S7Q4E2Y-VlB8e0KH.js → pieDiagram-7S7Q4E2Y-DNpMdzBT.js} +1 -1
- package/dist/webdist/assets/{quadrantDiagram-CIZ2JOQS-BMvoitnW.js → quadrantDiagram-CIZ2JOQS-DGwOFRyi.js} +1 -1
- package/dist/webdist/assets/{radix-B7FN0WwE.js → radix-KD8-DhVi.js} +2 -2
- package/dist/webdist/assets/{railroadDiagram-AXF67PYL-CnDluqgH.js → railroadDiagram-AXF67PYL-CzB8w48H.js} +1 -1
- package/dist/webdist/assets/{refresh-cw-BzGTCNVs.js → refresh-cw-BDzlGNDg.js} +1 -1
- package/dist/webdist/assets/remote-failure-B7HGWJkJ.js +1 -0
- package/dist/webdist/assets/{requirementDiagram-LRYGKXZP-Cf_bcWKz.js → requirementDiagram-LRYGKXZP-CmCwDIBl.js} +1 -1
- package/dist/webdist/assets/{rocket-3zkwetoN.js → rocket-D3uvOsNZ.js} +1 -1
- package/dist/webdist/assets/{rotate-ccw-fyN6mgMa.js → rotate-ccw-BACVmdwR.js} +1 -1
- package/dist/webdist/assets/{sankeyDiagram-W5VNT64P-abjcXFrR.js → sankeyDiagram-W5VNT64P-DQNzMUJ3.js} +1 -1
- package/dist/webdist/assets/{sequenceDiagram-SI44F4Z6-BAzSl86z.js → sequenceDiagram-SI44F4Z6-CMrIVeVl.js} +1 -1
- package/dist/webdist/assets/sheet-BMLkQ0th.js +1 -0
- package/dist/webdist/assets/{sizeCapture-X5ZJPWSS-X6FTXo_P.js → sizeCapture-X5ZJPWSS-TjCLqzce.js} +1 -1
- package/dist/webdist/assets/{skeleton-BOHWHwm6.js → skeleton-Dxu5wc0L.js} +1 -1
- package/dist/webdist/assets/{sliders-horizontal-CUBfMzM4.js → sliders-horizontal-B0oyFTI0.js} +1 -1
- package/dist/webdist/assets/{sparkles-B_nFb4N9.js → sparkles-BmWBphjQ.js} +1 -1
- package/dist/webdist/assets/{star-DQIcK5P8.js → star-DtH9hIqK.js} +1 -1
- package/dist/webdist/assets/{stateDiagram-OKZ733FA-BhH_WS-y.js → stateDiagram-OKZ733FA-DNMCj4tf.js} +1 -1
- package/dist/webdist/assets/stateDiagram-v2-UEYNNEHI-BDtEUZuR.js +1 -0
- package/dist/webdist/assets/{swimlanes-SLNWSIFB-BvuBhRif.js → swimlanes-SLNWSIFB-CtvQNY0N.js} +2 -2
- package/dist/webdist/assets/swimlanesDiagram-ULZ7WXOC-BJHI83P3.js +8 -0
- package/dist/webdist/assets/{switch-D-bpf0ou.js → switch-DIadx8HA.js} +1 -1
- package/dist/webdist/assets/{terminal-Bi_kg8jX.js → terminal-C8Qor-4N.js} +1 -1
- package/dist/webdist/assets/{timeline-definition-Z64GVDOM-CT4o3tCm.js → timeline-definition-Z64GVDOM-BrzE2nEM.js} +1 -1
- package/dist/webdist/assets/{trash-2-BXeiMvg8.js → trash-2-DuhMUqOF.js} +1 -1
- package/dist/webdist/assets/{useIsDesktop-DAdBFmSY.js → useIsDesktop-DrrTyUa5.js} +1 -1
- package/dist/webdist/assets/{vendor-C1I6euDx.js → vendor-DbyaiIiX.js} +2 -2
- package/dist/webdist/assets/{vennDiagram-T6HMQDX7-D7hteJww.js → vennDiagram-T6HMQDX7-Bo6Xl6Hi.js} +1 -1
- package/dist/webdist/assets/{wardleyDiagram-T6FBY63Y-C6kQIV_N.js → wardleyDiagram-T6FBY63Y-IOpBpINS.js} +1 -1
- package/dist/webdist/assets/{wrench-CcGmlTUS.js → wrench-z3LG4dD8.js} +1 -1
- package/dist/webdist/assets/{xychartDiagram-ELKLHX3M-DPy3Pkbw.js → xychartDiagram-ELKLHX3M-DOh0gSue.js} +1 -1
- package/dist/webdist/index.html +4 -4
- package/package.json +1 -1
- package/dist/webdist/assets/CodeComposer-DkaX0aou.js +0 -1
- package/dist/webdist/assets/CodeHomeScreen-C6Mx3KKG.js +0 -1
- package/dist/webdist/assets/CustomizeScreen-BB4hjJHh.js +0 -4
- package/dist/webdist/assets/EnginesScreen-DlfORHsE.js +0 -10
- package/dist/webdist/assets/HardwareSection-CHCi45EV.js +0 -1
- package/dist/webdist/assets/ModelDetailDialog-C3tk_RxR.js +0 -1
- package/dist/webdist/assets/ModelLoadMenu-FcRnPBLY.js +0 -1
- package/dist/webdist/assets/OnboardingScreen-CaM7ExyF.js +0 -1
- package/dist/webdist/assets/RoutineEditPage-BAfZYpYu.js +0 -1
- package/dist/webdist/assets/RoutinesPanel-B3iJfoD3.js +0 -1
- package/dist/webdist/assets/SettingsScreen-DBwDO8TR.js +0 -2
- package/dist/webdist/assets/WorkspaceScreen-B6mjHG3v.js +0 -1
- package/dist/webdist/assets/alert-dialog-fWVjIQYe.js +0 -1
- package/dist/webdist/assets/channel-CzDLlXHw.js +0 -1
- package/dist/webdist/assets/classDiagram-JCYQIIEL-xDdy69O-.js +0 -1
- package/dist/webdist/assets/classDiagram-v2-OCEON4UE-xDdy69O-.js +0 -1
- package/dist/webdist/assets/collapsible-B09fxy0d.js +0 -1
- package/dist/webdist/assets/index-A9e9aiYI.css +0 -1
- package/dist/webdist/assets/index-C14bv39c.js +0 -14
- package/dist/webdist/assets/link-constants-CbmzSBFF.js +0 -1
- package/dist/webdist/assets/remote-failure-Bc9jLh0G.js +0 -1
- package/dist/webdist/assets/sheet-E29qj5H3.js +0 -1
- package/dist/webdist/assets/stateDiagram-v2-UEYNNEHI-BXZstPHr.js +0 -1
- package/dist/webdist/assets/swimlanesDiagram-ULZ7WXOC-B75QTfBv.js +0 -8
package/README.md
CHANGED
|
@@ -368,6 +368,25 @@ there. Entirely local; nothing leaves your machine.
|
|
|
368
368
|
|
|
369
369
|
</details>
|
|
370
370
|
|
|
371
|
+
<details>
|
|
372
|
+
<summary><strong>🧠 Jev — ask structured questions about any text, locally</strong></summary>
|
|
373
|
+
|
|
374
|
+
<br/>
|
|
375
|
+
|
|
376
|
+
- **Load an NLI model (such as OpenJev) and TurboLLM detects it as a Jev model.** Workspace turns
|
|
377
|
+
into a JSON-first playground: two editors — the content, and the questions you're asking about
|
|
378
|
+
it — *are* the request. Ctrl/Cmd+Enter to run; see the answers per question, the raw response,
|
|
379
|
+
and a copyable `curl`.
|
|
380
|
+
- **`POST /v1/systemone`** answers yes/no, pick-one, and scale questions in one call, using the
|
|
381
|
+
public System One API's exact field names — a client written for that shape only changes its
|
|
382
|
+
base URL and key. `POST /v1/classify` and `POST /v1/rerank` are there too for raw
|
|
383
|
+
premise/hypothesis work.
|
|
384
|
+
- **Honestly labelled:** answers are the model's NLI entailment scores, not a calibrated decision
|
|
385
|
+
model, and the docs explain exactly how each number is computed.
|
|
386
|
+
- Runs on vLLM (Linux or WSL2). Full guide: <https://turbollm.dev/docs/jev>.
|
|
387
|
+
|
|
388
|
+
</details>
|
|
389
|
+
|
|
371
390
|
<details>
|
|
372
391
|
<summary><strong>🔌 APIs & integrations — OpenAI + Anthropic, a model-loading gateway, and a stateful chat API</strong></summary>
|
|
373
392
|
|
|
@@ -195,6 +195,14 @@ function resolveChatUpstream(d, requestedModel) {
|
|
|
195
195
|
if (ms.state !== "running" || !ms.model) {
|
|
196
196
|
return { ok: false, status: 409, code: "model_not_loaded", message: "Load a model first." };
|
|
197
197
|
}
|
|
198
|
+
if (d.scanner.get(ms.model.key)?.jev) {
|
|
199
|
+
return {
|
|
200
|
+
ok: false,
|
|
201
|
+
status: 409,
|
|
202
|
+
code: "jev_model_loaded",
|
|
203
|
+
message: "A Jev model is loaded \u2014 it labels text and cannot chat. Switch to a chat model, or use the Jev Playground."
|
|
204
|
+
};
|
|
205
|
+
}
|
|
198
206
|
const target = d.manager.target();
|
|
199
207
|
if (!target) {
|
|
200
208
|
return { ok: false, status: 409, code: "model_not_loaded", message: "Engine not running." };
|
|
@@ -1909,7 +1917,7 @@ var CREATE_ROUTINE_TOOL = {
|
|
|
1909
1917
|
prompt: { type: "string", description: "The task to run, in the same words a user would ask it." },
|
|
1910
1918
|
scheduleDisplay: { type: "string", description: 'Human-readable schedule, e.g. "Runs weekdays at 9:00 AM". Must accurately describe scheduleRule.' },
|
|
1911
1919
|
scheduleRule: SCHEDULE_RULE_SCHEMA,
|
|
1912
|
-
modelKey: { type: "string", description: `One of TurboLLM's own model keys \u2014 a compound id (e.g. "gemma 4 26b a4b qat|Q4_0|14439362752"), never a generic name like "gpt-4" or "claude". Call list_models first if you don't already know a real one; never guess.` },
|
|
1920
|
+
modelKey: { type: "string", description: `One of TurboLLM's own model keys \u2014 a compound id (e.g. "gemma 4 26b a4b qat|Q4_0|14439362752"), never a generic name like "gpt-4" or "claude". Call list_models first if you don't already know a real one; never guess. Never pick a model list_models marks "kind: jev" \u2014 it labels text and cannot run a routine.` },
|
|
1913
1921
|
agentId: { type: "string", description: 'Required when flavor is "chat": an existing Customize -> Agents persona id.' },
|
|
1914
1922
|
workspacePath: { type: "string", description: 'Required when flavor is "code": absolute path to the workspace directory.' },
|
|
1915
1923
|
// Driven off schema.ts's list, not a second hand-maintained copy: this enum is what a MODEL
|
|
@@ -3602,6 +3610,11 @@ var CodeRunManager = class {
|
|
|
3602
3610
|
}
|
|
3603
3611
|
return false;
|
|
3604
3612
|
}
|
|
3613
|
+
/** Every session mid-turn (running or queued) — the per-session form of {@link anyActive}, for
|
|
3614
|
+
* the active-work probe that names what a model load would interrupt (ADR-434 (i)(3)). */
|
|
3615
|
+
activeSessionIds() {
|
|
3616
|
+
return [...this.sessions.keys()].filter((id) => this.isActive(id));
|
|
3617
|
+
}
|
|
3605
3618
|
/** The turns currently WAITING behind the active turn (not the running one) — the server-side
|
|
3606
3619
|
* message queue, surfaced to the UI so its "Queued" chips survive a disconnect. `userMsgId`
|
|
3607
3620
|
* (not just index) identifies each entry so a per-chip action (sendNow) can target one
|
|
@@ -5,6 +5,42 @@ import { readFileSync, readdirSync, statSync, existsSync } from "fs";
|
|
|
5
5
|
import { join } from "path";
|
|
6
6
|
|
|
7
7
|
// src/engines/compat.ts
|
|
8
|
+
function modelIncompatibility(engineKind, entry) {
|
|
9
|
+
if (entry.jev && engineKind !== "vllm") return NEEDS_VLLM;
|
|
10
|
+
if (!engineAcceptsFormat(engineKind, entry.format)) return formatIncompatibility(engineKind, entry.format);
|
|
11
|
+
if (entry.audio && engineRejectsAudioModel(engineKind)) return audioIncompatibility(engineKind);
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
var NEEDS_VLLM = {
|
|
15
|
+
code: "needs_vllm",
|
|
16
|
+
label: "Needs vLLM (Linux or WSL2)",
|
|
17
|
+
message: "This is a Jev model \u2014 it runs only on vLLM (Linux or WSL2). Activate a vLLM engine to load it."
|
|
18
|
+
};
|
|
19
|
+
var NEEDS_PYTHON_ENGINE_LABEL = "needs MLX or vLLM";
|
|
20
|
+
function formatIncompatibility(engineKind, format) {
|
|
21
|
+
const label = format === "gguf" ? "needs llama.cpp" : NEEDS_PYTHON_ENGINE_LABEL;
|
|
22
|
+
return { code: "format", label, message: formatMismatchMessage(engineKind, format) };
|
|
23
|
+
}
|
|
24
|
+
function formatMismatchMessage(engineKind, format) {
|
|
25
|
+
if (engineKind === "mlx")
|
|
26
|
+
return "The active engine is MLX \u2014 pick a safetensors model, or switch to a llama.cpp engine for GGUF.";
|
|
27
|
+
if (engineKind === "rapid-mlx")
|
|
28
|
+
return "The active engine is Rapid-MLX \u2014 pick a safetensors model, or switch to a llama.cpp engine for GGUF.";
|
|
29
|
+
if (engineKind === "mlx-vlm")
|
|
30
|
+
return "The active engine is MLX-VLM \u2014 pick a safetensors model, or switch to a llama.cpp engine for GGUF.";
|
|
31
|
+
if (engineKind === "vllm")
|
|
32
|
+
return "The active engine is vLLM \u2014 pick a safetensors / HF model, or switch to a llama.cpp engine for GGUF.";
|
|
33
|
+
return format === "mlx" ? "This is a safetensors model \u2014 activate an MLX or vLLM engine to load it." : "The active engine can only load GGUF models.";
|
|
34
|
+
}
|
|
35
|
+
function audioIncompatibility(engineKind) {
|
|
36
|
+
const engineLabel = engineKind === "mlx-vlm" ? "MLX-VLM" : "Rapid-MLX";
|
|
37
|
+
const certainty = engineKind === "mlx-vlm" ? "is expected to fail" : "fails";
|
|
38
|
+
return {
|
|
39
|
+
code: "audio",
|
|
40
|
+
label: NEEDS_PYTHON_ENGINE_LABEL,
|
|
41
|
+
message: `${engineLabel} cannot load models with an audio tower \u2014 the audio encoder ${certainty} due to an upstream mlx-vlm bug in the sanitizer for these architectures. Switch to the MLX engine instead.`
|
|
42
|
+
};
|
|
43
|
+
}
|
|
8
44
|
function engineAcceptsFormat(engineKind, format) {
|
|
9
45
|
if (engineKind === "mlx") return format === "mlx";
|
|
10
46
|
if (engineKind === "rapid-mlx") return format === "mlx";
|
|
@@ -178,8 +214,8 @@ ${f.content}`);
|
|
|
178
214
|
}
|
|
179
215
|
|
|
180
216
|
export {
|
|
181
|
-
|
|
182
|
-
|
|
217
|
+
modelIncompatibility,
|
|
218
|
+
ENGINE_MODEL_ALIAS,
|
|
183
219
|
engineModelAlias,
|
|
184
220
|
evaluateVariant,
|
|
185
221
|
distillFromConversation,
|