libre-webui 0.19.1 → 0.19.2
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/backend/dist/db.d.ts.map +1 -1
- package/backend/dist/db.js +2 -0
- package/backend/dist/db.js.map +1 -1
- package/backend/dist/routes/chat.d.ts.map +1 -1
- package/backend/dist/routes/chat.js +41 -3
- package/backend/dist/routes/chat.js.map +1 -1
- package/backend/dist/services/assistantCompletionService.d.ts +2 -1
- package/backend/dist/services/assistantCompletionService.d.ts.map +1 -1
- package/backend/dist/services/assistantCompletionService.js +3 -1
- package/backend/dist/services/assistantCompletionService.js.map +1 -1
- package/backend/dist/services/chatGenerationService.d.ts +2 -1
- package/backend/dist/services/chatGenerationService.d.ts.map +1 -1
- package/backend/dist/services/chatGenerationService.js +18 -4
- package/backend/dist/services/chatGenerationService.js.map +1 -1
- package/backend/dist/services/pluginService.d.ts.map +1 -1
- package/backend/dist/services/pluginService.js +3 -1
- package/backend/dist/services/pluginService.js.map +1 -1
- package/backend/dist/services/preferencesService.d.ts.map +1 -1
- package/backend/dist/services/preferencesService.js +1 -0
- package/backend/dist/services/preferencesService.js.map +1 -1
- package/backend/dist/storage.d.ts.map +1 -1
- package/backend/dist/storage.js +6 -3
- package/backend/dist/storage.js.map +1 -1
- package/backend/dist/storageMappers.d.ts +1 -0
- package/backend/dist/storageMappers.d.ts.map +1 -1
- package/backend/dist/storageMappers.js +3 -0
- package/backend/dist/storageMappers.js.map +1 -1
- package/backend/dist/types/index.d.ts +4 -0
- package/backend/dist/types/index.d.ts.map +1 -1
- package/backend/dist/types/index.js.map +1 -1
- package/backend/dist/utils/chatContext.d.ts +1 -1
- package/backend/dist/utils/chatContext.d.ts.map +1 -1
- package/backend/dist/utils/chatContext.js +4 -0
- package/backend/dist/utils/chatContext.js.map +1 -1
- package/backend/dist/utils/ollamaStreaming.d.ts +1 -0
- package/backend/dist/utils/ollamaStreaming.d.ts.map +1 -1
- package/backend/dist/utils/ollamaStreaming.js +16 -3
- package/backend/dist/utils/ollamaStreaming.js.map +1 -1
- package/backend/dist/utils/pluginChatAdapter.d.ts +2 -0
- package/backend/dist/utils/pluginChatAdapter.d.ts.map +1 -1
- package/backend/dist/utils/pluginChatAdapter.js +9 -1
- package/backend/dist/utils/pluginChatAdapter.js.map +1 -1
- package/backend/dist/utils/pluginResponse.d.ts +2 -0
- package/backend/dist/utils/pluginResponse.d.ts.map +1 -1
- package/backend/dist/utils/pluginResponse.js +29 -0
- package/backend/dist/utils/pluginResponse.js.map +1 -1
- package/backend/dist/utils/pluginStreamAdapter.d.ts.map +1 -1
- package/backend/dist/utils/pluginStreamAdapter.js +5 -1
- package/backend/dist/utils/pluginStreamAdapter.js.map +1 -1
- package/backend/dist/utils/pluginStreaming.d.ts +1 -0
- package/backend/dist/utils/pluginStreaming.d.ts.map +1 -1
- package/backend/dist/utils/pluginStreaming.js +17 -0
- package/backend/dist/utils/pluginStreaming.js.map +1 -1
- package/backend/dist/utils/thinkingPhaseTimer.d.ts +2 -0
- package/backend/dist/utils/thinkingPhaseTimer.d.ts.map +1 -1
- package/backend/dist/utils/thinkingPhaseTimer.js +12 -0
- package/backend/dist/utils/thinkingPhaseTimer.js.map +1 -1
- package/backend/dist/utils/websocketMessages.d.ts +2 -0
- package/backend/dist/utils/websocketMessages.d.ts.map +1 -1
- package/backend/dist/utils/websocketMessages.js.map +1 -1
- package/backend/dist/websocketServer.d.ts.map +1 -1
- package/backend/dist/websocketServer.js +24 -4
- package/backend/dist/websocketServer.js.map +1 -1
- package/backend/package.json +1 -1
- package/frontend/dist/assets/index-B9H3vQ-n.css +1 -0
- package/frontend/dist/assets/index-D4LhtFTX.js +38 -0
- package/frontend/dist/index.html +9 -9
- package/frontend/dist/js/{ArtifactContainer-CBTr5mSK.js → ArtifactContainer-DvuGeXXu.js} +1 -1
- package/frontend/dist/js/{ArtifactDemoPage-0BLd-m3N.js → ArtifactDemoPage-BlVBMy6a.js} +1 -1
- package/frontend/dist/js/{ArtifactSlideOutPanel-DjGIUKtP.js → ArtifactSlideOutPanel-CaPMk1Qj.js} +1 -1
- package/frontend/dist/js/ChatPage-D4UBhGLk.js +16 -0
- package/frontend/dist/js/{FirstTimeSetup-CZKfjAkx.js → FirstTimeSetup-DJiDNTXY.js} +1 -1
- package/frontend/dist/js/{GalleryPage-DH-KEeIZ.js → GalleryPage-BnaFZERr.js} +1 -1
- package/frontend/dist/js/HomePage-BvpoUzGG.js +1 -0
- package/frontend/dist/js/{LibreClawPage-B_eC8oQo.js → LibreClawPage-B-6rO5Jl.js} +1 -1
- package/frontend/dist/js/{ModelSelector-DwhKmtQx.js → ModelSelector-BV1kuaVg.js} +1 -1
- package/frontend/dist/js/{ModelsPage-DQm2DgF3.js → ModelsPage-D5H70fs3.js} +1 -1
- package/frontend/dist/js/NotesPage-D9b3JxCx.js +1 -0
- package/frontend/dist/js/{PersonasPage-DpHCAyoD.js → PersonasPage-CJOGnyQV.js} +2 -2
- package/frontend/dist/js/{PluginUsagePage-Cd5MJbLi.js → PluginUsagePage-DHNMWquK.js} +1 -1
- package/frontend/dist/js/{RichMessageContent-B1bidjA8.js → RichMessageContent-C7NG7gs-.js} +1 -1
- package/frontend/dist/js/SettingsModal-DEBxDPne.js +1 -0
- package/frontend/dist/js/{SystemPage-CUfqMR-l.js → SystemPage-BsPen2Qb.js} +1 -1
- package/frontend/dist/js/{UserManagementPage-5ZGnsxNF.js → UserManagementPage-I9i5r0V3.js} +1 -1
- package/frontend/dist/js/{WorkPage-ShAy19E2.js → WorkPage-e30yqvJe.js} +3 -3
- package/frontend/dist/js/{api-CI1Inz7g.js → api-jwjnjqx6.js} +2 -2
- package/frontend/dist/js/{appStore-wGpPGj47.js → appStore-CLIS0fvz.js} +2 -2
- package/frontend/dist/js/{ar-ONXFvOB1.js → ar-B_uYj5Gv.js} +1 -1
- package/frontend/dist/js/{authStore-D-d7UIpv.js → authStore-CsCkBmaG.js} +1 -1
- package/frontend/dist/js/{bn-BLhREPm6.js → bn-Pd4HHYsG.js} +1 -1
- package/frontend/dist/js/chatStore-DRY8C0J1.js +2 -0
- package/frontend/dist/js/{cs-Bg8E9fG5.js → cs-CgVXogHE.js} +1 -1
- package/frontend/dist/js/{da-ODCU8w4x.js → da-DTUIrClO.js} +1 -1
- package/frontend/dist/js/{de-nuGHRJ5N.js → de-CKITtmnY.js} +1 -1
- package/frontend/dist/js/{es-DcN_cwum.js → es-DKDhsL9J.js} +1 -1
- package/frontend/dist/js/{estree-vPoIgYRx.js → estree-CrfVSazx.js} +1 -1
- package/frontend/dist/js/{fr-C-L_xGr5.js → fr-CUvNp0pc.js} +1 -1
- package/frontend/dist/js/{hi-DUEtwA9G.js → hi-Bwdmc__g.js} +1 -1
- package/frontend/dist/js/{html-_taODyXh.js → html-BbJLJMaV.js} +1 -1
- package/frontend/dist/js/{i18n-xir4Zz7C.js → i18n-ZJQSoIuM.js} +2 -2
- package/frontend/dist/js/{id-DNTYhti_.js → id-CWTPw3NJ.js} +1 -1
- package/frontend/dist/js/{is-Bx28ymbQ.js → is-4dV6F4Bo.js} +1 -1
- package/frontend/dist/js/{it-BjW-JLlS.js → it-8uw2-j2s.js} +1 -1
- package/frontend/dist/js/{ja-uThj4Q1w.js → ja-Bl7gd3kp.js} +1 -1
- package/frontend/dist/js/{ko-DqgmMYXK.js → ko-C_CYwJnL.js} +1 -1
- package/frontend/dist/js/{markdown-CLKggXc3.js → markdown-DiMg1QLf.js} +1 -1
- package/frontend/dist/js/messageCodeStyles-CfzjQF-R.js +2 -0
- package/frontend/dist/js/{ms-R9kt_P0T.js → ms-Dznw3AkA.js} +1 -1
- package/frontend/dist/js/{nl-BjmtEgpK.js → nl-fW-4lPWK.js} +1 -1
- package/frontend/dist/js/{pl-C8_gU9r1.js → pl-CanprK04.js} +1 -1
- package/frontend/dist/js/{pt-7BJForUD.js → pt-JhTaVvKa.js} +1 -1
- package/frontend/dist/js/{ru-D2HmhY6Y.js → ru-uPtHQATq.js} +1 -1
- package/frontend/dist/js/{standalone-53qXRmN5.js → standalone-Vs6LnjM6.js} +1 -1
- package/frontend/dist/js/{sv-zny3sDBM.js → sv-yr6iqxR-.js} +1 -1
- package/frontend/dist/js/{th-CAzEKRz8.js → th-Bx4U5yKy.js} +1 -1
- package/frontend/dist/js/{tr-BmYgtmUo.js → tr-C7tCwYuZ.js} +1 -1
- package/frontend/dist/js/{typescript-C6-ED_Fw.js → typescript-BhVG1zGU.js} +1 -1
- package/frontend/dist/js/{ui-BXTx1csA.js → ui-Dj9IFugT.js} +2 -2
- package/frontend/dist/js/{uk-eiYZ0uRq.js → uk-C4SbiAUn.js} +1 -1
- package/frontend/dist/js/{vi-C7SVAWpO.js → vi-C3-TmuzC.js} +1 -1
- package/frontend/dist/js/{zh-2Q3cQv3s.js → zh-CRfqIC_I.js} +1 -1
- package/package.json +1 -1
- package/frontend/dist/assets/index-BA116EVY.js +0 -11
- package/frontend/dist/assets/index-CFhy8YLA.css +0 -1
- package/frontend/dist/js/ChatPage-BgLadsgU.js +0 -16
- package/frontend/dist/js/HomePage-C4TJCwU6.js +0 -1
- package/frontend/dist/js/NotesPage-pNuo3BZp.js +0 -1
- package/frontend/dist/js/SettingsModal-ZbZKdZcC.js +0 -1
- package/frontend/dist/js/chatStore-BaX22w_g.js +0 -2
- package/frontend/dist/js/messageCodeStyles-B0BoOSOR.js +0 -2
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/api-CI1Inz7g.js","js/rolldown-runtime-hePW80VL.js","js/router-vendor-Ca9zqOqT.js","js/markdown-core-DHnR5Hw8.js","js/utils-vendor-1zob7nK9.js","js/logger-DSXjF4ye.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{i as e}from"./router-vendor-Ca9zqOqT.js";import{Tn as t}from"./ui-vendor-D_pYT79f.js";import{o as n}from"./utils-vendor-1zob7nK9.js";import{t as r}from"./logger-DSXjF4ye.js";import{c as i,l as a,p as o,u as s,x as c}from"./api-CI1Inz7g.js";import{r as l}from"./utils-BhpNrGnR.js";var u=[`Chat`,`Image`,`Video`,`Audio`,`Speech`,`Transcription`,`Embedding`],d={chat:`Chat`,completion:`Chat`,embedding:`Embedding`,image:`Image`,audio:`Audio`,stt:`Transcription`,tts:`Speech`,video:`Video`},f={completion:`Chat`,embedding:`Embedding`,image:`Image`,audio:`Audio`,stt:`Transcription`,tts:`Speech`,video:`Video`};function p(e){let t=new Map,n=(e,n)=>{for(let r of e||[]){if(typeof r!=`string`||!r.trim())continue;let e=r.trim(),i=t.get(e)??new Set;i.add(n),t.set(e,i)}};n(e.model_map,d[e.type]);for(let t of Object.keys(e.capabilities||{}))n(e.capabilities?.[t]?.model_map,f[t]);return Array.from(t,([e,t])=>({id:e,capabilities:u.filter(e=>t.has(e))}))}function m(e){return e.type===`chat`||e.type===`completion`}var h=[`dall-e`,`embed`,`gpt-image`,`moderation`,`rerank`,`sora`,`stable-diffusion`,`text-to-speech`,`tts`,`whisper`];function g(e){let t=e.toLocaleLowerCase();return!h.some(e=>t.includes(e))}function _(e){let t=new Set;for(let[n,r]of Object.entries(e.capabilities||{}))if(n!==`completion`)for(let e of r?.model_map||[])t.add(e.trim());return(e.model_map||[]).filter(e=>typeof e==`string`&&e.trim().length>0&&!t.has(e.trim())&&g(e))}function v(e,t){let n=t.trim().toLocaleLowerCase();return!n||[e.name,e.id,e.type,...p(e).map(e=>e.id)].some(e=>e?.toLocaleLowerCase().includes(n))}var y=(e,t)=>{if(e&&typeof e==`object`&&`response`in e){let t=e;if(t.response?.data?.error)return t.response.data.error}return e instanceof Error?e.message:t};function b(e){return{...e,id:e.id||l(),timestamp:Date.now()}}function x(e,t){return e.currentSession?.isPrivate&&e.currentSession?.id===t}function S(e,t){return e.sessions.some(e=>e.id===t)}function C(e,t){return!!e.currentSession&&(x(e,t)||S(e,e.currentSession.id))}function w(e,t,n){if(x(e,t))return e.currentSession.messages.find(e=>e.id===n.id)?e:{currentSession:{...e.currentSession,messages:[...e.currentSession.messages,n],updatedAt:Date.now()},sessions:e.sessions};if(e.sessions.find(e=>e.id===t)?.messages.some(e=>e.id===n.id))return e;let r=e.sessions.map(e=>{if(e.id!==t)return e;let r=[...e.messages];if(n.parentId){let e=n.parentId;r=r.map(t=>t.id!==e&&t.parentId!==e?t:{...t,isActive:!1,branchIndex:t.branchIndex??0,siblingCount:(n.branchIndex||0)+1})}return{...e,messages:[...r,n],updatedAt:Date.now()}});return{sessions:r,currentSession:e.currentSession?.id===t&&r.find(e=>e.id===t)||e.currentSession}}function T(e,t,n,r){if(e.currentSession?.id!==t)return e;if(e.currentSession?.isPrivate){let t=e.currentSession.messages.find(e=>e.id===n);return!t||t.content===r?e:{sessions:e.sessions,currentSession:{...e.currentSession,messages:e.currentSession.messages.map(e=>e.id===n?{...e,content:r}:e),updatedAt:Date.now()}}}let i=e.sessions.find(e=>e.id===t),a=i?.messages.find(e=>e.id===n);if(!i||!a||a.content===r)return e;let o=e.sessions.map(e=>e.id===t?{...e,messages:e.messages.map(e=>e.id===n?{...e,content:r}:e),updatedAt:Date.now()}:e);return{sessions:o,currentSession:e.currentSession?.id===t&&o.find(e=>e.id===t)||e.currentSession}}function E(e,t,n,r,i,a){if(e.currentSession?.id!==t)return e;if(e.currentSession?.isPrivate)return{sessions:e.sessions,currentSession:{...e.currentSession,messages:e.currentSession.messages.map(e=>e.id===n?{...e,content:r,statistics:i,...a?{providerMetadata:a}:{}}:e),updatedAt:Date.now()}};let o=e.sessions.map(e=>e.id===t?{...e,messages:e.messages.map(e=>e.id===n?{...e,content:r,statistics:i,...a?{providerMetadata:a}:{}}:e),updatedAt:Date.now()}:e);return{sessions:o,currentSession:e.currentSession?.id===t&&o.find(e=>e.id===t)||e.currentSession}}function D(e){return e.reduce((e,t)=>(e[t.id]=t,e),{})}function O(e){return e.map(e=>({name:`persona:${e.id}`,model:e.model,size:0,digest:``,details:{parent_model:e.model,format:`persona`,family:`persona`,families:[`persona`],parameter_size:``,quantization_level:``},modified_at:new Date(e.updated_at).toISOString(),expires_at:new Date().toISOString(),size_vram:0,isPersona:!0,personaName:e.name,personaDescription:e.description}))}function k(e){return e.filter(e=>e.active&&e.type!==`tts`&&e.type!==`image`).flatMap(e=>_(e).map(t=>({name:t,model:t,size:0,digest:``,details:{parent_model:``,format:``,family:``,families:[],parameter_size:``,quantization_level:``},modified_at:new Date().toISOString(),expires_at:new Date().toISOString(),size_vram:0,isPlugin:!0,pluginId:e.id,pluginName:e.name})))}var A=`persona:`,j=`plugin:`,M=`ollama:`,N=`legacy:`,P=`agent:`,F=e=>{try{return decodeURIComponent(e)}catch{return null}};function I(e){return e.isLegacySelection?{model:e.name,providerType:null,providerId:null}:e.isPersona?{model:e.name,providerType:`ollama`,providerId:null}:e.isPlugin&&e.pluginId?{model:e.name,providerType:`plugin`,providerId:e.pluginId}:e.isAgent?{model:e.name,providerType:`agent`,providerId:e.agentId||e.name}:{model:e.name,providerType:`ollama`,providerId:null}}function L(e){return e.providerType?e.providerType===`plugin`&&e.providerId?`${j}${encodeURIComponent(e.providerId)}:${encodeURIComponent(e.model)}`:e.providerType===`agent`&&e.providerId?`${P}${encodeURIComponent(e.providerId)}:${encodeURIComponent(e.model)}`:e.providerType===`ollama`&&e.model.startsWith(A)?`${A}${encodeURIComponent(e.model.slice(8))}`:e.providerType===`ollama`?`${M}${encodeURIComponent(e.model)}`:`${N}${encodeURIComponent(e.model)}`:`${N}${encodeURIComponent(e.model)}`}function R(e){return L(I(e))}function z(e){if(e.startsWith(A)){let t=F(e.slice(8));return t===null?null:{model:`${A}${t}`,providerType:`ollama`,providerId:null}}if(e.startsWith(j)){let t=e.slice(7),n=t.indexOf(`:`);if(n<1)return null;let r=F(t.slice(0,n)),i=F(t.slice(n+1));return r&&i?{model:i,providerType:`plugin`,providerId:r}:null}if(e.startsWith(P)){let t=e.slice(6),n=t.indexOf(`:`);if(n<1)return null;let r=F(t.slice(0,n)),i=F(t.slice(n+1));return r&&i?{model:i,providerType:`agent`,providerId:r}:null}if(e.startsWith(M)){let t=F(e.slice(7));return t?{model:t,providerType:`ollama`,providerId:null}:null}if(e.startsWith(N)){let t=F(e.slice(7));return t?{model:t,providerType:null,providerId:null}:null}return null}function B(e,t){return t.providerType===`plugin`?e.find(e=>e.isPlugin&&e.pluginId===t.providerId&&e.name===t.model):t.providerType===`agent`?e.find(e=>e.isAgent&&e.name===t.model):t.providerType===`ollama`?t.model.startsWith(A)?e.find(e=>e.isPersona&&e.name===t.model):e.find(e=>!e.isPlugin&&!e.isPersona&&e.name===t.model):e.find(e=>e.isLegacySelection&&e.name===t.model)??e.find(e=>e.name===t.model)}function V(e,t){if(!t.providerType)return L(t);let n=B(e,t);return n?R(n):L(t)}function H(e,t){let n=e.find(e=>R(e)===t);return n?I(n):z(t)}function U(e){return!e.isPlugin&&!e.isPersona&&!e.isAgent&&!e.isLegacySelection&&!e.isUnavailable}function W(e,t){return t.model?!!B(e.filter(e=>!e.isLegacySelection&&!e.isUnavailable),t):!1}function G(e,t){if(!t.model)return e;if(!t.providerType){if(e.some(e=>e.isLegacySelection&&e.name===t.model))return e;let n=!!B(e,t);return[...e,{name:t.model,model:t.model,size:0,digest:``,modified_at:``,details:{},isLegacySelection:!0,isUnavailable:!n}]}if(B(e,t))return e;let n=t.providerType,r=n===`ollama`&&t.model.startsWith(A),i=n===`plugin`&&t.providerId||void 0;return[...e,{name:t.model,model:t.model,size:0,digest:``,modified_at:``,details:{},isPlugin:n===`plugin`,pluginId:i,pluginName:i,isAgent:n===`agent`,agentId:n===`agent`&&t.providerId||void 0,isPersona:r,personaName:r?t.model.slice(8):void 0,isUnavailable:!0}]}var K=r(`chat-store`),q=n((n,r)=>({sessions:[],currentSession:null,setCurrentSession:e=>{n({currentSession:e})},createSession:async(e,r,i,a,o)=>{try{n({loading:!0,error:null});let s=await c.createSession(e,r,i,a,o);if(s.success&&s.data){let e=s.data;return n(t=>({sessions:[e,...t.sessions],currentSession:e,loading:!1})),t.success(`New chat created`),e}}catch(e){let r=y(e,`Failed to create session`);n({error:r,loading:!1}),t.error(r)}},loadSessions:async()=>{try{n({loading:!0,error:null});let e=await c.getSessions();e.success&&e.data&&n(t=>{let n=e.data||[],r=n.map(e=>e.id),i=null;return t.currentSession?.isPrivate?i=t.currentSession:t.currentSession&&r.includes(t.currentSession.id)?i=n.find(e=>e.id===t.currentSession.id)||null:n.length>0&&(i=n[0],t.currentSession&&K.warn(`Previous currentSession not found in backend sessions:`,t.currentSession.id)),{sessions:n,currentSession:i,loading:!1}})}catch(e){let r=y(e,`Failed to load sessions`);n({error:r,loading:!1}),t.error(r)}},deleteSession:async e=>{try{let r=await c.deleteSession(e);r.success?(n(t=>{let n=t.sessions.filter(t=>t.id!==e),r=t.currentSession?.id===e?n[0]||null:t.currentSession;return K.debug(`Store: Updating state, sessions count:`,n.length),{sessions:n,currentSession:r}}),t.success(`Chat deleted`)):(K.error(`Store: deleteSession failed:`,r),t.error(`Failed to delete chat`))}catch(e){K.error(`Store: deleteSession error:`,e);let n=y(e,`Failed to delete session`);t.error(n)}},clearAllSessions:async()=>{try{n({loading:!0,error:null});let e=await c.clearAllSessions();e.success?(n({sessions:[],currentSession:null,loading:!1}),t.success(`All chat history cleared`)):(K.error(`Store: clearAllSessions failed:`,e),t.error(`Failed to clear chat history`),n({loading:!1}))}catch(e){K.error(`Store: clearAllSessions error:`,e);let r=y(e,`Failed to clear chat history`);t.error(r),n({loading:!1})}},clearAllState:()=>{n({sessions:[],currentSession:null,models:[],selectedModel:``,selectedProviderType:null,selectedProviderId:null,systemMessage:``,loading:!1,error:null})},applySessionTitle:(e,t,r=Date.now())=>{n(n=>({sessions:n.sessions.map(n=>n.id===e?{...n,title:t,updatedAt:r}:n),currentSession:n.currentSession?.id===e?{...n.currentSession,title:t,updatedAt:r}:n.currentSession}))},updateSessionTitle:async(e,n)=>{try{let i=await c.updateSession(e,{title:n});if(i.success&&i.data){let n=i.data.title,a=i.data.updatedAt??Date.now();r().applySessionTitle(e,n,a),t.success(`Chat title updated`)}}catch(e){let n=y(e,`Failed to update session`);t.error(n)}},addMessage:(e,i)=>{let a=r(),o=x(a,e);if(!C(a,e)){t.error(`No valid chat session. Please create or select a chat.`),K.error(`addMessage blocked: currentSession is not valid`,a.currentSession?.id);return}if(!o&&!S(a,e)){t.error(`Session not found or invalid. Please select or create a valid chat session.`),K.error(`addMessage blocked: sessionId not found in sessions`,e);return}let s=b(i);n(t=>w(t,e,s))},updateMessage:(e,t,r)=>{n(n=>T(n,e,t,r))},updateMessageWithStatistics:(e,t,r,i,a)=>{n(n=>E(n,e,t,r,i,a))},rateMessage:async(e,t,i)=>{let a=e=>e.map(e=>e.id===t?{...e,rating:i}:e),o=r().currentSession?.isPrivate;if(n(t=>({sessions:t.sessions.map(t=>t.id===e?{...t,messages:a(t.messages)}:t),currentSession:t.currentSession?.id===e?{...t.currentSession,messages:a(t.currentSession.messages)}:t.currentSession})),!o)try{await c.updateMessage(e,t,{rating:i??null})}catch(e){K.error(`Failed to save message rating:`,e)}},folders:[],loadFolders:async()=>{try{let e=await c.getFolders();e.success&&e.data&&n({folders:e.data})}catch(e){K.error(`Failed to load folders:`,e)}},createFolder:async e=>{try{let t=await c.createFolder(e);if(t.success&&t.data){let e=t.data;return n(t=>({folders:[...t.folders,e].sort((e,t)=>e.name.localeCompare(t.name))})),e}}catch(e){K.error(`Failed to create folder:`,e)}},renameFolder:async(e,t)=>{try{let r=await c.renameFolder(e,t);if(r.success&&r.data){let t=r.data;n(n=>({folders:n.folders.map(n=>n.id===e?t:n).sort((e,t)=>e.name.localeCompare(t.name))}))}}catch(e){K.error(`Failed to rename folder:`,e)}},deleteFolder:async e=>{try{(await c.deleteFolder(e)).success&&n(t=>({folders:t.folders.filter(t=>t.id!==e),sessions:t.sessions.map(t=>t.folderId===e?{...t,folderId:null}:t),currentSession:t.currentSession?.folderId===e?{...t.currentSession,folderId:null}:t.currentSession}))}catch(e){K.error(`Failed to delete folder:`,e)}},moveSessionToFolder:async(e,t)=>{n(n=>({sessions:n.sessions.map(n=>n.id===e?{...n,folderId:t}:n),currentSession:n.currentSession?.id===e?{...n.currentSession,folderId:t}:n.currentSession}));try{await c.updateSession(e,{folderId:t})}catch(e){K.error(`Failed to move session to folder:`,e)}},setSessionArchived:async(e,t)=>{n(n=>({sessions:n.sessions.map(n=>n.id===e?{...n,archived:t}:n),currentSession:n.currentSession?.id===e?{...n.currentSession,archived:t}:n.currentSession}));try{await c.updateSession(e,{archived:t})}catch(r){K.error(`Failed to update session archive state:`,r),n(n=>({sessions:n.sessions.map(n=>n.id===e?{...n,archived:!t}:n)}))}},truncateMessagesFrom:(e,t)=>{let r=e=>{let n=e.findIndex(e=>e.id===t);return n===-1?e:e.slice(0,n)};n(t=>({sessions:t.sessions.map(t=>t.id===e?{...t,messages:r(t.messages),updatedAt:Date.now()}:t),currentSession:t.currentSession?.id===e?{...t.currentSession,messages:r(t.currentSession.messages),updatedAt:Date.now()}:t.currentSession}))},models:[],loadModels:async()=>{try{n({loading:!0,error:null}),K.debug(`Loading models from API...`);let s=[],c;try{let e=await o.getModels();e.success&&e.data?(s=[...e.data],K.debug(`Ollama models loaded:`,e.data.length)):c=Error(e.error||e.message||`Ollama models are unavailable.`)}catch(e){c=e,K.warn(`Ollama models are unavailable; continuing with plugin models:`,e)}try{let e=await a.getAllPlugins();if(e.success&&e.data){let t=e.data.filter(e=>e.active&&e.type!==`tts`&&e.type!==`image`);K.debug(`🔌 Active plugins found:`,t.map(e=>e.name));let n=k(t);s.push(...n),K.debug(`Plugin models added:`,n.length)}}catch(e){K.error(`❌ Failed to load plugin models:`,e),e instanceof Error&&K.error(`❌ Plugin error details:`,{message:e.message,response:e.response?.data,status:e.response?.status,url:e.config?.url})}try{let{agentCliApi:t}=await e(async()=>{let{agentCliApi:e}=await import(`./api-CI1Inz7g.js`).then(e=>e.t);return{agentCliApi:e}},__vite__mapDeps([0,1,2,3,4,5])),n=await t.getModels();if(n.success&&n.data){let e=n.data.map(e=>({name:e.id,model:e.id,size:0,digest:``,modified_at:``,details:{},isAgent:!0,agentName:e.name,agentId:e.agentId}));s.push(...e),K.debug(`Agent CLI models added:`,e.length)}}catch(e){K.warn(`Agent CLI models unavailable:`,e)}let l=s.length;try{let{personaApi:t}=await e(async()=>{let{personaApi:e}=await import(`./api-CI1Inz7g.js`).then(e=>e.t);return{personaApi:e}},__vite__mapDeps([0,1,2,3,4,5])),r=await t.getPersonas();if(r.success&&r.data){let e=D(r.data),t=O(r.data);s.push(...t),n(t=>({...t,personas:e}))}}catch(e){K.error(`❌ Failed to load personas:`,e)}K.debug(`Total models loaded:`,s.length);let u=l===0&&c?y(c,`No model provider is available`):null,d=r(),f=d.selectedModel,p={model:f,providerType:d.selectedProviderType,providerId:d.selectedProviderId},m=!!B(s,p),h=d.selectedProviderType===`ollama`||d.selectedProviderType===`plugin`;if(f&&!m&&h){let e=`Selected model "${f}" is unavailable from ${d.selectedProviderType===`plugin`?d.selectedProviderId||`plugin`:`Ollama`}. Reactivate that provider or select another model.`;n({models:s,loading:!1,error:e}),t.error(e);return}if(f&&!m&&s.length>0){let e=I(s[0]);K.debug(`⚠️ Legacy selected model "${f}" no longer available, falling back to "${e.model}"`),n({models:s,loading:!1,selectedModel:e.model,selectedProviderType:e.providerType||null,selectedProviderId:e.providerId||null,error:u}),i.setDefaultModel(e.model,e.providerType,e.providerId).catch(e=>{K.warn(`Failed to save fallback default model:`,e)}),t.success(`Switched to ${e.model} (previous model no longer available)`)}else n({models:s,loading:!1,error:u});u&&t.error(u)}catch(e){K.error(`Error loading models:`,e);let r=y(e,`Failed to load models`);n({error:r,loading:!1}),t.error(r)}},loadPreferences:async()=>{try{let e=await i.getPreferences();if(e.success&&e.data){let{defaultModel:t,defaultProviderType:r,defaultProviderId:i,systemMessage:a}=e.data;t&&(n({selectedModel:t,selectedProviderType:r||null,selectedProviderId:r===`plugin`&&i||null}),K.debug(`✅ Loaded default model from backend:`,t)),a!==void 0&&(n({systemMessage:a}),K.debug(`✅ Loaded system message from backend`))}}catch(e){K.warn(`❌ Failed to load preferences from backend:`,e)}},selectedModel:``,selectedProviderType:null,selectedProviderId:null,setSelectedModel:(e,t=null,r=null)=>{let a=(t===`plugin`||t===`agent`)&&r||null;n({selectedModel:e,selectedProviderType:t,selectedProviderId:a}),i.setDefaultModel(e,t,a).catch(e=>{K.warn(`Failed to save default model to backend:`,e)})},updateCurrentSessionModel:async(e,i=null,a=null)=>{let o=r();if(!o.currentSession)throw Error(`No current session to update`);try{let r=await c.updateSession(o.currentSession.id,{model:e,providerType:i,providerId:i===`plugin`||i===`agent`?a:null});r.success&&r.data&&(n(t=>({sessions:t.sessions.map(e=>e.id===t.currentSession?.id?r.data:e),currentSession:r.data,selectedModel:e,selectedProviderType:i,selectedProviderId:(i===`plugin`||i===`agent`)&&a||null})),t.success(`Model updated for current chat`))}catch(e){let n=y(e,`Failed to update session model`);throw t.error(n),e}},personas:{},loadPersonas:async()=>{try{n({loading:!0,error:null});let e=await s.getPersonas();if(e.success&&e.data){let t=e.data;n({personas:D(t),loading:!1}),K.debug(`✅ Personas loaded:`,t.length)}}catch(e){let t=y(e,`Failed to load personas`);n({error:t,loading:!1}),K.error(`❌ Failed to load personas:`,t)}},getCurrentPersona:()=>{let e=r();if(!e.currentSession||!e.currentSession.model?.startsWith(`persona:`))return null;let t=e.currentSession.model.replace(`persona:`,``);return e.personas[t]||null},systemMessage:``,setSystemMessage:e=>{let t=r();if(n({systemMessage:e}),i.setSystemMessage(e).catch(e=>{K.warn(`Failed to save system message to backend:`,e)}),t.currentSession){let r=t.currentSession.messages.findIndex(e=>e.role===`system`);if(r!==-1){n(t=>{let n=t.sessions.map(n=>{if(n.id===t.currentSession?.id){let t=n.messages.map((t,n)=>n===r&&t.role===`system`?{...t,content:e,timestamp:Date.now()}:t);return{...n,messages:t,updatedAt:Date.now()}}return n});return{sessions:n,currentSession:t.currentSession?n.find(e=>e.id===t.currentSession.id)||t.currentSession:null}});let i=t.currentSession.messages[r];c.updateMessage(t.currentSession.id,i.id,{content:e}).catch(e=>{K.warn(`Failed to sync system message update to backend:`,e)}),K.debug(`✅ Updated system message in current session`)}}},loading:!1,error:null,setError:e=>n({error:e}),generatingTitleForSession:null,setGeneratingTitleForSession:e=>n({generatingTitleForSession:e}),...typeof window<`u`&&{testPluginApi:async()=>{try{K.debug(`🧪 Testing plugin API...`);let e=await a.getAllPlugins();return K.debug(`✅ Plugin API test result:`,e),e}catch(e){return K.error(`❌ Plugin API test failed:`,e),{error:e}}}}}));export{V as a,W as c,p as d,v as f,I as i,G as l,R as n,B as o,m as p,H as r,U as s,q as t,y as u};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{d as t,f as n}from"./markdown-core-DHnR5Hw8.js";import{t as r}from"./useTranslation-CdeLZqSW.js";import{Gt as i,Ht as a,Jt as o,Rt as s,en as c,on as l,tn as u}from"./ui-vendor-D_pYT79f.js";import{t as d}from"./logger-DSXjF4ye.js";import{r as f}from"./utils-BhpNrGnR.js";import{t as p}from"./appStore-wGpPGj47.js";var m=[/^ {0,3}(?:`{3,}|~{3,})/m,/`[^`\n]+`/,/^\s{0,3}#{1,6}\s/m,/^\s{0,3}[-*+]\s/m,/^\s{0,3}\d+\.\s/m,/^\s{0,3}>\s/m,/\[[^\]]+\]\([^)]+\)/,/!\[[^\]]*]\([^)]+\)/,/\|.*\|/,/\*\*[^*]+\*\*/,/__[^_]+__/,/~~[^~]+~~/,/\\\[[\s\S]*?\\\]/,/\\\([\s\S]*?\\\)/,/\$\$[\s\S]*?\$\$/,/(^|[^$])\$[^$\n]+\$/],h=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);function g(e){let t=[],n=/^( {0,3})(`{3,}|~{3,})([^\n\r]*)(?:\r?\n|$)/gm,r;for(;r=n.exec(e);){let i=r[1].length,a=r[2],o=a[0],s=r[3].trim();if(o==="`"&&s.includes("`"))continue;let c=n.lastIndex,l=RegExp(`^ {0,3}${h(o)}{${a.length},}[ \\t]*(?:\\r?\\n|$)`,`gm`);l.lastIndex=c;let u=l.exec(e),d=s.split(/\s+/)[0]||null;if(!u){t.push({start:r.index,end:e.length,codeStart:c,codeEnd:e.length,indent:i,language:d,complete:!1});break}t.push({start:r.index,end:l.lastIndex,codeStart:c,codeEnd:u.index,indent:i,language:d,complete:!0}),n.lastIndex=l.lastIndex}return t}function _(e){return/<(?:html|head|body)(?:\s|>)|<\/(?:head|body|html)\s*>/i.test(e)}function v(e,t){return e.start<t.end&&t.start<e.end}function y(e,t){let n=/^( {0,3})(<!doctype\s+html(?:\s|>|$)|<html(?:\s[^>\n\r]*)?>)/gim,r;for(;r=n.exec(e);){let n=r.index+r[1].length;if(t.some(e=>n>=e.start&&n<e.end))continue;let i=e.slice(n);if(!_(i.slice(r[2].length)))continue;let a=/<\/html\s*>/i.exec(i),o=a?n+a.index+a[0].length:e.length;return{start:r.index,end:o,codeStart:n,codeEnd:o,indent:0,language:`html`,complete:!!a}}return null}function b(e){let t=g(e),n=y(e,t);return n?[...t.filter(e=>!v(e,n)),n].sort((e,t)=>e.start-t.start):t}function x(e,t){return t===0?e:e.replace(RegExp(`^ {1,${t}}`,`gm`),``)}function S(e){return m.some(t=>t.test(e))}function C(e){let t=[],n=b(e),r=0;for(let i of n){let n=e.slice(r,i.start);n&&t.push({type:`text`,content:n}),t.push({type:`code`,language:i.language,content:x(e.slice(i.codeStart,i.codeEnd),i.indent),complete:i.complete}),r=i.end}let i=e.slice(r);return(i||t.length===0)&&t.push({type:`text`,content:i}),t}function w(e){let t=e=>e.replace(/\\\[([\s\S]*?)\\\]/g,(e,t)=>`$$${t}$$`).replace(/\\\(([\s\S]*?)\\\)/g,(e,t)=>`$${t}$`),n=e=>{let n=/`[^`\n]+`/g,r=``,i=0,a;for(;a=n.exec(e);)r+=t(e.slice(i,a.index)),r+=a[0],i=n.lastIndex;return r+t(e.slice(i))},r=g(e),i=``,a=0;for(let t of r)i+=n(e.slice(a,t.start)),i+=e.slice(t.start,t.end),a=t.end;return i+=n(e.slice(a)),i}var T=e(n(),1),E=t(),D=d(`components:ui:message-code-block`),O=24,k={bash:`sh`,c:`c`,cpp:`cpp`,csharp:`cs`,css:`css`,go:`go`,html:`html`,htm:`html`,java:`java`,javascript:`js`,js:`js`,json:`json`,jsx:`jsx`,kotlin:`kt`,markdown:`md`,mermaid:`mmd`,php:`php`,python:`py`,py:`py`,ruby:`rb`,rust:`rs`,sh:`sh`,shell:`sh`,sql:`sql`,svg:`svg`,swift:`swift`,toml:`toml`,ts:`ts`,tsx:`tsx`,typescript:`ts`,xml:`xml`,yaml:`yaml`,yml:`yaml`,zsh:`sh`};function A(e,t){let n=(e||``).toLowerCase();if(n===`html`||n===`htm`)return`html`;if(n===`svg`)return`svg`;if(n===`mermaid`)return`mermaid`;let r=t.slice(0,500).toLowerCase();return(!n||n===`xml`)&&r.includes(`<svg`)?`svg`:!n&&(r.includes(`<!doctype html`)||r.includes(`<html`))?`html`:null}function j({code:e,language:t,state:n,children:d}){let{t:m}=r(),h=p(e=>e.openArtifactPanel),[g,_]=T.useState(null),[v,y]=T.useState(null),b=T.useRef(null),x=g===e,S=t||`text`,C=m(x?`artifacts.copied`:`artifacts.copy`),w=`${C}: ${S}`,j=T.useMemo(()=>e?e.split(`
|
|
2
|
-
`).length:0,[e]),M=v===null?n===`complete`&&j>O:!v,N=n===`complete`?A(t,e):null;return T.useEffect(()=>()=>{b.current!==null&&window.clearTimeout(b.current)},[]),(0,E.jsxs)(`div`,{dir:`ltr`,"data-testid":`code-block`,"data-state":n,"data-language":S,"data-collapsed":M,className:`group relative my-4 overflow-hidden rounded-xl border border-line bg-surface-subtle text-left text-ink shadow-[0_12px_32px_rgba(13,17,23,0.1)] dark:border-white/10 dark:bg-[#0D1117] dark:text-[#E6EDF3] dark:shadow-[0_12px_32px_rgba(13,17,23,0.16)]`,children:[(0,E.jsxs)(`div`,{className:`flex h-10 items-center justify-between border-b border-line bg-surface-raised/70 px-3.5 dark:border-white/10 dark:bg-white/[0.035]`,children:[(0,E.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,E.jsx)(o,{className:`h-3.5 w-3.5 shrink-0 text-ink-subtle dark:text-[#8B949E]`}),(0,E.jsx)(`span`,{className:`truncate font-mono text-[11px] font-medium lowercase tracking-[-0.01em] text-ink-muted dark:text-[#B1BAC4]`,children:S})]}),(0,E.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[n===`streaming`&&(0,E.jsx)(`span`,{role:`status`,"aria-label":m(`common.loading`),className:`flex h-7 w-7 items-center justify-center`,children:(0,E.jsx)(`span`,{className:`h-1.5 w-1.5 animate-pulse rounded-full bg-primary-400`})}),j>O&&(0,E.jsx)(`button`,{type:`button`,onClick:()=>y(M),className:`flex h-7 w-7 items-center justify-center rounded-md text-ink-subtle transition-colors hover:bg-surface-subtle hover:text-ink focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-400/70 dark:text-[#8B949E] dark:hover:bg-white/[0.08] dark:hover:text-[#E6EDF3]`,title:m(M?`artifacts.expand`:`artifacts.collapse`),"aria-label":m(M?`artifacts.expand`:`artifacts.collapse`),"aria-expanded":!M,children:M?(0,E.jsx)(c,{className:`h-3.5 w-3.5`}):(0,E.jsx)(u,{className:`h-3.5 w-3.5`})}),(0,E.jsx)(`button`,{type:`button`,onClick:()=>{if(!e)return;let n=k[(t||``).toLowerCase()]||`txt`,r=new Blob([e],{type:`text/plain;charset=utf-8`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=`snippet.${n}`,document.body.appendChild(a),a.click(),a.remove(),URL.revokeObjectURL(i)},disabled:!e,className:`flex h-7 w-7 items-center justify-center rounded-md text-ink-subtle transition-colors hover:bg-surface-subtle hover:text-ink focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-400/70 disabled:cursor-default disabled:opacity-35 dark:text-[#8B949E] dark:hover:bg-white/[0.08] dark:hover:text-[#E6EDF3]`,title:m(`common.download`),"aria-label":`${m(`common.download`)}: ${S}`,children:(0,E.jsx)(a,{className:`h-3.5 w-3.5`})}),N&&(0,E.jsx)(`button`,{type:`button`,onClick:()=>{if(!N||!e)return;let t=Date.now();h({id:f(),type:N,title:`${S} ${m(`artifacts.preview`)}`,content:e,language:S,createdAt:t,updatedAt:t})},className:`flex h-7 w-7 items-center justify-center rounded-md text-ink-subtle transition-colors hover:bg-surface-subtle hover:text-ink focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-400/70 dark:text-[#8B949E] dark:hover:bg-white/[0.08] dark:hover:text-[#E6EDF3]`,title:m(`artifacts.preview`),"aria-label":`${m(`artifacts.preview`)}: ${S}`,children:(0,E.jsx)(s,{className:`h-3.5 w-3.5`})}),(0,E.jsx)(`button`,{type:`button`,onClick:async()=>{if(e)try{await navigator.clipboard.writeText(e),_(e),b.current!==null&&window.clearTimeout(b.current),b.current=window.setTimeout(()=>{_(null),b.current=null},2e3)}catch(e){D.error(`Failed to copy code:`,e)}},disabled:!e,className:`flex h-7 w-7 items-center justify-center rounded-md text-ink-subtle transition-colors hover:bg-surface-subtle hover:text-ink focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-400/70 disabled:cursor-default disabled:opacity-35 dark:text-[#8B949E] dark:hover:bg-white/[0.08] dark:hover:text-[#E6EDF3]`,title:C,"aria-label":w,children:x?(0,E.jsx)(l,{className:`h-3.5 w-3.5 text-green-400`}):(0,E.jsx)(i,{className:`h-3.5 w-3.5`})}),(0,E.jsx)(`span`,{className:`sr-only`,"aria-live":`polite`,children:x?w:``})]})]}),M?(0,E.jsx)(`button`,{type:`button`,onClick:()=>y(!0),className:`block w-full px-3.5 py-2.5 text-left font-mono text-[11px] italic text-ink-subtle transition-colors hover:bg-surface-raised/70 hover:text-ink dark:text-[#8B949E] dark:hover:bg-white/[0.035] dark:hover:text-[#E6EDF3]`,children:m(`chatMessage.hiddenLines`,{count:j})}):d]})}var M=`#0D1117`,N=`rgb(var(--color-surface-subtle))`,P=`max-h-[60vh] min-h-12 overflow-auto bg-surface-subtle p-4 text-left font-mono text-[14px] leading-6 text-ink whitespace-pre tabular-nums dark:bg-[#0D1117] dark:text-[#E6EDF3]`,F={maxHeight:`60vh`,minHeight:`3rem`,overflow:`auto`,padding:`1rem`,fontSize:`14px`,lineHeight:`1.5rem`,fontFamily:`"JetBrains Mono", ui-monospace, SFMono-Regular, monospace`,whiteSpace:`pre`};export{j as a,S as c,F as i,N as n,C as o,P as r,w as s,M as t};
|