@marimo-team/frontend 0.23.15-dev6 → 0.23.15-dev63
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.
- package/dist/assets/CellStatus-BalYv0pK.js +1 -0
- package/dist/assets/ConnectedDataExplorerComponent-DI7mV-Gw.js +1 -0
- package/dist/assets/DeferredRequestRegistry-C8EV1PoE.js +1 -0
- package/dist/assets/ErrorBoundary-C7_5jjWi.js +1 -0
- package/dist/assets/ImageComparisonComponent-Cz3xVDLH.js +1 -0
- package/dist/assets/ImperativeModal-BIavOiUv.js +1 -0
- package/dist/assets/Inputs-B8-VCb_j.js +1 -0
- package/dist/assets/JsonOutput-DnGSkLeP.js +53 -0
- package/dist/assets/LazyAnyLanguageCodeMirror-sVm_hz8A.js +2 -0
- package/dist/assets/MarimoErrorOutput-DO2k2fA5.js +11 -0
- package/dist/assets/Plot-X2G47XHf.js +3789 -0
- package/dist/assets/RSPContexts-CgC81f0I.js +1 -0
- package/dist/assets/RenderHTML-BCvU9dYz.js +1 -0
- package/dist/assets/RunButton-BKRupqr7.js +1 -0
- package/dist/assets/__vite-browser-external-BkrtI7wJ.js +1 -0
- package/dist/assets/__vite-browser-external-DeX3BBVP.js +1 -0
- package/dist/assets/add-cell-with-ai-CEZtaZCK.js +107 -0
- package/dist/assets/add-connection-dialog-CEp3SJR2.js +170 -0
- package/dist/assets/agent-panel-By4A-Cqr.js +287 -0
- package/dist/assets/ai-model-dropdown-DXgLphFa.js +5 -0
- package/dist/assets/alert-dialog-BXegNC0I.js +11 -0
- package/dist/assets/alert-jlwhGxSb.js +1 -0
- package/dist/assets/any-language-editor-DCpZRrpx.js +1 -0
- package/dist/assets/apl-DTwRFDps.js +1 -0
- package/dist/assets/app-config-button-NrM9ywXA.js +1 -0
- package/dist/assets/arc-CfUZAQDm.js +1 -0
- package/dist/assets/architecture-7HQA4BMR-Bvqj37EA.js +1 -0
- package/dist/assets/architectureDiagram-VXUJARFQ-sx_yisiZ.js +36 -0
- package/dist/assets/arrays-DbOq36rN.js +1 -0
- package/dist/assets/arrow-right-C1pQZGqv.js +1 -0
- package/dist/assets/asciiarmor-CiqkDK0s.js +1 -0
- package/dist/assets/asn1-RTvH5MEs.js +1 -0
- package/dist/assets/badge-B92a4ePY.js +1 -0
- package/dist/assets/ban-DOUu3Y9Q.js +1 -0
- package/dist/assets/blockDiagram-VD42YOAC-KexI-fgH.js +122 -0
- package/dist/assets/bot-message-square-DTHo_4sQ.js +1 -0
- package/dist/assets/brainfuck-szH_VGzd.js +1 -0
- package/dist/assets/button-eIihcbUw.js +1 -0
- package/dist/assets/c4Diagram-YG6GDRKO-d8NrlxRF.js +10 -0
- package/dist/assets/cache-panel-wllSTlbM.js +1 -0
- package/dist/assets/capabilities-B09j1Eor.js +1 -0
- package/dist/assets/card-VUBaYDpT.js +1 -0
- package/dist/assets/cell-editor-DdofA9oQ.js +27 -0
- package/dist/assets/cell-link-DqBkyAFe.js +1 -0
- package/dist/assets/cells-Cf7bHHq3.js +229 -0
- package/dist/assets/channel-D-k8o3T1.js +1 -0
- package/dist/assets/chart-no-axes-column-iDRxid4h.js +1 -0
- package/dist/assets/chat-display-BG08ltQ3.js +1 -0
- package/dist/assets/chat-panel-P2CzCtXJ.js +4 -0
- package/dist/assets/chat-ui-fAJZAoTD.js +4 -0
- package/dist/assets/check-rzLRd0j9.js +1 -0
- package/dist/assets/chevron-right-BS_NcSch.js +1 -0
- package/dist/assets/chunk-4BX2VUAB-fhh1HlXH.js +1 -0
- package/dist/assets/chunk-4F5CHEZ2-ClSh5rxG.js +1 -0
- package/dist/assets/chunk-55IACEB6-xhaY4LU6.js +1 -0
- package/dist/assets/chunk-5FQGJX7Z-Cp0LZT-a.js +113 -0
- package/dist/assets/chunk-ABZYJK2D-BtK4zInQ.js +80 -0
- package/dist/assets/chunk-ATLVNIR6-YZDenslF.js +1 -0
- package/dist/assets/chunk-B2363JML-cit0ouFv.js +1 -0
- package/dist/assets/chunk-B4BG7PRW-DYIZwDbt.js +165 -0
- package/dist/assets/chunk-CVBHYZKI-CIyHeK0Q.js +1 -0
- package/dist/assets/chunk-DI55MBZ5-TodwBGEN.js +220 -0
- package/dist/assets/chunk-EXTU4WIE-C76bF1UD.js +1 -0
- package/dist/assets/chunk-FMBD7UC4-Yq65IDPA.js +15 -0
- package/dist/assets/chunk-FRFDVMJY--Re1QfFE.js +1 -0
- package/dist/assets/chunk-HN2XXSSU-CcbN4n6W.js +1 -0
- package/dist/assets/chunk-JA3XYJ7Z-CPXEu7AX.js +70 -0
- package/dist/assets/chunk-JZLCHNYA-D8q1z6Py.js +54 -0
- package/dist/assets/chunk-MI3HLSF2-bmomnexd.js +32 -0
- package/dist/assets/chunk-N4CR4FBY-BhsjB2qn.js +2 -0
- package/dist/assets/chunk-PL6DKKU2-CAwRAr-p.js +1 -0
- package/dist/assets/chunk-QN33PNHL-ngvPqyQ0.js +1 -0
- package/dist/assets/chunk-QXUST7PY-C4c0Sjmn.js +7 -0
- package/dist/assets/chunk-QZHKN3VN-CkbwBDOS.js +1 -0
- package/dist/assets/chunk-S3R3BYOJ-Bt2NnquF.js +2 -0
- package/dist/assets/chunk-SJTYNZTY-G1spWesO.js +1 -0
- package/dist/assets/chunk-TCCFYFTB-BRcmzY4m.js +125 -0
- package/dist/assets/chunk-TQ3KTPDO-DBwra5xv.js +1 -0
- package/dist/assets/chunk-TZMSLE5B-Dysko1OC.js +1 -0
- package/dist/assets/chunk-UMXZTB3W-A5RvYDPE.js +1 -0
- package/dist/assets/circle-check-C32B6Qa1.js +1 -0
- package/dist/assets/circle-play-9HoTo51X.js +1 -0
- package/dist/assets/circle-plus-BluydVNx.js +1 -0
- package/dist/assets/classDiagram-2ON5EDUG-C-rIg7EQ.js +1 -0
- package/dist/assets/classDiagram-v2-WZHVMYZB-MBAsRLae.js +1 -0
- package/dist/assets/clear-button-DQtvx6eq.js +1 -0
- package/dist/assets/clike-DKPr2D1_.js +1 -0
- package/dist/assets/clipboard-paste-DQh4rXZQ.js +1 -0
- package/dist/assets/clojure-CyEbLmch.js +1 -0
- package/dist/assets/cmake-Dk8f7QuI.js +1 -0
- package/dist/assets/cn-DYvqRARy.js +1 -0
- package/dist/assets/cobol-BJJRqW1D.js +1 -0
- package/dist/assets/code-B2aKtXoe.js +1 -0
- package/dist/assets/code-block-37QAKDTI-DlENujeV.js +2 -0
- package/dist/assets/code-xml-aSiY8T7C.js +1 -0
- package/dist/assets/coffeescript-BDuWJ9WO.js +1 -0
- package/dist/assets/column-preview-BgZLUEOj.js +1 -0
- package/dist/assets/command-CAJLPEBq.js +1 -0
- package/dist/assets/command-palette-B_QgR-xg.js +1 -0
- package/dist/assets/common-CD6Mj8n6.js +1 -0
- package/dist/assets/commonlisp-CVHm2VSp.js +1 -0
- package/dist/assets/components-BH6gDVv6.js +1 -0
- package/dist/assets/config-BbOTTCYY.js +1 -0
- package/dist/assets/config-COUOIPEq.js +1 -0
- package/dist/assets/constants-CDyU_g2F.js +1 -0
- package/dist/assets/context-BFPaAUK_.js +1 -0
- package/dist/assets/copy-3iHFdt22.js +1 -0
- package/dist/assets/copy-BtTOqPTS.js +1 -0
- package/dist/assets/copy-icon-C2pG0ZNK.js +1 -0
- package/dist/assets/cose-bilkent-S5V4N54A-BlMw4-M9.js +1 -0
- package/dist/assets/createReducer-C7kZ8zEe.js +1 -0
- package/dist/assets/crystal-C2Fgr79A.js +1 -0
- package/dist/assets/css-DsUcFZz8.js +1 -0
- package/dist/assets/cypher-CUlCm6vR.js +1 -0
- package/dist/assets/d-4ANEHA6q.js +1 -0
- package/dist/assets/dagre-6UL2VRFP-kJ4x17JK.js +4 -0
- package/dist/assets/data-grid-overlay-editor-DbobQcVo.js +1 -0
- package/dist/assets/database-zap-CKO8g4BU.js +1 -0
- package/dist/assets/datasource-ySAiC9gr.js +3 -0
- package/dist/assets/dates-D-kIKDYA.js +1 -0
- package/dist/assets/dependency-graph-panel-BF23EwcD.js +5 -0
- package/dist/assets/diagram-PSM6KHXK-d-5aQNHk.js +24 -0
- package/dist/assets/diagram-QEK2KX5R-CO-PXq75.js +43 -0
- package/dist/assets/diagram-S2PKOQOG-Dv7pcvYC.js +24 -0
- package/dist/assets/dialog-D1DEsRZ2.js +1 -0
- package/dist/assets/diff-C-W-5V8L.js +1 -0
- package/dist/assets/dist-0QUuSoRx.js +1 -0
- package/dist/assets/dist-12S8I4CH.js +14 -0
- package/dist/assets/dist-3N7-WLqi.js +1 -0
- package/dist/assets/dist-56ul6-mm.js +1 -0
- package/dist/assets/dist-6c4zOh78.js +1 -0
- package/dist/assets/dist-98K4fusX.js +1 -0
- package/dist/assets/dist-B8g3pNYJ.js +1 -0
- package/dist/assets/dist-BCMBu0rO.js +2 -0
- package/dist/assets/dist-BJZAIIze.js +1 -0
- package/dist/assets/dist-BMOD2Pyh.js +1 -0
- package/dist/assets/dist-BaKJ0-Tb.js +1 -0
- package/dist/assets/dist-Bfm9U3vp.js +1 -0
- package/dist/assets/dist-BsphJPAV.js +1 -0
- package/dist/assets/dist-ByK00N0T.js +1 -0
- package/dist/assets/dist-ByVeMWkr.js +1 -0
- package/dist/assets/dist-C5kf6g-d.js +1 -0
- package/dist/assets/dist-CCAhuqF-.js +1 -0
- package/dist/assets/dist-CDUl-YL4.js +1 -0
- package/dist/assets/dist-CECF_J8y.js +1 -0
- package/dist/assets/dist-CM-lWxt3.js +1 -0
- package/dist/assets/dist-CPjTeT8p.js +3 -0
- package/dist/assets/dist-CRrIf3gB.js +1 -0
- package/dist/assets/dist-CpbbK4-I.js +1 -0
- package/dist/assets/dist-Csf5i4KY.js +1 -0
- package/dist/assets/dist-CvWC93qL.js +1 -0
- package/dist/assets/dist-D35OyUMQ.js +7 -0
- package/dist/assets/dist-D5ToCtv8.js +1 -0
- package/dist/assets/dist-D6Iobl3P.js +1 -0
- package/dist/assets/dist-DGhK0kPE.js +1 -0
- package/dist/assets/dist-DI1-Z60I.js +2 -0
- package/dist/assets/dist-DNGKAtWk.js +1 -0
- package/dist/assets/dist-DQNaXfK1.js +1 -0
- package/dist/assets/dist-DYEuVkEX.js +1 -0
- package/dist/assets/dist-DcwTQG1A.js +6 -0
- package/dist/assets/dist-DnjsPBRJ.js +1 -0
- package/dist/assets/dist-DokId-qM.js +1 -0
- package/dist/assets/dist-DrBqBDHF.js +1 -0
- package/dist/assets/dist-DrtRBAn8.js +3 -0
- package/dist/assets/dist-DsfPGbgk.js +1 -0
- package/dist/assets/dist-Du-wcJyR.js +7 -0
- package/dist/assets/dist-DzAAhYcW.js +1 -0
- package/dist/assets/dist-O5-NiN3f.js +1 -0
- package/dist/assets/dist-OgwOt8T2.js +1 -0
- package/dist/assets/dist-R1kU4nzJ.js +1 -0
- package/dist/assets/dist-SVDIDTM2.js +1 -0
- package/dist/assets/dist-aRc_dRed.js +13 -0
- package/dist/assets/dist-sPfKr-vH.js +1 -0
- package/dist/assets/dist-xSLg7wNV.js +1 -0
- package/dist/assets/dockerfile-C2PznFWk.js +1 -0
- package/dist/assets/documentation-panel-e9Fi9R7e.js +1 -0
- package/dist/assets/download-BomYt3nl.js +9 -0
- package/dist/assets/dropdown-menu-BFZLnWeO.js +1 -0
- package/dist/assets/dtd-D9h-tL8G.js +1 -0
- package/dist/assets/dylan-D3MC56xy.js +1 -0
- package/dist/assets/ecl-B6UC4tME.js +1 -0
- package/dist/assets/edit-page-Cj3IcXFr.js +9 -0
- package/dist/assets/eiffel-CjvEov4k.js +1 -0
- package/dist/assets/ellipsis-C_B8Ux9M.js +1 -0
- package/dist/assets/elm-DvSbvRWe.js +1 -0
- package/dist/assets/empty-state-CqJvEFRk.js +1 -0
- package/dist/assets/en-US-CjNeNXDB.js +1 -0
- package/dist/assets/erDiagram-Q2GNP2WA-BQ8HfnRu.js +60 -0
- package/dist/assets/erlang-DJYaGXyq.js +1 -0
- package/dist/assets/error-banner-B6eIlxzg.js +1 -0
- package/dist/assets/error-entries-Birw-8VX.js +8 -0
- package/dist/assets/error-panel-DdsUL6b7.js +1 -0
- package/dist/assets/es-1D83cgiu.js +5 -0
- package/dist/assets/esm-BL7jQmzn.js +1 -0
- package/dist/assets/esm-Cmv0Nuxi.js +1 -0
- package/dist/assets/external-link-BOlXZUla.js +1 -0
- package/dist/assets/eye-off-BOZA7gbn.js +1 -0
- package/dist/assets/factor-CUQCrkTo.js +1 -0
- package/dist/assets/factor-DMrXrOH8.js +1 -0
- package/dist/assets/field-BeZbVzXA.js +1 -0
- package/dist/assets/file-CJH9JNGH.js +1 -0
- package/dist/assets/file-explorer-panel-DbdoJbbF.js +26 -0
- package/dist/assets/file-headphone-DAu6VO6j.js +1 -0
- package/dist/assets/file-icons-Cb54mIL8.js +1 -0
- package/dist/assets/file-name-input-BWFcK1ey.js +3 -0
- package/dist/assets/fileToBase64-C2Yy-YXq.js +1 -0
- package/dist/assets/floating-outline-wz-WSRgP.js +1 -0
- package/dist/assets/flowDiagram-NV44I4VS-xBOzhlfg.js +162 -0
- package/dist/assets/focus-DiEyfiAG.js +1 -0
- package/dist/assets/form-CgWNb44_.js +2 -0
- package/dist/assets/formats-ClEFGPy-.js +1 -0
- package/dist/assets/formatting-B_41gSF5.js +1 -0
- package/dist/assets/forth-D9xegiCO.js +1 -0
- package/dist/assets/fortran-B0Oe0U8s.js +1 -0
- package/dist/assets/fullscreen-dUjPYOmm.js +41 -0
- package/dist/assets/gallery-page-CWQQAYpa.js +1 -0
- package/dist/assets/ganttDiagram-JELNMOA3-D2O_k-Zg.js +267 -0
- package/dist/assets/gas-jLjj-PIq.js +1 -0
- package/dist/assets/gherkin-3Ig8Crit.js +1 -0
- package/dist/assets/gitGraph-G5XIXVHT-8HJwNcdU.js +1 -0
- package/dist/assets/gitGraphDiagram-V2S2FVAM-Nk4Ll9GY.js +65 -0
- package/dist/assets/github-_JH-0hIO.js +1 -0
- package/dist/assets/glide-data-editor-lMARFWHS.js +132 -0
- package/dist/assets/groovy-NKpNVJ-n.js +1 -0
- package/dist/assets/haskell-OPE4bAjk.js +1 -0
- package/dist/assets/hat-glasses-BttHlyvs.js +1 -0
- package/dist/assets/haxe-DEAZF8L3.js +1 -0
- package/dist/assets/home-page-DJ4jJsZj.js +4 -0
- package/dist/assets/house-DS0r7dNZ.js +1 -0
- package/dist/assets/html-to-image-CwmX28T9.js +2 -0
- package/dist/assets/icons-CIPE8AIY.js +1 -0
- package/dist/assets/idl-BM6265Xl.js +1 -0
- package/dist/assets/image-5XI2VU-q.js +1 -0
- package/dist/assets/index-BjlEpvLC.css +2 -0
- package/dist/assets/index-C0JtPo0J.js +38 -0
- package/dist/assets/info-VBDWY6EO-rfe3WPvd.js +1 -0
- package/dist/assets/infoDiagram-HS3SLOUP-DQnMjKYJ.js +2 -0
- package/dist/assets/input-CqrUjynb.js +1 -0
- package/dist/assets/isValid-D7naiWNs.js +1 -0
- package/dist/assets/javascript-CZ9vDpAy.js +1 -0
- package/dist/assets/journeyDiagram-XKPGCS4Q-D61FGivn.js +139 -0
- package/dist/assets/julia-BrY9TQnt.js +1 -0
- package/dist/assets/kanban-definition-3W4ZIXB7-Bnv0X0Tu.js +89 -0
- package/dist/assets/katex-C-lfa1AM.js +1 -0
- package/dist/assets/kbd-C5HnBH5U.js +1 -0
- package/dist/assets/kiosk-mode-ABm3oYgq.js +1 -0
- package/dist/assets/label-BElwWzf0.js +1 -0
- package/dist/assets/layout-BOwE7yok.js +9 -0
- package/dist/assets/line-DNm2phYo.js +1 -0
- package/dist/assets/linear-CTQqNbVX.js +1 -0
- package/dist/assets/link-CHdiBDr5.js +1 -0
- package/dist/assets/links-CToBjIIj.js +1 -0
- package/dist/assets/links-wcQA1Np1.js +1 -0
- package/dist/assets/livescript-CNahkUp5.js +1 -0
- package/dist/assets/logs-panel-iFV4ZJ9b.js +1 -0
- package/dist/assets/loro_wasm_bg-Duqr-kJ2.js +1 -0
- package/dist/assets/lua-Skr4TVu_.js +1 -0
- package/dist/assets/marimo-icons-C_nFooxr.js +1 -0
- package/dist/assets/markdown-renderer-QvXG0CRk.js +5 -0
- package/dist/assets/mathematica-BXxhrpeY.js +1 -0
- package/dist/assets/mbox-BRrQCVe9.js +1 -0
- package/dist/assets/menu-items-DbSLBfXR.js +1 -0
- package/dist/assets/mermaid-4DMBBIKO-CDGmT6YQ.js +1 -0
- package/dist/assets/mermaid-Bh0flEIb.js +11 -0
- package/dist/assets/mermaid-parser.core-Dz2GMGqQ.js +4 -0
- package/dist/assets/message-circle-dL5J5ZsZ.js +1 -0
- package/dist/assets/mhchem-CIWniJp4.js +1 -0
- package/dist/assets/mindmap-definition-VGOIOE7T-C-YaKmEU.js +68 -0
- package/dist/assets/mirc-CffYPE4R.js +1 -0
- package/dist/assets/mllike-C1DLZhEI.js +1 -0
- package/dist/assets/modelica-CvAyRRNV.js +1 -0
- package/dist/assets/mscgen-uMZWtMZv.js +1 -0
- package/dist/assets/multi-icon-nrKPWjDU.js +1 -0
- package/dist/assets/mumps-DFJehEx7.js +1 -0
- package/dist/assets/name-cell-input-C6cukQ9k.js +1 -0
- package/dist/assets/nsis-BVI9YULz.js +1 -0
- package/dist/assets/nsis-Ccvd1gbp.js +1 -0
- package/dist/assets/ntriples-Bcdh7b2H.js +1 -0
- package/dist/assets/number-overlay-editor-BQ9P6yP7.js +9 -0
- package/dist/assets/numbers-CeeaFKqu.js +1 -0
- package/dist/assets/objects-BlG0ZrO0.js +1 -0
- package/dist/assets/octave-CdAKz6YS.js +1 -0
- package/dist/assets/once-CGKw_kwj.js +1 -0
- package/dist/assets/ordinal-DyTNGK17.js +1 -0
- package/dist/assets/outline-panel-BPlg9_CE.js +1 -0
- package/dist/assets/oz-DSySeR-W.js +1 -0
- package/dist/assets/package-Bxz_8e44.js +1 -0
- package/dist/assets/packages-panel-BzQF60rG.js +1 -0
- package/dist/assets/packet-DYOGHKS2-DTVloLa7.js +1 -0
- package/dist/assets/pair-with-agent-modal-CKOYwOYw.js +4 -0
- package/dist/assets/panel-context-CH75ubGG.js +1 -0
- package/dist/assets/panels-CW-PUlv2.js +4 -0
- package/dist/assets/pascal-DefziIUN.js +1 -0
- package/dist/assets/pathUtils-Bfcp5m-a.js +1 -0
- package/dist/assets/perl-BOOloBPk.js +1 -0
- package/dist/assets/pie-VRWISCQL-Bmght6JF.js +1 -0
- package/dist/assets/pieDiagram-ADFJNKIX-DlFYL0BN.js +30 -0
- package/dist/assets/pig-f0nBb-5x.js +1 -0
- package/dist/assets/plus-AgXtozBz.js +1 -0
- package/dist/assets/popover-DrHQ3KEt.js +1 -0
- package/dist/assets/powershell-DToQjbK9.js +1 -0
- package/dist/assets/precisionRound-i2ImZxgc.js +1 -0
- package/dist/assets/process-output-BEhIGfkO.js +1 -0
- package/dist/assets/properties-BRob-nyj.js +1 -0
- package/dist/assets/protobuf-DZyC6051.js +1 -0
- package/dist/assets/pug-BtXi5KiX.js +1 -0
- package/dist/assets/pug-pVoM8FRt.js +1 -0
- package/dist/assets/puppet-9fuYG07F.js +1 -0
- package/dist/assets/purify.es-CWmnYhGI.js +3 -0
- package/dist/assets/python-_Mr8fyXP.js +1 -0
- package/dist/assets/q-D73s4Y77.js +1 -0
- package/dist/assets/quadrantDiagram-AYHSOK5B-BpJug2BH.js +7 -0
- package/dist/assets/r-BOEjz92e.js +1 -0
- package/dist/assets/radar-ZZBFDIW7-CYwWzRgW.js +1 -0
- package/dist/assets/radio-group-CLBjGkt5.js +1 -0
- package/dist/assets/react-vega-TNCk_eWj.js +188 -0
- package/dist/assets/readonly-code-display-D63oRtBP.js +1 -0
- package/dist/assets/readonly-python-code-CW_G5e4E.js +1 -0
- package/dist/assets/refresh-ccw-sLaKP2vj.js +1 -0
- package/dist/assets/refresh-cw-CYq4mK5a.js +1 -0
- package/dist/assets/renderShortcut-BZLr8D7H.js +1 -0
- package/dist/assets/request-registry-DHocQ_4I.js +1 -0
- package/dist/assets/requests-9-v2bhoi.js +1 -0
- package/dist/assets/requirementDiagram-UZGBJVZJ-Bd-1eny8.js +64 -0
- package/dist/assets/reveal-component-DqMRxmUr.js +1069 -0
- package/dist/assets/rotate-ccw-CTnUuC8r.js +1 -0
- package/dist/assets/rpm-LpXWTM5t.js +1 -0
- package/dist/assets/ruby-DodgSDfF.js +1 -0
- package/dist/assets/run-page-s6Mf8p78.js +1 -0
- package/dist/assets/runs-D51Xwrsk.js +1 -0
- package/dist/assets/sankeyDiagram-TZEHDZUN-CDWAE6GV.js +10 -0
- package/dist/assets/sas-D9KCtUmL.js +1 -0
- package/dist/assets/save-DBuEmnnF.js +1 -0
- package/dist/assets/save-worker-_Qc1hOeF.js +102 -0
- package/dist/assets/scheme-p8UJxmJw.js +1 -0
- package/dist/assets/scratchpad-panel-CXsxdMB-.js +1 -0
- package/dist/assets/scroll-to-bottom-button-Cgr10kaJ.js +1 -0
- package/dist/assets/secrets-panel-Cc5KDBk6.js +1 -0
- package/dist/assets/select-B5TFNjmU.js +1 -0
- package/dist/assets/sequenceDiagram-WL72ISMW-B6hjDGBF.js +145 -0
- package/dist/assets/session-CEFnN9Cq.js +1 -0
- package/dist/assets/session-panel-CmHetqAb.js +1 -0
- package/dist/assets/settings-D_PiwXwo.js +1 -0
- package/dist/assets/share-CYpcX4N4.js +1 -0
- package/dist/assets/shell-BWdqyqwL.js +1 -0
- package/dist/assets/sieve-CLwJmtiQ.js +1 -0
- package/dist/assets/skeleton-B_4CZVEm.js +1 -0
- package/dist/assets/smalltalk-D3KV-Qah.js +1 -0
- package/dist/assets/snippets-panel-CXpGflMO.js +1 -0
- package/dist/assets/sparkles-DUCpRFlS.js +1 -0
- package/dist/assets/sparql-D9Jz2mBw.js +1 -0
- package/dist/assets/spec-CzqcmYQk.js +1 -0
- package/dist/assets/spinner-D-V4psAa.js +1 -0
- package/dist/assets/square-DFICx2Qv.js +1 -0
- package/dist/assets/square-function-DNNRTPQJ.js +1 -0
- package/dist/assets/src-CIOdyciO.js +1 -0
- package/dist/assets/state-BXbiRXZk.js +3 -0
- package/dist/assets/state-BvdK8eiw.js +1 -0
- package/dist/assets/state-DBzEQtWz.js +1 -0
- package/dist/assets/state-WBgc7MiA.js +1 -0
- package/dist/assets/stateDiagram-FKZM4ZOC-Bzv6j99z.js +1 -0
- package/dist/assets/stateDiagram-v2-4FDKWEC3-CA1l0rNa.js +1 -0
- package/dist/assets/step-CDlhJj9-.js +1 -0
- package/dist/assets/stex-pjf-hOob.js +1 -0
- package/dist/assets/strings-Djnbwmfl.js +2 -0
- package/dist/assets/stylus-ClN4l_XO.js +1 -0
- package/dist/assets/swift-Dvd_9xBv.js +1 -0
- package/dist/assets/swiper-component-DInvCxhI.js +1 -0
- package/dist/assets/switch-CvweaCXq.js +1 -0
- package/dist/assets/table-CH2plyy9.js +1 -0
- package/dist/assets/table-D-tcnZC7.js +1 -0
- package/dist/assets/tcl-DR2p8cyi.js +1 -0
- package/dist/assets/terminal-D3IQBBYo.js +62 -0
- package/dist/assets/textarea-CpFfEUet.js +1 -0
- package/dist/assets/textile-D6S27_J2.js +1 -0
- package/dist/assets/time-BuRlxEhE.js +1 -0
- package/dist/assets/timeline-definition-IT6M3QCI-DXwdU1og.js +61 -0
- package/dist/assets/timer-VYMLXPue.js +1 -0
- package/dist/assets/toDate-Ct2FT81-.js +1 -0
- package/dist/assets/toml-B-YuQ2Id.js +1 -0
- package/dist/assets/tooltip-CFX4fYHU.js +1 -0
- package/dist/assets/tooltip-HLb6RxVp.js +61 -0
- package/dist/assets/tracing-CKn3gWHw.js +1 -0
- package/dist/assets/tracing-panel-BU-o_LCd.js +2 -0
- package/dist/assets/trash-2-72W0TZ3L.js +1 -0
- package/dist/assets/trash-CKgJJN6a.js +1 -0
- package/dist/assets/tree-actions-CsC2XmGo.js +1 -0
- package/dist/assets/treemap-GDKQZRPO-4Cm6HMmj.js +1 -0
- package/dist/assets/triangle-alert-BL4YVsPy.js +1 -0
- package/dist/assets/troff-HSk8AoRF.js +1 -0
- package/dist/assets/ttcn-CehzlVdx.js +1 -0
- package/dist/assets/ttcn-cfg-CLEPwk1s.js +1 -0
- package/dist/assets/turtle-DQLHkbOu.js +1 -0
- package/dist/assets/types-jdbI9Q8O.js +1 -0
- package/dist/assets/use-vega-container-remeasure-CbKTb_jy.js +1 -0
- package/dist/assets/useAsyncData-Bg5iAViP.js +1 -0
- package/dist/assets/useBoolean-0INKlLC_.js +1 -0
- package/dist/assets/useCellActionButton-CRfIEVB5.js +1 -0
- package/dist/assets/useDateFormatter-rtpVEy3J.js +1 -0
- package/dist/assets/useDeleteCell-EPH4kcG7.js +1 -0
- package/dist/assets/useDependencyPanelTab-CZnK7N2L.js +1 -0
- package/dist/assets/useEventListener-B_w3A283.js +1 -0
- package/dist/assets/useHotkey-DIuRH8Wu.js +1 -0
- package/dist/assets/useIframeCapabilities-Ccb4fvKc.js +1 -0
- package/dist/assets/useInstallPackage-BRbUAUFn.js +1 -0
- package/dist/assets/useInterval-CC0vKpWm.js +1 -0
- package/dist/assets/useLifecycle-lLOBhc-1.js +1 -0
- package/dist/assets/useNotebookActions-UvL5xEdt.js +14 -0
- package/dist/assets/useNumberFormatter-4-Qvf4uR.js +1 -0
- package/dist/assets/usePress-5hBv4sjD.js +7 -0
- package/dist/assets/useRunCells-CSSF_mJ0.js +1 -0
- package/dist/assets/useSplitCell-9Qz93yPZ.js +1 -0
- package/dist/assets/useTheme-KXqAyDPC.js +1 -0
- package/dist/assets/utils-CCTAhdFi.js +1 -0
- package/dist/assets/utils-Z80SV4_d.js +1 -0
- package/dist/assets/vb-o1EHrS4z.js +1 -0
- package/dist/assets/vbscript-BS8yUFpf.js +1 -0
- package/dist/assets/vega-component-Cie3ag_T.js +1 -0
- package/dist/assets/vega-embed-container-hDAVOOba.js +1 -0
- package/dist/assets/vega-loader.browser-Dun7Qe4B.js +6 -0
- package/dist/assets/velocity-u_oGPFaA.js +1 -0
- package/dist/assets/verilog-CSmDH7su.js +1 -0
- package/dist/assets/vhdl-BCaWLcjw.js +1 -0
- package/dist/assets/webidl-Bf6dokXM.js +1 -0
- package/dist/assets/worker-BQo2bijx.js +145 -0
- package/dist/assets/workflow-e-XGaKyY.js +1 -0
- package/dist/assets/write-secret-modal-DEEn7sZV.js +1 -0
- package/dist/assets/x-C-Eq0ag8.js +1 -0
- package/dist/assets/xquery-Di0kkiXg.js +1 -0
- package/dist/assets/xychartDiagram-PRI3JC2R-Cb0exSKs.js +7 -0
- package/dist/assets/yacas-DB8tPtyp.js +1 -0
- package/dist/assets/youtube-OwaksuQt.js +1 -0
- package/dist/assets/z80-DFUvlWxk.js +1 -0
- package/dist/index.html +162 -161
- package/package.json +3 -1
- package/src/__mocks__/requests.ts +3 -0
- package/src/components/charts/lazy.tsx +3 -1
- package/src/components/charts/vega-embed-container.tsx +18 -0
- package/src/components/chat/__tests__/chat-utils.test.ts +244 -1
- package/src/components/chat/__tests__/message-queue.test.tsx +121 -0
- package/src/components/chat/chat-panel.tsx +196 -67
- package/src/components/chat/chat-utils.ts +111 -2
- package/src/components/editor/RecoveryButton.tsx +2 -2
- package/src/components/editor/SortableCell.tsx +6 -2
- package/src/components/editor/__tests__/output-persistence.test.tsx +241 -0
- package/src/components/editor/actions/__tests__/pair-with-agent-commands.test.ts +153 -0
- package/src/components/editor/actions/pair-with-agent-commands.ts +109 -0
- package/src/components/editor/actions/pair-with-agent-modal.tsx +20 -64
- package/src/components/editor/actions/useNotebookActions.tsx +8 -0
- package/src/components/editor/ai/add-cell-with-ai.tsx +14 -5
- package/src/components/editor/ai/ai-completion-editor.tsx +4 -1
- package/src/components/editor/cell/cell-context-menu.tsx +7 -0
- package/src/components/editor/chrome/components/__tests__/feedback-button.test.tsx +221 -0
- package/src/components/editor/chrome/components/feedback-button.tsx +308 -77
- package/src/components/editor/chrome/panels/packages-panel.tsx +11 -1
- package/src/components/editor/chrome/panels/write-secret-modal.tsx +3 -2
- package/src/components/editor/columns/__tests__/cell-column.test.tsx +105 -0
- package/src/components/editor/columns/cell-column.tsx +34 -4
- package/src/components/editor/columns/sortable-column.tsx +24 -4
- package/src/components/editor/connections/__tests__/secret-combobox.test.ts +134 -0
- package/src/components/editor/connections/database/schemas.ts +35 -27
- package/src/components/editor/connections/form-renderers.tsx +42 -110
- package/src/components/editor/connections/secret-combobox.tsx +253 -0
- package/src/components/editor/connections/storage/schemas.ts +12 -6
- package/src/components/editor/file-tree/download.ts +46 -0
- package/src/components/editor/file-tree/file-explorer.tsx +3 -21
- package/src/components/editor/file-tree/file-viewer.tsx +4 -27
- package/src/components/editor/navigation/__tests__/navigation.test.ts +33 -0
- package/src/components/editor/navigation/navigation.ts +8 -1
- package/src/components/editor/notebook-cell.tsx +203 -106
- package/src/components/editor/renderers/__tests__/cells-renderer.test.tsx +66 -0
- package/src/components/editor/renderers/cell-array.tsx +26 -13
- package/src/components/editor/renderers/cells-renderer.tsx +8 -2
- package/src/components/editor/renderers/slides-layout/__tests__/plugin.test.ts +29 -0
- package/src/components/editor/renderers/slides-layout/types.ts +4 -0
- package/src/components/editor/renderers/vertical-layout/vertical-layout.tsx +19 -19
- package/src/components/slides/reveal-component.tsx +37 -17
- package/src/components/slides/slide-form.tsx +72 -0
- package/src/components/ui/toast.tsx +11 -3
- package/src/components/ui/toaster.tsx +65 -9
- package/src/core/ai/context/providers/error.ts +6 -158
- package/src/core/cells/__tests__/utils.test.ts +59 -0
- package/src/core/cells/utils.ts +51 -0
- package/src/core/codemirror/completion/__tests__/signature-hint.test.ts +97 -3
- package/src/core/codemirror/completion/signature-hint.ts +78 -11
- package/src/core/constants.ts +8 -0
- package/src/core/diagnostics/__tests__/issue-details.test.ts +173 -0
- package/src/core/diagnostics/issue-details.ts +139 -0
- package/src/core/errors/__tests__/error-entries.test.ts +25 -0
- package/src/core/errors/error-entries.ts +176 -0
- package/src/core/islands/__tests__/bridge.test.ts +341 -46
- package/src/core/islands/__tests__/main.test.ts +176 -0
- package/src/core/islands/__tests__/parse.test.ts +105 -0
- package/src/core/islands/bootstrap.ts +8 -3
- package/src/core/islands/bridge.ts +117 -23
- package/src/core/islands/components/__tests__/web-components.test.tsx +214 -0
- package/src/core/islands/components/web-components.tsx +76 -15
- package/src/core/islands/constants.ts +1 -0
- package/src/core/islands/main.ts +69 -3
- package/src/core/islands/parse.ts +70 -23
- package/src/core/islands/worker/__tests__/controller.test.ts +173 -0
- package/src/core/islands/worker/worker.tsx +145 -57
- package/src/core/network/__tests__/requests-lazy.test.ts +18 -0
- package/src/core/network/__tests__/requests-network.test.ts +7 -0
- package/src/core/network/requests-lazy.ts +13 -1
- package/src/core/network/requests-network.ts +3 -0
- package/src/core/network/requests-static.ts +1 -0
- package/src/core/network/requests-toasting.tsx +1 -0
- package/src/core/network/types.ts +3 -0
- package/src/core/runtime/__tests__/runtime.test.ts +64 -0
- package/src/core/runtime/runtime.ts +30 -10
- package/src/core/wasm/bridge.ts +8 -0
- package/src/core/wasm/worker/bootstrap.ts +113 -20
- package/src/core/wasm/worker/types.ts +2 -0
- package/src/css/app/Cell.css +10 -0
- package/src/hooks/__tests__/useHotkey.test.tsx +88 -0
- package/src/hooks/useHotkey.ts +29 -4
- package/src/plugins/impl/anywidget/__tests__/host.test.ts +6 -9
- package/src/plugins/impl/anywidget/__tests__/registry.test.ts +3 -1
- package/src/plugins/impl/anywidget/__tests__/widget-binding.test.ts +32 -61
- package/src/plugins/impl/anywidget/model-proxy.ts +0 -13
- package/src/plugins/impl/anywidget/runtime.ts +1 -0
- package/src/plugins/impl/anywidget/widget-binding.ts +8 -34
- package/src/plugins/impl/image-comparison/ImageComparisonComponent.tsx +53 -2
- package/src/plugins/impl/image-comparison/__tests__/ImageComparisonComponent.test.tsx +71 -0
- package/src/plugins/impl/vega/__tests__/use-vega-container-remeasure.test.ts +102 -0
- package/src/plugins/impl/vega/use-vega-container-remeasure.ts +39 -0
- package/src/plugins/impl/vega/vega-component.tsx +5 -4
- package/src/theme/__tests__/useTheme.test.ts +68 -0
- package/src/theme/useTheme.ts +16 -1
- package/dist/assets/CellStatus-CJiCB3Hi.js +0 -1
- package/dist/assets/ConnectedDataExplorerComponent-B4fGzEJZ.js +0 -1
- package/dist/assets/DeferredRequestRegistry-RuL7NV1n.js +0 -1
- package/dist/assets/ErrorBoundary-Bo313Z9X.js +0 -1
- package/dist/assets/ImageComparisonComponent-BHNx9yIG.js +0 -1
- package/dist/assets/ImperativeModal-B62Q6S9l.js +0 -1
- package/dist/assets/Inputs-SmI80aJQ.js +0 -1
- package/dist/assets/JsonOutput-Cqq7S3wn.js +0 -53
- package/dist/assets/LazyAnyLanguageCodeMirror-BSGwa0jm.js +0 -2
- package/dist/assets/MarimoErrorOutput-t_4q7nKD.js +0 -11
- package/dist/assets/Plot-BB9gg44K.js +0 -3789
- package/dist/assets/RSPContexts-VzcTZjG1.js +0 -1
- package/dist/assets/RenderHTML-DZz6EFTa.js +0 -1
- package/dist/assets/RunButton-rOSamvRh.js +0 -1
- package/dist/assets/__vite-browser-external-CeH7R2Sf.js +0 -1
- package/dist/assets/__vite-browser-external-DTK_qJHK.js +0 -1
- package/dist/assets/add-cell-with-ai-Cy1aVVcT.js +0 -110
- package/dist/assets/add-connection-dialog-B7evz8iS.js +0 -170
- package/dist/assets/agent-panel-CBDRTGjF.js +0 -287
- package/dist/assets/ai-model-dropdown-Cs7srqhW.js +0 -5
- package/dist/assets/alert-1y_DnRWn.js +0 -1
- package/dist/assets/alert-dialog-CC0gG4Av.js +0 -11
- package/dist/assets/any-language-editor-DPRB0D1H.js +0 -1
- package/dist/assets/apl-Chr9VNQb.js +0 -1
- package/dist/assets/app-config-button-vfhq9pUS.js +0 -1
- package/dist/assets/arc-DUSwcTI9.js +0 -1
- package/dist/assets/architecture-7HQA4BMR-BKC1aYPh.js +0 -1
- package/dist/assets/architectureDiagram-VXUJARFQ-9zNZOBwF.js +0 -36
- package/dist/assets/arrays-DWxvyYxP.js +0 -1
- package/dist/assets/arrow-right-DFk7kYqp.js +0 -1
- package/dist/assets/asciiarmor-DzJGO3cy.js +0 -1
- package/dist/assets/asn1-Blkd-UVm.js +0 -1
- package/dist/assets/badge-6yGCqY1Z.js +0 -1
- package/dist/assets/ban-CttLZK8l.js +0 -1
- package/dist/assets/blockDiagram-VD42YOAC-CoeffysX.js +0 -122
- package/dist/assets/bot-message-square-AslRbAeb.js +0 -1
- package/dist/assets/brainfuck-BeRVF6bt.js +0 -1
- package/dist/assets/button-BF7GSjhW.js +0 -1
- package/dist/assets/c4Diagram-YG6GDRKO-HRtHHrnC.js +0 -10
- package/dist/assets/cache-panel-BlIrcwlT.js +0 -1
- package/dist/assets/capabilities-CjNGDxxx.js +0 -1
- package/dist/assets/card-s1ZaQ9ub.js +0 -1
- package/dist/assets/cell-editor-CTnJaccs.js +0 -27
- package/dist/assets/cell-link-BZg1pgHT.js +0 -1
- package/dist/assets/cells-ChH37lAD.js +0 -229
- package/dist/assets/channel-xkFudYwF.js +0 -1
- package/dist/assets/chart-no-axes-column-DVEV2j1H.js +0 -1
- package/dist/assets/chat-display-g1pE3dpm.js +0 -1
- package/dist/assets/chat-panel-DC85y3IW.js +0 -3
- package/dist/assets/chat-ui-CcC5kdbn.js +0 -4
- package/dist/assets/check-DQmqoJgr.js +0 -1
- package/dist/assets/chevron-right-C7RH0Nc7.js +0 -1
- package/dist/assets/chunk-4BX2VUAB-B9eTC_as.js +0 -1
- package/dist/assets/chunk-4F5CHEZ2-DMnTTluO.js +0 -1
- package/dist/assets/chunk-55IACEB6-RaPtcg4Z.js +0 -1
- package/dist/assets/chunk-5FQGJX7Z-OScactr4.js +0 -113
- package/dist/assets/chunk-ABZYJK2D-BahEojQ2.js +0 -80
- package/dist/assets/chunk-ATLVNIR6-x_ij98gB.js +0 -1
- package/dist/assets/chunk-B2363JML-Dku8Kg6Q.js +0 -1
- package/dist/assets/chunk-B4BG7PRW-CNWrrwyq.js +0 -165
- package/dist/assets/chunk-CVBHYZKI-BmNXddyI.js +0 -1
- package/dist/assets/chunk-DI55MBZ5-DLtrYKQl.js +0 -220
- package/dist/assets/chunk-EXTU4WIE-BosqMJS0.js +0 -1
- package/dist/assets/chunk-FMBD7UC4-CXkgki2e.js +0 -15
- package/dist/assets/chunk-FRFDVMJY-W8ieZ4T6.js +0 -1
- package/dist/assets/chunk-HN2XXSSU-BstCPYtG.js +0 -1
- package/dist/assets/chunk-JA3XYJ7Z-BGpTu7cp.js +0 -70
- package/dist/assets/chunk-JZLCHNYA-B5kB1fLQ.js +0 -54
- package/dist/assets/chunk-MI3HLSF2-BceZdyTR.js +0 -32
- package/dist/assets/chunk-N4CR4FBY-BBG_uFjb.js +0 -2
- package/dist/assets/chunk-PL6DKKU2-B2NeQSoB.js +0 -1
- package/dist/assets/chunk-QN33PNHL-CVHu8q7d.js +0 -1
- package/dist/assets/chunk-QXUST7PY-CFthKhW0.js +0 -7
- package/dist/assets/chunk-QZHKN3VN-B9NOrYv5.js +0 -1
- package/dist/assets/chunk-S3R3BYOJ-C_f67nz1.js +0 -2
- package/dist/assets/chunk-SJTYNZTY-KfBChqO5.js +0 -1
- package/dist/assets/chunk-TCCFYFTB-Cq0Vz6d2.js +0 -125
- package/dist/assets/chunk-TQ3KTPDO-BMxqKE6C.js +0 -1
- package/dist/assets/chunk-TZMSLE5B-HjU3PlWB.js +0 -1
- package/dist/assets/chunk-UMXZTB3W-BUDrzDik.js +0 -1
- package/dist/assets/circle-check-Q2N68uwG.js +0 -1
- package/dist/assets/circle-play-BvVg4iiT.js +0 -1
- package/dist/assets/circle-plus-BIy1BGHw.js +0 -1
- package/dist/assets/classDiagram-2ON5EDUG-BijpneZJ.js +0 -1
- package/dist/assets/classDiagram-v2-WZHVMYZB-DcBY2KJt.js +0 -1
- package/dist/assets/clear-button-DhIdI0ng.js +0 -1
- package/dist/assets/clike-BhFoDDUF.js +0 -1
- package/dist/assets/clipboard-paste-CXof_R04.js +0 -1
- package/dist/assets/clojure-D3LWk-SC.js +0 -1
- package/dist/assets/cmake-238GeNbi.js +0 -1
- package/dist/assets/cn-X2M2usMq.js +0 -1
- package/dist/assets/cobol-CZP4RjnO.js +0 -1
- package/dist/assets/code-DP40S9ln.js +0 -1
- package/dist/assets/code-block-37QAKDTI-DhYEpctq.js +0 -2
- package/dist/assets/code-xml-tqeFGeKJ.js +0 -1
- package/dist/assets/coffeescript-B7XjCOaF.js +0 -1
- package/dist/assets/column-preview-47aOuXOh.js +0 -1
- package/dist/assets/command-DRHbYHUP.js +0 -1
- package/dist/assets/command-palette-Gt0BItEs.js +0 -1
- package/dist/assets/common-DLhZ1eJc.js +0 -1
- package/dist/assets/commonlisp-DKNhPgyy.js +0 -1
- package/dist/assets/components-F3_UehyY.js +0 -1
- package/dist/assets/config-CjCV0n0j.js +0 -1
- package/dist/assets/config-Vyzo6FSF.js +0 -1
- package/dist/assets/constants-B9JJ72XE.js +0 -1
- package/dist/assets/context-C2Ie4tn_.js +0 -1
- package/dist/assets/copy-D8MtpXgN.js +0 -1
- package/dist/assets/copy-IBNGDypD.js +0 -1
- package/dist/assets/copy-icon-EHMT-qlr.js +0 -1
- package/dist/assets/cose-bilkent-S5V4N54A-BfoWxM7A.js +0 -1
- package/dist/assets/createReducer-3wF4dU7I.js +0 -1
- package/dist/assets/crystal-DmwO_0_4.js +0 -1
- package/dist/assets/css-b-BDNvIM.js +0 -1
- package/dist/assets/cypher-Bld-ecrK.js +0 -1
- package/dist/assets/d-D0LlbZRM.js +0 -1
- package/dist/assets/dagre-6UL2VRFP-D9JPUp6S.js +0 -4
- package/dist/assets/data-grid-overlay-editor-DmMSodPy.js +0 -1
- package/dist/assets/database-zap-DIlSqcdp.js +0 -1
- package/dist/assets/datasource-ii4hOmhM.js +0 -3
- package/dist/assets/dates-D8uxHHPL.js +0 -1
- package/dist/assets/dependency-graph-panel-BD4d_qw2.js +0 -5
- package/dist/assets/diagram-PSM6KHXK-B0tUabrq.js +0 -24
- package/dist/assets/diagram-QEK2KX5R-Cw9uF9O2.js +0 -43
- package/dist/assets/diagram-S2PKOQOG-CQ2c8wZv.js +0 -24
- package/dist/assets/dialog-DkJmIrsG.js +0 -1
- package/dist/assets/diff-BhkLDFRp.js +0 -1
- package/dist/assets/dist-B0WqBUnf.js +0 -1
- package/dist/assets/dist-BKUbUFYs.js +0 -1
- package/dist/assets/dist-BP6Oj7vU.js +0 -1
- package/dist/assets/dist-BTohsDew.js +0 -1
- package/dist/assets/dist-BXnBIECY.js +0 -1
- package/dist/assets/dist-BbGE6FVk.js +0 -1
- package/dist/assets/dist-BnV7Zv4J.js +0 -1
- package/dist/assets/dist-BqW5KzD0.js +0 -1
- package/dist/assets/dist-BtrqKtvn.js +0 -3
- package/dist/assets/dist-C4-ruy-b.js +0 -1
- package/dist/assets/dist-C62CI8Os.js +0 -7
- package/dist/assets/dist-C6zQ57IZ.js +0 -1
- package/dist/assets/dist-CF7wJiFo.js +0 -1
- package/dist/assets/dist-CIQQgRzz.js +0 -1
- package/dist/assets/dist-CIlJuwTK.js +0 -1
- package/dist/assets/dist-CKCDTgIC.js +0 -1
- package/dist/assets/dist-CNKFZCiw.js +0 -1
- package/dist/assets/dist-CR5yl751.js +0 -1
- package/dist/assets/dist-CUoPT-12.js +0 -1
- package/dist/assets/dist-CVIPALxj.js +0 -1
- package/dist/assets/dist-CWf9ows7.js +0 -1
- package/dist/assets/dist-CcVb-ahb.js +0 -1
- package/dist/assets/dist-CfGDksO-.js +0 -2
- package/dist/assets/dist-Ci66nyHs.js +0 -1
- package/dist/assets/dist-Cr2Z8vBa.js +0 -1
- package/dist/assets/dist-CrExO-X4.js +0 -1
- package/dist/assets/dist-CruUwJkI.js +0 -1
- package/dist/assets/dist-CwfKvuyQ.js +0 -2
- package/dist/assets/dist-CzcvL_Z9.js +0 -1
- package/dist/assets/dist-D-2yWcX9.js +0 -1
- package/dist/assets/dist-DCqDlsgq.js +0 -1
- package/dist/assets/dist-DJZFvU6Z.js +0 -1
- package/dist/assets/dist-DU8gTNy9.js +0 -1
- package/dist/assets/dist-DblYTes5.js +0 -6
- package/dist/assets/dist-Dez1I5M9.js +0 -14
- package/dist/assets/dist-DgBuTUso.js +0 -7
- package/dist/assets/dist-DkYp4RmM.js +0 -1
- package/dist/assets/dist-DlREAgj1.js +0 -1
- package/dist/assets/dist-FCPDbCwM.js +0 -1
- package/dist/assets/dist-KRVJJ-dD.js +0 -1
- package/dist/assets/dist-Qjp1OoCV.js +0 -1
- package/dist/assets/dist-RW5SS83Z.js +0 -1
- package/dist/assets/dist-UghNT0W0.js +0 -3
- package/dist/assets/dist-XexmIjM8.js +0 -1
- package/dist/assets/dist-ZjSH4Z6x.js +0 -13
- package/dist/assets/dist-azqjLiVY.js +0 -1
- package/dist/assets/dist-hvL02v1Z.js +0 -1
- package/dist/assets/dist-qGjvyIZU.js +0 -1
- package/dist/assets/dockerfile-BLAGVcyS.js +0 -1
- package/dist/assets/documentation-panel-De-VtKhs.js +0 -1
- package/dist/assets/download-BVqpOaYz.js +0 -9
- package/dist/assets/dropdown-menu-DfGLyCbP.js +0 -1
- package/dist/assets/dtd-CjtwvVlM.js +0 -1
- package/dist/assets/dylan-D750ej-H.js +0 -1
- package/dist/assets/ecl-ChePjOI6.js +0 -1
- package/dist/assets/edit-page-ByuvhrYn.js +0 -9
- package/dist/assets/eiffel-MZyxske9.js +0 -1
- package/dist/assets/ellipsis-D0iYysLh.js +0 -1
- package/dist/assets/elm-gXtxhfT4.js +0 -1
- package/dist/assets/empty-state-QmmE2oN4.js +0 -1
- package/dist/assets/en-US-BXNio91F.js +0 -1
- package/dist/assets/erDiagram-Q2GNP2WA-x4InYUc5.js +0 -60
- package/dist/assets/erlang-CEe3KwR2.js +0 -1
- package/dist/assets/error-banner-DEWyImqa.js +0 -1
- package/dist/assets/error-panel-BWy0Wum5.js +0 -1
- package/dist/assets/es-EItoYvXh.js +0 -5
- package/dist/assets/esm-B_l4S2x_.js +0 -1
- package/dist/assets/esm-X3Tr2pur.js +0 -1
- package/dist/assets/external-link-BktyywYg.js +0 -1
- package/dist/assets/eye-off-DI0EQXw0.js +0 -1
- package/dist/assets/factor-Cf6jeuFE.js +0 -1
- package/dist/assets/factor-D7Lm0c37.js +0 -1
- package/dist/assets/field-DlNY-dDH.js +0 -1
- package/dist/assets/file-BvoBtS_V.js +0 -1
- package/dist/assets/file-explorer-panel-lxCbk6eL.js +0 -26
- package/dist/assets/file-headphone-CUN2DC78.js +0 -1
- package/dist/assets/file-icons-BSYRCaKq.js +0 -1
- package/dist/assets/file-name-input-0TQuog_P.js +0 -3
- package/dist/assets/fileToBase64-BSOFR3RV.js +0 -1
- package/dist/assets/floating-outline-Dy8nXch3.js +0 -1
- package/dist/assets/flowDiagram-NV44I4VS-D6dpsSFe.js +0 -162
- package/dist/assets/focus-CeA7VBO7.js +0 -1
- package/dist/assets/form-x2vXRBGq.js +0 -2
- package/dist/assets/formats-ZGU43GQU.js +0 -1
- package/dist/assets/formatting-DhA_x3cD.js +0 -1
- package/dist/assets/forth-cDDgSP9p.js +0 -1
- package/dist/assets/fortran-C8vMa5zJ.js +0 -1
- package/dist/assets/fullscreen-BXI8V5i6.js +0 -41
- package/dist/assets/gallery-page-DoxZqkrq.js +0 -1
- package/dist/assets/ganttDiagram-JELNMOA3-CiHe5iIm.js +0 -267
- package/dist/assets/gas-Df167mJ4.js +0 -1
- package/dist/assets/gherkin-8tk6kFf5.js +0 -1
- package/dist/assets/gitGraph-G5XIXVHT-DR6EWL-x.js +0 -1
- package/dist/assets/gitGraphDiagram-V2S2FVAM-DYyxaqXO.js +0 -65
- package/dist/assets/github-DghuZBnj.js +0 -1
- package/dist/assets/glide-data-editor-zlTMrHkt.js +0 -132
- package/dist/assets/globals-B2VpoaLA.js +0 -1
- package/dist/assets/groovy-JuojAv0H.js +0 -1
- package/dist/assets/haskell-Bpjctb1r.js +0 -1
- package/dist/assets/hat-glasses-DlK0E4SX.js +0 -1
- package/dist/assets/haxe-DJHguewM.js +0 -1
- package/dist/assets/home-page-BDr2ccto.js +0 -4
- package/dist/assets/hooks-C9C5iUZz.js +0 -1
- package/dist/assets/house-DHu4JLi3.js +0 -1
- package/dist/assets/html-to-image-B9XAiAY5.js +0 -2
- package/dist/assets/icons-avFV3lBF.js +0 -1
- package/dist/assets/idl-feOWH07C.js +0 -1
- package/dist/assets/image-BzUcK6ho.js +0 -1
- package/dist/assets/index-Bv_jqGHk.js +0 -38
- package/dist/assets/index-DZAttTAm.css +0 -2
- package/dist/assets/info-VBDWY6EO-CB7fium3.js +0 -1
- package/dist/assets/infoDiagram-HS3SLOUP-BvAjf34S.js +0 -2
- package/dist/assets/input-DB2LiTiQ.js +0 -1
- package/dist/assets/isValid-DKyiOp4U.js +0 -1
- package/dist/assets/javascript-BekfVgKQ.js +0 -1
- package/dist/assets/journeyDiagram-XKPGCS4Q-DH75OGJw.js +0 -139
- package/dist/assets/julia-DG-ah68k.js +0 -1
- package/dist/assets/kanban-definition-3W4ZIXB7-DHdmqfgQ.js +0 -89
- package/dist/assets/katex-CByyX_jt.js +0 -1
- package/dist/assets/kbd-UVzWBHfi.js +0 -1
- package/dist/assets/kiosk-mode-jQCgP3s9.js +0 -1
- package/dist/assets/label-CFvCMYuj.js +0 -1
- package/dist/assets/layout-CvW9L5oQ.js +0 -9
- package/dist/assets/line-BKm-YkCh.js +0 -1
- package/dist/assets/linear-BD0d4-bn.js +0 -1
- package/dist/assets/link-e5mRDDOC.js +0 -1
- package/dist/assets/links-Bof3pNQU.js +0 -1
- package/dist/assets/links-CCkJpphF.js +0 -1
- package/dist/assets/livescript-B2wfFY5r.js +0 -1
- package/dist/assets/logs-panel-BTnX1HXX.js +0 -1
- package/dist/assets/loro_wasm_bg-B9rbCmxT.js +0 -1
- package/dist/assets/lua-CDP4_ezR.js +0 -1
- package/dist/assets/marimo-icons-DuRILrB8.js +0 -1
- package/dist/assets/markdown-renderer-BxBgsCTf.js +0 -5
- package/dist/assets/mathematica-BElcKLBW.js +0 -1
- package/dist/assets/mbox-DlwO5A6s.js +0 -1
- package/dist/assets/menu-items-CQMqwayA.js +0 -1
- package/dist/assets/mermaid-4DMBBIKO-Bc5nhxrT.js +0 -1
- package/dist/assets/mermaid-CcR9c7HL.js +0 -11
- package/dist/assets/mermaid-parser.core-Chxpj4sw.js +0 -4
- package/dist/assets/message-circle-RkIzfQEi.js +0 -1
- package/dist/assets/mhchem-CkxmpjZ8.js +0 -1
- package/dist/assets/mindmap-definition-VGOIOE7T-DFjySly4.js +0 -68
- package/dist/assets/mirc-D6l20mh4.js +0 -1
- package/dist/assets/mllike-fwkzyrZt.js +0 -1
- package/dist/assets/modelica-DAnB6nmO.js +0 -1
- package/dist/assets/mscgen-Cs4VQ67l.js +0 -1
- package/dist/assets/multi-icon-CTvmuLdL.js +0 -1
- package/dist/assets/mumps-Dt8k0EUU.js +0 -1
- package/dist/assets/name-cell-input-DOmw-OQJ.js +0 -1
- package/dist/assets/nsis-C1g8DTeO.js +0 -1
- package/dist/assets/nsis-C5Oj2cBc.js +0 -1
- package/dist/assets/ntriples-DTMBUZ7F.js +0 -1
- package/dist/assets/number-overlay-editor-BYYoWTbS.js +0 -9
- package/dist/assets/numbers-_ry1Nlla.js +0 -1
- package/dist/assets/octave-BwfNaTxP.js +0 -1
- package/dist/assets/once-CXj_gH7S.js +0 -1
- package/dist/assets/ordinal-BEKpVWu-.js +0 -1
- package/dist/assets/outline-panel-CNmQqc8n.js +0 -1
- package/dist/assets/oz-6BWZLab7.js +0 -1
- package/dist/assets/package-BTIV9-Dk.js +0 -1
- package/dist/assets/packages-panel-COIInbnq.js +0 -1
- package/dist/assets/packet-DYOGHKS2-DfGBb0Dd.js +0 -1
- package/dist/assets/pair-with-agent-modal-CB0Cx-Eb.js +0 -4
- package/dist/assets/panel-context-DC1vAeB3.js +0 -1
- package/dist/assets/panels-CZgpp-Jc.js +0 -4
- package/dist/assets/pascal-64fygDAy.js +0 -1
- package/dist/assets/pathUtils-BXCjaLHB.js +0 -1
- package/dist/assets/perl-CC5X3ewy.js +0 -1
- package/dist/assets/pie-VRWISCQL-BUcldHEm.js +0 -1
- package/dist/assets/pieDiagram-ADFJNKIX-Cqy3gKwK.js +0 -30
- package/dist/assets/pig-DP6pbekb.js +0 -1
- package/dist/assets/plus-ZXRHY1up.js +0 -1
- package/dist/assets/popover-DMNO6Poc.js +0 -1
- package/dist/assets/powershell-WtGE4kBw.js +0 -1
- package/dist/assets/precisionRound-BOmLQIKI.js +0 -1
- package/dist/assets/process-output-BSGc23nl.js +0 -1
- package/dist/assets/properties-CRoDUVbK.js +0 -1
- package/dist/assets/protobuf-BS6gEp_x.js +0 -1
- package/dist/assets/pug-CzQlD5xP.js +0 -1
- package/dist/assets/pug-STAEJHPq.js +0 -1
- package/dist/assets/puppet-BV74Hcdf.js +0 -1
- package/dist/assets/purify.es-DfJp_of2.js +0 -2
- package/dist/assets/python-4yue3pyq.js +0 -1
- package/dist/assets/q-SorAikmF.js +0 -1
- package/dist/assets/quadrantDiagram-AYHSOK5B-B3qlPKHh.js +0 -7
- package/dist/assets/r-Dc7847Lm.js +0 -1
- package/dist/assets/radar-ZZBFDIW7-DALEitfL.js +0 -1
- package/dist/assets/radio-group-xSHDhdM7.js +0 -1
- package/dist/assets/react-vega-BVvkE5O4.js +0 -1
- package/dist/assets/react-vega-DJIihc-q.js +0 -188
- package/dist/assets/readonly-code-display-DAO13rnf.js +0 -1
- package/dist/assets/readonly-python-code-C12Tt_qR.js +0 -1
- package/dist/assets/refresh-ccw-Bee7JLOl.js +0 -1
- package/dist/assets/refresh-cw-C9FftltI.js +0 -1
- package/dist/assets/renderShortcut-DTZeni4V.js +0 -1
- package/dist/assets/request-registry-K6vbazWs.js +0 -1
- package/dist/assets/requests-KshNNAOp.js +0 -1
- package/dist/assets/requirementDiagram-UZGBJVZJ-C1PyB1kO.js +0 -64
- package/dist/assets/reveal-component-Br8zxPxo.js +0 -1069
- package/dist/assets/rotate-ccw-ZsOWbQCw.js +0 -1
- package/dist/assets/rpm-C2rCOQ1Z.js +0 -1
- package/dist/assets/ruby-DNrqAMg4.js +0 -1
- package/dist/assets/run-page-DYYDJi1y.js +0 -1
- package/dist/assets/runs-ChtaccFx.js +0 -1
- package/dist/assets/sankeyDiagram-TZEHDZUN-CWokPFKQ.js +0 -10
- package/dist/assets/sas-BKYzR5_z.js +0 -1
- package/dist/assets/save-BNNMzGly.js +0 -1
- package/dist/assets/save-worker-Bcr7rl0C.js +0 -77
- package/dist/assets/scheme-as2FasXy.js +0 -1
- package/dist/assets/scratchpad-panel-BpovE3w8.js +0 -1
- package/dist/assets/secrets-panel-B_LDPvs3.js +0 -1
- package/dist/assets/select-Cjly7tmx.js +0 -1
- package/dist/assets/sequenceDiagram-WL72ISMW-Bt2iqyTe.js +0 -145
- package/dist/assets/session-CsT5Gg9j.js +0 -1
- package/dist/assets/session-panel-D9KEIcxF.js +0 -1
- package/dist/assets/settings-1WkYMLdR.js +0 -1
- package/dist/assets/share-DQjChRJG.js +0 -1
- package/dist/assets/shell-Bf8Q5ES6.js +0 -1
- package/dist/assets/sieve-D515TmZq.js +0 -1
- package/dist/assets/smalltalk-DYzx-8Vf.js +0 -1
- package/dist/assets/snippets-panel-B0kWXd0i.js +0 -1
- package/dist/assets/sparkles-COaEc8Qn.js +0 -1
- package/dist/assets/sparql-6VnDrYOs.js +0 -1
- package/dist/assets/spec-CDgWI0fT.js +0 -1
- package/dist/assets/spinner-BbI9qk88.js +0 -1
- package/dist/assets/square-35tXIgiR.js +0 -1
- package/dist/assets/square-function-Dx0pKHko.js +0 -1
- package/dist/assets/src-CvyFXpBy.js +0 -1
- package/dist/assets/state-Csq9SFHN.js +0 -3
- package/dist/assets/state-DIDUL4YY.js +0 -1
- package/dist/assets/state-DjrxAf9W.js +0 -1
- package/dist/assets/state-MC8-jN2e.js +0 -1
- package/dist/assets/stateDiagram-FKZM4ZOC-Cu-QGXei.js +0 -1
- package/dist/assets/stateDiagram-v2-4FDKWEC3-C_watzL2.js +0 -1
- package/dist/assets/step-B5y1YzZ4.js +0 -1
- package/dist/assets/stex-BBWVYm-R.js +0 -1
- package/dist/assets/strings-DvZlHYnD.js +0 -2
- package/dist/assets/stylus-DUyoKY_7.js +0 -1
- package/dist/assets/swift-CXFwyL-K.js +0 -1
- package/dist/assets/swiper-component-1Qq8v34u.js +0 -1
- package/dist/assets/switch-DqXjpgoL.js +0 -1
- package/dist/assets/table-CnW850Wt.js +0 -1
- package/dist/assets/table-DxdydCSG.js +0 -1
- package/dist/assets/tcl-DbyqErhh.js +0 -1
- package/dist/assets/terminal-BRypP4mE.js +0 -62
- package/dist/assets/textarea-D_WnJbC1.js +0 -1
- package/dist/assets/textile-8fxKT1uq.js +0 -1
- package/dist/assets/time-jEmAyVx0.js +0 -1
- package/dist/assets/timeline-definition-IT6M3QCI-DbqS7JT0.js +0 -61
- package/dist/assets/timer-B6DpdVnC.js +0 -1
- package/dist/assets/toDate-DCE7d2fN.js +0 -1
- package/dist/assets/toml-BpCjWJNE.js +0 -1
- package/dist/assets/tooltip-CgQpRVyN.js +0 -1
- package/dist/assets/tracing-BnSjCbj3.js +0 -1
- package/dist/assets/tracing-panel-VQ2bJwVp.js +0 -2
- package/dist/assets/trash-2-CqTUwVuU.js +0 -1
- package/dist/assets/trash-BW_KaFjz.js +0 -1
- package/dist/assets/tree-actions-DONHntzY.js +0 -1
- package/dist/assets/treemap-GDKQZRPO-DD4LlMfm.js +0 -1
- package/dist/assets/triangle-alert-D8Ft17xk.js +0 -1
- package/dist/assets/troff-BhJs9Lif.js +0 -1
- package/dist/assets/ttcn-BVPxY_nX.js +0 -1
- package/dist/assets/ttcn-cfg-B4sCU0gH.js +0 -1
- package/dist/assets/turtle-D4EQx9sx.js +0 -1
- package/dist/assets/types-BnrgJ4Gh.js +0 -1
- package/dist/assets/useAsyncData-DAQcLiyE.js +0 -1
- package/dist/assets/useBoolean-DmobZaim.js +0 -1
- package/dist/assets/useCellActionButton-DJgU89TM.js +0 -1
- package/dist/assets/useDateFormatter-CAlTJ8HV.js +0 -1
- package/dist/assets/useDeleteCell-Dd-rdVr9.js +0 -1
- package/dist/assets/useDependencyPanelTab-5uO5bZY0.js +0 -1
- package/dist/assets/useEventListener-BakX-tnw.js +0 -1
- package/dist/assets/useHotkey-tGzXOQVZ.js +0 -1
- package/dist/assets/useIframeCapabilities-B0dNZiKK.js +0 -1
- package/dist/assets/useInstallPackage-C1Dd0aIZ.js +0 -1
- package/dist/assets/useInterval-DeSrhhRN.js +0 -1
- package/dist/assets/useLifecycle-Baf35rp4.js +0 -1
- package/dist/assets/useNotebookActions-DAyvCHVP.js +0 -1
- package/dist/assets/useNumberFormatter-CuxZh3Bq.js +0 -1
- package/dist/assets/usePress-BSFUeqnS.js +0 -7
- package/dist/assets/useRunCells-Dmf7GVGt.js +0 -1
- package/dist/assets/useSplitCell-BtwG_Ap2.js +0 -1
- package/dist/assets/useTheme-COorCcXC.js +0 -1
- package/dist/assets/utils-CCzEbCvM.js +0 -1
- package/dist/assets/utils-DPvpQ891.js +0 -61
- package/dist/assets/vb-D-5BLYdM.js +0 -1
- package/dist/assets/vbscript-DOZuVfk8.js +0 -1
- package/dist/assets/vega-component-DLk5ZoUT.js +0 -1
- package/dist/assets/vega-loader.browser-CZV6_g2i.js +0 -6
- package/dist/assets/velocity-BPduikoO.js +0 -1
- package/dist/assets/verilog-D9S6puFO.js +0 -1
- package/dist/assets/vhdl-YYXNXz0X.js +0 -1
- package/dist/assets/webidl-Ct7ps8LR.js +0 -1
- package/dist/assets/worker-Bp53hInb.js +0 -120
- package/dist/assets/workflow-f8flhcJ1.js +0 -1
- package/dist/assets/write-secret-modal-K2n79wHj.js +0 -1
- package/dist/assets/x-9vLEgLY6.js +0 -1
- package/dist/assets/xquery-9kDflInd.js +0 -1
- package/dist/assets/xychartDiagram-PRI3JC2R-BbSJBns5.js +0 -7
- package/dist/assets/yacas-u934AJft.js +0 -1
- package/dist/assets/youtube-NfBeYlaL.js +0 -1
- package/dist/assets/z80-BQ7XtT4U.js +0 -1
- /package/dist/assets/{Deferred-BMfCOLaw.js → Deferred-D2igisxY.js} +0 -0
- /package/dist/assets/{SSRProvider-DX2edArU.js → SSRProvider-BUSmWJKC.js} +0 -0
- /package/dist/assets/{apl-C1zdcQvI.js → apl-DVqFAlEd.js} +0 -0
- /package/dist/assets/{array-CEZNxKGf.js → array-Ddg9CgJT.js} +0 -0
- /package/dist/assets/{asciiarmor-B--OGpM1.js → asciiarmor-B45BhOLj.js} +0 -0
- /package/dist/assets/{asn1-D2UnMTL5.js → asn1-C4T2ctU6.js} +0 -0
- /package/dist/assets/{asterisk-Bjb62jej.js → asterisk-9U_4Kgke.js} +0 -0
- /package/dist/assets/{azure-DBVzcmvx.js → azure-nN8APleF.js} +0 -0
- /package/dist/assets/{blob-BiK5xmlC.js → blob-C3EfaMOb.js} +0 -0
- /package/dist/assets/{brainfuck-DrjMyC8V.js → brainfuck-kVh8Eud4.js} +0 -0
- /package/dist/assets/{bundle.esm-D544r2Sr.js → bundle.esm-D0TWQ6iT.js} +0 -0
- /package/dist/assets/{chunk-DR5Q36YT-SM9ZwAOv.js → chunk-DR5Q36YT-Bsu9Glc0.js} +0 -0
- /package/dist/assets/{cjs-DXo9vDEJ.js → cjs-D5tzp-Y6.js} +0 -0
- /package/dist/assets/{click-outside-container-C-40Ctlw.js → click-outside-container-CrWZsAF5.js} +0 -0
- /package/dist/assets/{clike-CCdVFz-6.js → clike-O0gwXilc.js} +0 -0
- /package/dist/assets/{clojure-BjmTMymc.js → clojure-CsbMWxp9.js} +0 -0
- /package/dist/assets/{clsx-BtEcuwwV.js → clsx-XrBBnd7s.js} +0 -0
- /package/dist/assets/{cmake-CgqRscDS.js → cmake-FpJvOdyj.js} +0 -0
- /package/dist/assets/{cobol-DZNhVUeB.js → cobol-Duxbpsru.js} +0 -0
- /package/dist/assets/{coffeescript-Qp7k0WHA.js → coffeescript-D-Unz9IP.js} +0 -0
- /package/dist/assets/{colors-Dm6L93c7.js → colors-C_0lIznd.js} +0 -0
- /package/dist/assets/{common-keywords-D_14jCw0.js → common-keywords-PqH2GDfH.js} +0 -0
- /package/dist/assets/{commonlisp-De6q7_JS.js → commonlisp-_nR12oc7.js} +0 -0
- /package/dist/assets/{createLucideIcon-BTp1tQDO.js → createLucideIcon-w-Qo9n0R.js} +0 -0
- /package/dist/assets/{crystal-BGXRJSF-.js → crystal-dj3W4b1A.js} +0 -0
- /package/dist/assets/{css-CNKF6pC6.js → css-0BG6A_BC.js} +0 -0
- /package/dist/assets/{cypher-BUDAQ7Fk.js → cypher-CKPokaoH.js} +0 -0
- /package/dist/assets/{cytoscape.esm-DHwdGdKb.js → cytoscape.esm-DzUNSF80.js} +0 -0
- /package/dist/assets/{d-BIAtzqpc.js → d-BrbqzVa2.js} +0 -0
- /package/dist/assets/{defaultLocale-DK1MWd7f.js → defaultLocale-BUCH2FMc.js} +0 -0
- /package/dist/assets/{defaultLocale-OkOxlkkM.js → defaultLocale-DOVIEEPN.js} +0 -0
- /package/dist/assets/{diff-aadYO3ro.js → diff-BmdR9FsO.js} +0 -0
- /package/dist/assets/{dist-COnmrAVZ.js → dist-D9sE1udr.js} +0 -0
- /package/dist/assets/{dtd-uNeIl1u0.js → dtd-DbCXDVgi.js} +0 -0
- /package/dist/assets/{duckdb-keywords-CSySeB8R.js → duckdb-keywords-mPlR0SxW.js} +0 -0
- /package/dist/assets/{dylan-CrZBaY0F.js → dylan-CLLzL2Js.js} +0 -0
- /package/dist/assets/{ebnf-KJaLpQez.js → ebnf-Cnws41cu.js} +0 -0
- /package/dist/assets/{ecl-ByTsrrt6.js → ecl-BC7x2nzk.js} +0 -0
- /package/dist/assets/{eiffel-DRhIEZQi.js → eiffel-CDU836rz.js} +0 -0
- /package/dist/assets/{elm-BBPeNBgT.js → elm-D-_bXARs.js} +0 -0
- /package/dist/assets/{emotion-is-prop-valid.esm-CK2zY6a8.js → emotion-is-prop-valid.esm-lG8j6oqk.js} +0 -0
- /package/dist/assets/{erlang-EMEOk6kj.js → erlang-CwDZk2zM.js} +0 -0
- /package/dist/assets/{errors-Bi-kjxOy.js → errors-PgHhDa-M.js} +0 -0
- /package/dist/assets/{esm-D8Ai_4yn.js → esm-D6WfbcL3.js} +0 -0
- /package/dist/assets/{events-XR_LpvHc.js → events-90X9nql5.js} +0 -0
- /package/dist/assets/{extends-CeSFM22p.js → extends-B9D0JO9U.js} +0 -0
- /package/dist/assets/{fcl-Cf241iHu.js → fcl-CwkPc-_9.js} +0 -0
- /package/dist/assets/{forth-BdKkHzwH.js → forth-D6FsO_8x.js} +0 -0
- /package/dist/assets/{fortran-DxGNM9Kj.js → fortran-D4BMbIkG.js} +0 -0
- /package/dist/assets/{gas-hf-H6Zc4.js → gas-JFjzcgdY.js} +0 -0
- /package/dist/assets/{gherkin-D1O_VlrS.js → gherkin-Cyu-qGaF.js} +0 -0
- /package/dist/assets/{groovy-Budmgm6I.js → groovy-CZaE9eN-.js} +0 -0
- /package/dist/assets/{haskell-CDrggYs0.js → haskell-Dc6o0IGr.js} +0 -0
- /package/dist/assets/{haxe-CPnBkTzf.js → haxe-Bsf0tzqs.js} +0 -0
- /package/dist/assets/{http-_roNBajA.js → http-BQNSD-HR.js} +0 -0
- /package/dist/assets/{idl-BTZd0S94.js → idl-1W91kQ8_.js} +0 -0
- /package/dist/assets/{init-BpLL1fe9.js → init-nx27Zb9l.js} +0 -0
- /package/dist/assets/{invariant-C2E8KCbD.js → invariant-CkiqGLcK.js} +0 -0
- /package/dist/assets/{javascript-Czx24F5X.js → javascript-BZ81-2rO.js} +0 -0
- /package/dist/assets/{jsx-runtime-PbYoItBR.js → jsx-runtime-Blw4afVn.js} +0 -0
- /package/dist/assets/{julia-OeEN0FvJ.js → julia-BZOsq0r_.js} +0 -0
- /package/dist/assets/{katex-C5COVNYq.js → katex-CvZ3kCGk.js} +0 -0
- /package/dist/assets/{livescript-DLmsZIyI.js → livescript-CNZfmikk.js} +0 -0
- /package/dist/assets/{loro_wasm_bg-BFCm9sQd.js → loro_wasm_bg-RNUly1SE.js} +0 -0
- /package/dist/assets/{lua-BM3BXoTQ.js → lua-DXGRliwd.js} +0 -0
- /package/dist/assets/{main-DmhaVp6Y.js → main-BNL5rxQw.js} +0 -0
- /package/dist/assets/{math-CpvW-dlE.js → math-CLO4uoaP.js} +0 -0
- /package/dist/assets/{mathematica-BbPQ8-Rw.js → mathematica-BoUj8M7D.js} +0 -0
- /package/dist/assets/{mbox-D2_16jOO.js → mbox-DLVP8LAe.js} +0 -0
- /package/dist/assets/{micromark-factory-space-BUQpMdx2.js → micromark-factory-space-Dx_STMJD.js} +0 -0
- /package/dist/assets/{mirc-CzS_wutP.js → mirc-kI4d5fMu.js} +0 -0
- /package/dist/assets/{mllike-D9b50pH5.js → mllike-CD9vBc_2.js} +0 -0
- /package/dist/assets/{modelica-C8E83p8w.js → modelica-DgfsLJuF.js} +0 -0
- /package/dist/assets/{mscgen-Dk-3wFOB.js → mscgen-B1HDwshJ.js} +0 -0
- /package/dist/assets/{mumps-BRQASZoy.js → mumps-D_-b9TZD.js} +0 -0
- /package/dist/assets/{nginx-Dfd7l9Sj.js → nginx-Cm282mo8.js} +0 -0
- /package/dist/assets/{node-sql-parser-DfWMhh1q.js → node-sql-parser-BWgUjcfV.js} +0 -0
- /package/dist/assets/{ntriples-D6VU4eew.js → ntriples-COX9JFZ8.js} +0 -0
- /package/dist/assets/{objectWithoutPropertiesLoose-BkUn3I0-.js → objectWithoutPropertiesLoose-CboCOq4o.js} +0 -0
- /package/dist/assets/{octave-xff1drIF.js → octave-BejycR79.js} +0 -0
- /package/dist/assets/{oz-CRz8coQc.js → oz-CFFivrGn.js} +0 -0
- /package/dist/assets/{pascal-DZhgfws7.js → pascal-B_p9jkCs.js} +0 -0
- /package/dist/assets/{path-DtYs9Dst.js → path-Bz_hIzg5.js} +0 -0
- /package/dist/assets/{paths-DhuNSnZ_.js → paths-BKO-pHK6.js} +0 -0
- /package/dist/assets/{perl-BKXEkch3.js → perl-C-SFBTly.js} +0 -0
- /package/dist/assets/{pig-rvFhLOOE.js → pig-BhxDMp2k.js} +0 -0
- /package/dist/assets/{powershell-Db7zgjV-.js → powershell-c59M-9N2.js} +0 -0
- /package/dist/assets/{preload-helper-BW0IMuFq.js → preload-helper-TXkS1QI3.js} +0 -0
- /package/dist/assets/{prop-types-B6Y2e__V.js → prop-types-C638SUfx.js} +0 -0
- /package/dist/assets/{properties-BF6anRzc.js → properties-D1JNwCKy.js} +0 -0
- /package/dist/assets/{protobuf-De4giNfG.js → protobuf-DQS7ex8R.js} +0 -0
- /package/dist/assets/{puppet-CMgcPW4L.js → puppet-DaQvhvew.js} +0 -0
- /package/dist/assets/{python-DOZzlkV_.js → python-XHl3eRTS.js} +0 -0
- /package/dist/assets/{q-8XMigH-s.js → q-DppnoRE3.js} +0 -0
- /package/dist/assets/{r-BuEncdBJ.js → r-D8-F_FWj.js} +0 -0
- /package/dist/assets/{range-DNqFcYmr.js → range-u_glTVdi.js} +0 -0
- /package/dist/assets/{react-icons.esm-DCqqMD4w.js → react-icons.esm-D4GMDkIf.js} +0 -0
- /package/dist/assets/{react-resizable-panels.browser.esm-Ce2ksurd.js → react-resizable-panels.browser.esm-Z-MD3n3J.js} +0 -0
- /package/dist/assets/{requests-DqJEWJ-Q.js → requests-DYeT4CEe.js} +0 -0
- /package/dist/assets/{rpm-DnfrioeJ.js → rpm-CegJhNNO.js} +0 -0
- /package/dist/assets/{ruby-C9f8lbWZ.js → ruby-YMIxufV1.js} +0 -0
- /package/dist/assets/{sas-TQvbwzLU.js → sas-wTtX9UIQ.js} +0 -0
- /package/dist/assets/{scheme-DCJ8_Fy0.js → scheme-BGenom3k.js} +0 -0
- /package/dist/assets/{semaphore-X3ApuO41.js → semaphore-DtBYRzWS.js} +0 -0
- /package/dist/assets/{shell-D8pt0LM7.js → shell-Bu1sLaiP.js} +0 -0
- /package/dist/assets/{sieve-DGXZ82l_.js → sieve-ffe6rUQh.js} +0 -0
- /package/dist/assets/{simple-mode-B3UD3n_i.js → simple-mode-DBSzUJLA.js} +0 -0
- /package/dist/assets/{smalltalk-DyRmt5Ka.js → smalltalk-NU5EGjHp.js} +0 -0
- /package/dist/assets/{solr-CJeCgAfj.js → solr-ptw1yIqO.js} +0 -0
- /package/dist/assets/{sparql-CLILkzHY.js → sparql-uqVktnwO.js} +0 -0
- /package/dist/assets/{spreadsheet-BYYvgLKe.js → spreadsheet-VEzeu_mb.js} +0 -0
- /package/dist/assets/{sql-B5I6FC3m.js → sql-tYjnWETe.js} +0 -0
- /package/dist/assets/{src-CW27-Kjl.js → src-BshXgZd4.js} +0 -0
- /package/dist/assets/{stex-0ac7Aukl.js → stex-FMMSUPAS.js} +0 -0
- /package/dist/assets/{stylus-BCmjnwMM.js → stylus-B2E6Ulaz.js} +0 -0
- /package/dist/assets/{swift-BkcVjmPv.js → swift-Rmnn7ATv.js} +0 -0
- /package/dist/assets/{tcl-B3wbfJh2.js → tcl-ZPWCn2nn.js} +0 -0
- /package/dist/assets/{textile-D12VShq0.js → textile-uhA33kFk.js} +0 -0
- /package/dist/assets/{tiddlywiki-hmNzZkq6.js → tiddlywiki-CPkGLyXH.js} +0 -0
- /package/dist/assets/{tiki-BL1SzuSx.js → tiki-BtjLo8OF.js} +0 -0
- /package/dist/assets/{toml-XXoBgyAV.js → toml-BFZv2Mv7.js} +0 -0
- /package/dist/assets/{treemap-qinQgXo1.js → treemap-Bca0xNNq.js} +0 -0
- /package/dist/assets/{troff-D9lX0BP4.js → troff-B5eayHop.js} +0 -0
- /package/dist/assets/{ttcn-DQ5upjvU.js → ttcn-BM0Yp8NY.js} +0 -0
- /package/dist/assets/{ttcn-cfg-pqnJIxH9.js → ttcn-cfg-CfbkL3Q_.js} +0 -0
- /package/dist/assets/{turtle-BUVCUZMx.js → turtle-DvetLxrv.js} +0 -0
- /package/dist/assets/{types-D4wsSrXa.js → types-Da7lA5YC.js} +0 -0
- /package/dist/assets/{use-toast-kCNiuc-_.js → use-toast-BwJoaaDM.js} +0 -0
- /package/dist/assets/{useDebounce-CpLI2dsc.js → useDebounce-JDKr83KO.js} +0 -0
- /package/dist/assets/{useDeepCompareMemoize-CWcgQCbT.js → useDeepCompareMemoize-CSMoa-ga.js} +0 -0
- /package/dist/assets/{useNonce-0SWz6w4W.js → useNonce-CbdaHKzX.js} +0 -0
- /package/dist/assets/{uuid-ClFZlR7U.js → uuid-ImXS-885.js} +0 -0
- /package/dist/assets/{vb-CgKmZtlp.js → vb-i5Z8scch.js} +0 -0
- /package/dist/assets/{vbscript-mB-oVfPH.js → vbscript-BiPYgIyi.js} +0 -0
- /package/dist/assets/{velocity-CrvX3BFT.js → velocity-Dw3R3YoX.js} +0 -0
- /package/dist/assets/{verilog-C0Wzs7-f.js → verilog-B8FhJcX6.js} +0 -0
- /package/dist/assets/{vhdl-s8UGv0A3.js → vhdl-BqPEoXdJ.js} +0 -0
- /package/dist/assets/{web-vitals-B8i8c08M.js → web-vitals-CwE0GGzl.js} +0 -0
- /package/dist/assets/{webidl-GTmlnawS.js → webidl-mMO-qW5Q.js} +0 -0
- /package/dist/assets/{ws-DSN-Rmiu.js → ws-BmTnbVEi.js} +0 -0
- /package/dist/assets/{xquery-Bq3_mXJv.js → xquery-DvqNwq7L.js} +0 -0
- /package/dist/assets/{yacas-B1P8UzPS.js → yacas-Dku9Z6Kf.js} +0 -0
- /package/dist/assets/{z80-C8FzIVqi.js → z80-DvazU5Tr.js} +0 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
|
|
3
|
+
import type { PyodideInterface } from "pyodide";
|
|
4
|
+
import { describe, expect, it, vi } from "vitest";
|
|
5
|
+
import { ReadonlyWasmController } from "../controller";
|
|
6
|
+
|
|
7
|
+
class TestController extends ReadonlyWasmController {
|
|
8
|
+
setPyodide(pyodide: PyodideInterface) {
|
|
9
|
+
this.pyodide = pyodide;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function createSessionResources(
|
|
14
|
+
stopImplementation: () => Promise<void> = () => Promise.resolve(),
|
|
15
|
+
) {
|
|
16
|
+
const bridge = { destroy: vi.fn() };
|
|
17
|
+
const init = Object.assign(vi.fn(), { destroy: vi.fn() });
|
|
18
|
+
const stop = Object.assign(vi.fn(stopImplementation), {
|
|
19
|
+
destroy: vi.fn(),
|
|
20
|
+
});
|
|
21
|
+
const packages = { destroy: vi.fn(), toJs: () => [] };
|
|
22
|
+
const sessionResources = Object.assign([bridge, init, packages, stop], {
|
|
23
|
+
destroy: vi.fn(),
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
return { bridge, init, packages, sessionResources, stop };
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function createPyodideStub(
|
|
30
|
+
sessions = Array.from({ length: 4 }, () => createSessionResources()),
|
|
31
|
+
) {
|
|
32
|
+
const [first] = sessions;
|
|
33
|
+
if (!first) {
|
|
34
|
+
throw new Error("At least one session is required");
|
|
35
|
+
}
|
|
36
|
+
const loadPackagesFromImports = vi.fn().mockResolvedValue(undefined);
|
|
37
|
+
const pyodide = {
|
|
38
|
+
runPython: vi
|
|
39
|
+
.fn()
|
|
40
|
+
.mockImplementation(() => sessions.shift()?.sessionResources),
|
|
41
|
+
loadPackagesFromImports,
|
|
42
|
+
loadedPackages: {},
|
|
43
|
+
runPythonAsync: vi.fn(),
|
|
44
|
+
} as unknown as PyodideInterface;
|
|
45
|
+
|
|
46
|
+
return {
|
|
47
|
+
...first,
|
|
48
|
+
loadPackagesFromImports,
|
|
49
|
+
pyodide,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function startSession(controller: TestController, code: string) {
|
|
54
|
+
return controller.startSession({
|
|
55
|
+
code,
|
|
56
|
+
filename: `${code}.py`,
|
|
57
|
+
onMessage: vi.fn(),
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
describe("WASM controller session lifecycle", () => {
|
|
62
|
+
it("stops and releases the active session", async () => {
|
|
63
|
+
const { init, packages, pyodide, sessionResources, stop } =
|
|
64
|
+
createPyodideStub();
|
|
65
|
+
const controller = new TestController();
|
|
66
|
+
controller.setPyodide(pyodide);
|
|
67
|
+
|
|
68
|
+
await startSession(controller, "current");
|
|
69
|
+
await vi.waitFor(() => expect(init).toHaveBeenCalledOnce());
|
|
70
|
+
await controller.stopSession();
|
|
71
|
+
|
|
72
|
+
expect(stop).toHaveBeenCalledOnce();
|
|
73
|
+
expect(stop.destroy).toHaveBeenCalledOnce();
|
|
74
|
+
expect(sessionResources.destroy).toHaveBeenCalledOnce();
|
|
75
|
+
expect(packages.destroy).toHaveBeenCalledOnce();
|
|
76
|
+
expect(init.destroy).toHaveBeenCalledOnce();
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it("loads dependencies serially and skips superseded sessions", async () => {
|
|
80
|
+
let finishFirstLoad!: () => void;
|
|
81
|
+
const { loadPackagesFromImports, pyodide } = createPyodideStub();
|
|
82
|
+
loadPackagesFromImports
|
|
83
|
+
.mockReturnValueOnce(
|
|
84
|
+
new Promise<void>((resolve) => {
|
|
85
|
+
finishFirstLoad = resolve;
|
|
86
|
+
}),
|
|
87
|
+
)
|
|
88
|
+
.mockResolvedValueOnce(undefined);
|
|
89
|
+
const controller = new TestController();
|
|
90
|
+
controller.setPyodide(pyodide);
|
|
91
|
+
|
|
92
|
+
await startSession(controller, "first_dependency");
|
|
93
|
+
await startSession(controller, "superseded_dependency");
|
|
94
|
+
await controller.stopSession();
|
|
95
|
+
await startSession(controller, "current_dependency");
|
|
96
|
+
|
|
97
|
+
expect(loadPackagesFromImports).toHaveBeenCalledOnce();
|
|
98
|
+
finishFirstLoad();
|
|
99
|
+
await vi.waitFor(() =>
|
|
100
|
+
expect(loadPackagesFromImports).toHaveBeenCalledTimes(2),
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
const loadedSources = loadPackagesFromImports.mock.calls.map(
|
|
104
|
+
([source]) => source as string,
|
|
105
|
+
);
|
|
106
|
+
expect(loadedSources[1]).toContain("current_dependency");
|
|
107
|
+
expect(loadedSources.join("\n")).not.toContain("superseded_dependency");
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
it("stops every session created for a multi-app page", async () => {
|
|
111
|
+
const first = createSessionResources();
|
|
112
|
+
const second = createSessionResources();
|
|
113
|
+
const { pyodide } = createPyodideStub([first, second]);
|
|
114
|
+
const controller = new TestController();
|
|
115
|
+
controller.setPyodide(pyodide);
|
|
116
|
+
|
|
117
|
+
await startSession(controller, "first");
|
|
118
|
+
await startSession(controller, "second");
|
|
119
|
+
second.bridge.destroy();
|
|
120
|
+
|
|
121
|
+
expect(first.stop.destroy).not.toHaveBeenCalled();
|
|
122
|
+
|
|
123
|
+
await controller.stopSession();
|
|
124
|
+
|
|
125
|
+
expect(first.stop).toHaveBeenCalledOnce();
|
|
126
|
+
expect(second.stop).toHaveBeenCalledOnce();
|
|
127
|
+
expect(first.stop.destroy).toHaveBeenCalledOnce();
|
|
128
|
+
expect(second.stop.destroy).toHaveBeenCalledOnce();
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
it("continues stopping sessions after one stop fails", async () => {
|
|
132
|
+
const failure = new Error("stop failed");
|
|
133
|
+
const first = createSessionResources(() => Promise.reject(failure));
|
|
134
|
+
const second = createSessionResources();
|
|
135
|
+
const { pyodide } = createPyodideStub([first, second]);
|
|
136
|
+
const controller = new TestController();
|
|
137
|
+
controller.setPyodide(pyodide);
|
|
138
|
+
|
|
139
|
+
await startSession(controller, "first");
|
|
140
|
+
await startSession(controller, "second");
|
|
141
|
+
|
|
142
|
+
await expect(controller.stopSession()).rejects.toThrow("stop failed");
|
|
143
|
+
expect(first.stop).toHaveBeenCalledOnce();
|
|
144
|
+
expect(second.stop).toHaveBeenCalledOnce();
|
|
145
|
+
expect(first.stop.destroy).not.toHaveBeenCalled();
|
|
146
|
+
expect(second.stop.destroy).toHaveBeenCalledOnce();
|
|
147
|
+
|
|
148
|
+
first.stop.mockResolvedValueOnce(undefined);
|
|
149
|
+
await controller.stopSession();
|
|
150
|
+
|
|
151
|
+
expect(first.stop).toHaveBeenCalledTimes(2);
|
|
152
|
+
expect(first.stop.destroy).toHaveBeenCalledOnce();
|
|
153
|
+
expect(second.stop).toHaveBeenCalledOnce();
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
it("reports and retries a falsy stop failure", async () => {
|
|
157
|
+
const session = createSessionResources(() => Promise.reject(false));
|
|
158
|
+
const { pyodide } = createPyodideStub([session]);
|
|
159
|
+
const controller = new TestController();
|
|
160
|
+
controller.setPyodide(pyodide);
|
|
161
|
+
|
|
162
|
+
await startSession(controller, "current");
|
|
163
|
+
|
|
164
|
+
await expect(controller.stopSession()).rejects.toBe(false);
|
|
165
|
+
expect(session.stop.destroy).not.toHaveBeenCalled();
|
|
166
|
+
|
|
167
|
+
session.stop.mockResolvedValueOnce(undefined);
|
|
168
|
+
await controller.stopSession();
|
|
169
|
+
|
|
170
|
+
expect(session.stop).toHaveBeenCalledTimes(2);
|
|
171
|
+
expect(session.stop.destroy).toHaveBeenCalledOnce();
|
|
172
|
+
});
|
|
173
|
+
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
3
|
import type { PyodideInterface } from "pyodide";
|
|
4
|
+
import type { PyProxy } from "pyodide/ffi";
|
|
4
5
|
import {
|
|
5
6
|
createRPC,
|
|
6
7
|
createRPCRequestHandler,
|
|
@@ -16,7 +17,6 @@ import { MessageBuffer } from "@/core/wasm/worker/message-buffer";
|
|
|
16
17
|
import type { RawBridge, SerializedBridge } from "@/core/wasm/worker/types";
|
|
17
18
|
import type { JsonString } from "@/utils/json/base64";
|
|
18
19
|
import { Logger } from "@/utils/Logger";
|
|
19
|
-
import { Deferred } from "../../../utils/Deferred";
|
|
20
20
|
import { prettyError } from "../../../utils/errors";
|
|
21
21
|
import { invariant } from "../../../utils/invariant";
|
|
22
22
|
import { ReadonlyWasmController } from "./controller";
|
|
@@ -50,59 +50,128 @@ const messageBuffer = new MessageBuffer(
|
|
|
50
50
|
rpc.send.kernelMessage({ message });
|
|
51
51
|
},
|
|
52
52
|
);
|
|
53
|
-
|
|
53
|
+
interface SessionRequest {
|
|
54
|
+
code: string;
|
|
55
|
+
appId: string;
|
|
56
|
+
sessionGeneration: number;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
let activeSession:
|
|
60
|
+
| (Omit<SessionRequest, "code"> & { bridge: SerializedBridge })
|
|
61
|
+
| undefined;
|
|
62
|
+
let sessionQueue = Promise.resolve();
|
|
63
|
+
|
|
64
|
+
async function startSession(
|
|
65
|
+
opts: SessionRequest,
|
|
66
|
+
replace: boolean,
|
|
67
|
+
): Promise<void> {
|
|
68
|
+
await pyodideReadyPromise;
|
|
69
|
+
|
|
70
|
+
try {
|
|
71
|
+
invariant(self.controller, "Controller not loaded");
|
|
72
|
+
if (replace) {
|
|
73
|
+
await stopActiveSession();
|
|
74
|
+
}
|
|
75
|
+
const notebook = await self.controller.mountFilesystem({
|
|
76
|
+
code: opts.code,
|
|
77
|
+
filename: `app-${opts.appId}.py`,
|
|
78
|
+
});
|
|
79
|
+
const nextBridge = await self.controller.startSession({
|
|
80
|
+
...notebook,
|
|
81
|
+
onMessage: messageBuffer.push,
|
|
82
|
+
});
|
|
83
|
+
if (activeSession) {
|
|
84
|
+
(nextBridge as unknown as PyProxy).destroy();
|
|
85
|
+
} else {
|
|
86
|
+
activeSession = {
|
|
87
|
+
appId: opts.appId,
|
|
88
|
+
bridge: nextBridge,
|
|
89
|
+
sessionGeneration: opts.sessionGeneration,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
rpc.send.initialized({});
|
|
93
|
+
} catch (error) {
|
|
94
|
+
rpc.send.initializedError({
|
|
95
|
+
error: prettyError(error),
|
|
96
|
+
});
|
|
97
|
+
throw error;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
async function stopActiveSession(): Promise<void> {
|
|
102
|
+
const session = activeSession;
|
|
103
|
+
await self.controller.stopSession();
|
|
104
|
+
activeSession = undefined;
|
|
105
|
+
(session?.bridge as unknown as PyProxy | undefined)?.destroy();
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function enqueueSession<T>(operation: () => Promise<T>): Promise<T> {
|
|
109
|
+
const result = sessionQueue.then(operation);
|
|
110
|
+
sessionQueue = result.then(
|
|
111
|
+
() => undefined,
|
|
112
|
+
() => undefined,
|
|
113
|
+
);
|
|
114
|
+
return result;
|
|
115
|
+
}
|
|
54
116
|
|
|
55
117
|
// Handle RPC requests
|
|
56
118
|
const requestHandler = createRPCRequestHandler({
|
|
57
119
|
/**
|
|
58
120
|
* Start the session
|
|
59
121
|
*/
|
|
60
|
-
startSession: async (opts:
|
|
61
|
-
await
|
|
122
|
+
startSession: async (opts: SessionRequest) => {
|
|
123
|
+
await enqueueSession(() => startSession(opts, false));
|
|
124
|
+
},
|
|
62
125
|
|
|
63
|
-
|
|
126
|
+
replaceSession: async (opts: SessionRequest) => {
|
|
127
|
+
await enqueueSession(() => startSession(opts, true));
|
|
128
|
+
},
|
|
129
|
+
|
|
130
|
+
stopSession: async (opts: { appId: string; sessionGeneration: number }) => {
|
|
131
|
+
await enqueueSession(async () => {
|
|
132
|
+
if (
|
|
133
|
+
activeSession?.appId !== opts.appId ||
|
|
134
|
+
activeSession?.sessionGeneration !== opts.sessionGeneration
|
|
135
|
+
) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
64
138
|
invariant(self.controller, "Controller not loaded");
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
filename: `app-${opts.appId}.py`,
|
|
68
|
-
});
|
|
69
|
-
const bridge = await self.controller.startSession({
|
|
70
|
-
...notebook,
|
|
71
|
-
onMessage: messageBuffer.push,
|
|
72
|
-
});
|
|
73
|
-
bridgeReady.resolve(bridge);
|
|
74
|
-
rpc.send.initialized({});
|
|
75
|
-
} catch (error) {
|
|
76
|
-
rpc.send.initializedError({
|
|
77
|
-
error: prettyError(error),
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
return;
|
|
139
|
+
await stopActiveSession();
|
|
140
|
+
});
|
|
81
141
|
},
|
|
82
142
|
|
|
83
143
|
/**
|
|
84
144
|
* Load packages
|
|
85
145
|
*/
|
|
86
|
-
loadPackages: async (
|
|
146
|
+
loadPackages: async (opts: {
|
|
147
|
+
appId: string;
|
|
148
|
+
code: string;
|
|
149
|
+
sessionGeneration: number;
|
|
150
|
+
}) => {
|
|
87
151
|
await pyodideReadyPromise; // Make sure loading is done
|
|
152
|
+
await enqueueSession(async () => {
|
|
153
|
+
requireActiveBridge(opts);
|
|
154
|
+
|
|
155
|
+
let { code } = opts;
|
|
88
156
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
157
|
+
if (shouldLoadDuckDBPackages(code)) {
|
|
158
|
+
// Add pandas and duckdb to the code for mo.sql and for remote duckdb sources
|
|
159
|
+
code = `import pandas\n${code}`;
|
|
160
|
+
code = `import duckdb\n${code}`;
|
|
161
|
+
code = `import sqlglot\n${code}`;
|
|
162
|
+
|
|
163
|
+
// Polars + SQL requires pyarrow, and installing
|
|
164
|
+
// after notebook load does not work. As a heuristic,
|
|
165
|
+
// if it appears that the notebook uses polars, add pyarrow.
|
|
166
|
+
if (code.includes("polars")) {
|
|
167
|
+
code = `import pyarrow\n${code}`;
|
|
168
|
+
}
|
|
100
169
|
}
|
|
101
|
-
}
|
|
102
170
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
171
|
+
await self.pyodide.loadPackagesFromImports(code, {
|
|
172
|
+
messageCallback: Logger.log,
|
|
173
|
+
errorCallback: Logger.error,
|
|
174
|
+
});
|
|
106
175
|
});
|
|
107
176
|
},
|
|
108
177
|
|
|
@@ -110,37 +179,56 @@ const requestHandler = createRPCRequestHandler({
|
|
|
110
179
|
* Call a function on the bridge
|
|
111
180
|
*/
|
|
112
181
|
bridge: async (opts: {
|
|
182
|
+
appId: string;
|
|
113
183
|
functionName: keyof RawBridge;
|
|
114
184
|
payload: {} | undefined | null;
|
|
185
|
+
sessionGeneration: number;
|
|
115
186
|
}) => {
|
|
116
187
|
await pyodideReadyPromise; // Make sure loading is done
|
|
117
188
|
|
|
118
189
|
const { functionName, payload } = opts;
|
|
119
190
|
|
|
120
191
|
// Perform the function call to the Python bridge
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
192
|
+
return enqueueSession(async () => {
|
|
193
|
+
const bridge = requireActiveBridge(opts);
|
|
194
|
+
|
|
195
|
+
// Serialize the payload
|
|
196
|
+
const payloadString =
|
|
197
|
+
payload == null
|
|
198
|
+
? null
|
|
199
|
+
: typeof payload === "string"
|
|
200
|
+
? payload
|
|
201
|
+
: JSON.stringify(payload);
|
|
202
|
+
|
|
203
|
+
// Make the request
|
|
204
|
+
const response =
|
|
205
|
+
payloadString == null
|
|
206
|
+
? // @ts-expect-error ehh TypeScript
|
|
207
|
+
await bridge[functionName]()
|
|
208
|
+
: // @ts-expect-error ehh TypeScript
|
|
209
|
+
await bridge[functionName](payloadString);
|
|
210
|
+
|
|
211
|
+
// Post the response back to the main thread
|
|
212
|
+
return typeof response === "string" ? JSON.parse(response) : response;
|
|
213
|
+
});
|
|
141
214
|
},
|
|
142
215
|
});
|
|
143
216
|
|
|
217
|
+
function requireActiveBridge(opts: {
|
|
218
|
+
appId: string;
|
|
219
|
+
sessionGeneration: number;
|
|
220
|
+
}): SerializedBridge {
|
|
221
|
+
const session = activeSession;
|
|
222
|
+
if (
|
|
223
|
+
!session ||
|
|
224
|
+
opts.appId !== session.appId ||
|
|
225
|
+
opts.sessionGeneration !== session.sessionGeneration
|
|
226
|
+
) {
|
|
227
|
+
throw new Error("The marimo app session is no longer active.");
|
|
228
|
+
}
|
|
229
|
+
return session.bridge;
|
|
230
|
+
}
|
|
231
|
+
|
|
144
232
|
// create the iframe's schema
|
|
145
233
|
export type WorkerSchema = RPCSchema<
|
|
146
234
|
{
|
|
@@ -54,6 +54,24 @@ describe("createLazyRequests", () => {
|
|
|
54
54
|
} as unknown as EditRequests & RunRequests;
|
|
55
55
|
});
|
|
56
56
|
|
|
57
|
+
it("passes server-only requests through without starting a kernel", async () => {
|
|
58
|
+
const environment = { marimo: "1.2.3" };
|
|
59
|
+
mockDelegate.getEnvironmentInfo = vi
|
|
60
|
+
.fn()
|
|
61
|
+
.mockResolvedValue(environment) as EditRequests["getEnvironmentInfo"];
|
|
62
|
+
|
|
63
|
+
const lazyRequests = createLazyRequests(
|
|
64
|
+
mockDelegate,
|
|
65
|
+
mockGetRuntimeManager,
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
await expect(lazyRequests.getEnvironmentInfo()).resolves.toEqual(
|
|
69
|
+
environment,
|
|
70
|
+
);
|
|
71
|
+
expect(mockInit).not.toHaveBeenCalled();
|
|
72
|
+
expect(mockDelegate.getEnvironmentInfo).toHaveBeenCalledOnce();
|
|
73
|
+
});
|
|
74
|
+
|
|
57
75
|
it("should call init once before first request", async () => {
|
|
58
76
|
const lazyRequests = createLazyRequests(
|
|
59
77
|
mockDelegate,
|
|
@@ -114,6 +114,13 @@ describe("createNetworkRequests", () => {
|
|
|
114
114
|
);
|
|
115
115
|
});
|
|
116
116
|
|
|
117
|
+
it("getEnvironmentInfo should GET /api/environment", async () => {
|
|
118
|
+
const requests = createNetworkRequests();
|
|
119
|
+
await requests.getEnvironmentInfo();
|
|
120
|
+
|
|
121
|
+
expect(mockClient.GET).toHaveBeenCalledWith("/api/environment");
|
|
122
|
+
});
|
|
123
|
+
|
|
117
124
|
it("exportAsIPYNB should call the new endpoint as text", async () => {
|
|
118
125
|
const requests = createNetworkRequests();
|
|
119
126
|
await requests.exportAsIPYNB({
|
|
@@ -29,12 +29,17 @@ type AllRequests = EditRequests & RunRequests;
|
|
|
29
29
|
// - waitForConnectionOpen: Waits for an existing connection but won't start one.
|
|
30
30
|
// Use for operations that depend on a running kernel but shouldn't be the
|
|
31
31
|
// trigger to start it (e.g., saving, interrupting).
|
|
32
|
+
//
|
|
33
|
+
// - serverOnly: Calls the HTTP delegate directly without touching the kernel.
|
|
34
|
+
// Use for requests served by the marimo server itself, which resolve without
|
|
35
|
+
// a session (e.g., fetching environment diagnostics).
|
|
32
36
|
|
|
33
37
|
type Action =
|
|
34
38
|
| "throwError"
|
|
35
39
|
| "dropRequest"
|
|
36
40
|
| "startConnection"
|
|
37
|
-
| "waitForConnectionOpen"
|
|
41
|
+
| "waitForConnectionOpen"
|
|
42
|
+
| "serverOnly";
|
|
38
43
|
|
|
39
44
|
const ACTIONS: Record<keyof AllRequests, Action> = {
|
|
40
45
|
// These will start a connection if not already connected and then wait until the connection is open
|
|
@@ -96,6 +101,9 @@ const ACTIONS: Record<keyof AllRequests, Action> = {
|
|
|
96
101
|
sendFileDetails: "throwError",
|
|
97
102
|
openFile: "throwError",
|
|
98
103
|
|
|
104
|
+
// Served by the marimo server without a kernel session
|
|
105
|
+
getEnvironmentInfo: "serverOnly",
|
|
106
|
+
|
|
99
107
|
// Home operations throw errors
|
|
100
108
|
getRecentFiles: "startConnection",
|
|
101
109
|
getWorkspaceFiles: "startConnection",
|
|
@@ -155,6 +163,10 @@ export function createLazyRequests(
|
|
|
155
163
|
}
|
|
156
164
|
|
|
157
165
|
switch (action) {
|
|
166
|
+
case "serverOnly":
|
|
167
|
+
// Served by the marimo server itself; no kernel required
|
|
168
|
+
return request(...args);
|
|
169
|
+
|
|
158
170
|
case "dropRequest":
|
|
159
171
|
Logger.debug(
|
|
160
172
|
`Dropping request: ${key}, since not connected to a kernel.`,
|
|
@@ -285,6 +285,9 @@ export function createNetworkRequests(): EditRequests & RunRequests {
|
|
|
285
285
|
await waitForConnectionOpen();
|
|
286
286
|
return getClient().GET("/api/usage").then(handleResponse);
|
|
287
287
|
},
|
|
288
|
+
getEnvironmentInfo: () => {
|
|
289
|
+
return getClient().GET("/api/environment").then(handleResponse);
|
|
290
|
+
},
|
|
288
291
|
sendPdb: (request) => {
|
|
289
292
|
return getClient()
|
|
290
293
|
.POST("/api/kernel/pdb/pm", {
|
|
@@ -65,6 +65,7 @@ export function createStaticRequests(): EditRequests & RunRequests {
|
|
|
65
65
|
validateSQL: throwNotInEditMode,
|
|
66
66
|
openFile: throwNotInEditMode,
|
|
67
67
|
getUsageStats: throwNotInEditMode,
|
|
68
|
+
getEnvironmentInfo: throwNotInEditMode,
|
|
68
69
|
sendListFiles: throwNotInEditMode,
|
|
69
70
|
sendSearchFiles: throwNotInEditMode,
|
|
70
71
|
sendPdb: throwNotInEditMode,
|
|
@@ -46,6 +46,7 @@ export function createErrorToastingRequests(
|
|
|
46
46
|
validateSQL: "Failed to validate SQL",
|
|
47
47
|
openFile: "Failed to open file",
|
|
48
48
|
getUsageStats: "", // No toast
|
|
49
|
+
getEnvironmentInfo: "", // No toast
|
|
49
50
|
sendListFiles: "Failed to list files",
|
|
50
51
|
sendSearchFiles: "Failed to search files",
|
|
51
52
|
sendPdb: "Failed to start debug session",
|
|
@@ -107,6 +107,8 @@ export type UpdateUIElementValuesRequest =
|
|
|
107
107
|
schemas["UpdateUIElementValuesRequest"];
|
|
108
108
|
export type UsageResponse =
|
|
109
109
|
paths["/api/usage"]["get"]["responses"]["200"]["content"]["application/json"];
|
|
110
|
+
export type EnvironmentInfo =
|
|
111
|
+
paths["/api/environment"]["get"]["responses"]["200"]["content"]["application/json"];
|
|
110
112
|
export type WorkspaceFilesRequest = schemas["WorkspaceFilesRequest"];
|
|
111
113
|
export type WorkspaceFilesResponse = schemas["WorkspaceFilesResponse"];
|
|
112
114
|
export type RunningNotebooksResponse = schemas["RunningNotebooksResponse"];
|
|
@@ -171,6 +173,7 @@ export interface EditRequests {
|
|
|
171
173
|
validateSQL: (request: ValidateSQLRequest) => Promise<null>;
|
|
172
174
|
openFile: (request: { path: string; lineNumber?: number }) => Promise<null>;
|
|
173
175
|
getUsageStats: () => Promise<UsageResponse>;
|
|
176
|
+
getEnvironmentInfo: () => Promise<EnvironmentInfo>;
|
|
174
177
|
// Debugger
|
|
175
178
|
sendPdb: (request: DebugCellRequest) => Promise<null>;
|
|
176
179
|
sendSetBreakpoints: (request: SetBreakpointsRequest) => Promise<null>;
|
|
@@ -154,6 +154,70 @@ describe("RuntimeManager", () => {
|
|
|
154
154
|
});
|
|
155
155
|
});
|
|
156
156
|
|
|
157
|
+
describe("formatNavigableHttpURL", () => {
|
|
158
|
+
it("adds access_token when cross-origin with authToken", () => {
|
|
159
|
+
const runtime = new RuntimeManager(
|
|
160
|
+
{
|
|
161
|
+
url: "https://sandbox.example.com",
|
|
162
|
+
lazy: true,
|
|
163
|
+
authToken: "my-secret-token",
|
|
164
|
+
},
|
|
165
|
+
true,
|
|
166
|
+
);
|
|
167
|
+
const url = runtime.formatNavigableHttpURL(
|
|
168
|
+
"api/files/download",
|
|
169
|
+
new URLSearchParams({ path: "/tmp/data.csv" }),
|
|
170
|
+
);
|
|
171
|
+
|
|
172
|
+
expect(url.pathname).toBe("/api/files/download");
|
|
173
|
+
expect(url.searchParams.get("path")).toBe("/tmp/data.csv");
|
|
174
|
+
expect(url.searchParams.get("access_token")).toBe("my-secret-token");
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
it("omits access_token when same-origin", () => {
|
|
178
|
+
const runtime = new RuntimeManager(
|
|
179
|
+
{
|
|
180
|
+
url: window.location.origin,
|
|
181
|
+
lazy: true,
|
|
182
|
+
authToken: "my-secret-token",
|
|
183
|
+
},
|
|
184
|
+
true,
|
|
185
|
+
);
|
|
186
|
+
const url = runtime.formatNavigableHttpURL(
|
|
187
|
+
"api/files/download",
|
|
188
|
+
new URLSearchParams({ path: "/tmp/data.csv" }),
|
|
189
|
+
);
|
|
190
|
+
|
|
191
|
+
expect(url.searchParams.get("access_token")).toBeNull();
|
|
192
|
+
expect(url.searchParams.get("path")).toBe("/tmp/data.csv");
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
it("omits access_token when no authToken configured", () => {
|
|
196
|
+
const runtime = new RuntimeManager(
|
|
197
|
+
{ url: "https://sandbox.example.com", lazy: true },
|
|
198
|
+
true,
|
|
199
|
+
);
|
|
200
|
+
const url = runtime.formatNavigableHttpURL("api/files/download");
|
|
201
|
+
|
|
202
|
+
expect(url.searchParams.get("access_token")).toBeNull();
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
it("does not forward a page-inherited access_token when same-origin", () => {
|
|
206
|
+
const runtime = new RuntimeManager(
|
|
207
|
+
{ url: window.location.origin, lazy: true },
|
|
208
|
+
true,
|
|
209
|
+
);
|
|
210
|
+
const original = window.location.href;
|
|
211
|
+
window.history.replaceState({}, "", "/?access_token=page-token");
|
|
212
|
+
try {
|
|
213
|
+
const url = runtime.formatNavigableHttpURL("api/files/download");
|
|
214
|
+
expect(url.searchParams.get("access_token")).toBeNull();
|
|
215
|
+
} finally {
|
|
216
|
+
window.history.replaceState({}, "", original);
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
|
|
157
221
|
describe("getSseURL", () => {
|
|
158
222
|
it("should return an http(s) URL with the session ID", () => {
|
|
159
223
|
const runtime = new RuntimeManager(mockConfig);
|
|
@@ -86,6 +86,35 @@ export class RuntimeManager {
|
|
|
86
86
|
return baseUrl;
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
+
/**
|
|
90
|
+
* Channels that cannot send custom headers (WebSockets, and browser
|
|
91
|
+
* navigations such as file downloads) carry the auth token as a query
|
|
92
|
+
* param instead, but only when cross-origin. Same-origin requests
|
|
93
|
+
* authenticate via the session cookie, which keeps the token out of
|
|
94
|
+
* browser history and logs; cross-origin cookies are blocked by browsers,
|
|
95
|
+
* so the access_token query param is the only option there.
|
|
96
|
+
*/
|
|
97
|
+
private appendCrossOriginAuth(url: URL): URL {
|
|
98
|
+
if (!this.isSameOrigin && this.config.authToken) {
|
|
99
|
+
url.searchParams.set(KnownQueryParams.accessToken, this.config.authToken);
|
|
100
|
+
}
|
|
101
|
+
return url;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* An HTTP URL for requests made by browser navigation (e.g. anchor-click
|
|
106
|
+
* downloads), which cannot attach auth headers.
|
|
107
|
+
*/
|
|
108
|
+
formatNavigableHttpURL(path: string, searchParams?: URLSearchParams): URL {
|
|
109
|
+
const url = this.formatHttpURL({ path, searchParams });
|
|
110
|
+
// Drop any token inherited from the current page's query params; re-add it
|
|
111
|
+
// only when cross-origin. Same-origin downloads authenticate via the
|
|
112
|
+
// session cookie, so a token in the URL would needlessly leak into
|
|
113
|
+
// proxy/server logs.
|
|
114
|
+
url.searchParams.delete(KnownQueryParams.accessToken);
|
|
115
|
+
return this.appendCrossOriginAuth(url);
|
|
116
|
+
}
|
|
117
|
+
|
|
89
118
|
formatWsURL(path: string, searchParams?: URLSearchParams): URL {
|
|
90
119
|
// We don't restrict to known query parameters, since mo.query_params()
|
|
91
120
|
// can accept arbitrary parameters.
|
|
@@ -94,16 +123,7 @@ export class RuntimeManager {
|
|
|
94
123
|
searchParams,
|
|
95
124
|
restrictToKnownQueryParams: false,
|
|
96
125
|
});
|
|
97
|
-
|
|
98
|
-
// For cross-origin runtimes, pass the auth token as a query parameter.
|
|
99
|
-
// WebSocket connections cannot send custom headers (no Authorization
|
|
100
|
-
// header), and cross-origin cookies are blocked by browsers, so the
|
|
101
|
-
// access_token query param is the only way to authenticate.
|
|
102
|
-
if (!this.isSameOrigin && this.config.authToken) {
|
|
103
|
-
url.searchParams.set(KnownQueryParams.accessToken, this.config.authToken);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
return asWsUrl(url.toString());
|
|
126
|
+
return asWsUrl(this.appendCrossOriginAuth(url).toString());
|
|
107
127
|
}
|
|
108
128
|
|
|
109
129
|
/**
|