@mavea/mavea 2.1.0 → 2.1.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 (96) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +1 -7
  3. package/TERMS.md +9 -3
  4. package/dist/.vite/manifest.json +337 -337
  5. package/dist/assets/{AnnotationLayer-Bh1yiSAK.js → AnnotationLayer-0YQgrjN3.js} +1 -1
  6. package/dist/assets/{AppCommandPalette-DS4sLY_K.js → AppCommandPalette-CeNtZzhG.js} +1 -1
  7. package/dist/assets/{CheckLogRail-onH7DaxW.js → CheckLogRail-CPKGKw7i.js} +1 -1
  8. package/dist/assets/{ConversationVideoStudio-adb7legp.js → ConversationVideoStudio-BLU1b2u_.js} +1 -1
  9. package/dist/assets/{CourseLessonReader-CkzViEij.js → CourseLessonReader-Ci4BguIU.js} +2 -2
  10. package/dist/assets/{CoursesApp-B0HFM8Al.js → CoursesApp-CErXxpH-.js} +2 -2
  11. package/dist/assets/{DashPresent-BdOJ7F9D.js → DashPresent-w5oqKZpo.js} +1 -1
  12. package/dist/assets/{DashboardDetail-Chrpi1Yk.js → DashboardDetail-Dej7CPf7.js} +2 -2
  13. package/dist/assets/{DashboardLoopGate-B01Hpm7O.js → DashboardLoopGate-DzJol3Os.js} +2 -2
  14. package/dist/assets/DashboardLoopRuntime-CX63-Gn4.js +1 -0
  15. package/dist/assets/{DashboardsApp--jjj-GVX.js → DashboardsApp-BQtz_4UA.js} +2 -2
  16. package/dist/assets/{DeepZoomApp-BpQbKTjc.js → DeepZoomApp-STtNq9C3.js} +1 -1
  17. package/dist/assets/{DelegatePanel-e4y0CJsn.js → DelegatePanel-C2_s1eW9.js} +1 -1
  18. package/dist/assets/{DemoGallery-DF1ShRG4.js → DemoGallery-CXoaPF9b.js} +1 -1
  19. package/dist/assets/{DropSelect-D3Q9Su_x.js → DropSelect-rrPFJVkl.js} +1 -1
  20. package/dist/assets/{ExportModal-DkmyBpeN.js → ExportModal-BS3He6V7.js} +1 -1
  21. package/dist/assets/{ExtractionPreview-C6F1q3qG.js → ExtractionPreview-CQ73RXM8.js} +1 -1
  22. package/dist/assets/{FeatureUseNotice-CCI4mM39.js → FeatureUseNotice-lFcApjaS.js} +1 -1
  23. package/dist/assets/{FlagshipCommandPalette-BkjvGrKT.js → FlagshipCommandPalette-D6gjWvTe.js} +1 -1
  24. package/dist/assets/{FlagshipShowcase-Dx2noFrP.js → FlagshipShowcase-mZDqHQtE.js} +1 -1
  25. package/dist/assets/{FlashcardsApp-C1TeLlkY.js → FlashcardsApp-C8gRaBO8.js} +1 -1
  26. package/dist/assets/{GalleryApp-7oBldBKU.js → GalleryApp-ChsuVZqR.js} +1 -1
  27. package/dist/assets/{HonestByDesign-DlRrxgrO.js → HonestByDesign-Czur9n6R.js} +1 -1
  28. package/dist/assets/{HowItWorks-BM2yn2dq.js → HowItWorks-CA9WdZQ6.js} +1 -1
  29. package/dist/assets/{LegalApp-DPfTD0jz.js → LegalApp-BCnZfHNq.js} +1 -1
  30. package/dist/assets/{LegalMarkdownDocument-DJgwmK1q.js → LegalMarkdownDocument-CNsihJ1F.js} +1 -1
  31. package/dist/assets/{LegalPageShell-DuIwSVSJ.js → LegalPageShell-8HHhJAPo.js} +1 -1
  32. package/dist/assets/{LibraryOverlay-DsLhiJzF.js → LibraryOverlay-CGDPmvnX.js} +1 -1
  33. package/dist/assets/{LiveApp-DNYYimuo.js → LiveApp-CnTYFYf1.js} +4 -4
  34. package/dist/assets/{LiveSettings-CDHQnEtF.js → LiveSettings-Bx7Uu6Fl.js} +1 -1
  35. package/dist/assets/{MindMapViewerDrawer-C3BgiubE.js → MindMapViewerDrawer-CBLaSq-i.js} +1 -1
  36. package/dist/assets/{MindShape-DVlgSR1B.js → MindShape-QuVL_EXi.js} +1 -1
  37. package/dist/assets/{PinToDashboard-Dd_egidB.js → PinToDashboard-CddhBx85.js} +1 -1
  38. package/dist/assets/{PlanReview-wOsBpofo.js → PlanReview-DCPDkqLj.js} +1 -1
  39. package/dist/assets/{PresentationDeck-BSMzp5T9.js → PresentationDeck-DV8AeOrh.js} +1 -1
  40. package/dist/assets/{PrismApp-DbbDNVpy.js → PrismApp-BHcClSEQ.js} +2 -2
  41. package/dist/assets/{PrismBriefingPlayer-B1_ziOwl.js → PrismBriefingPlayer-CDkaBWup.js} +2 -2
  42. package/dist/assets/{PrismOverlay-DLxvsh9l.js → PrismOverlay-DRWAI9Mh.js} +3 -3
  43. package/dist/assets/{PrismWorkbench-ZlhI7Mhw.js → PrismWorkbench-B2uSg63W.js} +1 -1
  44. package/dist/assets/{PrivacyApp-Ki_5bM9Z.js → PrivacyApp-CoFgfPwJ.js} +1 -1
  45. package/dist/assets/{ReplayCard-WKBKeSKc.js → ReplayCard-CLlaKpWg.js} +2 -2
  46. package/dist/assets/{ReplayOverlay-PFSJv540.js → ReplayOverlay-W3KwhRaQ.js} +1 -1
  47. package/dist/assets/{RippleApp-DqVyZYKV.js → RippleApp-CEJvJl-c.js} +2 -2
  48. package/dist/assets/{RippleOverlay-4McJCSV8.js → RippleOverlay-DHnHEYoS.js} +2 -2
  49. package/dist/assets/{SeeDontRead-gARjJuF7.js → SeeDontRead-tA-fTWQW.js} +1 -1
  50. package/dist/assets/{ShareModal-C5HVVMtQ.js → ShareModal-Ys5NYDZR.js} +2 -2
  51. package/dist/assets/{ShipCourse-BUm4TKUk.js → ShipCourse-C3pjBELa.js} +1 -1
  52. package/dist/assets/{SignatureLoop-CYspJuij.js → SignatureLoop-BNjDbepH.js} +1 -1
  53. package/dist/assets/{SynthesisApp-BNhF9aJ2.js → SynthesisApp-BCsFms4h.js} +2 -2
  54. package/dist/assets/{SynthesisOverlay-Bvwdc8uQ.js → SynthesisOverlay-iqXO09rf.js} +1 -1
  55. package/dist/assets/{TemplatePicker-DBa4lkpf.js → TemplatePicker-PWw_xyWb.js} +1 -1
  56. package/dist/assets/{TermsApp-BvwDtgIz.js → TermsApp-B1D2SwN7.js} +10 -4
  57. package/dist/assets/{TopicCanvas-Cwc6-K3q.js → TopicCanvas-xwDjwqxn.js} +2 -2
  58. package/dist/assets/{TourPrism-CCjys3-x.js → TourPrism-Do4evVOo.js} +1 -1
  59. package/dist/assets/{TrackerTile-B4j5qtop.js → TrackerTile-Dp7fvG4P.js} +2 -2
  60. package/dist/assets/{TwoSurfaces-fGm1MJrD.js → TwoSurfaces-CZA6zuue.js} +1 -1
  61. package/dist/assets/{WorldOverlay-JOp1rLyU.js → WorldOverlay-EwAFBDvq.js} +1 -1
  62. package/dist/assets/{WowFeatures-D5dJvp9W.js → WowFeatures-DRKs2UGb.js} +1 -1
  63. package/dist/assets/{ZoomDeck-DYmkT0TA.js → ZoomDeck-qJqKFxkc.js} +1 -1
  64. package/dist/assets/{audioTrack-BJ2D_nuy.js → audioTrack-myyVq6Sp.js} +1 -1
  65. package/dist/assets/canvas-OSBUSYbY.js +1 -0
  66. package/dist/assets/{capture-Y6Qm8zCN.js → capture-MMxmbgt1.js} +1 -1
  67. package/dist/assets/{confirmAdd-D-TTCQ31.js → confirmAdd-VLwpBNf_.js} +1 -1
  68. package/dist/assets/{dashboardEvents-MzCzak6K.js → dashboardEvents-CiE91_oj.js} +1 -1
  69. package/dist/assets/{effort-BftNJCCV.js → effort-CQY4uJMS.js} +1 -1
  70. package/dist/assets/{generateBeats-Dqtfd8HC.js → generateBeats-Ci99Isyk.js} +1 -1
  71. package/dist/assets/{generateLive-B7nlaqz8.js → generateLive-DzBVo6Yg.js} +1 -1
  72. package/dist/assets/{index-Db-FgYxX.js → index-yJfYsjAB.js} +3 -3
  73. package/dist/assets/{kokoro-yB7iU_JU.js → kokoro-DogSQaQB.js} +1 -1
  74. package/dist/assets/{loader-Ciz6XbG-.js → loader-BPVv7hEn.js} +2 -2
  75. package/dist/assets/{notes-CEloxKQ3.js → notes-C-RNIoXo.js} +1 -1
  76. package/dist/assets/{perfProbe-DrOeB7yd.js → perfProbe-q5Gt55We.js} +1 -1
  77. package/dist/assets/{pin-C5_s4Ju5.js → pin-BReqt-Wx.js} +1 -1
  78. package/dist/assets/{portal-TqJbr2rR.js → portal-XWyi6FIz.js} +1 -1
  79. package/dist/assets/{prewarm-Bt5X_9CM.js → prewarm-DOqg5zPk.js} +1 -1
  80. package/dist/assets/{quietHours-LtXDl4-v.js → quietHours-kEvnJP2S.js} +1 -1
  81. package/dist/assets/{registry-BHDUu15I.js → registry-B7zPuTCI.js} +1 -1
  82. package/dist/assets/{registry-CfIJ9dJS.js → registry-BB0UFcJi.js} +1 -1
  83. package/dist/assets/{registry-BwlvYVHq.js → registry-BvtWVDCw.js} +1 -1
  84. package/dist/assets/{registry-BPLbZIVz.js → registry-CQ0bMOV_.js} +1 -1
  85. package/dist/assets/{registry-BxkAuBx8.js → registry-CnDAxBcl.js} +1 -1
  86. package/dist/assets/{registry-B_wlsfxh.js → registry-DTNUXJuV.js} +1 -1
  87. package/dist/assets/{relate-CCma73G9.js → relate-CsRMEWBw.js} +1 -1
  88. package/dist/assets/{replay-dMDmsTaD.js → replay-BlrkSDMO.js} +1 -1
  89. package/dist/assets/{useDashboardLoop-Cnxmf7wU.js → useDashboardLoop-CA3LNVME.js} +1 -1
  90. package/dist/assets/{walkSync-D6leFb_u.js → walkSync-BfK0U5vB.js} +1 -1
  91. package/dist/index.html +1 -1
  92. package/dist/legal/TERMS.md +9 -3
  93. package/package.json +1 -1
  94. package/dist/assets/DashboardLoopRuntime-BcdZtIgH.js +0 -1
  95. package/dist/assets/canvas-CYrbzF43.js +0 -1
  96. package/docs/media/go-hub.jpg +0 -0
@@ -1 +1 @@
1
- import{c as e}from"./useDashboardLoop-Cnxmf7wU.js";function t(e){return e.toLowerCase().replace(/[^a-z0-9 ]/g,` `).replace(/\s+/g,` `).trim()}function n(n,r){if(r.topic){let e=t(r.topic),i=n.find(n=>n.topic&&t(n.topic)===e);if(i)return i}let i=e(r.text);if(i.size===0)return null;let a=null,o=0;for(let t of n){let n=e([t.title,t.thesis.text,...t.metrics.map(e=>e.label)].join(` `)),r=0;for(let e of i)n.has(e)&&r++;r>o&&(o=r,a=t)}return o>=2?a:null}export{n as t};
1
+ import{c as e}from"./useDashboardLoop-CA3LNVME.js";function t(e){return e.toLowerCase().replace(/[^a-z0-9 ]/g,` `).replace(/\s+/g,` `).trim()}function n(n,r){if(r.topic){let e=t(r.topic),i=n.find(n=>n.topic&&t(n.topic)===e);if(i)return i}let i=e(r.text);if(i.size===0)return null;let a=null,o=0;for(let t of n){let n=e([t.title,t.thesis.text,...t.metrics.map(e=>e.label)].join(` `)),r=0;for(let e of i)n.has(e)&&r++;r>o&&(o=r,a=t)}return o>=2?a:null}export{n as t};
@@ -1 +1 @@
1
- import{t as e}from"./generateBeats-Dqtfd8HC.js";function t(e){let t=[];for(let n of e.tour){let r=e.spec.blocks[n.index]?.id;r&&t.push({spot:r,...n.say?{say:n.say}:{},marks:n.marks??(n.mark?[n.mark]:[])})}return t}function n(n){let r=t(n),i=e(n.spec.blocks,{opener:n.narration,...r.length?{tour:r.map(({spot:e,say:t})=>t?{spot:e,say:t}:{spot:e})}:{}});return{spec:n.spec,say:n.spoken??n.narration,beats:i,cues:r}}function r(e,t=0){let r=Math.max(0,Math.min(t,e.length));return e.slice(r).map(n)}export{r as n,n as t};
1
+ import{t as e}from"./generateBeats-Ci99Isyk.js";function t(e){let t=[];for(let n of e.tour){let r=e.spec.blocks[n.index]?.id;r&&t.push({spot:r,...n.say?{say:n.say}:{},marks:n.marks??(n.mark?[n.mark]:[])})}return t}function n(n){let r=t(n),i=e(n.spec.blocks,{opener:n.narration,...r.length?{tour:r.map(({spot:e,say:t})=>t?{spot:e,say:t}:{spot:e})}:{}});return{spec:n.spec,say:n.spoken??n.narration,beats:i,cues:r}}function r(e,t=0){let r=Math.max(0,Math.min(t,e.length));return e.slice(r).map(n)}export{r as n,n as t};
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/liveSchema-Z_39HuDI.js","assets/icons-gLFQTv74.js","assets/jsx-runtime-DeHZSEgm.js","assets/rolldown-runtime-DkW27tQK.js","assets/safeImageUrl-BINWXOTz.js","assets/empty-D51uhW0E.js","assets/catalog-BHjl-1uH.js","assets/sourceHost-BV3t2XDb.js","assets/spokenText-Dy-GZvZV.js","assets/annotations-CftUUB13.js","assets/catalog-CRekRbKO.js","assets/preload-helper-CiWYd9n-.js","assets/facts-BUGuVUIc.js","assets/blockTypes-DUDdP3pB.js","assets/streamParse-BX0bAppQ.js"])))=>i.map(i=>d[i]);
2
- import{r as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{t as n}from"./compiler-runtime-qQQXpJgv.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{c as a,i as o}from"./http-Bqk6nJiH.js";import{i as s}from"./number-zqlPMliA.js";import{E as c,G as l,H as u,L as d,P as f,U as p,V as m,_ as h,b as g,m as _,p as v,s as y,v as b,y as x,z as ee}from"./store-D16dGt7I.js";import{t as te}from"./providers-CPhoN8j0.js";import{n as S,u as C}from"./useLiveConfig-CvOQTr0s.js";import{t as ne}from"./json-J4Y32_i9.js";import{i as w,n as T,r as E}from"./ledger-DHS2di3l.js";import{d as re,i as D,l as O,o as k,u as A}from"./format-BkvssSOr.js";import{t as j}from"./dataPending-DGdCvY5Y.js";import{t as M}from"./now-C9-UAzTC.js";import{n as ie,t as ae}from"./predictions-CkVKHq-5.js";import{t as N}from"./notify-Bz4wuE4T.js";import{a as oe,i as se,r as ce,t as le,u as ue}from"./dashboardEvents-MzCzak6K.js";var P=t(),de=n(),fe=`mavea-dashboard-scheduler`;function pe(){if(typeof navigator>`u`)return null;let e=navigator.locks;return typeof e?.request==`function`?e:null}async function me(e){let t=pe();if(!t){await e();return}try{await t.request(fe,{ifAvailable:!0},async t=>{t&&await e()})}catch{await e()}}function he(e){return new Set(e.toLowerCase().replace(/[^a-z0-9 ]/g,` `).replace(/\s+/g,` `).trim().split(` `).filter(e=>e.length>3))}function F(e){return e.replace(/\s+/g,` `).trim().toLowerCase()}var ge={WATCHING:`watching`,CLEAR:`clear`,TRIGGERED:`triggered`,AWAITING:`awaiting`},_e={ORIGIN:`origin`,ADDED:`added`,LINKED:`linked`},ve={CLEAR:1,WATCHING:.75,TRIGGERED:0,AWAITING:0};function ye(e){let t=e.tripwires.filter(e=>e.state!==`AWAITING`);if(t.length===0)return null;let n=t.reduce((e,t)=>e+ve[t.state],0);return Math.round(100*n/t.length)}function be(e){return e===null?``:e>=80?`Tracking well`:e>=55?`Holding, with risks`:e>=30?`Slipping`:`Lines are breaking`}var xe=new Set([`thesis`,`alignmentgauge`,`standingalerts`,`sourceslineage`]);function Se(e){let t=e.block.type;return xe.has(t)?!0:!!e.metricId&&t===`insight`}function Ce(e,t){let n=t.block.type;if(!xe.has(n)){if(t.metricId&&n===`insight`){let n=e.metrics.find(e=>e.id===t.metricId);if(n){let e=n.lastValue===null?`—`:n.lastRaw??O(String(n.lastValue),n.unit),r=n.lastValue===null?`inferred`:`strong`,i=t.block.props;return{...t.block,props:{...i,stat:e,conf:r}}}}return t.block}let r=e.sources.find(e=>e.kind===`ORIGIN`);if(n===`thesis`){let n=e.tripwires[0],i={reasoning:e.thesis.text,...r?{asOf:r.title}:{},...n?{reconsiderIf:n.label,tripwireState:ge[n.state]}:{}};return{...t.block,props:i}}if(n===`alignmentgauge`){let n=ye(e),r={pct:n,band:be(n)};return{...t.block,props:r}}if(n===`standingalerts`){let n={alerts:e.tripwires.map(e=>({label:e.label,state:ge[e.state]}))};return{...t.block,props:n}}let i={rows:e.sources.map(e=>({kind:_e[e.kind],label:e.title,...e.contributed?{contributed:e.contributed}:{}}))};return{...t.block,props:i}}var we={metric:`{"kind":"metric","value":number,"raw"?:string}`,series:`{"kind":"series","points":[{"label":string,"value":number}]}`,list:`{"kind":"list","items":[string]}`,table:`{"kind":"table","columns":[string],"rows":[[string]]}`,event:`{"kind":"event","events":[{"when":string,"title":string,"detail"?:string}]}`};function I(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function L(e){return Array.isArray(e)?e:[]}function R(e){return typeof e==`string`?e.trim():typeof e==`number`&&Number.isFinite(e)?String(e):typeof e==`boolean`?e?`yes`:`no`:``}function z(e,...t){for(let n of t){let t=R(e[n]);if(t)return t}return``}function Te(e){if(!I(e))return R(e);let t=z(e,`text`,`label`,`title`,`name`,`item`);if(t){let n=Object.entries(e).filter(([e])=>![`text`,`label`,`title`,`name`,`item`].includes(e)).map(([,e])=>R(e)).filter(Boolean);return n.length?`${t} — ${n.join(` — `)}`:t}return Object.values(e).map(R).filter(Boolean).join(` — `)}function Ee(e,t){let n=I(t)?t:{};switch(e){case`metric`:{let e=s(n.value??n.number??n.amount??t);if(e===null)return null;let r=z(n,`raw`,`display`,`formatted`);return{kind:`metric`,value:e,...r?{raw:r}:{}}}case`series`:{let e=L(n.points??n.data??n.series).map(e=>{let t=I(e)?e:{},n=z(t,`label`,`name`,`x`,`when`,`date`),r=s(t.value??t.y??t.amount);return n&&r!==null?{label:n,value:r}:null}).filter(e=>e!==null);return e.length?{kind:`series`,points:e}:null}case`list`:{let e=L(n.items??n.list??n.entries??t).map(Te).filter(Boolean);return e.length?{kind:`list`,items:e}:null}case`table`:{let e=L(n.rows??n.data??t),r=L(n.columns??n.headers??n.cols).map(R).filter(Boolean);!r.length&&I(e[0])&&(r=Object.keys(e[0]).map(R));let i=e.map(e=>Array.isArray(e)?e.map(R):I(e)?r.map(t=>R(e[t])):[]).filter(e=>e.some(Boolean));return r.length&&i.length?{kind:`table`,columns:r,rows:i}:null}case`event`:{let e=L(n.events??n.items??t).map(e=>{let t=I(e)?e:{},n=z(t,`title`,`name`,`event`,`label`);if(!n)return null;let r=z(t,`when`,`date`,`time`,`at`,`start`),i=z(t,`detail`,`description`,`note`,`status`);return{when:r,title:n,...i?{detail:i}:{}}}).filter(e=>e!==null);return e.length?{kind:`event`,events:e}:null}}}var De={list:`list`,checklist:`list`,timeline:`event`,datatable:`table`,standings:`table`,chart:`series`,bars:`series`};function B(e){return De[e]??null}function V(e,t){return e.raw??O(String(e.value),t)}function Oe(e,t,n={},r){let i=typeof n.title==`string`?n.title:``,a={...i?{title:i}:{},...n.icon?{icon:n.icon}:{}};switch(e){case`insight`:return t.kind===`metric`?{...n,...a,stat:V(t,r),conf:`strong`}:null;case`kpi`:return t.kind===`metric`?{...a,items:[{label:i||`Now`,value:V(t,r)}]}:t.kind===`series`?{...a,items:t.points.slice(-4).map(e=>({label:e.label,value:String(e.value)}))}:null;case`list`:case`checklist`:{let n=t.kind===`list`?t.items:t.kind===`event`?t.events.map(e=>[e.when,e.title,e.detail].filter(Boolean).join(` — `)):t.kind===`series`?t.points.map(e=>`${e.label} — ${e.value}`):t.kind===`table`?t.rows.map(e=>e.filter(Boolean).join(` — `)):null;return n?.length?e===`checklist`?{...a,rows:n.map(e=>({t:e,st:`todo`}))}:{...a,items:n}:null}case`timeline`:return t.kind===`event`?{...a,events:t.events.map(e=>({time:e.when,title:e.title,...e.detail?{detail:e.detail}:{}}))}:null;case`datatable`:{if(t.kind!==`table`)return null;let e=t.columns.map((e,t)=>({key:`c${t}`,label:e}));return{...a,columns:e,rows:t.rows.map(e=>Object.fromEntries(e.map((e,t)=>[`c${t}`,e])))}}case`standings`:{if(t.kind!==`table`)return null;let e=t.rows.map(e=>({team:e[0]??``,rec:e[1]??``,gb:e[2]??``})).filter(e=>e.team);return e.length?{...a,rows:e}:null}case`chart`:return t.kind===`series`?{...a,labels:t.points.map(e=>e.label),series:[{name:i||`Value`,color:`var(--insight)`,data:t.points.map(e=>e.value)}],conf:`strong`}:null;case`bars`:return t.kind===`series`?{...a,bars:t.points.map(e=>({label:e.label,value:e.value})),conf:`strong`}:null;default:return null}}r();function ke(e){let t=e instanceof Error?e.message:String(e);if(/\b429\b|rate.?limit/i.test(t)){let e=Number(/(?:in|after)\s+([\d.]+)\s*s/i.exec(t)?.[1]);return Number.isFinite(e)&&e>0?{kind:`rate-limit`,retryAt:Date.now()+Math.min(e*1e3,12e4)}:{kind:`rate-limit`}}return/\b401\b|\b403\b|api key|unauthor/i.test(t)?{kind:`auth`}:/\b5\d\d\b|overloaded|unavailable|capacity/i.test(t)?{kind:`provider-unavailable`}:{kind:`network`}}function Ae(e,t,n,r){switch(e){case`gt`:return t>r;case`gte`:return t>=r;case`lt`:return t<r;case`lte`:return t<=r;case`crosses_up`:return n!==null&&n<r&&t>=r;case`crosses_down`:return n!==null&&n>r&&t<=r;case`pct_rise`:return n!==null&&n!==0&&(t-n)/Math.abs(n)*100>=r;case`pct_drop`:return n!==null&&n!==0&&(n-t)/Math.abs(n)*100>=r;default:return!1}}function je(e,t,n){if(n===0)return!0;let r=t/n;switch(e){case`gt`:case`gte`:return r>=.9;case`lt`:case`lte`:return r<=1.1;default:return!0}}function Me(e,t,n){return t===null?`AWAITING`:Ae(e.comparator,t,n,e.threshold)?`TRIGGERED`:je(e.comparator,t,e.threshold)?`WATCHING`:`CLEAR`}function H(e,t={}){let n=new Map(e.metrics.map(e=>[e.id,e])),r=[];return{tripwires:e.tripwires.map(e=>{let i=n.get(e.metricId),a=i?i.lastValue:null,o=Me(e,a,e.metricId in t?t[e.metricId]:a),s=o===`TRIGGERED`&&e.state!==`TRIGGERED`?{...e,state:o,brokenValue:a??void 0,brokenAt:i?.asOf}:{...e,state:o};return o===`TRIGGERED`&&e.state!==`TRIGGERED`&&r.push(s),s}),newlyTriggered:r}}function Ne(e,t){return e.nextDataAt<=t||e.oneShotAt!==void 0&&e.oneShotAt<=t}function U(e){return e.oneShotAt===void 0?e.nextDataAt:Math.min(e.nextDataAt,e.oneShotAt)}function Pe(e,t=Date.now(),n=4){return e.filter(e=>Ne(e,t)).sort((e,t)=>U(e)-U(t)).slice(0,n)}function Fe(e,t=Date.now()){return e.filter(e=>e.nextAiAt<=t).sort((e,t)=>e.nextAiAt-t.nextAiAt)[0]??null}function W(e,t,n=Date.now()){return e.smartTrigger&&t.length>0?{fire:!0,trigger:t[0]}:(e.cadence.ai===`daily`||e.cadence.ai===`weekly`)&&n>=e.nextAiAt?{fire:!0,trigger:`scheduled`}:{fire:!1,trigger:null}}function G(e){let t=[];for(let n of o(e.sources)){let e=a(n);typeof e.title==`string`&&typeof e.url==`string`&&t.push({title:e.title,url:e.url})}return t}function K(e,t){return(e.sources?.length??0)>0||G(t).length>0}function Ie(e){return`- VALUE "${e.label}" — ${e.query}`}function Le(e,t,n){let r=B(e.block.type);return r?`- DATA #${t} [${r}] ${e.refreshQuery}\n return EXACTLY: ${we[r]}`:`- BLOCK #${t} [${e.block.type}] ${e.refreshQuery}\n`+(n?` expected props (use EXACTLY these field names): ${n}\n`:``)+` current content: ${JSON.stringify(e.block.props??{}).slice(0,600)}`}function Re(){return{values:{},widgets:{}}}function ze(e){return{metrics:e.metrics.filter(e=>e.query.trim()!==``&&!e.blankKey),targets:e.widgets.filter(e=>!!e.refreshQuery?.trim()&&!Se(e))}}function Be(e){let t=[e.block.type];if(e.block.type===`composite`){let n=e.block.props.regions;for(let e of n??[]){let n=e?.block?.type;typeof n==`string`&&n&&t.push(n)}}return t}function Ve(e,t,n){let r=n.reduce((e,t)=>e+(B(t.block.type)?300:1200),0);return 400+t.length*120+r+(e.prediction?150:0)}var He=12e3;function q(e){let t=[],n=1200;for(let r of e){let{metrics:e,targets:i}=ze(r);if(e.length===0&&i.length===0)continue;let a=Ve(r,e,i);if(t.length>0&&n+a>He)break;n+=a,t.push({d:r,metrics:e,targets:i})}return t}function Ue(e,t){let n=Math.max(0,Math.round((t-e)/6e4));if(n<60)return`${n}m ago`;let r=Math.round(n/60);return r<24?`${r}h ago`:`${Math.round(r/24)}d ago`}function We(e,t,n){let r=[...e.metrics.map(Ie),...e.targets.map((e,t)=>Le(e,t,n(e.block.type))),...e.d.prediction?[`- PREVIOUS EXPECTATION (made ${Ue(e.d.prediction.at,t)}): "${e.d.prediction.text}" — grade it.`]:[]];return`DASHBOARD ${e.d.id} "${e.d.title}"\n${r.join(`
2
+ import{r as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{t as n}from"./compiler-runtime-qQQXpJgv.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{c as a,i as o}from"./http-Bqk6nJiH.js";import{i as s}from"./number-zqlPMliA.js";import{E as c,G as l,H as u,L as d,P as f,U as p,V as m,_ as h,b as g,m as _,p as v,s as y,v as b,y as x,z as ee}from"./store-D16dGt7I.js";import{t as te}from"./providers-CPhoN8j0.js";import{n as S,u as C}from"./useLiveConfig-CvOQTr0s.js";import{t as ne}from"./json-J4Y32_i9.js";import{i as w,n as T,r as E}from"./ledger-DHS2di3l.js";import{d as re,i as D,l as O,o as k,u as A}from"./format-BkvssSOr.js";import{t as j}from"./dataPending-DGdCvY5Y.js";import{t as M}from"./now-C9-UAzTC.js";import{n as ie,t as ae}from"./predictions-CkVKHq-5.js";import{t as N}from"./notify-Bz4wuE4T.js";import{a as oe,i as se,r as ce,t as le,u as ue}from"./dashboardEvents-CiE91_oj.js";var P=t(),de=n(),fe=`mavea-dashboard-scheduler`;function pe(){if(typeof navigator>`u`)return null;let e=navigator.locks;return typeof e?.request==`function`?e:null}async function me(e){let t=pe();if(!t){await e();return}try{await t.request(fe,{ifAvailable:!0},async t=>{t&&await e()})}catch{await e()}}function he(e){return new Set(e.toLowerCase().replace(/[^a-z0-9 ]/g,` `).replace(/\s+/g,` `).trim().split(` `).filter(e=>e.length>3))}function F(e){return e.replace(/\s+/g,` `).trim().toLowerCase()}var ge={WATCHING:`watching`,CLEAR:`clear`,TRIGGERED:`triggered`,AWAITING:`awaiting`},_e={ORIGIN:`origin`,ADDED:`added`,LINKED:`linked`},ve={CLEAR:1,WATCHING:.75,TRIGGERED:0,AWAITING:0};function ye(e){let t=e.tripwires.filter(e=>e.state!==`AWAITING`);if(t.length===0)return null;let n=t.reduce((e,t)=>e+ve[t.state],0);return Math.round(100*n/t.length)}function be(e){return e===null?``:e>=80?`Tracking well`:e>=55?`Holding, with risks`:e>=30?`Slipping`:`Lines are breaking`}var xe=new Set([`thesis`,`alignmentgauge`,`standingalerts`,`sourceslineage`]);function Se(e){let t=e.block.type;return xe.has(t)?!0:!!e.metricId&&t===`insight`}function Ce(e,t){let n=t.block.type;if(!xe.has(n)){if(t.metricId&&n===`insight`){let n=e.metrics.find(e=>e.id===t.metricId);if(n){let e=n.lastValue===null?`—`:n.lastRaw??O(String(n.lastValue),n.unit),r=n.lastValue===null?`inferred`:`strong`,i=t.block.props;return{...t.block,props:{...i,stat:e,conf:r}}}}return t.block}let r=e.sources.find(e=>e.kind===`ORIGIN`);if(n===`thesis`){let n=e.tripwires[0],i={reasoning:e.thesis.text,...r?{asOf:r.title}:{},...n?{reconsiderIf:n.label,tripwireState:ge[n.state]}:{}};return{...t.block,props:i}}if(n===`alignmentgauge`){let n=ye(e),r={pct:n,band:be(n)};return{...t.block,props:r}}if(n===`standingalerts`){let n={alerts:e.tripwires.map(e=>({label:e.label,state:ge[e.state]}))};return{...t.block,props:n}}let i={rows:e.sources.map(e=>({kind:_e[e.kind],label:e.title,...e.contributed?{contributed:e.contributed}:{}}))};return{...t.block,props:i}}var we={metric:`{"kind":"metric","value":number,"raw"?:string}`,series:`{"kind":"series","points":[{"label":string,"value":number}]}`,list:`{"kind":"list","items":[string]}`,table:`{"kind":"table","columns":[string],"rows":[[string]]}`,event:`{"kind":"event","events":[{"when":string,"title":string,"detail"?:string}]}`};function I(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function L(e){return Array.isArray(e)?e:[]}function R(e){return typeof e==`string`?e.trim():typeof e==`number`&&Number.isFinite(e)?String(e):typeof e==`boolean`?e?`yes`:`no`:``}function z(e,...t){for(let n of t){let t=R(e[n]);if(t)return t}return``}function Te(e){if(!I(e))return R(e);let t=z(e,`text`,`label`,`title`,`name`,`item`);if(t){let n=Object.entries(e).filter(([e])=>![`text`,`label`,`title`,`name`,`item`].includes(e)).map(([,e])=>R(e)).filter(Boolean);return n.length?`${t} — ${n.join(` — `)}`:t}return Object.values(e).map(R).filter(Boolean).join(` — `)}function Ee(e,t){let n=I(t)?t:{};switch(e){case`metric`:{let e=s(n.value??n.number??n.amount??t);if(e===null)return null;let r=z(n,`raw`,`display`,`formatted`);return{kind:`metric`,value:e,...r?{raw:r}:{}}}case`series`:{let e=L(n.points??n.data??n.series).map(e=>{let t=I(e)?e:{},n=z(t,`label`,`name`,`x`,`when`,`date`),r=s(t.value??t.y??t.amount);return n&&r!==null?{label:n,value:r}:null}).filter(e=>e!==null);return e.length?{kind:`series`,points:e}:null}case`list`:{let e=L(n.items??n.list??n.entries??t).map(Te).filter(Boolean);return e.length?{kind:`list`,items:e}:null}case`table`:{let e=L(n.rows??n.data??t),r=L(n.columns??n.headers??n.cols).map(R).filter(Boolean);!r.length&&I(e[0])&&(r=Object.keys(e[0]).map(R));let i=e.map(e=>Array.isArray(e)?e.map(R):I(e)?r.map(t=>R(e[t])):[]).filter(e=>e.some(Boolean));return r.length&&i.length?{kind:`table`,columns:r,rows:i}:null}case`event`:{let e=L(n.events??n.items??t).map(e=>{let t=I(e)?e:{},n=z(t,`title`,`name`,`event`,`label`);if(!n)return null;let r=z(t,`when`,`date`,`time`,`at`,`start`),i=z(t,`detail`,`description`,`note`,`status`);return{when:r,title:n,...i?{detail:i}:{}}}).filter(e=>e!==null);return e.length?{kind:`event`,events:e}:null}}}var De={list:`list`,checklist:`list`,timeline:`event`,datatable:`table`,standings:`table`,chart:`series`,bars:`series`};function B(e){return De[e]??null}function V(e,t){return e.raw??O(String(e.value),t)}function Oe(e,t,n={},r){let i=typeof n.title==`string`?n.title:``,a={...i?{title:i}:{},...n.icon?{icon:n.icon}:{}};switch(e){case`insight`:return t.kind===`metric`?{...n,...a,stat:V(t,r),conf:`strong`}:null;case`kpi`:return t.kind===`metric`?{...a,items:[{label:i||`Now`,value:V(t,r)}]}:t.kind===`series`?{...a,items:t.points.slice(-4).map(e=>({label:e.label,value:String(e.value)}))}:null;case`list`:case`checklist`:{let n=t.kind===`list`?t.items:t.kind===`event`?t.events.map(e=>[e.when,e.title,e.detail].filter(Boolean).join(` — `)):t.kind===`series`?t.points.map(e=>`${e.label} — ${e.value}`):t.kind===`table`?t.rows.map(e=>e.filter(Boolean).join(` — `)):null;return n?.length?e===`checklist`?{...a,rows:n.map(e=>({t:e,st:`todo`}))}:{...a,items:n}:null}case`timeline`:return t.kind===`event`?{...a,events:t.events.map(e=>({time:e.when,title:e.title,...e.detail?{detail:e.detail}:{}}))}:null;case`datatable`:{if(t.kind!==`table`)return null;let e=t.columns.map((e,t)=>({key:`c${t}`,label:e}));return{...a,columns:e,rows:t.rows.map(e=>Object.fromEntries(e.map((e,t)=>[`c${t}`,e])))}}case`standings`:{if(t.kind!==`table`)return null;let e=t.rows.map(e=>({team:e[0]??``,rec:e[1]??``,gb:e[2]??``})).filter(e=>e.team);return e.length?{...a,rows:e}:null}case`chart`:return t.kind===`series`?{...a,labels:t.points.map(e=>e.label),series:[{name:i||`Value`,color:`var(--insight)`,data:t.points.map(e=>e.value)}],conf:`strong`}:null;case`bars`:return t.kind===`series`?{...a,bars:t.points.map(e=>({label:e.label,value:e.value})),conf:`strong`}:null;default:return null}}r();function ke(e){let t=e instanceof Error?e.message:String(e);if(/\b429\b|rate.?limit/i.test(t)){let e=Number(/(?:in|after)\s+([\d.]+)\s*s/i.exec(t)?.[1]);return Number.isFinite(e)&&e>0?{kind:`rate-limit`,retryAt:Date.now()+Math.min(e*1e3,12e4)}:{kind:`rate-limit`}}return/\b401\b|\b403\b|api key|unauthor/i.test(t)?{kind:`auth`}:/\b5\d\d\b|overloaded|unavailable|capacity/i.test(t)?{kind:`provider-unavailable`}:{kind:`network`}}function Ae(e,t,n,r){switch(e){case`gt`:return t>r;case`gte`:return t>=r;case`lt`:return t<r;case`lte`:return t<=r;case`crosses_up`:return n!==null&&n<r&&t>=r;case`crosses_down`:return n!==null&&n>r&&t<=r;case`pct_rise`:return n!==null&&n!==0&&(t-n)/Math.abs(n)*100>=r;case`pct_drop`:return n!==null&&n!==0&&(n-t)/Math.abs(n)*100>=r;default:return!1}}function je(e,t,n){if(n===0)return!0;let r=t/n;switch(e){case`gt`:case`gte`:return r>=.9;case`lt`:case`lte`:return r<=1.1;default:return!0}}function Me(e,t,n){return t===null?`AWAITING`:Ae(e.comparator,t,n,e.threshold)?`TRIGGERED`:je(e.comparator,t,e.threshold)?`WATCHING`:`CLEAR`}function H(e,t={}){let n=new Map(e.metrics.map(e=>[e.id,e])),r=[];return{tripwires:e.tripwires.map(e=>{let i=n.get(e.metricId),a=i?i.lastValue:null,o=Me(e,a,e.metricId in t?t[e.metricId]:a),s=o===`TRIGGERED`&&e.state!==`TRIGGERED`?{...e,state:o,brokenValue:a??void 0,brokenAt:i?.asOf}:{...e,state:o};return o===`TRIGGERED`&&e.state!==`TRIGGERED`&&r.push(s),s}),newlyTriggered:r}}function Ne(e,t){return e.nextDataAt<=t||e.oneShotAt!==void 0&&e.oneShotAt<=t}function U(e){return e.oneShotAt===void 0?e.nextDataAt:Math.min(e.nextDataAt,e.oneShotAt)}function Pe(e,t=Date.now(),n=4){return e.filter(e=>Ne(e,t)).sort((e,t)=>U(e)-U(t)).slice(0,n)}function Fe(e,t=Date.now()){return e.filter(e=>e.nextAiAt<=t).sort((e,t)=>e.nextAiAt-t.nextAiAt)[0]??null}function W(e,t,n=Date.now()){return e.smartTrigger&&t.length>0?{fire:!0,trigger:t[0]}:(e.cadence.ai===`daily`||e.cadence.ai===`weekly`)&&n>=e.nextAiAt?{fire:!0,trigger:`scheduled`}:{fire:!1,trigger:null}}function G(e){let t=[];for(let n of o(e.sources)){let e=a(n);typeof e.title==`string`&&typeof e.url==`string`&&t.push({title:e.title,url:e.url})}return t}function K(e,t){return(e.sources?.length??0)>0||G(t).length>0}function Ie(e){return`- VALUE "${e.label}" — ${e.query}`}function Le(e,t,n){let r=B(e.block.type);return r?`- DATA #${t} [${r}] ${e.refreshQuery}\n return EXACTLY: ${we[r]}`:`- BLOCK #${t} [${e.block.type}] ${e.refreshQuery}\n`+(n?` expected props (use EXACTLY these field names): ${n}\n`:``)+` current content: ${JSON.stringify(e.block.props??{}).slice(0,600)}`}function Re(){return{values:{},widgets:{}}}function ze(e){return{metrics:e.metrics.filter(e=>e.query.trim()!==``&&!e.blankKey),targets:e.widgets.filter(e=>!!e.refreshQuery?.trim()&&!Se(e))}}function Be(e){let t=[e.block.type];if(e.block.type===`composite`){let n=e.block.props.regions;for(let e of n??[]){let n=e?.block?.type;typeof n==`string`&&n&&t.push(n)}}return t}function Ve(e,t,n){let r=n.reduce((e,t)=>e+(B(t.block.type)?300:1200),0);return 400+t.length*120+r+(e.prediction?150:0)}var He=12e3;function q(e){let t=[],n=1200;for(let r of e){let{metrics:e,targets:i}=ze(r);if(e.length===0&&i.length===0)continue;let a=Ve(r,e,i);if(t.length>0&&n+a>He)break;n+=a,t.push({d:r,metrics:e,targets:i})}return t}function Ue(e,t){let n=Math.max(0,Math.round((t-e)/6e4));if(n<60)return`${n}m ago`;let r=Math.round(n/60);return r<24?`${r}h ago`:`${Math.round(r/24)}d ago`}function We(e,t,n){let r=[...e.metrics.map(Ie),...e.targets.map((e,t)=>Le(e,t,n(e.block.type))),...e.d.prediction?[`- PREVIOUS EXPECTATION (made ${Ue(e.d.prediction.at,t)}): "${e.d.prediction.text}" — grade it.`]:[]];return`DASHBOARD ${e.d.id} "${e.d.title}"\n${r.join(`
3
3
  `)}`}function Ge(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Ke(e,t){let n=e.dashboards;if(n===void 0&&t.length===1)return{[t[0].d.id]:e};let r=new Map,i=[];if(Array.isArray(n))for(let e of n){let t=a(e);i.push(t),typeof t.id==`string`&&t.id&&r.set(t.id,t)}else if(Ge(n))for(let[e,t]of Object.entries(n))r.set(e,a(t));let o={};return t.forEach((e,t)=>{o[e.d.id]=r.get(e.d.id)??i[t]??{}}),o}function qe(e){let t=a(e);if(typeof t.metricLabel!=`string`||!t.metricLabel.trim())return;let n=o(t.readings).filter(e=>typeof e==`string`&&!!e.trim());if(!(n.length<2))return{metricLabel:t.metricLabel.trim(),readings:n,note:typeof t.note==`string`?t.note.trim().slice(0,200):``}}function Je(e){let t=a(e),n=typeof t.start==`string`?Date.parse(t.start):NaN,r=typeof t.end==`string`?Date.parse(t.end):NaN;if(!(!Number.isFinite(n)||!Number.isFinite(r)||r<=n)&&!(r-n>6048e5))return{startAt:n,endAt:r,label:typeof t.label==`string`?t.label.trim().slice(0,60):``}}var Ye=` YOUR PREVIOUS ATTEMPT DID NOT ACTUALLY SEARCH (no citations came back). Before answering this time, you MUST run a real web search for every DASHBOARD section above and report only what those searches returned, listing the real URLs relied on in "sources" — this is not optional. If search is genuinely unavailable or turns up nothing, return null values and omit "sources" entirely; never invent a value or a source just to satisfy this instruction.`;async function Xe(e,t,n={}){let r=Date.now(),c={ok:!0,grounded:!1,perDashboard:{},sources:[],attempts:0};if(e.length===0&&!n.briefingContext)return c;try{let c=te(t.provider),l=e.flatMap(e=>e.targets.filter(e=>!B(e.block.type))),u=new Set(l.flatMap(Be)),d=u.size>0,f=d?await i(()=>import(`./liveSchema-Z_39HuDI.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14])):null,p=e.map(e=>We(e,r,f?f.blockShapeHint:()=>null)).join(`
4
4
 
5
5
  `),m={type:`object`,properties:{dashboards:{type:`array`,description:`One object per DASHBOARD section above, in the same order, each echoing its id.`,items:{type:`object`,properties:{id:{type:`string`},values:{type:`object`,description:`Map of VALUE label -> current numeric value, or null.`},observations:{type:`array`,description:`Exactly one object per DATA item for this dashboard, in the same order, each in the exact shape that DATA line specifies.`,items:{type:`object`}},blocks:{type:`array`,description:`Exactly one block per BLOCK item for this dashboard, in order.`,items:{type:`object`,properties:{type:{type:`string`},props:{type:`object`}},required:[`type`,`props`]}},expects:{type:`string`,description:`A short "by next check" expectation — omit if nothing here is genuinely predictable.`},grade:{type:`object`,description:`ONLY when this dashboard has a PREVIOUS EXPECTATION line.`,properties:{result:{type:`string`},note:{type:`string`}}},disagreement:{type:`object`,description:`ONLY when two real sources genuinely disagreed on a value.`,properties:{metricLabel:{type:`string`},readings:{type:`array`,items:{type:`string`}},note:{type:`string`}}},liveWindow:{type:`object`,description:`ONLY when search revealed a real, bounded live-event window.`,properties:{start:{type:`string`},end:{type:`string`},label:{type:`string`}}}},required:[`id`]}},...n.briefingContext?{briefing:{type:`string`,description:`2-4 sentences summarizing ALL dashboards (this batch + the given CONTEXT), real values only; use [[shown|said]] pronunciation twins for speech-risky terms.`}}:{},sources:{type:`array`,description:`OMIT unless this call used web search. Real source URLs actually relied on — never invented.`,items:{type:`object`,properties:{title:{type:`string`},url:{type:`string`}},required:[`title`,`url`]}}},required:[`dashboards`]},h=d===!1,g=Math.min(h?4e3:14e3,Math.max(h?1500:3e3,1200+e.reduce((e,t)=>e+Ve(t.d,t.metrics,t.targets),0)+(n.briefingContext?700:0))),_=M()+` You are checking several standing trackers at once. Return ONLY JSON: {"dashboards": [{"id": string, "values": {...}, "observations": [...], "blocks": [...], "expects"?: string, "grade"?: {...}, "disagreement"?: {...}, "liveWindow"?: {...}}, ...], `+(n.briefingContext?`"briefing": string, `:``)+`"sources": [...]}. Use web search for every DASHBOARD section below — never invent a value or detail. ECHO each dashboard's exact "id" so results map back correctly. For a VALUE item, give its CURRENT real number (no units) or null if unverifiable. For a BLOCK For a DATA item, return ONE object in "observations" (same order as the DATA lines) in the exact shape that line prints — plain data, no component or prop names, and omit the entry entirely rather than inventing a value you did not find. For a BLOCK item, produce exactly one block whose "type" is the EXACT bracketed type given — never substitute a different one — matching its current content for detail level (real names, numbers, dates). Where a BLOCK lists "expected props", copy that shape EXACTLY: the same field names, and an array shown as string[] takes plain strings, never objects. CRITICAL — a "current content" showing something live, in progress, or upcoming is NOT necessarily still true right now: explicitly check whether it has SINCE concluded and report the concluding outcome if so, reasoning from the date/time above which of upcoming/live/finished applies at this exact moment. If a dashboard has a PREVIOUS EXPECTATION line, grade it honestly ("hit" it came true, "miss" it did not, "unclear" if genuinely unknowable yet) — grade ONLY dashboards that have this line, never invent a grade otherwise. Offer a fresh "expects" only when something is genuinely predictable by the next check; most checks have nothing worth predicting, so omit it far more often than not. If two real sources genuinely disagree on a value, report it in "disagreement" instead of silently picking one. If search reveals a real bounded live-event window (a match's actual start/end time) for a dashboard, report it in "liveWindow" with ISO start/end — never invent a time. `+(n.briefingContext?`Also compose "briefing": 2-4 warm, concrete sentences summarizing ALL dashboards — this batch PLUS the CONTEXT lines below (already-known values — do NOT search for those, use them as given) — real values only, never memory. The briefing is displayed and spoken: preserve normal spelling on the left, but wrap a name, place, brand, or borrowed term a voice would genuinely mispronounce as [[shown|said]] (for example [[Omakase|oh-mah-kah-seh]]). The said side must be lowercase voice-safe syllables matching a native/source-language pronunciation, never IPA or an Anglicized guess. Annotate sparingly — the said side is one you invent, so a wrong one makes the voice say a word WRONG. Ordinary English words and names are never annotated. `:``)+`If search genuinely turns up nothing more specific than what is already shown, say so honestly rather than inventing new specifics or repeating the old ones as if just confirmed. CITE SOURCES — every real URL actually relied on, in "sources"; omit it entirely if you used no search.`,v=`Use web search.\n\n${p}`+(n.briefingContext?`\n\nCONTEXT (already known — do not search these):\n${n.briefingContext}`:``),y=e=>c.generate({system:e?_+Ye:_,history:[],user:v,maxTokens:g,temperature:.15,thinkingLevel:e?`high`:`low`,tools:{webSearch:!0,requireSearch:!0},format:m,...d?{blockTypes:[...u],complexity:`brief`}:{}},t).then(e=>({rr:e,grounded:K(e,a(ne(e.raw)))})),b=await y(!1),x=1;!b.grounded&&e.length>0&&(b=await y(!0),x=2);let{rr:S}=b,C=a(ne(S.raw)),w=K(S,C),T=Ke(C,e),E=S.sources&&S.sources.length?S.sources:G(C),re=[...new Set(E.map(e=>k(e.url)).filter(Boolean))],D=f?f.validateLiveResponse:null,A={};for(let t of e){let e=T[t.d.id]??{},n=Re();if(w&&t.metrics.length>0){let r=a(e.values),i=new Map(Object.entries(r).map(([e,t])=>[F(e),t]));for(let e of t.metrics){let t=s(r[e.label]??i.get(F(e.label)));t!==null&&(n.values[e.id]={value:t,raw:O(String(t),e.unit)})}}if(t.targets.length>0&&w){let i=o(e.observations??e.data);t.targets.forEach((e,a)=>{let o=B(e.block.type);if(!o)return;let s=Ee(o,i[a]);if(!s)return;let c=e.block.props??{},l=e.metricId?t.d.metrics.find(t=>t.id===e.metricId):void 0,u=Oe(e.block.type,s,c,l?.unit);u&&(n.widgets[e.id]={...e.block,props:u},ee(t.d.id,e.id,s,r,re))})}if(t.targets.length>0&&D){let r=o(e.blocks);t.targets.forEach((e,t)=>{if(B(e.block.type))return;let i=r[t];if(!i)return;let a=D({narration:``,title:`x`,sub:``,blocks:[i]},new Set(Be(e)),1,w,!0)?.blocks[0];a&&a.type===e.block.type&&(n.widgets[e.id]=a)})}if(w){let r=ae(e.expects);if(r&&(n.expects=r),t.d.prediction){let t=ie(e.grade);t&&(n.grade=t)}let i=qe(e.disagreement);i&&(n.disagreement=i);let a=Je(e.liveWindow);a&&(n.liveWindow=a)}A[t.d.id]=n}Object.values(A).every(e=>Object.keys(e.values).length===0&&Object.keys(e.widgets).length===0&&!e.expects)&&console.warn(`[dashboards] refreshDashboards got a response but nothing parsed out of it for any dashboard (${w?`empty/unparseable`:`ungrounded after ${x} attempt${x>1?`s`:``}, discarded`})`,{dashboardIds:e.map(e=>e.d.id),raw:S.raw});let j=n.briefingContext&&w&&typeof C.briefing==`string`&&C.briefing.trim()?C.briefing.trim():void 0;return{ok:!0,grounded:w,perDashboard:A,sources:E,attempts:x,...j?{briefing:j}:{}}}catch(t){console.error(`[dashboards] refreshDashboards failed`,t);let n={};for(let t of e)n[t.d.id]=Re();return{ok:!1,grounded:!1,perDashboard:n,sources:[],attempts:0,failure:ke(t)}}}function Ze(e){let t=Array.isArray(e?.sources)?e.sources:[],n=[];for(let e of t){let t=e&&typeof e==`object`?e:{};typeof t.title==`string`&&typeof t.url==`string`&&n.push({title:t.title,url:t.url})}return n}function Qe(e){try{let t=typeof e==`string`?JSON.parse($e(e)):e,n=t?.verdict;return{text:typeof n==`string`&&n.trim()?n.trim():null,sources:Ze(t)}}catch{return{text:typeof e==`string`&&e.trim()?e.trim():null,sources:[]}}}function $e(e){let t=e.indexOf(`{`),n=e.lastIndexOf(`}`);return t>=0&&n>t?e.slice(t,n+1):e}async function J(e,t,n,r=Date.now()){try{let i=te(n.provider),a=t===`scheduled`?null:t,o=a?e.metrics.find(e=>e.id===a.metricId):void 0,s=e.metrics.map(e=>`${e.label}=${e.lastRaw??`—`}`).join(`, `),c=a?`A line the user set just crossed: "${a.label}" — ${o?.label??a.label} is now ${o?.lastRaw??a.brokenValue??`past the threshold`}. Currently tracked: ${s}. Using web search, say briefly and honestly what the latest numbers show and whether this reads as a real move or just noise.`:`Currently tracked: ${s}. Using web search, give a brief, honest read: what the latest numbers show and what has materially changed since the last check.`,l=await i.generate({system:M()+` You give a brief, honest read on the latest numbers a user is tracking: what they show now, what has materially changed since the last check, and — if a specific line was crossed — whether that looks like a real move or noise. One or two plain sentences. Never invent data. CITE YOUR SOURCES — whenever you used web search, include the exact source URLs you actually relied on as a top-level "sources": [{"title": string, "url": string}] array; only real URLs from the search results — never invent one, and omit "sources" entirely if you didn’t search. Return ONLY JSON: {"verdict":"…","sources":[...]}.`,history:[],user:c,maxTokens:700,temperature:.3,thinkingLevel:`low`,tools:{webSearch:!0}},n),{text:u,sources:d}=Qe(l.raw);return u?{text:u,at:r,grounded:(l.sources?.length??0)>0||d.length>0,...l.sources&&l.sources.length?{sources:l.sources}:{},...a?{tripwireId:a.id}:{}}:null}catch(e){return console.error(`[dashboards] analyzeMove failed`,e),null}}function et(e){let t=(e??[]).slice(-3);if(t.length<3)return 0;let[n,r,i]=t;return n.value<r.value&&r.value<i.value?1:n.value>r.value&&r.value>i.value?-1:0}function tt(e){let t=e.metrics.filter(e=>(e.history?.length??0)>=3);for(let n=0;n<t.length;n++)for(let r=n+1;r<t.length;r++){let i=t[n],a=t[r],o=et(i.history);if(o!==0&&o===et(a.history))return{text:`${i.label} and ${a.label} have moved together over the last three checks.`,dashboardIds:[e.id]}}return null}function nt(e,t){let n=e.filter(e=>{let n=e.cadence.window;return!!n&&t>=n.startAt&&t<=n.endAt});if(n.length<2)return null;let[r,i]=n;return{text:`${r.title} and ${i.title} overlap right now — their checks are batched into shared searches while both are live.`,dashboardIds:[r.id,i.id]}}var rt=5;function it(e){if(e.cadence.data!==`15min`&&e.cadence.data!==`hourly`)return null;let t=e.metrics.find(e=>(e.history?.length??0)>=rt);if(!t?.history)return null;let n=t.history.slice(-5);return n.every(e=>e.value===n[0].value)?{text:`${t.label} hasn't moved across ${e.title}'s last ${rt} checks.`,dashboardIds:[e.id]}:null}function at(e,t){let n=t.note?` ${t.note}`:``;return{text:`Sources disagreed on ${t.metricLabel}: ${t.readings.join(` vs `)}.${n}`,dashboardIds:[e.id]}}var ot=432e5;function st(e,t,n){let r=n-ot;return e.some(e=>e.kind===`insight`&&e.at>=r&&e.text===t.text)}function ct(e,t,n,r=2){let i=[],a=nt(e,n);a&&i.push(a);for(let t of e){let e=tt(t);e&&i.push(e);let n=it(t);n&&i.push(n)}return i.filter(e=>!st(t,e,n)).slice(0,r)}var lt=e({checkAllDashboardsNow:()=>Ct,readDashboardNow:()=>wt,refreshDashboardNow:()=>St,runRefreshBatch:()=>$,selectTickTargets:()=>Tt,useDashboardLoop:()=>Et,useVerdictPending:()=>mt}),ut=15e3,dt=3e5;function ft(e,t){switch(e?.kind){case`rate-limit`:return e.retryAt?Math.max(15e3,e.retryAt-t):6e4;case`provider-unavailable`:return 12e4;case`auth`:return 216e5;default:return dt}}var Y=new Set,X=new Set,Z=`mavea-dashboard-verdict-pending`;function Q(e,t){t?X.add(e):X.delete(e);try{typeof window<`u`&&typeof CustomEvent==`function`&&window.dispatchEvent(new CustomEvent(Z,{detail:e}))}catch{}}function pt(e){return window.addEventListener(Z,e),()=>window.removeEventListener(Z,e)}function mt(e){let t=(0,de.c)(2),n;return t[0]===e?n=t[1]:(n=()=>X.has(e),t[0]=e,t[1]=n),(0,P.useSyncExternalStore)(pt,n,ht)}function ht(){return!1}function gt(e,t){return e.map(e=>{let n=t.perDashboard[e.d.id]??{values:{},widgets:{}},r=e.metrics.find(e=>n.values[e.id]);return r?`${e.d.title} at ${n.values[r.id].raw}`:e.targets.some(e=>n.widgets[e.id])?`${e.d.title} updated`:t.grounded?`${e.d.title} checked`:`${e.d.title} — couldn't verify`}).join(` · `)}var _t=`Daily search budget reached — auto-checks paused until midnight. Manual checks still work.`;function vt(e){let t=new Date(e);return t.setHours(0,0,0,0),t.getTime()}function yt(e){let t=vt(e);w().some(e=>e.kind===`savings`&&e.at>=t&&e.text===_t)||T({kind:`savings`,text:_t,dashboardIds:[],searches:0})}async function bt(e,t,n,r,i,a,o=!1){let{d:s}=e,l=Object.keys(t.values).length>0||Object.keys(t.widgets).length>0?`updated`:o?`unverified`:`no-change`,u=s.metrics.map(e=>{let n=t.values[e.id];return n?{...e,lastValue:n.value}:e}),d={...s,metrics:u},{tripwires:f,newlyTriggered:p}=H(d,n),m=s.oneShotAt!==void 0&&s.oneShotAt<=a;y(s.id,{values:Object.entries(t.values).map(([e,t])=>({metricId:e,value:t.value,raw:t.raw,origin:`search`})),blocks:Object.entries(t.widgets).map(([e,t])=>({widgetId:e,block:t})),tripwires:f,outcome:l,...t.expects?{expects:t.expects}:{},...t.grade?{grade:t.grade}:{},...m?{consumedOneShot:!0}:{}},a),p.length&&(N(d,p),T({kind:`alert`,text:`${p.map(e=>e.label).join(`, `)} crossed the line you set.`,dashboardIds:[s.id],searches:0}),d.alerts.inApp&&le({dashboardId:s.id,dashboardTitle:s.title,tripwireLabel:p[0].label})),t.disagreement&&T({kind:`insight`,text:at(s,t.disagreement).text,dashboardIds:[s.id],searches:0});let _={...s,tripwires:f},v=W(_,p,a);if(v.fire&&v.trigger&&i){Q(s.id,!0);let e=await J(_,v.trigger,r,a);Q(s.id,!1),e?c(s.id,e,a):g(s.id,a,`Mavéa couldn't get a fresh read — will try again.`),h(s.id,a),T({kind:v.trigger===`scheduled`?`check`:`alert`,text:e?e.text.slice(0,200):`Couldn't get a fresh read on ${s.title}.`,dashboardIds:[s.id],searches:1,...e?.sources?.length?{sourceCount:e.sources.length}:{}})}else v.fire&&v.trigger&&h(s.id,a);return l}async function $(e,t,n,r={}){let i=Date.now(),a={},o=q(e),s=e.filter(e=>!o.some(t=>t.d.id===e.id)),c={};for(let t of e)c[t.id]=Object.fromEntries(t.metrics.map(e=>[e.id,e.lastValue]));for(let e of s)a[e.id]=await bt({d:e,metrics:[],targets:[]},{values:{},widgets:{}},c[e.id],t,n,i);if(o.length===0)return a;let l=new Map(o.map(e=>[e.d.id,p(e.d.id,i)])),f=e=>{for(let t of l.values())e(t)};if(!n)return a;let h=o.map(e=>e.d.id);j(h,!0);try{let e=await Xe(o,t,r.briefing?{briefingContext:r.briefing.context}:{});if(!e.ok){let t=e.failure??{kind:`network`},n=ft(e.failure,i);f(n=>{u(n,`search`,!1,{detail:d(t)}),m(n,{outcome:`failed`,failure:t,attempts:e.attempts})});for(let e of o)b(e.d.id,i+n),x(e.d.id,t,i),a[e.d.id]=`failed`;return a}for(let r of o){let o=e.perDashboard[r.d.id]??{values:{},widgets:{}},s=l.get(r.d.id)??null;u(s,`search`,!0,{count:e.attempts}),u(s,`sources`,e.sources.length>0,{count:e.sources.length,...e.sources.length===0?{detail:`The model answered without citing a live source.`}:{}});let d=Object.keys(o.values).length+Object.keys(o.widgets).length;u(s,`extraction`,d>0,{count:d,...d===0?{detail:`Nothing in the reply matched this tracker’s metrics or cards.`}:{}}),u(s,`grounding`,e.grounded,{...e.grounded?{}:{detail:`Ungrounded — every value from it was discarded.`}}),a[r.d.id]=await bt(r,o,c[r.d.id],t,n,i,!e.grounded);let f=a[r.d.id];u(s,`saved`,f===`updated`||f===`no-change`),u(s,`tripwires`,!0),m(s,{outcome:f===`failed`?`failed`:f,attempts:e.attempts,...f===`unverified`?{failure:{kind:`ungrounded`}}:{}})}r.briefing&&e.briefing&&(oe(e.briefing,r.briefing.allDashboards,i),T({kind:`briefing`,text:`Morning briefing compiled — folded into this batched search.`,dashboardIds:o.map(e=>e.d.id),searches:0}));let s=[...new Set(e.sources.map(e=>k(e.url)))].filter(Boolean);return T({kind:`check`,text:gt(o,e),dashboardIds:o.map(e=>e.d.id),...s.length?{domains:s}:{},searches:1,...e.sources.length?{sourceCount:e.sources.length}:{},...r.manual?{manual:!0}:{}}),a}finally{j(h,!1)}}async function xt(e,t,n,r){let{tripwires:i,newlyTriggered:a}=H(e);f(e.id,i,r),a.length&&(N(e,a),e.alerts.inApp&&le({dashboardId:e.id,dashboardTitle:e.title,tripwireLabel:a[0].label}));let o={...e,tripwires:i},s=W(o,a,r);if(!s.fire||!s.trigger||!n)return;Q(e.id,!0);let l=await J(o,s.trigger,t,r);Q(e.id,!1),l?c(e.id,l,r):g(e.id,r,`Mavéa couldn't get a fresh read — will try again.`),h(e.id,r),T({kind:s.trigger===`scheduled`?`check`:`alert`,text:l?l.text.slice(0,200):`Couldn't get a fresh read on ${e.title}.`,dashboardIds:[e.id],searches:1,...l?.sources?.length?{sourceCount:l.sources.length}:{}})}async function St(e){if(Y.has(e))return`busy`;let t=v(e);if(!t)return`busy`;let n=C(S());if(!n.apiKey)return`no-model`;Y.add(e);try{let r=await $([t],n,!0,{manual:!0});return r[e]===`failed`?`failed`:r[e]===`unverified`?`unverified`:`done`}finally{Y.delete(e)}}async function Ct(){let e=C(S());if(!e.apiKey)return`no-model`;let t=_().filter(D),n=t.filter(e=>!Y.has(e.id));if(n.length===0)return t.length>0?`busy`:`done`;for(;n.length>0;){let t=q(n);if(t.length===0)break;let r=t.map(e=>e.d.id);r.forEach(e=>Y.add(e));let i={};try{i=await $(t.map(e=>e.d),e,!0,{manual:!0})}finally{r.forEach(e=>Y.delete(e))}if(r.length>0&&r.every(e=>i[e]===`failed`))return`failed`;n=n.filter(e=>!r.includes(e.id))}return`done`}async function wt(e){if(X.has(e))return`busy`;let t=v(e);if(!t)return`failed`;let n=C(S());if(!n.apiKey)return`no-model`;let r=Date.now(),i=t.tripwires.find(e=>e.state===`TRIGGERED`),a=i??`scheduled`;Q(e,!0);let o;try{o=await J(t,a,n,r)}finally{Q(e,!1)}return o?c(e,o,r):g(e,r,`Mavéa couldn’t get a fresh read — try again in a moment.`),h(e,r),T({kind:i?`alert`:`check`,text:o?o.text.slice(0,200):`Couldn’t get a fresh read on ${t.title}.`,dashboardIds:[e],searches:1,manual:!0,...o?.sources?.length?{sourceCount:o.sources.length}:{}}),o?`done`:`failed`}function Tt(e,t,n,r,i){let a=Pe(e,r).filter(e=>!i.has(e.id)),o=Fe(e,r);o&&i.has(o.id)&&(o=null);let s=A(t,n,r),c=!1;s.paused&&(c=a.some(D)||!!o,a=a.filter(e=>!D(e)),o=null);let l=q(a);return o&&l.some(e=>e.d.id===o.id)&&(o=null),{dueData:a,dueAi:o,pausedAndBlocked:c}}function Et(){let e=(0,P.useRef)(!1);(0,P.useEffect)(()=>{let t=!0,n=async()=>{if(e.current||!t||typeof document<`u`&&document.visibilityState!==`visible`)return;let n=C(S()),r=!!n.apiKey,i=Date.now(),a=_(),o=re(),s=w();ue(a,s,e=>E(s,e,i),e=>l(e,i-6048e5,i),i);for(let e of ct(a,s,i))T({kind:`insight`,text:e.text,dashboardIds:e.dashboardIds,searches:0});let{dueData:c,dueAi:u,pausedAndBlocked:d}=Tt(a,s,o.dailySearchBudget,i,Y);d&&yt(i);let f=r&&o.briefingEnabled&&ce(i);if(c.length===0&&!u){if(f&&!a.some(D)){let e=se(a,new Set);if(e){let t=await Xe([],n,{briefingContext:e});t.briefing&&(oe(t.briefing,a,i),T({kind:`briefing`,text:`Morning briefing compiled.`,dashboardIds:[],searches:1}))}}return}e.current=!0,c.forEach(e=>Y.add(e.id)),u&&Y.add(u.id);try{if(c.length>0){let e=f?{context:se(a,new Set(q(c).map(e=>e.d.id))),allDashboards:a}:void 0;await $(c,n,r,e?{briefing:e}:{})}u&&await xt(u,n,r,i)}finally{c.forEach(e=>Y.delete(e.id)),u&&Y.delete(u.id),e.current=!1}},r=()=>{me(n).catch(e=>{console.error(`[dashboards] scheduled tick failed`,e)})},i=window.setInterval(r,ut),a=()=>{document.visibilityState===`visible`&&r()};return document.addEventListener(`visibilitychange`,a),r(),()=>{t=!1,window.clearInterval(i),document.removeEventListener(`visibilitychange`,a)}},[])}export{mt as a,he as c,lt as i,F as l,St as n,H as o,Et as r,Ce as s,wt as t};
@@ -1 +1 @@
1
- import{T as e,j as t}from"./kokoro-yB7iU_JU.js";import{n,t as r}from"./nextFrame-12y0UrAd.js";var i=1100,a=15e3,o=1e4,s=12e3,c=8e3,l=3500,u=2500,d=3e3,f=1800;function p(e){return e*2+12e3}function m(e,t=1700){let n=e.trim();return n?Math.min(7e3,Math.max(1500,Math.round(n.split(/\s+/).length*385+500))):t}function h(e){return new Promise(t=>setTimeout(t,e))}async function g(e,t=a){return await n(e.started,t)??!1}async function _(e,t,r=i){await Promise.all([n(e.finished,p(t)),h(r)])}function v(n){let r=n.speaking??e,i=n.subscribe??t;return new Promise(e=>{let t=!1,a=!1,o=()=>{a||(a=!0,c(),clearTimeout(l),e())},s=()=>{t&&!r()&&o()},c=i(s);setTimeout(()=>{t=!0,s()},n.floorMs);let l=setTimeout(o,n.capMs)})}function y(e){let t=e;return typeof t.getAnimations==`function`&&t.getAnimations({subtree:!0}).some(e=>e.playState===`running`)}async function b(e,t=`.card`,i=f){await n((async()=>{await r(),await r();let n=e()?.querySelector(t)??null;for(;!n;)await r(),n=e()?.querySelector(t)??null;for(;y(n);)await r()})(),i)}async function x(e){try{await n((async()=>{await r(),await r(),await n(e.loadFams(),c),e.settle&&await e.settle(),e.wantVoice&&e.firstLine&&await n(e.firstLine.started,o)})(),s)}catch{}}export{b as a,p as c,g as d,v as f,d as i,m as l,u as n,x as o,l as r,h as s,i as t,_ as u};
1
+ import{T as e,j as t}from"./kokoro-DogSQaQB.js";import{n,t as r}from"./nextFrame-12y0UrAd.js";var i=1100,a=15e3,o=1e4,s=12e3,c=8e3,l=3500,u=2500,d=3e3,f=1800;function p(e){return e*2+12e3}function m(e,t=1700){let n=e.trim();return n?Math.min(7e3,Math.max(1500,Math.round(n.split(/\s+/).length*385+500))):t}function h(e){return new Promise(t=>setTimeout(t,e))}async function g(e,t=a){return await n(e.started,t)??!1}async function _(e,t,r=i){await Promise.all([n(e.finished,p(t)),h(r)])}function v(n){let r=n.speaking??e,i=n.subscribe??t;return new Promise(e=>{let t=!1,a=!1,o=()=>{a||(a=!0,c(),clearTimeout(l),e())},s=()=>{t&&!r()&&o()},c=i(s);setTimeout(()=>{t=!0,s()},n.floorMs);let l=setTimeout(o,n.capMs)})}function y(e){let t=e;return typeof t.getAnimations==`function`&&t.getAnimations({subtree:!0}).some(e=>e.playState===`running`)}async function b(e,t=`.card`,i=f){await n((async()=>{await r(),await r();let n=e()?.querySelector(t)??null;for(;!n;)await r(),n=e()?.querySelector(t)??null;for(;y(n);)await r()})(),i)}async function x(e){try{await n((async()=>{await r(),await r(),await n(e.loadFams(),c),e.settle&&await e.settle(),e.wantVoice&&e.firstLine&&await n(e.firstLine.started,o)})(),s)}catch{}}export{b as a,p as c,g as d,v as f,d as i,m as l,u as n,x as o,l as r,h as s,i as t,_ as u};
package/dist/index.html CHANGED
@@ -134,7 +134,7 @@
134
134
  }
135
135
  }
136
136
  </style>
137
- <script type="module" crossorigin src="/assets/index-Db-FgYxX.js"></script>
137
+ <script type="module" crossorigin src="/assets/index-yJfYsjAB.js"></script>
138
138
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-DkW27tQK.js">
139
139
  <link rel="modulepreload" crossorigin href="/assets/react-BZJXY1be.js">
140
140
  <link rel="modulepreload" crossorigin href="/assets/compiler-runtime-qQQXpJgv.js">
@@ -1,6 +1,6 @@
1
1
  # Mavéa Terms of Use
2
2
 
3
- Effective: August 22, 2026
3
+ Effective: August 23, 2026
4
4
 
5
5
  These Terms of Use (the **Terms**) govern your use of the Mavéa application, command-line package, demos, documentation, and related materials (collectively, the **Service**). **Licensor** means each applicable copyright holder offering software under the PolyForm license. **Maintainers** means the people who publish or contribute to Mavéa; a Maintainer is not necessarily a Licensor. **Deployment operator** means the person or organization hosting the copy you use. **Responsible Party** means the applicable Licensor, Maintainer, or deployment operator responsible for a statement, obligation, service, or claim. In these Terms, **we**, **us**, or **our** means the relevant Responsible Party or Parties in context. A separately operated deployment remains independent from the Licensors and Maintainers unless the same person or organization serves both roles.
6
6
 
@@ -8,7 +8,7 @@ The [PolyForm Noncommercial License 1.0.0](./LICENSE) separately governs copyrig
8
8
 
9
9
  ## 1. Acceptance and eligibility
10
10
 
11
- By downloading, installing, accessing, or using the Service, or by selecting the in-product acceptance checkbox, you agree to these Terms and the PolyForm license and acknowledge the [Privacy Notice](./PRIVACY.md) and [Disclaimer](./DISCLAIMER.md). If you use Mavéa for an organization, you represent that you have authority to accept these Terms for it. If you do not agree, do not use the Service.
11
+ By downloading, installing, accessing, or using the Service, by selecting the in-product acceptance checkbox, or by submitting an issue, a discussion post, a message to a published Mavéa contact address, or any other feedback through a Mavéa project channel, you agree to these Terms and the PolyForm license and acknowledge the [Privacy Notice](./PRIVACY.md) and [Disclaimer](./DISCLAIMER.md). Submitting feedback is enough on its own: Section 9 is written to bind whoever sends it, including someone who has never installed or run Mavéa. If you use Mavéa for an organization, you represent that you have authority to accept these Terms for it. If you do not agree, do not use the Service.
12
12
 
13
13
  You must be at least 18 years old, legally capable of entering this agreement, and permitted to use the Service under applicable law. The Service is not directed to children. A parent or guardian should not provide a child access to connected model, upload, microphone, or action features.
14
14
 
@@ -91,7 +91,13 @@ As between you and the Responsible Parties, the Responsible Parties do not claim
91
91
 
92
92
  Bundled and linked third-party materials can carry copyright licences, attribution requirements, personality or publicity rights, privacy interests, trademark rights, property restrictions, or other limitations. A copyright licence or public-domain label does not necessarily clear every depicted person, place, object, logo, or use. Preserve the notices in `THIRD-PARTY.txt` and `public/demo-assets/CREDITS.md`, follow their source terms, and obtain any additional releases or permissions your use requires.
93
93
 
94
- You may submit issue reports and feature suggestions without including code, patches, documentation changes, confidential information, or trade secrets. You grant the applicable Licensors and Maintainers, and their successors and assigns, a worldwide, perpetual, irrevocable, royalty-free right to use, modify, publish, and commercialize ideas and feedback you voluntarily submit, without restriction or compensation. This does not transfer ownership of inventions or copyrighted materials that are not included in your feedback.
94
+ You may submit issue reports and feature suggestions without including code, patches, documentation changes, confidential information, or trade secrets. Mavéa does not accept external code: material of that kind posted in any channel is not reviewed, not incorporated, and creates no contribution, no authorship, and no rights in Mavéa. The only authorized code maintainers are named in [CONTRIBUTING.md](./CONTRIBUTING.md).
95
+
96
+ You grant the applicable Licensors and Maintainers, and their successors and assigns, a worldwide, perpetual, irrevocable, transferable, sublicensable, royalty-free right to use, modify, publish, and commercialize ideas and feedback you voluntarily submit, without restriction, attribution, accounting, or compensation. This grant applies however the feedback reaches us — an issue, a discussion, an email, or any other project channel — and whether or not you have installed, accessed, or used the Service. It survives any assignment or transfer of these Terms and runs to the benefit of a successor in a financing, merger, acquisition, or sale of assets, on the same terms.
97
+
98
+ Feedback is not confidential and creates no confidential or fiduciary relationship. We may already be working on, or may independently develop, anything your feedback describes, and nothing in it obliges us to use it, keep it, respond to it, or refrain from developing something similar. To the maximum extent permitted by law, you waive any moral rights and any right to be identified in relation to feedback you submit. You represent that you are entitled to submit what you send and that it infringes no one else's rights.
99
+
100
+ This does not transfer ownership of inventions or copyrighted materials that are not included in your feedback.
95
101
 
96
102
  ## 10. Availability, changes, and support
97
103
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mavea/mavea",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "type": "module",
5
5
  "description": "Mavéa — an AI Presence interface. Talk to AI. See what it means.",
6
6
  "keywords": [
@@ -1 +0,0 @@
1
- import{r as e}from"./useDashboardLoop-Cnxmf7wU.js";function t(){return e(),null}export{t as DashboardLoopRuntime};
@@ -1 +0,0 @@
1
- import"./TopicCanvas-Cwc6-K3q.js";
Binary file