@mavea/mavea 1.0.18 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/CHANGELOG.md +59 -3
  2. package/README.md +5 -0
  3. package/dist/.vite/manifest.json +680 -514
  4. package/dist/assets/AnnotationLayer-IiuYsoSa.js +0 -0
  5. package/dist/assets/{AppCommandPalette-DKBglbNo.js → AppCommandPalette-Dm3SedPO.js} +1 -1
  6. package/dist/assets/CanvasSkeleton-CcHXJqdq.js +2 -0
  7. package/dist/assets/{CheckLogRail-Btg7Linv.js → CheckLogRail-BU_rmAFH.js} +1 -1
  8. package/dist/assets/{CommandPalette-DagPdSGZ.js → CommandPalette-E3reEqYR.js} +1 -1
  9. package/dist/assets/{ConversationVideoStudio-EPw6H4lE.js → ConversationVideoStudio-DEZBpJUz.js} +1 -1
  10. package/dist/assets/CourseLessonReader-Bpt-DkJo.js +2 -0
  11. package/dist/assets/{CourseRail-Dx9IIbTZ.js → CourseRail-C8MJG-zf.js} +1 -1
  12. package/dist/assets/{CoursesApp-CzUGaYWZ.js → CoursesApp-DFVkhP2f.js} +2 -2
  13. package/dist/assets/{DashPresent-DXwesMIr.js → DashPresent-DwWDtjrU.js} +1 -1
  14. package/dist/assets/DashboardDetail-D4wkiTux.js +2 -0
  15. package/dist/assets/DashboardLoopGate-B5UBPsvU.js +2 -0
  16. package/dist/assets/DashboardLoopRuntime-CAnZX234.js +1 -0
  17. package/dist/assets/{DashboardSettings-CmZWG3US.js → DashboardSettings-eMhHliVh.js} +1 -1
  18. package/dist/assets/DashboardsApp-BwFtTdWa.js +2 -0
  19. package/dist/assets/{DeepZoomApp-CwqKpjo7.js → DeepZoomApp-CxdcUeFJ.js} +1 -1
  20. package/dist/assets/{DelegatePanel-Bi1qPgGG.js → DelegatePanel-B0kIu8Et.js} +1 -1
  21. package/dist/assets/DemoGallery-B__X0_H3.js +1 -0
  22. package/dist/assets/{DropSelect-C3g0PjuN.js → DropSelect-C3uYlej-.js} +1 -1
  23. package/dist/assets/ExportModal-CDGlhpdH.js +2 -0
  24. package/dist/assets/ExtractionPreview-CloJnrQi.js +18 -0
  25. package/dist/assets/{FeatureUseNotice-BhljPjUv.js → FeatureUseNotice-CwHstxBh.js} +1 -1
  26. package/dist/assets/{FlagshipCommandPalette-DyNsP8k3.js → FlagshipCommandPalette-CHsD5BSH.js} +1 -1
  27. package/dist/assets/{FlagshipShowcase-DHpGPlca.js → FlagshipShowcase-D53Q_4m0.js} +1 -1
  28. package/dist/assets/{FlashcardsApp-Cm50X3Hl.js → FlashcardsApp-CnLfEnDH.js} +1 -1
  29. package/dist/assets/{GalleryApp-BFop9Eu7.js → GalleryApp-2Ffc6CY6.js} +1 -1
  30. package/dist/assets/{HonestByDesign-HeTTCiis.js → HonestByDesign-5jIu2ZC8.js} +1 -1
  31. package/dist/assets/{HowItWorks-gAuUl7VQ.js → HowItWorks-BiJF84EM.js} +1 -1
  32. package/dist/assets/{LegalApp-jOlpLQSV.js → LegalApp-zC-rvTww.js} +1 -1
  33. package/dist/assets/{LegalMarkdownDocument-RSNiyAu0.js → LegalMarkdownDocument-CJ-gRHdX.js} +1 -1
  34. package/dist/assets/{LegalPageShell-Cr90l1I2.js → LegalPageShell-Dyd4Uh3r.js} +1 -1
  35. package/dist/assets/{LibraryOverlay-DEQ5GuIs.js → LibraryOverlay-_xpWdhLN.js} +1 -1
  36. package/dist/assets/{LiveApp-Bl7WBgqJ.css → LiveApp-BNae3fDZ.css} +1 -1
  37. package/dist/assets/LiveApp-DjcJQURO.js +78 -0
  38. package/dist/assets/{LiveSettings-jn26sH4v.js → LiveSettings-BceODlOb.js} +3 -3
  39. package/dist/assets/{MindMapViewerDrawer-CDDzzpFi.js → MindMapViewerDrawer-BuDodC0s.js} +1 -1
  40. package/dist/assets/{MindShape-BeZFay7O.js → MindShape-CBcCC7hP.js} +1 -1
  41. package/dist/assets/PinToDashboard-DBIXvhlF.js +1 -0
  42. package/dist/assets/PlanReview-DUQ7OMvV.js +1 -0
  43. package/dist/assets/PresentationDeck-C518t9pP.js +1 -0
  44. package/dist/assets/PrismApp-DRLl8841.js +2 -0
  45. package/dist/assets/PrismAskController-QRwxRP8D.js +37 -0
  46. package/dist/assets/{PrismBriefingPlayer-BoB_PCTT.js → PrismBriefingPlayer-Kyb8Vs_w.js} +2 -2
  47. package/dist/assets/PrismOverlay-Bj7tCu5Q.js +105 -0
  48. package/dist/assets/{PrismWorkbench-f0rLNBxb.js → PrismWorkbench-BCnhkp-S.js} +1 -1
  49. package/dist/assets/{PrivacyApp-CFs0PM5C.js → PrivacyApp-DHSRr8wq.js} +1 -1
  50. package/dist/assets/{ReplayCard-BkJbY0-I.js → ReplayCard-CKo5reXy.js} +2 -2
  51. package/dist/assets/{ReplayOverlay-Dm_k7FBA.js → ReplayOverlay-DqAwLshS.js} +1 -1
  52. package/dist/assets/{RewindOverlay-BSDbLgcN.js → RewindOverlay-CkJIETE0.js} +1 -1
  53. package/dist/assets/RippleApp-C76VTaZK.js +2 -0
  54. package/dist/assets/{RippleAskController-CywVzqUA.js → RippleAskController-CdlMlRH8.js} +2 -2
  55. package/dist/assets/{RippleOverlay-DVxfWEQ8.js → RippleOverlay-Mvz3CXhD.js} +2 -2
  56. package/dist/assets/{SeeDontRead-Ct4PY63d.js → SeeDontRead-BkySmnP3.js} +1 -1
  57. package/dist/assets/{ShareModal-BILPvqjZ.js → ShareModal-Cl3ryjgK.js} +2 -2
  58. package/dist/assets/{ShipCourse-DGj9BbRM.js → ShipCourse-Cy5ldKLE.js} +1 -1
  59. package/dist/assets/{SignatureLoop-CfM-rTXb.js → SignatureLoop-Cdkifjb8.js} +1 -1
  60. package/dist/assets/SynthesisApp-C5udWwng.js +2 -0
  61. package/dist/assets/{SynthesisOverlay-Dunk_JWD.js → SynthesisOverlay-1o-CJsyX.js} +1 -1
  62. package/dist/assets/{TermsApp-BUQa48cB.js → TermsApp-DIAESAZs.js} +1 -1
  63. package/dist/assets/TopicCanvas-DkzJORfl.js +2 -0
  64. package/dist/assets/{TourPrism-zt1LIaLd.js → TourPrism-Bxp--s0i.js} +1 -1
  65. package/dist/assets/{TrackerTile-sYD2MM_4.js → TrackerTile-CyPD0A6b.js} +2 -2
  66. package/dist/assets/{TwoSurfaces-CLOIlVvY.js → TwoSurfaces-C_0XBpwA.js} +1 -1
  67. package/dist/assets/WhyMachineOverlay-QDSZx5Y7.js +1 -0
  68. package/dist/assets/WorldOverlay-DRdBQMnb.css +1 -0
  69. package/dist/assets/WorldOverlay-DorHCLzw.js +1 -0
  70. package/dist/assets/{WowFeatures-CNVwRlf0.js → WowFeatures-DNEeO2pr.js} +1 -1
  71. package/dist/assets/{ZoomDeck-DNgyW7Nm.js → ZoomDeck-qdlPe_yl.js} +1 -1
  72. package/dist/assets/{annotationAuto-C9weSF2k.js → annotationAuto-BmKrZ3hU.js} +1 -1
  73. package/dist/assets/{annotationReel-va1i-lKs.js → annotationReel-K2FYv-3B.js} +1 -1
  74. package/dist/assets/{backup-D--1WRte.js → backup-PaRBwjJy.js} +1 -1
  75. package/dist/assets/{blockTypes-CgNGx27_.js → blockTypes-DUDdP3pB.js} +1 -1
  76. package/dist/assets/canvas-BlkTFnVo.js +1 -0
  77. package/dist/assets/{capture-BBxyt5SN.js → capture-CL9ENM-c.js} +1 -1
  78. package/dist/assets/confirmAdd-CZPBG1xe.js +1 -0
  79. package/dist/assets/csv-DAqzYXUs.js +5 -0
  80. package/dist/assets/{dashboardEvents-BDKxoLch.js → dashboardEvents-D-wLCp1A.js} +1 -1
  81. package/dist/assets/dashboards-CdzGklae.css +1 -0
  82. package/dist/assets/display-BrieMea1.js +1 -0
  83. package/dist/assets/emphasize-BqCIst-B.js +1 -0
  84. package/dist/assets/engine-2U7mvPIl.js +1 -0
  85. package/dist/assets/engine-BF8FqSbi.css +1 -0
  86. package/dist/assets/explode-qQ7Fzt6V.js +15 -0
  87. package/dist/assets/{generate-CemSUZ8A.js → generate-C9vOL1C2.js} +3 -3
  88. package/dist/assets/generateBeats-DpDpBcgV.js +1 -0
  89. package/dist/assets/{generateCourse-BIBbw-ZJ.js → generateCourse-DU281tDE.js} +1 -1
  90. package/dist/assets/{generateLive-BsXn4Y_d.js → generateLive-_x2tWkBH.js} +18 -18
  91. package/dist/assets/{index-D1SPhBGd.js → index-CfcUMOBf.js} +4 -4
  92. package/dist/assets/index-D4FIsool.css +1 -0
  93. package/dist/assets/{kokoro-C6P0LV4L.js → kokoro-CdL8Kl48.js} +1 -1
  94. package/dist/assets/{liveSchema-B8OByCPH.js → liveSchema-B4bQtO88.js} +22 -21
  95. package/dist/assets/{model-BsQ5ixwB.js → model-DxwoIVpo.js} +1 -1
  96. package/dist/assets/nextFrame-12y0UrAd.js +1 -0
  97. package/dist/assets/notes-CUeZ1cYu.js +1 -0
  98. package/dist/assets/{number-DXgzss0v.js → number-Bmf7DqLj.js} +1 -1
  99. package/dist/assets/officeDoc-GU6Cssjf.js +3 -0
  100. package/dist/assets/openWorld-BHTJM39n.js +1 -0
  101. package/dist/assets/{pen-D9UT-ioQ.js → pen-BAEq0JnM.js} +1 -1
  102. package/dist/assets/{perfProbe-BxyiHsI2.js → perfProbe-3Ip5n0yx.js} +1 -1
  103. package/dist/assets/{pin-qQrH_dBi.js → pin-BwWjjqmt.js} +1 -1
  104. package/dist/assets/{planTracker-CjnznF7v.js → planTracker-BI9z_0gW.js} +1 -1
  105. package/dist/assets/portal-BJzn-Tgn.js +1 -0
  106. package/dist/assets/{prewarm-CAZcnT4x.js → prewarm-CheeUP2L.js} +1 -1
  107. package/dist/assets/providers-B2OCzEo1.js +1 -0
  108. package/dist/assets/{quietHours-_i5Uqz7z.js → quietHours-DCMczU9R.js} +1 -1
  109. package/dist/assets/ready-Ba6nk9O1.js +1 -0
  110. package/dist/assets/{ready-4lPJes2S.js → ready-DZY1bETr.js} +1 -1
  111. package/dist/assets/receipts-ClyzFFGD.js +1 -0
  112. package/dist/assets/{registry-CtvKPLd7.js → registry-BM9FDQxO.js} +1 -1
  113. package/dist/assets/{registry-BzH7mEl7.js → registry-BRbEINOV.js} +1 -1
  114. package/dist/assets/{registry-COkvZrNA.css → registry-BZuT2Epw.css} +1 -1
  115. package/dist/assets/{registry-NbNNn_ra.js → registry-ChQGee7C.js} +1 -1
  116. package/dist/assets/registry-D4Xdd7dO.js +1 -0
  117. package/dist/assets/{registry-CkScyZGa.js → registry-D_4_HlMg.js} +1 -1
  118. package/dist/assets/registry-DuP_q42N.js +1 -0
  119. package/dist/assets/{relate-DHPSGB7a.js → relate-BXcg3Ioz.js} +1 -1
  120. package/dist/assets/{replay-zh4xVk5G.js → replay-rSsGKjEc.js} +1 -1
  121. package/dist/assets/{run-ByCJN-29.js → run-CkaYNX89.js} +1 -1
  122. package/dist/assets/{run-BdDyp6Xv.js → run-aj7robML.js} +2 -2
  123. package/dist/assets/{run-DiPX83_J.js → run-ndUTOxjM.js} +1 -1
  124. package/dist/assets/seed-DN4mRJp-.js +1 -0
  125. package/dist/assets/shapes-C5fjibEc.js +42 -0
  126. package/dist/assets/{spokenText-D3iS8fuI.js → spokenText-C88IQJ0M.js} +1 -1
  127. package/dist/assets/store-B39HvB_l.js +1 -0
  128. package/dist/assets/theme-7IrMJ70_.js +1 -0
  129. package/dist/assets/types-C42I77wh.js +1 -0
  130. package/dist/assets/useDashboardLoop-B_YA5jLs.js +5 -0
  131. package/dist/assets/useDashboards-GafZIADI.js +1 -0
  132. package/dist/assets/useLiveConfig-DWz7BRdk.js +1 -0
  133. package/dist/assets/useSpatialCanvas-CfmZOXXP.js +1 -0
  134. package/dist/assets/{useStudy-B5874Bcg.js → useStudy-CFIuakaM.js} +1 -1
  135. package/dist/assets/validate-CnG23_8J.js +1 -0
  136. package/dist/assets/walkSync-AAocUygp.js +1 -0
  137. package/dist/index.html +13 -12
  138. package/package.json +2 -1
  139. package/dist/assets/AnnotationLayer-DHHGgh8x.js +0 -2
  140. package/dist/assets/CanvasSkeleton-Bx0s36b_.js +0 -2
  141. package/dist/assets/CourseLessonReader-DeAuL1tO.js +0 -2
  142. package/dist/assets/DashboardDetail-CJzB85NC.js +0 -2
  143. package/dist/assets/DashboardLoopRuntime-CEnUpS-I.js +0 -1
  144. package/dist/assets/DashboardsApp-wCgs98G0.js +0 -2
  145. package/dist/assets/DemoGallery-Cg0ykVpG.js +0 -1
  146. package/dist/assets/ExportModal-rxndDhoO.js +0 -2
  147. package/dist/assets/ExtractionPreview-ChRAimKr.js +0 -18
  148. package/dist/assets/LiveApp-CUoQgVo1.js +0 -62
  149. package/dist/assets/PinToDashboard-CSqwDBLD.js +0 -1
  150. package/dist/assets/PlanReview-ChZeUHQO.js +0 -1
  151. package/dist/assets/PresentationDeck-Dj9MQVZC.js +0 -1
  152. package/dist/assets/PrismApp-Dfs6eAuR.js +0 -2
  153. package/dist/assets/PrismAskController-CSsCkRC8.js +0 -37
  154. package/dist/assets/PrismOverlay-CGtr7lBl.js +0 -109
  155. package/dist/assets/RippleApp-DW1rpKHe.js +0 -2
  156. package/dist/assets/SynthesisApp-C43ZO6Ew.js +0 -2
  157. package/dist/assets/TopicCanvas-DR26Swr_.js +0 -2
  158. package/dist/assets/WhyMachineOverlay-Nll4Wco-.js +0 -1
  159. package/dist/assets/canvas-DIs20T9l.js +0 -1
  160. package/dist/assets/confirmAdd-BDNV8RqF.js +0 -1
  161. package/dist/assets/dashboards-Dy4MTJQ5.css +0 -1
  162. package/dist/assets/explode-fgkkWz8o.js +0 -13
  163. package/dist/assets/generateBeats-aqKTlSN2.js +0 -1
  164. package/dist/assets/index-B69GkoTc.css +0 -1
  165. package/dist/assets/notes-U6gRKVHk.js +0 -1
  166. package/dist/assets/officeDoc-Dn8jw1fG.js +0 -3
  167. package/dist/assets/portal-t0bsUEg2.js +0 -1
  168. package/dist/assets/providers-DdJWf_PE.js +0 -1
  169. package/dist/assets/ready-LSwk88I-.js +0 -1
  170. package/dist/assets/registry-CueC1vq1.js +0 -1
  171. package/dist/assets/registry-CxUmdwDk.js +0 -1
  172. package/dist/assets/shapes-DI0LQC8n.js +0 -1
  173. package/dist/assets/store-DpmbKVs7.js +0 -1
  174. package/dist/assets/theme-f0mztBcq.js +0 -1
  175. package/dist/assets/useDashboardLoop-DuckIfJX.js +0 -5
  176. package/dist/assets/useDashboards-BMcuCWoz.js +0 -1
  177. package/dist/assets/useLiveConfig-9eJ7EM3B.js +0 -1
  178. package/dist/assets/useSpatialCanvas-CtVsYmp8.js +0 -1
  179. /package/dist/assets/{registry-DLyrLfe-2.js → registry-DLyrLfe-.js} +0 -0
@@ -1,5 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/liveSchema-B8OByCPH.js","assets/icons-gLFQTv74.js","assets/jsx-runtime-DeHZSEgm.js","assets/rolldown-runtime-DkW27tQK.js","assets/spokenText-D3iS8fuI.js","assets/safeImageUrl-BINWXOTz.js","assets/catalog-BHjl-1uH.js","assets/sourceHost-BV3t2XDb.js","assets/annotations-CftUUB13.js","assets/catalog-Db9GWM6N.js","assets/preload-helper-CiWYd9n-.js","assets/facts-BUGuVUIc.js","assets/blockTypes-CgNGx27_.js","assets/streamParse-B-Gjwa9T.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{i as a,t as o}from"./http-Lar_UMKb.js";import{O as s,d as c,h as l,i as u,m as d,p as f,u as p,x as m}from"./store-DpmbKVs7.js";import{t as h}from"./providers-DdJWf_PE.js";import{l as g,n as _}from"./useLiveConfig-9eJ7EM3B.js";import{i as v,n as y,r as b}from"./ledger-Cv0LBflx.js";import{i as x,r as ee,t as S}from"./dataPending-lZUzUEo6.js";import{c as te,i as C}from"./format-rPI6ZwwH.js";import{n as ne}from"./number-DXgzss0v.js";import{t as w}from"./json-B0N3XRZU.js";import{t as T}from"./now-C9-UAzTC.js";import{n as re,t as ie}from"./predictions-CkVKHq-5.js";import{t as E}from"./notify-Bz4wuE4T.js";import{a as D,i as O,r as ae,t as oe,u as se}from"./dashboardEvents-BDKxoLch.js";var k=t(),ce=n();function le(e){return new Set(e.toLowerCase().replace(/[^a-z0-9 ]/g,` `).replace(/\s+/g,` `).trim().split(` `).filter(e=>e.length>3))}function A(e){return e.replace(/\s+/g,` `).trim().toLowerCase()}r();function ue(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 de(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 fe(e,t,n){return t===null?`AWAITING`:ue(e.comparator,t,n,e.threshold)?`TRIGGERED`:de(e.comparator,t,e.threshold)?`WATCHING`:`CLEAR`}function j(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=fe(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 pe(e,t){return e.nextDataAt<=t||e.oneShotAt!==void 0&&e.oneShotAt<=t}function M(e){return e.oneShotAt===void 0?e.nextDataAt:Math.min(e.nextDataAt,e.oneShotAt)}function me(e,t=Date.now(),n=4){return e.filter(e=>pe(e,t)).sort((e,t)=>M(e)-M(t)).slice(0,n)}function he(e,t=Date.now()){return e.filter(e=>e.nextAiAt<=t).sort((e,t)=>e.nextAiAt-t.nextAiAt)[0]??null}function N(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 P(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 F(e,t){return(e.sources?.length??0)>0||P(t).length>0}function ge(e){return`- VALUE "${e.label}" — ${e.query}`}function _e(e,t){return`- BLOCK #${t} [${e.block.type}] ${e.refreshQuery}\n current content: ${JSON.stringify(e.block.props??{}).slice(0,600)}`}function I(){return{values:{},widgets:{}}}function ve(e){return{metrics:e.metrics.filter(e=>e.query.trim()!==``&&!e.blankKey),targets:e.widgets.filter(e=>!!e.refreshQuery?.trim())}}function L(e,t,n){return 400+t.length*120+n.length*1200+(e.prediction?150:0)}var ye=12e3;function R(e){let t=[],n=1200;for(let r of e){let{metrics:e,targets:i}=ve(r);if(e.length===0&&i.length===0)continue;let a=L(r,e,i);if(t.length>0&&n+a>ye)break;n+=a,t.push({d:r,metrics:e,targets:i})}return t}function be(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 xe(e,t){let n=[...e.metrics.map(ge),...e.targets.map((e,t)=>_e(e,t)),...e.d.prediction?[`- PREVIOUS EXPECTATION (made ${be(e.d.prediction.at,t)}): "${e.d.prediction.text}" — grade it.`]:[]];return`DASHBOARD ${e.d.id} "${e.d.title}"\n${n.join(`
3
- `)}`}function Se(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Ce(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(Se(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 we(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 Te(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 Ee=` 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 z(e,t,n={}){let r=Date.now(),s={ok:!0,grounded:!1,perDashboard:{},sources:[],attempts:0};if(e.length===0&&!n.briefingContext)return s;try{let s=h(t.provider),c=new Set(e.flatMap(e=>e.targets.map(e=>e.block.type))),l=c.size>0,u=e.map(e=>xe(e,r)).join(`
4
-
5
- `),d={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.`},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`]},f=Math.min(14e3,Math.max(3e3,1200+e.reduce((e,t)=>e+L(t.d,t.metrics,t.targets),0)+(n.briefingContext?700:0))),p=T()+` You are checking several standing trackers at once. Return ONLY JSON: {"dashboards": [{"id": string, "values": {...}, "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 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). 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 every name, place, brand, or non-English term a voice might 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. `:``)+`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.`,m=`Use web search.\n\n${u}`+(n.briefingContext?`\n\nCONTEXT (already known — do not search these):\n${n.briefingContext}`:``),g=e=>s.generate({system:e?p+Ee:p,history:[],user:m,maxTokens:f,temperature:.15,thinkingLevel:e?`high`:`low`,tools:{webSearch:!0},format:d,...l?{blockTypes:[...c],complexity:`brief`}:{}},t).then(e=>({rr:e,grounded:F(e,a(w(e.raw)))})),_=await g(!1),v=1;!_.grounded&&e.length>0&&(_=await g(!0),v=2);let{rr:y}=_,b=a(w(y.raw)),x=F(y,b),ee=Ce(b,e),S=l?(await i(async()=>{let{validateLiveResponse:e}=await import(`./liveSchema-B8OByCPH.js`);return{validateLiveResponse:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13]))).validateLiveResponse:null,C={};for(let t of e){let e=ee[t.d.id]??{},n=I();if(x&&t.metrics.length>0){let r=a(e.values),i=new Map(Object.entries(r).map(([e,t])=>[A(e),t]));for(let e of t.metrics){let t=ne(r[e.label]??i.get(A(e.label)));t!==null&&(n.values[e.id]={value:t,raw:te(String(t),e.unit)})}}if(t.targets.length>0&&S){let r=o(e.blocks);t.targets.forEach((e,t)=>{let i=r[t];if(!i)return;let a=S({narration:``,title:`x`,sub:``,blocks:[i]},new Set([e.block.type]),1,x)?.blocks[0];a&&a.type===e.block.type&&(n.widgets[e.id]=a)})}if(x){let r=ie(e.expects);if(r&&(n.expects=r),t.d.prediction){let t=re(e.grade);t&&(n.grade=t)}let i=we(e.disagreement);i&&(n.disagreement=i);let a=Te(e.liveWindow);a&&(n.liveWindow=a)}C[t.d.id]=n}Object.values(C).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 (${x?`empty/unparseable`:`ungrounded after ${v} attempt${v>1?`s`:``}, discarded`})`,{dashboardIds:e.map(e=>e.d.id),raw:y.raw});let E=n.briefingContext&&x&&typeof b.briefing==`string`&&b.briefing.trim()?b.briefing.trim():void 0;return{ok:!0,grounded:x,perDashboard:C,sources:y.sources&&y.sources.length?y.sources:P(b),attempts:v,...E?{briefing:E}:{}}}catch(t){console.error(`[dashboards] refreshDashboards failed`,t);let n={};for(let t of e)n[t.d.id]=I();return{ok:!1,grounded:!1,perDashboard:n,sources:[],attempts:0}}}function De(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 Oe(e){try{let t=typeof e==`string`?JSON.parse(ke(e)):e,n=t?.verdict;return{text:typeof n==`string`&&n.trim()?n.trim():null,sources:De(t)}}catch{return{text:typeof e==`string`&&e.trim()?e.trim():null,sources:[]}}}function ke(e){let t=e.indexOf(`{`),n=e.lastIndexOf(`}`);return t>=0&&n>t?e.slice(t,n+1):e}async function B(e,t,n,r=Date.now()){try{let i=h(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:T()+` 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}=Oe(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}}var V=`mavea-dash-opens-v1`,H=2592e6;function Ae(e){return!!e&&typeof e==`object`}function je(e,t){if(!Ae(e))return{};let n=t-H,r={};for(let[t,i]of Object.entries(e)){if(!t||!Array.isArray(i))continue;let e=i.filter(e=>typeof e==`number`&&Number.isFinite(e)&&e>=n).slice(-30);e.length&&(r[t]=e)}return r}var U;function Me(e){try{if(typeof localStorage>`u`)return{};let t=localStorage.getItem(V);return t?je(JSON.parse(t),e):{}}catch{return{}}}function W(e=Date.now()){return U??=Me(e),U}function Ne(e){U=e;try{typeof localStorage<`u`&&localStorage.setItem(V,JSON.stringify(e))}catch{}}function Pe(e,t=Date.now()){if(!e)return;let n=W(t),r=[...n[e]??[],t].filter(e=>e>=t-H).slice(-30);Ne({...n,[e]:r})}function Fe(e,t,n=Date.now()){return(W(n)[e]??[]).filter(e=>e>=t).length}function G(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 Ie(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=G(i.history);if(o!==0&&o===G(a.history))return{text:`${i.label} and ${a.label} have moved together over the last three checks.`,dashboardIds:[e.id]}}return null}function Le(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 K=5;function Re(e){if(e.cadence.data!==`15min`&&e.cadence.data!==`hourly`)return null;let t=e.metrics.find(e=>(e.history?.length??0)>=K);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 ${K} checks.`,dashboardIds:[e.id]}:null}function ze(e,t){let n=t.note?` ${t.note}`:``;return{text:`Sources disagreed on ${t.metricLabel}: ${t.readings.join(` vs `)}.${n}`,dashboardIds:[e.id]}}var Be=432e5;function Ve(e,t,n){let r=n-Be;return e.some(e=>e.kind===`insight`&&e.at>=r&&e.text===t.text)}function He(e,t,n,r=2){let i=[],a=Le(e,n);a&&i.push(a);for(let t of e){let e=Ie(t);e&&i.push(e);let n=Re(t);n&&i.push(n)}return i.filter(e=>!Ve(t,e,n)).slice(0,r)}var Ue=e({checkAllDashboardsNow:()=>nt,readDashboardNow:()=>rt,refreshDashboardNow:()=>tt,runRefreshBatch:()=>Q,selectTickTargets:()=>it,useDashboardLoop:()=>$,useVerdictPending:()=>qe}),We=15e3,Ge=3e5,q=new Set,J=new Set,Y=`mavea-dashboard-verdict-pending`;function X(e,t){t?J.add(e):J.delete(e);try{typeof window<`u`&&typeof CustomEvent==`function`&&window.dispatchEvent(new CustomEvent(Y,{detail:e}))}catch{}}function Ke(e){return window.addEventListener(Y,e),()=>window.removeEventListener(Y,e)}function qe(e){let t=(0,ce.c)(2),n;return t[0]===e?n=t[1]:(n=()=>J.has(e),t[0]=e,t[1]=n),(0,k.useSyncExternalStore)(Ke,n,Je)}function Je(){return!1}function Ye(e){try{return new URL(e).hostname.replace(/^www\./,``)}catch{return``}}function Xe(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 Z=`Daily search budget reached — auto-checks paused until midnight. Manual checks still work.`;function Ze(e){let t=new Date(e);return t.setHours(0,0,0,0),t.getTime()}function Qe(e){let t=Ze(e);v().some(e=>e.kind===`savings`&&e.at>=t&&e.text===Z)||y({kind:`savings`,text:Z,dashboardIds:[],searches:0})}async function $e(e,t,n,r,i,a,o=!1){let{d:s}=e,c=Object.keys(t.values).length>0||Object.keys(t.widgets).length>0?`updated`:o?`unverified`:`no-change`,d=s.metrics.map(e=>{let n=t.values[e.id];return n?{...e,lastValue:n.value}:e}),p={...s,metrics:d},{tripwires:h,newlyTriggered:g}=j(p,n),_=s.oneShotAt!==void 0&&s.oneShotAt<=a;u(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:h,outcome:c,...t.expects?{expects:t.expects}:{},...t.grade?{grade:t.grade}:{},..._?{consumedOneShot:!0}:{}},a),g.length&&(E(p,g),y({kind:`alert`,text:`${g.map(e=>e.label).join(`, `)} crossed the line you set.`,dashboardIds:[s.id],searches:0}),p.alerts.inApp&&oe({dashboardId:s.id,dashboardTitle:s.title,tripwireLabel:g[0].label})),t.disagreement&&y({kind:`insight`,text:ze(s,t.disagreement).text,dashboardIds:[s.id],searches:0});let v={...s,tripwires:h},b=N(v,g,a);if(b.fire&&b.trigger&&i){X(s.id,!0);let e=await B(v,b.trigger,r,a);X(s.id,!1),e?m(s.id,e,a):l(s.id,a,`Mavéa couldn't get a fresh read — will try again.`),f(s.id,a),y({kind:b.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 b.fire&&b.trigger&&f(s.id,a);return c}async function Q(e,t,n,r={}){let i=Date.now(),a={},o=R(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 $e({d:e,metrics:[],targets:[]},{values:{},widgets:{}},c[e.id],t,n,i);if(o.length===0||!n)return a;let l=o.map(e=>e.d.id);S(l,!0);try{let e=await z(o,t,r.briefing?{briefingContext:r.briefing.context}:{});if(!e.ok){for(let e of o)d(e.d.id,i+Ge),a[e.d.id]=`failed`;return a}for(let r of o){let o=e.perDashboard[r.d.id]??{values:{},widgets:{}};a[r.d.id]=await $e(r,o,c[r.d.id],t,n,i,!e.grounded)}r.briefing&&e.briefing&&(D(e.briefing,r.briefing.allDashboards,i),y({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=>Ye(e.url)))].filter(Boolean);return y({kind:`check`,text:Xe(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{S(l,!1)}}async function et(e,t,n,r){let{tripwires:i,newlyTriggered:a}=j(e);s(e.id,i,r),a.length&&(E(e,a),e.alerts.inApp&&oe({dashboardId:e.id,dashboardTitle:e.title,tripwireLabel:a[0].label}));let o={...e,tripwires:i},c=N(o,a,r);if(!c.fire||!c.trigger||!n)return;X(e.id,!0);let u=await B(o,c.trigger,t,r);X(e.id,!1),u?m(e.id,u,r):l(e.id,r,`Mavéa couldn't get a fresh read — will try again.`),f(e.id,r),y({kind:c.trigger===`scheduled`?`check`:`alert`,text:u?u.text.slice(0,200):`Couldn't get a fresh read on ${e.title}.`,dashboardIds:[e.id],searches:1,...u?.sources?.length?{sourceCount:u.sources.length}:{}})}async function tt(e){if(q.has(e))return`busy`;let t=p(e);if(!t)return`busy`;let n=g(_());if(!n.apiKey)return`no-model`;q.add(e);try{let r=await Q([t],n,!0,{manual:!0});return r[e]===`failed`?`failed`:r[e]===`unverified`?`unverified`:`done`}finally{q.delete(e)}}async function nt(){let e=g(_());if(!e.apiKey)return`no-model`;let t=c().filter(C),n=t.filter(e=>!q.has(e.id));if(n.length===0)return t.length>0?`busy`:`done`;for(;n.length>0;){let t=R(n);if(t.length===0)break;let r=t.map(e=>e.d.id);r.forEach(e=>q.add(e));try{await Q(t.map(e=>e.d),e,!0,{manual:!0})}finally{r.forEach(e=>q.delete(e))}n=n.filter(e=>!r.includes(e.id))}return`done`}async function rt(e){if(J.has(e))return`busy`;let t=p(e);if(!t)return`failed`;let n=g(_());if(!n.apiKey)return`no-model`;let r=Date.now(),i=t.tripwires.find(e=>e.state===`TRIGGERED`),a=i??`scheduled`;X(e,!0);let o;try{o=await B(t,a,n,r)}finally{X(e,!1)}return o?m(e,o,r):l(e,r,`Mavéa couldn’t get a fresh read — try again in a moment.`),f(e,r),y({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 it(e,t,n,r,i){let a=me(e,r).filter(e=>!i.has(e.id)),o=he(e,r);o&&i.has(o.id)&&(o=null);let s=ee(t,n,r),c=!1;s.paused&&(c=a.some(C)||!!o,a=a.filter(e=>!C(e)),o=null);let l=R(a);return o&&l.some(e=>e.d.id===o.id)&&(o=null),{dueData:a,dueAi:o,pausedAndBlocked:c}}function $(){let e=(0,k.useRef)(!1);(0,k.useEffect)(()=>{let t=!0,n=async()=>{if(e.current||!t||typeof document<`u`&&document.visibilityState!==`visible`)return;let n=g(_()),r=!!n.apiKey,i=Date.now(),a=c(),o=x(),s=v();se(a,s,e=>b(s,e,i),e=>Fe(e,i-6048e5,i),i);for(let e of He(a,s,i))y({kind:`insight`,text:e.text,dashboardIds:e.dashboardIds,searches:0});let{dueData:l,dueAi:u,pausedAndBlocked:d}=it(a,s,o.dailySearchBudget,i,q);d&&Qe(i);let f=r&&o.briefingEnabled&&ae(i);if(l.length===0&&!u){if(f&&!a.some(C)){let e=O(a,new Set);if(e){let t=await z([],n,{briefingContext:e});t.briefing&&(D(t.briefing,a,i),y({kind:`briefing`,text:`Morning briefing compiled.`,dashboardIds:[],searches:1}))}}return}e.current=!0,l.forEach(e=>q.add(e.id)),u&&q.add(u.id);try{if(l.length>0){let e=f?{context:O(a,new Set(R(l).map(e=>e.d.id))),allDashboards:a}:void 0;await Q(l,n,r,e?{briefing:e}:{})}u&&await et(u,n,r,i)}finally{l.forEach(e=>q.delete(e.id)),u&&q.delete(u.id),e.current=!1}},r=window.setInterval(()=>void n(),We),i=()=>{document.visibilityState===`visible`&&n()};return document.addEventListener(`visibilitychange`,i),n(),()=>{t=!1,window.clearInterval(r),document.removeEventListener(`visibilitychange`,i)}},[])}export{qe as a,le as c,Ue as i,A as l,tt as n,Pe as o,$ as r,j as s,rt as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./react-BZJXY1be.js";import{d as t,f as n,t as r}from"./store-DpmbKVs7.js";var i=e();function a(e){let t=t=>{(t.key===null||t.key===`mavea-dashboards-v1`)&&(n(),e())};return window.addEventListener(r,e),window.addEventListener(`storage`,t),()=>{window.removeEventListener(r,e),window.removeEventListener(`storage`,t)}}function o(){return(0,i.useSyncExternalStore)(a,t)}export{o as t};
@@ -1 +0,0 @@
1
- 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{i as r,n as i}from"./info-CiqHR5cs.js";import{r as a,t as o}from"./keyVault-Aw5Y2PjT.js";import"./providers-DdJWf_PE.js";var s=e({LIVE_V2_EVENT:()=>f,SECRET_PERSISTENCE_EVENT:()=>p,exportConfig:()=>J,getLiveConfigV2:()=>A,getSecretPersistenceStatus:()=>R,hasModelConfigured:()=>q,importConfig:()=>te,importConfigWithSummary:()=>Z,resetLiveConfig:()=>W,setLiveConfigV2:()=>H,setProviderField:()=>G,toCaps:()=>Q,toModelConfig:()=>K,useLiveConfig:()=>$,whenSecretPersistenceSettled:()=>z}),c=n(),l=t(),u=`mavea-live-v2`,d=`mavea-live-v2:secrets`,f=u,p=`${u}:secret-persistence`,m=25e4,h=512,g={provider:`gemini`,models:{},keys:{},rememberKey:!1,webSearch:!1,searchMode:`off`,quality:`balanced`,searchProvider:`wikipedia`,searchKeys:{},memoryEnabled:!1,autoSaveFlashcards:!1,generativeBlocks:!0,libraryEnabled:!0,teachMode:!1,annotationsEnabled:!0,morningBrief:!1,explainLevel:`standard`,fontScale:`normal`,pttKey:`Alt`,pttSide:`any`,voiceSpeed:1};function _(e){return e===`left`||e===`right`?e:`any`}var v=null;function y(e){return i.some(t=>t.id===e)?e:g.provider}function b(e){let t={};if(e&&typeof e==`object`)for(let n of i){let r=e[n.id];typeof r==`string`&&r.length<=h&&(t[n.id]=r)}return t}function x(e,t){return typeof e==`boolean`?e:t}function S(e){return typeof e==`number`&&Number.isFinite(e)?Math.min(2,Math.max(.75,e)):g.voiceSpeed}function C(e){return e===`wikipedia`||e===`brave`||e===`tavily`?e:g.searchProvider}function w(e){return e===`off`||e===`realtime`?e:void 0}function T(e){return e===`fast`||e===`balanced`||e===`thorough`?e:g.quality}function E(e){return e===`simple`||e===`deep`?e:g.explainLevel}function D(e){return e===`smaller`||e===`larger`?e:g.fontScale}function O(e){let t={};if(e&&typeof e==`object`)for(let n of[`brave`,`tavily`]){let r=e[n];typeof r==`string`&&r.length<=h&&(t[n]=r)}return t}function k(){try{if(typeof localStorage>`u`)return{...g};let e=localStorage.getItem(u);if(!e)return{...g};let t=JSON.parse(e),n=x(t.webSearch,g.webSearch),r=w(t.searchMode)??(t.searchMode===void 0&&n?`realtime`:`off`);return{provider:y(t.provider),models:b(t.models),keys:b(t.keys),rememberKey:x(t.rememberKey,g.rememberKey),webSearch:n,searchMode:r,quality:T(t.quality),searchProvider:C(t.searchProvider),searchKeys:O(t.searchKeys),memoryEnabled:x(t.memoryEnabled,g.memoryEnabled),autoSaveFlashcards:x(t.autoSaveFlashcards,g.autoSaveFlashcards),generativeBlocks:x(t.generativeBlocks,g.generativeBlocks),libraryEnabled:x(t.libraryEnabled,g.libraryEnabled),teachMode:x(t.teachMode,g.teachMode),annotationsEnabled:x(t.annotationsEnabled,g.annotationsEnabled),morningBrief:x(t.morningBrief,g.morningBrief),explainLevel:E(t.explainLevel),fontScale:D(t.fontScale),pttKey:typeof t.pttKey==`string`&&t.pttKey?t.pttKey:g.pttKey,pttSide:_(t.pttSide),voiceSpeed:S(t.voiceSpeed)}}catch{return{...g}}}function A(){return v||(v=k(),v)}function j(e){try{typeof window<`u`&&typeof CustomEvent==`function`&&window.dispatchEvent(new CustomEvent(u,{detail:e}))}catch{}}function M(e){return Object.keys(e.keys).length>0||Object.keys(e.searchKeys).length>0}var N=0,P=!1,F=`not-requested`,I=Promise.resolve();function L(e){F=e;try{typeof window<`u`&&typeof CustomEvent==`function`&&window.dispatchEvent(new CustomEvent(p,{detail:e}))}catch{}}function R(){return F}async function z(){return await I,F}async function B(e){let t=++N;if(typeof localStorage>`u`){L(e.rememberKey&&M(e)?`session-only`:`not-requested`);return}if(!e.rememberKey||!M(e)){if(e.rememberKey&&!P){L(`pending`);return}try{localStorage.removeItem(d)}catch{}t===N&&L(`not-requested`);return}L(`pending`);try{let n=await a(JSON.stringify({keys:e.keys,searchKeys:e.searchKeys}));if(t!==N)return;localStorage.setItem(d,n),L(`persisted`)}catch{if(t!==N)return;try{localStorage.removeItem(d)}catch{}L(`session-only`)}}async function V(){if(typeof localStorage>`u`){L(`unavailable`);return}let e;try{e=localStorage.getItem(d)}catch{P=!0,L(`unavailable`);return}if(!e){P=!0,L(`not-requested`);return}let t=N;try{let n=JSON.parse(await o(e));if(t===N){let e=A();v={...e,keys:{...e.keys,...b(n.keys)},searchKeys:{...e.searchKeys,...O(n.searchKeys)}},j(v),L(`persisted`)}}catch{t===N&&L(`unavailable`)}finally{P=!0}}function H(e){let t={...A(),...e};v=t;try{if(typeof localStorage<`u`){let e={...t,keys:{},searchKeys:{}};localStorage.setItem(u,JSON.stringify(e)),I=B(t)}else L(t.rememberKey?M(t)?`session-only`:`unavailable`:`not-requested`)}catch{L(t.rememberKey?M(t)?`session-only`:`unavailable`:`not-requested`)}return j(t),t}function U(){typeof localStorage>`u`||(M(A())?(P=!0,H({})):I=V())}U();function W(){return H(g)}function G(e,t,n){let r=A(),i=t===`model`?`models`:`keys`;return H({[i]:{...r[i],[e]:n}})}function K(e){return{provider:e.provider,model:e.models[e.provider]||r(e.provider).defaultModel,apiKey:e.keys[e.provider]}}function q(e){let t=r(e.provider);return!!(e.models[e.provider]||t.defaultModel)&&(!t.needsKey||!!e.keys[e.provider])}function J(){let e={...A(),keys:{},searchKeys:{},rememberKey:!1};return JSON.stringify(e,null,2)}var ee=[`provider`,`models`,`webSearch`,`searchMode`,`quality`,`searchProvider`,`memoryEnabled`,`autoSaveFlashcards`,`generativeBlocks`,`libraryEnabled`,`teachMode`,`annotationsEnabled`,`morningBrief`,`explainLevel`,`fontScale`,`pttKey`,`pttSide`,`voiceSpeed`];function Y(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function X(e){return typeof e==`string`||Array.isArray(e)?e.length>0:e&&typeof e==`object`?Object.keys(e).length>0:e!=null}function Z(e,t={}){if((typeof TextEncoder==`function`?new TextEncoder().encode(e).byteLength:e.length*2)>m)throw Error(`Invalid config file — the settings object is too large.`);let n;try{n=JSON.parse(e)}catch{throw Error(`Invalid config file — could not parse JSON.`)}if(!n||typeof n!=`object`||Array.isArray(n))throw Error(`Invalid config file — expected a settings object.`);let r=n;if(Object.keys(r).length>64)throw Error(`Invalid config file — the settings object has too many fields.`);let i=A(),a=t.mode===`merge`?{...i,...r}:r,o=x(a.webSearch,g.webSearch),s=w(a.searchMode)??(a.searchMode===void 0&&o?`realtime`:`off`),c={provider:y(a.provider),models:b(a.models),keys:i.keys,rememberKey:t.preserveSecretState!==!1&&i.rememberKey,webSearch:o,searchMode:s,quality:T(a.quality),searchProvider:C(a.searchProvider),searchKeys:i.searchKeys,memoryEnabled:x(a.memoryEnabled,g.memoryEnabled),autoSaveFlashcards:x(a.autoSaveFlashcards,g.autoSaveFlashcards),generativeBlocks:x(a.generativeBlocks,g.generativeBlocks),libraryEnabled:x(a.libraryEnabled,g.libraryEnabled),teachMode:x(a.teachMode,g.teachMode),annotationsEnabled:x(a.annotationsEnabled,g.annotationsEnabled),morningBrief:x(a.morningBrief,g.morningBrief),explainLevel:E(a.explainLevel),fontScale:D(a.fontScale),pttKey:typeof a.pttKey==`string`&&a.pttKey.length>0&&a.pttKey.length<=32?a.pttKey:g.pttKey,pttSide:_(a.pttSide),voiceSpeed:S(a.voiceSpeed)},l=[];return Y(r,`keys`)&&X(r.keys)&&l.push(`provider-api-keys`),Y(r,`searchKeys`)&&X(r.searchKeys)&&l.push(`search-api-keys`),[`githubToken`,`github_token`,`ghToken`].some(e=>Y(r,e)&&X(r[e]))&&l.push(`github-token`),{config:H(c),credentialsIgnored:l,appliedFields:ee.filter(e=>Y(r,e))}}function te(e,t){return Z(e,t).config}function Q(e){return{webSearch:e.searchMode!==`off`,searchMode:e.searchMode,quality:e.quality,memoryEnabled:e.memoryEnabled,generativeBlocks:e.generativeBlocks,explainLevel:e.explainLevel}}function $(){let e=(0,c.c)(4),[t,n]=(0,l.useState)(ne),r,i;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{if(typeof window>`u`)return;let e=()=>n(A());return window.addEventListener(f,e),e(),()=>window.removeEventListener(f,e)},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,l.useEffect)(r,i);let a;return e[2]===t?a=e[3]:(a=[t,H],e[2]=t,e[3]=a),a}function ne(){return A()}export{W as a,Q as c,s as d,Z as i,K as l,A as n,H as o,q as r,G as s,J as t,$ as u};
@@ -1 +0,0 @@
1
- import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";var n=e(),r=t(),i={min:.1,max:4};function a(e,t=i){return Math.min(t.max,Math.max(t.min,e))}function o(e,t,n=0){let r=Math.max(e.w,1),i=Math.max(e.h,1),a=Math.max(t.w-n*2,1),o=Math.max(t.h-n*2,1);return Math.min(a/r,o/i)}function s(e,t,n=0,r=i){let s=a(o(e,t,n),r),c=e.x+e.w/2,l=e.y+e.h/2;return{x:t.w/2-c*s,y:t.h/2-l*s,scale:s}}function c(e,t,n,r,o=i){let s=a(e.scale*t,o);if(s===e.scale)return e;let c=(n-e.x)/e.scale,l=(r-e.y)/e.scale;return{x:n-c*s,y:r-l*s,scale:s}}function l(e,t,n){return{...e,x:e.x+t,y:e.y+n}}function u(e,t,n,r,o=i){let s=a(n,o);return{x:r.w/2-e*s,y:r.h/2-t*s,scale:s}}function d(e){return`translate(${Math.round(e.x)}px, ${Math.round(e.y)}px) scale(${e.scale})`}function f(e,t,n){return{x:(t-e.x)/e.scale,y:(n-e.y)/e.scale}}function p(e){let t=(0,r.c)(27),a;t[0]===e?a=t[1]:(a=e===void 0?{}:e,t[0]=e,t[1]=a);let o=a,u=o.clamp?.min??i.min,f=o.clamp?.max??i.max,p=o.margin??0,m=o.insetBottom??0,h=(0,n.useRef)(null),g;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(g={x:0,y:0,scale:1},t[2]=g):g=t[2];let[_,v]=(0,n.useState)(g),y=(0,n.useRef)(null),b;t[3]===m?b=t[4]:(b=()=>{let e=h.current;if(!e)return null;let t=e.getBoundingClientRect();return t.width===0&&t.height===0?null:{w:t.width,h:Math.max(1,t.height-m)}},t[3]=m,t[4]=b);let x=b,S;t[5]!==f||t[6]!==u||t[7]!==p||t[8]!==x?(S=e=>{if(y.current=e,!e)return;let t=x();t&&v(s(e,t,p,{min:u,max:f}))},t[5]=f,t[6]=u,t[7]=p,t[8]=x,t[9]=S):S=t[9];let C=S,w;t[10]!==f||t[11]!==u?(w=(e,t,n)=>{let r=h.current;if(!r)return;let i=r.getBoundingClientRect();v(r=>c(r,e,t-i.left,n-i.top,{min:u,max:f}))},t[10]=f,t[11]=u,t[12]=w):w=t[12];let T=w,E;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(E=(e,t)=>{v(n=>l(n,e,t))},t[13]=E):E=t[13];let D=E,O,k;t[14]!==f||t[15]!==u||t[16]!==p||t[17]!==x?(O=()=>{let e=h.current;if(!e||typeof ResizeObserver>`u`)return;let t=0,n=new ResizeObserver(()=>{cancelAnimationFrame(t),t=requestAnimationFrame(()=>{let e=y.current;if(!e)return;let t=x();t&&v(s(e,t,p,{min:u,max:f}))})});return n.observe(e),()=>{cancelAnimationFrame(t),n.disconnect()}},k=[x,p,u,f],t[14]=f,t[15]=u,t[16]=p,t[17]=x,t[18]=O,t[19]=k):(O=t[18],k=t[19]),(0,n.useEffect)(O,k);let A;t[20]===_?A=t[21]:(A=d(_),t[20]=_,t[21]=A);let j;return t[22]!==_||t[23]!==C||t[24]!==A||t[25]!==T?(j={camera:_,transform:A,viewportRef:h,fitTo:C,zoomAtClient:T,pan:D,setCamera:v},t[22]=_,t[23]=C,t[24]=A,t[25]=T,t[26]=j):j=t[26],j}export{u as n,f as r,p as t};