@mavea/mavea 1.1.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/DISCLAIMER.md +2 -1
  3. package/PRIVACY.md +5 -4
  4. package/README.md +20 -15
  5. package/TERMS.md +3 -1
  6. package/dist/.vite/manifest.json +645 -576
  7. package/dist/assets/AnnotationLayer-8JABh1Dm.js +0 -0
  8. package/dist/assets/{AppCommandPalette-Dm3SedPO.js → AppCommandPalette-CgDUWU08.js} +1 -1
  9. package/dist/assets/AreaChart-DZGCSEwt.js +1 -0
  10. package/dist/assets/CadenceCard-P4teI7Se.js +1 -0
  11. package/dist/assets/CanvasSkeleton-CRGWlafo.js +1 -0
  12. package/dist/assets/{CheckLogRail-BU_rmAFH.js → CheckLogRail-DO7sbZwC.js} +1 -1
  13. package/dist/assets/{CommandPalette-E3reEqYR.js → CommandPalette-Bs6tpdZl.js} +1 -1
  14. package/dist/assets/{ConversationVideoStudio-DEZBpJUz.js → ConversationVideoStudio-tpqQQnOs.js} +1 -1
  15. package/dist/assets/CourseLessonReader-PFJn-4tj.js +2 -0
  16. package/dist/assets/{CourseRail-C8MJG-zf.js → CourseRail-DXt3bzjU.js} +1 -1
  17. package/dist/assets/{CoursesApp-DFVkhP2f.js → CoursesApp-5pnHYJR8.js} +2 -2
  18. package/dist/assets/{DashPresent-DwWDtjrU.js → DashPresent-B6MP1i_4.js} +1 -1
  19. package/dist/assets/DashboardDetail-8J8TsdQg.css +1 -0
  20. package/dist/assets/DashboardDetail-DYFghZ4p.js +2 -0
  21. package/dist/assets/DashboardLoopGate-C0blM1w9.js +2 -0
  22. package/dist/assets/DashboardLoopRuntime-C9R-z9-o.js +1 -0
  23. package/dist/assets/DashboardSettings-CE0B2y2y.js +1 -0
  24. package/dist/assets/DashboardsApp-Dh_jh1dF.js +2 -0
  25. package/dist/assets/{DeepZoomApp-CxdcUeFJ.js → DeepZoomApp-UEPtylG7.js} +1 -1
  26. package/dist/assets/{DelegatePanel-B0kIu8Et.js → DelegatePanel-DKWsRY9I.js} +1 -1
  27. package/dist/assets/{DemoGallery-B__X0_H3.js → DemoGallery-CkuqAXje.js} +1 -1
  28. package/dist/assets/{DropSelect-C3uYlej-.js → DropSelect-QcBm3N4D.js} +1 -1
  29. package/dist/assets/{ExportModal-CDGlhpdH.js → ExportModal-Ya0VBbxa.js} +1 -1
  30. package/dist/assets/{ExtractionPreview-CloJnrQi.js → ExtractionPreview-BFrmqKDo.js} +2 -2
  31. package/dist/assets/{FeatureUseNotice-CwHstxBh.js → FeatureUseNotice-Dc3GNBvy.js} +1 -1
  32. package/dist/assets/{FlagshipCommandPalette-CHsD5BSH.js → FlagshipCommandPalette-B1yHwI6V.js} +1 -1
  33. package/dist/assets/{FlagshipShowcase-D53Q_4m0.js → FlagshipShowcase-BHAlRDAE.js} +1 -1
  34. package/dist/assets/{FlashcardsApp-CnLfEnDH.js → FlashcardsApp-DteNeHpz.js} +1 -1
  35. package/dist/assets/{GalleryApp-2Ffc6CY6.js → GalleryApp-DziLKFJZ.js} +1 -1
  36. package/dist/assets/{HonestByDesign-5jIu2ZC8.js → HonestByDesign-DZltb3Ss.js} +1 -1
  37. package/dist/assets/{HowItWorks-BiJF84EM.js → HowItWorks-D-hgfN6a.js} +1 -1
  38. package/dist/assets/{LegalApp-zC-rvTww.js → LegalApp-ChzcKiY0.js} +1 -1
  39. package/dist/assets/{LegalMarkdownDocument-CJ-gRHdX.js → LegalMarkdownDocument-j6UHhPnp.js} +1 -1
  40. package/dist/assets/{LegalPageShell-Dyd4Uh3r.js → LegalPageShell-Wcsviye1.js} +1 -1
  41. package/dist/assets/{LibraryOverlay-_xpWdhLN.js → LibraryOverlay-YHBrdVKo.js} +1 -1
  42. package/dist/assets/LiveApp-C-OPBybd.css +1 -0
  43. package/dist/assets/LiveApp-D6vkyhZb.js +79 -0
  44. package/dist/assets/{LiveSettings-BceODlOb.js → LiveSettings-C9cKOrSb.js} +3 -3
  45. package/dist/assets/{MindMapViewerDrawer-BuDodC0s.js → MindMapViewerDrawer-DI_S7fRZ.js} +1 -1
  46. package/dist/assets/{MindShape-CBcCC7hP.js → MindShape-C_Bo9hW9.js} +1 -1
  47. package/dist/assets/{PinToDashboard-DBIXvhlF.js → PinToDashboard-BCiWaSg8.js} +1 -1
  48. package/dist/assets/PlanReview-BIERfK1t.js +1 -0
  49. package/dist/assets/{Presence-CKSoyuhE.js → Presence-UqXfH4Y-.js} +1 -1
  50. package/dist/assets/{PresentationDeck-C518t9pP.js → PresentationDeck-BW_7qecK.js} +1 -1
  51. package/dist/assets/{PrismApp-DRLl8841.js → PrismApp-BY71jJvW.js} +2 -2
  52. package/dist/assets/{PrismAskController-QRwxRP8D.js → PrismAskController-Bt0k9hAA.js} +1 -1
  53. package/dist/assets/{PrismBriefingPlayer-Kyb8Vs_w.js → PrismBriefingPlayer-DLAPs6eZ.js} +2 -2
  54. package/dist/assets/{PrismOverlay-Bj7tCu5Q.js → PrismOverlay-DJDGPGxo.js} +3 -3
  55. package/dist/assets/{PrismWorkbench-BCnhkp-S.js → PrismWorkbench-DHLvpguj.js} +1 -1
  56. package/dist/assets/{PrivacyApp-DHSRr8wq.js → PrivacyApp-uMjq2z14.js} +6 -5
  57. package/dist/assets/{ReplayCard-CKo5reXy.js → ReplayCard-F7U3LYAg.js} +2 -2
  58. package/dist/assets/{ReplayOverlay-DqAwLshS.js → ReplayOverlay-BTldvkU7.js} +1 -1
  59. package/dist/assets/{RewindOverlay-CkJIETE0.js → RewindOverlay-CousnxXo.js} +1 -1
  60. package/dist/assets/{RippleApp-C76VTaZK.js → RippleApp-DZw8op-E.js} +2 -2
  61. package/dist/assets/{RippleAskController-CdlMlRH8.js → RippleAskController-9SxpZnHX.js} +1 -1
  62. package/dist/assets/{RippleOverlay-Mvz3CXhD.js → RippleOverlay-D7ItTvS-.js} +2 -2
  63. package/dist/assets/{SeeDontRead-BkySmnP3.js → SeeDontRead-DmmtWAzn.js} +1 -1
  64. package/dist/assets/{ShareModal-Cl3ryjgK.js → ShareModal-9jSn52Mw.js} +2 -2
  65. package/dist/assets/{ShipCourse-Cy5ldKLE.js → ShipCourse-Up9gRR07.js} +1 -1
  66. package/dist/assets/{SignatureLoop-Cdkifjb8.js → SignatureLoop-Cq790dMw.js} +1 -1
  67. package/dist/assets/{SynthesisApp-C5udWwng.js → SynthesisApp-4ZPLZgmJ.js} +2 -2
  68. package/dist/assets/{SynthesisOverlay-1o-CJsyX.js → SynthesisOverlay-iesJ0hEt.js} +1 -1
  69. package/dist/assets/{TermsApp-DIAESAZs.js → TermsApp-DL2hFKsv.js} +4 -2
  70. package/dist/assets/TopicCanvas-DozfZFto.js +2 -0
  71. package/dist/assets/{TourPrism-Bxp--s0i.js → TourPrism-kInUOv-M.js} +1 -1
  72. package/dist/assets/TrackerTile-BryDo0sm.js +2 -0
  73. package/dist/assets/{TwoSurfaces-C_0XBpwA.js → TwoSurfaces-Cmj95ofx.js} +1 -1
  74. package/dist/assets/{WhyMachineOverlay-QDSZx5Y7.js → WhyMachineOverlay-ks9-rRiL.js} +1 -1
  75. package/dist/assets/{WorldOverlay-DRdBQMnb.css → WorldOverlay-D7ay5y4D.css} +1 -1
  76. package/dist/assets/WorldOverlay-yhxq328s.js +2 -0
  77. package/dist/assets/{WowFeatures-DNEeO2pr.js → WowFeatures-DDICbxl_.js} +1 -1
  78. package/dist/assets/{ZoomDeck-qdlPe_yl.js → ZoomDeck-CKOjYS9z.js} +1 -1
  79. package/dist/assets/{annotationAuto-BmKrZ3hU.js → annotationAuto-CDv6Es44.js} +1 -1
  80. package/dist/assets/{backup-PaRBwjJy.js → backup-ZrlVatXc.js} +1 -1
  81. package/dist/assets/canvas-vqIFVmtP.js +1 -0
  82. package/dist/assets/{capture-CL9ENM-c.js → capture-9OrAc1p2.js} +1 -1
  83. package/dist/assets/confirmAdd-DkmbWaSk.js +1 -0
  84. package/dist/assets/{coreIcons-BzqW7Qiz.js → coreIcons-DDTChE1H.js} +1 -1
  85. package/dist/assets/{dashboardEvents-D-wLCp1A.js → dashboardEvents-D-XVj666.js} +1 -1
  86. package/dist/assets/{dashboards-CdzGklae.css → dashboards-C1u2ks-d.css} +1 -1
  87. package/dist/assets/dataPending-DGdCvY5Y.js +1 -0
  88. package/dist/assets/display-CAb_PiGv.js +1 -0
  89. package/dist/assets/{engine-2U7mvPIl.js → engine-BiM6INsW.js} +1 -1
  90. package/dist/assets/{engine-BF8FqSbi.css → engine-CTvOaA86.css} +1 -1
  91. package/dist/assets/{explode-qQ7Fzt6V.js → explode-BgZIWY9m.js} +1 -1
  92. package/dist/assets/format-g3dP8OI3.js +1 -0
  93. package/dist/assets/{generate-C9vOL1C2.js → generate-Dl2EJ_SR.js} +1 -1
  94. package/dist/assets/{generateBeats-DpDpBcgV.js → generateBeats-DtptFLlG.js} +1 -1
  95. package/dist/assets/{generateCourse-DU281tDE.js → generateCourse-C9qvaJRo.js} +1 -1
  96. package/dist/assets/{generateLive-_x2tWkBH.js → generateLive-B6purd69.js} +13 -13
  97. package/dist/assets/{index-D4FIsool.css → index-DrzNHwlO.css} +1 -1
  98. package/dist/assets/index-zIa6h_8b.js +22 -0
  99. package/dist/assets/{kokoro-CdL8Kl48.js → kokoro-B3oG_8sd.js} +1 -1
  100. package/dist/assets/lens-ChFJD9il.js +1 -0
  101. package/dist/assets/loader-DCA6Njbf.js +2 -0
  102. package/dist/assets/{model-DxwoIVpo.js → model-BFRTN9Eh.js} +1 -1
  103. package/dist/assets/{notes-CUeZ1cYu.js → notes-B6eX5XWk.js} +1 -1
  104. package/dist/assets/{number-Bmf7DqLj.js → number-zqlPMliA.js} +1 -1
  105. package/dist/assets/{pen-BAEq0JnM.js → pen-DNMslo3e.js} +1 -1
  106. package/dist/assets/{perfProbe-3Ip5n0yx.js → perfProbe-CE7hsUEo.js} +1 -1
  107. package/dist/assets/{pin-BwWjjqmt.js → pin-BZuh1acO.js} +1 -1
  108. package/dist/assets/{planTracker-BI9z_0gW.js → planTracker-KKAtTBWs.js} +1 -1
  109. package/dist/assets/{portal-BJzn-Tgn.js → portal-k_BMgWND.js} +1 -1
  110. package/dist/assets/{prewarm-CheeUP2L.js → prewarm-uKxmzjjd.js} +1 -1
  111. package/dist/assets/{providers-B2OCzEo1.js → providers-BovElgRL.js} +1 -1
  112. package/dist/assets/{quietHours-DCMczU9R.js → quietHours-DI1ayIIq.js} +1 -1
  113. package/dist/assets/{ready-DZY1bETr.js → ready-jtAUOb62.js} +1 -1
  114. package/dist/assets/receipts-D7zveV-I.js +1 -0
  115. package/dist/assets/{registry-D_4_HlMg.js → registry-1wlTAh5b.js} +1 -1
  116. package/dist/assets/registry-6DGRAB1m.js +1 -0
  117. package/dist/assets/{registry-ChQGee7C.js → registry-B2QzCuWH.js} +1 -1
  118. package/dist/assets/registry-BFrgx1tE.js +1 -0
  119. package/dist/assets/registry-Cse2wF7x.css +1 -0
  120. package/dist/assets/registry-DGNSqTxE.js +1 -0
  121. package/dist/assets/{registry-BM9FDQxO.js → registry-DtV2UjBx.js} +1 -1
  122. package/dist/assets/{registry-BRbEINOV.js → registry-Dwbh-GWu.js} +1 -1
  123. package/dist/assets/{relate-BXcg3Ioz.js → relate-UW-sUlJH.js} +1 -1
  124. package/dist/assets/{replay-rSsGKjEc.js → replay-B5TkHPri.js} +1 -1
  125. package/dist/assets/{run-ndUTOxjM.js → run-Df10YPyB.js} +1 -1
  126. package/dist/assets/{run-CkaYNX89.js → run-DlvA3l28.js} +1 -1
  127. package/dist/assets/{run-aj7robML.js → run-gmqUaxcL.js} +1 -1
  128. package/dist/assets/seed-D_P5jyog.js +1 -0
  129. package/dist/assets/shapes-Cx5SCKgj.js +39 -0
  130. package/dist/assets/store-CsjDEADX.js +1 -0
  131. package/dist/assets/tiles-D-s6v-mA.js +1 -0
  132. package/dist/assets/types-DuEbJpIA.js +1 -0
  133. package/dist/assets/useDashboardLoop-BoVNM-pT.js +5 -0
  134. package/dist/assets/{useDashboards-GafZIADI.js → useDashboards-SRk8LqHe.js} +1 -1
  135. package/dist/assets/{useLiveConfig-DWz7BRdk.js → useLiveConfig-Cpy0_E_-.js} +1 -1
  136. package/dist/assets/{useStudy-CFIuakaM.js → useStudy-5CsF_L-s.js} +1 -1
  137. package/dist/assets/validate-sGUCmPAs.js +4 -0
  138. package/dist/assets/value-Dx7DZob4.js +1 -0
  139. package/dist/assets/{walkSync-AAocUygp.js → walkSync-CT8kmbzY.js} +1 -1
  140. package/dist/index.html +3 -3
  141. package/dist/legal/DISCLAIMER.md +2 -1
  142. package/dist/legal/PRIVACY.md +5 -4
  143. package/dist/legal/TERMS.md +3 -1
  144. package/docs/media/course-lesson.jpg +0 -0
  145. package/docs/media/living-answer.jpg +0 -0
  146. package/package.json +3 -1
  147. package/dist/assets/AnnotationLayer-IiuYsoSa.js +0 -0
  148. package/dist/assets/CanvasSkeleton-CcHXJqdq.js +0 -2
  149. package/dist/assets/CourseLessonReader-Bpt-DkJo.js +0 -2
  150. package/dist/assets/DashboardDetail-D4wkiTux.js +0 -2
  151. package/dist/assets/DashboardLoopGate-B5UBPsvU.js +0 -2
  152. package/dist/assets/DashboardLoopRuntime-CAnZX234.js +0 -1
  153. package/dist/assets/DashboardSettings-eMhHliVh.js +0 -1
  154. package/dist/assets/DashboardsApp-BwFtTdWa.js +0 -2
  155. package/dist/assets/LiveApp-BNae3fDZ.css +0 -1
  156. package/dist/assets/LiveApp-DjcJQURO.js +0 -78
  157. package/dist/assets/PlanReview-DUQ7OMvV.js +0 -1
  158. package/dist/assets/TopicCanvas-DkzJORfl.js +0 -2
  159. package/dist/assets/TrackerTile-CyPD0A6b.js +0 -2
  160. package/dist/assets/WorldOverlay-DorHCLzw.js +0 -1
  161. package/dist/assets/canvas-BlkTFnVo.js +0 -1
  162. package/dist/assets/confirmAdd-CZPBG1xe.js +0 -1
  163. package/dist/assets/dataPending-lZUzUEo6.js +0 -1
  164. package/dist/assets/display-BrieMea1.js +0 -1
  165. package/dist/assets/format-rPI6ZwwH.js +0 -1
  166. package/dist/assets/index-CfcUMOBf.js +0 -22
  167. package/dist/assets/receipts-ClyzFFGD.js +0 -1
  168. package/dist/assets/registry-9QjeHgKs.js +0 -1
  169. package/dist/assets/registry-D4Xdd7dO.js +0 -1
  170. package/dist/assets/registry-DScSjt8p.css +0 -1
  171. package/dist/assets/registry-DuP_q42N.js +0 -1
  172. package/dist/assets/seed-DN4mRJp-.js +0 -1
  173. package/dist/assets/shapes-C5fjibEc.js +0 -42
  174. package/dist/assets/store-B39HvB_l.js +0 -1
  175. package/dist/assets/tiles-pdNi6MGe.js +0 -1
  176. package/dist/assets/useDashboardLoop-B_YA5jLs.js +0 -5
  177. package/dist/assets/validate-CnG23_8J.js +0 -1
@@ -0,0 +1,5 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/liveSchema-B4bQtO88.js","assets/icons-gLFQTv74.js","assets/jsx-runtime-DeHZSEgm.js","assets/rolldown-runtime-DkW27tQK.js","assets/spokenText-C88IQJ0M.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-DUDdP3pB.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{E as s,G as c,H as l,L as u,P as d,U as f,V as p,_ as m,b as h,m as g,p as _,s as v,v as y,y as b,z as ee}from"./store-CsjDEADX.js";import{t as te}from"./providers-BovElgRL.js";import{l as x,n as S}from"./useLiveConfig-Cpy0_E_-.js";import{t as ne}from"./json-B0N3XRZU.js";import{i as C}from"./number-zqlPMliA.js";import{i as w,n as T,r as E}from"./ledger-Cv0LBflx.js";import{d as re,i as D,l as O,o as ie,u as k}from"./format-g3dP8OI3.js";import{t as A}from"./dataPending-DGdCvY5Y.js";import{t as j}from"./now-C9-UAzTC.js";import{n as ae,t as oe}from"./predictions-CkVKHq-5.js";import{t as se}from"./notify-Bz4wuE4T.js";import{a as M,i as ce,r as le,t as ue,u as de}from"./dashboardEvents-D-XVj666.js";var N=t(),fe=n(),pe=`mavea-dashboard-scheduler`;function me(){if(typeof navigator>`u`)return null;let e=navigator.locks;return typeof e?.request==`function`?e:null}async function he(e){let t=me();if(!t){await e();return}try{await t.request(pe,{ifAvailable:!0},async t=>{t&&await e()})}catch{await e()}}function ge(e){return new Set(e.toLowerCase().replace(/[^a-z0-9 ]/g,` `).replace(/\s+/g,` `).trim().split(` `).filter(e=>e.length>3))}function P(e){return e.replace(/\s+/g,` `).trim().toLowerCase()}var _e={WATCHING:`watching`,CLEAR:`clear`,TRIGGERED:`triggered`,AWAITING:`awaiting`},ve={ORIGIN:`origin`,ADDED:`added`,LINKED:`linked`},ye={CLEAR:1,WATCHING:.75,TRIGGERED:0,AWAITING:0};function be(e){let t=e.tripwires.filter(e=>e.state!==`AWAITING`);if(t.length===0)return null;let n=t.reduce((e,t)=>e+ye[t.state],0);return Math.round(100*n/t.length)}function xe(e){return e===null?``:e>=80?`Tracking well`:e>=55?`Holding, with risks`:e>=30?`Slipping`:`Lines are breaking`}var Se=new Set([`thesis`,`alignmentgauge`,`standingalerts`,`sourceslineage`]);function Ce(e){let t=e.block.type;return Se.has(t)?!0:!!e.metricId&&t===`insight`}function we(e,t){let n=t.block.type;if(!Se.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:_e[n.state]}:{}};return{...t.block,props:i}}if(n===`alignmentgauge`){let n=be(e),r={pct:n,band:xe(n)};return{...t.block,props:r}}if(n===`standingalerts`){let n={alerts:e.tripwires.map(e=>({label:e.label,state:_e[e.state]}))};return{...t.block,props:n}}let i={rows:e.sources.map(e=>({kind:ve[e.kind],label:e.title,...e.contributed?{contributed:e.contributed}:{}}))};return{...t.block,props:i}}var Te={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 F(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function I(e){return Array.isArray(e)?e:[]}function L(e){return typeof e==`string`?e.trim():typeof e==`number`&&Number.isFinite(e)?String(e):typeof e==`boolean`?e?`yes`:`no`:``}function R(e,...t){for(let n of t){let t=L(e[n]);if(t)return t}return``}function Ee(e){if(!F(e))return L(e);let t=R(e,`text`,`label`,`title`,`name`,`item`);if(t){let n=Object.entries(e).filter(([e])=>![`text`,`label`,`title`,`name`,`item`].includes(e)).map(([,e])=>L(e)).filter(Boolean);return n.length?`${t} — ${n.join(` — `)}`:t}return Object.values(e).map(L).filter(Boolean).join(` — `)}function De(e,t){let n=F(t)?t:{};switch(e){case`metric`:{let e=C(n.value??n.number??n.amount??t);if(e===null)return null;let r=R(n,`raw`,`display`,`formatted`);return{kind:`metric`,value:e,...r?{raw:r}:{}}}case`series`:{let e=I(n.points??n.data??n.series).map(e=>{let t=F(e)?e:{},n=R(t,`label`,`name`,`x`,`when`,`date`),r=C(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=I(n.items??n.list??n.entries??t).map(Ee).filter(Boolean);return e.length?{kind:`list`,items:e}:null}case`table`:{let e=I(n.rows??n.data??t),r=I(n.columns??n.headers??n.cols).map(L).filter(Boolean);!r.length&&F(e[0])&&(r=Object.keys(e[0]).map(L));let i=e.map(e=>Array.isArray(e)?e.map(L):F(e)?r.map(t=>L(e[t])):[]).filter(e=>e.some(Boolean));return r.length&&i.length?{kind:`table`,columns:r,rows:i}:null}case`event`:{let e=I(n.events??n.items??t).map(e=>{let t=F(e)?e:{},n=R(t,`title`,`name`,`event`,`label`);if(!n)return null;let r=R(t,`when`,`date`,`time`,`at`,`start`),i=R(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 Oe={list:`list`,checklist:`list`,timeline:`event`,datatable:`table`,standings:`table`,chart:`series`,bars:`series`};function z(e){return Oe[e]??null}function B(e,t){return e.raw??O(String(e.value),t)}function ke(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:B(t,r),conf:`strong`}:null;case`kpi`:return t.kind===`metric`?{...a,items:[{label:i||`Now`,value:B(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 Ae(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 je(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 Me(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 Ne(e,t,n){return t===null?`AWAITING`:je(e.comparator,t,n,e.threshold)?`TRIGGERED`:Me(e.comparator,t,e.threshold)?`WATCHING`:`CLEAR`}function V(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=Ne(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 H(e){return e.oneShotAt===void 0?e.nextDataAt:Math.min(e.nextDataAt,e.oneShotAt)}function Fe(e,t=Date.now(),n=4){return e.filter(e=>Pe(e,t)).sort((e,t)=>H(e)-H(t)).slice(0,n)}function Ie(e,t=Date.now()){return e.filter(e=>e.nextAiAt<=t).sort((e,t)=>e.nextAiAt-t.nextAiAt)[0]??null}function U(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 W(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 G(e,t){return(e.sources?.length??0)>0||W(t).length>0}function Le(e){return`- VALUE "${e.label}" — ${e.query}`}function Re(e,t,n){let r=z(e.block.type);return r?`- DATA #${t} [${r}] ${e.refreshQuery}\n return EXACTLY: ${Te[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 ze(){return{values:{},widgets:{}}}function Be(e){return{metrics:e.metrics.filter(e=>e.query.trim()!==``&&!e.blankKey),targets:e.widgets.filter(e=>!!e.refreshQuery?.trim()&&!Ce(e))}}function Ve(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 He(e,t,n){let r=n.reduce((e,t)=>e+(z(t.block.type)?300:1200),0);return 400+t.length*120+r+(e.prediction?150:0)}var Ue=12e3;function K(e){let t=[],n=1200;for(let r of e){let{metrics:e,targets:i}=Be(r);if(e.length===0&&i.length===0)continue;let a=He(r,e,i);if(t.length>0&&n+a>Ue)break;n+=a,t.push({d:r,metrics:e,targets:i})}return t}function We(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 Ge(e,t,n){let r=[...e.metrics.map(Le),...e.targets.map((e,t)=>Re(e,t,n(e.block.type))),...e.d.prediction?[`- PREVIOUS EXPECTATION (made ${We(e.d.prediction.at,t)}): "${e.d.prediction.text}" — grade it.`]:[]];return`DASHBOARD ${e.d.id} "${e.d.title}"\n${r.join(`
3
+ `)}`}function Ke(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function qe(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(Ke(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 Je(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 Ye(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 Xe=` 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 Ze(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=te(t.provider),c=e.flatMap(e=>e.targets.filter(e=>!z(e.block.type))),l=new Set(c.flatMap(Ve)),u=l.size>0,d=u?await i(()=>import(`./liveSchema-B4bQtO88.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13])):null,f=e.map(e=>Ge(e,r,d?d.blockShapeHint:()=>null)).join(`
4
+
5
+ `),p={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`]},m=u===!1,h=Math.min(m?4e3:14e3,Math.max(m?1500:3e3,1200+e.reduce((e,t)=>e+He(t.d,t.metrics,t.targets),0)+(n.briefingContext?700:0))),g=j()+` 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 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.`,_=`Use web search.\n\n${f}`+(n.briefingContext?`\n\nCONTEXT (already known — do not search these):\n${n.briefingContext}`:``),v=e=>s.generate({system:e?g+Xe:g,history:[],user:_,maxTokens:h,temperature:.15,thinkingLevel:e?`high`:`low`,tools:{webSearch:!0,requireSearch:!0},format:p,...u?{blockTypes:[...l],complexity:`brief`}:{}},t).then(e=>({rr:e,grounded:G(e,a(ne(e.raw)))})),y=await v(!1),b=1;!y.grounded&&e.length>0&&(y=await v(!0),b=2);let{rr:x}=y,S=a(ne(x.raw)),w=G(x,S),T=qe(S,e),E=x.sources&&x.sources.length?x.sources:W(S),re=[...new Set(E.map(e=>ie(e.url)).filter(Boolean))],D=d?d.validateLiveResponse:null,k={};for(let t of e){let e=T[t.d.id]??{},n=ze();if(w&&t.metrics.length>0){let r=a(e.values),i=new Map(Object.entries(r).map(([e,t])=>[P(e),t]));for(let e of t.metrics){let t=C(r[e.label]??i.get(P(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=z(e.block.type);if(!o)return;let s=De(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=ke(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(z(e.block.type))return;let i=r[t];if(!i)return;let a=D({narration:``,title:`x`,sub:``,blocks:[i]},new Set(Ve(e)),1,w,!0)?.blocks[0];a&&a.type===e.block.type&&(n.widgets[e.id]=a)})}if(w){let r=oe(e.expects);if(r&&(n.expects=r),t.d.prediction){let t=ae(e.grade);t&&(n.grade=t)}let i=Je(e.disagreement);i&&(n.disagreement=i);let a=Ye(e.liveWindow);a&&(n.liveWindow=a)}k[t.d.id]=n}Object.values(k).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 ${b} attempt${b>1?`s`:``}, discarded`})`,{dashboardIds:e.map(e=>e.d.id),raw:x.raw});let A=n.briefingContext&&w&&typeof S.briefing==`string`&&S.briefing.trim()?S.briefing.trim():void 0;return{ok:!0,grounded:w,perDashboard:k,sources:E,attempts:b,...A?{briefing:A}:{}}}catch(t){console.error(`[dashboards] refreshDashboards failed`,t);let n={};for(let t of e)n[t.d.id]=ze();return{ok:!1,grounded:!1,perDashboard:n,sources:[],attempts:0,failure:Ae(t)}}}function Qe(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 $e(e){try{let t=typeof e==`string`?JSON.parse(et(e)):e,n=t?.verdict;return{text:typeof n==`string`&&n.trim()?n.trim():null,sources:Qe(t)}}catch{return{text:typeof e==`string`&&e.trim()?e.trim():null,sources:[]}}}function et(e){let t=e.indexOf(`{`),n=e.lastIndexOf(`}`);return t>=0&&n>t?e.slice(t,n+1):e}async function q(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:j()+` 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}=$e(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 tt(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 nt(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=tt(i.history);if(o!==0&&o===tt(a.history))return{text:`${i.label} and ${a.label} have moved together over the last three checks.`,dashboardIds:[e.id]}}return null}function rt(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 it=5;function at(e){if(e.cadence.data!==`15min`&&e.cadence.data!==`hourly`)return null;let t=e.metrics.find(e=>(e.history?.length??0)>=it);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 ${it} checks.`,dashboardIds:[e.id]}:null}function ot(e,t){let n=t.note?` ${t.note}`:``;return{text:`Sources disagreed on ${t.metricLabel}: ${t.readings.join(` vs `)}.${n}`,dashboardIds:[e.id]}}var st=432e5;function ct(e,t,n){let r=n-st;return e.some(e=>e.kind===`insight`&&e.at>=r&&e.text===t.text)}function lt(e,t,n,r=2){let i=[],a=rt(e,n);a&&i.push(a);for(let t of e){let e=nt(t);e&&i.push(e);let n=at(t);n&&i.push(n)}return i.filter(e=>!ct(t,e,n)).slice(0,r)}var ut=e({checkAllDashboardsNow:()=>Ct,readDashboardNow:()=>wt,refreshDashboardNow:()=>St,runRefreshBatch:()=>$,selectTickTargets:()=>Tt,useDashboardLoop:()=>Et,useVerdictPending:()=>ht}),dt=15e3,ft=3e5;function pt(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 ft}}var J=new Set,Y=new Set,X=`mavea-dashboard-verdict-pending`;function Z(e,t){t?Y.add(e):Y.delete(e);try{typeof window<`u`&&typeof CustomEvent==`function`&&window.dispatchEvent(new CustomEvent(X,{detail:e}))}catch{}}function mt(e){return window.addEventListener(X,e),()=>window.removeEventListener(X,e)}function ht(e){let t=(0,fe.c)(2),n;return t[0]===e?n=t[1]:(n=()=>Y.has(e),t[0]=e,t[1]=n),(0,N.useSyncExternalStore)(mt,n,gt)}function gt(){return!1}function _t(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 Q=`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===Q)||T({kind:`savings`,text:Q,dashboardIds:[],searches:0})}async function bt(e,t,n,r,i,a,o=!1){let{d:c}=e,l=Object.keys(t.values).length>0||Object.keys(t.widgets).length>0?`updated`:o?`unverified`:`no-change`,u=c.metrics.map(e=>{let n=t.values[e.id];return n?{...e,lastValue:n.value}:e}),d={...c,metrics:u},{tripwires:f,newlyTriggered:p}=V(d,n),g=c.oneShotAt!==void 0&&c.oneShotAt<=a;v(c.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}:{},...g?{consumedOneShot:!0}:{}},a),p.length&&(se(d,p),T({kind:`alert`,text:`${p.map(e=>e.label).join(`, `)} crossed the line you set.`,dashboardIds:[c.id],searches:0}),d.alerts.inApp&&ue({dashboardId:c.id,dashboardTitle:c.title,tripwireLabel:p[0].label})),t.disagreement&&T({kind:`insight`,text:ot(c,t.disagreement).text,dashboardIds:[c.id],searches:0});let _={...c,tripwires:f},y=U(_,p,a);if(y.fire&&y.trigger&&i){Z(c.id,!0);let e=await q(_,y.trigger,r,a);Z(c.id,!1),e?s(c.id,e,a):h(c.id,a,`Mavéa couldn't get a fresh read — will try again.`),m(c.id,a),T({kind:y.trigger===`scheduled`?`check`:`alert`,text:e?e.text.slice(0,200):`Couldn't get a fresh read on ${c.title}.`,dashboardIds:[c.id],searches:1,...e?.sources?.length?{sourceCount:e.sources.length}:{}})}else y.fire&&y.trigger&&m(c.id,a);return l}async function $(e,t,n,r={}){let i=Date.now(),a={},o=K(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 d=new Map(o.map(e=>[e.d.id,f(e.d.id,i)])),m=e=>{for(let t of d.values())e(t)};if(!n)return a;let h=o.map(e=>e.d.id);A(h,!0);try{let e=await Ze(o,t,r.briefing?{briefingContext:r.briefing.context}:{});if(!e.ok){let t=e.failure??{kind:`network`},n=pt(e.failure,i);m(n=>{l(n,`search`,!1,{detail:u(t)}),p(n,{outcome:`failed`,failure:t,attempts:e.attempts})});for(let e of o)y(e.d.id,i+n),b(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=d.get(r.d.id)??null;l(s,`search`,!0,{count:e.attempts}),l(s,`sources`,e.sources.length>0,{count:e.sources.length,...e.sources.length===0?{detail:`The model answered without citing a live source.`}:{}});let u=Object.keys(o.values).length+Object.keys(o.widgets).length;l(s,`extraction`,u>0,{count:u,...u===0?{detail:`Nothing in the reply matched this tracker’s metrics or cards.`}:{}}),l(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];l(s,`saved`,f===`updated`||f===`no-change`),l(s,`tripwires`,!0),p(s,{outcome:f===`failed`?`failed`:f,attempts:e.attempts,...f===`unverified`?{failure:{kind:`ungrounded`}}:{}})}r.briefing&&e.briefing&&(M(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=>ie(e.url)))].filter(Boolean);return T({kind:`check`,text:_t(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{A(h,!1)}}async function xt(e,t,n,r){let{tripwires:i,newlyTriggered:a}=V(e);d(e.id,i,r),a.length&&(se(e,a),e.alerts.inApp&&ue({dashboardId:e.id,dashboardTitle:e.title,tripwireLabel:a[0].label}));let o={...e,tripwires:i},c=U(o,a,r);if(!c.fire||!c.trigger||!n)return;Z(e.id,!0);let l=await q(o,c.trigger,t,r);Z(e.id,!1),l?s(e.id,l,r):h(e.id,r,`Mavéa couldn't get a fresh read — will try again.`),m(e.id,r),T({kind:c.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(J.has(e))return`busy`;let t=_(e);if(!t)return`busy`;let n=x(S());if(!n.apiKey)return`no-model`;J.add(e);try{let r=await $([t],n,!0,{manual:!0});return r[e]===`failed`?`failed`:r[e]===`unverified`?`unverified`:`done`}finally{J.delete(e)}}async function Ct(){let e=x(S());if(!e.apiKey)return`no-model`;let t=g().filter(D),n=t.filter(e=>!J.has(e.id));if(n.length===0)return t.length>0?`busy`:`done`;for(;n.length>0;){let t=K(n);if(t.length===0)break;let r=t.map(e=>e.d.id);r.forEach(e=>J.add(e));let i={};try{i=await $(t.map(e=>e.d),e,!0,{manual:!0})}finally{r.forEach(e=>J.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(Y.has(e))return`busy`;let t=_(e);if(!t)return`failed`;let n=x(S());if(!n.apiKey)return`no-model`;let r=Date.now(),i=t.tripwires.find(e=>e.state===`TRIGGERED`),a=i??`scheduled`;Z(e,!0);let o;try{o=await q(t,a,n,r)}finally{Z(e,!1)}return o?s(e,o,r):h(e,r,`Mavéa couldn’t get a fresh read — try again in a moment.`),m(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=Fe(e,r).filter(e=>!i.has(e.id)),o=Ie(e,r);o&&i.has(o.id)&&(o=null);let s=k(t,n,r),c=!1;s.paused&&(c=a.some(D)||!!o,a=a.filter(e=>!D(e)),o=null);let l=K(a);return o&&l.some(e=>e.d.id===o.id)&&(o=null),{dueData:a,dueAi:o,pausedAndBlocked:c}}function Et(){let e=(0,N.useRef)(!1);(0,N.useEffect)(()=>{let t=!0,n=async()=>{if(e.current||!t||typeof document<`u`&&document.visibilityState!==`visible`)return;let n=x(S()),r=!!n.apiKey,i=Date.now(),a=g(),o=re(),s=w();de(a,s,e=>E(s,e,i),e=>c(e,i-6048e5,i),i);for(let e of lt(a,s,i))T({kind:`insight`,text:e.text,dashboardIds:e.dashboardIds,searches:0});let{dueData:l,dueAi:u,pausedAndBlocked:d}=Tt(a,s,o.dailySearchBudget,i,J);d&&yt(i);let f=r&&o.briefingEnabled&&le(i);if(l.length===0&&!u){if(f&&!a.some(D)){let e=ce(a,new Set);if(e){let t=await Ze([],n,{briefingContext:e});t.briefing&&(M(t.briefing,a,i),T({kind:`briefing`,text:`Morning briefing compiled.`,dashboardIds:[],searches:1}))}}return}e.current=!0,l.forEach(e=>J.add(e.id)),u&&J.add(u.id);try{if(l.length>0){let e=f?{context:ce(a,new Set(K(l).map(e=>e.d.id))),allDashboards:a}:void 0;await $(l,n,r,e?{briefing:e}:{})}u&&await xt(u,n,r,i)}finally{l.forEach(e=>J.delete(e.id)),u&&J.delete(u.id),e.current=!1}},r=()=>{he(n).catch(e=>{console.error(`[dashboards] scheduled tick failed`,e)})},i=window.setInterval(r,dt),a=()=>{document.visibilityState===`visible`&&r()};return document.addEventListener(`visibilitychange`,a),r(),()=>{t=!1,window.clearInterval(i),document.removeEventListener(`visibilitychange`,a)}},[])}export{ht as a,ge as c,ut as i,P as l,St as n,V as o,Et as r,we as s,wt as t};
@@ -1 +1 @@
1
- import{t as e}from"./react-BZJXY1be.js";import{g as t,h as n,m as r,n as i,t as a}from"./store-B39HvB_l.js";var o=e();function s(e){let n=n=>{(n.key===null||n.key===`mavea-dashboards-v1`)&&(t(),e())};return window.addEventListener(a,e),window.addEventListener(`storage`,n),()=>{window.removeEventListener(a,e),window.removeEventListener(`storage`,n)}}function c(){return(0,o.useSyncExternalStore)(s,r)}function l(e){return window.addEventListener(i,e),()=>window.removeEventListener(i,e)}function u(){return(0,o.useSyncExternalStore)(l,n,d)}function d(){return!1}export{u as n,c as t};
1
+ import{t as e}from"./react-BZJXY1be.js";import{g as t,h as n,m as r,n as i,t as a}from"./store-CsjDEADX.js";var o=e();function s(e){let n=n=>{(n.key===null||n.key===`mavea-dashboards-v1`)&&(t(),e())};return window.addEventListener(a,e),window.addEventListener(`storage`,n),()=>{window.removeEventListener(a,e),window.removeEventListener(`storage`,n)}}function c(){return(0,o.useSyncExternalStore)(s,r)}function l(e){return window.addEventListener(i,e),()=>window.removeEventListener(i,e)}function u(){return(0,o.useSyncExternalStore)(l,n,d)}function d(){return!1}export{u as n,c as t};
@@ -1 +1 @@
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-B2OCzEo1.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,worldEnabled:!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),worldEnabled:x(t.worldEnabled,g.worldEnabled),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`,`worldEnabled`,`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),worldEnabled:x(a.worldEnabled,g.worldEnabled),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,worldEnabled:e.worldEnabled,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
+ 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-BovElgRL.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,worldEnabled:!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),worldEnabled:x(t.worldEnabled,g.worldEnabled),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`,`worldEnabled`,`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),worldEnabled:x(a.worldEnabled,g.worldEnabled),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,worldEnabled:e.worldEnabled,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 +1 @@
1
- import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,r as i,t as a}from"./theme-7IrMJ70_.js";import{C as o,D as s,E as c,O as l,T as u,w as d}from"./index-CfcUMOBf.js";import{u as f}from"./useLiveConfig-DWz7BRdk.js";import{a as p,i as m,o as h,t as g}from"./store-D2IJF4SA.js";import{r as _,t as v}from"./queue-Adae4IzW.js";var y=t(),b=e(),x=n(),S=[`smaller`,`normal`,`larger`],C={smaller:`Smaller`,normal:`Normal`,larger:`Larger`},w=`mavea:appearancechange`;function T(e){window.dispatchEvent(new CustomEvent(w,{detail:e}))}function E(){let e=(0,y.c)(11),[t,n]=(0,b.useState)(O),[o,u]=(0,b.useState)(D),[p,m]=f(),h,g;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>{let e=e=>{let t=e.detail;t&&(n(t.template),u(t.theme))};return window.addEventListener(w,e),()=>window.removeEventListener(w,e)},g=[],e[0]=h,e[1]=g):(h=e[0],g=e[1]),(0,b.useEffect)(h,g);let _;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(_=e=>{s(document,e),d(document,e),c(e);let t={template:e,theme:r()};n(e),u(t.theme),T(t)},e[2]=_):_=e[2];let v=_,x;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(x=e=>{a(e),i(e);let t={template:l(),theme:e};n(t.template),u(e),T(t)},e[3]=x):x=e[3];let S=x,C;e[4]===m?C=e[5]:(C=e=>m({fontScale:e}),e[4]=m,e[5]=C);let E=C,k;return e[6]!==t||e[7]!==p.fontScale||e[8]!==E||e[9]!==o?(k={active:t,theme:o,fontScale:p.fontScale,pickTemplate:v,pickTheme:S,pickFontScale:E},e[6]=t,e[7]=p.fontScale,e[8]=E,e[9]=o,e[10]=k):k=e[10],k}function D(){return r()}function O(){return l()}function k(e){let t=(0,y.c)(13),{templateId:n}=e,r;t[0]===n?r=t[1]:(r=o.find(e=>e.id===n)??o[0],t[0]=n,t[1]=r);let i=r,a;t[2]!==i.preview.accent||t[3]!==i.preview.background||t[4]!==i.preview.ink||t[5]!==i.preview.surface?(a={"--preview-bg":i.preview.background,"--preview-surface":i.preview.surface,"--preview-ink":i.preview.ink,"--preview-accent":i.preview.accent},t[2]=i.preview.accent,t[3]=i.preview.background,t[4]=i.preview.ink,t[5]=i.preview.surface,t[6]=a):a=t[6];let s=a,c=`appearance-preview appearance-preview--${i.preview.geometry}`,l;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,x.jsx)(`span`,{className:`appearance-preview-aa`,children:`Aa`}),t[7]=l):l=t[7];let u,d;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,x.jsxs)(`span`,{className:`appearance-preview-copy`,children:[(0,x.jsx)(`i`,{}),(0,x.jsx)(`i`,{})]}),d=(0,x.jsx)(`span`,{className:`appearance-preview-data`,children:`08`}),t[8]=u,t[9]=d):(u=t[8],d=t[9]);let f;return t[10]!==s||t[11]!==c?(f=(0,x.jsxs)(`span`,{className:c,style:s,"aria-hidden":`true`,children:[l,u,d]}),t[10]=s,t[11]=c,t[12]=f):f=t[12],f}function A({active:e,theme:t,fontScale:n,embedded:r=!1,onPickTemplate:i,onPickTheme:a,onPickFontScale:s,onClose:c,optionRefs:l}){let u=(0,b.useId)(),d=(e,t)=>{let n;if(e.key===`ArrowRight`||e.key===`ArrowDown`)n=(t+1)%o.length;else if(e.key===`ArrowLeft`||e.key===`ArrowUp`)n=(t-1+o.length)%o.length;else if(e.key===`Home`)n=0;else if(e.key===`End`)n=o.length-1;else return;e.preventDefault(),l?.current[n]?.focus()};return(0,x.jsxs)(`div`,{className:`appearance-panel${r?` is-embedded`:``}`,role:r?void 0:`dialog`,"aria-modal":!r||void 0,"aria-labelledby":u,children:[(0,x.jsxs)(`div`,{className:`appearance-head`,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`h2`,{id:u,children:r?`Appearance`:`Choose your workspace`}),(0,x.jsx)(`p`,{children:`A visual identity for how you think.`})]}),c&&(0,x.jsx)(`button`,{type:`button`,className:`appearance-close`,onClick:c,"aria-label":`Close appearance`,children:`×`})]}),(0,x.jsxs)(`div`,{className:`appearance-mode`,"aria-label":`Color mode`,children:[(0,x.jsx)(`span`,{children:`Color mode`}),(0,x.jsx)(`div`,{className:`appearance-segmented`,children:[`light`,`dark`].map(e=>(0,x.jsxs)(`button`,{type:`button`,"aria-pressed":t===e,className:t===e?`is-active`:``,onClick:()=>a(e),children:[(0,x.jsx)(`span`,{className:`appearance-mode-icon is-${e}`,"aria-hidden":`true`}),e===`light`?`Light`:`Dark`]},e))})]}),(0,x.jsxs)(`div`,{className:`appearance-mode`,"aria-label":`Text size`,children:[(0,x.jsx)(`span`,{children:`Text size`}),(0,x.jsx)(`div`,{className:`appearance-segmented is-triple`,children:S.map(e=>(0,x.jsx)(`button`,{type:`button`,"aria-pressed":n===e,className:n===e?`is-active`:``,onClick:()=>s(e),children:C[e]},e))})]}),(0,x.jsx)(`div`,{className:`appearance-grid`,role:`radiogroup`,"aria-label":`Workspace themes`,children:o.map((t,n)=>(0,x.jsxs)(`button`,{ref:e=>{l&&(l.current[n]=e)},type:`button`,role:`radio`,"aria-label":`${t.label}, ${t.persona}. ${t.tagline} Best for ${t.bestFor}.`,"aria-checked":t.id===e,tabIndex:t.id===e?0:-1,className:`appearance-option${t.id===e?` is-active`:``}`,onClick:()=>i(t.id),onKeyDown:e=>d(e,n),children:[(0,x.jsx)(k,{templateId:t.id}),(0,x.jsxs)(`span`,{className:`appearance-option-copy`,children:[(0,x.jsxs)(`span`,{className:`appearance-option-title`,children:[(0,x.jsx)(`strong`,{children:t.label}),(0,x.jsx)(`em`,{children:t.persona})]}),(0,x.jsx)(`span`,{className:`appearance-option-tagline`,children:t.tagline}),(0,x.jsxs)(`span`,{className:`appearance-option-best`,children:[`Best for `,t.bestFor.toLowerCase()]}),(0,x.jsx)(`span`,{className:`appearance-option-font`,children:t.preview.fontRole})]}),(0,x.jsx)(`span`,{className:`appearance-check`,"aria-hidden":`true`,children:`✓`})]},t.id))})]})}function j({triggerClassName:e=`topbar-icon-btn`}={}){let{active:t,theme:n,fontScale:r,pickTemplate:i,pickTheme:a,pickFontScale:c}=E(),[l,d]=(0,b.useState)(!1),f=(0,b.useRef)(null),p=(0,b.useRef)(null),m=(0,b.useRef)([]);(0,b.useEffect)(()=>u(document),[]);let h=(0,b.useCallback)(()=>{d(!1),requestAnimationFrame(()=>p.current?.focus())},[]);(0,b.useEffect)(()=>{if(!l)return;s(document);let e=o.findIndex(e=>e.id===t);requestAnimationFrame(()=>{if(window.matchMedia?.(`(max-width: 720px)`).matches??!1){f.current?.querySelector(`.appearance-close`)?.focus({preventScroll:!0});return}m.current[Math.max(0,e)]?.focus({preventScroll:!0})});let n=e=>{f.current&&!f.current.contains(e.target)&&h()},r=e=>{if(e.key===`Escape`){e.preventDefault(),h();return}if(e.key!==`Tab`||!f.current)return;let t=Array.from(f.current.querySelectorAll(`button:not([disabled])`));if(!t.length)return;let n=t[0],r=t[t.length-1];e.shiftKey&&document.activeElement===n?(e.preventDefault(),r.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n.focus())};return window.addEventListener(`pointerdown`,n),window.addEventListener(`keydown`,r),()=>{window.removeEventListener(`pointerdown`,n),window.removeEventListener(`keydown`,r)}},[t,h,l]);let g=o.find(e=>e.id===t)??o[0];return(0,x.jsxs)(`div`,{className:`tpl-picker appearance-picker`,ref:f,children:[(0,x.jsx)(`button`,{ref:p,type:`button`,className:`${e} tpl-btn appearance-trigger`,onClick:()=>d(e=>!e),title:`Appearance: ${g.label} · ${g.persona} · ${n===`light`?`Light`:`Dark`}`,"aria-label":`Choose appearance (current: ${g.label}, ${g.persona}, ${n} mode)`,"aria-expanded":l,"aria-haspopup":`dialog`,children:(0,x.jsxs)(`span`,{className:`appearance-mark`,"aria-hidden":`true`,children:[(0,x.jsx)(`i`,{style:{background:g.preview.accent}}),(0,x.jsx)(`i`,{style:{background:g.preview.surface}})]})}),l&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`button`,{className:`appearance-backdrop`,type:`button`,onClick:h,"aria-label":`Close appearance`}),(0,x.jsx)(A,{active:t,theme:n,fontScale:r,onPickTemplate:i,onPickTheme:a,onPickFontScale:c,onClose:h,optionRefs:m})]})]})}function M(){let e=(0,y.c)(7),{active:t,theme:n,fontScale:r,pickTemplate:i,pickTheme:a,pickFontScale:o}=E(),s;return e[0]!==t||e[1]!==r||e[2]!==o||e[3]!==i||e[4]!==a||e[5]!==n?(s=(0,x.jsx)(A,{embedded:!0,active:t,theme:n,fontScale:r,onPickTemplate:i,onPickTheme:a,onPickFontScale:o}),e[0]=t,e[1]=r,e[2]=o,e[3]=i,e[4]=a,e[5]=n,e[6]=s):s=e[6],s}function N(e){let[t,n]=(0,b.useState)(e);return(0,b.useEffect)(()=>{if(typeof window>`u`)return;let t=()=>n(e());return t(),window.addEventListener(g,t),window.addEventListener(`focus`,t),document.addEventListener(`visibilitychange`,t),()=>{window.removeEventListener(g,t),window.removeEventListener(`focus`,t),document.removeEventListener(`visibilitychange`,t)}},[]),t}function P(){return N(v)}function F(){return N(h)}function I(){return N(p)}function L(){return N(R)}function R(){return m()}function z(){return N(B)}function B(){return _()}export{P as a,F as i,I as n,M as o,z as r,j as s,L as t};
1
+ import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,r as i,t as a}from"./theme-7IrMJ70_.js";import{C as o,D as s,E as c,O as l,T as u,w as d}from"./index-zIa6h_8b.js";import{u as f}from"./useLiveConfig-Cpy0_E_-.js";import{a as p,i as m,o as h,t as g}from"./store-D2IJF4SA.js";import{r as _,t as v}from"./queue-Adae4IzW.js";var y=t(),b=e(),x=n(),S=[`smaller`,`normal`,`larger`],C={smaller:`Smaller`,normal:`Normal`,larger:`Larger`},w=`mavea:appearancechange`;function T(e){window.dispatchEvent(new CustomEvent(w,{detail:e}))}function E(){let e=(0,y.c)(11),[t,n]=(0,b.useState)(O),[o,u]=(0,b.useState)(D),[p,m]=f(),h,g;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>{let e=e=>{let t=e.detail;t&&(n(t.template),u(t.theme))};return window.addEventListener(w,e),()=>window.removeEventListener(w,e)},g=[],e[0]=h,e[1]=g):(h=e[0],g=e[1]),(0,b.useEffect)(h,g);let _;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(_=e=>{s(document,e),d(document,e),c(e);let t={template:e,theme:r()};n(e),u(t.theme),T(t)},e[2]=_):_=e[2];let v=_,x;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(x=e=>{a(e),i(e);let t={template:l(),theme:e};n(t.template),u(e),T(t)},e[3]=x):x=e[3];let S=x,C;e[4]===m?C=e[5]:(C=e=>m({fontScale:e}),e[4]=m,e[5]=C);let E=C,k;return e[6]!==t||e[7]!==p.fontScale||e[8]!==E||e[9]!==o?(k={active:t,theme:o,fontScale:p.fontScale,pickTemplate:v,pickTheme:S,pickFontScale:E},e[6]=t,e[7]=p.fontScale,e[8]=E,e[9]=o,e[10]=k):k=e[10],k}function D(){return r()}function O(){return l()}function k(e){let t=(0,y.c)(13),{templateId:n}=e,r;t[0]===n?r=t[1]:(r=o.find(e=>e.id===n)??o[0],t[0]=n,t[1]=r);let i=r,a;t[2]!==i.preview.accent||t[3]!==i.preview.background||t[4]!==i.preview.ink||t[5]!==i.preview.surface?(a={"--preview-bg":i.preview.background,"--preview-surface":i.preview.surface,"--preview-ink":i.preview.ink,"--preview-accent":i.preview.accent},t[2]=i.preview.accent,t[3]=i.preview.background,t[4]=i.preview.ink,t[5]=i.preview.surface,t[6]=a):a=t[6];let s=a,c=`appearance-preview appearance-preview--${i.preview.geometry}`,l;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,x.jsx)(`span`,{className:`appearance-preview-aa`,children:`Aa`}),t[7]=l):l=t[7];let u,d;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,x.jsxs)(`span`,{className:`appearance-preview-copy`,children:[(0,x.jsx)(`i`,{}),(0,x.jsx)(`i`,{})]}),d=(0,x.jsx)(`span`,{className:`appearance-preview-data`,children:`08`}),t[8]=u,t[9]=d):(u=t[8],d=t[9]);let f;return t[10]!==s||t[11]!==c?(f=(0,x.jsxs)(`span`,{className:c,style:s,"aria-hidden":`true`,children:[l,u,d]}),t[10]=s,t[11]=c,t[12]=f):f=t[12],f}function A({active:e,theme:t,fontScale:n,embedded:r=!1,onPickTemplate:i,onPickTheme:a,onPickFontScale:s,onClose:c,optionRefs:l}){let u=(0,b.useId)(),d=(e,t)=>{let n;if(e.key===`ArrowRight`||e.key===`ArrowDown`)n=(t+1)%o.length;else if(e.key===`ArrowLeft`||e.key===`ArrowUp`)n=(t-1+o.length)%o.length;else if(e.key===`Home`)n=0;else if(e.key===`End`)n=o.length-1;else return;e.preventDefault(),l?.current[n]?.focus()};return(0,x.jsxs)(`div`,{className:`appearance-panel${r?` is-embedded`:``}`,role:r?void 0:`dialog`,"aria-modal":!r||void 0,"aria-labelledby":u,children:[(0,x.jsxs)(`div`,{className:`appearance-head`,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`h2`,{id:u,children:r?`Appearance`:`Choose your workspace`}),(0,x.jsx)(`p`,{children:`A visual identity for how you think.`})]}),c&&(0,x.jsx)(`button`,{type:`button`,className:`appearance-close`,onClick:c,"aria-label":`Close appearance`,children:`×`})]}),(0,x.jsxs)(`div`,{className:`appearance-mode`,"aria-label":`Color mode`,children:[(0,x.jsx)(`span`,{children:`Color mode`}),(0,x.jsx)(`div`,{className:`appearance-segmented`,children:[`light`,`dark`].map(e=>(0,x.jsxs)(`button`,{type:`button`,"aria-pressed":t===e,className:t===e?`is-active`:``,onClick:()=>a(e),children:[(0,x.jsx)(`span`,{className:`appearance-mode-icon is-${e}`,"aria-hidden":`true`}),e===`light`?`Light`:`Dark`]},e))})]}),(0,x.jsxs)(`div`,{className:`appearance-mode`,"aria-label":`Text size`,children:[(0,x.jsx)(`span`,{children:`Text size`}),(0,x.jsx)(`div`,{className:`appearance-segmented is-triple`,children:S.map(e=>(0,x.jsx)(`button`,{type:`button`,"aria-pressed":n===e,className:n===e?`is-active`:``,onClick:()=>s(e),children:C[e]},e))})]}),(0,x.jsx)(`div`,{className:`appearance-grid`,role:`radiogroup`,"aria-label":`Workspace themes`,children:o.map((t,n)=>(0,x.jsxs)(`button`,{ref:e=>{l&&(l.current[n]=e)},type:`button`,role:`radio`,"aria-label":`${t.label}, ${t.persona}. ${t.tagline} Best for ${t.bestFor}.`,"aria-checked":t.id===e,tabIndex:t.id===e?0:-1,className:`appearance-option${t.id===e?` is-active`:``}`,onClick:()=>i(t.id),onKeyDown:e=>d(e,n),children:[(0,x.jsx)(k,{templateId:t.id}),(0,x.jsxs)(`span`,{className:`appearance-option-copy`,children:[(0,x.jsxs)(`span`,{className:`appearance-option-title`,children:[(0,x.jsx)(`strong`,{children:t.label}),(0,x.jsx)(`em`,{children:t.persona})]}),(0,x.jsx)(`span`,{className:`appearance-option-tagline`,children:t.tagline}),(0,x.jsxs)(`span`,{className:`appearance-option-best`,children:[`Best for `,t.bestFor.toLowerCase()]}),(0,x.jsx)(`span`,{className:`appearance-option-font`,children:t.preview.fontRole})]}),(0,x.jsx)(`span`,{className:`appearance-check`,"aria-hidden":`true`,children:`✓`})]},t.id))})]})}function j({triggerClassName:e=`topbar-icon-btn`}={}){let{active:t,theme:n,fontScale:r,pickTemplate:i,pickTheme:a,pickFontScale:c}=E(),[l,d]=(0,b.useState)(!1),f=(0,b.useRef)(null),p=(0,b.useRef)(null),m=(0,b.useRef)([]);(0,b.useEffect)(()=>u(document),[]);let h=(0,b.useCallback)(()=>{d(!1),requestAnimationFrame(()=>p.current?.focus())},[]);(0,b.useEffect)(()=>{if(!l)return;s(document);let e=o.findIndex(e=>e.id===t);requestAnimationFrame(()=>{if(window.matchMedia?.(`(max-width: 720px)`).matches??!1){f.current?.querySelector(`.appearance-close`)?.focus({preventScroll:!0});return}m.current[Math.max(0,e)]?.focus({preventScroll:!0})});let n=e=>{f.current&&!f.current.contains(e.target)&&h()},r=e=>{if(e.key===`Escape`){e.preventDefault(),h();return}if(e.key!==`Tab`||!f.current)return;let t=Array.from(f.current.querySelectorAll(`button:not([disabled])`));if(!t.length)return;let n=t[0],r=t[t.length-1];e.shiftKey&&document.activeElement===n?(e.preventDefault(),r.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n.focus())};return window.addEventListener(`pointerdown`,n),window.addEventListener(`keydown`,r),()=>{window.removeEventListener(`pointerdown`,n),window.removeEventListener(`keydown`,r)}},[t,h,l]);let g=o.find(e=>e.id===t)??o[0];return(0,x.jsxs)(`div`,{className:`tpl-picker appearance-picker`,ref:f,children:[(0,x.jsx)(`button`,{ref:p,type:`button`,className:`${e} tpl-btn appearance-trigger`,onClick:()=>d(e=>!e),title:`Appearance: ${g.label} · ${g.persona} · ${n===`light`?`Light`:`Dark`}`,"aria-label":`Choose appearance (current: ${g.label}, ${g.persona}, ${n} mode)`,"aria-expanded":l,"aria-haspopup":`dialog`,children:(0,x.jsxs)(`span`,{className:`appearance-mark`,"aria-hidden":`true`,children:[(0,x.jsx)(`i`,{style:{background:g.preview.accent}}),(0,x.jsx)(`i`,{style:{background:g.preview.surface}})]})}),l&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`button`,{className:`appearance-backdrop`,type:`button`,onClick:h,"aria-label":`Close appearance`}),(0,x.jsx)(A,{active:t,theme:n,fontScale:r,onPickTemplate:i,onPickTheme:a,onPickFontScale:c,onClose:h,optionRefs:m})]})]})}function M(){let e=(0,y.c)(7),{active:t,theme:n,fontScale:r,pickTemplate:i,pickTheme:a,pickFontScale:o}=E(),s;return e[0]!==t||e[1]!==r||e[2]!==o||e[3]!==i||e[4]!==a||e[5]!==n?(s=(0,x.jsx)(A,{embedded:!0,active:t,theme:n,fontScale:r,onPickTemplate:i,onPickTheme:a,onPickFontScale:o}),e[0]=t,e[1]=r,e[2]=o,e[3]=i,e[4]=a,e[5]=n,e[6]=s):s=e[6],s}function N(e){let[t,n]=(0,b.useState)(e);return(0,b.useEffect)(()=>{if(typeof window>`u`)return;let t=()=>n(e());return t(),window.addEventListener(g,t),window.addEventListener(`focus`,t),document.addEventListener(`visibilitychange`,t),()=>{window.removeEventListener(g,t),window.removeEventListener(`focus`,t),document.removeEventListener(`visibilitychange`,t)}},[]),t}function P(){return N(v)}function F(){return N(h)}function I(){return N(p)}function L(){return N(R)}function R(){return m()}function z(){return N(B)}function B(){return _()}export{P as a,F as i,I as n,M as o,z as r,j as s,L as t};
@@ -0,0 +1,4 @@
1
+ import{t as e}from"./types-C42I77wh.js";import{t}from"./json-B0N3XRZU.js";import{i as n,r}from"./verbatim-DBTj9sPD.js";import{n as i}from"./citation-BsSvaaer.js";import{a,r as o}from"./number-zqlPMliA.js";import{i as s,n as c,r as l,s as u,t as d}from"./receipts-D7zveV-I.js";var f={text:``,chunks:[]},p=e=>({text:e,chunks:[]});function m(e){let{source:t,text:n}=e;return[t.url?`${t.title??t.url}\n${t.url}`:t.title??``,n].filter(e=>e.trim()).join(`
2
+ `)}function h(e,t){let n=[],r=[],i=0;for(let a of e){let e=m(a);if(!e.trim())continue;let o=e.length+(r.length?2:0);i+o>t||(i+=o,r.push(e),n.push({source:a.source,text:e}))}return{text:r.join(`
3
+
4
+ `),chunks:n}}function g(e){return{source:{kind:`web`,title:e.title,...e.url?{url:e.url,host:i(e.url)}:{}},text:e.snippet??``}}function _(e){let t=e.chunks.map(e=>({source:e.source,text:n(e.text)}));return e=>{let r=n(e);if(!r)return null;let i=t.filter(e=>e.text.includes(r));return i.length===1?i[0].source:null}}function v(e,t=`an unnamed cause`){let n=e??``;return n.replace(/[\p{Cf}\p{Cc}]/gu,``).trim().length>0?n.trim():t}function y(e){let t=e.replace(/[-_]+/g,` `).trim();return t.length===0?e:t[0].toUpperCase()+t.slice(1)}var b=/^\d{4}$/,x=/^(\d{4})[-/](\d{1,2})$/;function S(e){let t=e.trim();if(b.test(t))return Date.UTC(Number(t),0,1);let n=x.exec(t);if(n){let e=Number(n[2]);return e>=1&&e<=12?Date.UTC(Number(n[1]),e-1,1):null}let r=Date.parse(t);return Number.isFinite(r)?r:null}var C=[`economy`,`policy`,`technology`,`science`,`environment`,`society`,`health`,`conflict`];function w(e){return typeof e==`string`&&C.includes(e)?e:void 0}var T=new Set([`root`,`mechanism`,`outcome`]),E=[`T0`,`T1`,`T2`,`T3`],D=140,O=40,k=120,A=240,j=240,ee=24,M=12,N=6,P=16,F=4,I=48,te=40,L=24,ne=24;function R(e,t){if(typeof e!=`string`)return null;let n=e.trim();return n?n.length>t?n.slice(0,t):n:null}var re=e=>e<0?0:e>1?1:e;function z(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,ne).replace(/-+$/,``)}function B(e){if(typeof e!=`string`)return null;let t=e.trim();if(!t||t.length>L)return null;let n=S(t);return n===null?null:{label:t,at:n}}function ie(t,n,r){let i=typeof t==`string`?{t}:t;if(!i||typeof i!=`object`||Array.isArray(i))return;let a=i,o=B(a.t);if(!o)return;let s=B(a.until),c=E.includes(a.tier)?a.tier:`T0`,u=R(a.quote,A),d=e(c)&&u?{quote:u,tier:c,receipt:a.receipt}:r?{...r,receipt:void 0}:null,f=d&&d.quote.includes(o.label)&&n.holds(d.quote)?{tier:d.tier,receipt:l(d.receipt,d.quote,n.sourceOf(d.quote))}:{tier:`T0`};return{t:o.label,...s&&s.at>o.at?{until:s.label}:{},...f}}function V(t,n,r,i){let o=T.has(t.role)?t.role:`mechanism`,c=typeof t.depth==`number`&&Number.isFinite(t.depth)?Math.max(0,Math.round(t.depth)):o===`root`?0:o===`outcome`?2:1,u=E.includes(t.tier)?t.tier:`T0`,d=typeof t.value==`number`&&Number.isFinite(t.value)?t.value:void 0,f=R(t.unit,M)??void 0,p=R(t.detail,j)??void 0,m=w(t.domain),h=s(t),g;e(u)?h&&r.holds(h)?(g=l(t.receipt,h,r.sourceOf(h)),d!==void 0&&!a(d,h)&&(d=void 0)):(u=`T0`,d=void 0):u===`T3`?(!i||d===void 0)&&(u=`T0`,d=void 0):d=void 0;let _=ie(t.date,r,g&&e(u)?{quote:g.quote,tier:u}:null);return{label:n,role:o,depth:c,tier:u,...d===void 0?{}:{value:d},...f?{unit:f}:{},...g?{receipt:g}:{},...p?{detail:p}:{},..._?{date:_}:{},...m?{domain:m}:{}}}function H(t,n,r){if(!t||typeof t!=`object`||Array.isArray(t))return;let i=t,o=E.includes(i.tier)?i.tier:`T0`;if(o===`T0`||o===`T3`&&!r)return;let c=R(i.unit,M)??void 0,u=s(i),d=e(o)&&u&&n.holds(u)?l(i.receipt,u):void 0,f=[];for(let t of Array.isArray(i.points)?i.points:[]){if(f.length>=te)break;if(!t||typeof t!=`object`)continue;let r=t,i=R(r.t,L),c=typeof r.value==`number`&&Number.isFinite(r.value)?r.value:void 0;if(!(!i||c===void 0)){if(e(o)){let e=s(r);if(!e||!n.holds(e)||!a(c,e))continue;f.push({t:i,value:c,receipt:l(r.receipt,e,n.sourceOf(e))})}else f.push({t:i,value:c})}}if(f.length!==0)return{points:f,tier:o,...c?{unit:c}:{},...d?{receipt:d}:{}}}function U(e,t,n,r){let i=[],a=new Set;for(let o of Array.isArray(e)?e:[]){if(i.length>=F)break;if(!o||typeof o!=`object`)continue;let e=o,s=R(e.id,O)??R(e.label,k);if(!s)continue;let c=s.startsWith(`${t}.`)?s.slice(t.length+1):s,l=z(c);if(!l)continue;let u=`${t}.${l}`;if(a.has(u))continue;a.add(u);let d=R(e.label,k)??y(c),f=H(e.series,n,r);i.push({id:u,...V(e,d,n,r),...f?{series:f}:{}})}return i}function ae(e,t){let n=new Map(e.map(e=>[e,0])),r=new Map(e.map(e=>[e,[]]));for(let e of t){let t=r.get(e.from);!t||!n.has(e.to)||(n.set(e.to,n.get(e.to)+1),t.push(e.to))}let i=[...r.keys()].filter(e=>n.get(e)===0),a=0;for(let e=0;e<i.length;e+=1){a+=1;for(let t of r.get(i[e])){let e=n.get(t)-1;n.set(t,e),e===0&&i.push(t)}}return a===r.size}function oe(e,t){let n=new Map(e.map(e=>[e,[]]));t.forEach((e,t)=>{let r=n.get(e.from);r&&n.has(e.to)&&r.push(t)});let r=new Map,i=new Set;for(let a of e){if(r.has(a))continue;r.set(a,1);let e=[{id:a,next:0}];for(;e.length>0;){let a=e[e.length-1],o=n.get(a.id);if(a.next>=o.length){r.set(a.id,2),e.pop();continue}let s=o[a.next];a.next+=1;let{to:c}=t[s],l=r.get(c);l===1?i.add(s):l===void 0&&(r.set(c,1),e.push({id:c,next:0}))}}return i}var W=e=>{let t=e.slice(0,3).map(e=>`${e.from} → ${e.to}`);return e.length>t.length?`${t.join(`, `)}, +${e.length-t.length} more`:t.join(`, `)};function G(e,t){if(ae(e,t))return{edges:[...t],notes:[]};let n=oe(e,t),r=t.filter((e,t)=>n.has(t));return{edges:t.filter((e,t)=>!n.has(t)),notes:[`Dropped ${r.length} link${r.length===1?``:`s`} that closed a causal loop (${W(r)}) — a causal web cannot come back round to its own cause.`]}}var K=e=>e.length===0?[]:[`Dropped ${e.length} self-link${e.length===1?``:`s`} (${W(e)}) — nothing causes itself.`];function q(e,t){let n=Math.max(0,N-t.length),r=[...(e??[]).slice(0,n),...t];return r.length>0?r.slice(0,N):void 0}function se(n,i){let a=typeof n==`string`?t(n):n;if(!a||typeof a!=`object`||Array.isArray(a))return null;let s=a,m=R(s.title,D);if(!m)return null;let h=s.provenance&&typeof s.provenance==`object`?s.provenance:{},g=h.illustrative===!0,v=typeof i==`string`?p(i):i??f,y={holds:r(v.text),sourceOf:_(v)},b=[],x=new Set;for(let e of Array.isArray(s.nodes)?s.nodes:[]){if(b.length>=P)break;if(!e||typeof e!=`object`)continue;let t=e,n=R(t.id,O),r=R(t.label,k);if(!n||!r||x.has(n))continue;x.add(n);let i=H(t.series,y,g),a=U(t.children,n,y,g);b.push({id:n,...V(t,r,y,g),...i?{series:i}:{},...a.length?{children:a}:{}})}if(b.length<2)return null;let S=new Set(b.map(e=>e.id)),C=[],w=[];for(let t of Array.isArray(s.edges)?s.edges:[]){if(C.length>=I)break;if(!t||typeof t!=`object`)continue;let n=t,r=R(n.from,O),i=R(n.to,O);if(!r||!i||!S.has(r)||!S.has(i))continue;if(r===i){w.push({from:r,to:i});continue}let a=n.sign===-1?-1:1,s=R(n.verb,ee)??void 0,f=n.relation==null?void 0:u(n.relation),p=E.includes(n.tier)?n.tier:`T0`,m=typeof n.weight==`number`&&Number.isFinite(n.weight)?re(n.weight):void 0,h=d(n,y.holds,y.sourceOf),g=!1,_=m;_!==void 0&&!h.some(e=>o(_,e.quote))&&(m=void 0),e(p)&&m!==void 0&&h.length>0||(p=`T0`,m=void 0,g=!0);let v=n.counter&&typeof n.counter==`object`?n.counter:null,b=v?R(v.quote,A):null,x=b&&y.holds(b)?l(v,b,y.sourceOf(b)):void 0;C.push({from:r,to:i,sign:a,tier:p,...s?{verb:s}:{},...m===void 0?{}:{weight:m},...h.length?{receipt:h[0],receipts:h}:{},...g?{provisional:!0}:{},...f?{relation:f}:{},...x?{counter:x}:{},status:c({tier:p,weight:m,receipt:h[0],receipts:h,counter:x})})}let T=G([...S],C),j=R(s.outcomeId,O);(!j||!S.has(j))&&(j=(b.find(e=>e.role===`outcome`)??b.reduce((e,t)=>t.depth>e.depth?t:e)).id);let M=q(Array.isArray(h.notes)?h.notes.map(e=>String(e)):void 0,[...K(w),...T.notes]);return{title:m,outcomeId:j,nodes:b,edges:T.edges,provenance:{...g?{illustrative:!0}:{},...M?{notes:M}:{}}}}var J=e=>e.toLowerCase().replace(/[^a-z0-9]+/g,``);function Y(e,t){let n=new Set(e.nodes.map(e=>e.id)),r=new Map;for(let t of e.nodes){let e=J(t.label),n=r.get(e);n?n.push(t.id):r.set(e,[t.id])}let i=new Map,a=new Set,o=new Set,s=[],c=new Set(n);for(let t of e.nodes)for(let e of t.children??[])c.add(e.id);for(let l of t.nodes){if(i.has(l.id))continue;let t=n.has(l.id)?l.id:null;if(!t){let e=r.get(J(l.label));e&&e.length===1&&(t=e[0])}if(t){if(o.has(t))continue;o.add(t),i.set(l.id,t),a.add(l.id);continue}if(e.nodes.length+s.length>=P)continue;let u=l.id;for(let e=2;c.has(u);e+=1)u=`${l.id}-${e}`;c.add(u),i.set(l.id,u),s.push({node:l,id:u})}return{idMap:i,matched:a,fresh:s}}function ce(e,t){return t.nodes.length===0?0:Y(e,t).matched.size/t.nodes.length}var le=t=>e(t.tier)&&!!t.receipt;function ue(t,n){return n?t?e(n.tier)||!e(t.tier)?n:t:n:t}function X(e,t){let n=le(t)?t:e,r=ue(e.series,t.series),i=t.detail??e.detail,a=t.date??e.date,o=t.domain??e.domain;return{id:e.id,label:e.label,role:e.role,depth:e.depth,tier:n.tier,...n.value===void 0?{}:{value:n.value},...n.unit?{unit:n.unit}:{},...n.receipt?{receipt:n.receipt}:{},...a?{date:a}:{},...r?{series:r}:{},...i?{detail:i}:{},...o?{domain:o}:{}}}function Z(e,t,n,r){let i=e?[...e]:[],a=new Map(i.map((e,t)=>[e.id,t]));for(let e of t??[]){let t=z(e.id.startsWith(`${n}.`)?e.id.slice(n.length+1):e.id.split(`.`).pop()??``);if(!t)continue;let o=`${r}.${t}`,{children:s,...c}=e,l={...c,id:o},u=a.get(o);u===void 0?i.length<F&&(a.set(o,i.length),i.push(l)):i[u]=X(i[u],l)}return i.length?i:void 0}function de(e,t){let n=Z(e.children,t.children,t.id,e.id);return{...X(e,t),...n?{children:n}:{}}}var Q=e=>e.receipts??(e.receipt?[e.receipt]:[]);function fe(e,t){let n=Q(e),r=Q(t).length>0&&n.length===0?t:e,i=r===t?e:t,a=[],o=new Set;for(let e of[...Q(r),...Q(i)])a.length>=3||o.has(e.quote)||(o.add(e.quote),a.push(e));let s=r.relation??i.relation,l=r.counter??i.counter;return{from:e.from,to:e.to,sign:r.sign,tier:r.tier,...r.verb?{verb:r.verb}:{},...r.weight===void 0?{}:{weight:r.weight},...a.length?{receipt:a[0],receipts:a}:{},...r.provisional?{provisional:!0}:{},...s?{relation:s}:{},...l?{counter:l}:{},status:c({tier:r.tier,...r.weight===void 0?{}:{weight:r.weight},...a.length?{receipt:a[0],receipts:a}:{},...l?{counter:l}:{}})}}function pe(e,t){let{idMap:n,fresh:r}=Y(e,t),i=new Map(t.nodes.map(e=>[e.id,e])),a=[...e.nodes],o=new Map(e.nodes.map((e,t)=>[e.id,t]));for(let[e,t]of n){let n=o.get(t);if(n===void 0)continue;let r=i.get(e);r&&(a[n]=de(a[n],r))}for(let{node:e,id:t}of r){let{children:n,...r}=e,i=Z(void 0,e.children,e.id,t);a.push({...r,id:t,...i?{children:i}:{}})}let s=[...e.edges],c=new Map(e.edges.map((e,t)=>[`${e.from}\0${e.to}`,t])),l=e=>n.get(e)??(o.has(e)?e:void 0);for(let e of t.edges){let t=l(e.from),n=l(e.to);if(!t||!n||t===n)continue;let r=`${t}\0${n}`,i=c.get(r);i===void 0?s.length<I&&(c.set(r,s.length),s.push({...e,from:t,to:n})):s[i]=fe(s[i],{...e,from:t,to:n})}let u=G(a.map(e=>e.id),s),d=q(e.provenance.notes,u.notes);return{title:e.title,outcomeId:e.outcomeId,nodes:a,edges:u.edges,provenance:{...e.provenance.illustrative?{illustrative:!0}:{},...d?{notes:d}:{}}}}function me(e,n,i,a){let o=typeof e==`string`?t(e):e;if(!o||typeof o!=`object`)return[];let s=o.children,c=typeof i==`string`?p(i):i??f;return U(s,n,{holds:r(c.text),sourceOf:_(c)},a)}function he(e,t,n){if(n.length===0)return e;let r=$(e.nodes,t,n);return r===e.nodes?e:{...e,nodes:[...r]}}function $(e,t,n){let r=!1,i=e.map(e=>{if(e.id===t)return(e.children?.length??0)>0?e:(r=!0,{...e,children:[...n]});if(e.children===void 0)return e;let i=$(e.children,t,n);return i===e.children?e:(r=!0,{...e,children:[...i]})});return r?i:e}export{ce as a,v as c,g as d,pe as i,f as l,me as n,C as o,se as r,S as s,he as t,h as u};
@@ -0,0 +1 @@
1
+ import{i as e}from"./format-q0LwBjID.js";import{t}from"./types-C42I77wh.js";function n(e,t){let n=new Map,r=(t,r)=>{if(!e.has(t))return;let i=n.get(t);i?i.push(Object.freeze(r)):n.set(t,[Object.freeze(r)])};for(let e of t)r(e.valueId,{surface:e.surface,id:e.id,label:e.label});for(let t of e.values())if(t.kind===`calculated`)for(let e of t.calc.inputs)r(e,{surface:`calc`,id:t.id,label:`input to ${t.label}`});for(let e of n.values())Object.freeze(e);return Object.freeze({values:e,usedIn:n})}var r=`Shows the shape, not your numbers.`;function i(n,r,i,a,o,s,c,l){if(!Number.isFinite(i))return null;let u=e(i,o),d={...o?{unit:o}:{},...l?{period:l}:{}},f={id:n,label:r,...o||l?{scope:d}:{}};return c||a===`T3`?{...f,kind:`illustrative`,resolution:{ok:!0,tier:`T3`,value:i,raw:u,illustrative:s?.quote??`Shows the shape, not your numbers.`,surface:`model`}}:!s||!t(a)?null:a===`T1`?{...f,kind:`grounded`,resolution:{ok:!0,tier:`T1`,value:i,raw:u,receipt:s,surface:`user`}}:{...f,kind:`grounded`,resolution:{ok:!0,tier:`T2`,value:i,raw:u,receipt:s,surface:`web`}}}export{i as n,n as r,r as t};
@@ -1 +1 @@
1
- import{T as e,j as t}from"./kokoro-CdL8Kl48.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;function f(e){return e*2+12e3}function p(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 m(e){return new Promise(t=>setTimeout(t,e))}async function h(e,t=a){return await n(e.started,t)??!1}async function g(e,t,r=i){await Promise.all([n(e.finished,f(t)),m(r)])}function _(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)})}async function v(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{v as a,p as c,_ as d,d as i,g as l,u as n,m as o,l as r,f as s,i as t,h as u};
1
+ import{T as e,j as t}from"./kokoro-B3oG_8sd.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;function f(e){return e*2+12e3}function p(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 m(e){return new Promise(t=>setTimeout(t,e))}async function h(e,t=a){return await n(e.started,t)??!1}async function g(e,t,r=i){await Promise.all([n(e.finished,f(t)),m(r)])}function _(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)})}async function v(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{v as a,p as c,_ as d,d as i,g as l,u as n,m as o,l as r,f as s,i as t,h as u};
package/dist/index.html CHANGED
@@ -102,19 +102,19 @@
102
102
  }
103
103
  }
104
104
  </style>
105
- <script type="module" crossorigin src="/assets/index-CfcUMOBf.js"></script>
105
+ <script type="module" crossorigin src="/assets/index-zIa6h_8b.js"></script>
106
106
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-DkW27tQK.js">
107
107
  <link rel="modulepreload" crossorigin href="/assets/react-BZJXY1be.js">
108
108
  <link rel="modulepreload" crossorigin href="/assets/compiler-runtime-qQQXpJgv.js">
109
109
  <link rel="modulepreload" crossorigin href="/assets/useInView-CXTOAEV3.js">
110
110
  <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-DeHZSEgm.js">
111
- <link rel="modulepreload" crossorigin href="/assets/coreIcons-BzqW7Qiz.js">
111
+ <link rel="modulepreload" crossorigin href="/assets/coreIcons-DDTChE1H.js">
112
112
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-CiWYd9n-.js">
113
113
  <link rel="modulepreload" crossorigin href="/assets/cachedImport-DW0gP14h.js">
114
114
  <link rel="modulepreload" crossorigin href="/assets/lazyRetry-D50B1UMY.js">
115
115
  <link rel="modulepreload" crossorigin href="/assets/preloadableLazy-MIX1ApBW.js">
116
116
  <link rel="modulepreload" crossorigin href="/assets/theme-7IrMJ70_.js">
117
- <link rel="stylesheet" crossorigin href="/assets/index-D4FIsool.css">
117
+ <link rel="stylesheet" crossorigin href="/assets/index-DrzNHwlO.css">
118
118
  </head>
119
119
  <body>
120
120
  <div id="boot" role="status" aria-busy="true" aria-label="Loading Mavéa">
@@ -1,12 +1,13 @@
1
1
  # Mavéa Disclaimer
2
2
 
3
- Effective: August 11, 2026
3
+ Effective: August 17, 2026
4
4
 
5
5
  Mavéa uses probabilistic AI systems and can be wrong.
6
6
 
7
7
  - AI-generated text, citations, calculations, classifications, transcriptions, translations, and visualizations may be inaccurate, incomplete, misleading, offensive, or outdated.
8
8
  - A citation, confidence label, validation step, or polished visualization does not guarantee that a claim is correct.
9
9
  - Verify important information with authoritative sources and qualified professionals before relying on it.
10
+ - Results depend heavily on the model and provider you choose. Models differ in whether they search the live web at all, whether they can be required to, how reliably they cite what they used, and how current their training data is. A smaller or cheaper model may answer from memory instead of searching, and may not say that it did. Live, tracked, and refreshed values can therefore be stale, incomplete, or wrong, and a shown source does not prove that the figure beside it came from that source or is correct. Even a completed search can surface figures that were already out of date at the source. Scheduled checks may be delayed, skipped, or missed entirely, and alert and notification features are best-effort — a check that does not run, a closed app, or blocked browser notifications means no alert, so never depend on one arriving. Every check runs on the API key you supply, so the refresh cadence you configure is a spending decision with the provider you pay. Do not rely on tracked dashboards or alerts for anything time-critical or consequential.
10
11
  - Mavéa does not provide medical, legal, financial, tax, accounting, safety, engineering, mental-health, or other professional advice. Do not use it for emergencies or as the sole basis for high-impact decisions.
11
12
  - You are responsible for the prompts, files, audio, accounts, credentials, and actions you provide or authorize.
12
13
  - Model, search, speech, hosting, OAuth, media, and connected-action providers are independent third parties. Their terms, privacy practices, availability, and charges apply. All costs are your responsibility.
@@ -1,6 +1,6 @@
1
1
  # Mavéa Privacy Notice
2
2
 
3
- Effective: August 11, 2026
3
+ Effective: August 17, 2026
4
4
 
5
5
  This notice describes the current, unmodified local and self-hosted Mavéa software. It does not describe a future hosted service. Local-first does not mean every feature stays on your device: connected features send data through the deployment to third parties you choose. If a person or organization deploys Mavéa for others, that operator must provide any additional privacy notices and controls required for its deployment.
6
6
 
@@ -20,6 +20,7 @@ Depending on the features you use, browser storage may contain:
20
20
 
21
21
  - conversations, saved canvases, bookmarks, memory items, and session history;
22
22
  - courses, lessons, flashcards, quiz progress, Ripple analyses, and dashboards;
23
+ - the readings a dashboard has fetched over time, kept per tracked item as its own record so a value's history and the sites it came from survive between checks;
23
24
  - preferences such as theme, performance, visual richness, voice, and setup state;
24
25
  - drafts, tracked items, presentation settings, and recent feature state;
25
26
  - provider and model configuration;
@@ -27,9 +28,9 @@ Depending on the features you use, browser storage may contain:
27
28
  - temporary in-progress and finished video-export files in origin-private browser storage until the export is consumed or discarded; and
28
29
  - short-lived demo, tour, route, and in-progress session data.
29
30
 
30
- Saved content is encrypted in browser storage only where the relevant feature and browser support it. Course data, mastery and progress, some Ripple data and analysis caches, preferences, metadata, and fallback content can be stored in ordinary local storage or IndexedDB. Anyone who can use your unlocked device or browser profile, and malicious extensions or same-origin code, may be able to access browser data.
31
+ Saved content is encrypted in browser storage only where the relevant feature and browser support it. Dashboards and the readings they fetch are encrypted with the same device key, the readings in IndexedDB with only their routing details — which tracked item, and when — left readable so they can be looked up. Course data, mastery and progress, some Ripple data and analysis caches, preferences, metadata, and fallback content can be stored in ordinary local storage or IndexedDB. Anyone who can use your unlocked device or browser profile, and malicious extensions or same-origin code, may be able to access browser data.
31
32
 
32
- Because this browser data is encrypted to this specific browser, it does not carry over to a different browser, an incognito window, or another device. You can export a backup file of your dashboards, memory, flashcards, saved canvases, map, and courses, and import it elsewhere to move that data. The backup is plain, unencrypted JSON under your control, so store and share it carefully; it deliberately excludes your provider and search keys. Importing a backup merges into existing data and never deletes it, and importing a file you did not create can add content from that file — import only backups you trust.
33
+ Because this browser data is encrypted to this specific browser, it does not carry over to a different browser, an incognito window, or another device. You can export a backup file of your dashboards, memory, flashcards, saved canvases, map, and courses, and import it elsewhere to move that data. A backup carries a dashboard's definition and its latest values, not its fetched reading history, so moving to another browser starts that history fresh. The backup is plain, unencrypted JSON under your control, so store and share it carefully; it deliberately excludes your provider and search keys. Importing a backup merges into existing data and never deletes it, and importing a file you did not create can add content from that file — import only backups you trust.
33
34
 
34
35
  Browser and operating-system caches may retain application assets and optional voice models. The actions gateway may store connected-service credentials and configuration on the deployment operator's machine.
35
36
 
@@ -88,7 +89,7 @@ The unmodified project does not sell personal information or use it for cross-co
88
89
 
89
90
  ## 8. Retention and deletion
90
91
 
91
- Memory-only values disappear on reload. Session storage generally remains until the tab or browser session ends. Local storage and IndexedDB remain until a feature removes the item, you use an available clear, forget, or reset control, you clear site data, or the browser evicts it. Some session history is capped and expires, but many course, progress, dashboard, memory, and Ripple records have no automatic expiration. Clearing all browser site data is the broadest local deletion control. Removing browser data does not delete copies already sent elsewhere.
92
+ Memory-only values disappear on reload. Session storage generally remains until the tab or browser session ends. Local storage and IndexedDB remain until a feature removes the item, you use an available clear, forget, or reset control, you clear site data, or the browser evicts it. Some session history is capped and expires, but many course, progress, dashboard, memory, and Ripple records have no automatic expiration. A dashboard's fetched reading history is capped per tracked item, and deleting a dashboard deletes its readings and its record of recent checks with it. Clearing all browser site data is the broadest local deletion control. Removing browser data does not delete copies already sent elsewhere.
92
93
 
93
94
  Gateway tokens remain until disconnected or removed by the gateway operator. Server, proxy, infrastructure, and provider retention depends on the relevant operator, logs, backups, account settings, and third-party policy. Contact those parties for deletion of data they control and revoke credentials at the issuing service.
94
95
 
@@ -1,6 +1,6 @@
1
1
  # Mavéa Terms of Use
2
2
 
3
- Effective: August 11, 2026
3
+ Effective: August 17, 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
 
@@ -30,6 +30,8 @@ You are responsible for selecting, configuring, operating, and securing your dev
30
30
 
31
31
  The Service uses probabilistic artificial-intelligence systems. Outputs, citations, calculations, classifications, summaries, transcriptions, translations, confidence labels, and visualizations may be false, fabricated, inaccurate, incomplete, misleading, biased, offensive, unsafe, or outdated. A polished presentation, citation, calculation, validation check, or natural voice does not guarantee accuracy, originality, legality, quality, or fitness for a particular purpose.
32
32
 
33
+ Output quality depends on the model, provider, and settings you select, and those are your choices. Models differ in whether they retrieve live information at all, whether the Service can compel them to, whether they disclose what they used, and how current their training data is; a smaller or cheaper model may answer from memory rather than searching, and may not say so. Features that display tracked, refreshed, or "live" values are therefore best-effort only: a value may be stale, incomplete, absent, or wrong, a check may be delayed, skipped, or silently unsuccessful, a figure obtained from a genuine live search may already be out of date at its source, and a source shown beside a figure does not establish that the figure came from that source or is accurate. Alert and notification features are likewise best-effort; no alert is guaranteed to fire or to be delivered. Scheduled checks run on credentials you supply and can incur third-party charges at whatever cadence you configure. Do not treat any displayed value as real-time, authoritative, monitored, or verified, and do not rely on tracking or alerts as your means of watching anything consequential.
34
+
33
35
  You must independently review and verify important output against qualified professionals and original sources before relying on, publishing, sharing, or acting on it. The Service is not a substitute for qualified professional judgment and does not provide medical, legal, financial, tax, accounting, safety, engineering, mental-health, or other professional advice. Do not use it for emergencies or as the sole basis for decisions that may affect a person's rights, health, safety, finances, employment, education, housing, insurance, or access to essential services. You remain responsible for deciding whether and how to use every output.
34
36
 
35
37
  ## 5. Third-party services, credentials, and costs
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mavea/mavea",
3
- "version": "1.1.0",
3
+ "version": "1.2.1",
4
4
  "type": "module",
5
5
  "description": "Mavéa — an AI Presence interface. Talk to AI. See what it means.",
6
6
  "keywords": [
@@ -111,6 +111,8 @@
111
111
  "audit:browsers": "node --import tsx scripts/browser-matrix.mts",
112
112
  "audit:interactions": "node --import tsx scripts/interaction-matrix.mts",
113
113
  "perf:world": "node --import tsx scripts/world-perf.mts",
114
+ "audit:world": "node --import tsx scripts/world-audit.mts",
115
+ "world:smoke": "node --import tsx scripts/world-perf.mts --viewport=1280x720 --throttle=4",
114
116
  "perf": "node --import tsx scripts/perf-probe.mts",
115
117
  "perf:memory": "node --import tsx scripts/memory-probe.mts",
116
118
  "audit:tap": "node --import tsx scripts/tap-audit.mts",
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-CPImC7mO.js","assets/rolldown-runtime-DkW27tQK.js","assets/react-BZJXY1be.js","assets/jsx-runtime-DeHZSEgm.js","assets/icons-gLFQTv74.js","assets/richText-BkxJhl9N.js","assets/format-q0LwBjID.js","assets/scale-Bcgfo6Hp.js","assets/BlockEmpty-B82uCse8.js","assets/compiler-runtime-qQQXpJgv.js","assets/empty-BO1NC9qY.js","assets/registry-types-D3q_LrlV.js","assets/registry-B1KQ1VPZ.css","assets/registry-B0GIHERt.js","assets/motion-DxHSlPN6.js","assets/fitText-DQ2omSN0.js","assets/spreadLabels-CQ8hufvK.js","assets/registry-CuVk7MAI.css","assets/registry-WHd1PwU3.js","assets/registry-DpMI23iE.css","assets/registry-Xl8mAnKq.js","assets/lib-B7OE1ZQQ.js","assets/lib-DMAxsZKm.css","assets/annotations-CftUUB13.js","assets/registry-Dru0JcTa.css","assets/registry-Ci65uThi.js","assets/useSpotlightWalk-DxlxBezO.js","assets/motion-BY_Egaxm.js","assets/registry-BAoRB8rd.css","assets/registry-C28gYnVq.js","assets/sourceHost-BV3t2XDb.js","assets/registry-CRisz4Ca.css","assets/registry-CcOO8UZr.js","assets/registry-2GJZ46M8.css","assets/registry-w4R6c89s.js","assets/preload-helper-CiWYd9n-.js","assets/safeImageUrl-BINWXOTz.js","assets/useValidatedImage-BQi2c66o.js","assets/useTimeout-Cm4yzted.js","assets/safeCssColor-di93BXgG.js","assets/registry-4mMEt1Xy.css","assets/registry-9QjeHgKs.js","assets/registry-DScSjt8p.css","assets/registry-Daypk4uR.js","assets/registry-GeSy4i7R.css","assets/registry-ChQGee7C.js","assets/useFocusTrap-DBtkeyRy.js","assets/portal-BJzn-Tgn.js","assets/index-CfcUMOBf.js","assets/useInView-CXTOAEV3.js","assets/coreIcons-BzqW7Qiz.js","assets/preloadableLazy-MIX1ApBW.js","assets/cachedImport-DW0gP14h.js","assets/lazyRetry-D50B1UMY.js","assets/theme-7IrMJ70_.js","assets/index-D4FIsool.css","assets/registry-Dye5m3qt.css","assets/registry-D_4_HlMg.js","assets/registry-T3i2Q9SI.css","assets/registry-BSX3aFUw.js","assets/registry-C3ezxLR3.css","assets/registry-DO4hGO5e.js","assets/registry-CRM7y8QT.css","assets/registry-7poQfBaM.js","assets/CodeOutput-DF892aIR.js","assets/registry-ZOWzhOHk.css","assets/registry-D4Xdd7dO.js","assets/MindShape-CBcCC7hP.js","assets/useSpatialCanvas-CfmZOXXP.js","assets/Presence-CKSoyuhE.js","assets/geometry-DXAbnb0J.js","assets/MindShape-CaPeUo-a.css","assets/openWorld-BHTJM39n.js","assets/display-BrieMea1.js","assets/types-C42I77wh.js","assets/registry-BZuT2Epw.css","assets/registry-BM9FDQxO.js","assets/quizResult-DB8yeqDr.js","assets/stepDriver-DwjFet6U.js","assets/kokoro-CdL8Kl48.js","assets/spokenText-C88IQJ0M.js","assets/registry-B5S3brjM.css","assets/registry-Vp8VuMV0.js","assets/registry-twSIyxJQ.css","assets/registry-Bv1f5UU4.js","assets/registry-CvylL2BN.css","assets/registry-BRbEINOV.js","assets/registry-tkd3UhWn.css","assets/registry-D8O0apUT.js","assets/registry-BzNLfje1.css","assets/registry-BFbfXK-W.js","assets/registry-UFIuwh3i.css","assets/registry-CPiwQhAm.js","assets/registry-CNgybLQv.css"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./compiler-runtime-qQQXpJgv.js";import{t}from"./jsx-runtime-DeHZSEgm.js";import{n,t as r}from"./preload-helper-CiWYd9n-.js";import{t as i}from"./lazyRetry-D50B1UMY.js";import{n as a}from"./icons-gLFQTv74.js";var o={treemap:`charts1`,sunburst:`charts1`,sankey:`charts1`,network:`charts1`,radar:`charts1`,waterfall:`charts1`,funnel:`charts1`,histogram:`charts1`,boxplot:`charts1`,streamgraph:`charts1`,venn:`charts1`,piedonut:`charts1`,distributioncurve:`charts1`,quadrant:`charts1`,latencydist:`charts1`,captable:`charts1`,lifewheel:`charts1`,violinplot:`charts1`,stemleafplot:`charts1`,tamsam:`charts1`,correlationheatmap:`charts1`,bcgmatrix:`charts1`,flowchord:`charts1`,slopegraph:`charts2`,plot:`charts2`,calheat:`charts2`,bump:`charts2`,marimekko:`charts2`,dumbbell:`charts2`,lollipop:`charts2`,bulletchart:`charts2`,candlestick:`charts2`,gantt:`charts2`,bubble:`charts2`,arearange:`charts2`,waffle:`charts2`,groupedbars:`charts2`,dualaxis:`charts2`,scatterregression:`charts2`,dotplot:`charts2`,controlchart:`charts2`,bridge:`charts2`,areaplot:`charts2`,supplydemand:`charts2`,breakeven:`charts2`,bigo:`charts2`,errorbars:`charts2`,eratimeline:`charts2`,indifferencecurve:`charts2`,payoffdiagram:`charts2`,phasediagram:`charts2`,loaddiagram:`charts2`,ecgstrip:`charts2`,vitalstrip:`charts2`,growthcurve:`charts2`,sleepcycle:`charts2`,seasonband:`charts2`,burnrunway:`charts2`,qqplot:`charts2`,samplingdistribution:`charts2`,hrdiagram:`charts2`,ternaryplot:`charts2`,parliamentseats:`charts2`,surfaceplot:`charts2`,roccurve:`charts2`,gradientdescent:`charts2`,biasvariance:`charts2`,timeseriesdecomposition:`charts2`,precisionrecallcurve:`charts2`,chromatogram:`charts2`,stressstraincurve:`charts2`,gatingplot:`charts2`,gellane:`charts2`,flightchart:`charts2`,paybandchart:`charts2`,linebalance:`charts2`,epicurve:`charts2`,pareto:`charts2`,populationpyramid:`charts2`,parallelcoordinates:`charts2`,scatterplotmatrix:`charts2`,pictogramchart:`charts2`,stackedbars:`charts2`,sparkstat:`stats`,counter:`stats`,herostat:`stats`,trendtile:`stats`,scorebadge:`stats`,percentilebar:`stats`,statpair:`stats`,scorecard:`stats`,deltacascade:`stats`,bulletkpi:`stats`,confusionmatrix:`stats`,kpidashboard:`stats`,abtestresult:`stats`,powersample:`stats`,inventoryreorder:`stats`,boardgamescore:`stats`,cvssscorecard:`stats`,ridgeplot:`stats`,ecdf:`stats`,forestplot:`stats`,matrix:`tables`,datatable:`tables`,pivot:`tables`,leaderboard:`tables`,treetable:`tables`,swimlane:`tables`,footnotetable:`tables`,sparktable:`tables`,smallmultiples:`tables`,comparebars:`tables`,comparematrix:`tables`,matrixgrid:`tables`,sensitivitytable:`tables`,labpanel:`tables`,ingredientmatrix:`tables`,conjugation:`tables`,clearancematrix:`tables`,financialstatement:`tables`,cohortgrid:`tables`,riskmatrix:`tables`,careplan:`tables`,doseladder:`tables`,sizechart:`tables`,pricingtable:`tables`,raci:`tables`,rubric:`tables`,interviewscorecard:`tables`,gradebook:`tables`,datadictionary:`tables`,ablationtable:`tables`,spectrumtable:`tables`,fmeatable:`tables`,billofmaterials:`tables`,complexitysummary:`tables`,expressionheatmap:`tables`,discoverytracker:`tables`,dentaltreatmentplan:`tables`,rollcall:`tables`,collectiontracker:`tables`,cma:`tables`,taxreturnsummary:`tables`,depreciationschedule:`tables`,vendortracker:`tables`,sponsorshiptracker:`tables`,caseload:`tables`,kanban:`flows`,wizard:`flows`,decisiontree:`flows`,goaltree:`flows`,plandag:`flows`,milestones:`flows`,processflow:`flows`,journeymap:`flows`,orgchart:`flows`,roadmap:`flows`,chronologicaltimeline:`flows`,trustmap:`flows`,skilltree:`flows`,businesscanvas:`flows`,headcountplan:`flows`,issuetree:`flows`,logicmodel:`flows`,contentcalendar:`flows`,hypothesiscard:`docs`,docview:`docs`,pdfreader:`docs`,annotateddoc:`docs`,redline:`docs`,citationchain:`docs`,factcheck:`docs`,confidencemeter:`docs`,highlightsnippet:`docs`,annotcallouts:`docs`,sourcelist:`docs`,claimgrid:`docs`,docoutline:`docs`,diffviewer:`docs`,paralleltext:`docs`,clinicaltimeline:`docs`,researchsummary:`docs`,eligibilitycheck:`docs`,evidencetrace:`docs`,reviewsynth:`docs`,resume:`docs`,changelog:`docs`,lessonplan:`docs`,casebrief:`docs`,patentclaimchart:`docs`,storystructure:`docs`,vetpatientchart:`docs`,scoutingreport:`docs`,reasoning:`ai`,toolcalls:`ai`,agenttrace:`ai`,modelcompare:`ai`,tokenstream:`ai`,retrieval:`ai`,whatchanged:`ai`,routing:`ai`,embedmap:`ai`,calibration:`ai`,httpexchange:`ai`,trainingcurve:`ai`,gameboard:`media`,patternpiece:`media`,photo:`media`,diagram:`media`,wireframe:`media`,anatomyfigure:`media`,exposuretriangle:`media`,colorwheel:`media`,artanalysis:`media`,mixerboard:`media`,beforeafter:`media`,carousel:`media`,imagecallouts:`media`,waveform:`media`,videoembed:`media`,geomap:`media`,lightbox:`media`,moodboard:`media`,palette:`media`,svgblock:`media`,sportspitch:`media`,floorplan:`media`,mediacard:`media`,dimensiondrawing:`media`,explodedview:`media`,weldsymbol:`media`,cutlist:`media`,spacefit:`media`,maproute:`media`,moonphase:`media`,skychart:`media`,orbitdiagram:`media`,emotionwheel:`media`,creativetest:`media`,brandguide:`media`,siteplan:`media`,zoningmap:`media`,wordsearch:`media`,playingcards:`media`,stitchchart:`media`,pianoroll:`media`,callout:`layout`,verdictcard:`layout`,scenarioset:`layout`,accordion:`layout`,proscons:`layout`,takeaways:`layout`,faq:`layout`,tabs:`layout`,divider:`layout`,pullquote:`layout`,storystrip:`layout`,casestudy:`layout`,deflist:`layout`,worthit:`layout`,companionnote:`layout`,positioncard:`layout`,differential:`layout`,reframecard:`layout`,breathpacer:`layout`,copingmenu:`layout`,subtextdecode:`layout`,rehearsal:`layout`,messagescriptset:`layout`,talktrack:`layout`,lifeline:`layout`,scansionmark:`layout`,typespec:`layout`,shotlist:`layout`,beatsheet:`layout`,promptset:`layout`,zoneladder:`layout`,picturesequence:`layout`,storyarc:`layout`,devicemark:`layout`,thoughtrecord:`layout`,dosdonts:`layout`,variantswitch:`layout`,progressbar:`status`,stepindicator:`status`,statustimeline:`status`,healthgrid:`status`,emptystate:`status`,skeleton:`status`,sliderinput:`status`,segmented:`status`,rangefilter:`status`,ratinginput:`status`,a11yaudit:`status`,painscale:`status`,habittracker:`status`,streakgrid:`status`,litigationtimeline:`status`,billtracker:`status`,triageboard:`status`,mentalhealthscreen:`status`,usabilityfindings:`status`,roomblockdashboard:`status`,immigrationcase:`status`,modal:`overlays`,confirmdialog:`overlays`,drawer:`overlays`,sheet:`overlays`,popover:`overlays`,hovercard:`overlays`,tooltip:`overlays`,menu:`overlays`,contextmenu:`overlays`,commandk:`overlays`,blanks:`forms`,buttonbar:`forms`,textfield:`forms`,textarea:`forms`,select:`forms`,combobox:`forms`,checkboxgroup:`forms`,radiogroup:`forms`,switchset:`forms`,togglegroup:`forms`,otp:`forms`,actionchecklist:`forms`,preflightchecklist:`forms`,estateplanchecklist:`forms`,visachecklist:`forms`,datepicker:`pickers`,calendarpick:`pickers`,daterange:`pickers`,timepicker:`pickers`,colorpicker:`pickers`,fileupload:`pickers`,tagsinput:`pickers`,numberstepper:`pickers`,searchselect:`pickers`,formpanel:`pickers`,navbar:`nav`,sidenav:`nav`,breadcrumb:`nav`,pagination:`nav`,menubar:`nav`,megamenu:`nav`,toolbar:`nav`,commandbar:`nav`,treeview:`nav`,bottomnav:`nav`,avatar:`display`,avatargroup:`display`,badgeset:`display`,chipset:`display`,kbd:`display`,codeblock:`display`,banner:`display`,toaststack:`display`,spinner:`display`,notification:`display`,algorithmtrace:`diagrams`,argumentmap:`diagrams`,binarytree:`diagrams`,castmap:`diagrams`,causationchain:`diagrams`,circuitdiagram:`diagrams`,controlblockdiagram:`diagrams`,cyclewheel:`diagrams`,datapipeline:`diagrams`,datastructure:`diagrams`,diagramflow:`diagrams`,dptable:`diagrams`,erdiagram:`diagrams`,fiveforces:`diagrams`,fivewhychain:`diagrams`,foodweb:`diagrams`,graphtrace:`diagrams`,hashtable:`diagrams`,logicgates:`diagrams`,mindshape:`diagrams`,nnarchitecture:`diagrams`,pipingschematic:`diagrams`,plasmidmap:`diagrams`,primefactortree:`diagrams`,probabilitytree:`diagrams`,protocolstack:`diagrams`,recursiontree:`diagrams`,sequencediagram:`diagrams`,sortingviz:`diagrams`,gridtrace:`diagrams`,statemachine:`diagrams`,synthesisroute:`diagrams`,sysarchdiagram:`diagrams`,threatmodel:`diagrams`,toulmin:`diagrams`,tournamentbracket:`diagrams`,prooftree:`diagrams`,fishbone:`diagrams`,classdiagram:`diagrams`,trie:`diagrams`,wiringdiagram:`diagrams`,world:`diagrams`,analogymap:`diagrams`,equationblock:`learn`,numberline:`learn`,workedexample:`learn`,quiz:`learn`,flashcard:`learn`,molecularstructure:`learn`,periodictable:`learn`,bodymap:`learn`,geometrycanvas:`learn`,freebodydiagram:`learn`,musicstaff:`learn`,vectorspace:`learn`,reactionmechanism:`learn`,chorddiagram:`learn`,developmentmilestone:`learn`,teachdiagram:`learn`,gridmatrix:`learn`,fractionbar:`learn`,wave:`learn`,energydiagram:`learn`,phylotree:`learn`,parsetree:`learn`,celldiagram:`learn`,raydiagram:`learn`,vectorfield:`learn`,pedigree:`learn`,bohrmodel:`learn`,equationbalancer:`learn`,yieldcalc:`learn`,vseprmolecule:`learn`,unitcircle:`learn`,solidfigure:`learn`,crosssection:`learn`,pianokeys:`learn`,fretboardmap:`learn`,circleoffifths:`learn`,odontogram:`learn`,clockface:`learn`,moneytray:`learn`,placevaluechart:`learn`,shapecard:`learn`,letterform:`learn`,toolscale:`learn`,craftchart:`learn`,dnahelix:`learn`,linespectrum:`learn`,pyramidtiers:`learn`,twocolumnproof:`learn`,gridtransform:`learn`,areamodel:`learn`,polarplot:`learn`,taylorseries:`learn`,phaseportrait:`learn`,sightwordlist:`learn`,alphabetchart:`learn`,columnarithmetic:`learn`,titrationcurve:`learn`,interferencepattern:`learn`,orbitaldiagram:`learn`,pictograph:`learn`,particlemodel:`learn`,morphemebreakdown:`learn`,practicelog:`learn`,taxonrank:`learn`,numbersequence:`learn`,constantcard:`learn`,elementcard:`learn`,energybarchart:`learn`,guitartab:`learn`,karyotype:`learn`,frayermodel:`learn`,numberbond:`learn`,quizsession:`learn`,messagedraft:`compose`,chatthread:`compose`,dialogue:`compose`,variants:`compose`,verse:`compose`,slidedeck:`compose`,voicestyle:`compose`,screenplay:`compose`,socialpost:`compose`,longread:`compose`,ideaboard:`compose`,forecast:`everyday`,weathernow:`everyday`,tierlist:`everyday`,paystub:`everyday`,taxbracket:`everyday`,menucard:`everyday`,familytree:`everyday`,seatingchart:`everyday`,relationshipmap:`everyday`,meetingnotes:`everyday`,stickerchart:`everyday`,statblock:`everyday`,agenda:`everyday`,picks:`everyday`,timezones:`everyday`,transitroute:`everyday`,amortization:`everyday`,receipt:`everyday`,settleup:`everyday`,bracketbar:`everyday`,recipecard:`everyday`,workoutplan:`everyday`,medicationschedule:`everyday`,macrobreakdown:`everyday`,plangrid:`everyday`,budgetallocator:`everyday`,howtosteps:`everyday`,livecompute:`everyday`,countdown:`everyday`,livescore:`everyday`,allocatepeople:`everyday`,nutritionlabel:`everyday`,unitconvert:`everyday`,packlist:`everyday`,pregnancyweek:`everyday`,cycletrack:`everyday`,contractiontimer:`everyday`,prayertimes:`everyday`,labprotocol:`everyday`,caregivercoord:`everyday`,readinglist:`everyday`,cocktailcard:`everyday`,runninglog:`everyday`,userpersona:`everyday`,runofshow:`everyday`,podcastplanner:`everyday`,vaxschedule:`everyday`,claimagecompare:`everyday`,factsheet:`reference`,newsdigest:`reference`,dictionary:`reference`,translation:`reference`,pronunciation:`reference`,gloss:`reference`,scalefelt:`reference`,hearit:`reference`,ipachart:`reference`,scriptstroke:`reference`,phonicsword:`reference`,speciescard:`reference`,etymtree:`reference`,hazardcard:`reference`,termbase:`reference`,sizecompare:`reference`,baseconversion:`reference`,historicalperson:`reference`,onthisday:`reference`,countrycard:`reference`,worldgrid:`reference`,warconflict:`reference`,posbreakdown:`reference`,distinctioncard:`reference`,stacktrace:`code`,syntaxbreakdown:`code`,codewalk:`code`,componentapi:`code`,terminal:`code`,logstream:`code`,gitgraph:`code`,queryplan:`code`,flamegraph:`code`,regexscope:`code`,sequencealign:`code`,thesis:`dashboard`,alignmentgauge:`dashboard`,standingalerts:`dashboard`,sourceslineage:`dashboard`,vestingschedule:`finance`,termsheet:`finance`,fundraisingrounds:`finance`,saferterms:`finance`,dilutionwaterfall:`finance`,threestatementlink:`finance`,yieldcurve:`finance`,efficientfrontier:`finance`,bondladder:`finance`,cashflowtimeline:`finance`};n();var s={charts1:i(()=>r(()=>import(`./registry-CPImC7mO.js`).then(e=>e.n).then(e=>e.charts1Registry),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]))),charts2:i(()=>r(()=>import(`./registry-B0GIHERt.js`).then(e=>e.n).then(e=>e.charts2Registry),__vite__mapDeps([13,1,2,9,3,4,5,6,7,8,10,14,11,15,16,17]))),stats:i(()=>r(()=>import(`./registry-WHd1PwU3.js`).then(e=>e.t).then(e=>e.statsRegistry),__vite__mapDeps([18,1,2,9,3,4,5,6,7,14,11,15,19]))),tables:i(()=>r(()=>import(`./registry-Xl8mAnKq.js`).then(e=>e.t).then(e=>e.tablesRegistry),__vite__mapDeps([20,1,2,9,3,4,5,6,7,8,21,14,22,11,23,24]))),flows:i(()=>r(()=>import(`./registry-Ci65uThi.js`).then(e=>e.n).then(e=>e.flowsRegistry),__vite__mapDeps([25,1,2,3,4,5,6,11,26,27,28]))),docs:i(()=>r(()=>import(`./registry-C28gYnVq.js`).then(e=>e.n).then(e=>e.docsRegistry),__vite__mapDeps([29,1,2,9,3,4,5,8,21,14,22,11,30,31]))),ai:i(()=>r(()=>import(`./registry-CcOO8UZr.js`).then(e=>e.n).then(e=>e.aiRegistry),__vite__mapDeps([32,1,2,9,3,4,5,6,7,21,8,14,22,11,33]))),media:i(()=>r(()=>import(`./registry-w4R6c89s.js`).then(e=>e.n).then(e=>e.mediaRegistry),__vite__mapDeps([34,1,2,9,3,35,4,5,6,36,37,7,8,21,14,22,11,15,38,39,40]))),layout:i(()=>r(()=>import(`./registry-9QjeHgKs.js`).then(e=>e.n).then(e=>e.layoutRegistry),__vite__mapDeps([41,1,2,3,4,5,7,21,8,9,14,22,11,30,42]))),status:i(()=>r(()=>import(`./registry-Daypk4uR.js`).then(e=>e.t).then(e=>e.statusRegistry),__vite__mapDeps([43,1,2,9,3,4,5,11,26,27,44]))),overlays:i(()=>r(()=>import(`./registry-ChQGee7C.js`).then(e=>e.n).then(e=>e.overlaysRegistry),__vite__mapDeps([45,1,2,3,4,46,5,11,47,48,9,49,50,35,51,52,53,54,55,56]))),forms:i(()=>r(()=>import(`./registry-D_4_HlMg.js`).then(e=>e.n).then(e=>e.formsRegistry),__vite__mapDeps([57,1,2,3,48,9,49,50,35,51,52,53,54,55,4,5,21,8,14,22,11,38,58]))),pickers:i(()=>r(()=>import(`./registry-BSX3aFUw.js`).then(e=>e.n).then(e=>e.pickersRegistry),__vite__mapDeps([59,1,2,3,4,5,11,60]))),nav:i(()=>r(()=>import(`./registry-DO4hGO5e.js`).then(e=>e.n).then(e=>e.navRegistry),__vite__mapDeps([61,1,2,3,4,5,11,62]))),display:i(()=>r(()=>import(`./registry-7poQfBaM.js`).then(e=>e.n).then(e=>e.displayRegistry),__vite__mapDeps([63,1,2,3,35,4,5,36,11,64,9,38,65]))),diagrams:i(()=>r(()=>import(`./registry-D4Xdd7dO.js`).then(e=>e.n).then(e=>e.diagramsRegistry),__vite__mapDeps([66,1,2,9,3,4,5,7,8,21,14,22,11,15,67,68,69,50,70,71,72,73,74,75]))),learn:i(()=>r(()=>import(`./registry-BM9FDQxO.js`).then(e=>e.n).then(e=>e.learnRegistry),__vite__mapDeps([76,1,2,9,3,35,52,4,27,5,6,7,8,21,14,22,11,15,16,77,78,79,48,49,50,51,53,54,55,80,81]))),compose:i(()=>r(()=>import(`./registry-Vp8VuMV0.js`).then(e=>e.n).then(e=>e.composeRegistry),__vite__mapDeps([82,1,9,2,3,4,5,8,21,14,22,11,83]))),everyday:i(()=>r(()=>import(`./registry-Bv1f5UU4.js`).then(e=>e.n).then(e=>e.everydayRegistry),__vite__mapDeps([84,1,2,9,3,4,5,6,7,21,8,14,22,11,85]))),reference:i(()=>r(()=>import(`./registry-BRbEINOV.js`).then(e=>e.n).then(e=>e.referenceRegistry),__vite__mapDeps([86,1,2,9,3,4,5,36,21,8,14,22,11,79,48,49,50,35,51,52,53,54,55,80,39,87]))),code:i(()=>r(()=>import(`./registry-D8O0apUT.js`).then(e=>e.n).then(e=>e.codeRegistry),__vite__mapDeps([88,1,2,9,3,4,5,21,8,14,22,11,64,38,89]))),dashboard:i(()=>r(()=>import(`./registry-BFbfXK-W.js`).then(e=>e.n).then(e=>e.dashboardRegistry),__vite__mapDeps([90,1,2,9,3,4,21,8,14,22,11,91]))),finance:i(()=>r(()=>import(`./registry-CPiwQhAm.js`).then(e=>e.n).then(e=>e.financeRegistry),__vite__mapDeps([92,1,2,3,4,5,6,7,8,9,21,14,22,11,15,93])))},c=new Map,l=new Map,u=new Set,d=2;function f(e,t,n){for(let r of e){let e=o[r.type];if(e&&t.add(e),n>=d)continue;let i=r.props?.regions;if(Array.isArray(i)){let e=i.map(e=>e&&typeof e==`object`?e.block:null).filter(e=>!!e&&typeof e.type==`string`);e.length&&f(e,t,n+1)}}}function p(e){let t=new Set;return f(e,t,0),t}function m(e){for(let t of e)if(!c.has(t)&&!u.has(t))return!1;return!0}function h(e){let t=[];for(let n of e){if(c.has(n)||u.has(n))continue;let e=l.get(n);e||(e=s[n]().then(e=>{c.set(n,e)}).catch(()=>{u.add(n)}).finally(()=>{l.delete(n)}),l.set(n,e)),t.push(e)}return t.length?Promise.all(t).then(()=>void 0):Promise.resolve()}function g(e){h(p(e))}function _(e){let t=o[e];return t?c.get(t)?.[e]??null:null}function v(e){let t=(e?.blocks??[]).filter(e=>!!e.id);return t.length>=4&&new Set(t.map(e=>e.type)).size>=3}var y=e(),b=t();function x({file:e,loc:t,color:n=`var(--presence-soft)`,onClick:r}){return(0,b.jsxs)(`button`,{className:`source-chip`,onClick:r,style:{color:n},children:[(0,b.jsx)(a.doc,{style:{width:12,height:12}}),(0,b.jsx)(`span`,{children:e}),t&&(0,b.jsxs)(`span`,{className:`mono`,children:[`· `,t]})]})}var S={strong:`Strong evidence`,partial:`Partial evidence`,inferred:`Inferred`,unverified:`Unverified`},C=`Best estimate from the model's knowledge — not verified`;function w({level:e=`strong`,title:t=`How sure Mavéa is, based on your files`}){return(0,b.jsxs)(`span`,{className:`conf `+e,title:t,children:[(0,b.jsxs)(`span`,{className:`bars`,children:[(0,b.jsx)(`i`,{style:{height:5}}),(0,b.jsx)(`i`,{style:{height:8}}),(0,b.jsx)(`i`,{style:{height:11}})]}),S[e]]})}function T(e){let t=(0,y.c)(8),{name:n,color:r,verb:i}=e,a;t[0]===r?a=t[1]:(a=(0,b.jsx)(`span`,{className:`fdot`,style:{background:r}}),t[0]=r,t[1]=a);let o;t[2]===i?o=t[3]:(o=i&&(0,b.jsx)(`span`,{className:`using`,children:i}),t[2]=i,t[3]=o);let s;return t[4]!==n||t[5]!==a||t[6]!==o?(s=(0,b.jsxs)(`span`,{className:`context-pill`,children:[a,o,` `,n]}),t[4]=n,t[5]=a,t[6]=o,t[7]=s):s=t[7],s}var E=8,D=[[86,62],[74,91,55],[68,80],[90,58,76]];function O(e){let t=(0,y.c)(7),{blocks:n,budget:r}=e,i;if(t[0]!==n||t[1]!==r){let e;t[3]===r?e=t[4]:(e=(e,t)=>{let n=Math.min(12,Math.max(1,e.col??6));return(0,b.jsx)(`div`,{className:`col-`+(r!=null&&r<9?12:n),"aria-hidden":`true`,children:(0,b.jsxs)(`div`,{className:`card skel-card skel-fade`,children:[(0,b.jsx)(`span`,{className:`skel-eyebrow`}),D[t%D.length].map(k)]})},t)},t[3]=r,t[4]=e),i=n.slice(0,E).map(e),t[0]=n,t[1]=r,t[2]=i}else i=t[2];let a;return t[5]===i?a=t[6]:(a=(0,b.jsx)(b.Fragment,{children:i}),t[5]=i,t[6]=a),a}function k(e,t){return(0,b.jsx)(`span`,{className:`skel-line`,style:{width:`${e}%`}},t)}export{x as a,p as c,g as d,T as i,m as l,C as n,v as o,w as r,_ as s,O as t,h as u};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/TopicCanvas-DkzJORfl.js","assets/rolldown-runtime-DkW27tQK.js","assets/react-BZJXY1be.js","assets/compiler-runtime-qQQXpJgv.js","assets/jsx-runtime-DeHZSEgm.js","assets/preload-helper-CiWYd9n-.js","assets/index-CfcUMOBf.js","assets/useInView-CXTOAEV3.js","assets/coreIcons-BzqW7Qiz.js","assets/preloadableLazy-MIX1ApBW.js","assets/cachedImport-DW0gP14h.js","assets/lazyRetry-D50B1UMY.js","assets/theme-7IrMJ70_.js","assets/index-D4FIsool.css","assets/icons-gLFQTv74.js","assets/CanvasSkeleton-CcHXJqdq.js","assets/CanvasSkeleton-iy6DBvde.css","assets/FallbackCard-ap_4wOfj.js","assets/blockLabel-FogyzEQY.js","assets/FallbackCard-D_6ps1xA.css","assets/useFocusTrap-DBtkeyRy.js","assets/motion-BY_Egaxm.js","assets/useSpatialCanvas-CfmZOXXP.js","assets/richText-BkxJhl9N.js","assets/toast-BBNs2h3L.js","assets/format-q0LwBjID.js","assets/safeImageUrl-BINWXOTz.js","assets/useValidatedImage-BQi2c66o.js","assets/layout-CEoNLr-w.js","assets/catalog-BHjl-1uH.js","assets/http-Lar_UMKb.js","assets/lib-B7OE1ZQQ.js","assets/BlockEmpty-B82uCse8.js","assets/motion-DxHSlPN6.js","assets/lib-DMAxsZKm.css","assets/TopicCanvas-uRuHi99s.css","assets/generateLive-_x2tWkBH.js","assets/history-D2EH2X6D.js","assets/catalog-Db9GWM6N.js","assets/facts-BUGuVUIc.js","assets/blockTypes-DUDdP3pB.js","assets/streamParse-B-Gjwa9T.js","assets/liveSchema-B4bQtO88.js","assets/spokenText-C88IQJ0M.js","assets/sourceHost-BV3t2XDb.js","assets/annotations-CftUUB13.js","assets/screen-DFWKge3-.js","assets/attachments-BW-vki-E.js","assets/providers-B2OCzEo1.js","assets/info-CiqHR5cs.js","assets/shapes-C5fjibEc.js","assets/speed-K5_Ebj-8.js","assets/cache-CvbSI-pr.js","assets/number-Bmf7DqLj.js","assets/validate-CnG23_8J.js","assets/types-C42I77wh.js","assets/json-B0N3XRZU.js","assets/verbatim-DBTj9sPD.js","assets/receipts-ClyzFFGD.js","assets/citation-BsSvaaer.js","assets/officeDoc-GU6Cssjf.js","assets/csv-DAqzYXUs.js","assets/search-ZN7v_P5B.js","assets/store-BWLbFXiY.js","assets/contentVault-xfUwSJ3i.js","assets/keyVault-Aw5Y2PjT.js","assets/ready-DZY1bETr.js","assets/now-C9-UAzTC.js","assets/useLiveConfig-DWz7BRdk.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{t as a}from"./preloadableLazy-MIX1ApBW.js";import{n as o,t as s}from"./theme-7IrMJ70_.js";import{k as c}from"./index-CfcUMOBf.js";import{n as l}from"./icons-gLFQTv74.js";import{t as u}from"./FeatureUseNotice-CwHstxBh.js";import{n as d}from"./history-D2EH2X6D.js";import{_ as f,a as p,g as m,l as h,o as g,p as _,r as v,s as y}from"./store-BfHRbVKz.js";import{r as b}from"./courseSeed-CZdNBTTs.js";import{i as x,n as S,r as C}from"./mastery-CUfDeuqO.js";/* empty css */import{CourseRail as w}from"./CourseRail-C8MJG-zf.js";var T=t(),E=e(),D=n();r();var O=a(()=>i(()=>import(`./TopicCanvas-DkzJORfl.js`).then(e=>e.n).then(e=>({default:e.TopicCanvas})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]))),k=O.Component,A=9e4;function j(){return(0,E.useSyncExternalStore)(f,y,y)}function M(){let e=b();if(e)return{courseId:e.courseId,lessonIdx:e.lessonIdx};try{let e=new URLSearchParams(window.location.hash.split(`?`)[1]??``),t=e.get(`c`)?.trim();if(!t)return null;let n=Number(e.get(`l`));return{courseId:t,lessonIdx:Number.isFinite(n)&&n>=0?Math.round(n):0}}catch{return null}}function N(e,t){try{let n=`#/course?c=${encodeURIComponent(e)}&l=${t}`;window.location.hash!==n&&window.history.replaceState(null,``,n)}catch{}}function P(e,t){let n=Date.now();return{id:d(n),question:t,narration:e.narration,...e.spoken?{spoken:e.spoken}:{},mode:`replace`,tour:(e.tour??[]).map(e=>({index:e.index,...e.say?{say:e.say}:{},...e.saySpoken?{saySpoken:e.saySpoken}:{},...e.mark?{mark:e.mark}:{},...e.marks?{marks:e.marks}:{}})),spec:e.spec,at:n}}function F(){"use no memo";(0,E.useEffect)(()=>s(o()),[]),j(),(0,E.useEffect)(()=>S(),[]);let e=(0,E.useRef)(M()),t=e.current?.courseId,n=t?g(t):void 0,[r,a]=(0,E.useState)(()=>{let t=e.current?.lessonIdx??0;return n?Math.min(Math.max(0,t),n.lessons.length-1):Math.max(0,t)}),[d,f]=(0,E.useState)(`loading`),[y,b]=(0,E.useState)(null),[T,F]=(0,E.useState)(``),[L,R]=(0,E.useState)(null),[V,H]=(0,E.useState)(!1),[U,W]=(0,E.useState)(null),G=(0,E.useRef)(null),K=(0,E.useCallback)(e=>{let n=t?g(t):void 0,r=n?.lessons[e];if(!n||!r)return;G.current?.ctrl.abort(),m(n.id,e),N(n.id,e);let a=`Lesson ${e+1}: ${r.title}`,o=p(n.id,r.id);if(O.preload().catch(()=>{}),o){G.current=null,b(o.spec),F(o.narration),R(null),H(!1),W(null),f(`ready`);return}b(null),F(``),R(null),H(!1),f(`loading`),W(null);let s={ctrl:new AbortController,timedOut:!1};G.current=s;let c=setTimeout(()=>{s.timedOut=!0,s.ctrl.abort()},A);(async()=>{try{let[t,o,c]=await Promise.all([i(()=>import(`./generateLive-_x2tWkBH.js`),__vite__mapDeps([36,18,28,29,37,38,5,1,39,40,41,42,14,4,43,26,44,45,46,47,48,30,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67])),i(()=>import(`./useLiveConfig-DWz7BRdk.js`).then(e=>e.d),__vite__mapDeps([68,1,2,3,49,65,48,30,40,47])),i(()=>import(`./streamParse-B-Gjwa9T.js`).then(e=>e.c),__vite__mapDeps([41,1]))]),l=x(n,e,h(n.id),C(n.topic)),u=o.toModelConfig(o.getLiveConfigV2()),d=``,p=``,m=()=>G.current===s&&!s.ctrl.signal.aborted,g=await t.generateLive(`Teach this lesson: "${r.title}" — ${r.goal}`,[],u,e=>{if(!m())return;d+=e;let t=c.extractNarrationProgress(d);if(!t)return;let n=c.nextSpeakableChunk(t.text,p.length,t.done);n.chunk&&(p=t.text.slice(0,n.consumed),F(p),f(`streaming`))},{lesson:l,signal:s.ctrl.signal,onPartial:e=>{m()&&(b(e.spec),e.narration&&(p=e.narration,F(e.narration)),f(`streaming`))},onPending:e=>{m()&&(R(e),e&&f(`streaming`))},onThinking:e=>{m()&&(H(e),e&&f(`streaming`))}});if(s.ctrl.signal.aborted&&!s.timedOut)return;if(s.timedOut){W(`Building this lesson took too long and was stopped — the model may be slow or rate-limited right now. Try again in a moment.`),f(`error`);return}if(g.error){W(g.error.message),f(`error`);return}v(n.id,r.id,P(g,a)),b(g.spec),F(g.narration),R(null),H(!1),W(null),f(`ready`)}catch{if(s.ctrl.signal.aborted&&!s.timedOut)return;W(s.timedOut?`Building this lesson took too long and was stopped — try again in a moment.`:`Couldn't build this lesson — check your connection and model settings, then try again.`),f(`error`)}finally{clearTimeout(c),G.current===s&&(G.current=null)}})()},[t]);(0,E.useEffect)(()=>(K(r),()=>G.current?.ctrl.abort()),[r,K]);let q=(0,E.useCallback)(e=>{let n=t?g(t):void 0,i=n?.lessons[r];!n||!i||_(n.id,i.id,e)},[t,r]),J=(0,E.useCallback)(()=>{window.location.hash=`#/courses`},[]);if(!n)return(0,D.jsx)(`div`,{className:`mavea-app clr-app`,children:(0,D.jsx)(`main`,{className:`clr-stage clr-stage-center`,children:(0,D.jsxs)(`div`,{className:`clr-empty`,children:[(0,D.jsx)(`div`,{className:`clr-empty-icon`,"aria-hidden":`true`,children:(0,D.jsx)(l.layers,{})}),(0,D.jsx)(`div`,{className:`clr-empty-head`,children:`This lesson isn’t here`}),(0,D.jsx)(`div`,{className:`clr-empty-sub`,children:`The course may have been removed, or the link is out of date. Head back and pick one to open.`}),(0,D.jsxs)(`button`,{type:`button`,className:`clr-btn clr-btn-primary`,onClick:J,children:[(0,D.jsx)(l.chevL,{}),` Back to courses`]})]})})});let Y=d===`loading`||d===`streaming`,X=h(n.id);return(0,D.jsx)(`div`,{className:`mavea-app clr-app`,children:(0,D.jsx)(`main`,{className:`clr-stage`,children:(0,D.jsxs)(`div`,{className:`clr-col`,children:[(0,D.jsx)(u,{kind:`learning`}),(0,D.jsx)(w,{course:n,lessonIdx:r,progress:X,onPrev:()=>a(e=>Math.max(0,e-1)),onNext:()=>a(e=>Math.min(n.lessons.length-1,e+1)),onCheckpoint:q,busy:Y},`${n.id}:${r}`),d===`loading`&&(0,D.jsx)(I,{lessonNumber:r+1,course:n}),d===`streaming`&&(0,D.jsx)(z,{narration:T,pendingShape:L,thinking:V}),d===`error`&&(0,D.jsx)(B,{message:U??`Something went wrong building this lesson.`,onRetry:()=>K(r)}),(d===`streaming`||d===`ready`)&&y&&(0,D.jsx)(`div`,{className:`clr-canvas`,children:(0,D.jsx)(c,{label:`Lesson canvas`,children:(0,D.jsx)(k,{data:y,spot:null,built:{},onProve:()=>{}})})})]})})})}function I(e){let t=(0,T.c)(8),{lessonNumber:n,course:r}=e,i=r.lessons[n-1],a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,D.jsxs)(`div`,{className:`clr-lens`,"aria-hidden":`true`,children:[(0,D.jsx)(`span`,{}),(0,D.jsx)(`span`,{}),(0,D.jsx)(`span`,{})]}),t[0]=a):a=t[0];let o;t[1]===n?o=t[2]:(o=(0,D.jsxs)(`div`,{className:`clr-state-head`,children:[`Building lesson `,n,`…`]}),t[1]=n,t[2]=o);let s;t[3]===i?s=t[4]:(s=i&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`div`,{className:`clr-state-sub`,children:i.goal}),(0,D.jsx)(`div`,{className:`clr-lesson-outline`,"aria-label":`Lesson outline`,children:i.objectives.slice(0,3).map(L)})]}),t[3]=i,t[4]=s);let c;return t[5]!==o||t[6]!==s?(c=(0,D.jsxs)(`div`,{className:`clr-state`,role:`status`,"aria-live":`polite`,children:[a,o,s]}),t[5]=o,t[6]=s,t[7]=c):c=t[7],c}function L(e,t){return(0,D.jsxs)(`div`,{className:`clr-lesson-outline-row`,children:[(0,D.jsx)(`span`,{"aria-hidden":`true`,children:t+1}),(0,D.jsx)(`strong`,{children:e})]},e)}function R(e){return e?`Building ${e.replace(/[_-]+/g,` `)}`:`Building the next section`}function z(e){let t=(0,T.c)(11),{narration:n,pendingShape:r,thinking:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,D.jsx)(`span`,{className:`clr-stream-pulse`,"aria-hidden":`true`}),t[0]=a):a=t[0];let o;t[1]!==r||t[2]!==i?(o=i?`Thinking through the lesson`:R(r),t[1]=r,t[2]=i,t[3]=o):o=t[3];let s;t[4]===o?s=t[5]:(s=(0,D.jsxs)(`div`,{className:`clr-stream-label`,children:[o,`…`]}),t[4]=o,t[5]=s);let c;t[6]===n?c=t[7]:(c=n&&(0,D.jsx)(`p`,{children:n}),t[6]=n,t[7]=c);let l;return t[8]!==s||t[9]!==c?(l=(0,D.jsxs)(`div`,{className:`clr-stream`,role:`status`,"aria-live":`polite`,"aria-atomic":`false`,children:[a,(0,D.jsxs)(`div`,{className:`clr-stream-copy`,children:[s,c]})]}),t[8]=s,t[9]=c,t[10]=l):l=t[10],l}function B(e){let t=(0,T.c)(10),{message:n,onRetry:r}=e,i,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,D.jsx)(`div`,{className:`clr-state-icon clr-state-icon-warn`,"aria-hidden":`true`,children:(0,D.jsx)(l.alert,{})}),a=(0,D.jsx)(`div`,{className:`clr-state-head`,children:`Couldn’t build this lesson`}),t[0]=i,t[1]=a):(i=t[0],a=t[1]);let o;t[2]===n?o=t[3]:(o=(0,D.jsx)(`div`,{className:`clr-state-sub clr-state-error`,children:n}),t[2]=n,t[3]=o);let s;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,D.jsx)(l.refresh,{}),t[4]=s):s=t[4];let c;t[5]===r?c=t[6]:(c=(0,D.jsxs)(`button`,{type:`button`,className:`clr-btn clr-btn-primary`,onClick:r,children:[s,` Try again`]}),t[5]=r,t[6]=c);let u;return t[7]!==o||t[8]!==c?(u=(0,D.jsxs)(`div`,{className:`clr-state`,children:[i,a,o,c]}),t[7]=o,t[8]=c,t[9]=u):u=t[9],u}export{F as CourseLessonReader};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/generateLive-_x2tWkBH.js","assets/blockLabel-FogyzEQY.js","assets/layout-CEoNLr-w.js","assets/catalog-BHjl-1uH.js","assets/history-D2EH2X6D.js","assets/catalog-Db9GWM6N.js","assets/preload-helper-CiWYd9n-.js","assets/rolldown-runtime-DkW27tQK.js","assets/facts-BUGuVUIc.js","assets/blockTypes-DUDdP3pB.js","assets/streamParse-B-Gjwa9T.js","assets/liveSchema-B4bQtO88.js","assets/icons-gLFQTv74.js","assets/jsx-runtime-DeHZSEgm.js","assets/spokenText-C88IQJ0M.js","assets/safeImageUrl-BINWXOTz.js","assets/sourceHost-BV3t2XDb.js","assets/annotations-CftUUB13.js","assets/screen-DFWKge3-.js","assets/attachments-BW-vki-E.js","assets/providers-B2OCzEo1.js","assets/http-Lar_UMKb.js","assets/info-CiqHR5cs.js","assets/shapes-C5fjibEc.js","assets/speed-K5_Ebj-8.js","assets/cache-CvbSI-pr.js","assets/number-Bmf7DqLj.js","assets/validate-CnG23_8J.js","assets/types-C42I77wh.js","assets/json-B0N3XRZU.js","assets/verbatim-DBTj9sPD.js","assets/receipts-ClyzFFGD.js","assets/citation-BsSvaaer.js","assets/officeDoc-GU6Cssjf.js","assets/csv-DAqzYXUs.js","assets/search-ZN7v_P5B.js","assets/store-BWLbFXiY.js","assets/contentVault-xfUwSJ3i.js","assets/keyVault-Aw5Y2PjT.js","assets/ready-DZY1bETr.js","assets/now-C9-UAzTC.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{n as a}from"./icons-gLFQTv74.js";import{t as o}from"./TopicCanvas-DkzJORfl.js";import{d as s}from"./CanvasSkeleton-CcHXJqdq.js";import{t as c}from"./useFocusTrap-DBtkeyRy.js";import{r as l}from"./sourceHost-BV3t2XDb.js";import"./canvas-BlkTFnVo.js";import{A as u,C as d,E as f,I as p,M as m,N as h,O as g,R as _,d as v,f as y,l as b,o as x,p as S,w as C}from"./store-B39HvB_l.js";import{l as w,n as T,r as ee,u as te}from"./useLiveConfig-DWz7BRdk.js";import{t as E}from"./route-D4kd-D3B.js";import{t as ne}from"./useDashboards-GafZIADI.js";import{a as D,n as re,o as O}from"./dataPending-lZUzUEo6.js";import{a as ie,c as k,i as ae,n as oe,t as A}from"./format-rPI6ZwwH.js";import{n as j,t as M}from"./tiles-pdNi6MGe.js";import{a as N,n as se,o as ce,t as le}from"./useDashboardLoop-B_YA5jLs.js";import{r as ue}from"./predictions-CkVKHq-5.js";import{i as de,n as P,r as fe}from"./confirmAdd-CZPBG1xe.js";import{t as pe}from"./planTracker-BI9z_0gW.js";import{t as me}from"./pin-BwWjjqmt.js";/* empty css */import{t as he}from"./CheckLogRail-BU_rmAFH.js";var F=t(),I=e();function ge(e,t){for(let n of document.elementsFromPoint(e,t)){let e=n.closest(`[data-dash-widget]`);if(e)return e.getAttribute(`data-dash-widget`)}return null}function _e(e,t){let[n,r]=(0,I.useState)(null),[i,a]=(0,I.useState)(null),o=(0,I.useRef)({working:null,draggingId:null,onCommit:t,sourceIds:e,cleanup:null});o.current.onCommit=t,o.current.sourceIds=e,(0,I.useEffect)(()=>()=>o.current.cleanup?.(),[]);let s=(0,I.useCallback)(e=>t=>{if(t.button!==0&&t.pointerType===`mouse`)return;t.preventDefault();let n=[...o.current.sourceIds];o.current.working=n,o.current.draggingId=e,r(n),a(e);let i=e=>{let t=ge(e.clientX,e.clientY),n=o.current.draggingId,i=o.current.working;if(!t||!n||!i||t===n)return;let a=i.indexOf(n),s=i.indexOf(t);if(a<0||s<0||a===s)return;let c=[...i];c.splice(s,0,c.splice(a,1)[0]),o.current.working=c,r(c)},s=()=>{window.removeEventListener(`pointermove`,i),window.removeEventListener(`pointerup`,s),window.removeEventListener(`pointercancel`,s),o.current.cleanup=null;let e=o.current.working;o.current.working=null,o.current.draggingId=null,r(null),a(null),e&&o.current.onCommit(e)};o.current.cleanup=s,window.addEventListener(`pointermove`,i),window.addEventListener(`pointerup`,s),window.addEventListener(`pointercancel`,s)},[]),c=(0,I.useCallback)(e=>t=>{if(t.key!==`ArrowUp`&&t.key!==`ArrowDown`)return;t.preventDefault();let n=o.current.sourceIds,r=n.indexOf(e),i=t.key===`ArrowUp`?r-1:r+1;if(r<0||i<0||i>=n.length)return;let a=[...n];a.splice(i,0,a.splice(r,1)[0]),o.current.onCommit(a)},[]);return{draggingId:i,order:n??e,handleProps:e=>({onPointerDown:s(e),onKeyDown:c(e),tabIndex:0,role:`button`,"aria-label":`Drag to reorder, or use arrow keys`})}}var ve={WATCHING:`watching`,CLEAR:`clear`,TRIGGERED:`triggered`,AWAITING:`awaiting`},ye={ORIGIN:`origin`,ADDED:`added`,LINKED:`linked`},be={CLEAR:1,WATCHING:.75,TRIGGERED:0,AWAITING:0};function xe(e){let t=e.tripwires.filter(e=>e.state!==`AWAITING`);if(t.length===0)return null;let n=t.reduce((e,t)=>e+be[t.state],0);return Math.round(100*n/t.length)}function L(e){return e===null?``:e>=80?`Tracking well`:e>=55?`Holding, with risks`:e>=30?`Slipping`:`Lines are breaking`}var R=new Set([`thesis`,`alignmentgauge`,`standingalerts`,`sourceslineage`]);function Se(e,t){let n=t.block.type;if(!R.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??k(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:ve[n.state]}:{}};return{...t.block,props:i}}if(n===`alignmentgauge`){let n=xe(e),r={pct:n,band:L(n)};return{...t.block,props:r}}if(n===`standingalerts`){let n={alerts:e.tripwires.map(e=>({label:e.label,state:ve[e.state]}))};return{...t.block,props:n}}let i={rows:e.sources.map(e=>({kind:ye[e.kind],label:e.title,...e.contributed?{contributed:e.contributed}:{}}))};return{...t.block,props:i}}var z=n();function B(e){return{id:`dash-`+(e.id??e.type),workspace:`Dashboards`,title:``,sub:``,opener:``,context:[],blocks:[{...e,col:12,delay:0}],proof:null,extras:{},group:`home`,suggests:[],keywords:[]}}function Ce(e){let t=(0,F.c)(18),{dashboard:n,widget:r,editing:i,dragging:a,children:s,footer:c}=e,l;t[0]!==n||t[1]!==r?(l=Se(n,r),t[0]=n,t[1]=r,t[2]=l):l=t[2];let u=l,d;t[3]===u?d=t[4]:(d=B(u),t[3]=u,t[4]=d);let f=d,p=`dash-span-${r.span}`,m=i?`dash-tile--editing`:``,h=a?`dash-tile--dragging`:``,g;t[5]!==p||t[6]!==m||t[7]!==h?(g=[`dash-tile`,p,m,h].filter(Boolean),t[5]=p,t[6]=m,t[7]=h,t[8]=g):g=t[8];let _=g.join(` `),v;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(v={},t[9]=v):v=t[9];let y;t[10]===f?y=t[11]:(y=(0,z.jsx)(o,{data:f,spot:null,built:v,onProve:we}),t[10]=f,t[11]=y);let b;return t[12]!==s||t[13]!==_||t[14]!==c||t[15]!==y||t[16]!==r.id?(b=(0,z.jsxs)(`div`,{className:_,"data-dash-widget":r.id,children:[s,y,c]}),t[12]=s,t[13]=_,t[14]=c,t[15]=y,t[16]=r.id,t[17]=b):b=t[17],b}function we(){}function V(){return`w-`+Math.random().toString(36).slice(2,8)}function H(e){let t=new Set(e.widgets.map(e=>e.block.type));return[{key:`note`,label:`Note`,make:()=>({block:{type:`list`,col:12,id:V(),props:{title:`Note`,items:[`Add a note about this dashboard.`]}},span:2})},{key:`thesis`,label:`Reasoning note`,make:()=>({block:{type:`thesis`,col:12,id:V(),props:{reasoning:``}},span:2})},{key:`alignmentgauge`,label:`Alignment gauge`,make:()=>({block:{type:`alignmentgauge`,col:12,id:V(),props:{pct:null}},span:1})},{key:`standingalerts`,label:`Standing alerts`,make:()=>({block:{type:`standingalerts`,col:12,id:V(),props:{alerts:[]}},span:1})},{key:`sourceslineage`,label:`Sources`,make:()=>({block:{type:`sourceslineage`,col:12,id:V(),props:{rows:[]}},span:2})}].filter(e=>e.key===`note`||!t.has(e.key))}function Te(e){let t=(0,F.c)(26),{dashboard:n,onClose:r}=e,[i,a]=(0,I.useState)(`menu`),[o,s]=(0,I.useState)(``),[l,u]=(0,I.useState)(!1),[d,f]=(0,I.useState)(null),p=H(n),m=!!w(T()).apiKey,h;t[0]!==n||t[1]!==r?(h=e=>{let{block:t,span:i}=e.make(),a={id:V(),block:t,span:i,fromSource:`manual`};x(n.id,a),r()},t[0]=n,t[1]=r,t[2]=h):h=t[2];let g=h,_=(0,I.useRef)(!0),b,S;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(b=()=>(_.current=!0,()=>{_.current=!1}),S=[],t[3]=b,t[4]=S):(b=t[3],S=t[4]),(0,I.useEffect)(b,S);let C;t[5]!==o||t[6]!==n||t[7]!==r||t[8]!==l?(C=async()=>{let e=o.trim();if(!e||l)return;if(n.metrics.length>=12||n.widgets.length>=12){f(`This board is full — remove a card or metric first, then track another number.`);return}u(!0),f(null);let t=await pe(e,w(T()));if(!_.current)return;let i=t.metrics[0];if(!i){u(!1),f(`No single number found in that — the Track bar on the Dashboards home builds richer trackers.`);return}let a=Date.now(),s={id:`m-${a}`,label:i.label,query:i.query,...i.unit?{unit:i.unit}:{},sourceQuote:{text:i.label,saidAt:a},lastValue:null,origin:`empty`},c={id:V(),block:{type:`insight`,col:12,id:`blk-${a}`,num:`1`,props:{title:s.label,stat:`—`,conf:`inferred`,summary:s.label}},span:1,metricId:s.id,fromSource:`manual`},d=P(n);y(n.id,{metrics:[s],tripwires:[],widgets:[c],source:{kind:`ADDED`,conversationId:`manual`,title:`Added by hand`,contributed:`Tracking ${s.label}`,at:a}}),v(n.id,a);let p=await de(n.id,d);if(_.current){if(p!==`confirmed`){u(!1),f(fe(p));return}r()}},t[5]=o,t[6]=n,t[7]=r,t[8]=l,t[9]=C):C=t[9];let ee=C,te=(0,I.useRef)(null),E;t[10]===r?E=t[11]:(E={onEscape:r},t[10]=r,t[11]=E),c(te,E);let ne=(0,I.useRef)(null),D,re;t[12]===i?(D=t[13],re=t[14]):(D=()=>{i===`track`?ne.current?.focus():te.current?.querySelector(`.dash-palette-item`)?.focus()},re=[i],t[12]=i,t[13]=D,t[14]=re),(0,I.useEffect)(D,re);let O,ie;t[15]===r?(O=t[16],ie=t[17]):(O=()=>{let e=te.current?.parentElement;if(!e)return;let t=t=>{e.contains(t.target)||r()};return document.addEventListener(`pointerdown`,t),()=>document.removeEventListener(`pointerdown`,t)},ie=[r],t[15]=r,t[16]=O,t[17]=ie),(0,I.useEffect)(O,ie);let k;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(k=e=>{let t=Array.from(te.current?.querySelectorAll(`.dash-palette-item`)??[]);t.length&&t[(t.indexOf(document.activeElement)+e+t.length)%t.length]?.focus()},t[18]=k):k=t[18];let ae=k,oe=i===`menu`?`menu`:`dialog`,A=i===`menu`?`Add a widget`:`Track a number`,j;t[19]===i?j=t[20]:(j=e=>{i===`menu`&&(e.key===`ArrowDown`||e.key===`ArrowUp`)&&(e.preventDefault(),ae(e.key===`ArrowDown`?1:-1))},t[19]=i,t[20]=j);let M=i===`menu`?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`button`,{type:`button`,role:`menuitem`,className:`dash-palette-item dash-palette-lead`,onClick:()=>a(`track`),children:`+ Track a number`}),p.map(e=>(0,z.jsxs)(`button`,{type:`button`,role:`menuitem`,className:`dash-palette-item`,onClick:()=>g(e),children:[`+ `,e.label]},e.key))]}):(0,z.jsxs)(`div`,{className:`dash-ptrack`,children:[(0,z.jsxs)(`div`,{className:`dash-ptrack-head`,children:[(0,z.jsx)(`button`,{type:`button`,className:`dash-ptrack-back`,"aria-label":`Back to widget list`,onClick:()=>a(`menu`),children:`←`}),(0,z.jsx)(`span`,{className:`dash-ptrack-kicker`,children:`Track a number`})]}),m?(0,z.jsxs)(`form`,{className:`dash-ptrack-form`,onSubmit:e=>{e.preventDefault(),ee()},children:[(0,z.jsx)(`input`,{ref:ne,className:`dash-ptrack-input`,value:o,placeholder:`BTC price, SF temperature, 10-year yield…`,"aria-label":`What number to track`,disabled:l,onChange:e=>s(e.target.value)}),d&&(0,z.jsx)(`p`,{className:`dash-ptrack-err`,children:d}),(0,z.jsx)(`button`,{type:`submit`,className:`dash-ptrack-go`,disabled:l||!o.trim(),children:l?`Planning…`:`Track · 1 call + 1 search`})]}):(0,z.jsxs)(`p`,{className:`dash-ptrack-gate`,children:[`A tracked number is fetched by real web searches on your own key — nothing is ever made up. `,(0,z.jsx)(`a`,{href:`#/live`,children:`Connect a model in Live`}),` first.`]})]}),N;return t[21]!==oe||t[22]!==A||t[23]!==j||t[24]!==M?(N=(0,z.jsx)(`div`,{ref:te,className:`dash-palette`,role:oe,"aria-label":A,tabIndex:-1,onKeyDown:j,children:M}),t[21]=oe,t[22]=A,t[23]=j,t[24]=M,t[25]=N):N=t[25],N}function Ee(e){let t=(0,F.c)(24),{dashboardId:n,metric:r}=e,i=r.lastValue===null?``:String(r.lastValue),[a,o]=(0,I.useState)(i),[s,c]=(0,I.useState)(i);i!==s&&(c(i),o(i));let l;t[0]!==n||t[1]!==r.id||t[2]!==r.lastValue||t[3]!==r.unit||t[4]!==a?(l=()=>{let e=Number(a.replace(/[^0-9.+-]/g,``));if(a.trim()===``||!Number.isFinite(e))return;let t=Date.now(),i=r.lastValue;m(n,r.id,e,k(String(e),r.unit),`user`,t);let o=S(n);if(o){let{tripwires:e}=ce(o,{[r.id]:i});h(n,e,t)}},t[0]=n,t[1]=r.id,t[2]=r.lastValue,t[3]=r.unit,t[4]=a,t[5]=l):l=t[5];let u=l,d;t[6]===u?d=t[7]:(d=e=>{e.preventDefault(),u()},t[6]=u,t[7]=d);let f=`Set ${r.label}…`,p=`Set ${r.label}`,g;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(g=e=>o(e.target.value),t[8]=g):g=t[8];let _;t[9]!==f||t[10]!==p||t[11]!==a?(_=(0,z.jsx)(`input`,{className:`dash-fill-input`,value:a,inputMode:`decimal`,placeholder:f,"aria-label":p,onChange:g}),t[9]=f,t[10]=p,t[11]=a,t[12]=_):_=t[12];let v;t[13]===r.unit?v=t[14]:(v=r.unit&&(0,z.jsx)(`span`,{className:`dash-fill-unit`,children:r.unit}),t[13]=r.unit,t[14]=v);let y;t[15]===a?y=t[16]:(y=a.trim(),t[15]=a,t[16]=y);let b=y===``,x;t[17]===b?x=t[18]:(x=(0,z.jsx)(`button`,{type:`submit`,className:`dash-fill-save`,disabled:b,children:`Save`}),t[17]=b,t[18]=x);let C;return t[19]!==x||t[20]!==d||t[21]!==_||t[22]!==v?(C=(0,z.jsxs)(`form`,{className:`dash-fill`,onSubmit:d,children:[_,v,x]}),t[19]=x,t[20]=d,t[21]=_,t[22]=v,t[23]=C):C=t[23],C}r();var De=()=>i(()=>import(`./generateLive-_x2tWkBH.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]));function Oe(){return!!w(T()).apiKey}function ke(e){let t=(0,F.c)(15),[n,r]=(0,I.useState)(!1),[i,a]=(0,I.useState)(null),[o,s]=(0,I.useState)(null),c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=[],t[0]=c):c=t[0];let l=(0,I.useRef)(c),u=(0,I.useRef)(!1),d=(0,I.useRef)(null),f;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(f=()=>{d.current?.abort(),d.current=null,u.current=!1,l.current=[],r(!1),a(null),s(null)},t[1]=f):f=t[1];let p;t[2]===e.id?p=t[3]:(p=[e.id],t[2]=e.id,t[3]=p),(0,I.useEffect)(f,p);let m,h;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(m=()=>()=>d.current?.abort(),h=[],t[4]=m,t[5]=h):(m=t[4],h=t[5]),(0,I.useEffect)(m,h);let g;t[6]===e?g=t[7]:(g=t=>{let n=t.trim();if(!n||u.current||!Oe())return;u.current=!0,r(!0),s(n);let i=w(T()),o=e.widgets.map(t=>Se(e,t)),c=new AbortController;d.current=c,De().then(e=>{let{generateLive:t}=e;return t(n,l.current,i,void 0,{selectedBlocks:o,signal:c.signal,caps:{searchMode:`realtime`}})}).then(e=>{c.signal.aborted||(e.error||(l.current=[...l.current,{role:`user`,content:n},{role:`assistant`,content:e.narration}].slice(-8)),a(e))}).catch(()=>{c.signal.aborted||a(null)}).finally(()=>{c.signal.aborted||(u.current=!1,r(!1))})},t[6]=e,t[7]=g);let _=g,v;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(v=()=>{d.current?.abort(),u.current=!1,r(!1),a(null),s(null)},t[8]=v):v=t[8];let y=v,b;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(b=Oe(),t[9]=b):b=t[9];let x;return t[10]!==o||t[11]!==n||t[12]!==i||t[13]!==_?(x={ready:b,loading:n,result:i,lastAsk:o,run:_,reset:y},t[10]=o,t[11]=n,t[12]=i,t[13]=_,t[14]=x):x=t[14],x}var Ae=/^(add|track|watch|monitor|follow)\b/i;function U(e){let t=e.trim();return t&&Ae.test(t)?`add`:`ask`}function W(e){let t=[];return e.tripwires.length>0&&t.push(`Are the numbers holding where I want?`,`Which alert is closest to triggering?`),e.metrics[0]&&t.push(`What does ${e.metrics[0].label} tell me right now?`),t.push(`What changed since the last update?`),t.slice(0,3)}function G(e,t,n){n.length!==0&&me({block:n,question:t,target:e,fromSource:`talk`,firstCheck:!1,source:{kind:`ADDED`,conversationId:`talk`,title:`Asked: “${t}”`,contributed:`Pinned ${Math.min(n.length,4)} from this question`,at:Date.now()}})}function je(e){let t=(0,F.c)(29),{dashboard:n}=e,r=ke(n),[i,a]=(0,I.useState)(``),[s,c]=(0,I.useState)(!1),[l,u]=(0,I.useState)(`ask`),d;t[0]===n?d=t[1]:(d=W(n),t[0]=n,t[1]=d);let f=d,p;t[2]===r?p=t[3]:(p=e=>{c(!1),u(U(e)),r.run(e),a(``)},t[2]=r,t[3]=p);let m=p,h,g;t[4]!==l||t[5]!==n.id||t[6]!==s||t[7]!==r.lastAsk||t[8]!==r.loading||t[9]!==r.result?(h=()=>{l===`add`&&!r.loading&&r.result&&!r.result.error&&r.result.spec.blocks.length>0&&!s&&(G(n.id,r.lastAsk??``,r.result.spec.blocks),c(!0))},g=[l,r.loading,r.result,r.lastAsk,s,n.id],t[4]=l,t[5]=n.id,t[6]=s,t[7]=r.lastAsk,t[8]=r.loading,t[9]=r.result,t[10]=h,t[11]=g):(h=t[10],g=t[11]),(0,I.useEffect)(h,g);let _;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,z.jsx)(`div`,{className:`card-eyebrow dash-talk-eyebrow`,children:`Talk to this dashboard`}),t[12]=_):_=t[12];let v;t[13]!==f||t[14]!==i||t[15]!==m||t[16]!==r.loading||t[17]!==r.ready?(v=r.ready?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`div`,{className:`dash-talk-chips`,children:f.map(e=>(0,z.jsxs)(`button`,{type:`button`,className:`dash-talk-chip`,disabled:r.loading,onClick:()=>m(e),children:[(0,z.jsx)(`span`,{className:`dash-talk-chip-orb`}),(0,z.jsxs)(`span`,{className:`dash-talk-chip-t`,children:[`“`,e,`”`]})]},e))}),(0,z.jsxs)(`form`,{className:`dash-talk-ask`,onSubmit:e=>{e.preventDefault(),m(i)},children:[(0,z.jsx)(`input`,{className:`dash-talk-input`,value:i,placeholder:`Ask a question, or type "add …" / "track …" to add it in one step`,onChange:e=>a(e.target.value),disabled:r.loading}),(0,z.jsx)(`button`,{type:`submit`,className:`dash-talk-send`,disabled:r.loading||!i.trim(),children:r.loading?`Thinking…`:`Ask`})]})]}):(0,z.jsxs)(`p`,{className:`dash-talk-gate`,children:[`Connect a model in `,(0,z.jsx)(`a`,{href:`#/live`,children:`Live`}),` to ask questions grounded in this dashboard.`]}),t[13]=f,t[14]=i,t[15]=m,t[16]=r.loading,t[17]=r.ready,t[18]=v):v=t[18];let y;t[19]!==l||t[20]!==n.id||t[21]!==s||t[22]!==r.lastAsk||t[23]!==r.loading||t[24]!==r.result?(y=r.lastAsk&&(0,z.jsxs)(`div`,{className:`dash-talk-answer`,children:[(0,z.jsxs)(`div`,{className:`dash-talk-q`,children:[`“`,r.lastAsk,`”`]}),r.loading?(0,z.jsx)(`div`,{className:`dash-talk-thinking`,children:`Mavéa is looking at your dashboard…`}):r.result?.error?(0,z.jsxs)(`div`,{className:`dash-talk-error`,children:[`That didn’t go through. Check your model in `,(0,z.jsx)(`a`,{href:`#/live`,children:`Live`}),` and try again.`]}):r.result?(0,z.jsxs)(z.Fragment,{children:[r.result.narration&&(0,z.jsx)(`p`,{className:`dash-talk-narration`,children:r.result.narration}),(0,z.jsx)(o,{data:r.result.spec,spot:null,built:{},onProve:K}),r.result.spec.blocks.length>0&&(s?(0,z.jsx)(`div`,{className:`dash-talk-pinned`,children:l===`add`?(0,z.jsx)(z.Fragment,{children:`Auto-added — this read like a command, not a question. Remove it from Edit layout if that’s wrong.`}):`Added to this dashboard ✓`}):l===`add`?null:(0,z.jsx)(`button`,{type:`button`,className:`dash-talk-pin`,onClick:()=>{G(n.id,r.lastAsk??``,r.result.spec.blocks),c(!0)},children:`+ Add this to the dashboard`}))]}):null]}),t[19]=l,t[20]=n.id,t[21]=s,t[22]=r.lastAsk,t[23]=r.loading,t[24]=r.result,t[25]=y):y=t[25];let b;return t[26]!==v||t[27]!==y?(b=(0,z.jsxs)(`section`,{className:`dash-talk`,children:[_,v,y]}),t[26]=v,t[27]=y,t[28]=b):b=t[28],b}function K(){}function q(e){if(!e.history||e.history.length<2)return null;let t=e.history[e.history.length-2].value,n=e.history[e.history.length-1].value;if(n===t)return null;let r=n>t?`up`:`down`,i=Math.round(Math.abs(n-t)*100)/100;if(i===0)return null;let a=Number.isInteger(i)?String(i):i.toFixed(2),o=e.unit===`$`?`$`:``,s=e.unit&&e.unit!==`$`?e.unit:``;return{direction:r,text:`${r===`up`?`+`:`-`}${o}${a}${s}`}}function J(e){return new Date(e).toLocaleTimeString(void 0,{hour:`numeric`,minute:`2-digit`})}function Y(e){if(e<=0)return`due now`;let t=Math.round(e/6e4);if(t<60)return`${t}m`;let n=Math.floor(t/60),r=t%60;if(n<24)return r?`${n}h ${r}m`:`${n}h`;let i=Math.floor(n/24),a=n%24;return a?`${i}d ${a}h`:`${i}d`}function Me({dashboard:e,now:t,checking:n=!1}){let r=(0,I.useMemo)(()=>e.metrics.find(e=>e.lastValue!==null)??e.metrics[0],[e.metrics]),i=ie(e);if(!i||!r)return null;let a=q(r),o=i.label||e.title,s=r.asOf??e.lastRefreshedAt??null,c=e.cadence.data===`manual`?`when you refresh`:Y(e.nextDataAt-t),l=r.history??[];return(0,z.jsxs)(`section`,{className:`card dash-hero`,"aria-label":`${o} — as of last check`,children:[(0,z.jsxs)(`div`,{className:`dash-hero-top`,children:[(0,z.jsxs)(`span`,{className:`dash-hero-eyebrow`,children:[o,`: as of last check`]}),(0,z.jsx)(`span`,{className:`dash-hero-meta`,children:n?`checking for new data…`:`as of ${s?J(s):`not yet checked`} / not real-time — next check ${c}`})]}),(0,z.jsxs)(`div`,{className:`dash-hero-value-row`,children:[(0,z.jsx)(`span`,{className:`dash-hero-value${n?` tile-value--checking`:``}`,children:i.value}),a&&(0,z.jsx)(`span`,{className:`dash-hero-delta dash-hero-delta--${a.direction}`,children:a.text})]}),(0,z.jsx)(`div`,{className:`dash-hero-chart`,children:l.length>=2?(0,z.jsx)(j,{points:l,tone:a?.direction??`flat`}):(0,z.jsx)(`p`,{className:`dash-hero-chart-empty`,children:`Not enough history yet for a chart.`})})]})}function Ne(e){let t=(0,F.c)(6),{dashboard:n}=e,[r,i]=te();if(O().keyNudgeShown||!ee(r)||r.rememberKey||!ae(n))return null;let a=Pe,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,z.jsx)(`p`,{className:`dash-key-nudge-text`,children:`Mavéa checks this with your key, which currently lives only in this tab. Keep it on this device (encrypted) so checks still work after a reload?`}),t[0]=o):o=t[0];let s;t[1]===i?s=t[2]:(s=(0,z.jsx)(`button`,{type:`button`,className:`dash-key-nudge-keep`,onClick:()=>{i({rememberKey:!0}),a()},children:`Keep key on this device`}),t[1]=i,t[2]=s);let c;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,z.jsx)(`button`,{type:`button`,className:`dash-key-nudge-dismiss`,onClick:a,children:`Not now`}),t[3]=c):c=t[3];let l;return t[4]===s?l=t[5]:(l=(0,z.jsxs)(`div`,{className:`card dash-key-nudge`,children:[o,(0,z.jsxs)(`div`,{className:`dash-key-nudge-actions`,children:[s,c]})]}),t[4]=s,t[5]=l),l}function Pe(){return D({keyNudgeShown:!0})}var Fe={hit:{label:`Called it ✓`,className:`is-hit`},miss:{label:`Missed ✗`,className:`is-miss`},unclear:{label:`Unclear`,className:`is-unclear`}};function Ie(e){let t=(0,F.c)(21),{dashboard:n,now:r}=e,i;t[0]===n.predictionHistory?i=t[1]:(i=n.predictionHistory??[],t[0]=n.predictionHistory,t[1]=i);let a=i,o=a.length>0?a[a.length-1]:null;if(!n.prediction&&!o)return null;let s;t[2]!==n.predictionHistory||t[3]!==r?(s=ue(n.predictionHistory,r),t[2]=n.predictionHistory,t[3]=r,t[4]=s):s=t[4];let c=s,l=o?Fe[o.result]:null,u;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,z.jsx)(`span`,{className:`card-eyebrow dash-expects-eyebrow`,children:`Expects by next check`}),t[5]=u):u=t[5];let d;t[6]===n.prediction?d=t[7]:(d=n.prediction&&(0,z.jsx)(`p`,{className:`dash-expects-text`,children:n.prediction.text}),t[6]=n.prediction,t[7]=d);let f;t[8]!==l||t[9]!==o?(f=o&&l&&(0,z.jsxs)(`div`,{className:`dash-expects-grade`,children:[(0,z.jsxs)(`span`,{className:`dash-expects-chip ${l.className}`,children:[`Last call: `,l.label]}),(0,z.jsxs)(`p`,{className:`dash-expects-expected`,children:[`“`,o.expected,`”`]}),o.note&&(0,z.jsx)(`p`,{className:`dash-expects-note`,children:o.note})]}),t[8]=l,t[9]=o,t[10]=f):f=t[10];let p;t[11]!==c.hits||t[12]!==c.total?(p=c.total>0&&(0,z.jsxs)(`span`,{className:`dash-expects-tally`,children:[`Calls this week · `,c.hits,`/`,c.total]}),t[11]=c.hits,t[12]=c.total,t[13]=p):p=t[13];let m;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,z.jsx)(`span`,{className:`dash-expects-label`,children:`Predictions are free — written from checks you already paid for`}),t[14]=m):m=t[14];let h;t[15]===p?h=t[16]:(h=(0,z.jsxs)(`div`,{className:`dash-expects-foot`,children:[p,m]}),t[15]=p,t[16]=h);let g;return t[17]!==d||t[18]!==f||t[19]!==h?(g=(0,z.jsxs)(`div`,{className:`dash-expects`,children:[u,d,f,h]}),t[17]=d,t[18]=f,t[19]=h,t[20]=g):g=t[20],g}function Le(e){let t=(0,F.c)(23),{dashboard:n,now:r}=e,i=N(n.id);if(!(n.tripwires.length>0||n.lastVerdict||n.prediction||i))return null;let a=n.lastVerdict,o;t[0]!==n.tripwires||t[1]!==a?(o=a?n.tripwires.find(e=>e.id===a.tripwireId)??null:null,t[0]=n.tripwires,t[1]=a,t[2]=o):o=t[2];let s=o,c=!!n.lastVerdictError&&(n.lastVerdictAttemptAt??0)>(a?.at??0),l;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,z.jsx)(`span`,{className:`card-eyebrow dash-lastcheck-eyebrow`,children:`From the last check`}),t[3]=l):l=t[3];let u;t[4]!==r||t[5]!==a?(u=a&&(0,z.jsx)(`span`,{className:`dash-lastcheck-when`,children:A(a.at,r).replace(/^updated /,`checked `)}),t[4]=r,t[5]=a,t[6]=u):u=t[6];let d;t[7]===u?d=t[8]:(d=(0,z.jsxs)(`div`,{className:`dash-lastcheck-head`,children:[l,u]}),t[7]=u,t[8]=d);let f;t[9]!==n||t[10]!==c||t[11]!==r||t[12]!==i||t[13]!==s||t[14]!==a?(f=a?(0,z.jsxs)(z.Fragment,{children:[s&&(0,z.jsxs)(`p`,{className:`dash-lastcheck-text dash-lastcheck-about`,children:[`About: `,s.label]}),i?(0,z.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-pending`,children:`Mavéa is reading the latest numbers…`}):c&&(0,z.jsxs)(`p`,{className:`dash-lastcheck-text dash-lastcheck-error`,children:[`A newer check just failed: `,n.lastVerdictError]}),(0,z.jsx)(`p`,{className:`dash-lastcheck-text`,children:a.text}),a.grounded===!1&&(0,z.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-qualifier`,children:`Based on background knowledge, not a fresh search.`}),a.sources&&a.sources.length>0&&(0,z.jsx)(`div`,{className:`dash-lastcheck-sources`,children:a.sources.map(X)})]}):i?(0,z.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-pending`,children:`Mavéa is reading the latest numbers…`}):c?(0,z.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-error`,children:n.lastVerdictError}):(0,z.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-muted`,children:oe(n,r)}),t[9]=n,t[10]=c,t[11]=r,t[12]=i,t[13]=s,t[14]=a,t[15]=f):f=t[15];let p;t[16]!==n||t[17]!==r?(p=(0,z.jsx)(Ie,{dashboard:n,now:r}),t[16]=n,t[17]=r,t[18]=p):p=t[18];let m;return t[19]!==d||t[20]!==f||t[21]!==p?(m=(0,z.jsxs)(`section`,{className:`dash-lastcheck`,"aria-label":`From the last check`,children:[d,f,p]}),t[19]=d,t[20]=f,t[21]=p,t[22]=m):m=t[22],m}function X(e){let t=l(e.url);return t?(0,z.jsx)(`a`,{className:`dash-lastcheck-source`,href:t,target:`_blank`,rel:`noopener noreferrer`,title:e.title,children:e.title},e.url):null}var Re=[{v:`15min`,label:`15M`},{v:`hourly`,label:`1H`},{v:`6h`,label:`6H`},{v:`daily`,label:`DAILY`},{v:`manual`,label:`MANUAL`}],ze={"15min":`Every 15 minutes`,hourly:`Hourly`,"6h":`Every 6 hours`,daily:`Daily`,manual:`Manual`};function Z(e){if(e===`manual`)return`Refreshes only when you ask — no automatic searches.`;let t=Math.round(1440/_[e]);return`${ze[e]} ≈ up to ~${t} searches/day while Mavéa is open. You provide the key and pay the search provider; a faster cadence can increase those charges. This is never real-time — each check is a snapshot.`}function Q(e){return new Date(e).toLocaleString(void 0,{weekday:`short`,hour:`numeric`,minute:`2-digit`})}function Be(e){let t=(0,F.c)(23),{dashboard:n,now:r}=e,i=n.cadence.data,a=n.cadence.window,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,z.jsx)(`div`,{className:`card-eyebrow`,children:`Check cadence`}),t[0]=o):o=t[0];let s;t[1]!==n.id||t[2]!==i?(s=Re.map(e=>(0,z.jsx)(`button`,{type:`button`,className:`dash-seg-opt`+(e.v===i?` is-active`:``),"aria-pressed":e.v===i,onClick:()=>u(n.id,{data:e.v}),children:e.label},e.v)),t[1]=n.id,t[2]=i,t[3]=s):s=t[3];let c;t[4]===s?c=t[5]:(c=(0,z.jsx)(`div`,{className:`dash-seg`,role:`group`,"aria-label":`Data refresh cadence`,children:s}),t[4]=s,t[5]=c);let l;t[6]===i?l=t[7]:(l=Z(i),t[6]=i,t[7]=l);let d;t[8]===l?d=t[9]:(d=(0,z.jsx)(`p`,{className:`dash-cadence-cost`,children:l}),t[8]=l,t[9]=d);let f;t[10]!==n.id||t[11]!==a?(f=a&&(0,z.jsxs)(`div`,{className:`dash-cadence-window`,children:[(0,z.jsxs)(`p`,{className:`dash-cadence-window-text`,children:[`Live window: `,(0,z.jsx)(`strong`,{children:a.label}),` · `,Q(a.startAt),`–`,Q(a.endAt)]}),(0,z.jsx)(`button`,{type:`button`,className:`dash-cadence-clear`,onClick:()=>C(n.id,null),children:`Clear`})]}),t[10]=n.id,t[11]=a,t[12]=f):f=t[12];let p;t[13]!==n.id||t[14]!==n.oneShotAt||t[15]!==n.oneShotLabel||t[16]!==r?(p=n.oneShotAt!==void 0&&(0,z.jsxs)(`div`,{className:`dash-cadence-oneshot`,children:[(0,z.jsx)(M,{targetAt:n.oneShotAt,now:r,label:n.oneShotLabel}),(0,z.jsx)(`button`,{type:`button`,className:`dash-cadence-clear`,onClick:()=>b(n.id),children:`Clear`})]}),t[13]=n.id,t[14]=n.oneShotAt,t[15]=n.oneShotLabel,t[16]=r,t[17]=p):p=t[17];let m;return t[18]!==c||t[19]!==d||t[20]!==f||t[21]!==p?(m=(0,z.jsxs)(`section`,{className:`card dash-cadence-card`,"aria-label":`Check cadence`,children:[o,c,d,f,p]}),t[18]=c,t[19]=d,t[20]=f,t[21]=p,t[22]=m):m=t[22],m}var Ve={WATCHING:`Watching`,CLEAR:`Clear`,AWAITING:`Awaiting data`,TRIGGERED:`Triggered`};function He(e){let t=(0,F.c)(15),{tripwire:n}=e,r=n.state===`TRIGGERED`,i=`dash-alertcard-row`+(r?` is-triggered`:``),a=`dash-switch`+(n.state===`AWAITING`?``:` on`),o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,z.jsx)(`span`,{className:`dash-switch-knob`}),t[0]=o):o=t[0];let s;t[1]===a?s=t[2]:(s=(0,z.jsx)(`span`,{className:a,"aria-hidden":`true`,children:o}),t[1]=a,t[2]=s);let c=n.sourceQuote.text||n.label,l;t[3]===c?l=t[4]:(l=(0,z.jsx)(`span`,{className:`dash-alertcard-line`,children:c}),t[3]=c,t[4]=l);let u;t[5]!==r||t[6]!==n.state?(u=r?(0,z.jsx)(`span`,{className:`dash-alertcard-crossed`,children:`A line you set has been crossed`}):(0,z.jsx)(`span`,{className:`dash-alertcard-state`,children:Ve[n.state]}),t[5]=r,t[6]=n.state,t[7]=u):u=t[7];let d;t[8]!==l||t[9]!==u?(d=(0,z.jsxs)(`div`,{className:`dash-alertcard-body`,children:[l,u]}),t[8]=l,t[9]=u,t[10]=d):d=t[10];let f;return t[11]!==i||t[12]!==s||t[13]!==d?(f=(0,z.jsxs)(`li`,{className:i,children:[s,d]}),t[11]=i,t[12]=s,t[13]=d,t[14]=f):f=t[14],f}function Ue(e){let t=(0,F.c)(5),{dashboard:n}=e;if(n.tripwires.length===0)return null;let r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,z.jsx)(`div`,{className:`card-eyebrow`,children:`Your alerts`}),t[0]=r):r=t[0];let i;t[1]===n.tripwires?i=t[2]:(i=n.tripwires.map(We),t[1]=n.tripwires,t[2]=i);let a;return t[3]===i?a=t[4]:(a=(0,z.jsxs)(`section`,{className:`card dash-alertcard`,"aria-label":`Your alerts`,children:[r,(0,z.jsx)(`ul`,{className:`dash-alertcard-list`,children:i})]}),t[3]=i,t[4]=a),a}function We(e){return(0,z.jsx)(He,{tripwire:e},e.id)}var Ge={1:`S`,2:`M`,3:`L`};function $(e){let t=(0,F.c)(120),{id:n}=e,r=ne(),i;t[0]!==r||t[1]!==n?(i=r.find(e=>e.id===n)??null,t[0]=r,t[1]=n,t[2]=i):i=t[2];let o=i,[c,l]=(0,I.useState)(!1),[u,m]=(0,I.useState)(!1),h;t[3]===o?.widgets?h=t[4]:(h=o?.widgets.map(Ze)??[],t[3]=o?.widgets,t[4]=h);let _=h,v;t[5]===o?v=t[6]:(v=e=>o&&f(o.id,e),t[5]=o,t[6]=v);let y=_e(_,v),b;t[7]===o?.widgets?b=t[8]:(b=new Map((o?.widgets??[]).map(Xe)),t[7]=o?.widgets,t[8]=b);let x=b,S,C;t[9]===o?(S=t[10],C=t[11]):(S=()=>{o&&s(o.widgets.map(Ye))},C=[o],t[9]=o,t[10]=S,t[11]=C),(0,I.useEffect)(S,C);let w=o?.id,T,D;t[12]===w?(T=t[13],D=t[14]):(T=()=>{w&&p(w)},D=[w],t[12]=w,t[13]=T,t[14]=D),(0,I.useEffect)(T,D);let[O,ie]=(0,I.useState)(Je),k,A;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(A=()=>{let e=window.setInterval(()=>ie(Date.now()),3e4);return()=>window.clearInterval(e)},k=[],t[15]=k,t[16]=A):(k=t[15],A=t[16]),(0,I.useEffect)(A,k);let[j]=te(),M=re(o?.id??``),[N,ce]=(0,I.useState)(`idle`),ue;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(ue=async e=>{ce(`busy`);let t=await se(e);ce(t===`no-model`||t===`failed`||t===`unverified`?t:`idle`)},t[17]=ue):ue=t[17];let de=ue,[P,fe]=(0,I.useState)(`idle`),pe;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(pe=async e=>{fe(`busy`);let t=await le(e);fe(t===`no-model`||t===`failed`?t:`idle`)},t[18]=pe):pe=t[18];let me=pe;if(!o){let e;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,z.jsx)(`p`,{className:`dash-empty-title`,children:`That dashboard isn’t here.`}),t[19]=e):e=t[19];let n;return t[20]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,z.jsx)(`div`,{className:`dash-detail`,children:(0,z.jsxs)(`div`,{className:`dash-empty`,children:[e,(0,z.jsxs)(`p`,{className:`dash-empty-how`,children:[`It may have been removed. `,(0,z.jsx)(`a`,{href:E.gallery,children:`Back to your dashboards →`})]})]})}),t[20]=n):n=t[20],n}let ge;t[21]===o.id?ge=t[22]:(ge=(e,t)=>{g(o.id,e,t>=3?1:t+1)},t[21]=o.id,t[22]=ge);let ve=ge,ye;t[23]!==x||t[24]!==ve||t[25]!==o||t[26]!==c||t[27]!==y?(ye=y.order.map(e=>{let t=x.get(e);if(!t)return null;let n=t.metricId?o.metrics.find(e=>e.id===t.metricId):null,r=!c&&n?.blankKey?(0,z.jsx)(Ee,{dashboardId:o.id,metric:n}):void 0;return(0,z.jsx)(Ce,{dashboard:o,widget:t,editing:c,dragging:y.draggingId===t.id,footer:r,children:c&&(0,z.jsxs)(`div`,{className:`dash-tile-chrome`,children:[(0,z.jsx)(`span`,{className:`dash-tile-handle`,...y.handleProps(t.id),children:`⠿`}),(0,z.jsxs)(`div`,{className:`dash-tile-ctrls`,children:[(0,z.jsx)(`button`,{type:`button`,className:`dash-tile-size`,onClick:()=>ve(t.id,t.span),title:`Resize`,children:Ge[t.span]}),(0,z.jsx)(`button`,{type:`button`,className:`dash-tile-x`,onClick:()=>d(o.id,t.id),"aria-label":`Remove widget`,children:`×`})]})]})},t.id)}),t[23]=x,t[24]=ve,t[25]=o,t[26]=c,t[27]=y,t[28]=ye):ye=t[28];let be=ye,xe;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(xe=(0,z.jsx)(`a`,{className:`dash-back`,href:E.gallery,"aria-label":`Back to dashboards`,children:`←`}),t[29]=xe):xe=t[29];let L;t[30]===o.title?L=t[31]:(L=(0,z.jsx)(`span`,{className:`dash-detail-title`,children:o.title}),t[30]=o.title,t[31]=L);let R;t[32]===o.question?R=t[33]:(R=o.question&&(0,z.jsxs)(`span`,{className:`dash-detail-q`,title:o.question,children:[`“`,o.question,`”`]}),t[32]=o.question,t[33]=R);let Se;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(Se=(0,z.jsx)(`i`,{className:`dash-live-dot`}),t[34]=Se):Se=t[34];let B;t[35]!==o||t[36]!==M||t[37]!==O?(B=M?`checking for new data…`:oe(o,O),t[35]=o,t[36]=M,t[37]=O,t[38]=B):B=t[38];let we=!M&&ae(o)&&o.cadence.data!==`manual`?` · refreshes while open`:``,V;t[39]!==B||t[40]!==we?(V=(0,z.jsxs)(`span`,{className:`dash-detail-clock`,children:[Se,B,we]}),t[39]=B,t[40]=we,t[41]=V):V=t[41];let H;t[42]===o.id?H=t[43]:(H=()=>void de(o.id),t[42]=o.id,t[43]=H);let De=N===`busy`,Oe=N===`busy`?`dash-refresh-spin`:void 0,ke;t[44]===Oe?ke=t[45]:(ke=(0,z.jsx)(a.refresh,{className:Oe}),t[44]=Oe,t[45]=ke);let Ae=N===`busy`?`Refreshing…`:`Refresh now`,U;t[46]!==H||t[47]!==De||t[48]!==ke||t[49]!==Ae?(U=(0,z.jsxs)(`button`,{type:`button`,className:`dash-edit-btn dash-refresh-btn`,onClick:H,disabled:De,title:`Fetch current values now, regardless of cadence`,children:[ke,Ae]}),t[46]=H,t[47]=De,t[48]=ke,t[49]=Ae,t[50]=U):U=t[50];let W;t[51]!==o||t[52]!==j||t[53]!==N?(W=(N===`no-model`||!ee(j)&&ae(o))&&(0,z.jsx)(`span`,{className:`dash-refresh-hint`,children:`Connect a model in Live settings to refresh.`}),t[51]=o,t[52]=j,t[53]=N,t[54]=W):W=t[54];let G;t[55]===N?G=t[56]:(G=N===`failed`&&(0,z.jsx)(`span`,{className:`dash-refresh-hint`,children:`Couldn’t reach your model — check its key or quota, then try again.`}),t[55]=N,t[56]=G);let K;t[57]===N?K=t[58]:(K=N===`unverified`&&(0,z.jsx)(`span`,{className:`dash-refresh-hint`,children:`Checked, but no source could verify new values — keeping the last real ones.`}),t[57]=N,t[58]=K);let q;t[59]!==o.id||t[60]!==o.metrics.length||t[61]!==P?(q=o.metrics.length>0&&(0,z.jsxs)(`button`,{type:`button`,className:`dash-edit-btn dash-read-btn`,onClick:()=>void me(o.id),disabled:P===`busy`,title:`Ask Mavéa to read the latest numbers now`,children:[(0,z.jsx)(a.sparkle,{className:P===`busy`?`dash-refresh-spin`:void 0}),P===`busy`?`Reading…`:`Read the numbers now`]}),t[59]=o.id,t[60]=o.metrics.length,t[61]=P,t[62]=q):q=t[62];let J;t[63]===P?J=t[64]:(J=P===`no-model`&&(0,z.jsx)(`span`,{className:`dash-refresh-hint`,children:`Connect a model in Live settings to read.`}),t[63]=P,t[64]=J);let Y;t[65]===P?Y=t[66]:(Y=P===`failed`&&(0,z.jsx)(`span`,{className:`dash-refresh-hint`,children:`Couldn’t reach your model — check its key or quota, then try again.`}),t[65]=P,t[66]=Y);let Pe=`dash-edit-btn`+(c?` is-active`:``),Fe;t[67]===Symbol.for(`react.memo_cache_sentinel`)?(Fe=()=>{l(qe),m(!1)},t[67]=Fe):Fe=t[67];let Ie=c?`Done`:`Edit layout`,X;t[68]!==Pe||t[69]!==Ie?(X=(0,z.jsx)(`button`,{type:`button`,className:Pe,onClick:Fe,children:Ie}),t[68]=Pe,t[69]=Ie,t[70]=X):X=t[70];let Re;t[71]===o.id?Re=t[72]:(Re=E.settings(o.id),t[71]=o.id,t[72]=Re);let ze;t[73]===Re?ze=t[74]:(ze=(0,z.jsx)(`a`,{className:`dash-gear`,href:Re,"aria-label":`Dashboard settings`,title:`Settings`,children:`⚙`}),t[73]=Re,t[74]=ze);let Z;t[75]!==L||t[76]!==R||t[77]!==V||t[78]!==U||t[79]!==W||t[80]!==G||t[81]!==K||t[82]!==q||t[83]!==J||t[84]!==Y||t[85]!==X||t[86]!==ze?(Z=(0,z.jsxs)(`header`,{className:`dash-detail-head`,children:[xe,L,R,V,U,W,G,K,q,J,Y,X,ze]}),t[75]=L,t[76]=R,t[77]=V,t[78]=U,t[79]=W,t[80]=G,t[81]=K,t[82]=q,t[83]=J,t[84]=Y,t[85]=X,t[86]=ze,t[87]=Z):Z=t[87];let Q;t[88]!==o||t[89]!==c?(Q=!c&&(0,z.jsx)(Ne,{dashboard:o}),t[88]=o,t[89]=c,t[90]=Q):Q=t[90];let Ve;t[91]!==o||t[92]!==M||t[93]!==c||t[94]!==O?(Ve=!c&&(0,z.jsx)(Me,{dashboard:o,now:O,checking:M}),t[91]=o,t[92]=M,t[93]=c,t[94]=O,t[95]=Ve):Ve=t[95];let He;t[96]!==o||t[97]!==c||t[98]!==O?(He=!c&&(0,z.jsx)(Le,{dashboard:o,now:O}),t[96]=o,t[97]=c,t[98]=O,t[99]=He):He=t[99];let We;t[100]!==o||t[101]!==c||t[102]!==u?(We=c&&(0,z.jsxs)(`div`,{className:`dash-edit-bar`,children:[(0,z.jsxs)(`span`,{className:`dash-edit-hint`,children:[`Drag a tile by its `,(0,z.jsx)(`strong`,{children:`⠿`}),` handle to reorder, tap `,(0,z.jsx)(`strong`,{children:`S/M/L`}),` to resize, `,(0,z.jsx)(`strong`,{children:`×`}),` to remove.`]}),(0,z.jsx)(`button`,{type:`button`,className:`dash-edit-add`,onClick:()=>m(Ke),"aria-expanded":u,children:`+ Add widget`}),u&&(0,z.jsx)(Te,{dashboard:o,onClose:()=>m(!1)})]}),t[100]=o,t[101]=c,t[102]=u,t[103]=We):We=t[103];let $;t[104]!==o||t[105]!==c||t[106]!==O||t[107]!==be?($=c?(0,z.jsx)(`div`,{className:`dash-grid`,children:be}):(0,z.jsxs)(`div`,{className:`dash-detail-cols`,children:[(0,z.jsxs)(`div`,{className:`dash-detail-main`,children:[o.widgets.length>0&&(0,z.jsxs)(`div`,{className:`dash-detail-section`,children:[(0,z.jsx)(`div`,{className:`card-eyebrow dash-detail-section-title`,children:`Cards`}),(0,z.jsx)(`div`,{className:`dash-grid`,children:be})]}),(0,z.jsx)(he,{dashboardId:o.id,now:O})]}),(0,z.jsxs)(`div`,{className:`dash-detail-side`,children:[(0,z.jsx)(Be,{dashboard:o,now:O}),(0,z.jsx)(Ue,{dashboard:o})]})]}),t[104]=o,t[105]=c,t[106]=O,t[107]=be,t[108]=$):$=t[108];let Qe;t[109]!==o||t[110]!==c?(Qe=!c&&(0,z.jsx)(je,{dashboard:o},o.id),t[109]=o,t[110]=c,t[111]=Qe):Qe=t[111];let $e;return t[112]!==Z||t[113]!==Q||t[114]!==Ve||t[115]!==He||t[116]!==We||t[117]!==$||t[118]!==Qe?($e=(0,z.jsxs)(`div`,{className:`dash-detail`,children:[Z,Q,Ve,He,We,$,Qe]}),t[112]=Z,t[113]=Q,t[114]=Ve,t[115]=He,t[116]=We,t[117]=$,t[118]=Qe,t[119]=$e):$e=t[119],$e}function Ke(e){return!e}function qe(e){return!e}function Je(){return Date.now()}function Ye(e){return e.block}function Xe(e){return[e.id,e]}function Ze(e){return e.id}export{$ as DashboardDetail};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashboardLoopRuntime-CAnZX234.js","assets/useDashboardLoop-B_YA5jLs.js","assets/rolldown-runtime-DkW27tQK.js","assets/react-BZJXY1be.js","assets/compiler-runtime-qQQXpJgv.js","assets/preload-helper-CiWYd9n-.js","assets/http-Lar_UMKb.js","assets/store-B39HvB_l.js","assets/friendlyAsk-BBdRZIar.js","assets/contentVault-xfUwSJ3i.js","assets/keyVault-Aw5Y2PjT.js","assets/providers-B2OCzEo1.js","assets/blockTypes-DUDdP3pB.js","assets/info-CiqHR5cs.js","assets/attachments-BW-vki-E.js","assets/useLiveConfig-DWz7BRdk.js","assets/json-B0N3XRZU.js","assets/number-Bmf7DqLj.js","assets/ledger-Cv0LBflx.js","assets/dataPending-lZUzUEo6.js","assets/format-rPI6ZwwH.js","assets/now-C9-UAzTC.js","assets/predictions-CkVKHq-5.js","assets/notify-Bz4wuE4T.js","assets/dashboardEvents-D-wLCp1A.js","assets/spokenText-C88IQJ0M.js","assets/kokoro-CdL8Kl48.js","assets/index-CfcUMOBf.js","assets/useInView-CXTOAEV3.js","assets/jsx-runtime-DeHZSEgm.js","assets/coreIcons-BzqW7Qiz.js","assets/preloadableLazy-MIX1ApBW.js","assets/cachedImport-DW0gP14h.js","assets/lazyRetry-D50B1UMY.js","assets/theme-7IrMJ70_.js","assets/index-D4FIsool.css"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{t as a}from"./preloadableLazy-MIX1ApBW.js";import{a as o,s}from"./index-CfcUMOBf.js";import{t as c}from"./useDashboards-GafZIADI.js";var l=t(),u=e(),d=n();r();var f=a(()=>i(()=>import(`./DashboardLoopRuntime-CAnZX234.js`).then(e=>({default:e.DashboardLoopRuntime})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]))).Component;function p(){let e=(0,l.c)(1),t=(0,u.useSyncExternalStore)(s,o,m),n=c();if(!t||n.length===0)return null;let r;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,d.jsx)(u.Suspense,{fallback:null,children:(0,d.jsx)(f,{})}),e[0]=r):r=e[0],r}function m(){return!1}export{p as DashboardLoopGate};
@@ -1 +0,0 @@
1
- import{r as e}from"./useDashboardLoop-B_YA5jLs.js";function t(){return e(),null}export{t as DashboardLoopRuntime};