libre-webui 0.32.0 → 0.33.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 (107) hide show
  1. package/backend/dist/middleware/staticAssets.d.ts.map +1 -1
  2. package/backend/dist/middleware/staticAssets.js +21 -5
  3. package/backend/dist/middleware/staticAssets.js.map +1 -1
  4. package/backend/dist/services/appearanceSettingsService.d.ts +1 -1
  5. package/backend/dist/services/appearanceSettingsService.d.ts.map +1 -1
  6. package/backend/dist/services/appearanceSettingsService.js +1 -1
  7. package/backend/dist/services/appearanceSettingsService.js.map +1 -1
  8. package/backend/dist/types/index.d.ts +1 -1
  9. package/backend/dist/types/index.d.ts.map +1 -1
  10. package/backend/package.json +1 -1
  11. package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
  12. package/frontend/dist/assets/index-DegYzMyw.js +70 -0
  13. package/frontend/dist/assets/{index-DtfJNUat.css → index-gKj8Y1JB.css} +1 -1
  14. package/frontend/dist/index.html +34 -22
  15. package/frontend/dist/js/{ArtifactContainer-DG-qigOa.js → ArtifactContainer-BB6A8cT5.js} +1 -1
  16. package/frontend/dist/js/{ArtifactDemoPage-Cr_bMx_v.js → ArtifactDemoPage-Bf1dW5Z3.js} +1 -1
  17. package/frontend/dist/js/{ArtifactSandboxFrame-2WyuCg4w.js → ArtifactSandboxFrame-DsZW0Axy.js} +1 -1
  18. package/frontend/dist/js/{ArtifactSlideOutPanel-zizbFUzW.js → ArtifactSlideOutPanel-Cartcixp.js} +1 -1
  19. package/frontend/dist/js/{AutomationModal-Dgk1PzNx.js → AutomationModal-BI_3nFeg.js} +1 -1
  20. package/frontend/dist/js/{AutomationsPage-CuDSh_W2.js → AutomationsPage-ChMXj4UG.js} +1 -1
  21. package/frontend/dist/js/{AvatarUpload-D_nSLum9.js → AvatarUpload-gfZ9QWR3.js} +1 -1
  22. package/frontend/dist/js/CalendarPage-Ce1ud5St.js +1 -0
  23. package/frontend/dist/js/ChannelsPage-kl8zJ2HA.js +1 -0
  24. package/frontend/dist/js/ChatPage-Bj98c6rc.js +14 -0
  25. package/frontend/dist/js/ConnectModels-CPftHmE3.js +1 -0
  26. package/frontend/dist/js/{EvaluationsPage-C6NHj9KF.js → EvaluationsPage-Cydglp6R.js} +2 -2
  27. package/frontend/dist/js/{FirstTimeSetup-BVOPC4uh.js → FirstTimeSetup-C5cc-bc9.js} +1 -1
  28. package/frontend/dist/js/GalleryPage-Dvq2GVoH.js +1 -0
  29. package/frontend/dist/js/{HomePage-B9nkyAdS.js → HomePage-zVjADRoX.js} +1 -1
  30. package/frontend/dist/js/LibreClawPage-x0Qmtcnc.js +1 -0
  31. package/frontend/dist/js/{ModelManagerModals-B4NTpNr2.js → ModelManagerModals-K1oiXMTv.js} +1 -1
  32. package/frontend/dist/js/NotesPage-BnqBv-n1.js +3 -0
  33. package/frontend/dist/js/{PasswordStrengthMeter-CNgHwIkW.js → PasswordStrengthMeter-DVFLKG_-.js} +1 -1
  34. package/frontend/dist/js/PersonasPage-DK9-SDZQ.js +13 -0
  35. package/frontend/dist/js/{PluginUsagePage-QGOo5MZj.js → PluginUsagePage-DX9uxdRr.js} +1 -1
  36. package/frontend/dist/js/RichMessageContent-BzfhfzQ4.js +1 -0
  37. package/frontend/dist/js/{RichMessageContent-Cm7kRv3f.js → RichMessageContent-XMkRvBen.js} +1 -1
  38. package/frontend/dist/js/SettingsModal-CMOwEhkG.js +19 -0
  39. package/frontend/dist/js/{ShareDialog-CeHMOTrA.js → ShareDialog-CZpU1itx.js} +1 -1
  40. package/frontend/dist/js/{SystemPage-B1bDpa9g.js → SystemPage-BVaaKTRs.js} +1 -1
  41. package/frontend/dist/js/UserManagementPage-DdpcN4-Q.js +1 -0
  42. package/frontend/dist/js/UserManagementPanel-BxAvybHj.js +1 -0
  43. package/frontend/dist/js/{WhatsNewModal-CKkWbbNI.js → WhatsNewModal-CoFCdUpf.js} +1 -1
  44. package/frontend/dist/js/WorkPage-Du6llCSU.js +7 -0
  45. package/frontend/dist/js/api-CatP45JH.js +1 -0
  46. package/frontend/dist/js/api-DQdJeQjd.js +14 -0
  47. package/frontend/dist/js/{appNavigation-B_QjduzS.js → appNavigation-DRM2Jr4r.js} +1 -1
  48. package/frontend/dist/js/appStore-BXbVcTeo.js +2 -0
  49. package/frontend/dist/js/appVersion-BUroqcki.js +1 -0
  50. package/frontend/dist/js/{ar-DFOuR5-K.js → ar-C8Izi_rT.js} +1 -1
  51. package/frontend/dist/js/{authStore-Bl7S8bPg.js → authStore-DkqtNSYP.js} +3 -3
  52. package/frontend/dist/js/authStore-bqAN5v4N.js +1 -0
  53. package/frontend/dist/js/{bn-BqS1yarc.js → bn-BJJgi-6Q.js} +1 -1
  54. package/frontend/dist/js/{chatStore-DW0LsT5X.js → chatStore-8jYk48hC.js} +3 -3
  55. package/frontend/dist/js/{config-nmgpdBW-.js → config-D4dduT3C.js} +1 -1
  56. package/frontend/dist/js/{cs-C84vh9-u.js → cs-DheVrMUl.js} +1 -1
  57. package/frontend/dist/js/{da-JlIGisjC.js → da-BLszIs3a.js} +1 -1
  58. package/frontend/dist/js/{de-ChxuvrTF.js → de-BvWdcr7T.js} +1 -1
  59. package/frontend/dist/js/{es-Dz-DZUqm.js → es-CQ8Yauda.js} +1 -1
  60. package/frontend/dist/js/{evaluationsApi-B3fvoXgD.js → evaluationsApi-CBKjxZUn.js} +1 -1
  61. package/frontend/dist/js/{fr-xjmr6UIb.js → fr-BD5h-w8z.js} +1 -1
  62. package/frontend/dist/js/{hi-CJoQdoJi.js → hi-IlRhC5IE.js} +1 -1
  63. package/frontend/dist/js/{id-ABrUdDxu.js → id-DalGMQEJ.js} +1 -1
  64. package/frontend/dist/js/{is-DnBvEw5D.js → is-DuQqmHeS.js} +1 -1
  65. package/frontend/dist/js/{it-BG1zJjTU.js → it-DDaqAdB1.js} +1 -1
  66. package/frontend/dist/js/{ja-DtZswh64.js → ja-CYCu9F9Y.js} +1 -1
  67. package/frontend/dist/js/{ko-BKhTnqlM.js → ko-P3JZPOXE.js} +1 -1
  68. package/frontend/dist/js/{messageCodeStyles-CCM1VmjP.js → messageCodeStyles-0_YpQDk4.js} +2 -2
  69. package/frontend/dist/js/{ms-BdRgdch9.js → ms-B3ZIqlUn.js} +1 -1
  70. package/frontend/dist/js/{nl-B3sv2F01.js → nl-1Qpsmmz1.js} +1 -1
  71. package/frontend/dist/js/{pl-CLAO9d2t.js → pl-ErrMri3_.js} +1 -1
  72. package/frontend/dist/js/{pt-BV3z1x11.js → pt-0T0R9AtX.js} +1 -1
  73. package/frontend/dist/js/{ru-CUSOQ4d9.js → ru-B34INyPg.js} +1 -1
  74. package/frontend/dist/js/{sv-nPJsBtOC.js → sv-BSqDwAur.js} +1 -1
  75. package/frontend/dist/js/{teamEventStream-BBNlg5Wd.js → teamEventStream-RoMYo102.js} +1 -1
  76. package/frontend/dist/js/{th-DqM7Arld.js → th-DK9M4-Iy.js} +1 -1
  77. package/frontend/dist/js/{tr-8kvS8u7c.js → tr-DUrkEwr1.js} +1 -1
  78. package/frontend/dist/js/{ui-BZOjqAJH.js → ui-UU79S5lB.js} +2 -2
  79. package/frontend/dist/js/{ui-vendor-DvJV-69N.js → ui-vendor-6y6qiSk5.js} +1 -1
  80. package/frontend/dist/js/{uk-3o761Mgn.js → uk-B5DYTi0e.js} +1 -1
  81. package/frontend/dist/js/{useChat-Bgdsccuz.js → useChat-ImXXcy0q.js} +1 -1
  82. package/frontend/dist/js/useDictation-eMIAncoT.js +1 -0
  83. package/frontend/dist/js/{vi-CT74KJ9a.js → vi-CrtPQUIM.js} +1 -1
  84. package/frontend/dist/js/workApi-BM8qVq_w.js +1 -0
  85. package/frontend/dist/js/{workApi-CqIVWrXF.js → workApi-xhF57amo.js} +2 -2
  86. package/frontend/dist/js/{zh-Bhmpu3gT.js → zh-gbOKajYe.js} +1 -1
  87. package/package.json +1 -1
  88. package/frontend/dist/assets/index-DsrrGy09.js +0 -73
  89. package/frontend/dist/js/CalendarPage-D71tcbA3.js +0 -1
  90. package/frontend/dist/js/ChannelsPage-BFkTp2cp.js +0 -1
  91. package/frontend/dist/js/ChatPage-DRdVuXt2.js +0 -14
  92. package/frontend/dist/js/ConnectModels-CKLUofc6.js +0 -1
  93. package/frontend/dist/js/GalleryPage-CkpikP93.js +0 -1
  94. package/frontend/dist/js/LibreClawPage-CKtbq8am.js +0 -1
  95. package/frontend/dist/js/NotesPage-1TG04re5.js +0 -3
  96. package/frontend/dist/js/PersonasPage-DZ4GBVkJ.js +0 -13
  97. package/frontend/dist/js/RichMessageContent-BxxKwFmA.js +0 -1
  98. package/frontend/dist/js/SettingsModal-Cl5eVfDM.js +0 -19
  99. package/frontend/dist/js/UserManagementPage-CBA-O0bM.js +0 -1
  100. package/frontend/dist/js/WorkPage-BEJ98OxR.js +0 -7
  101. package/frontend/dist/js/api-BMB8tnVI.js +0 -1
  102. package/frontend/dist/js/api-T6SWjL0K.js +0 -14
  103. package/frontend/dist/js/appStore-BonCvc8Q.js +0 -2
  104. package/frontend/dist/js/appVersion-B6Jl_X3L.js +0 -1
  105. package/frontend/dist/js/authStore-C2kI1Q9M.js +0 -1
  106. package/frontend/dist/js/useDictation-AXMLg9HP.js +0 -1
  107. package/frontend/dist/js/workApi-CUSjVilK.js +0 -1
@@ -1,14 +0,0 @@
1
- import{a as e}from"./logger-DnuT4jgB.js";import{t}from"./config-nmgpdBW-.js";import{i as n,n as r,r as i}from"./workApi-CqIVWrXF.js";var a={getModels:()=>e()?i([]):r.get(`/agent-clis/models`).then(e=>e.data)},o=`0.32.0`,s=[`chat`,`models`,`documents`,`notes`,`personas`,`media`,`work`,`admin`],c=e=>!!e&&e.mfaRequired===!0,l={login:t=>e()?i({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:o}}):r.post(`/auth/login`,t).then(e=>e.data),signup:t=>e()?i({user:{id:`demo-user-new`,username:t.username,email:t.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:o,turnstile:{enabled:!1}}}):r.post(`/auth/signup`,t).then(e=>e.data),logout:()=>e()?i(void 0):r.post(`/auth/logout`).then(e=>e.data),getSystemInfo:()=>(n.debug(`getSystemInfo called, demo mode:`,e()),e()?i({requiresAuth:!0,hasUsers:!0,userCount:1,signupEnabled:!0,version:o,turnstile:{enabled:!1}}):(n.debug(`Making API call to:`,t+`/auth/system-info`),n.debug(`Full URL from:`,window.location.origin,`-> API:`,t+`/auth/system-info`),r.get(`/auth/system-info`).then(e=>(n.debug(`getSystemInfo response:`,e.data),e.data)).catch(e=>{throw n.debug(`getSystemInfo error:`,e),e.response&&(n.debug(`Error response data:`,e.response.data),n.debug(`Error status:`,e.response.status),n.debug(`Error headers:`,e.response.headers)),e.request&&n.debug(`Network error - no response received:`,e.request),n.debug(`Error config:`,e.config),e}))),verifyToken:()=>e()?i({id:`demo-user`,username:`demo`,email:`demo@example.com`,role:`admin`,status:`active`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):r.get(`/auth/verify`).then(e=>e.data),getEncryptionKey:()=>e()?i({encryptionKey:`demo-encryption-key-not-real`}):r.get(`/auth/encryption-key`).then(e=>e.data),getSessions:()=>e()?i([{id:`demo-session`,kind:`password`,userAgent:navigator.userAgent,createdAt:new Date().toISOString(),lastSeenAt:new Date().toISOString(),expiresAt:null,revokedAt:null,current:!0}]):r.get(`/auth/sessions`).then(e=>e.data),revokeSession:t=>e()?i(void 0):r.delete(`/auth/sessions/${t}`).then(e=>e.data),revokeOtherSessions:()=>e()?i({revokedCount:0}):r.post(`/auth/sessions/revoke-others`).then(e=>e.data),listApiTokens:()=>e()?i([]):r.get(`/auth/tokens`).then(e=>e.data),createApiToken:t=>e()?i({token:`lwui_demo_not_a_real_token`,record:{id:`demo-token-`+Date.now(),name:t.name,tokenPrefix:`lwui_demo`,scopes:t.scopes,createdAt:new Date().toISOString(),expiresAt:null,lastUsedAt:null,revokedAt:null}}):r.post(`/auth/tokens`,t).then(e=>e.data),revokeApiToken:t=>e()?i(void 0):r.delete(`/auth/tokens/${t}`).then(e=>e.data),mfaVerify:e=>r.post(`/auth/mfa/verify`,e).then(e=>e.data),mfaEnrollChallenge:e=>r.post(`/auth/mfa/enroll-challenge`,e).then(e=>e.data),mfaActivateChallenge:e=>r.post(`/auth/mfa/activate-challenge`,e).then(e=>e.data),getMfaStatus:()=>e()?i({totpEnabled:!1,totpPending:!1,recoveryCodesRemaining:0,required:!1,requiredModeLocked:!1,passkeys:[]}):r.get(`/auth/mfa`).then(e=>e.data),mfaEnroll:()=>r.post(`/auth/mfa/enroll`).then(e=>e.data),mfaActivate:e=>r.post(`/auth/mfa/activate`,e).then(e=>e.data),mfaRegenerateRecoveryCodes:e=>r.post(`/auth/mfa/recovery-codes`,e).then(e=>e.data),mfaDisable:e=>r.post(`/auth/mfa/disable`,e).then(e=>e.data),getMfaPolicy:()=>e()?i({mode:`optional`,locked:!1}):r.get(`/auth/mfa/policy`).then(e=>e.data),setMfaPolicy:e=>r.put(`/auth/mfa/policy`,{mode:e}).then(e=>e.data),passkeyRegisterOptions:()=>r.post(`/auth/passkeys/register-options`).then(e=>e.data),passkeyRegister:e=>r.post(`/auth/passkeys/register`,e).then(e=>e.data),listPasskeys:()=>e()?i([]):r.get(`/auth/passkeys`).then(e=>e.data),deletePasskey:e=>r.delete(`/auth/passkeys/${e}`).then(e=>e.data),passkeyLoginOptions:()=>r.post(`/auth/passkeys/login-options`).then(e=>e.data),passkeyLogin:e=>r.post(`/auth/passkeys/login`,e).then(e=>e.data)},u={getUsers:()=>e()?i([{id:`demo-user`,username:`demo`,email:`demo@example.com`,role:`admin`,status:`active`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}]):r.get(`/users`).then(e=>e.data),createUser:t=>e()?i({id:`new-user-`+Date.now(),username:t.username,email:t.email,role:t.role,status:`active`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):r.post(`/users`,t).then(e=>e.data),updateUser:(t,n)=>e()?i({id:t,username:n.username||`demo`,email:n.email||`demo@example.com`,role:n.role||`user`,status:`active`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):r.patch(`/users/${t}`,n).then(e=>e.data),deleteUser:t=>e()?i(void 0):r.delete(`/users/${t}`).then(e=>e.data),getPendingApprovals:()=>e()?i({count:0,latestCreatedAt:null}):r.get(`/users/pending-approvals`).then(e=>e.data),approveUser:t=>e()?i({id:t,username:`demo-user`,email:`demo@example.com`,role:`user`,status:`active`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):r.patch(`/users/${t}/approve`).then(e=>e.data),resetUserMfa:e=>r.post(`/users/${e}/mfa/reset`).then(e=>e.data),updateMyAvatar:t=>e()?i({id:`demo-user`,username:`demo`,email:`demo@example.com`,role:`admin`,status:`active`,avatar:t,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):r.patch(`/users/me/avatar`,{avatar:t}).then(e=>e.data)},d={getGroups:()=>e()?i([]):r.get(`/groups`).then(e=>e.data),createGroup:t=>e()?i({id:`demo-group-`+Date.now(),name:t.name,description:t.description??null,created_at:new Date().toISOString(),updated_at:new Date().toISOString(),members:[]}):r.post(`/groups`,t).then(e=>e.data),updateGroup:(t,n)=>e()?i({id:t,name:n.name??`demo-group`,description:n.description??null,created_at:new Date().toISOString(),updated_at:new Date().toISOString(),members:[]}):r.patch(`/groups/${t}`,n).then(e=>e.data),deleteGroup:t=>e()?i(void 0):r.delete(`/groups/${t}`).then(e=>e.data),addGroupMember:(t,n)=>e()?i({id:t,name:`demo-group`,description:null,created_at:new Date().toISOString(),updated_at:new Date().toISOString(),members:[]}):r.post(`/groups/${t}/members`,{userId:n}).then(e=>e.data),removeGroupMember:(t,n)=>e()?i(void 0):r.delete(`/groups/${t}/members/${n}`).then(e=>e.data),getEffectiveAccess:t=>e()?i({userId:t,username:`demo`,role:`admin`,status:`active`,groups:[],features:{work:!0,"model-download":!0,"web-search":!0,agents:!0},grants:[]}):r.get(`/groups/effective/${t}`).then(e=>e.data),getAuditEvents:(t={})=>{if(e())return i([]);let n=new URLSearchParams;t.action&&n.set(`action`,t.action),t.actor&&n.set(`actor`,t.actor),t.result&&n.set(`result`,t.result),t.limit&&n.set(`limit`,String(t.limit));let a=n.toString()?`?${n.toString()}`:``;return r.get(`/audit${a}`).then(e=>e.data)}},f=[{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`}}],p=()=>[{id:`demo-session-1`,title:`Demo Chat Session`,model:f[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()}],m=p(),h={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,hapticFeedbackEnabled:!1,workRemoteProviderDisclosureDismissed:!1,backgroundSettings:{enabled:!1,imageUrl:``,blurAmount:10,opacity:.6}},g={...h,theme:{...h.theme},generationOptions:{...h.generationOptions},embeddingSettings:{...h.embeddingSettings},titleSettings:{...h.titleSettings},backgroundSettings:{...h.backgroundSettings}},_=()=>g,v=e=>{let t=g.backgroundSettings||h.backgroundSettings;return g={...g,...e,theme:{...g.theme,...e.theme},generationOptions:{...g.generationOptions,...e.generationOptions},embeddingSettings:{...g.embeddingSettings,...e.embeddingSettings},titleSettings:e.titleSettings?{...g.titleSettings||h.titleSettings,...e.titleSettings}:g.titleSettings,backgroundSettings:e.backgroundSettings?{...t,...e.backgroundSettings}:g.backgroundSettings},g},ee={getSessions:()=>r.get(`/chat/sessions`).then(e=>e.data),createSession:(e,t,n,i,a)=>r.post(`/chat/sessions`,{model:e,title:t,personaId:n,providerType:i,providerId:a}).then(e=>e.data),getSession:t=>{if(e()){let e=p().find(e=>e.id===t);return e?i(e):Promise.resolve({success:!1,error:`Session not found in demo mode`})}return r.get(`/chat/sessions/${t}`).then(e=>e.data)},updateSession:(t,n)=>{if(e()){let e=m.findIndex(e=>e.id===t),r=m[e];if(r){let t={...r,...n,updatedAt:Date.now()};return m[e]=t,i(t)}return Promise.resolve({success:!1,error:`Session not found in demo mode`})}return r.put(`/chat/sessions/${t}`,n).then(e=>e.data)},forkSession:(e,t={})=>r.post(`/chat/sessions/${e}/fork`,t).then(e=>e.data),enqueuePrompt:(e,t)=>r.post(`/chat/sessions/${e}/queue`,{content:t}).then(e=>e.data),updateQueuedPrompt:(e,t,n)=>r.put(`/chat/sessions/${e}/queue/${t}`,{content:n}).then(e=>e.data),reorderPromptQueue:(e,t)=>r.put(`/chat/sessions/${e}/queue`,{order:t}).then(e=>e.data),claimQueuedPrompt:(e,t)=>r.delete(`/chat/sessions/${e}/queue/${t}`).then(e=>e.data),truncateMessagesFrom:(t,n)=>{if(e()){let e=m.find(e=>e.id===t);if(e){let t=e.messages.findIndex(e=>e.id===n);return t===-1?Promise.resolve({success:!1,error:`Message not found in demo mode`}):(e.messages=e.messages.slice(0,t),e.updatedAt=Date.now(),i(e))}return Promise.resolve({success:!1,error:`Session not found in demo mode`})}return r.post(`/chat/sessions/${t}/messages/${n}/truncate`).then(e=>e.data)},deleteSession:t=>e()?i(null):r.delete(`/chat/sessions/${t}`).then(e=>e.data),clearAllSessions:()=>r.delete(`/chat/sessions`).then(e=>e.data),generateTitle:(t,n,a,o,s)=>{if(e()){let e=a.substring(0,30)+(a.length>30?`...`:``);return i({title:e,source:`fallback`,updatedAt:Date.now()})}return r.post(`/chat/sessions/${t}/generate-title`,{model:n,message:a,providerType:o,providerId:s}).then(e=>e.data)},getFolders:()=>e()?i([]):r.get(`/chat/folders`).then(e=>e.data),createFolder:e=>r.post(`/chat/folders`,{name:e}).then(e=>e.data),renameFolder:(e,t)=>r.put(`/chat/folders/${e}`,{name:t}).then(e=>e.data),deleteFolder:e=>r.delete(`/chat/folders/${e}`).then(e=>e.data),generateFollowUps:t=>e()?i({suggestions:[]}):r.post(`/chat/sessions/${t}/followups`).then(e=>e.data),sendMessage:(e,t,n)=>r.post(`/chat/sessions/${e}/messages`,{content:t,options:n}).then(e=>e.data),saveMessage:(e,t)=>r.post(`/chat/sessions/${e}/messages`,t).then(e=>e.data),updateMessage:(t,n,a)=>e()?i({}):r.put(`/chat/sessions/${t}/messages/${n}`,a).then(e=>e.data),generateChatResponse:(e,t,n)=>r.post(`/chat/sessions/${e}/generate`,{message:t,options:n}).then(e=>e.data),generateChatStreamResponse:(e,r,i)=>({subscribe:async(a,o,s)=>{try{let c=await fetch(`${t}/chat/sessions/${e}/generate/stream`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({message:r,options:i})});if(!c.ok)throw Error(`HTTP error! status: ${c.status}`);let l=c.body?.getReader();if(!l)throw Error(`No response body reader available`);let u=new TextDecoder,d=``,f=()=>{l.read().then(({done:e,value:t})=>{if(e){s?.();return}d+=u.decode(t,{stream:!0});let r=d.split(`
2
- `);d=r.pop()||``;for(let e of r){let t=e.trim();if(t.startsWith(`data: `)){let e=t.slice(6);if(e===`[DONE]`){s?.();return}try{let t=JSON.parse(e);if(a(t),t.type===`done`||t.type===`error`){t.type===`error`?o?.(t.error):s?.();return}}catch(e){n.error(`Failed to parse SSE data:`,e)}}}f()}).catch(e=>{o?.(e instanceof Error?e:Error(String(e)))})};return f(),()=>l.cancel()}catch(e){return o?.(e instanceof Error?e:Error(String(e))),()=>{}}}}),getMessageBranches:(t,n)=>e()?i([]):r.get(`/chat/sessions/${t}/messages/${n}/branches`).then(e=>e.data),switchMessageBranch:(t,n,a)=>e()?i({}):r.post(`/chat/sessions/${t}/messages/${n}/branch`,{branchIndex:a}).then(e=>e.data),createMessageBranch:(t,n,a)=>e()?i({}):r.post(`/chat/sessions/${t}/messages/${n}/branches`,{...a}).then(e=>e.data),restoreCompaction:(e,t)=>r.post(`/chat/sessions/${e}/compaction/${t}/restore`).then(e=>e.data),getContextPolicy:()=>e()?i({windowMessages:10}):r.get(`/chat/context-policy`).then(e=>e.data),getCompactionConfig:()=>e()?i({enabled:!1,thresholdTokens:8e3,keepRecentMessages:8,model:``,prompt:``}):r.get(`/chat/compaction-config`).then(e=>e.data),setCompactionConfig:t=>e()?i({enabled:!1,thresholdTokens:8e3,keepRecentMessages:8,model:``,prompt:``},!1):r.put(`/chat/compaction-config`,t).then(e=>e.data)},te={uploadDocument:(t,n)=>{if(e())return i({id:`demo-doc-`+Date.now(),filename:t.name,fileType:t.name.endsWith(`.pdf`)?`pdf`:`txt`,size:t.size,sessionId:n,uploadedAt:Date.now()});let a=new FormData;return a.append(`document`,t),n&&a.append(`sessionId`,n),r.post(`/documents/upload`,a).then(e=>e.data)},getCollections:()=>e()?i([]):r.get(`/documents/collections`).then(e=>e.data),createCollection:e=>r.post(`/documents/collections`,{name:e}).then(e=>e.data),deleteCollection:e=>r.delete(`/documents/collections/${e}`).then(e=>e.data),setDocumentCollection:(e,t)=>r.put(`/documents/${e}/collection`,{collectionId:t}).then(e=>e.data),fetchWebpage:(t,n)=>e()?i({id:`demo-doc-`+Date.now(),filename:`demo-webpage.txt`,fileType:`txt`,size:0,sessionId:n,uploadedAt:Date.now()}):r.post(`/documents/fetch-url`,{url:t,sessionId:n}).then(e=>e.data),getDocuments:t=>{if(e())return i([]);let n=t?`/documents/session/${t}`:`/documents`;return r.get(n).then(e=>e.data)},getDocument:t=>e()?i({id:t,filename:`demo-document.pdf`,fileType:`pdf`,size:1024,content:`Demo document content...`,uploadedAt:Date.now()}):r.get(`/documents/${t}`).then(e=>e.data),searchDocuments:(t,n,a)=>e()?i([]):r.post(`/documents/search`,{query:t,sessionId:n,limit:a}).then(e=>e.data),deleteDocument:t=>e()?i(void 0):r.delete(`/documents/${t}`).then(e=>e.data),getEmbeddingStatus:()=>e()?i({available:!1,model:`nomic-embed-text`,chunksWithEmbeddings:0,totalChunks:0}):r.get(`/documents/embeddings/status`).then(e=>e.data),regenerateEmbeddings:()=>e()?i({documentsTotal:0,documentsRegenerated:0,documentsSkipped:0,chunksTotal:0,chunksEmbedded:0,model:`nomic-embed-text`,version:`v1`}):r.post(`/documents/embeddings/regenerate`).then(e=>e.data)},y={getModels:()=>e()?i([{id:`nomic-embed-text`,name:`nomic-embed-text`,description:`Ollama - Default embedding model`,provider:`ollama`,dimensions:0,isDetectedEmbedding:!0}]):r.get(`/embeddings/models`).then(e=>e.data)},b={getNotes:()=>e()?i([]):r.get(`/notes`).then(e=>e.data),getNote:e=>r.get(`/notes/${e}`).then(e=>e.data),createNote:(e,t)=>r.post(`/notes`,{title:e,content:t}).then(e=>e.data),updateNote:(e,t)=>r.put(`/notes/${e}`,t).then(e=>e.data),deleteNote:e=>r.delete(`/notes/${e}`).then(e=>e.data),getRevisions:e=>r.get(`/notes/${e}/revisions`).then(e=>e.data),restoreRevision:(e,t)=>r.post(`/notes/${e}/revisions/${t}/restore`).then(e=>e.data),getAttachments:e=>r.get(`/notes/${e}/attachments`).then(e=>e.data),uploadAttachment:(e,t)=>{let n=new FormData;return n.append(`attachment`,t),r.post(`/notes/${e}/attachments`,n,{headers:{"Content-Type":`multipart/form-data`}}).then(e=>e.data)},downloadAttachment:(e,t)=>r.get(`/notes/${e}/attachments/${t}`,{responseType:`blob`}).then(e=>e.data),deleteAttachment:(e,t)=>r.delete(`/notes/${e}/attachments/${t}`).then(e=>e.data),assist:(e,t)=>r.post(`/notes/${e}/assist`,t).then(e=>e.data)},ne={listGrants:(e,t)=>r.get(`/access/grants`,{params:{type:e,id:t}}).then(e=>e.data),createGrant:e=>r.post(`/access/grants`,e).then(e=>e.data),deleteGrant:e=>r.delete(`/access/grants/${e}`).then(e=>e.data),resolvePrincipal:e=>r.get(`/access/principals`,{params:{username:e}}).then(e=>e.data),resolveGroup:e=>r.get(`/access/principals/groups`,{params:{name:e}}).then(e=>e.data)},x={getEvents:(t,n)=>e()?i([]):r.get(`/calendar/events?from=${t}&to=${n}`).then(e=>e.data),createEvent:e=>r.post(`/calendar/events`,e).then(e=>e.data),updateEvent:(e,t)=>r.put(`/calendar/events/${e}`,t).then(e=>e.data),deleteEvent:e=>r.delete(`/calendar/events/${e}`).then(e=>e.data),getCalendars:()=>e()?i([]):r.get(`/calendar/calendars`).then(e=>e.data),createCalendar:e=>r.post(`/calendar/calendars`,e).then(e=>e.data),updateCalendar:(e,t)=>r.put(`/calendar/calendars/${e}`,t).then(e=>e.data),deleteCalendar:e=>r.delete(`/calendar/calendars/${e}`).then(e=>e.data),exportIcs:e=>r.get(e?`/calendar/export?calendarId=${encodeURIComponent(e)}`:`/calendar/export`,{responseType:`blob`}).then(e=>e.data),importIcs:(e,t)=>r.post(`/calendar/import`,{ics:e,...t?{calendarId:t}:{}}).then(e=>e.data)},S={listMine:()=>e()?i([]):r.get(`/channels`).then(e=>e.data),listPublic:()=>e()?i([]):r.get(`/channels/public`).then(e=>e.data),create:e=>r.post(`/channels`,e).then(e=>e.data),openDm:e=>r.post(`/channels/dm`,{userId:e}).then(e=>e.data),get:e=>r.get(`/channels/${e}`).then(e=>e.data),update:(e,t)=>r.patch(`/channels/${e}`,t).then(e=>e.data),delete:e=>r.delete(`/channels/${e}`).then(e=>e.data),join:e=>r.post(`/channels/${e}/join`).then(e=>e.data),listMembers:e=>r.get(`/channels/${e}/members`).then(e=>e.data),addMember:(e,t)=>r.post(`/channels/${e}/members`,{userId:t}).then(e=>e.data),removeMember:(e,t)=>r.delete(`/channels/${e}/members/${encodeURIComponent(t)}`).then(e=>e.data),listMessages:(e,t={})=>{let n=new URLSearchParams;t.before&&n.set(`before`,t.before),t.after&&n.set(`after`,t.after),t.limit&&n.set(`limit`,String(t.limit));let i=n.size>0?`?${n.toString()}`:``;return r.get(`/channels/${e}/messages${i}`).then(e=>e.data)},postMessage:(e,t)=>r.post(`/channels/${e}/messages`,t).then(e=>e.data),listPins:e=>r.get(`/channels/${e}/pins`).then(e=>e.data),markRead:e=>r.post(`/channels/${e}/read`,{}).then(e=>e.data),thread:e=>r.get(`/channels/messages/${e}/thread`).then(e=>e.data),editMessage:(e,t)=>r.patch(`/channels/messages/${e}`,{content:t}).then(e=>e.data),deleteMessage:e=>r.delete(`/channels/messages/${e}`).then(e=>e.data),setPinned:(e,t)=>r.post(`/channels/messages/${e}/pin`,{pinned:t}).then(e=>e.data),addReaction:(e,t)=>r.post(`/channels/messages/${e}/reactions`,{emoji:t}).then(e=>e.data),removeReaction:(e,t)=>r.delete(`/channels/messages/${e}/reactions/${encodeURIComponent(t)}`).then(e=>e.data),uploadAttachment:(e,t)=>{let n=new FormData;return n.append(`attachment`,t),r.post(`/channels/${e}/attachments`,n,{headers:{"Content-Type":`multipart/form-data`}}).then(e=>e.data)},downloadAttachment:e=>r.get(`/channels/attachments/${e}`,{responseType:`blob`}).then(e=>e.data)},C={list:(t={})=>{if(e())return i([]);let n=new URLSearchParams;t.before&&n.set(`before`,String(t.before)),t.limit&&n.set(`limit`,String(t.limit));let a=n.size>0?`?${n.toString()}`:``;return r.get(`/notifications${a}`).then(e=>e.data)},unreadCount:()=>e()?i({count:0}):r.get(`/notifications/unread-count`).then(e=>e.data),markRead:e=>r.post(`/notifications/${e}/read`).then(e=>e.data),markAllRead:()=>r.post(`/notifications/read-all`).then(e=>e.data),delete:e=>r.delete(`/notifications/${e}`).then(e=>e.data)},w={getAutomations:()=>e()?i([]):r.get(`/automations`).then(e=>e.data),createAutomation:e=>r.post(`/automations`,e).then(e=>e.data),updateAutomation:(e,t)=>r.put(`/automations/${e}`,t).then(e=>e.data),deleteAutomation:e=>r.delete(`/automations/${e}`).then(e=>e.data),pauseAutomation:e=>r.post(`/automations/${e}/pause`).then(e=>e.data),resumeAutomation:e=>r.post(`/automations/${e}/resume`).then(e=>e.data),runAutomationNow:e=>r.post(`/automations/${e}/run`).then(e=>e.data),rotateWebhookSecret:e=>r.post(`/automations/${e}/webhook-secret`).then(e=>e.data),disableWebhook:e=>r.delete(`/automations/${e}/webhook-secret`).then(e=>e.data),getOccurrences:(t,n)=>e()?i([]):r.get(`/automations/occurrences?from=${t}&to=${n}`).then(e=>e.data),getRuns:t=>{if(e())return i([]);let n=new URLSearchParams;t?.automationId&&n.set(`automationId`,t.automationId),t?.from!==void 0&&n.set(`from`,String(t.from)),t?.to!==void 0&&n.set(`to`,String(t.to));let a=n.size>0?`?${n.toString()}`:``;return r.get(`/automations/runs${a}`).then(e=>e.data)},getRunsSummary:()=>e()?i({unseenCount:0,days:Array.from({length:30},()=>({succeeded:0,failed:0}))}):r.get(`/automations/runs/summary`).then(e=>e.data),markRunsSeen:()=>r.post(`/automations/runs/seen`).then(e=>e.data)},T={getConfig:()=>e()?i({enabled:!1,available:!1,allowed:!1}):r.get(`/search/config`).then(e=>e.data),getAccess:()=>e()?i({mode:`admins`,allowed:!1}):r.get(`/search/access`).then(e=>e.data),setAccess:t=>e()?i({mode:t}):r.put(`/search/access`,{mode:t}).then(e=>e.data),setConfig:(t,n,a)=>e()?i({enabled:t,available:t,allowed:!1,url:n}):r.put(`/search/config`,{enabled:t,url:n,...a??{}}).then(e=>e.data),searchApp:t=>e()?i({sessions:[],notes:[],documents:[]}):r.get(`/search/app`,{params:{q:t}}).then(e=>e.data),test:()=>e()?i({ok:!1,results:0},!1):r.post(`/search/test`).then(e=>e.data)},E={getModels:t=>e()?i([{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}]):r.get(`/huggingface-hub/models`,{params:t}).then(e=>e.data),getTrending:t=>e()?i([]):r.get(`/huggingface-hub/trending`,{params:t}).then(e=>e.data),getModel:(t,n)=>e()?i({id:`${t}/${n}`,modelId:`${t}/${n}`,author:t,downloads:0,likes:0,tags:[],gated:!1}):r.get(`/huggingface-hub/models/${t}/${n}`).then(e=>e.data),getTasks:()=>e()?i([`text-generation`,`text-to-speech`,`text-to-image`]):r.get(`/huggingface-hub/tasks`).then(e=>e.data),clearCache:()=>e()?i(!0):r.post(`/huggingface-hub/cache/clear`).then(e=>e.data),getGgufFiles:(t,n)=>e()?i([{filename:`model-Q4_K_M.gguf`,size:45e8,sizeFormatted:`4.19 GB`,quantization:`Q4_K_M`,url:`https://huggingface.co/${t}/${n}/resolve/main/model-Q4_K_M.gguf`,ollamaCommand:`hf.co/${t}/${n}:Q4_K_M`}]):r.get(`/huggingface-hub/models/${t}/${n}/gguf`).then(e=>e.data),hasGgufFiles:(t,n)=>e()?i({hasGguf:!1,count:0}):r.get(`/huggingface-hub/models/${t}/${n}/has-gguf`).then(e=>e.data)};function D(e,t){return t?t.aborted?Promise.reject(t.reason??new DOMException(`The operation was aborted`,`AbortError`)):new Promise((n,r)=>{let i=()=>{r(t.reason??new DOMException(`The operation was aborted`,`AbortError`))};t.addEventListener(`abort`,i,{once:!0}),e.then(e=>{t.removeEventListener(`abort`,i),n(e)},e=>{t.removeEventListener(`abort`,i),r(e)})}):e}var re={getModels:()=>e()?i([{model:`gpt-image-2`,plugin:`openai`,config:{sizes:[`1024x1024`,`1536x1024`,`1024x1536`],default_size:`1024x1024`,qualities:[`auto`,`low`,`medium`,`high`],default_quality:`auto`}}]):r.get(`/image-gen/models`).then(e=>e.data),getPlugins:()=>e()?i([{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`}}]):r.get(`/image-gen/plugins`).then(e=>e.data),getConfig:t=>e()?i({sizes:[`1024x1024`,`1536x1024`,`1024x1536`],default_size:`1024x1024`,qualities:[`auto`,`low`,`medium`,`high`],default_quality:`auto`}):r.get(`/image-gen/config/${t}`).then(e=>e.data),generate:(t,n)=>e()?D(i({images:[{url:`https://placehold.co/1024x1024/purple/white?text=Demo+Image`,revised_prompt:t.prompt}],model:t.model,pluginId:t.pluginId}),n):r.post(`/image-gen/generate`,t,{signal:n}).then(e=>e.data),getGallery:t=>e()?i({images:[],total:0}):r.get(`/image-gen/gallery`,{params:t}).then(e=>e.data),getGalleryImage:t=>e()?i({id:t,userId:`demo`,prompt:`Demo image prompt`,model:`dall-e-3`,imageData:`https://placehold.co/1024x1024/purple/white?text=Demo`,createdAt:Date.now()}):r.get(`/image-gen/gallery/${t}`).then(e=>e.data),deleteGalleryImage:t=>e()?i(void 0):r.delete(`/image-gen/gallery/${t}`).then(e=>e.data)},O={connected:!1,baseUrl:`http://127.0.0.1:8766`,dashboardUrl:`http://127.0.0.1:8766/dashboard`,error:`Libre Claw daemon is not connected in demo mode.`},ie={access:()=>e()?i({enabled:!1,lockedByEnv:!1}):r.get(`/libre-claw/access`).then(e=>e.data),setAccess:t=>e()?i({enabled:t,lockedByEnv:!1}):r.put(`/libre-claw/access`,{enabled:t}).then(e=>e.data),status:()=>e()?i(O):r.get(`/libre-claw/status`).then(e=>e.data),dashboard:()=>e()?i({url:O.dashboardUrl}):r.get(`/libre-claw/dashboard`).then(e=>e.data),currentModel:()=>e()?i({provider:`openrouter`,model:`openrouter/auto`}):r.get(`/libre-claw/config/model`).then(e=>e.data),updateModel:(t,n,a=!1)=>e()?i({provider:t,model:n,persist_global:a}):r.patch(`/libre-claw/config/model`,{provider:t,model:n,persist_global:a}).then(e=>e.data),currentFallback:()=>e()?i({enabled:!1,routes:[]}):r.get(`/libre-claw/config/fallback`).then(e=>e.data),updateFallback:t=>e()?i(t):r.patch(`/libre-claw/config/fallback`,t).then(e=>e.data),updateTheme:(t,n=!0)=>e()?i({theme:t,label:t,persist_global:n}):r.patch(`/libre-claw/config/theme`,{theme:t,persist_global:n}).then(e=>e.data),usage:(t=``,n=250)=>{let a=new URLSearchParams({limit:String(n)});return t&&a.set(`provider`,t),e()?i({summary:{},records:[],text:``}):r.get(`/libre-claw/usage?${a.toString()}`).then(e=>e.data)},listRuns:(t=20)=>e()?i({runs:[]}):r.get(`/libre-claw/runs?limit=${t}`).then(e=>e.data),startRun:t=>{if(e()){let e=new Date().toISOString();return i({run:{run_id:`demo-${Date.now()}`,state:`queued`,title:t.message.slice(0,80)||`Libre Claw demo run`,kind:t.kind||`chat`,provider:t.provider||`openrouter`,model:t.model||`openrouter/auto`,working_directory:``,created_at:e,updated_at:e}})}return r.post(`/libre-claw/runs`,t).then(e=>e.data)},getRun:t=>e()?i({run_id:t}):r.get(`/libre-claw/runs/${encodeURIComponent(t)}`).then(e=>e.data),getEvents:(t,n=0)=>e()?i({events:[]}):r.get(`/libre-claw/runs/${encodeURIComponent(t)}/events?after=${n}`).then(e=>e.data),cancelRun:t=>e()?i({run_id:t,cancelled:!0}):r.post(`/libre-claw/runs/${encodeURIComponent(t)}/cancel`).then(e=>e.data),resolvePermission:(t,n,a)=>e()?i({run_id:t,tool_call_id:n,resolution:a}):r.post(`/libre-claw/runs/${encodeURIComponent(t)}/permissions/${encodeURIComponent(n)}`,{resolution:a}).then(e=>e.data),listAutomations:(t=50)=>e()?i({automations:[]}):r.get(`/libre-claw/automations?limit=${t}`).then(e=>e.data),createAutomation:t=>e()?i({...t,automation_id:`demo-${Date.now()}`}):r.post(`/libre-claw/automations`,t).then(e=>e.data),updateAutomation:(t,n)=>e()?i({...n,automation_id:t}):r.patch(`/libre-claw/automations/${encodeURIComponent(t)}`,n).then(e=>e.data),pauseAutomation:t=>e()?i({automation_id:t,status:`paused`}):r.post(`/libre-claw/automations/${encodeURIComponent(t)}/pause`).then(e=>e.data),resumeAutomation:t=>e()?i({automation_id:t,status:`active`}):r.post(`/libre-claw/automations/${encodeURIComponent(t)}/resume`).then(e=>e.data),runAutomationNow:t=>e()?i({automation_id:t,run:!0}):r.post(`/libre-claw/automations/${encodeURIComponent(t)}/run`).then(e=>e.data),deleteAutomation:t=>e()?i({automation_id:t,deleted:!0}):r.delete(`/libre-claw/automations/${encodeURIComponent(t)}`).then(e=>e.data)},k={getModels:()=>r.get(`/media/models`).then(e=>e.data),generateAudio:(e,t)=>r.post(`/media/audio/generate`,e,{signal:t}).then(e=>e.data),cloneVoice:(e,t)=>{let n=new FormData;return n.set(`model`,e.model),n.set(`pluginId`,e.pluginId),n.set(`input`,e.input),n.set(`reference_audio`,e.referenceAudio),e.referenceText&&n.set(`reference_text`,e.referenceText),e.responseFormat&&n.set(`response_format`,e.responseFormat),e.saveVoiceName&&n.set(`saveVoiceName`,e.saveVoiceName),e.consentToStore&&n.set(`consentToStore`,`true`),e.consentTtlDays!==void 0&&n.set(`consentTtlDays`,String(e.consentTtlDays)),r.post(`/media/audio/voice-clone`,n,{signal:t}).then(e=>e.data)},generateSound:(e,t)=>r.post(`/media/sound/generate`,e,{signal:t}).then(e=>e.data),generateVideo:(e,t)=>r.post(`/media/video/generate`,e,{signal:t}).then(e=>e.data),getVideoJob:(e,t)=>r.get(`/media/video/jobs/${e}`,{signal:t}).then(e=>e.data),listVideoJobs:e=>r.get(`/media/video/jobs`,{params:e}).then(e=>e.data),resumeVideoJob:(e,t)=>r.post(`/media/video/jobs/${encodeURIComponent(e)}/resume`,void 0,{signal:t}).then(e=>e.data),cancelVideoJob:e=>r.delete(`/media/video/jobs/${encodeURIComponent(e)}`).then(e=>e.data),getGallery:e=>r.get(`/media/gallery`,{params:e}).then(e=>e.data),deleteGalleryItem:e=>r.delete(`/media/gallery/${e}`).then(e=>e.data),editImage:(e,t)=>{let n=new FormData;n.set(`model`,e.model),n.set(`pluginId`,e.pluginId),n.set(`prompt`,e.prompt),e.size&&n.set(`size`,e.size),e.sourceMediaId&&n.set(`sourceMediaId`,e.sourceMediaId);for(let t of e.images??[])n.append(`images`,t);return e.mask&&n.append(`mask`,e.mask,`mask.png`),r.post(`/media/image/edit`,n,{signal:t}).then(e=>e.data)},getGalleryContent:e=>r.get(`/media/gallery/${e}/content`,{responseType:`blob`}).then(e=>e.data)},A=(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()},j=`libre:models-changed`,M=()=>{window.dispatchEvent(new Event(j))},N={checkHealth:()=>e()?i({status:`offline`},!1):r.get(`/ollama/health`).then(e=>e.data),getSettings:()=>e()?i({enabled:!0,baseUrl:`http://localhost:11434`}):r.get(`/ollama/settings`).then(e=>e.data),updateSettings:t=>e()?i({enabled:!0,baseUrl:`http://localhost:11434`}):r.put(`/ollama/settings`,t).then(e=>e.data),getModels:()=>e()?i(f):r.get(`/ollama/models`).then(e=>e.data),getModelAccess:()=>e()?i({mode:`admins`,allowed:!1}):r.get(`/ollama/models/access`).then(e=>e.data),setModelAccess:t=>e()?i({mode:t}):r.put(`/ollama/models/access`,{mode:t}).then(e=>e.data),getModelVisibility:()=>e()?i({hidden:[],order:[],starred:[],metadata:{}}):r.get(`/ollama/models/visibility`).then(e=>e.data),setModelVisibility:t=>e()?i({hidden:t.hidden??[],order:t.order??[],starred:t.starred??[],metadata:t.metadata??{}}):r.put(`/ollama/models/visibility`,t).then(e=>e.data),pullModel:t=>e()?i(null,!1):r.post(`/ollama/models/pull`,{name:t}).then(e=>(M(),e.data)),pullModelStream:(n,r,i,a)=>{if(e()){let e=0,t=setInterval(()=>{e+=Math.random()*20,e>=100?(e=100,r({status:`success`,total:100,completed:100,percent:100}),clearInterval(t),setTimeout(()=>{M(),i()},500)):r({status:`pulling`,total:100,completed:e,percent:Math.round(e)})},1e3);return()=>clearInterval(t)}let o=new URLSearchParams({model:n});return A(`${t}/ollama/pull/stream?${o.toString()}`,e=>{switch(e.type){case`progress`:r({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`:M(),i();break;case`error`:a(String(e.error||`Model pull failed`))}},a)},deleteModel:t=>e()?i(null,!1):r.delete(`/ollama/models`,{params:{name:t}}).then(e=>(M(),e.data)),getModelDefaults:e=>r.get(`/ollama/models/${encodeURIComponent(e)}/defaults`).then(e=>e.data),showModel:(t,n=!1)=>{if(e()){let e=f.find(e=>e.name===t);return i(e||null,!!e)}return r.get(`/ollama/models/show`,{params:{name:t,verbose:n}}).then(e=>e.data)},createModel:t=>e()?i(null,!1):r.post(`/ollama/models`,t).then(e=>(M(),e.data)),copyModel:(t,n)=>e()?i(null,!1):r.post(`/ollama/models/copy`,{source:t,destination:n}).then(e=>(M(),e.data)),pushModel:t=>e()?i(null,!1):r.post(`/ollama/models/push`,{name:t}).then(e=>e.data),pullAllModels:()=>e()?i(null,!1):r.post(`/ollama/models/pull-all`).then(e=>e.data),pullAllModelsStream:(n,r,i)=>{if(e()){let e=f,t=0,i=setInterval(()=>{t++,t<=e.length&&n({current:t,total:e.length,modelName:e[t-1]?.name||`demo-model`,status:Math.random()>.1?`success`:`error`,error:Math.random()>.1?void 0:`Demo error`}),t>=e.length&&(clearInterval(i),setTimeout(()=>{M(),r()},500))},1e3);return}A(`${t}/ollama/models/pull-all/stream`,e=>{switch(e.type){case`progress`:{let t=e.status===`success`||e.status===`error`?e.status:`starting`;n({current:typeof e.current==`number`?e.current:0,total:typeof e.total==`number`?e.total:0,modelName:typeof e.modelName==`string`?e.modelName:`unknown`,status:t,error:typeof e.error==`string`?e.error:void 0});break}case`complete`:M(),r();break;case`error`:i(String(e.error||`Model update failed`))}},i)},generateEmbeddings:t=>e()?i({embeddings:[[]]},!1):r.post(`/ollama/embed`,t).then(e=>e.data),listRunningModels:()=>e()?i([]):r.get(`/ollama/running`).then(e=>e.data),unloadModel:t=>e()?i(null):r.post(`/ollama/models/unload`,{name:t}).then(e=>e.data),unloadAllModels:()=>e()?i(null):r.post(`/ollama/models/unload-all`).then(e=>e.data),getVersion:()=>e()?i({version:`demo-mode`},!1):r.get(`/ollama/version`).then(e=>e.data),chatCompletion:t=>e()?i({message:{content:`Demo response`,role:`assistant`}},!1):r.post(`/ollama/chat`,t).then(e=>e.data),checkBlobExists:t=>e()?Promise.resolve(!1):r.head(`/ollama/blobs/${t}`).then(()=>!0).catch(()=>!1),pushBlob:(t,n)=>e()?i(null,!1):r.post(`/ollama/blobs/${t}`,n,{headers:{"Content-Type":`application/octet-stream`}}).then(e=>e.data),generateLegacyEmbeddings:t=>e()?i({embedding:[]},!1):r.post(`/ollama/embeddings`,t).then(e=>e.data),getLibraryModels:t=>{if(e())return t?.category===`cloud`?i([{name:`gpt-oss:cloud`,description:`Demo cloud model using Ollama cloud naming`,category:`cloud`,sizes:[`cloud`],pulls:`Cloud`,tags:[`cloud`]}]):i([{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 n=new URLSearchParams;t?.search&&n.set(`search`,t.search),t?.sort&&n.set(`sort`,t.sort),t?.category&&n.set(`category`,t.category);let a=n.toString();return r.get(`/ollama/library${a?`?${a}`:``}`).then(e=>e.data)}},P=[[`#2563eb`,`#7c3aed`],[`#0891b2`,`#2563eb`],[`#0f766e`,`#2563eb`],[`#be123c`,`#7c3aed`],[`#ff7b52`,`#dc2626`]],F=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)},I=e=>e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`),L=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`},R=(e,t=128)=>{let n=e.trim()||`AI Persona`,r=F(n),[i,a]=P[r%P.length],o=I(L(n)),s=`persona-avatar-${r}-${t}`,c=t>=96?44:24,l=`
3
- <svg xmlns="http://www.w3.org/2000/svg" width="${t}" height="${t}" viewBox="0 0 ${t} ${t}" role="img" aria-label="${I(n)} avatar">
4
- <defs>
5
- <linearGradient id="${s}" x1="0" y1="0" x2="1" y2="1">
6
- <stop offset="0%" stop-color="${i}" />
7
- <stop offset="100%" stop-color="${a}" />
8
- </linearGradient>
9
- </defs>
10
- <rect width="${t}" height="${t}" rx="${Math.round(t*.22)}" fill="url(#${s})" />
11
- <circle cx="${t*.22}" cy="${t*.22}" r="${t*.26}" fill="rgba(255,255,255,0.16)" />
12
- <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>
13
- </svg>
14
- `;return`data:image/svg+xml;charset=UTF-8,${encodeURIComponent(l)}`},z=(e,t=128)=>e.avatar?.trim()||R(e.name,t),B=(e,t,n=128)=>{e.onerror=null,e.src=R(t,n)},V={getPersonas:()=>{if(e()){let e=[{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:R(`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:R(`Research Assistant`,128),created_at:Date.now()-1728e5,updated_at:Date.now()-1728e5}];return i(e)}return r.get(`/personas`).then(e=>e.data)},getPersona:t=>e()?i({id:t,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()}):r.get(`/personas/${t}`).then(e=>e.data),createPersona:t=>{if(e()){let e={id:`demo-`+Date.now(),user_id:`default`,...t,created_at:Date.now(),updated_at:Date.now()};return i(e)}return r.post(`/personas`,t).then(e=>e.data)},updatePersona:(t,n)=>{if(e()){let e={id:t,user_id:`default`,name:n.name||`Updated Sample Assistant`,description:n.description,model:n.model||`llama3.2:latest`,parameters:n.parameters||{temperature:.7,top_p:.9,context_window:4096,system_prompt:`You are a helpful assistant.`},avatar:n.avatar,background:n.background,created_at:Date.now()-864e5,updated_at:Date.now()};return i(e)}return r.put(`/personas/${t}`,n).then(e=>e.data)},deletePersona:t=>e()?i(void 0):r.delete(`/personas/${t}`).then(e=>e.data),exportPersona:t=>{if(e()){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 r.get(`/personas/${t}/export`).then(e=>e.data)},importPersona:t=>{if(e()){let e={id:`demo-imported-`+Date.now(),user_id:`default`,name:t.name,description:t.description,model:t.model,parameters:t.params,avatar:t.avatar,background:t.background,created_at:Date.now(),updated_at:Date.now(),embedding_model:t.embedding_model,memory_settings:t.memory_settings,mutation_settings:t.mutation_settings};return i(e)}return r.post(`/personas/import`,t).then(e=>e.data)},getPersonasCount:()=>e()?i({count:2}):r.get(`/personas/stats/count`).then(e=>e.data),getDefaultParameters:()=>e()?i({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}):r.get(`/personas/defaults/parameters`).then(e=>e.data),getMemoryStatus:t=>e()?i({status:`active`,memory_count:42,last_backup:Date.now()-864e5,size_mb:2.3}):r.get(`/personas/${t}/memory/status`).then(e=>e.data),wipeMemories:t=>e()?i({deleted_count:42}):r.delete(`/personas/${t}/memory`).then(e=>e.data),backupPersona:t=>{if(e()){let e=JSON.stringify({persona_id:t,backup_date:new Date().toISOString(),data:`demo backup data`});return Promise.resolve(new Blob([e],{type:`application/json`}))}return r.get(`/personas/${t}/backup`,{responseType:`blob`}).then(e=>e.data)},exportPersonaDNA:t=>{if(e()){let e=JSON.stringify({persona_id:t,export_date:new Date().toISOString(),dna:`demo DNA data`,memories:[],learned_behaviors:{}});return Promise.resolve(new Blob([e],{type:`application/json`}))}return r.get(`/personas/${t}/export/dna`,{responseType:`blob`}).then(e=>e.data)},importPersonaDNA:t=>{if(e()){let e={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()};return i(e)}let n=new FormData;return n.append(`dnaFile`,t),r.post(`/personas/import/dna`,n).then(e=>e.data)},downloadPersona:async(e,t)=>{try{let n=await V.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 n.error(`Error while downloading persona:`,e),Error(`Failed to download persona: ${e instanceof Error?e.message:String(e)}`)}}},H={list:()=>e()?i([]):r.get(`/prompts`).then(e=>e.data),get:e=>r.get(`/prompts/${e}`).then(e=>e.data),create:e=>r.post(`/prompts`,e).then(e=>e.data),update:(e,t)=>r.put(`/prompts/${e}`,t).then(e=>e.data),remove:e=>r.delete(`/prompts/${e}`).then(e=>e.data),versions:e=>r.get(`/prompts/${e}/versions`).then(e=>e.data),rollback:(e,t)=>r.post(`/prompts/${e}/rollback`,{version:t}).then(e=>e.data),export:e=>r.get(`/prompts/${e}/export`).then(e=>e.data),import:(e,t)=>r.post(`/prompts/import`,{prompt:e,overwriteSlug:t?.overwriteSlug===!0}).then(e=>e.data)},U={list:()=>e()?i([]):r.get(`/skills`).then(e=>e.data),get:e=>r.get(`/skills/${e}`).then(e=>e.data),create:e=>r.post(`/skills`,e).then(e=>e.data),update:(e,t)=>r.put(`/skills/${e}`,t).then(e=>e.data),remove:e=>r.delete(`/skills/${e}`).then(e=>e.data),versions:e=>r.get(`/skills/${e}/versions`).then(e=>e.data),rollback:(e,t)=>r.post(`/skills/${e}/rollback`,{version:t}).then(e=>e.data),export:e=>r.get(`/skills/${e}/export`).then(e=>e.data),importFromUrl:(e,t)=>r.post(`/skills/import-url`,{source:e,overwriteSlug:t?.overwriteSlug===!0}).then(e=>e.data),import:(e,t)=>r.post(`/skills/import`,{skill:e,overwriteSlug:t?.overwriteSlug===!0}).then(e=>e.data),listFiles:e=>r.get(`/skills/${e}/files`).then(e=>e.data),getFile:(e,t)=>r.get(`/skills/${e}/files/content`,{params:{path:t}}).then(e=>e.data),putFile:(e,t,n)=>r.put(`/skills/${e}/files`,{path:t,content:n}).then(e=>e.data),deleteFile:(e,t)=>r.delete(`/skills/${e}/files`,{params:{path:t}}).then(e=>e.data)},ae={getCatalog:()=>e()?i({available:!1,tools:[]}):r.get(`/tools/catalog`).then(e=>e.data),listServers:()=>e()?i([]):r.get(`/tools/servers`).then(e=>e.data),getServer:e=>r.get(`/tools/servers/${e}`).then(e=>e.data),registerServer:e=>r.post(`/tools/servers`,e).then(e=>e.data),updateServer:(e,t)=>r.put(`/tools/servers/${e}`,t).then(e=>e.data),deleteServer:e=>r.delete(`/tools/servers/${e}`).then(e=>e.data),refreshServer:e=>r.post(`/tools/servers/${e}/refresh`).then(e=>e.data),overrideServerTool:(e,t,n)=>r.put(`/tools/servers/${e}/tools/${t}`,n).then(e=>e.data),setCredential:(e,t)=>r.put(`/tools/servers/${e}/credential`,{secret:t}).then(e=>e.data),deleteCredential:e=>r.delete(`/tools/servers/${e}/credential`).then(e=>e.data),listApprovals:()=>r.get(`/tools/approvals`).then(e=>e.data),decideApproval:(e,t,n)=>r.post(`/tools/approvals/${e}`,{approve:t,scope:n}).then(e=>e.data),revokeApproval:e=>r.delete(`/tools/approvals/${e}`).then(e=>e.data),getAccessMode:()=>r.get(`/tools/access`).then(e=>e.data),setAccessMode:e=>r.put(`/tools/access`,{mode:e}).then(e=>e.data)},W=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:[]}},G={getUsage:(t=30)=>e()?i(W(t)):r.get(`/plugins/usage`,{params:{days:t}}).then(e=>e.data),getAllPlugins:()=>e()?i([]):r.get(`/plugins`).then(e=>e.data),discoverModels:t=>e()?i({models:[],outcome:`unavailable`}):r.post(`/plugins/discover/${encodeURIComponent(t)}`).then(e=>e.data),uploadPlugin:t=>{if(e())return i({},!1);let n=new FormData;return n.append(`plugin`,t),r.post(`/plugins/upload`,n).then(e=>e.data)},probeEndpoint:(t,n)=>e()?i({reachable:!1,models:[],kind:n}):r.post(`/plugins/probe-endpoint`,{baseUrl:t,kind:n}).then(e=>e.data),installPlugin:t=>e()?i({},!1):r.post(`/plugins/install`,t).then(e=>e.data),updatePlugin:(t,n)=>e()?i({},!1):r.put(`/plugins/${t}`,n).then(e=>e.data),deletePlugin:t=>e()?i(void 0):r.delete(`/plugins/${t}`).then(e=>e.data),activatePlugin:t=>e()?i(!1,!1):r.post(`/plugins/activate/${t}`).then(e=>e.data),deactivatePlugin:t=>{if(e())return i(void 0);let n=t?`/plugins/deactivate/${t}`:`/plugins/deactivate`;return r.post(n).then(e=>e.data)},getActivePlugin:()=>e()?i(null):r.get(`/plugins/active`).then(e=>e.data),getPluginStatus:()=>e()?i([]):r.get(`/plugins/status`).then(e=>e.data),exportPlugin:t=>e()?Promise.resolve(new Blob([`{}`],{type:`application/json`})):r.get(`/plugins/${t}/export`,{responseType:`blob`}).then(e=>e.data),getCredentials:()=>e()?i([]):r.get(`/plugins/credentials/all`).then(e=>e.data),setApiKey:(t,n)=>e()?i(!1,!1):r.post(`/plugins/${t}/credentials`,{api_key:n}).then(e=>e.data),deleteApiKey:t=>e()?i(!1,!1):r.delete(`/plugins/${t}/credentials`).then(e=>e.data),checkApiKey:t=>e()?i(!1):r.get(`/plugins/${t}/credentials/check`).then(e=>e.data),getVariables:t=>e()?i({}):r.get(`/plugins/${t}/variables`).then(e=>e.data),setVariables:(t,n,a=[])=>e()?i(!0):r.put(`/plugins/${t}/variables`,{variables:n,unset:a}).then(e=>e.data),resetVariables:t=>e()?i(!0):r.delete(`/plugins/${t}/variables`).then(e=>e.data)},K=`libre-webui-user-data`,q=`libre-webui-export`,J=new Set([2,3]),Y=class extends Error{code;version;constructor(e,t,n){super(t),this.code=e,this.version=n,this.name=`PortableArchiveParseError`}};function X(e){return typeof e!=`object`||!e?JSON.stringify(e):Array.isArray(e)?`[${e.map(e=>X(e)).join(`,`)}]`:`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${X(e[t])}`).join(`,`)}}`}async function oe(e){let{integrity:t,...n}=e,r=JSON.parse(JSON.stringify(n)),i=await globalThis.crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(X(r)));return Array.from(new Uint8Array(i),e=>e.toString(16).padStart(2,`0`)).join(``)}function se(e){let t;try{t=JSON.parse(e)}catch{throw new Y(`invalidJson`,`Portable archive is not valid JSON.`)}if(!t||typeof t!=`object`||Array.isArray(t))throw new Y(`objectRequired`,`Portable archive must contain a JSON object.`);let n=t;if(n.format===K){if(!J.has(n.version))throw new Y(`unsupportedVersion`,`Unsupported portable archive version ${String(n.version)}.`,n.version);return n}if(n.format===q)return n;throw new Y(`unrecognized`,`This file is not a Libre WebUI portable archive.`)}var ce=[{key:`accountAndAuthentication`,reason:`Account and authentication records are not portable.`},{key:`providerSecrets`,reason:`Provider credentials must be configured again.`},{key:`voiceProfiles`,reason:`Voice reference audio is biometric data and is not portable.`},{key:`personasAndMemory`,reason:`Personas and persona memory are not part of archive version 3.`},{key:`generatedMedia`,reason:`Generated media library files are not portable.`},{key:`work`,reason:`Work data and volumes require a system backup.`},{key:`derivedEmbeddings`,reason:`Document embeddings can be regenerated after import.`},{key:`noteHistoryAndAttachments`,reason:`Note revision history and note attachments are not part of archive version 3.`}];function Z(e,t){if(typeof File<`u`&&e instanceof File){let n=new FormData;return n.append(`archive`,e),n.append(`strategy`,t),n}return{data:e,strategy:t}}var le={getDefaultTheme:()=>e()?i({theme:h.theme}):r.get(`/preferences/default-theme`).then(e=>e.data),setDefaultTheme:t=>e()?i({theme:t}):r.put(`/preferences/default-theme`,{theme:t}).then(e=>e.data),getPreferences:()=>e()?i(_()):r.get(`/preferences`).then(e=>e.data),updatePreferences:t=>e()?i(v(t)):r.put(`/preferences`,t).then(e=>e.data),setDefaultModel:(t,n,a)=>e()?i(v({defaultModel:t,defaultProviderType:n,defaultProviderId:n===`plugin`||n===`agent`?a:null})):r.put(`/preferences/default-model`,{model:t,providerType:n,providerId:a}).then(e=>e.data),setSystemMessage:t=>e()?i(v({systemMessage:t})):r.put(`/preferences/system-message`,{message:t}).then(e=>e.data),setGenerationOptions:t=>e()?i(v({generationOptions:t})):r.put(`/preferences/generation-options`,t).then(e=>e.data),setModelGenerationOptions:(e,t)=>r.put(`/preferences/model-generation-options`,{model:e,options:t}).then(e=>e.data),resetGenerationOptions:()=>e()?i(v({generationOptions:h.generationOptions})):r.post(`/preferences/generation-options/reset`).then(e=>e.data),setEmbeddingSettings:t=>e()?i(v({embeddingSettings:t})):r.put(`/preferences/embedding-settings`,t).then(e=>e.data),resetEmbeddingSettings:()=>e()?i(v({embeddingSettings:h.embeddingSettings})):r.post(`/preferences/embedding-settings/reset`).then(e=>e.data),exportData:async()=>{if(e()){let e={format:`libre-webui-user-data`,version:3,exportedAt:new Date().toISOString(),preferences:_(),sessionFolders:[],sessions:[],notes:[],knowledgeCollections:[],documents:[],exclusions:ce};return i({...e,integrity:{algorithm:`sha256`,canonicalization:`libre-json-sort-v1`,digest:await oe(e)}})}return r.get(`/preferences/export`).then(e=>e.data)},preflightImport:(t,n)=>e()?i({valid:!0,format:`libre-webui-user-data`,version:3,strategy:n,incoming:{sessionFolders:0,sessions:0,messages:0,notes:0,knowledgeCollections:0,documents:0,documentChunks:0},result:{format:`libre-webui-user-data`,version:3,strategy:n,sessionFolders:{imported:0,overwritten:0,skipped:0},sessions:{imported:0,overwritten:0,skipped:0},notes:{imported:0,overwritten:0,skipped:0},knowledgeCollections:{imported:0,overwritten:0,skipped:0},documents:{imported:0,overwritten:0,skipped:0},remappedIds:0,warnings:[],exclusions:[]},warnings:[],exclusions:[]}):r.post(`/preferences/import/preflight`,Z(t,n)).then(e=>e.data),importData:(t,n=`skip`)=>e()?i({format:`libre-webui-user-data`,version:3,strategy:n,preferences:{imported:!0,mode:n===`overwrite`?`replace`:`merge`},sessionFolders:{imported:0,overwritten:0,skipped:0},sessions:{imported:0,overwritten:0,skipped:0},notes:{imported:0,overwritten:0,skipped:0},knowledgeCollections:{imported:0,overwritten:0,skipped:0},documents:{imported:0,overwritten:0,skipped:0},remappedIds:0,warnings:[],exclusions:[]}):r.post(`/preferences/import`,Z(t,n)).then(e=>e.data)},ue={getDiagnostics:()=>r.get(`/system`).then(e=>e.data)};function Q(e,t,n){if(t)return e.find(e=>e.model===t&&(!n||e.plugin===n))}function de(e,t,n){return Q(e,t,n)||e[0]}function fe(e){return`${encodeURIComponent(e.plugin)}::${encodeURIComponent(e.model)}`}var $={getModels:()=>e()?i([{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}}]):r.get(`/tts/models`).then(e=>e.data),getPlugins:()=>e()?i([{id:`openai`,name:`OpenAI GPT`,models:[`tts-1`,`tts-1-hd`],config:{voices:[`alloy`,`echo`,`fable`,`onyx`,`nova`,`shimmer`],default_voice:`alloy`}}]):r.get(`/tts/plugins`).then(e=>e.data),getVoiceProfiles:(t={})=>e()?i([]):r.get(`/tts/voice-profiles`,{params:{pluginId:t.pluginId||void 0,model:t.model||void 0}}).then(e=>e.data),revokeVoiceProfile:async t=>e()?{success:!1,error:`Demo mode`}:(await r.post(`/tts/voice-profiles/${encodeURIComponent(t)}/revoke`)).data,deleteVoiceProfile:async t=>{e()||await r.delete(`/tts/voice-profiles/${encodeURIComponent(t)}`)},getVoices:t=>e()?i({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,supports_voice_cloning:!1,clone_requires_transcript:!1}):r.get(`/tts/voices/${t}`).then(e=>e.data),generateBase64:t=>{if(e())return i({audio:``,format:t.response_format||`mp3`,mimeType:`audio/mpeg`,size:0});let n={...t,pluginId:t.pluginId||void 0};return r.post(`/tts/generate-base64`,n).then(e=>e.data)},generate:async(t,n={})=>{if(e())return new Blob([],{type:`audio/mpeg`});let i={...t,pluginId:t.pluginId||void 0};return(await r.post(`/tts/generate`,i,{responseType:`blob`,signal:n.signal})).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,voiceProfileId:t.voiceProfileId,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}}},pe={getModels:()=>e()?i([]):r.get(`/stt/models`).then(e=>e.data),transcribe:async(e,t,n={})=>{let i=new FormData,a=me(e.type);i.append(`audio`,e,`recording.${a}`),i.append(`model`,t.model),i.append(`pluginId`,t.plugin),n.language&&i.append(`language`,n.language);let o=await r.post(`/stt/transcribe`,i,{signal:n.signal});if(!o.data.success||!o.data.data)throw Error(o.data.message||o.data.error||n.fallbackMessage||`Transcription failed`);return o.data.data}};function me(e){let t=e.split(`;`,1)[0].toLowerCase();return t.includes(`webm`)?`webm`:t.includes(`ogg`)?`ogg`:t.includes(`wav`)?`wav`:t.includes(`flac`)?`flac`:t.includes(`mp4`)||t.includes(`m4a`)?`m4a`:`mp3`}export{b as A,E as C,S as D,C as E,s as F,l as I,c as L,y as M,ee as N,x as O,d as P,u as R,re as S,w as T,B as _,$ as a,k as b,Y as c,ae as d,U as f,z as g,R as h,de as i,te as j,ne as k,se as l,V as m,Q as n,ue as o,H as p,fe as r,le as s,pe as t,G as u,j as v,T as w,ie as x,N as y,a as z};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/api-BMB8tnVI.js","js/workApi-CqIVWrXF.js","js/logger-DnuT4jgB.js","js/utils-vendor-BbPbaAuC.js","js/rolldown-runtime-hePW80VL.js","js/react-vendor-D0Ec-185.js","js/config-nmgpdBW-.js","js/api-T6SWjL0K.js","js/imageGenModels-Dx_QMLJQ.js"])))=>i.map(i=>d[i]);
2
- import{a as e,i as t,o as n,t as r}from"./logger-DnuT4jgB.js";import{a as i,t as a}from"./utils-vendor-BbPbaAuC.js";var o=`dark`,s=`blue`,c=`#4176e6`,l=[{id:`violet`,label:`Violet`,color:`#7c3aed`,foreground:`#ffffff`},{id:`blue`,label:`Blue`,color:`#4176e6`,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`,`sidebar`,`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},_={25:6,50:0,100:3,200:6,300:12,400:24,500:46,600:65,700:82,800:89,900:95,950:99},v={canvas:{lightness:96,saturationFactor:1},sidebar:{lightness:94,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}},y={canvas:{lightness:5,saturationFactor:.9},sidebar:{lightness:8,saturationFactor:1},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}},b={canvas:{lightness:0,saturationFactor:0},sidebar:{lightness:0,saturationFactor:0},surface:{lightness:0,saturationFactor:0},"surface-subtle":{lightness:4,saturationFactor:1},"surface-raised":{lightness:7,saturationFactor:1},"surface-overlay":{lightness:10,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:0,saturationFactor:0},line:{lightness:11,saturationFactor:.8},"line-strong":{lightness:20,saturationFactor:.65}},x={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:`#edf3fe`,100:`#e4edfd`,200:`#d3e2ff`,300:`#b7c8fe`,400:`#679efe`,500:`#4176e6`,600:`#4868b2`,700:`#2f4c8f`,800:`#34415b`,900:`#283142`,950:`#1e2635`},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`}},S={50:97,100:94,200:88,300:76,400:64,500:42,600:34,700:27,800:21,900:16,950:10},C=(e,t,n)=>Math.min(Math.max(e,t),n),w=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()}`},T=e=>{let t=w(e)||`#4176e6`,n=parseInt(t.slice(1),16);return{r:n>>16&255,g:n>>8&255,b:n&255}},E=(e,t,n)=>`#${[e,t,n].map(e=>C(Math.round(e),0,255).toString(16).padStart(2,`0`)).join(``)}`,D=(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}},O=(e,t,n)=>{let r=C(t,0,100)/100,i=C(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),E((l+c)*255,(u+c)*255,(d+c)*255)},k=e=>{let{r:t,g:n,b:r}=T(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},A=(e,t)=>{let n=k(e),r=k(t),i=Math.max(n,r),a=Math.min(n,r);return(i+.05)/(a+.05)},j=(e,t,n)=>{let r=n,i=O(e,t,r);for(;A(`#ffffff`,i)<4.5&&r>12;)r-=2,i=O(e,t,r);return i},M=e=>{let{r:t,g:n,b:r}=T(w(e)||`#4176e6`),{h:i,s:a}=D(t,n,r),o=a<8?a:C(a,42,88);return u.reduce((e,t)=>{let n=S[t],r=Number(t)<300?o*.72:o;return e[t]=t===`500`||t===`600`?j(i,r,n):O(i,r,n),e},{})},N=e=>{let t=e?.mode===`light`?`light`:e?.mode===`amoled`?`amoled`:o,n=e?.accent===`custom`?`custom`:e?.accent,r=l.some(e=>e.id===n)?n:s,i=w(e?.customAccent)||`#4176e6`;return{mode:t,adaptToAccent:e?.adaptToAccent===!0,accent:n===`custom`?`custom`:r,customAccent:i}},P=()=>N({mode:o}),F=[`light`,`dark`,`amoled`],I=e=>F[(F.indexOf(e)+1)%F.length],L=`libre-webui-instance-theme`,R=()=>{if(typeof localStorage>`u`)return null;try{let e=localStorage.getItem(L);if(!e)return null;let t=JSON.parse(e);return t&&typeof t==`object`?N(t):null}catch{return null}},z=e=>{if(!(typeof localStorage>`u`))try{localStorage.setItem(L,JSON.stringify(N(e)))}catch{}},B=()=>R()??P(),V=e=>{let t=N(e);return t.accent===`custom`?M(t.customAccent):x[t.accent||`blue`]},H=e=>{let t=N(e);return t.accent===`custom`?t.customAccent||`#4176e6`:l.find(e=>e.id===t.accent)?.color||`#4176e6`},U=(e,t,n)=>t===0||e<8?e*t:C(e*n.multiplier*t,n.minimum*t,n.maximum*t),W=(e,t,n,r)=>d.reduce((i,a)=>(i[a]=O(e,U(t,1,r),n[a]),i),{}),G=(e,t,n,r)=>f.reduce((i,a)=>{let o=n[a];return i[a]=O(e,U(t,o.saturationFactor,r),o.lightness),i},{}),K=(e,t,n)=>{let{r,g:i,b:a}=T(n);e.style.setProperty(t,`${r} ${i} ${a}`)},q=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}`)},J=(e,t)=>{let{r:n,g:r,b:i}=T(H(t)),{h:a,s:o}=D(n,r,i),s=t.mode===`light`?m:p,c=W(a,o,h,s),l=W(a,o,t.mode===`amoled`?_:g,p),u=G(a,o,t.mode===`light`?v:t.mode===`amoled`?b:y,s);for(let t of d)K(e,`--color-gray-${t}`,c[t]),K(e,`--color-dark-${t}`,l[t]);for(let t of f)K(e,`--color-${t}`,u[t])},Y=e=>{if(typeof document>`u`)return;let t=N(e),n=document.documentElement,r=V(t);n.classList.remove(`dark`,`amoled`,`ophelia`),t.mode!==`light`&&n.classList.add(`dark`),t.mode===`amoled`&&n.classList.add(`amoled`),n.style.colorScheme=t.mode===`light`?`light`:`dark`,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}=T(r[e]),o=`${t} ${i} ${a}`;n.style.setProperty(`--color-primary-${e}`,o),n.style.setProperty(`--color-accent-${e}`,o)}t.adaptToAccent?J(n,t):q(n)},X=r(`store:app-store`),Z=250,Q=null,$=i()(a((r,i)=>({theme:B(),themeSyncPending:!1,themeSource:`default`,applyInstanceTheme:e=>{if(!e)return;let t=N(e);z(t),i().themeSource!==`user`&&i().setTheme(t)},syncThemePreference:async t=>{if(Q&&=(clearTimeout(Q),null),!(!e()&&!localStorage.getItem(`auth-token`)))try{let{preferencesApi:e}=await n(async()=>{let{preferencesApi:e}=await import(`./api-BMB8tnVI.js`);return{preferencesApi:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8]));if(!(await e.updatePreferences({theme:t})).success){X.warn(`Failed to save theme preference to backend`);return}let a=N(i().theme),o=N(t);a.mode===o.mode&&a.adaptToAccent===o.adaptToAccent&&a.accent===o.accent&&a.customAccent===o.customAccent?r({themeSyncPending:!1}):(r({themeSyncPending:!0}),i().scheduleThemePreferenceSync())}catch(e){X.warn(`Failed to save theme preference to backend:`,e)}},scheduleThemePreferenceSync:()=>{Q&&clearTimeout(Q),Q=setTimeout(()=>{Q=null,i().syncThemePreference(N(i().theme))},Z)},setTheme:e=>{let t=N(e);r(e=>({theme:t,preferences:{...e.preferences,theme:t}})),Y(t)},updateTheme:e=>{let t=N(e);i().setTheme(t),r({themeSyncPending:!0,themeSource:`user`}),i().scheduleThemePreferenceSync()},toggleTheme:()=>{let e=i().theme;i().updateTheme({...e,mode:I(e.mode)})},sidebarOpen:!0,sidebarCompact:!1,setSidebarOpen:e=>r({sidebarOpen:e}),setSidebarCompact:e=>r({sidebarCompact:e}),toggleSidebar:()=>r(e=>({sidebarOpen:!e.sidebarOpen})),toggleSidebarCompact:()=>r(e=>({sidebarCompact:!e.sidebarCompact})),artifactPanelOpen:!1,artifactPanelArtifact:null,artifactPanelWidth:600,artifactPanelResizing:!1,openArtifactPanel:e=>r({artifactPanelOpen:!0,artifactPanelArtifact:e}),closeArtifactPanel:()=>r({artifactPanelOpen:!1,artifactPanelArtifact:null}),setArtifactPanelWidth:e=>r({artifactPanelWidth:e}),setArtifactPanelResizing:e=>r({artifactPanelResizing:e}),preferences:{theme:P(),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,hapticFeedbackEnabled:!1,workRemoteProviderDisclosureDismissed:!1,backgroundSettings:{enabled:!1,imageUrl:``,blurAmount:10,opacity:.6}},setPreferences:e=>{let t=e.theme?N(e.theme):null;r(n=>({...t&&{theme:t,themeSource:`user`},preferences:{...n.preferences,...e,...t&&{theme:t}}})),t&&Y(t)},loadPreferences:async()=>{try{let{preferencesApi:e}=await n(async()=>{let{preferencesApi:e}=await import(`./api-BMB8tnVI.js`);return{preferencesApi:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8])),t=await e.getPreferences();if(t.success&&t.data){let e=t.data,n=i().themeSyncPending?N(i().theme):null;i().setPreferences(n?{...e,theme:n}:e),r({backgroundImage:e.backgroundSettings?.imageUrl||null}),n&&i().syncThemePreference(n)}}catch(e){X.warn(`Failed to load preferences from backend:`,e)}},isGenerating:!1,setIsGenerating:e=>r({isGenerating:e}),pinnedAdminShortcuts:[],toggleAdminShortcut:e=>r(t=>({pinnedAdminShortcuts:t.pinnedAdminShortcuts.includes(e)?t.pinnedAdminShortcuts.filter(t=>t!==e):[...t.pinnedAdminShortcuts,e]})),hasSeenSettingsNotification:!1,markSettingsNotificationAsSeen:()=>r({hasSeenSettingsNotification:!0}),isDemoMode:e(),demoConfig:t(),setDemoMode:e=>{r({isDemoMode:e,demoConfig:t()})},backgroundImage:null,setBackgroundImage:async e=>{if(r({backgroundImage:e}),e){let t=i(),r={...t.preferences,backgroundSettings:{enabled:!0,imageUrl:e,blurAmount:t.preferences.backgroundSettings?.blurAmount||10,opacity:t.preferences.backgroundSettings?.opacity||.6}};t.setPreferences(r);try{let{preferencesApi:e}=await n(async()=>{let{preferencesApi:e}=await import(`./api-BMB8tnVI.js`);return{preferencesApi:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8]));await e.updatePreferences({backgroundSettings:r.backgroundSettings})}catch(e){X.warn(`Failed to save background settings to backend:`,e)}}},uploadBackgroundImage:async e=>{try{let t=new FileReader;return new Promise((n,r)=>{t.onload=async e=>{try{let t=e.target?.result;await i().setBackgroundImage(t),n()}catch(e){r(e)}},t.onerror=r,t.readAsDataURL(e)})}catch(e){throw X.error(`Failed to upload background image:`,e),e}},removeBackgroundImage:async()=>{r({backgroundImage:null});let e=i(),t={enabled:!1,imageUrl:``,blurAmount:e.preferences.backgroundSettings?.blurAmount||10,opacity:e.preferences.backgroundSettings?.opacity||.6};e.setPreferences({backgroundSettings:t});try{let{preferencesApi:e}=await n(async()=>{let{preferencesApi:e}=await import(`./api-BMB8tnVI.js`);return{preferencesApi:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8]));await e.updatePreferences({backgroundSettings:t})}catch(e){X.warn(`Failed to save background removal to backend:`,e)}},clearUserState:()=>{let e=B();Q&&=(clearTimeout(Q),null),r({theme:e,themeSyncPending:!1,themeSource:`default`,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}}}),Y(e)}}),{name:`libre-webui-app-state`,onRehydrateStorage:()=>e=>{e&&e.setTheme(N(e.theme))},partialize:e=>{let{backgroundSettings:t,...n}=e.preferences;return{theme:e.theme,themeSyncPending:e.themeSyncPending,themeSource:e.themeSource,sidebarOpen:e.sidebarOpen,sidebarCompact:e.sidebarCompact,artifactPanelWidth:e.artifactPanelWidth,pinnedAdminShortcuts:e.pinnedAdminShortcuts,preferences:n,hasSeenSettingsNotification:e.hasSeenSettingsNotification}}}));typeof window<`u`&&(()=>{let{theme:e,setTheme:t}=$.getState();t(e)})();export{I as a,c as i,l as n,H as o,s as r,N as s,$ as t};
@@ -1 +0,0 @@
1
- function e(e,t=`0.32.0`){return t?.trim()||e?.trim()||``}export{e as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./authStore-Bl7S8bPg.js";export{e as useAuthStore};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,r as n,t as r}from"./react-vendor-D0Ec-185.js";import{t as i}from"./useQuery-BKulzCS7.js";import{d as a}from"./router-vendor-CMbYTGdh.js";import{t as o}from"./logger-DnuT4jgB.js";import{t as s}from"./useTranslation-D0mJ4NnO.js";import{t as c}from"./utils-Bn0RE9_8.js";import{h as l,s as u,t as d}from"./chatStore-DW0LsT5X.js";import{A as f,Cn as p,Kn as m,Kt as h,Mn as g,Mt as _,Q as v,S as y,Tn as b,U as x,Vt as S,Wt as C,Y as ee,bn as w,c as T,er as E,ir as D,n as O,qn as k,t as A,yr as j}from"./ui-vendor-DvJV-69N.js";import{C as te,g as ne,t as re,y as M}from"./api-T6SWjL0K.js";import{t as ie}from"./authStore-Bl7S8bPg.js";var N=e(t(),1),ae=n(),P=r();function F(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:e.toString()}function oe({hfTask:e,hfSort:t,canInstallModels:n,loadingHf:r,hfModels:i,expandedHfModel:a,hfGgufFiles:o,loadingGguf:l,pullingModel:u,pullProgress:d,setHfTask:f,setHfSort:h,onToggleHfModel:g,onPullHfGguf:v,onCancelPull:y,onRefreshHfModels:b}){let{t:x}=s();return(0,P.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden`,children:[(0,P.jsx)(`div`,{className:`px-3 py-2 border-b border-gray-200 dark:border-dark-300 flex-shrink-0 space-y-2`,children:(0,P.jsxs)(`div`,{className:`flex gap-2`,children:[(0,P.jsxs)(`select`,{value:e,onChange:e=>f(e.target.value),onMouseDown:e=>e.stopPropagation(),className:`flex-1 px-2 py-1.5 rounded-lg border text-xs bg-gray-50 dark:bg-dark-50 border-gray-200 dark:border-dark-300 text-gray-900 dark:text-gray-100`,children:[(0,P.jsx)(`option`,{value:`text-generation`,children:x(`modelManager.huggingface.taskTextGeneration`)}),(0,P.jsx)(`option`,{value:`text-to-speech`,children:x(`modelManager.huggingface.taskTextToSpeech`)}),(0,P.jsx)(`option`,{value:`text-to-image`,children:x(`modelManager.huggingface.taskTextToImage`)}),(0,P.jsx)(`option`,{value:`automatic-speech-recognition`,children:x(`modelManager.huggingface.taskSpeechRecognition`)})]}),(0,P.jsxs)(`select`,{value:t,onChange:e=>h(e.target.value),onMouseDown:e=>e.stopPropagation(),className:`px-2 py-1.5 rounded-lg border text-xs bg-gray-50 dark:bg-dark-50 border-gray-200 dark:border-dark-300 text-gray-900 dark:text-gray-100`,children:[(0,P.jsx)(`option`,{value:`downloads`,children:x(`modelManager.huggingface.sortDownloads`)}),(0,P.jsx)(`option`,{value:`likes`,children:x(`modelManager.huggingface.sortLikes`)}),(0,P.jsx)(`option`,{value:`lastModified`,children:x(`modelManager.huggingface.sortRecent`)})]})]})}),(0,P.jsxs)(`div`,{className:`scroll-region min-h-0 flex-1 scrollbar-thin`,children:[!n&&(0,P.jsx)(`div`,{className:`mx-3 mb-1 mt-3 rounded-lg border border-amber-200 bg-amber-500/10 px-3 py-2 text-xs text-ink dark:border-amber-800 dark:bg-amber-900/20`,children:x(`modelSelector.pullRestricted`)}),r?(0,P.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,P.jsx)(_,{className:`h-6 w-6 animate-spin text-gray-400`})}):i.length===0?(0,P.jsxs)(`div`,{className:`px-4 py-8 text-center text-gray-500 dark:text-gray-400`,children:[(0,P.jsx)(A,{className:`h-8 w-8 mx-auto mb-2 text-gray-300 dark:text-gray-600`}),(0,P.jsx)(`p`,{className:`text-sm`,children:x(`modelManager.huggingface.noModelsFound`)})]}):(0,P.jsx)(`div`,{className:`divide-y divide-gray-100 dark:divide-dark-200`,children:i.map(e=>{let t=a===e.id,r=o[e.id]||[],i=l===e.id;return(0,P.jsxs)(`div`,{className:`bg-white dark:bg-dark-100`,children:[(0,P.jsx)(`div`,{className:`px-3 py-3 cursor-pointer hover:bg-gray-50 dark:hover:bg-dark-200`,onMouseDown:t=>{t.preventDefault(),t.stopPropagation(),g(e.id)},children:(0,P.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,P.jsx)(`div`,{className:`flex-shrink-0 rounded-lg bg-yellow-500/20 p-2 dark:bg-yellow-900/30`,children:(0,P.jsx)(A,{className:`h-4 w-4 text-yellow-600 dark:text-yellow-400`})}),(0,P.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(`h4`,{dir:`ltr`,className:`text-sm font-medium text-gray-900 dark:text-gray-100 truncate`,children:e.id}),e.gated&&(0,P.jsx)(`span`,{className:`rounded bg-yellow-500/20 px-1.5 py-0.5 text-xs text-ink dark:bg-yellow-900/30`,children:`Gated`})]}),(0,P.jsxs)(`p`,{className:`text-xs text-gray-500 dark:text-gray-400 mt-0.5`,children:[`by `,e.author]}),(0,P.jsxs)(`div`,{className:`flex items-center gap-3 mt-1.5 text-xs text-gray-400 dark:text-gray-500`,children:[(0,P.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,P.jsx)(p,{className:`h-3 w-3`}),F(e.downloads)]}),(0,P.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,P.jsx)(C,{className:`h-3 w-3`}),F(e.likes)]}),e.pipeline_tag&&(0,P.jsx)(`span`,{className:`px-1.5 py-0.5 rounded bg-gray-100 dark:bg-dark-200`,children:e.pipeline_tag})]})]}),(0,P.jsxs)(`div`,{className:`flex items-center gap-2 flex-shrink-0`,children:[(0,P.jsx)(`a`,{href:`https://huggingface.co/${e.id}`,target:`_blank`,rel:`noopener noreferrer`,onMouseDown:e=>e.stopPropagation(),className:`p-1.5 rounded-lg hover:bg-gray-100 dark:hover:bg-dark-200`,children:(0,P.jsx)(w,{className:`h-4 w-4 text-gray-400`})}),(0,P.jsx)(m,{className:c(`h-4 w-4 text-gray-400 transition-transform`,t&&`rotate-180`)})]})]})}),t&&(0,P.jsx)(`div`,{className:`px-3 pb-3 pt-1 border-t border-gray-100 dark:border-dark-200 bg-gray-50 dark:bg-dark-200`,children:i?(0,P.jsxs)(`div`,{className:`flex items-center justify-center py-4`,children:[(0,P.jsx)(_,{className:`h-4 w-4 animate-spin text-gray-400`}),(0,P.jsx)(`span`,{className:`ml-2 text-xs text-gray-500`,children:x(`modelManager.huggingface.checkingGguf`)})]}):r.length===0?(0,P.jsx)(`div`,{className:`py-4 text-center text-xs text-gray-500 dark:text-gray-400`,children:x(`modelManager.huggingface.noGgufAvailable`)}):(0,P.jsxs)(`div`,{className:`space-y-2`,children:[(0,P.jsx)(`div`,{className:`text-xs font-medium text-gray-600 dark:text-gray-300 mb-2`,children:x(`modelManager.huggingface.ggufFilesCount`,{count:r.length})}),r.map(e=>{let t=u===e.ollamaCommand;return(0,P.jsxs)(`div`,{className:`flex items-center gap-2 p-2 rounded-lg bg-white dark:bg-dark-100 border border-gray-200 dark:border-dark-300`,children:[(0,P.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,P.jsx)(`div`,{className:`text-xs font-medium text-gray-800 dark:text-gray-200 truncate`,children:e.filename}),(0,P.jsxs)(`div`,{className:`flex items-center gap-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400`,children:[(0,P.jsx)(`span`,{children:e.sizeFormatted}),e.quantization&&(0,P.jsx)(`span`,{className:`px-1.5 py-0.5 rounded bg-purple-100 dark:bg-purple-900/30 text-purple-700 dark:text-purple-400`,children:e.quantization})]})]}),t?(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(`div`,{className:`text-xs text-gray-500 w-12 text-right`,children:d?.percent===void 0?`...`:`${d.percent}%`}),(0,P.jsx)(`button`,{onMouseDown:e=>{e.preventDefault(),e.stopPropagation(),y()},className:`p-1.5 rounded-lg text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20`,children:(0,P.jsx)(O,{className:`h-4 w-4`})})]}):n?(0,P.jsxs)(`button`,{onMouseDown:t=>{t.preventDefault(),t.stopPropagation(),v(e.ollamaCommand,e.filename)},disabled:!!u,className:c(`px-3 py-1.5 rounded-lg text-xs font-medium`,`bg-primary-100 dark:bg-primary-900/30`,`text-primary-700 dark:text-primary-400`,`hover:bg-primary-200 dark:hover:bg-primary-900/50`,`disabled:opacity-50 disabled:cursor-not-allowed`),children:[(0,P.jsx)(p,{className:`h-3 w-3 inline mr-1`}),x(`models.pull`)]}):(0,P.jsx)(`span`,{className:`rounded bg-amber-500/20 px-2 py-1 text-[11px] font-medium text-ink dark:bg-amber-900/30`,children:x(`modelSelector.adminOnlyPull`)})]},e.filename)}),u?.startsWith(`hf.co/`)&&u.includes(e.id)&&d?.percent!==void 0&&(0,P.jsx)(`div`,{className:`w-full bg-gray-200 dark:bg-dark-300 rounded-full h-1.5 overflow-hidden mt-2`,children:(0,P.jsx)(`div`,{className:`h-1.5 rounded-full bg-primary-500 transition-all duration-300`,style:{width:`${d.percent}%`}})})]})})]},e.id)})})]}),(0,P.jsxs)(`div`,{className:`px-3 py-2 border-t border-gray-200 dark:border-dark-300 flex items-center justify-between flex-shrink-0`,children:[(0,P.jsxs)(`a`,{href:`https://huggingface.co/models`,target:`_blank`,rel:`noopener noreferrer`,onMouseDown:e=>e.stopPropagation(),className:`text-xs text-primary-600 dark:text-primary-400 hover:underline flex items-center gap-1`,children:[(0,P.jsx)(w,{className:`h-3 w-3`}),x(`modelManager.huggingface.browseAllLink`)]}),(0,P.jsx)(`button`,{onMouseDown:e=>{e.preventDefault(),e.stopPropagation(),b()},className:`p-1.5 rounded-lg hover:bg-gray-100 dark:hover:bg-dark-200`,children:(0,P.jsx)(ee,{className:c(`h-3.5 w-3.5 text-gray-400`,r&&`animate-spin`)})})]})]})}function se({filteredGroups:e,selectedModel:t,showImageGen:n,getModelValue:r,getModelIcon:i,getModelLabel:a,getModelSubLabel:o,onModelSelect:l,onOpenGallery:u}){let{t:d}=s();return(0,P.jsxs)(`div`,{className:`scroll-region min-h-0 flex-1 scrollbar-thin scrollbar-thumb-gray-300 dark:scrollbar-thumb-dark-400`,children:[e.length>0?e.map(e=>(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`div`,{className:`px-3 py-2 text-xs font-semibold text-gray-500 dark:text-gray-400 bg-gray-100 dark:bg-dark-300 border-b border-gray-200 dark:border-dark-400 sticky top-0`,children:(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e.icon,e.label,` (`,e.models.length,`)`]})}),e.models.map(e=>{let n=r(e);return(0,P.jsx)(`button`,{type:`button`,"data-testid":`model-selector-option`,"data-model-value":n,"aria-pressed":t===n,onClick:()=>l(n),className:c(`block w-full cursor-pointer border-b border-gray-100 px-3 py-3 text-start last:border-b-0 dark:border-dark-200`,`hover:bg-gray-50 dark:hover:bg-dark-200`,`bg-white dark:bg-dark-100 transition-colors`,`focus-visible:relative focus-visible:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary-500/50`,t===n&&`bg-primary-50 dark:bg-primary-900/30`),children:(0,P.jsxs)(`div`,{className:`flex items-center gap-3`,children:[i(e),(0,P.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,P.jsx)(`div`,{dir:e.isPersona?`auto`:`ltr`,className:`text-sm font-medium text-gray-900 dark:text-gray-100 truncate`,children:a(e)}),o(e)&&(0,P.jsx)(`div`,{dir:`auto`,className:`text-xs text-gray-500 dark:text-gray-400 truncate`,children:o(e)})]}),t===n&&(0,P.jsx)(k,{className:`h-4 w-4 text-primary-600 dark:text-primary-400 flex-shrink-0`})]})},n)})]},e.type)):(0,P.jsxs)(`div`,{className:`px-4 py-8 text-center text-gray-500 dark:text-gray-400`,children:[(0,P.jsx)(b,{className:`h-8 w-8 mx-auto mb-2 text-gray-300 dark:text-gray-600`}),(0,P.jsx)(`p`,{className:`text-sm`,children:d(`models.noModelsFound`)})]}),n&&(0,P.jsxs)(`div`,{className:`border-t border-gray-200 dark:border-dark-300`,children:[(0,P.jsx)(`div`,{className:`px-3 py-2 text-xs font-semibold text-gray-500 dark:text-gray-400 bg-gray-100 dark:bg-dark-300`,children:(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(v,{className:`h-4 w-4 text-blue-600 dark:text-blue-400`}),d(`modelSelector.actions`)]})}),(0,P.jsx)(`div`,{onMouseDown:e=>{e.preventDefault(),u()},className:`px-3 py-3 cursor-pointer hover:bg-blue-50 dark:hover:bg-blue-900/20 bg-white dark:bg-dark-100`,children:(0,P.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,P.jsx)(S,{className:`h-4 w-4 text-blue-600 dark:text-blue-400`}),(0,P.jsxs)(`div`,{className:`flex-1`,children:[(0,P.jsx)(`div`,{className:`text-sm font-medium text-gray-900 dark:text-gray-100`,children:d(`gallery.generate`)}),(0,P.jsx)(`div`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:d(`gallery.generateDescription`)})]})]})})]})]})}function ce({libraryCategories:e,libraryCategory:t,canInstallModels:n,loadingLibrary:r,filteredLibraryModels:i,pullingModel:a,pullProgress:o,setLibraryCategory:l,isModelInstalled:u,onModelSelect:d,onPullModel:f,onCancelPull:m,onRefreshLibrary:h}){let{t:v}=s();return(0,P.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden`,children:[(0,P.jsx)(`div`,{className:`px-3 py-2 border-b border-gray-200 dark:border-dark-300 flex-shrink-0`,children:(0,P.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:e.map(e=>(0,P.jsx)(`button`,{onMouseDown:t=>{t.preventDefault(),t.stopPropagation(),l(e)},className:c(`px-2.5 py-1 rounded-full text-xs font-medium transition-colors`,t===e?`bg-primary-100 dark:bg-primary-900/30 text-primary-700 dark:text-primary-400`:`bg-gray-100 dark:bg-dark-200 text-gray-600 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-dark-300`),children:e.charAt(0).toUpperCase()+e.slice(1)},e))})}),(0,P.jsxs)(`div`,{className:`scroll-region min-h-0 flex-1 scrollbar-thin`,children:[!n&&(0,P.jsx)(`div`,{className:`mx-3 mb-1 mt-3 rounded-lg border border-amber-200 bg-amber-500/10 px-3 py-2 text-xs text-ink dark:border-amber-800 dark:bg-amber-900/20`,children:v(`modelSelector.pullRestricted`)}),r?(0,P.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,P.jsx)(_,{className:`h-6 w-6 animate-spin text-gray-400`})}):i.length===0?(0,P.jsxs)(`div`,{className:`px-4 py-8 text-center text-gray-500 dark:text-gray-400`,children:[(0,P.jsx)(g,{className:`h-8 w-8 mx-auto mb-2 text-gray-300 dark:text-gray-600`}),(0,P.jsx)(`p`,{className:`text-sm`,children:v(`models.noModelsFound`)})]}):(0,P.jsx)(`div`,{className:`divide-y divide-gray-100 dark:divide-dark-200`,children:i.map(e=>{let t=u(e.name),r=a===e.name;return(0,P.jsxs)(`div`,{className:c(`px-3 py-3 bg-white dark:bg-dark-100`,t&&`bg-green-50/50 dark:bg-green-900/10`),children:[(0,P.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,P.jsx)(`div`,{className:`p-2 rounded-lg bg-blue-100 dark:bg-blue-900/30 flex-shrink-0`,children:(0,P.jsx)(g,{className:`h-4 w-4 text-blue-600 dark:text-blue-400`})}),(0,P.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(`h4`,{dir:`ltr`,className:`text-sm font-medium text-gray-900 dark:text-gray-100 truncate`,children:e.name}),t&&(0,P.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-xs bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-400`,children:v(`modelSelector.installed`)}),(e.category===`cloud`||e.tags?.includes(`cloud`))&&(0,P.jsxs)(`span`,{className:`px-1.5 py-0.5 rounded text-xs bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-400 flex items-center gap-1`,children:[(0,P.jsx)(g,{className:`h-3 w-3`}),`Cloud`]})]}),(0,P.jsx)(`p`,{className:`text-xs text-gray-500 dark:text-gray-400 line-clamp-1 mt-0.5`,children:e.description}),(0,P.jsxs)(`div`,{className:`flex items-center gap-2 mt-1.5`,children:[e.sizes.slice(0,3).map(e=>(0,P.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-xs bg-gray-100 dark:bg-dark-200 text-gray-600 dark:text-gray-400`,children:e},e)),e.pulls&&(0,P.jsxs)(`span`,{className:`text-xs text-gray-400 dark:text-gray-500 flex items-center gap-1`,children:[(0,P.jsx)(p,{className:`h-3 w-3`}),e.pulls]})]})]}),(0,P.jsx)(`div`,{className:`flex-shrink-0`,children:r?(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(`div`,{className:`text-xs text-gray-500 w-12 text-right`,children:o?.percent===void 0?`...`:`${o.percent}%`}),(0,P.jsx)(`button`,{onClick:m,className:`p-1.5 rounded-lg text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20`,children:(0,P.jsx)(O,{className:`h-4 w-4`})})]}):t?(0,P.jsx)(`button`,{onClick:()=>d(e.name),className:`px-3 py-1.5 rounded-lg text-xs font-medium bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-400 hover:bg-green-200 dark:hover:bg-green-900/50`,children:v(`modelSelector.use`)}):n?(0,P.jsxs)(`button`,{onClick:()=>f(e.name),className:`px-3 py-1.5 rounded-lg text-xs font-medium bg-primary-100 dark:bg-primary-900/30 text-primary-700 dark:text-primary-400 hover:bg-primary-200 dark:hover:bg-primary-900/50`,children:[(0,P.jsx)(p,{className:`h-3 w-3 inline mr-1`}),v(`modelSelector.pull`)]}):(0,P.jsx)(`span`,{className:`rounded bg-amber-500/20 px-2 py-1 text-[11px] font-medium text-ink dark:bg-amber-900/30`,children:v(`modelSelector.adminOnlyPull`)})})]}),r&&o?.percent!==void 0&&(0,P.jsx)(`div`,{className:`mt-2 w-full bg-gray-200 dark:bg-dark-300 rounded-full h-1.5 overflow-hidden`,children:(0,P.jsx)(`div`,{className:`h-1.5 rounded-full bg-primary-500 transition-all duration-300`,style:{width:`${o.percent}%`}})})]},e.name)})})]}),(0,P.jsxs)(`div`,{className:`px-3 py-2 border-t border-gray-200 dark:border-dark-300 flex items-center justify-between flex-shrink-0`,children:[(0,P.jsxs)(`a`,{href:`https://ollama.com/library`,target:`_blank`,rel:`noopener noreferrer`,onMouseDown:e=>e.stopPropagation(),className:`text-xs text-primary-600 dark:text-primary-400 hover:underline flex items-center gap-1`,children:[(0,P.jsx)(w,{className:`h-3 w-3`}),v(`modelManager.huggingface.browseAllLink`)]}),(0,P.jsx)(`button`,{onMouseDown:e=>{e.preventDefault(),e.stopPropagation(),h()},className:`p-1.5 rounded-lg hover:bg-gray-100 dark:hover:bg-dark-200`,children:(0,P.jsx)(ee,{className:c(`h-3.5 w-3.5 text-gray-400`,r&&`animate-spin`)})})]})]})}var le=o(`components:model-selector`),I=({models:e,selectedModel:t,onModelChange:n,currentPersona:r,className:o,disabled:p=!1,compact:_=!1,showImageGen:v=!1,onModelsRefresh:b,getModelValue:S,getModelLabel:C,getModelTitle:ee,triggerRef:w,triggerTestId:k,selectTestId:re,ariaLabel:F})=>{let{t:I}=s(),[L,R]=(0,N.useState)(!1),[z,B]=(0,N.useState)(``),[V,ue]=(0,N.useState)(`installed`),de=(0,N.useRef)(null),H=(0,N.useRef)(null),fe=(0,N.useRef)(null),pe=(0,N.useRef)(null),me=a(),{user:he,systemInfo:ge}=ie(),U=he?.role===`admin`||ge?.requiresAuth===!1,[W,_e]=(0,N.useState)(`all`),[ve,ye]=(0,N.useState)(``),[be,xe]=(0,N.useState)(`text-generation`),[Se,Ce]=(0,N.useState)(`downloads`),[we,Te]=(0,N.useState)(``),[Ee,De]=(0,N.useState)(null),[Oe,ke]=(0,N.useState)({}),[Ae,je]=(0,N.useState)(null),[G,K]=(0,N.useState)(null),[Me,q]=(0,N.useState)(null),[Ne,J]=(0,N.useState)(null),Pe=[`all`,`general`,`coding`,`reasoning`,`vision`,`embedding`,`cloud`],Fe=[{type:`legacy`,label:I(`modelSelector.providerNotRecorded`,`Provider not recorded`),icon:(0,P.jsx)(E,{className:`h-4 w-4 text-gray-500 dark:text-dark-600`}),models:e.filter(e=>e.isLegacySelection),color:`gray`},{type:`unavailable`,label:I(`modelSelector.unavailableSelections`,`Unavailable selections`),icon:(0,P.jsx)(O,{className:`h-4 w-4 text-gray-500 dark:text-dark-600`}),models:e.filter(e=>e.isUnavailable&&!e.isLegacySelection),color:`gray`},{type:`personas`,label:I(`modelSelector.personas`),icon:(0,P.jsx)(T,{className:`h-4 w-4 text-gray-500 dark:text-dark-600`}),models:e.filter(e=>e.isPersona&&!e.isUnavailable),color:`purple`},{type:`agents`,label:I(`modelSelector.agentModels`,`Agents`),icon:(0,P.jsx)(y,{className:`h-4 w-4 text-gray-500 dark:text-dark-600`}),models:e.filter(e=>e.isAgent&&!e.isUnavailable),color:`green`},{type:`ollama`,label:I(`modelSelector.ollamaModels`),icon:(0,P.jsx)(D,{className:`h-4 w-4 text-gray-500 dark:text-dark-600`}),models:e.filter(e=>l(e)&&!e.name.includes(`embed`)),color:`green`},{type:`plugins`,label:I(`modelSelector.pluginModels`),icon:(0,P.jsx)(A,{className:`h-4 w-4 text-gray-500 dark:text-dark-600`}),models:e.filter(e=>e.isPlugin&&!e.isUnavailable),color:`green`}].filter(e=>e.models.length>0).map(e=>({...e,models:e.models.filter(e=>e.name.toLowerCase().includes(z.toLowerCase())||e.personaName&&e.personaName.toLowerCase().includes(z.toLowerCase())||e.pluginName&&e.pluginName.toLowerCase().includes(z.toLowerCase()))})).filter(e=>e.models.length>0),Y=e=>S?.(e)??e.name,Ie=d(e=>e.modelMetadata),X=d(e=>e.personas),Z=e.find(e=>Y(e)===t),Le=e=>{if(!e.name.startsWith(`persona:`))return;let t=e.name.slice(8),n=t;try{n=decodeURIComponent(t)}catch{}let r=X[t]??X[n];if(r?.name)return r.name;if(e.personaName&&e.personaName!==t)return e.personaName},Re=e=>{if(!e.name.startsWith(`persona:`))return;let t=e.name.slice(8),n=t;try{n=decodeURIComponent(t)}catch{}return X[t]??X[n]};(0,N.useImperativeHandle)(w,()=>fe.current);let Q=(0,N.useCallback)((e=!0)=>{R(!1),B(``),e&&window.requestAnimationFrame(()=>fe.current?.focus())},[]),{data:ze=[],isLoading:Be,refetch:Ve}=i({queryKey:[`ollama-library-selector`,ve,W===`cloud`?`cloud`:`all`],queryFn:async()=>{let e=await M.getLibraryModels({search:ve||void 0,sort:`popular`,category:W===`cloud`?`cloud`:void 0});return e.success&&e.data?e.data:[]},enabled:L&&V===`ollama`}),{data:He=[],isLoading:Ue,refetch:We}=i({queryKey:[`hf-models-selector`,be,we,Se],queryFn:async()=>{let e=await te.getModels({task:be,search:we||void 0,sort:Se,limit:30});return e.success&&e.data?e.data:[]},enabled:L&&V===`huggingface`}),Ge=ze.filter(e=>{let t=!z||e.name.toLowerCase().includes(z.toLowerCase())||e.description.toLowerCase().includes(z.toLowerCase()),n=W===`all`||e.category===W;return t&&n}),Ke=(0,N.useCallback)(async e=>{let[t,n]=e.split(`/`);if(!(!t||!n)){je(e);try{let r=await te.getGgufFiles(t,n);r.success&&r.data&&ke(t=>({...t,[e]:r.data}))}catch(e){le.error(`Failed to load GGUF files:`,e)}finally{je(null)}}},[]),qe=(0,N.useCallback)(e=>{Ee===e?De(null):(De(e),Oe[e]||Ke(e))},[Ee,Oe,Ke]),Je=(0,N.useCallback)((e,t)=>{if(!U){j.error(I(`modelSelector.pullRestricted`));return}if(!G){K(e),q({status:`starting`});try{let n=M.pullModelStream(e,e=>{q(e)},()=>{q(null),K(null),J(null),j.success(I(`modelDownload.success`,{name:t})),b?.()},e=>{q(null),K(null),J(null),j.error(I(`modelDownload.failed`,{error:e}))});J(()=>n)}catch{q(null),K(null),j.error(I(`modelDownload.startFailed`))}}},[U,b,G,I]);(0,N.useEffect)(()=>{let e=setTimeout(()=>{V===`huggingface`?Te(z):V===`ollama`&&ye(z)},300);return()=>clearTimeout(e)},[z,V]),(0,N.useEffect)(()=>{if(!L)return;let e=e=>{if(e.key===`Escape`){e.preventDefault(),Q();return}if(e.key===`Tab`&&H.current){let t=Array.from(H.current.querySelectorAll(`button:not([disabled]), input:not([disabled]), [tabindex]:not([tabindex="-1"])`)).filter(e=>e.offsetParent!==null),n=t[0],r=t[t.length-1];if(!n||!r)return;e.shiftKey&&document.activeElement===n?(e.preventDefault(),r.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n.focus())}};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[Q,L]),(0,N.useEffect)(()=>{L&&pe.current&&pe.current.focus()},[L]);let Ye=async t=>{let r=e.find(e=>Y(e)===t)??e.find(e=>!e.isPlugin&&!e.isPersona&&e.name===t),i=r?Y(r):t,a=r?.name??t;Q();try{let e=await M.listRunningModels();if(e.success&&e.data){let t=e.data;t.length>0&&(r?.isPlugin!==!0&&t.some(e=>e.name===a||a.startsWith(`persona:`))||await M.unloadAllModels())}}catch(e){le.warn(`Failed to unload models before switch:`,e)}n({target:{value:i}})},Xe=async e=>{if(!U){j.error(I(`modelSelector.pullRestricted`));return}if(!G){K(e),q({status:`starting`});try{let t=M.pullModelStream(e,e=>{q(e)},()=>{q(null),K(null),J(null),j.success(I(`modelDownload.success`,{name:e})),b?.()},e=>{q(null),K(null),J(null),j.error(I(`modelDownload.failed`,{error:e}))});J(()=>t)}catch{q(null),K(null),j.error(I(`modelDownload.startFailed`))}}},Ze=()=>{Ne&&(Ne(),J(null),K(null),q(null),j.success(I(`modelDownload.cancelled`)))},Qe=t=>e.some(e=>l(e)&&(e.name===t||e.name.startsWith(t+`:`))),$e=e=>{let t=Ie[u(e)]?.avatar;if(t&&!e.isPersona)return(0,P.jsx)(`img`,{src:t,alt:``,className:`h-4 w-4 shrink-0 rounded-full object-cover`});if(e.isPersona||e.isLegacySelection){let t=Re(e);if(t)return(0,P.jsx)(`img`,{src:ne(t,64),alt:``,className:`h-4 w-4 shrink-0 rounded object-cover`})}return e.isLegacySelection?(0,P.jsx)(E,{className:`h-4 w-4 text-gray-500 dark:text-dark-600`}):e.isPersona?(0,P.jsx)(T,{className:`h-4 w-4 text-gray-500 dark:text-dark-600`}):e.isPlugin?(0,P.jsx)(A,{className:`h-4 w-4 text-gray-500 dark:text-dark-600`}):(0,P.jsx)(D,{className:`h-4 w-4 text-gray-500 dark:text-dark-600`})},$=e=>{if(C)return C(e);let t=Ie[u(e)]?.label;return t&&!e.isPersona?t:e.isLegacySelection?`${Le(e)??e.name} (${I(`modelSelector.legacyProvider`,`provider not recorded`)})`:e.isPersona?Le(e)||e.personaName||e.name:e.isAgent?e.isUnavailable?`${e.agentName||e.name} (${I(`modelSelector.unavailable`,`unavailable`)})`:e.agentName||e.name:(e.isPlugin,e.isUnavailable?`${e.name} (${I(`modelSelector.unavailable`,`unavailable`)})`:e.name)},et=e=>e.isLegacySelection?e.isUnavailable?I(`modelSelector.providerUnavailable`,`provider unavailable`):I(`modelSelector.reselectProvider`,`reselect a provider to pin this model`):e.isPersona?`via ${e.model}`:e.isPlugin?e.isUnavailable?`via ${e.pluginName||e.pluginId} · ${I(`modelSelector.providerUnavailable`,`provider unavailable`)}`:`via ${e.pluginName}`:e.isUnavailable?I(`modelSelector.providerUnavailable`,`provider unavailable`):null;return(0,P.jsxs)(`div`,{className:c(`relative`,o),ref:de,children:[(0,P.jsxs)(`button`,{ref:fe,"data-testid":k,type:`button`,onClick:()=>!p&&R(!L),disabled:p,"aria-haspopup":`dialog`,"aria-expanded":L,"aria-label":F&&Z?`${F}: ${$(Z)}`:F,className:c(_?`h-9 sm:h-10 px-2.5 flex items-center justify-between text-start w-full`:`w-full flex items-center justify-between gap-2 px-3 py-2.5 text-start`,`border border-black/[0.06] bg-gray-100/70 dark:border-white/[0.06] dark:bg-dark-300/70`,`rounded-xl text-sm hover:bg-gray-100 dark:hover:bg-dark-300`,`transition-colors duration-150 focus:outline-none focus:ring-2 focus:ring-primary-500/20 focus:border-primary-500/40`,p?`opacity-50 cursor-not-allowed`:`cursor-pointer`),title:_?Z?ee?.(Z)??$(Z):I(`modelSelector.selectModel`):void 0,children:[(()=>{if(!Z)return _?(0,P.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,P.jsx)(D,{className:`h-4 w-4`}),(0,P.jsx)(`span`,{className:`text-xs font-medium text-gray-400 dark:text-gray-500 truncate`,children:I(`modelSelector.selectModel`)})]}):I(`modelSelector.selectModel`);if(_){let e=$(Z);return(0,P.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[$e(Z),(0,P.jsx)(`span`,{dir:Z.isPersona?`auto`:`ltr`,className:`text-xs font-medium text-gray-700 dark:text-gray-200 truncate`,children:e})]})}let e=$(Z),t=et(Z);return(0,P.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[$e(Z),(0,P.jsxs)(`div`,{className:`flex flex-col min-w-0`,children:[(0,P.jsx)(`span`,{dir:Z.isPersona?`auto`:`ltr`,className:`text-sm font-medium truncate`,children:e}),t&&(0,P.jsx)(`span`,{dir:`auto`,className:`text-xs text-gray-500 dark:text-gray-400 truncate`,children:t})]}),Z.isPersona&&r&&(0,P.jsxs)(`div`,{className:`flex items-center gap-1 ms-auto`,children:[(0,P.jsx)(E,{className:`h-3 w-3 text-gray-500 dark:text-dark-600`}),r.embedding_model&&(0,P.jsx)(f,{className:`h-3 w-3 text-gray-400 dark:text-dark-500`})]})]})})(),(0,P.jsx)(m,{className:c(_?`h-3 w-3`:`h-4 w-4`,`text-gray-400 flex-shrink-0 transition-transform duration-150`,L&&`rotate-180`)})]}),L&&(0,ae.createPortal)((0,P.jsxs)(`div`,{className:`fixed inset-0 z-[999999] flex items-center justify-center p-3 sm:p-6`,children:[(0,P.jsx)(`div`,{className:`absolute inset-0 bg-gray-950/55 backdrop-blur-md`,onClick:()=>Q()}),(0,P.jsxs)(`div`,{ref:H,role:`dialog`,"aria-modal":`true`,"aria-label":I(`modelSelector.selectModel`),className:c(`relative flex w-full max-w-xl flex-col overflow-hidden bg-white/[0.98] dark:bg-dark-25/[0.98]`,`h-[min(620px,88vh)] rounded-[1.5rem] border border-black/[0.08] dark:border-white/[0.09]`,`shadow-[0_30px_100px_rgba(0,0,0,0.28)] backdrop-blur-xl animate-scale-in`),onClick:e=>e.stopPropagation(),children:[(0,P.jsxs)(`div`,{className:`flex-shrink-0`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between px-4 pb-2 pt-4 sm:px-5 sm:pt-5`,children:[(0,P.jsx)(`h2`,{className:`text-lg font-medium tracking-[-0.025em] text-gray-950 dark:text-dark-950 rtl:tracking-normal`,children:I(`modelSelector.selectModel`)}),(0,P.jsx)(`button`,{type:`button`,onClick:()=>Q(),className:`flex h-9 w-9 items-center justify-center rounded-full text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-950 dark:text-dark-500 dark:hover:bg-dark-200 dark:hover:text-dark-950`,title:I(`common.close`),children:(0,P.jsx)(O,{className:`h-4 w-4`})})]}),(0,P.jsx)(`div`,{className:`px-4 pb-3 sm:px-5`,children:(0,P.jsxs)(`div`,{className:`relative`,children:[(0,P.jsx)(x,{className:`absolute start-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400`}),(0,P.jsx)(`input`,{ref:pe,type:`text`,placeholder:I(V===`installed`?`modelSelector.searchInstalled`:V===`ollama`?`modelSelector.searchOllama`:`modelSelector.searchHuggingFace`),value:z,onChange:e=>B(e.target.value),className:c(`w-full rounded-xl border border-black/[0.07] bg-gray-100/70 py-2.5 ps-10 pe-4 text-sm dark:border-white/[0.07] dark:bg-dark-200/70`,`focus:outline-none focus:ring-2 focus:ring-primary-500/20`,`text-gray-900 dark:text-dark-900 placeholder:text-gray-400 dark:placeholder:text-dark-500`)})]})}),(0,P.jsxs)(`div`,{className:`mx-4 mb-3 flex rounded-xl bg-gray-100/70 p-1 dark:bg-dark-200/70 sm:mx-5`,children:[(0,P.jsxs)(`button`,{onClick:()=>{ue(`installed`)},className:c(`flex-1 rounded-lg px-2 py-2 text-xs font-medium transition-colors sm:px-4`,V===`installed`?`bg-white text-gray-950 shadow-sm dark:bg-dark-300 dark:text-dark-950`:`text-gray-500 hover:text-gray-800 dark:text-dark-500 dark:hover:text-dark-800`),"aria-pressed":V===`installed`,children:[(0,P.jsx)(h,{className:`h-4 w-4 inline me-1.5`}),I(`modelSelector.installed`)]}),(0,P.jsxs)(`button`,{onClick:()=>{ue(`ollama`)},className:c(`flex-1 rounded-lg px-2 py-2 text-xs font-medium transition-colors sm:px-4`,V===`ollama`?`bg-white text-gray-950 shadow-sm dark:bg-dark-300 dark:text-dark-950`:`text-gray-500 hover:text-gray-800 dark:text-dark-500 dark:hover:text-dark-800`),"aria-pressed":V===`ollama`,children:[(0,P.jsx)(g,{className:`h-4 w-4 inline me-1.5`}),`Ollama`]}),(0,P.jsxs)(`button`,{onClick:()=>{ue(`huggingface`)},className:c(`flex-1 rounded-lg px-2 py-2 text-xs font-medium transition-colors sm:px-4`,V===`huggingface`?`bg-white text-gray-950 shadow-sm dark:bg-dark-300 dark:text-dark-950`:`text-gray-500 hover:text-gray-800 dark:text-dark-500 dark:hover:text-dark-800`),"aria-pressed":V===`huggingface`,children:[(0,P.jsx)(A,{className:`h-4 w-4 inline me-1.5`}),`HuggingFace`]})]})]}),V===`installed`&&(0,P.jsx)(se,{filteredGroups:Fe,selectedModel:t,showImageGen:v,getModelValue:Y,getModelIcon:$e,getModelLabel:$,getModelSubLabel:et,onModelSelect:Ye,onOpenGallery:()=>{Q(!1),me(`/gallery`)}}),V===`ollama`&&(0,P.jsx)(ce,{libraryCategories:Pe,libraryCategory:W,canInstallModels:U,loadingLibrary:Be,filteredLibraryModels:Ge,pullingModel:G,pullProgress:Me,setLibraryCategory:_e,isModelInstalled:Qe,onModelSelect:Ye,onPullModel:Xe,onCancelPull:Ze,onRefreshLibrary:()=>{Ve()}}),V===`huggingface`&&(0,P.jsx)(oe,{hfTask:be,hfSort:Se,canInstallModels:U,loadingHf:Ue,hfModels:He,expandedHfModel:Ee,hfGgufFiles:Oe,loadingGguf:Ae,pullingModel:G,pullProgress:Me,setHfTask:xe,setHfSort:Ce,onToggleHfModel:qe,onPullHfGguf:Je,onCancelPull:Ze,onRefreshHfModels:()=>{We()}})]})]}),document.body),(0,P.jsx)(`select`,{"data-testid":re,"aria-label":F,"aria-hidden":`true`,dir:`ltr`,value:t,onChange:n,className:`hidden`,tabIndex:-1,children:e.map(e=>(0,P.jsx)(`option`,{value:Y(e),children:$(e)},`${e.isLegacySelection?`legacy`:e.isPersona?`persona`:e.isPlugin?`plugin`:`ollama`}:${e.pluginId||``}:${Y(e)}`))})]})},L=o(`hooks:dictation`),R=()=>{if(typeof window>`u`)return;let e=window;return e.SpeechRecognition||e.webkitSpeechRecognition},z=[{mimeType:`audio/webm;codecs=opus`,format:`webm`}],B=300,V=.25,ue=e=>`${encodeURIComponent(e.plugin)}:${encodeURIComponent(e.model)}`;function de(e){if(typeof MediaRecorder>`u`)return;let t=new Set((e.config?.formats||[]).map(e=>e.toLowerCase()));return z.find(e=>(t.size===0||t.has(e.format))&&(typeof MediaRecorder.isTypeSupported!=`function`||MediaRecorder.isTypeSupported(e.mimeType)))?.mimeType}function H({onStart:e,onText:t,ownerKey:n}){let{t:r,i18n:i}=s(),[a,o]=(0,N.useState)(`idle`),[c,l]=(0,N.useState)([]),u=(0,N.useRef)(null),d=(0,N.useRef)(null),f=(0,N.useRef)(null),p=(0,N.useRef)(null),m=(0,N.useRef)(null),h=(0,N.useRef)(0),g=(0,N.useRef)(`idle`),_=(0,N.useRef)(void 0),v=(0,N.useRef)(e),y=(0,N.useRef)(t);(0,N.useEffect)(()=>{v.current=e,y.current=t},[e,t]),(0,N.useEffect)(()=>{let e=!1;return re.getModels().then(t=>{!e&&t.success&&t.data&&l(t.data)}).catch(()=>{e||l([])}),()=>{e=!0}},[]);let b=(0,N.useMemo)(()=>typeof window<`u`&&window.isSecureContext&&typeof navigator<`u`&&!!navigator.mediaDevices&&!!R(),[]),x=typeof window<`u`&&window.isSecureContext&&typeof navigator<`u`&&!!navigator.mediaDevices?.getUserMedia,S=(0,N.useMemo)(()=>[...b?[{key:`browser`,kind:`browser`}]:[],...x?c.filter(e=>!!de(e)).map(e=>({key:ue(e),kind:`provider`,model:e})):[]],[b,x,c]),[C,ee]=(0,N.useState)(``),w=(0,N.useMemo)(()=>S.find(e=>e.key===C)??S[0],[C,S]),T=w?.kind===`provider`?w.model:void 0,E=S.length>0,D=(0,N.useCallback)(()=>{m.current!==null&&(window.clearTimeout(m.current),m.current=null)},[]),O=(0,N.useCallback)(e=>{g.current=e,o(e)},[]),k=(0,N.useCallback)(()=>{h.current+=1,D(),u.current?.stop(),u.current=null,p.current?.abort(),p.current=null;let e=d.current;d.current=null,e&&(e.ondataavailable=null,e.onerror=null,e.onstop=null,e.state===`recording`&&e.stop()),f.current?.getTracks().forEach(e=>e.stop()),f.current=null,O(`idle`)},[D,O]);return(0,N.useEffect)(()=>(_.current=n,k),[k,n]),{supported:E,phase:a,toggle:(0,N.useCallback)(async()=>{let e=g.current;if(e===`starting`||e===`transcribing`){k();return}if(e===`recording`){d.current?.state===`recording`?(O(`transcribing`),d.current.stop()):k();return}if(T){let e=h.current+1;h.current=e;let t=_.current;v.current(),O(`starting`);try{let n=await navigator.mediaDevices.getUserMedia({audio:!0});if(h.current!==e||_.current!==t){n.getTracks().forEach(e=>e.stop());return}f.current=n;let a=de(T),o=a?new MediaRecorder(n,{mimeType:a}):new MediaRecorder(n),s=[];o.ondataavailable=e=>{e.data.size>0&&s.push(e.data)},o.onerror=()=>{n.getTracks().forEach(e=>e.stop()),D(),h.current===e&&(d.current=null,f.current=null,O(`idle`),j.error(r(`voiceMode.transcriptionFailed`)))},o.onstop=()=>{if(n.getTracks().forEach(e=>e.stop()),D(),h.current!==e||_.current!==t)return;if(d.current=null,f.current=null,s.length===0){O(`idle`);return}let a=new Blob(s,{type:o.mimeType||s[0].type||`audio/webm`}),c=new AbortController;p.current=c,O(`transcribing`),re.transcribe(a,T,{language:i.language,signal:c.signal,fallbackMessage:r(`voiceMode.transcriptionFailed`)}).then(n=>{h.current!==e||_.current!==t||c.signal.aborted||y.current(n.text.trim())}).catch(e=>{c.signal.aborted||(L.error(`Provider transcription failed:`,e),j.error(e instanceof Error?e.message:r(`voiceMode.transcriptionFailed`)))}).finally(()=>{p.current===c&&h.current===e&&(p.current=null,O(`idle`))})},d.current=o,o.start(250);let c=T.config?.max_duration_seconds,l=typeof c==`number`&&c>0?Math.min(c,B):B;m.current=window.setTimeout(()=>{h.current===e&&o.state===`recording`&&o.stop()},Math.max(.1,l-V)*1e3),O(`recording`);return}catch(t){if(h.current!==e)return;L.error(`Failed to start provider dictation:`,t),D(),f.current?.getTracks().forEach(e=>e.stop()),f.current=null,d.current=null,O(`idle`),j.error(r(`voiceMode.transcriptionFailed`));return}}let t=R();if(!t)return;let n=h.current+1;h.current=n;let a=_.current,o=new t;o.lang=i.language,o.continuous=!0,o.interimResults=!0,v.current(),o.onresult=e=>{if(h.current!==n||_.current!==a||u.current!==o)return;let t=``;for(let n=0;n<e.results.length;n++)t+=e.results[n][0]?.transcript??``;y.current(t.trim())},o.onend=()=>{h.current===n&&(u.current=null,O(`idle`))},o.onerror=()=>{h.current===n&&(u.current=null,O(`idle`))},u.current=o,O(`recording`);try{o.start()}catch(e){L.error(`Failed to start dictation:`,e),u.current=null,O(`idle`)}},[k,D,i.language,T,O,r]),cancel:k,sources:S,activeSourceKey:w?.key??``,setSourceKey:ee,providerModel:T}}export{I as n,H as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./workApi-CqIVWrXF.js";export{e as workApi};