turbollm 1.14.0 → 1.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/README.md +4 -0
  2. package/dist/{chunk-IX5FQWMQ.js → chunk-P2FJIT7T.js} +12 -8
  3. package/dist/{chunk-J24U6O5Q.js → chunk-PJPEPLCC.js} +15 -0
  4. package/dist/cli.js +909 -442
  5. package/dist/code-routes.js +1 -1
  6. package/dist/code-run-manager.js +1 -1
  7. package/dist/{distiller-PS7TKBY6.js → distiller-VMWKFGZ3.js} +1 -1
  8. package/dist/webdist/assets/{AgentEditPage-DiJIyQ5c.js → AgentEditPage-Cwa-zL38.js} +1 -1
  9. package/dist/webdist/assets/{ChatScreen-okIINvx9.js → ChatScreen-Bc_Yl9Sx.js} +1 -1
  10. package/dist/webdist/assets/CodeComposer-C6DyfH1r.js +1 -0
  11. package/dist/webdist/assets/{CodeHomeScreen-aqIQxmWg.js → CodeHomeScreen-b_zDL9RG.js} +1 -1
  12. package/dist/webdist/assets/{CodeSessionScreen-C1iDX1Dz.js → CodeSessionScreen-8b2Ge4ie.js} +1 -1
  13. package/dist/webdist/assets/CustomizeScreen-C5nkAICY.js +4 -0
  14. package/dist/webdist/assets/EnginesScreen-Up11ZhyB.js +10 -0
  15. package/dist/webdist/assets/HardwareSection-OH0TJi_Z.js +1 -0
  16. package/dist/webdist/assets/JevPlaygroundScreen-BREsXz9q.js +4 -0
  17. package/dist/webdist/assets/ModelDetailDialog-B1JcClTY.js +1 -0
  18. package/dist/webdist/assets/{ModelLoadMenu-CUgsolzj.js → ModelLoadMenu-CwIOXYXO.js} +1 -1
  19. package/dist/webdist/assets/{ModelsScreen-DDtp63UR.js → ModelsScreen-DQwvBWif.js} +2 -2
  20. package/dist/webdist/assets/{OnboardingScreen-BlX_k6qt.js → OnboardingScreen-BqE0BT90.js} +1 -1
  21. package/dist/webdist/assets/{RoutineEditPage-Cc0idJ-3.js → RoutineEditPage-DdZEKfQD.js} +1 -1
  22. package/dist/webdist/assets/{RoutinesPanel-OqbQ0SmB.js → RoutinesPanel-BDGU4Lcb.js} +1 -1
  23. package/dist/webdist/assets/SettingsScreen-DAeKSCFf.js +2 -0
  24. package/dist/webdist/assets/SidebarResizeHandle-0RTQMpIq.js +2 -0
  25. package/dist/webdist/assets/{SkillEditPage-Bd_elRU6.js → SkillEditPage-D0GorNvr.js} +1 -1
  26. package/dist/webdist/assets/{ToolApprovalBar-CUotEGv6.js → ToolApprovalBar-OKYB_ZAA.js} +3 -3
  27. package/dist/webdist/assets/WorkspaceScreen-DMAN9bBt.js +1 -0
  28. package/dist/webdist/assets/{abnfDiagram-N423BO3Z-D4qUs6KP.js → abnfDiagram-N423BO3Z-XHFTI65L.js} +1 -1
  29. package/dist/webdist/assets/{agent-api-wjr1CSL9.js → agent-api-DOk_QFal.js} +1 -1
  30. package/dist/webdist/assets/{arc-Dez50YO9.js → arc-CNkBhygf.js} +1 -1
  31. package/dist/webdist/assets/{architectureDiagram-T3A2C74G-DmsRR1_Y.js → architectureDiagram-T3A2C74G-DhS0yd8i.js} +1 -1
  32. package/dist/webdist/assets/{badge-CksW7yOr.js → badge-BLWWKpdD.js} +1 -1
  33. package/dist/webdist/assets/{blockDiagram-VBNYF7ZC-DVsOGm63.js → blockDiagram-VBNYF7ZC-Da4dRXQ_.js} +1 -1
  34. package/dist/webdist/assets/{c4Diagram-5PPSVZJV-DuD2IKcf.js → c4Diagram-5PPSVZJV-DZlyWoX0.js} +1 -1
  35. package/dist/webdist/assets/channel-Dd7EBACN.js +1 -0
  36. package/dist/webdist/assets/{chat-api-CUEHqc3o.js → chat-api-CH2dRFBP.js} +1 -1
  37. package/dist/webdist/assets/chat-queries-BNmg0pO8.js +1 -0
  38. package/dist/webdist/assets/{chevron-down-CMthk8sq.js → chevron-down-CvGX_-uJ.js} +1 -1
  39. package/dist/webdist/assets/{chevron-left-BHsjloFD.js → chevron-left-DOsYIFeW.js} +1 -1
  40. package/dist/webdist/assets/{chevron-right-rb18aZPa.js → chevron-right-COyiGhAj.js} +1 -1
  41. package/dist/webdist/assets/{chunk-2GRJ4B5K-mCrgEnOk.js → chunk-2GRJ4B5K-C9h1bvfm.js} +1 -1
  42. package/dist/webdist/assets/{chunk-2Q5K7J3B-CB--nQz8.js → chunk-2Q5K7J3B-BMmm-jOe.js} +1 -1
  43. package/dist/webdist/assets/{chunk-5RXB4S5H-npnDTsGI.js → chunk-5RXB4S5H-DHORQmlT.js} +1 -1
  44. package/dist/webdist/assets/{chunk-5VM5RSS4-Dy-_qijb.js → chunk-5VM5RSS4-Di4-RCdG.js} +1 -1
  45. package/dist/webdist/assets/{chunk-6Q2QTUOP-xi2-gUVB.js → chunk-6Q2QTUOP-CBDkYNQ8.js} +1 -1
  46. package/dist/webdist/assets/{chunk-GF5L2VYU-BhJKGS3t.js → chunk-GF5L2VYU-BBX-ZTlB.js} +1 -1
  47. package/dist/webdist/assets/{chunk-JWPE2WC7-CgK6Phiy.js → chunk-JWPE2WC7-CVxwbspM.js} +1 -1
  48. package/dist/webdist/assets/{chunk-KBJHAD2P-rJP8cgbH.js → chunk-KBJHAD2P-Oo5VRh3b.js} +1 -1
  49. package/dist/webdist/assets/{chunk-RYQCIY6F-LMXaxAUW.js → chunk-RYQCIY6F-Bf2E5f4L.js} +1 -1
  50. package/dist/webdist/assets/{chunk-XXDRQBXY-Egaue6FK.js → chunk-XXDRQBXY-DpxzpFS3.js} +1 -1
  51. package/dist/webdist/assets/{circle-check-UpG6b-yk.js → circle-check-sJ35WLnC.js} +1 -1
  52. package/dist/webdist/assets/{circle-x-BbWW1cEW.js → circle-x-hbELBZ-8.js} +1 -1
  53. package/dist/webdist/assets/classDiagram-JCYQIIEL-CvUjZ1BS.js +1 -0
  54. package/dist/webdist/assets/classDiagram-v2-OCEON4UE-CvUjZ1BS.js +1 -0
  55. package/dist/webdist/assets/{collapsible-Bvt-3Dje.js → collapsible-iTZnDqcl.js} +1 -1
  56. package/dist/webdist/assets/{common-7bKxHlFN.js → common-BgZzRAuV.js} +1 -1
  57. package/dist/webdist/assets/{cose-bilkent-JH36ORCC-BplRQRpJ.js → cose-bilkent-JH36ORCC-DRPykHKI.js} +1 -1
  58. package/dist/webdist/assets/{cynefin-VYW2F7L2-BEssnT89.js → cynefin-VYW2F7L2-Bf5rHv2Z.js} +1 -1
  59. package/dist/webdist/assets/{cynefinDiagram-MW4NZA55-CmN23mXI.js → cynefinDiagram-MW4NZA55-i0FqYmRg.js} +1 -1
  60. package/dist/webdist/assets/{dagre-VZM6K2ZE-BnzVfHdw.js → dagre-VZM6K2ZE-CMbhTMZ4.js} +1 -1
  61. package/dist/webdist/assets/{diagram-7IWD3JNH-Bvf1BnM2.js → diagram-7IWD3JNH-CsOv9oXF.js} +1 -1
  62. package/dist/webdist/assets/{diagram-B4RE2ZJO-8CeAGkn6.js → diagram-B4RE2ZJO-Dh_nM4nT.js} +1 -1
  63. package/dist/webdist/assets/{diagram-LBJQPF4R-C8UmzDjJ.js → diagram-LBJQPF4R-kpDBpfMN.js} +1 -1
  64. package/dist/webdist/assets/{diagram-Q27KOJAE-ExDIWzGa.js → diagram-Q27KOJAE-DsoOGsDe.js} +1 -1
  65. package/dist/webdist/assets/{diagram-UB23O5K3-NTOlUSNM.js → diagram-UB23O5K3-Dm3BTmfy.js} +1 -1
  66. package/dist/webdist/assets/{dropdown-menu-C7XdhXfN.js → dropdown-menu-CbF1OiRs.js} +1 -1
  67. package/dist/webdist/assets/{ebnfDiagram-BXEA7PRR-DSLXnVcA.js → ebnfDiagram-BXEA7PRR-BuzsXY7o.js} +1 -1
  68. package/dist/webdist/assets/{erDiagram-JOGREHBK-C9N6ltou.js → erDiagram-JOGREHBK-xNT1gtBK.js} +1 -1
  69. package/dist/webdist/assets/{file-text-0lpSyfWS.js → file-text-7zVScZD1.js} +1 -1
  70. package/dist/webdist/assets/{flowDiagram-UKHOOZJN-BEpdoBJK.js → flowDiagram-UKHOOZJN-CQY8WhcV.js} +1 -1
  71. package/dist/webdist/assets/{folder-input-CA06TkHQ.js → folder-input-CaZXVybt.js} +1 -1
  72. package/dist/webdist/assets/{folder-plus-1PSVHL0Z.js → folder-plus-D-kUUPUg.js} +1 -1
  73. package/dist/webdist/assets/{ganttDiagram-PKOTCBZU-JBTZctPg.js → ganttDiagram-PKOTCBZU-C_iuCo8m.js} +1 -1
  74. package/dist/webdist/assets/{git-branch-LGIPJBji.js → git-branch-BAuPsOG-.js} +1 -1
  75. package/dist/webdist/assets/{gitGraphDiagram-DS77QQ5N-BE8GgT4b.js → gitGraphDiagram-DS77QQ5N-BnzkkDM-.js} +1 -1
  76. package/dist/webdist/assets/{globe-BZvXG7nu.js → globe-tqOR-8Fp.js} +1 -1
  77. package/dist/webdist/assets/{index-DZjLhFsI.js → index-CgxaB3Gh.js} +12 -12
  78. package/dist/webdist/assets/{infoDiagram-6WML65LV-CQK2P3-1.js → infoDiagram-6WML65LV-BfOOh49N.js} +1 -1
  79. package/dist/webdist/assets/{ishikawaDiagram-WSZJBQD7-JgMGUhtq.js → ishikawaDiagram-WSZJBQD7-DWrnYaz5.js} +1 -1
  80. package/dist/webdist/assets/{journeyDiagram-NVQOT4AX-FJXvRlwV.js → journeyDiagram-NVQOT4AX-Cykxha8K.js} +1 -1
  81. package/dist/webdist/assets/{kanban-definition-27J2QSJJ-DHUtWhPw.js → kanban-definition-27J2QSJJ-B_u2ZkKD.js} +1 -1
  82. package/dist/webdist/assets/{linear-BXMrvrnx.js → linear-CCF9Cm7E.js} +1 -1
  83. package/dist/webdist/assets/{lock-BuQP3O8t.js → lock-knxG_35Q.js} +1 -1
  84. package/dist/webdist/assets/{mermaid.core-S_RQyOsW.js → mermaid.core-hpcIlkU_.js} +4 -4
  85. package/dist/webdist/assets/{mindmap-definition-FAOFIHXS-D6uoAnSN.js → mindmap-definition-FAOFIHXS-Bo6uupGZ.js} +1 -1
  86. package/dist/webdist/assets/model-kind-DfGaG8Om.js +1 -0
  87. package/dist/webdist/assets/{monitor-B4zAo7OI.js → monitor-h6B1Mhx_.js} +1 -1
  88. package/dist/webdist/assets/{pegDiagram-VL7TDLO6-xbZuTOco.js → pegDiagram-VL7TDLO6-CmaR_a28.js} +1 -1
  89. package/dist/webdist/assets/{pencil-BWfgZfTf.js → pencil-Bcc9OQIw.js} +1 -1
  90. package/dist/webdist/assets/{personas-CM56vmHR.js → personas-Ax5CJgp-.js} +1 -1
  91. package/dist/webdist/assets/{pieDiagram-7S7Q4E2Y-DNpMdzBT.js → pieDiagram-7S7Q4E2Y-BRwAkrJv.js} +1 -1
  92. package/dist/webdist/assets/{quadrantDiagram-CIZ2JOQS-DGwOFRyi.js → quadrantDiagram-CIZ2JOQS-ltrBwN2e.js} +1 -1
  93. package/dist/webdist/assets/{railroadDiagram-AXF67PYL-CzB8w48H.js → railroadDiagram-AXF67PYL-BJnzgPB2.js} +1 -1
  94. package/dist/webdist/assets/{refresh-cw-BDzlGNDg.js → refresh-cw-BhFglZpi.js} +1 -1
  95. package/dist/webdist/assets/{remote-failure-B7HGWJkJ.js → remote-failure-Cln9acAA.js} +1 -1
  96. package/dist/webdist/assets/{requirementDiagram-LRYGKXZP-CmCwDIBl.js → requirementDiagram-LRYGKXZP-C5ahe8aN.js} +1 -1
  97. package/dist/webdist/assets/{rocket-D3uvOsNZ.js → rocket-DatVWRvk.js} +1 -1
  98. package/dist/webdist/assets/{rotate-ccw-BACVmdwR.js → rotate-ccw-vrFQeroT.js} +1 -1
  99. package/dist/webdist/assets/{sankeyDiagram-W5VNT64P-DQNzMUJ3.js → sankeyDiagram-W5VNT64P-DIrucd4o.js} +1 -1
  100. package/dist/webdist/assets/{sequenceDiagram-SI44F4Z6-CMrIVeVl.js → sequenceDiagram-SI44F4Z6-NZ2lgqIC.js} +1 -1
  101. package/dist/webdist/assets/sheet-Cls7ZzjB.js +1 -0
  102. package/dist/webdist/assets/{sizeCapture-X5ZJPWSS-TjCLqzce.js → sizeCapture-X5ZJPWSS-BR-pPk3k.js} +1 -1
  103. package/dist/webdist/assets/skeleton-B0RuU-NT.js +1 -0
  104. package/dist/webdist/assets/{sliders-horizontal-B0oyFTI0.js → sliders-horizontal-BTgEAYjk.js} +1 -1
  105. package/dist/webdist/assets/{sparkles-BmWBphjQ.js → sparkles-zNEWlBS7.js} +1 -1
  106. package/dist/webdist/assets/{star-DtH9hIqK.js → star-DqSiDQYi.js} +1 -1
  107. package/dist/webdist/assets/{stateDiagram-OKZ733FA-DNMCj4tf.js → stateDiagram-OKZ733FA-BzhDztc8.js} +1 -1
  108. package/dist/webdist/assets/stateDiagram-v2-UEYNNEHI-CcnhkGux.js +1 -0
  109. package/dist/webdist/assets/{swimlanes-SLNWSIFB-CtvQNY0N.js → swimlanes-SLNWSIFB-4YPENUjd.js} +2 -2
  110. package/dist/webdist/assets/swimlanesDiagram-ULZ7WXOC-CkFtsRtE.js +8 -0
  111. package/dist/webdist/assets/{switch-DIadx8HA.js → switch-BMiiAxbI.js} +1 -1
  112. package/dist/webdist/assets/{terminal-C8Qor-4N.js → terminal-BI0KvmWZ.js} +1 -1
  113. package/dist/webdist/assets/{timeline-definition-Z64GVDOM-BrzE2nEM.js → timeline-definition-Z64GVDOM-Bdm_1AE1.js} +1 -1
  114. package/dist/webdist/assets/{trash-2-DuhMUqOF.js → trash-2-_mCrc_yU.js} +1 -1
  115. package/dist/webdist/assets/{vennDiagram-T6HMQDX7-Bo6Xl6Hi.js → vennDiagram-T6HMQDX7-C_hXfFgj.js} +1 -1
  116. package/dist/webdist/assets/{wardleyDiagram-T6FBY63Y-IOpBpINS.js → wardleyDiagram-T6FBY63Y-Dkrk5amJ.js} +1 -1
  117. package/dist/webdist/assets/{wrench-z3LG4dD8.js → wrench-BOFcMR_W.js} +1 -1
  118. package/dist/webdist/assets/{xychartDiagram-ELKLHX3M-DOh0gSue.js → xychartDiagram-ELKLHX3M-DD1iYy6L.js} +1 -1
  119. package/dist/webdist/index.html +1 -1
  120. package/package.json +2 -2
  121. package/dist/webdist/assets/CodeComposer-Cjg4xu5i.js +0 -1
  122. package/dist/webdist/assets/CustomizeScreen-BskDZVOp.js +0 -4
  123. package/dist/webdist/assets/EnginesScreen-DT_E6Bqd.js +0 -10
  124. package/dist/webdist/assets/HardwareSection-Dy-7b_gI.js +0 -1
  125. package/dist/webdist/assets/JevPlaygroundScreen-BJ9EXDPE.js +0 -4
  126. package/dist/webdist/assets/ModelDetailDialog-C5ejpvy6.js +0 -1
  127. package/dist/webdist/assets/SettingsScreen-C9rK-X9n.js +0 -2
  128. package/dist/webdist/assets/SidebarResizeHandle-BgR_YpxG.js +0 -2
  129. package/dist/webdist/assets/WorkspaceScreen-DF5OMiKx.js +0 -1
  130. package/dist/webdist/assets/channel-CyfqT0Zk.js +0 -1
  131. package/dist/webdist/assets/chat-queries-CzD9RmqG.js +0 -1
  132. package/dist/webdist/assets/classDiagram-JCYQIIEL-vs5mQ5z7.js +0 -1
  133. package/dist/webdist/assets/classDiagram-v2-OCEON4UE-vs5mQ5z7.js +0 -1
  134. package/dist/webdist/assets/model-kind-C1rLvNZj.js +0 -1
  135. package/dist/webdist/assets/sheet-BMLkQ0th.js +0 -1
  136. package/dist/webdist/assets/skeleton-Dxu5wc0L.js +0 -1
  137. package/dist/webdist/assets/stateDiagram-v2-UEYNNEHI-BDtEUZuR.js +0 -1
  138. package/dist/webdist/assets/swimlanesDiagram-ULZ7WXOC-BJHI83P3.js +0 -8
package/README.md CHANGED
@@ -384,6 +384,10 @@ there. Entirely local; nothing leaves your machine.
384
384
  - **Honestly labelled:** answers are the model's NLI entailment scores, not a calibrated decision
385
385
  model, and the docs explain exactly how each number is computed.
386
386
  - Runs on vLLM (Linux or WSL2). Full guide: <https://turbollm.dev/docs/jev>.
387
+ - **Laya decision models, too** ([convaiinnovations/laya](https://huggingface.co/convaiinnovations/laya)):
388
+ - What it is: a calibrated System One model that answers the same `/v1/systemone` questions in 100+ languages.
389
+ - Where it runs: on its own Laya engine (Engines page; Windows, macOS, Linux; CPU or GPU), beside your chat model.
390
+ - How to get it: search "laya" in Discover. The playground opens from the Workspace sidebar while it is loaded.
387
391
 
388
392
  </details>
389
393
 
@@ -1528,13 +1528,17 @@ import { join as join10 } from "path";
1528
1528
  var BENCH_RATE_LIMIT_MS = 60 * 60 * 1e3;
1529
1529
 
1530
1530
  // src/models/scanner.ts
1531
- import { existsSync as existsSync7, lstatSync, readdirSync as readdirSync5, readFileSync as readFileSync7, realpathSync as realpathSync2, rmSync as rmSync4, writeFileSync as writeFileSync6 } from "fs";
1531
+ import { existsSync as existsSync8, lstatSync as lstatSync2, readdirSync as readdirSync5, readFileSync as readFileSync8, realpathSync as realpathSync2, rmSync as rmSync4, writeFileSync as writeFileSync6 } from "fs";
1532
1532
  import { readdir, realpath, stat } from "fs/promises";
1533
- import { basename as basename2, dirname as dirname4, isAbsolute, join as join11, relative, resolve as resolve2, sep as sep2 } from "path";
1533
+ import { basename as basename3, dirname as dirname4, isAbsolute, join as join12, relative, resolve as resolve2, sep as sep2 } from "path";
1534
1534
 
1535
1535
  // src/gguf/gguf.ts
1536
1536
  import { closeSync, openSync, readSync } from "fs";
1537
1537
 
1538
+ // src/models/laya.ts
1539
+ import { existsSync as existsSync7, lstatSync, readFileSync as readFileSync7 } from "fs";
1540
+ import { basename as basename2, join as join11 } from "path";
1541
+
1538
1542
  // src/models/profile.ts
1539
1543
  var ROCM_APU_NOMMAP_MIN_BYTES = 30 * 1024 ** 3;
1540
1544
 
@@ -1604,7 +1608,7 @@ async function autoTitleFromConversation(d, convId) {
1604
1608
  }
1605
1609
 
1606
1610
  // src/code/code-session.ts
1607
- import { join as join12, resolve as resolve3 } from "path";
1611
+ import { join as join13, resolve as resolve3 } from "path";
1608
1612
  import { readFile as readFile3 } from "fs/promises";
1609
1613
  import { Type, Unsafe } from "typebox";
1610
1614
  import {
@@ -2426,7 +2430,7 @@ async function runCodeSession(params) {
2426
2430
  console.warn(`[code-session] history seed for session ${sessionId} produced ${sessionManager.getEntries().length}/${expectedEntries} expected entries \u2014 falling back to a plain-text history prefix on this turn's prompt`);
2427
2431
  task = `${HISTORY_FALLBACK_PREFIX}${renderHistoryFallbackText(summaryText, priorMessages)}${HISTORY_FALLBACK_SUFFIX}${rawTask}`;
2428
2432
  }
2429
- const agentDir = join12(d.store.dir(), "pi-agent");
2433
+ const agentDir = join13(d.store.dir(), "pi-agent");
2430
2434
  modelRegistry.registerProvider("local", {
2431
2435
  ...upstream.provider,
2432
2436
  api: "openai-completions",
@@ -2553,7 +2557,7 @@ async function runCodeSession(params) {
2553
2557
  await sink({ event: "tool_call", data });
2554
2558
  });
2555
2559
  };
2556
- const skillAgentDir = join12(d.store.dir(), "pi-agent");
2560
+ const skillAgentDir = join13(d.store.dir(), "pi-agent");
2557
2561
  const skillResourceLoader = new DefaultResourceLoader({
2558
2562
  cwd: repoRoot,
2559
2563
  agentDir: skillAgentDir,
@@ -2694,7 +2698,7 @@ async function runCodeSession(params) {
2694
2698
  await sink({ event: "tool_call", data });
2695
2699
  });
2696
2700
  };
2697
- const subAgentDir = join12(d.store.dir(), "pi-agent");
2701
+ const subAgentDir = join13(d.store.dir(), "pi-agent");
2698
2702
  const subResourceLoader = new DefaultResourceLoader({
2699
2703
  cwd: repoRoot,
2700
2704
  agentDir: subAgentDir,
@@ -3349,7 +3353,7 @@ async function compactCodeSession(params) {
3349
3353
  return payload;
3350
3354
  });
3351
3355
  };
3352
- const compactAgentDir = join12(d.store.dir(), "pi-agent");
3356
+ const compactAgentDir = join13(d.store.dir(), "pi-agent");
3353
3357
  const compactResourceLoader = new DefaultResourceLoader({
3354
3358
  cwd: repoRoot,
3355
3359
  agentDir: compactAgentDir,
@@ -3448,7 +3452,7 @@ async function lookbackPreCompactionHistory(params) {
3448
3452
  return payload;
3449
3453
  });
3450
3454
  };
3451
- const lookbackAgentDir = join12(d.store.dir(), "pi-agent");
3455
+ const lookbackAgentDir = join13(d.store.dir(), "pi-agent");
3452
3456
  const lookbackResourceLoader = new DefaultResourceLoader({
3453
3457
  cwd: repoRoot,
3454
3458
  agentDir: lookbackAgentDir,
@@ -6,6 +6,8 @@ import { join } from "path";
6
6
 
7
7
  // src/engines/compat.ts
8
8
  function modelIncompatibility(engineKind, entry) {
9
+ if (entry.format === "gguf" && entry.arch === GGMLC_ARCH) return GGMLC_GGUF;
10
+ if (entry.laya) return engineKind === "laya" ? null : NEEDS_LAYA;
9
11
  if (entry.jev && engineKind !== "vllm") return NEEDS_VLLM;
10
12
  if (!engineAcceptsFormat(engineKind, entry.format)) return formatIncompatibility(engineKind, entry.format);
11
13
  if (entry.audio && engineRejectsAudioModel(engineKind)) return audioIncompatibility(engineKind);
@@ -16,12 +18,24 @@ var NEEDS_VLLM = {
16
18
  label: "Needs vLLM (Linux or WSL2)",
17
19
  message: "This is a Jev model \u2014 it runs only on vLLM (Linux or WSL2). Activate a vLLM engine to load it."
18
20
  };
21
+ var NEEDS_LAYA = {
22
+ code: "needs_laya",
23
+ label: "Needs the Laya engine",
24
+ message: "This is a Laya model \u2014 it runs only on the Laya engine. Install Laya from Engines to load it."
25
+ };
26
+ var GGMLC_ARCH = "ggmlc";
27
+ var GGMLC_GGUF = {
28
+ code: "format",
29
+ label: "ggmlc GGUF \u2014 not loadable",
30
+ message: "This GGUF uses the ggmlc architecture, which llama.cpp can't load. For Laya, download convaiinnovations/laya instead: it runs on the Laya engine."
31
+ };
19
32
  var NEEDS_PYTHON_ENGINE_LABEL = "needs MLX or vLLM";
20
33
  function formatIncompatibility(engineKind, format) {
21
34
  const label = format === "gguf" ? "needs llama.cpp" : NEEDS_PYTHON_ENGINE_LABEL;
22
35
  return { code: "format", label, message: formatMismatchMessage(engineKind, format) };
23
36
  }
24
37
  function formatMismatchMessage(engineKind, format) {
38
+ if (engineKind === "laya") return "The Laya engine runs only Laya models \u2014 load this one on another engine.";
25
39
  if (engineKind === "mlx")
26
40
  return "The active engine is MLX \u2014 pick a safetensors model, or switch to a llama.cpp engine for GGUF.";
27
41
  if (engineKind === "rapid-mlx")
@@ -46,6 +60,7 @@ function engineAcceptsFormat(engineKind, format) {
46
60
  if (engineKind === "rapid-mlx") return format === "mlx";
47
61
  if (engineKind === "mlx-vlm") return format === "mlx";
48
62
  if (engineKind === "vllm") return format === "mlx";
63
+ if (engineKind === "laya") return false;
49
64
  return format === "gguf";
50
65
  }
51
66
  function engineRejectsAudioModel(engineKind) {