turbollm 1.3.2 → 1.4.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 +178 -211
- package/dist/cli.js +664 -232
- package/dist/webdist/assets/{ChatScreen-DY2flMe9.js → ChatScreen-DwW1RFdb.js} +10 -10
- package/dist/webdist/assets/{CustomizeScreen-Cl6H68Sy.js → CustomizeScreen-DSE61GGl.js} +1 -1
- package/dist/webdist/assets/{DeveloperScreen-zC1nePXh.js → DeveloperScreen-BYGLUEKp.js} +1 -1
- package/dist/webdist/assets/{EnginesScreen-CrsziC3B.js → EnginesScreen-D1fV7OUs.js} +1 -1
- package/dist/webdist/assets/{ModelDetailDialog-BOvumdHI.js → ModelDetailDialog-DOWC_r7x.js} +1 -1
- package/dist/webdist/assets/{ModelDirs-Bj-XrX0c.js → ModelDirs-BnEgYeD7.js} +1 -1
- package/dist/webdist/assets/{ModelsScreen-BTir-kDY.js → ModelsScreen-CsIWlTix.js} +1 -1
- package/dist/webdist/assets/{SettingsScreen-B696egCa.js → SettingsScreen-BsoeEYxo.js} +1 -1
- package/dist/webdist/assets/check-BEcwngnz.js +1 -0
- package/dist/webdist/assets/{circle-x-CsuAddI_.js → circle-x-BMU1-bqZ.js} +1 -1
- package/dist/webdist/assets/{common-DIXPIrUd.js → common-CsaPxOo6.js} +1 -1
- package/dist/webdist/assets/{copy-button-BtQZA6P8.js → copy-button-VN55eluX.js} +1 -1
- package/dist/webdist/assets/{dialog-Dpyml8ZT.js → dialog-oym6ZR4Z.js} +1 -1
- package/dist/webdist/assets/{index-sjgdofsd.js → index-DdsLEQg8.js} +2 -2
- package/dist/webdist/assets/{pencil-BuQwoNyj.js → pencil-BUeTGZ2m.js} +1 -1
- package/dist/webdist/assets/{personas-CQapYHeK.js → personas-B44JP8XF.js} +1 -1
- package/dist/webdist/assets/{plus-B1w15FoZ.js → plus-B4N6E4A9.js} +1 -1
- package/dist/webdist/assets/{refresh-cw-BoAcjLtt.js → refresh-cw-35eljdhP.js} +1 -1
- package/dist/webdist/assets/{save-DE1APWTG.js → save-AXon2pXP.js} +1 -1
- package/dist/webdist/assets/{skeleton-Dvq8tYzC.js → skeleton-BqBFt4sB.js} +1 -1
- package/dist/webdist/assets/{sparkles-C54kYWeQ.js → sparkles-C1EIsU4T.js} +1 -1
- package/dist/webdist/assets/{trash-2-DIMVgidH.js → trash-2-BOZ6n1d2.js} +1 -1
- package/dist/webdist/index.html +1 -1
- package/package.json +1 -1
- package/dist/webdist/assets/check-DFwkcl_5.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as a}from"./index-
|
|
1
|
+
import{c as a}from"./index-DdsLEQg8.js";const c=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],o=a("pencil",c);export{o as P};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a7 as v,A as w,a as q,q as d,a8 as S}from"./index-
|
|
1
|
+
import{a7 as v,A as w,a as q,q as d,a8 as S}from"./index-DdsLEQg8.js";async function r(e,n){const a={Accept:"application/json",...v(),...n?.headers??{}};let t=n?.body;n&&"json"in n&&n.json!==void 0&&(a["Content-Type"]="application/json",t=JSON.stringify(n.json));const s=await fetch(e,{...n,headers:a,body:t});if(s.status===204)return;const i=await s.text(),c=i?(()=>{try{return JSON.parse(i)}catch{return}})():void 0;if(!s.ok){const o=c;throw new w(o?.error?.code??"http_error",o?.error?.message??`Request failed with status ${s.status}.`,s.status)}return c}function U(e){return r(`/api/v1/conversations${e?`?q=${encodeURIComponent(e)}`:""}`)}function A(e){return r("/api/v1/conversations",{method:"POST",json:e??{}})}function L(){return r("/api/v1/conversations/expert",{method:"POST",json:{}})}function _(e){return r(`/api/v1/conversations/${encodeURIComponent(e)}`)}function $(e,n){return r(`/api/v1/conversations/${encodeURIComponent(e)}`,{method:"PATCH",json:n})}function j(e){return r(`/api/v1/conversations/${encodeURIComponent(e)}`,{method:"DELETE"})}function E(e){return r("/api/v1/chat/stop",{method:"POST",json:{conversationId:e}})}function D(e,n,a){return r(`/api/v1/conversations/${encodeURIComponent(e)}/messages/${encodeURIComponent(n)}`,{method:"PUT",json:{content:a}})}function F(e,n){return r(`/api/v1/conversations/${encodeURIComponent(e)}/messages/${encodeURIComponent(n)}`,{method:"DELETE"})}function M(e){return r(`/api/v1/conversations/${encodeURIComponent(e)}/regenerate`,{method:"POST",json:{}})}async function*W(e,n,a,t,s,i,c){const o=await fetch(`/api/v1/conversations/${encodeURIComponent(e)}/messages`,{method:"POST",headers:{"Content-Type":"application/json",...v()},body:JSON.stringify({content:n,images:t?.length?t:void 0,docContext:s||void 0,textAttachments:i?.length?i:void 0,disableThinking:c||void 0}),signal:a});if(!o.ok||!o.body){const l=await o.text().catch(()=>""),p=(()=>{try{return JSON.parse(l)}catch{return}})();throw new w(p?.error?.code??"http_error",p?.error?.message??`Request failed with status ${o.status}.`,o.status)}const m=o.body.getReader(),h=new TextDecoder;let u="";try{for(;;){const{done:l,value:p}=await m.read();if(l)break;u+=h.decode(p,{stream:!0});const f=u.split(`
|
|
2
2
|
`);u=f.pop()??"";let y="";for(const g of f)if(g.startsWith("event: "))y=g.slice(7).trim();else if(g.startsWith("data: ")){const O=g.slice(6).trim();try{const R=JSON.parse(O);y&&(yield{event:y,data:R})}catch{}y=""}}}finally{m.releaseLock()}}async function*Y(e,n,a){const t=await fetch(`/api/v1/conversations/${encodeURIComponent(e)}/continue`,{method:"POST",headers:{"Content-Type":"application/json",...v()},body:JSON.stringify({disableThinking:a||void 0}),signal:n});if(!t.ok||!t.body){const o=await t.text().catch(()=>""),m=(()=>{try{return JSON.parse(o)}catch{return}})();throw new w(m?.error?.code??"http_error",m?.error?.message??`Request failed with status ${t.status}.`,t.status)}const s=t.body.getReader(),i=new TextDecoder;let c="";try{for(;;){const{done:o,value:m}=await s.read();if(o)break;c+=i.decode(m,{stream:!0});const h=c.split(`
|
|
3
3
|
`);c=h.pop()??"";let u="";for(const l of h)if(l.startsWith("event: "))u=l.slice(7).trim();else if(l.startsWith("data: ")){const p=l.slice(6).trim();try{const f=JSON.parse(p);u&&(yield{event:u,data:f})}catch{}u=""}}}finally{s.releaseLock()}}const b={list:e=>["conversations",e??""],detail:e=>["conversation",e]};function z(e){return S({queryKey:b.list(e),queryFn:()=>U(e),staleTime:0,retry:!1})}function Q(e){return S({queryKey:b.detail(e),queryFn:()=>_(e),enabled:!!e,retry:!1})}function G(){const e=q(),n=()=>{e.invalidateQueries({queryKey:["conversations"]})},a=t=>{e.invalidateQueries({queryKey:b.detail(t)})};return{create:d({mutationFn:t=>A(t),onSuccess:n}),createExpert:d({mutationFn:()=>L(),onSuccess:n}),update:d({mutationFn:t=>$(t.id,t),onSuccess:(t,s)=>{n(),a(s.id)}}),remove:d({mutationFn:t=>j(t),onSuccess:n}),stop:d({mutationFn:t=>E(t)}),editMsg:d({mutationFn:t=>D(t.convId,t.msgId,t.content),onSuccess:(t,s)=>a(s.convId)}),deleteMsg:d({mutationFn:t=>F(t.convId,t.msgId),onSuccess:(t,s)=>a(s.convId)}),regenerate:d({mutationFn:t=>M(t),onSuccess:(t,s)=>a(s)})}}const I=[{id:"default",name:"Default",description:"Balanced and helpful with chart capability and your personalization settings",systemPrompt:""},{id:"blank",name:"Blank",description:"Zero system prompt — raw model output, no instructions injected",systemPrompt:""},{id:"concise",name:"Concise",description:"Shortest possible answers, bullet points over paragraphs",systemPrompt:"Keep answers as short as possible. Use bullet points over paragraphs when listing multiple items. No preamble, no trailing summary. Answer the question and stop."},{id:"detailed",name:"Detailed",description:"Thorough explanations with context, examples, and reasoning",systemPrompt:"Give thorough, educational explanations. Include relevant context, examples, and reasoning. Do not truncate or summarize — explain fully."},{id:"blunt",name:"Blunt",description:"Direct with no filler words or pleasantries",systemPrompt:'Be direct and blunt. Skip preambles and pleasantries — no "Certainly!", "Of course!", "Great question!". Get to the point immediately. If something is wrong, say so plainly.'},{id:"formal",name:"Formal",description:"Professional, polished prose suitable for documents",systemPrompt:"Write in a professional, polished tone. Avoid casual language, contractions, emojis, and conversational filler. Suit your response for a professional document or communication."},{id:"tutor",name:"Tutor",description:"Asks a clarifying question first, then teaches step by step",systemPrompt:"You are a patient teacher. If the question is ambiguous, ask one focused clarifying question before answering. Otherwise, explain step by step as if teaching someone encountering this topic for the first time."},{id:"research",name:"Research",description:"Multi-search deep research — runs 3–5 targeted queries before answering, cites all sources",systemPrompt:`You are a deep research assistant. Every response requires multiple web searches — do NOT compose your answer until you have run at least 3 searches.
|
|
4
4
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e}from"./index-
|
|
1
|
+
import{c as e}from"./index-DdsLEQg8.js";const o=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],c=e("plus",o);export{c as P};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e}from"./index-
|
|
1
|
+
import{c as e}from"./index-DdsLEQg8.js";const a=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],c=e("external-link",a);const t=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],o=e("refresh-cw",t);export{c as E,o as R};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as a}from"./index-
|
|
1
|
+
import{c as a}from"./index-DdsLEQg8.js";const e=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],o=a("save",e);export{o as S};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as r,w as n,Z as s}from"./index-
|
|
1
|
+
import{c as r,w as n,Z as s}from"./index-DdsLEQg8.js";import{j as a}from"./radix-BFvMxQq9.js";const i=[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],m=r("ellipsis",i),l=s("inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[12px] font-medium leading-none",{variants:{variant:{default:"bg-panel-2 text-muted",accent:"bg-[color:color-mix(in_srgb,var(--accent)_14%,transparent)] text-accent",mono:"bg-panel-2 text-muted font-mono"}},defaultVariants:{variant:"default"}});function p({className:e,variant:t,...c}){return a.jsx("span",{className:n(l({variant:t}),e),...c})}function u({className:e,...t}){return a.jsx("div",{className:n("tllm-pulse rounded-md bg-panel-2",e),...t})}export{p as B,m as E,u as S};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as a}from"./index-
|
|
1
|
+
import{c as a}from"./index-DdsLEQg8.js";const e=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],l=a("sparkles",e);export{l as S};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as a}from"./index-
|
|
1
|
+
import{c as a}from"./index-DdsLEQg8.js";const t=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],o=a("trash-2",t);export{o as T};
|
package/dist/webdist/index.html
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<meta name="theme-color" content="#c96442" />
|
|
10
10
|
<meta name="description" content="TurboLLM - a local-LLM platform: run any GGUF model with a fast browser UI and an OpenAI/Anthropic-compatible API." />
|
|
11
11
|
<title>TurboLLM</title>
|
|
12
|
-
<script type="module" crossorigin src="/assets/index-
|
|
12
|
+
<script type="module" crossorigin src="/assets/index-DdsLEQg8.js"></script>
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/vendor-D_-14Whs.js">
|
|
14
14
|
<link rel="modulepreload" crossorigin href="/assets/radix-BFvMxQq9.js">
|
|
15
15
|
<link rel="stylesheet" crossorigin href="/assets/index-BklQn62W.css">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "turbollm",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "TurboLLM — local LLM platform: run any inference engine auto-tuned to your GPU, with a web UI and OpenAI/Anthropic-compatible API. Point Claude Code at your own machine in one command.",
|
|
5
5
|
"license": "FSL-1.1-ALv2",
|
|
6
6
|
"author": "Mohit Soni",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c}from"./index-sjgdofsd.js";const e=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],t=c("check",e);export{t as C};
|