@marimo-team/frontend 0.23.16-dev8 → 0.23.16

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 (706) hide show
  1. package/dist/assets/{CellStatus-BwCqFeIT.js → CellStatus-BYH-DZdr.js} +1 -1
  2. package/dist/assets/{ConnectedDataExplorerComponent-CMaZapRd.js → ConnectedDataExplorerComponent-C4zEgCZh.js} +1 -1
  3. package/dist/assets/JsonOutput-D2UI9WX5.js +53 -0
  4. package/dist/assets/LazyAnyLanguageCodeMirror-A-Ant1Ad.js +2 -0
  5. package/dist/assets/{MarimoErrorOutput-2CXbNUBb.js → MarimoErrorOutput-Cu5WMawt.js} +4 -4
  6. package/dist/assets/RenderHTML-C1rWkDWe.js +1 -0
  7. package/dist/assets/{RunButton-DLoWn_Jd.js → RunButton-BO02PdVH.js} +1 -1
  8. package/dist/assets/__vite-browser-external-mTzvI0UM.js +1 -0
  9. package/dist/assets/{add-cell-with-ai-C1L7x0xr.js → add-cell-with-ai-PVABTCGt.js} +35 -35
  10. package/dist/assets/add-connection-dialog-GskQAyZw.js +178 -0
  11. package/dist/assets/{agent-panel-D3_CUvz_.js → agent-panel-BitNk-Gl.js} +5 -5
  12. package/dist/assets/ai-model-dropdown-DzobPTdx.js +5 -0
  13. package/dist/assets/{any-language-editor--tRHs8C_.js → any-language-editor-BIeaxtdD.js} +1 -1
  14. package/dist/assets/apl-BnIcQcjL.js +1 -0
  15. package/dist/assets/app-config-button-D_JaIWhO.js +1 -0
  16. package/dist/assets/{arc-CfUZAQDm.js → arc-DPwkj0YX.js} +1 -1
  17. package/dist/assets/{architecture-7HQA4BMR-Bvqj37EA.js → architecture-7HQA4BMR-CzgzqOCD.js} +1 -1
  18. package/dist/assets/{architectureDiagram-VXUJARFQ-sx_yisiZ.js → architectureDiagram-VXUJARFQ-BMZxefa_.js} +1 -1
  19. package/dist/assets/arrow-left-pVgT2h-8.js +1 -0
  20. package/dist/assets/asciiarmor-VNkYxCrW.js +1 -0
  21. package/dist/assets/asn1-DHaiamxN.js +1 -0
  22. package/dist/assets/blob-BNTWOaI9.js +1 -0
  23. package/dist/assets/{blockDiagram-VD42YOAC-KexI-fgH.js → blockDiagram-VD42YOAC-O9sd6I0b.js} +1 -1
  24. package/dist/assets/brainfuck-B7OQ4qXM.js +1 -0
  25. package/dist/assets/{c4Diagram-YG6GDRKO-d8NrlxRF.js → c4Diagram-YG6GDRKO-CJ4NJdbh.js} +1 -1
  26. package/dist/assets/{cache-panel-DcQUeUpg.js → cache-panel-B2B1ePao.js} +1 -1
  27. package/dist/assets/cell-editor-BuU4BDSk.js +27 -0
  28. package/dist/assets/cell-link-CWQ4BYr-.js +1 -0
  29. package/dist/assets/cells-CJLUCcQg.js +235 -0
  30. package/dist/assets/channel-DELDOomM.js +1 -0
  31. package/dist/assets/{chat-display-DomMe89U.js → chat-display-CfiA-GdA.js} +1 -1
  32. package/dist/assets/{chat-panel-DzLbxcWT.js → chat-panel-DghO5Y6C.js} +3 -3
  33. package/dist/assets/{chat-ui-BpWZ6JeY.js → chat-ui-CNXmMUI1.js} +1 -1
  34. package/dist/assets/{chunk-4BX2VUAB-fhh1HlXH.js → chunk-4BX2VUAB-BCgdxLTg.js} +1 -1
  35. package/dist/assets/chunk-55IACEB6-DnPXlz-P.js +1 -0
  36. package/dist/assets/{chunk-5FQGJX7Z-Cp0LZT-a.js → chunk-5FQGJX7Z-CYQpNADu.js} +2 -2
  37. package/dist/assets/{chunk-ABZYJK2D-BtK4zInQ.js → chunk-ABZYJK2D-M8yn2N69.js} +3 -3
  38. package/dist/assets/{chunk-ATLVNIR6-YZDenslF.js → chunk-ATLVNIR6-CY4Q_7DV.js} +1 -1
  39. package/dist/assets/{chunk-B4BG7PRW-DYIZwDbt.js → chunk-B4BG7PRW-0izjR6gH.js} +1 -1
  40. package/dist/assets/{chunk-CVBHYZKI-CIyHeK0Q.js → chunk-CVBHYZKI-Dtb0_R-R.js} +1 -1
  41. package/dist/assets/{chunk-DI55MBZ5-TodwBGEN.js → chunk-DI55MBZ5-CeYy94Hv.js} +1 -1
  42. package/dist/assets/{chunk-EXTU4WIE-C76bF1UD.js → chunk-EXTU4WIE-CZBftw0u.js} +1 -1
  43. package/dist/assets/{chunk-FMBD7UC4-Yq65IDPA.js → chunk-FMBD7UC4-BTonlpoo.js} +1 -1
  44. package/dist/assets/{chunk-HN2XXSSU-CcbN4n6W.js → chunk-HN2XXSSU-Bqib0VeJ.js} +1 -1
  45. package/dist/assets/{chunk-JA3XYJ7Z-CPXEu7AX.js → chunk-JA3XYJ7Z-CMnBpyzd.js} +1 -1
  46. package/dist/assets/{chunk-JZLCHNYA-D8q1z6Py.js → chunk-JZLCHNYA-BWjnV_v7.js} +1 -1
  47. package/dist/assets/{chunk-MI3HLSF2-bmomnexd.js → chunk-MI3HLSF2-CA3zpyGZ.js} +1 -1
  48. package/dist/assets/{chunk-N4CR4FBY-BhsjB2qn.js → chunk-N4CR4FBY-CZmndviH.js} +2 -2
  49. package/dist/assets/{chunk-QN33PNHL-ngvPqyQ0.js → chunk-QN33PNHL-B5rSVblq.js} +1 -1
  50. package/dist/assets/{chunk-QXUST7PY-C4c0Sjmn.js → chunk-QXUST7PY-Cz8b__fX.js} +1 -1
  51. package/dist/assets/{chunk-QZHKN3VN-CkbwBDOS.js → chunk-QZHKN3VN-B7nq9C0W.js} +1 -1
  52. package/dist/assets/{chunk-S3R3BYOJ-Bt2NnquF.js → chunk-S3R3BYOJ-CUGnLh1o.js} +1 -1
  53. package/dist/assets/{chunk-TZMSLE5B-Dysko1OC.js → chunk-TZMSLE5B-CXQovw1I.js} +1 -1
  54. package/dist/assets/classDiagram-2ON5EDUG-B3IKXY7k.js +1 -0
  55. package/dist/assets/classDiagram-v2-WZHVMYZB-C0Db1CRa.js +1 -0
  56. package/dist/assets/{clike-DKPr2D1_.js → clike-CcPLlJ3-.js} +1 -1
  57. package/dist/assets/clojure-DK3HqqeG.js +1 -0
  58. package/dist/assets/cmake-Bnhxe81D.js +1 -0
  59. package/dist/assets/cobol-ISPch7J4.js +1 -0
  60. package/dist/assets/{code-block-37QAKDTI-DlENujeV.js → code-block-37QAKDTI-21cPxSHu.js} +1 -1
  61. package/dist/assets/coffeescript-B3cS2ooz.js +1 -0
  62. package/dist/assets/{column-preview-D5Btj8aG.js → column-preview-DREOGG_c.js} +1 -1
  63. package/dist/assets/{command-palette-CNp7T2c5.js → command-palette-C95r8rOd.js} +1 -1
  64. package/dist/assets/{common-BrPgvCtD.js → common-DCWeeUhr.js} +1 -1
  65. package/dist/assets/commonlisp-DH0yllOU.js +1 -0
  66. package/dist/assets/components-BGqqoLEG.js +1 -0
  67. package/dist/assets/components-K_Mi0vdC.js +1 -0
  68. package/dist/assets/config-B-Q7J_6d.js +1 -0
  69. package/dist/assets/{cose-bilkent-S5V4N54A-BlMw4-M9.js → cose-bilkent-S5V4N54A-DK9gIUQX.js} +1 -1
  70. package/dist/assets/crystal-CfSxbewa.js +1 -0
  71. package/dist/assets/{css-DsUcFZz8.js → css-IVPzYP6l.js} +1 -1
  72. package/dist/assets/cypher-DqUctVOg.js +1 -0
  73. package/dist/assets/d-DYRkEHFy.js +1 -0
  74. package/dist/assets/{dagre-6UL2VRFP-kJ4x17JK.js → dagre-6UL2VRFP-DQFoIrK8.js} +1 -1
  75. package/dist/assets/{data-grid-overlay-editor-DbobQcVo.js → data-grid-overlay-editor-CVM5ufb4.js} +1 -1
  76. package/dist/assets/{datasource-wn1PTlXA.js → datasource-DbljozeY.js} +2 -2
  77. package/dist/assets/{dependency-graph-panel-B8Q8RQNh.js → dependency-graph-panel-Bg9bLMXq.js} +4 -4
  78. package/dist/assets/{diagram-PSM6KHXK-d-5aQNHk.js → diagram-PSM6KHXK-DIXxW5au.js} +1 -1
  79. package/dist/assets/{diagram-QEK2KX5R-CO-PXq75.js → diagram-QEK2KX5R-B8KoKZCY.js} +1 -1
  80. package/dist/assets/{diagram-S2PKOQOG-Dv7pcvYC.js → diagram-S2PKOQOG-D0bjlYXx.js} +1 -1
  81. package/dist/assets/diff-Cd5HBT58.js +1 -0
  82. package/dist/assets/dist-B99-E4qp.js +1 -0
  83. package/dist/assets/{dist-BsphJPAV.js → dist-BiwuSVkx.js} +1 -1
  84. package/dist/assets/{dist-CECF_J8y.js → dist-BrZjJXDA.js} +1 -1
  85. package/dist/assets/{dist-Du-wcJyR.js → dist-By4rFZwg.js} +1 -1
  86. package/dist/assets/dist-CaZf6AoY.js +1 -0
  87. package/dist/assets/{dist-BMOD2Pyh.js → dist-Cgoy5550.js} +1 -1
  88. package/dist/assets/{dist-6c4zOh78.js → dist-D6WgndTj.js} +1 -1
  89. package/dist/assets/dist-DcXy-1eJ.js +1 -0
  90. package/dist/assets/{dist-0QUuSoRx.js → dist-DtbtRAqz.js} +1 -1
  91. package/dist/assets/dist-I3qeQWuP.js +1 -0
  92. package/dist/assets/{dist-sPfKr-vH.js → dist-aeKlrIMv.js} +1 -1
  93. package/dist/assets/{dist-CDUl-YL4.js → dist-gDi2I7IJ.js} +1 -1
  94. package/dist/assets/{dist-CRrIf3gB.js → dist-miDa4-cz.js} +1 -1
  95. package/dist/assets/{dist-R1kU4nzJ.js → dist-nDEBxpL6.js} +1 -1
  96. package/dist/assets/{dist-DQNaXfK1.js → dist-oUL4XFdB.js} +1 -1
  97. package/dist/assets/{dockerfile-C2PznFWk.js → dockerfile-CLtE40Sb.js} +1 -1
  98. package/dist/assets/{documentation-panel-hFyikugH.js → documentation-panel-BhtY-lKF.js} +1 -1
  99. package/dist/assets/download-DwYUg-o4.js +9 -0
  100. package/dist/assets/dtd-C24SyIVW.js +1 -0
  101. package/dist/assets/dylan-CrkzDmc1.js +1 -0
  102. package/dist/assets/ecl-DSuYw2WY.js +1 -0
  103. package/dist/assets/{edit-page-jUsez4HZ.js → edit-page-D_hRRfNq.js} +6 -6
  104. package/dist/assets/eiffel-D60uMU52.js +1 -0
  105. package/dist/assets/elm-pYZdVh3P.js +1 -0
  106. package/dist/assets/{erDiagram-Q2GNP2WA-BQ8HfnRu.js → erDiagram-Q2GNP2WA-D7EuT99Y.js} +1 -1
  107. package/dist/assets/erlang-D9MlcoAb.js +1 -0
  108. package/dist/assets/error-entries-4LYRQSOP.js +8 -0
  109. package/dist/assets/{error-panel-DAseRhAS.js → error-panel-FG7tsVQ_.js} +1 -1
  110. package/dist/assets/{esm-Cmv0Nuxi.js → esm-BDGraAqp.js} +1 -1
  111. package/dist/assets/factor-gTHEdNEJ.js +1 -0
  112. package/dist/assets/{factor-DMrXrOH8.js → factor-xSp9WnN7.js} +1 -1
  113. package/dist/assets/file-explorer-panel-CpUlOt1N.js +26 -0
  114. package/dist/assets/{file-icons-Chripuk-.js → file-icons-CODNoWOy.js} +1 -1
  115. package/dist/assets/{file-name-input-B1NJd3KY.js → file-name-input-DyvZhLvk.js} +1 -1
  116. package/dist/assets/{fileToBase64-C2Yy-YXq.js → fileToBase64-hLJmVjNJ.js} +1 -1
  117. package/dist/assets/floating-outline-DBlzcHYf.js +1 -0
  118. package/dist/assets/{flowDiagram-NV44I4VS-xBOzhlfg.js → flowDiagram-NV44I4VS-Bz3PhSZq.js} +1 -1
  119. package/dist/assets/focus-B6HBbAwF.js +1 -0
  120. package/dist/assets/form-BYlqbYKI.js +2 -0
  121. package/dist/assets/form-W6ZZMHnc.js +1 -0
  122. package/dist/assets/forth-CWZXTLFs.js +1 -0
  123. package/dist/assets/fortran-B8kNpt8O.js +1 -0
  124. package/dist/assets/{gallery-page-CJ3ms1Hn.js → gallery-page-DbuxknAw.js} +1 -1
  125. package/dist/assets/{ganttDiagram-JELNMOA3-D2O_k-Zg.js → ganttDiagram-JELNMOA3-DaS60lKW.js} +1 -1
  126. package/dist/assets/gas-DxuMSeqj.js +1 -0
  127. package/dist/assets/gherkin-ZkKEDs6K.js +1 -0
  128. package/dist/assets/{gitGraph-G5XIXVHT-8HJwNcdU.js → gitGraph-G5XIXVHT-Cd5ecvAE.js} +1 -1
  129. package/dist/assets/{gitGraphDiagram-V2S2FVAM-Nk4Ll9GY.js → gitGraphDiagram-V2S2FVAM-D7jUmjBw.js} +1 -1
  130. package/dist/assets/{glide-data-editor-j2igs9Y_.js → glide-data-editor-CejKKgnN.js} +4 -4
  131. package/dist/assets/globe-Dwo3iXzC.js +1 -0
  132. package/dist/assets/groovy-CqQZm41C.js +1 -0
  133. package/dist/assets/haskell-DWF-arrK.js +1 -0
  134. package/dist/assets/haxe-LmdIWMMr.js +1 -0
  135. package/dist/assets/home-page-DYaHMq8Q.js +4 -0
  136. package/dist/assets/{html-to-image-B-nAUvDC.js → html-to-image-CN9yTa5s.js} +2 -2
  137. package/dist/assets/idl-DEd51qv-.js +1 -0
  138. package/dist/assets/index-8Nlyq3mV.css +2 -0
  139. package/dist/assets/index-Gv23EHlE.js +38 -0
  140. package/dist/assets/{info-VBDWY6EO-rfe3WPvd.js → info-VBDWY6EO-BTT52JaO.js} +1 -1
  141. package/dist/assets/infoDiagram-HS3SLOUP-GkG80Qxa.js +2 -0
  142. package/dist/assets/javascript-BFIOGZ-j.js +1 -0
  143. package/dist/assets/{journeyDiagram-XKPGCS4Q-D61FGivn.js → journeyDiagram-XKPGCS4Q-DwL-PxSb.js} +1 -1
  144. package/dist/assets/julia-Chs3F4Sv.js +1 -0
  145. package/dist/assets/{kanban-definition-3W4ZIXB7-Bnv0X0Tu.js → kanban-definition-3W4ZIXB7-DiBaV6eK.js} +1 -1
  146. package/dist/assets/katex-12J11HuB.js +1 -0
  147. package/dist/assets/kiosk-mode-Di-gTPu2.js +1 -0
  148. package/dist/assets/{layout-1Z2AhO6k.js → layout-B6D_84rz.js} +5 -5
  149. package/dist/assets/{line-DNm2phYo.js → line-BDmwHhfs.js} +1 -1
  150. package/dist/assets/{linear-CTQqNbVX.js → linear-BPv4krGt.js} +1 -1
  151. package/dist/assets/livescript-CZOCkk31.js +1 -0
  152. package/dist/assets/logs-panel-V4PsZD48.js +1 -0
  153. package/dist/assets/{loro_wasm_bg-Duqr-kJ2.js → loro_wasm_bg-CjrUicyy.js} +1 -1
  154. package/dist/assets/lua-DK4FKJLN.js +1 -0
  155. package/dist/assets/{markdown-renderer-Cs1sISb9.js → markdown-renderer-CzJx-MnJ.js} +3 -3
  156. package/dist/assets/mathematica-BoEJU8On.js +1 -0
  157. package/dist/assets/mbox-1WJcoGln.js +1 -0
  158. package/dist/assets/{mermaid-4DMBBIKO-CDGmT6YQ.js → mermaid-4DMBBIKO-3ntkrgCA.js} +1 -1
  159. package/dist/assets/{mermaid-CYN0wOyG.js → mermaid-B8gNHyGy.js} +3 -3
  160. package/dist/assets/{mermaid-parser.core-Dz2GMGqQ.js → mermaid-parser.core-Ddjs6Jmy.js} +2 -2
  161. package/dist/assets/{mhchem-CIWniJp4.js → mhchem-Cnt1CrAX.js} +1 -1
  162. package/dist/assets/{mindmap-definition-VGOIOE7T-C-YaKmEU.js → mindmap-definition-VGOIOE7T-DKJd1wuU.js} +1 -1
  163. package/dist/assets/mirc-OXxqihhx.js +1 -0
  164. package/dist/assets/mllike-fFPa49Ft.js +1 -0
  165. package/dist/assets/modelica-B2hOO40U.js +1 -0
  166. package/dist/assets/mscgen-BUm8DSPh.js +1 -0
  167. package/dist/assets/mumps-BUUE1QKi.js +1 -0
  168. package/dist/assets/{name-cell-input-2sM8a_OS.js → name-cell-input-Bq1sljc2.js} +1 -1
  169. package/dist/assets/node-sql-parser-CAudyJSw.js +68 -0
  170. package/dist/assets/nsis-CQPY661e.js +1 -0
  171. package/dist/assets/{nsis-Ccvd1gbp.js → nsis-SCfsPq8M.js} +1 -1
  172. package/dist/assets/ntriples-CtWbsB7O.js +1 -0
  173. package/dist/assets/{number-overlay-editor-BQ9P6yP7.js → number-overlay-editor-KHf1PkHr.js} +1 -1
  174. package/dist/assets/octave-D4HWE405.js +1 -0
  175. package/dist/assets/{ordinal-DyTNGK17.js → ordinal-BSXHDD5k.js} +1 -1
  176. package/dist/assets/{outline-panel-BXWCkGu_.js → outline-panel-Tn3DVuNl.js} +1 -1
  177. package/dist/assets/oz-Cp-6fXH5.js +1 -0
  178. package/dist/assets/{packages-panel-CJfHGfax.js → packages-panel-er2ghj4m.js} +1 -1
  179. package/dist/assets/{packet-DYOGHKS2-DTVloLa7.js → packet-DYOGHKS2-pYSTMj1G.js} +1 -1
  180. package/dist/assets/pair-with-agent-modal-CVYH-Guh.js +4 -0
  181. package/dist/assets/panel-accordion-state-DN1hLusu.js +1 -0
  182. package/dist/assets/panels-oc6cK0j0.js +4 -0
  183. package/dist/assets/pascal-B2F20-Dq.js +1 -0
  184. package/dist/assets/perl-C8I4my72.js +1 -0
  185. package/dist/assets/{pie-VRWISCQL-Bmght6JF.js → pie-VRWISCQL-BtGe15Zk.js} +1 -1
  186. package/dist/assets/{pieDiagram-ADFJNKIX-DlFYL0BN.js → pieDiagram-ADFJNKIX-BdWIv6Xr.js} +1 -1
  187. package/dist/assets/pig-Dg7z9udE.js +1 -0
  188. package/dist/assets/powershell-BjupwEXi.js +1 -0
  189. package/dist/assets/process-output-DXnqTuGm.js +1 -0
  190. package/dist/assets/properties-CWyPUxmr.js +1 -0
  191. package/dist/assets/protobuf-B2dHC-BL.js +1 -0
  192. package/dist/assets/pug-B-MnYZUt.js +1 -0
  193. package/dist/assets/{pug-BtXi5KiX.js → pug-D81S7inS.js} +1 -1
  194. package/dist/assets/puppet-CeBQQ4Li.js +1 -0
  195. package/dist/assets/python-DgHNYu_r.js +1 -0
  196. package/dist/assets/q-wSguJrTU.js +1 -0
  197. package/dist/assets/{quadrantDiagram-AYHSOK5B-BpJug2BH.js → quadrantDiagram-AYHSOK5B-DJuGB95-.js} +1 -1
  198. package/dist/assets/r-BoIJ2Zve.js +1 -0
  199. package/dist/assets/{radar-ZZBFDIW7-CYwWzRgW.js → radar-ZZBFDIW7-DyFu57RV.js} +1 -1
  200. package/dist/assets/{radio-group-PT0_zVHo.js → radio-group-CcU5wNVj.js} +1 -1
  201. package/dist/assets/{react-vega-TNCk_eWj.js → react-vega-BLc5RhC7.js} +1 -1
  202. package/dist/assets/{readonly-code-display-CFbCSGms.js → readonly-code-display-DoQFa0ET.js} +1 -1
  203. package/dist/assets/{readonly-python-code-DB23yd7T.js → readonly-python-code-CYfbPYQ0.js} +1 -1
  204. package/dist/assets/{requirementDiagram-UZGBJVZJ-Bd-1eny8.js → requirementDiagram-UZGBJVZJ-aWGJtWy2.js} +1 -1
  205. package/dist/assets/{reveal-component-fwTDxf5N.js → reveal-component-CZgRCMe1.js} +42 -42
  206. package/dist/assets/rpm-DmyUNIkv.js +1 -0
  207. package/dist/assets/{ecl-B6UC4tME.js → ruby-Djlw6kjU.js} +1 -1
  208. package/dist/assets/run-page-Dxm4ltqq.js +1 -0
  209. package/dist/assets/{sankeyDiagram-TZEHDZUN-CDWAE6GV.js → sankeyDiagram-TZEHDZUN-nJIZ3_NQ.js} +1 -1
  210. package/dist/assets/sas-B8AwxLVS.js +1 -0
  211. package/dist/assets/scheme-o4lPnt7c.js +1 -0
  212. package/dist/assets/{scratchpad-panel-BLC2oQ_3.js → scratchpad-panel-pQP0zGxD.js} +1 -1
  213. package/dist/assets/{secrets-panel-6J6wcuVR.js → secrets-panel-Cz17_MLf.js} +1 -1
  214. package/dist/assets/{sequenceDiagram-WL72ISMW-B6hjDGBF.js → sequenceDiagram-WL72ISMW-Bvkxl3m4.js} +1 -1
  215. package/dist/assets/session-panel-C-y42nqB.js +1 -0
  216. package/dist/assets/shell-DJuOhLmg.js +1 -0
  217. package/dist/assets/sieve-BBDbJOX3.js +1 -0
  218. package/dist/assets/{skeleton-xuR254Kw.js → skeleton-Bd78PcP9.js} +1 -1
  219. package/dist/assets/slides-DkEgzTJB.css +1 -0
  220. package/dist/assets/smalltalk-CmTnbqu4.js +1 -0
  221. package/dist/assets/{snippets-panel-DwAjNUqR.js → snippets-panel-BRtH_9R3.js} +1 -1
  222. package/dist/assets/sparql-BQuPdHqO.js +1 -0
  223. package/dist/assets/{src-CIOdyciO.js → src-xYaLe_3f.js} +1 -1
  224. package/dist/assets/state-C4kiwedg.js +1 -0
  225. package/dist/assets/state-CsGOoEZv.js +3 -0
  226. package/dist/assets/{state-Tc7pRohh.js → state-Rxc-B11B.js} +1 -1
  227. package/dist/assets/{stateDiagram-FKZM4ZOC-Bzv6j99z.js → stateDiagram-FKZM4ZOC-CVF8M4di.js} +1 -1
  228. package/dist/assets/stateDiagram-v2-4FDKWEC3-Dj-G9wuu.js +1 -0
  229. package/dist/assets/{step-CDlhJj9-.js → step-DkIPWA0m.js} +1 -1
  230. package/dist/assets/stylus-DrNz1BCZ.js +1 -0
  231. package/dist/assets/swift-UQ24LctC.js +1 -0
  232. package/dist/assets/switch-OVajJBPR.js +1 -0
  233. package/dist/assets/tcl-BBEwSttz.js +1 -0
  234. package/dist/assets/{terminal-DaLxAnKx.js → terminal-Cdd3rO1L.js} +1 -1
  235. package/dist/assets/textarea-DtCcemo9.js +1 -0
  236. package/dist/assets/textile-CYG_qV_5.js +1 -0
  237. package/dist/assets/{time-BuRlxEhE.js → time-p47i6wvp.js} +1 -1
  238. package/dist/assets/{timeline-definition-IT6M3QCI-DXwdU1og.js → timeline-definition-IT6M3QCI-D1XRbH5P.js} +1 -1
  239. package/dist/assets/toml-DB6lKkvi.js +1 -0
  240. package/dist/assets/{tracing-BmBBYynL.js → tracing-CdeezhIN.js} +1 -1
  241. package/dist/assets/{tracing-panel-AReiFUol.js → tracing-panel-Dl3MlGyG.js} +2 -2
  242. package/dist/assets/{tree-actions-Bz3fJ7p-.js → tree-actions-BiQ4VzX-.js} +1 -1
  243. package/dist/assets/{treemap-GDKQZRPO-4Cm6HMmj.js → treemap-GDKQZRPO-Z4m-KHQY.js} +1 -1
  244. package/dist/assets/troff-WrtaE-DW.js +1 -0
  245. package/dist/assets/ttcn-DNOLsGjD.js +1 -0
  246. package/dist/assets/ttcn-cfg-D2oRz-8W.js +1 -0
  247. package/dist/assets/turtle-hoYUNcbl.js +1 -0
  248. package/dist/assets/{useBoolean-CA7K8rap.js → useBoolean-CFj86iac.js} +1 -1
  249. package/dist/assets/useCellActionButton-B5wkKtv1.js +1 -0
  250. package/dist/assets/{useDeleteCell-DQP-NBq2.js → useDeleteCell-BfKWOHfk.js} +1 -1
  251. package/dist/assets/{useDependencyPanelTab-BrkWlCTP.js → useDependencyPanelTab-BTipqN67.js} +1 -1
  252. package/dist/assets/useNotebookActions-CCwjICU_.js +12 -0
  253. package/dist/assets/useRunCells-DZ4glj3f.js +1 -0
  254. package/dist/assets/{useSplitCell-jH70A2Sz.js → useSplitCell-DXzfZTCe.js} +1 -1
  255. package/dist/assets/vb-CSArj0Ox.js +1 -0
  256. package/dist/assets/vbscript-Cy_b6RxB.js +1 -0
  257. package/dist/assets/{vega-component-DSvWLXIy.js → vega-component-VDedA5Cd.js} +1 -1
  258. package/dist/assets/{vega-embed-container-hDAVOOba.js → vega-embed-container-DxSqUOCK.js} +1 -1
  259. package/dist/assets/velocity-8fvVYgdA.js +1 -0
  260. package/dist/assets/verilog-BPXnWs06.js +1 -0
  261. package/dist/assets/vhdl-C4JSE7Sd.js +1 -0
  262. package/dist/assets/webidl-uP8WR81M.js +1 -0
  263. package/dist/assets/{worker-BQo2bijx.js → worker-BM73L67p.js} +3 -6
  264. package/dist/assets/write-secret-modal-Dtm66yVf.js +2 -0
  265. package/dist/assets/xquery-C8ppAT5Z.js +1 -0
  266. package/dist/assets/{xychartDiagram-PRI3JC2R-Cb0exSKs.js → xychartDiagram-PRI3JC2R-B8A0hi-Q.js} +1 -1
  267. package/dist/assets/yacas-CnXhtfs7.js +1 -0
  268. package/dist/assets/z80-B0aL_Tnf.js +1 -0
  269. package/dist/index.html +36 -34
  270. package/package.json +3 -4
  271. package/src/__mocks__/requests.ts +56 -4
  272. package/src/components/data-table/__tests__/__snapshots__/chart-spec-model.test.ts.snap +174 -21
  273. package/src/components/data-table/__tests__/chart-spec-model.test.ts +102 -1
  274. package/src/components/data-table/__tests__/columns.test.tsx +9 -1
  275. package/src/components/data-table/column-summary/chart-spec-model.tsx +163 -103
  276. package/src/components/data-table/column-summary/legacy-chart-spec.ts +15 -7
  277. package/src/components/data-table/column-summary/utils.ts +26 -7
  278. package/src/components/data-table/columns.tsx +11 -1
  279. package/src/components/data-table/types.ts +1 -1
  280. package/src/components/editor/__tests__/viewer-banner.test.tsx +14 -0
  281. package/src/components/editor/actions/__tests__/pair-with-agent-commands.test.ts +99 -18
  282. package/src/components/editor/actions/__tests__/pdf-export.test.ts +32 -13
  283. package/src/components/editor/actions/pair-with-agent-commands.ts +21 -10
  284. package/src/components/editor/actions/pair-with-agent-modal.tsx +2 -2
  285. package/src/components/editor/actions/pdf-export.ts +11 -14
  286. package/src/components/editor/actions/useNotebookActions.tsx +28 -19
  287. package/src/components/editor/cell/code/__tests__/cell-editor-activity-lifecycle.test.ts +250 -0
  288. package/src/components/editor/cell/code/cell-editor.tsx +13 -7
  289. package/src/components/editor/chrome/__tests__/state.test.ts +7 -1
  290. package/src/components/editor/chrome/panels/__tests__/logs-panel.test.tsx +25 -0
  291. package/src/components/editor/chrome/panels/__tests__/panel-accordion-state.test.ts +42 -0
  292. package/src/components/editor/chrome/panels/file-explorer-panel.tsx +6 -17
  293. package/src/components/editor/chrome/panels/logs-panel.tsx +12 -2
  294. package/src/components/editor/chrome/panels/panel-accordion-state.ts +51 -0
  295. package/src/components/editor/chrome/panels/session-panel.tsx +5 -16
  296. package/src/components/editor/chrome/panels/write-secret-modal.tsx +40 -12
  297. package/src/components/editor/chrome/state.ts +10 -0
  298. package/src/components/editor/connections/__tests__/json-credentials.test.ts +114 -0
  299. package/src/components/editor/connections/__tests__/paths.test.ts +39 -0
  300. package/src/components/editor/connections/__tests__/quick-add-data-sources.test.tsx +113 -0
  301. package/src/components/editor/connections/add-connection-dialog.tsx +2 -0
  302. package/src/components/editor/connections/components.tsx +6 -2
  303. package/src/components/editor/connections/database/__tests__/__snapshots__/as-code.test.ts.snap +27 -5
  304. package/src/components/editor/connections/database/__tests__/as-code.test.ts +33 -0
  305. package/src/components/editor/connections/database/as-code.ts +37 -13
  306. package/src/components/editor/connections/database/schemas.ts +6 -5
  307. package/src/components/editor/connections/form-renderers.tsx +99 -1
  308. package/src/components/editor/connections/json-credentials.ts +57 -0
  309. package/src/components/editor/connections/paths.ts +21 -0
  310. package/src/components/editor/connections/quick-add-data-sources.tsx +106 -0
  311. package/src/components/editor/connections/secret-combobox.tsx +41 -20
  312. package/src/components/editor/connections/storage/__tests__/__snapshots__/as-code.test.ts.snap +88 -2
  313. package/src/components/editor/connections/storage/__tests__/as-code.test.ts +128 -8
  314. package/src/components/editor/connections/storage/as-code.ts +79 -36
  315. package/src/components/editor/connections/storage/schemas.ts +85 -44
  316. package/src/components/editor/file-tree/__tests__/renderers.test.ts +31 -0
  317. package/src/components/editor/file-tree/file-viewer.tsx +11 -7
  318. package/src/components/editor/file-tree/renderers.tsx +21 -0
  319. package/src/components/editor/renderers/vertical-layout/vertical-layout.tsx +2 -2
  320. package/src/components/editor/viewer-banner.tsx +6 -1
  321. package/src/components/forms/form.tsx +59 -24
  322. package/src/components/forms/options.ts +2 -1
  323. package/src/components/slides/__tests__/cell-output-block.test.tsx +40 -0
  324. package/src/components/slides/__tests__/slide-cell-view.test.tsx +33 -0
  325. package/src/components/slides/reveal-component.tsx +22 -17
  326. package/src/components/slides/slide-cell-view.tsx +1 -1
  327. package/src/components/slides/slides.css +4 -2
  328. package/src/components/static-html/share-modal.tsx +1 -1
  329. package/src/core/ai/context/providers/file.ts +8 -29
  330. package/src/core/cells/__tests__/cells.test.ts +12 -2
  331. package/src/core/cells/__tests__/logs.test.ts +5 -5
  332. package/src/core/cells/cells.ts +17 -4
  333. package/src/core/cells/document-changes.ts +1 -0
  334. package/src/core/cells/logs.ts +14 -4
  335. package/src/core/codemirror/cm.ts +3 -0
  336. package/src/core/codemirror/code-lens/__tests__/actions.test.ts +68 -0
  337. package/src/core/codemirror/code-lens/__tests__/analyzer.test.ts +224 -0
  338. package/src/core/codemirror/code-lens/__tests__/entities.test.ts +175 -0
  339. package/src/core/codemirror/code-lens/__tests__/extension.test.ts +325 -0
  340. package/src/core/codemirror/code-lens/__tests__/perf.test.ts +121 -0
  341. package/src/core/codemirror/code-lens/__tests__/popover.test.ts +93 -0
  342. package/src/core/codemirror/code-lens/actions.ts +33 -0
  343. package/src/core/codemirror/code-lens/analyzer.ts +284 -0
  344. package/src/core/codemirror/code-lens/entities.ts +123 -0
  345. package/src/core/codemirror/code-lens/extension.ts +298 -0
  346. package/src/core/codemirror/code-lens/icons.ts +36 -0
  347. package/src/core/codemirror/code-lens/popover.tsx +240 -0
  348. package/src/core/codemirror/copilot/__tests__/language-server.test.ts +396 -100
  349. package/src/core/codemirror/copilot/__tests__/transport.test.ts +128 -540
  350. package/src/core/codemirror/copilot/language-server.ts +182 -70
  351. package/src/core/codemirror/copilot/transport.ts +15 -207
  352. package/src/core/codemirror/copilot/types.ts +9 -2
  353. package/src/core/codemirror/find-replace/__tests__/navigate.test.ts +42 -30
  354. package/src/core/codemirror/find-replace/navigate.ts +2 -0
  355. package/src/core/codemirror/go-to-definition/__tests__/commands.test.ts +24 -3
  356. package/src/core/codemirror/go-to-definition/commands.ts +93 -90
  357. package/src/core/codemirror/language/__tests__/sql.test.ts +627 -61
  358. package/src/core/codemirror/language/languages/python.ts +23 -11
  359. package/src/core/codemirror/language/languages/sql/completion-store.ts +5 -1
  360. package/src/core/codemirror/language/languages/sql/renderers.tsx +3 -3
  361. package/src/core/codemirror/language/languages/sql/sql.ts +251 -16
  362. package/src/core/codemirror/lsp/__tests__/federated-lsp.test.ts +161 -0
  363. package/src/core/codemirror/lsp/__tests__/log-messages.test.ts +53 -0
  364. package/src/core/codemirror/lsp/__tests__/normalize-markdown-math.test.ts +25 -0
  365. package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +598 -156
  366. package/src/core/codemirror/lsp/__tests__/transports.test.ts +112 -0
  367. package/src/core/codemirror/lsp/federated-lsp.ts +76 -23
  368. package/src/core/codemirror/lsp/log-messages.ts +37 -0
  369. package/src/core/codemirror/lsp/normalize-markdown-math.ts +8 -4
  370. package/src/core/codemirror/lsp/notebook-lsp.ts +220 -56
  371. package/src/core/codemirror/lsp/transports.ts +8 -1
  372. package/src/core/codemirror/lsp/types.ts +68 -8
  373. package/src/core/codemirror/lsp/utils.ts +14 -0
  374. package/src/core/codemirror/python-node-names.ts +90 -0
  375. package/src/core/codemirror/reactive-references/analyzer.ts +52 -57
  376. package/src/core/codemirror/utils.ts +28 -0
  377. package/src/core/config/feature-flag.tsx +3 -1
  378. package/src/core/datasets/data-source-discovery.ts +5 -0
  379. package/src/core/datasets/request-registry.ts +11 -0
  380. package/src/core/edit-app.tsx +1 -2
  381. package/src/core/export/__tests__/hooks.test.ts +2 -4
  382. package/src/core/export/hooks.ts +4 -3
  383. package/src/core/islands/__tests__/bridge.test.ts +107 -0
  384. package/src/core/islands/bootstrap.ts +1 -0
  385. package/src/core/islands/bridge.ts +18 -0
  386. package/src/core/kernel/messages.ts +2 -0
  387. package/src/core/lsp/__tests__/transport.test.ts +509 -337
  388. package/src/core/lsp/transport.ts +304 -132
  389. package/src/core/mode.ts +10 -0
  390. package/src/core/network/__tests__/api.test.ts +42 -0
  391. package/src/core/network/__tests__/connection.test.ts +45 -0
  392. package/src/core/network/__tests__/requests-lazy.test.ts +47 -1
  393. package/src/core/network/__tests__/requests-network.test.ts +48 -0
  394. package/src/core/network/api.ts +27 -0
  395. package/src/core/network/connection.ts +15 -0
  396. package/src/core/network/requests-lazy.ts +3 -0
  397. package/src/core/network/requests-network.ts +31 -8
  398. package/src/core/network/requests-static.ts +3 -0
  399. package/src/core/network/requests-toasting.tsx +3 -0
  400. package/src/core/network/types.ts +27 -6
  401. package/src/core/rtc/state.ts +9 -0
  402. package/src/core/static/download-html.ts +5 -14
  403. package/src/core/wasm/__tests__/bridge.test.ts +99 -5
  404. package/src/core/wasm/bridge.ts +42 -9
  405. package/src/core/wasm/worker/types.ts +10 -3
  406. package/src/core/wasm/worker/worker.ts +7 -8
  407. package/src/core/websocket/useMarimoKernelConnection.tsx +4 -0
  408. package/src/css/app/codemirror.css +16 -2
  409. package/src/hooks/__tests__/useDataSourceDiscovery.test.ts +80 -0
  410. package/src/hooks/useDataSourceDiscovery.ts +18 -0
  411. package/src/plugins/impl/DataTablePlugin.tsx +4 -1
  412. package/src/plugins/impl/__tests__/DataTablePlugin.test.tsx +158 -0
  413. package/src/plugins/impl/anywidget/__tests__/model.test.ts +55 -0
  414. package/src/plugins/impl/anywidget/model.ts +20 -5
  415. package/src/plugins/impl/data-frames/forms/__tests__/__snapshots__/form.test.tsx.snap +33 -21
  416. package/src/plugins/impl/data-frames/forms/renderers.tsx +11 -8
  417. package/src/stories/log-viewer.stories.tsx +12 -6
  418. package/src/utils/__tests__/blob.test.ts +27 -1
  419. package/src/utils/__tests__/download.test.tsx +44 -4
  420. package/src/utils/blob.ts +24 -1
  421. package/src/utils/download.ts +14 -15
  422. package/dist/assets/JsonOutput-B0aYK7up.js +0 -53
  423. package/dist/assets/LazyAnyLanguageCodeMirror-B2JvSXP-.js +0 -2
  424. package/dist/assets/RenderHTML-uBc4LkCP.js +0 -1
  425. package/dist/assets/__vite-browser-external-BkrtI7wJ.js +0 -1
  426. package/dist/assets/add-connection-dialog-BgQ7HuWu.js +0 -170
  427. package/dist/assets/ai-model-dropdown-C7iiWBqP.js +0 -5
  428. package/dist/assets/apl-DTwRFDps.js +0 -1
  429. package/dist/assets/app-config-button-DhmeKMjL.js +0 -1
  430. package/dist/assets/asciiarmor-CiqkDK0s.js +0 -1
  431. package/dist/assets/asn1-RTvH5MEs.js +0 -1
  432. package/dist/assets/blob-C3EfaMOb.js +0 -1
  433. package/dist/assets/brainfuck-szH_VGzd.js +0 -1
  434. package/dist/assets/cell-editor-DD0zaU_N.js +0 -27
  435. package/dist/assets/cell-link-C0hhYyNu.js +0 -1
  436. package/dist/assets/cells-aqfX084m.js +0 -229
  437. package/dist/assets/channel-D-k8o3T1.js +0 -1
  438. package/dist/assets/chunk-55IACEB6-xhaY4LU6.js +0 -1
  439. package/dist/assets/classDiagram-2ON5EDUG-C-rIg7EQ.js +0 -1
  440. package/dist/assets/classDiagram-v2-WZHVMYZB-MBAsRLae.js +0 -1
  441. package/dist/assets/clojure-CyEbLmch.js +0 -1
  442. package/dist/assets/cmake-Dk8f7QuI.js +0 -1
  443. package/dist/assets/cobol-BJJRqW1D.js +0 -1
  444. package/dist/assets/coffeescript-BDuWJ9WO.js +0 -1
  445. package/dist/assets/commonlisp-CVHm2VSp.js +0 -1
  446. package/dist/assets/components-1i9OlkxM.js +0 -1
  447. package/dist/assets/config-CR3KxW53.js +0 -1
  448. package/dist/assets/crystal-C2Fgr79A.js +0 -1
  449. package/dist/assets/cypher-CUlCm6vR.js +0 -1
  450. package/dist/assets/d-4ANEHA6q.js +0 -1
  451. package/dist/assets/diff-C-W-5V8L.js +0 -1
  452. package/dist/assets/dist-CCAhuqF-.js +0 -1
  453. package/dist/assets/dist-DGhK0kPE.js +0 -1
  454. package/dist/assets/dist-SVDIDTM2.js +0 -1
  455. package/dist/assets/dist-xSLg7wNV.js +0 -1
  456. package/dist/assets/download-CkMUlfM3.js +0 -9
  457. package/dist/assets/dtd-D9h-tL8G.js +0 -1
  458. package/dist/assets/dylan-D3MC56xy.js +0 -1
  459. package/dist/assets/eiffel-CjvEov4k.js +0 -1
  460. package/dist/assets/elm-DvSbvRWe.js +0 -1
  461. package/dist/assets/erlang-DJYaGXyq.js +0 -1
  462. package/dist/assets/error-entries-NXVkubuN.js +0 -8
  463. package/dist/assets/factor-CUQCrkTo.js +0 -1
  464. package/dist/assets/file-explorer-panel-D7VHUIPp.js +0 -26
  465. package/dist/assets/floating-outline-BOqWJRw_.js +0 -1
  466. package/dist/assets/focus-tOmGbv38.js +0 -1
  467. package/dist/assets/form-CIXAzTfC.js +0 -2
  468. package/dist/assets/forth-D9xegiCO.js +0 -1
  469. package/dist/assets/fortran-B0Oe0U8s.js +0 -1
  470. package/dist/assets/gas-jLjj-PIq.js +0 -1
  471. package/dist/assets/gherkin-3Ig8Crit.js +0 -1
  472. package/dist/assets/groovy-NKpNVJ-n.js +0 -1
  473. package/dist/assets/haskell-OPE4bAjk.js +0 -1
  474. package/dist/assets/haxe-DEAZF8L3.js +0 -1
  475. package/dist/assets/home-page-DO_MqQAB.js +0 -4
  476. package/dist/assets/idl-BM6265Xl.js +0 -1
  477. package/dist/assets/index-wLUfvfaV.js +0 -38
  478. package/dist/assets/index-xs-zSSrX.css +0 -2
  479. package/dist/assets/infoDiagram-HS3SLOUP-DQnMjKYJ.js +0 -2
  480. package/dist/assets/javascript-CZ9vDpAy.js +0 -1
  481. package/dist/assets/julia-BrY9TQnt.js +0 -1
  482. package/dist/assets/katex-C-lfa1AM.js +0 -1
  483. package/dist/assets/kiosk-mode-QsYGYiC8.js +0 -1
  484. package/dist/assets/livescript-CNahkUp5.js +0 -1
  485. package/dist/assets/logs-panel-B6AfYQb6.js +0 -1
  486. package/dist/assets/lua-Skr4TVu_.js +0 -1
  487. package/dist/assets/mathematica-BXxhrpeY.js +0 -1
  488. package/dist/assets/mbox-BRrQCVe9.js +0 -1
  489. package/dist/assets/mirc-CffYPE4R.js +0 -1
  490. package/dist/assets/mllike-C1DLZhEI.js +0 -1
  491. package/dist/assets/modelica-CvAyRRNV.js +0 -1
  492. package/dist/assets/mscgen-uMZWtMZv.js +0 -1
  493. package/dist/assets/mumps-DFJehEx7.js +0 -1
  494. package/dist/assets/node-sql-parser-BWgUjcfV.js +0 -68
  495. package/dist/assets/nsis-BVI9YULz.js +0 -1
  496. package/dist/assets/ntriples-Bcdh7b2H.js +0 -1
  497. package/dist/assets/octave-CdAKz6YS.js +0 -1
  498. package/dist/assets/oz-DSySeR-W.js +0 -1
  499. package/dist/assets/pair-with-agent-modal-C9nKHvCp.js +0 -4
  500. package/dist/assets/panels-Ch_sUzTx.js +0 -4
  501. package/dist/assets/pascal-DefziIUN.js +0 -1
  502. package/dist/assets/perl-BOOloBPk.js +0 -1
  503. package/dist/assets/pig-f0nBb-5x.js +0 -1
  504. package/dist/assets/powershell-DToQjbK9.js +0 -1
  505. package/dist/assets/process-output-BFSCpqNt.js +0 -1
  506. package/dist/assets/properties-BRob-nyj.js +0 -1
  507. package/dist/assets/protobuf-DZyC6051.js +0 -1
  508. package/dist/assets/pug-pVoM8FRt.js +0 -1
  509. package/dist/assets/puppet-9fuYG07F.js +0 -1
  510. package/dist/assets/python-_Mr8fyXP.js +0 -1
  511. package/dist/assets/q-D73s4Y77.js +0 -1
  512. package/dist/assets/r-BOEjz92e.js +0 -1
  513. package/dist/assets/rpm-LpXWTM5t.js +0 -1
  514. package/dist/assets/ruby-DodgSDfF.js +0 -1
  515. package/dist/assets/run-page-D9-9chbw.js +0 -1
  516. package/dist/assets/sas-D9KCtUmL.js +0 -1
  517. package/dist/assets/scheme-p8UJxmJw.js +0 -1
  518. package/dist/assets/session-panel-Dz-DQDeV.js +0 -1
  519. package/dist/assets/shell-BWdqyqwL.js +0 -1
  520. package/dist/assets/sieve-CLwJmtiQ.js +0 -1
  521. package/dist/assets/slides-MCbMDtlY.css +0 -1
  522. package/dist/assets/smalltalk-D3KV-Qah.js +0 -1
  523. package/dist/assets/sparql-D9Jz2mBw.js +0 -1
  524. package/dist/assets/state-BpkJVsmT.js +0 -3
  525. package/dist/assets/state-DDag0B_B.js +0 -1
  526. package/dist/assets/stateDiagram-v2-4FDKWEC3-CA1l0rNa.js +0 -1
  527. package/dist/assets/stylus-ClN4l_XO.js +0 -1
  528. package/dist/assets/swift-Dvd_9xBv.js +0 -1
  529. package/dist/assets/switch-DLGijIXN.js +0 -1
  530. package/dist/assets/tcl-DR2p8cyi.js +0 -1
  531. package/dist/assets/textarea-aocYW9hl.js +0 -1
  532. package/dist/assets/textile-D6S27_J2.js +0 -1
  533. package/dist/assets/toml-B-YuQ2Id.js +0 -1
  534. package/dist/assets/troff-HSk8AoRF.js +0 -1
  535. package/dist/assets/ttcn-CehzlVdx.js +0 -1
  536. package/dist/assets/ttcn-cfg-CLEPwk1s.js +0 -1
  537. package/dist/assets/turtle-DQLHkbOu.js +0 -1
  538. package/dist/assets/useCellActionButton-BG7n5b0H.js +0 -1
  539. package/dist/assets/useNotebookActions-COdGI2fR.js +0 -12
  540. package/dist/assets/useRunCells-BtSwerrU.js +0 -1
  541. package/dist/assets/vb-o1EHrS4z.js +0 -1
  542. package/dist/assets/vbscript-BS8yUFpf.js +0 -1
  543. package/dist/assets/velocity-u_oGPFaA.js +0 -1
  544. package/dist/assets/verilog-CSmDH7su.js +0 -1
  545. package/dist/assets/vhdl-BCaWLcjw.js +0 -1
  546. package/dist/assets/webidl-Bf6dokXM.js +0 -1
  547. package/dist/assets/write-secret-modal-3-v-dHVj.js +0 -1
  548. package/dist/assets/xquery-Di0kkiXg.js +0 -1
  549. package/dist/assets/yacas-DB8tPtyp.js +0 -1
  550. package/dist/assets/z80-DFUvlWxk.js +0 -1
  551. /package/dist/assets/{ImageComparisonComponent-Cz3xVDLH.js → ImageComparisonComponent-COvcNAUu.js} +0 -0
  552. /package/dist/assets/{Inputs-B8-VCb_j.js → Inputs-BmtHnGKp.js} +0 -0
  553. /package/dist/assets/{Plot-X2G47XHf.js → Plot-CB_5AR7d.js} +0 -0
  554. /package/dist/assets/{apl-DVqFAlEd.js → apl-Cp4QYSh2.js} +0 -0
  555. /package/dist/assets/{array-Ddg9CgJT.js → array-BuhHwWF4.js} +0 -0
  556. /package/dist/assets/{asciiarmor-B45BhOLj.js → asciiarmor-BUxo-e6o.js} +0 -0
  557. /package/dist/assets/{asn1-C4T2ctU6.js → asn1-Cp_b5sxr.js} +0 -0
  558. /package/dist/assets/{asterisk-9U_4Kgke.js → asterisk-BKEE609E.js} +0 -0
  559. /package/dist/assets/{azure-nN8APleF.js → azure-t5-hyIQ1.js} +0 -0
  560. /package/dist/assets/{brainfuck-kVh8Eud4.js → brainfuck-DmRCaE-Q.js} +0 -0
  561. /package/dist/assets/{card-VUBaYDpT.js → card-P_NJTnTd.js} +0 -0
  562. /package/dist/assets/{chunk-4F5CHEZ2-ClSh5rxG.js → chunk-4F5CHEZ2-D6n-cT3v.js} +0 -0
  563. /package/dist/assets/{chunk-B2363JML-cit0ouFv.js → chunk-B2363JML-kkXnm2Yp.js} +0 -0
  564. /package/dist/assets/{chunk-DR5Q36YT-Bsu9Glc0.js → chunk-DR5Q36YT-DZQANAzH.js} +0 -0
  565. /package/dist/assets/{chunk-FRFDVMJY--Re1QfFE.js → chunk-FRFDVMJY-MdHMrSks.js} +0 -0
  566. /package/dist/assets/{chunk-PL6DKKU2-CAwRAr-p.js → chunk-PL6DKKU2-BPi2wKR3.js} +0 -0
  567. /package/dist/assets/{chunk-SJTYNZTY-G1spWesO.js → chunk-SJTYNZTY-BcV9dsih.js} +0 -0
  568. /package/dist/assets/{chunk-TQ3KTPDO-DBwra5xv.js → chunk-TQ3KTPDO-XDjkQ8Xj.js} +0 -0
  569. /package/dist/assets/{chunk-UMXZTB3W-A5RvYDPE.js → chunk-UMXZTB3W-C-xu4f6g.js} +0 -0
  570. /package/dist/assets/{clear-button-DQtvx6eq.js → clear-button-clPKQb-5.js} +0 -0
  571. /package/dist/assets/{click-outside-container-CrWZsAF5.js → click-outside-container-BU5ChL3W.js} +0 -0
  572. /package/dist/assets/{clike-O0gwXilc.js → clike--wVFVJzz.js} +0 -0
  573. /package/dist/assets/{clojure-CsbMWxp9.js → clojure-xvpMtcD1.js} +0 -0
  574. /package/dist/assets/{cmake-FpJvOdyj.js → cmake-ChD_WVwL.js} +0 -0
  575. /package/dist/assets/{cobol-Duxbpsru.js → cobol-B5K8KXv5.js} +0 -0
  576. /package/dist/assets/{coffeescript-D-Unz9IP.js → coffeescript-EMaA6sFP.js} +0 -0
  577. /package/dist/assets/{colors-C_0lIznd.js → colors-CQfhPUa2.js} +0 -0
  578. /package/dist/assets/{common-keywords-PqH2GDfH.js → common-keywords-DdCmdKox.js} +0 -0
  579. /package/dist/assets/{commonlisp-_nR12oc7.js → commonlisp-BTUt7Wms.js} +0 -0
  580. /package/dist/assets/{crystal-dj3W4b1A.js → crystal-CaYGQjnj.js} +0 -0
  581. /package/dist/assets/{css-0BG6A_BC.js → css-Ci5CSFmt.js} +0 -0
  582. /package/dist/assets/{cypher-CKPokaoH.js → cypher-Bt0cHBYq.js} +0 -0
  583. /package/dist/assets/{cytoscape.esm-DzUNSF80.js → cytoscape.esm-CbUmcCyd.js} +0 -0
  584. /package/dist/assets/{d-BrbqzVa2.js → d-Y6y0yT7l.js} +0 -0
  585. /package/dist/assets/{diff-BmdR9FsO.js → diff-DWzGHZfz.js} +0 -0
  586. /package/dist/assets/{dist-CpbbK4-I.js → dist-8SH6SWEG.js} +0 -0
  587. /package/dist/assets/{dist-DzAAhYcW.js → dist-9o0Xjd5v.js} +0 -0
  588. /package/dist/assets/{dist-DNGKAtWk.js → dist-BKgHjzML.js} +0 -0
  589. /package/dist/assets/{dist-98K4fusX.js → dist-BP4hpPAE.js} +0 -0
  590. /package/dist/assets/{dist-D35OyUMQ.js → dist-C-3FVUQA.js} +0 -0
  591. /package/dist/assets/{dist-OgwOt8T2.js → dist-C6_DArtj.js} +0 -0
  592. /package/dist/assets/{dist-O5-NiN3f.js → dist-CLyRge8R.js} +0 -0
  593. /package/dist/assets/{dist-D5ToCtv8.js → dist-CZvbHnyT.js} +0 -0
  594. /package/dist/assets/{dist-DrtRBAn8.js → dist-CrKffqgx.js} +0 -0
  595. /package/dist/assets/{dist-B8g3pNYJ.js → dist-Cros4IAo.js} +0 -0
  596. /package/dist/assets/{dist-3N7-WLqi.js → dist-D47O3FBX.js} +0 -0
  597. /package/dist/assets/{dist-BaKJ0-Tb.js → dist-DJuRuTXr.js} +0 -0
  598. /package/dist/assets/{dist-CM-lWxt3.js → dist-DQl27SFq.js} +0 -0
  599. /package/dist/assets/{dist-DokId-qM.js → dist-DeJBvhAc.js} +0 -0
  600. /package/dist/assets/{dist-C5kf6g-d.js → dist-fLBYOt9R.js} +0 -0
  601. /package/dist/assets/{dist-56ul6-mm.js → dist-kLs0VbW_.js} +0 -0
  602. /package/dist/assets/{dist-ByK00N0T.js → dist-l4RTzHX-.js} +0 -0
  603. /package/dist/assets/{dist-D9sE1udr.js → dist-ut5UbaRH.js} +0 -0
  604. /package/dist/assets/{dtd-DbCXDVgi.js → dtd-CkphQXbR.js} +0 -0
  605. /package/dist/assets/{duckdb-keywords-mPlR0SxW.js → duckdb-keywords-D9ZiGTTc.js} +0 -0
  606. /package/dist/assets/{dylan-CLLzL2Js.js → dylan-CPyS5Usd.js} +0 -0
  607. /package/dist/assets/{ebnf-Cnws41cu.js → ebnf-C4SDYpAu.js} +0 -0
  608. /package/dist/assets/{ecl-BC7x2nzk.js → ecl-Dy8k_w5N.js} +0 -0
  609. /package/dist/assets/{eiffel-CDU836rz.js → eiffel-DZMtnEo6.js} +0 -0
  610. /package/dist/assets/{elm-D-_bXARs.js → elm-CkuOc7z-.js} +0 -0
  611. /package/dist/assets/{empty-state-CqJvEFRk.js → empty-state-JOk_hLQe.js} +0 -0
  612. /package/dist/assets/{erlang-CwDZk2zM.js → erlang-CSyJ5dU6.js} +0 -0
  613. /package/dist/assets/{esm-D6WfbcL3.js → esm-7r3G8FZG.js} +0 -0
  614. /package/dist/assets/{fcl-CwkPc-_9.js → fcl-Px-Zskiw.js} +0 -0
  615. /package/dist/assets/{formatting-CDf6w1Kt.js → formatting-COz4XEaB.js} +0 -0
  616. /package/dist/assets/{forth-D6FsO_8x.js → forth-HHM4VU-4.js} +0 -0
  617. /package/dist/assets/{fortran-D4BMbIkG.js → fortran-D_hdoGUs.js} +0 -0
  618. /package/dist/assets/{gas-JFjzcgdY.js → gas-DwXUGevO.js} +0 -0
  619. /package/dist/assets/{gherkin-Cyu-qGaF.js → gherkin-6UjduaeQ.js} +0 -0
  620. /package/dist/assets/{github-_JH-0hIO.js → github-A_zUd4Uj.js} +0 -0
  621. /package/dist/assets/{groovy-CZaE9eN-.js → groovy-BMSTiLIi.js} +0 -0
  622. /package/dist/assets/{haskell-Dc6o0IGr.js → haskell-CwQPWeas.js} +0 -0
  623. /package/dist/assets/{haxe-Bsf0tzqs.js → haxe-BwgB7edi.js} +0 -0
  624. /package/dist/assets/{http-BQNSD-HR.js → http-CqevOCDe.js} +0 -0
  625. /package/dist/assets/{idl-1W91kQ8_.js → idl-DaVQAS85.js} +0 -0
  626. /package/dist/assets/{init-nx27Zb9l.js → init-D5qG588s.js} +0 -0
  627. /package/dist/assets/{javascript-BZ81-2rO.js → javascript-DgYFgf02.js} +0 -0
  628. /package/dist/assets/{julia-BZOsq0r_.js → julia-ZzackTsi.js} +0 -0
  629. /package/dist/assets/{katex-CvZ3kCGk.js → katex-Di-siZEY.js} +0 -0
  630. /package/dist/assets/{links-CZr5bjvo.js → links-ClNQSIal.js} +0 -0
  631. /package/dist/assets/{livescript-CNZfmikk.js → livescript-fyjJd0Zu.js} +0 -0
  632. /package/dist/assets/{loro_wasm_bg-RNUly1SE.js → loro_wasm_bg-BPjF1TWb.js} +0 -0
  633. /package/dist/assets/{lua-DXGRliwd.js → lua-Cx9isc8d.js} +0 -0
  634. /package/dist/assets/{marimo-icons-C_nFooxr.js → marimo-icons-yD_pAOm9.js} +0 -0
  635. /package/dist/assets/{math-CLO4uoaP.js → math-7EMdGNhR.js} +0 -0
  636. /package/dist/assets/{mathematica-BoUj8M7D.js → mathematica-BJvaPi1-.js} +0 -0
  637. /package/dist/assets/{mbox-DLVP8LAe.js → mbox-43z3jriT.js} +0 -0
  638. /package/dist/assets/{mirc-kI4d5fMu.js → mirc-B1ZSd8Bn.js} +0 -0
  639. /package/dist/assets/{mllike-CD9vBc_2.js → mllike-DZwCuWJi.js} +0 -0
  640. /package/dist/assets/{modelica-DgfsLJuF.js → modelica-DJJ2ie2z.js} +0 -0
  641. /package/dist/assets/{mscgen-B1HDwshJ.js → mscgen-CKYpxNp_.js} +0 -0
  642. /package/dist/assets/{multi-icon-nrKPWjDU.js → multi-icon-DVD1luis.js} +0 -0
  643. /package/dist/assets/{mumps-D_-b9TZD.js → mumps-DYGlTYd1.js} +0 -0
  644. /package/dist/assets/{nginx-Cm282mo8.js → nginx-D6Zlgok6.js} +0 -0
  645. /package/dist/assets/{ntriples-COX9JFZ8.js → ntriples-DizNPLuO.js} +0 -0
  646. /package/dist/assets/{octave-BejycR79.js → octave-DdwI7gwd.js} +0 -0
  647. /package/dist/assets/{oz-CFFivrGn.js → oz-DMPAJRti.js} +0 -0
  648. /package/dist/assets/{panel-context-CH75ubGG.js → panel-context-CckkyW-1.js} +0 -0
  649. /package/dist/assets/{pascal-B_p9jkCs.js → pascal-Do0zihr_.js} +0 -0
  650. /package/dist/assets/{path-Bz_hIzg5.js → path-WJo29M9I.js} +0 -0
  651. /package/dist/assets/{pathUtils-Bfcp5m-a.js → pathUtils-icFgkNy9.js} +0 -0
  652. /package/dist/assets/{perl-C-SFBTly.js → perl-t4XY-5wj.js} +0 -0
  653. /package/dist/assets/{pig-BhxDMp2k.js → pig-CgweiC6M.js} +0 -0
  654. /package/dist/assets/{powershell-c59M-9N2.js → powershell-OQGwpWeH.js} +0 -0
  655. /package/dist/assets/{properties-D1JNwCKy.js → properties-BU4KenKz.js} +0 -0
  656. /package/dist/assets/{protobuf-DQS7ex8R.js → protobuf--IbBPde2.js} +0 -0
  657. /package/dist/assets/{puppet-DaQvhvew.js → puppet-DkR_zpq4.js} +0 -0
  658. /package/dist/assets/{python-XHl3eRTS.js → python-PdpM9cxt.js} +0 -0
  659. /package/dist/assets/{q-DppnoRE3.js → q-BmGsZsKc.js} +0 -0
  660. /package/dist/assets/{r-D8-F_FWj.js → r-D1cPebaP.js} +0 -0
  661. /package/dist/assets/{request-registry-DHocQ_4I.js → request-registry-Dpk9hQrX.js} +0 -0
  662. /package/dist/assets/{requests-DYeT4CEe.js → requests-BMphPdzB.js} +0 -0
  663. /package/dist/assets/{rpm-CegJhNNO.js → rpm-CG3vlu2-.js} +0 -0
  664. /package/dist/assets/{ruby-YMIxufV1.js → ruby-BU2XuRQM.js} +0 -0
  665. /package/dist/assets/{runs-DBTXqJHS.js → runs-s9t2f_Tg.js} +0 -0
  666. /package/dist/assets/{sas-wTtX9UIQ.js → sas-ig9j_2iC.js} +0 -0
  667. /package/dist/assets/{scheme-BGenom3k.js → scheme-9DZXzBKN.js} +0 -0
  668. /package/dist/assets/{semaphore-DtBYRzWS.js → semaphore-C-Nli4KG.js} +0 -0
  669. /package/dist/assets/{shell-Bu1sLaiP.js → shell-BtigxJqY.js} +0 -0
  670. /package/dist/assets/{sieve-ffe6rUQh.js → sieve-DJ-mn8HY.js} +0 -0
  671. /package/dist/assets/{simple-mode-DBSzUJLA.js → simple-mode-lTjyt9i9.js} +0 -0
  672. /package/dist/assets/{smalltalk-NU5EGjHp.js → smalltalk-Bn53uNk6.js} +0 -0
  673. /package/dist/assets/{solr-ptw1yIqO.js → solr-BenHzQuB.js} +0 -0
  674. /package/dist/assets/{sparql-uqVktnwO.js → sparql-mdFRPSSw.js} +0 -0
  675. /package/dist/assets/{spreadsheet-VEzeu_mb.js → spreadsheet-CIIID0RN.js} +0 -0
  676. /package/dist/assets/{sql-tYjnWETe.js → sql-BJS8pfHr.js} +0 -0
  677. /package/dist/assets/{src-BshXgZd4.js → src-C042FyXq.js} +0 -0
  678. /package/dist/assets/{state-D10U2MwA.js → state-DCtLlFJq.js} +0 -0
  679. /package/dist/assets/{stylus-B2E6Ulaz.js → stylus-CUXYXPeL.js} +0 -0
  680. /package/dist/assets/{swift-Rmnn7ATv.js → swift-BgwlI0GN.js} +0 -0
  681. /package/dist/assets/{swiper-component-Che9MNs4.js → swiper-component-DXW8snlt.js} +0 -0
  682. /package/dist/assets/{tcl-ZPWCn2nn.js → tcl-B8Khjzwl.js} +0 -0
  683. /package/dist/assets/{textile-uhA33kFk.js → textile-DmfgOrXO.js} +0 -0
  684. /package/dist/assets/{tiddlywiki-CPkGLyXH.js → tiddlywiki-mgaN9k7_.js} +0 -0
  685. /package/dist/assets/{tiki-BtjLo8OF.js → tiki-B8Sxh4ZA.js} +0 -0
  686. /package/dist/assets/{timer-VYMLXPue.js → timer-Bt8Z3SQI.js} +0 -0
  687. /package/dist/assets/{toml-BFZv2Mv7.js → toml-CPrwnn25.js} +0 -0
  688. /package/dist/assets/{treemap-Bca0xNNq.js → treemap-CshYMgJw.js} +0 -0
  689. /package/dist/assets/{troff-B5eayHop.js → troff-Cb-2hp0t.js} +0 -0
  690. /package/dist/assets/{ttcn-cfg-CfbkL3Q_.js → ttcn-cfg-O0cle81j.js} +0 -0
  691. /package/dist/assets/{ttcn-BM0Yp8NY.js → ttcn-mp3DV9SP.js} +0 -0
  692. /package/dist/assets/{turtle-DvetLxrv.js → turtle-Bo_IjRT-.js} +0 -0
  693. /package/dist/assets/{types-Da7lA5YC.js → types-Bn-E0Dh-.js} +0 -0
  694. /package/dist/assets/{use-vega-container-remeasure-CbKTb_jy.js → use-vega-container-remeasure-C52OJt1l.js} +0 -0
  695. /package/dist/assets/{useInterval-CWBTUy5W.js → useInterval-CnQfyMa9.js} +0 -0
  696. /package/dist/assets/{vb-i5Z8scch.js → vb-B84py4l9.js} +0 -0
  697. /package/dist/assets/{vbscript-BiPYgIyi.js → vbscript-DCWGTF8B.js} +0 -0
  698. /package/dist/assets/{velocity-Dw3R3YoX.js → velocity-COls9qbE.js} +0 -0
  699. /package/dist/assets/{verilog-B8FhJcX6.js → verilog-Dn4JRpb3.js} +0 -0
  700. /package/dist/assets/{vhdl-BqPEoXdJ.js → vhdl-DxQ-aNCu.js} +0 -0
  701. /package/dist/assets/{web-vitals-CwE0GGzl.js → web-vitals-DBq6CjRf.js} +0 -0
  702. /package/dist/assets/{webidl-mMO-qW5Q.js → webidl-IlD_Nbdp.js} +0 -0
  703. /package/dist/assets/{ws-BmTnbVEi.js → ws-Dj1iZVFK.js} +0 -0
  704. /package/dist/assets/{xquery-DvqNwq7L.js → xquery-DwkwsYYE.js} +0 -0
  705. /package/dist/assets/{yacas-Dku9Z6Kf.js → yacas-CR27GINL.js} +0 -0
  706. /package/dist/assets/{z80-DvazU5Tr.js → z80-DDujbhXi.js} +0 -0
@@ -22,6 +22,7 @@ vi.mock("../api", async () => {
22
22
  return {
23
23
  ...actual,
24
24
  API: {
25
+ handleExportResponse: vi.fn((response) => response.data),
25
26
  handleResponse: vi.fn((response) => response.data),
26
27
  handleResponseReturnNull: vi.fn(() => null),
27
28
  },
@@ -32,6 +33,7 @@ vi.mock("../api", async () => {
32
33
  vi.mock("../connection", () => ({
33
34
  isConnectedAtom: { read: vi.fn(() => true) },
34
35
  waitForConnectionOpen: vi.fn().mockResolvedValue(undefined),
36
+ waitForConnectionOpenIfNotebook: vi.fn().mockResolvedValue(undefined),
35
37
  }));
36
38
 
37
39
  describe("createNetworkRequests", () => {
@@ -114,6 +116,19 @@ describe("createNetworkRequests", () => {
114
116
  );
115
117
  });
116
118
 
119
+ it("exportAsScript should request a text export", async () => {
120
+ const requests = createNetworkRequests();
121
+ await requests.exportAsScript({ download: false });
122
+
123
+ expect(mockClient.POST).toHaveBeenCalledWith(
124
+ "/api/export/script",
125
+ expect.objectContaining({
126
+ body: { download: false },
127
+ parseAs: "text",
128
+ }),
129
+ );
130
+ });
131
+
117
132
  it("getEnvironmentInfo should GET /api/environment", async () => {
118
133
  const requests = createNetworkRequests();
119
134
  await requests.getEnvironmentInfo();
@@ -121,6 +136,39 @@ describe("createNetworkRequests", () => {
121
136
  expect(mockClient.GET).toHaveBeenCalledWith("/api/environment");
122
137
  });
123
138
 
139
+ it("getExportAvailability should GET /api/export/availability", async () => {
140
+ const requests = createNetworkRequests();
141
+ await requests.getExportAvailability();
142
+
143
+ expect(mockClient.GET).toHaveBeenCalledWith("/api/export/availability");
144
+ });
145
+
146
+ it("discoverDataSources should POST to the discovery endpoint", async () => {
147
+ const requests = createNetworkRequests();
148
+ const request = { requestId: "discovery-request" } as any;
149
+ await requests.discoverDataSources(request);
150
+
151
+ expect(mockClient.POST).toHaveBeenCalledWith(
152
+ "/api/datasources/discover",
153
+ expect.objectContaining({
154
+ body: request,
155
+ params: expect.anything(),
156
+ }),
157
+ );
158
+ });
159
+
160
+ it("getPackageList should not require a kernel connection", async () => {
161
+ const { waitForConnectionOpen, waitForConnectionOpenIfNotebook } =
162
+ await import("../connection");
163
+
164
+ const requests = createNetworkRequests();
165
+ await requests.getPackageList();
166
+
167
+ expect(mockClient.GET).toHaveBeenCalledWith("/api/packages/list");
168
+ expect(waitForConnectionOpenIfNotebook).toHaveBeenCalled();
169
+ expect(waitForConnectionOpen).not.toHaveBeenCalled();
170
+ });
171
+
124
172
  it("exportAsIPYNB should call the new endpoint as text", async () => {
125
173
  const requests = createNetworkRequests();
126
174
  await requests.exportAsIPYNB({
@@ -6,6 +6,7 @@ import { Logger } from "../../utils/Logger";
6
6
  import { Strings } from "../../utils/strings";
7
7
  import { getRuntimeManager } from "../runtime/config";
8
8
  import type { RuntimeManager } from "../runtime/runtime";
9
+ import type { ExportedFile } from "./types";
9
10
 
10
11
  function getBaseUriWithoutQueryParams(): string {
11
12
  // Remove query params and hash
@@ -15,6 +16,15 @@ function getBaseUriWithoutQueryParams(): string {
15
16
  return url.toString();
16
17
  }
17
18
 
19
+ function getExportFilename(response: Response): string {
20
+ const contentDisposition = response.headers.get("Content-Disposition");
21
+ const match = contentDisposition?.match(/filename\*=UTF-8''([^;]+)/i);
22
+ if (!match) {
23
+ throw new Error("Export response is missing a filename");
24
+ }
25
+ return decodeURIComponent(match[1]);
26
+ }
27
+
18
28
  /**
19
29
  * Wrapper around fetch that adds XSRF token and session ID to the request and
20
30
  * strong types.
@@ -119,6 +129,23 @@ export const API = {
119
129
  }
120
130
  return Promise.resolve(response.data as T);
121
131
  },
132
+ handleExportResponse: async <T extends BlobPart>(response: {
133
+ data?: T | undefined;
134
+ error?: Record<string, unknown>;
135
+ response: Response;
136
+ }): Promise<ExportedFile<T>> => {
137
+ const contents = await API.handleResponse<T>(response);
138
+ const mediaType = response.response.headers.get("Content-Type");
139
+ if (!mediaType) {
140
+ throw new Error("Export response is missing a media type");
141
+ }
142
+
143
+ return {
144
+ contents,
145
+ filename: getExportFilename(response.response),
146
+ mediaType,
147
+ };
148
+ },
122
149
  handleResponseReturnNull: (response: {
123
150
  error?: Record<string, unknown>;
124
151
  response: Response;
@@ -1,5 +1,6 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
  import { atom } from "jotai";
3
+ import { isNotebookPage } from "../mode";
3
4
  import { waitFor } from "../state/jotai";
4
5
  import { type ConnectionStatus, WebSocketState } from "../websocket/types";
5
6
 
@@ -17,6 +18,20 @@ export function waitForConnectionOpen() {
17
18
  });
18
19
  }
19
20
 
21
+ /**
22
+ * Waits for the kernel connection, but only on pages that open one. Non-notebook
23
+ * pages (home, gallery) never connect, so waiting there would hang forever.
24
+ *
25
+ * Use for requests that the marimo server can serve without a session, but that
26
+ * should still wait for the kernel when a notebook is open.
27
+ */
28
+ export function waitForConnectionOpenIfNotebook() {
29
+ if (!isNotebookPage()) {
30
+ return Promise.resolve();
31
+ }
32
+ return waitForConnectionOpen();
33
+ }
34
+
20
35
  export const isConnectingAtom = atom((get) => {
21
36
  const connection = get(connectionAtom);
22
37
  return connection.state === WebSocketState.CONNECTING;
@@ -51,11 +51,13 @@ const ACTIONS: Record<keyof AllRequests, Action> = {
51
51
  sendRunScratchpad: "startConnection",
52
52
  saveAppConfig: "startConnection",
53
53
  saveCellConfig: "startConnection",
54
+ discoverDataSources: "startConnection",
54
55
 
55
56
  // Export operations start a connection
56
57
  exportAsHTML: "startConnection",
57
58
  exportAsIPYNB: "startConnection",
58
59
  exportAsMarkdown: "startConnection",
60
+ exportAsScript: "startConnection",
59
61
  exportAsPDF: "startConnection",
60
62
  readCode: "startConnection",
61
63
  sendCopy: "throwError",
@@ -103,6 +105,7 @@ const ACTIONS: Record<keyof AllRequests, Action> = {
103
105
 
104
106
  // Served by the marimo server without a kernel session
105
107
  getEnvironmentInfo: "serverOnly",
108
+ getExportAvailability: "serverOnly",
106
109
 
107
110
  // Home operations throw errors
108
111
  getRecentFiles: "startConnection",
@@ -3,7 +3,10 @@
3
3
  import { once } from "@/utils/once";
4
4
  import { getRuntimeManager } from "../runtime/config";
5
5
  import { API, createClientWithRuntimeManager } from "./api";
6
- import { waitForConnectionOpen } from "./connection";
6
+ import {
7
+ waitForConnectionOpen,
8
+ waitForConnectionOpenIfNotebook,
9
+ } from "./connection";
7
10
  import type { EditRequests, RunRequests } from "./types";
8
11
 
9
12
  /**
@@ -19,7 +22,7 @@ function multipartInit(formData: FormData) {
19
22
  };
20
23
  }
21
24
 
22
- const { handleResponse, handleResponseReturnNull } = API;
25
+ const { handleExportResponse, handleResponse, handleResponseReturnNull } = API;
23
26
 
24
27
  export function createNetworkRequests(): EditRequests & RunRequests {
25
28
  const getClient = once(() => {
@@ -264,6 +267,14 @@ export function createNetworkRequests(): EditRequests & RunRequests {
264
267
  })
265
268
  .then(handleResponseReturnNull);
266
269
  },
270
+ discoverDataSources: (request) => {
271
+ return getClient()
272
+ .POST("/api/datasources/discover", {
273
+ body: request,
274
+ params: getParams(),
275
+ })
276
+ .then(handleResponseReturnNull);
277
+ },
267
278
  validateSQL: (request) => {
268
279
  return getClient()
269
280
  .POST("/api/sql/validate", {
@@ -399,6 +410,9 @@ export function createNetworkRequests(): EditRequests & RunRequests {
399
410
  })
400
411
  .then(handleResponse);
401
412
  },
413
+ getExportAvailability: () => {
414
+ return getClient().GET("/api/export/availability").then(handleResponse);
415
+ },
402
416
  exportAsHTML: async (request) => {
403
417
  if (
404
418
  process.env.NODE_ENV === "development" ||
@@ -412,7 +426,7 @@ export function createNetworkRequests(): EditRequests & RunRequests {
412
426
  parseAs: "text",
413
427
  params: getParams(),
414
428
  })
415
- .then(handleResponse);
429
+ .then(handleExportResponse);
416
430
  },
417
431
  exportAsMarkdown: async (request) => {
418
432
  return getClient()
@@ -421,7 +435,16 @@ export function createNetworkRequests(): EditRequests & RunRequests {
421
435
  parseAs: "text",
422
436
  params: getParams(),
423
437
  })
424
- .then(handleResponse);
438
+ .then(handleExportResponse);
439
+ },
440
+ exportAsScript: async (request) => {
441
+ return getClient()
442
+ .POST("/api/export/script", {
443
+ body: request,
444
+ parseAs: "text",
445
+ params: getParams(),
446
+ })
447
+ .then(handleExportResponse);
425
448
  },
426
449
  exportAsIPYNB: async (request) => {
427
450
  return getClient()
@@ -430,7 +453,7 @@ export function createNetworkRequests(): EditRequests & RunRequests {
430
453
  parseAs: "text",
431
454
  params: getParams(),
432
455
  })
433
- .then(handleResponse);
456
+ .then(handleExportResponse);
434
457
  },
435
458
  exportAsPDF: async (request) => {
436
459
  return getClient()
@@ -439,7 +462,7 @@ export function createNetworkRequests(): EditRequests & RunRequests {
439
462
  parseAs: "blob",
440
463
  params: getParams(),
441
464
  })
442
- .then(handleResponse);
465
+ .then(handleExportResponse);
443
466
  },
444
467
  autoExportAsHTML: async (request) => {
445
468
  return getClient()
@@ -489,12 +512,12 @@ export function createNetworkRequests(): EditRequests & RunRequests {
489
512
  },
490
513
  getPackageList: async () => {
491
514
  // If the sidebar is already open, it may try to load before the session has been initialized
492
- await waitForConnectionOpen();
515
+ await waitForConnectionOpenIfNotebook();
493
516
  return getClient().GET("/api/packages/list").then(handleResponse);
494
517
  },
495
518
  getDependencyTree: async () => {
496
519
  // If the sidebar is already open, it may try to load before the session has been initialized
497
- await waitForConnectionOpen();
520
+ await waitForConnectionOpenIfNotebook();
498
521
  return getClient().GET("/api/packages/tree").then(handleResponse);
499
522
  },
500
523
  listSecretKeys: async (request) => {
@@ -62,6 +62,7 @@ export function createStaticRequests(): EditRequests & RunRequests {
62
62
  previewSQLTableList: throwNotInEditMode,
63
63
  previewSQLSchemaList: throwNotInEditMode,
64
64
  previewDataSourceConnection: throwNotInEditMode,
65
+ discoverDataSources: throwNotInEditMode,
65
66
  validateSQL: throwNotInEditMode,
66
67
  openFile: throwNotInEditMode,
67
68
  getUsageStats: throwNotInEditMode,
@@ -82,9 +83,11 @@ export function createStaticRequests(): EditRequests & RunRequests {
82
83
  getWorkspaceFiles: throwNotInEditMode,
83
84
  getRunningNotebooks: throwNotInEditMode,
84
85
  shutdownSession: throwNotInEditMode,
86
+ getExportAvailability: throwNotInEditMode,
85
87
  exportAsHTML: throwNotInEditMode,
86
88
  exportAsIPYNB: throwNotInEditMode,
87
89
  exportAsMarkdown: throwNotInEditMode,
90
+ exportAsScript: throwNotInEditMode,
88
91
  exportAsPDF: throwNotInEditMode,
89
92
  autoExportAsHTML: throwNotInEditMode,
90
93
  autoExportAsMarkdown: throwNotInEditMode,
@@ -43,6 +43,7 @@ export function createErrorToastingRequests(
43
43
  previewSQLTableList: "Failed to fetch SQL table list",
44
44
  previewSQLSchemaList: "Failed to fetch SQL schema list",
45
45
  previewDataSourceConnection: "Failed to preview data source connection",
46
+ discoverDataSources: "Failed to discover data sources",
46
47
  validateSQL: "Failed to validate SQL",
47
48
  openFile: "Failed to open file",
48
49
  getUsageStats: "", // No toast
@@ -63,9 +64,11 @@ export function createErrorToastingRequests(
63
64
  getWorkspaceFiles: "Failed to get workspace files",
64
65
  getRunningNotebooks: "Failed to get running notebooks",
65
66
  shutdownSession: "Failed to shutdown session",
67
+ getExportAvailability: "", // No toast
66
68
  exportAsHTML: "Failed to export HTML",
67
69
  exportAsIPYNB: "Failed to export ipynb",
68
70
  exportAsMarkdown: "Failed to export Markdown",
71
+ exportAsScript: "Failed to export Script",
69
72
  exportAsPDF: "Failed to export PDF",
70
73
  autoExportAsHTML: "", // No toast
71
74
  autoExportAsMarkdown: "", // No toast
@@ -17,12 +17,23 @@ export type CellConfig = schemas["CellConfig"];
17
17
  export type RuntimeState = schemas["CellNotification"]["status"];
18
18
  export type CodeCompletionRequest = schemas["CodeCompletionRequest"];
19
19
  export type DeleteCellRequest = schemas["DeleteCellRequest"];
20
+ export type AutoExportAsIPYNBRequest = schemas["AutoExportAsIPYNBRequest"];
21
+ export type AutoExportAsMarkdownRequest =
22
+ schemas["AutoExportAsMarkdownRequest"];
20
23
  export type ExportAsHTMLRequest = schemas["ExportAsHTMLRequest"];
21
24
  export type ExportAsMarkdownRequest = schemas["ExportAsMarkdownRequest"];
22
25
  export type ExportAsIPYNBRequest = schemas["ExportAsIPYNBRequest"];
23
26
  export type ExportAsScriptRequest = schemas["ExportAsScriptRequest"];
24
27
  export type ExportAsPDFRequest = schemas["ExportAsPDFRequest"];
28
+ export type ExportAvailabilityResponse = schemas["ExportAvailabilityResponse"];
25
29
  export type UpdateCellOutputsRequest = schemas["UpdateCellOutputsRequest"];
30
+
31
+ export interface ExportedFile<T extends BlobPart = BlobPart> {
32
+ contents: T;
33
+ filename: string;
34
+ mediaType: string;
35
+ }
36
+
26
37
  export type FileCopyRequest = schemas["FileCopyRequest"];
27
38
  export type FileCopyResponse = schemas["FileCopyResponse"];
28
39
  export type FileCreateRequest = schemas["FileCreateRequest"];
@@ -64,6 +75,7 @@ export type ListSQLTablesRequest = schemas["ListSQLTablesRequest"];
64
75
  export type ListSQLSchemasRequest = schemas["ListSQLSchemasRequest"];
65
76
  export type ListDataSourceConnectionRequest =
66
77
  schemas["ListDataSourceConnectionRequest"];
78
+ export type DiscoverDataSourcesRequest = schemas["DiscoverDataSourcesRequest"];
67
79
  export type ValidateSQLRequest = schemas["ValidateSQLRequest"];
68
80
  export type DebugCellRequest = schemas["DebugCellRequest"];
69
81
  export type SetBreakpointsRequest = schemas["SetBreakpointsRequest"];
@@ -170,6 +182,7 @@ export interface EditRequests {
170
182
  previewDataSourceConnection: (
171
183
  request: ListDataSourceConnectionRequest,
172
184
  ) => Promise<null>;
185
+ discoverDataSources: (request: DiscoverDataSourcesRequest) => Promise<null>;
173
186
  validateSQL: (request: ValidateSQLRequest) => Promise<null>;
174
187
  openFile: (request: { path: string; lineNumber?: number }) => Promise<null>;
175
188
  getUsageStats: () => Promise<UsageResponse>;
@@ -205,13 +218,21 @@ export interface EditRequests {
205
218
  request: ShutdownSessionRequest,
206
219
  ) => Promise<RunningNotebooksResponse>;
207
220
  // Export requests
208
- exportAsHTML: (request: ExportAsHTMLRequest) => Promise<string>;
209
- exportAsIPYNB: (request: ExportAsIPYNBRequest) => Promise<string>;
210
- exportAsMarkdown: (request: ExportAsMarkdownRequest) => Promise<string>;
211
- exportAsPDF: (request: ExportAsPDFRequest) => Promise<Blob>;
221
+ getExportAvailability: () => Promise<ExportAvailabilityResponse>;
222
+ exportAsHTML: (request: ExportAsHTMLRequest) => Promise<ExportedFile<string>>;
223
+ exportAsIPYNB: (
224
+ request: ExportAsIPYNBRequest,
225
+ ) => Promise<ExportedFile<string>>;
226
+ exportAsMarkdown: (
227
+ request: ExportAsMarkdownRequest,
228
+ ) => Promise<ExportedFile<string>>;
229
+ exportAsScript: (
230
+ request: ExportAsScriptRequest,
231
+ ) => Promise<ExportedFile<string>>;
232
+ exportAsPDF: (request: ExportAsPDFRequest) => Promise<ExportedFile<Blob>>;
212
233
  autoExportAsHTML: (request: ExportAsHTMLRequest) => Promise<null>;
213
- autoExportAsMarkdown: (request: ExportAsMarkdownRequest) => Promise<null>;
214
- autoExportAsIPYNB: (request: ExportAsIPYNBRequest) => Promise<null>;
234
+ autoExportAsMarkdown: (request: AutoExportAsMarkdownRequest) => Promise<null>;
235
+ autoExportAsIPYNB: (request: AutoExportAsIPYNBRequest) => Promise<null>;
215
236
  updateCellOutputs: (request: UpdateCellOutputsRequest) => Promise<null>;
216
237
  // Package requests
217
238
  getPackageList: () => Promise<ListPackagesResponse>;
@@ -1,5 +1,6 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
  import { atomWithStorage } from "jotai/utils";
3
+ import { SCRATCH_CELL_ID, type CellId } from "@/core/cells/ids";
3
4
  import { once } from "@/utils/once";
4
5
  import { jotaiJsonStorage } from "@/utils/storage/jotai";
5
6
  import { getFeatureFlag } from "../config/feature-flag";
@@ -23,3 +24,11 @@ export const usernameAtom = atomWithStorage<string>(
23
24
  export const isRtcEnabled = once(() => {
24
25
  return getFeatureFlag("rtc_v2");
25
26
  });
27
+
28
+ /**
29
+ * Whether this cell type can participate in real-time collaboration.
30
+ * Scratchpad cells are local-only.
31
+ */
32
+ export function canUseRtc(cellId: CellId): boolean {
33
+ return cellId !== SCRATCH_CELL_ID;
34
+ }
@@ -1,31 +1,22 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
 
3
- import { downloadBlob } from "@/utils/download";
4
- import { Filenames } from "@/utils/filenames";
5
- import { Paths } from "@/utils/paths";
3
+ import { downloadExportedFile } from "@/utils/download";
6
4
  import { getRequestClient } from "../network/requests";
7
5
  import { VirtualFileTracker } from "./virtual-file-tracker";
8
6
 
9
7
  /**
10
8
  * Downloads the current notebook as an HTML file.
11
9
  */
12
- export async function downloadAsHTML(opts: {
13
- filename: string;
14
- includeCode: boolean;
15
- }) {
10
+ export async function downloadAsHTML(opts: { includeCode: boolean }) {
16
11
  const client = getRequestClient();
17
- const { filename, includeCode } = opts;
18
- const html = await client.exportAsHTML({
12
+ const { includeCode } = opts;
13
+ const exportedFile = await client.exportAsHTML({
19
14
  download: true,
20
15
  includeCode: includeCode,
21
16
  files: VirtualFileTracker.INSTANCE.filenames(),
22
17
  });
23
- const filenameWithoutPath = Paths.basename(filename) ?? "notebook.py";
24
18
 
25
- downloadBlob(
26
- new Blob([html], { type: "text/html" }),
27
- Filenames.toHTML(filenameWithoutPath),
28
- );
19
+ downloadExportedFile(exportedFile);
29
20
  }
30
21
 
31
22
  function updateAssetUrl(existingUrl: string, assetBaseUrl: string) {
@@ -1,9 +1,20 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
 
3
3
  import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
4
-
5
- const { mockNotebookReadFile, rpcListeners } = vi.hoisted(() => ({
4
+ import { cellId } from "@/__tests__/branded";
5
+ import { Deferred } from "@/utils/Deferred";
6
+
7
+ const {
8
+ mockBridge,
9
+ mockNotebookReadFile,
10
+ mockReadNotebook,
11
+ mockSaveNotebook,
12
+ rpcListeners,
13
+ } = vi.hoisted(() => ({
14
+ mockBridge: vi.fn(),
6
15
  mockNotebookReadFile: vi.fn(),
16
+ mockReadNotebook: vi.fn(),
17
+ mockSaveNotebook: vi.fn(),
7
18
  rpcListeners: {} as Record<string, () => void>,
8
19
  }));
9
20
 
@@ -28,11 +39,11 @@ vi.mock("@/core/wasm/rpc", () => ({
28
39
  getWorkerRPC: () => ({
29
40
  proxy: {
30
41
  request: {
31
- bridge: vi.fn(),
42
+ bridge: mockBridge,
32
43
  startSession: vi.fn(),
33
44
  readFile: vi.fn(),
34
- readNotebook: vi.fn(),
35
- saveNotebook: vi.fn(),
45
+ readNotebook: mockReadNotebook,
46
+ saveNotebook: mockSaveNotebook,
36
47
  },
37
48
  send: { consumerReady: vi.fn() },
38
49
  },
@@ -112,6 +123,89 @@ describe("PyodideBridge.readCode", () => {
112
123
  });
113
124
  });
114
125
 
126
+ describe("PyodideBridge.exportAsScript", () => {
127
+ beforeEach(() => {
128
+ vi.clearAllMocks();
129
+ });
130
+
131
+ it("returns the script export from the Python bridge", async () => {
132
+ const exportedFile = {
133
+ contents: '# %%\nprint("hello")',
134
+ filename: "notebook.script.py",
135
+ mediaType: "text/plain; charset=utf-8",
136
+ };
137
+ mockBridge.mockResolvedValue(exportedFile);
138
+
139
+ const result = await PyodideBridge.INSTANCE.exportAsScript({
140
+ download: false,
141
+ });
142
+
143
+ expect(mockBridge).toHaveBeenCalledWith({
144
+ functionName: "export_script",
145
+ payload: { download: false },
146
+ });
147
+ expect(result).toEqual(exportedFile);
148
+ });
149
+ });
150
+
151
+ describe("PyodideBridge.sendSave", () => {
152
+ const request = {
153
+ cellIds: [cellId("cell-1")],
154
+ codes: ['value = "NEW"'],
155
+ names: ["_"],
156
+ filename: "notebook.py",
157
+ configs: [{}],
158
+ layout: null,
159
+ persist: true,
160
+ };
161
+
162
+ beforeEach(() => {
163
+ vi.clearAllMocks();
164
+ store.set(initialModeAtom, "edit");
165
+ rpcListeners.initialized();
166
+ mockSaveNotebook.mockResolvedValue(null);
167
+ mockReadNotebook.mockResolvedValue(
168
+ "import marimo\napp = marimo.App()\n# NEW",
169
+ );
170
+ });
171
+
172
+ afterEach(() => {
173
+ store.set(initialModeAtom, undefined);
174
+ });
175
+
176
+ it("waits for the session save before generating exports", async () => {
177
+ const mainSave = new Deferred<void>();
178
+ mockSaveNotebook
179
+ .mockResolvedValueOnce(null)
180
+ .mockReturnValueOnce(mainSave.promise);
181
+
182
+ await PyodideBridge.INSTANCE.sendSave(request);
183
+ expect(mockSaveNotebook).toHaveBeenCalledTimes(2);
184
+ expect(mockSaveNotebook).toHaveBeenNthCalledWith(1, request);
185
+ expect(mockSaveNotebook).toHaveBeenNthCalledWith(2, request);
186
+
187
+ const markdown = PyodideBridge.INSTANCE.exportAsMarkdown({
188
+ download: false,
189
+ });
190
+ const script = PyodideBridge.INSTANCE.exportAsScript({
191
+ download: false,
192
+ });
193
+ await Promise.resolve();
194
+ expect(mockBridge).not.toHaveBeenCalled();
195
+
196
+ mainSave.resolve();
197
+ await Promise.all([markdown, script]);
198
+ expect(mockBridge).toHaveBeenCalledWith({
199
+ functionName: "export_markdown",
200
+ payload: { download: false },
201
+ });
202
+ expect(mockBridge).toHaveBeenCalledWith({
203
+ functionName: "export_script",
204
+ payload: { download: false },
205
+ });
206
+ });
207
+ });
208
+
115
209
  describe("getWasmWorkerName", () => {
116
210
  afterEach(() => {
117
211
  delete (window as unknown as { __MARIMO_HAS_WASM_CONTROLLER__?: boolean })
@@ -19,6 +19,8 @@ import type {
19
19
  EnvironmentInfo,
20
20
  ExportAsHTMLRequest,
21
21
  ExportAsMarkdownRequest,
22
+ ExportAsScriptRequest,
23
+ ExportedFile,
22
24
  FileCopyResponse,
23
25
  FileCreateResponse,
24
26
  FileDeleteResponse,
@@ -60,6 +62,7 @@ export class PyodideBridge implements RunRequests, EditRequests {
60
62
 
61
63
  private rpc!: ReturnType<typeof getWorkerRPC<WorkerSchema>>;
62
64
  private saveRpc: SaveWorker | undefined;
65
+ private pendingSessionSave: Promise<unknown> = Promise.resolve();
63
66
  private interruptBuffer?: Uint8Array;
64
67
  private messageConsumer:
65
68
  | ((message: MessageEvent<string>) => void)
@@ -227,18 +230,24 @@ export class PyodideBridge implements RunRequests, EditRequests {
227
230
  return null;
228
231
  }
229
232
 
230
- await this.saveRpc.saveNotebook(request);
233
+ const durableSave = this.saveRpc.saveNotebook(request);
234
+ // Generated exports read the session-owned app in the main worker.
235
+ this.pendingSessionSave = this.pendingSessionSave
236
+ .catch(() => undefined)
237
+ .then(async () => {
238
+ await durableSave;
239
+ await this.rpc.proxy.request.saveNotebook(request);
240
+ });
241
+ void this.pendingSessionSave.catch((error) => {
242
+ Logger.error(error);
243
+ });
244
+
245
+ await durableSave;
231
246
  const code = await this.readCode();
232
247
  if (code.contents) {
233
248
  notebookFileStore.saveFile(code.contents);
234
249
  fallbackFileStore.saveFile(code.contents);
235
250
  }
236
- // Also save to the other worker, since this is needed for
237
- // exporting to HTML
238
- // Fire-and-forget
239
- void this.rpc.proxy.request.saveNotebook(request).catch((error) => {
240
- Logger.error(error);
241
- });
242
251
  return null;
243
252
  };
244
253
 
@@ -510,6 +519,7 @@ export class PyodideBridge implements RunRequests, EditRequests {
510
519
  exportAsHTML: EditRequests["exportAsHTML"] = async (
511
520
  request: ExportAsHTMLRequest,
512
521
  ) => {
522
+ await this.pendingSessionSave;
513
523
  if (
514
524
  process.env.NODE_ENV === "development" ||
515
525
  process.env.NODE_ENV === "test"
@@ -520,17 +530,29 @@ export class PyodideBridge implements RunRequests, EditRequests {
520
530
  functionName: "export_html",
521
531
  payload: request,
522
532
  });
523
- return response as string;
533
+ return response as ExportedFile<string>;
524
534
  };
525
535
 
526
536
  exportAsMarkdown: EditRequests["exportAsMarkdown"] = async (
527
537
  request: ExportAsMarkdownRequest,
528
538
  ) => {
539
+ await this.pendingSessionSave;
529
540
  const response = await this.rpc.proxy.request.bridge({
530
541
  functionName: "export_markdown",
531
542
  payload: request,
532
543
  });
533
- return response as string;
544
+ return response as ExportedFile<string>;
545
+ };
546
+
547
+ exportAsScript: EditRequests["exportAsScript"] = async (
548
+ request: ExportAsScriptRequest,
549
+ ) => {
550
+ await this.pendingSessionSave;
551
+ const response = await this.rpc.proxy.request.bridge({
552
+ functionName: "export_script",
553
+ payload: request,
554
+ });
555
+ return response as ExportedFile<string>;
534
556
  };
535
557
 
536
558
  previewDatasetColumn: EditRequests["previewDatasetColumn"] = async (
@@ -629,6 +651,16 @@ export class PyodideBridge implements RunRequests, EditRequests {
629
651
  return null;
630
652
  };
631
653
 
654
+ discoverDataSources: EditRequests["discoverDataSources"] = async (
655
+ request,
656
+ ) => {
657
+ await this.putControlRequest({
658
+ type: "discover-data-sources",
659
+ ...request,
660
+ });
661
+ return null;
662
+ };
663
+
632
664
  getUsageStats = throwNotImplemented;
633
665
  getEnvironmentInfo: EditRequests["getEnvironmentInfo"] = async () => {
634
666
  const response = await this.rpc.proxy.request.bridge({
@@ -642,6 +674,7 @@ export class PyodideBridge implements RunRequests, EditRequests {
642
674
  getWorkspaceFiles = throwNotImplemented;
643
675
  getRunningNotebooks = throwNotImplemented;
644
676
  shutdownSession = throwNotImplemented;
677
+ getExportAvailability = throwNotImplemented;
645
678
  exportAsIPYNB = throwNotImplemented;
646
679
  exportAsPDF = throwNotImplemented;
647
680
  autoExportAsHTML = throwNotImplemented;