libre-webui 0.17.0 โ†’ 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/backend/dist/db.d.ts.map +1 -1
  2. package/backend/dist/db.js +150 -6
  3. package/backend/dist/db.js.map +1 -1
  4. package/backend/dist/index.d.ts.map +1 -1
  5. package/backend/dist/index.js +15 -10
  6. package/backend/dist/index.js.map +1 -1
  7. package/backend/dist/middleware/auth.d.ts.map +1 -1
  8. package/backend/dist/middleware/auth.js +35 -3
  9. package/backend/dist/middleware/auth.js.map +1 -1
  10. package/backend/dist/models/userModel.d.ts +23 -0
  11. package/backend/dist/models/userModel.d.ts.map +1 -1
  12. package/backend/dist/models/userModel.js +89 -24
  13. package/backend/dist/models/userModel.js.map +1 -1
  14. package/backend/dist/routes/agentCli.d.ts.map +1 -1
  15. package/backend/dist/routes/agentCli.js +2 -0
  16. package/backend/dist/routes/agentCli.js.map +1 -1
  17. package/backend/dist/routes/auth.d.ts.map +1 -1
  18. package/backend/dist/routes/auth.js +46 -33
  19. package/backend/dist/routes/auth.js.map +1 -1
  20. package/backend/dist/routes/chat.d.ts.map +1 -1
  21. package/backend/dist/routes/chat.js +3 -1
  22. package/backend/dist/routes/chat.js.map +1 -1
  23. package/backend/dist/routes/documents.d.ts.map +1 -1
  24. package/backend/dist/routes/documents.js +49 -41
  25. package/backend/dist/routes/documents.js.map +1 -1
  26. package/backend/dist/routes/embeddings.js +2 -2
  27. package/backend/dist/routes/embeddings.js.map +1 -1
  28. package/backend/dist/routes/huggingfaceHub.d.ts.map +1 -1
  29. package/backend/dist/routes/huggingfaceHub.js +3 -1
  30. package/backend/dist/routes/huggingfaceHub.js.map +1 -1
  31. package/backend/dist/routes/imageGen.d.ts.map +1 -1
  32. package/backend/dist/routes/imageGen.js +2 -0
  33. package/backend/dist/routes/imageGen.js.map +1 -1
  34. package/backend/dist/routes/media.d.ts +3 -0
  35. package/backend/dist/routes/media.d.ts.map +1 -0
  36. package/backend/dist/routes/media.js +429 -0
  37. package/backend/dist/routes/media.js.map +1 -0
  38. package/backend/dist/routes/ollama.d.ts.map +1 -1
  39. package/backend/dist/routes/ollama.js +15 -83
  40. package/backend/dist/routes/ollama.js.map +1 -1
  41. package/backend/dist/routes/personas.d.ts.map +1 -1
  42. package/backend/dist/routes/personas.js +2 -0
  43. package/backend/dist/routes/personas.js.map +1 -1
  44. package/backend/dist/routes/plugins.d.ts.map +1 -1
  45. package/backend/dist/routes/plugins.js +28 -0
  46. package/backend/dist/routes/plugins.js.map +1 -1
  47. package/backend/dist/routes/systemDiagnostics.d.ts +3 -0
  48. package/backend/dist/routes/systemDiagnostics.d.ts.map +1 -0
  49. package/backend/dist/routes/systemDiagnostics.js +49 -0
  50. package/backend/dist/routes/systemDiagnostics.js.map +1 -0
  51. package/backend/dist/routes/tts.d.ts.map +1 -1
  52. package/backend/dist/routes/tts.js +4 -0
  53. package/backend/dist/routes/tts.js.map +1 -1
  54. package/backend/dist/routes/users.d.ts.map +1 -1
  55. package/backend/dist/routes/users.js +58 -0
  56. package/backend/dist/routes/users.js.map +1 -1
  57. package/backend/dist/routes/work.d.ts.map +1 -1
  58. package/backend/dist/routes/work.js +84 -0
  59. package/backend/dist/routes/work.js.map +1 -1
  60. package/backend/dist/services/authService.d.ts +15 -9
  61. package/backend/dist/services/authService.d.ts.map +1 -1
  62. package/backend/dist/services/authService.js +34 -29
  63. package/backend/dist/services/authService.js.map +1 -1
  64. package/backend/dist/services/chatRequestService.d.ts +8 -2
  65. package/backend/dist/services/chatRequestService.d.ts.map +1 -1
  66. package/backend/dist/services/chatRequestService.js +30 -3
  67. package/backend/dist/services/chatRequestService.js.map +1 -1
  68. package/backend/dist/services/documentService.d.ts +11 -10
  69. package/backend/dist/services/documentService.d.ts.map +1 -1
  70. package/backend/dist/services/documentService.js +62 -54
  71. package/backend/dist/services/documentService.js.map +1 -1
  72. package/backend/dist/services/encryptionService.d.ts.map +1 -1
  73. package/backend/dist/services/encryptionService.js +18 -8
  74. package/backend/dist/services/encryptionService.js.map +1 -1
  75. package/backend/dist/services/galleryService.d.ts +23 -1
  76. package/backend/dist/services/galleryService.d.ts.map +1 -1
  77. package/backend/dist/services/galleryService.js +125 -8
  78. package/backend/dist/services/galleryService.js.map +1 -1
  79. package/backend/dist/services/mediaGenerationJobService.d.ts +25 -0
  80. package/backend/dist/services/mediaGenerationJobService.d.ts.map +1 -0
  81. package/backend/dist/services/mediaGenerationJobService.js +82 -0
  82. package/backend/dist/services/mediaGenerationJobService.js.map +1 -0
  83. package/backend/dist/services/pluginAudioGenerationService.d.ts +34 -0
  84. package/backend/dist/services/pluginAudioGenerationService.d.ts.map +1 -0
  85. package/backend/dist/services/pluginAudioGenerationService.js +211 -0
  86. package/backend/dist/services/pluginAudioGenerationService.js.map +1 -0
  87. package/backend/dist/services/pluginCapabilityRegistryService.d.ts.map +1 -1
  88. package/backend/dist/services/pluginCapabilityRegistryService.js +6 -0
  89. package/backend/dist/services/pluginCapabilityRegistryService.js.map +1 -1
  90. package/backend/dist/services/pluginEmbeddingService.d.ts +2 -0
  91. package/backend/dist/services/pluginEmbeddingService.d.ts.map +1 -1
  92. package/backend/dist/services/pluginEmbeddingService.js +66 -35
  93. package/backend/dist/services/pluginEmbeddingService.js.map +1 -1
  94. package/backend/dist/services/pluginImageGenerationService.d.ts +2 -0
  95. package/backend/dist/services/pluginImageGenerationService.d.ts.map +1 -1
  96. package/backend/dist/services/pluginImageGenerationService.js +63 -38
  97. package/backend/dist/services/pluginImageGenerationService.js.map +1 -1
  98. package/backend/dist/services/pluginService.d.ts +38 -1
  99. package/backend/dist/services/pluginService.d.ts.map +1 -1
  100. package/backend/dist/services/pluginService.js +390 -69
  101. package/backend/dist/services/pluginService.js.map +1 -1
  102. package/backend/dist/services/pluginTTSService.d.ts +2 -0
  103. package/backend/dist/services/pluginTTSService.d.ts.map +1 -1
  104. package/backend/dist/services/pluginTTSService.js +27 -2
  105. package/backend/dist/services/pluginTTSService.js.map +1 -1
  106. package/backend/dist/services/pluginUsageService.d.ts +82 -0
  107. package/backend/dist/services/pluginUsageService.d.ts.map +1 -0
  108. package/backend/dist/services/pluginUsageService.js +238 -0
  109. package/backend/dist/services/pluginUsageService.js.map +1 -0
  110. package/backend/dist/services/pluginVideoGenerationService.d.ts +45 -0
  111. package/backend/dist/services/pluginVideoGenerationService.d.ts.map +1 -0
  112. package/backend/dist/services/pluginVideoGenerationService.js +198 -0
  113. package/backend/dist/services/pluginVideoGenerationService.js.map +1 -0
  114. package/backend/dist/services/preferencesService.d.ts.map +1 -1
  115. package/backend/dist/services/preferencesService.js +15 -1
  116. package/backend/dist/services/preferencesService.js.map +1 -1
  117. package/backend/dist/services/registrationPolicy.d.ts +5 -0
  118. package/backend/dist/services/registrationPolicy.d.ts.map +1 -0
  119. package/backend/dist/services/registrationPolicy.js +21 -0
  120. package/backend/dist/services/registrationPolicy.js.map +1 -0
  121. package/backend/dist/services/simpleGitHubOAuth.d.ts.map +1 -1
  122. package/backend/dist/services/simpleGitHubOAuth.js +8 -12
  123. package/backend/dist/services/simpleGitHubOAuth.js.map +1 -1
  124. package/backend/dist/services/simpleHuggingFaceOAuth.d.ts.map +1 -1
  125. package/backend/dist/services/simpleHuggingFaceOAuth.js +7 -12
  126. package/backend/dist/services/simpleHuggingFaceOAuth.js.map +1 -1
  127. package/backend/dist/services/systemDiagnosticsService.d.ts +117 -0
  128. package/backend/dist/services/systemDiagnosticsService.d.ts.map +1 -0
  129. package/backend/dist/services/systemDiagnosticsService.js +326 -0
  130. package/backend/dist/services/systemDiagnosticsService.js.map +1 -0
  131. package/backend/dist/services/turnstileService.d.ts +2 -1
  132. package/backend/dist/services/turnstileService.d.ts.map +1 -1
  133. package/backend/dist/services/turnstileService.js +28 -2
  134. package/backend/dist/services/turnstileService.js.map +1 -1
  135. package/backend/dist/services/workModelProviderService.d.ts +3 -0
  136. package/backend/dist/services/workModelProviderService.d.ts.map +1 -1
  137. package/backend/dist/services/workModelProviderService.js +37 -4
  138. package/backend/dist/services/workModelProviderService.js.map +1 -1
  139. package/backend/dist/services/workPreviewProxyService.d.ts +27 -0
  140. package/backend/dist/services/workPreviewProxyService.d.ts.map +1 -0
  141. package/backend/dist/services/workPreviewProxyService.js +514 -0
  142. package/backend/dist/services/workPreviewProxyService.js.map +1 -0
  143. package/backend/dist/services/workRuntimeService.d.ts +22 -1
  144. package/backend/dist/services/workRuntimeService.d.ts.map +1 -1
  145. package/backend/dist/services/workRuntimeService.js +287 -8
  146. package/backend/dist/services/workRuntimeService.js.map +1 -1
  147. package/backend/dist/storage.d.ts.map +1 -1
  148. package/backend/dist/storage.js +3 -3
  149. package/backend/dist/storage.js.map +1 -1
  150. package/backend/dist/types/index.d.ts +77 -1
  151. package/backend/dist/types/index.d.ts.map +1 -1
  152. package/backend/dist/types/index.js.map +1 -1
  153. package/backend/dist/types/work.d.ts +31 -0
  154. package/backend/dist/types/work.d.ts.map +1 -1
  155. package/backend/dist/utils/chatDocumentContext.d.ts +1 -1
  156. package/backend/dist/utils/chatDocumentContext.d.ts.map +1 -1
  157. package/backend/dist/utils/chatDocumentContext.js +4 -4
  158. package/backend/dist/utils/chatDocumentContext.js.map +1 -1
  159. package/backend/dist/utils/pluginDefinitionTrust.js +1 -1
  160. package/backend/dist/utils/pluginValidation.d.ts +3 -2
  161. package/backend/dist/utils/pluginValidation.d.ts.map +1 -1
  162. package/backend/dist/utils/pluginValidation.js +30 -2
  163. package/backend/dist/utils/pluginValidation.js.map +1 -1
  164. package/backend/dist/utils/workGit.d.ts +14 -0
  165. package/backend/dist/utils/workGit.d.ts.map +1 -0
  166. package/backend/dist/utils/workGit.js +207 -0
  167. package/backend/dist/utils/workGit.js.map +1 -0
  168. package/backend/dist/websocketServer.d.ts +1 -0
  169. package/backend/dist/websocketServer.d.ts.map +1 -1
  170. package/backend/dist/websocketServer.js +108 -24
  171. package/backend/dist/websocketServer.js.map +1 -1
  172. package/backend/dist/workTerminalServer.d.ts.map +1 -1
  173. package/backend/dist/workTerminalServer.js +3 -1
  174. package/backend/dist/workTerminalServer.js.map +1 -1
  175. package/backend/package.json +1 -1
  176. package/frontend/dist/assets/index-ChhWhug2.css +1 -0
  177. package/frontend/dist/assets/index-CmZntyR1.js +3 -0
  178. package/frontend/dist/index.html +26 -6
  179. package/frontend/dist/js/ArtifactContainer-CBAbdoIJ.js +1 -0
  180. package/frontend/dist/js/{ArtifactDemoPage-B4qsvUnF.js โ†’ ArtifactDemoPage-BWN0MWCx.js} +1 -1
  181. package/frontend/dist/js/ArtifactSlideOutPanel-D-AvYkfk.js +1 -0
  182. package/frontend/dist/js/ChatPage-w2FkF_fE.js +16 -0
  183. package/frontend/dist/js/FirstTimeSetup-CzBxl7UH.js +1 -0
  184. package/frontend/dist/js/GalleryPage-Cv8pniRW.js +1 -0
  185. package/frontend/dist/js/HomePage-Vyj4ndU4.js +1 -0
  186. package/frontend/dist/js/LibreClawPage-CYhLgQB-.js +1 -0
  187. package/frontend/dist/js/{ModelManagerModals-DMoEav1l.js โ†’ ModelManagerModals-C2rwHd01.js} +1 -1
  188. package/frontend/dist/js/ModelSelector-D7kDjZV9.js +1 -0
  189. package/frontend/dist/js/ModelsPage-BnUddkrs.js +2 -0
  190. package/frontend/dist/js/PersonasPage-BL5XlrEm.js +13 -0
  191. package/frontend/dist/js/PluginUsagePage-BXqweCCs.js +1 -0
  192. package/frontend/dist/js/{RichMessageContent-BJ49VN9j.js โ†’ RichMessageContent-nAEaPTpH.js} +2 -2
  193. package/frontend/dist/js/SettingsModal-DZYCI5-y.js +1 -0
  194. package/frontend/dist/js/SystemPage-jdHYfn9A.js +1 -0
  195. package/frontend/dist/js/UserManagementPage-BpOnt6os.js +1 -0
  196. package/frontend/dist/js/WorkPage-DAp1T1dl.js +5 -0
  197. package/frontend/dist/js/api-BCqWXjZI.js +19 -0
  198. package/frontend/dist/js/appStore-CDM6V5ny.js +2 -0
  199. package/frontend/dist/js/ar-DS8gs8WK.js +2 -0
  200. package/frontend/dist/js/{authStore-mOYH_AXI.js โ†’ authStore-Bl5ofD_h.js} +3 -3
  201. package/frontend/dist/js/bn-CrMPJwTR.js +2 -0
  202. package/frontend/dist/js/cs-BL116Ezu.js +2 -0
  203. package/frontend/dist/js/da-TDNaKzqy.js +2 -0
  204. package/frontend/dist/js/de-DkIqdAB5.js +2 -0
  205. package/frontend/dist/js/es-CHRXt6Fd.js +2 -0
  206. package/frontend/dist/js/{estree-0vwU39qX.js โ†’ estree-BFya-bSu.js} +1 -1
  207. package/frontend/dist/js/fr-8715yUKq.js +2 -0
  208. package/frontend/dist/js/hi-C2O08SBU.js +2 -0
  209. package/frontend/dist/js/{html-CApr2Bvi.js โ†’ html-DJot0Wwf.js} +1 -1
  210. package/frontend/dist/js/id-Dq7UXUEV.js +2 -0
  211. package/frontend/dist/js/is-B3dbbhSl.js +2 -0
  212. package/frontend/dist/js/it-CLSuu2K7.js +2 -0
  213. package/frontend/dist/js/ja-CthrqyCR.js +2 -0
  214. package/frontend/dist/js/ko-BJvFDJ82.js +2 -0
  215. package/frontend/dist/js/{markdown-C78Qc6xu.js โ†’ markdown-CXwWsPYG.js} +1 -1
  216. package/frontend/dist/js/ms-QV0202Mj.js +2 -0
  217. package/frontend/dist/js/nl-Dob1m1pV.js +2 -0
  218. package/frontend/dist/js/pl-urfOKnYI.js +2 -0
  219. package/frontend/dist/js/pt-D52Xkpi0.js +2 -0
  220. package/frontend/dist/js/ru-CwnW9Xe2.js +2 -0
  221. package/frontend/dist/js/{standalone-DmLfI4Qj.js โ†’ standalone-C0NjJpWr.js} +1 -1
  222. package/frontend/dist/js/sv-BNclj-Fo.js +2 -0
  223. package/frontend/dist/js/th-BlQ4PL57.js +2 -0
  224. package/frontend/dist/js/tr-B80aZ1px.js +2 -0
  225. package/frontend/dist/js/{typescript-Bcq62agC.js โ†’ typescript-d0TUM2-0.js} +1 -1
  226. package/frontend/dist/js/ui-vendor-ChfdHf5M.js +177 -0
  227. package/frontend/dist/js/uk-DZuuaI56.js +2 -0
  228. package/frontend/dist/js/vi-Bg42fPfF.js +2 -0
  229. package/frontend/dist/js/zh-BSt87zs6.js +2 -0
  230. package/package.json +3 -3
  231. package/plugins/openrouter.json +89 -0
  232. package/backend/dist/services/systemSettingsService.d.ts +0 -12
  233. package/backend/dist/services/systemSettingsService.d.ts.map +0 -1
  234. package/backend/dist/services/systemSettingsService.js +0 -70
  235. package/backend/dist/services/systemSettingsService.js.map +0 -1
  236. package/frontend/dist/assets/index-BqI0kezz.css +0 -1
  237. package/frontend/dist/assets/index-CRC6g6bL.js +0 -3
  238. package/frontend/dist/js/ArtifactContainer-Cdy-973y.js +0 -1
  239. package/frontend/dist/js/ArtifactSlideOutPanel-CmKgQ4eD.js +0 -1
  240. package/frontend/dist/js/ChatPage-CYT69oBR.js +0 -16
  241. package/frontend/dist/js/FirstTimeSetup-C8LdLP5J.js +0 -1
  242. package/frontend/dist/js/GalleryPage-Bm89pnS8.js +0 -1
  243. package/frontend/dist/js/HomePage-CeCYnMUG.js +0 -1
  244. package/frontend/dist/js/LibreClawPage-DGMEV6dm.js +0 -1
  245. package/frontend/dist/js/ModelSelector-DXPdGdQ_.js +0 -1
  246. package/frontend/dist/js/ModelsPage-D-FIy2x-.js +0 -2
  247. package/frontend/dist/js/PersonasPage-CIrEVFo5.js +0 -13
  248. package/frontend/dist/js/SettingsModal-CxtOXPY7.js +0 -1
  249. package/frontend/dist/js/UserManagementPage-BfyYGGFQ.js +0 -1
  250. package/frontend/dist/js/WorkPage-C7bW6Hxx.js +0 -4
  251. package/frontend/dist/js/api-DCD41-l9.js +0 -19
  252. package/frontend/dist/js/appStore-Bw-8Exsx.js +0 -2
  253. package/frontend/dist/js/ar-BAHlIvy0.js +0 -2
  254. package/frontend/dist/js/bn-BxquDVbd.js +0 -2
  255. package/frontend/dist/js/cs-C4DoKzRm.js +0 -2
  256. package/frontend/dist/js/da-CFslpGTw.js +0 -2
  257. package/frontend/dist/js/de-ChudoRh2.js +0 -2
  258. package/frontend/dist/js/es-B36fefE-.js +0 -2
  259. package/frontend/dist/js/fr-BSVeTM5W.js +0 -2
  260. package/frontend/dist/js/hi-BGoFbl5V.js +0 -2
  261. package/frontend/dist/js/id-BfYs2p_j.js +0 -2
  262. package/frontend/dist/js/is-DZ1MS-5A.js +0 -2
  263. package/frontend/dist/js/it-CXtrPCG1.js +0 -2
  264. package/frontend/dist/js/ja-FPJ_NK_y.js +0 -2
  265. package/frontend/dist/js/ko-DVwD4ZZF.js +0 -2
  266. package/frontend/dist/js/ms-PKPP0RX3.js +0 -2
  267. package/frontend/dist/js/nl-DWM5HJZ8.js +0 -2
  268. package/frontend/dist/js/pl-B9va8Tuf.js +0 -2
  269. package/frontend/dist/js/pt-P0IQi-Zr.js +0 -2
  270. package/frontend/dist/js/ru-Ca2bxYnc.js +0 -2
  271. package/frontend/dist/js/sv-DI4RDwyZ.js +0 -2
  272. package/frontend/dist/js/th-DN0bDS9d.js +0 -2
  273. package/frontend/dist/js/tr-ChqMv5Q4.js +0 -2
  274. package/frontend/dist/js/ui-vendor-DohPFHDW.js +0 -177
  275. package/frontend/dist/js/uk-Cr51h_XQ.js +0 -2
  276. package/frontend/dist/js/useBaseQuery-BAOlhjar.js +0 -1
  277. package/frontend/dist/js/useQuery-CcRqxveh.js +0 -1
  278. package/frontend/dist/js/vi-D4OhoVMH.js +0 -2
  279. package/frontend/dist/js/zh-Bvau7hlR.js +0 -2
@@ -0,0 +1,19 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/authStore-Bl5ofD_h.js","js/rolldown-runtime-QTnfLwEv.js","js/router-vendor-BjDI9mRe.js","js/markdown-core-GI9BPwrB.js","js/ui-vendor-ChfdHf5M.js","js/utils-vendor-Cbaj0BC5.js","js/demoMode-BhEpMVh5.js","js/logger-DbNs3-DK.js","js/utils-DmZD5uA3.js","js/appStore-CDM6V5ny.js"])))=>i.map(i=>d[i]);
2
+ import{n as e}from"./rolldown-runtime-QTnfLwEv.js";import{i as t,p as n}from"./router-vendor-BjDI9mRe.js";import{a as r}from"./utils-vendor-Cbaj0BC5.js";import{n as i}from"./demoMode-BhEpMVh5.js";import{n as a,t as o}from"./logger-DbNs3-DK.js";var s=o(`config`),c=window.location.protocol===`file:`?`http://localhost:3001/api`:`${window.location.origin}/api`,l=a(),u=()=>{l&&(s.debug(`API_BASE_URL configured as:`,c),s.debug(`Window location:`,window.location),s.debug(`Environment variables:`,{BASE_URL:`/`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_APP_VERSION:`0.18.0`}))},d=o(`api`);u(),d.debug(`User agent:`,navigator.userAgent),d.debug(`Demo mode detected:`,i());var f=(e,t=!0)=>new Promise(n=>{setTimeout(()=>{n({success:t,data:e,error:t?void 0:`Demo mode: Backend not available`})},500)}),p=r.create({baseURL:c,timeout:3e5});p.interceptors.request.use(e=>{let t=localStorage.getItem(`auth-token`);return t&&(e.headers.Authorization=`Bearer ${t}`),e},e=>Promise.reject(e)),p.interceptors.response.use(e=>e,e=>{if(e.response?.status===401){d.warn(`Session expired or unauthorized, logging out...`),localStorage.removeItem(`auth-token`),t(async()=>{let{useAuthStore:e}=await import(`./authStore-Bl5ofD_h.js`).then(e=>e.t);return{useAuthStore:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])).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 d.error(`API Error:`,e),Promise.reject(e)});var ee={getModels:()=>i()?f([]):p.get(`/agent-clis/models`).then(e=>e.data)},m=`0.18.0`,h={login:e=>i()?f({user:{id:`demo-user`,username:`demo`,email:`demo@example.com`,role:`admin`,status:`active`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()},token:`demo-token`,systemInfo:{requiresAuth:!0,hasUsers:!0,userCount:1,signupEnabled:!0,version:m}}):p.post(`/auth/login`,e).then(e=>e.data),signup:e=>i()?f({user:{id:`demo-user-new`,username:e.username,email:e.email||``,role:`user`,status:`active`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()},token:`demo-token-new`,systemInfo:{requiresAuth:!0,hasUsers:!0,userCount:1,signupEnabled:!0,version:m,turnstile:{enabled:!1}}}):p.post(`/auth/signup`,e).then(e=>e.data),logout:()=>i()?f(void 0):p.post(`/auth/logout`).then(e=>e.data),getSystemInfo:()=>(d.debug(`getSystemInfo called, demo mode:`,i()),i()?f({requiresAuth:!0,hasUsers:!0,userCount:1,signupEnabled:!0,version:m,turnstile:{enabled:!1}}):(d.debug(`Making API call to:`,c+`/auth/system-info`),d.debug(`Full URL from:`,window.location.origin,`-> API:`,c+`/auth/system-info`),p.get(`/auth/system-info`).then(e=>(d.debug(`getSystemInfo response:`,e.data),e.data)).catch(e=>{throw d.debug(`getSystemInfo error:`,e),e.response&&(d.debug(`Error response data:`,e.response.data),d.debug(`Error status:`,e.response.status),d.debug(`Error headers:`,e.response.headers)),e.request&&d.debug(`Network error - no response received:`,e.request),d.debug(`Error config:`,e.config),e}))),verifyToken:()=>i()?f({id:`demo-user`,username:`demo`,email:`demo@example.com`,role:`admin`,status:`active`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):p.get(`/auth/verify`).then(e=>e.data),getEncryptionKey:()=>i()?f({encryptionKey:`demo-encryption-key-not-real`}):p.get(`/auth/encryption-key`).then(e=>e.data)},te={getUsers:()=>i()?f([{id:`demo-user`,username:`demo`,email:`demo@example.com`,role:`admin`,status:`active`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}]):p.get(`/users`).then(e=>e.data),createUser:e=>i()?f({id:`new-user-`+Date.now(),username:e.username,email:e.email,role:e.role,status:`active`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):p.post(`/users`,e).then(e=>e.data),updateUser:(e,t)=>i()?f({id:e,username:t.username||`demo`,email:t.email||`demo@example.com`,role:t.role||`user`,status:`active`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):p.patch(`/users/${e}`,t).then(e=>e.data),deleteUser:e=>i()?f(void 0):p.delete(`/users/${e}`).then(e=>e.data),getPendingApprovals:()=>i()?f({count:0,latestCreatedAt:null}):p.get(`/users/pending-approvals`).then(e=>e.data),approveUser:e=>i()?f({id:e,username:`demo-user`,email:`demo@example.com`,role:`user`,status:`active`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):p.patch(`/users/${e}/approve`).then(e=>e.data),updateMyAvatar:e=>i()?f({id:`demo-user`,username:`demo`,email:`demo@example.com`,role:`admin`,status:`active`,avatar:e,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):p.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,providerType:`ollama`,providerId:null,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`,defaultProviderType:`ollama`,defaultProviderId:null,visionModel:``,visionProviderType:null,visionProviderId:null,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:``,taskProviderType:null,taskProviderId:null},showUsername:!1,workRemoteProviderDisclosureDismissed:!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}},ne=()=>b,x=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},S={getSessions:()=>p.get(`/chat/sessions`).then(e=>e.data),createSession:(e,t,n,r,i)=>p.post(`/chat/sessions`,{model:e,title:t,personaId:n,providerType:r,providerId:i}).then(e=>e.data),getSession:e=>{if(i()){let t=_().find(t=>t.id===e);return t?f(t):Promise.resolve({success:!1,error:`Session not found in demo mode`})}return p.get(`/chat/sessions/${e}`).then(e=>e.data)},updateSession:(e,t)=>{if(i()){let n=v.findIndex(t=>t.id===e),r=v[n];if(r){let e={...r,...t,updatedAt:Date.now()};return v[n]=e,f(e)}return Promise.resolve({success:!1,error:`Session not found in demo mode`})}return p.put(`/chat/sessions/${e}`,t).then(e=>e.data)},deleteSession:e=>i()?f(null):p.delete(`/chat/sessions/${e}`).then(e=>e.data),clearAllSessions:()=>p.delete(`/chat/sessions`).then(e=>e.data),generateTitle:(e,t,n,r,a)=>i()?f({title:n.substring(0,30)+(n.length>30?`...`:``),source:`fallback`,updatedAt:Date.now()}):p.post(`/chat/sessions/${e}/generate-title`,{model:t,message:n,providerType:r,providerId:a}).then(e=>e.data),sendMessage:(e,t,n)=>p.post(`/chat/sessions/${e}/messages`,{content:t,options:n}).then(e=>e.data),saveMessage:(e,t)=>p.post(`/chat/sessions/${e}/messages`,t).then(e=>e.data),updateMessage:(e,t,n)=>i()?f({}):p.put(`/chat/sessions/${e}/messages/${t}`,n).then(e=>e.data),generateChatResponse:(e,t,n)=>p.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(`${c}/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 s=o.body?.getReader();if(!s)throw Error(`No response body reader available`);let l=new TextDecoder,u=``,f=()=>{s.read().then(({done:e,value:t})=>{if(e){a?.();return}u+=l.decode(t,{stream:!0});let n=u.split(`
3
+ `);u=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){d.error(`Failed to parse SSE data:`,e)}}}f()}).catch(e=>{i?.(e instanceof Error?e:Error(String(e)))})};return f(),()=>s.cancel()}catch(e){return i?.(e instanceof Error?e:Error(String(e))),()=>{}}}}),getMessageBranches:(e,t)=>i()?f([]):p.get(`/chat/sessions/${e}/messages/${t}/branches`).then(e=>e.data),switchMessageBranch:(e,t,n)=>i()?f({}):p.post(`/chat/sessions/${e}/messages/${t}/branch`,{branchIndex:n}).then(e=>e.data),createMessageBranch:(e,t,n)=>i()?f({}):p.post(`/chat/sessions/${e}/messages/${t}/branches`,{...n}).then(e=>e.data)},C={uploadDocument:(e,t)=>{if(i())return f({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),p.post(`/documents/upload`,n).then(e=>e.data)},getDocuments:e=>{if(i())return f([]);let t=e?`/documents/session/${e}`:`/documents`;return p.get(t).then(e=>e.data)},getDocument:e=>i()?f({id:e,filename:`demo-document.pdf`,fileType:`pdf`,size:1024,content:`Demo document content...`,uploadedAt:Date.now()}):p.get(`/documents/${e}`).then(e=>e.data),searchDocuments:(e,t,n)=>i()?f([]):p.post(`/documents/search`,{query:e,sessionId:t,limit:n}).then(e=>e.data),deleteDocument:e=>i()?f(void 0):p.delete(`/documents/${e}`).then(e=>e.data),getEmbeddingStatus:()=>i()?f({available:!1,model:`nomic-embed-text`,chunksWithEmbeddings:0,totalChunks:0}):p.get(`/documents/embeddings/status`).then(e=>e.data),regenerateEmbeddings:()=>i()?f(void 0):p.post(`/documents/embeddings/regenerate`).then(e=>e.data)},re={getModels:()=>i()?f([{id:`nomic-embed-text`,name:`nomic-embed-text`,description:`Ollama - Default embedding model`,provider:`ollama`,dimensions:0,isDetectedEmbedding:!0}]):p.get(`/embeddings/models`).then(e=>e.data)},ie={getModels:e=>i()?f([{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}]):p.get(`/huggingface-hub/models`,{params:e}).then(e=>e.data),getTrending:e=>i()?f([]):p.get(`/huggingface-hub/trending`,{params:e}).then(e=>e.data),getModel:(e,t)=>i()?f({id:`${e}/${t}`,modelId:`${e}/${t}`,author:e,downloads:0,likes:0,tags:[],gated:!1}):p.get(`/huggingface-hub/models/${e}/${t}`).then(e=>e.data),getTasks:()=>i()?f([`text-generation`,`text-to-speech`,`text-to-image`]):p.get(`/huggingface-hub/tasks`).then(e=>e.data),clearCache:()=>i()?f(!0):p.post(`/huggingface-hub/cache/clear`).then(e=>e.data),getGgufFiles:(e,t)=>i()?f([{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`}]):p.get(`/huggingface-hub/models/${e}/${t}/gguf`).then(e=>e.data),hasGgufFiles:(e,t)=>i()?f({hasGguf:!1,count:0}):p.get(`/huggingface-hub/models/${e}/${t}/has-gguf`).then(e=>e.data)},w=/^data:image\/[a-z0-9][a-z0-9.+-]*(?:;[a-z0-9!#$&^_.+-]+=[^;,]*)*;base64,[a-z0-9+/]+={0,2}$/i,T=/^data:(image\/[a-z0-9][a-z0-9.+-]*)(?:;[a-z0-9!#$&^_.+-]+=[^;,]*)*;base64,/i,E={"image/jpg":`image/jpeg`,"image/x-png":`image/png`},D=new Set([`image/apng`,`image/avif`,`image/bmp`,`image/gif`,`image/heic`,`image/heif`,`image/jpeg`,`image/png`,`image/tiff`,`image/vnd.microsoft.icon`,`image/webp`,`image/x-icon`]);function O(e){if(!e)return null;let t=e.split(`;`,1)[0].trim().toLowerCase(),n=E[t]||t;return D.has(n)?n:null}function k(e,t,n){if(t)return e.find(e=>e.model===t&&(!n||e.plugin===n))}function ae(e,t,n){let r=k(e,t,n);return r||n?r:e[0]}function oe(e,t){return t?.pluginId?e.find(e=>e.id===t.pluginId):(t?.model?e.find(e=>e.models.includes(t.model)):void 0)||e[0]}function se(e){let t=e.b64_json?.trim();if(t)return`data:${O(e.mime_type)||`image/png`};base64,${t}`;let n=e.url?.trim();if(!n)return null;let r=T.exec(n)?.[1];if(w.test(n)&&O(r))return n;try{let e=new URL(n);return e.protocol===`http:`||e.protocol===`https:`?n:null}catch{return null}}function ce(e){switch(T.exec(e.trim())?.[1].toLowerCase()){case`image/jpeg`:case`image/jpg`:return`jpg`;case`image/webp`:return`webp`;case`image/gif`:return`gif`;case`image/avif`:return`avif`;default:return`png`}}function A(e){return`${encodeURIComponent(e.plugin)}::${encodeURIComponent(e.model)}`}function j(e,t,n,r){let i=(e??[]).filter(Boolean);return i.length===0?t||n||r:t&&i.includes(t)?t:n&&i.includes(n)?n:i[0]}var M={getModels:()=>i()?f([{model:`gpt-image-2`,plugin:`openai`,config:{sizes:[`1024x1024`,`1536x1024`,`1024x1536`],default_size:`1024x1024`,qualities:[`auto`,`low`,`medium`,`high`],default_quality:`auto`}}]):p.get(`/image-gen/models`).then(e=>e.data),getPlugins:()=>i()?f([{id:`openai`,name:`OpenAI GPT Image`,models:[`gpt-image-2`,`gpt-image-1.5`,`gpt-image-1`,`gpt-image-1-mini`],config:{sizes:[`1024x1024`,`1536x1024`,`1024x1536`],default_size:`1024x1024`,qualities:[`auto`,`low`,`medium`,`high`],default_quality:`auto`}}]):p.get(`/image-gen/plugins`).then(e=>e.data),getConfig:e=>i()?f({sizes:[`1024x1024`,`1536x1024`,`1024x1536`],default_size:`1024x1024`,qualities:[`auto`,`low`,`medium`,`high`],default_quality:`auto`}):p.get(`/image-gen/config/${e}`).then(e=>e.data),generate:e=>i()?f({images:[{url:`https://placehold.co/1024x1024/purple/white?text=Demo+Image`,revised_prompt:e.prompt}],model:e.model,pluginId:e.pluginId}):p.post(`/image-gen/generate`,e).then(e=>e.data),getGallery:e=>i()?f({images:[],total:0}):p.get(`/image-gen/gallery`,{params:e}).then(e=>e.data),getGalleryImage:e=>i()?f({id:e,userId:`demo`,prompt:`Demo image prompt`,model:`dall-e-3`,imageData:`https://placehold.co/1024x1024/purple/white?text=Demo`,createdAt:Date.now()}):p.get(`/image-gen/gallery/${e}`).then(e=>e.data),deleteGalleryImage:e=>i()?f(void 0):p.delete(`/image-gen/gallery/${e}`).then(e=>e.data)},N={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.`},P={status:()=>i()?f(N):p.get(`/libre-claw/status`).then(e=>e.data),dashboard:()=>i()?f({url:N.dashboardUrl}):p.get(`/libre-claw/dashboard`).then(e=>e.data),currentModel:()=>i()?f({provider:`openrouter`,model:`openrouter/auto`}):p.get(`/libre-claw/config/model`).then(e=>e.data),updateModel:(e,t,n=!1)=>i()?f({provider:e,model:t,persist_global:n}):p.patch(`/libre-claw/config/model`,{provider:e,model:t,persist_global:n}).then(e=>e.data),currentFallback:()=>i()?f({enabled:!1,routes:[]}):p.get(`/libre-claw/config/fallback`).then(e=>e.data),updateFallback:e=>i()?f(e):p.patch(`/libre-claw/config/fallback`,e).then(e=>e.data),updateTheme:(e,t=!0)=>i()?f({theme:e,label:e,persist_global:t}):p.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),i()?f({summary:{},records:[],text:``}):p.get(`/libre-claw/usage?${n.toString()}`).then(e=>e.data)},listRuns:(e=20)=>i()?f({runs:[]}):p.get(`/libre-claw/runs?limit=${e}`).then(e=>e.data),startRun:e=>{if(i()){let t=new Date().toISOString();return f({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 p.post(`/libre-claw/runs`,e).then(e=>e.data)},getRun:e=>i()?f({run_id:e}):p.get(`/libre-claw/runs/${encodeURIComponent(e)}`).then(e=>e.data),getEvents:(e,t=0)=>i()?f({events:[]}):p.get(`/libre-claw/runs/${encodeURIComponent(e)}/events?after=${t}`).then(e=>e.data),cancelRun:e=>i()?f({run_id:e,cancelled:!0}):p.post(`/libre-claw/runs/${encodeURIComponent(e)}/cancel`).then(e=>e.data),resolvePermission:(e,t,n)=>i()?f({run_id:e,tool_call_id:t,resolution:n}):p.post(`/libre-claw/runs/${encodeURIComponent(e)}/permissions/${encodeURIComponent(t)}`,{resolution:n}).then(e=>e.data),listAutomations:(e=50)=>i()?f({automations:[]}):p.get(`/libre-claw/automations?limit=${e}`).then(e=>e.data),createAutomation:e=>i()?f({...e,automation_id:`demo-${Date.now()}`}):p.post(`/libre-claw/automations`,e).then(e=>e.data),updateAutomation:(e,t)=>i()?f({...t,automation_id:e}):p.patch(`/libre-claw/automations/${encodeURIComponent(e)}`,t).then(e=>e.data),pauseAutomation:e=>i()?f({automation_id:e,status:`paused`}):p.post(`/libre-claw/automations/${encodeURIComponent(e)}/pause`).then(e=>e.data),resumeAutomation:e=>i()?f({automation_id:e,status:`active`}):p.post(`/libre-claw/automations/${encodeURIComponent(e)}/resume`).then(e=>e.data),runAutomationNow:e=>i()?f({automation_id:e,run:!0}):p.post(`/libre-claw/automations/${encodeURIComponent(e)}/run`).then(e=>e.data),deleteAutomation:e=>i()?f({automation_id:e,deleted:!0}):p.delete(`/libre-claw/automations/${encodeURIComponent(e)}`).then(e=>e.data)},F={getModels:()=>p.get(`/media/models`).then(e=>e.data),generateAudio:e=>p.post(`/media/audio/generate`,e).then(e=>e.data),generateSound:e=>p.post(`/media/sound/generate`,e).then(e=>e.data),generateVideo:e=>p.post(`/media/video/generate`,e).then(e=>e.data),getVideoJob:e=>p.get(`/media/video/jobs/${e}`).then(e=>e.data),getGallery:e=>p.get(`/media/gallery`,{params:e}).then(e=>e.data),deleteGalleryItem:e=>p.delete(`/media/gallery/${e}`).then(e=>e.data),getGalleryContent:e=>p.get(`/media/gallery/${e}/content`,{responseType:`blob`}).then(e=>e.data)},I=(e,t,n)=>{let r=new AbortController,i=localStorage.getItem(`auth-token`);return(async()=>{try{let n=await fetch(e,{headers:{Accept:`text/event-stream`,...i?{Authorization:`Bearer ${i}`}:{}},cache:`no-store`,credentials:`same-origin`,signal:r.signal});if(!n.ok){let e=`Request failed with status ${n.status}`;try{let t=await n.json();typeof t.error==`string`?e=t.error:typeof t.message==`string`&&(e=t.message)}catch{}throw Error(e)}if(!n.body)throw Error(`Response stream is unavailable`);let a=n.body.getReader(),o=new TextDecoder,s=``;try{for(;!r.signal.aborted;){let{done:e,value:n}=await a.read();s+=o.decode(n,{stream:!e});let r=s.split(/\r?\n\r?\n/);s=r.pop()||``;for(let e of r){let n=e.split(/\r?\n/).find(e=>e.startsWith(`data:`));n&&t(JSON.parse(n.slice(5).trim()))}if(e)break}}finally{a.releaseLock()}}catch(e){r.signal.aborted||n(e instanceof Error?e.message:`Connection lost`)}})(),()=>r.abort()},L={checkHealth:()=>i()?f({status:`offline`},!1):p.get(`/ollama/health`).then(e=>e.data),getModels:()=>i()?f(g):p.get(`/ollama/models`).then(e=>e.data),pullModel:e=>i()?f(null,!1):p.post(`/ollama/models/pull`,{name:e}).then(e=>e.data),pullModelStream:(e,t,n,r)=>{if(i()){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)}return I(`${c}/ollama/pull/stream?${new URLSearchParams({model:e}).toString()}`,e=>{switch(e.type){case`progress`:t({status:typeof e.status==`string`?e.status:`pulling`,digest:typeof e.digest==`string`?e.digest:void 0,total:typeof e.total==`number`?e.total:void 0,completed:typeof e.completed==`number`?e.completed:void 0,percent:typeof e.percent==`number`?e.percent:void 0});break;case`complete`:n();break;case`error`:r(String(e.error||`Model pull failed`));break}},r)},deleteModel:e=>i()?f(null,!1):p.delete(`/ollama/models`,{params:{name:e}}).then(e=>e.data),showModel:(e,t=!1)=>{if(i()){let t=g.find(t=>t.name===e);return f(t||null,!!t)}return p.get(`/ollama/models/show`,{params:{name:e,verbose:t}}).then(e=>e.data)},createModel:e=>i()?f(null,!1):p.post(`/ollama/models`,e).then(e=>e.data),copyModel:(e,t)=>i()?f(null,!1):p.post(`/ollama/models/copy`,{source:e,destination:t}).then(e=>e.data),pushModel:e=>i()?f(null,!1):p.post(`/ollama/models/push`,{name:e}).then(e=>e.data),pullAllModels:()=>i()?f(null,!1):p.post(`/ollama/models/pull-all`).then(e=>e.data),pullAllModelsStream:(e,t,n)=>{if(i()){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}I(`${c}/ollama/models/pull-all/stream`,r=>{switch(r.type){case`progress`:{let t=r.status===`success`||r.status===`error`?r.status:`starting`;e({current:typeof r.current==`number`?r.current:0,total:typeof r.total==`number`?r.total:0,modelName:typeof r.modelName==`string`?r.modelName:`unknown`,status:t,error:typeof r.error==`string`?r.error:void 0});break}case`complete`:t();break;case`error`:n(String(r.error||`Model update failed`));break}},n)},generateEmbeddings:e=>i()?f({embeddings:[[]]},!1):p.post(`/ollama/embed`,e).then(e=>e.data),listRunningModels:()=>i()?f([]):p.get(`/ollama/running`).then(e=>e.data),unloadModel:e=>i()?f(null):p.post(`/ollama/models/unload`,{name:e}).then(e=>e.data),unloadAllModels:()=>i()?f(null):p.post(`/ollama/models/unload-all`).then(e=>e.data),getVersion:()=>i()?f({version:`demo-mode`},!1):p.get(`/ollama/version`).then(e=>e.data),chatCompletion:e=>i()?f({message:{content:`Demo response`,role:`assistant`}},!1):p.post(`/ollama/chat`,e).then(e=>e.data),checkBlobExists:e=>i()?Promise.resolve(!1):p.head(`/ollama/blobs/${e}`).then(()=>!0).catch(()=>!1),pushBlob:(e,t)=>i()?f(null,!1):p.post(`/ollama/blobs/${e}`,t,{headers:{"Content-Type":`application/octet-stream`}}).then(e=>e.data),generateLegacyEmbeddings:e=>i()?f({embedding:[]},!1):p.post(`/ollama/embeddings`,e).then(e=>e.data),getLibraryModels:e=>{if(i())return e?.category===`cloud`?f([{name:`gpt-oss:cloud`,description:`Demo cloud model using Ollama cloud naming`,category:`cloud`,sizes:[`cloud`],pulls:`Cloud`,tags:[`cloud`]}]):f([{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 p.get(`/ollama/library${n?`?${n}`:``}`).then(e=>e.data)}},R=[[`#2563eb`,`#7c3aed`],[`#0891b2`,`#2563eb`],[`#0f766e`,`#2563eb`],[`#be123c`,`#7c3aed`],[`#ff7b52`,`#dc2626`]],z=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)},B=e=>e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`),V=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`},H=(e,t=128)=>{let n=e.trim()||`AI Persona`,r=z(n),[i,a]=R[r%R.length],o=B(V(n)),s=`persona-avatar-${r}-${t}`,c=t>=96?44:24,l=`
4
+ <svg xmlns="http://www.w3.org/2000/svg" width="${t}" height="${t}" viewBox="0 0 ${t} ${t}" role="img" aria-label="${B(n)} avatar">
5
+ <defs>
6
+ <linearGradient id="${s}" x1="0" y1="0" x2="1" y2="1">
7
+ <stop offset="0%" stop-color="${i}" />
8
+ <stop offset="100%" stop-color="${a}" />
9
+ </linearGradient>
10
+ </defs>
11
+ <rect width="${t}" height="${t}" rx="${Math.round(t*.22)}" fill="url(#${s})" />
12
+ <circle cx="${t*.22}" cy="${t*.22}" r="${t*.26}" fill="rgba(255,255,255,0.16)" />
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
+ </svg>
15
+ `;return`data:image/svg+xml;charset=UTF-8,${encodeURIComponent(l)}`},U=(e,t=128)=>e.avatar?.trim()||H(e.name,t),W=(e,t,n=128)=>{e.onerror=null,e.src=H(t,n)},G={getPersonas:()=>i()?f([{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:H(`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:H(`Research Assistant`,128),created_at:Date.now()-1728e5,updated_at:Date.now()-1728e5}]):p.get(`/personas`).then(e=>e.data),getPersona:e=>i()?f({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()}):p.get(`/personas/${e}`).then(e=>e.data),createPersona:e=>i()?f({id:`demo-`+Date.now(),user_id:`default`,...e,created_at:Date.now(),updated_at:Date.now()}):p.post(`/personas`,e).then(e=>e.data),updatePersona:(e,t)=>i()?f({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()}):p.put(`/personas/${e}`,t).then(e=>e.data),deletePersona:e=>i()?f(void 0):p.delete(`/personas/${e}`).then(e=>e.data),exportPersona:e=>{if(i()){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 p.get(`/personas/${e}/export`).then(e=>e.data)},importPersona:e=>i()?f({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}):p.post(`/personas/import`,e).then(e=>e.data),getPersonasCount:()=>i()?f({count:2}):p.get(`/personas/stats/count`).then(e=>e.data),getDefaultParameters:()=>i()?f({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}):p.get(`/personas/defaults/parameters`).then(e=>e.data),getMemoryStatus:e=>i()?f({status:`active`,memory_count:42,last_backup:Date.now()-864e5,size_mb:2.3}):p.get(`/personas/${e}/memory/status`).then(e=>e.data),wipeMemories:e=>i()?f({deleted_count:42}):p.delete(`/personas/${e}/memory`).then(e=>e.data),backupPersona:e=>{if(i()){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 p.get(`/personas/${e}/backup`,{responseType:`blob`}).then(e=>e.data)},exportPersonaDNA:e=>{if(i()){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 p.get(`/personas/${e}/export/dna`,{responseType:`blob`}).then(e=>e.data)},importPersonaDNA:e=>{if(i())return f({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),p.post(`/personas/import/dna`,t).then(e=>e.data)},downloadPersona:async(e,t)=>{try{let n=await G.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 d.error(`Error while downloading persona:`,e),Error(`Failed to download persona: ${e instanceof Error?e.message:String(e)}`)}}},le=e=>{let t=Date.now();return{range:{from:t-Math.max(0,e-1)*864e5,to:t,days:e},totals:{calls:0,successfulCalls:0,failedCalls:0,cancelledCalls:0,meteredCalls:0,promptTokens:0,completionTokens:0,reportedTokens:0,averageLatencyMs:0,uniqueUsers:0},series:[],plugins:[],models:[],capabilities:[]}},ue={getUsage:(e=30)=>i()?f(le(e)):p.get(`/plugins/usage`,{params:{days:e}}).then(e=>e.data),getAllPlugins:()=>i()?f([]):p.get(`/plugins`).then(e=>e.data),discoverModels:e=>i()?f({models:[],outcome:`unavailable`}):p.post(`/plugins/discover/${encodeURIComponent(e)}`).then(e=>e.data),uploadPlugin:e=>{if(i())return f({},!1);let t=new FormData;return t.append(`plugin`,e),p.post(`/plugins/upload`,t).then(e=>e.data)},installPlugin:e=>i()?f({},!1):p.post(`/plugins/install`,e).then(e=>e.data),updatePlugin:(e,t)=>i()?f({},!1):p.put(`/plugins/${e}`,t).then(e=>e.data),deletePlugin:e=>i()?f(void 0):p.delete(`/plugins/${e}`).then(e=>e.data),activatePlugin:e=>i()?f(!1,!1):p.post(`/plugins/activate/${e}`).then(e=>e.data),deactivatePlugin:e=>{if(i())return f(void 0);let t=e?`/plugins/deactivate/${e}`:`/plugins/deactivate`;return p.post(t).then(e=>e.data)},getActivePlugin:()=>i()?f(null):p.get(`/plugins/active`).then(e=>e.data),getPluginStatus:()=>i()?f([]):p.get(`/plugins/status`).then(e=>e.data),exportPlugin:e=>i()?Promise.resolve(new Blob([`{}`],{type:`application/json`})):p.get(`/plugins/${e}/export`,{responseType:`blob`}).then(e=>e.data),getCredentials:()=>i()?f([]):p.get(`/plugins/credentials/all`).then(e=>e.data),setApiKey:(e,t)=>i()?f(!1,!1):p.post(`/plugins/${e}/credentials`,{api_key:t}).then(e=>e.data),deleteApiKey:e=>i()?f(!1,!1):p.delete(`/plugins/${e}/credentials`).then(e=>e.data),checkApiKey:e=>i()?f(!1):p.get(`/plugins/${e}/credentials/check`).then(e=>e.data),getVariables:e=>i()?f({}):p.get(`/plugins/${e}/variables`).then(e=>e.data),setVariables:(e,t,n=[])=>i()?f(!0):p.put(`/plugins/${e}/variables`,{variables:t,unset:n}).then(e=>e.data),resetVariables:e=>i()?f(!0):p.delete(`/plugins/${e}/variables`).then(e=>e.data)},K={getPreferences:()=>i()?f(ne()):p.get(`/preferences`).then(e=>e.data),updatePreferences:e=>i()?f(x(e)):p.put(`/preferences`,e).then(e=>e.data),setDefaultModel:(e,t,n)=>i()?f(x({defaultModel:e,defaultProviderType:t,defaultProviderId:t===`plugin`?n:null})):p.put(`/preferences/default-model`,{model:e,providerType:t,providerId:n}).then(e=>e.data),setSystemMessage:e=>i()?f(x({systemMessage:e})):p.put(`/preferences/system-message`,{message:e}).then(e=>e.data),setGenerationOptions:e=>i()?f(x({generationOptions:e})):p.put(`/preferences/generation-options`,e).then(e=>e.data),resetGenerationOptions:()=>i()?f(x({generationOptions:y.generationOptions})):p.post(`/preferences/generation-options/reset`).then(e=>e.data),setEmbeddingSettings:e=>i()?f(x({embeddingSettings:e})):p.put(`/preferences/embedding-settings`,e).then(e=>e.data),resetEmbeddingSettings:()=>i()?f(x({embeddingSettings:y.embeddingSettings})):p.post(`/preferences/embedding-settings/reset`).then(e=>e.data),importData:(e,t=`replace`)=>i()?f({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,workRemoteProviderDisclosureDismissed:!1}):p.post(`/preferences/import`,{data:e,mergeStrategy:t}).then(e=>e.data)},de={getDiagnostics:()=>p.get(`/system`).then(e=>e.data)},fe=new Set([`snapshot`,`run_state`,`reasoning_delta`,`assistant_delta`,`tool_call`,`tool_result`,`usage`,`skill_loaded`,`error`,`done`]),q=e=>e&&typeof e==`object`&&!Array.isArray(e)?e:void 0,pe=e=>{if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e==`string`){let t=Number(e);if(Number.isFinite(t))return t;let n=Date.parse(e);if(Number.isFinite(n))return n}return Date.now()},J=(e,t,n,r,i)=>{let a=q(e);if(!a)return;let o=Number(a.id??t),s=String(a.type??n??``),c=String(a.taskId??r),l=String(a.runId??i);if(!Number.isSafeInteger(o)||o<0||!fe.has(s)||c!==r||l!==i)return;let u=a.data;return{id:o,type:s,taskId:c,runId:l,timestamp:pe(a.timestamp),data:q(u)||(u===void 0?{}:{content:u})}},Y=(e,t,n)=>{let r,i,a=[];for(let t of e.split(`
16
+ `)){if(!t||t.startsWith(`:`))continue;let e=t.indexOf(`:`),n=e===-1?t:t.slice(0,e),o=e===-1?``:t.slice(e+1),s=o.startsWith(` `)?o.slice(1):o;n===`id`&&(r=s),n===`event`&&(i=s),n===`data`&&a.push(s)}if(a.length===0)return;let o=a.join(`
17
+ `);if(o===`[DONE]`)return J({id:r,type:`done`,taskId:t,runId:n,timestamp:Date.now(),data:{}},r,i,t,n);try{return J(JSON.parse(o),r,i,t,n)}catch{return}},me=class{constructor(e,t,r){n(this,`taskId`,void 0),n(this,`runId`,void 0),n(this,`onEvent`,void 0),n(this,`buffer`,``),this.taskId=e,this.runId=t,this.onEvent=r}push(e){e&&(this.buffer+=e,this.drain())}finish(e=``){if(this.buffer+=e,this.drain(),!this.buffer.trim()){this.buffer=``;return}let t=Y(this.buffer.replace(/\r\n?/g,`
18
+ `),this.taskId,this.runId);this.buffer=``,t&&this.onEvent(t)}drain(){let e=/\r?\n\r?\n/.exec(this.buffer);for(;e?.index!==void 0;){let t=this.buffer.slice(0,e.index).replace(/\r\n?/g,`
19
+ `);this.buffer=this.buffer.slice(e.index+e[0].length);let n=Y(t,this.taskId,this.runId);n&&this.onEvent(n),e=/\r?\n\r?\n/.exec(this.buffer)}}},he=async e=>{try{let t=await e.json(),n=typeof t.error==`string`?t.error:typeof t.message==`string`?t.message:void 0;if(n)return Error(n)}catch{}return Error(`Work event stream failed with status ${e.status}.`)},X=async({taskId:e,runId:t,after:n,signal:r,onEvent:i})=>{let a=localStorage.getItem(`auth-token`),o=new URL(`${c}/work/tasks/${encodeURIComponent(e)}/runs/${encodeURIComponent(t)}/events`,window.location.origin);o.searchParams.set(`after`,String(Math.max(0,Math.trunc(n))));let s=await fetch(o,{method:`GET`,headers:{Accept:`text/event-stream`,...a?{Authorization:`Bearer ${a}`}:{}},cache:`no-store`,credentials:`same-origin`,signal:r});if(!s.ok)throw await he(s);if(!s.body)throw Error(`Work event stream has no response body.`);let l=s.body.getReader(),u=new TextDecoder,d=new me(e,t,i);try{for(;!r.aborted;){let{done:e,value:t}=await l.read();if(e)break;d.push(u.decode(t,{stream:!0}))}d.finish(u.decode())}finally{l.releaseLock()}},Z=e=>`/work/tasks/${encodeURIComponent(e)}`,ge={capabilities:()=>p.get(`/work/capabilities`).then(e=>e.data),listTasks:()=>p.get(`/work/tasks`).then(e=>e.data),createTask:e=>p.post(`/work/tasks`,e).then(e=>e.data),getTask:e=>p.get(Z(e)).then(e=>e.data),getMessages:(e,t,n=200)=>p.get(`${Z(e)}/messages`,{params:{before:t,limit:n}}).then(e=>e.data),updateTask:(e,t)=>p.patch(Z(e),t).then(e=>e.data),deleteTask:e=>p.delete(Z(e)).then(e=>e.data),startRun:(e,t)=>p.post(`${Z(e)}/runs`,t).then(e=>e.data),cancelRun:e=>p.post(`${Z(e)}/cancel`).then(e=>e.data),streamRunEvents:e=>X(e),listFiles:(e,t=``)=>p.get(`${Z(e)}/files`,{params:{path:t}}).then(e=>{let t=e.data;return t.data&&!Array.isArray(t.data)?{...t,data:t.data.entries}:t}),getFile:(e,t)=>p.get(`${Z(e)}/file`,{params:{path:t}}).then(e=>e.data),saveFile:(e,t,n,r)=>p.put(`${Z(e)}/file`,{content:n,expectedUpdatedAt:r},{params:{path:t}}).then(e=>e.data),getGitStatus:e=>p.get(`${Z(e)}/git`).then(e=>e.data),getGitDiff:(e,t)=>p.get(`${Z(e)}/git/diff`,{params:t?{path:t}:void 0}).then(e=>e.data),initializeGit:e=>p.post(`${Z(e)}/git/init`).then(e=>e.data),stageGitPaths:(e,t)=>p.post(`${Z(e)}/git/stage`,{paths:t}).then(e=>e.data),commitGit:(e,t)=>p.post(`${Z(e)}/git/commit`,{message:t}).then(e=>e.data),createGitBranch:(e,t)=>p.post(`${Z(e)}/git/branches`,{name:t}).then(e=>e.data),switchGitBranch:(e,t)=>p.post(`${Z(e)}/git/switch`,{name:t}).then(e=>e.data),startPreview:(e,t)=>p.post(`${Z(e)}/preview/start`,t?{command:t}:{}).then(e=>e.data),stopPreview:e=>p.post(`${Z(e)}/preview/stop`).then(e=>e.data)};function Q(e,t,n){if(t)return e.find(e=>e.model===t&&(!n||e.plugin===n))}function _e(e,t,n){return Q(e,t,n)||e[0]}function ve(e){return`${encodeURIComponent(e.plugin)}::${encodeURIComponent(e.model)}`}var $={getModels:()=>i()?f([{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}}]):p.get(`/tts/models`).then(e=>e.data),getPlugins:()=>i()?f([{id:`openai`,name:`OpenAI GPT`,models:[`tts-1`,`tts-1-hd`],config:{voices:[`alloy`,`echo`,`fable`,`onyx`,`nova`,`shimmer`],default_voice:`alloy`}}]):p.get(`/tts/plugins`).then(e=>e.data),getVoices:e=>i()?f({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}):p.get(`/tts/voices/${e}`).then(e=>e.data),generateBase64:e=>{if(i())return f({audio:``,format:e.response_format||`mp3`,mimeType:`audio/mpeg`,size:0});let t={...e,pluginId:e.pluginId||void 0};return p.post(`/tts/generate-base64`,t).then(e=>e.data)},generate:async e=>{if(i())return new Blob([],{type:`audio/mpeg`});let t={...e,pluginId:e.pluginId||void 0};return(await p.post(`/tts/generate`,t,{responseType:`blob`})).data},speak:async(e,t={})=>{try{t.onStart?.();let n=await $.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}}},ye=e({agentCliApi:()=>ee,personaApi:()=>G,preferencesApi:()=>K});export{c as A,j as C,S as D,re as E,h as O,ae as S,C as T,k as _,$ as a,se as b,K as c,U as d,W as f,M as g,P as h,_e as i,te as k,ue as l,F as m,Q as n,ge as o,L as p,ve as r,de as s,ye as t,G as u,oe as v,ie as w,A as x,ce as y};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/api-BCqWXjZI.js","js/rolldown-runtime-QTnfLwEv.js","js/router-vendor-BjDI9mRe.js","js/markdown-core-GI9BPwrB.js","js/utils-vendor-Cbaj0BC5.js","js/demoMode-BhEpMVh5.js","js/logger-DbNs3-DK.js"])))=>i.map(i=>d[i]);
2
+ import{i as e}from"./router-vendor-BjDI9mRe.js";import{o as t,t as n}from"./utils-vendor-Cbaj0BC5.js";import{n as r,t as i}from"./demoMode-BhEpMVh5.js";import{t as a}from"./logger-DbNs3-DK.js";var o=`dark`,s=`blue`,c=`#2563eb`,l=[{id:`violet`,label:`Violet`,color:`#7c3aed`,foreground:`#ffffff`},{id:`blue`,label:`Blue`,color:`#2563eb`,foreground:`#ffffff`},{id:`cyan`,label:`Cyan`,color:`#0e7490`,foreground:`#ffffff`},{id:`teal`,label:`Teal`,color:`#0f766e`,foreground:`#ffffff`},{id:`emerald`,label:`Emerald`,color:`#15803d`,foreground:`#ffffff`},{id:`amber`,label:`Coral`,color:`#ff7b52`,foreground:`#3d120c`},{id:`rose`,label:`Rose`,color:`#e11d48`,foreground:`#ffffff`},{id:`slate`,label:`Slate`,color:`#475569`,foreground:`#ffffff`}],u=[`50`,`100`,`200`,`300`,`400`,`500`,`600`,`700`,`800`,`900`,`950`],d=[`25`,...u],f=[`canvas`,`surface`,`surface-subtle`,`surface-raised`,`surface-overlay`,`surface-inverse`,`ink`,`ink-muted`,`ink-subtle`,`ink-inverse`,`line`,`line-strong`],p={multiplier:.24,minimum:6,maximum:24},m={multiplier:.36,minimum:6,maximum:32},h={25:99,50:97,100:94,200:88,300:80,400:66,500:48,600:36,700:27,800:18,900:11,950:6},g={25:13,50:4,100:7,200:10,300:16,400:27,500:46,600:65,700:82,800:89,900:95,950:99},_={canvas:{lightness:96,saturationFactor:1},surface:{lightness:98,saturationFactor:.9},"surface-subtle":{lightness:93,saturationFactor:1},"surface-raised":{lightness:99,saturationFactor:.8},"surface-overlay":{lightness:100,saturationFactor:0},"surface-inverse":{lightness:10,saturationFactor:.7},ink:{lightness:10,saturationFactor:.45},"ink-muted":{lightness:38,saturationFactor:.35},"ink-subtle":{lightness:54,saturationFactor:.4},"ink-inverse":{lightness:98,saturationFactor:.4},line:{lightness:86,saturationFactor:.8},"line-strong":{lightness:75,saturationFactor:.65}},v={canvas:{lightness:5,saturationFactor:.9},surface:{lightness:7,saturationFactor:.9},"surface-subtle":{lightness:9,saturationFactor:1},"surface-raised":{lightness:11,saturationFactor:1},"surface-overlay":{lightness:13,saturationFactor:1},"surface-inverse":{lightness:96,saturationFactor:.35},ink:{lightness:96,saturationFactor:.3},"ink-muted":{lightness:67,saturationFactor:.35},"ink-subtle":{lightness:48,saturationFactor:.4},"ink-inverse":{lightness:7,saturationFactor:.45},line:{lightness:18,saturationFactor:.8},"line-strong":{lightness:28,saturationFactor:.65}},y={violet:{50:`#f5f3ff`,100:`#ede9fe`,200:`#ddd6fe`,300:`#c4b5fd`,400:`#a78bfa`,500:`#7c3aed`,600:`#6d28d9`,700:`#5b21b6`,800:`#4c1d95`,900:`#3b0764`,950:`#2e1065`},blue:{50:`#eff6ff`,100:`#dbeafe`,200:`#bfdbfe`,300:`#93c5fd`,400:`#60a5fa`,500:`#2563eb`,600:`#1d4ed8`,700:`#1e40af`,800:`#1e3a8a`,900:`#172554`,950:`#0f172a`},cyan:{50:`#ecfeff`,100:`#cffafe`,200:`#a5f3fc`,300:`#67e8f9`,400:`#22d3ee`,500:`#0e7490`,600:`#155e75`,700:`#164e63`,800:`#083344`,900:`#092f3f`,950:`#062634`},teal:{50:`#f0fdfa`,100:`#ccfbf1`,200:`#99f6e4`,300:`#5eead4`,400:`#2dd4bf`,500:`#0f766e`,600:`#0f625d`,700:`#115e59`,800:`#134e4a`,900:`#042f2e`,950:`#022c22`},emerald:{50:`#ecfdf5`,100:`#d1fae5`,200:`#a7f3d0`,300:`#6ee7b7`,400:`#34d399`,500:`#15803d`,600:`#166534`,700:`#14532d`,800:`#064e3b`,900:`#052e16`,950:`#022c22`},amber:{50:`#fff5f1`,100:`#ffe8df`,200:`#ffd0c2`,300:`#ffae96`,400:`#ff9273`,500:`#ff7b52`,600:`#c94a27`,700:`#a83a1f`,800:`#87301f`,900:`#70291e`,950:`#3d120c`},rose:{50:`#fff1f2`,100:`#ffe4e6`,200:`#fecdd3`,300:`#fda4af`,400:`#fb7185`,500:`#e11d48`,600:`#be123c`,700:`#9f1239`,800:`#881337`,900:`#4c0519`,950:`#2d0714`},slate:{50:`#f8fafc`,100:`#f1f5f9`,200:`#e2e8f0`,300:`#cbd5e1`,400:`#94a3b8`,500:`#475569`,600:`#334155`,700:`#1e293b`,800:`#0f172a`,900:`#020617`,950:`#010313`}},b={50:97,100:94,200:88,300:76,400:64,500:42,600:34,700:27,800:21,900:16,950:10},x=(e,t,n)=>Math.min(Math.max(e,t),n),S=e=>{if(!e)return null;let t=e.trim().match(/^#?([0-9a-f]{3}|[0-9a-f]{6})$/i);if(!t)return null;let n=t[1];return`#${(n.length===3?n.split(``).map(e=>`${e}${e}`).join(``):n).toLowerCase()}`},C=e=>{let t=S(e)||`#2563eb`,n=parseInt(t.slice(1),16);return{r:n>>16&255,g:n>>8&255,b:n&255}},w=(e,t,n)=>`#${[e,t,n].map(e=>x(Math.round(e),0,255).toString(16).padStart(2,`0`)).join(``)}`,T=(e,t,n)=>{let r=e/255,i=t/255,a=n/255,o=Math.max(r,i,a),s=Math.min(r,i,a),c=(o+s)/2;if(o===s)return{h:0,s:0,l:c*100};let l=o-s,u=c>.5?l/(2-o-s):l/(o+s),d=0;return d=o===r?(i-a)/l+(i<a?6:0):o===i?(a-r)/l+2:(r-i)/l+4,{h:d*60,s:u*100,l:c*100}},E=(e,t,n)=>{let r=x(t,0,100)/100,i=x(n,0,100)/100,a=(1-Math.abs(2*i-1))*r,o=(e%360+360)%360,s=a*(1-Math.abs(o/60%2-1)),c=i-a/2,l=0,u=0,d=0;return o<60?(l=a,u=s):o<120?(l=s,u=a):o<180?(u=a,d=s):o<240?(u=s,d=a):o<300?(l=s,d=a):(l=a,d=s),w((l+c)*255,(u+c)*255,(d+c)*255)},D=e=>{let{r:t,g:n,b:r}=C(e),i=[t,n,r].map(e=>{let t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4});return i[0]*.2126+i[1]*.7152+i[2]*.0722},O=(e,t)=>{let n=D(e),r=D(t),i=Math.max(n,r),a=Math.min(n,r);return(i+.05)/(a+.05)},k=(e,t,n)=>{let r=n,i=E(e,t,r);for(;O(`#ffffff`,i)<4.5&&r>12;)r-=2,i=E(e,t,r);return i},A=e=>{let{r:t,g:n,b:r}=C(S(e)||`#2563eb`),{h:i,s:a}=T(t,n,r),o=a<8?a:x(a,42,88);return u.reduce((e,t)=>{let n=b[t],r=Number(t)<300?o*.72:o;return e[t]=t===`500`||t===`600`?k(i,r,n):E(i,r,n),e},{})},j=e=>{let t=e?.mode===`light`?`light`:o,n=e?.accent===`custom`?`custom`:e?.accent,r=l.some(e=>e.id===n)?n:s,i=S(e?.customAccent)||`#2563eb`;return{mode:t,adaptToAccent:e?.adaptToAccent===!0,accent:n===`custom`?`custom`:r,customAccent:i}},M=()=>j({mode:o}),N=e=>{let t=j(e);return t.accent===`custom`?A(t.customAccent):y[t.accent||`blue`]},P=e=>{let t=j(e);return t.accent===`custom`?t.customAccent||`#2563eb`:l.find(e=>e.id===t.accent)?.color||`#2563eb`},F=(e,t,n)=>t===0||e<8?e*t:x(e*n.multiplier*t,n.minimum*t,n.maximum*t),I=(e,t,n,r)=>d.reduce((i,a)=>(i[a]=E(e,F(t,1,r),n[a]),i),{}),L=(e,t,n,r)=>f.reduce((i,a)=>{let o=n[a];return i[a]=E(e,F(t,o.saturationFactor,r),o.lightness),i},{}),R=(e,t,n)=>{let{r,g:i,b:a}=C(n);e.style.setProperty(t,`${r} ${i} ${a}`)},z=e=>{for(let t of d)e.style.removeProperty(`--color-gray-${t}`),e.style.removeProperty(`--color-dark-${t}`);for(let t of f)e.style.removeProperty(`--color-${t}`)},B=(e,t)=>{let{r:n,g:r,b:i}=C(P(t)),{h:a,s:o}=T(n,r,i),s=t.mode===`light`?m:p,c=I(a,o,h,s),l=I(a,o,g,p),u=L(a,o,t.mode===`dark`?v:_,s);for(let t of d)R(e,`--color-gray-${t}`,c[t]),R(e,`--color-dark-${t}`,l[t]);for(let t of f)R(e,`--color-${t}`,u[t])},V=e=>{if(typeof document>`u`)return;let t=j(e),n=document.documentElement,r=N(t);n.classList.remove(`dark`,`ophelia`),t.mode===`dark`&&n.classList.add(`dark`),n.style.colorScheme=t.mode,n.dataset.accent=t.accent||`blue`,n.dataset.themeStyle=t.adaptToAccent?`accent`:`default`;for(let e of u){let{r:t,g:i,b:a}=C(r[e]),o=`${t} ${i} ${a}`;n.style.setProperty(`--color-primary-${e}`,o),n.style.setProperty(`--color-accent-${e}`,o)}t.adaptToAccent?B(n,t):z(n)},H=a(`store:app-store`),U=250,W=null,G=t()(n((t,n)=>({theme:M(),themeSyncPending:!1,syncThemePreference:async i=>{if(W&&(clearTimeout(W),W=null),!(!r()&&!localStorage.getItem(`auth-token`)))try{let{preferencesApi:r}=await e(async()=>{let{preferencesApi:e}=await import(`./api-BCqWXjZI.js`).then(e=>e.t);return{preferencesApi:e}},__vite__mapDeps([0,1,2,3,4,5,6]));if(!(await r.updatePreferences({theme:i})).success){H.warn(`Failed to save theme preference to backend`);return}let a=j(n().theme),o=j(i);a.mode===o.mode&&a.adaptToAccent===o.adaptToAccent&&a.accent===o.accent&&a.customAccent===o.customAccent?t({themeSyncPending:!1}):(t({themeSyncPending:!0}),n().scheduleThemePreferenceSync())}catch(e){H.warn(`Failed to save theme preference to backend:`,e)}},scheduleThemePreferenceSync:()=>{W&&clearTimeout(W),W=setTimeout(()=>{W=null,n().syncThemePreference(j(n().theme))},U)},setTheme:e=>{let n=j(e);t(e=>({theme:n,preferences:{...e.preferences,theme:n}})),V(n)},updateTheme:e=>{let r=j(e);n().setTheme(r),t({themeSyncPending:!0}),n().scheduleThemePreferenceSync()},toggleTheme:()=>{let e=n().theme,t=e.mode===`dark`?`light`:`dark`;n().updateTheme({...e,mode:t})},sidebarOpen:!0,sidebarCompact:!1,setSidebarOpen:e=>t({sidebarOpen:e}),setSidebarCompact:e=>t({sidebarCompact:e}),toggleSidebar:()=>t(e=>({sidebarOpen:!e.sidebarOpen})),toggleSidebarCompact:()=>t(e=>({sidebarCompact:!e.sidebarCompact})),artifactPanelOpen:!1,artifactPanelArtifact:null,openArtifactPanel:e=>t({artifactPanelOpen:!0,artifactPanelArtifact:e}),closeArtifactPanel:()=>t({artifactPanelOpen:!1,artifactPanelArtifact:null}),preferences:{theme:M(),defaultModel:``,defaultProviderType:null,defaultProviderId:null,visionModel:``,visionProviderType:null,visionProviderId:null,systemMessage:``,generationOptions:{temperature:.7,top_p:.9,top_k:40,num_predict:1024},embeddingSettings:{enabled:!1,model:`nomic-embed-text`,chunkSize:1e3,chunkOverlap:200,similarityThreshold:.3},titleSettings:{autoTitle:!1,taskModel:``,taskProviderType:null,taskProviderId:null},showUsername:!1,workRemoteProviderDisclosureDismissed:!1,backgroundSettings:{enabled:!1,imageUrl:``,blurAmount:10,opacity:.6}},setPreferences:e=>{let n=e.theme?j(e.theme):null;t(t=>({...n&&{theme:n},preferences:{...t.preferences,...e,...n&&{theme:n}}})),n&&V(n)},loadPreferences:async()=>{try{let{preferencesApi:r}=await e(async()=>{let{preferencesApi:e}=await import(`./api-BCqWXjZI.js`).then(e=>e.t);return{preferencesApi:e}},__vite__mapDeps([0,1,2,3,4,5,6])),i=await r.getPreferences();if(i.success&&i.data){let e=i.data,r=n().themeSyncPending?j(n().theme):null;n().setPreferences(r?{...e,theme:r}:e),t({backgroundImage:e.backgroundSettings?.imageUrl||null}),r&&n().syncThemePreference(r)}}catch(e){H.warn(`Failed to load preferences from backend:`,e)}},isGenerating:!1,setIsGenerating:e=>t({isGenerating:e}),hasSeenSettingsNotification:!1,markSettingsNotificationAsSeen:()=>t({hasSeenSettingsNotification:!0}),isDemoMode:r(),demoConfig:i(),setDemoMode:e=>{t({isDemoMode:e,demoConfig:i()})},backgroundImage:null,setBackgroundImage:async r=>{if(t({backgroundImage:r}),r){let t=n(),i={...t.preferences,backgroundSettings:{enabled:!0,imageUrl:r,blurAmount:t.preferences.backgroundSettings?.blurAmount||10,opacity:t.preferences.backgroundSettings?.opacity||.6}};t.setPreferences(i);try{let{preferencesApi:t}=await e(async()=>{let{preferencesApi:e}=await import(`./api-BCqWXjZI.js`).then(e=>e.t);return{preferencesApi:e}},__vite__mapDeps([0,1,2,3,4,5,6]));await t.updatePreferences({backgroundSettings:i.backgroundSettings})}catch(e){H.warn(`Failed to save background settings to backend:`,e)}}},uploadBackgroundImage:async e=>{try{let t=new FileReader;return new Promise((r,i)=>{t.onload=async e=>{try{let t=e.target?.result;await n().setBackgroundImage(t),r()}catch(e){i(e)}},t.onerror=i,t.readAsDataURL(e)})}catch(e){throw H.error(`Failed to upload background image:`,e),e}},removeBackgroundImage:async()=>{t({backgroundImage:null});let r=n(),i={enabled:!1,imageUrl:``,blurAmount:r.preferences.backgroundSettings?.blurAmount||10,opacity:r.preferences.backgroundSettings?.opacity||.6};r.setPreferences({backgroundSettings:i});try{let{preferencesApi:t}=await e(async()=>{let{preferencesApi:e}=await import(`./api-BCqWXjZI.js`).then(e=>e.t);return{preferencesApi:e}},__vite__mapDeps([0,1,2,3,4,5,6]));await t.updatePreferences({backgroundSettings:i})}catch(e){H.warn(`Failed to save background removal to backend:`,e)}},clearUserState:()=>{let e=M();W&&(clearTimeout(W),W=null),t({theme:e,themeSyncPending:!1,backgroundImage:null,preferences:{theme:e,defaultModel:``,defaultProviderType:null,defaultProviderId:null,visionModel:``,visionProviderType:null,visionProviderId:null,systemMessage:``,generationOptions:{temperature:.7,top_p:.9,top_k:40,num_predict:1024},embeddingSettings:{enabled:!1,model:`nomic-embed-text`,chunkSize:1e3,chunkOverlap:200,similarityThreshold:.3},titleSettings:{autoTitle:!1,taskModel:``,taskProviderType:null,taskProviderId:null},showUsername:!1,workRemoteProviderDisclosureDismissed:!1,backgroundSettings:{enabled:!1,imageUrl:``,blurAmount:10,opacity:.6}}}),V(e)}}),{name:`libre-webui-app-state`,onRehydrateStorage:()=>e=>{e&&e.setTheme(j(e.theme))},partialize:e=>{let{backgroundSettings:t,...n}=e.preferences;return{theme:e.theme,themeSyncPending:e.themeSyncPending,sidebarOpen:e.sidebarOpen,sidebarCompact:e.sidebarCompact,preferences:n,hasSeenSettingsNotification:e.hasSeenSettingsNotification}}}));typeof window<`u`&&(()=>{let{theme:e,setTheme:t}=G.getState();t(e)})();export{P as a,c as i,l as n,j as o,s as r,G as t};
@@ -0,0 +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`,approvalPending:`ุญุณุงุจูƒ ููŠ ุงู†ุชุธุงุฑ ู…ูˆุงูู‚ุฉ ุงู„ู…ุณุคูˆู„.`},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 ุฃุญุฑู ุนู„ู‰ ุงู„ุฃู‚ู„`,approvalPending:`ุชู… ุงุณุชู„ุงู… ุงู„ุชุณุฌูŠู„. ูŠุฌุจ ุฃู† ูŠูˆุงูู‚ ุงู„ู…ุณุคูˆู„ ุนู„ู‰ ุญุณุงุจูƒ.`,awaitingApproval:`ููŠ ุงู†ุชุธุงุฑ ุงู„ู…ูˆุงูู‚ุฉ`,awaitingApprovalDescription:`ุชู… ุฅู†ุดุงุก ุญุณุงุจูƒุŒ ูˆู„ูƒู† ูŠุฌุจ ุฃู† ูŠู‚ูˆู… ุงู„ู…ุณุคูˆู„ ุจุชูุนูŠู„ู‡ ู‚ุจู„ ุฃู† ุชุชู…ูƒู† ู…ู† ุชุณุฌูŠู„ ุงู„ุฏุฎูˆู„.`,backToSignIn:`ุงู„ุนูˆุฏุฉ ู„ุชุณุฌูŠู„ ุงู„ุฏุฎูˆู„`},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:`ุงู„ู…ุฒูˆุฏ`,tagline:`ูŠุฌุจ ุฃู† ูŠุฎุถุน ู…ูƒุฏุณ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ ุงู„ุฎุงุต ุจูƒ ู„ูƒ.`,selfHosted:`ู…ุณุชุถุงู ุฐุงุชูŠู‹ุง ยท Apache 2.0`,highlights:{local:{title:`ู…ุญู„ูŠ ุฃูˆู„ุงู‹`,body:`ุชุจู‚ู‰ ู…ุญุงุฏุซุงุชูƒ ูˆู…ู„ูุงุชูƒ ุนู„ู‰ ุงู„ุฌู‡ุงุฒ ุงู„ุฐูŠ ุชุดุบู„ ู‡ุฐุง ุนู„ูŠู‡.`},providers:{title:`ุฃูŠ ู…ุฒูˆุฏ`,body:`ู†ู…ุงุฐุฌ ู…ุญู„ูŠุฉ ุนุจุฑ OllamaุŒ ุจุงู„ุฅุถุงูุฉ ุฅู„ู‰ ุงู„ู…ุฒูˆุฏูŠู† ุนู† ุจูุนุฏ ุงู„ุฐูŠู† ุชุฎุชุงุฑ ุฅุถุงูุชู‡ู….`},work:{title:`ุนู…ู„ ู…ุนุฒูˆู„`,body:`ุงู…ู†ุญ ุงู„ู†ู…ูˆุฐุฌ ู…ุณุงุญุฉ ุนู…ู„ ู…ุนุฒูˆู„ุฉ ุจุงู„ู…ู„ูุงุช ูˆุงู„ุทุฑููŠุฉ ูˆุงู„ู…ุนุงูŠู†ุฉ.`}}},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 ุงู„ุฎุงุต ุจูƒ`,approvalUnexpected:`ุชุนุฐุฑ ุชูุนูŠู„ ุงู„ู…ุณุคูˆู„ ุงู„ุฃูˆู„ูŠ. ูŠุฑุฌู‰ ุงู„ู…ุญุงูˆู„ุฉ ู…ุฑุฉ ุฃุฎุฑู‰.`},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:`ู…ุญุงุฏุซุฉ ุฌุฏูŠุฏุฉ`,work:`ุงู„ุนู…ู„`,chat:`ู…ุญุงุฏุซุฉ`,private:`ุฎุงุต`,privateMode:`ุงู„ูˆุถุน ุงู„ุฎุงุต`,privateDescription:`ู„ู† ูŠุชู… ุญูุธ ู‡ุฐู‡ ุงู„ู…ุญุงุฏุซุฉ`,privateTooltip:`ุงุจุฏุฃ ู…ุญุงุฏุซุฉ ุฎุงุตุฉ ู„ู† ูŠุชู… ุญูุธู‡ุง`,deleteConfirm:`ู‡ู„ ุฃู†ุช ู…ุชุฃูƒุฏ ู…ู† ุญุฐู ู‡ุฐู‡ ุงู„ู…ุญุงุฏุซุฉุŸ`,generatingTitle:`ุฌุงุฑูŠ ุชูˆู„ูŠุฏ ุงู„ุนู†ูˆุงู†`,noChats:`ู„ุง ุชูˆุฌุฏ ู…ุญุงุฏุซุงุช ุจุนุฏ`,createFirst:`ุฃู†ุดุฆ ุฃูˆู„ ู…ุญุงุฏุซุฉ ุฃุนู„ุงู‡`,chats:`ุงู„ู…ุญุงุฏุซุงุช`,renameChat:`ุฅุนุงุฏุฉ ุชุณู…ูŠุฉ ุงู„ู…ุญุงุฏุซุฉ`,deleteChat:`ุญุฐู ุงู„ู…ุญุงุฏุซุฉ`,incognito:`ุฏุฑุฏุดุฉ ู…ุฎููŠุฉ`},persona:{applied:`ุชู… ุชุทุจูŠู‚ ุงู„ุดุฎุตูŠุฉ`,label:`ุงู„ุดุฎุตูŠุฉ`,removeFailed:`ูุดู„ ููŠ ุฅุฒุงู„ุฉ ุงู„ุดุฎุตูŠุฉ`},model:{updated:`ุชู… ุชุญุฏูŠุซ ุงู„ู†ู…ูˆุฐุฌ`,noModels:`ู„ุง ุชูˆุฌุฏ ู†ู…ุงุฐุฌ ู…ุชุงุญุฉ`,noModelsDescription:`ู„ุง ุชูˆุฌุฏ ู†ู…ุงุฐุฌ ู…ุชุงุญุฉ. ุชุฃูƒุฏ ู…ู† ุชุดุบูŠู„ Ollama ูˆุชุซุจูŠุช ุงู„ู†ู…ุงุฐุฌ.`,pullCommand:`ollama pull llama3.2:3b`,noModelsTooltip:`ู„ุง ุชูˆุฌุฏ ู†ู…ุงุฐุฌ ู…ุชุงุญุฉ. ูŠุฑุฌู‰ ุงู„ุชุฃูƒุฏ ู…ู† ุชุดุบูŠู„ Ollama ูˆุชุซุจูŠุช ุงู„ู†ู…ุงุฐุฌ.`,selectBeforePrivateChat:`ุงุฎุชุฑ ู†ู…ูˆุฐุฌุงู‹ ู…ุชุงุญุงู‹ ู‚ุจู„ ุจุฏุก ู…ุญุงุฏุซุฉ ุฎุงุตุฉ`,selectBeforeSending:`ุงุฎุชุฑ ู†ู…ูˆุฐุฌุงู‹ ู…ุชุงุญุงู‹ ู‚ุจู„ ุงู„ุฅุฑุณุงู„`},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:`ุชุฎูŠู‘ู„`,work:`ุงู„ุนู…ู„`,settings:`ุงู„ุฅุนุฏุงุฏุงุช`,userManagement:`ุฅุฏุงุฑุฉ ุงู„ู…ุณุชุฎุฏู…ูŠู†`,signOut:`ุชุณุฌูŠู„ ุงู„ุฎุฑูˆุฌ`,agents:`ุงู„ูˆูƒู„ุงุก`,exploreLabel:`ุงุณุชูƒุดุงู`,usageAnalytics:`ุงุณุชุฎุฏุงู… ุงู„ู…ุฒูˆุฏ`,system:`ุงู„ู†ุธุงู…`},toggleSize:`ุชุจุฏูŠู„ ุญุฌู… ุงู„ุดุฑูŠุท ุงู„ุฌุงู†ุจูŠ`,expandSidebar:`ุชูˆุณูŠุน ุงู„ุดุฑูŠุท ุงู„ุฌุงู†ุจูŠ`},user:{menu:{changePicture:`ุชุบูŠูŠุฑ ุงู„ุตูˆุฑุฉ`,settings:`ุงู„ุฅุนุฏุงุฏุงุช`,userManagement:`ุฅุฏุงุฑุฉ ุงู„ู…ุณุชุฎุฏู…ูŠู†`,logout:`ุชุณุฌูŠู„ ุงู„ุฎุฑูˆุฌ`,usageAnalytics:`ุงุณุชุฎุฏุงู… ุงู„ู…ุฒูˆุฏ`,system:`ุงู„ู†ุธุงู…`},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}} ู†ู…ุงุฐุฌ","specializedModels":"ู†ู…ุงุฐุฌ ู…ุชุฎุตุตุฉ","visionModel":"ู†ู…ูˆุฐุฌ ุงู„ุฑุคูŠุฉ","selectVisionModel":"ุงุณุชุฎุฏุงู… ู†ู…ูˆุฐุฌ ุงู„ุฏุฑุฏุดุฉ ุงู„ุญุงู„ูŠ","visionModelDescription":"ูŠูุณุชุฎุฏู… ุชู„ู‚ุงุฆูŠู‹ุง ูƒู„ู…ุง ุงุญุชูˆู‰ ุณูŠุงู‚ ุงู„ุฏุฑุฏุดุฉ ุงู„ุตุงุฏุฑ ุนู„ู‰ ุตูˆุฑ. ุงุฎุชุฑ ู†ู…ูˆุฐุฌู‹ุง ูŠุฏุนู… ุฅุฏุฎุงู„ ุงู„ุตูˆุฑ.","visionModelUpdateFailed":"ูุดู„ ุชุญุฏูŠุซ ู†ู…ูˆุฐุฌ ุงู„ุฑุคูŠุฉ: {{error}}","visionModelNoProvider":"ู†ู…ูˆุฐุฌ ุงู„ุฑุคูŠุฉ ู‡ุฐุง ู„ูŠุณ ู„ู‡ ู‡ูˆูŠุฉ ู…ุฒูˆู‘ุฏ. ุงุฎุชุฑ ู†ู…ูˆุฐุฌุงู‹ ู…ุชุงุญุงู‹."},"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","providerConnections":"ุงุชุตุงู„ุงุช ุงู„ู…ุฒูˆุฏ","providerConnectionsDescription":"ุงุชุตู„ุŒ ูˆู‚ู… ุจุชูƒูˆูŠู†ุŒ ูˆูุญุต ู…ุฒูˆุฏูŠ ุงู„ู†ู…ุงุฐุฌ ุนุจุฑ ุงู„ุฅุถุงูุงุช.","providers":"ุงู„ู…ุฒูˆุฏูˆู†","searchProviders":"ุงุจุญุซ ุนู† ุงู„ู…ุฒูˆุฏูŠู†","noProvidersFound":"ู„ุง ูŠูˆุฌุฏ ู…ุฒูˆุฏูˆู† ูŠุทุงุจู‚ูˆู† ุจุญุซูƒ.","selectProvider":"ุงุฎุชุฑ ู…ุฒูˆุฏู‹ุง","selectProviderDescription":"ุงุฎุชุฑ ู…ุฒูˆุฏู‹ุง ู„ูุญุต ุงุชุตุงู„ู‡ ูˆูƒุชุงู„ูˆุฌ ุงู„ู†ู…ุงุฐุฌ ุงู„ุฎุงุต ุจู‡.","apiKeyDescription":"ู‚ู… ุจุชุฎุฒูŠู† ู…ูุชุงุญ API ุดุฎุตูŠ ู„ู€ {{name}}.","showApiKey":"ุฅุธู‡ุงุฑ ู…ูุชุงุญ API","hideApiKey":"ุฅุฎูุงุก ู…ูุชุงุญ API","configure":"ุชูƒูˆูŠู†","providerSettings":"ุฅุนุฏุงุฏุงุช ุงู„ู…ุฒูˆุฏ","status":"ุงู„ุญุงู„ุฉ","defaultEndpoint":"ู†ู‚ุทุฉ ุงู„ู†ู‡ุงูŠุฉ ุงู„ุงูุชุฑุงุถูŠุฉ","modelCatalog":"ูƒุชุงู„ูˆุฌ ุงู„ู†ู…ุงุฐุฌ","modelCatalogDescription":"ุงู„ู†ู…ุงุฐุฌ ุงู„ู…ูƒุชุดูุฉ ูˆุงู„ู…ูƒูˆู†ุฉ ู„ู‡ุฐุง ุงู„ู…ุฒูˆุฏ ูˆู‚ุฏุฑุงุชู‡.","refreshModels":"ุชุญุฏูŠุซ ุงู„ู†ู…ุงุฐุฌ","noModelsConfigured":"ู„ุง ุชูˆุฌุฏ ู†ู…ุงุฐุฌ ู…ูƒูˆู†ุฉ ู„ู‡ุฐุง ุงู„ู…ุฒูˆุฏ.","modelId":"ู…ุนุฑู ุงู„ู†ู…ูˆุฐุฌ","capabilities":"ุงู„ู‚ุฏุฑุงุช","modelCatalogUpdated":"ุชู… ุชุญุฏูŠุซ ูƒุชุงู„ูˆุฌ ุงู„ู†ู…ุงุฐุฌ: {{count}} ู†ู…ุงุฐุฌ.","modelCatalogUnchanged":"ูƒุชุงู„ูˆุฌ ุงู„ู†ู…ุงุฐุฌ ู…ุญุฏุซ ุจุงู„ูุนู„.","modelCatalogNeedsApiKey":"ุฃุถู ู…ูุชุงุญ API ุตุงู„ุญ ู„ู‡ุฐุง ุงู„ู…ุฒูˆุฏ ู„ุชุญู…ูŠู„ ู‚ุงุฆู…ุฉ ู†ู…ุงุฐุฌู‡ ุงู„ู…ุจุงุดุฑุฉ.","modelCatalogUnavailable":"ุชุนุฐุฑ ุชุญู…ูŠู„ ู‚ุงุฆู…ุฉ ู†ู…ุงุฐุฌ ุงู„ู…ุฒูˆุฏ.","modelCatalogRefreshFailed":"ูุดู„ ุชุญุฏูŠุซ ูƒุชุงู„ูˆุฌ ุงู„ู†ู…ุงุฐุฌ","capability":{"chat":"ุฏุฑุฏุดุฉ","embedding":"ุชุถู…ูŠู†","image":"ุตูˆุฑุฉ","speech":"ูƒู„ุงู…","transcription":"ู†ุณุฎ"},"exportPlugin":"ุชุตุฏูŠุฑ ุงู„ุฅุถุงูุฉ","deletePlugin":"ุญุฐู ุงู„ุฅุถุงูุฉ"},"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":"ุชูุนูŠู„ ุชุถู…ูŠู† ุงู„ู…ุณุชู†ุฏุงุช","advancedSettings":"ุฅุนุฏุงุฏุงุช ุงู„ุชูˆู„ูŠุฏ ุงู„ู…ุชู‚ุฏู…ุฉ","advancedSettingsDescription":"ุฃุฎุฐ ุงู„ุนูŠู†ุงุชุŒ ูˆุญุฏูˆุฏ ุงู„ุฑู…ูˆุฒุŒ ูˆุงู„ุณูŠุงู‚ุŒ ูˆุงู„ุนู‚ูˆุจุงุชุŒ ูˆุชุณู„ุณู„ุงุช ุงู„ุฅูŠู‚ุงู"},"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}}"},"groups":{"general":"ุนุงู…","chat":"ุงู„ุฏุฑุฏุดุฉ","media":"ุงู„ุตูˆุช ูˆุงู„ุตูˆุฑ","connections":"ุงู„ุงุชุตุงู„ุงุช"}}`),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
+ 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:`ูุดู„ ุชุญุฏูŠุซ ุงู„ู…ุณุชุฎุฏู…`},approval:{title:`ุงู„ู…ูˆุงูู‚ุงุช ุงู„ู…ุนู„ู‚ุฉ`,description:`ุฑุงุฌุน ุงู„ุชุณุฌูŠู„ุงุช ุงู„ุฌุฏูŠุฏุฉ ู‚ุจู„ ุงู„ุณู…ุงุญ ู„ู‡ุง ุจุงู„ุฏุฎูˆู„ ุฅู„ู‰ ู‡ุฐุง ุงู„ู…ุซูŠู„.`,registered:`ู…ุณุฌู„`,activate:`ุชูุนูŠู„ ุงู„ุญุณุงุจ`,reject:`ุฑูุถ ุงู„ุชุณุฌูŠู„`,approved:`ูŠู…ูƒู† ู„ู€ {{name}} ุงู„ุขู† ุชุณุฌูŠู„ ุงู„ุฏุฎูˆู„.`,failed:`ุชุนุฐุฑ ุงู„ู…ูˆุงูู‚ุฉ ุนู„ู‰ ุงู„ุญุณุงุจ.`,notification:`{{count}} ุชุณุฌูŠู„ ูŠู†ุชุธุฑ ู…ูˆุงูู‚ุชูƒ.`,notificationBadge:`{{count}} ู…ูˆุงูู‚ุงุช ู…ุณุชุฎุฏู…ูŠู† ู…ุนู„ู‚ุฉ`}},chatHistory:{label:`ุณุฌู„ ุงู„ู…ุญุงุฏุซุฉ`,jumpToTurn:`ุงู„ุงู†ุชู‚ุงู„ ุฅู„ู‰ ุงู„ุฏูˆุฑ {{index}} ู…ู† {{total}}`},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:`ุชู… ุชุนูŠูŠู† ุงู„ู‚ูŠู…ุฉ (ุฃุฏุฎู„ ู‚ูŠู…ุฉ ุฌุฏูŠุฏุฉ ู„ู„ุชุบูŠูŠุฑ)`,resetFailed:`ูุดู„ ุฅุนุงุฏุฉ ุชุนูŠูŠู† ุงู„ู…ุชุบูŠุฑุงุช`,showValue:`ุฅุธู‡ุงุฑ ู‚ูŠู…ุฉ {{label}}`,hideValue:`ุฅุฎูุงุก ู‚ูŠู…ุฉ {{label}}`,connection:`ุงุชุตุงู„`,advanced:`ู…ุนู„ู…ุงุช ู…ุชู‚ุฏู…ุฉ`,inherited:`ุงุณุชุฎุฏุงู… ุงูุชุฑุงุถูŠ ู„ู„ู…ุฒูˆุฏ`,inheritedValue:`ุงุณุชุฎุฏุงู… ุงูุชุฑุงุถูŠ ู„ู„ู…ุฒูˆุฏ ({{value}})`,enabled:`ู…ู…ูƒู‘ู†`,disabled:`ู…ุนุทู‘ู„`,required:`ุงู„ู‚ูŠู…ุฉ ู…ุทู„ูˆุจุฉ`,fullApiEndpoint:`URL ูƒุงู…ู„ ู„ู†ู‚ุทุฉ ู†ู‡ุงูŠุฉ API`,endpointHelp:`ุฃุฏุฎู„ URL ุงู„ุทู„ุจ ุงู„ูƒุงู…ู„ุŒ ุจู…ุง ููŠ ุฐู„ูƒ ู…ุณุงุฑ ุงู„ุนู…ู„ูŠุฉ ุงู„ุฎุงุต ุจู‡ (ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ุŒ /v1/chat/completions)ุŒ ูˆู„ูŠุณ ูู‚ุท URL ุงู„ุฃุณุงุณูŠ ู„ู„ู…ุฒูˆุฏ.`,invalidUrl:`ุฃุฏุฎู„ URL ูƒุงู…ู„ ูˆุตุงู„ุญ ู„ู†ู‚ุทุฉ ู†ู‡ุงูŠุฉ APIุŒ ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ https://provider.example/v1/chat/completions`,insecureUrl:`ูŠุฌุจ ุฃู† ุชุณุชุฎุฏู… ู†ู‚ุงุท ู†ู‡ุงูŠุฉ API ุจุฑูˆุชูˆูƒูˆู„ HTTP ุฃูˆ HTTPS.`,httpWarning:`ู„ุง ูŠู‚ูˆู… HTTP ุจุชุดููŠุฑ ุจูŠุงู†ุงุช ุงู„ุงุนุชู…ุงุฏ ุฃูˆ ุญุฑูƒุฉ ุงู„ู…ุฑูˆุฑ. ุงุณุชุฎุฏู…ู‡ ูู‚ุท ุนู„ู‰ ุดุจูƒุฉ ู…ูˆุซูˆู‚ุฉ.`,invalidBaseUrl:`ู„ุง ูŠู…ูƒู† ุฃู† ุชุญุชูˆูŠ ุนู†ุงูˆูŠู† URL ุงู„ุฃุณุงุณูŠุฉ ุนู„ู‰ ุณู„ุณู„ุฉ ุงุณุชุนู„ุงู… ุฃูˆ ุฌุฒุก.`,invalidApiPath:`ูŠุฌุจ ุฃู† ูŠุจุฏุฃ ุจู€ / ูˆุฃู„ุง ูŠุญุชูˆูŠ ุนู„ู‰ URL ุฃูˆ ุงุณุชุนู„ุงู… ุฃูˆ ุฌุฒุก ุฃูˆ ู…ู‚ุทุน ..`,tooLong:`ุงู„ู‚ูŠู…ุฉ ุทูˆูŠู„ุฉ ุฌุฏู‹ุง`}},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:`ุงู„ูˆูƒู„ุงุก`,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:`ู„ุง ูŠู…ูƒู† ุชุญุฏูŠุซ ุงู„ุฃุชู…ุชุฉ`}},work:{title:`ุงู„ุนู…ู„`,subtitle:`ู…ุณุงุญุงุช ุนู…ู„ ู…ุนุฒูˆู„ุฉ ู„ู„ู†ู…ุงุฐุฌ`,tasks:{title:`ู…ู‡ุงู… ุงู„ุนู…ู„`,subtitle:`ู…ุณุงุญุงุช ุนู…ู„ ู…ุญู„ูŠุฉ ุฏุงุฆู…ุฉ`,new:`ู…ู‡ู…ุฉ ุฌุฏูŠุฏุฉ`,emptyTitle:`ู„ุง ุชูˆุฌุฏ ู…ู‡ุงู… ุนู…ู„ ุจุนุฏ`,empty:`ุณุชุธู‡ุฑ ู…ู‡ุงู… ุงู„ุนู…ู„ ู‡ู†ุง ุจุนุฏ ุฅุฑุณุงู„ ุงู„ุฑุณุงู„ุฉ ุงู„ุฃูˆู„ู‰.`,untitled:`ู…ู‡ู…ุฉ ุจู„ุง ุนู†ูˆุงู†`,actions:`ุฅุฌุฑุงุกุงุช ุงู„ู…ู‡ู…ุฉ`,delete:`ุญุฐู ุงู„ู…ู‡ู…ุฉ`,deleteNamed:`ุญุฐู โจ{{title}}โฉ`,deleteConfirm:`ู‡ู„ ุชุฑูŠุฏ ุญุฐู ยซโจ{{title}}โฉยป ูˆู…ุณุงุญุฉ ุนู…ู„ู‡ุง ู†ู‡ุงุฆูŠู‹ุงุŸ`,close:`ุฅุบู„ุงู‚ ู…ู‡ุงู… ุงู„ุนู…ู„`,open:`ูุชุญ ู…ู‡ุงู… ุงู„ุนู…ู„`,rename:`ุนู†ูˆุงู† ุงู„ู…ู‡ู…ุฉ`,loading:`ุฌุงุฑู ุชุญู…ูŠู„ ุงู„ู…ู‡ู…ุฉโ€ฆ`,notFound:`ู…ู‡ู…ุฉ ุงู„ุนู…ู„ ู‡ุฐู‡ ุบูŠุฑ ู…ุชุงุญุฉ`,back:`ุจุฏุก ู…ู‡ู…ุฉ ุฌุฏูŠุฏุฉ`,status:`ุงู„ุญุงู„ุฉ: {{status}}`},landing:{title:`ุจุฏุก ู…ู‡ู…ุฉ ุนู…ู„ ุฌุฏูŠุฏุฉ`,description:`ุงู…ู†ุญ ู†ู…ูˆุฐุฌู‹ุง ู…ุญู„ูŠู‹ุง ุฃูˆ ุชุงุจุนู‹ุง ู„ู…ุฒูˆู‘ุฏ ู…ูุนุฏู‘ ู…ุณุงุญุฉ ุนู…ู„ ุฏุงุฆู…ุฉ ูˆู…ุนุฒูˆู„ุฉ. ูŠู…ูƒู†ู‡ ูุญุต ุงู„ู…ู„ูุงุช ูˆุชุดุบูŠู„ ุงู„ุฃุฏูˆุงุช ูˆุงู„ู…ุชุงุจุนุฉ ู…ู† ุญูŠุซ ุชูˆู‚ู ุนู†ุฏ ุนูˆุฏุชูƒ.`,isolated:`ู…ุนุฒูˆู„ุฉ`,isolatedBody:`ู„ูƒู„ ู…ู‡ู…ุฉ ุญุงูˆูŠุชู‡ุง ูˆู…ู„ูุงุชู‡ุง ุงู„ุฎุงุตุฉ.`,durable:`ุฏุงุฆู…ุฉ`,durableBody:`ูŠู…ูƒู†ูƒ ุงู„ุนูˆุฏุฉ ุฅู„ู‰ ู…ุญุงุฏุซุชู‡ุง ูˆู…ุณุงุญุฉ ุนู…ู„ู‡ุง ู„ุงุญู‚ู‹ุง.`,controlled:`ู…ุถุจูˆุทุฉ`,controlledBody:`ุชุจู‚ู‰ ุจูŠุฆุฉ ุงู„ุชุดุบูŠู„ ูˆู…ู„ูุงุช ุงู„ู…ู‡ู…ุฉ ู…ุนุฒูˆู„ุฉ ุนู† ุงู„ู†ุธุงู… ุงู„ู…ุถูŠู.`},composer:{placeholder:`ุตูู ู…ุง ุชุฑูŠุฏ ุจู†ุงุกู‡ ุฃูˆ ุชุบูŠูŠุฑู‡โ€ฆ`,model:`ู†ู…ูˆุฐุฌ ุงู„ุนู…ู„`,noModels:`ู„ุง ุชูˆุฌุฏ ู†ู…ุงุฐุฌ ู…ุชูˆุงูู‚ุฉ ู…ุน ูˆุถุน ุงู„ุนู…ู„`,cancel:`ุฅูŠู‚ุงู`,send:`ุชุดุบูŠู„`,hint:`ุชุญุชูุธ ูƒู„ ู…ู‡ู…ุฉ ุจู…ู„ูุงุชู‡ุง ูˆุณุฌู„ู‡ุง ุงู„ุฎุงุตูŠู†. ุฑุงุฌุน ู…ุฎุฑุฌุงุช ุงู„ู†ู…ูˆุฐุฌ ู‚ุจู„ ุงุณุชุฎุฏุงู…ู‡ุง.`,remoteTitle:`ู…ุฒูˆู‘ุฏ ุจุนูŠุฏ`,remoteHint:`ุชูุฑุณู„ ุงู„ู…ุญุงุฏุซุฉ ูˆู…ุฎุฑุฌุงุช ุงู„ุฃุฏูˆุงุช ุฅู„ู‰ ุงู„ุฎุฏู…ุฉ ุงู„ู…ูุนุฏู‘ุฉ. ู‚ุฏ ูŠุฌุฑูŠ ุงู„ุชุดุบูŠู„ ุงู„ู…ุณุชู‚ู„ ุงู„ูˆุงุญุฏ ุนุฏุฉ ุงุชุตุงู„ุงุช ุจุงู„ู…ุฒูˆู‘ุฏ ูˆู‚ุฏ ุชุชุฑุชุจ ุนู„ูŠู‡ ุฑุณูˆู…. ุชุจู‚ู‰ ู…ู„ูุงุช ู…ุณุงุญุฉ ุงู„ุนู…ู„ ู…ุญู„ูŠุฉ ู…ุง ู„ู… ุชูุฑุฌุน ุฅุญุฏู‰ ุงู„ุฃุฏูˆุงุช ู…ุญุชูˆูŠุงุชู‡ุง.`,remoteDismiss:`ุชุฌุงู‡ู„`,remoteDismissLabel:`ุชุฌุงู‡ู„ ุฅุดุนุงุฑ ุงู„ู…ุฒูˆู‘ุฏ ุงู„ุจุนูŠุฏ`,remoteDismissFailed:`ุชุนุฐู‘ุฑ ุญูุธ ุชูุถูŠู„ ุงู„ู…ุฒูˆู‘ุฏ ุงู„ุจุนูŠุฏ.`,noModelSelected:`ู„ู… ูŠุชู… ุงุฎุชูŠุงุฑ ู†ู…ูˆุฐุฌ ู…ุชูˆุงูู‚ ู…ุน ูˆุถุน ุงู„ุนู…ู„.`},conversation:{ready:`ู…ุณุงุญุฉ ุงู„ุนู…ู„ ุฌุงู‡ุฒุฉ`,empty:`ุชุงุจุน ุงู„ู…ู‡ู…ุฉ ุฃุฏู†ุงู‡. ุชุธู„ ู‡ุฐู‡ ุงู„ู…ุญุงุฏุซุฉ ูˆู…ู„ูุงุชู‡ุง ู…ุฑุชุจุทุฉ ุจู…ุณุงุญุฉ ุงู„ุนู…ู„ ู‡ุฐู‡.`,loadOlder:`ุชุญู…ูŠู„ ุงู„ุฑุณุงุฆู„ ุงู„ุฃู‚ุฏู…`},status:{preparing:`ุฌุงุฑู ุชุฌู‡ูŠุฒ ู…ุณุงุญุฉ ุงู„ุนู…ู„ ุงู„ู…ุนุฒูˆู„ุฉโ€ฆ`,running:`ุฌุงุฑู ุงู„ุนู…ู„ ุฏุงุฎู„ ู…ุณุงุญุฉ ุงู„ุนู…ู„ ุงู„ู…ุญู„ูŠุฉโ€ฆ`},statusLabels:{idle:`ุฎุงู…ู„`,thinking:`ูŠููƒู‘ุฑ`,complete:`ู…ูƒุชู…ู„`,needsInput:`ุจุญุงุฌุฉ ุฅู„ู‰ ุฅุฏุฎุงู„`,error:`ุฎุทุฃ`},live:{connecting:`ุฌุงุฑู ุงู„ุงุชุตุงู„ ุจุงู„ุชุญุฏูŠุซุงุช ุงู„ู…ุจุงุดุฑุฉโ€ฆ`,reconnecting:`ุฌุงุฑู ุฅุนุงุฏุฉ ุงู„ุงุชุตุงู„ ุจุงู„ุชุญุฏูŠุซุงุช ุงู„ู…ุจุงุดุฑุฉโ€ฆ`,unavailable:`ุงู„ุชุญุฏูŠุซุงุช ุงู„ู…ุจุงุดุฑุฉ ุบูŠุฑ ู…ุชุงุญุฉ`,newActivity:`ู†ุดุงุท ุฌุฏูŠุฏ`,skillsLoaded:`ู…ู‡ุงุฑุงุช ู…ุณุงุญุฉ ุงู„ุนู…ู„ ยท {{count}}`},runtime:{unavailable:`ุจูŠุฆุฉ ุงู„ุชุดุบูŠู„ ุบูŠุฑ ู…ุชุงุญุฉ`,ready:`ุจูŠุฆุฉ ุงู„ุชุดุบูŠู„ ุฌุงู‡ุฒุฉ`,readyOllama:`Docker ุฌุงู‡ุฒ`,readyPlugin:`Docker ูˆุงู„ู…ูƒูˆู‘ู† ุงู„ุฅุถุงููŠ ุฌุงู‡ุฒุงู†`,readyHybrid:`Docker ูˆุงู„ู†ู…ุงุฐุฌ ุฌุงู‡ุฒุฉ`,reason:`ูŠู„ุฒู… ุชูˆูุฑ Docker ูˆู…ุฒูˆู‘ุฏ ู†ู…ุงุฐุฌ ู…ุชุงุญ ุนุจุฑ Ollama ุฃูˆ ู…ูƒูˆู‘ู† ุฅุถุงููŠ.`},workspace:{label:`ุทุฑู‚ ุนุฑุถ ู…ุณุงุญุฉ ุงู„ุนู…ู„`,files:`ุงู„ู…ู„ูุงุช`,activity:`ุงู„ู†ุดุงุท`,preview:`ุงู„ู…ุนุงูŠู†ุฉ`,resize:`ุชุบูŠูŠุฑ ุญุฌู… ุงู„ู…ุญุงุฏุซุฉ ูˆู…ุณุงุญุฉ ุงู„ุนู…ู„`,resizeHint:`ุงุณุญุจ ู„ุชุบูŠูŠุฑ ุงู„ุญุฌู…. ุงุณุชุฎุฏู… ู…ูุงุชูŠุญ ุงู„ุฃุณู‡ู… ู„ู„ุชุญูƒู… ุงู„ุฏู‚ูŠู‚. ุงู†ู‚ุฑ ู†ู‚ุฑู‹ุง ู…ุฒุฏูˆุฌู‹ุง ุฃูˆ ุงุถุบุท Enter ู„ุฅุนุงุฏุฉ ุงู„ุชุนูŠูŠู†.`,splitSize:`ุงู„ู…ุญุงุฏุซุฉ {{conversation}}ูชุŒ ู…ุณุงุญุฉ ุงู„ุนู…ู„ {{workspace}}ูช`,terminal:`ุงู„ุทุฑููŠุฉ`},files:{discard:`ู‡ู„ ุชุฑูŠุฏ ุชุฌุงู‡ู„ ุงู„ุชุบูŠูŠุฑุงุช ุบูŠุฑ ุงู„ู…ุญููˆุธุฉ ููŠ ุงู„ู…ู„ูุŸ`,leaveWithDraft:`ู‡ู„ ุชุฑูŠุฏ ู…ุบุงุฏุฑุฉ ู‡ุฐุง ุงู„ู…ู„ูุŸ ุณูŠุจู‚ู‰ ุชุนุฏูŠู„ูƒ ุบูŠุฑ ุงู„ู…ุญููˆุธ ูƒู…ุณูˆุฏุฉ ููŠ ุงู„ู…ุชุตูุญ.`,up:`ุงู„ู…ุฌู„ุฏ ุงู„ุฃุตู„`,back:`ุงู„ุนูˆุฏุฉ ุฅู„ู‰ ุงู„ู…ู„ูุงุช`,empty:`ู„ุง ุชูˆุฌุฏ ู…ู„ูุงุช ููŠ ู‡ุฐุง ุงู„ู…ุฌู„ุฏ ุจุนุฏ.`,select:`ุงุฎุชุฑ ู…ู„ูู‹ุง ู„ูุญุตู‡ ูˆุชุนุฏูŠู„ู‡.`,editorLabel:`ู…ุญุฑุฑ ุงู„ู…ู„ู: {{path}}`,format:`ุชู†ุณูŠู‚`,formatted:`ุชู… ุชู†ุณูŠู‚ ุงู„ุดูŠูุฑุฉ.`,formatFailed:`ุชุนุฐู‘ุฑ ุชู†ุณูŠู‚ ู‡ุฐุง ุงู„ู…ู„ู.`,formatShortcut:`ุชู†ุณูŠู‚ (Shift+Alt+F)`,formatTooLarge:`ูŠู‚ุชุตุฑ ุงู„ุชู†ุณูŠู‚ ุนู„ู‰ ุงู„ู…ู„ูุงุช ุงู„ุชูŠ ุชู‚ู„ ุนู† 100,000 ู…ุญุฑู ูˆ4,000 ุณุทุฑ.`,formatUnsupported:`ุงู„ุชู†ุณูŠู‚ ุบูŠุฑ ู…ุชุงุญ ู„ู‡ุฐุง ุงู„ู†ูˆุน ู…ู† ุงู„ู…ู„ูุงุช.`,saveShortcut:`ุญูุธ (โŒ˜/Ctrl+S)`,highlightPaused:`ุชู… ุฅูŠู‚ุงู ุงู„ุชู…ูŠูŠุฒ ุงู„ู…ุจุงุดุฑ ู…ุคู‚ุชู‹ุง ู„ู„ู…ู„ูุงุช ุงู„ูƒุจูŠุฑุฉ ู„ู„ุญูุงุธ ุนู„ู‰ ุงุณุชุฌุงุจุฉ ุงู„ู…ุญุฑุฑ.`,plainTextLarge:`ู†ุต ุนุงุฏูŠ ยท ู…ู„ู ูƒุจูŠุฑ`,changes:`ุงู„ุชุบูŠูŠุฑุงุช`,changesSince:`ู…ุง ุชุบูŠู‘ุฑ ู…ู†ุฐ ุงู„ุฏูˆุฑ ุงู„ุฃุฎูŠุฑ`,diffLabel:`ุงู„ุชุบูŠูŠุฑุงุช ู…ู†ุฐ ุงู„ุฏูˆุฑ ุงู„ุฃุฎูŠุฑ: {{path}}`,diffFolded:`{{count}} ุณุทุฑู‹ุง ุฏูˆู† ุชุบูŠูŠุฑ`},activity:{empty:`ุณุชุธู‡ุฑ ุงู„ุฃูˆุงู…ุฑ ูˆุนู…ู„ูŠุงุช ุงู„ู…ู„ูุงุช ูˆู†ุชุงุฆุฌ ุงู„ุฃุฏูˆุงุช ู‡ู†ุง.`,toolActivity:`ู†ุดุงุท ุงู„ุฃุฏุงุฉ`,details:`ุงู„ุชูุงุตูŠู„`,kinds:{message:`ุฑุณุงู„ุฉ`,toolCall:`ุงุณุชุฏุนุงุก ุฃุฏุงุฉ`,toolResult:`ู†ุชูŠุฌุฉ ุฃุฏุงุฉ`,error:`ุฎุทุฃ`}},preview:{command:`ุฃู…ุฑ ุชุดุบูŠู„ ุงุฎุชูŠุงุฑูŠ`,start:`ุจุฏุก ุงู„ู…ุนุงูŠู†ุฉ`,stop:`ุฅูŠู‚ุงู ุงู„ู…ุนุงูŠู†ุฉ`,open:`ูุชุญ`,starting:`ุฌุงุฑู ุจุฏุก ุงู„ู…ุนุงูŠู†ุฉโ€ฆ`,frameTitle:`ู…ุนุงูŠู†ุฉ ู…ุณุงุญุฉ ุงู„ุนู…ู„`,failed:`ุชุนุฐู‘ุฑ ุจุฏุก ุงู„ู…ุนุงูŠู†ุฉ. ุฑุงุฌุน ยซุงู„ู†ุดุงุทยปุŒ ุซู… ุฌุฑู‘ุจ ุฃู…ุฑู‹ุง ุขุฎุฑ.`,empty:`ุดุบู‘ู„ ุงู„ุชุทุจูŠู‚ ุฏุงุฎู„ ู…ุณุงุญุฉ ุงู„ุนู…ู„ ู‡ุฐู‡ ู„ู…ุนุงูŠู†ุชู‡ ู‡ู†ุง.`},mobile:{surface:`ูˆุงุฌู‡ุฉ ุงู„ู…ู‡ู…ุฉ`,conversation:`ุงู„ู…ุญุงุฏุซุฉ`,workspace:`ู…ุณุงุญุฉ ุงู„ุนู…ู„`},toasts:{runFailed:`ุชุนุฐู‘ุฑ ุจุฏุก ู…ู‡ู…ุฉ ุงู„ุนู…ู„.`,updateFailed:`ุชุนุฐู‘ุฑ ุชุญุฏูŠุซ ู‡ุฐู‡ ุงู„ู…ู‡ู…ุฉ.`,renameFailed:`ุชุนุฐู‘ุฑ ุชุบูŠูŠุฑ ุงุณู… ู‡ุฐู‡ ุงู„ู…ู‡ู…ุฉ.`,cancelled:`ุชู… ุฅูŠู‚ุงู ุชุดุบูŠู„ ุงู„ู…ู‡ู…ุฉ.`,cancelFailed:`ุชุนุฐู‘ุฑ ุฅูŠู‚ุงู ุชุดุบูŠู„ ุงู„ู…ู‡ู…ุฉ.`,deleteFailed:`ุชุนุฐู‘ุฑ ุญุฐู ู…ู‡ู…ุฉ ุงู„ุนู…ู„ ู‡ุฐู‡.`,saveFailed:`ุชุนุฐู‘ุฑ ุญูุธ ู‡ุฐุง ุงู„ู…ู„ู.`,saved:`ุชู… ุญูุธ ุงู„ู…ู„ู.`,previewFailed:`ุชุนุฐู‘ุฑ ุจุฏุก ุงู„ู…ุนุงูŠู†ุฉ.`,previewStopFailed:`ุชุนุฐู‘ุฑ ุฅูŠู‚ุงู ุงู„ู…ุนุงูŠู†ุฉ.`},terminal:{connecting:`ุฌุงุฑู ูุชุญ ุตุฏูุฉ ุฏุงุฎู„ ุจูŠุฆุฉ ุงู„ุนุฒู„โ€ฆ`,closed:`ุงู†ุชู‡ุช ุฌู„ุณุฉ ุงู„ุทุฑููŠุฉ.`,failed:`ุชุนุฐู‘ุฑ ุจุฏุก ุฌู„ุณุฉ ุงู„ุทุฑููŠุฉ.`,reconnect:`ุฅุนุงุฏุฉ ุงู„ุงุชุตุงู„`,unavailable:`ุงู„ุทุฑููŠุฉ ุงู„ุชูุงุนู„ูŠุฉ ุบูŠุฑ ู…ุชุงุญุฉ ููŠ ู‡ุฐุง ุงู„ู†ุดุฑ.`,blockedByRun:`ุงู„ู†ู…ูˆุฐุฌ ูŠุณุชุฎุฏู… ู‡ุฐู‡ ุงู„ุญุงูˆูŠุฉ. ุชูุชุญ ุงู„ุทุฑููŠุฉ ุนู†ุฏ ุงู†ุชู‡ุงุก ุงู„ุฏูˆุฑ.`,taskRunning:`ุฏูˆุฑ ุงู„ู†ู…ูˆุฐุฌ ู‚ูŠุฏ ุงู„ุชู†ููŠุฐ`}},usageAnalytics:{eyebrow:`ุงู„ุฅุฏุงุฑุฉ`,title:`ุงุณุชุฎุฏุงู… ุงู„ู…ุฒูˆุฏ`,description:`ุชุงุจุน ู…ูƒุงู„ู…ุงุช API ุงู„ุตุงุฏุฑุฉ ูˆุงุณุชู‡ู„ุงูƒ ุงู„ู†ู…ุงุฐุฌ ุนุจุฑ ุงู„ุฅุถุงูุงุช ุงู„ู…ู…ูƒู‘ู†ุฉ ููŠ ู‡ุฐุง ุงู„ู…ุซูŠู„.`,days:`{{count}} ุฃูŠุงู…`,refresh:`ุชุญุฏูŠุซ ุงู„ุงุณุชุฎุฏุงู…`,loadFailed:`ุชุนุฐุฑ ุชุญู…ูŠู„ ุงุณุชุฎุฏุงู… ุงู„ู…ุฒูˆุฏ.`,metrics:{calls:`ุงู„ู…ูƒุงู„ู…ุงุช`,tokens:`ุงู„ุฑู…ูˆุฒ`},cards:{calls:`ู…ูƒุงู„ู…ุงุช API`,callsDetail:`ุนุจุฑ {{count}} ู…ุณุชุฎุฏู… ู†ุดุท`,tokens:`ุงู„ุฑู…ูˆุฒ ุงู„ู…ูุจู„ุบ ุนู†ู‡ุง`,tokensDetail:`ุงู„ุงุณุชุฎุฏุงู… ุงู„ู…ูุจู„ุบ ุนู†ู‡ ููŠ {{count}} ู…ูƒุงู„ู…ุฉ`,success:`ู…ุนุฏู„ ุงู„ู†ุฌุงุญ`,successDetail:`{{count}} ู…ูƒุงู„ู…ุฉ ูุงุดู„ุฉ`,latency:`ู…ุชูˆุณุท ุฒู…ู† ุงู„ุงุณุชุฌุงุจุฉ`,latencyDetail:`ูˆู‚ุช ุงู„ู…ุฒูˆุฏ ู…ู† ุงู„ุจุฏุงูŠุฉ ู„ู„ู†ู‡ุงูŠุฉ`},activity:{title:`ุงู„ุงุณุชู‡ู„ุงูƒ ุจู…ุฑูˆุฑ ุงู„ูˆู‚ุช`,callsDescription:`ุงู„ุทู„ุจุงุช ุงู„ุตุงุฏุฑุฉ ุงู„ูŠูˆู…ูŠุฉ ู„ู„ุฅุถุงูุงุช ุงู„ู…ู…ูƒู‘ู†ุฉ`,tokensDescription:`ุฅุฌู…ุงู„ูŠ ุงู„ุฑู…ูˆุฒ ุงู„ูŠูˆู…ูŠุฉ ุงู„ุชูŠ ุฃุจู„ุบ ุนู†ู‡ุง ุงู„ู…ุฒูˆุฏูˆู†`,chartLabel:`ู…ุฎุทุท {{metric}} ุงู„ูŠูˆู…ูŠ ู„ู„ู…ุฒูˆุฏ`},models:{title:`ุงุณุชู‡ู„ุงูƒ ุงู„ู†ู…ูˆุฐุฌ`,description:`ุงู„ู†ู…ุงุฐุฌ ุงู„ุชูŠ ุชุญู…ู„ ุฃูƒุจุฑ ู‚ุฏุฑ ู…ู† ุญุฑูƒุฉ ุงู„ู…ุฑูˆุฑ ููŠ ู‡ุฐู‡ ุงู„ูุชุฑุฉ.`,model:`ุงู„ู†ู…ูˆุฐุฌ`,success:`ุงู„ู†ุฌุงุญ`,latency:`ุฒู…ู† ุงู„ุงุณุชุฌุงุจุฉ`},providers:{title:`ุญุฑูƒุฉ ู…ุฑูˆุฑ ุงู„ุฅุถุงูุงุช ุงู„ู…ู…ูƒู‘ู†ุฉ`},capabilities:{title:`ู…ุฒูŠุฌ ุงู„ู‚ุฏุฑุงุช`,characters:`{{count}} ุญุฑู`,images:`{{count}} ุตูˆุฑุฉ`,jobs:`{{count}} ู…ู‡ู…ุฉ ููŠุฏูŠูˆ`,inputs:`{{count}} ู…ุฏุฎู„`,reportedTokens:`{{count}} ุฑู…ุฒ ู…ูุจู„ุบ ุนู†ู‡`},empty:{title:`ู„ุง ุชูˆุฌุฏ ู…ูƒุงู„ู…ุงุช ู…ุฒูˆุฏ ุจุนุฏ`,description:`ุณุชุธู‡ุฑ ุงู„ู…ูƒุงู„ู…ุงุช ู‡ู†ุง ุจุนุฏ ุฃู† ุชุนุงู„ุฌ ุฅุถุงูุฉ ู…ู…ูƒู‘ู†ุฉ ุทู„ุจุงุช ุงู„ุฏุฑุฏุดุฉุŒ ุฃูˆ ุงู„ุนู…ู„ุŒ ุฃูˆ ุงู„ุชุถู…ูŠู†ุŒ ุฃูˆ ุงู„ุตูˆุฑุฉุŒ ุฃูˆ ุงู„ูƒู„ุงู…ุŒ ุฃูˆ ุงู„ุตูˆุชุŒ ุฃูˆ ุงู„ููŠุฏูŠูˆ.`},privacyNote:`ูŠุชู… ู‚ูŠุงุณ ุงู„ุงุณุชุฎุฏุงู… ุนู„ู‰ ุงู„ุฎุงุฏู… ุนู†ุฏ ุญุฏูˆุฏ ุงู„ุฅุถุงูุฉ ุงู„ุตุงุฏุฑุฉ. ูŠุฎุฒู† Libre WebUI ุงู„ู…ุฒูˆุฏุŒ ูˆุงู„ู†ู…ูˆุฐุฌุŒ ูˆุงู„ุชูˆู‚ูŠุชุŒ ูˆุงู„ุญุงู„ุฉุŒ ูˆุงู„ุนุฏุงุฏุงุช ุงู„ู…ูุจู„ุบ ุนู†ู‡ุง โ€” ูˆู„ูŠุณ ุงู„ู…ุทุงู„ุจุงุชุŒ ุฃูˆ ุงู„ุงุณุชุฌุงุจุงุชุŒ ุฃูˆ ู†ู‚ุงุท ุงู„ู†ู‡ุงูŠุฉุŒ ุฃูˆ ุจูŠุงู†ุงุช ุงู„ุงุนุชู…ุงุฏุŒ ุฃูˆ ู‡ูŠุฆุงุช ุฃุฎุทุงุก ุงู„ู…ุฒูˆุฏ. ุชุดู…ู„ ุฅุฌู…ุงู„ูŠุงุช ุงู„ุฑู…ูˆุฒ ูู‚ุท ุงู„ู…ูƒุงู„ู…ุงุช ุงู„ุชูŠ ุฃุนุงุฏ ููŠู‡ุง ุงู„ู…ุฒูˆุฏ ุจูŠุงู†ุงุช ุงู„ุงุณุชุฎุฏุงู… ุงู„ูˆุตููŠุฉ.`},systemPage:{eyebrow:`ุงู„ุฅุฏุงุฑุฉ`,title:`ุงู„ู†ุธุงู…`,description:`ุฑุงู‚ุจ ุงู„ุฌู‡ุงุฒ ูˆูˆู‚ุช ุงู„ุชุดุบูŠู„ ุงู„ุฐูŠ ูŠุณุชุถูŠู ู…ุซูŠู„ Libre WebUI ู‡ุฐุง.`,updated:`ุชู… ุงู„ุชุญุฏูŠุซ {{date}}`,refresh:`ุชุญุฏูŠุซ ู…ุนู„ูˆู…ุงุช ุงู„ู†ุธุงู…`,loadFailed:`ุชุนุฐุฑ ุชุญู…ูŠู„ ู…ุนู„ูˆู…ุงุช ุงู„ู†ุธุงู….`,cards:{uptime:`ูˆู‚ุช ุชุดุบูŠู„ ุงู„ู…ุถูŠู`,uptimeDetail:`ูŠุนู…ู„ ู…ู†ุฐ {{date}}`,memory:`ุงู„ุฐุงูƒุฑุฉ ุงู„ู…ุณุชุฎุฏู…ุฉ`,memoryDetail:`{{used}} ู…ู† {{total}}`,freeSpace:`ู…ุณุงุญุฉ ูุงุฑุบุฉ`,freeSpaceDetail:`{{label}} ยท {{total}} ุงู„ุฅุฌู…ุงู„ูŠ`,containers:`ุงู„ุญุงูˆูŠุงุช ู‚ูŠุฏ ุงู„ุชุดุบูŠู„`,containersDetail:`{{total}} ุญุงูˆูŠุฉ ู…ุนุฑูˆูุฉ ู„ู€ Docker`,dockerUnavailable:`Docker ุบูŠุฑ ู…ุชุงุญ`,unavailable:`ุบูŠุฑ ู…ุชุงุญ`},host:{title:`ุงู„ู…ุถูŠู ูˆูˆู‚ุช ุงู„ุชุดุบูŠู„`,description:`ุชูุงุตูŠู„ ู†ุธุงู… ุงู„ุชุดุบูŠู„ ูˆุงู„ู…ุนุงู„ุฌ ูˆุนู…ู„ูŠุฉ Libre WebUI.`,container:`ูˆู‚ุช ุชุดุบูŠู„ ุงู„ุญุงูˆูŠุฉ`,native:`ูˆู‚ุช ุชุดุบูŠู„ ุฃุตู„ูŠ`,hostname:`ุงุณู… ุงู„ู…ุถูŠู`,operatingSystem:`ู†ุธุงู… ุงู„ุชุดุบูŠู„`,processor:`ุงู„ู…ุนุงู„ุฌ`,logicalCpus:`ูˆุญุฏุงุช CPU ู…ู†ุทู‚ูŠุฉ`,loadAverage:`ู…ุชูˆุณุท ุงู„ุญู…ู„ ยท 1 / 5 / 15 ุฏู‚ูŠู‚ุฉ`,libreVersion:`Libre WebUI`,nodeVersion:`Node.js`,process:`ุงู„ุนู…ู„ูŠุฉ`,workingDirectory:`ุฏู„ูŠู„ ุงู„ุนู…ู„`},memory:{title:`ุงู„ุฐุงูƒุฑุฉ`,description:`ุฐุงูƒุฑุฉ ุงู„ู†ุธุงู… ุงู„ู…ุฑุฆูŠุฉ ู„ูˆู‚ุช ุงู„ุชุดุบูŠู„ ูˆุงุณุชุฎุฏุงู… ุนู…ู„ูŠุฉ ุงู„ุชุทุจูŠู‚.`,usedOf:`{{used}} ู…ุณุชุฎุฏู…ุฉ ู…ู† {{total}}`,free:`{{value}} ูุงุฑุบุฉ`,processRss:`RSS ุงู„ุนู…ู„ูŠุฉ`,heapUsed:`ูƒูˆู…ุฉ V8 ุงู„ู…ุณุชุฎุฏู…ุฉ`,heapTotal:`ุฅุฌู…ุงู„ูŠ ูƒูˆู…ุฉ V8`,external:`ุฐุงูƒุฑุฉ ุฎุงุฑุฌูŠุฉ`},storage:{title:`ุงู„ุชุฎุฒูŠู†`,description:`ุงู„ู…ุณุงุญุฉ ุงู„ู…ุชุงุญุฉ ู„ู†ุธุงู… ู…ู„ูุงุช ูˆู‚ุช ุงู„ุชุดุบูŠู„ ูˆุจูŠุงู†ุงุช ุงู„ุชุทุจูŠู‚ ุงู„ุฏุงุฆู…ุฉ.`,used:`{{value}} ู…ุณุชุฎุฏู…ุฉ`,free:`{{value}} ูุงุฑุบุฉ`,empty:`ู…ุนู„ูˆู…ุงุช ู†ุธุงู… ุงู„ู…ู„ูุงุช ุบูŠุฑ ู…ุชุงุญุฉ ููŠ ูˆู‚ุช ุงู„ุชุดุบูŠู„ ู‡ุฐุง.`},docker:{title:`Docker`,description:`ุญุงู„ุฉ Docker Engine ู„ู„ู‚ุฑุงุกุฉ ูู‚ุท ูˆู‚ุงุฆู…ุฉ ู…ุฎุชุตุฑุฉ ู…ู† ุงู„ุญุงูˆูŠุงุช.`,connected:`ู…ุชุตู„`,unavailable:`ุบูŠุฑ ู…ุชุงุญ`,unavailableDetail:`ุชุดุฎูŠุตุงุช Docker Engine ุบูŠุฑ ู…ุชุงุญุฉ.`,socketStatus:`ู…ู‚ุจุณ ู…ุญู„ูŠ: {{status}}`,mounted:`ู…ูุซุจุช`,notMounted:`ุบูŠุฑ ู…ูุซุจุช`,running:`ู‚ูŠุฏ ุงู„ุชุดุบูŠู„`,stopped:`ู…ุชูˆู‚ู`,paused:`ู…ุชูˆู‚ู ู…ุคู‚ุชู‹ุง`,total:`ุงู„ุฅุฌู…ุงู„ูŠ`,version:`ุงู„ุฅุตุฏุงุฑ`,host:`ุงู„ู…ุถูŠู`,architecture:`ุงู„ุจู†ูŠุฉ`,cpus:`ูˆุญุฏุงุช CPU`,memory:`ุงู„ุฐุงูƒุฑุฉ`,container:`ุงู„ุญุงูˆูŠุฉ`,image:`ุงู„ุตูˆุฑุฉ`,state:`ุงู„ุญุงู„ุฉ`,created:`ุชู… ุงู„ุฅู†ุดุงุก`,empty:`Docker ู…ุชุตู„ ูˆู„ุง ุชูˆุฌุฏ ุญุงูˆูŠุงุช ู…ุฏุฑุฌุฉ ุญุงู„ูŠู‹ุง.`},network:{title:`ุงู„ุดุจูƒุฉ`,description:`ุงู„ูˆุงุฌู‡ุงุช ูˆุงู„ุนู†ุงูˆูŠู† ูˆุนุฏุงุฏุงุช ุญุฑูƒุฉ ู…ุฑูˆุฑ Linux ุงู„ู…ุฑุฆูŠุฉ ู„ูˆู‚ุช ุงู„ุชุดุบูŠู„.`,internal:`ุฏุงุฎู„ูŠ`,empty:`ู„ุง ุชูˆุฌุฏ ูˆุงุฌู‡ุงุช ุดุจูƒุฉ ู…ุฑุฆูŠุฉ ู„ูˆู‚ุช ุชุดุบูŠู„ ุงู„ุชุทุจูŠู‚.`},securityNote:`ู‡ุฐู‡ ุงู„ุตูุญุฉ ู…ุฎุตุตุฉ ู„ู„ู…ุณุคูˆู„ูŠู† ูู‚ุท. ูŠูุฑุฌุน ุงู„ุฎุงุฏู… ู…ู„ุฎุตุงุช ุชุดุบูŠู„ูŠุฉ ูู‚ุท: ูู‡ูˆ ู„ุง ูŠูƒุดู ู…ุชุบูŠุฑุงุช ุงู„ุจูŠุฆุฉุŒ ุฃูˆ ุจูŠุงู†ุงุช ุงู„ุงุนุชู…ุงุฏุŒ ุฃูˆ ุชุณู…ูŠุงุช DockerุŒ ุฃูˆ ุงู„ุชุซุจูŠุชุงุชุŒ ุฃูˆ ุฃูˆุงู…ุฑ ุงู„ุญุงูˆูŠุฉุŒ ุฃูˆ ุญู…ูˆู„ุงุช ุงู„ูุญุต. ุนู†ุฏู…ุง ูŠุนู…ู„ Libre WebUI ููŠ ุญุงูˆูŠุฉุŒ ุชุฃุชูŠ ุชูุงุตูŠู„ CPU ูˆุงู„ุฐุงูƒุฑุฉ ุนู„ู‰ ู…ุณุชูˆู‰ ุงู„ู…ุถูŠู ู…ู† Docker Engine ุนู†ุฏู…ุง ูŠูƒูˆู† ู…ู‚ุจุณู‡ ุงู„ู…ุญู„ูŠ ู…ุชุงุญู‹ุงุ› ุชุตู ุงู„ู‚ูŠู… ุงู„ุฃุฎุฑู‰ ูˆู‚ุช ุชุดุบูŠู„ ุงู„ุชุทุจูŠู‚.`},mediaGeneration:{title:`ุชูˆู„ูŠุฏ ุงู„ูˆุณุงุฆุท`,description:`ุฃู†ุดุฆ ููŠุฏูŠูˆ ุฃูˆ ุตูˆุชู‹ุง ุฃูˆ ู…ูˆุณูŠู‚ู‰ ุฃูˆ ูƒู„ุงู…ู‹ุง ุจุงุณุชุฎุฏุงู… ู…ุฒูˆุฏ ูˆุณุงุฆุท ู…ููุนู‘ู„.`,image:`ุตูˆุฑุฉ`,video:`ููŠุฏูŠูˆ`,audio:`ุตูˆุช`,sound:`ุตูˆุช`,speech:`ูƒู„ุงู…`,model:`ุงู„ู†ู…ูˆุฐุฌ`,voice:`ุงู„ุตูˆุช ุฃูˆ ู…ุนุฑู ุงู„ุตูˆุช`,resolution:`ุงู„ุฏู‚ุฉ`,aspectRatio:`ู†ุณุจุฉ ุงู„ุนุฑุถ ุฅู„ู‰ ุงู„ุงุฑุชูุงุน`,duration:`ุงู„ู…ุฏุฉ`,providerDefault:`ุงูุชุฑุงุถูŠ ู„ู„ู…ุฒูˆุฏ`,generateAudio:`ุชูˆู„ูŠุฏ ุตูˆุช ู…ุน ุงู„ููŠุฏูŠูˆ ุนู†ุฏ ุงู„ุฏุนู…`,prompt:`ุงู„ู…ุทุงู„ุจุฉ`,text:`ุงู„ู†ุต ู„ู„ุชุญุฏุซ`,videoPlaceholder:`ุตู ุงู„ู…ุดู‡ุฏุŒ ูˆุงู„ุญุฑูƒุฉุŒ ูˆุงู„ูƒุงู…ูŠุฑุงุŒ ูˆุงู„ุฅุถุงุกุฉ...`,audioPlaceholder:`ุฃุฏุฎู„ ุงู„ู†ุต ุงู„ุฐูŠ ุชุฑูŠุฏ ู„ู„ุตูˆุช ุฃู† ูŠู†ุทู‚ู‡...`,soundPlaceholder:`ุตู ุงู„ุตูˆุชุŒ ุฃูˆ ุงู„ู…ูˆุณูŠู‚ู‰ุŒ ุฃูˆ ุงู„ุฃุฌูˆุงุกุŒ ุฃูˆ ุงู„ุงุณุชุฌุงุจุฉ ุงู„ู…ู†ุทูˆู‚ุฉ ุงู„ุชูŠ ุชุฑูŠุฏู‡ุง...`,generate:`ุชูˆู„ูŠุฏ`,generating:`ุฌุงุฑู ุงู„ุชูˆู„ูŠุฏโ€ฆ ู‚ุฏ ูŠุณุชุบุฑู‚ ู‡ุฐุง ุนุฏุฉ ุฏู‚ุงุฆู‚`,success:`ุชู… ุชูˆู„ูŠุฏ ุงู„ูˆุณุงุฆุท ูˆุญูุธู‡ุง ููŠ Imagine`,failed:`ูุดู„ ุชูˆู„ูŠุฏ ุงู„ูˆุณุงุฆุท`,loadFailed:`ูุดู„ ุชุญู…ูŠู„ ู…ุฒูˆุฏูŠ ุงู„ูˆุณุงุฆุท`,noModels:`ู„ุง ุชุชูˆูุฑ ู†ู…ุงุฐุฌ {{kind}}. ู‚ู… ุจุชูุนูŠู„ ู…ุฒูˆุฏ ู…ุชูˆุงูู‚ ูˆุงุญูุธ ุจูŠุงู†ุงุช ุงุนุชู…ุงุฏู‡ ุฃูˆู„ุงู‹.`},mediaGallery:{itemCount:`{{count}} ุนู†ุงุตุฑ`,empty:`ู„ุง ุชูˆุฌุฏ ูˆุณุงุฆุท ู…ูˆู„ุฏุฉ ุจุนุฏ`,emptyHint:`ู‚ู… ุจุชูˆู„ูŠุฏ ุตูˆุฑุฉ ุฃูˆ ููŠุฏูŠูˆ ุฃูˆ ู…ู‚ุทุน ุตูˆุชูŠ ูˆุณูŠุธู‡ุฑ ู‡ู†ุง.`,filters:{all:`ุงู„ูƒู„`,image:`ุงู„ุตูˆุฑ`,video:`ู…ู‚ุงุทุน ุงู„ููŠุฏูŠูˆ`,audio:`ุงู„ุตูˆุช`}}};export{e as default};
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/api-DCD41-l9.js","js/rolldown-runtime-QTnfLwEv.js","js/router-vendor-BjDI9mRe.js","js/markdown-core-GI9BPwrB.js","js/utils-vendor-Cbaj0BC5.js","js/demoMode-BhEpMVh5.js","js/logger-DbNs3-DK.js"])))=>i.map(i=>d[i]);
2
- import{n as e}from"./rolldown-runtime-QTnfLwEv.js";import{i as t,p as n}from"./router-vendor-BjDI9mRe.js";import{en as r}from"./ui-vendor-DohPFHDW.js";import{o as i,t as a}from"./utils-vendor-Cbaj0BC5.js";import{n as o}from"./demoMode-BhEpMVh5.js";import{t as s}from"./logger-DbNs3-DK.js";import{T as c,c as l,f as u,l as d,o as f,s as p}from"./api-DCD41-l9.js";import{r as m}from"./utils-DmZD5uA3.js";import{t as h}from"./appStore-Bw-8Exsx.js";var g=[`Chat`,`Image`,`Speech`,`Transcription`,`Embedding`],_={chat:`Chat`,completion:`Chat`,embedding:`Embedding`,image:`Image`,stt:`Transcription`,tts:`Speech`},v={completion:`Chat`,embedding:`Embedding`,image:`Image`,stt:`Transcription`,tts:`Speech`};function y(e){let t=new Map,n=(e,n)=>{for(let r of e||[]){if(typeof r!=`string`||!r.trim())continue;let e=r.trim(),i=t.get(e)??new Set;i.add(n),t.set(e,i)}};n(e.model_map,_[e.type]);for(let t of Object.keys(e.capabilities||{}))n(e.capabilities?.[t]?.model_map,v[t]);return Array.from(t,([e,t])=>({id:e,capabilities:g.filter(e=>t.has(e))}))}function b(e){return e.type===`chat`||e.type===`completion`}var x=[`dall-e`,`embed`,`gpt-image`,`moderation`,`rerank`,`sora`,`stable-diffusion`,`text-to-speech`,`tts`,`whisper`];function S(e){let t=e.toLocaleLowerCase();return!x.some(e=>t.includes(e))}function ee(e){let t=new Set;for(let[n,r]of Object.entries(e.capabilities||{}))if(n!==`completion`)for(let e of r?.model_map||[])t.add(e.trim());return(e.model_map||[]).filter(e=>typeof e==`string`&&e.trim().length>0&&!t.has(e.trim())&&S(e))}function C(e,t){let n=t.trim().toLocaleLowerCase();return n?[e.name,e.id,e.type,...y(e).map(e=>e.id)].some(e=>e?.toLocaleLowerCase().includes(n)):!0}var w=(e,t)=>{if(e&&typeof e==`object`&&`response`in e){let t=e;if(t.response?.data?.error)return t.response.data.error}return e instanceof Error?e.message:t};function T(e){return{...e,id:e.id||m(),timestamp:Date.now()}}function E(e,t){return e.currentSession?.isPrivate&&e.currentSession?.id===t}function D(e,t){return e.sessions.some(e=>e.id===t)}function te(e,t){return!!e.currentSession&&(E(e,t)||D(e,e.currentSession.id))}function ne(e,t,n){if(E(e,t))return e.currentSession.messages.find(e=>e.id===n.id)?e:{currentSession:{...e.currentSession,messages:[...e.currentSession.messages,n],updatedAt:Date.now()},sessions:e.sessions};if(e.sessions.find(e=>e.id===t)?.messages.some(e=>e.id===n.id))return e;let r=e.sessions.map(e=>{if(e.id!==t)return e;let r=[...e.messages];if(n.parentId){let e=n.parentId;r=r.map(t=>t.id===e||t.parentId===e?{...t,isActive:!1,branchIndex:t.branchIndex??0,siblingCount:(n.branchIndex||0)+1}:t)}return{...e,messages:[...r,n],updatedAt:Date.now()}});return{sessions:r,currentSession:e.currentSession?.id===t&&r.find(e=>e.id===t)||e.currentSession}}function re(e,t,n,r){if(e.currentSession?.id!==t)return e;if(e.currentSession?.isPrivate){let t=e.currentSession.messages.find(e=>e.id===n);return!t||t.content===r?e:{sessions:e.sessions,currentSession:{...e.currentSession,messages:e.currentSession.messages.map(e=>e.id===n?{...e,content:r}:e),updatedAt:Date.now()}}}let i=e.sessions.find(e=>e.id===t),a=i?.messages.find(e=>e.id===n);if(!i||!a||a.content===r)return e;let o=e.sessions.map(e=>e.id===t?{...e,messages:e.messages.map(e=>e.id===n?{...e,content:r}:e),updatedAt:Date.now()}:e);return{sessions:o,currentSession:e.currentSession?.id===t&&o.find(e=>e.id===t)||e.currentSession}}function ie(e,t,n,r,i,a){if(e.currentSession?.id!==t)return e;if(e.currentSession?.isPrivate)return{sessions:e.sessions,currentSession:{...e.currentSession,messages:e.currentSession.messages.map(e=>e.id===n?{...e,content:r,statistics:i,...a?{providerMetadata:a}:{}}:e),updatedAt:Date.now()}};let o=e.sessions.map(e=>e.id===t?{...e,messages:e.messages.map(e=>e.id===n?{...e,content:r,statistics:i,...a?{providerMetadata:a}:{}}:e),updatedAt:Date.now()}:e);return{sessions:o,currentSession:e.currentSession?.id===t&&o.find(e=>e.id===t)||e.currentSession}}function ae(e){return e.reduce((e,t)=>(e[t.id]=t,e),{})}function oe(e){return e.map(e=>({name:`persona:${e.id}`,model:e.model,size:0,digest:``,details:{parent_model:e.model,format:`persona`,family:`persona`,families:[`persona`],parameter_size:``,quantization_level:``},modified_at:new Date(e.updated_at).toISOString(),expires_at:new Date().toISOString(),size_vram:0,isPersona:!0,personaName:e.name,personaDescription:e.description}))}function se(e){return e.filter(e=>e.active&&e.type!==`tts`&&e.type!==`image`).flatMap(e=>ee(e).map(t=>({name:t,model:t,size:0,digest:``,details:{parent_model:``,format:``,family:``,families:[],parameter_size:``,quantization_level:``},modified_at:new Date().toISOString(),expires_at:new Date().toISOString(),size_vram:0,isPlugin:!0,pluginId:e.id,pluginName:e.name})))}var O=`persona:`,ce=`plugin:`,le=`ollama:`,k=`legacy:`,ue=`agent:`,A=e=>{try{return decodeURIComponent(e)}catch{return null}};function j(e){return e.isLegacySelection?{model:e.name,providerType:null,providerId:null}:e.isPersona?{model:e.name,providerType:`ollama`,providerId:null}:e.isPlugin&&e.pluginId?{model:e.name,providerType:`plugin`,providerId:e.pluginId}:e.isAgent?{model:e.name,providerType:`agent`,providerId:e.name}:{model:e.name,providerType:`ollama`,providerId:null}}function de(e){return e.providerType?e.providerType===`plugin`&&e.providerId?`${ce}${encodeURIComponent(e.providerId)}:${encodeURIComponent(e.model)}`:e.providerType===`agent`&&e.providerId?`${ue}${encodeURIComponent(e.providerId)}:${encodeURIComponent(e.model)}`:e.providerType===`ollama`&&e.model.startsWith(O)?`${O}${encodeURIComponent(e.model.slice(8))}`:e.providerType===`ollama`?`${le}${encodeURIComponent(e.model)}`:`${k}${encodeURIComponent(e.model)}`:`${k}${encodeURIComponent(e.model)}`}function M(e){return de(j(e))}function fe(e){if(e.startsWith(O)){let t=A(e.slice(8));return t===null?null:{model:`${O}${t}`,providerType:`ollama`,providerId:null}}if(e.startsWith(ce)){let t=e.slice(7),n=t.indexOf(`:`);if(n<1)return null;let r=A(t.slice(0,n)),i=A(t.slice(n+1));return r&&i?{model:i,providerType:`plugin`,providerId:r}:null}if(e.startsWith(ue)){let t=e.slice(6),n=t.indexOf(`:`);if(n<1)return null;let r=A(t.slice(0,n)),i=A(t.slice(n+1));return r&&i?{model:i,providerType:`agent`,providerId:r}:null}if(e.startsWith(le)){let t=A(e.slice(7));return t?{model:t,providerType:`ollama`,providerId:null}:null}if(e.startsWith(k)){let t=A(e.slice(7));return t?{model:t,providerType:null,providerId:null}:null}return null}function N(e,t){return t.providerType===`plugin`?e.find(e=>e.isPlugin&&e.pluginId===t.providerId&&e.name===t.model):t.providerType===`agent`?e.find(e=>e.isAgent&&e.name===t.model):t.providerType===`ollama`?t.model.startsWith(O)?e.find(e=>e.isPersona&&e.name===t.model):e.find(e=>!e.isPlugin&&!e.isPersona&&e.name===t.model):e.find(e=>e.isLegacySelection&&e.name===t.model)??e.find(e=>e.name===t.model)}function pe(e,t){if(!t.providerType)return de(t);let n=N(e,t);return n?M(n):de(t)}function me(e,t){let n=e.find(e=>M(e)===t);return n?j(n):fe(t)}function he(e){return!e.isPlugin&&!e.isPersona&&!e.isAgent&&!e.isLegacySelection&&!e.isUnavailable}function ge(e,t){return t.model?!!N(e.filter(e=>!e.isLegacySelection&&!e.isUnavailable),t):!1}function _e(e,t){if(!t.model)return e;if(!t.providerType){if(e.some(e=>e.isLegacySelection&&e.name===t.model))return e;let n=!!N(e,t);return[...e,{name:t.model,model:t.model,size:0,digest:``,modified_at:``,details:{},isLegacySelection:!0,isUnavailable:!n}]}if(N(e,t))return e;let n=t.providerType,r=n===`ollama`&&t.model.startsWith(O),i=n===`plugin`&&t.providerId||void 0;return[...e,{name:t.model,model:t.model,size:0,digest:``,modified_at:``,details:{},isPlugin:n===`plugin`,pluginId:i,pluginName:i,isAgent:n===`agent`,isPersona:r,personaName:r?t.model.slice(8):void 0,isUnavailable:!0}]}var P=s(`chat-store`),F=i((e,n)=>({sessions:[],currentSession:null,setCurrentSession:t=>{e({currentSession:t})},createSession:async(t,n,i,a,o)=>{try{e({loading:!0,error:null});let s=await c.createSession(t,n,i,a,o);if(s.success&&s.data){let t=s.data;return e(e=>({sessions:[t,...e.sessions],currentSession:t,loading:!1})),r.success(`New chat created`),t}}catch(t){let n=w(t,`Failed to create session`);e({error:n,loading:!1}),r.error(n)}},loadSessions:async()=>{try{e({loading:!0,error:null});let t=await c.getSessions();t.success&&t.data&&e(e=>{let n=t.data||[],r=n.map(e=>e.id),i=null;return e.currentSession&&r.includes(e.currentSession.id)?i=n.find(t=>t.id===e.currentSession.id)||null:n.length>0&&(i=n[0],e.currentSession&&P.warn(`Previous currentSession not found in backend sessions:`,e.currentSession.id)),{sessions:n,currentSession:i,loading:!1}})}catch(t){let n=w(t,`Failed to load sessions`);e({error:n,loading:!1}),r.error(n)}},deleteSession:async t=>{try{let n=await c.deleteSession(t);n.success?(e(e=>{let n=e.sessions.filter(e=>e.id!==t),r=e.currentSession?.id===t?n[0]||null:e.currentSession;return P.debug(`Store: Updating state, sessions count:`,n.length),{sessions:n,currentSession:r}}),r.success(`Chat deleted`)):(P.error(`Store: deleteSession failed:`,n),r.error(`Failed to delete chat`))}catch(e){P.error(`Store: deleteSession error:`,e);let t=w(e,`Failed to delete session`);r.error(t)}},clearAllSessions:async()=>{try{e({loading:!0,error:null});let t=await c.clearAllSessions();t.success?(e({sessions:[],currentSession:null,loading:!1}),r.success(`All chat history cleared`)):(P.error(`Store: clearAllSessions failed:`,t),r.error(`Failed to clear chat history`),e({loading:!1}))}catch(t){P.error(`Store: clearAllSessions error:`,t);let n=w(t,`Failed to clear chat history`);r.error(n),e({loading:!1})}},clearAllState:()=>{e({sessions:[],currentSession:null,models:[],selectedModel:``,selectedProviderType:null,selectedProviderId:null,systemMessage:``,loading:!1,error:null})},applySessionTitle:(t,n,r=Date.now())=>{e(e=>({sessions:e.sessions.map(e=>e.id===t?{...e,title:n,updatedAt:r}:e),currentSession:e.currentSession?.id===t?{...e.currentSession,title:n,updatedAt:r}:e.currentSession}))},updateSessionTitle:async(e,t)=>{try{let i=await c.updateSession(e,{title:t});if(i.success&&i.data){let t=i.data.title,a=i.data.updatedAt??Date.now();n().applySessionTitle(e,t,a),r.success(`Chat title updated`)}}catch(e){let t=w(e,`Failed to update session`);r.error(t)}},addMessage:(t,i)=>{let a=n(),o=E(a,t);if(!te(a,t)){r.error(`No valid chat session. Please create or select a chat.`),P.error(`addMessage blocked: currentSession is not valid`,a.currentSession?.id);return}if(!o&&!D(a,t)){r.error(`Session not found or invalid. Please select or create a valid chat session.`),P.error(`addMessage blocked: sessionId not found in sessions`,t);return}let s=T(i);e(e=>ne(e,t,s))},updateMessage:(t,n,r)=>{e(e=>re(e,t,n,r))},updateMessageWithStatistics:(t,n,r,i,a)=>{e(e=>ie(e,t,n,r,i,a))},models:[],loadModels:async()=>{try{e({loading:!0,error:null}),P.debug(`Loading models from API...`);let i=[],a;try{let e=await u.getModels();e.success&&e.data?(i=[...e.data],P.debug(`Ollama models loaded:`,e.data.length)):a=Error(e.error||e.message||`Ollama models are unavailable.`)}catch(e){a=e,P.warn(`Ollama models are unavailable; continuing with plugin models:`,e)}try{let e=await l.getAllPlugins();if(e.success&&e.data){let t=e.data.filter(e=>e.active&&e.type!==`tts`&&e.type!==`image`);P.debug(`๐Ÿ”Œ Active plugins found:`,t.map(e=>e.name));let n=se(t);i.push(...n),P.debug(`Plugin models added:`,n.length)}}catch(e){P.error(`โŒ Failed to load plugin models:`,e),e instanceof Error&&P.error(`โŒ Plugin error details:`,{message:e.message,response:e.response?.data,status:e.response?.status,url:e.config?.url})}try{let{agentCliApi:e}=await t(async()=>{let{agentCliApi:e}=await import(`./api-DCD41-l9.js`).then(e=>e.t);return{agentCliApi:e}},__vite__mapDeps([0,1,2,3,4,5,6])),n=await e.getModels();if(n.success&&n.data){let e=n.data.map(e=>({name:e.id,model:e.id,size:0,digest:``,modified_at:``,details:{},isAgent:!0,agentName:e.name}));i.push(...e),P.debug(`Agent CLI models added:`,e.length)}}catch(e){P.warn(`Agent CLI models unavailable:`,e)}let o=i.length;try{let{personaApi:n}=await t(async()=>{let{personaApi:e}=await import(`./api-DCD41-l9.js`).then(e=>e.t);return{personaApi:e}},__vite__mapDeps([0,1,2,3,4,5,6])),r=await n.getPersonas();if(r.success&&r.data){let t=ae(r.data),n=oe(r.data);i.push(...n),e(e=>({...e,personas:t}))}}catch(e){P.error(`โŒ Failed to load personas:`,e)}P.debug(`Total models loaded:`,i.length);let s=o===0&&a?w(a,`No model provider is available`):null,c=n(),d=c.selectedModel,f={model:d,providerType:c.selectedProviderType,providerId:c.selectedProviderId},m=!!N(i,f),h=c.selectedProviderType===`ollama`||c.selectedProviderType===`plugin`;if(d&&!m&&h){let t=`Selected model "${d}" is unavailable from ${c.selectedProviderType===`plugin`?c.selectedProviderId||`plugin`:`Ollama`}. Reactivate that provider or select another model.`;e({models:i,loading:!1,error:t}),r.error(t);return}if(d&&!m&&i.length>0){let t=j(i[0]);P.debug(`โš ๏ธ Legacy selected model "${d}" no longer available, falling back to "${t.model}"`),e({models:i,loading:!1,selectedModel:t.model,selectedProviderType:t.providerType||null,selectedProviderId:t.providerId||null,error:s}),p.setDefaultModel(t.model,t.providerType,t.providerId).catch(e=>{P.warn(`Failed to save fallback default model:`,e)}),r.success(`Switched to ${t.model} (previous model no longer available)`)}else e({models:i,loading:!1,error:s});s&&r.error(s)}catch(t){P.error(`Error loading models:`,t);let n=w(t,`Failed to load models`);e({error:n,loading:!1}),r.error(n)}},loadPreferences:async()=>{try{let t=await p.getPreferences();if(t.success&&t.data){let{defaultModel:n,defaultProviderType:r,defaultProviderId:i,systemMessage:a}=t.data;n&&(e({selectedModel:n,selectedProviderType:r||null,selectedProviderId:r===`plugin`&&i||null}),P.debug(`โœ… Loaded default model from backend:`,n)),a!==void 0&&(e({systemMessage:a}),P.debug(`โœ… Loaded system message from backend`))}}catch(e){P.warn(`โŒ Failed to load preferences from backend:`,e)}},selectedModel:``,selectedProviderType:null,selectedProviderId:null,setSelectedModel:(t,n=null,r=null)=>{let i=n===`plugin`&&r||null;e({selectedModel:t,selectedProviderType:n,selectedProviderId:i}),p.setDefaultModel(t,n,i).catch(e=>{P.warn(`Failed to save default model to backend:`,e)})},updateCurrentSessionModel:async(t,i=null,a=null)=>{let o=n();if(!o.currentSession)throw Error(`No current session to update`);try{let n=await c.updateSession(o.currentSession.id,{model:t,providerType:i,providerId:i===`plugin`?a:null});n.success&&n.data&&(e(e=>({sessions:e.sessions.map(t=>t.id===e.currentSession?.id?n.data:t),currentSession:n.data,selectedModel:t,selectedProviderType:i,selectedProviderId:i===`plugin`&&a||null})),r.success(`Model updated for current chat`))}catch(e){let t=w(e,`Failed to update session model`);throw r.error(t),e}},personas:{},loadPersonas:async()=>{try{e({loading:!0,error:null});let t=await d.getPersonas();if(t.success&&t.data){let n=t.data;e({personas:ae(n),loading:!1}),P.debug(`โœ… Personas loaded:`,n.length)}}catch(t){let n=w(t,`Failed to load personas`);e({error:n,loading:!1}),P.error(`โŒ Failed to load personas:`,n)}},getCurrentPersona:()=>{let e=n();if(!e.currentSession||!e.currentSession.model?.startsWith(`persona:`))return null;let t=e.currentSession.model.replace(`persona:`,``);return e.personas[t]||null},systemMessage:``,setSystemMessage:t=>{let r=n();if(e({systemMessage:t}),p.setSystemMessage(t).catch(e=>{P.warn(`Failed to save system message to backend:`,e)}),r.currentSession){let n=r.currentSession.messages.findIndex(e=>e.role===`system`);if(n!==-1){e(e=>{let r=e.sessions.map(r=>{if(r.id===e.currentSession?.id){let e=r.messages.map((e,r)=>r===n&&e.role===`system`?{...e,content:t,timestamp:Date.now()}:e);return{...r,messages:e,updatedAt:Date.now()}}return r});return{sessions:r,currentSession:e.currentSession?r.find(t=>t.id===e.currentSession.id)||e.currentSession:null}});let i=r.currentSession.messages[n];c.updateMessage(r.currentSession.id,i.id,{content:t}).catch(e=>{P.warn(`Failed to sync system message update to backend:`,e)}),P.debug(`โœ… Updated system message in current session`)}}},loading:!1,error:null,setError:t=>e({error:t}),generatingTitleForSession:null,setGeneratingTitleForSession:t=>e({generatingTitleForSession:t}),...typeof window<`u`&&{testPluginApi:async()=>{try{P.debug(`๐Ÿงช Testing plugin API...`);let e=await l.getAllPlugins();return P.debug(`โœ… Plugin API test result:`,e),e}catch(e){return P.error(`โŒ Plugin API test failed:`,e),{error:e}}}}})),ve=1e5,I=`[Earlier live output omitted]
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/api-BCqWXjZI.js","js/rolldown-runtime-QTnfLwEv.js","js/router-vendor-BjDI9mRe.js","js/markdown-core-GI9BPwrB.js","js/utils-vendor-Cbaj0BC5.js","js/demoMode-BhEpMVh5.js","js/logger-DbNs3-DK.js"])))=>i.map(i=>d[i]);
2
+ import{n as e}from"./rolldown-runtime-QTnfLwEv.js";import{i as t,p as n}from"./router-vendor-BjDI9mRe.js";import{pn as r}from"./ui-vendor-ChfdHf5M.js";import{o as i,t as a}from"./utils-vendor-Cbaj0BC5.js";import{n as o}from"./demoMode-BhEpMVh5.js";import{t as s}from"./logger-DbNs3-DK.js";import{D as c,c as l,l as u,o as d,p as f,u as p}from"./api-BCqWXjZI.js";import{r as m}from"./utils-DmZD5uA3.js";import{t as h}from"./appStore-CDM6V5ny.js";var g=[`Chat`,`Image`,`Video`,`Audio`,`Speech`,`Transcription`,`Embedding`],_={chat:`Chat`,completion:`Chat`,embedding:`Embedding`,image:`Image`,audio:`Audio`,stt:`Transcription`,tts:`Speech`,video:`Video`},v={completion:`Chat`,embedding:`Embedding`,image:`Image`,audio:`Audio`,stt:`Transcription`,tts:`Speech`,video:`Video`};function y(e){let t=new Map,n=(e,n)=>{for(let r of e||[]){if(typeof r!=`string`||!r.trim())continue;let e=r.trim(),i=t.get(e)??new Set;i.add(n),t.set(e,i)}};n(e.model_map,_[e.type]);for(let t of Object.keys(e.capabilities||{}))n(e.capabilities?.[t]?.model_map,v[t]);return Array.from(t,([e,t])=>({id:e,capabilities:g.filter(e=>t.has(e))}))}function b(e){return e.type===`chat`||e.type===`completion`}var x=[`dall-e`,`embed`,`gpt-image`,`moderation`,`rerank`,`sora`,`stable-diffusion`,`text-to-speech`,`tts`,`whisper`];function S(e){let t=e.toLocaleLowerCase();return!x.some(e=>t.includes(e))}function ee(e){let t=new Set;for(let[n,r]of Object.entries(e.capabilities||{}))if(n!==`completion`)for(let e of r?.model_map||[])t.add(e.trim());return(e.model_map||[]).filter(e=>typeof e==`string`&&e.trim().length>0&&!t.has(e.trim())&&S(e))}function C(e,t){let n=t.trim().toLocaleLowerCase();return n?[e.name,e.id,e.type,...y(e).map(e=>e.id)].some(e=>e?.toLocaleLowerCase().includes(n)):!0}var w=(e,t)=>{if(e&&typeof e==`object`&&`response`in e){let t=e;if(t.response?.data?.error)return t.response.data.error}return e instanceof Error?e.message:t};function T(e){return{...e,id:e.id||m(),timestamp:Date.now()}}function E(e,t){return e.currentSession?.isPrivate&&e.currentSession?.id===t}function D(e,t){return e.sessions.some(e=>e.id===t)}function te(e,t){return!!e.currentSession&&(E(e,t)||D(e,e.currentSession.id))}function ne(e,t,n){if(E(e,t))return e.currentSession.messages.find(e=>e.id===n.id)?e:{currentSession:{...e.currentSession,messages:[...e.currentSession.messages,n],updatedAt:Date.now()},sessions:e.sessions};if(e.sessions.find(e=>e.id===t)?.messages.some(e=>e.id===n.id))return e;let r=e.sessions.map(e=>{if(e.id!==t)return e;let r=[...e.messages];if(n.parentId){let e=n.parentId;r=r.map(t=>t.id===e||t.parentId===e?{...t,isActive:!1,branchIndex:t.branchIndex??0,siblingCount:(n.branchIndex||0)+1}:t)}return{...e,messages:[...r,n],updatedAt:Date.now()}});return{sessions:r,currentSession:e.currentSession?.id===t&&r.find(e=>e.id===t)||e.currentSession}}function re(e,t,n,r){if(e.currentSession?.id!==t)return e;if(e.currentSession?.isPrivate){let t=e.currentSession.messages.find(e=>e.id===n);return!t||t.content===r?e:{sessions:e.sessions,currentSession:{...e.currentSession,messages:e.currentSession.messages.map(e=>e.id===n?{...e,content:r}:e),updatedAt:Date.now()}}}let i=e.sessions.find(e=>e.id===t),a=i?.messages.find(e=>e.id===n);if(!i||!a||a.content===r)return e;let o=e.sessions.map(e=>e.id===t?{...e,messages:e.messages.map(e=>e.id===n?{...e,content:r}:e),updatedAt:Date.now()}:e);return{sessions:o,currentSession:e.currentSession?.id===t&&o.find(e=>e.id===t)||e.currentSession}}function ie(e,t,n,r,i,a){if(e.currentSession?.id!==t)return e;if(e.currentSession?.isPrivate)return{sessions:e.sessions,currentSession:{...e.currentSession,messages:e.currentSession.messages.map(e=>e.id===n?{...e,content:r,statistics:i,...a?{providerMetadata:a}:{}}:e),updatedAt:Date.now()}};let o=e.sessions.map(e=>e.id===t?{...e,messages:e.messages.map(e=>e.id===n?{...e,content:r,statistics:i,...a?{providerMetadata:a}:{}}:e),updatedAt:Date.now()}:e);return{sessions:o,currentSession:e.currentSession?.id===t&&o.find(e=>e.id===t)||e.currentSession}}function ae(e){return e.reduce((e,t)=>(e[t.id]=t,e),{})}function oe(e){return e.map(e=>({name:`persona:${e.id}`,model:e.model,size:0,digest:``,details:{parent_model:e.model,format:`persona`,family:`persona`,families:[`persona`],parameter_size:``,quantization_level:``},modified_at:new Date(e.updated_at).toISOString(),expires_at:new Date().toISOString(),size_vram:0,isPersona:!0,personaName:e.name,personaDescription:e.description}))}function se(e){return e.filter(e=>e.active&&e.type!==`tts`&&e.type!==`image`).flatMap(e=>ee(e).map(t=>({name:t,model:t,size:0,digest:``,details:{parent_model:``,format:``,family:``,families:[],parameter_size:``,quantization_level:``},modified_at:new Date().toISOString(),expires_at:new Date().toISOString(),size_vram:0,isPlugin:!0,pluginId:e.id,pluginName:e.name})))}var O=`persona:`,ce=`plugin:`,le=`ollama:`,k=`legacy:`,ue=`agent:`,A=e=>{try{return decodeURIComponent(e)}catch{return null}};function j(e){return e.isLegacySelection?{model:e.name,providerType:null,providerId:null}:e.isPersona?{model:e.name,providerType:`ollama`,providerId:null}:e.isPlugin&&e.pluginId?{model:e.name,providerType:`plugin`,providerId:e.pluginId}:e.isAgent?{model:e.name,providerType:`agent`,providerId:e.name}:{model:e.name,providerType:`ollama`,providerId:null}}function de(e){return e.providerType?e.providerType===`plugin`&&e.providerId?`${ce}${encodeURIComponent(e.providerId)}:${encodeURIComponent(e.model)}`:e.providerType===`agent`&&e.providerId?`${ue}${encodeURIComponent(e.providerId)}:${encodeURIComponent(e.model)}`:e.providerType===`ollama`&&e.model.startsWith(O)?`${O}${encodeURIComponent(e.model.slice(8))}`:e.providerType===`ollama`?`${le}${encodeURIComponent(e.model)}`:`${k}${encodeURIComponent(e.model)}`:`${k}${encodeURIComponent(e.model)}`}function M(e){return de(j(e))}function fe(e){if(e.startsWith(O)){let t=A(e.slice(8));return t===null?null:{model:`${O}${t}`,providerType:`ollama`,providerId:null}}if(e.startsWith(ce)){let t=e.slice(7),n=t.indexOf(`:`);if(n<1)return null;let r=A(t.slice(0,n)),i=A(t.slice(n+1));return r&&i?{model:i,providerType:`plugin`,providerId:r}:null}if(e.startsWith(ue)){let t=e.slice(6),n=t.indexOf(`:`);if(n<1)return null;let r=A(t.slice(0,n)),i=A(t.slice(n+1));return r&&i?{model:i,providerType:`agent`,providerId:r}:null}if(e.startsWith(le)){let t=A(e.slice(7));return t?{model:t,providerType:`ollama`,providerId:null}:null}if(e.startsWith(k)){let t=A(e.slice(7));return t?{model:t,providerType:null,providerId:null}:null}return null}function N(e,t){return t.providerType===`plugin`?e.find(e=>e.isPlugin&&e.pluginId===t.providerId&&e.name===t.model):t.providerType===`agent`?e.find(e=>e.isAgent&&e.name===t.model):t.providerType===`ollama`?t.model.startsWith(O)?e.find(e=>e.isPersona&&e.name===t.model):e.find(e=>!e.isPlugin&&!e.isPersona&&e.name===t.model):e.find(e=>e.isLegacySelection&&e.name===t.model)??e.find(e=>e.name===t.model)}function pe(e,t){if(!t.providerType)return de(t);let n=N(e,t);return n?M(n):de(t)}function me(e,t){let n=e.find(e=>M(e)===t);return n?j(n):fe(t)}function he(e){return!e.isPlugin&&!e.isPersona&&!e.isAgent&&!e.isLegacySelection&&!e.isUnavailable}function ge(e,t){return t.model?!!N(e.filter(e=>!e.isLegacySelection&&!e.isUnavailable),t):!1}function _e(e,t){if(!t.model)return e;if(!t.providerType){if(e.some(e=>e.isLegacySelection&&e.name===t.model))return e;let n=!!N(e,t);return[...e,{name:t.model,model:t.model,size:0,digest:``,modified_at:``,details:{},isLegacySelection:!0,isUnavailable:!n}]}if(N(e,t))return e;let n=t.providerType,r=n===`ollama`&&t.model.startsWith(O),i=n===`plugin`&&t.providerId||void 0;return[...e,{name:t.model,model:t.model,size:0,digest:``,modified_at:``,details:{},isPlugin:n===`plugin`,pluginId:i,pluginName:i,isAgent:n===`agent`,isPersona:r,personaName:r?t.model.slice(8):void 0,isUnavailable:!0}]}var P=s(`chat-store`),F=i((e,n)=>({sessions:[],currentSession:null,setCurrentSession:t=>{e({currentSession:t})},createSession:async(t,n,i,a,o)=>{try{e({loading:!0,error:null});let s=await c.createSession(t,n,i,a,o);if(s.success&&s.data){let t=s.data;return e(e=>({sessions:[t,...e.sessions],currentSession:t,loading:!1})),r.success(`New chat created`),t}}catch(t){let n=w(t,`Failed to create session`);e({error:n,loading:!1}),r.error(n)}},loadSessions:async()=>{try{e({loading:!0,error:null});let t=await c.getSessions();t.success&&t.data&&e(e=>{let n=t.data||[],r=n.map(e=>e.id),i=null;return e.currentSession?.isPrivate?i=e.currentSession:e.currentSession&&r.includes(e.currentSession.id)?i=n.find(t=>t.id===e.currentSession.id)||null:n.length>0&&(i=n[0],e.currentSession&&P.warn(`Previous currentSession not found in backend sessions:`,e.currentSession.id)),{sessions:n,currentSession:i,loading:!1}})}catch(t){let n=w(t,`Failed to load sessions`);e({error:n,loading:!1}),r.error(n)}},deleteSession:async t=>{try{let n=await c.deleteSession(t);n.success?(e(e=>{let n=e.sessions.filter(e=>e.id!==t),r=e.currentSession?.id===t?n[0]||null:e.currentSession;return P.debug(`Store: Updating state, sessions count:`,n.length),{sessions:n,currentSession:r}}),r.success(`Chat deleted`)):(P.error(`Store: deleteSession failed:`,n),r.error(`Failed to delete chat`))}catch(e){P.error(`Store: deleteSession error:`,e);let t=w(e,`Failed to delete session`);r.error(t)}},clearAllSessions:async()=>{try{e({loading:!0,error:null});let t=await c.clearAllSessions();t.success?(e({sessions:[],currentSession:null,loading:!1}),r.success(`All chat history cleared`)):(P.error(`Store: clearAllSessions failed:`,t),r.error(`Failed to clear chat history`),e({loading:!1}))}catch(t){P.error(`Store: clearAllSessions error:`,t);let n=w(t,`Failed to clear chat history`);r.error(n),e({loading:!1})}},clearAllState:()=>{e({sessions:[],currentSession:null,models:[],selectedModel:``,selectedProviderType:null,selectedProviderId:null,systemMessage:``,loading:!1,error:null})},applySessionTitle:(t,n,r=Date.now())=>{e(e=>({sessions:e.sessions.map(e=>e.id===t?{...e,title:n,updatedAt:r}:e),currentSession:e.currentSession?.id===t?{...e.currentSession,title:n,updatedAt:r}:e.currentSession}))},updateSessionTitle:async(e,t)=>{try{let i=await c.updateSession(e,{title:t});if(i.success&&i.data){let t=i.data.title,a=i.data.updatedAt??Date.now();n().applySessionTitle(e,t,a),r.success(`Chat title updated`)}}catch(e){let t=w(e,`Failed to update session`);r.error(t)}},addMessage:(t,i)=>{let a=n(),o=E(a,t);if(!te(a,t)){r.error(`No valid chat session. Please create or select a chat.`),P.error(`addMessage blocked: currentSession is not valid`,a.currentSession?.id);return}if(!o&&!D(a,t)){r.error(`Session not found or invalid. Please select or create a valid chat session.`),P.error(`addMessage blocked: sessionId not found in sessions`,t);return}let s=T(i);e(e=>ne(e,t,s))},updateMessage:(t,n,r)=>{e(e=>re(e,t,n,r))},updateMessageWithStatistics:(t,n,r,i,a)=>{e(e=>ie(e,t,n,r,i,a))},models:[],loadModels:async()=>{try{e({loading:!0,error:null}),P.debug(`Loading models from API...`);let i=[],a;try{let e=await f.getModels();e.success&&e.data?(i=[...e.data],P.debug(`Ollama models loaded:`,e.data.length)):a=Error(e.error||e.message||`Ollama models are unavailable.`)}catch(e){a=e,P.warn(`Ollama models are unavailable; continuing with plugin models:`,e)}try{let e=await u.getAllPlugins();if(e.success&&e.data){let t=e.data.filter(e=>e.active&&e.type!==`tts`&&e.type!==`image`);P.debug(`๐Ÿ”Œ Active plugins found:`,t.map(e=>e.name));let n=se(t);i.push(...n),P.debug(`Plugin models added:`,n.length)}}catch(e){P.error(`โŒ Failed to load plugin models:`,e),e instanceof Error&&P.error(`โŒ Plugin error details:`,{message:e.message,response:e.response?.data,status:e.response?.status,url:e.config?.url})}try{let{agentCliApi:e}=await t(async()=>{let{agentCliApi:e}=await import(`./api-BCqWXjZI.js`).then(e=>e.t);return{agentCliApi:e}},__vite__mapDeps([0,1,2,3,4,5,6])),n=await e.getModels();if(n.success&&n.data){let e=n.data.map(e=>({name:e.id,model:e.id,size:0,digest:``,modified_at:``,details:{},isAgent:!0,agentName:e.name}));i.push(...e),P.debug(`Agent CLI models added:`,e.length)}}catch(e){P.warn(`Agent CLI models unavailable:`,e)}let o=i.length;try{let{personaApi:n}=await t(async()=>{let{personaApi:e}=await import(`./api-BCqWXjZI.js`).then(e=>e.t);return{personaApi:e}},__vite__mapDeps([0,1,2,3,4,5,6])),r=await n.getPersonas();if(r.success&&r.data){let t=ae(r.data),n=oe(r.data);i.push(...n),e(e=>({...e,personas:t}))}}catch(e){P.error(`โŒ Failed to load personas:`,e)}P.debug(`Total models loaded:`,i.length);let s=o===0&&a?w(a,`No model provider is available`):null,c=n(),d=c.selectedModel,p={model:d,providerType:c.selectedProviderType,providerId:c.selectedProviderId},m=!!N(i,p),h=c.selectedProviderType===`ollama`||c.selectedProviderType===`plugin`;if(d&&!m&&h){let t=`Selected model "${d}" is unavailable from ${c.selectedProviderType===`plugin`?c.selectedProviderId||`plugin`:`Ollama`}. Reactivate that provider or select another model.`;e({models:i,loading:!1,error:t}),r.error(t);return}if(d&&!m&&i.length>0){let t=j(i[0]);P.debug(`โš ๏ธ Legacy selected model "${d}" no longer available, falling back to "${t.model}"`),e({models:i,loading:!1,selectedModel:t.model,selectedProviderType:t.providerType||null,selectedProviderId:t.providerId||null,error:s}),l.setDefaultModel(t.model,t.providerType,t.providerId).catch(e=>{P.warn(`Failed to save fallback default model:`,e)}),r.success(`Switched to ${t.model} (previous model no longer available)`)}else e({models:i,loading:!1,error:s});s&&r.error(s)}catch(t){P.error(`Error loading models:`,t);let n=w(t,`Failed to load models`);e({error:n,loading:!1}),r.error(n)}},loadPreferences:async()=>{try{let t=await l.getPreferences();if(t.success&&t.data){let{defaultModel:n,defaultProviderType:r,defaultProviderId:i,systemMessage:a}=t.data;n&&(e({selectedModel:n,selectedProviderType:r||null,selectedProviderId:r===`plugin`&&i||null}),P.debug(`โœ… Loaded default model from backend:`,n)),a!==void 0&&(e({systemMessage:a}),P.debug(`โœ… Loaded system message from backend`))}}catch(e){P.warn(`โŒ Failed to load preferences from backend:`,e)}},selectedModel:``,selectedProviderType:null,selectedProviderId:null,setSelectedModel:(t,n=null,r=null)=>{let i=n===`plugin`&&r||null;e({selectedModel:t,selectedProviderType:n,selectedProviderId:i}),l.setDefaultModel(t,n,i).catch(e=>{P.warn(`Failed to save default model to backend:`,e)})},updateCurrentSessionModel:async(t,i=null,a=null)=>{let o=n();if(!o.currentSession)throw Error(`No current session to update`);try{let n=await c.updateSession(o.currentSession.id,{model:t,providerType:i,providerId:i===`plugin`?a:null});n.success&&n.data&&(e(e=>({sessions:e.sessions.map(t=>t.id===e.currentSession?.id?n.data:t),currentSession:n.data,selectedModel:t,selectedProviderType:i,selectedProviderId:i===`plugin`&&a||null})),r.success(`Model updated for current chat`))}catch(e){let t=w(e,`Failed to update session model`);throw r.error(t),e}},personas:{},loadPersonas:async()=>{try{e({loading:!0,error:null});let t=await p.getPersonas();if(t.success&&t.data){let n=t.data;e({personas:ae(n),loading:!1}),P.debug(`โœ… Personas loaded:`,n.length)}}catch(t){let n=w(t,`Failed to load personas`);e({error:n,loading:!1}),P.error(`โŒ Failed to load personas:`,n)}},getCurrentPersona:()=>{let e=n();if(!e.currentSession||!e.currentSession.model?.startsWith(`persona:`))return null;let t=e.currentSession.model.replace(`persona:`,``);return e.personas[t]||null},systemMessage:``,setSystemMessage:t=>{let r=n();if(e({systemMessage:t}),l.setSystemMessage(t).catch(e=>{P.warn(`Failed to save system message to backend:`,e)}),r.currentSession){let n=r.currentSession.messages.findIndex(e=>e.role===`system`);if(n!==-1){e(e=>{let r=e.sessions.map(r=>{if(r.id===e.currentSession?.id){let e=r.messages.map((e,r)=>r===n&&e.role===`system`?{...e,content:t,timestamp:Date.now()}:e);return{...r,messages:e,updatedAt:Date.now()}}return r});return{sessions:r,currentSession:e.currentSession?r.find(t=>t.id===e.currentSession.id)||e.currentSession:null}});let i=r.currentSession.messages[n];c.updateMessage(r.currentSession.id,i.id,{content:t}).catch(e=>{P.warn(`Failed to sync system message update to backend:`,e)}),P.debug(`โœ… Updated system message in current session`)}}},loading:!1,error:null,setError:t=>e({error:t}),generatingTitleForSession:null,setGeneratingTitleForSession:t=>e({generatingTitleForSession:t}),...typeof window<`u`&&{testPluginApi:async()=>{try{P.debug(`๐Ÿงช Testing plugin API...`);let e=await u.getAllPlugins();return P.debug(`โœ… Plugin API test result:`,e),e}catch(e){return P.error(`โŒ Plugin API test failed:`,e),{error:e}}}}})),ve=1e5,I=`[Earlier live output omitted]
3
3
 
4
- `,L=e=>e&&typeof e==`object`&&!Array.isArray(e)?e:void 0,R=(e,...t)=>{for(let n of t){let t=e[n];if(typeof t==`string`&&t.trim())return t}},z=(e,...t)=>{for(let n of t){let t=e[n];if(typeof t==`number`&&Number.isFinite(t))return t;if(typeof t!=`string`||!t.trim())continue;let r=Number(t);if(Number.isFinite(r))return r}},B=(e,t)=>{let n=String(e||``).trim().toLowerCase().replace(/[\s-]+/g,`_`);return n===`queued`?`queued`:n===`preparing`||n===`starting`?`preparing`:n===`thinking`||n===`running`||n===`working`?`thinking`:n===`using_tool`||n===`tool`||n===`tool_call`?`using_tool`:n===`responding`||n===`streaming`||n===`assistant`?`responding`:n===`completed`||n===`complete`||n===`done`?`completed`:n===`needs_input`||n===`needsinput`||n===`blocked`?`needs_input`:n===`failed`||n===`error`?`failed`:n===`cancelled`||n===`canceled`||n===`stopped`?`cancelled`:t},ye=(e,t)=>{let n=R(t,`total`);if(n!==void 0)return V(n);let r=R(t,`text`,`content`,`delta`,`reasoning`)||``;return t.replace===!0||t.cumulative===!0?V(r):V(e+r)},V=e=>{let t=e.startsWith(I),n=t?e.slice(31):e,r=ve-31;return!t&&n.length<=ve?n:t&&n.length<=r?I+n:I+n.slice(-99969)},H=(e,t,n,r)=>{if(r===n)return e;if(r.startsWith(n)){let i=r.slice(n.length),a=e[e.length-1];return a&&a.kind===t?[...e.slice(0,-1),{kind:t,text:V(a.text+i)}]:[...e,{kind:t,text:V(i)}]}return[...e.filter(e=>e.kind!==t),{kind:t,text:r}]},be=(e,t)=>e.some(e=>e.kind===`tool`&&e.toolId===t)?e:[...e,{kind:`tool`,toolId:t}],U=(e,t)=>{let n=L(e.usage)||e,r={...t};for(let[e,t]of[[`inputTokens`,[`inputTokens`,`input_tokens`,`promptTokens`,`prompt_tokens`]],[`outputTokens`,[`outputTokens`,`output_tokens`,`completionTokens`,`completion_tokens`]],[`reasoningTokens`,[`reasoningTokens`,`reasoning_tokens`]],[`cachedTokens`,[`cachedTokens`,`cached_tokens`]],[`totalTokens`,[`totalTokens`,`total_tokens`]],[`tokensPerSecond`,[`tokensPerSecond`,`tokens_per_second`]],[`durationMs`,[`durationMs`,`duration_ms`]]]){let i=z(n,...t);i!==void 0&&(r[e]=i)}return r.totalTokens===void 0&&(r.inputTokens!==void 0||r.outputTokens!==void 0)&&(r.totalTokens=(r.inputTokens||0)+(r.outputTokens||0)),r},xe=(e,t)=>{let n=L(e.skill)||e,r=R(n,`name`,`title`,`skill`)||`Skill`;return{id:R(n,`id`,`skillId`,`skill_id`)||`${r}-${t}`,name:r,description:R(n,`description`,`summary`)}},W=(e,t,n)=>{let r=L(e.tool)||e,i=L(r.message),a=i?L(i.metadata):void 0,o=a?{...a,...r}:r,s=R(o,`name`,`toolName`,`tool_name`,`function`)||`tool`;return{id:R(o,`id`,`toolCallId`,`tool_call_id`,`callId`)||`${s}-${n}`,name:s,status:o.isError===!0||o.is_error===!0?`error`:`running`,arguments:o.arguments??o.input??o.args??o.parameters??void 0,metadata:L(o.metadata)||a,startedAt:z(o,`startedAt`,`started_at`,`timestamp`)||t}},Se=(e,t)=>Array.isArray(e)?e.flatMap((e,n)=>{let r=L(e);if(!r)return[];let i=W(r,t,n),a=R(r,`output`,`content`,`result`),o=B(r.status,`using_tool`);return[{...i,status:r.isError===!0||r.is_error===!0?`error`:o===`completed`?`completed`:i.status,output:a,finishedAt:z(r,`finishedAt`,`finished_at`),durationMs:z(r,`durationMs`,`duration_ms`)}]}):[],Ce=(e,t,n)=>({taskId:e,runId:t,connection:`idle`,phase:`queued`,lastEventId:0,reasoning:``,response:``,timeline:[],tools:[],skills:[],startedAt:n,terminal:!1}),we=(e,t)=>{let n=L(t.data.liveRun)||L(t.data.live_run)||L(t.data.run)||t.data,r=L(t.data.task)||L(t.data.detail),i=r?L(r.activeRun):void 0,a=R(n,`reasoning`,`thinking`),o=R(n,`response`,`assistant`,`content`),s=B(n.phase??n.status??i?.status??r?.status,e.phase),c=e.lastEventId>0&&s!==`completed`&&s!==`needs_input`&&s!==`failed`&&s!==`cancelled`&&n.phase===void 0?e.phase:s,l=Se(n.tools??n.toolActivities??n.tool_activities,t.timestamp),u=n.skills,d=Array.isArray(u)?u.flatMap((e,t)=>{let n=L(e);return n?[xe(n,t)]:[]}):e.skills,f=n.terminal===!0||c===`completed`||c===`needs_input`||c===`failed`||c===`cancelled`,p=a===void 0?e.reasoning:V(a),m=o===void 0?e.response:V(o),h=l.length>0?l:e.tools,g=H(e.timeline,`reasoning`,e.reasoning,p);for(let e of h)g=be(g,e.id);return g=H(g,`response`,e.response,m),{...e,phase:c,reasoning:p,response:m,timeline:g,tools:h,skills:d,usage:L(n.usage)?U(n,e.usage):e.usage,round:z(n,`round`,`roundIndex`,`round_index`)??e.round,roundLimit:z(n,`roundLimit`,`round_limit`)??e.roundLimit,startedAt:z(n,`startedAt`,`started_at`)??(i?z(i,`startedAt`,`started_at`):void 0)??e.startedAt,finishedAt:z(n,`finishedAt`,`finished_at`)??e.finishedAt,error:R(n,`error`,`message`)??e.error,terminal:f}},Te=(e,t)=>{let n=e.findIndex(e=>e.id===t.id);if(n===-1)return[...e,t];let r=[...e];return r[n]={...e[n],...t},r},Ee=(e,t)=>{let n=e?.taskId===t.taskId&&e.runId===t.runId?e:Ce(t.taskId,t.runId,t.timestamp);if(t.type!==`snapshot`&&t.id<=n.lastEventId)return n;let r={...n,connection:`connected`,connectionError:void 0,lastEventId:Math.max(n.lastEventId,t.id)};if(t.type===`snapshot`)r=we(r,t);else if(t.type===`run_state`){let e=B(t.data.phase??t.data.status??t.data.state,r.phase);r={...r,phase:e,round:z(t.data,`round`,`roundIndex`,`round_index`)??r.round,roundLimit:z(t.data,`roundLimit`,`round_limit`)??r.roundLimit,startedAt:z(t.data,`startedAt`,`started_at`)??r.startedAt,terminal:r.terminal||e===`completed`||e===`needs_input`||e===`failed`||e===`cancelled`}}else if(t.type===`reasoning_delta`){let e=ye(r.reasoning,t.data);r={...r,phase:`thinking`,reasoning:e,timeline:H(r.timeline,`reasoning`,r.reasoning,e)}}else if(t.type===`assistant_delta`){let e=ye(r.response,t.data);r={...r,phase:`responding`,response:e,timeline:H(r.timeline,`response`,r.response,e)}}else if(t.type===`tool_call`){let e=W(t.data,t.timestamp,r.tools.length);r={...r,phase:`using_tool`,tools:Te(r.tools,e),timeline:be(r.timeline,e.id)}}else if(t.type===`tool_result`){let e=W(t.data,t.timestamp,r.tools.length),n=r.tools.find(t=>t.id===e.id),i=t.data.isError===!0||t.data.is_error===!0||t.data.error===!0;r={...r,phase:`thinking`,tools:Te(r.tools,{...n,...e,status:i?`error`:`completed`,arguments:n?.arguments??e.arguments,startedAt:n?.startedAt??e.startedAt,output:R(t.data,`output`,`content`,`result`,`message`)||``,finishedAt:z(t.data,`finishedAt`,`finished_at`)||t.timestamp,durationMs:z(t.data,`durationMs`,`duration_ms`)})}}else if(t.type===`usage`)r={...r,usage:U(t.data,r.usage)};else if(t.type===`skill_loaded`){let e=xe(t.data,r.skills.length);r={...r,skills:r.skills.some(t=>t.id===e.id)?r.skills:[...r.skills,e]}}else if(t.type===`error`)r={...r,phase:`failed`,error:R(t.data,`message`,`error`)||`The Work run stopped unexpectedly.`,finishedAt:z(t.data,`finishedAt`,`finished_at`)||t.timestamp,terminal:t.data.terminal!==!1};else if(t.type===`done`){let e=B(t.data.status??t.data.state??t.data.phase,`completed`);r={...r,phase:e,error:R(t.data,`error`,`message`)??r.error,usage:L(t.data.usage)?U(t.data,r.usage):r.usage,finishedAt:z(t.data,`finishedAt`,`finished_at`)||t.timestamp,terminal:!0}}return r},G=(e,t)=>Error(t?.error||t?.message||e),K=(e,t)=>{if(typeof e==`object`&&e&&`response`in e){let t=e.response,n=t?.data?.error||t?.data?.message;if(n)return n}return e instanceof Error&&e.message?e.message:t},De=e=>[...e].sort((e,t)=>t.updatedAt-e.updatedAt||t.createdAt-e.createdAt||e.id.localeCompare(t.id)),Oe=({messages:e,messageCursor:t,hasMoreMessages:n,...r})=>r,ke=(e,t)=>{let n=new Map(e.map(e=>[e.id,e]));for(let e of t)n.set(e.id,e);return[...n.values()].sort((e,t)=>e.messageIndex-t.messageIndex||e.createdAt-t.createdAt||e.id.localeCompare(t.id))},Ae=(e,t)=>{if(!e||e.id!==t.id)return t;let n=e.updatedAt>t.updatedAt?{...t,...e}:{...e,...t};if(e.messages.length===0)return{...n,messages:t.messages,messageCursor:t.messageCursor,hasMoreMessages:t.hasMoreMessages};let r=Math.max(...e.messages.map(e=>e.messageIndex)),i=Math.min(...t.messages.map(e=>e.messageIndex)),a=t.messages.length>0&&r+1<i;return{...n,messages:ke(e.messages,t.messages),messageCursor:a?t.messageCursor:e.messageCursor,hasMoreMessages:a?t.hasMoreMessages:e.hasMoreMessages}},je=(e,t)=>{let n=e.find(e=>e.id===t.id);if(n&&n.updatedAt>t.updatedAt)return e;let r=Oe(t),i=e.findIndex(e=>e.id===t.id);if(i===-1)return[r,...e];let a=[...e];return a[i]=r,a},Me=(e,t)=>{let n=new Map(t.map(e=>[e.id,e])),r=new Set(e.map(e=>e.id)),i=De(t.filter(e=>!r.has(e.id))),a=e.flatMap(e=>{let t=n.get(e.id);return t?[e.updatedAt>t.updatedAt?e:t]:[]});return[...i,...a]},q=i((e,t)=>{let n=0,r=0,i=0,a=0,o=0,s=null,c=0,l=0,u=0,d=null,p=0,m=new Set,h=new Set,g=new Map,_=(e,t)=>`${e}\u0000${t}`,v=e=>e===n,y=e=>{if(!v(e))throw Error(`Work session changed.`)},b=()=>{l+=1,u+=1,d=null,h.clear()},x=()=>{let t=++c;return h.add(t),e({loadingFiles:!0}),t},S=(n,r,i)=>{h.delete(n),v(r)&&t().selectedTaskId===i&&e({loadingFiles:h.size>0})},ee=e=>t().selectedTaskId===e,C=t=>{let n=++p;return g.set(n,t),ee(t)&&e({actionLoading:!0,error:null}),n},w=(n,r)=>{if(g.delete(n),!v(r))return;let i=t().selectedTaskId;e({actionLoading:[...g.values()].some(e=>e===i)})},T=(t,n,r)=>{v(n)&&ee(t)&&e({error:r})},E=(t,r=n,i=!1)=>{v(r)&&(i&&(o+=1),e(e=>({tasks:je(e.tasks,t),selectedTask:e.selectedTaskId===t.id?Ae(e.selectedTask,t):e.selectedTask})))},D=async(e,t,r)=>{let i=n,a=C(r);try{let n=await e();if(y(i),!n.success||!n.data)throw G(t,n);return E(n.data,i,!0),n.data}catch(e){let n=K(e,t);throw T(r,i,n),Error(n)}finally{w(a,i)}};return{capabilities:null,tasks:[],selectedTaskId:null,selectedTask:null,files:[],selectedFile:null,liveRuns:{},loadingTasks:!1,loadingTask:!1,loadingOlderMessages:!1,loadingFiles:!1,actionLoading:!1,error:null,loadCapabilities:async()=>{let t=n;try{let n=await f.capabilities();if(y(t),!n.success||!n.data)throw G(`Could not inspect the Work runtime.`,n);e({capabilities:n.data})}catch(n){v(t)&&e({capabilities:{available:!1,runtime:`docker`,image:``,reason:K(n,`The Work runtime is unavailable.`)}})}},loadTasks:async(t=!1)=>{let c=n,l=++r,u=o;t||(i=l,m.add(l),e({loadingTasks:!0,error:null}));try{let t=await f.listTasks();if(y(c),!t.success||!t.data)throw G(`Could not load Work tasks.`,t);let n=De(t.data);if(l<=a||u!==o)return;a=l,e(e=>{let t=Me(e.tasks,n),r=e.selectedTaskId?t.find(t=>t.id===e.selectedTaskId):void 0,i=r&&e.selectedTask?{...e.selectedTask,...r,messages:e.selectedTask.messages,messageCursor:e.selectedTask.messageCursor,hasMoreMessages:e.selectedTask.hasMoreMessages}:e.selectedTask,a=s,o=a!==null&&l>a.requestId;return o&&(s=null),{tasks:t,selectedTask:i,...o&&e.error===a.message?{error:null}:{}}})}catch(n){let r=K(n,`Could not load Work tasks.`);!t&&v(c)&&l===i&&l>a&&u===o&&(s={requestId:l,message:r},e({error:r}))}finally{m.delete(l),!t&&v(c)&&e({loadingTasks:m.size>0})}},selectTask:t=>{b(),e(e=>({selectedTaskId:t,selectedTask:t&&e.selectedTask?.id===t?e.selectedTask:null,files:[],selectedFile:null,loadingFiles:!1,loadingOlderMessages:!1,actionLoading:[...g.values()].some(e=>e===t),error:null}))},loadTask:async(t,r=!1)=>{let i=n;r||e({loadingTask:!0,error:null});try{let e=await f.getTask(t);if(y(i),!e.success||!e.data)throw G(`Could not load this Work task.`,e);return E(e.data,i),e.data}catch(t){let n=K(t,`Could not load this Work task.`);throw!r&&v(i)&&e({error:n}),Error(n)}finally{!r&&v(i)&&e({loadingTask:!1})}},loadOlderMessages:async r=>{let i=n,a=t().selectedTask,o=a?.id===r?a.messageCursor:void 0;if(!a||a.id!==r||!a.hasMoreMessages||o===void 0)return[];e({loadingOlderMessages:!0,error:null});try{let t=await f.getMessages(r,o);if(y(i),!t.success||!t.data)throw G(`Could not load older Work messages.`,t);let n=t.data;return e(e=>{if(e.selectedTask?.id!==r)return{};let t=e.selectedTask.messageCursor===o;return{selectedTask:{...e.selectedTask,messages:ke(e.selectedTask.messages,n.messages),messageCursor:t?n.cursor:e.selectedTask.messageCursor,hasMoreMessages:t?n.hasMore:e.selectedTask.hasMoreMessages}}}),n.messages}catch(n){let a=K(n,`Could not load older Work messages.`);throw v(i)&&t().selectedTaskId===r&&e({error:a}),Error(a)}finally{v(i)&&t().selectedTaskId===r&&e({loadingOlderMessages:!1})}},createTask:e=>D(()=>f.createTask(e),`Could not create the Work task.`,null),updateTask:(e,t)=>D(()=>f.updateTask(e,t),`Could not update the Work task.`,e),deleteTask:async r=>{let i=n,a=C(r);try{let n=await f.deleteTask(r);if(y(i),!n.success)throw G(`Could not delete the Work task.`,n);t().selectedTaskId===r&&b(),o+=1,e(e=>({tasks:e.tasks.filter(e=>e.id!==r),selectedTaskId:e.selectedTaskId===r?null:e.selectedTaskId,selectedTask:e.selectedTaskId===r?null:e.selectedTask,files:e.selectedTaskId===r?[]:e.files,selectedFile:e.selectedTaskId===r?null:e.selectedFile,liveRuns:Object.fromEntries(Object.entries(e.liveRuns).filter(([e])=>e!==r))}))}catch(e){let t=K(e,`Could not delete the Work task.`);throw T(r,i,t),Error(t)}finally{w(a,i)}},startRun:async(e,t)=>{let r=n,i=C(e);try{let n=await f.startRun(e,t);if(y(r),!n.success||!n.data)throw G(`Could not start the Work run.`,n);return E(n.data,r,!0),n.data}catch(t){let n=K(t,`Could not start the Work run.`);throw T(e,r,n),Error(n)}finally{w(i,r)}},cancelRun:async e=>{let r=n,i=C(e);try{let n=await f.cancelRun(e);if(y(r),!n.success)throw G(`Could not cancel the Work run.`,n);return n.data?(E(n.data,r,!0),n.data):(o+=1,await t().loadTask(e,!0))}catch(t){let n=K(t,`Could not cancel the Work run.`);throw T(e,r,n),Error(n)}finally{w(i,r)}},beginLiveRun:(t,n,r)=>{e(e=>{let i=e.liveRuns[t];return{liveRuns:{...e.liveRuns,[t]:i?.runId===n?{...i,startedAt:i.startedAt??r}:Ce(t,n,r)}}})},applyRunEvent:e=>{t().applyRunEvents([e])},applyRunEvents:t=>{t.length!==0&&e(e=>{let n={...e.liveRuns},r=e.tasks,i=e.selectedTask;for(let a of t){n[a.taskId]=Ee(n[a.taskId],a);let t=a.type===`snapshot`?a.data.task??a.data.detail:void 0,o=t&&typeof t==`object`&&!Array.isArray(t)&&t.id===a.taskId&&Array.isArray(t.messages)?t:void 0;o&&(r=je(r,o),e.selectedTaskId===o.id&&(i=Ae(i,o)))}return{liveRuns:n,tasks:r,selectedTask:i}})},setLiveRunConnection:(t,n,r,i)=>{e(e=>{let a=e.liveRuns[t];return!a||a.runId!==n?{}:{liveRuns:{...e.liveRuns,[t]:{...a,connection:r,connectionError:i}}}})},clearLiveRun:(t,n)=>{e(e=>{if(n&&e.liveRuns[t]?.runId!==n)return{};let r={...e.liveRuns};return delete r[t],{liveRuns:r}})},loadFiles:async(r,i=``)=>{let a=n,o=++l,s=x();try{let n=await f.listFiles(r,i);if(y(a),!n.success||!n.data)throw G(`Could not load workspace files.`,n);return o===l&&t().selectedTaskId===r&&e({files:n.data}),n.data}catch(n){let i=K(n,`Could not load workspace files.`);throw o===l&&v(a)&&t().selectedTaskId===r&&e({error:i}),Error(i)}finally{S(s,a,r)}},loadFile:async(r,i)=>{let a=n,o=++u,s=_(r,i);d=s;let c=x();try{let n=await f.getFile(r,i);if(y(a),!n.success||!n.data)throw G(`Could not open this workspace file.`,n);if(o!==u||d!==s||!v(a)||t().selectedTaskId!==r)throw Error(`Work file request was superseded.`);return e({selectedFile:n.data}),n.data}catch(n){let i=K(n,`Could not open this file.`);throw o===u&&v(a)&&t().selectedTaskId===r&&e({error:i}),Error(i)}finally{S(c,a,r)}},clearSelectedFile:()=>{u+=1,d=null,e({selectedFile:null})},saveFile:async(r,i,a,o)=>{let s=n,c=C(r),l=_(r,i);d===l&&(u+=1,d=null);try{let n=await f.saveFile(r,i,a,o);if(y(s),!n.success||!n.data)throw G(`Could not save this workspace file.`,n);return t().selectedTaskId===r&&t().selectedFile?.path===i&&(d===l&&(u+=1,d=null),e({selectedFile:n.data})),n.data}catch(e){let t=K(e,`Could not save this file.`);throw T(r,s,t),Error(t)}finally{w(c,s)}},startPreview:(e,t)=>D(()=>f.startPreview(e,t),`Could not start the workspace preview.`,e),stopPreview:e=>D(()=>f.stopPreview(e),`Could not stop the workspace preview.`,e),clearError:()=>e({error:null}),clearAllState:()=>{n+=1,i=++r,a=i,o+=1,s=null,m.clear(),g.clear(),b(),e({capabilities:null,tasks:[],selectedTaskId:null,selectedTask:null,files:[],selectedFile:null,liveRuns:{},loadingTasks:!1,loadingTask:!1,loadingOlderMessages:!1,loadingFiles:!1,actionLoading:!1,error:null})}}}),Ne=async(e,t,n)=>{let r=await t(e);return r.success&&await n(),r},J=s(`store:plugin-store`),Pe=i((e,t)=>({plugins:[],pluginStatus:[],pluginVariables:{},isLoading:!1,isUploading:!1,error:null,loadPlugins:async()=>{e({isLoading:!0,error:null});try{let t=await l.getAllPlugins();t.success&&t.data?e({plugins:t.data}):e({error:t.error||`Failed to load plugins`})}catch(t){e({error:w(t,`Failed to load plugins`)})}finally{e({isLoading:!1})}},uploadPlugin:async n=>{e({isUploading:!0,error:null});try{let r=await l.uploadPlugin(n);r.success&&r.data?await t().loadPlugins():e({error:r.error||`Failed to upload plugin`})}catch(t){e({error:t instanceof Error?t.message:`Failed to upload plugin`})}finally{e({isUploading:!1})}},installPlugin:async n=>{e({isLoading:!0,error:null});try{let r=await l.installPlugin(n);r.success&&r.data?await t().loadPlugins():e({error:r.error||`Failed to install plugin`})}catch(t){e({error:t instanceof Error?t.message:`Failed to install plugin`})}finally{e({isLoading:!1})}},updatePlugin:async(n,r)=>{e({isLoading:!0,error:null});try{let i=await l.updatePlugin(n,r);i.success&&i.data?await t().loadPlugins():e({error:i.error||`Failed to update plugin`})}catch(t){e({error:t instanceof Error?t.message:`Failed to update plugin`})}finally{e({isLoading:!1})}},deletePlugin:async n=>{e({isLoading:!0,error:null});try{let r=await l.deletePlugin(n);r.success?await t().loadPlugins():e({error:r.error||`Failed to delete plugin`})}catch(t){e({error:t instanceof Error?t.message:`Failed to delete plugin`})}finally{e({isLoading:!1})}},activatePlugin:async n=>{e({isLoading:!0,error:null});try{let r=await Ne(n,l.activatePlugin,()=>t().loadPlugins());r.success||e({error:r.error||`Failed to activate plugin`})}catch(t){e({error:t instanceof Error?t.message:`Failed to activate plugin`})}finally{e({isLoading:!1})}},deactivatePlugin:async n=>{e({isLoading:!0,error:null});try{let r=await l.deactivatePlugin(n);r.success?await t().loadPlugins():e({error:r.error||`Failed to deactivate plugin`})}catch(t){e({error:t instanceof Error?t.message:`Failed to deactivate plugin`})}finally{e({isLoading:!1})}},loadPluginStatus:async()=>{try{let t=await l.getPluginStatus();t.success&&t.data&&e({pluginStatus:t.data})}catch(e){J.error(`Failed to load plugin status:`,e)}},exportPlugin:async t=>{e({isLoading:!0,error:null});try{let e=await l.exportPlugin(t),n=window.URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=`${t}.json`,document.body.appendChild(r),r.click(),document.body.removeChild(r),window.URL.revokeObjectURL(n)}catch(t){e({error:t instanceof Error?t.message:`Failed to export plugin`})}finally{e({isLoading:!1})}},fetchPluginVariables:async t=>{try{let n=await l.getVariables(t);n.success&&n.data&&e(e=>({pluginVariables:{...e.pluginVariables,[t]:n.data}}))}catch(e){J.error(`Failed to fetch plugin variables:`,e)}},updatePluginVariables:async(e,n,r=[])=>{try{return(await l.setVariables(e,n,r)).success?(await t().fetchPluginVariables(e),!0):!1}catch(e){return J.error(`Failed to update plugin variables:`,e),!1}},resetPluginVariables:async t=>{try{let n=await l.resetVariables(t);return n.success&&n.data===!0?(e(e=>{let n={...e.pluginVariables};return delete n[t],{pluginVariables:n}}),!0):!1}catch(e){return J.error(`Failed to reset plugin variables:`,e),!1}},clearError:()=>e({error:null}),setError:t=>e({error:t})})),Y=`libre-webui:work-draft:`,X=(e,t)=>`${Y}${e}:${t}`,Fe=(e,t)=>{try{let n=window.sessionStorage.getItem(X(e,t));if(!n)return null;let r=JSON.parse(n);return typeof r.content==`string`?{content:r.content,baseUpdatedAt:typeof r.baseUpdatedAt==`number`?r.baseUpdatedAt:void 0}:null}catch{return null}},Ie=(e,t,n)=>{try{return window.sessionStorage.setItem(X(e,t),JSON.stringify(n)),!0}catch{return!1}},Le=(e,t)=>{try{window.sessionStorage.removeItem(X(e,t))}catch{}},Re=e=>{let t=`${Y}${e}:`;try{for(let e=window.sessionStorage.length-1;e>=0;e--){let n=window.sessionStorage.key(e);n?.startsWith(t)&&window.sessionStorage.removeItem(n)}}catch{}},ze=()=>{try{for(let e=window.sessionStorage.length-1;e>=0;e--){let t=window.sessionStorage.key(e);t?.startsWith(Y)&&window.sessionStorage.removeItem(t)}}catch{}},Z=s(`websocket`),Q=new class{constructor(){n(this,`ws`,null),n(this,`url`,void 0),n(this,`reconnectAttempts`,0),n(this,`maxReconnectAttempts`,5),n(this,`reconnectDelay`,1e3),n(this,`messageHandlers`,new Map);let e;e=window.location.protocol===`file:`?`ws://localhost:3001`:`${window.location.protocol===`https:`?`wss:`:`ws:`}//${window.location.host}`,this.url=`${e}/ws`,Z.debug(`WebSocket URL constructed:`,this.url)}connect(){return o()?(Z.debug(`Demo mode active: skipping WebSocket connection.`),Promise.resolve()):(Z.debug(`WebSocket: Attempting to connect to:`,this.url),new Promise((e,t)=>{try{let n=localStorage.getItem(`auth-token`),r=n?`${this.url}?token=${encodeURIComponent(n)}`:this.url;Z.debug(`WebSocket: Connecting to:`,r.replace(/token=[^&]+/,`token=***`)),this.ws=new WebSocket(r),this.ws.onopen=()=>{Z.debug(`WebSocket connected successfully`),this.reconnectAttempts=0,e()},this.ws.onmessage=e=>{try{let t=JSON.parse(e.data),n=this.messageHandlers.get(t.type);n?n(t.data):t.type===`connected`?Z.debug(`WebSocket: Server confirmed connection`):Z.warn(`WebSocket: No handler for message type:`,t.type)}catch(e){Z.error(`Failed to parse WebSocket message:`,e)}},this.ws.onclose=()=>{Z.debug(`WebSocket disconnected`),this.ws=null,this.attemptReconnect()},this.ws.onerror=e=>{Z.error(`WebSocket error:`,e),t(e)}}catch(e){t(e)}}))}disconnect(){this.ws&&(this.ws.close(),this.ws=null)}send(e){this.ws&&this.ws.readyState===WebSocket.OPEN?(Z.debug(`WebSocket: Sending message:`,e),this.ws.send(JSON.stringify(e))):Z.warn(`WebSocket is not connected. ReadyState:`,this.ws?.readyState)}onMessage(e,t){this.messageHandlers.delete(e),this.messageHandlers.set(e,t)}offMessage(e){this.messageHandlers.delete(e)}attemptReconnect(){if(o()){Z.debug(`Demo mode active: skipping WebSocket reconnection.`);return}this.reconnectAttempts<this.maxReconnectAttempts?(this.reconnectAttempts++,Z.debug(`Attempting to reconnect... (${this.reconnectAttempts}/${this.maxReconnectAttempts})`),setTimeout(()=>{this.connect().catch(()=>{})},this.reconnectDelay*this.reconnectAttempts)):Z.error(`Max reconnection attempts reached`)}get isConnected(){return this.ws?.readyState===WebSocket.OPEN}},Be=e({useAuthStore:()=>Ve}),$=s(`auth-store`),Ve=i()(a((e,t)=>({user:null,token:null,systemInfo:null,isAuthenticated:!1,isLoading:!1,login:(n,r,i)=>{let a=t().user?.id===n.id;localStorage.setItem(`auth-token`,r);let s=F.getState();s.clearAllState&&s.clearAllState(),q.getState().clearAllState(),a||(ze(),h.getState().clearUserState()),e({user:n,token:r,systemInfo:i,isAuthenticated:!0,isLoading:!1}),setTimeout(async()=>{try{let e=Pe.getState();$.debug(`Reinitializing app after login...`),$.debug(`Reconnecting WebSocket with auth token...`),Q.disconnect(),await Q.connect();try{!(await u.checkHealth()).success&&!o()&&$.warn(`Ollama service not available after login`)}catch(e){$.warn(`Ollama health check failed after login; continuing provider initialization:`,e)}let t=h.getState();await Promise.all([s.loadModels(),s.loadSessions(),s.loadPreferences(),t.loadPreferences(),e.loadPlugins()]),$.debug(`Reinitialized app after login`)}catch(e){$.error(`Failed to reinitialize app after login:`,e)}},100)},logout:()=>{localStorage.removeItem(`auth-token`),$.debug(`Disconnecting WebSocket on logout...`),Q.disconnect();let t=F.getState();t.clearAllState&&t.clearAllState(),q.getState().clearAllState(),ze(),h.getState().clearUserState(),e({user:null,token:null,isAuthenticated:!1,isLoading:!1})},setUser:t=>{e({user:t})},setSystemInfo:t=>{e({systemInfo:t})},setLoading:t=>{e({isLoading:t})},isAdmin:()=>{let{user:e}=t();return e?.role===`admin`},requiresAuth:()=>{let{systemInfo:e}=t();return e?.requiresAuth??!1}}),{name:`auth-store`,partialize:e=>({user:e.user,token:e.token,systemInfo:e.systemInfo,isAuthenticated:e.isAuthenticated})}));export{b as S,ge as _,Re as a,y as b,Pe as c,M as d,me as f,he as g,N as h,Le as i,q as l,pe as m,Ve as n,Fe as o,j as p,Q as r,Ie as s,Be as t,F as u,_e as v,C as x,w as y};
4
+ `,L=e=>e&&typeof e==`object`&&!Array.isArray(e)?e:void 0,R=(e,...t)=>{for(let n of t){let t=e[n];if(typeof t==`string`&&t.trim())return t}},z=(e,...t)=>{for(let n of t){let t=e[n];if(typeof t==`number`&&Number.isFinite(t))return t;if(typeof t!=`string`||!t.trim())continue;let r=Number(t);if(Number.isFinite(r))return r}},B=(e,t)=>{let n=String(e||``).trim().toLowerCase().replace(/[\s-]+/g,`_`);return n===`queued`?`queued`:n===`preparing`||n===`starting`?`preparing`:n===`thinking`||n===`running`||n===`working`?`thinking`:n===`using_tool`||n===`tool`||n===`tool_call`?`using_tool`:n===`responding`||n===`streaming`||n===`assistant`?`responding`:n===`completed`||n===`complete`||n===`done`?`completed`:n===`needs_input`||n===`needsinput`||n===`blocked`?`needs_input`:n===`failed`||n===`error`?`failed`:n===`cancelled`||n===`canceled`||n===`stopped`?`cancelled`:t},ye=(e,t)=>{let n=R(t,`total`);if(n!==void 0)return V(n);let r=R(t,`text`,`content`,`delta`,`reasoning`)||``;return t.replace===!0||t.cumulative===!0?V(r):V(e+r)},V=e=>{let t=e.startsWith(I),n=t?e.slice(31):e,r=ve-31;return!t&&n.length<=ve?n:t&&n.length<=r?I+n:I+n.slice(-99969)},H=(e,t,n,r)=>{if(r===n)return e;if(r.startsWith(n)){let i=r.slice(n.length),a=e[e.length-1];return a&&a.kind===t?[...e.slice(0,-1),{kind:t,text:V(a.text+i)}]:[...e,{kind:t,text:V(i)}]}return[...e.filter(e=>e.kind!==t),{kind:t,text:r}]},be=(e,t)=>e.some(e=>e.kind===`tool`&&e.toolId===t)?e:[...e,{kind:`tool`,toolId:t}],U=(e,t)=>{let n=L(e.usage)||e,r={...t};for(let[e,t]of[[`inputTokens`,[`inputTokens`,`input_tokens`,`promptTokens`,`prompt_tokens`]],[`outputTokens`,[`outputTokens`,`output_tokens`,`completionTokens`,`completion_tokens`]],[`reasoningTokens`,[`reasoningTokens`,`reasoning_tokens`]],[`cachedTokens`,[`cachedTokens`,`cached_tokens`]],[`totalTokens`,[`totalTokens`,`total_tokens`]],[`tokensPerSecond`,[`tokensPerSecond`,`tokens_per_second`]],[`durationMs`,[`durationMs`,`duration_ms`]]]){let i=z(n,...t);i!==void 0&&(r[e]=i)}return r.totalTokens===void 0&&(r.inputTokens!==void 0||r.outputTokens!==void 0)&&(r.totalTokens=(r.inputTokens||0)+(r.outputTokens||0)),r},xe=(e,t)=>{let n=L(e.skill)||e,r=R(n,`name`,`title`,`skill`)||`Skill`;return{id:R(n,`id`,`skillId`,`skill_id`)||`${r}-${t}`,name:r,description:R(n,`description`,`summary`)}},W=(e,t,n)=>{let r=L(e.tool)||e,i=L(r.message),a=i?L(i.metadata):void 0,o=a?{...a,...r}:r,s=R(o,`name`,`toolName`,`tool_name`,`function`)||`tool`;return{id:R(o,`id`,`toolCallId`,`tool_call_id`,`callId`)||`${s}-${n}`,name:s,status:o.isError===!0||o.is_error===!0?`error`:`running`,arguments:o.arguments??o.input??o.args??o.parameters??void 0,metadata:L(o.metadata)||a,startedAt:z(o,`startedAt`,`started_at`,`timestamp`)||t}},Se=(e,t)=>Array.isArray(e)?e.flatMap((e,n)=>{let r=L(e);if(!r)return[];let i=W(r,t,n),a=R(r,`output`,`content`,`result`),o=B(r.status,`using_tool`);return[{...i,status:r.isError===!0||r.is_error===!0?`error`:o===`completed`?`completed`:i.status,output:a,finishedAt:z(r,`finishedAt`,`finished_at`),durationMs:z(r,`durationMs`,`duration_ms`)}]}):[],Ce=(e,t,n)=>({taskId:e,runId:t,connection:`idle`,phase:`queued`,lastEventId:0,reasoning:``,response:``,timeline:[],tools:[],skills:[],startedAt:n,terminal:!1}),we=(e,t)=>{let n=L(t.data.liveRun)||L(t.data.live_run)||L(t.data.run)||t.data,r=L(t.data.task)||L(t.data.detail),i=r?L(r.activeRun):void 0,a=R(n,`reasoning`,`thinking`),o=R(n,`response`,`assistant`,`content`),s=B(n.phase??n.status??i?.status??r?.status,e.phase),c=e.lastEventId>0&&s!==`completed`&&s!==`needs_input`&&s!==`failed`&&s!==`cancelled`&&n.phase===void 0?e.phase:s,l=Se(n.tools??n.toolActivities??n.tool_activities,t.timestamp),u=n.skills,d=Array.isArray(u)?u.flatMap((e,t)=>{let n=L(e);return n?[xe(n,t)]:[]}):e.skills,f=n.terminal===!0||c===`completed`||c===`needs_input`||c===`failed`||c===`cancelled`,p=a===void 0?e.reasoning:V(a),m=o===void 0?e.response:V(o),h=l.length>0?l:e.tools,g=H(e.timeline,`reasoning`,e.reasoning,p);for(let e of h)g=be(g,e.id);return g=H(g,`response`,e.response,m),{...e,phase:c,reasoning:p,response:m,timeline:g,tools:h,skills:d,usage:L(n.usage)?U(n,e.usage):e.usage,round:z(n,`round`,`roundIndex`,`round_index`)??e.round,roundLimit:z(n,`roundLimit`,`round_limit`)??e.roundLimit,startedAt:z(n,`startedAt`,`started_at`)??(i?z(i,`startedAt`,`started_at`):void 0)??e.startedAt,finishedAt:z(n,`finishedAt`,`finished_at`)??e.finishedAt,error:R(n,`error`,`message`)??e.error,terminal:f}},Te=(e,t)=>{let n=e.findIndex(e=>e.id===t.id);if(n===-1)return[...e,t];let r=[...e];return r[n]={...e[n],...t},r},Ee=(e,t)=>{let n=e?.taskId===t.taskId&&e.runId===t.runId?e:Ce(t.taskId,t.runId,t.timestamp);if(t.type!==`snapshot`&&t.id<=n.lastEventId)return n;let r={...n,connection:`connected`,connectionError:void 0,lastEventId:Math.max(n.lastEventId,t.id)};if(t.type===`snapshot`)r=we(r,t);else if(t.type===`run_state`){let e=B(t.data.phase??t.data.status??t.data.state,r.phase);r={...r,phase:e,round:z(t.data,`round`,`roundIndex`,`round_index`)??r.round,roundLimit:z(t.data,`roundLimit`,`round_limit`)??r.roundLimit,startedAt:z(t.data,`startedAt`,`started_at`)??r.startedAt,terminal:r.terminal||e===`completed`||e===`needs_input`||e===`failed`||e===`cancelled`}}else if(t.type===`reasoning_delta`){let e=ye(r.reasoning,t.data);r={...r,phase:`thinking`,reasoning:e,timeline:H(r.timeline,`reasoning`,r.reasoning,e)}}else if(t.type===`assistant_delta`){let e=ye(r.response,t.data);r={...r,phase:`responding`,response:e,timeline:H(r.timeline,`response`,r.response,e)}}else if(t.type===`tool_call`){let e=W(t.data,t.timestamp,r.tools.length);r={...r,phase:`using_tool`,tools:Te(r.tools,e),timeline:be(r.timeline,e.id)}}else if(t.type===`tool_result`){let e=W(t.data,t.timestamp,r.tools.length),n=r.tools.find(t=>t.id===e.id),i=t.data.isError===!0||t.data.is_error===!0||t.data.error===!0;r={...r,phase:`thinking`,tools:Te(r.tools,{...n,...e,status:i?`error`:`completed`,arguments:n?.arguments??e.arguments,startedAt:n?.startedAt??e.startedAt,output:R(t.data,`output`,`content`,`result`,`message`)||``,finishedAt:z(t.data,`finishedAt`,`finished_at`)||t.timestamp,durationMs:z(t.data,`durationMs`,`duration_ms`)})}}else if(t.type===`usage`)r={...r,usage:U(t.data,r.usage)};else if(t.type===`skill_loaded`){let e=xe(t.data,r.skills.length);r={...r,skills:r.skills.some(t=>t.id===e.id)?r.skills:[...r.skills,e]}}else if(t.type===`error`)r={...r,phase:`failed`,error:R(t.data,`message`,`error`)||`The Work run stopped unexpectedly.`,finishedAt:z(t.data,`finishedAt`,`finished_at`)||t.timestamp,terminal:t.data.terminal!==!1};else if(t.type===`done`){let e=B(t.data.status??t.data.state??t.data.phase,`completed`);r={...r,phase:e,error:R(t.data,`error`,`message`)??r.error,usage:L(t.data.usage)?U(t.data,r.usage):r.usage,finishedAt:z(t.data,`finishedAt`,`finished_at`)||t.timestamp,terminal:!0}}return r},G=(e,t)=>Error(t?.error||t?.message||e),K=(e,t)=>{if(typeof e==`object`&&e&&`response`in e){let t=e.response,n=t?.data?.error||t?.data?.message;if(n)return n}return e instanceof Error&&e.message?e.message:t},De=e=>[...e].sort((e,t)=>t.updatedAt-e.updatedAt||t.createdAt-e.createdAt||e.id.localeCompare(t.id)),Oe=({messages:e,messageCursor:t,hasMoreMessages:n,...r})=>r,ke=(e,t)=>{let n=new Map(e.map(e=>[e.id,e]));for(let e of t)n.set(e.id,e);return[...n.values()].sort((e,t)=>e.messageIndex-t.messageIndex||e.createdAt-t.createdAt||e.id.localeCompare(t.id))},Ae=(e,t)=>{if(!e||e.id!==t.id)return t;let n=e.updatedAt>t.updatedAt?{...t,...e}:{...e,...t};if(e.messages.length===0)return{...n,messages:t.messages,messageCursor:t.messageCursor,hasMoreMessages:t.hasMoreMessages};let r=Math.max(...e.messages.map(e=>e.messageIndex)),i=Math.min(...t.messages.map(e=>e.messageIndex)),a=t.messages.length>0&&r+1<i;return{...n,messages:ke(e.messages,t.messages),messageCursor:a?t.messageCursor:e.messageCursor,hasMoreMessages:a?t.hasMoreMessages:e.hasMoreMessages}},je=(e,t)=>{let n=e.find(e=>e.id===t.id);if(n&&n.updatedAt>t.updatedAt)return e;let r=Oe(t),i=e.findIndex(e=>e.id===t.id);if(i===-1)return[r,...e];let a=[...e];return a[i]=r,a},Me=(e,t)=>{let n=new Map(t.map(e=>[e.id,e])),r=new Set(e.map(e=>e.id)),i=De(t.filter(e=>!r.has(e.id))),a=e.flatMap(e=>{let t=n.get(e.id);return t?[e.updatedAt>t.updatedAt?e:t]:[]});return[...i,...a]},q=i((e,t)=>{let n=0,r=0,i=0,a=0,o=0,s=null,c=0,l=0,u=0,f=null,p=0,m=new Set,h=new Set,g=new Map,_=(e,t)=>`${e}\u0000${t}`,v=e=>e===n,y=e=>{if(!v(e))throw Error(`Work session changed.`)},b=()=>{l+=1,u+=1,f=null,h.clear()},x=()=>{let t=++c;return h.add(t),e({loadingFiles:!0}),t},S=(n,r,i)=>{h.delete(n),v(r)&&t().selectedTaskId===i&&e({loadingFiles:h.size>0})},ee=e=>t().selectedTaskId===e,C=t=>{let n=++p;return g.set(n,t),ee(t)&&e({actionLoading:!0,error:null}),n},w=(n,r)=>{if(g.delete(n),!v(r))return;let i=t().selectedTaskId;e({actionLoading:[...g.values()].some(e=>e===i)})},T=(t,n,r)=>{v(n)&&ee(t)&&e({error:r})},E=(t,r=n,i=!1)=>{v(r)&&(i&&(o+=1),e(e=>({tasks:je(e.tasks,t),selectedTask:e.selectedTaskId===t.id?Ae(e.selectedTask,t):e.selectedTask})))},D=async(e,t,r)=>{let i=n,a=C(r);try{let n=await e();if(y(i),!n.success||!n.data)throw G(t,n);return E(n.data,i,!0),n.data}catch(e){let n=K(e,t);throw T(r,i,n),Error(n)}finally{w(a,i)}};return{capabilities:null,tasks:[],selectedTaskId:null,selectedTask:null,files:[],selectedFile:null,liveRuns:{},loadingTasks:!1,loadingTask:!1,loadingOlderMessages:!1,loadingFiles:!1,actionLoading:!1,error:null,loadCapabilities:async()=>{let t=n;try{let n=await d.capabilities();if(y(t),!n.success||!n.data)throw G(`Could not inspect the Work runtime.`,n);e({capabilities:n.data})}catch(n){v(t)&&e({capabilities:{available:!1,runtime:`docker`,image:``,reason:K(n,`The Work runtime is unavailable.`)}})}},loadTasks:async(t=!1)=>{let c=n,l=++r,u=o;t||(i=l,m.add(l),e({loadingTasks:!0,error:null}));try{let t=await d.listTasks();if(y(c),!t.success||!t.data)throw G(`Could not load Work tasks.`,t);let n=De(t.data);if(l<=a||u!==o)return;a=l,e(e=>{let t=Me(e.tasks,n),r=e.selectedTaskId?t.find(t=>t.id===e.selectedTaskId):void 0,i=r&&e.selectedTask?{...e.selectedTask,...r,messages:e.selectedTask.messages,messageCursor:e.selectedTask.messageCursor,hasMoreMessages:e.selectedTask.hasMoreMessages}:e.selectedTask,a=s,o=a!==null&&l>a.requestId;return o&&(s=null),{tasks:t,selectedTask:i,...o&&e.error===a.message?{error:null}:{}}})}catch(n){let r=K(n,`Could not load Work tasks.`);!t&&v(c)&&l===i&&l>a&&u===o&&(s={requestId:l,message:r},e({error:r}))}finally{m.delete(l),!t&&v(c)&&e({loadingTasks:m.size>0})}},selectTask:t=>{b(),e(e=>({selectedTaskId:t,selectedTask:t&&e.selectedTask?.id===t?e.selectedTask:null,files:[],selectedFile:null,loadingFiles:!1,loadingOlderMessages:!1,actionLoading:[...g.values()].some(e=>e===t),error:null}))},loadTask:async(t,r=!1)=>{let i=n;r||e({loadingTask:!0,error:null});try{let e=await d.getTask(t);if(y(i),!e.success||!e.data)throw G(`Could not load this Work task.`,e);return E(e.data,i),e.data}catch(t){let n=K(t,`Could not load this Work task.`);throw!r&&v(i)&&e({error:n}),Error(n)}finally{!r&&v(i)&&e({loadingTask:!1})}},loadOlderMessages:async r=>{let i=n,a=t().selectedTask,o=a?.id===r?a.messageCursor:void 0;if(!a||a.id!==r||!a.hasMoreMessages||o===void 0)return[];e({loadingOlderMessages:!0,error:null});try{let t=await d.getMessages(r,o);if(y(i),!t.success||!t.data)throw G(`Could not load older Work messages.`,t);let n=t.data;return e(e=>{if(e.selectedTask?.id!==r)return{};let t=e.selectedTask.messageCursor===o;return{selectedTask:{...e.selectedTask,messages:ke(e.selectedTask.messages,n.messages),messageCursor:t?n.cursor:e.selectedTask.messageCursor,hasMoreMessages:t?n.hasMore:e.selectedTask.hasMoreMessages}}}),n.messages}catch(n){let a=K(n,`Could not load older Work messages.`);throw v(i)&&t().selectedTaskId===r&&e({error:a}),Error(a)}finally{v(i)&&t().selectedTaskId===r&&e({loadingOlderMessages:!1})}},createTask:e=>D(()=>d.createTask(e),`Could not create the Work task.`,null),updateTask:(e,t)=>D(()=>d.updateTask(e,t),`Could not update the Work task.`,e),deleteTask:async r=>{let i=n,a=C(r);try{let n=await d.deleteTask(r);if(y(i),!n.success)throw G(`Could not delete the Work task.`,n);t().selectedTaskId===r&&b(),o+=1,e(e=>({tasks:e.tasks.filter(e=>e.id!==r),selectedTaskId:e.selectedTaskId===r?null:e.selectedTaskId,selectedTask:e.selectedTaskId===r?null:e.selectedTask,files:e.selectedTaskId===r?[]:e.files,selectedFile:e.selectedTaskId===r?null:e.selectedFile,liveRuns:Object.fromEntries(Object.entries(e.liveRuns).filter(([e])=>e!==r))}))}catch(e){let t=K(e,`Could not delete the Work task.`);throw T(r,i,t),Error(t)}finally{w(a,i)}},startRun:async(e,t)=>{let r=n,i=C(e);try{let n=await d.startRun(e,t);if(y(r),!n.success||!n.data)throw G(`Could not start the Work run.`,n);return E(n.data,r,!0),n.data}catch(t){let n=K(t,`Could not start the Work run.`);throw T(e,r,n),Error(n)}finally{w(i,r)}},cancelRun:async e=>{let r=n,i=C(e);try{let n=await d.cancelRun(e);if(y(r),!n.success)throw G(`Could not cancel the Work run.`,n);return n.data?(E(n.data,r,!0),n.data):(o+=1,await t().loadTask(e,!0))}catch(t){let n=K(t,`Could not cancel the Work run.`);throw T(e,r,n),Error(n)}finally{w(i,r)}},beginLiveRun:(t,n,r)=>{e(e=>{let i=e.liveRuns[t];return{liveRuns:{...e.liveRuns,[t]:i?.runId===n?{...i,startedAt:i.startedAt??r}:Ce(t,n,r)}}})},applyRunEvent:e=>{t().applyRunEvents([e])},applyRunEvents:t=>{t.length!==0&&e(e=>{let n={...e.liveRuns},r=e.tasks,i=e.selectedTask;for(let a of t){n[a.taskId]=Ee(n[a.taskId],a);let t=a.type===`snapshot`?a.data.task??a.data.detail:void 0,o=t&&typeof t==`object`&&!Array.isArray(t)&&t.id===a.taskId&&Array.isArray(t.messages)?t:void 0;o&&(r=je(r,o),e.selectedTaskId===o.id&&(i=Ae(i,o)))}return{liveRuns:n,tasks:r,selectedTask:i}})},setLiveRunConnection:(t,n,r,i)=>{e(e=>{let a=e.liveRuns[t];return!a||a.runId!==n?{}:{liveRuns:{...e.liveRuns,[t]:{...a,connection:r,connectionError:i}}}})},clearLiveRun:(t,n)=>{e(e=>{if(n&&e.liveRuns[t]?.runId!==n)return{};let r={...e.liveRuns};return delete r[t],{liveRuns:r}})},loadFiles:async(r,i=``)=>{let a=n,o=++l,s=x();try{let n=await d.listFiles(r,i);if(y(a),!n.success||!n.data)throw G(`Could not load workspace files.`,n);return o===l&&t().selectedTaskId===r&&e({files:n.data}),n.data}catch(n){let i=K(n,`Could not load workspace files.`);throw o===l&&v(a)&&t().selectedTaskId===r&&e({error:i}),Error(i)}finally{S(s,a,r)}},loadFile:async(r,i)=>{let a=n,o=++u,s=_(r,i);f=s;let c=x();try{let n=await d.getFile(r,i);if(y(a),!n.success||!n.data)throw G(`Could not open this workspace file.`,n);if(o!==u||f!==s||!v(a)||t().selectedTaskId!==r)throw Error(`Work file request was superseded.`);return e({selectedFile:n.data}),n.data}catch(n){let i=K(n,`Could not open this file.`);throw o===u&&v(a)&&t().selectedTaskId===r&&e({error:i}),Error(i)}finally{S(c,a,r)}},clearSelectedFile:()=>{u+=1,f=null,e({selectedFile:null})},saveFile:async(r,i,a,o)=>{let s=n,c=C(r),l=_(r,i);f===l&&(u+=1,f=null);try{let n=await d.saveFile(r,i,a,o);if(y(s),!n.success||!n.data)throw G(`Could not save this workspace file.`,n);return t().selectedTaskId===r&&t().selectedFile?.path===i&&(f===l&&(u+=1,f=null),e({selectedFile:n.data})),n.data}catch(e){let t=K(e,`Could not save this file.`);throw T(r,s,t),Error(t)}finally{w(c,s)}},startPreview:(e,t)=>D(()=>d.startPreview(e,t),`Could not start the workspace preview.`,e),stopPreview:e=>D(()=>d.stopPreview(e),`Could not stop the workspace preview.`,e),clearError:()=>e({error:null}),clearAllState:()=>{n+=1,i=++r,a=i,o+=1,s=null,m.clear(),g.clear(),b(),e({capabilities:null,tasks:[],selectedTaskId:null,selectedTask:null,files:[],selectedFile:null,liveRuns:{},loadingTasks:!1,loadingTask:!1,loadingOlderMessages:!1,loadingFiles:!1,actionLoading:!1,error:null})}}}),Ne=async(e,t,n)=>{let r=await t(e);return r.success&&await n(),r},J=s(`store:plugin-store`),Pe=i((e,t)=>({plugins:[],pluginStatus:[],pluginVariables:{},isLoading:!1,isUploading:!1,error:null,loadPlugins:async()=>{e({isLoading:!0,error:null});try{let t=await u.getAllPlugins();t.success&&t.data?e({plugins:t.data}):e({error:t.error||`Failed to load plugins`})}catch(t){e({error:w(t,`Failed to load plugins`)})}finally{e({isLoading:!1})}},uploadPlugin:async n=>{e({isUploading:!0,error:null});try{let r=await u.uploadPlugin(n);r.success&&r.data?await t().loadPlugins():e({error:r.error||`Failed to upload plugin`})}catch(t){e({error:t instanceof Error?t.message:`Failed to upload plugin`})}finally{e({isUploading:!1})}},installPlugin:async n=>{e({isLoading:!0,error:null});try{let r=await u.installPlugin(n);r.success&&r.data?await t().loadPlugins():e({error:r.error||`Failed to install plugin`})}catch(t){e({error:t instanceof Error?t.message:`Failed to install plugin`})}finally{e({isLoading:!1})}},updatePlugin:async(n,r)=>{e({isLoading:!0,error:null});try{let i=await u.updatePlugin(n,r);i.success&&i.data?await t().loadPlugins():e({error:i.error||`Failed to update plugin`})}catch(t){e({error:t instanceof Error?t.message:`Failed to update plugin`})}finally{e({isLoading:!1})}},deletePlugin:async n=>{e({isLoading:!0,error:null});try{let r=await u.deletePlugin(n);r.success?await t().loadPlugins():e({error:r.error||`Failed to delete plugin`})}catch(t){e({error:t instanceof Error?t.message:`Failed to delete plugin`})}finally{e({isLoading:!1})}},activatePlugin:async n=>{e({isLoading:!0,error:null});try{let r=await Ne(n,u.activatePlugin,()=>t().loadPlugins());r.success||e({error:r.error||`Failed to activate plugin`})}catch(t){e({error:t instanceof Error?t.message:`Failed to activate plugin`})}finally{e({isLoading:!1})}},deactivatePlugin:async n=>{e({isLoading:!0,error:null});try{let r=await u.deactivatePlugin(n);r.success?await t().loadPlugins():e({error:r.error||`Failed to deactivate plugin`})}catch(t){e({error:t instanceof Error?t.message:`Failed to deactivate plugin`})}finally{e({isLoading:!1})}},loadPluginStatus:async()=>{try{let t=await u.getPluginStatus();t.success&&t.data&&e({pluginStatus:t.data})}catch(e){J.error(`Failed to load plugin status:`,e)}},exportPlugin:async t=>{e({isLoading:!0,error:null});try{let e=await u.exportPlugin(t),n=window.URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=`${t}.json`,document.body.appendChild(r),r.click(),document.body.removeChild(r),window.URL.revokeObjectURL(n)}catch(t){e({error:t instanceof Error?t.message:`Failed to export plugin`})}finally{e({isLoading:!1})}},fetchPluginVariables:async t=>{try{let n=await u.getVariables(t);n.success&&n.data&&e(e=>({pluginVariables:{...e.pluginVariables,[t]:n.data}}))}catch(e){J.error(`Failed to fetch plugin variables:`,e)}},updatePluginVariables:async(e,n,r=[])=>{try{return(await u.setVariables(e,n,r)).success?(await t().fetchPluginVariables(e),!0):!1}catch(e){return J.error(`Failed to update plugin variables:`,e),!1}},resetPluginVariables:async t=>{try{let n=await u.resetVariables(t);return n.success&&n.data===!0?(e(e=>{let n={...e.pluginVariables};return delete n[t],{pluginVariables:n}}),!0):!1}catch(e){return J.error(`Failed to reset plugin variables:`,e),!1}},clearError:()=>e({error:null}),setError:t=>e({error:t})})),Y=`libre-webui:work-draft:`,X=(e,t)=>`${Y}${e}:${t}`,Fe=(e,t)=>{try{let n=window.sessionStorage.getItem(X(e,t));if(!n)return null;let r=JSON.parse(n);return typeof r.content==`string`?{content:r.content,baseUpdatedAt:typeof r.baseUpdatedAt==`number`?r.baseUpdatedAt:void 0}:null}catch{return null}},Ie=(e,t,n)=>{try{return window.sessionStorage.setItem(X(e,t),JSON.stringify(n)),!0}catch{return!1}},Le=(e,t)=>{try{window.sessionStorage.removeItem(X(e,t))}catch{}},Re=e=>{let t=`${Y}${e}:`;try{for(let e=window.sessionStorage.length-1;e>=0;e--){let n=window.sessionStorage.key(e);n?.startsWith(t)&&window.sessionStorage.removeItem(n)}}catch{}},ze=()=>{try{for(let e=window.sessionStorage.length-1;e>=0;e--){let t=window.sessionStorage.key(e);t?.startsWith(Y)&&window.sessionStorage.removeItem(t)}}catch{}},Z=s(`websocket`),Q=new class{constructor(){n(this,`ws`,null),n(this,`url`,void 0),n(this,`reconnectAttempts`,0),n(this,`maxReconnectAttempts`,5),n(this,`reconnectDelay`,1e3),n(this,`messageHandlers`,new Map);let e;e=window.location.protocol===`file:`?`ws://localhost:3001`:`${window.location.protocol===`https:`?`wss:`:`ws:`}//${window.location.host}`,this.url=`${e}/ws`,Z.debug(`WebSocket URL constructed:`,this.url)}connect(){return o()?(Z.debug(`Demo mode active: skipping WebSocket connection.`),Promise.resolve()):(Z.debug(`WebSocket: Attempting to connect to:`,this.url),new Promise((e,t)=>{try{let n=localStorage.getItem(`auth-token`),r=n?`${this.url}?token=${encodeURIComponent(n)}`:this.url;Z.debug(`WebSocket: Connecting to:`,r.replace(/token=[^&]+/,`token=***`)),this.ws=new WebSocket(r),this.ws.onopen=()=>{Z.debug(`WebSocket connected successfully`),this.reconnectAttempts=0,e()},this.ws.onmessage=e=>{try{let t=JSON.parse(e.data),n=this.messageHandlers.get(t.type);n?n(t.data):t.type===`connected`?Z.debug(`WebSocket: Server confirmed connection`):Z.warn(`WebSocket: No handler for message type:`,t.type)}catch(e){Z.error(`Failed to parse WebSocket message:`,e)}},this.ws.onclose=()=>{Z.debug(`WebSocket disconnected`),this.ws=null,this.attemptReconnect()},this.ws.onerror=e=>{Z.error(`WebSocket error:`,e),t(e)}}catch(e){t(e)}}))}disconnect(){this.ws&&(this.ws.close(),this.ws=null)}send(e){this.ws&&this.ws.readyState===WebSocket.OPEN?(Z.debug(`WebSocket: Sending message:`,e),this.ws.send(JSON.stringify(e))):Z.warn(`WebSocket is not connected. ReadyState:`,this.ws?.readyState)}onMessage(e,t){this.messageHandlers.delete(e),this.messageHandlers.set(e,t)}offMessage(e){this.messageHandlers.delete(e)}attemptReconnect(){if(o()){Z.debug(`Demo mode active: skipping WebSocket reconnection.`);return}this.reconnectAttempts<this.maxReconnectAttempts?(this.reconnectAttempts++,Z.debug(`Attempting to reconnect... (${this.reconnectAttempts}/${this.maxReconnectAttempts})`),setTimeout(()=>{this.connect().catch(()=>{})},this.reconnectDelay*this.reconnectAttempts)):Z.error(`Max reconnection attempts reached`)}get isConnected(){return this.ws?.readyState===WebSocket.OPEN}},Be=e({useAuthStore:()=>Ve}),$=s(`auth-store`),Ve=i()(a((e,t)=>({user:null,token:null,systemInfo:null,isAuthenticated:!1,isLoading:!1,login:(n,r,i)=>{let a=t().user?.id===n.id;localStorage.setItem(`auth-token`,r);let s=F.getState();s.clearAllState&&s.clearAllState(),q.getState().clearAllState(),a||(ze(),h.getState().clearUserState()),e({user:n,token:r,systemInfo:i,isAuthenticated:!0,isLoading:!1}),setTimeout(async()=>{try{let e=Pe.getState();$.debug(`Reinitializing app after login...`),$.debug(`Reconnecting WebSocket with auth token...`),Q.disconnect(),await Q.connect();try{!(await f.checkHealth()).success&&!o()&&$.warn(`Ollama service not available after login`)}catch(e){$.warn(`Ollama health check failed after login; continuing provider initialization:`,e)}let t=h.getState();await Promise.all([s.loadModels(),s.loadSessions(),s.loadPreferences(),t.loadPreferences(),e.loadPlugins()]),$.debug(`Reinitialized app after login`)}catch(e){$.error(`Failed to reinitialize app after login:`,e)}},100)},logout:()=>{localStorage.removeItem(`auth-token`),$.debug(`Disconnecting WebSocket on logout...`),Q.disconnect();let t=F.getState();t.clearAllState&&t.clearAllState(),q.getState().clearAllState(),ze(),h.getState().clearUserState(),e({user:null,token:null,isAuthenticated:!1,isLoading:!1})},setUser:t=>{e({user:t})},setSystemInfo:t=>{e({systemInfo:t})},setLoading:t=>{e({isLoading:t})},isAdmin:()=>{let{user:e}=t();return e?.role===`admin`},requiresAuth:()=>{let{systemInfo:e}=t();return e?.requiresAuth??!1}}),{name:`auth-store`,partialize:e=>({user:e.user,token:e.token,systemInfo:e.systemInfo,isAuthenticated:e.isAuthenticated})}));export{b as S,ge as _,Re as a,y as b,Pe as c,M as d,me as f,he as g,N as h,Le as i,q as l,pe as m,Ve as n,Fe as o,j as p,Q as r,Ie as s,Be as t,F as u,_e as v,C as x,w as y};