@mavea/mavea 1.0.17 → 1.0.18

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 (670) hide show
  1. package/DISCLAIMER.md +4 -1
  2. package/PRIVACY.md +14 -8
  3. package/README.md +61 -23
  4. package/TERMS.md +11 -1
  5. package/THIRD-PARTY.txt +25248 -621
  6. package/bin/mavea.mjs +156 -147
  7. package/dist/.vite/manifest.json +2159 -1730
  8. package/dist/assets/AnnotationLayer-ClU-e6qL.css +1 -0
  9. package/dist/assets/AnnotationLayer-DHHGgh8x.js +2 -0
  10. package/dist/assets/AppCommandPalette-DKBglbNo.js +1 -0
  11. package/dist/assets/AtlasView-B82UfrEX.js +1 -0
  12. package/dist/assets/BlockEmpty-B82uCse8.js +1 -0
  13. package/dist/assets/BriefingPlayer-C0D_2ILa.js +1 -0
  14. package/dist/assets/CanvasSkeleton-Bx0s36b_.js +2 -0
  15. package/dist/assets/CardEditor-DABIhGdQ.js +1 -0
  16. package/dist/assets/CheckLogRail-BOaXnqWK.css +1 -0
  17. package/dist/assets/CheckLogRail-Btg7Linv.js +1 -0
  18. package/dist/assets/{CodeOutput-H8TQzjqL.js → CodeOutput-DF892aIR.js} +3 -3
  19. package/dist/assets/CommandPalette-DagPdSGZ.js +1 -0
  20. package/dist/assets/ConversationVideoStudio-CIAMxElj.css +1 -0
  21. package/dist/assets/ConversationVideoStudio-EPw6H4lE.js +1 -0
  22. package/dist/assets/CourseLessonReader-DeAuL1tO.js +2 -0
  23. package/dist/assets/CourseRail-Dx9IIbTZ.js +1 -0
  24. package/dist/assets/CoursesApp-CzUGaYWZ.js +2 -0
  25. package/dist/assets/CrossExamPanel-CdIYUu-B.js +1 -0
  26. package/dist/assets/DashPresent-DXwesMIr.js +1 -0
  27. package/dist/assets/DashboardDetail-CJzB85NC.js +2 -0
  28. package/dist/assets/DashboardLoopRuntime-CEnUpS-I.js +1 -0
  29. package/dist/assets/DashboardOverview-C3hv9sm1.js +1 -0
  30. package/dist/assets/DashboardSettings-CmZWG3US.js +1 -0
  31. package/dist/assets/{DashboardsApp-Dx-EsaPW.css → DashboardsApp-B6yUtkKB.css} +1 -1
  32. package/dist/assets/DashboardsApp-wCgs98G0.js +2 -0
  33. package/dist/assets/{DeepZoomApp-CQaTT2Uh.js → DeepZoomApp-CwqKpjo7.js} +2 -2
  34. package/dist/assets/DelegatePanel-Bi1qPgGG.js +33 -0
  35. package/dist/assets/DemoGallery-Cg0ykVpG.js +1 -0
  36. package/dist/assets/DropSelect-C3g0PjuN.js +1 -0
  37. package/dist/assets/DropSelect-DilESAgA.css +1 -0
  38. package/dist/assets/ExportModal-rxndDhoO.js +2 -0
  39. package/dist/assets/ExtractionPreview-ChRAimKr.js +18 -0
  40. package/dist/assets/{FallbackCard-B489rTd9.js → FallbackCard-ap_4wOfj.js} +1 -1
  41. package/dist/assets/FeatureUseNotice-BhljPjUv.js +1 -0
  42. package/dist/assets/FlagshipCTA-uoeGMQas.js +1 -0
  43. package/dist/assets/FlagshipCommandPalette-DyNsP8k3.js +1 -0
  44. package/dist/assets/FlagshipShowcase-DHpGPlca.js +1 -0
  45. package/dist/assets/FlashcardsApp-Cm50X3Hl.js +1 -0
  46. package/dist/assets/ForecastPanel-zPUh2ClQ.js +1 -0
  47. package/dist/assets/GalleryApp-BFop9Eu7.js +1 -0
  48. package/dist/assets/{HonestByDesign-CCOt31nx.js → HonestByDesign-HeTTCiis.js} +1 -1
  49. package/dist/assets/{HowItWorks-auW5XXCZ.js → HowItWorks-gAuUl7VQ.js} +1 -1
  50. package/dist/assets/LegalApp-jOlpLQSV.js +1 -0
  51. package/dist/assets/{LegalMarkdownDocument-DBjLz9Yf.js → LegalMarkdownDocument-RSNiyAu0.js} +2 -2
  52. package/dist/assets/LegalPageShell-CmxGCdqJ.css +1 -0
  53. package/dist/assets/LegalPageShell-Cr90l1I2.js +1 -0
  54. package/dist/assets/LeverPanel-D1SNRGdm.js +1 -0
  55. package/dist/assets/Library-DmdzY2se.js +1 -0
  56. package/dist/assets/LibraryOverlay-DEQ5GuIs.js +1 -0
  57. package/dist/assets/LiveApp-Bl7WBgqJ.css +1 -0
  58. package/dist/assets/LiveApp-CUoQgVo1.js +62 -0
  59. package/dist/assets/LiveSettings-jn26sH4v.js +6 -0
  60. package/dist/assets/MindMapViewerDrawer-CDDzzpFi.js +1 -0
  61. package/dist/assets/MindShape-BeZFay7O.js +1 -0
  62. package/dist/assets/MindShape-CaPeUo-a.css +1 -0
  63. package/dist/assets/{Orb-B0NEVfqL.js → Orb-D8lhTdmY.js} +1 -1
  64. package/dist/assets/PinToDashboard-CSqwDBLD.js +1 -0
  65. package/dist/assets/PlanReview-ChZeUHQO.js +1 -0
  66. package/dist/assets/Presence-CKSoyuhE.js +1 -0
  67. package/dist/assets/PresentationDeck-Dj9MQVZC.js +1 -0
  68. package/dist/assets/PrismApp-Dfs6eAuR.js +2 -0
  69. package/dist/assets/PrismAskController-CSsCkRC8.js +37 -0
  70. package/dist/assets/PrismBriefingPlayer-BoB_PCTT.js +2 -0
  71. package/dist/assets/PrismOverlay-CGtr7lBl.js +109 -0
  72. package/dist/assets/PrismWorkbench-f0rLNBxb.js +1 -0
  73. package/dist/assets/{PrivacyApp-rhzy-5HG.js → PrivacyApp-CFs0PM5C.js} +16 -10
  74. package/dist/assets/Recap-T9DtFaEk.js +1 -0
  75. package/dist/assets/ReelJelly-D5e-jt-8.js +1 -0
  76. package/dist/assets/ReplayCard-BkJbY0-I.js +2 -0
  77. package/dist/assets/ReplayCard-Cs6mzTRa.css +1 -0
  78. package/dist/assets/ReplayOverlay-Dm_k7FBA.js +1 -0
  79. package/dist/assets/ReplayOverlay-DzkcTnCA.css +1 -0
  80. package/dist/assets/RewindOverlay-BSDbLgcN.js +1 -0
  81. package/dist/assets/RippleApp-DW1rpKHe.js +2 -0
  82. package/dist/assets/RippleAskController-CywVzqUA.js +34 -0
  83. package/dist/assets/RippleOverlay-DVxfWEQ8.js +6 -0
  84. package/dist/assets/SeeDontRead-Ct4PY63d.js +1 -0
  85. package/dist/assets/ShareModal-BILPvqjZ.js +2 -0
  86. package/dist/assets/{ShareModal-PobtP7AJ.css → ShareModal-D1QuQEko.css} +1 -1
  87. package/dist/assets/ShipCascade-Bf-qDWMb.js +1 -0
  88. package/dist/assets/ShipCourse-DGj9BbRM.js +1 -0
  89. package/dist/assets/{ShipGate-BYYu9WVq.js → ShipGate-D4BP41-h.js} +1 -1
  90. package/dist/assets/ShipHotspots-lGioTtf1.js +1 -0
  91. package/dist/assets/{ShipIncident-Xod2gbjc.js → ShipIncident-DMLb14Lx.js} +1 -1
  92. package/dist/assets/ShipMigration-ZnzL-1rC.js +1 -0
  93. package/dist/assets/ShipOnboarding-DUxtx2Vr.js +1 -0
  94. package/dist/assets/ShipRead-CJJmY-wy.js +1 -0
  95. package/dist/assets/ShipRollout-Dt2TgI0L.js +1 -0
  96. package/dist/assets/ShipSuggestions-BrAXTjAR.js +1 -0
  97. package/dist/assets/ShipWorkspace-_MtKAiKH.js +2 -0
  98. package/dist/assets/SignatureLoop-CfM-rTXb.js +1 -0
  99. package/dist/assets/SrsReview-B1B2VekR.css +1 -0
  100. package/dist/assets/SrsReview-DhWNYYv7.js +1 -0
  101. package/dist/assets/SynthesisApp-C43ZO6Ew.js +2 -0
  102. package/dist/assets/SynthesisOverlay-Dunk_JWD.js +66 -0
  103. package/dist/assets/{TermsApp-Dk2jpxq-.js → TermsApp-BUQa48cB.js} +13 -3
  104. package/dist/assets/TopbarMenu-DQXxqSWY.js +1 -0
  105. package/dist/assets/TopicCanvas-DR26Swr_.js +2 -0
  106. package/dist/assets/TourPrism-zt1LIaLd.js +1 -0
  107. package/dist/assets/TrackerTile-sYD2MM_4.js +2 -0
  108. package/dist/assets/TwoSurfaces-CLOIlVvY.js +1 -0
  109. package/dist/assets/UnderstoodPanel-DmJph4el.js +1 -0
  110. package/dist/assets/WhyMachineOverlay-Nll4Wco-.js +1 -0
  111. package/dist/assets/WowFeatures-CNVwRlf0.js +1 -0
  112. package/dist/assets/ZoomDeck-DNgyW7Nm.js +1 -0
  113. package/dist/assets/__vite-browser-external-gfE6fZcA.js +1 -0
  114. package/dist/assets/alternateFinishes-Cgks49KV.js +494 -0
  115. package/dist/assets/annotationAuto-C9weSF2k.js +1 -0
  116. package/dist/assets/annotationReel-va1i-lKs.js +1 -0
  117. package/dist/assets/annotations-CftUUB13.js +1 -0
  118. package/dist/assets/attachments-BW-vki-E.js +1 -0
  119. package/dist/assets/backup-D--1WRte.js +1 -0
  120. package/dist/assets/blockLabel-FogyzEQY.js +1 -0
  121. package/dist/assets/blockTypes-CgNGx27_.js +1 -0
  122. package/dist/assets/buildShip-BgFg98tH.js +1 -0
  123. package/dist/assets/cache-CvbSI-pr.js +1 -0
  124. package/dist/assets/canvas-DIs20T9l.js +1 -0
  125. package/dist/assets/capture-BBxyt5SN.js +2 -0
  126. package/dist/assets/catalog-Db9GWM6N.js +1 -0
  127. package/dist/assets/{cfo.generated-Bjl5OGay.js → cfo.generated-j5CXp1Zz.js} +1 -1
  128. package/dist/assets/chapters-Dqm4iLDa.js +1 -0
  129. package/dist/assets/charts2-CaKGzkgJ.js +1 -0
  130. package/dist/assets/checkLogModel-BMtruriG.js +1 -0
  131. package/dist/assets/{citation-BcvmjKS8.js → citation-BsSvaaer.js} +1 -1
  132. package/dist/assets/{codeContext-0UMRSGRr.js → codeContext-goNoLAIr.js} +1 -1
  133. package/dist/assets/compiler-runtime-qQQXpJgv.js +1 -0
  134. package/dist/assets/{compose-BJ9EfcQS.js → compose-D-OsDiU9.js} +1 -1
  135. package/dist/assets/confirmAdd-BDNV8RqF.js +1 -0
  136. package/dist/assets/{contentVault-DzTYWcbD.js → contentVault-xfUwSJ3i.js} +1 -1
  137. package/dist/assets/coreIcons-BzqW7Qiz.js +1 -0
  138. package/dist/assets/cpp-CJIxL8VH.js +1 -0
  139. package/dist/assets/cpp-Cts1PyIS.js +1 -0
  140. package/dist/assets/dash-composer-DeNWVwpU.css +1 -0
  141. package/dist/assets/dashboardEvents-BDKxoLch.js +2 -0
  142. package/dist/assets/dashboards-Dy4MTJQ5.css +1 -0
  143. package/dist/assets/dataPending-lZUzUEo6.js +1 -0
  144. package/dist/assets/{diagrams-CaSfjT4I.js → diagrams-1DJMD4j-.js} +1 -1
  145. package/dist/assets/dist-DRo0JOkC.js +14 -0
  146. package/dist/assets/{dist-DIKAXwpM.js → dist-kNHRtoqd.js} +21 -21
  147. package/dist/assets/empty-BO1NC9qY.js +1 -0
  148. package/dist/assets/{explode-WBykfhqW.js → explode-fgkkWz8o.js} +1 -1
  149. package/dist/assets/facts-BUGuVUIc.js +1 -0
  150. package/dist/assets/fit-CMu7prjb.js +1 -0
  151. package/dist/assets/fitText-DQ2omSN0.js +1 -0
  152. package/dist/assets/format-q0LwBjID.js +1 -0
  153. package/dist/assets/{format-hc2QOoIu.js → format-rPI6ZwwH.js} +1 -1
  154. package/dist/assets/friendlyAsk-BBdRZIar.js +1 -0
  155. package/dist/assets/{generate-8odaTyr4.js → generate-CemSUZ8A.js} +3 -3
  156. package/dist/assets/generateBeats-aqKTlSN2.js +1 -0
  157. package/dist/assets/{generateCourse-Cj_-vDWu.js → generateCourse-BIBbw-ZJ.js} +1 -1
  158. package/dist/assets/generateLive-BsXn4Y_d.js +51 -0
  159. package/dist/assets/githubBrowser-BDiuD9dz.js +1 -0
  160. package/dist/assets/githubToken-Bwa7V9YT.js +1 -0
  161. package/dist/assets/history-D2EH2X6D.js +1 -0
  162. package/dist/assets/homeTarget-CsO8nY7z.js +1 -0
  163. package/dist/assets/http-Lar_UMKb.js +2 -0
  164. package/dist/assets/{icons-CHVz6kv_.js → icons-gLFQTv74.js} +1 -1
  165. package/dist/assets/incident-D3bmMmES.js +10 -0
  166. package/dist/assets/index-B69GkoTc.css +1 -0
  167. package/dist/assets/index-D1SPhBGd.js +22 -0
  168. package/dist/assets/index.es-yrxxdux0.js +5 -0
  169. package/dist/assets/jspdf.es.min-Bbaa2Qun.js +79 -0
  170. package/dist/assets/jsx-runtime-DeHZSEgm.js +1 -0
  171. package/dist/assets/katex-CiJ_n4H9.js +257 -0
  172. package/dist/assets/keyVault-Aw5Y2PjT.js +1 -0
  173. package/dist/assets/kokoro-C6P0LV4L.js +1 -0
  174. package/dist/assets/layout-CEoNLr-w.js +1 -0
  175. package/dist/assets/{layout-CkO0Psde.js → layout-CHn3XWJd.js} +1 -1
  176. package/dist/assets/learn-CXstDWJf.js +1 -0
  177. package/dist/assets/ledger-Cv0LBflx.js +1 -0
  178. package/dist/assets/lib-B7OE1ZQQ.js +1 -0
  179. package/dist/assets/liveSchema-B8OByCPH.js +99 -0
  180. package/dist/assets/maplibre-gl-CrDadnl3.js +801 -0
  181. package/dist/assets/maplibre-gl-worker-DZ7nj4vd.js +11 -0
  182. package/dist/assets/{mastery-D7xYf5D7.js → mastery-CUfDeuqO.js} +2 -2
  183. package/dist/assets/{media-CsrUl279.js → media-BvwzACIX.js} +1 -1
  184. package/dist/assets/{model-BE0UHu1w.js → model-BsQ5ixwB.js} +1 -1
  185. package/dist/assets/motion-BY_Egaxm.js +1 -0
  186. package/dist/assets/motion-DxHSlPN6.js +1 -0
  187. package/dist/assets/{neighborhoods-DFqKm9Xi.js → neighborhoods-D7QjURnE.js} +1 -1
  188. package/dist/assets/notes-U6gRKVHk.js +1 -0
  189. package/dist/assets/officeDoc-Dn8jw1fG.js +3 -0
  190. package/dist/assets/openchemlib-Cz_MN0FG.js +23 -0
  191. package/dist/assets/{owners-FXDGInVq.js → owners-HRBX7JN_.js} +1 -1
  192. package/dist/assets/parseDiff-D8uBQ9mQ.js +2 -0
  193. package/dist/assets/pdf-CUAVYiYW.js +54 -0
  194. package/dist/assets/pdf.worker.min-CHFwMXne.mjs +29 -0
  195. package/dist/assets/pen-D9UT-ioQ.js +24 -0
  196. package/dist/assets/{perfProbe-Xs39DqMh.js → perfProbe-BxyiHsI2.js} +1 -1
  197. package/dist/assets/{php-CYrBA5iX.js → php-CQT4wx5i.js} +1 -1
  198. package/dist/assets/pin-D-4Zjiik.css +1 -0
  199. package/dist/assets/pin-qQrH_dBi.js +1 -0
  200. package/dist/assets/planTracker-CjnznF7v.js +1 -0
  201. package/dist/assets/portal-t0bsUEg2.js +1 -0
  202. package/dist/assets/{pptxgen.es-CveAizg8.js → pptxgen.es-zw8PIOkD.js} +11 -11
  203. package/dist/assets/predictions-CkVKHq-5.js +1 -0
  204. package/dist/assets/preload-helper-CiWYd9n-.js +1 -0
  205. package/dist/assets/preloadableLazy-MIX1ApBW.js +1 -0
  206. package/dist/assets/{prewarm-K5WcvrNh.js → prewarm-CAZcnT4x.js} +1 -1
  207. package/dist/assets/prism.generated-BQkO5r6r.js +41 -0
  208. package/dist/assets/{prismExtract.worker-Cws9K1NG.js → prismExtract.worker-OxGWMXXN.js} +1 -1
  209. package/dist/assets/prismGround.worker-C9hyveb3.js +1 -0
  210. package/dist/assets/prismLayout.worker-CJa4orCT.js +1 -0
  211. package/dist/assets/providers-DdJWf_PE.js +1 -0
  212. package/dist/assets/purify.es-JEAr64Sr.js +3 -0
  213. package/dist/assets/{queue-J4h7E3uc.js → queue-Adae4IzW.js} +1 -1
  214. package/dist/assets/quietHours-_i5Uqz7z.js +1 -0
  215. package/dist/assets/quizResult-DB8yeqDr.js +1 -0
  216. package/dist/assets/react-BZJXY1be.js +1 -0
  217. package/dist/assets/ready-4lPJes2S.js +1 -0
  218. package/dist/assets/ready-LSwk88I-.js +1 -0
  219. package/dist/assets/{reference-sJzyMiL4.js → reference-BjexflMu.js} +1 -1
  220. package/dist/assets/registry-4mMEt1Xy.css +1 -0
  221. package/dist/assets/registry-7poQfBaM.js +4 -0
  222. package/dist/assets/registry-9QjeHgKs.js +1 -0
  223. package/dist/assets/registry-B0GIHERt.js +1 -0
  224. package/dist/assets/{registry-DpaaVbmL.css → registry-B1KQ1VPZ.css} +1 -1
  225. package/dist/assets/registry-B5S3brjM.css +1 -0
  226. package/dist/assets/registry-BFbfXK-W.js +1 -0
  227. package/dist/assets/registry-BSX3aFUw.js +1 -0
  228. package/dist/assets/registry-Bv1f5UU4.js +2 -0
  229. package/dist/assets/registry-BzH7mEl7.js +1 -0
  230. package/dist/assets/registry-C28gYnVq.js +1 -0
  231. package/dist/assets/registry-COkvZrNA.css +1 -0
  232. package/dist/assets/registry-CPImC7mO.js +1 -0
  233. package/dist/assets/registry-CPiwQhAm.js +1 -0
  234. package/dist/assets/registry-CcOO8UZr.js +1 -0
  235. package/dist/assets/registry-Ci65uThi.js +1 -0
  236. package/dist/assets/registry-CkScyZGa.js +1 -0
  237. package/dist/assets/registry-CtvKPLd7.js +1 -0
  238. package/dist/assets/{registry-upbw6pyj.css → registry-CuVk7MAI.css} +1 -1
  239. package/dist/assets/{registry-D5oMqeSa.js → registry-CueC1vq1.js} +1 -1
  240. package/dist/assets/registry-CvylL2BN.css +1 -0
  241. package/dist/assets/registry-CxUmdwDk.js +1 -0
  242. package/dist/assets/registry-D8O0apUT.js +2 -0
  243. package/dist/assets/registry-DLyrLfe-2.js +1 -0
  244. package/dist/assets/registry-DO4hGO5e.js +1 -0
  245. package/dist/assets/{registry-Xzq_Rpmm.css → registry-DScSjt8p.css} +1 -1
  246. package/dist/assets/registry-Daypk4uR.js +1 -0
  247. package/dist/assets/registry-Dd1lcXrO.js +2 -0
  248. package/dist/assets/{registry-DWcNVyI2.css → registry-DpMI23iE.css} +1 -1
  249. package/dist/assets/registry-NbNNn_ra.js +1 -0
  250. package/dist/assets/registry-Vp8VuMV0.js +9 -0
  251. package/dist/assets/registry-WHd1PwU3.js +1 -0
  252. package/dist/assets/registry-Xl8mAnKq.js +1 -0
  253. package/dist/assets/registry-tkd3UhWn.css +1 -0
  254. package/dist/assets/{registry-ei6fIgBT.css → registry-twSIyxJQ.css} +1 -1
  255. package/dist/assets/registry-types-D3q_LrlV.js +1 -0
  256. package/dist/assets/registry-w4R6c89s.js +48 -0
  257. package/dist/assets/{relate-CEND9Qlk.js → relate-DHPSGB7a.js} +1 -1
  258. package/dist/assets/replay-zh4xVk5G.js +1 -0
  259. package/dist/assets/rolldown-runtime-DkW27tQK.js +1 -0
  260. package/dist/assets/route-D4kd-D3B.js +1 -0
  261. package/dist/assets/{ruby-BhrksQMt.js → ruby-D_UtGFHI.js} +1 -1
  262. package/dist/assets/{run-Dc2ZJz6n.js → run-BdDyp6Xv.js} +2 -2
  263. package/dist/assets/run-ByCJN-29.js +23 -0
  264. package/dist/assets/run-DiPX83_J.js +21 -0
  265. package/dist/assets/safeImageUrl-BINWXOTz.js +1 -0
  266. package/dist/assets/screen-DFWKge3-.js +1 -0
  267. package/dist/assets/search-ZN7v_P5B.js +1 -0
  268. package/dist/assets/shapes-DI0LQC8n.js +1 -0
  269. package/dist/assets/shard005-Dp5TM33O.js +1 -0
  270. package/dist/assets/shard006-DpJfkjmW.js +1 -0
  271. package/dist/assets/shard007-CIQN8OfZ.js +1 -0
  272. package/dist/assets/shard008-BFiyL7r6.js +1 -0
  273. package/dist/assets/shard009-0s30Tkk9.js +1 -0
  274. package/dist/assets/shard010-DPhgF5ck.js +1 -0
  275. package/dist/assets/shard011-C2jVsC25.js +1 -0
  276. package/dist/assets/shard012-DYtN5yzJ.js +1 -0
  277. package/dist/assets/shard013-1D6_Qy9C.js +1 -0
  278. package/dist/assets/shard014-D8s7GHnm.js +1 -0
  279. package/dist/assets/shard015-16W6KgnL.js +1 -0
  280. package/dist/assets/shard016-B4PpWmro.js +1 -0
  281. package/dist/assets/shard017-BO1sA5b3.js +1 -0
  282. package/dist/assets/shard018-D4gn8z25.js +1 -0
  283. package/dist/assets/shard019-vSbfaqRA.js +1 -0
  284. package/dist/assets/shard020-DwbHP8bp.js +1 -0
  285. package/dist/assets/{shard021-2FE-tze4.js → shard021-BhEyVVAL.js} +1 -1
  286. package/dist/assets/shard022-BdT7zFy3.js +1 -0
  287. package/dist/assets/shard023-Dga_NQcm.js +1 -0
  288. package/dist/assets/shard024-CXHofcxc.js +1 -0
  289. package/dist/assets/shard025-a4CQKYw1.js +1 -0
  290. package/dist/assets/shard026-0rhLKfDL.js +1 -0
  291. package/dist/assets/shard027-C9GMfOtn.js +1 -0
  292. package/dist/assets/shard028-D9__rPnw.js +1 -0
  293. package/dist/assets/shard029-BSdYKGgG.js +1 -0
  294. package/dist/assets/shard030-DceOU7pS.js +1 -0
  295. package/dist/assets/shard031-C6_p076r.js +1 -0
  296. package/dist/assets/shard032-Cah16sJi.js +1 -0
  297. package/dist/assets/shard033-D-iobGzc.js +1 -0
  298. package/dist/assets/shard034-DIyfCKl8.js +1 -0
  299. package/dist/assets/shard035-BHWs8v0a.js +1 -0
  300. package/dist/assets/shard036-AhOPHqzq.js +1 -0
  301. package/dist/assets/shard037-CuAGDOOu.js +1 -0
  302. package/dist/assets/shard038-CYdtnPjK.js +1 -0
  303. package/dist/assets/shard039-DgvXKOyi.js +1 -0
  304. package/dist/assets/shard040-DO012waT.js +1 -0
  305. package/dist/assets/shard041-BeUicA1R.js +1 -0
  306. package/dist/assets/shard042-D2zbq14A.js +1 -0
  307. package/dist/assets/shard043-BKoTEB-H.js +1 -0
  308. package/dist/assets/shard044-bmYKfH3A.js +1 -0
  309. package/dist/assets/shard045-i_R1olD9.js +1 -0
  310. package/dist/assets/shard046-CFk2L0GQ.js +1 -0
  311. package/dist/assets/shard047-pjHCnVaT.js +1 -0
  312. package/dist/assets/shard048-Cc7tGz6R.js +1 -0
  313. package/dist/assets/shard049-C9eoD-6Z.js +1 -0
  314. package/dist/assets/shard050-V3c_ZDrB.js +1 -0
  315. package/dist/assets/shard051-D1ISwZzf.js +1 -0
  316. package/dist/assets/shard052-Dy09xx3S.js +1 -0
  317. package/dist/assets/shard053-Bi4Z4cwW.js +1 -0
  318. package/dist/assets/shard054-BoC-LNYu.js +1 -0
  319. package/dist/assets/shard055-D2NJeMN1.js +1 -0
  320. package/dist/assets/shard056-sSFMbxXN.js +1 -0
  321. package/dist/assets/shard057-DhNK5nyZ.js +1 -0
  322. package/dist/assets/shard058-Du4SjxeD.js +1 -0
  323. package/dist/assets/shard059-fGiLnJzG.js +1 -0
  324. package/dist/assets/shard060-l84MDY2t.js +1 -0
  325. package/dist/assets/shard061-B3aIa7Aa.js +1 -0
  326. package/dist/assets/{shard061-C9A8iNiq.js → shard062-BJ8OX6CJ.js} +1 -1
  327. package/dist/assets/shard063-CMo-7Qit.js +1 -0
  328. package/dist/assets/shard064-B0EEOnfG.js +1 -0
  329. package/dist/assets/shard065-D-StlUHp.js +1 -0
  330. package/dist/assets/share-kW3pZ027.js +1 -0
  331. package/dist/assets/shikiHighlight-BwX78OP8.js +153 -0
  332. package/dist/assets/speed-K5_Ebj-8.js +1 -0
  333. package/dist/assets/spokenText-D3iS8fuI.js +1 -0
  334. package/dist/assets/spreadLabels-CQ8hufvK.js +1 -0
  335. package/dist/assets/src-DG1n-LFe.js +1 -0
  336. package/dist/assets/store-BWLbFXiY.js +1 -0
  337. package/dist/assets/{store-BMRQiV1z.js → store-BfHRbVKz.js} +1 -1
  338. package/dist/assets/store-D-f8ZuaK.js +1 -0
  339. package/dist/assets/store-D2IJF4SA.js +0 -0
  340. package/dist/assets/store-DpObYU1u.js +1 -0
  341. package/dist/assets/store-DpmbKVs7.js +1 -0
  342. package/dist/assets/store-gohr8YVT.js +1 -0
  343. package/dist/assets/{streamParse-DRgMHWye.js → streamParse-B-Gjwa9T.js} +1 -1
  344. package/dist/assets/svgLabel-BQMDdcT2.js +1 -0
  345. package/dist/assets/swift-CyEgAFGc.js +1 -0
  346. package/dist/assets/theme-f0mztBcq.js +1 -0
  347. package/dist/assets/threads-Cu2t3070.js +1 -0
  348. package/dist/assets/tiles-CBiVVjtT.css +1 -0
  349. package/dist/assets/tiles-pdNi6MGe.js +1 -0
  350. package/dist/assets/types-CaO6xOn5.js +1 -0
  351. package/dist/assets/useDashboardLoop-DuckIfJX.js +5 -0
  352. package/dist/assets/useDashboards-BMcuCWoz.js +1 -0
  353. package/dist/assets/{useFocusTrap-DbfG6zbM.js → useFocusTrap-DBtkeyRy.js} +1 -1
  354. package/dist/assets/useInView-CXTOAEV3.js +1 -0
  355. package/dist/assets/useLedger-1WVXef68.js +1 -0
  356. package/dist/assets/useLiveConfig-9eJ7EM3B.js +1 -0
  357. package/dist/assets/useSpatialCanvas-CtVsYmp8.js +1 -0
  358. package/dist/assets/useSpotlightWalk-DxlxBezO.js +1 -0
  359. package/dist/assets/useSrsCards-C27o39fF.js +1 -0
  360. package/dist/assets/useStudy-B5874Bcg.js +1 -0
  361. package/dist/assets/{useTimeout-BRYvu2jQ.js → useTimeout-Cm4yzted.js} +1 -1
  362. package/dist/assets/{useValidatedImage-D2fhA198.js → useValidatedImage-BQi2c66o.js} +1 -1
  363. package/dist/assets/useZoomGesture-CN0p0lHL.js +1 -0
  364. package/dist/assets/verbatim-DBTj9sPD.js +1 -0
  365. package/dist/assets/worker-D7eK-Ya8.js +2 -0
  366. package/dist/demo-assets/CREDITS.md +75 -24
  367. package/dist/demo-assets/pdf/cfd-primer.pdf +0 -0
  368. package/dist/demo-assets/video/azores-film.webm +0 -0
  369. package/dist/fonts/LICENSE.txt +32 -28
  370. package/dist/fonts/OFL-1.1.txt +81 -0
  371. package/dist/fonts/PROVENANCE.md +38 -0
  372. package/dist/index.html +14 -8
  373. package/dist/legal/DISCLAIMER.md +4 -1
  374. package/dist/legal/PRIVACY.md +14 -8
  375. package/dist/legal/TERMS.md +11 -1
  376. package/dist/legal/THIRD-PARTY.txt +25248 -621
  377. package/dist/pdfjs/LICENSE_JBIG2 +196 -0
  378. package/dist/pdfjs/LICENSE_OPENJPEG +39 -0
  379. package/dist/pdfjs/LICENSE_PDFJS_JBIG2 +13 -0
  380. package/dist/pdfjs/LICENSE_PDFJS_OPENJPEG +22 -0
  381. package/dist/pdfjs/LICENSE_PDFJS_QCMS +22 -0
  382. package/dist/pdfjs/LICENSE_QCMS +21 -0
  383. package/dist/pdfjs/jbig2.wasm +0 -0
  384. package/dist/pdfjs/openjpeg.wasm +0 -0
  385. package/dist/pdfjs/qcms_bg.wasm +0 -0
  386. package/docker-compose.yml +40 -7
  387. package/docs/media/answer-ink.jpg +0 -0
  388. package/docs/media/canvas-view.jpg +0 -0
  389. package/docs/media/deck-export.jpg +0 -0
  390. package/docs/media/deep-zoom.jpg +0 -0
  391. package/docs/media/doc-export.jpg +0 -0
  392. package/docs/media/doc-prism.jpg +0 -0
  393. package/docs/media/repo-course.jpg +0 -0
  394. package/docs/media/think-map.jpg +0 -0
  395. package/docs/media/trip-plan.jpg +0 -0
  396. package/docs/media/voice-scrub.jpg +0 -0
  397. package/package.json +71 -60
  398. package/voice/start-whisper.sh +28 -0
  399. package/voice/whisper.Dockerfile +44 -0
  400. package/dist/assets/AppCommandPalette-B3E1gTd4.js +0 -1
  401. package/dist/assets/AtlasView-B8b67dk0.js +0 -1
  402. package/dist/assets/BlockEmpty-DQkdduUE.js +0 -1
  403. package/dist/assets/BriefingPlayer-CRKTlKa3.js +0 -1
  404. package/dist/assets/CanvasSkeleton-cQ6KF-6z.js +0 -2
  405. package/dist/assets/CardEditor-DzJXb0G7.js +0 -1
  406. package/dist/assets/CheckLogRail-C6nouD1Y.js +0 -1
  407. package/dist/assets/CheckLogRail-F4AlgAcc.css +0 -1
  408. package/dist/assets/CommandPalette-CSvgbXxg.js +0 -1
  409. package/dist/assets/CourseLessonReader-1KDKwxIj.js +0 -2
  410. package/dist/assets/CourseRail-BijCpApU.js +0 -1
  411. package/dist/assets/CoursesApp-BWkdYL07.js +0 -2
  412. package/dist/assets/CrossExamPanel-Cn7b5y7B.js +0 -1
  413. package/dist/assets/DashPresent-B025i7iJ.js +0 -1
  414. package/dist/assets/DashboardDetail-CZLnxgp0.js +0 -2
  415. package/dist/assets/DashboardLoopRuntime-7MpMUcMg.js +0 -1
  416. package/dist/assets/DashboardOverview-COyleu7v.js +0 -1
  417. package/dist/assets/DashboardSettings-DUfUqbsp.js +0 -1
  418. package/dist/assets/DashboardsApp-6xMz2qCP.js +0 -2
  419. package/dist/assets/DelegatePanel-D4OrMa2D.js +0 -33
  420. package/dist/assets/DemoGallery-Bt92vKqc.js +0 -1
  421. package/dist/assets/DropSelect-Q310fTbf.js +0 -1
  422. package/dist/assets/ExportModal-D0zXlC8w.js +0 -2
  423. package/dist/assets/ExtractionPreview-0SZYynDs.js +0 -18
  424. package/dist/assets/FeatureUseNotice-CoK5HkbR.js +0 -1
  425. package/dist/assets/FlagshipCTA-D845jkdt.js +0 -1
  426. package/dist/assets/FlagshipCommandPalette-DHMnyG7j.js +0 -1
  427. package/dist/assets/FlagshipShowcase-BuR3PZvU.js +0 -1
  428. package/dist/assets/FlashcardsApp-BzWb4cRP.js +0 -1
  429. package/dist/assets/ForecastPanel-lTnux0EB.js +0 -1
  430. package/dist/assets/GalleryApp-D0NGZ1_t.js +0 -1
  431. package/dist/assets/LegalApp-DXDomKFv.js +0 -1
  432. package/dist/assets/LegalPageShell-BG5UUk-9.js +0 -1
  433. package/dist/assets/LegalPageShell-C_HottbD.css +0 -1
  434. package/dist/assets/LeverPanel-CvYnTLjh.js +0 -1
  435. package/dist/assets/Library-Cl1gE9Qg.js +0 -1
  436. package/dist/assets/LibraryOverlay-CX4cJLqD.js +0 -1
  437. package/dist/assets/LiveApp-CDckMWYX.js +0 -61
  438. package/dist/assets/LiveApp-Dj_6EQuL.css +0 -1
  439. package/dist/assets/LiveSettings-DgfIXanM.js +0 -6
  440. package/dist/assets/MindMapViewerDrawer-ClU9wgSH.js +0 -1
  441. package/dist/assets/MindShape-DjHtMW_5.css +0 -1
  442. package/dist/assets/MindShape-yF19n9qq.js +0 -1
  443. package/dist/assets/PinToDashboard-CpIDAcIU.js +0 -1
  444. package/dist/assets/PlanReview-CPcqOxjp.js +0 -1
  445. package/dist/assets/Presence-CHGZ1JRp.js +0 -1
  446. package/dist/assets/PresentationDeck-CrtiWjiM.js +0 -1
  447. package/dist/assets/PrismApp-D7RbekoX.js +0 -2
  448. package/dist/assets/PrismAskController-D6_7Epdb.js +0 -37
  449. package/dist/assets/PrismBriefingPlayer-Dq5_KRU3.js +0 -2
  450. package/dist/assets/PrismOverlay-CduGpA8D.js +0 -131
  451. package/dist/assets/Quiz-CUwtekfu.js +0 -1
  452. package/dist/assets/Recap-BPg2xEPo.js +0 -1
  453. package/dist/assets/ReelJelly-LWeMsFpj.js +0 -1
  454. package/dist/assets/ReplayCard-C3dGQfxG.js +0 -2
  455. package/dist/assets/ReplayOverlay-C9W603B5.js +0 -1
  456. package/dist/assets/RewindOverlay-BIWmxQlx.js +0 -1
  457. package/dist/assets/RippleApp-C9-KFvkn.js +0 -2
  458. package/dist/assets/RippleAskController-DEKz-6Vn.js +0 -34
  459. package/dist/assets/RippleOverlay-CfXvnUHE.js +0 -6
  460. package/dist/assets/SeeDontRead-DrG1qBxJ.js +0 -1
  461. package/dist/assets/ShareModal-eJ6sdMpf.js +0 -32
  462. package/dist/assets/ShipCascade-BP8qL0yM.js +0 -1
  463. package/dist/assets/ShipCourse-BoqW58VU.js +0 -1
  464. package/dist/assets/ShipHotspots-_9XPhZg2.js +0 -1
  465. package/dist/assets/ShipMigration-BdkaiJ9D.js +0 -1
  466. package/dist/assets/ShipOnboarding-CblWatXR.js +0 -1
  467. package/dist/assets/ShipRead-BBn7xkOF.js +0 -1
  468. package/dist/assets/ShipRollout-i5BY3YnP.js +0 -1
  469. package/dist/assets/ShipSuggestions-liytLgC-.js +0 -1
  470. package/dist/assets/ShipWorkspace-C3VQwGn1.js +0 -2
  471. package/dist/assets/SignatureLoop-Ba7plTb5.js +0 -1
  472. package/dist/assets/SrsReview-BoaYb6XN.js +0 -1
  473. package/dist/assets/SrsReview-DmGdGxT0.css +0 -1
  474. package/dist/assets/SynthesisApp-Ch0tWRBS.js +0 -2
  475. package/dist/assets/SynthesisOverlay-DMZndCzV.js +0 -66
  476. package/dist/assets/TopicCanvas-DX0Z1ZHv.js +0 -2
  477. package/dist/assets/TourPrism-6fWPMU4Z.js +0 -1
  478. package/dist/assets/TrackerTile-BboQpBGy.js +0 -2
  479. package/dist/assets/TwoSurfaces-Cabk1rES.js +0 -1
  480. package/dist/assets/UnderstoodPanel-B6jfiKx1.js +0 -1
  481. package/dist/assets/WhyMachineOverlay-BRNibJSf.js +0 -1
  482. package/dist/assets/WowFeatures-C7f4qzIf.js +0 -1
  483. package/dist/assets/ZoomDeck-BtlVyhwv.js +0 -1
  484. package/dist/assets/__vite-browser-external-BufR4LQa.js +0 -1
  485. package/dist/assets/alternateFinishes-CVUX4x0C.js +0 -494
  486. package/dist/assets/annotationAuto-BjWqgseH.js +0 -1
  487. package/dist/assets/annotationReel-B5A2RZkx.js +0 -1
  488. package/dist/assets/annotations-D2K9A5GB.js +0 -1
  489. package/dist/assets/backup-d46KwktS.js +0 -1
  490. package/dist/assets/blockLabel-DAqaHKy3.js +0 -1
  491. package/dist/assets/cache-BumECILO.js +0 -1
  492. package/dist/assets/canvas-BuMP6u6i.js +0 -1
  493. package/dist/assets/catalog-Bv0dWU_C.js +0 -1
  494. package/dist/assets/chapters-Cbe53c3W.js +0 -1
  495. package/dist/assets/charts2-tyUiQPff.js +0 -1
  496. package/dist/assets/chunk-BVpWp9h4.js +0 -1
  497. package/dist/assets/confirmAdd-CWWtX1VN.js +0 -1
  498. package/dist/assets/cpp-BGdv8dzs.js +0 -1
  499. package/dist/assets/cpp-CNAAXZl-.js +0 -1
  500. package/dist/assets/dashboardEvents-Be4sftHN.js +0 -2
  501. package/dist/assets/dashboards-rcWxdoXI.css +0 -1
  502. package/dist/assets/dist-xRGLOZwv.js +0 -14
  503. package/dist/assets/facts-BBTt3ImG.js +0 -1
  504. package/dist/assets/fit-CuHWhwsj.js +0 -1
  505. package/dist/assets/fitText-CDFmCQzl.js +0 -1
  506. package/dist/assets/format-DlZTyeMy.js +0 -1
  507. package/dist/assets/generateBeats-b64CL54v.js +0 -1
  508. package/dist/assets/generateLive-CMbGT3eM.js +0 -52
  509. package/dist/assets/githubBrowser-DywfDeYx.js +0 -1
  510. package/dist/assets/githubToken-DtcLYqwm.js +0 -11
  511. package/dist/assets/homeTarget-BcZYH3DY.js +0 -1
  512. package/dist/assets/http-CJCtjYpA.js +0 -2
  513. package/dist/assets/index-CepQEz75.css +0 -1
  514. package/dist/assets/index-Dbr1j8Fe.js +0 -22
  515. package/dist/assets/index.es-CRLiWwiA.js +0 -5
  516. package/dist/assets/jspdf.es.min-ydC1TxUW.js +0 -79
  517. package/dist/assets/jsx-runtime-DaSxXjOY.js +0 -1
  518. package/dist/assets/katex-BMCG0xok.js +0 -257
  519. package/dist/assets/keyVault-DEsNh9FR.js +0 -1
  520. package/dist/assets/kokoro-DsmNzulR.js +0 -1
  521. package/dist/assets/layout-BFQOzXtG.js +0 -1
  522. package/dist/assets/leaflet-src-C_xhOQY7.js +0 -1
  523. package/dist/assets/learn-DVfqN-nf.js +0 -1
  524. package/dist/assets/lib-B6qSkBPa.js +0 -1
  525. package/dist/assets/liveSchema-B1MGdSkK.js +0 -99
  526. package/dist/assets/motion-luJxBPnj.js +0 -1
  527. package/dist/assets/notes-3WQ6b0Mi.js +0 -1
  528. package/dist/assets/officeDoc-B6nEhNp4.js +0 -3
  529. package/dist/assets/openchemlib-nMLMmg26.js +0 -23
  530. package/dist/assets/pdf-RyoPCIGN.js +0 -11
  531. package/dist/assets/pdf.worker.min-yatZIOMy.mjs +0 -21
  532. package/dist/assets/pin-Bya3BL_a.css +0 -1
  533. package/dist/assets/pin-Cj-LMfpK.js +0 -1
  534. package/dist/assets/planTracker-7AMCQPNx.js +0 -1
  535. package/dist/assets/portal-zyqZwnb1.js +0 -1
  536. package/dist/assets/predictions-CYS7Vo39.js +0 -1
  537. package/dist/assets/prism.generated-BhbHDHR6.js +0 -41
  538. package/dist/assets/prismGround.worker-CIvKqxm2.js +0 -1
  539. package/dist/assets/prismLayout.worker-CZO2CY7B.js +0 -1
  540. package/dist/assets/providers-wzm7E8Pa.js +0 -1
  541. package/dist/assets/purify.es-adlwq8Pz.js +0 -3
  542. package/dist/assets/quietHours-BklvMqsV.js +0 -1
  543. package/dist/assets/react-BQSORdFI.js +0 -1
  544. package/dist/assets/registry-1h9idbfk.js +0 -2
  545. package/dist/assets/registry-2zthbrHC.js +0 -1
  546. package/dist/assets/registry-4O5l9cd5.js +0 -1
  547. package/dist/assets/registry-5a-E7vEN.css +0 -1
  548. package/dist/assets/registry-BRB85vr4.js +0 -2
  549. package/dist/assets/registry-BVHiKEwE.css +0 -1
  550. package/dist/assets/registry-BcZXBr3y.css +0 -1
  551. package/dist/assets/registry-BdMZ_4cm.js +0 -2
  552. package/dist/assets/registry-Bnp_yh8G.js +0 -4
  553. package/dist/assets/registry-C1IrZBk8.js +0 -1
  554. package/dist/assets/registry-C5DK98Hl.js +0 -1
  555. package/dist/assets/registry-CK0-re_Q.js +0 -49
  556. package/dist/assets/registry-COrl_Heq.js +0 -1
  557. package/dist/assets/registry-CQUQlrSx.js +0 -1
  558. package/dist/assets/registry-CXa3qXl3.js +0 -1
  559. package/dist/assets/registry-C_baBbqq.js +0 -5
  560. package/dist/assets/registry-CjY5POtx.js +0 -1
  561. package/dist/assets/registry-CoBAqOlY.js +0 -1
  562. package/dist/assets/registry-DJj-o3MQ.js +0 -1
  563. package/dist/assets/registry-DVzLacl_.css +0 -1
  564. package/dist/assets/registry-DfCCnIfu.js +0 -1
  565. package/dist/assets/registry-DfgFkD3J.js +0 -1
  566. package/dist/assets/registry-Dhlx1mF4.js +0 -1
  567. package/dist/assets/registry-Dkc7hN5T.js +0 -1
  568. package/dist/assets/registry-DmQlNN3y.js +0 -1
  569. package/dist/assets/registry-DnEh7nbX.js +0 -1
  570. package/dist/assets/registry-VD94nLXO.js +0 -1
  571. package/dist/assets/registry-aIH-Im5Y.css +0 -1
  572. package/dist/assets/registry-mFD4P5dI.js +0 -1
  573. package/dist/assets/registry-sDzDmht4.js +0 -1
  574. package/dist/assets/registry-types-DMuK0vJ6.js +0 -1
  575. package/dist/assets/run-BYP2YlZT.js +0 -23
  576. package/dist/assets/run-DSVvshaB.js +0 -21
  577. package/dist/assets/safeImageUrl-CUkucDUu.js +0 -1
  578. package/dist/assets/screen-DLR7p_yP.js +0 -1
  579. package/dist/assets/search-Be63DJkp.js +0 -1
  580. package/dist/assets/shapes-Cw7tCHIp.js +0 -1
  581. package/dist/assets/shard005-DLVkh9IH.js +0 -1
  582. package/dist/assets/shard006-B6efKHov.js +0 -1
  583. package/dist/assets/shard007-AFdZLe38.js +0 -1
  584. package/dist/assets/shard008-LbSBzwRx.js +0 -1
  585. package/dist/assets/shard009-D_6-SUDb.js +0 -1
  586. package/dist/assets/shard010-DbOj-uZW.js +0 -1
  587. package/dist/assets/shard011-BYSz7EEW.js +0 -1
  588. package/dist/assets/shard012-B5Ypj7OV.js +0 -1
  589. package/dist/assets/shard013-BtsliNIe.js +0 -1
  590. package/dist/assets/shard014-15sjmk68.js +0 -1
  591. package/dist/assets/shard015-nnXrqru_.js +0 -1
  592. package/dist/assets/shard016-BayXFE13.js +0 -1
  593. package/dist/assets/shard017-Cy4cGexs.js +0 -1
  594. package/dist/assets/shard018-aO-BYJ8H.js +0 -1
  595. package/dist/assets/shard019-gxaTeA3I.js +0 -1
  596. package/dist/assets/shard020-BibJdMI0.js +0 -1
  597. package/dist/assets/shard022-IXiyG-JK.js +0 -1
  598. package/dist/assets/shard023-314F6NJS.js +0 -1
  599. package/dist/assets/shard024-cN5rpQ_X.js +0 -1
  600. package/dist/assets/shard025-KKTaXOGE.js +0 -1
  601. package/dist/assets/shard026-C2Dkd1t6.js +0 -1
  602. package/dist/assets/shard027-Xy-8x9As.js +0 -1
  603. package/dist/assets/shard028-Bul-klUj.js +0 -1
  604. package/dist/assets/shard029-BbRSUcUZ.js +0 -1
  605. package/dist/assets/shard030-GYllsFVC.js +0 -1
  606. package/dist/assets/shard031-DMigeiyn.js +0 -1
  607. package/dist/assets/shard032-CcvmzK0l.js +0 -1
  608. package/dist/assets/shard033-11AU702M.js +0 -1
  609. package/dist/assets/shard034-Bx3urxjM.js +0 -1
  610. package/dist/assets/shard035-DBdEeyCt.js +0 -1
  611. package/dist/assets/shard036-vYgoRBqS.js +0 -1
  612. package/dist/assets/shard037-DP4MMw91.js +0 -1
  613. package/dist/assets/shard038-ffxsv7d6.js +0 -1
  614. package/dist/assets/shard039-C1JHHNp9.js +0 -1
  615. package/dist/assets/shard040-JbVvCSO_.js +0 -1
  616. package/dist/assets/shard041-5L_eFwGx.js +0 -1
  617. package/dist/assets/shard042-C9nsGL79.js +0 -1
  618. package/dist/assets/shard043-Dx_9HSKI.js +0 -1
  619. package/dist/assets/shard044-B3QQNC4A.js +0 -1
  620. package/dist/assets/shard045-B7z0WHO6.js +0 -1
  621. package/dist/assets/shard046-D1yDablJ.js +0 -1
  622. package/dist/assets/shard047-DJi3AgeT.js +0 -1
  623. package/dist/assets/shard048-D_2ipfUr.js +0 -1
  624. package/dist/assets/shard049-1aGgWZdd.js +0 -1
  625. package/dist/assets/shard050-Bjwa0Og4.js +0 -1
  626. package/dist/assets/shard051-Cx_GAk3v.js +0 -1
  627. package/dist/assets/shard052-LaeOD3V5.js +0 -1
  628. package/dist/assets/shard053-D-da7Foj.js +0 -1
  629. package/dist/assets/shard054-CM8eSRQk.js +0 -1
  630. package/dist/assets/shard055-QRpDl4Vs.js +0 -1
  631. package/dist/assets/shard056-DkY7CQm3.js +0 -1
  632. package/dist/assets/shard057-BVCgf7o0.js +0 -1
  633. package/dist/assets/shard058-93aGtdrX.js +0 -1
  634. package/dist/assets/shard059-rJE9X1_I.js +0 -1
  635. package/dist/assets/shard060-Lu_hfl1r.js +0 -1
  636. package/dist/assets/shard062-BBIpEYZO.js +0 -1
  637. package/dist/assets/shard063-C_uen3Ub.js +0 -1
  638. package/dist/assets/shard064-DAHUsHST.js +0 -1
  639. package/dist/assets/share-QHGHNDhQ.js +0 -1
  640. package/dist/assets/shikiHighlight-SCFIB43b.js +0 -153
  641. package/dist/assets/speed-DwPw9KSv.js +0 -1
  642. package/dist/assets/spokenText-D4zPX9JY.js +0 -1
  643. package/dist/assets/src-B-t8Mww-.js +0 -2
  644. package/dist/assets/store-DXmC_fP2.js +0 -0
  645. package/dist/assets/store-Dn23_Ymr.js +0 -1
  646. package/dist/assets/store-DoJn3lBF.js +0 -1
  647. package/dist/assets/store-DrBDvqXF.js +0 -1
  648. package/dist/assets/swift-DonLKvLd.js +0 -1
  649. package/dist/assets/threads-CkMgrSDP.js +0 -1
  650. package/dist/assets/useDashboardLoop-C8Mcbcto.js +0 -5
  651. package/dist/assets/useLiveConfig-BW1WkpTc.js +0 -1
  652. package/dist/assets/useSpatialCanvas-C5TNlpeK.js +0 -1
  653. package/dist/assets/useSpotlightWalk-dA3IdI-1.js +0 -1
  654. package/dist/assets/useSrsCards-C7Xni9C0.js +0 -1
  655. package/dist/assets/useStudy-DHRIx8p-.js +0 -1
  656. package/dist/assets/useZoomGesture-BsPXvLw2.js +0 -1
  657. package/dist/assets/verbatim-CBMzUDlf.js +0 -1
  658. package/dist/assets/worker-BbLKfGzm.js +0 -2
  659. package/dist/demo-assets/video/azores-film.mp4 +0 -0
  660. /package/dist/assets/{shard065-C2edvdvh.js → shard066-C2edvdvh.js} +0 -0
  661. /package/dist/assets/{shard066-DFcuVhZm.js → shard067-DFcuVhZm.js} +0 -0
  662. /package/dist/assets/{shard067-BN8DM8JZ.js → shard068-BN8DM8JZ.js} +0 -0
  663. /package/dist/assets/{shard068-i464K77p.js → shard069-i464K77p.js} +0 -0
  664. /package/dist/assets/{shard069-Dm9m2a5U.js → shard070-Dm9m2a5U.js} +0 -0
  665. /package/dist/assets/{shard070-BPVvR8GH.js → shard071-BPVvR8GH.js} +0 -0
  666. /package/dist/assets/{shard071-Bal_0d9L.js → shard072-Bal_0d9L.js} +0 -0
  667. /package/dist/assets/{shard072-CBQu62kt.js → shard073-CBQu62kt.js} +0 -0
  668. /package/dist/assets/{shard073-D5BRae0w.js → shard074-D5BRae0w.js} +0 -0
  669. /package/dist/assets/{shard074-DtFvcBnZ.js → shard075-DtFvcBnZ.js} +0 -0
  670. /package/dist/assets/{queue-DHeyJ32F.css → templates-DHeyJ32F.css} +0 -0
package/bin/mavea.mjs CHANGED
@@ -8,6 +8,7 @@ import https from 'node:https';
8
8
  import {
9
9
  createReadStream,
10
10
  existsSync,
11
+ readFileSync,
11
12
  statSync,
12
13
  mkdirSync,
13
14
  renameSync,
@@ -18,6 +19,7 @@ import { writeFile } from 'node:fs/promises';
18
19
  import { fileURLToPath } from 'node:url';
19
20
  import { dirname, join, extname, normalize, resolve, sep } from 'node:path';
20
21
  import { spawn, execSync } from 'node:child_process';
22
+ import { createHash } from 'node:crypto';
21
23
  import { constants, createBrotliCompress, createGzip } from 'node:zlib';
22
24
  import { homedir, platform, tmpdir } from 'node:os';
23
25
  import readline from 'node:readline';
@@ -68,10 +70,14 @@ const LAZY_ASSETS = {
68
70
  'ort-wasm-simd-threaded.wasm': {
69
71
  url: 'https://cdn.jsdelivr.net/npm/onnxruntime-web@1.26.0/dist/ort-wasm-simd-threaded.wasm',
70
72
  mime: 'application/wasm',
73
+ bytes: 13_022_405,
74
+ sha256: '040d52ce5066707a10d45cb9500c35e70a9c2fb33c4fb63428da9ae45b956b97',
71
75
  },
72
76
  'silero_vad_v5.onnx': {
73
77
  url: 'https://cdn.jsdelivr.net/npm/@ricky0123/vad-web@0.0.30/dist/silero_vad_v5.onnx',
74
78
  mime: 'application/octet-stream',
79
+ bytes: 2_327_524,
80
+ sha256: '2623a2953f6ff3d2c1e61740c6cdb7168133479b267dfef114a4a3cc5bdd788f',
75
81
  },
76
82
  };
77
83
 
@@ -91,9 +97,58 @@ function lazyCacheDir() {
91
97
  // .wasm and its already-loaded .mjs glue both kicking off near-simultaneously) share one fetch
92
98
  // instead of downloading twice.
93
99
  const inFlightDownloads = new Map();
100
+ const verifiedLazyAssets = new Set();
94
101
 
95
- async function fetchToCache(url, cachePath) {
96
- if (existsSync(cachePath)) return;
102
+ function cachedAssetIsValid(cachePath, checksumPath, expectedBytes, expectedSha256) {
103
+ const cacheKey = `${cachePath}:${expectedSha256}`;
104
+ try {
105
+ if (!existsSync(cachePath) || !existsSync(checksumPath)) return false;
106
+ if (verifiedLazyAssets.has(cacheKey)) return true;
107
+ if (
108
+ statSync(cachePath).size !== expectedBytes ||
109
+ readFileSync(checksumPath, 'utf8').trim() !== expectedSha256
110
+ ) {
111
+ return false;
112
+ }
113
+ const actualSha256 = createHash('sha256').update(readFileSync(cachePath)).digest('hex');
114
+ if (actualSha256 !== expectedSha256) return false;
115
+ verifiedLazyAssets.add(cacheKey);
116
+ return true;
117
+ } catch {
118
+ return false;
119
+ }
120
+ }
121
+
122
+ export async function readBoundedAsset(res, expectedBytes) {
123
+ const declared = Number(res.headers.get('content-length'));
124
+ if (Number.isFinite(declared) && declared > expectedBytes) {
125
+ throw new Error('voice asset exceeded its pinned size');
126
+ }
127
+ if (!res.body) throw new Error('voice asset response had no body');
128
+ const reader = res.body.getReader();
129
+ const chunks = [];
130
+ let received = 0;
131
+ try {
132
+ for (;;) {
133
+ const { done, value } = await reader.read();
134
+ if (done) break;
135
+ received += value.byteLength;
136
+ if (received > expectedBytes) {
137
+ await reader.cancel();
138
+ throw new Error('voice asset exceeded its pinned size');
139
+ }
140
+ chunks.push(Buffer.from(value));
141
+ }
142
+ } finally {
143
+ reader.releaseLock();
144
+ }
145
+ if (received !== expectedBytes) throw new Error('voice asset did not match its pinned size');
146
+ return Buffer.concat(chunks, received);
147
+ }
148
+
149
+ async function fetchToCache(url, cachePath, expectedBytes, expectedSha256) {
150
+ const checksumPath = `${cachePath}.sha256`;
151
+ if (cachedAssetIsValid(cachePath, checksumPath, expectedBytes, expectedSha256)) return;
97
152
  const existing = inFlightDownloads.get(cachePath);
98
153
  if (existing) return existing;
99
154
  const task = (async () => {
@@ -106,8 +161,14 @@ async function fetchToCache(url, cachePath) {
106
161
  try {
107
162
  const res = await fetch(url, { signal: ctrl.signal });
108
163
  if (!res.ok) throw new Error(`fetch ${url} -> ${res.status}`);
109
- await writeFile(tmpPath, Buffer.from(await res.arrayBuffer()));
164
+ const bytes = await readBoundedAsset(res, expectedBytes);
165
+ const actualSha256 = createHash('sha256').update(bytes).digest('hex');
166
+ if (actualSha256 !== expectedSha256) throw new Error(`checksum mismatch for ${url}`);
167
+ await writeFile(tmpPath, bytes);
168
+ if (existsSync(cachePath)) unlinkSync(cachePath);
110
169
  renameSync(tmpPath, cachePath);
170
+ await writeFile(checksumPath, `${expectedSha256}\n`);
171
+ verifiedLazyAssets.add(`${cachePath}:${expectedSha256}`);
111
172
  } finally {
112
173
  clearTimeout(timer);
113
174
  if (existsSync(tmpPath)) unlinkSync(tmpPath);
@@ -124,11 +185,11 @@ async function fetchToCache(url, cachePath) {
124
185
  async function serveLazyAsset(name, asset, res) {
125
186
  const cachePath = join(lazyCacheDir(), name);
126
187
  try {
127
- await fetchToCache(asset.url, cachePath);
188
+ await fetchToCache(asset.url, cachePath, asset.bytes, asset.sha256);
128
189
  } catch {
129
190
  // Same failure mode as a missing asset always had here: the client (onnxruntime-web / Silero
130
- // VAD) treats a 404/502 on this path as "voice model unavailable" and falls back gracefully
131
- // (WebSpeech) rather than breaking the turn — offline or a CDN hiccup degrades, never crashes.
191
+ // VAD) treats a 404/502 on this path as "voice model unavailable" and surfaces the local mic
192
+ // as unavailable rather than breaking the typed conversation.
132
193
  sendProblem(res, 502, 'The optional voice asset is unavailable.');
133
194
  return;
134
195
  }
@@ -723,7 +784,7 @@ function serveStatic(req, res, requestTarget, distDir = DIST) {
723
784
  // as it is produced either way — and 'end' lands once the last chunk has gone out.
724
785
  const chunks = [];
725
786
  compressor.on('data', (chunk) => chunks.push(chunk));
726
- compressor.once('end', () => cacheCompressed(`${encoding} ${filePath}`, Buffer.concat(chunks)));
787
+ compressor.once('end', () => cacheCompressed(`${encoding}\0${filePath}`, Buffer.concat(chunks)));
727
788
  }
728
789
 
729
790
  export function createMaveaServer({ distDir = DIST, proxies = PROXIES, now = Date.now } = {}) {
@@ -825,194 +886,141 @@ function openBrowser(url) {
825
886
  }
826
887
  }
827
888
 
828
- function dockerInstalled() {
889
+ function commandExists(cmd) {
829
890
  try {
830
- execSync('docker --version', { stdio: 'ignore' });
891
+ execSync(process.platform === 'win32' ? `where ${cmd}` : `command -v ${cmd}`, {
892
+ stdio: 'ignore',
893
+ shell: true,
894
+ });
831
895
  return true;
832
896
  } catch {
833
897
  return false;
834
898
  }
835
899
  }
836
900
 
837
- function dockerRunning() {
901
+ function commandReady(command, args) {
838
902
  try {
839
- execSync('docker info', { stdio: 'ignore' });
903
+ execSync([command, ...args].join(' '), { stdio: 'ignore' });
840
904
  return true;
841
905
  } catch {
842
906
  return false;
843
907
  }
844
908
  }
845
909
 
846
- function commandExists(cmd) {
847
- try {
848
- execSync(process.platform === 'win32' ? `where ${cmd}` : `command -v ${cmd}`, {
849
- stdio: 'ignore',
850
- shell: true,
851
- });
852
- return true;
853
- } catch {
854
- return false;
910
+ function composeRuntime() {
911
+ if (commandReady('podman', ['info'])) {
912
+ if (commandReady('podman', ['compose', 'version'])) {
913
+ return { command: 'podman', prefix: ['compose'], label: 'Podman' };
914
+ }
915
+ if (commandReady('podman-compose', ['--version'])) {
916
+ return { command: 'podman-compose', prefix: [], label: 'Podman' };
917
+ }
855
918
  }
919
+ if (commandReady('docker', ['info'])) {
920
+ return { command: 'docker', prefix: ['compose'], label: 'Docker' };
921
+ }
922
+ return null;
856
923
  }
857
924
 
858
- function waitForDocker(timeoutMs = 90_000) {
859
- return new Promise((resolve) => {
860
- const started = Date.now();
861
- const tick = () => {
862
- if (dockerRunning()) return resolve(true);
863
- if (Date.now() - started > timeoutMs) return resolve(false);
864
- setTimeout(tick, 2000);
865
- };
866
- tick();
867
- });
925
+ function installedRuntime() {
926
+ if (commandExists('podman')) return 'podman';
927
+ if (commandExists('docker')) return 'docker';
928
+ return null;
868
929
  }
869
930
 
870
- async function kokoroReachable(url) {
931
+ async function serviceReachable(url) {
932
+ const ctrl = new AbortController();
933
+ const timer = setTimeout(() => ctrl.abort(), 800);
871
934
  try {
872
- const ctrl = new AbortController();
873
- const timer = setTimeout(() => ctrl.abort(), 800);
874
- await fetch(url, { signal: ctrl.signal });
875
- clearTimeout(timer);
876
- return true;
935
+ const res = await fetch(url, { signal: ctrl.signal });
936
+ return res.ok;
877
937
  } catch {
878
938
  return false;
939
+ } finally {
940
+ clearTimeout(timer);
879
941
  }
880
942
  }
881
943
 
882
- function askYesNo(question) {
944
+ function startSpeechServices(runtime) {
945
+ console.log(
946
+ ' Starting Kokoro TTS + whisper.cpp STT. The first run builds/downloads pinned models…',
947
+ );
948
+ spawn(runtime.command, [...runtime.prefix, '-f', COMPOSE_FILE, 'up', '-d', '--build'], {
949
+ stdio: 'inherit',
950
+ });
951
+ }
952
+
953
+ function askYesNo(question, defaultYes = true) {
883
954
  return new Promise((resolve) => {
884
955
  const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
885
956
  rl.question(question, (answer) => {
886
957
  rl.close();
887
- resolve(/^y/i.test(answer.trim()) || answer.trim() === '');
958
+ const normalized = answer.trim();
959
+ resolve(/^y/i.test(normalized) || (defaultYes && normalized === ''));
888
960
  });
889
961
  });
890
962
  }
891
963
 
892
- function startKokoro() {
893
- console.log(' Starting Kokoro TTS (first run downloads the voice model, ~1 min)…');
894
- spawn('docker', ['compose', '-f', COMPOSE_FILE, 'up', '-d'], { stdio: 'inherit' });
895
- }
896
-
897
964
  const VOICE_INTRO =
898
- '\n◌ VoiceMavéa speaks its replies aloud using a local TTS model (Kokoro).\n' +
899
- ' It runs in a small Docker container, fully on your machine no audio ever\n' +
900
- ' leaves your computer.\n';
901
-
902
- async function offerDockerInstall() {
903
- console.log(VOICE_INTRO);
904
- console.log(" Docker isn't installed, so for now Mavéa is text-only:");
905
- console.log(' ✗ no spoken replies — lines appear as captions instead');
906
- console.log(' ✓ everything else works: demo, live mode, gallery, actions\n');
907
-
908
- const later =
909
- ' To enable voice later: install Docker (https://docker.com/get-started),\n' +
910
- ' then re-run `npx @mavea/mavea` — it will detect Docker and set voice up for you.';
911
-
912
- if (process.platform === 'darwin' && commandExists('brew')) {
913
- const yes = await askYesNo(
914
- ' Install Docker now via Homebrew? [Y/n] (~600 MB, then launch Docker\n' +
915
- ' Desktop once and re-run `npx @mavea/mavea` — voice will offer to start itself) ',
916
- );
917
- if (!yes) return console.log(' Skipping.\n' + later);
918
- const r = spawn('brew', ['install', '--cask', 'docker'], { stdio: 'inherit' });
919
- r.on('exit', (code) => {
920
- console.log(
921
- code === 0
922
- ? ' ✓ Docker installed. Launch Docker Desktop once (to accept its service\n' +
923
- ' agreement), then re-run `npx @mavea/mavea` to enable voice.'
924
- : ' Homebrew install failed.\n' + later,
925
- );
926
- });
927
- return;
928
- }
929
-
930
- if (process.platform === 'win32' && commandExists('winget')) {
931
- const yes = await askYesNo(
932
- ' Install Docker Desktop now via winget? [Y/n] (then launch it once and\n' +
933
- ' re-run `npx @mavea/mavea` — voice will offer to start itself) ',
934
- );
935
- if (!yes) return console.log(' Skipping.\n' + later);
936
- const r = spawn('winget', ['install', '-e', '--id', 'Docker.DockerDesktop'], {
937
- stdio: 'inherit',
938
- });
939
- r.on('exit', (code) => {
940
- console.log(
941
- code === 0
942
- ? ' ✓ Docker installed. Launch Docker Desktop once, then re-run `npx @mavea/mavea`.'
943
- : ' winget install failed.\n' + later,
944
- );
945
- });
946
- return;
947
- }
965
+ '\n◌ Configured speech Kokoro reads replies and whisper.cpp transcribes your mic.\n' +
966
+ ' The defaults are loopback-only. A custom WHISPER_URL receives microphone audio at that endpoint.\n';
948
967
 
949
- if (process.platform === 'linux') {
950
- // Docker's install script needs sudo — print it, never run it on the user's behalf.
951
- console.log(' To install Docker, run:\n');
952
- console.log(' curl -fsSL https://get.docker.com | sh\n');
968
+ async function maybeOfferVoice() {
969
+ const kokoroUrl = process.env.KOKORO_URL || 'http://localhost:8880';
970
+ const whisperUrl = process.env.WHISPER_URL || 'http://localhost:8100';
971
+ const [kokoroReady, whisperReady] = await Promise.all([
972
+ serviceReachable(kokoroUrl),
973
+ serviceReachable(whisperUrl),
974
+ ]);
975
+ if (kokoroReady && whisperReady) return;
976
+ if (!existsSync(COMPOSE_FILE) || !process.stdin.isTTY) {
953
977
  console.log(
954
- ' then re-run `npx @mavea/mavea` it will detect Docker and set voice up for you.',
978
+ 'Local speech is not fully running captions and typing still work. ' +
979
+ 'Re-run in a terminal to set up Kokoro + whisper.cpp.',
955
980
  );
956
981
  return;
957
982
  }
958
-
959
- const yes = await askYesNo(' Open the Docker download page in your browser? [Y/n] ');
960
- if (yes) openBrowser('https://www.docker.com/get-started/');
961
- console.log(later);
962
- }
963
-
964
- async function offerDockerStart() {
965
983
  console.log(VOICE_INTRO);
966
- console.log(' Docker is installed but not running.\n');
967
- if (process.platform === 'darwin' || process.platform === 'win32') {
968
- const yes = await askYesNo(' Start Docker Desktop now? [Y/n] ');
969
- if (!yes) {
984
+ const runtime = composeRuntime();
985
+ if (!runtime) {
986
+ const installed = installedRuntime();
987
+ if (installed === 'podman') {
970
988
  console.log(
971
- ' Skipping captions only. Start Docker Desktop and re-run `npx @mavea/mavea`.',
989
+ ' Podman is installed but not ready. Start `podman machine`, then re-run Mavéa.',
972
990
  );
973
- return;
974
- }
975
- if (process.platform === 'darwin') {
976
- spawn('open', ['-a', 'Docker'], { stdio: 'ignore', detached: true }).unref();
991
+ } else if (installed === 'docker') {
992
+ console.log(' Docker is installed but not ready. Start its engine, then re-run Mavéa.');
993
+ console.log(' Docker Desktop may require a paid subscription for some commercial users.');
977
994
  } else {
978
- spawn('cmd', ['/c', 'start', '""', 'docker desktop'], {
979
- stdio: 'ignore',
980
- detached: true,
981
- }).unref();
995
+ console.log(' Install Podman Desktop (Apache-2.0): https://podman-desktop.io/downloads');
996
+ console.log(' Docker also works when its license permits your use.');
982
997
  }
983
- process.stdout.write(' … waiting for Docker to start ');
984
- const up = await waitForDocker();
985
- if (!up) {
986
- console.log('\n Docker did not come up in time — captions only for now.');
987
- console.log(' Once Docker Desktop is running, re-run `npx @mavea/mavea` to enable voice.');
988
- return;
989
- }
990
- console.log('✓');
991
- startKokoro();
992
- return;
993
- }
994
- console.log(' Start it (e.g. `sudo systemctl start docker`), then re-run `npx @mavea/mavea`.');
995
- }
996
-
997
- async function maybeOfferVoice() {
998
- const kokoroUrl = process.env.KOKORO_URL || 'http://localhost:8880';
999
- if (await kokoroReachable(kokoroUrl)) return;
1000
- if (!existsSync(COMPOSE_FILE) || !process.stdin.isTTY) {
1001
- console.log(
1002
- "Voice (Kokoro TTS) isn't running — lines will show as captions only. " +
1003
- 'Re-run `npx @mavea/mavea` in a terminal to set it up, or start Kokoro yourself on :8880.',
1004
- );
1005
998
  return;
1006
999
  }
1007
- if (!dockerInstalled()) return offerDockerInstall();
1008
- if (!dockerRunning()) return offerDockerStart();
1009
- console.log(VOICE_INTRO);
1010
- const yes = await askYesNo(' Start it now? [Y/n] ');
1000
+ console.log(
1001
+ ` ${runtime.label} is ready. Missing: ${[
1002
+ !kokoroReady && 'spoken replies',
1003
+ !whisperReady && 'local mic transcription',
1004
+ ]
1005
+ .filter(Boolean)
1006
+ .join(' + ')}.`,
1007
+ );
1008
+ const yes = await askYesNo(' Start the missing local speech services now? [Y/n] ');
1011
1009
  if (!yes) {
1012
- console.log(' Skipping — captions only. Re-run `npx @mavea/mavea` any time to enable voice.');
1010
+ console.log(' Skipping — Mavéa remains usable with captions and typing.');
1013
1011
  return;
1014
1012
  }
1015
- startKokoro();
1013
+ if (runtime.label === 'Docker') {
1014
+ const licensed = await askYesNo(
1015
+ ' Docker Desktop has separate terms and may require a paid subscription. Have you read them and confirmed your Docker installation is licensed for this use? [y/N] ',
1016
+ false,
1017
+ );
1018
+ if (!licensed) {
1019
+ console.log(' Skipping Docker — use Podman instead, or continue with captions and typing.');
1020
+ return;
1021
+ }
1022
+ }
1023
+ startSpeechServices(runtime);
1016
1024
  }
1017
1025
 
1018
1026
  async function main() {
@@ -1033,7 +1041,7 @@ Usage: npx @mavea/mavea [options]
1033
1041
  Options:
1034
1042
  --port, -p <n> Port to serve on (default 4173, or $PORT)
1035
1043
  --no-open Don't open a browser automatically
1036
- --no-voice Skip the Kokoro (local TTS) Docker prompt
1044
+ --no-voice Skip the local Kokoro + whisper.cpp container prompt
1037
1045
  --help, -h Show this help
1038
1046
 
1039
1047
  The CLI listens only on 127.0.0.1. Live mode needs your own model API key (BYOK) — add it in
@@ -1042,6 +1050,7 @@ AI output may be inaccurate and is not professional advice. Provider terms and c
1042
1050
 
1043
1051
  License: PolyForm Noncommercial 1.0.0 (noncommercial use only)
1044
1052
  Terms, privacy, disclaimer, and third-party notices ship with this package.
1053
+ Podman is the recommended free/open-source container runtime. Docker Desktop has separate terms.
1045
1054
  `);
1046
1055
  return;
1047
1056
  }