libre-webui 0.13.0 → 0.13.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.
Files changed (89) hide show
  1. package/backend/dist/index.js +1 -1
  2. package/backend/dist/index.js.map +1 -1
  3. package/backend/dist/routes/plugins.d.ts.map +1 -1
  4. package/backend/dist/routes/plugins.js +8 -7
  5. package/backend/dist/routes/plugins.js.map +1 -1
  6. package/backend/dist/routes/tts.d.ts.map +1 -1
  7. package/backend/dist/routes/tts.js +28 -7
  8. package/backend/dist/routes/tts.js.map +1 -1
  9. package/backend/dist/services/pluginCapabilityRegistryService.d.ts +1 -1
  10. package/backend/dist/services/pluginCapabilityRegistryService.d.ts.map +1 -1
  11. package/backend/dist/services/pluginCapabilityRegistryService.js +10 -5
  12. package/backend/dist/services/pluginCapabilityRegistryService.js.map +1 -1
  13. package/backend/dist/services/pluginService.d.ts +8 -3
  14. package/backend/dist/services/pluginService.d.ts.map +1 -1
  15. package/backend/dist/services/pluginService.js +74 -54
  16. package/backend/dist/services/pluginService.js.map +1 -1
  17. package/backend/dist/services/pluginTTSService.d.ts +4 -2
  18. package/backend/dist/services/pluginTTSService.d.ts.map +1 -1
  19. package/backend/dist/services/pluginTTSService.js +25 -31
  20. package/backend/dist/services/pluginTTSService.js.map +1 -1
  21. package/backend/dist/services/preferencesService.d.ts.map +1 -1
  22. package/backend/dist/services/preferencesService.js +6 -1
  23. package/backend/dist/services/preferencesService.js.map +1 -1
  24. package/backend/dist/types/index.d.ts +2 -0
  25. package/backend/dist/types/index.d.ts.map +1 -1
  26. package/backend/dist/types/index.js.map +1 -1
  27. package/backend/dist/utils/packagePaths.d.ts +1 -0
  28. package/backend/dist/utils/packagePaths.d.ts.map +1 -1
  29. package/backend/dist/utils/packagePaths.js +22 -0
  30. package/backend/dist/utils/packagePaths.js.map +1 -1
  31. package/backend/package.json +1 -1
  32. package/frontend/dist/assets/index-BJsjOpGD.css +1 -0
  33. package/frontend/dist/assets/index-DgL4shIj.js +5 -0
  34. package/frontend/dist/index.html +5 -5
  35. package/frontend/dist/js/{ArtifactContainer-DYmgznWk.js → ArtifactContainer-urMJnZ_h.js} +1 -1
  36. package/frontend/dist/js/{ArtifactDemoPage-D9cUJCUT.js → ArtifactDemoPage-CVxPfyus.js} +1 -1
  37. package/frontend/dist/js/ArtifactSlideOutPanel-MP4ap9If.js +1 -0
  38. package/frontend/dist/js/{Button-Cgmt_2gR.js → Button-BZBnLKRn.js} +1 -1
  39. package/frontend/dist/js/ChatPage-D35quAJJ.js +16 -0
  40. package/frontend/dist/js/{FirstTimeSetup-BO1IPnfI.js → FirstTimeSetup-B9NVXnGv.js} +1 -1
  41. package/frontend/dist/js/{GalleryPage-B2hhzIun.js → GalleryPage-BNdUukNh.js} +1 -1
  42. package/frontend/dist/js/LibreClawPage-D_N9GBg7.js +1 -0
  43. package/frontend/dist/js/{ModelManagerModals-CSGR9o2J.js → ModelManagerModals-C7wlZoV2.js} +1 -1
  44. package/frontend/dist/js/{ModelsPage-CpVM6Qhl.js → ModelsPage-1ykVyEI4.js} +2 -2
  45. package/frontend/dist/js/{OptimizedSyntaxHighlighter-CNjLqj1Z.js → OptimizedSyntaxHighlighter-Fr-hsdRj.js} +1 -1
  46. package/frontend/dist/js/{PersonasPage-CwqOhNVH.js → PersonasPage-Dg1AQ0e8.js} +2 -2
  47. package/frontend/dist/js/RichMessageContent-tAv_35Ur.js +3 -0
  48. package/frontend/dist/js/SettingsModal-BRQcVyKI.js +1 -0
  49. package/frontend/dist/js/{UserManagementPage-C0bC1w1D.js → UserManagementPage-CA15W6yb.js} +1 -1
  50. package/frontend/dist/js/{api-D9FuobIF.js → api-BsUaU_IW.js} +3 -3
  51. package/frontend/dist/js/{ar-CQheG5xK.js → ar-CxLY7ABG.js} +1 -1
  52. package/frontend/dist/js/{bn-BVXljlpH.js → bn-DREExDzT.js} +1 -1
  53. package/frontend/dist/js/{cs-BgyyXudt.js → cs-LDpGwqlb.js} +1 -1
  54. package/frontend/dist/js/{da-Dk83-zzY.js → da-Csupo97j.js} +1 -1
  55. package/frontend/dist/js/{de-B9SDOxyQ.js → de-EOghQcPX.js} +1 -1
  56. package/frontend/dist/js/{es-DMlNf0tc.js → es-CiX_CYKt.js} +1 -1
  57. package/frontend/dist/js/{fr-DtOoKP26.js → fr-1IIacQYp.js} +1 -1
  58. package/frontend/dist/js/{hi-wuG6Draz.js → hi-DGT4fx6S.js} +1 -1
  59. package/frontend/dist/js/{id-CT2rnPXt.js → id-0UGudeEI.js} +1 -1
  60. package/frontend/dist/js/{is-Cfy2VWp5.js → is-BQzgz0LG.js} +1 -1
  61. package/frontend/dist/js/{it-vgQmoI8w.js → it-3PfovgDw.js} +1 -1
  62. package/frontend/dist/js/{ja-B8pVsr1R.js → ja-BaXdHNz8.js} +1 -1
  63. package/frontend/dist/js/{ko-CTERnuAH.js → ko-DNqxLzw3.js} +1 -1
  64. package/frontend/dist/js/{ms-BGmwAKcP.js → ms-D_X86VRO.js} +1 -1
  65. package/frontend/dist/js/{nl-CKLRry0w.js → nl-B832wh-7.js} +1 -1
  66. package/frontend/dist/js/{pl-DRWZS4lz.js → pl-BDMgy2lk.js} +1 -1
  67. package/frontend/dist/js/{pt-Dua6AStw.js → pt-CbhjHMrx.js} +1 -1
  68. package/frontend/dist/js/{ru-B6MEHobb.js → ru-CEe0KRO9.js} +1 -1
  69. package/frontend/dist/js/{sv-Bg1rkqPN.js → sv-BWwpkP0M.js} +1 -1
  70. package/frontend/dist/js/{th-Nz5BELCH.js → th-Dm5aEMnB.js} +1 -1
  71. package/frontend/dist/js/{tr-7Nyg2UmX.js → tr-DMaVgSRT.js} +1 -1
  72. package/frontend/dist/js/{uk-DUAnc6NJ.js → uk-Cu1mMWfT.js} +1 -1
  73. package/frontend/dist/js/useBaseQuery-DDZrESRv.js +1 -0
  74. package/frontend/dist/js/useQuery-BFOeNWc6.js +1 -0
  75. package/frontend/dist/js/utils-D0l9J3P-.js +1 -0
  76. package/frontend/dist/js/{vi-BOpghAsX.js → vi-B_DGmAUD.js} +1 -1
  77. package/frontend/dist/js/{zh-lCo3TiLV.js → zh-DIKyA5Kk.js} +1 -1
  78. package/package.json +5 -4
  79. package/scripts/postinstall.js +54 -0
  80. package/frontend/dist/assets/index-j-Q57B_D.css +0 -1
  81. package/frontend/dist/assets/index-pmlsmnQ4.js +0 -5
  82. package/frontend/dist/js/ArtifactSlideOutPanel-DlS_laML.js +0 -1
  83. package/frontend/dist/js/ChatPage-CQ0V4ote.js +0 -16
  84. package/frontend/dist/js/LibreClawPage-Bs8vK_yo.js +0 -1
  85. package/frontend/dist/js/RichMessageContent-DH5WM9fX.js +0 -3
  86. package/frontend/dist/js/SettingsModal-DzkKC4ks.js +0 -1
  87. package/frontend/dist/js/useBaseQuery-D0MMQYNQ.js +0 -1
  88. package/frontend/dist/js/useQuery-B2OUd39C.js +0 -1
  89. package/frontend/dist/js/utils-BaPYjs_z.js +0 -1
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-pmlsmnQ4.js","js/rolldown-runtime-QTnfLwEv.js","js/markdown-core-fkbHPd-g.js","js/react-vendor-Co1u1rWb.js","js/logger-BmpKNkls.js","js/demoMode-BhEpMVh5.js","js/ui-vendor-njo77ljx.js","js/utils-vendor-BX3ZwoIK.js","js/utils-BaPYjs_z.js","js/Button-Cgmt_2gR.js","assets/index-j-Q57B_D.css"])))=>i.map(i=>d[i]);
2
- import{n as e}from"./rolldown-runtime-QTnfLwEv.js";import{n as t,r as n,t as r}from"./logger-BmpKNkls.js";import{a as i}from"./utils-vendor-BX3ZwoIK.js";import{n as a}from"./demoMode-BhEpMVh5.js";var o=r(`config`),s=window.location.protocol===`file:`?`http://localhost:3001/api`:`${window.location.origin}/api`,c=t(),l=()=>{c&&(o.debug(`API_BASE_URL configured as:`,s),o.debug(`Window location:`,window.location),o.debug(`Environment variables:`,{BASE_URL:`/`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_APP_VERSION:`0.13.0`}))},u=r(`api`);l(),u.debug(`User agent:`,navigator.userAgent),u.debug(`Demo mode detected:`,a());var d=(e,t=!0)=>new Promise(n=>{setTimeout(()=>{n({success:t,data:e,error:t?void 0:`Demo mode: Backend not available`})},500)}),f=i.create({baseURL:s,timeout:3e5});f.interceptors.request.use(e=>{let t=localStorage.getItem(`auth-token`);return t&&(e.headers.Authorization=`Bearer ${t}`),e},e=>Promise.reject(e)),f.interceptors.response.use(e=>e,e=>{if(e.response?.status===401){u.warn(`Session expired or unauthorized, logging out...`),localStorage.removeItem(`auth-token`),n(async()=>{let{useAuthStore:e}=await import(`../assets/index-pmlsmnQ4.js`).then(e=>e.b);return{useAuthStore:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10])).then(({useAuthStore:e})=>{e.getState().logout()});let e=window.location.protocol===`file:`;return(e?window.location.hash:window.location.pathname).includes(`/login`)||(window.location.href=e?`#/login`:`/login`),Promise.reject(Error(`Session expired`))}return u.error(`API Error:`,e),Promise.reject(e)});var p=`0.13.0`,m={login:e=>a()?d({user:{id:`demo-user`,username:`demo`,email:`demo@example.com`,role:`admin`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()},token:`demo-token`,systemInfo:{requiresAuth:!0,hasUsers:!0,userCount:1,allowUserModelPull:!0,version:p}}):f.post(`/auth/login`,e).then(e=>e.data),signup:e=>a()?d({user:{id:`demo-user-new`,username:e.username,email:e.email||``,role:`user`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()},token:`demo-token-new`,systemInfo:{requiresAuth:!0,hasUsers:!0,userCount:1,allowUserModelPull:!0,version:p,turnstile:{enabled:!1}}}):f.post(`/auth/signup`,e).then(e=>e.data),logout:()=>a()?d(void 0):f.post(`/auth/logout`).then(e=>e.data),getSystemInfo:()=>(u.debug(`getSystemInfo called, demo mode:`,a()),a()?d({requiresAuth:!0,hasUsers:!0,userCount:1,allowUserModelPull:!0,version:p,turnstile:{enabled:!1}}):(u.debug(`Making API call to:`,s+`/auth/system-info`),u.debug(`Full URL from:`,window.location.origin,`-> API:`,s+`/auth/system-info`),f.get(`/auth/system-info`).then(e=>(u.debug(`getSystemInfo response:`,e.data),e.data)).catch(e=>{throw u.debug(`getSystemInfo error:`,e),e.response&&(u.debug(`Error response data:`,e.response.data),u.debug(`Error status:`,e.response.status),u.debug(`Error headers:`,e.response.headers)),e.request&&u.debug(`Network error - no response received:`,e.request),u.debug(`Error config:`,e.config),e}))),verifyToken:()=>a()?d({id:`demo-user`,username:`demo`,email:`demo@example.com`,role:`admin`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):f.get(`/auth/verify`).then(e=>e.data),getEncryptionKey:()=>a()?d({encryptionKey:`demo-encryption-key-not-real`}):f.get(`/auth/encryption-key`).then(e=>e.data),updateModelPullSetting:e=>a()?d({requiresAuth:!0,hasUsers:!0,userCount:1,allowUserModelPull:e,version:p,turnstile:{enabled:!1}}):f.patch(`/auth/system-settings/model-pull`,{allowUserModelPull:e}).then(e=>e.data)},h={getUsers:()=>a()?d([{id:`demo-user`,username:`demo`,email:`demo@example.com`,role:`admin`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}]):f.get(`/users`).then(e=>e.data),createUser:e=>a()?d({id:`new-user-`+Date.now(),username:e.username,email:e.email,role:e.role,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):f.post(`/users`,e).then(e=>e.data),updateUser:(e,t)=>a()?d({id:e,username:t.username||`demo`,email:t.email||`demo@example.com`,role:t.role||`user`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):f.patch(`/users/${e}`,t).then(e=>e.data),deleteUser:e=>a()?d(void 0):f.delete(`/users/${e}`).then(e=>e.data),updateMyAvatar:e=>a()?d({id:`demo-user`,username:`demo`,email:`demo@example.com`,role:`admin`,avatar:e,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):f.patch(`/users/me/avatar`,{avatar:e}).then(e=>e.data)},g=[{name:`llama3.2:3b`,size:2048e6,digest:`demo-digest-1`,modified_at:new Date().toISOString(),details:{format:`gguf`,family:`llama`,families:[`llama`],parameter_size:`3B`,quantization_level:`Q4_0`}},{name:`qwen2.5:7b`,size:4096e6,digest:`demo-digest-2`,modified_at:new Date().toISOString(),details:{format:`gguf`,family:`qwen`,families:[`qwen`],parameter_size:`7B`,quantization_level:`Q4_0`}}],_=()=>[{id:`demo-session-1`,title:`Demo Chat Session`,model:g[0].name,messages:[{id:`demo-msg-1`,role:`user`,content:`Hello! Can you tell me about this demo?`,timestamp:Date.now()},{id:`demo-msg-2`,role:`assistant`,content:`This is a demo of Libre WebUI! In a real deployment, I would be powered by Ollama running locally on your machine. This demo shows the beautiful interface and features without the backend connection.`,timestamp:Date.now()}],createdAt:Date.now(),updatedAt:Date.now()}],v=_(),y={theme:{mode:`dark`,accent:`blue`,customAccent:`#2563eb`},defaultModel:`llama3.2:3b`,systemMessage:`You are a helpful assistant.`,generationOptions:{temperature:.7,top_p:.9,top_k:40,num_predict:1024},embeddingSettings:{enabled:!1,model:`nomic-embed-text`,chunkSize:1e3,chunkOverlap:200,similarityThreshold:.7},titleSettings:{autoTitle:!1,taskModel:``},showUsername:!1,backgroundSettings:{enabled:!1,imageUrl:``,blurAmount:10,opacity:.6}},b={...y,theme:{...y.theme},generationOptions:{...y.generationOptions},embeddingSettings:{...y.embeddingSettings},titleSettings:{...y.titleSettings},backgroundSettings:{...y.backgroundSettings}},x=()=>b,S=e=>{let t=b.backgroundSettings||y.backgroundSettings;return b={...b,...e,theme:{...b.theme,...e.theme},generationOptions:{...b.generationOptions,...e.generationOptions},embeddingSettings:{...b.embeddingSettings,...e.embeddingSettings},titleSettings:e.titleSettings?{...b.titleSettings||y.titleSettings,...e.titleSettings}:b.titleSettings,backgroundSettings:e.backgroundSettings?{...t,...e.backgroundSettings}:b.backgroundSettings},b},C={getSessions:()=>f.get(`/chat/sessions`).then(e=>e.data),createSession:(e,t,n)=>f.post(`/chat/sessions`,{model:e,title:t,personaId:n}).then(e=>e.data),getSession:e=>{if(a()){let t=_().find(t=>t.id===e);return t?d(t):Promise.resolve({success:!1,error:`Session not found in demo mode`})}return f.get(`/chat/sessions/${e}`).then(e=>e.data)},updateSession:(e,t)=>{if(a()){let n=v.findIndex(t=>t.id===e),r=v[n];if(r){let e={...r,...t,updatedAt:Date.now()};return v[n]=e,d(e)}return Promise.resolve({success:!1,error:`Session not found in demo mode`})}return f.put(`/chat/sessions/${e}`,t).then(e=>e.data)},deleteSession:e=>a()?d(null):f.delete(`/chat/sessions/${e}`).then(e=>e.data),clearAllSessions:()=>f.delete(`/chat/sessions`).then(e=>e.data),generateTitle:(e,t,n)=>a()?d({title:n.substring(0,30)+(n.length>30?`...`:``)}):f.post(`/chat/sessions/${e}/generate-title`,{model:t,message:n}).then(e=>e.data),sendMessage:(e,t,n)=>f.post(`/chat/sessions/${e}/messages`,{content:t,options:n}).then(e=>e.data),saveMessage:(e,t)=>f.post(`/chat/sessions/${e}/messages`,t).then(e=>e.data),updateMessage:(e,t,n)=>a()?d({}):f.put(`/chat/sessions/${e}/messages/${t}`,n).then(e=>e.data),generateChatResponse:(e,t,n)=>f.post(`/chat/sessions/${e}/generate`,{message:t,options:n}).then(e=>e.data),generateChatStreamResponse:(e,t,n)=>({subscribe:async(r,i,a)=>{try{let o=await fetch(`${s}/chat/sessions/${e}/generate/stream`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({message:t,options:n})});if(!o.ok)throw Error(`HTTP error! status: ${o.status}`);let c=o.body?.getReader();if(!c)throw Error(`No response body reader available`);let l=new TextDecoder,d=``,f=()=>{c.read().then(({done:e,value:t})=>{if(e){a?.();return}d+=l.decode(t,{stream:!0});let n=d.split(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DgL4shIj.js","js/rolldown-runtime-QTnfLwEv.js","js/markdown-core-fkbHPd-g.js","js/react-vendor-Co1u1rWb.js","js/logger-BmpKNkls.js","js/demoMode-BhEpMVh5.js","js/ui-vendor-njo77ljx.js","js/utils-vendor-BX3ZwoIK.js","js/utils-D0l9J3P-.js","js/Button-BZBnLKRn.js","assets/index-BJsjOpGD.css"])))=>i.map(i=>d[i]);
2
+ import{n as e}from"./rolldown-runtime-QTnfLwEv.js";import{n as t,r as n,t as r}from"./logger-BmpKNkls.js";import{a as i}from"./utils-vendor-BX3ZwoIK.js";import{n as a}from"./demoMode-BhEpMVh5.js";var o=r(`config`),s=window.location.protocol===`file:`?`http://localhost:3001/api`:`${window.location.origin}/api`,c=t(),l=()=>{c&&(o.debug(`API_BASE_URL configured as:`,s),o.debug(`Window location:`,window.location),o.debug(`Environment variables:`,{BASE_URL:`/`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_APP_VERSION:`0.13.2`}))},u=r(`api`);l(),u.debug(`User agent:`,navigator.userAgent),u.debug(`Demo mode detected:`,a());var d=(e,t=!0)=>new Promise(n=>{setTimeout(()=>{n({success:t,data:e,error:t?void 0:`Demo mode: Backend not available`})},500)}),f=i.create({baseURL:s,timeout:3e5});f.interceptors.request.use(e=>{let t=localStorage.getItem(`auth-token`);return t&&(e.headers.Authorization=`Bearer ${t}`),e},e=>Promise.reject(e)),f.interceptors.response.use(e=>e,e=>{if(e.response?.status===401){u.warn(`Session expired or unauthorized, logging out...`),localStorage.removeItem(`auth-token`),n(async()=>{let{useAuthStore:e}=await import(`../assets/index-DgL4shIj.js`).then(e=>e.b);return{useAuthStore:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10])).then(({useAuthStore:e})=>{e.getState().logout()});let e=window.location.protocol===`file:`;return(e?window.location.hash:window.location.pathname).includes(`/login`)||(window.location.href=e?`#/login`:`/login`),Promise.reject(Error(`Session expired`))}return u.error(`API Error:`,e),Promise.reject(e)});var p=`0.13.2`,m={login:e=>a()?d({user:{id:`demo-user`,username:`demo`,email:`demo@example.com`,role:`admin`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()},token:`demo-token`,systemInfo:{requiresAuth:!0,hasUsers:!0,userCount:1,allowUserModelPull:!0,version:p}}):f.post(`/auth/login`,e).then(e=>e.data),signup:e=>a()?d({user:{id:`demo-user-new`,username:e.username,email:e.email||``,role:`user`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()},token:`demo-token-new`,systemInfo:{requiresAuth:!0,hasUsers:!0,userCount:1,allowUserModelPull:!0,version:p,turnstile:{enabled:!1}}}):f.post(`/auth/signup`,e).then(e=>e.data),logout:()=>a()?d(void 0):f.post(`/auth/logout`).then(e=>e.data),getSystemInfo:()=>(u.debug(`getSystemInfo called, demo mode:`,a()),a()?d({requiresAuth:!0,hasUsers:!0,userCount:1,allowUserModelPull:!0,version:p,turnstile:{enabled:!1}}):(u.debug(`Making API call to:`,s+`/auth/system-info`),u.debug(`Full URL from:`,window.location.origin,`-> API:`,s+`/auth/system-info`),f.get(`/auth/system-info`).then(e=>(u.debug(`getSystemInfo response:`,e.data),e.data)).catch(e=>{throw u.debug(`getSystemInfo error:`,e),e.response&&(u.debug(`Error response data:`,e.response.data),u.debug(`Error status:`,e.response.status),u.debug(`Error headers:`,e.response.headers)),e.request&&u.debug(`Network error - no response received:`,e.request),u.debug(`Error config:`,e.config),e}))),verifyToken:()=>a()?d({id:`demo-user`,username:`demo`,email:`demo@example.com`,role:`admin`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):f.get(`/auth/verify`).then(e=>e.data),getEncryptionKey:()=>a()?d({encryptionKey:`demo-encryption-key-not-real`}):f.get(`/auth/encryption-key`).then(e=>e.data),updateModelPullSetting:e=>a()?d({requiresAuth:!0,hasUsers:!0,userCount:1,allowUserModelPull:e,version:p,turnstile:{enabled:!1}}):f.patch(`/auth/system-settings/model-pull`,{allowUserModelPull:e}).then(e=>e.data)},h={getUsers:()=>a()?d([{id:`demo-user`,username:`demo`,email:`demo@example.com`,role:`admin`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}]):f.get(`/users`).then(e=>e.data),createUser:e=>a()?d({id:`new-user-`+Date.now(),username:e.username,email:e.email,role:e.role,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):f.post(`/users`,e).then(e=>e.data),updateUser:(e,t)=>a()?d({id:e,username:t.username||`demo`,email:t.email||`demo@example.com`,role:t.role||`user`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):f.patch(`/users/${e}`,t).then(e=>e.data),deleteUser:e=>a()?d(void 0):f.delete(`/users/${e}`).then(e=>e.data),updateMyAvatar:e=>a()?d({id:`demo-user`,username:`demo`,email:`demo@example.com`,role:`admin`,avatar:e,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):f.patch(`/users/me/avatar`,{avatar:e}).then(e=>e.data)},g=[{name:`llama3.2:3b`,size:2048e6,digest:`demo-digest-1`,modified_at:new Date().toISOString(),details:{format:`gguf`,family:`llama`,families:[`llama`],parameter_size:`3B`,quantization_level:`Q4_0`}},{name:`qwen2.5:7b`,size:4096e6,digest:`demo-digest-2`,modified_at:new Date().toISOString(),details:{format:`gguf`,family:`qwen`,families:[`qwen`],parameter_size:`7B`,quantization_level:`Q4_0`}}],_=()=>[{id:`demo-session-1`,title:`Demo Chat Session`,model:g[0].name,messages:[{id:`demo-msg-1`,role:`user`,content:`Hello! Can you tell me about this demo?`,timestamp:Date.now()},{id:`demo-msg-2`,role:`assistant`,content:`This is a demo of Libre WebUI! In a real deployment, I would be powered by Ollama running locally on your machine. This demo shows the beautiful interface and features without the backend connection.`,timestamp:Date.now()}],createdAt:Date.now(),updatedAt:Date.now()}],v=_(),y={theme:{mode:`dark`,adaptToAccent:!1,accent:`blue`,customAccent:`#2563eb`},defaultModel:`llama3.2:3b`,systemMessage:`You are a helpful assistant.`,generationOptions:{temperature:.7,top_p:.9,top_k:40,num_predict:1024},embeddingSettings:{enabled:!1,model:`nomic-embed-text`,chunkSize:1e3,chunkOverlap:200,similarityThreshold:.7},titleSettings:{autoTitle:!1,taskModel:``},showUsername:!1,backgroundSettings:{enabled:!1,imageUrl:``,blurAmount:10,opacity:.6}},b={...y,theme:{...y.theme},generationOptions:{...y.generationOptions},embeddingSettings:{...y.embeddingSettings},titleSettings:{...y.titleSettings},backgroundSettings:{...y.backgroundSettings}},x=()=>b,S=e=>{let t=b.backgroundSettings||y.backgroundSettings;return b={...b,...e,theme:{...b.theme,...e.theme},generationOptions:{...b.generationOptions,...e.generationOptions},embeddingSettings:{...b.embeddingSettings,...e.embeddingSettings},titleSettings:e.titleSettings?{...b.titleSettings||y.titleSettings,...e.titleSettings}:b.titleSettings,backgroundSettings:e.backgroundSettings?{...t,...e.backgroundSettings}:b.backgroundSettings},b},C={getSessions:()=>f.get(`/chat/sessions`).then(e=>e.data),createSession:(e,t,n)=>f.post(`/chat/sessions`,{model:e,title:t,personaId:n}).then(e=>e.data),getSession:e=>{if(a()){let t=_().find(t=>t.id===e);return t?d(t):Promise.resolve({success:!1,error:`Session not found in demo mode`})}return f.get(`/chat/sessions/${e}`).then(e=>e.data)},updateSession:(e,t)=>{if(a()){let n=v.findIndex(t=>t.id===e),r=v[n];if(r){let e={...r,...t,updatedAt:Date.now()};return v[n]=e,d(e)}return Promise.resolve({success:!1,error:`Session not found in demo mode`})}return f.put(`/chat/sessions/${e}`,t).then(e=>e.data)},deleteSession:e=>a()?d(null):f.delete(`/chat/sessions/${e}`).then(e=>e.data),clearAllSessions:()=>f.delete(`/chat/sessions`).then(e=>e.data),generateTitle:(e,t,n)=>a()?d({title:n.substring(0,30)+(n.length>30?`...`:``)}):f.post(`/chat/sessions/${e}/generate-title`,{model:t,message:n}).then(e=>e.data),sendMessage:(e,t,n)=>f.post(`/chat/sessions/${e}/messages`,{content:t,options:n}).then(e=>e.data),saveMessage:(e,t)=>f.post(`/chat/sessions/${e}/messages`,t).then(e=>e.data),updateMessage:(e,t,n)=>a()?d({}):f.put(`/chat/sessions/${e}/messages/${t}`,n).then(e=>e.data),generateChatResponse:(e,t,n)=>f.post(`/chat/sessions/${e}/generate`,{message:t,options:n}).then(e=>e.data),generateChatStreamResponse:(e,t,n)=>({subscribe:async(r,i,a)=>{try{let o=await fetch(`${s}/chat/sessions/${e}/generate/stream`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({message:t,options:n})});if(!o.ok)throw Error(`HTTP error! status: ${o.status}`);let c=o.body?.getReader();if(!c)throw Error(`No response body reader available`);let l=new TextDecoder,d=``,f=()=>{c.read().then(({done:e,value:t})=>{if(e){a?.();return}d+=l.decode(t,{stream:!0});let n=d.split(`
3
3
  `);d=n.pop()||``;for(let e of n){let t=e.trim();if(t.startsWith(`data: `)){let e=t.slice(6);if(e===`[DONE]`){a?.();return}try{let t=JSON.parse(e);if(r(t),t.type===`done`||t.type===`error`){t.type===`error`?i?.(t.error):a?.();return}}catch(e){u.error(`Failed to parse SSE data:`,e)}}}f()}).catch(e=>{i?.(e instanceof Error?e:Error(String(e)))})};return f(),()=>c.cancel()}catch(e){return i?.(e instanceof Error?e:Error(String(e))),()=>{}}}}),getMessageBranches:(e,t)=>a()?d([]):f.get(`/chat/sessions/${e}/messages/${t}/branches`).then(e=>e.data),switchMessageBranch:(e,t,n)=>a()?d({}):f.post(`/chat/sessions/${e}/messages/${t}/branch`,{branchIndex:n}).then(e=>e.data),createMessageBranch:(e,t,n)=>a()?d({}):f.post(`/chat/sessions/${e}/messages/${t}/branches`,{...n}).then(e=>e.data)},w={uploadDocument:(e,t)=>{if(a())return d({id:`demo-doc-`+Date.now(),filename:e.name,fileType:e.name.endsWith(`.pdf`)?`pdf`:`txt`,size:e.size,sessionId:t,uploadedAt:Date.now()});let n=new FormData;return n.append(`document`,e),t&&n.append(`sessionId`,t),f.post(`/documents/upload`,n).then(e=>e.data)},getDocuments:e=>{if(a())return d([]);let t=e?`/documents/session/${e}`:`/documents`;return f.get(t).then(e=>e.data)},getDocument:e=>a()?d({id:e,filename:`demo-document.pdf`,fileType:`pdf`,size:1024,content:`Demo document content...`,uploadedAt:Date.now()}):f.get(`/documents/${e}`).then(e=>e.data),searchDocuments:(e,t,n)=>a()?d([]):f.post(`/documents/search`,{query:e,sessionId:t,limit:n}).then(e=>e.data),deleteDocument:e=>a()?d(void 0):f.delete(`/documents/${e}`).then(e=>e.data),getEmbeddingStatus:()=>a()?d({available:!1,model:`nomic-embed-text`,chunksWithEmbeddings:0,totalChunks:0}):f.get(`/documents/embeddings/status`).then(e=>e.data),regenerateEmbeddings:()=>a()?d(void 0):f.post(`/documents/embeddings/regenerate`).then(e=>e.data)},T={getModels:()=>a()?d([{id:`nomic-embed-text`,name:`nomic-embed-text`,description:`Ollama - Default embedding model`,provider:`ollama`,dimensions:0,isDetectedEmbedding:!0}]):f.get(`/embeddings/models`).then(e=>e.data)},E={getModels:e=>a()?d([{id:`meta-llama/Llama-3.3-70B-Instruct`,modelId:`meta-llama/Llama-3.3-70B-Instruct`,author:`meta-llama`,downloads:1e6,likes:5e3,tags:[`text-generation`,`llama`],pipeline_tag:`text-generation`,gated:!1}]):f.get(`/huggingface-hub/models`,{params:e}).then(e=>e.data),getTrending:e=>a()?d([]):f.get(`/huggingface-hub/trending`,{params:e}).then(e=>e.data),getModel:(e,t)=>a()?d({id:`${e}/${t}`,modelId:`${e}/${t}`,author:e,downloads:0,likes:0,tags:[],gated:!1}):f.get(`/huggingface-hub/models/${e}/${t}`).then(e=>e.data),getTasks:()=>a()?d([`text-generation`,`text-to-speech`,`text-to-image`]):f.get(`/huggingface-hub/tasks`).then(e=>e.data),clearCache:()=>a()?d(!0):f.post(`/huggingface-hub/cache/clear`).then(e=>e.data),getGgufFiles:(e,t)=>a()?d([{filename:`model-Q4_K_M.gguf`,size:45e8,sizeFormatted:`4.19 GB`,quantization:`Q4_K_M`,url:`https://huggingface.co/${e}/${t}/resolve/main/model-Q4_K_M.gguf`,ollamaCommand:`hf.co/${e}/${t}:Q4_K_M`}]):f.get(`/huggingface-hub/models/${e}/${t}/gguf`).then(e=>e.data),hasGgufFiles:(e,t)=>a()?d({hasGguf:!1,count:0}):f.get(`/huggingface-hub/models/${e}/${t}/has-gguf`).then(e=>e.data)},D={getModels:()=>a()?d([{model:`dall-e-3`,plugin:`openai`,config:{sizes:[`1024x1024`,`1792x1024`,`1024x1792`],default_size:`1024x1024`,qualities:[`standard`,`hd`],default_quality:`standard`,styles:[`vivid`,`natural`],default_style:`vivid`,max_prompt_length:4e3}}]):f.get(`/image-gen/models`).then(e=>e.data),getPlugins:()=>a()?d([{id:`openai`,name:`OpenAI DALL-E`,models:[`dall-e-3`,`dall-e-2`],config:{sizes:[`1024x1024`,`1792x1024`,`1024x1792`],default_size:`1024x1024`,qualities:[`standard`,`hd`],default_quality:`standard`}}]):f.get(`/image-gen/plugins`).then(e=>e.data),getConfig:e=>a()?d({sizes:[`1024x1024`,`1792x1024`,`1024x1792`],default_size:`1024x1024`,qualities:[`standard`,`hd`],default_quality:`standard`,styles:[`vivid`,`natural`],default_style:`vivid`,max_prompt_length:4e3}):f.get(`/image-gen/config/${e}`).then(e=>e.data),generate:e=>a()?d({images:[{url:`https://placehold.co/1024x1024/purple/white?text=Demo+Image`,revised_prompt:e.prompt}]}):f.post(`/image-gen/generate`,e).then(e=>e.data),getGallery:e=>a()?d({images:[],total:0}):f.get(`/image-gen/gallery`,{params:e}).then(e=>e.data),getGalleryImage:e=>a()?d({id:e,userId:`demo`,prompt:`Demo image prompt`,model:`dall-e-3`,imageData:`https://placehold.co/1024x1024/purple/white?text=Demo`,createdAt:Date.now()}):f.get(`/image-gen/gallery/${e}`).then(e=>e.data),deleteGalleryImage:e=>a()?d(void 0):f.delete(`/image-gen/gallery/${e}`).then(e=>e.data)},O={connected:!1,baseUrl:`http://127.0.0.1:8766`,dashboardUrl:`http://127.0.0.1:8766/dashboard`,error:`Libre Claw daemon is not connected in demo mode.`},k={status:()=>a()?d(O):f.get(`/libre-claw/status`).then(e=>e.data),dashboard:()=>a()?d({url:O.dashboardUrl}):f.get(`/libre-claw/dashboard`).then(e=>e.data),currentModel:()=>a()?d({provider:`openrouter`,model:`openrouter/auto`}):f.get(`/libre-claw/config/model`).then(e=>e.data),updateModel:(e,t,n=!1)=>a()?d({provider:e,model:t,persist_global:n}):f.patch(`/libre-claw/config/model`,{provider:e,model:t,persist_global:n}).then(e=>e.data),currentFallback:()=>a()?d({enabled:!1,routes:[]}):f.get(`/libre-claw/config/fallback`).then(e=>e.data),updateFallback:e=>a()?d(e):f.patch(`/libre-claw/config/fallback`,e).then(e=>e.data),updateTheme:(e,t=!0)=>a()?d({theme:e,label:e,persist_global:t}):f.patch(`/libre-claw/config/theme`,{theme:e,persist_global:t}).then(e=>e.data),usage:(e=``,t=250)=>{let n=new URLSearchParams({limit:String(t)});return e&&n.set(`provider`,e),a()?d({summary:{},records:[],text:``}):f.get(`/libre-claw/usage?${n.toString()}`).then(e=>e.data)},listRuns:(e=20)=>a()?d({runs:[]}):f.get(`/libre-claw/runs?limit=${e}`).then(e=>e.data),startRun:e=>{if(a()){let t=new Date().toISOString();return d({run:{run_id:`demo-${Date.now()}`,state:`queued`,title:e.message.slice(0,80)||`Libre Claw demo run`,kind:e.kind||`chat`,provider:e.provider||`openrouter`,model:e.model||`openrouter/auto`,working_directory:``,created_at:t,updated_at:t}})}return f.post(`/libre-claw/runs`,e).then(e=>e.data)},getRun:e=>a()?d({run_id:e}):f.get(`/libre-claw/runs/${encodeURIComponent(e)}`).then(e=>e.data),getEvents:(e,t=0)=>a()?d({events:[]}):f.get(`/libre-claw/runs/${encodeURIComponent(e)}/events?after=${t}`).then(e=>e.data),cancelRun:e=>a()?d({run_id:e,cancelled:!0}):f.post(`/libre-claw/runs/${encodeURIComponent(e)}/cancel`).then(e=>e.data),resolvePermission:(e,t,n)=>a()?d({run_id:e,tool_call_id:t,resolution:n}):f.post(`/libre-claw/runs/${encodeURIComponent(e)}/permissions/${encodeURIComponent(t)}`,{resolution:n}).then(e=>e.data),listAutomations:(e=50)=>a()?d({automations:[]}):f.get(`/libre-claw/automations?limit=${e}`).then(e=>e.data),createAutomation:e=>a()?d({...e,automation_id:`demo-${Date.now()}`}):f.post(`/libre-claw/automations`,e).then(e=>e.data),updateAutomation:(e,t)=>a()?d({...t,automation_id:e}):f.patch(`/libre-claw/automations/${encodeURIComponent(e)}`,t).then(e=>e.data),pauseAutomation:e=>a()?d({automation_id:e,status:`paused`}):f.post(`/libre-claw/automations/${encodeURIComponent(e)}/pause`).then(e=>e.data),resumeAutomation:e=>a()?d({automation_id:e,status:`active`}):f.post(`/libre-claw/automations/${encodeURIComponent(e)}/resume`).then(e=>e.data),runAutomationNow:e=>a()?d({automation_id:e,run:!0}):f.post(`/libre-claw/automations/${encodeURIComponent(e)}/run`).then(e=>e.data),deleteAutomation:e=>a()?d({automation_id:e,deleted:!0}):f.delete(`/libre-claw/automations/${encodeURIComponent(e)}`).then(e=>e.data)},A={checkHealth:()=>a()?d({status:`offline`},!1):f.get(`/ollama/health`).then(e=>e.data),getModels:()=>a()?d(g):f.get(`/ollama/models`).then(e=>e.data),pullModel:e=>a()?d(null,!1):f.post(`/ollama/models/pull`,{name:e}).then(e=>e.data),pullModelStream:(e,t,n,r)=>{if(a()){let e=0,r=setInterval(()=>{e+=Math.random()*20,e>=100?(e=100,t({status:`success`,total:100,completed:100,percent:100}),clearInterval(r),setTimeout(n,500)):t({status:`pulling`,total:100,completed:e,percent:Math.round(e)})},1e3);return()=>clearInterval(r)}let i=new URLSearchParams({model:e}),o=localStorage.getItem(`auth-token`);o&&i.set(`token`,o);let c=new EventSource(`${s}/ollama/pull/stream?${i.toString()}`);return c.onmessage=e=>{let i=JSON.parse(e.data);switch(i.type){case`progress`:t({status:i.status,digest:i.digest,total:i.total,completed:i.completed,percent:i.percent});break;case`complete`:c.close(),n();break;case`error`:c.close(),r(i.error);break}},c.onerror=()=>{c.close(),r(`Connection to server lost`)},()=>{c.close()}},deleteModel:e=>a()?d(null,!1):f.delete(`/ollama/models`,{params:{name:e}}).then(e=>e.data),showModel:(e,t=!1)=>{if(a()){let t=g.find(t=>t.name===e);return d(t||null,!!t)}return f.get(`/ollama/models/show`,{params:{name:e,verbose:t}}).then(e=>e.data)},createModel:e=>a()?d(null,!1):f.post(`/ollama/models`,e).then(e=>e.data),copyModel:(e,t)=>a()?d(null,!1):f.post(`/ollama/models/copy`,{source:e,destination:t}).then(e=>e.data),pushModel:e=>a()?d(null,!1):f.post(`/ollama/models/push`,{name:e}).then(e=>e.data),pullAllModels:()=>a()?d(null,!1):f.post(`/ollama/models/pull-all`).then(e=>e.data),pullAllModelsStream:(e,t,n)=>{if(a()){let n=g,r=0,i=setInterval(()=>{r++,r<=n.length&&e({current:r,total:n.length,modelName:n[r-1]?.name||`demo-model`,status:Math.random()>.1?`success`:`error`,error:Math.random()>.1?void 0:`Demo error`}),r>=n.length&&(clearInterval(i),setTimeout(t,500))},1e3);return}let r=new EventSource(`${s}/ollama/models/pull-all/stream`);r.onmessage=i=>{let a=JSON.parse(i.data);switch(a.type){case`progress`:e({current:a.current,total:a.total,modelName:a.modelName,status:a.status,error:a.error});break;case`complete`:r.close(),t();break;case`error`:r.close(),n(a.error);break}},r.onerror=()=>{r.close(),n(`Connection to server lost`)}},generateEmbeddings:e=>a()?d({embeddings:[[]]},!1):f.post(`/ollama/embed`,e).then(e=>e.data),listRunningModels:()=>a()?d([]):f.get(`/ollama/running`).then(e=>e.data),unloadModel:e=>a()?d(null):f.post(`/ollama/models/unload`,{name:e}).then(e=>e.data),unloadAllModels:()=>a()?d(null):f.post(`/ollama/models/unload-all`).then(e=>e.data),getVersion:()=>a()?d({version:`demo-mode`},!1):f.get(`/ollama/version`).then(e=>e.data),chatCompletion:e=>a()?d({message:{content:`Demo response`,role:`assistant`}},!1):f.post(`/ollama/chat`,e).then(e=>e.data),checkBlobExists:e=>a()?Promise.resolve(!1):f.head(`/ollama/blobs/${e}`).then(()=>!0).catch(()=>!1),pushBlob:(e,t)=>a()?d(null,!1):f.post(`/ollama/blobs/${e}`,t,{headers:{"Content-Type":`application/octet-stream`}}).then(e=>e.data),generateLegacyEmbeddings:e=>a()?d({embedding:[]},!1):f.post(`/ollama/embeddings`,e).then(e=>e.data),getLibraryModels:e=>{if(a())return e?.category===`cloud`?d([{name:`gpt-oss:cloud`,description:`Demo cloud model using Ollama cloud naming`,category:`cloud`,sizes:[`cloud`],pulls:`Cloud`,tags:[`cloud`]}]):d([{name:`llama3.2`,description:`Meta's latest Llama model`,category:`general`,sizes:[`1b`,`3b`],pulls:`50M+`,tags:[`general`]},{name:`deepseek-r1`,description:`Open reasoning model`,category:`reasoning`,sizes:[`7b`,`14b`,`32b`],pulls:`200M+`,tags:[`reasoning`]}]);let t=new URLSearchParams;e?.search&&t.set(`search`,e.search),e?.sort&&t.set(`sort`,e.sort),e?.category&&t.set(`category`,e.category);let n=t.toString();return f.get(`/ollama/library${n?`?${n}`:``}`).then(e=>e.data)}},j=[[`#2563eb`,`#7c3aed`],[`#0891b2`,`#2563eb`],[`#0f766e`,`#2563eb`],[`#be123c`,`#7c3aed`],[`#b45309`,`#dc2626`]],M=e=>{let t=0;for(let n=0;n<e.length;n+=1)t=(t<<5)-t+e.charCodeAt(n),t|=0;return Math.abs(t)},N=e=>e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`),P=e=>{let t=e.trim().split(/[\s._-]+/).filter(Boolean);return t.length===0?`AI`:t.slice(0,2).map(e=>e[0]?.toUpperCase()).join(``)||`AI`},F=(e,t=128)=>{let n=e.trim()||`AI Persona`,r=M(n),[i,a]=j[r%j.length],o=N(P(n)),s=`persona-avatar-${r}-${t}`,c=t>=96?44:24,l=`
4
4
  <svg xmlns="http://www.w3.org/2000/svg" width="${t}" height="${t}" viewBox="0 0 ${t} ${t}" role="img" aria-label="${N(n)} avatar">
5
5
  <defs>
@@ -12,4 +12,4 @@ import{n as e}from"./rolldown-runtime-QTnfLwEv.js";import{n as t,r as n,t as r}f
12
12
  <circle cx="${t*.22}" cy="${t*.22}" r="${t*.26}" fill="rgba(255,255,255,0.16)" />
13
13
  <text x="50%" y="52%" dominant-baseline="middle" text-anchor="middle" fill="white" font-family="Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif" font-size="${c}" font-weight="700">${o}</text>
14
14
  </svg>
15
- `;return`data:image/svg+xml;charset=UTF-8,${encodeURIComponent(l)}`},I=(e,t=128)=>e.avatar?.trim()||F(e.name,t),L=(e,t,n=128)=>{e.onerror=null,e.src=F(t,n)},R={getPersonas:()=>a()?d([{id:`demo-1`,user_id:`default`,name:`Creative Assistant`,description:`Helpful assistant for creative tasks`,model:`llama3.3:latest`,parameters:{temperature:.8,top_p:.9,context_window:4096,system_prompt:`You are a creative and helpful assistant. Provide thoughtful and engaging responses.`},avatar:F(`Creative Assistant`,128),created_at:Date.now()-864e5,updated_at:Date.now()-864e5},{id:`demo-2`,user_id:`default`,name:`Research Assistant`,description:`Academic assistant for research and learning`,model:`qwen3:7b`,parameters:{temperature:.3,top_p:.8,context_window:8192,system_prompt:`You are a knowledgeable research assistant. Provide detailed, informative explanations.`},avatar:F(`Research Assistant`,128),created_at:Date.now()-1728e5,updated_at:Date.now()-1728e5}]):f.get(`/personas`).then(e=>e.data),getPersona:e=>a()?d({id:e,user_id:`default`,name:`Sample Assistant`,description:`A sample assistant for demonstration`,model:`llama3.2:latest`,parameters:{temperature:.7,top_p:.9,context_window:4096,system_prompt:`You are a helpful assistant.`},created_at:Date.now(),updated_at:Date.now()}):f.get(`/personas/${e}`).then(e=>e.data),createPersona:e=>a()?d({id:`demo-`+Date.now(),user_id:`default`,...e,created_at:Date.now(),updated_at:Date.now()}):f.post(`/personas`,e).then(e=>e.data),updatePersona:(e,t)=>a()?d({id:e,user_id:`default`,name:t.name||`Updated Sample Assistant`,description:t.description,model:t.model||`llama3.2:latest`,parameters:t.parameters||{temperature:.7,top_p:.9,context_window:4096,system_prompt:`You are a helpful assistant.`},avatar:t.avatar,background:t.background,created_at:Date.now()-864e5,updated_at:Date.now()}):f.put(`/personas/${e}`,t).then(e=>e.data),deletePersona:e=>a()?d(void 0):f.delete(`/personas/${e}`).then(e=>e.data),exportPersona:e=>{if(a()){let e={name:`Sample Assistant`,description:`A sample assistant for demonstration`,model:`llama3.2:latest`,params:{temperature:.7,top_p:.9,context_window:4096,system_prompt:`You are a helpful assistant.`},exportedAt:Date.now(),version:`1.0.0`};return Promise.resolve(e)}return f.get(`/personas/${e}/export`).then(e=>e.data)},importPersona:e=>a()?d({id:`demo-imported-`+Date.now(),user_id:`default`,name:e.name,description:e.description,model:e.model,parameters:e.params,avatar:e.avatar,background:e.background,created_at:Date.now(),updated_at:Date.now(),embedding_model:e.embedding_model,memory_settings:e.memory_settings,mutation_settings:e.mutation_settings}):f.post(`/personas/import`,e).then(e=>e.data),getPersonasCount:()=>a()?d({count:2}):f.get(`/personas/stats/count`).then(e=>e.data),getDefaultParameters:()=>a()?d({temperature:.7,top_p:.9,top_k:40,context_window:4096,max_tokens:1024,system_prompt:``,repeat_penalty:1.1,presence_penalty:0,frequency_penalty:0}):f.get(`/personas/defaults/parameters`).then(e=>e.data),getMemoryStatus:e=>a()?d({status:`active`,memory_count:42,last_backup:Date.now()-864e5,size_mb:2.3}):f.get(`/personas/${e}/memory/status`).then(e=>e.data),wipeMemories:e=>a()?d({deleted_count:42}):f.delete(`/personas/${e}/memory`).then(e=>e.data),backupPersona:e=>{if(a()){let t=JSON.stringify({persona_id:e,backup_date:new Date().toISOString(),data:`demo backup data`});return Promise.resolve(new Blob([t],{type:`application/json`}))}return f.get(`/personas/${e}/backup`,{responseType:`blob`}).then(e=>e.data)},exportPersonaDNA:e=>{if(a()){let t=JSON.stringify({persona_id:e,export_date:new Date().toISOString(),dna:`demo DNA data`,memories:[],learned_behaviors:{}});return Promise.resolve(new Blob([t],{type:`application/json`}))}return f.get(`/personas/${e}/export/dna`,{responseType:`blob`}).then(e=>e.data)},importPersonaDNA:e=>{if(a())return d({id:`demo-dna-`+Date.now(),user_id:`default`,name:`Imported Persona`,description:`Persona imported from DNA`,model:`llama3.2:latest`,parameters:{temperature:.7,top_p:.9,context_window:4096,system_prompt:`You are a helpful assistant.`},created_at:Date.now(),updated_at:Date.now()});let t=new FormData;return t.append(`dnaFile`,e),f.post(`/personas/import/dna`,t).then(e=>e.data)},downloadPersona:async(e,t)=>{try{let n=await R.exportPersona(e),r=new Blob([JSON.stringify(n,null,2)],{type:`application/json`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=`${t}.json`,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(i)}catch(e){throw u.error(`Error while downloading persona:`,e),Error(`Failed to download persona: ${e instanceof Error?e.message:String(e)}`)}}},z={getAllPlugins:()=>a()?d([]):f.get(`/plugins`).then(e=>e.data),uploadPlugin:e=>{if(a())return d({},!1);let t=new FormData;return t.append(`plugin`,e),f.post(`/plugins/upload`,t).then(e=>e.data)},installPlugin:e=>a()?d({},!1):f.post(`/plugins/install`,e).then(e=>e.data),updatePlugin:(e,t)=>a()?d({},!1):f.put(`/plugins/${e}`,t).then(e=>e.data),deletePlugin:e=>a()?d(void 0):f.delete(`/plugins/${e}`).then(e=>e.data),activatePlugin:e=>a()?d({},!1):f.post(`/plugins/activate/${e}`).then(e=>e.data),deactivatePlugin:e=>{if(a())return d(void 0);let t=e?`/plugins/deactivate/${e}`:`/plugins/deactivate`;return f.post(t).then(e=>e.data)},getActivePlugin:()=>a()?d(null):f.get(`/plugins/active`).then(e=>e.data),getPluginStatus:()=>a()?d([]):f.get(`/plugins/status`).then(e=>e.data),exportPlugin:e=>a()?Promise.resolve(new Blob([`{}`],{type:`application/json`})):f.get(`/plugins/${e}/export`,{responseType:`blob`}).then(e=>e.data),getCredentials:()=>a()?d([]):f.get(`/plugins/credentials/all`).then(e=>e.data),setApiKey:(e,t)=>a()?d(!1,!1):f.post(`/plugins/${e}/credentials`,{api_key:t}).then(e=>e.data),deleteApiKey:e=>a()?d(!1,!1):f.delete(`/plugins/${e}/credentials`).then(e=>e.data),checkApiKey:e=>a()?d(!1):f.get(`/plugins/${e}/credentials/check`).then(e=>e.data),getVariables:e=>a()?d({}):f.get(`/plugins/${e}/variables`).then(e=>e.data),setVariables:(e,t)=>a()?d(!0):f.put(`/plugins/${e}/variables`,{variables:t}).then(e=>e.data),resetVariables:e=>a()?d(!0):f.delete(`/plugins/${e}/variables`).then(e=>e.data)},B={getPreferences:()=>a()?d(x()):f.get(`/preferences`).then(e=>e.data),updatePreferences:e=>a()?d(S(e)):f.put(`/preferences`,e).then(e=>e.data),setDefaultModel:e=>a()?d(S({defaultModel:e})):f.put(`/preferences/default-model`,{model:e}).then(e=>e.data),setSystemMessage:e=>a()?d(S({systemMessage:e})):f.put(`/preferences/system-message`,{message:e}).then(e=>e.data),setGenerationOptions:e=>a()?d(S({generationOptions:e})):f.put(`/preferences/generation-options`,e).then(e=>e.data),resetGenerationOptions:()=>a()?d(S({generationOptions:y.generationOptions})):f.post(`/preferences/generation-options/reset`).then(e=>e.data),setEmbeddingSettings:e=>a()?d(S({embeddingSettings:e})):f.put(`/preferences/embedding-settings`,e).then(e=>e.data),resetEmbeddingSettings:()=>a()?d(S({embeddingSettings:y.embeddingSettings})):f.post(`/preferences/embedding-settings/reset`).then(e=>e.data),importData:(e,t=`replace`)=>a()?d({theme:{mode:`dark`,accent:`blue`,customAccent:`#2563eb`},defaultModel:`llama3.2`,systemMessage:`You are a helpful assistant.`,generationOptions:{},embeddingSettings:{enabled:!1,model:`nomic-embed-text`,chunkSize:1e3,chunkOverlap:200,similarityThreshold:.7},showUsername:!1}):f.post(`/preferences/import`,{data:e,mergeStrategy:t}).then(e=>e.data)},V={getModels:()=>a()?d([{model:`tts-1`,plugin:`openai`,config:{voices:[`alloy`,`echo`,`fable`,`onyx`,`nova`,`shimmer`],default_voice:`alloy`,formats:[`mp3`,`opus`,`aac`,`flac`,`wav`],default_format:`mp3`,max_characters:4096}}]):f.get(`/tts/models`).then(e=>e.data),getPlugins:()=>a()?d([{id:`openai`,name:`OpenAI GPT`,models:[`tts-1`,`tts-1-hd`],config:{voices:[`alloy`,`echo`,`fable`,`onyx`,`nova`,`shimmer`],default_voice:`alloy`}}]):f.get(`/tts/plugins`).then(e=>e.data),getVoices:e=>a()?d({voices:[`alloy`,`echo`,`fable`,`onyx`,`nova`,`shimmer`],default_voice:`alloy`,formats:[`mp3`,`opus`,`aac`,`flac`,`wav`],default_format:`mp3`,max_characters:4096,supports_streaming:!1}):f.get(`/tts/voices/${e}`).then(e=>e.data),generateBase64:e=>a()?d({audio:``,format:e.response_format||`mp3`,mimeType:`audio/mpeg`,size:0}):f.post(`/tts/generate-base64`,e).then(e=>e.data),generate:async e=>a()?new Blob([],{type:`audio/mpeg`}):(await f.post(`/tts/generate`,e,{responseType:`blob`})).data,speak:async(e,t={})=>{try{t.onStart?.();let n=await V.generateBase64({model:t.model||`tts-1`,input:e,voice:t.voice,speed:t.speed,response_format:`mp3`});if(!n.success||!n.data?.audio)throw Error(n.message||`Failed to generate speech`);let r=`data:${n.data.mimeType};base64,${n.data.audio}`,i=new Audio(r);return i.onended=()=>t.onEnd?.(),i.onerror=()=>t.onError?.(Error(`Audio playback failed`)),await i.play(),i}catch(e){let n=e instanceof Error?e:Error(`Unknown error`);return t.onError?.(n),null}}},H=e({personaApi:()=>R,preferencesApi:()=>B});export{s as _,R as a,A as c,E as d,w as f,h as g,m as h,z as i,k as l,C as m,V as n,I as o,T as p,B as r,L as s,H as t,D as u};
15
+ `;return`data:image/svg+xml;charset=UTF-8,${encodeURIComponent(l)}`},I=(e,t=128)=>e.avatar?.trim()||F(e.name,t),L=(e,t,n=128)=>{e.onerror=null,e.src=F(t,n)},R={getPersonas:()=>a()?d([{id:`demo-1`,user_id:`default`,name:`Creative Assistant`,description:`Helpful assistant for creative tasks`,model:`llama3.3:latest`,parameters:{temperature:.8,top_p:.9,context_window:4096,system_prompt:`You are a creative and helpful assistant. Provide thoughtful and engaging responses.`},avatar:F(`Creative Assistant`,128),created_at:Date.now()-864e5,updated_at:Date.now()-864e5},{id:`demo-2`,user_id:`default`,name:`Research Assistant`,description:`Academic assistant for research and learning`,model:`qwen3:7b`,parameters:{temperature:.3,top_p:.8,context_window:8192,system_prompt:`You are a knowledgeable research assistant. Provide detailed, informative explanations.`},avatar:F(`Research Assistant`,128),created_at:Date.now()-1728e5,updated_at:Date.now()-1728e5}]):f.get(`/personas`).then(e=>e.data),getPersona:e=>a()?d({id:e,user_id:`default`,name:`Sample Assistant`,description:`A sample assistant for demonstration`,model:`llama3.2:latest`,parameters:{temperature:.7,top_p:.9,context_window:4096,system_prompt:`You are a helpful assistant.`},created_at:Date.now(),updated_at:Date.now()}):f.get(`/personas/${e}`).then(e=>e.data),createPersona:e=>a()?d({id:`demo-`+Date.now(),user_id:`default`,...e,created_at:Date.now(),updated_at:Date.now()}):f.post(`/personas`,e).then(e=>e.data),updatePersona:(e,t)=>a()?d({id:e,user_id:`default`,name:t.name||`Updated Sample Assistant`,description:t.description,model:t.model||`llama3.2:latest`,parameters:t.parameters||{temperature:.7,top_p:.9,context_window:4096,system_prompt:`You are a helpful assistant.`},avatar:t.avatar,background:t.background,created_at:Date.now()-864e5,updated_at:Date.now()}):f.put(`/personas/${e}`,t).then(e=>e.data),deletePersona:e=>a()?d(void 0):f.delete(`/personas/${e}`).then(e=>e.data),exportPersona:e=>{if(a()){let e={name:`Sample Assistant`,description:`A sample assistant for demonstration`,model:`llama3.2:latest`,params:{temperature:.7,top_p:.9,context_window:4096,system_prompt:`You are a helpful assistant.`},exportedAt:Date.now(),version:`1.0.0`};return Promise.resolve(e)}return f.get(`/personas/${e}/export`).then(e=>e.data)},importPersona:e=>a()?d({id:`demo-imported-`+Date.now(),user_id:`default`,name:e.name,description:e.description,model:e.model,parameters:e.params,avatar:e.avatar,background:e.background,created_at:Date.now(),updated_at:Date.now(),embedding_model:e.embedding_model,memory_settings:e.memory_settings,mutation_settings:e.mutation_settings}):f.post(`/personas/import`,e).then(e=>e.data),getPersonasCount:()=>a()?d({count:2}):f.get(`/personas/stats/count`).then(e=>e.data),getDefaultParameters:()=>a()?d({temperature:.7,top_p:.9,top_k:40,context_window:4096,max_tokens:1024,system_prompt:``,repeat_penalty:1.1,presence_penalty:0,frequency_penalty:0}):f.get(`/personas/defaults/parameters`).then(e=>e.data),getMemoryStatus:e=>a()?d({status:`active`,memory_count:42,last_backup:Date.now()-864e5,size_mb:2.3}):f.get(`/personas/${e}/memory/status`).then(e=>e.data),wipeMemories:e=>a()?d({deleted_count:42}):f.delete(`/personas/${e}/memory`).then(e=>e.data),backupPersona:e=>{if(a()){let t=JSON.stringify({persona_id:e,backup_date:new Date().toISOString(),data:`demo backup data`});return Promise.resolve(new Blob([t],{type:`application/json`}))}return f.get(`/personas/${e}/backup`,{responseType:`blob`}).then(e=>e.data)},exportPersonaDNA:e=>{if(a()){let t=JSON.stringify({persona_id:e,export_date:new Date().toISOString(),dna:`demo DNA data`,memories:[],learned_behaviors:{}});return Promise.resolve(new Blob([t],{type:`application/json`}))}return f.get(`/personas/${e}/export/dna`,{responseType:`blob`}).then(e=>e.data)},importPersonaDNA:e=>{if(a())return d({id:`demo-dna-`+Date.now(),user_id:`default`,name:`Imported Persona`,description:`Persona imported from DNA`,model:`llama3.2:latest`,parameters:{temperature:.7,top_p:.9,context_window:4096,system_prompt:`You are a helpful assistant.`},created_at:Date.now(),updated_at:Date.now()});let t=new FormData;return t.append(`dnaFile`,e),f.post(`/personas/import/dna`,t).then(e=>e.data)},downloadPersona:async(e,t)=>{try{let n=await R.exportPersona(e),r=new Blob([JSON.stringify(n,null,2)],{type:`application/json`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=`${t}.json`,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(i)}catch(e){throw u.error(`Error while downloading persona:`,e),Error(`Failed to download persona: ${e instanceof Error?e.message:String(e)}`)}}},z={getAllPlugins:()=>a()?d([]):f.get(`/plugins`).then(e=>e.data),uploadPlugin:e=>{if(a())return d({},!1);let t=new FormData;return t.append(`plugin`,e),f.post(`/plugins/upload`,t).then(e=>e.data)},installPlugin:e=>a()?d({},!1):f.post(`/plugins/install`,e).then(e=>e.data),updatePlugin:(e,t)=>a()?d({},!1):f.put(`/plugins/${e}`,t).then(e=>e.data),deletePlugin:e=>a()?d(void 0):f.delete(`/plugins/${e}`).then(e=>e.data),activatePlugin:e=>a()?d({},!1):f.post(`/plugins/activate/${e}`).then(e=>e.data),deactivatePlugin:e=>{if(a())return d(void 0);let t=e?`/plugins/deactivate/${e}`:`/plugins/deactivate`;return f.post(t).then(e=>e.data)},getActivePlugin:()=>a()?d(null):f.get(`/plugins/active`).then(e=>e.data),getPluginStatus:()=>a()?d([]):f.get(`/plugins/status`).then(e=>e.data),exportPlugin:e=>a()?Promise.resolve(new Blob([`{}`],{type:`application/json`})):f.get(`/plugins/${e}/export`,{responseType:`blob`}).then(e=>e.data),getCredentials:()=>a()?d([]):f.get(`/plugins/credentials/all`).then(e=>e.data),setApiKey:(e,t)=>a()?d(!1,!1):f.post(`/plugins/${e}/credentials`,{api_key:t}).then(e=>e.data),deleteApiKey:e=>a()?d(!1,!1):f.delete(`/plugins/${e}/credentials`).then(e=>e.data),checkApiKey:e=>a()?d(!1):f.get(`/plugins/${e}/credentials/check`).then(e=>e.data),getVariables:e=>a()?d({}):f.get(`/plugins/${e}/variables`).then(e=>e.data),setVariables:(e,t)=>a()?d(!0):f.put(`/plugins/${e}/variables`,{variables:t}).then(e=>e.data),resetVariables:e=>a()?d(!0):f.delete(`/plugins/${e}/variables`).then(e=>e.data)},B={getPreferences:()=>a()?d(x()):f.get(`/preferences`).then(e=>e.data),updatePreferences:e=>a()?d(S(e)):f.put(`/preferences`,e).then(e=>e.data),setDefaultModel:e=>a()?d(S({defaultModel:e})):f.put(`/preferences/default-model`,{model:e}).then(e=>e.data),setSystemMessage:e=>a()?d(S({systemMessage:e})):f.put(`/preferences/system-message`,{message:e}).then(e=>e.data),setGenerationOptions:e=>a()?d(S({generationOptions:e})):f.put(`/preferences/generation-options`,e).then(e=>e.data),resetGenerationOptions:()=>a()?d(S({generationOptions:y.generationOptions})):f.post(`/preferences/generation-options/reset`).then(e=>e.data),setEmbeddingSettings:e=>a()?d(S({embeddingSettings:e})):f.put(`/preferences/embedding-settings`,e).then(e=>e.data),resetEmbeddingSettings:()=>a()?d(S({embeddingSettings:y.embeddingSettings})):f.post(`/preferences/embedding-settings/reset`).then(e=>e.data),importData:(e,t=`replace`)=>a()?d({theme:{mode:`dark`,adaptToAccent:!1,accent:`blue`,customAccent:`#2563eb`},defaultModel:`llama3.2`,systemMessage:`You are a helpful assistant.`,generationOptions:{},embeddingSettings:{enabled:!1,model:`nomic-embed-text`,chunkSize:1e3,chunkOverlap:200,similarityThreshold:.7},showUsername:!1}):f.post(`/preferences/import`,{data:e,mergeStrategy:t}).then(e=>e.data)};function V(e,t,n){if(t)return e.find(e=>e.model===t&&(!n||e.plugin===n))}function H(e,t,n){return V(e,t,n)||e[0]}function U(e){return`${encodeURIComponent(e.plugin)}::${encodeURIComponent(e.model)}`}var W={getModels:()=>a()?d([{model:`tts-1`,plugin:`openai`,config:{voices:[`alloy`,`echo`,`fable`,`onyx`,`nova`,`shimmer`],default_voice:`alloy`,formats:[`mp3`,`opus`,`aac`,`flac`,`wav`],default_format:`mp3`,max_characters:4096}}]):f.get(`/tts/models`).then(e=>e.data),getPlugins:()=>a()?d([{id:`openai`,name:`OpenAI GPT`,models:[`tts-1`,`tts-1-hd`],config:{voices:[`alloy`,`echo`,`fable`,`onyx`,`nova`,`shimmer`],default_voice:`alloy`}}]):f.get(`/tts/plugins`).then(e=>e.data),getVoices:e=>a()?d({voices:[`alloy`,`echo`,`fable`,`onyx`,`nova`,`shimmer`],default_voice:`alloy`,formats:[`mp3`,`opus`,`aac`,`flac`,`wav`],default_format:`mp3`,max_characters:4096,supports_streaming:!1}):f.get(`/tts/voices/${e}`).then(e=>e.data),generateBase64:e=>{if(a())return d({audio:``,format:e.response_format||`mp3`,mimeType:`audio/mpeg`,size:0});let t={...e,pluginId:e.pluginId||void 0};return f.post(`/tts/generate-base64`,t).then(e=>e.data)},generate:async e=>{if(a())return new Blob([],{type:`audio/mpeg`});let t={...e,pluginId:e.pluginId||void 0};return(await f.post(`/tts/generate`,t,{responseType:`blob`})).data},speak:async(e,t={})=>{try{t.onStart?.();let n=await W.generateBase64({model:t.model||`tts-1`,pluginId:t.pluginId,input:e,voice:t.voice,speed:t.speed,response_format:t.responseFormat});if(!n.success||!n.data?.audio)throw Error(n.message||`Failed to generate speech`);let r=`data:${n.data.mimeType};base64,${n.data.audio}`,i=new Audio(r);return i.onended=()=>t.onEnd?.(),i.onerror=()=>t.onError?.(Error(`Audio playback failed`)),await i.play(),i}catch(e){let n=e instanceof Error?e:Error(`Unknown error`);return t.onError?.(n),null}}},G=e({personaApi:()=>R,preferencesApi:()=>B});export{C as _,W as a,s as b,R as c,A as d,k as f,T as g,w as h,H as i,I as l,E as m,V as n,B as o,D as p,U as r,z as s,G as t,L as u,m as v,h as y};
@@ -1,2 +1,2 @@
1
- var e={common:{loading:`جاري التحميل...`,save:`حفظ`,saving:`جاري الحفظ...`,cancel:`إلغاء`,delete:`حذف`,edit:`تعديل`,close:`إغلاق`,back:`رجوع`,next:`التالي`,confirm:`تأكيد`,error:`خطأ`,success:`نجاح`,warning:`تحذير`,or:`أو`,optional:`اختياري`,enabled:`مُفعّل`,disabled:`معطّل`,on:`تشغيل`,off:`إيقاف`,yes:`نعم`,no:`لا`,search:`بحث`,noResults:`لم يتم العثور على نتائج`,retry:`إعادة المحاولة`,refresh:`تحديث`,download:`تحميل`,upload:`رفع`,export:`تصدير`,import:`استيراد`,reset:`إعادة تعيين`,apply:`تطبيق`,clear:`مسح`,all:`الكل`,none:`لا شيء`,default:`افتراضي`,custom:`مخصص`,remove:`إزالة`},brand:{name:`Libre WebUI`,shortName:`Libre`},auth:{login:{title:`مرحباً بعودتك`,subtitle:`سجّل الدخول إلى حسابك للمتابعة`,username:`اسم المستخدم`,usernamePlaceholder:`أدخل اسم المستخدم`,password:`كلمة المرور`,passwordPlaceholder:`أدخل كلمة المرور`,signIn:`تسجيل الدخول`,signingIn:`جاري تسجيل الدخول...`,noAccount:`ليس لديك حساب؟`,signUpHere:`سجّل هنا`,loginSuccess:`تم تسجيل الدخول بنجاح!`,loginFailed:`فشل تسجيل الدخول`,checkCredentials:`فشل تسجيل الدخول. يرجى التحقق من بيانات الاعتماد.`,enterBoth:`يرجى إدخال اسم المستخدم وكلمة المرور`,githubSuccess:`تم تسجيل الدخول عبر GitHub بنجاح!`,githubFailed:`فشلت مصادقة GitHub`,githubVerifyFailed:`فشل التحقق من مصادقة GitHub`},signup:{title:`إنشاء حساب`,subtitle:`سجّل للحصول على حساب جديد`,username:`اسم المستخدم`,usernamePlaceholder:`اختر اسم مستخدم`,email:`البريد الإلكتروني`,emailPlaceholder:`your@email.com`,password:`كلمة المرور`,passwordPlaceholder:`اختر كلمة مرور`,confirmPassword:`تأكيد كلمة المرور`,confirmPasswordPlaceholder:`أكّد كلمة المرور`,createAccount:`إنشاء حساب`,creatingAccount:`جاري إنشاء الحساب...`,hasAccount:`لديك حساب بالفعل؟`,signInHere:`سجّل الدخول هنا`,signupSuccess:`تم إنشاء الحساب بنجاح!`,signupFailed:`فشل التسجيل`,tryAgain:`فشل التسجيل. يرجى المحاولة مرة أخرى.`,usernameRequired:`اسم المستخدم وكلمة المرور مطلوبان`,passwordMismatch:`كلمات المرور غير متطابقة`,passwordTooShort:`يجب أن تكون كلمة المرور 6 أحرف على الأقل`},logout:{button:`تسجيل الخروج`,success:`تم تسجيل الخروج بنجاح`},oauth:{continueWith:`المتابعة مع {{provider}}`,connectingTo:`جاري الاتصال بـ {{provider}}...`,github:`GitHub`,huggingFace:`Hugging Face`},checkingAuth:`جاري التحقق من المصادقة...`,welcome:`مرحباً`,noEmail:`لم يتم تقديم بريد إلكتروني`,role:`الدور`,id:`المعرف`,userId:`معرف المستخدم`,signInDescription:`سجّل الدخول بحساب GitHub الخاص بك للمتابعة`,signInWithGitHub:`تسجيل الدخول بواسطة GitHub`,jwtActive:`مصادقة JWT نشطة`,jwtDescription:`مصادقة JWT مع GitHub OAuth`,github:`GitHub`,provider:`المزود`},setup:{welcome:{title:`مرحباً بك في Libre WebUI`,subtitle:`لنبدأ`,description:`قم بإعداد Libre WebUI الخاص بك في خطوات قليلة`,createAdmin:`إنشاء حساب المسؤول`,features:{secure:{title:`آمن وخاص`,description:`محادثاتك تبقى على جهازك`},fast:{title:`سريع ومتجاوب`,description:`محسّن للسرعة والأداء`},openSource:{title:`مفتوح المصدر`,description:`برنامج مجاني ومفتوح المصدر`}}},admin:{title:`إنشاء حساب المسؤول`,subtitle:`إعداد المسؤول`,description:`أنشئ أول حساب مسؤول لـ Libre WebUI الخاص بك`,usernamePlaceholder:`أدخل اسم المسؤول`,passwordPlaceholder:`أدخل كلمة المرور (6 أحرف على الأقل)`,confirmPlaceholder:`أكّد كلمة المرور`,creating:`جاري الإنشاء...`,createAdmin:`إنشاء المسؤول`,success:`تم إنشاء حساب المسؤول بنجاح!`,failed:`فشل إنشاء حساب المسؤول`,fillAllFields:`يرجى ملء جميع الحقول`,note:`سيكون هذا حساب المسؤول الرئيسي لـ Libre WebUI الخاص بك`},encryptionKey:{title:`احفظ مفتاح التشفير`,subtitle:`مهم: احفظ هذا المفتاح`,description:`يحمي مفتاح التشفير هذا بياناتك الحساسة. احفظه بأمان - ستحتاجه إذا احتجت لاستعادة قاعدة البيانات.`,warning:`تحذير`,warningText:`إذا فقدت هذا المفتاح واحتجت لاستعادة قاعدة البيانات، ستكون بياناتك المشفرة (مفاتيح API، التفضيلات) غير قابلة للاسترداد.`,label:`مفتاح التشفير الخاص بك`,loading:`جاري التحميل...`,copyToClipboard:`نسخ إلى الحافظة`,copied:`تم نسخ مفتاح التشفير إلى الحافظة!`,copyFailed:`فشل نسخ المفتاح إلى الحافظة`,envNote:`هذا المفتاح محفوظ أيضاً في ملف backend/.env كـ ENCRYPTION_KEY`,acknowledgment:`لقد حفظت مفتاح التشفير في مكان آمن وأفهم أن فقدانه قد يؤدي إلى فقدان البيانات.`,confirmRequired:`يرجى التأكيد على أنك حفظت مفتاح التشفير`,continue:`المتابعة إلى Libre WebUI`}},chat:{greeting:{morning:`صباح الخير`,afternoon:`مساء الخير`,evening:`مساء الخير`,night:`تصبح على خير`},welcome:{helpToday:`كيف يمكنني مساعدتك اليوم؟`,helpTonight:`كيف يمكنني مساعدتك الليلة؟`,variety:{create:{title:`ماذا نصنع؟`,subtitle:`ابدأ بفكرة، أو رسم أولي، أو مشكلة عنيدة.`},explore:{title:`من أين نبدأ؟`,subtitle:`هات السؤال الذي لا يكفّ عن العودة إلى ذهنك.`},imagine:{title:`ما الذي تتخيّله؟`,subtitle:`يمكننا أن نمنحه شكلاً معًا.`},focus:{title:`ما الذي يستحق انتباهك؟`,subtitle:`لنجعل الخطوة التالية واضحة.`},untangle:{title:`ما الذي يبدو معقّدًا؟`,subtitle:`أعطني النسخة الفوضوية أولًا.`},momentum:{title:`لننطلق عندما تكون جاهزًا.`,subtitle:`تابع فكرة أو خطة أو خيطًا تركته دون إكمال.`},open:{title:`ما الذي يشغل بالك؟`,subtitle:`خاطرة صغيرة أو مشروع طموح. كلاهما مناسب.`},challenge:{title:`ما الذي نحاول حلّه؟`,subtitle:`أخبرني بما لا يعمل بعد.`},draft:{title:`لنبدأ من مكان ما.`,subtitle:`لا يشترط أن يكون مصقولًا.`},possibility:{title:`إلى ماذا يمكن أن يتحول هذا؟`,subtitle:`أرني المادة الخام.`},unexpected:{title:`لنصنع شيئًا غير متوقع.`,subtitle:`أعطني قيدًا، أو مزاجًا، أو فكرة لم تكتمل بعد.`}}},input:{placeholder:`أرسل رسالة`,messagePlaceholder:`رسالة...`,attachImages:`إرفاق صور`,attachments:`المرفقات والميزات المتقدمة`,sendMessage:`إرسال الرسالة`,stopGeneration:`إيقاف التوليد`},session:{new:`محادثة جديدة`,private:`خاص`,privateMode:`الوضع الخاص`,privateDescription:`لن يتم حفظ هذه المحادثة`,privateTooltip:`ابدأ محادثة خاصة لن يتم حفظها`,deleteConfirm:`هل أنت متأكد من حذف هذه المحادثة؟`,generatingTitle:`جاري توليد العنوان`,noChats:`لا توجد محادثات بعد`,createFirst:`أنشئ أول محادثة أعلاه`,chats:`المحادثات`,renameChat:`إعادة تسمية المحادثة`,deleteChat:`حذف المحادثة`},persona:{applied:`تم تطبيق الشخصية`,label:`الشخصية`},model:{updated:`تم تحديث النموذج`,noModels:`لا توجد نماذج متاحة`,noModelsDescription:`لا توجد نماذج متاحة. تأكد من تشغيل Ollama وتثبيت النماذج.`,pullCommand:`ollama pull llama3.2:3b`,noModelsTooltip:`لا توجد نماذج متاحة. يرجى التأكد من تشغيل Ollama وتثبيت النماذج.`},footer:{disclaimer:`قد يرتكب الذكاء الاصطناعي أخطاء - تحقق من المعلومات المهمة`,images:`{{count}} صورة`,images_plural:`{{count}} صور`,structuredOutput:`مخرجات منظمة`},mediaUpload:{dropImagesHere:`أفلت الصور هنا أو`,supportedFormats:`يدعم: JPG، PNG، GIF، WebP (حد أقصى 10 ميجابايت لكل صورة)`,browse:`تصفح`},structuredOutput:{title:`تنسيق الاستجابة`,none:`بدون (لغة طبيعية)`,noneDescription:`استجابة باللغة الطبيعية الافتراضية`,json:`JSON`,jsonDescription:`تنسيق JSON منظم`,list:`قائمة`,listDescription:`مصفوفة من العناصر`,summary:`ملخص`,summaryDescription:`ملخص المستند مع النقاط الرئيسية`,analysis:`تحليل`,analysisDescription:`تحليل منظم مع الإيجابيات والسلبيات`,custom:`مخطط مخصص`,customDescription:`حدد مخطط JSON الخاص بك`,customSchema:`مخطط JSON مخصص`,schemaPreview:`معاينة المخطط`,applySchema:`تطبيق المخطط`,cancel:`إلغاء`,enabled:`تم تفعيل المخرجات المنظمة`}},sidebar:{navigation:{chat:`محادثة`,models:`النماذج`,personas:`الشخصيات`,imagine:`تخيّل`,settings:`الإعدادات`,userManagement:`إدارة المستخدمين`,signOut:`تسجيل الخروج`,agents:`Libre Claw`},toggleSize:`تبديل حجم الشريط الجانبي`,expandSidebar:`توسيع الشريط الجانبي`},user:{menu:{changePicture:`تغيير الصورة`,settings:`الإعدادات`,userManagement:`إدارة المستخدمين`,logout:`تسجيل الخروج`},avatar:{title:`تغيير صورة الملف الشخصي`,updated:`تم تحديث صورة الملف الشخصي`,updateFailed:`فشل تحديث صورة الملف الشخصي`,saving:`جاري الحفظ...`,label:`الصورة الرمزية`,uploadAvatarImage:`رفع صورة رمزية`,dragAndDrop:`اسحب وأفلت صورة أو انقر للتصفح`,chooseImage:`اختر صورة`,uploading:`جاري الرفع...`,enterImageUrl:`أو أدخل رابط الصورة`,supportedFormats:`الصيغ المدعومة: JPG، PNG، GIF، WebP (الحد الأقصى 2 ميجابايت). الصور المربعة تعمل بشكل أفضل.`,customAvatar:`صورة رمزية مخصصة`,clickToChange:`انقر للتغيير أو الإزالة`,removed:`تمت إزالة الصورة الرمزية`,uploaded:`تم رفع الصورة الرمزية بنجاح`,invalidFile:`يرجى اختيار ملف صورة صالح`,fileTooLarge:`يجب أن يكون حجم الصورة الرمزية أقل من 2 ميجابايت`,readFailed:`فشل قراءة ملف الصورة`,uploadFailed:`فشل رفع الصورة الرمزية`},profile:{noEmail:`لم يتم تقديم بريد إلكتروني`}},settings:JSON.parse(`{"title":"الإعدادات","tabs":{"appearance":"المظهر","model":"النموذج","systemMessage":"رسالة النظام","plugins":"الإضافات","generation":"التوليد","documents":"المستندات","tts":"تحويل النص إلى كلام","imageGen":"توليد الصور","data":"البيانات","about":"حول"},"appearance":{"title":"المظهر","language":{"title":"اللغة","description":"اختر لغتك المفضلة"},"theme":{"title":"السمة","light":"فاتح","dark":"داكن","amoled":"أسود نقي","system":"النظام"},"accent":{"title":"لون التمييز","custom":"لون مخصص","useColor":"استخدام {{color}} كلون تمييز"},"chatInterface":{"title":"واجهة المحادثة","showUsername":"إظهار اسم المستخدم","showUsernameDescription":"عرض اسم المستخدم في رسائل المحادثة"},"background":{"title":"صورة الخلفية","enable":"تفعيل صورة الخلفية","enableDescription":"عرض خلفية مخصصة مع تأثير التمويه","blur":"التمويه","opacity":"الشفافية","upload":"رفع صورة الخلفية","dragDrop":"اسحب وأفلت صورة أو انقر للتصفح","chooseImage":"اختر صورة"}},"saveSettings":"حفظ الإعدادات","model":{"title":"إعدادات النموذج","defaultModel":"النموذج الافتراضي","defaultModelDescription":"سيتم استخدام هذا النموذج افتراضياً للمحادثات الجديدة","selectModel":"اختر نموذجاً","updateAll":"تحديث جميع النماذج","updateAllDescription":"التحقق من التحديثات وسحب أحدث إصدارات جميع النماذج المثبتة","updateAllButton":"تحديث الكل","updating":"جاري تحديث النماذج...","currentModelInfo":"معلومات النموذج الحالي","name":"الاسم","size":"الحجم","family":"العائلة","format":"التنسيق","status":"الحالة","statusStarting":"جاري البدء...","statusComplete":"مكتمل","statusError":"خطأ","bulkOperations":"العمليات المجمعة","autoTitle":{"title":"توليد العنوان التلقائي","enable":"تفعيل العنوان التلقائي","enableDescription":"توليد عناوين تلقائياً للمحادثات الجديدة","taskModel":"نموذج المهام","selectTaskModel":"اختر نموذج المهام","taskModelDescription":"النموذج المستخدم لتوليد عناوين المحادثات"},"persona":"شخصية","updatingModel":"تحديث {{name}} ({{current}}/{{total}})","modelsProgress":"{{current}} من {{total}} نماذج","modelPullAccess":"وصول تثبيت النماذج","modelPullAccessDescription":"السماح للمستخدمين غير المسؤولين بسحب النماذج الجديدة وتثبيتها.","modelPullAccessSaved":"تم تحديث أذونات تثبيت النماذج","modelPullAccessSaveFailed":"فشل تحديث أذونات تثبيت النماذج"},"systemMessage":{"title":"رسالة النظام","description":"عيّن رسالة نظام مخصصة ستُستخدم لجميع المحادثات الجديدة.","placeholder":"أدخل رسالة النظام...","saved":"تم حفظ رسالة النظام","saveFailed":"فشل حفظ رسالة النظام"},"plugins":{"title":"الإضافات","description":"إدارة الإضافات المثبتة","addNew":"إضافة إضافة جديدة","upload":"رفع إضافة","addJson":"إضافة JSON","uploading":"جاري الرفع...","jsonPlaceholder":"الصق إعدادات JSON للإضافة...","install":"تثبيت الإضافة","noPlugins":"لا توجد إضافات مثبتة","noPluginsDescription":"أضف إضافة لتوسيع الوظائف","loading":"جاري تحميل الإضافات...","installed":"الإضافات المثبتة","active":"الإضافات النشطة","activeLabel":"نشط","inactive":"غير نشط","activate":"تفعيل","deactivate":"إلغاء التفعيل","models":"نماذج","apiKeySet":"تم تعيين مفتاح API","apiKeyConfiguration":"إعداد مفتاح API","apiKeyEnvAlternative":"بدلاً من ذلك، عيّن","environmentVariable":"متغير البيئة","apiKeyConfigured":"تم إعداد مفتاح API","apiKeyPlaceholder":"أدخل مفتاح API...","saveApiKey":"حفظ مفتاح API","apiKey":{"title":"مفتاح API","placeholder":"أدخل مفتاح API","save":"حفظ المفتاح","remove":"إزالة المفتاح","configured":"تم إعداد مفتاح API","notConfigured":"مفتاح API مطلوب","saved":"تم حفظ مفتاح API بنجاح","removed":"تم إزالة مفتاح API","saveFailed":"فشل حفظ مفتاح API","removeFailed":"فشل إزالة مفتاح API","enterKey":"يرجى إدخال مفتاح API"},"variables":"Variables"},"generation":{"title":"خيارات التوليد","description":"إعداد كيفية توليد الذكاء الاصطناعي للاستجابات","coreParameters":"المعلمات الأساسية","temperature":"درجة الحرارة","temperatureDescription":"يتحكم في العشوائية. القيم الأقل أكثر تركيزاً، والقيم الأعلى أكثر إبداعاً.","topP":"Top P","topPDescription":"يتحكم في التنوع عبر أخذ العينات النووية. القيم الأقل تركز على الرموز المحتملة.","topK":"Top K","topKDescription":"يحد اختيار الرموز لأكثر K رمز احتمالاً. عيّن 0 للتعطيل.","minP":"Min P","minPDescription":"الحد الأدنى لاحتمال اختيار الرمز.","generationControl":"التحكم في التوليد","maxTokens":"الحد الأقصى للرموز","maxTokensDescription":"الحد الأقصى لعدد الرموز المولدة في الاستجابة.","repeatPenalty":"عقوبة التكرار","repeatPenaltyDescription":"يعاقب الرموز المتكررة. القيم الأعلى تقلل التكرار.","contextLength":"طول السياق","contextLengthDescription":"الحد الأقصى لحجم نافذة السياق للمحادثات.","seed":"البذرة","optional":"اختياري","random":"عشوائي","seedDescription":"عيّن بذرة محددة للمخرجات القابلة للتكرار.","advancedOptions":"خيارات متقدمة","presencePenalty":"عقوبة الوجود","presencePenaltyDescription":"يعاقب الرموز التي تظهر في السياق.","frequencyPenalty":"عقوبة التكرار","frequencyPenaltyDescription":"يعاقب الرموز المستخدمة بشكل متكرر.","stopSequences":"تسلسلات الإيقاف","commaSeparated":"مفصولة بفواصل","stopSequencesDescription":"رموز مخصصة ستوقف التوليد عند مصادفتها.","resetDefaults":"إعادة تعيين الافتراضيات","saveOptions":"حفظ الخيارات","embeddingSettings":"إعدادات التضمين","enableEmbeddings":"تفعيل تضمين المستندات"},"documents":{"title":"إعدادات المستندات","embeddings":{"title":"التضمينات","enable":"تفعيل تضمين المستندات","model":"نموذج التضمين","modelDescription":"اختر النموذج المستخدم لتضمين المستندات","chunkSize":"حجم القطعة","chunkSizeInTokens":"(بالرموز)","chunkSizeDescription":"حجم قطع النص للتضمين","chunkOverlap":"تداخل القطع","chunkOverlapInTokens":"(بالرموز)","chunkOverlapDescription":"التداخل بين القطع المتتالية","similarityThreshold":"عتبة التشابه","similarityDescription":"الحد الأدنى لدرجة التشابه لتضمين النتائج","status":"حالة التضمين","statusLabel":"الحالة","available":"متاح","unavailable":"غير متاح","chunksWithEmbeddings":"قطع مع تضمينات","coverage":"التغطية","regenerate":"إعادة توليد التضمينات","regenerating":"جاري إعادة التوليد..."}},"tts":{"title":"تحويل النص إلى كلام","description":"إعداد إعدادات تحويل النص إلى كلام لقراءة الرسائل بصوت عالٍ","loadingProviders":"جاري تحميل مزودي TTS...","noProviders":"لا يوجد مزودو TTS","noProvidersDescription":"قم بإعداد إضافة مع دعم TTS لتفعيل تحويل النص إلى كلام","enable":"تفعيل TTS","enableDescription":"السماح بتحويل النص إلى كلام لرسائل المساعد","autoPlay":"تشغيل تلقائي للاستجابات","autoPlayDescription":"قراءة رسائل المساعد الجديدة بصوت عالٍ تلقائياً","streamSentences":"بث الجمل","streamSentencesDescription":"تشغيل الصوت جملة بجملة بدلاً من انتظار الرسالة الكاملة. موصى به لـ TTS المحلي لتجنب انتهاء المهلة في الرسائل الطويلة.","voiceConfiguration":"إعداد الصوت","model":"نموذج TTS","modelDescription":"اختر النموذج لتوليد الكلام","voice":"الصوت","selectVoice":"اختر صوتاً","voiceDescription":"اختر الصوت لتحويل النص إلى كلام","speed":"السرعة","speedSlow":"0.5x","speedNormal":"1.0x","speedFast":"2.0x","availableProviders":"المزودون المتاحون","models":"نماذج","test":"اختبار","testing":"جاري الاختبار...","stop":"إيقاف"},"imageGen":{"title":"توليد الصور","description":"إعداد إعدادات ومزودي توليد الصور","loadingProviders":"جاري تحميل مزودي توليد الصور...","noProviders":"لا يوجد مزودو توليد صور","noProvidersDescription":"قم بإعداد إضافة مع دعم توليد الصور","enable":"تفعيل توليد الصور","enableDescription":"السماح بتوليد الصور بالذكاء الاصطناعي في المحادثات","configuration":"الإعداد","model":"النموذج","modelDescription":"اختر النموذج لتوليد الصور","size":"الحجم","sizeDescription":"دقة الصور المولدة","quality":"الجودة","qualityDescription":"مستوى جودة الصور المولدة","style":"الأسلوب","styleDescription":"إعداد الأسلوب المسبق للصور المولدة","availableProviders":"المزودون المتاحون","models":"نماذج"},"data":{"title":"إدارة البيانات","export":"تصدير البيانات","exportDescription":"تحميل جميع بياناتك بما في ذلك التفضيلات والجلسات والمستندات.","exportAll":"تصدير جميع البيانات","import":"استيراد البيانات","importDescription":"استيراد البيانات من تصدير سابق.","importData":"استيراد البيانات","importing":"جاري الاستيراد...","clearSessions":"مسح الجلسات","clearSessionsDescription":"حذف جميع جلسات المحادثة. لا يمكن التراجع عن هذا الإجراء.","clearAll":"مسح الكل","clearing":"جاري المسح...","importOptions":"خيارات الاستيراد","importOptionsDescription":"اختر كيفية التعامل مع البيانات الموجودة","skipDuplicates":"تخطي المكررات","overwrite":"الكتابة فوق الموجود","importResults":"نتائج الاستيراد","preferences":"التفضيلات","imported":"تم الاستيراد","failed":"فشل","sessions":"الجلسات","importedLabel":"تم الاستيراد","skipped":"تم التخطي","documents":"المستندات","errors":"أخطاء"},"about":{"title":"حول","versionLabel":"الإصدار","ollama":{"title":"حالة Ollama","version":"الإصدار","healthy":"سليم","unhealthy":"غير سليم"},"stats":{"models":"النماذج","sessions":"الجلسات"},"features":{"privacy":{"title":"الخصوصية أولاً","description":"بياناتك تبقى على جهازك"},"openSource":{"title":"مفتوح المصدر","description":"برنامج مجاني ومفتوح المصدر"},"localInference":{"title":"استدلال محلي","description":"تشغيل نماذج الذكاء الاصطناعي محلياً مع Ollama"}},"openSourceBy":"مفتوح المصدر بواسطة {{company}}","links":{"title":"الروابط","github":"GitHub","githubDescription":"عرض الكود المصدري والمساهمة","website":"الموقع","websiteDescription":"زيارة موقعنا","ollama":"Ollama","ollamaDescription":"معرفة المزيد عن Ollama","documentation":"التوثيق","reportIssue":"الإبلاغ عن المشاكل","reportIssueDescription":"تقارير الأخطاء وطلبات الميزات","gitlab":"مرآة GitLab","gitlabDescription":"مستودع GitLab مستضاف ذاتياً","documentationDescription":"أدلة ودروس ومرجع API"},"version":"الإصدار {{version}}"}}`),models:{title:`النماذج`,subtitle:`سحب وإدارة ومراقبة نماذج Ollama`,installed:`النماذج المثبتة`,available:`النماذج المتاحة`,pull:`سحب النموذج`,pulling:`جاري السحب...`,delete:`حذف النموذج`,deleting:`جاري الحذف...`,size:`الحجم`,modified:`تم التعديل`,family:`العائلة`,parameters:`المعلمات`,quantization:`التكميم`,noModels:`لا توجد نماذج مثبتة`,pullFirst:`اسحب نموذجاً للبدء`,noModelsFound:`لم يتم العثور على نماذج`},personas:{title:`الشخصيات`,create:`إنشاء شخصية`,edit:`تعديل الشخصية`,delete:`حذف الشخصية`,name:`الاسم`,description:`الوصف`,systemPrompt:`موجه النظام`,model:`النموذج`,avatar:`الصورة الرمزية`,background:`الخلفية`,noPersonas:`لم يتم إنشاء شخصيات`,createFirst:`أنشئ أول شخصية لتخصيص تجربة المحادثة`},gallery:{title:`المعرض`,subtitle:`معرض الصور المولدة بالذكاء الاصطناعي`,imageCount:`{{count}} صورة`,generate:`توليد صورة`,generateDescription:`إنشاء صور بالذكاء الاصطناعي`,generating:`جاري التوليد...`,prompt:`الموجه`,promptPlaceholder:`صف الصورة التي تريد توليدها...`,noImages:`لم يتم توليد صور بعد`,download:`تحميل`,delete:`حذف`,regenerate:`إعادة التوليد`,model:`النموذج`,size:`الحجم`,quality:`الجودة`,created:`تم الإنشاء`},errors:{generic:`حدث خطأ`,network:`خطأ في الشبكة. يرجى التحقق من الاتصال.`,unauthorized:`غير مصرح لك بتنفيذ هذا الإجراء.`,notFound:`لم يتم العثور على المورد المطلوب.`,serverError:`خطأ في الخادم. يرجى المحاولة لاحقاً.`,validation:`يرجى التحقق من المدخلات والمحاولة مرة أخرى.`},keyboard:{title:`اختصارات لوحة المفاتيح`,toggleSidebar:`تبديل الشريط الجانبي`,openSettings:`فتح الإعدادات`,toggleDarkMode:`تبديل الوضع الداكن`,showShortcuts:`إظهار اختصارات لوحة المفاتيح`,closeModals:`إغلاق النوافذ المنبثقة`,groups:{navigation:`التنقل`,settings:`الإعدادات`,general:`عام`,chat:`المحادثة`},actions:{sendMessage:`إرسال الرسالة`,newLine:`سطر جديد في الرسالة`},footer:`اضغط {{key1}} أو {{key2}} لإظهار هذه المساعدة`,tooltip:`اختصارات لوحة المفاتيح`},modelManager:{title:`النماذج`,loading:`جاري تحميل النماذج...`,systemStatus:{online:`Ollama متصل`,offline:`Ollama غير متصل`,models:`نموذج`,models_plural:`نماذج`,running:`قيد التشغيل`,vram:`VRAM`},sections:{pull:`سحب نموذج جديد`,library:`تصفح المكتبة`,running:`النماذج قيد التشغيل`,local:`النماذج المحلية`,advanced:`إجراءات متقدمة`,huggingface:`HuggingFace Hub`},pull:{placeholder:`أدخل اسم النموذج (مثل llama3.2:3b، deepseek-r1:14b)`,button:`سحب`,cancel:`إلغاء`,popular:`النماذج الشائعة:`,browseAll:`تصفح جميع النماذج على ollama.com`,success:`تم سحب النموذج {{name}} بنجاح`,cancelled:`تم إلغاء سحب النموذج`,failed:`فشل سحب النموذج`,enterName:`يرجى إدخال اسم النموذج`,restricted:`تثبيت النماذج مقصور على المسؤولين في هذا المثيل.`},progress:{starting:`جاري التهيئة...`,pulling:`جاري تحميل النموذج...`,pullingLayer:`تحميل`,verifying:`جاري التحقق من السلامة...`,verifyingDigest:`التحقق من تجزئة sha256`,writing:`جاري كتابة البيان...`,cleaning:`جاري التنظيف...`},library:{available:`متاح`,search:`البحث عن نماذج...`,noResults:`لم يتم العثور على نماذج تطابق معاييرك`,installed:`مثبت`,more:`+{{count}} المزيد`,refresh:`تحديث المكتبة`},local:{noModels:`لم يتم تثبيت نماذج بعد`,pullToStart:`اسحب نموذجاً أعلاه للبدء`,installed:`مثبت`,running:`قيد التشغيل`,info:`معلومات`,copy:`نسخ`,delete:`حذف`,deleteConfirm:`هل أنت متأكد من حذف النموذج "{{name}}"؟`,deleteSuccess:`تم حذف النموذج {{name}} بنجاح`,deleteFailed:`فشل حذف النموذج`},advanced:{createModel:`إنشاء نموذج`,fromModelfile:`من Modelfile`,copyModel:`نسخ نموذج`,duplicateExisting:`تكرار موجود`,testEmbeddings:`اختبار التضمينات`,generateVectors:`توليد المتجهات`,healthCheck:`فحص الصحة`,testConnection:`اختبار الاتصال`,healthy:`Ollama سليم!`},modals:{details:{title:`تفاصيل النموذج`,info:`معلومات النموذج`,family:`العائلة`,parameters:`المعلمات`,quantization:`التكميم`,format:`التنسيق`,systemPrompt:`موجه النظام`,template:`القالب`,license:`الترخيص`,modelfile:`Modelfile`,noDetails:`لا تتوفر تفاصيل`},copy:{title:`نسخ النموذج`,source:`النموذج المصدر`,selectModel:`اختر نموذجاً...`,newName:`اسم النموذج الجديد`,placeholder:`مثل my-custom-model`,copying:`جاري النسخ...`,button:`نسخ النموذج`,success:`تم نسخ النموذج إلى {{name}}`,failed:`فشل نسخ النموذج`,enterBoth:`يرجى إدخال أسماء المصدر والوجهة`},create:{title:`إنشاء نموذج مخصص`,name:`اسم النموذج`,namePlaceholder:`مثل my-assistant`,modelfile:`Modelfile`,modelfilePlaceholder:`FROM llama3.2
1
+ var e={common:{loading:`جاري التحميل...`,save:`حفظ`,saving:`جاري الحفظ...`,cancel:`إلغاء`,delete:`حذف`,edit:`تعديل`,close:`إغلاق`,back:`رجوع`,next:`التالي`,confirm:`تأكيد`,error:`خطأ`,success:`نجاح`,warning:`تحذير`,or:`أو`,optional:`اختياري`,enabled:`مُفعّل`,disabled:`معطّل`,on:`تشغيل`,off:`إيقاف`,yes:`نعم`,no:`لا`,search:`بحث`,noResults:`لم يتم العثور على نتائج`,retry:`إعادة المحاولة`,refresh:`تحديث`,download:`تحميل`,upload:`رفع`,export:`تصدير`,import:`استيراد`,reset:`إعادة تعيين`,apply:`تطبيق`,clear:`مسح`,all:`الكل`,none:`لا شيء`,default:`افتراضي`,custom:`مخصص`,remove:`إزالة`},brand:{name:`Libre WebUI`,shortName:`Libre`},auth:{login:{title:`مرحباً بعودتك`,subtitle:`سجّل الدخول إلى حسابك للمتابعة`,username:`اسم المستخدم`,usernamePlaceholder:`أدخل اسم المستخدم`,password:`كلمة المرور`,passwordPlaceholder:`أدخل كلمة المرور`,signIn:`تسجيل الدخول`,signingIn:`جاري تسجيل الدخول...`,noAccount:`ليس لديك حساب؟`,signUpHere:`سجّل هنا`,loginSuccess:`تم تسجيل الدخول بنجاح!`,loginFailed:`فشل تسجيل الدخول`,checkCredentials:`فشل تسجيل الدخول. يرجى التحقق من بيانات الاعتماد.`,enterBoth:`يرجى إدخال اسم المستخدم وكلمة المرور`,githubSuccess:`تم تسجيل الدخول عبر GitHub بنجاح!`,githubFailed:`فشلت مصادقة GitHub`,githubVerifyFailed:`فشل التحقق من مصادقة GitHub`},signup:{title:`إنشاء حساب`,subtitle:`سجّل للحصول على حساب جديد`,username:`اسم المستخدم`,usernamePlaceholder:`اختر اسم مستخدم`,email:`البريد الإلكتروني`,emailPlaceholder:`your@email.com`,password:`كلمة المرور`,passwordPlaceholder:`اختر كلمة مرور`,confirmPassword:`تأكيد كلمة المرور`,confirmPasswordPlaceholder:`أكّد كلمة المرور`,createAccount:`إنشاء حساب`,creatingAccount:`جاري إنشاء الحساب...`,hasAccount:`لديك حساب بالفعل؟`,signInHere:`سجّل الدخول هنا`,signupSuccess:`تم إنشاء الحساب بنجاح!`,signupFailed:`فشل التسجيل`,tryAgain:`فشل التسجيل. يرجى المحاولة مرة أخرى.`,usernameRequired:`اسم المستخدم وكلمة المرور مطلوبان`,passwordMismatch:`كلمات المرور غير متطابقة`,passwordTooShort:`يجب أن تكون كلمة المرور 6 أحرف على الأقل`},logout:{button:`تسجيل الخروج`,success:`تم تسجيل الخروج بنجاح`},oauth:{continueWith:`المتابعة مع {{provider}}`,connectingTo:`جاري الاتصال بـ {{provider}}...`,github:`GitHub`,huggingFace:`Hugging Face`},checkingAuth:`جاري التحقق من المصادقة...`,welcome:`مرحباً`,noEmail:`لم يتم تقديم بريد إلكتروني`,role:`الدور`,id:`المعرف`,userId:`معرف المستخدم`,signInDescription:`سجّل الدخول بحساب GitHub الخاص بك للمتابعة`,signInWithGitHub:`تسجيل الدخول بواسطة GitHub`,jwtActive:`مصادقة JWT نشطة`,jwtDescription:`مصادقة JWT مع GitHub OAuth`,github:`GitHub`,provider:`المزود`},setup:{welcome:{title:`مرحباً بك في Libre WebUI`,subtitle:`لنبدأ`,description:`قم بإعداد Libre WebUI الخاص بك في خطوات قليلة`,createAdmin:`إنشاء حساب المسؤول`,features:{secure:{title:`آمن وخاص`,description:`محادثاتك تبقى على جهازك`},fast:{title:`سريع ومتجاوب`,description:`محسّن للسرعة والأداء`},openSource:{title:`مفتوح المصدر`,description:`برنامج مجاني ومفتوح المصدر`}}},admin:{title:`إنشاء حساب المسؤول`,subtitle:`إعداد المسؤول`,description:`أنشئ أول حساب مسؤول لـ Libre WebUI الخاص بك`,usernamePlaceholder:`أدخل اسم المسؤول`,passwordPlaceholder:`أدخل كلمة المرور (6 أحرف على الأقل)`,confirmPlaceholder:`أكّد كلمة المرور`,creating:`جاري الإنشاء...`,createAdmin:`إنشاء المسؤول`,success:`تم إنشاء حساب المسؤول بنجاح!`,failed:`فشل إنشاء حساب المسؤول`,fillAllFields:`يرجى ملء جميع الحقول`,note:`سيكون هذا حساب المسؤول الرئيسي لـ Libre WebUI الخاص بك`},encryptionKey:{title:`احفظ مفتاح التشفير`,subtitle:`مهم: احفظ هذا المفتاح`,description:`يحمي مفتاح التشفير هذا بياناتك الحساسة. احفظه بأمان - ستحتاجه إذا احتجت لاستعادة قاعدة البيانات.`,warning:`تحذير`,warningText:`إذا فقدت هذا المفتاح واحتجت لاستعادة قاعدة البيانات، ستكون بياناتك المشفرة (مفاتيح API، التفضيلات) غير قابلة للاسترداد.`,label:`مفتاح التشفير الخاص بك`,loading:`جاري التحميل...`,copyToClipboard:`نسخ إلى الحافظة`,copied:`تم نسخ مفتاح التشفير إلى الحافظة!`,copyFailed:`فشل نسخ المفتاح إلى الحافظة`,envNote:`هذا المفتاح محفوظ أيضاً في ملف backend/.env كـ ENCRYPTION_KEY`,acknowledgment:`لقد حفظت مفتاح التشفير في مكان آمن وأفهم أن فقدانه قد يؤدي إلى فقدان البيانات.`,confirmRequired:`يرجى التأكيد على أنك حفظت مفتاح التشفير`,continue:`المتابعة إلى Libre WebUI`}},chat:{greeting:{morning:`صباح الخير`,afternoon:`مساء الخير`,evening:`مساء الخير`,night:`تصبح على خير`},welcome:{helpToday:`كيف يمكنني مساعدتك اليوم؟`,helpTonight:`كيف يمكنني مساعدتك الليلة؟`,variety:{create:{title:`ماذا نصنع؟`,subtitle:`ابدأ بفكرة، أو رسم أولي، أو مشكلة عنيدة.`},explore:{title:`من أين نبدأ؟`,subtitle:`هات السؤال الذي لا يكفّ عن العودة إلى ذهنك.`},imagine:{title:`ما الذي تتخيّله؟`,subtitle:`يمكننا أن نمنحه شكلاً معًا.`},focus:{title:`ما الذي يستحق انتباهك؟`,subtitle:`لنجعل الخطوة التالية واضحة.`},untangle:{title:`ما الذي يبدو معقّدًا؟`,subtitle:`أعطني النسخة الفوضوية أولًا.`},momentum:{title:`لننطلق عندما تكون جاهزًا.`,subtitle:`تابع فكرة أو خطة أو خيطًا تركته دون إكمال.`},open:{title:`ما الذي يشغل بالك؟`,subtitle:`خاطرة صغيرة أو مشروع طموح. كلاهما مناسب.`},challenge:{title:`ما الذي نحاول حلّه؟`,subtitle:`أخبرني بما لا يعمل بعد.`},draft:{title:`لنبدأ من مكان ما.`,subtitle:`لا يشترط أن يكون مصقولًا.`},possibility:{title:`إلى ماذا يمكن أن يتحول هذا؟`,subtitle:`أرني المادة الخام.`},unexpected:{title:`لنصنع شيئًا غير متوقع.`,subtitle:`أعطني قيدًا، أو مزاجًا، أو فكرة لم تكتمل بعد.`}}},input:{placeholder:`أرسل رسالة`,messagePlaceholder:`رسالة...`,attachImages:`إرفاق صور`,attachments:`المرفقات والميزات المتقدمة`,sendMessage:`إرسال الرسالة`,stopGeneration:`إيقاف التوليد`},session:{new:`محادثة جديدة`,private:`خاص`,privateMode:`الوضع الخاص`,privateDescription:`لن يتم حفظ هذه المحادثة`,privateTooltip:`ابدأ محادثة خاصة لن يتم حفظها`,deleteConfirm:`هل أنت متأكد من حذف هذه المحادثة؟`,generatingTitle:`جاري توليد العنوان`,noChats:`لا توجد محادثات بعد`,createFirst:`أنشئ أول محادثة أعلاه`,chats:`المحادثات`,renameChat:`إعادة تسمية المحادثة`,deleteChat:`حذف المحادثة`},persona:{applied:`تم تطبيق الشخصية`,label:`الشخصية`},model:{updated:`تم تحديث النموذج`,noModels:`لا توجد نماذج متاحة`,noModelsDescription:`لا توجد نماذج متاحة. تأكد من تشغيل Ollama وتثبيت النماذج.`,pullCommand:`ollama pull llama3.2:3b`,noModelsTooltip:`لا توجد نماذج متاحة. يرجى التأكد من تشغيل Ollama وتثبيت النماذج.`},footer:{disclaimer:`قد يرتكب الذكاء الاصطناعي أخطاء - تحقق من المعلومات المهمة`,images:`{{count}} صورة`,images_plural:`{{count}} صور`,structuredOutput:`مخرجات منظمة`},mediaUpload:{dropImagesHere:`أفلت الصور هنا أو`,supportedFormats:`يدعم: JPG، PNG، GIF، WebP (حد أقصى 10 ميجابايت لكل صورة)`,browse:`تصفح`},structuredOutput:{title:`تنسيق الاستجابة`,none:`بدون (لغة طبيعية)`,noneDescription:`استجابة باللغة الطبيعية الافتراضية`,json:`JSON`,jsonDescription:`تنسيق JSON منظم`,list:`قائمة`,listDescription:`مصفوفة من العناصر`,summary:`ملخص`,summaryDescription:`ملخص المستند مع النقاط الرئيسية`,analysis:`تحليل`,analysisDescription:`تحليل منظم مع الإيجابيات والسلبيات`,custom:`مخطط مخصص`,customDescription:`حدد مخطط JSON الخاص بك`,customSchema:`مخطط JSON مخصص`,schemaPreview:`معاينة المخطط`,applySchema:`تطبيق المخطط`,cancel:`إلغاء`,enabled:`تم تفعيل المخرجات المنظمة`}},sidebar:{navigation:{chat:`محادثة`,models:`النماذج`,personas:`الشخصيات`,imagine:`تخيّل`,settings:`الإعدادات`,userManagement:`إدارة المستخدمين`,signOut:`تسجيل الخروج`,agents:`Libre Claw`},toggleSize:`تبديل حجم الشريط الجانبي`,expandSidebar:`توسيع الشريط الجانبي`},user:{menu:{changePicture:`تغيير الصورة`,settings:`الإعدادات`,userManagement:`إدارة المستخدمين`,logout:`تسجيل الخروج`},avatar:{title:`تغيير صورة الملف الشخصي`,updated:`تم تحديث صورة الملف الشخصي`,updateFailed:`فشل تحديث صورة الملف الشخصي`,saving:`جاري الحفظ...`,label:`الصورة الرمزية`,uploadAvatarImage:`رفع صورة رمزية`,dragAndDrop:`اسحب وأفلت صورة أو انقر للتصفح`,chooseImage:`اختر صورة`,uploading:`جاري الرفع...`,enterImageUrl:`أو أدخل رابط الصورة`,supportedFormats:`الصيغ المدعومة: JPG، PNG، GIF، WebP (الحد الأقصى 2 ميجابايت). الصور المربعة تعمل بشكل أفضل.`,customAvatar:`صورة رمزية مخصصة`,clickToChange:`انقر للتغيير أو الإزالة`,removed:`تمت إزالة الصورة الرمزية`,uploaded:`تم رفع الصورة الرمزية بنجاح`,invalidFile:`يرجى اختيار ملف صورة صالح`,fileTooLarge:`يجب أن يكون حجم الصورة الرمزية أقل من 2 ميجابايت`,readFailed:`فشل قراءة ملف الصورة`,uploadFailed:`فشل رفع الصورة الرمزية`},profile:{noEmail:`لم يتم تقديم بريد إلكتروني`}},settings:JSON.parse(`{"title":"الإعدادات","tabs":{"appearance":"المظهر","model":"النموذج","systemMessage":"رسالة النظام","plugins":"الإضافات","generation":"التوليد","documents":"المستندات","tts":"تحويل النص إلى كلام","imageGen":"توليد الصور","data":"البيانات","about":"حول"},"appearance":{"title":"المظهر","language":{"title":"اللغة","description":"اختر لغتك المفضلة"},"theme":{"title":"السمة","light":"فاتح","dark":"داكن","amoled":"أسود نقي","system":"النظام"},"accent":{"title":"لون التمييز","custom":"لون مخصص","useColor":"استخدام {{color}} كلون تمييز","behaviorTitle":"لوحة ألوان الواجهة","behaviorDescription":"اختر ما إذا كان لون التمييز يقتصر على عناصر التحكم أو يكيّف الواجهة الفاتحة أو الداكنة بالكامل.","defaultStyle":"افتراضي","defaultStyleDescription":"الاحتفاظ بالأسطح المحايدة للوضعين الفاتح والداكن.","adaptedStyle":"التكيف مع لون التمييز","adaptedStyleDescription":"تلوين الأسطح والحدود والنصوص بلون التمييز."},"chatInterface":{"title":"واجهة المحادثة","showUsername":"إظهار اسم المستخدم","showUsernameDescription":"عرض اسم المستخدم في رسائل المحادثة"},"background":{"title":"صورة الخلفية","enable":"تفعيل صورة الخلفية","enableDescription":"عرض خلفية مخصصة مع تأثير التمويه","blur":"التمويه","opacity":"الشفافية","upload":"رفع صورة الخلفية","dragDrop":"اسحب وأفلت صورة أو انقر للتصفح","chooseImage":"اختر صورة"}},"saveSettings":"حفظ الإعدادات","model":{"title":"إعدادات النموذج","defaultModel":"النموذج الافتراضي","defaultModelDescription":"سيتم استخدام هذا النموذج افتراضياً للمحادثات الجديدة","selectModel":"اختر نموذجاً","updateAll":"تحديث جميع النماذج","updateAllDescription":"التحقق من التحديثات وسحب أحدث إصدارات جميع النماذج المثبتة","updateAllButton":"تحديث الكل","updating":"جاري تحديث النماذج...","currentModelInfo":"معلومات النموذج الحالي","name":"الاسم","size":"الحجم","family":"العائلة","format":"التنسيق","status":"الحالة","statusStarting":"جاري البدء...","statusComplete":"مكتمل","statusError":"خطأ","bulkOperations":"العمليات المجمعة","autoTitle":{"title":"توليد العنوان التلقائي","enable":"تفعيل العنوان التلقائي","enableDescription":"توليد عناوين تلقائياً للمحادثات الجديدة","taskModel":"نموذج المهام","selectTaskModel":"اختر نموذج المهام","taskModelDescription":"النموذج المستخدم لتوليد عناوين المحادثات"},"persona":"شخصية","updatingModel":"تحديث {{name}} ({{current}}/{{total}})","modelsProgress":"{{current}} من {{total}} نماذج","modelPullAccess":"وصول تثبيت النماذج","modelPullAccessDescription":"السماح للمستخدمين غير المسؤولين بسحب النماذج الجديدة وتثبيتها.","modelPullAccessSaved":"تم تحديث أذونات تثبيت النماذج","modelPullAccessSaveFailed":"فشل تحديث أذونات تثبيت النماذج"},"systemMessage":{"title":"رسالة النظام","description":"عيّن رسالة نظام مخصصة ستُستخدم لجميع المحادثات الجديدة.","placeholder":"أدخل رسالة النظام...","saved":"تم حفظ رسالة النظام","saveFailed":"فشل حفظ رسالة النظام"},"plugins":{"title":"الإضافات","description":"إدارة الإضافات المثبتة","addNew":"إضافة إضافة جديدة","upload":"رفع إضافة","addJson":"إضافة JSON","uploading":"جاري الرفع...","jsonPlaceholder":"الصق إعدادات JSON للإضافة...","install":"تثبيت الإضافة","noPlugins":"لا توجد إضافات مثبتة","noPluginsDescription":"أضف إضافة لتوسيع الوظائف","loading":"جاري تحميل الإضافات...","installed":"الإضافات المثبتة","active":"الإضافات النشطة","activeLabel":"نشط","inactive":"غير نشط","activate":"تفعيل","deactivate":"إلغاء التفعيل","models":"نماذج","apiKeySet":"تم تعيين مفتاح API","apiKeyConfiguration":"إعداد مفتاح API","apiKeyEnvAlternative":"بدلاً من ذلك، عيّن","environmentVariable":"متغير البيئة","apiKeyConfigured":"تم إعداد مفتاح API","apiKeyPlaceholder":"أدخل مفتاح API...","saveApiKey":"حفظ مفتاح API","apiKey":{"title":"مفتاح API","placeholder":"أدخل مفتاح API","save":"حفظ المفتاح","remove":"إزالة المفتاح","configured":"تم إعداد مفتاح API","notConfigured":"مفتاح API مطلوب","saved":"تم حفظ مفتاح API بنجاح","removed":"تم إزالة مفتاح API","saveFailed":"فشل حفظ مفتاح API","removeFailed":"فشل إزالة مفتاح API","enterKey":"يرجى إدخال مفتاح API"},"variables":"Variables"},"generation":{"title":"خيارات التوليد","description":"إعداد كيفية توليد الذكاء الاصطناعي للاستجابات","coreParameters":"المعلمات الأساسية","temperature":"درجة الحرارة","temperatureDescription":"يتحكم في العشوائية. القيم الأقل أكثر تركيزاً، والقيم الأعلى أكثر إبداعاً.","topP":"Top P","topPDescription":"يتحكم في التنوع عبر أخذ العينات النووية. القيم الأقل تركز على الرموز المحتملة.","topK":"Top K","topKDescription":"يحد اختيار الرموز لأكثر K رمز احتمالاً. عيّن 0 للتعطيل.","minP":"Min P","minPDescription":"الحد الأدنى لاحتمال اختيار الرمز.","generationControl":"التحكم في التوليد","maxTokens":"الحد الأقصى للرموز","maxTokensDescription":"الحد الأقصى لعدد الرموز المولدة في الاستجابة.","repeatPenalty":"عقوبة التكرار","repeatPenaltyDescription":"يعاقب الرموز المتكررة. القيم الأعلى تقلل التكرار.","contextLength":"طول السياق","contextLengthDescription":"الحد الأقصى لحجم نافذة السياق للمحادثات.","seed":"البذرة","optional":"اختياري","random":"عشوائي","seedDescription":"عيّن بذرة محددة للمخرجات القابلة للتكرار.","advancedOptions":"خيارات متقدمة","presencePenalty":"عقوبة الوجود","presencePenaltyDescription":"يعاقب الرموز التي تظهر في السياق.","frequencyPenalty":"عقوبة التكرار","frequencyPenaltyDescription":"يعاقب الرموز المستخدمة بشكل متكرر.","stopSequences":"تسلسلات الإيقاف","commaSeparated":"مفصولة بفواصل","stopSequencesDescription":"رموز مخصصة ستوقف التوليد عند مصادفتها.","resetDefaults":"إعادة تعيين الافتراضيات","saveOptions":"حفظ الخيارات","embeddingSettings":"إعدادات التضمين","enableEmbeddings":"تفعيل تضمين المستندات"},"documents":{"title":"إعدادات المستندات","embeddings":{"title":"التضمينات","enable":"تفعيل تضمين المستندات","model":"نموذج التضمين","modelDescription":"اختر النموذج المستخدم لتضمين المستندات","chunkSize":"حجم القطعة","chunkSizeInTokens":"(بالرموز)","chunkSizeDescription":"حجم قطع النص للتضمين","chunkOverlap":"تداخل القطع","chunkOverlapInTokens":"(بالرموز)","chunkOverlapDescription":"التداخل بين القطع المتتالية","similarityThreshold":"عتبة التشابه","similarityDescription":"الحد الأدنى لدرجة التشابه لتضمين النتائج","status":"حالة التضمين","statusLabel":"الحالة","available":"متاح","unavailable":"غير متاح","chunksWithEmbeddings":"قطع مع تضمينات","coverage":"التغطية","regenerate":"إعادة توليد التضمينات","regenerating":"جاري إعادة التوليد..."}},"tts":{"title":"تحويل النص إلى كلام","description":"إعداد إعدادات تحويل النص إلى كلام لقراءة الرسائل بصوت عالٍ","loadingProviders":"جاري تحميل مزودي TTS...","noProviders":"لا يوجد مزودو TTS","noProvidersDescription":"قم بإعداد إضافة مع دعم TTS لتفعيل تحويل النص إلى كلام","enable":"تفعيل TTS","enableDescription":"السماح بتحويل النص إلى كلام لرسائل المساعد","autoPlay":"تشغيل تلقائي للاستجابات","autoPlayDescription":"قراءة رسائل المساعد الجديدة بصوت عالٍ تلقائياً","streamSentences":"بث الجمل","streamSentencesDescription":"تشغيل الصوت جملة بجملة بدلاً من انتظار الرسالة الكاملة. موصى به لـ TTS المحلي لتجنب انتهاء المهلة في الرسائل الطويلة.","voiceConfiguration":"إعداد الصوت","model":"نموذج TTS","modelDescription":"اختر النموذج لتوليد الكلام","voice":"الصوت","selectVoice":"اختر صوتاً","voiceDescription":"اختر الصوت لتحويل النص إلى كلام","speed":"السرعة","speedSlow":"0.5x","speedNormal":"1.0x","speedFast":"2.0x","availableProviders":"المزودون المتاحون","models":"نماذج","test":"اختبار","testing":"جاري الاختبار...","stop":"إيقاف"},"imageGen":{"title":"توليد الصور","description":"إعداد إعدادات ومزودي توليد الصور","loadingProviders":"جاري تحميل مزودي توليد الصور...","noProviders":"لا يوجد مزودو توليد صور","noProvidersDescription":"قم بإعداد إضافة مع دعم توليد الصور","enable":"تفعيل توليد الصور","enableDescription":"السماح بتوليد الصور بالذكاء الاصطناعي في المحادثات","configuration":"الإعداد","model":"النموذج","modelDescription":"اختر النموذج لتوليد الصور","size":"الحجم","sizeDescription":"دقة الصور المولدة","quality":"الجودة","qualityDescription":"مستوى جودة الصور المولدة","style":"الأسلوب","styleDescription":"إعداد الأسلوب المسبق للصور المولدة","availableProviders":"المزودون المتاحون","models":"نماذج"},"data":{"title":"إدارة البيانات","export":"تصدير البيانات","exportDescription":"تحميل جميع بياناتك بما في ذلك التفضيلات والجلسات والمستندات.","exportAll":"تصدير جميع البيانات","import":"استيراد البيانات","importDescription":"استيراد البيانات من تصدير سابق.","importData":"استيراد البيانات","importing":"جاري الاستيراد...","clearSessions":"مسح الجلسات","clearSessionsDescription":"حذف جميع جلسات المحادثة. لا يمكن التراجع عن هذا الإجراء.","clearAll":"مسح الكل","clearing":"جاري المسح...","importOptions":"خيارات الاستيراد","importOptionsDescription":"اختر كيفية التعامل مع البيانات الموجودة","skipDuplicates":"تخطي المكررات","overwrite":"الكتابة فوق الموجود","importResults":"نتائج الاستيراد","preferences":"التفضيلات","imported":"تم الاستيراد","failed":"فشل","sessions":"الجلسات","importedLabel":"تم الاستيراد","skipped":"تم التخطي","documents":"المستندات","errors":"أخطاء"},"about":{"title":"حول","versionLabel":"الإصدار","ollama":{"title":"حالة Ollama","version":"الإصدار","healthy":"سليم","unhealthy":"غير سليم"},"stats":{"models":"النماذج","sessions":"الجلسات"},"features":{"privacy":{"title":"الخصوصية أولاً","description":"بياناتك تبقى على جهازك"},"openSource":{"title":"مفتوح المصدر","description":"برنامج مجاني ومفتوح المصدر"},"localInference":{"title":"استدلال محلي","description":"تشغيل نماذج الذكاء الاصطناعي محلياً مع Ollama"}},"openSourceBy":"مفتوح المصدر بواسطة {{company}}","links":{"title":"الروابط","github":"GitHub","githubDescription":"عرض الكود المصدري والمساهمة","website":"الموقع","websiteDescription":"زيارة موقعنا","ollama":"Ollama","ollamaDescription":"معرفة المزيد عن Ollama","documentation":"التوثيق","reportIssue":"الإبلاغ عن المشاكل","reportIssueDescription":"تقارير الأخطاء وطلبات الميزات","gitlab":"مرآة GitLab","gitlabDescription":"مستودع GitLab مستضاف ذاتياً","documentationDescription":"أدلة ودروس ومرجع API"},"version":"الإصدار {{version}}"}}`),models:{title:`النماذج`,subtitle:`سحب وإدارة ومراقبة نماذج Ollama`,installed:`النماذج المثبتة`,available:`النماذج المتاحة`,pull:`سحب النموذج`,pulling:`جاري السحب...`,delete:`حذف النموذج`,deleting:`جاري الحذف...`,size:`الحجم`,modified:`تم التعديل`,family:`العائلة`,parameters:`المعلمات`,quantization:`التكميم`,noModels:`لا توجد نماذج مثبتة`,pullFirst:`اسحب نموذجاً للبدء`,noModelsFound:`لم يتم العثور على نماذج`},personas:{title:`الشخصيات`,create:`إنشاء شخصية`,edit:`تعديل الشخصية`,delete:`حذف الشخصية`,name:`الاسم`,description:`الوصف`,systemPrompt:`موجه النظام`,model:`النموذج`,avatar:`الصورة الرمزية`,background:`الخلفية`,noPersonas:`لم يتم إنشاء شخصيات`,createFirst:`أنشئ أول شخصية لتخصيص تجربة المحادثة`},gallery:{title:`المعرض`,subtitle:`معرض الصور المولدة بالذكاء الاصطناعي`,imageCount:`{{count}} صورة`,generate:`توليد صورة`,generateDescription:`إنشاء صور بالذكاء الاصطناعي`,generating:`جاري التوليد...`,prompt:`الموجه`,promptPlaceholder:`صف الصورة التي تريد توليدها...`,noImages:`لم يتم توليد صور بعد`,download:`تحميل`,delete:`حذف`,regenerate:`إعادة التوليد`,model:`النموذج`,size:`الحجم`,quality:`الجودة`,created:`تم الإنشاء`},errors:{generic:`حدث خطأ`,network:`خطأ في الشبكة. يرجى التحقق من الاتصال.`,unauthorized:`غير مصرح لك بتنفيذ هذا الإجراء.`,notFound:`لم يتم العثور على المورد المطلوب.`,serverError:`خطأ في الخادم. يرجى المحاولة لاحقاً.`,validation:`يرجى التحقق من المدخلات والمحاولة مرة أخرى.`},keyboard:{title:`اختصارات لوحة المفاتيح`,toggleSidebar:`تبديل الشريط الجانبي`,openSettings:`فتح الإعدادات`,toggleDarkMode:`تبديل الوضع الداكن`,showShortcuts:`إظهار اختصارات لوحة المفاتيح`,closeModals:`إغلاق النوافذ المنبثقة`,groups:{navigation:`التنقل`,settings:`الإعدادات`,general:`عام`,chat:`المحادثة`},actions:{sendMessage:`إرسال الرسالة`,newLine:`سطر جديد في الرسالة`},footer:`اضغط {{key1}} أو {{key2}} لإظهار هذه المساعدة`,tooltip:`اختصارات لوحة المفاتيح`},modelManager:{title:`النماذج`,loading:`جاري تحميل النماذج...`,systemStatus:{online:`Ollama متصل`,offline:`Ollama غير متصل`,models:`نموذج`,models_plural:`نماذج`,running:`قيد التشغيل`,vram:`VRAM`},sections:{pull:`سحب نموذج جديد`,library:`تصفح المكتبة`,running:`النماذج قيد التشغيل`,local:`النماذج المحلية`,advanced:`إجراءات متقدمة`,huggingface:`HuggingFace Hub`},pull:{placeholder:`أدخل اسم النموذج (مثل llama3.2:3b، deepseek-r1:14b)`,button:`سحب`,cancel:`إلغاء`,popular:`النماذج الشائعة:`,browseAll:`تصفح جميع النماذج على ollama.com`,success:`تم سحب النموذج {{name}} بنجاح`,cancelled:`تم إلغاء سحب النموذج`,failed:`فشل سحب النموذج`,enterName:`يرجى إدخال اسم النموذج`,restricted:`تثبيت النماذج مقصور على المسؤولين في هذا المثيل.`},progress:{starting:`جاري التهيئة...`,pulling:`جاري تحميل النموذج...`,pullingLayer:`تحميل`,verifying:`جاري التحقق من السلامة...`,verifyingDigest:`التحقق من تجزئة sha256`,writing:`جاري كتابة البيان...`,cleaning:`جاري التنظيف...`},library:{available:`متاح`,search:`البحث عن نماذج...`,noResults:`لم يتم العثور على نماذج تطابق معاييرك`,installed:`مثبت`,more:`+{{count}} المزيد`,refresh:`تحديث المكتبة`},local:{noModels:`لم يتم تثبيت نماذج بعد`,pullToStart:`اسحب نموذجاً أعلاه للبدء`,installed:`مثبت`,running:`قيد التشغيل`,info:`معلومات`,copy:`نسخ`,delete:`حذف`,deleteConfirm:`هل أنت متأكد من حذف النموذج "{{name}}"؟`,deleteSuccess:`تم حذف النموذج {{name}} بنجاح`,deleteFailed:`فشل حذف النموذج`},advanced:{createModel:`إنشاء نموذج`,fromModelfile:`من Modelfile`,copyModel:`نسخ نموذج`,duplicateExisting:`تكرار موجود`,testEmbeddings:`اختبار التضمينات`,generateVectors:`توليد المتجهات`,healthCheck:`فحص الصحة`,testConnection:`اختبار الاتصال`,healthy:`Ollama سليم!`},modals:{details:{title:`تفاصيل النموذج`,info:`معلومات النموذج`,family:`العائلة`,parameters:`المعلمات`,quantization:`التكميم`,format:`التنسيق`,systemPrompt:`موجه النظام`,template:`القالب`,license:`الترخيص`,modelfile:`Modelfile`,noDetails:`لا تتوفر تفاصيل`},copy:{title:`نسخ النموذج`,source:`النموذج المصدر`,selectModel:`اختر نموذجاً...`,newName:`اسم النموذج الجديد`,placeholder:`مثل my-custom-model`,copying:`جاري النسخ...`,button:`نسخ النموذج`,success:`تم نسخ النموذج إلى {{name}}`,failed:`فشل نسخ النموذج`,enterBoth:`يرجى إدخال أسماء المصدر والوجهة`},create:{title:`إنشاء نموذج مخصص`,name:`اسم النموذج`,namePlaceholder:`مثل my-assistant`,modelfile:`Modelfile`,modelfilePlaceholder:`FROM llama3.2
2
2
  SYSTEM You are a helpful assistant.`,see:`راجع`,docs:`توثيق Modelfile`,docsLink:`لمرجع الصيغة`,creating:`جاري الإنشاء...`,button:`إنشاء النموذج`,success:`تم إنشاء النموذج {{name}} بنجاح`,failed:`فشل إنشاء النموذج`,enterBoth:`يرجى إدخال اسم النموذج ومحتوى Modelfile`},embeddings:{title:`اختبار التضمينات`,model:`نموذج التضمين`,selectModel:`اختر نموذجاً...`,recommended:`موصى به: nomic-embed-text، mxbai-embed-large`,input:`نص الإدخال`,placeholder:`أدخل النص لتوليد التضمينات...`,generating:`جاري التوليد...`,button:`توليد التضمينات`,result:`النتيجة ({{count}} بُعد)`,success:`تم توليد متجه تضمين من {{count}} بُعد`,failed:`فشل توليد التضمينات`,enterBoth:`يرجى اختيار نموذج وإدخال نص`}},huggingface:{browseAll:`تصفح الكل على HuggingFace`,checkingGguf:`البحث عن ملفات GGUF...`,noGgufAvailable:`لا توجد ملفات GGUF متاحة للسحب المباشر من Ollama`,ggufFilesCount:`ملفات GGUF ({{count}}) - سحب مباشر إلى Ollama`,noModelsFound:`لم يتم العثور على نماذج`,noResults:`لم يتم العثور على نماذج. حاول تعديل البحث أو المرشحات.`,browseAllLink:`تصفح الكل`,search:`البحث في نماذج HuggingFace...`,by:`بواسطة`,gated:`وصول مقيد`,viewOnHF:`عرض على HuggingFace`,sortDownloads:`التنزيلات`,sortLikes:`الإعجابات`,sortRecent:`الأحدث`,taskTextGeneration:`توليد النص`,taskTextToSpeech:`تحويل النص إلى كلام`,taskTextToImage:`تحويل النص إلى صورة`,taskSpeechRecognition:`التعرف على الكلام`,tasks:{textGen:`توليد النص`,tts:`تحويل النص إلى كلام`,image:`تحويل النص إلى صورة`,stt:`التعرف على الكلام`},sort:{downloads:`الأكثر تنزيلاً`,likes:`الأكثر إعجاباً`,recent:`المحدثة مؤخراً`}}},personaManager:{title:`الشخصيات`,subtitle:`إنشاء وإدارة شخصيات الذكاء الاصطناعي مع شخصيات وذكريات وسلوكيات مخصصة`,loading:`جاري تحميل الشخصيات...`,createButton:`إنشاء شخصية`,importExport:`استيراد/تصدير`,stats:{title:`شخصياتك`,count:`تم إنشاء {{count}} شخصية`,count_plural:`تم إنشاء {{count}} شخصيات`},empty:{title:`لا توجد شخصيات بعد`,description:`أنشئ أول شخصية للبدء مع تفاعلات الذكاء الاصطناعي المخصصة`,button:`أنشئ شخصيتك الأولى`},deleteConfirm:`هل أنت متأكد من حذف "{{name}}"؟`,deleteSuccess:`تم حذف الشخصية "{{name}}" بنجاح`,downloadSuccess:`تم تحميل الشخصية "{{name}}" بنجاح`,failed:`فشل {{action}} الشخصية`},personaForm:{title:{create:`إنشاء شخصية جديدة`,edit:`تعديل الشخصية`},subtitle:{create:`أنشئ شخصية ذكاء اصطناعي جديدة مع شخصية مخصصة وأنظمة ذاكرة وقدرات تعلم تكيفية`,edit:`خصص شخصية الذكاء الاصطناعي مع ذاكرة متقدمة وتعلم تكيفي ومعلمات ذكية`},loading:`جاري تحميل النموذج...`,saved:`تم الحفظ`,tabs:{basic:`أساسي`,parameters:`المعلمات`,memory:`الذاكرة والتعلم`,advanced:`متقدم`},basic:{name:`الاسم`,namePlaceholder:`أدخل اسم الشخصية`,model:`النموذج`,selectModel:`اختر نموذجاً`,description:`الوصف`,descriptionPlaceholder:`صف شخصيتك...`,systemPrompt:`موجه النظام`,systemPromptPlaceholder:`أدخل موجه النظام الذي يحدد سلوك شخصيتك...`,systemPromptHint:`يحدد موجه النظام كيف ستتصرف شخصيتك وتستجيب.`},parameters:{temperature:`درجة الحرارة`,temperatureHint:`يتحكم في الإبداع مقابل الاتساق`,topP:`Top-P`,topPHint:`يتحكم في تنوع الاستجابة`,topK:`Top-K`,topKHint:`يحد المفردات لأعلى k رمز`,contextWindow:`نافذة السياق`,contextWindowHint:`الحد الأقصى لطول سجل المحادثة`,maxTokens:`الحد الأقصى للرموز`,maxTokensHint:`الحد الأقصى لطول الاستجابة`,repeatPenalty:`عقوبة التكرار`,repeatPenaltyHint:`يقلل الاستجابات المتكررة`},memory:{title:`نظام الذاكرة`,subtitle:`الشخصية تتذكر المحادثات بمرور الوقت`,enableHint:`فعّل نظام الذاكرة للسماح لشخصيتك بتذكر المحادثات وبناء السياق بمرور الوقت.`,loading:`جاري تحميل حالة الذاكرة...`,noData:`لا توجد بيانات ذاكرة بعد`,memories:`الذكريات`,mbUsed:`ميجابايت مستخدمة`,lastBackup:`آخر نسخة احتياطية`,never:`أبداً`,maxMemories:`الحد الأقصى للذكريات`,maxMemoriesHint:`كم ذكرى يمكن لهذه الشخصية تخزينها`,retention:`الاحتفاظ بالذاكرة`,retentionHint:`أيام الاحتفاظ بالذكريات قبل التنظيف`,autoCleanup:`تنظيف تلقائي للذكريات القديمة`,wipeAll:`مسح جميع الذكريات`,wipeCannot:`لا يمكن التراجع عن هذا`,wipeButton:`مسح`,wiping:`جاري المسح...`,wipeConfirm:`هل أنت متأكد من مسح جميع الذكريات؟ لا يمكن التراجع عن هذا.`,wipeSuccess:`تم مسح {{count}} ذكرى`},learning:{title:`التعلم التكيفي`,subtitle:`الشخصية تتطور بناءً على التفاعلات`,enableHint:`فعّل التعلم التكيفي للسماح لشخصيتك بالتطور وتخصيص الاستجابات بناءً على تفاعلاتك.`,speed:`سرعة التعلم`,slow:`بطيء`,slowDesc:`تغييرات تدريجية`,balanced:`متوازن`,balancedDesc:`وتيرة معتدلة`,fast:`سريع`,fastDesc:`تكيف سريع`,autoAdapt:`التكيف التلقائي مع تفضيلات المستخدم`,whatLearns:`ما تتعلمه الشخصية:`,conversationTone:`نبرة المحادثة`,responseStyle:`أسلوب الاستجابة`,userPreferences:`تفضيلات المستخدم`,topicInterests:`اهتمامات الموضوع`},advanced:{embeddingModel:`نموذج التضمين`,embeddingHint:`اختر النموذج المستخدم لتشفير الذاكرة والبحث الدلالي. يتم عرض نماذج التضمين أولاً، تليها النماذج الأخرى المتاحة.`,noModels:`لم يتم العثور على نماذج`,embeddingModels:`نماذج التضمين`,otherModels:`نماذج أخرى`,installHint:`ثبّت نموذج تضمين:`,recommended:`موصى به: nomic-embed-text، mxbai-embed-large، bge-m3، snowflake-arctic-embed`,aboutTitle:`حول الإعدادات المتقدمة`,aboutDescription:`يُستخدم نموذج التضمين بواسطة نظام الذاكرة لفهم المعنى الدلالي والعثور على الذكريات ذات الصلة أثناء المحادثات. اختر نموذجاً يتناسب مع حالة استخدامك والموارد المتاحة.`},actions:{cancel:`إلغاء`,save:`حفظ`,saving:`جاري الحفظ...`,saveClose:`حفظ وإغلاق`,create:`إنشاء`},success:{created:`تم إنشاء الشخصية`,updated:`تم تحديث الشخصية`},error:{saveFailed:`فشل الحفظ`}},personaCard:{enhanced:`محسّن`,systemPrompt:`موجه النظام`,memories:`ذكريات`,use:`استخدام`,editTooltip:`تعديل الشخصية`,downloadTooltip:`تحميل الشخصية`,backup:`نسخة احتياطية`,exportDNA:`تصدير DNA`,wipeMemories:`مسح الذكريات`,wipeConfirm:`هل أنت متأكد من مسح جميع ذكريات هذه الشخصية؟ لا يمكن التراجع عن هذا الإجراء.`,wipeSuccess:`تم مسح {{count}} ذكرى`,backupSuccess:`تم تحميل نسخة الشخصية الاحتياطية بنجاح`,dnaSuccess:`تم تصدير DNA الشخصية بنجاح`,failed:`فشل {{action}}`},userManager:{title:`إدارة المستخدمين`,subtitle:`إدارة حسابات المستخدمين والصلاحيات`,pageDescription:`إدارة حسابات المستخدمين والأذونات وعناصر التحكم في الوصول لمثيل Libre WebUI الخاص بك.`,loading:`جاري تحميل المستخدمين...`,createUser:`إنشاء مستخدم`,search:`البحث عن مستخدمين...`,noUsers:`لم يتم العثور على مستخدمين`,noUsersMatching:`لا يوجد مستخدمون يطابقون بحثك`,columns:{user:`المستخدم`,email:`البريد الإلكتروني`,role:`الدور`,created:`تم الإنشاء`,actions:`الإجراءات`},roles:{admin:`مسؤول`,user:`مستخدم`},noEmail:`لا يوجد بريد إلكتروني`,deleteConfirm:`هل أنت متأكد من حذف المستخدم "{{name}}"؟`,deleteSuccess:`تم حذف المستخدم بنجاح`,deleteFailed:`فشل حذف المستخدم`,cannotDeleteSelf:`لا يمكنك حذف حسابك الخاص`,form:{title:{create:`إنشاء مستخدم`,edit:`تعديل المستخدم`},username:`اسم المستخدم`,usernamePlaceholder:`أدخل اسم المستخدم`,email:`البريد الإلكتروني`,emailPlaceholder:`أدخل البريد الإلكتروني (اختياري)`,password:`كلمة المرور`,passwordPlaceholder:`أدخل كلمة المرور`,passwordHint:`اتركها فارغة للاحتفاظ بكلمة المرور الحالية`,role:`الدور`,creating:`جاري الإنشاء...`,updating:`جاري التحديث...`,createButton:`إنشاء مستخدم`,updateButton:`تحديث المستخدم`,createSuccess:`تم إنشاء المستخدم بنجاح`,updateSuccess:`تم تحديث المستخدم بنجاح`,createFailed:`فشل إنشاء المستخدم`,updateFailed:`فشل تحديث المستخدم`}},chatMessage:{you:`أنت`,assistant:`المساعد`,system:`النظام`,copy:`نسخ`,copyMessage:`نسخ الرسالة`,copied:`تم النسخ!`,regenerate:`إعادة التوليد`,regenerateResponse:`إعادة توليد الاستجابة`,edit:`تعديل`,editSystemMessage:`تعديل رسالة النظام`,saveChanges:`حفظ التغييرات`,cancelEditing:`إلغاء التعديل`,delete:`حذف`,deleteConfirm:`حذف هذه الرسالة؟`,branch:`تفرع`,speaking:`جاري التحدث...`,speakMessage:`نطق الرسالة`,stopSpeaking:`إيقاف التحدث`,showMore:`عرض المزيد`,showLess:`عرض أقل`,thinking:`يفكر`,systemMessagePlaceholder:`أدخل رسالة النظام...`,fullSizeImage:`صورة بالحجم الكامل`,startConversation:`ابدأ محادثة`,startConversationDescription:`أرسل رسالة للبدء في الدردشة مع مساعدك الذكي. اطرح أسئلة، احصل على مساعدة في البرمجة، أو أجرِ محادثة طبيعية.`,scrollToBottom:`انتقل إلى الأسفل`,newMessages:`رسائل جديدة`},imageGallery:{title:`معرض الصور`,noImages:`لا توجد صور بعد`,noImagesHint:`ولّد أول صورة باستخدام اللوحة على اليمين`,delete:`حذف`,download:`تحميل`,deleteConfirm:`هل أنت متأكد من حذف هذه الصورة؟`,deleteSuccess:`تم حذف الصورة`,deleteFailed:`فشل حذف الصورة`,downloadFailed:`فشل تحميل الصورة`,loadMore:`تحميل المزيد ({{current}} من {{total}})`,loadFailed:`فشل تحميل المعرض`},imageGeneration:{title:`توليد صورة`,prompt:`الموجه`,promptPlaceholder:`صف الصورة التي تريد إنشاءها...`,model:`النموذج`,selectModel:`اختر نموذجاً`,noModels:`لا توجد نماذج توليد صور متاحة`,configurePlugin:`قم بإعداد إضافة مع دعم توليد الصور`,size:`الحجم`,quality:`الجودة`,style:`الأسلوب`,generate:`توليد`,generating:`جاري التوليد...`,success:`تم توليد الصورة بنجاح`,failed:`فشل توليد الصورة`,enterPrompt:`يرجى إدخال موجه`,promptTooLong:`يتجاوز النص الحد الأقصى البالغ {{max}} حرف`},errorBoundary:{title:`حدث خطأ ما`,description:`واجهنا خطأ غير متوقع. يرجى تحديث الصفحة.`,tryAgain:`تحديث الصفحة`,goHome:`الذهاب للرئيسية`,errorDetails:`تفاصيل الخطأ (التطوير)`},documents:{title:`المستندات`,upload:`رفع مستند`,uploading:`جاري الرفع...`,noDocuments:`لم يتم رفع مستندات`,uploadHint:`ارفع مستندات لاستخدامها في محادثاتك`,delete:`حذف`,deleteConfirm:`هل أنت متأكد من حذف هذا المستند؟`,deleteSuccess:`تم حذف المستند`,deleteFailed:`فشل حذف المستند`,uploadSuccess:`تم رفع المستند بنجاح`,uploadFailed:`فشل رفع المستند`,types:`مدعوم: PDF، TXT، MD، DOCX`,unsupportedFileType:`يتم دعم ملفات PDF وTXT فقط`,fileSizeTooLarge:`يجب أن يكون حجم الملف أقل من 10 ميجابايت`,uploadSuccessWithName:`تم رفع المستند "{{name}}" بنجاح`,removeSuccess:`تم إزالة المستند بنجاح`,removeFailed:`فشل إزالة المستند`,removeError:`حدث خطأ أثناء إزالة المستند`,clickToUpload:`انقر للرفع`,orDragAndDrop:`أو اسحب وأفلت`,fileTypesAndSize:`ملفات PDF أو TXT حتى 10 ميجابايت`,uploadedDocuments:`المستندات المرفوعة`,removeDocument:`إزالة المستند`},ttsButton:{speak:`تحدث`,stop:`إيقاف`,speaking:`جاري التحدث...`,generateFailed:`فشل توليد الكلام`,playbackFailed:`فشل تشغيل الصوت`,stopSpeaking:`إيقاف التحدث`,generatingSpeech:`جاري توليد الكلام...`,readAloud:`قراءة بصوت عالٍ`},artifacts:{title:`المخرجات`,code:`الكود`,preview:`معاينة`,copy:`نسخ الكود`,copied:`تم النسخ!`,download:`تحميل`,expand:`توسيع`,collapse:`طي`,openInNewTab:`فتح في علامة تبويب جديدة`,invalidSvg:`محتوى SVG غير صالح`,invalidJson:`محتوى JSON غير صالح`,previewMode:`وضع المعاينة`,codeMode:`وضع الكود`,copyContent:`نسخ المحتوى`,openInPanel:`فتح في اللوحة`,openInNewWindow:`فتح في نافذة جديدة`,created:`تم الإنشاء`,closePanelEsc:`إغلاق اللوحة (Esc)`,copyButton:`نسخ`,open:`فتح`,dragEdgeToResize:`اسحب الحافة لتغيير الحجم`,previewUnavailable:`Preview unavailable`,previewUnavailableDescription:`This artifact does not contain renderable preview content. Switch to code view to inspect the source.`},personaImportExport:{title:`استيراد وتصدير الشخصيات`,description:`صدّر شخصياتك لمشاركتها أو استورد شخصيات من الآخرين`,exportPersonas:`تصدير الشخصيات`,importPersonas:`استيراد الشخصيات`,noPersonasToExport:`لا توجد شخصيات للتصدير`,personasAvailable:`{{count}} شخصية متاحة`,personasAvailable_plural:`{{count}} شخصيات متاحة`,exportAll:`تصدير الكل`,uploadJsonFile:`رفع ملف JSON`,pasteJsonLabel:`لصق بيانات JSON`,pasteJsonPlaceholder:`الصق بيانات JSON للشخصية هنا...`,importing:`جاري الاستيراد...`,importButton:`استيراد الشخصية/الشخصيات`,expectedFormat:`تنسيق JSON المتوقع:`,exportSuccess:`تم تصدير الشخصية "{{name}}" بنجاح`,exportFailed:`فشل تصدير الشخصية`,exportAllSuccess:`تم تصدير جميع الشخصيات {{count}} بنجاح`,exportAllFailed:`فشل تصدير الشخصيات`,pasteJsonData:`يرجى لصق بيانات JSON للشخصية`,importMultipleSuccess:`تم استيراد {{count}} شخصيات بنجاح`,importMultipleFailed:`فشل استيراد {{count}} شخصيات`,importNoneFailed:`فشل استيراد أي شخصيات`,importSuccess:`تم استيراد الشخصية بنجاح`,importFailed:`فشل استيراد الشخصية`},generationStats:{details:`التفاصيل`,promptTokens:`رموز الإدخال:`,generatedTokens:`الرموز المولدة:`,totalTokens:`إجمالي الرموز:`,speed:`السرعة:`,promptEval:`تقييم الإدخال:`,generation:`التوليد:`,modelLoad:`تحميل النموذج:`,totalTime:`الوقت الإجمالي:`,generatedAt:`تم التوليد في:`},userMenu:{loggedOut:`تم تسجيل الخروج بنجاح`,pictureUpdated:`تم تحديث صورة الملف الشخصي`,failedUpdateAvatar:`فشل تحديث الصورة الرمزية`,failedUpdatePicture:`فشل تحديث صورة الملف الشخصي`,noEmail:`لم يتم تقديم بريد إلكتروني`,changePicture:`تغيير الصورة`,settings:`الإعدادات`,userManagement:`إدارة المستخدمين`,signOut:`تسجيل الخروج`,changeProfilePicture:`تغيير صورة الملف الشخصي`},pluginManager:{title:`مدير الإضافات`,upload:`تحميل`,addJson:`إضافة JSON`,browseHF:`تصفح HF Hub`,confirmDelete:`هل أنت متأكد من حذف هذا الإضافة؟`,uploading:`جاري تحميل الإضافة...`,pasteJson:`الصق JSON الإضافة هنا...`,installPlugin:`تثبيت الإضافة`,loading:`جاري تحميل الإضافات...`,noPlugins:`لم يتم تثبيت أي إضافة`,noPluginsDescription:`قم بتحميل ملف إضافة أو أضف إضافة من JSON للبدء.`,active:`نشط`,id:`المعرف`,endpoint:`نقطة النهاية`,activate:`تفعيل`,deactivate:`تعطيل`,activePlugin:`الإضافة النشطة`,activePluginDescription:`سيتم توجيه جميع طلبات الدردشة عبر هذه الإضافة`,variables:{title:`المتغيرات`,save:`حفظ`,saving:`جاري الحفظ...`,saved:`تم حفظ المتغيرات`,saveFailed:`فشل حفظ المتغيرات`,resetDefaults:`إعادة التعيين للافتراضي`,reset:`تم إعادة تعيين المتغيرات`,sensitiveSet:`تم تعيين القيمة (أدخل قيمة جديدة للتغيير)`}},huggingface:{title:`متصفح نماذج HuggingFace`,subtitle:`تصفح واختيار النماذج من المركز`,searchPlaceholder:`البحث عن نماذج...`,filters:`عوامل التصفية`,task:`المهمة`,sortBy:`ترتيب حسب`,noModels:`لم يتم العثور على نماذج`,adjustSearch:`حاول ضبط البحث أو عوامل التصفية`,gated:`مقيد`,selected:`محدد`,select:`اختيار`,refresh:`تحديث`,modelsFound:`نماذج موجودة`},demoMode:{title:`وضع تجريبي`,github:`GitHub`},personaBackground:{label:`صورة الخلفية`,uploadBackgroundImage:`رفع صورة الخلفية`,dragAndDrop:`اسحب وأفلت صورة أو انقر للتصفح`,chooseImage:`اختيار صورة`,uploading:`جارٍ الرفع...`,enterImageUrl:`أو أدخل رابط الصورة`,supportedFormats:`يدعم: JPG, PNG, GIF, WebP (الحد الأقصى 5 ميجابايت). الصور العريضة الأفقية تعمل بشكل أفضل.`,customBackground:`صورة خلفية مخصصة`,clickToChange:`انقر للتغيير أو الإزالة`,removed:`تم إزالة الخلفية`,uploaded:`تم رفع الخلفية بنجاح`,invalidFile:`يرجى اختيار ملف صورة صالح`,fileTooLarge:`يجب أن يكون حجم صورة الخلفية أقل من 5 ميجابايت`,readFailed:`فشل في قراءة ملف الصورة`,uploadFailed:`فشل في رفع صورة الخلفية`},modelSelector:{searchInstalled:`البحث في النماذج المثبتة...`,searchOllama:`البحث في مكتبة Ollama...`,searchHuggingFace:`البحث في HuggingFace...`,selectModel:`اختر نموذجًا`,personas:`الشخصيات`,ollamaModels:`نماذج Ollama`,pluginModels:`نماذج الإضافات`,actions:`الإجراءات`,installed:`مثبت`,use:`استخدام`,pull:`تنزيل`,pullRestricted:`تثبيت النماذج مقصور على المسؤولين في هذا المثيل.`,adminOnlyPull:`للمسؤولين فقط`},libreClaw:{title:`Libre Claw`,subtitle:`يعمل الوكيل المحلي والموافقات والجداول الزمنية والذاكرة والأدوات والاستخدام.`,dashboard:`لوحة المعلومات`,connection:{disconnectedTitle:`خدمة Libre Claw غير متصلة`,disconnectedDescription:`ابدأ تشغيله محليًا باستخدام <command>libre-claw start</command> أو قم بتعيين <env>LIBRE_CLAW_BASE_URL</env> في بيئة الواجهة الخلفية.`},status:{connected:`متصل`,disconnected:`غير متصل`,activeRuns:`{{count}} نشط`,activeRuns_plural:`{{count}} نشط`},states:{queued:`في قائمة الانتظار`,running:`قيد التشغيل`,blocked:`محظور`,done:`تم`,failed:`فشل`,cancelled:`تم الإلغاء`},startRun:{title:`بدء تشغيل الوكيل`,placeholder:`اطلب من Libre Claw فحص الريبو، أو إصلاح الخلل، أو إجراء مراجعة، أو جدولة تقرير...`,chatRun:`تشغيل الدردشة`,goalMode:`وضع الهدف`,providerOverride:`تجاوز الموفر`,modelOverride:`تجاوز النموذج`,run:`تشغيل`},modelRoute:{title:`الطريق النموذجي`,providerPlaceholder:`مزود`,modelPlaceholder:`نموذج`,persistGlobal:`استمر في Libre Claw التكوين العام`,saveModel:`حفظ النموذج`,theme:`سمة Libre Claw`,saveTheme:`حفظ الموضوع`},runs:{title:`التشغيلات`,empty:`لا توجد تشغيلات Libre Claw بعد.`},timeline:{title:`الخط الزمني للتشغيل`,empty:`حدد تشغيلًا لتفقد أحداثه.`,streaming:`الجري...`,assistantResponse:`رد مساعد`,resultOk:`حسنا`,resultError:`خطأ`,labels:{userMessage:`رسالة المستخدم`,toolCall:`استدعاء الأداة`,toolResult:`نتيجة الأداة`,approvalRequest:`طلب الموافقة`,approvalResponse:`رد الموافقة`,runStarted:`بدأ التشغيل`,runFinished:`انتهى التشغيل`,usage:`الاستخدام`,error:`خطأ`}},approvals:{needed:`الموافقة مطلوبة`,allowOnce:`السماح مرة واحدة`,alwaysAllowTool:`السماح دائمًا بالأداة`,deny:`رفض`,toolApprovalRequested:`تم طلب الموافقة على الأداة`},automations:{title:`الأتمتة`,namePlaceholder:`الاسم`,schedulePlaceholder:`daily 09:00`,promptPlaceholder:`موجه الأتمتة`,create:`إنشاء`,empty:`لا توجد عمليات أتمتة مجدولة Libre Claw.`,runNow:`تشغيل الآن`,pause:`وقفة`,resume:`استئناف`,routes:{report:`تقرير`,telegram:`Telegram`},status:{active:`نشط`,paused:`متوقف مؤقتًا`}},usageFallback:{title:`الاستخدام والاحتياطي`,usage:`الاستخدام`,fallbackRoute:`الطريق الاحتياطي`,noUsage:`لا توجد سجلات استخدام حتى الآن.`},metrics:{provider:`مزود`,model:`نموذج`,input:`الإدخال`,output:`الإخراج`,cached:`مخبأة`,reasoning:`المنطق`,cost:`التكلفة`,tool:`أداة`,resolution:`القرار`,state:`الحالة`,stopReason:`سبب التوقف`,tokens:`{{formatted}} رمز مميز`,tokens_plural:`{{formatted}} الرموز`},fallbacks:{tool:`أداة`,unknown:`غير معروف`,resolved:`حلها`,unknownError:`خطأ غير معروف`},toasts:{loadStatusFailed:`لا يمكن تحميل حالة Libre Claw`,enterTask:`أدخل مهمة لـ Libre Claw`,runStarted:`بدأ تشغيل Libre Claw`,startRunFailed:`تعذر بدء تشغيل Libre Claw`,runCancelled:`تم إلغاء التشغيل`,cancelRunFailed:`تعذر إلغاء التشغيل`,approved:`تمت الموافقة عليه`,denied:`مرفوض`,resolvePermissionFailed:`لا يمكن حل الإذن`,providerModelRequired:`مطلوب الموفر والنموذج`,modelUpdated:`تم تحديث نموذج Libre Claw`,updateModelFailed:`لا يمكن تحديث النموذج`,themeUpdated:`تم تحديث سمة Libre Claw`,updateThemeFailed:`لا يمكن تحديث الموضوع`,automationRequired:`مطلوب اسم الأتمتة والجدول الزمني والموجه`,automationCreated:`تم إنشاء الأتمتة`,createAutomationFailed:`لا يمكن إنشاء الأتمتة`,automationUpdated:`تم تحديث الأتمتة`,updateAutomationFailed:`لا يمكن تحديث الأتمتة`}}};export{e as default};