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,4 +1,4 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t}from"./react-vendor-D0Ec-185.js";import{a as n,t as r}from"./logger-DnuT4jgB.js";import{t as i}from"./useTranslation-D0mJ4NnO.js";import{i as a,o}from"./utils-Bn0RE9_8.js";import{g as s,t as c}from"./chatStore-DW0LsT5X.js";import{yr as l}from"./ui-vendor-DvJV-69N.js";import{t as u}from"./config-nmgpdBW-.js";import{N as d,d as f}from"./api-T6SWjL0K.js";import{n as p}from"./authStore-Bl7S8bPg.js";import{t as m}from"./appStore-BonCvc8Q.js";import{c as h,s as g}from"./artifactHtml-DDmfpcB0.js";var _=e(t(),1),ee=/```([^\n`]*)\n([\s\S]*?)\n```/g,v=/^(?:%%|flowchart|graph|sequenceDiagram|classDiagram|stateDiagram(?:-v2)?|erDiagram|journey|gantt|pie|mindmap|timeline|gitGraph|quadrantChart|requirementDiagram|sankey-beta|xychart-beta|block-beta|architecture-beta|packet-beta|kanban|radar-beta|treemap-beta|C4Context)\b/i,y=/[\w@./-]+\.(?:html?|css|mjs|js|jsx|ts|tsx|svg|json|py)/i,b=[`html`,`react`,`svg`,`mermaid`,`chart`,`code`,`text`,`json`],te=[{regex:/<artifact\s+type="([^"]+)"\s+title="([^"]+)"[^>]*>([\s\S]*?)<\/artifact>/gi,extract:e=>({type:ie(e[1]),title:x(e[2]).trim()||`Artifact`,content:e[3].trim()})},{regex:/<artifact\s+type="([^"]+)"[^>]*>([\s\S]*?)<\/artifact>/gi,extract:e=>{let t=ie(e[1]);return{type:t,title:`${t.toUpperCase()} Artifact`,content:e[2].trim()}}}];function x(e){if(typeof document<`u`){let t=document.createElement(`div`);return t.innerHTML=e,t.textContent||t.innerText||``}return C(S(e))}function S(e){return e.replace(/&(lt|gt|quot|apos|#39);/gi,(e,t)=>{switch(t.toLowerCase()){case`lt`:return`<`;case`gt`:return`>`;case`quot`:return`"`;case`apos`:case`#39`:return`'`;default:return``}}).replace(/&amp;/gi,`&`)}function C(e){let t=``,n=!1,r=null;for(let i=0;i<e.length;i+=1){let a=e[i];if(n){if(r){a===r&&(r=null);continue}if(a===`"`||a===`'`){r=a;continue}a===`>`&&(n=!1);continue}if(a===`<`){let t=e[i+1];if(t&&/[!/A-Za-z?]/.test(t)){n=!0;continue}}t+=a}return t}function ne(e){let t=e.match(/<title[^>]*>([\s\S]*?)<\/title>/i);if(t)return x(t[1]).trim()||null;let n=e.match(/<h1[^>]*>([\s\S]*?)<\/h1>/i);return n&&x(n[1]).trim()||null}function w(e){for(let t of[/export\s+default\s+(?:function|class)\s+([A-Z]\w*)/,/export\s+default\s+([A-Z]\w*)\s*(?:;|$)/m,/(?:function|class)\s+([A-Z]\w*)/,/const\s+([A-Z]\w*)\s*[:=]/,/(?:function|const|class)\s+(\w+)/]){let n=e.match(t);if(n)return n[1]}return null}function T(e){let t=e.match(/^\s*title\s+(.+)$/im);if(t)return t[1].trim();let n=e.trim().match(/^([A-Za-z][\w-]*)/);if(!n)return null;let r=n[1].replace(/-(?:beta|v2)$/i,``).replace(/([a-z])([A-Z])/g,`$1 $2`);return`${r.charAt(0).toUpperCase()}${r.slice(1)}`}function E(e){if(e.includes(`def main(`))return`Python Script`;let t=e.match(/class\s+(\w+)/);if(t)return`${t[1]} Class`;let n=e.match(/def\s+(\w+)/);return n&&n[1]!==`__init__`?`${n[1]} Function`:null}function re(e){let t=e.match(/function\s+(\w+)/);if(t)return`${t[1]} Function`;let n=e.match(/(?:const|let)\s+(\w+)\s*=/);return n?n[1]:null}function ie(e){let t=e.trim().toLowerCase();return b.includes(t)?t:`text`}function D(e){if(!e)return;let t=e.trim().toLowerCase().replace(/^\./,``).replace(/[,:;]+$/,``);switch(t){case`htm`:case`html`:return`html`;case`js`:case`mjs`:case`javascript`:return`javascript`;case`jsx`:case`tsx`:case`react`:return`react`;case`ts`:case`typescript`:return`typescript`;case`py`:case`python`:return`python`;case`css`:case`svg`:case`json`:return t;default:return t||void 0}}function O(e){let t=[],n=new RegExp(ee),r;for(;(r=n.exec(e))!==null;){let n=r[1].trim(),i=k(n,oe(e,r.index));t.push({raw:r[0],info:n,content:r[2].trim(),start:r.index,end:r.index+r[0].length,language:i.language,fileName:i.fileName})}return t}function k(e,t){let n=ae(e)||t,r=e.split(/\s+/).filter(Boolean)[0]?.replace(/[{}[\]()]/g,``);return{language:(r&&!y.test(r)&&!r.includes(`=`)?D(r):void 0)||D(j(n)),fileName:n}}function ae(e){let t=e.match(/(?:file(?:name)?|path|name)\s*=\s*["']?([^"'\s]+)["']?/i);if(t&&y.test(t[1]))return A(t[1]);let n=e.match(y);return n?A(n[0]):void 0}function oe(e,t){let n=e.slice(Math.max(0,t-180),t).split(`
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t}from"./react-vendor-D0Ec-185.js";import{a as n,t as r}from"./logger-DnuT4jgB.js";import{t as i}from"./useTranslation-D0mJ4NnO.js";import{i as a,o}from"./utils-Bn0RE9_8.js";import{g as s,t as c}from"./chatStore-8jYk48hC.js";import{br as l}from"./ui-vendor-6y6qiSk5.js";import{t as u}from"./config-D4dduT3C.js";import{N as d,d as f}from"./api-DQdJeQjd.js";import{n as p}from"./authStore-DkqtNSYP.js";import{t as m}from"./appStore-BXbVcTeo.js";import{c as h,s as g}from"./artifactHtml-DDmfpcB0.js";var _=e(t(),1),ee=/```([^\n`]*)\n([\s\S]*?)\n```/g,v=/^(?:%%|flowchart|graph|sequenceDiagram|classDiagram|stateDiagram(?:-v2)?|erDiagram|journey|gantt|pie|mindmap|timeline|gitGraph|quadrantChart|requirementDiagram|sankey-beta|xychart-beta|block-beta|architecture-beta|packet-beta|kanban|radar-beta|treemap-beta|C4Context)\b/i,y=/[\w@./-]+\.(?:html?|css|mjs|js|jsx|ts|tsx|svg|json|py)/i,b=[`html`,`react`,`svg`,`mermaid`,`chart`,`code`,`text`,`json`],te=[{regex:/<artifact\s+type="([^"]+)"\s+title="([^"]+)"[^>]*>([\s\S]*?)<\/artifact>/gi,extract:e=>({type:ie(e[1]),title:x(e[2]).trim()||`Artifact`,content:e[3].trim()})},{regex:/<artifact\s+type="([^"]+)"[^>]*>([\s\S]*?)<\/artifact>/gi,extract:e=>{let t=ie(e[1]);return{type:t,title:`${t.toUpperCase()} Artifact`,content:e[2].trim()}}}];function x(e){if(typeof document<`u`){let t=document.createElement(`div`);return t.innerHTML=e,t.textContent||t.innerText||``}return C(S(e))}function S(e){return e.replace(/&(lt|gt|quot|apos|#39);/gi,(e,t)=>{switch(t.toLowerCase()){case`lt`:return`<`;case`gt`:return`>`;case`quot`:return`"`;case`apos`:case`#39`:return`'`;default:return``}}).replace(/&amp;/gi,`&`)}function C(e){let t=``,n=!1,r=null;for(let i=0;i<e.length;i+=1){let a=e[i];if(n){if(r){a===r&&(r=null);continue}if(a===`"`||a===`'`){r=a;continue}a===`>`&&(n=!1);continue}if(a===`<`){let t=e[i+1];if(t&&/[!/A-Za-z?]/.test(t)){n=!0;continue}}t+=a}return t}function ne(e){let t=e.match(/<title[^>]*>([\s\S]*?)<\/title>/i);if(t)return x(t[1]).trim()||null;let n=e.match(/<h1[^>]*>([\s\S]*?)<\/h1>/i);return n&&x(n[1]).trim()||null}function w(e){for(let t of[/export\s+default\s+(?:function|class)\s+([A-Z]\w*)/,/export\s+default\s+([A-Z]\w*)\s*(?:;|$)/m,/(?:function|class)\s+([A-Z]\w*)/,/const\s+([A-Z]\w*)\s*[:=]/,/(?:function|const|class)\s+(\w+)/]){let n=e.match(t);if(n)return n[1]}return null}function T(e){let t=e.match(/^\s*title\s+(.+)$/im);if(t)return t[1].trim();let n=e.trim().match(/^([A-Za-z][\w-]*)/);if(!n)return null;let r=n[1].replace(/-(?:beta|v2)$/i,``).replace(/([a-z])([A-Z])/g,`$1 $2`);return`${r.charAt(0).toUpperCase()}${r.slice(1)}`}function E(e){if(e.includes(`def main(`))return`Python Script`;let t=e.match(/class\s+(\w+)/);if(t)return`${t[1]} Class`;let n=e.match(/def\s+(\w+)/);return n&&n[1]!==`__init__`?`${n[1]} Function`:null}function re(e){let t=e.match(/function\s+(\w+)/);if(t)return`${t[1]} Function`;let n=e.match(/(?:const|let)\s+(\w+)\s*=/);return n?n[1]:null}function ie(e){let t=e.trim().toLowerCase();return b.includes(t)?t:`text`}function D(e){if(!e)return;let t=e.trim().toLowerCase().replace(/^\./,``).replace(/[,:;]+$/,``);switch(t){case`htm`:case`html`:return`html`;case`js`:case`mjs`:case`javascript`:return`javascript`;case`jsx`:case`tsx`:case`react`:return`react`;case`ts`:case`typescript`:return`typescript`;case`py`:case`python`:return`python`;case`css`:case`svg`:case`json`:return t;default:return t||void 0}}function O(e){let t=[],n=new RegExp(ee),r;for(;(r=n.exec(e))!==null;){let n=r[1].trim(),i=k(n,oe(e,r.index));t.push({raw:r[0],info:n,content:r[2].trim(),start:r.index,end:r.index+r[0].length,language:i.language,fileName:i.fileName})}return t}function k(e,t){let n=ae(e)||t,r=e.split(/\s+/).filter(Boolean)[0]?.replace(/[{}[\]()]/g,``);return{language:(r&&!y.test(r)&&!r.includes(`=`)?D(r):void 0)||D(j(n)),fileName:n}}function ae(e){let t=e.match(/(?:file(?:name)?|path|name)\s*=\s*["']?([^"'\s]+)["']?/i);if(t&&y.test(t[1]))return A(t[1]);let n=e.match(y);return n?A(n[0]):void 0}function oe(e,t){let n=e.slice(Math.max(0,t-180),t).split(`
2
2
  `).slice(-3).reverse();for(let e of n){let t=e.trim().replace(/^#{1,6}\s*/,``).replace(/^[-*]\s*/,``).replace(/[::]\s*$/,``).match(y);if(t)return A(t[0])}}function A(e){return e.replace(/^["'`]+|["'`:]+$/g,``)}function j(e){return e?.match(/\.([a-z0-9]+)$/i)?.[1]}function M(e){return e?.split(/[\\/]/).pop()}function N(e){let t=M(e);if(!t)return null;let n=t.replace(/\.[^.]+$/,``);return/^(index|main|app)$/i.test(n)?null:n.replace(/[-_]+/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function P(e){let t=Date.now();return{...e,id:`artifact-${t}-${Math.random().toString(36).slice(2,11)}`,createdAt:t,updatedAt:t}}function F(e){let t=D(e.language)||D(j(e.fileName));switch(t){case`html`:return{type:`html`,title:ne(e.content)||N(e.fileName)||`HTML Document`};case`svg`:return{type:`svg`,title:N(e.fileName)||`SVG Image`};case`react`:return{type:`react`,title:w(e.content)||N(e.fileName)||`React Component`,language:`jsx`};case`mermaid`:return{type:`mermaid`,title:T(e.content)||`Diagram`,language:`mermaid`};case`json`:return{type:`json`,title:N(e.fileName)||`JSON Data`};case`python`:return{type:`code`,title:E(e.content)||N(e.fileName)||`Python Code`,language:`python`};case`css`:return{type:`code`,title:N(e.fileName)||`CSS Styles`,language:`css`};case`javascript`:return{type:`code`,title:re(e.content)||N(e.fileName)||`JavaScript Code`,language:`javascript`};case`typescript`:return{type:`code`,title:N(e.fileName)||`TypeScript Code`,language:`typescript`};default:return t?{type:`code`,title:N(e.fileName)||`${t.toUpperCase()} Code`,language:t}:null}}function I(e){return(D(e.language)||D(j(e.fileName)))===`html`}function L(e){return(D(e.language)||D(j(e.fileName)))===`css`}function R(e){return(D(e.language)||D(j(e.fileName)))===`javascript`}function z(e){let t=O(e),n=t.filter(I);if(n.length===0)return null;let r=t.filter(L),i=t.filter(R);if(r.length===0&&i.length===0)return null;let a=n.find(e=>/(^|[/\\])index\.html?$/i.test(e.fileName||``))||n[0],o=B(a.content,r,i),s=h(o,r.map(e=>e.content),i.map(e=>e.content));return W(s,`html`)?{artifact:P({type:`html`,title:ne(s)||N(a.fileName)||`Interactive HTML App`,description:`Bundled generated HTML, CSS, and JavaScript files into one runnable artifact.`,content:s}),ranges:[a,...r,...i]}:null}function B(e,t,n){let r=e;for(let e of t){let t=M(e.fileName);t&&(r=r.replace(RegExp(`<link\\b[^>]*href=["'][^"']*${U(t)}["'][^>]*>`,`gi`),``))}for(let e of n){let t=M(e.fileName);t&&(r=r.replace(RegExp(`<script\\b[^>]*src=["'][^"']*${U(t)}["'][^>]*>\\s*<\\/script>`,`gi`),``))}return r}function V(e){let t=/<!doctype\s+html|<html[\s>]/i.exec(e);if(!t||t.index===void 0)return null;let n=O(e);if(se(t.index,n))return null;let r=t.index,i=/<\/html>/gi;i.lastIndex=r;let a=i.exec(e),o=a?a.index+a[0].length:e.length,s=e.slice(r,o).trim();return W(s,`html`)?{artifact:P({type:`html`,title:ne(s)||`HTML Document`,content:s}),ranges:[{start:r,end:o}]}:null}function se(e,t){return t.some(t=>e>=t.start&&e<=t.end)}function H(e,t){return[...t].sort((e,t)=>t.start-e.start).reduce((e,t)=>`${e.slice(0,t.start)}${e.slice(t.end)}`,e)}function U(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function W(e,t){if(t===`html`){let t=e.trim(),n=/<[^>]+>/.test(t),r=/<(canvas|script|style|button|form|input|select|textarea|video|audio)\b/i.test(t)||/\bon(?:click|input|submit|keydown|keyup|mousemove)=/i.test(t);return n&&(g(t)||t.length>160||r)}if(t===`svg`)return/<svg[^>]*>/.test(e);if(t===`react`)return/<[A-Za-z][^>]*>/.test(e)&&/\b(?:export\s+default|return\s*[(<]|=>\s*[(<]|createRoot|render\s*\()/.test(e);if(t===`mermaid`)return v.test(e.trim());if(t===`json`)try{return JSON.parse(e),e.trim().length>100}catch{return!1}if(t===`code`){let t=e.split(`
3
3
  `).length,n=e.trim().length,r=/function|class|def |import |from |const |let |var |if |for |while |try |catch/.test(e);return(n>500||t>15)&&r}return e.trim().length>200}function ce(e){let t=[],n=e;for(let e of te){e.regex.lastIndex=0;let r=[],i;for(;(i=e.regex.exec(n))!==null;){let n=e.extract(i);W(n.content,n.type)&&(t.push(P({type:n.type,title:n.title,content:n.content})),r.push({start:i.index,end:i.index+i[0].length}))}n=H(n,r)}let r=z(n);for(;r;)t.push(r.artifact),n=H(n,r.ranges),r=z(n);let i=V(n);i&&(t.push(i.artifact),n=H(n,i.ranges));let a=O(n),o=[];for(let e of a){let n=F(e);!n||!W(e.content,n.type)||(t.push(P({type:n.type,title:n.title,content:e.content,language:n.language})),o.push(e))}return n=H(n,o),{content:n.trim(),artifacts:t}}var G=new Map;function le(e,t,n=``){let r=G.get(e);if(n){if((!r||r.state===`none`)&&(G.set(e,{state:`open`,startedAt:Date.now()}),!t))return;let n=G.get(e);t&&n?.state===`open`&&G.set(e,{state:`done`,durationMs:Date.now()-n.startedAt});return}if(r&&r.state!==`open`||!t)return;let i=o(t);if(!r){i.thinkingComplete?G.set(e,{state:`none`}):G.set(e,{state:`open`,startedAt:Date.now()});return}i.thinkingComplete&&G.set(e,{state:`done`,durationMs:Date.now()-r.startedAt})}function K(e){let t=G.get(e);if(t){if(t.state===`done`)return t.durationMs;if(t.state===`open`)return Date.now()-t.startedAt}}function ue(e){let t=G.get(e);if(G.delete(e),t){if(t.state===`done`)return t.durationMs;if(t.state===`open`)return Date.now()-t.startedAt}}function q(e){let t=e/1e3;if(t<.95)return`${Math.max(.1,Math.round(t*10)/10)}s`;if(t<60)return`${Math.round(t)}s`;let n=Math.floor(t/60),r=Math.round(t%60);return r>0?`${n}m ${r}s`:`${n}m`}var de=(e,t)=>{c.setState(n=>{let r=n=>n&&n.id===e?{...n,settings:{...n.settings,...t.length>0?{promptQueue:t}:{promptQueue:void 0}}}:n;return{currentSession:r(n.currentSession),sessions:n.sessions.map(e=>r(e))}})},fe=(e,t)=>{t?.add(e.assistantMessageId),e.cancelRequested=!0,e.jobId&&e.abort.abort()},pe=async e=>{if(!e.cancelledMessageIds.has(e.assistantMessageId))return!1;try{let t=await(e.cancelByIdentity??Z)(e.sessionId,e.assistantMessageId);await e.settle(t)}catch(t){e.onError?.(t)}return!0},me=e=>{e.retainForContinuation||e.cancelledMessageIds.delete(e.assistantMessageId)},he=async(e,t,n={})=>{if(e.jobId=t.jobId,!e.cancelRequested)return`stream`;e.abort.abort();let[,r]=await Promise.allSettled([(n.byJob??ye)(t.jobId),(n.byIdentity??Z)(e.sessionId,e.assistantMessageId)]);if(r.status===`rejected`)throw r.reason;return r.value.completed?`completed`:`cancelled`},ge=async e=>{let t=await e.loadSession(e.sessionId);if(t.id!==e.sessionId)throw Error(`Reloaded chat session does not match the completed turn.`);if(!t.messages.find(t=>t.id===e.assistantMessageId&&t.role===`assistant`))throw Error(`Completed assistant message is absent from chat storage.`);return e.applySession(t),t},J=async e=>{try{let t=await e.json(),n=typeof t.error==`string`?t.error:typeof t.message==`string`?t.message:void 0;if(n)return Error(n)}catch{}return Error(`Chat event request failed with status ${e.status}.`)},Y=()=>{let e=localStorage.getItem(`auth-token`);return e?{Authorization:`Bearer ${e}`}:{}},_e=async e=>{let t=await fetch(`${u}/chat/sessions/${encodeURIComponent(e.sessionId)}/generations`,{method:`POST`,headers:{"Content-Type":`application/json`,...Y()},credentials:`same-origin`,signal:e.signal,body:JSON.stringify({message:e.message,images:e.images,userMessageId:e.userMessageId,assistantMessageId:e.assistantMessageId,options:e.options,webSearch:e.webSearch,tools:e.tools===!0,...e.toolSelection?{toolSelection:e.toolSelection}:{},regenerate:e.regenerate===!0,originalMessageId:e.originalMessageId,...e.modelOverride?{modelOverride:e.modelOverride}:{},...e.compare?{compare:!0}:{}})});if(!t.ok)throw await J(t);let n=await t.json();if(!n.data?.jobId)throw Error(`Chat generation response did not include a durable job.`);return n.data},X=async(e,t)=>{if(!e.body)throw Error(`Chat event stream has no response body.`);let n=e.body.getReader(),r=new TextDecoder,i=``,a=0,o=!1,s=e=>{let n,r=[];for(let t of e.split(`
4
4
  `))t.startsWith(`id:`)&&(n=Number(t.slice(3).trim())),t.startsWith(`data:`)&&r.push(t.slice(5).trimStart());if(!Number.isSafeInteger(n)||!r.length)return;let i=JSON.parse(r.join(`
@@ -0,0 +1 @@
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-8jYk48hC.js";import{$ as f,En as p,Gt as m,Ht as h,Jn as g,Nn as _,Nt as v,S as y,W as b,X as x,ar as S,br as C,c as w,j as ee,n as T,qn as E,qt as te,t as D,tr as O,wn as k,xn as A}from"./ui-vendor-6y6qiSk5.js";import{C as ne,g as re,t as ie,y as j}from"./api-DQdJeQjd.js";import{t as ae}from"./authStore-DkqtNSYP.js";var M=e(t(),1),oe=n(),N=r();function P(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:e.toString()}function se({hfTask:e,hfSort:t,canInstallModels:n,loadingHf:r,hfModels:i,expandedHfModel:a,hfGgufFiles:o,loadingGguf:l,pullingModel:u,pullProgress:d,setHfTask:f,setHfSort:p,onToggleHfModel:h,onPullHfGguf:g,onCancelPull:_,onRefreshHfModels:y}){let{t:b}=s();return(0,N.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden`,children:[(0,N.jsx)(`div`,{className:`px-3 py-2 border-b border-gray-200 dark:border-dark-300 flex-shrink-0 space-y-2`,children:(0,N.jsxs)(`div`,{className:`flex gap-2`,children:[(0,N.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,N.jsx)(`option`,{value:`text-generation`,children:b(`modelManager.huggingface.taskTextGeneration`)}),(0,N.jsx)(`option`,{value:`text-to-speech`,children:b(`modelManager.huggingface.taskTextToSpeech`)}),(0,N.jsx)(`option`,{value:`text-to-image`,children:b(`modelManager.huggingface.taskTextToImage`)}),(0,N.jsx)(`option`,{value:`automatic-speech-recognition`,children:b(`modelManager.huggingface.taskSpeechRecognition`)})]}),(0,N.jsxs)(`select`,{value:t,onChange:e=>p(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,N.jsx)(`option`,{value:`downloads`,children:b(`modelManager.huggingface.sortDownloads`)}),(0,N.jsx)(`option`,{value:`likes`,children:b(`modelManager.huggingface.sortLikes`)}),(0,N.jsx)(`option`,{value:`lastModified`,children:b(`modelManager.huggingface.sortRecent`)})]})]})}),(0,N.jsxs)(`div`,{className:`scroll-region min-h-0 flex-1 scrollbar-thin`,children:[!n&&(0,N.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:b(`modelSelector.pullRestricted`)}),r?(0,N.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,N.jsx)(v,{className:`h-6 w-6 animate-spin text-gray-400`})}):i.length===0?(0,N.jsxs)(`div`,{className:`px-4 py-8 text-center text-gray-500 dark:text-gray-400`,children:[(0,N.jsx)(D,{className:`h-8 w-8 mx-auto mb-2 text-gray-300 dark:text-gray-600`}),(0,N.jsx)(`p`,{className:`text-sm`,children:b(`modelManager.huggingface.noModelsFound`)})]}):(0,N.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,N.jsxs)(`div`,{className:`bg-white dark:bg-dark-100`,children:[(0,N.jsx)(`div`,{className:`px-3 py-3 cursor-pointer hover:bg-gray-50 dark:hover:bg-dark-200`,onMouseDown:t=>{t.preventDefault(),t.stopPropagation(),h(e.id)},children:(0,N.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,N.jsx)(`div`,{className:`flex-shrink-0 rounded-lg bg-yellow-500/20 p-2 dark:bg-yellow-900/30`,children:(0,N.jsx)(D,{className:`h-4 w-4 text-yellow-600 dark:text-yellow-400`})}),(0,N.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsx)(`h4`,{dir:`ltr`,className:`text-sm font-medium text-gray-900 dark:text-gray-100 truncate`,children:e.id}),e.gated&&(0,N.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,N.jsxs)(`p`,{className:`text-xs text-gray-500 dark:text-gray-400 mt-0.5`,children:[`by `,e.author]}),(0,N.jsxs)(`div`,{className:`flex items-center gap-3 mt-1.5 text-xs text-gray-400 dark:text-gray-500`,children:[(0,N.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,N.jsx)(k,{className:`h-3 w-3`}),P(e.downloads)]}),(0,N.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,N.jsx)(m,{className:`h-3 w-3`}),P(e.likes)]}),e.pipeline_tag&&(0,N.jsx)(`span`,{className:`px-1.5 py-0.5 rounded bg-gray-100 dark:bg-dark-200`,children:e.pipeline_tag})]})]}),(0,N.jsxs)(`div`,{className:`flex items-center gap-2 flex-shrink-0`,children:[(0,N.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,N.jsx)(A,{className:`h-4 w-4 text-gray-400`})}),(0,N.jsx)(E,{className:c(`h-4 w-4 text-gray-400 transition-transform`,t&&`rotate-180`)})]})]})}),t&&(0,N.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,N.jsxs)(`div`,{className:`flex items-center justify-center py-4`,children:[(0,N.jsx)(v,{className:`h-4 w-4 animate-spin text-gray-400`}),(0,N.jsx)(`span`,{className:`ml-2 text-xs text-gray-500`,children:b(`modelManager.huggingface.checkingGguf`)})]}):r.length===0?(0,N.jsx)(`div`,{className:`py-4 text-center text-xs text-gray-500 dark:text-gray-400`,children:b(`modelManager.huggingface.noGgufAvailable`)}):(0,N.jsxs)(`div`,{className:`space-y-2`,children:[(0,N.jsx)(`div`,{className:`text-xs font-medium text-gray-600 dark:text-gray-300 mb-2`,children:b(`modelManager.huggingface.ggufFilesCount`,{count:r.length})}),r.map(e=>{let t=u===e.ollamaCommand;return(0,N.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,N.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,N.jsx)(`div`,{className:`text-xs font-medium text-gray-800 dark:text-gray-200 truncate`,children:e.filename}),(0,N.jsxs)(`div`,{className:`flex items-center gap-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400`,children:[(0,N.jsx)(`span`,{children:e.sizeFormatted}),e.quantization&&(0,N.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,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsx)(`div`,{className:`text-xs text-gray-500 w-12 text-right`,children:d?.percent===void 0?`...`:`${d.percent}%`}),(0,N.jsx)(`button`,{onMouseDown:e=>{e.preventDefault(),e.stopPropagation(),_()},className:`p-1.5 rounded-lg text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20`,children:(0,N.jsx)(T,{className:`h-4 w-4`})})]}):n?(0,N.jsxs)(`button`,{onMouseDown:t=>{t.preventDefault(),t.stopPropagation(),g(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,N.jsx)(k,{className:`h-3 w-3 inline mr-1`}),b(`models.pull`)]}):(0,N.jsx)(`span`,{className:`rounded bg-amber-500/20 px-2 py-1 text-[11px] font-medium text-ink dark:bg-amber-900/30`,children:b(`modelSelector.adminOnlyPull`)})]},e.filename)}),u?.startsWith(`hf.co/`)&&u.includes(e.id)&&d?.percent!==void 0&&(0,N.jsx)(`div`,{className:`w-full bg-gray-200 dark:bg-dark-300 rounded-full h-1.5 overflow-hidden mt-2`,children:(0,N.jsx)(`div`,{className:`h-1.5 rounded-full bg-primary-500 transition-all duration-300`,style:{width:`${d.percent}%`}})})]})})]},e.id)})})]}),(0,N.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,N.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,N.jsx)(A,{className:`h-3 w-3`}),b(`modelManager.huggingface.browseAllLink`)]}),(0,N.jsx)(`button`,{onMouseDown:e=>{e.preventDefault(),e.stopPropagation(),y()},className:`p-1.5 rounded-lg hover:bg-gray-100 dark:hover:bg-dark-200`,children:(0,N.jsx)(x,{className:c(`h-3.5 w-3.5 text-gray-400`,r&&`animate-spin`)})})]})]})}function ce({filteredGroups:e,selectedModel:t,showImageGen:n,getModelValue:r,getModelIcon:i,getModelLabel:a,getModelSubLabel:o,onModelSelect:l,onOpenGallery:u}){let{t:d}=s();return(0,N.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,N.jsxs)(`div`,{children:[(0,N.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,N.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,N.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,N.jsxs)(`div`,{className:`flex items-center gap-3`,children:[i(e),(0,N.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,N.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,N.jsx)(`div`,{dir:`auto`,className:`text-xs text-gray-500 dark:text-gray-400 truncate`,children:o(e)})]}),t===n&&(0,N.jsx)(g,{className:`h-4 w-4 text-primary-600 dark:text-primary-400 flex-shrink-0`})]})},n)})]},e.type)):(0,N.jsxs)(`div`,{className:`px-4 py-8 text-center text-gray-500 dark:text-gray-400`,children:[(0,N.jsx)(p,{className:`h-8 w-8 mx-auto mb-2 text-gray-300 dark:text-gray-600`}),(0,N.jsx)(`p`,{className:`text-sm`,children:d(`models.noModelsFound`)})]}),n&&(0,N.jsxs)(`div`,{className:`border-t border-gray-200 dark:border-dark-300`,children:[(0,N.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,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsx)(f,{className:`h-4 w-4 text-blue-600 dark:text-blue-400`}),d(`modelSelector.actions`)]})}),(0,N.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,N.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,N.jsx)(h,{className:`h-4 w-4 text-blue-600 dark:text-blue-400`}),(0,N.jsxs)(`div`,{className:`flex-1`,children:[(0,N.jsx)(`div`,{className:`text-sm font-medium text-gray-900 dark:text-gray-100`,children:d(`gallery.generate`)}),(0,N.jsx)(`div`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:d(`gallery.generateDescription`)})]})]})})]})]})}function le({libraryCategories:e,libraryCategory:t,canInstallModels:n,loadingLibrary:r,filteredLibraryModels:i,pullingModel:a,pullProgress:o,setLibraryCategory:l,isModelInstalled:u,onModelSelect:d,onPullModel:f,onCancelPull:p,onRefreshLibrary:m}){let{t:h}=s();return(0,N.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden`,children:[(0,N.jsx)(`div`,{className:`px-3 py-2 border-b border-gray-200 dark:border-dark-300 flex-shrink-0`,children:(0,N.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:e.map(e=>(0,N.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,N.jsxs)(`div`,{className:`scroll-region min-h-0 flex-1 scrollbar-thin`,children:[!n&&(0,N.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:h(`modelSelector.pullRestricted`)}),r?(0,N.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,N.jsx)(v,{className:`h-6 w-6 animate-spin text-gray-400`})}):i.length===0?(0,N.jsxs)(`div`,{className:`px-4 py-8 text-center text-gray-500 dark:text-gray-400`,children:[(0,N.jsx)(_,{className:`h-8 w-8 mx-auto mb-2 text-gray-300 dark:text-gray-600`}),(0,N.jsx)(`p`,{className:`text-sm`,children:h(`models.noModelsFound`)})]}):(0,N.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,N.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,N.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,N.jsx)(`div`,{className:`p-2 rounded-lg bg-blue-100 dark:bg-blue-900/30 flex-shrink-0`,children:(0,N.jsx)(_,{className:`h-4 w-4 text-blue-600 dark:text-blue-400`})}),(0,N.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsx)(`h4`,{dir:`ltr`,className:`text-sm font-medium text-gray-900 dark:text-gray-100 truncate`,children:e.name}),t&&(0,N.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:h(`modelSelector.installed`)}),(e.category===`cloud`||e.tags?.includes(`cloud`))&&(0,N.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,N.jsx)(_,{className:`h-3 w-3`}),`Cloud`]})]}),(0,N.jsx)(`p`,{className:`text-xs text-gray-500 dark:text-gray-400 line-clamp-1 mt-0.5`,children:e.description}),(0,N.jsxs)(`div`,{className:`flex items-center gap-2 mt-1.5`,children:[e.sizes.slice(0,3).map(e=>(0,N.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,N.jsxs)(`span`,{className:`text-xs text-gray-400 dark:text-gray-500 flex items-center gap-1`,children:[(0,N.jsx)(k,{className:`h-3 w-3`}),e.pulls]})]})]}),(0,N.jsx)(`div`,{className:`flex-shrink-0`,children:r?(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsx)(`div`,{className:`text-xs text-gray-500 w-12 text-right`,children:o?.percent===void 0?`...`:`${o.percent}%`}),(0,N.jsx)(`button`,{onClick:p,className:`p-1.5 rounded-lg text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20`,children:(0,N.jsx)(T,{className:`h-4 w-4`})})]}):t?(0,N.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:h(`modelSelector.use`)}):n?(0,N.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,N.jsx)(k,{className:`h-3 w-3 inline mr-1`}),h(`modelSelector.pull`)]}):(0,N.jsx)(`span`,{className:`rounded bg-amber-500/20 px-2 py-1 text-[11px] font-medium text-ink dark:bg-amber-900/30`,children:h(`modelSelector.adminOnlyPull`)})})]}),r&&o?.percent!==void 0&&(0,N.jsx)(`div`,{className:`mt-2 w-full bg-gray-200 dark:bg-dark-300 rounded-full h-1.5 overflow-hidden`,children:(0,N.jsx)(`div`,{className:`h-1.5 rounded-full bg-primary-500 transition-all duration-300`,style:{width:`${o.percent}%`}})})]},e.name)})})]}),(0,N.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,N.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,N.jsx)(A,{className:`h-3 w-3`}),h(`modelManager.huggingface.browseAllLink`)]}),(0,N.jsx)(`button`,{onMouseDown:e=>{e.preventDefault(),e.stopPropagation(),m()},className:`p-1.5 rounded-lg hover:bg-gray-100 dark:hover:bg-dark-200`,children:(0,N.jsx)(x,{className:c(`h-3.5 w-3.5 text-gray-400`,r&&`animate-spin`)})})]})]})}var ue=o(`components:model-selector`),F=({models:e,selectedModel:t,onModelChange:n,currentPersona:r,className:o,disabled:f=!1,compact:p=!1,showImageGen:m=!1,onModelsRefresh:h,getModelValue:g,getModelLabel:v,getModelTitle:x,triggerRef:k,triggerTestId:A,selectTestId:ie,ariaLabel:P})=>{let{t:F}=s(),[I,L]=(0,M.useState)(!1),[R,z]=(0,M.useState)(``),[B,V]=(0,M.useState)(`installed`),de=(0,M.useRef)(null),H=(0,M.useRef)(null),fe=(0,M.useRef)(null),pe=(0,M.useRef)(null),me=a(),{user:he,systemInfo:ge}=ae(),U=he?.role===`admin`||ge?.requiresAuth===!1,[W,_e]=(0,M.useState)(`all`),[ve,ye]=(0,M.useState)(``),[be,xe]=(0,M.useState)(`text-generation`),[Se,Ce]=(0,M.useState)(`downloads`),[we,Te]=(0,M.useState)(``),[Ee,De]=(0,M.useState)(null),[Oe,ke]=(0,M.useState)({}),[Ae,je]=(0,M.useState)(null),[G,K]=(0,M.useState)(null),[Me,q]=(0,M.useState)(null),[Ne,J]=(0,M.useState)(null),Pe=[`all`,`general`,`coding`,`reasoning`,`vision`,`embedding`,`cloud`],Fe=[{type:`legacy`,label:F(`modelSelector.providerNotRecorded`,`Provider not recorded`),icon:(0,N.jsx)(O,{className:`h-4 w-4 text-gray-500 dark:text-dark-600`}),models:e.filter(e=>e.isLegacySelection),color:`gray`},{type:`unavailable`,label:F(`modelSelector.unavailableSelections`,`Unavailable selections`),icon:(0,N.jsx)(T,{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:F(`modelSelector.personas`),icon:(0,N.jsx)(w,{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:F(`modelSelector.agentModels`,`Agents`),icon:(0,N.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:F(`modelSelector.ollamaModels`),icon:(0,N.jsx)(S,{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:F(`modelSelector.pluginModels`),icon:(0,N.jsx)(D,{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(R.toLowerCase())||e.personaName&&e.personaName.toLowerCase().includes(R.toLowerCase())||e.pluginName&&e.pluginName.toLowerCase().includes(R.toLowerCase()))})).filter(e=>e.models.length>0),Y=e=>g?.(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,M.useImperativeHandle)(k,()=>fe.current);let Q=(0,M.useCallback)((e=!0)=>{L(!1),z(``),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 j.getLibraryModels({search:ve||void 0,sort:`popular`,category:W===`cloud`?`cloud`:void 0});return e.success&&e.data?e.data:[]},enabled:I&&B===`ollama`}),{data:He=[],isLoading:Ue,refetch:We}=i({queryKey:[`hf-models-selector`,be,we,Se],queryFn:async()=>{let e=await ne.getModels({task:be,search:we||void 0,sort:Se,limit:30});return e.success&&e.data?e.data:[]},enabled:I&&B===`huggingface`}),Ge=ze.filter(e=>{let t=!R||e.name.toLowerCase().includes(R.toLowerCase())||e.description.toLowerCase().includes(R.toLowerCase()),n=W===`all`||e.category===W;return t&&n}),Ke=(0,M.useCallback)(async e=>{let[t,n]=e.split(`/`);if(!(!t||!n)){je(e);try{let r=await ne.getGgufFiles(t,n);r.success&&r.data&&ke(t=>({...t,[e]:r.data}))}catch(e){ue.error(`Failed to load GGUF files:`,e)}finally{je(null)}}},[]),qe=(0,M.useCallback)(e=>{Ee===e?De(null):(De(e),Oe[e]||Ke(e))},[Ee,Oe,Ke]),Je=(0,M.useCallback)((e,t)=>{if(!U){C.error(F(`modelSelector.pullRestricted`));return}if(!G){K(e),q({status:`starting`});try{let n=j.pullModelStream(e,e=>{q(e)},()=>{q(null),K(null),J(null),C.success(F(`modelDownload.success`,{name:t})),h?.()},e=>{q(null),K(null),J(null),C.error(F(`modelDownload.failed`,{error:e}))});J(()=>n)}catch{q(null),K(null),C.error(F(`modelDownload.startFailed`))}}},[U,h,G,F]);(0,M.useEffect)(()=>{let e=setTimeout(()=>{B===`huggingface`?Te(R):B===`ollama`&&ye(R)},300);return()=>clearTimeout(e)},[R,B]),(0,M.useEffect)(()=>{if(!I)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,I]),(0,M.useEffect)(()=>{I&&pe.current&&pe.current.focus()},[I]);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 j.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 j.unloadAllModels())}}catch(e){ue.warn(`Failed to unload models before switch:`,e)}n({target:{value:i}})},Xe=async e=>{if(!U){C.error(F(`modelSelector.pullRestricted`));return}if(!G){K(e),q({status:`starting`});try{let t=j.pullModelStream(e,e=>{q(e)},()=>{q(null),K(null),J(null),C.success(F(`modelDownload.success`,{name:e})),h?.()},e=>{q(null),K(null),J(null),C.error(F(`modelDownload.failed`,{error:e}))});J(()=>t)}catch{q(null),K(null),C.error(F(`modelDownload.startFailed`))}}},Ze=()=>{Ne&&(Ne(),J(null),K(null),q(null),C.success(F(`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,N.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,N.jsx)(`img`,{src:re(t,64),alt:``,className:`h-4 w-4 shrink-0 rounded object-cover`})}return e.isLegacySelection?(0,N.jsx)(O,{className:`h-4 w-4 text-gray-500 dark:text-dark-600`}):e.isPersona?(0,N.jsx)(w,{className:`h-4 w-4 text-gray-500 dark:text-dark-600`}):e.isPlugin?(0,N.jsx)(D,{className:`h-4 w-4 text-gray-500 dark:text-dark-600`}):(0,N.jsx)(S,{className:`h-4 w-4 text-gray-500 dark:text-dark-600`})},$=e=>{if(v)return v(e);let t=Ie[u(e)]?.label;return t&&!e.isPersona?t:e.isLegacySelection?`${Le(e)??e.name} (${F(`modelSelector.legacyProvider`,`provider not recorded`)})`:e.isPersona?Le(e)||e.personaName||e.name:e.isAgent?e.isUnavailable?`${e.agentName||e.name} (${F(`modelSelector.unavailable`,`unavailable`)})`:e.agentName||e.name:(e.isPlugin,e.isUnavailable?`${e.name} (${F(`modelSelector.unavailable`,`unavailable`)})`:e.name)},et=e=>e.isLegacySelection?e.isUnavailable?F(`modelSelector.providerUnavailable`,`provider unavailable`):F(`modelSelector.reselectProvider`,`reselect a provider to pin this model`):e.isPersona?`via ${e.model}`:e.isPlugin?e.isUnavailable?`via ${e.pluginName||e.pluginId} · ${F(`modelSelector.providerUnavailable`,`provider unavailable`)}`:`via ${e.pluginName}`:e.isUnavailable?F(`modelSelector.providerUnavailable`,`provider unavailable`):null;return(0,N.jsxs)(`div`,{className:c(`relative`,o),ref:de,children:[(0,N.jsxs)(`button`,{ref:fe,"data-testid":A,type:`button`,onClick:()=>!f&&L(!I),disabled:f,"aria-haspopup":`dialog`,"aria-expanded":I,"aria-label":P&&Z?`${P}: ${$(Z)}`:P,className:c(p?`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`,f?`opacity-50 cursor-not-allowed`:`cursor-pointer`),title:p?Z?x?.(Z)??$(Z):F(`modelSelector.selectModel`):void 0,children:[(()=>{if(!Z)return p?(0,N.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,N.jsx)(S,{className:`h-4 w-4`}),(0,N.jsx)(`span`,{className:`text-xs font-medium text-gray-400 dark:text-gray-500 truncate`,children:F(`modelSelector.selectModel`)})]}):F(`modelSelector.selectModel`);if(p){let e=$(Z);return(0,N.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[$e(Z),(0,N.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,N.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[$e(Z),(0,N.jsxs)(`div`,{className:`flex flex-col min-w-0`,children:[(0,N.jsx)(`span`,{dir:Z.isPersona?`auto`:`ltr`,className:`text-sm font-medium truncate`,children:e}),t&&(0,N.jsx)(`span`,{dir:`auto`,className:`text-xs text-gray-500 dark:text-gray-400 truncate`,children:t})]}),Z.isPersona&&r&&(0,N.jsxs)(`div`,{className:`flex items-center gap-1 ms-auto`,children:[(0,N.jsx)(O,{className:`h-3 w-3 text-gray-500 dark:text-dark-600`}),r.embedding_model&&(0,N.jsx)(ee,{className:`h-3 w-3 text-gray-400 dark:text-dark-500`})]})]})})(),(0,N.jsx)(E,{className:c(p?`h-3 w-3`:`h-4 w-4`,`text-gray-400 flex-shrink-0 transition-transform duration-150`,I&&`rotate-180`)})]}),I&&(0,oe.createPortal)((0,N.jsxs)(`div`,{className:`fixed inset-0 z-[999999] flex items-center justify-center p-3 sm:p-6`,children:[(0,N.jsx)(`div`,{className:`absolute inset-0 bg-gray-950/55 backdrop-blur-md`,onClick:()=>Q()}),(0,N.jsxs)(`div`,{ref:H,role:`dialog`,"aria-modal":`true`,"aria-label":F(`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,N.jsxs)(`div`,{className:`flex-shrink-0`,children:[(0,N.jsxs)(`div`,{className:`flex items-center justify-between px-4 pb-2 pt-4 sm:px-5 sm:pt-5`,children:[(0,N.jsx)(`h2`,{className:`text-lg font-medium tracking-[-0.025em] text-gray-950 dark:text-dark-950 rtl:tracking-normal`,children:F(`modelSelector.selectModel`)}),(0,N.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:F(`common.close`),children:(0,N.jsx)(T,{className:`h-4 w-4`})})]}),(0,N.jsx)(`div`,{className:`px-4 pb-3 sm:px-5`,children:(0,N.jsxs)(`div`,{className:`relative`,children:[(0,N.jsx)(b,{className:`absolute start-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400`}),(0,N.jsx)(`input`,{ref:pe,type:`text`,placeholder:F(B===`installed`?`modelSelector.searchInstalled`:B===`ollama`?`modelSelector.searchOllama`:`modelSelector.searchHuggingFace`),value:R,onChange:e=>z(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,N.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,N.jsxs)(`button`,{onClick:()=>{V(`installed`)},className:c(`flex-1 rounded-lg px-2 py-2 text-xs font-medium transition-colors sm:px-4`,B===`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":B===`installed`,children:[(0,N.jsx)(te,{className:`h-4 w-4 inline me-1.5`}),F(`modelSelector.installed`)]}),(0,N.jsxs)(`button`,{onClick:()=>{V(`ollama`)},className:c(`flex-1 rounded-lg px-2 py-2 text-xs font-medium transition-colors sm:px-4`,B===`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":B===`ollama`,children:[(0,N.jsx)(_,{className:`h-4 w-4 inline me-1.5`}),`Ollama`]}),(0,N.jsxs)(`button`,{onClick:()=>{V(`huggingface`)},className:c(`flex-1 rounded-lg px-2 py-2 text-xs font-medium transition-colors sm:px-4`,B===`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":B===`huggingface`,children:[(0,N.jsx)(D,{className:`h-4 w-4 inline me-1.5`}),`HuggingFace`]})]})]}),B===`installed`&&(0,N.jsx)(ce,{filteredGroups:Fe,selectedModel:t,showImageGen:m,getModelValue:Y,getModelIcon:$e,getModelLabel:$,getModelSubLabel:et,onModelSelect:Ye,onOpenGallery:()=>{Q(!1),me(`/gallery`)}}),B===`ollama`&&(0,N.jsx)(le,{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()}}),B===`huggingface`&&(0,N.jsx)(se,{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,N.jsx)(`select`,{"data-testid":ie,"aria-label":P,"aria-hidden":`true`,dir:`ltr`,value:t,onChange:n,className:`hidden`,tabIndex:-1,children:e.map(e=>(0,N.jsx)(`option`,{value:Y(e),children:$(e)},`${e.isLegacySelection?`legacy`:e.isPersona?`persona`:e.isPlugin?`plugin`:`ollama`}:${e.pluginId||``}:${Y(e)}`))})]})},I=o(`hooks:dictation`),L=()=>{if(typeof window>`u`)return;let e=window;return e.SpeechRecognition||e.webkitSpeechRecognition},R=[{mimeType:`audio/webm;codecs=opus`,format:`webm`}],z=300,B=.25,V=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 R.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,M.useState)(`idle`),[c,l]=(0,M.useState)([]),u=(0,M.useRef)(null),d=(0,M.useRef)(null),f=(0,M.useRef)(null),p=(0,M.useRef)(null),m=(0,M.useRef)(null),h=(0,M.useRef)(0),g=(0,M.useRef)(`idle`),_=(0,M.useRef)(void 0),v=(0,M.useRef)(e),y=(0,M.useRef)(t);(0,M.useEffect)(()=>{v.current=e,y.current=t},[e,t]),(0,M.useEffect)(()=>{let e=!1;return ie.getModels().then(t=>{!e&&t.success&&t.data&&l(t.data)}).catch(()=>{e||l([])}),()=>{e=!0}},[]);let b=(0,M.useMemo)(()=>typeof window<`u`&&window.isSecureContext&&typeof navigator<`u`&&!!navigator.mediaDevices&&!!L(),[]),x=typeof window<`u`&&window.isSecureContext&&typeof navigator<`u`&&!!navigator.mediaDevices?.getUserMedia,S=(0,M.useMemo)(()=>[...b?[{key:`browser`,kind:`browser`}]:[],...x?c.filter(e=>!!de(e)).map(e=>({key:V(e),kind:`provider`,model:e})):[]],[b,x,c]),[w,ee]=(0,M.useState)(``),T=(0,M.useMemo)(()=>S.find(e=>e.key===w)??S[0],[w,S]),E=T?.kind===`provider`?T.model:void 0,te=S.length>0,D=(0,M.useCallback)(()=>{m.current!==null&&(window.clearTimeout(m.current),m.current=null)},[]),O=(0,M.useCallback)(e=>{g.current=e,o(e)},[]),k=(0,M.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,M.useEffect)(()=>(_.current=n,k),[k,n]),{supported:te,phase:a,toggle:(0,M.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(E){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(E),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`),C.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`),ie.transcribe(a,E,{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||(I.error(`Provider transcription failed:`,e),C.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=E.config?.max_duration_seconds,l=typeof c==`number`&&c>0?Math.min(c,z):z;m.current=window.setTimeout(()=>{h.current===e&&o.state===`recording`&&o.stop()},Math.max(.1,l-B)*1e3),O(`recording`);return}catch(t){if(h.current!==e)return;I.error(`Failed to start provider dictation:`,t),D(),f.current?.getTracks().forEach(e=>e.stop()),f.current=null,d.current=null,O(`idle`),C.error(r(`voiceMode.transcriptionFailed`));return}}let t=L();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){I.error(`Failed to start dictation:`,e),u.current=null,O(`idle`)}},[k,D,i.language,E,O,r]),cancel:k,sources:S,activeSourceKey:T?.key??``,setSourceKey:ee,providerModel:E}}export{F as n,H as t};