@mavea/mavea 2.2.0 → 2.2.1

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 (105) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/.vite/manifest.json +354 -354
  3. package/dist/assets/{AnnotationLayer-HanjTRYY.js → AnnotationLayer-CzXCVZCu.js} +1 -1
  4. package/dist/assets/{AppCommandPalette-DBiuHUNL.js → AppCommandPalette-D6904cc9.js} +1 -1
  5. package/dist/assets/{CheckLogRail-CfoGgTqv.js → CheckLogRail-CeRhbIwa.js} +1 -1
  6. package/dist/assets/{ConversationVideoStudio-CEi_cgBR.js → ConversationVideoStudio-Cyu-M9Us.js} +1 -1
  7. package/dist/assets/{CourseLessonReader-CaLT_Y6N.js → CourseLessonReader-BvTabDPT.js} +2 -2
  8. package/dist/assets/{CoursesApp-IfWCeml5.js → CoursesApp-B8kZ6pFr.js} +2 -2
  9. package/dist/assets/{DashPresent-T7I-lAng.js → DashPresent-Dr0LLNnz.js} +1 -1
  10. package/dist/assets/{DashboardDetail-BhRSDenD.js → DashboardDetail-B5JZ6fRz.js} +2 -2
  11. package/dist/assets/{DashboardLoopGate-DBVAR7IS.js → DashboardLoopGate-UHcbTCXN.js} +2 -2
  12. package/dist/assets/DashboardLoopRuntime-BZutKupS.js +1 -0
  13. package/dist/assets/{DashboardsApp-C_awJ3hM.js → DashboardsApp-DzVa4Nqd.js} +2 -2
  14. package/dist/assets/{DeepZoomApp-C-66OasV.js → DeepZoomApp-CN8ZKeS4.js} +1 -1
  15. package/dist/assets/{DelegatePanel-DaJTDkYu.js → DelegatePanel-DO7J_rk_.js} +1 -1
  16. package/dist/assets/{DemoGallery-B9F7SUzp.js → DemoGallery-DMQP4JAa.js} +1 -1
  17. package/dist/assets/{DropSelect-IBjV5Ol1.js → DropSelect-BVDNR47E.js} +1 -1
  18. package/dist/assets/{ExportModal-gckBiikq.js → ExportModal-BVsirsNU.js} +1 -1
  19. package/dist/assets/{ExtractionPreview-DDOkCH9u.js → ExtractionPreview-872OE2ZI.js} +1 -1
  20. package/dist/assets/{FeatureUseNotice-BfnZH8Vt.js → FeatureUseNotice-BNDajs0p.js} +1 -1
  21. package/dist/assets/{FlagshipCommandPalette-CYQdl3Zu.js → FlagshipCommandPalette-mKkMVsza.js} +1 -1
  22. package/dist/assets/{FlagshipShowcase-CFMmbeff.js → FlagshipShowcase-CL_KWgKn.js} +1 -1
  23. package/dist/assets/{FlashcardsApp-KJ1bmlbp.js → FlashcardsApp-COYviD1h.js} +1 -1
  24. package/dist/assets/GalleryApp-B5z9rsrO.css +1 -0
  25. package/dist/assets/{GalleryApp-Dh8Nc_So.js → GalleryApp-D96R7Hdy.js} +2 -2
  26. package/dist/assets/{HonestByDesign-C3LTj4Bx.js → HonestByDesign-DOg91fEf.js} +1 -1
  27. package/dist/assets/{HowItWorks-C5Dqqvl-.js → HowItWorks-D4lHSwEb.js} +1 -1
  28. package/dist/assets/{LegalApp-DYVJIUyF.js → LegalApp-BSPhYvKz.js} +1 -1
  29. package/dist/assets/{LegalMarkdownDocument-CbuQ-pLN.js → LegalMarkdownDocument-DDUOgn72.js} +1 -1
  30. package/dist/assets/{LegalPageShell-CoEyiZGz.js → LegalPageShell-DSbe8dTr.js} +1 -1
  31. package/dist/assets/{LibraryOverlay-TQnxY9R8.js → LibraryOverlay-CEhVoSyv.js} +1 -1
  32. package/dist/assets/{LiveApp-DRnphsFA.js → LiveApp-DtpM4tO0.js} +4 -4
  33. package/dist/assets/{LiveSettings-Cz3XSqv8.js → LiveSettings-C7luyoWU.js} +1 -1
  34. package/dist/assets/{MindMapViewerDrawer-AUJlLC2R.js → MindMapViewerDrawer-DxcjLJzB.js} +1 -1
  35. package/dist/assets/{MindShape-BbuVOTaR.js → MindShape-DhEmAQeq.js} +1 -1
  36. package/dist/assets/{PinToDashboard-BdXI7oo9.js → PinToDashboard-CQHDENt1.js} +1 -1
  37. package/dist/assets/{PlanReview-CGRvSRAt.js → PlanReview-f7EY7XTc.js} +1 -1
  38. package/dist/assets/{PresentationDeck-CoPmOr2f.js → PresentationDeck-Bo1BVx73.js} +1 -1
  39. package/dist/assets/{PrismApp-DPECS285.js → PrismApp-CBr8XpUt.js} +2 -2
  40. package/dist/assets/{PrismBriefingPlayer-BvpG7oZs.js → PrismBriefingPlayer-qNjVbmUq.js} +2 -2
  41. package/dist/assets/{PrismOverlay-c8rcvt4V.js → PrismOverlay-L_lLIH_1.js} +3 -3
  42. package/dist/assets/{PrismWorkbench-BEaD7Arj.js → PrismWorkbench-DK-1IY4A.js} +1 -1
  43. package/dist/assets/{PrivacyApp-_O_MR088.js → PrivacyApp-DT8wZumn.js} +1 -1
  44. package/dist/assets/{ReplayCard-IN-ilb2E.js → ReplayCard-BQr6DWYi.js} +2 -2
  45. package/dist/assets/{ReplayOverlay-ZRjFP-zf.js → ReplayOverlay-CRVixwg2.js} +1 -1
  46. package/dist/assets/{RippleApp-D_Gd8Lw8.js → RippleApp-CMY2OCRm.js} +2 -2
  47. package/dist/assets/{RippleOverlay-vP2KxTiI.js → RippleOverlay-Dwi8Ir43.js} +2 -2
  48. package/dist/assets/{SeeDontRead-BmUyUai5.js → SeeDontRead-BkeAv1Jd.js} +1 -1
  49. package/dist/assets/{ShareModal-_KYCohqO.js → ShareModal-DVwc57KT.js} +2 -2
  50. package/dist/assets/{ShipCourse--ajDej06.js → ShipCourse-BNEPgsV5.js} +1 -1
  51. package/dist/assets/{SignatureLoop-DDw2gtQ_.js → SignatureLoop-C9GvENvP.js} +1 -1
  52. package/dist/assets/{SynthesisApp-CilzogOF.js → SynthesisApp-BPAT6v7a.js} +2 -2
  53. package/dist/assets/{SynthesisOverlay-CAK5h0hB.js → SynthesisOverlay-u_W105hD.js} +1 -1
  54. package/dist/assets/{TemplatePicker-3w18ViSc.js → TemplatePicker-CAC4ggbJ.js} +1 -1
  55. package/dist/assets/{TermsApp-BfTGOTq6.js → TermsApp-BlyUsTrJ.js} +1 -1
  56. package/dist/assets/{TopicCanvas-DSCNWNjv.js → TopicCanvas-CyBGLgb0.js} +2 -2
  57. package/dist/assets/{TourPrism-Y47m-KGq.js → TourPrism-Cn2YHIwh.js} +1 -1
  58. package/dist/assets/{TrackerTile-LXFQXcvH.js → TrackerTile-Ds3ks6Bh.js} +2 -2
  59. package/dist/assets/{TwoSurfaces-CSpKrgfJ.js → TwoSurfaces-cdP8bAG9.js} +1 -1
  60. package/dist/assets/{WorldOverlay-D5FWgYe3.js → WorldOverlay-DPkQobVE.js} +1 -1
  61. package/dist/assets/{WowFeatures-e6mkftpD.js → WowFeatures-BBtcWAOz.js} +1 -1
  62. package/dist/assets/{ZoomDeck-CC9zXPxF.js → ZoomDeck-Cdvkvo2H.js} +1 -1
  63. package/dist/assets/{audioTrack-w1tZwSoU.js → audioTrack-W_18XwGZ.js} +1 -1
  64. package/dist/assets/canvas-BX595EVB.js +1 -0
  65. package/dist/assets/{capture-Bomj_Egy.js → capture-Dyff_zSz.js} +1 -1
  66. package/dist/assets/{confirmAdd-CUFiPNWz.js → confirmAdd-D_hDIeaD.js} +1 -1
  67. package/dist/assets/{dashboardEvents-PktCbV72.js → dashboardEvents-BV0Ly6No.js} +1 -1
  68. package/dist/assets/{deepen-Dz4yTyJs.js → deepen-D8kPrlU5.js} +1 -1
  69. package/dist/assets/docs-6X4Ki_cV.js +1 -0
  70. package/dist/assets/{effort-BKGxLYoq.js → effort-QeWrMtZt.js} +1 -1
  71. package/dist/assets/{generateBeats-BjWC2fwl.js → generateBeats-Da9RmZke.js} +1 -1
  72. package/dist/assets/{generateLive-BLajGcNK.js → generateLive-CDIkclO4.js} +1 -1
  73. package/dist/assets/{index-CKRjGbeR.js → index-BMeoXWPR.js} +3 -3
  74. package/dist/assets/{kokoro-B-rc224u.js → kokoro-DcP-u0Tl.js} +1 -1
  75. package/dist/assets/{loader-BiYFMeRS.js → loader-BRfSnl9t.js} +2 -2
  76. package/dist/assets/{notes-nfocTnUv.js → notes-BDCTTA87.js} +1 -1
  77. package/dist/assets/{perfProbe-BqMK4N56.js → perfProbe-ssw0AtWX.js} +1 -1
  78. package/dist/assets/{pin-IyE46GaQ.js → pin-Bic4-gim.js} +1 -1
  79. package/dist/assets/{portal-C2b5NoMN.js → portal-Dpb34d3-.js} +1 -1
  80. package/dist/assets/{prewarm-Pvdu5Jt0.js → prewarm-xdXDmF8B.js} +1 -1
  81. package/dist/assets/{quietHours-lWcjQ2Iu.js → quietHours-uFS7n8N6.js} +1 -1
  82. package/dist/assets/{registry-BD1Zyd46.js → registry-BV02ROnH.js} +1 -1
  83. package/dist/assets/{registry-OUL5YJry.js → registry-BWx2f_wi.js} +1 -1
  84. package/dist/assets/{registry-BJFqryP_.js → registry-Bs5HUWIJ.js} +1 -1
  85. package/dist/assets/registry-CdPShFc3.js +1 -0
  86. package/dist/assets/{registry-BiT0eNZb.js → registry-DNIasVGX.js} +1 -1
  87. package/dist/assets/{registry-BTUHr4mQ.js → registry-DueizAoA.js} +1 -1
  88. package/dist/assets/{registry-CnmuVlAA.js → registry-PAcazQzL.js} +1 -1
  89. package/dist/assets/{relate-ZHm-ZvaR.js → relate-BHJl3RaA.js} +1 -1
  90. package/dist/assets/{replay-DBeCo_vn.js → replay-DoRQJHjZ.js} +1 -1
  91. package/dist/assets/{select-CejTsgpx.js → select-StjZ4ZRN.js} +1 -1
  92. package/dist/assets/shard010-Bal9PeRL.js +1 -0
  93. package/dist/assets/shard049-C4_IyApZ.js +1 -0
  94. package/dist/assets/{useDashboardLoop-SPlr1Mrm.js → useDashboardLoop-DEE_sLT0.js} +1 -1
  95. package/dist/assets/{walkSync-BtO3jsqQ.js → walkSync-CRhkAQFu.js} +1 -1
  96. package/dist/demo-assets/CREDITS.md +36 -0
  97. package/dist/index.html +1 -1
  98. package/package.json +1 -1
  99. package/dist/assets/DashboardLoopRuntime-B55z8L4b.js +0 -1
  100. package/dist/assets/GalleryApp-B4KBdNyu.css +0 -1
  101. package/dist/assets/canvas-BRGFkCD-.js +0 -1
  102. package/dist/assets/docs-B2aDtm5K.js +0 -1
  103. package/dist/assets/registry-BmjYillB.js +0 -1
  104. package/dist/assets/shard010-CQfR6lnk.js +0 -1
  105. package/dist/assets/shard049-hPaNN2sL.js +0 -1
@@ -1 +1 @@
1
- import{a as e}from"./index-CKRjGbeR.js";import{t}from"./providers-CPhoN8j0.js";import{n,u as r}from"./useLiveConfig-CvOQTr0s.js";var i=2e4,a=2e3,o=15e3,s=0,c=!1;function l(o={}){if(!e())return;let c=Date.now();if(!(!o.force&&c-s<i)){s=c;try{let e=r(n()),i=t(e.provider),a=i.warm?i.warm(e):i.probe(e);Promise.resolve(a).catch(()=>{})}catch{}try{let e=new AbortController,t=setTimeout(()=>e.abort(),a);fetch(`/tts/health`,{method:`GET`,signal:e.signal}).then(e=>{e.ok&&u()}).catch(()=>{}).finally(()=>clearTimeout(t))}catch{}}}function u(){if(!c){c=!0;try{let e=new AbortController,t=setTimeout(()=>e.abort(),o);fetch(`/tts/v1/audio/speech`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({model:`kokoro`,input:`Hello.`,voice:`af_heart`,response_format:`pcm`}),signal:e.signal}).then(async t=>{await t.body?.getReader().read(),e.abort()}).catch(()=>{}).finally(()=>clearTimeout(t))}catch{}}}export{l as prewarmLive};
1
+ import{a as e}from"./index-BMeoXWPR.js";import{t}from"./providers-CPhoN8j0.js";import{n,u as r}from"./useLiveConfig-CvOQTr0s.js";var i=2e4,a=2e3,o=15e3,s=0,c=!1;function l(o={}){if(!e())return;let c=Date.now();if(!(!o.force&&c-s<i)){s=c;try{let e=r(n()),i=t(e.provider),a=i.warm?i.warm(e):i.probe(e);Promise.resolve(a).catch(()=>{})}catch{}try{let e=new AbortController,t=setTimeout(()=>e.abort(),a);fetch(`/tts/health`,{method:`GET`,signal:e.signal}).then(e=>{e.ok&&u()}).catch(()=>{}).finally(()=>clearTimeout(t))}catch{}}}function u(){if(!c){c=!0;try{let e=new AbortController,t=setTimeout(()=>e.abort(),o);fetch(`/tts/v1/audio/speech`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({model:`kokoro`,input:`Hello.`,voice:`af_heart`,response_format:`pcm`}),signal:e.signal}).then(async t=>{await t.body?.getReader().read(),e.abort()}).catch(()=>{}).finally(()=>clearTimeout(t))}catch{}}}export{l as prewarmLive};
@@ -1 +1 @@
1
- import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{lt as r}from"./index-CKRjGbeR.js";import{a as i}from"./http-Bqk6nJiH.js";import{S as a,f as o,g as s,n as c,p as l,r as u,w as d,x as f}from"./kokoro-B-rc224u.js";import{i as ee,t as te}from"./info-CiqHR5cs.js";import{r as p,t as m}from"./store-C9s8Bfz0.js";import{t as h}from"./route-CMdTFx0P.js";import{a as g,t as _}from"./store-DqOaVRLn.js";import{n as v}from"./DropSelect-IBjV5Ol1.js";var y=t(),b=e();function ne(){let e=(0,y.c)(2),[t,n]=(0,b.useState)(re),r,i;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{if(typeof window>`u`)return;let e=()=>n(p());return window.addEventListener(m,e),()=>window.removeEventListener(m,e)},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,b.useEffect)(r,i),t}function re(){return p()}var x=r(),S=n();function C(e){return e.split(` · `)[1]??e}function ie(e){return h(e)?`Which model you pick changes how long a turn takes: from seconds to two minutes or more. Free ones are rate-limited — smaller canvas.`:`Which model you pick changes how long a turn takes: from seconds to two minutes or more.`}function w({provider:e,value:t,onChange:n,ariaLabel:r=`Model`}){let i=ee(e),a=(0,b.useId)(),o=(0,b.useRef)(null),s=(0,b.useRef)(null),[c,l]=(0,b.useState)(!1),[u,d]=(0,b.useState)(-1),f=v(c,o),p=i.suggestedModels,m=t||i.defaultModel,h=ie(m),g=e=>`${a}-opt-${e}`,_=()=>{d(p.indexOf(m)),l(!0)},y=e=>{n(e),l(!1),s.current?.focus()};return(0,b.useEffect)(()=>{c&&u>=0&&document.getElementById(g(u))?.scrollIntoView?.({block:`nearest`})},[c,u]),(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`div`,{className:`drop-select`,ref:o,children:[(0,S.jsx)(`input`,{ref:s,className:`setup-input drop-select-input`,role:`combobox`,"aria-expanded":c,"aria-controls":a,"aria-activedescendant":c&&u>=0?g(u):void 0,"aria-autocomplete":`none`,"aria-label":r,value:t,onChange:e=>{n(e.target.value),c||_(),d(-1)},onClick:()=>c?l(!1):_(),onKeyDown:e=>{if(e.key===`ArrowDown`||e.key===`ArrowUp`){if(e.preventDefault(),!c)return _();if(!p.length)return;let t=e.key===`ArrowDown`?1:-1;d(e=>(e+t+p.length)%p.length)}else e.key===`Enter`&&c&&u>=0?(e.preventDefault(),y(p[u])):e.key===`Escape`&&c&&(e.preventDefault(),l(!1))},onBlur:()=>l(!1),placeholder:i.defaultModel||i.modelPlaceholder,spellCheck:!1}),(0,S.jsx)(`button`,{type:`button`,className:`drop-select-chevron`,"aria-label":`Show model options`,"aria-expanded":c,tabIndex:-1,onPointerDown:e=>e.preventDefault(),onClick:()=>{s.current?.focus(),c?l(!1):_()},children:(0,S.jsx)(`svg`,{viewBox:`0 0 12 8`,fill:`none`,"aria-hidden":!0,children:(0,S.jsx)(`path`,{d:`M1 1.5L6 6.5L11 1.5`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`})})}),c&&(0,x.createPortal)((0,S.jsxs)(`div`,{className:`drop-select-menu`,style:f,role:`listbox`,id:a,"aria-label":`${C(i.label)} models`,onPointerDown:e=>e.preventDefault(),children:[p.map((e,t)=>(0,S.jsxs)(`div`,{id:g(t),role:`option`,tabIndex:-1,"aria-selected":e===m,className:`drop-select-option`+(t===u?` is-active`:``)+(e===m?` is-current`:``),onMouseEnter:()=>d(t),onClick:()=>y(e),children:[(0,S.jsxs)(`span`,{className:`drop-select-option-head`,children:[(0,S.jsx)(`span`,{className:`drop-select-id`,children:e}),e===i.defaultModel&&(0,S.jsx)(`span`,{className:`drop-select-badge`,children:`Default`})]}),i.modelNotes?.[e]&&(0,S.jsx)(`span`,{className:`drop-select-note`,children:i.modelNotes[e]})]},e)),(0,S.jsxs)(`div`,{className:`drop-select-foot`,children:[(0,S.jsxs)(`span`,{children:[`Any `,C(i.label),` model ID works — type it above.`]}),(0,S.jsx)(`a`,{href:te.sources[e],target:`_blank`,rel:`noreferrer noopener`,children:`All models↗`})]})]}),document.body)]}),h&&(0,S.jsx)(`span`,{className:`drop-select-hint`,children:h})]})}function T(){let e=(0,y.c)(5),t,n,r,i;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,S.jsx)(`strong`,{children:`Before you connect`}),n=(0,S.jsx)(`p`,{children:`You provide the API keys or connected accounts, and those providers bill you directly under their own terms. Each model, web-search, speech, or connected-service request can consume your quota or incur a third-party charge; automatic and cadence-based features can repeat those requests while Mavéa is open. AI output can be incomplete, inaccurate, offensive, or unsafe; accuracy, quality, and availability are not guaranteed. Verify important information independently. Mavéa is not medical, legal, financial, safety, or other professional advice, or an emergency or monitoring service. To the fullest extent permitted by law, Mavéa and its outputs are provided “as is,” without warranties; you use them at your own risk, and Mavéa is not responsible for decisions, actions, losses, harm, or provider charges arising from their use.`}),r=(0,S.jsx)(`p`,{children:`Anything you type, paste, attach, or upload—including work-related, personal, identifiable, confidential, sensitive, or regulated information—may be sent to the model, search, or connected provider you select. Submit it only when you are authorized to share it and when you accept that provider’s processing and retention practices; Mavéa does not control those third parties.`}),i=(0,S.jsx)(`p`,{children:`Choosing Remember stores an encrypted copy of provider and search keys in this browser, sealed with a device-bound key when browser cryptography is available; otherwise they remain session-only. Encryption at rest is a convenience, not a security guarantee: an unlocked, shared, lost, or compromised device, browser profile, or extension can still expose or misuse keys, and Mavéa is not responsible for key theft, unauthorized use, or resulting charges. Keeping keys secure is your responsibility — use restricted, revocable keys with spending caps on trusted devices you control, revoke a key with its provider immediately if you suspect exposure, and monitor your provider account. Keys pass through this deployment’s request proxy when used; settings exports exclude them.`}),e[0]=t,e[1]=n,e[2]=r,e[3]=i):(t=e[0],n=e[1],r=e[2],i=e[3]);let a;return e[4]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,S.jsxs)(`aside`,{className:`provider-responsibility`,"aria-label":`Provider billing, data sharing, and AI output responsibility`,children:[t,n,r,i,(0,S.jsxs)(`nav`,{className:`provider-responsibility-links`,"aria-label":`Terms and privacy documents`,children:[(0,S.jsx)(`a`,{className:`provider-responsibility-link`,href:`#/terms?from=live`,children:`Terms`}),(0,S.jsx)(`a`,{className:`provider-responsibility-link`,href:`#/privacy?from=live`,children:`Privacy`}),(0,S.jsx)(`a`,{className:`provider-responsibility-link`,href:`#/legal?from=live`,children:`Read all important information →`})]})]}),e[4]=a):a=e[4],a}function E(){let e=(0,y.c)(2),[t,n]=(0,b.useState)(D),r,i;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{if(typeof window>`u`)return;let e=()=>n(g());return window.addEventListener(_,e),()=>window.removeEventListener(_,e)},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,b.useEffect)(r,i),t}function D(){return g()}var O=`Hi, I'm ready. Ask me anything.`,k=null,A=null,j=null,M=null,N=0;function P(e){return e===N}function F(e,t){if(e)try{e.pause(),e.src=``}catch{}if(t)try{URL.revokeObjectURL(t)}catch{}}function I(){l(),M?.abort(),M=null,j?.(),j=null,F(k,A),k=null,A=null,N++}async function L(e,t,n){try{let r=await i(`/tts/v1/audio/speech`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({model:`kokoro`,input:O,voice:e.kokoro,response_format:`wav`,speed:1})},1e4,n);if(!r.ok||!P(t))return;let a=await r.blob();if(!a.size||!P(t))return;let s=URL.createObjectURL(a),c=new Audio(s),l=o(c),u=()=>{l(),P(t)&&(k=null,A=null,M=null,j=null),F(c,s)};A=s,k=c,j=l,c.onended=u,c.onerror=u;let d=c.play();d&&typeof d.catch==`function`&&d.catch(u)}catch{}}async function R(e,t){let n=await f(O,e.kokoro);if(!P(t)){l();return}if(n)return;let r=new AbortController;M=r,await L(e,t,r.signal)}function z(e){s()||(d(),I(),R(e,N))}var B=`Voice is off — answers will show as captions only. To hear Mavéa, start the local TTS service (docker compose up -d).`,V=`Mavéa is muted — an audition stays silent until you unmute.`;function H(){let e=(0,y.c)(2),[t,n]=(0,b.useState)(U),r,i;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{let e=!0;return c().then(t=>{e&&n(t)}),()=>{e=!1}},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,b.useEffect)(r,i),t}function U(){return u()}function W(){let e=(0,y.c)(2),t=H(),n=(0,b.useSyncExternalStore)(a,s),r=t===!1?B:n?V:null;if(!r)return null;let i;return e[0]===r?i=e[1]:(i=(0,S.jsx)(`p`,{className:`voice-off-hint`,role:`status`,children:r}),e[0]=r,e[1]=i),i}var G=350,K={Alt:`altKey`,Control:`ctrlKey`,Shift:`shiftKey`},q=[`altKey`,`ctrlKey`,`metaKey`,`shiftKey`];function J(e,t,n){if(e.key!==t||n!==`any`&&e.code!==t+(n===`left`?`Left`:`Right`))return!1;let r=K[t];return!q.some(t=>t!==r&&e[t])}function Y(e){let t=(0,b.useRef)(e);t.current=e,(0,b.useEffect)(()=>{if(!e.enabled)return;let n=e.pttKey||`Alt`,r=e.pttSide||`any`,i=null,a=!1,o=()=>{i!==null&&(window.clearTimeout(i),i=null)},s=()=>{o(),a&&(a=!1,t.current.onStop())},c=e=>{if(!J(e,n,r)){e.key!==n&&s();return}e.repeat||i!==null||a||(i=window.setTimeout(()=>{i=null,a=!0,t.current.onStart()},G))},l=e=>{e.key===n&&s()};return window.addEventListener(`keydown`,c),window.addEventListener(`keyup`,l),window.addEventListener(`blur`,s),()=>{window.removeEventListener(`keydown`,c),window.removeEventListener(`keyup`,l),window.removeEventListener(`blur`,s),s()}},[e.enabled,e.pttKey,e.pttSide])}function ae(e,t=`any`){let n=typeof navigator<`u`&&/mac|iphone|ipad|ipod/i.test(navigator.platform||navigator.userAgent),r=e===`Alt`?n?`⌥`:`Alt`:e===`Control`?n?`⌃`:`Ctrl`:e===`Shift`?n?`⇧`:`Shift`:e;return t===`left`?`Left ${r}`:t===`right`?`Right ${r}`:r}function X(e){return e>=22||e<6}var Z=`mavea-live-quiet-hours-on`,Q=Z;function $(){try{return localStorage.getItem(Z)===`1`}catch{return!1}}function oe(e){try{e?localStorage.setItem(Z,`1`):localStorage.removeItem(Z)}catch{}try{window.dispatchEvent(new CustomEvent(Q))}catch{}}var se=.45,ce=6e4;function le(){let e=(0,y.c)(2),[t,n]=(0,b.useState)(ue),r,i;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{let e=()=>n($()&&X(new Date().getHours()));e();let t=window.setInterval(e,ce);return window.addEventListener(Q,e),()=>{window.clearInterval(t),window.removeEventListener(Q,e)}},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,b.useEffect)(r,i),t}function ue(){return $()&&X(new Date().getHours())}export{ae as a,H as c,E as d,T as f,le as i,z as l,ne as m,$ as n,Y as o,w as p,oe as r,W as s,se as t,I as u};
1
+ import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{lt as r}from"./index-BMeoXWPR.js";import{a as i}from"./http-Bqk6nJiH.js";import{S as a,f as o,g as s,n as c,p as l,r as u,w as d,x as f}from"./kokoro-DcP-u0Tl.js";import{i as ee,t as te}from"./info-CiqHR5cs.js";import{r as p,t as m}from"./store-C9s8Bfz0.js";import{t as h}from"./route-CMdTFx0P.js";import{a as g,t as _}from"./store-DqOaVRLn.js";import{n as v}from"./DropSelect-BVDNR47E.js";var y=t(),b=e();function ne(){let e=(0,y.c)(2),[t,n]=(0,b.useState)(re),r,i;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{if(typeof window>`u`)return;let e=()=>n(p());return window.addEventListener(m,e),()=>window.removeEventListener(m,e)},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,b.useEffect)(r,i),t}function re(){return p()}var x=r(),S=n();function C(e){return e.split(` · `)[1]??e}function ie(e){return h(e)?`Which model you pick changes how long a turn takes: from seconds to two minutes or more. Free ones are rate-limited — smaller canvas.`:`Which model you pick changes how long a turn takes: from seconds to two minutes or more.`}function w({provider:e,value:t,onChange:n,ariaLabel:r=`Model`}){let i=ee(e),a=(0,b.useId)(),o=(0,b.useRef)(null),s=(0,b.useRef)(null),[c,l]=(0,b.useState)(!1),[u,d]=(0,b.useState)(-1),f=v(c,o),p=i.suggestedModels,m=t||i.defaultModel,h=ie(m),g=e=>`${a}-opt-${e}`,_=()=>{d(p.indexOf(m)),l(!0)},y=e=>{n(e),l(!1),s.current?.focus()};return(0,b.useEffect)(()=>{c&&u>=0&&document.getElementById(g(u))?.scrollIntoView?.({block:`nearest`})},[c,u]),(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`div`,{className:`drop-select`,ref:o,children:[(0,S.jsx)(`input`,{ref:s,className:`setup-input drop-select-input`,role:`combobox`,"aria-expanded":c,"aria-controls":a,"aria-activedescendant":c&&u>=0?g(u):void 0,"aria-autocomplete":`none`,"aria-label":r,value:t,onChange:e=>{n(e.target.value),c||_(),d(-1)},onClick:()=>c?l(!1):_(),onKeyDown:e=>{if(e.key===`ArrowDown`||e.key===`ArrowUp`){if(e.preventDefault(),!c)return _();if(!p.length)return;let t=e.key===`ArrowDown`?1:-1;d(e=>(e+t+p.length)%p.length)}else e.key===`Enter`&&c&&u>=0?(e.preventDefault(),y(p[u])):e.key===`Escape`&&c&&(e.preventDefault(),l(!1))},onBlur:()=>l(!1),placeholder:i.defaultModel||i.modelPlaceholder,spellCheck:!1}),(0,S.jsx)(`button`,{type:`button`,className:`drop-select-chevron`,"aria-label":`Show model options`,"aria-expanded":c,tabIndex:-1,onPointerDown:e=>e.preventDefault(),onClick:()=>{s.current?.focus(),c?l(!1):_()},children:(0,S.jsx)(`svg`,{viewBox:`0 0 12 8`,fill:`none`,"aria-hidden":!0,children:(0,S.jsx)(`path`,{d:`M1 1.5L6 6.5L11 1.5`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`})})}),c&&(0,x.createPortal)((0,S.jsxs)(`div`,{className:`drop-select-menu`,style:f,role:`listbox`,id:a,"aria-label":`${C(i.label)} models`,onPointerDown:e=>e.preventDefault(),children:[p.map((e,t)=>(0,S.jsxs)(`div`,{id:g(t),role:`option`,tabIndex:-1,"aria-selected":e===m,className:`drop-select-option`+(t===u?` is-active`:``)+(e===m?` is-current`:``),onMouseEnter:()=>d(t),onClick:()=>y(e),children:[(0,S.jsxs)(`span`,{className:`drop-select-option-head`,children:[(0,S.jsx)(`span`,{className:`drop-select-id`,children:e}),e===i.defaultModel&&(0,S.jsx)(`span`,{className:`drop-select-badge`,children:`Default`})]}),i.modelNotes?.[e]&&(0,S.jsx)(`span`,{className:`drop-select-note`,children:i.modelNotes[e]})]},e)),(0,S.jsxs)(`div`,{className:`drop-select-foot`,children:[(0,S.jsxs)(`span`,{children:[`Any `,C(i.label),` model ID works — type it above.`]}),(0,S.jsx)(`a`,{href:te.sources[e],target:`_blank`,rel:`noreferrer noopener`,children:`All models↗`})]})]}),document.body)]}),h&&(0,S.jsx)(`span`,{className:`drop-select-hint`,children:h})]})}function T(){let e=(0,y.c)(5),t,n,r,i;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,S.jsx)(`strong`,{children:`Before you connect`}),n=(0,S.jsx)(`p`,{children:`You provide the API keys or connected accounts, and those providers bill you directly under their own terms. Each model, web-search, speech, or connected-service request can consume your quota or incur a third-party charge; automatic and cadence-based features can repeat those requests while Mavéa is open. AI output can be incomplete, inaccurate, offensive, or unsafe; accuracy, quality, and availability are not guaranteed. Verify important information independently. Mavéa is not medical, legal, financial, safety, or other professional advice, or an emergency or monitoring service. To the fullest extent permitted by law, Mavéa and its outputs are provided “as is,” without warranties; you use them at your own risk, and Mavéa is not responsible for decisions, actions, losses, harm, or provider charges arising from their use.`}),r=(0,S.jsx)(`p`,{children:`Anything you type, paste, attach, or upload—including work-related, personal, identifiable, confidential, sensitive, or regulated information—may be sent to the model, search, or connected provider you select. Submit it only when you are authorized to share it and when you accept that provider’s processing and retention practices; Mavéa does not control those third parties.`}),i=(0,S.jsx)(`p`,{children:`Choosing Remember stores an encrypted copy of provider and search keys in this browser, sealed with a device-bound key when browser cryptography is available; otherwise they remain session-only. Encryption at rest is a convenience, not a security guarantee: an unlocked, shared, lost, or compromised device, browser profile, or extension can still expose or misuse keys, and Mavéa is not responsible for key theft, unauthorized use, or resulting charges. Keeping keys secure is your responsibility — use restricted, revocable keys with spending caps on trusted devices you control, revoke a key with its provider immediately if you suspect exposure, and monitor your provider account. Keys pass through this deployment’s request proxy when used; settings exports exclude them.`}),e[0]=t,e[1]=n,e[2]=r,e[3]=i):(t=e[0],n=e[1],r=e[2],i=e[3]);let a;return e[4]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,S.jsxs)(`aside`,{className:`provider-responsibility`,"aria-label":`Provider billing, data sharing, and AI output responsibility`,children:[t,n,r,i,(0,S.jsxs)(`nav`,{className:`provider-responsibility-links`,"aria-label":`Terms and privacy documents`,children:[(0,S.jsx)(`a`,{className:`provider-responsibility-link`,href:`#/terms?from=live`,children:`Terms`}),(0,S.jsx)(`a`,{className:`provider-responsibility-link`,href:`#/privacy?from=live`,children:`Privacy`}),(0,S.jsx)(`a`,{className:`provider-responsibility-link`,href:`#/legal?from=live`,children:`Read all important information →`})]})]}),e[4]=a):a=e[4],a}function E(){let e=(0,y.c)(2),[t,n]=(0,b.useState)(D),r,i;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{if(typeof window>`u`)return;let e=()=>n(g());return window.addEventListener(_,e),()=>window.removeEventListener(_,e)},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,b.useEffect)(r,i),t}function D(){return g()}var O=`Hi, I'm ready. Ask me anything.`,k=null,A=null,j=null,M=null,N=0;function P(e){return e===N}function F(e,t){if(e)try{e.pause(),e.src=``}catch{}if(t)try{URL.revokeObjectURL(t)}catch{}}function I(){l(),M?.abort(),M=null,j?.(),j=null,F(k,A),k=null,A=null,N++}async function L(e,t,n){try{let r=await i(`/tts/v1/audio/speech`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({model:`kokoro`,input:O,voice:e.kokoro,response_format:`wav`,speed:1})},1e4,n);if(!r.ok||!P(t))return;let a=await r.blob();if(!a.size||!P(t))return;let s=URL.createObjectURL(a),c=new Audio(s),l=o(c),u=()=>{l(),P(t)&&(k=null,A=null,M=null,j=null),F(c,s)};A=s,k=c,j=l,c.onended=u,c.onerror=u;let d=c.play();d&&typeof d.catch==`function`&&d.catch(u)}catch{}}async function R(e,t){let n=await f(O,e.kokoro);if(!P(t)){l();return}if(n)return;let r=new AbortController;M=r,await L(e,t,r.signal)}function z(e){s()||(d(),I(),R(e,N))}var B=`Voice is off — answers will show as captions only. To hear Mavéa, start the local TTS service (docker compose up -d).`,V=`Mavéa is muted — an audition stays silent until you unmute.`;function H(){let e=(0,y.c)(2),[t,n]=(0,b.useState)(U),r,i;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{let e=!0;return c().then(t=>{e&&n(t)}),()=>{e=!1}},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,b.useEffect)(r,i),t}function U(){return u()}function W(){let e=(0,y.c)(2),t=H(),n=(0,b.useSyncExternalStore)(a,s),r=t===!1?B:n?V:null;if(!r)return null;let i;return e[0]===r?i=e[1]:(i=(0,S.jsx)(`p`,{className:`voice-off-hint`,role:`status`,children:r}),e[0]=r,e[1]=i),i}var G=350,K={Alt:`altKey`,Control:`ctrlKey`,Shift:`shiftKey`},q=[`altKey`,`ctrlKey`,`metaKey`,`shiftKey`];function J(e,t,n){if(e.key!==t||n!==`any`&&e.code!==t+(n===`left`?`Left`:`Right`))return!1;let r=K[t];return!q.some(t=>t!==r&&e[t])}function Y(e){let t=(0,b.useRef)(e);t.current=e,(0,b.useEffect)(()=>{if(!e.enabled)return;let n=e.pttKey||`Alt`,r=e.pttSide||`any`,i=null,a=!1,o=()=>{i!==null&&(window.clearTimeout(i),i=null)},s=()=>{o(),a&&(a=!1,t.current.onStop())},c=e=>{if(!J(e,n,r)){e.key!==n&&s();return}e.repeat||i!==null||a||(i=window.setTimeout(()=>{i=null,a=!0,t.current.onStart()},G))},l=e=>{e.key===n&&s()};return window.addEventListener(`keydown`,c),window.addEventListener(`keyup`,l),window.addEventListener(`blur`,s),()=>{window.removeEventListener(`keydown`,c),window.removeEventListener(`keyup`,l),window.removeEventListener(`blur`,s),s()}},[e.enabled,e.pttKey,e.pttSide])}function ae(e,t=`any`){let n=typeof navigator<`u`&&/mac|iphone|ipad|ipod/i.test(navigator.platform||navigator.userAgent),r=e===`Alt`?n?`⌥`:`Alt`:e===`Control`?n?`⌃`:`Ctrl`:e===`Shift`?n?`⇧`:`Shift`:e;return t===`left`?`Left ${r}`:t===`right`?`Right ${r}`:r}function X(e){return e>=22||e<6}var Z=`mavea-live-quiet-hours-on`,Q=Z;function $(){try{return localStorage.getItem(Z)===`1`}catch{return!1}}function oe(e){try{e?localStorage.setItem(Z,`1`):localStorage.removeItem(Z)}catch{}try{window.dispatchEvent(new CustomEvent(Q))}catch{}}var se=.45,ce=6e4;function le(){let e=(0,y.c)(2),[t,n]=(0,b.useState)(ue),r,i;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{let e=()=>n($()&&X(new Date().getHours()));e();let t=window.setInterval(e,ce);return window.addEventListener(Q,e),()=>{window.clearInterval(t),window.removeEventListener(Q,e)}},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,b.useEffect)(r,i),t}function ue(){return $()&&X(new Date().getHours())}export{ae as a,H as c,E as d,T as f,le as i,z as l,ne as m,$ as n,Y as o,w as p,oe as r,W as s,se as t,I as u};