@marimo-team/islands 0.16.5 → 0.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (681) hide show
  1. package/dist/{fullscreen-D1yTiBlu.js → Combination-De9yoNY5.js} +855 -795
  2. package/dist/{ConnectedDataExplorerComponent-D96i9G-X.js → ConnectedDataExplorerComponent-DuvpJOKp.js} +102 -123
  3. package/dist/{ImageComparisonComponent-D4Tv9QzJ.js → ImageComparisonComponent--etUl2pp.js} +2 -2
  4. package/dist/{_baseIsEqual-oN7pRNcM.js → _baseIsEqual-BFlyFUxC.js} +20 -20
  5. package/dist/{_basePickBy-CYvzhRjy.js → _basePickBy-gCCvtjgp.js} +3 -3
  6. package/dist/{_baseProperty-DGUdIBuu.js → _baseProperty-BuqBC0Ie.js} +5 -5
  7. package/dist/{_baseUniq-B5gfSl8S.js → _baseUniq-CKN9mEDq.js} +5 -5
  8. package/dist/any-language-editor-Du2Q_6IK.js +156 -0
  9. package/dist/apl-CUm2DGqh.js +4 -0
  10. package/dist/{arc-B1iVbHTB.js → arc-C_O2hc-b.js} +2 -2
  11. package/dist/architecture-O4VJ6CD3-PFw3eFBY.js +21 -0
  12. package/dist/{architectureDiagram-W76B3OCA-DkEhipkW.js → architectureDiagram-W76B3OCA-CrK99pJi.js} +41 -40
  13. package/dist/asciiarmor-lqJ78U01.js +4 -0
  14. package/dist/asn1-CjwpSTlW.js +4 -0
  15. package/dist/assets/__vite-browser-external-DHoMWs4M.js +1 -0
  16. package/dist/assets/worker-B6tH8gPO.js +54 -0
  17. package/dist/{blockDiagram-QIGZ2CNN-DZOqLMYa.js → blockDiagram-QIGZ2CNN-BJOEyO6w.js} +101 -111
  18. package/dist/brainfuck-ClvDI1dq.js +4 -0
  19. package/dist/{button-CEcjneWG.js → button-ADXOb_gX.js} +37 -40
  20. package/dist/{c4Diagram-FPNF74CW-DVaR7c9q.js → c4Diagram-FPNF74CW-7Pz_X9wF.js} +31 -54
  21. package/dist/{channel-Uh0KpgGW.js → channel-X-wRUxX6.js} +1 -1
  22. package/dist/{check-BK9zDfQk.js → check-COlaG7Ss.js} +1 -1
  23. package/dist/{chunk-3AY6CYHV-Dk2R2-S1.js → chunk-3AY6CYHV-BQH2fFpA.js} +37 -37
  24. package/dist/{chunk-4BX2VUAB-CqO6zUIz.js → chunk-4BX2VUAB-D-QtDCKM.js} +1 -1
  25. package/dist/{chunk-4KMFLZZN-CloTfTwP.js → chunk-4KMFLZZN-BirZvvJS.js} +220 -329
  26. package/dist/{chunk-55IACEB6-I0rmqTua.js → chunk-55IACEB6-DjtPYZKs.js} +1 -1
  27. package/dist/{chunk-6OXUPJBA-BuROSTmo.js → chunk-6OXUPJBA-CTnnqlzw.js} +7 -7
  28. package/dist/{chunk-7GE3RBXV-B1-tsIPP.js → chunk-7GE3RBXV-CT47hCrL.js} +1 -1
  29. package/dist/{chunk-ABZYJK2D-CLlso8tj.js → chunk-ABZYJK2D-B6ZsU6SR.js} +484 -1043
  30. package/dist/{chunk-BN7GFLIU-Db2-FjLn.js → chunk-BN7GFLIU-DYWEsrG4.js} +1 -1
  31. package/dist/{chunk-CVBHYZKI-BONeiloK.js → chunk-CVBHYZKI-BuzDGXz0.js} +3 -3
  32. package/dist/{chunk-CXMOBAN2-U9GJSP1d.js → chunk-CXMOBAN2-Bas2S5w1.js} +46 -54
  33. package/dist/chunk-EXTU4WIE-DXwNSukz.js +10 -0
  34. package/dist/{chunk-FMBD7UC4-DyV3BR_I.js → chunk-FMBD7UC4-CYKEpuPr.js} +1 -1
  35. package/dist/{chunk-JA3XYJ7Z-C9A1076P.js → chunk-JA3XYJ7Z-DcxfkcDC.js} +21 -25
  36. package/dist/{chunk-JEIROHC2-BGnFkSVq.js → chunk-JEIROHC2-C01ZIcIG.js} +1 -1
  37. package/dist/{chunk-K7UQS3LO-033LOsjK.js → chunk-K7UQS3LO-CmbT97MV.js} +7 -7
  38. package/dist/{chunk-KMC2YHZD-DT4Sq4Ld.js → chunk-KMC2YHZD-D64m-1E1.js} +1 -1
  39. package/dist/{chunk-QN33PNHL-gs44MZla.js → chunk-QN33PNHL-DjB0j8Dr.js} +2 -2
  40. package/dist/{chunk-QYVHNE3D-B8BO1AnT.js → chunk-QYVHNE3D-VA4W4oxG.js} +3 -4
  41. package/dist/{chunk-QZHKN3VN-CeN_GkU6.js → chunk-QZHKN3VN-KT0fl3Em.js} +1 -1
  42. package/dist/chunk-S3R3BYOJ-C5zmcMvn.js +380 -0
  43. package/dist/{chunk-T44TD3VJ-BwzD6YE0.js → chunk-T44TD3VJ-BMOgu-Hk.js} +1 -1
  44. package/dist/{chunk-TVAH2DTR-Bi6jpQJQ.js → chunk-TVAH2DTR-eKm8SKnH.js} +7 -8
  45. package/dist/{chunk-TZMSLE5B-D8klz2H_.js → chunk-TZMSLE5B-CQxFRiI2.js} +5 -6
  46. package/dist/{chunk-WFRQ32O7-CzSwSlN0.js → chunk-WFRQ32O7-Dg51o277.js} +1 -1
  47. package/dist/{chunk-WFWHJNB7-DN_cavM6.js → chunk-WFWHJNB7-DVLO98ge.js} +1 -1
  48. package/dist/{chunk-XRWGC2XP-Bb5eGNM2.js → chunk-XRWGC2XP-UNFKdWQh.js} +1 -1
  49. package/dist/{chunk-ZPAFE4SF-S5UYNb0V.js → chunk-ZPAFE4SF-DbCSwfLK.js} +22 -22
  50. package/dist/classDiagram-KNZD7YFC-HUFFxNdk.js +40 -0
  51. package/dist/classDiagram-v2-RKCZMP56-Dw7Acmuf.js +40 -0
  52. package/dist/{click-outside-container-DE4e7p1p.js → click-outside-container-2BH589Bq.js} +9 -14
  53. package/dist/{clike-Cg_DBrJ0.js → clike-Bc2PZzZQ.js} +1 -1
  54. package/dist/{clike-CxAz4p9E.js → clike-CytFO-kN.js} +1 -1
  55. package/dist/clojure-8GefCgPe.js +4 -0
  56. package/dist/{clone-Dk4FkKH0.js → clone-CCgVUJ6x.js} +1 -1
  57. package/dist/cmake-yAhT9H0F.js +4 -0
  58. package/dist/cobol-BmltueOY.js +4 -0
  59. package/dist/coffeescript-C7KEQBcH.js +4 -0
  60. package/dist/commonlisp-CNbiJRU-.js +4 -0
  61. package/dist/{constants-Cjd_3kwd.js → constants-BaCMVd12.js} +3 -3
  62. package/dist/{copy-C5RFg7ok.js → copy-GNcK40wy.js} +6 -2
  63. package/dist/{cose-bilkent-S5V4N54A-B3iOTGu5.js → cose-bilkent-S5V4N54A-BnvuJG6Y.js} +20 -20
  64. package/dist/crystal-OdjZZ8bc.js +4 -0
  65. package/dist/css-DhTxMmL_.js +5 -0
  66. package/dist/cypher-CgN8E3YI.js +4 -0
  67. package/dist/{cytoscape.esm-DTDV0Nbj.js → cytoscape.esm-BFEMljQI.js} +586 -661
  68. package/dist/d-g41sJcBC.js +4 -0
  69. package/dist/{dagre-5GWH7T2D-KM4Z11yT.js → dagre-5GWH7T2D-rn7tZYaQ.js} +41 -45
  70. package/dist/{dagre-B0u1urxE.js → dagre-Bghq6VKO.js} +58 -77
  71. package/dist/data-grid-overlay-editor-B4_Caieu.js +133 -0
  72. package/dist/{diagram-N5W7TBWH-CtO7az4G.js → diagram-N5W7TBWH-lbF94o-g.js} +46 -61
  73. package/dist/diagram-QEK2KX5R-CKBhSzsO.js +246 -0
  74. package/dist/{diagram-S2PKOQOG-CiXElLNQ.js → diagram-S2PKOQOG-161_1f53.js} +35 -34
  75. package/dist/diff-ViRYYhhg.js +4 -0
  76. package/dist/{dist-C3WYsf4K.js → dist-28HYzERB.js} +4 -10
  77. package/dist/{dist-CChOkSUg.js → dist-4dtbqf8A.js} +3 -3
  78. package/dist/{dist-CUnh_3Ii.js → dist-71jYYbWP.js} +2 -2
  79. package/dist/{dist-elblfNXO.js → dist-B8Pbw5ln.js} +2 -2
  80. package/dist/{dist-DPF5TTUg.js → dist-BAqp4Vtl.js} +126 -115
  81. package/dist/{dist-BEvIw5Nh.js → dist-BBhmkni2.js} +1 -1
  82. package/dist/{dist-C7ASiFxI.js → dist-BNRdMfJH.js} +273 -263
  83. package/dist/dist-BSyYM1Gi.js +15 -0
  84. package/dist/{dist-DzOpMdwb.js → dist-BYHiiJB-.js} +4 -4
  85. package/dist/{dist-DKFaZRVk.js → dist-B_wjJqqS.js} +2 -2
  86. package/dist/{dist-CutXTm8t.js → dist-BaPjLM6s.js} +1 -1
  87. package/dist/dist-BfJO8Bm9.js +12 -0
  88. package/dist/{dist-CGIZPq3J.js → dist-BqdQPWpQ.js} +2 -2
  89. package/dist/{dist--I6Htnlv.js → dist-C2IEc8og.js} +5 -5
  90. package/dist/{dist-CLvpViod.js → dist-C9-uHBqC.js} +2 -3
  91. package/dist/{dist-DBhzmFyH.js → dist-CJb8EiFO.js} +3 -3
  92. package/dist/dist-CLuF3AtO.js +6 -0
  93. package/dist/{dist-Dzk1C8l5.js → dist-CNAkUyxv.js} +11 -14
  94. package/dist/{dist-DNnYAdRE.js → dist-CNvMOZu9.js} +2 -2
  95. package/dist/{dist-CxD5E6Sh.js → dist-CPNnKuPh.js} +24 -22
  96. package/dist/{dist-C3QUag__.js → dist-CTIyD_KU.js} +3 -3
  97. package/dist/dist-CU04U4NL.js +10 -0
  98. package/dist/{dist-CZfRM7pE.js → dist-CWh5ZwcC.js} +2 -2
  99. package/dist/{dist-DW9er3Zq.js → dist-CWqB4bg8.js} +44 -23
  100. package/dist/{dist-CbRkrKrP.js → dist-CtOeHDJp.js} +5 -5
  101. package/dist/{dist-DL_ci7Yc.js → dist-Cw0F6l-7.js} +1 -1
  102. package/dist/{dist-BZBitvuL.js → dist-CwZcC4om.js} +1 -1
  103. package/dist/dist-DNUT6b47.js +6 -0
  104. package/dist/{dist-BBlFk9ki.js → dist-Da046MhT.js} +1 -1
  105. package/dist/{dist-Cib4sGDA.js → dist-DaTVdKJa.js} +2 -2
  106. package/dist/dist-DbAb2sY7.js +6 -0
  107. package/dist/dist-DiDFQ2Rk.js +6 -0
  108. package/dist/{dist-BQmQQqFH.js → dist-DlK420ke.js} +1 -1
  109. package/dist/{dist-o7fhJC7U.js → dist-Drf3cyIW.js} +3 -3
  110. package/dist/{dist-CdE2C2In.js → dist-DxESp2-T.js} +15 -20
  111. package/dist/{dist-JCAky9ND.js → dist-DzJem5xc.js} +17 -22
  112. package/dist/{dist-C5zMs_n5.js → dist-O0zVziwn.js} +3 -3
  113. package/dist/dist-SNAyAOJ-.js +6 -0
  114. package/dist/{dist-Bar1QnNM.js → dist-_4cudra1.js} +3 -3
  115. package/dist/dist-cbW5xJNV.js +6 -0
  116. package/dist/dist-h8eGLSbK.js +10 -0
  117. package/dist/{dist-BqgkUnEN.js → dist-xLN9qCAp.js} +3 -3
  118. package/dist/{dockerfile-Dum_1b-5.js → dockerfile-Cmlcqk35.js} +1 -1
  119. package/dist/dtd-RplB6hDg.js +4 -0
  120. package/dist/dylan-BX8KJufP.js +4 -0
  121. package/dist/ecl-CWtLaNMH.js +4 -0
  122. package/dist/eiffel-C-mlZPMn.js +4 -0
  123. package/dist/elm-CWp06vcb.js +4 -0
  124. package/dist/{erDiagram-AWTI2OKA-ZTIl9iQO.js → erDiagram-AWTI2OKA-BU7Qig7n.js} +32 -31
  125. package/dist/erlang-pfp22AZM.js +4 -0
  126. package/dist/error-banner-BAWlXn49.js +1012 -0
  127. package/dist/{esm-d0g2RsOH.js → esm-AtKNNGYO.js} +7 -9
  128. package/dist/esm-B2pocBPL.js +26 -0
  129. package/dist/{esm-DxFkg7a6.js → esm-Oo8OvZ6m.js} +1529 -1493
  130. package/dist/{esm-1_Mp6VD2.js → esm-YVnxJqkD.js} +340 -411
  131. package/dist/{factor-CdgiDGiu.js → factor-BZnBK3CG.js} +1 -1
  132. package/dist/factor-CEn53jua.js +5 -0
  133. package/dist/{flowDiagram-PVAE7QVJ-DsbofOzu.js → flowDiagram-PVAE7QVJ-JKJebWeY.js} +41 -40
  134. package/dist/{formats-ChrNdVdJ.js → formats-DOEuF6TR.js} +15 -19
  135. package/dist/forth-CL8vu_y8.js +4 -0
  136. package/dist/fortran-DsmXkYtE.js +4 -0
  137. package/dist/{ganttDiagram-OWAHRB6G-FnCH1Yj3.js → ganttDiagram-OWAHRB6G-BvWRfg05.js} +17 -16
  138. package/dist/gas-mYt9Rtlx.js +4 -0
  139. package/dist/gherkin-DHNCKBNj.js +4 -0
  140. package/dist/gitGraph-ZV4HHKMB-Cpd6k0O8.js +21 -0
  141. package/dist/{gitGraphDiagram-NY62KEGX-B0wvMNqU.js → gitGraphDiagram-NY62KEGX-VEJJBf5L.js} +38 -40
  142. package/dist/{glide-data-editor-D_kEsT07.js → glide-data-editor-Bne10icG.js} +1703 -1771
  143. package/dist/{graphlib-BGmr7CYF.js → graphlib-DRS8CrjA.js} +5 -5
  144. package/dist/groovy-DzRtOS5a.js +4 -0
  145. package/dist/haskell-Bl9iT_Mp.js +4 -0
  146. package/dist/haxe-DqA0ED6k.js +5 -0
  147. package/dist/{hotkeys-yFrUwyJK.js → hotkeys-DVxFjl2s.js} +16 -7
  148. package/dist/idl-WU2hil4i.js +4 -0
  149. package/dist/info-63CPKGFF-CG-xzUJo.js +21 -0
  150. package/dist/infoDiagram-STP46IZ2-zoRBGoup.js +45 -0
  151. package/dist/invariant-D3JoRb4I.js +6 -0
  152. package/dist/{isArrayLikeObject-DiDsNamC.js → isArrayLikeObject-DU5MCuQM.js} +3 -5
  153. package/dist/{isEmpty-BBG-u1GM.js → isEmpty-Do_v2sls.js} +2 -2
  154. package/dist/{isSymbol-BxF-_8BA.js → isSymbol-CtkA8Y0a.js} +1 -1
  155. package/dist/{javascript-Dfq1qI35.js → javascript-DGukg1sB.js} +2 -2
  156. package/dist/javascript-QY2BGJeV.js +5 -0
  157. package/dist/jinja2-Czleq7Sk.js +4 -0
  158. package/dist/{journeyDiagram-BIP6EPQ6-B3PotfAW.js → journeyDiagram-BIP6EPQ6-CsgEQgxh.js} +28 -28
  159. package/dist/julia-Dru3Qi0y.js +4 -0
  160. package/dist/{kanban-definition-6OIFK2YF-BTrQZ3LN.js → kanban-definition-6OIFK2YF-Bi8Ete2P.js} +42 -41
  161. package/dist/{katex-dN__NFdn.js → katex-C-g3rKKt.js} +1 -1
  162. package/dist/{katex-BE4xflfm.js → katex-DgfMWJY9.js} +149 -173
  163. package/dist/{label-BinTsX-u.js → label-BiVIU_wb.js} +252 -253
  164. package/dist/{line-C6-zz71o.js → line-B7-GoF1m.js} +3 -3
  165. package/dist/{linear-DyTdUIqX.js → linear-DeGGALuc.js} +4 -4
  166. package/dist/livescript-Dxqi_HLT.js +4 -0
  167. package/dist/{loader-Dijti3y4.js → loader-BBqwtZWj.js} +19 -26
  168. package/dist/lua-ByH1cUQZ.js +4 -0
  169. package/dist/main.js +17025 -17039
  170. package/dist/{marked.esm-3RjvXPoO.js → marked.esm-DkVwEwtO.js} +5 -5
  171. package/dist/mathematica-CWJIFuES.js +4 -0
  172. package/dist/mbox-qhPIGaUI.js +4 -0
  173. package/dist/{memoize-Dq87l1O_.js → memoize-D7eDkf3R.js} +1 -1
  174. package/dist/{merge-BPDCIm8P.js → merge-C_6cGM6o.js} +1 -1
  175. package/dist/{mermaid-MWiyXDcI.js → mermaid-BmtvsZ2m.js} +323 -339
  176. package/dist/{mermaid-parser.core-CSFx6MQ7.js → mermaid-parser.core-geyG_6o0.js} +8 -8
  177. package/dist/{mhchem-DZ68WS0G.js → mhchem-OhAaJ0fA.js} +1 -1
  178. package/dist/{min-BzhKOmZo.js → min-Dwa_NbP6.js} +7 -7
  179. package/dist/{mindmap-definition-Q6HEUPPD-9hhnrO1k.js → mindmap-definition-Q6HEUPPD-B-wmX1oG.js} +29 -28
  180. package/dist/mirc-yYcXhXBY.js +4 -0
  181. package/dist/mllike-BfT_Nl9x.js +6 -0
  182. package/dist/modelica-lVDtz1Rm.js +4 -0
  183. package/dist/mscgen-DvwdD1QJ.js +6 -0
  184. package/dist/mumps-BiY3GwKd.js +4 -0
  185. package/dist/{node-sql-parser-13oju30e.js → node-sql-parser-CoPWN4hn.js} +14343 -14351
  186. package/dist/{now-DVBcRCoE.js → now-DumxsrcX.js} +1 -1
  187. package/dist/{nsis-BW6_XagK.js → nsis-D4bLR_Y1.js} +1 -1
  188. package/dist/nsis-Dk18Sq_4.js +5 -0
  189. package/dist/ntriples-Cj-8VqKF.js +4 -0
  190. package/dist/{number-overlay-editor-D1YdiOrm.js → number-overlay-editor-D6r-48ka.js} +18 -24
  191. package/dist/octave-BgFAaYjU.js +4 -0
  192. package/dist/once-3OSMKEsL.js +74 -0
  193. package/dist/{ordinal-BXk5xAj2.js → ordinal-DpEbSVPc.js} +1 -1
  194. package/dist/oz-IsEG1I1m.js +4 -0
  195. package/dist/packet-HUATNLJX-Cafuo3IG.js +21 -0
  196. package/dist/pascal-BVf7FtIE.js +4 -0
  197. package/dist/perl-BM0-y4mZ.js +4 -0
  198. package/dist/pie-WTHONI2E-BE0pHBwB.js +21 -0
  199. package/dist/{pieDiagram-ADFJNKIX-CSBC0ZgF.js → pieDiagram-ADFJNKIX-C3GvPNUL.js} +40 -39
  200. package/dist/pig-CLBjzQmc.js +4 -0
  201. package/dist/powershell-B_qvE33J.js +4 -0
  202. package/dist/powershell-Dr7WZMDU.js +236 -0
  203. package/dist/{precisionRound-DbP73hkf.js → precisionRound-7YYJq2rW.js} +1 -1
  204. package/dist/properties-CUTpsH2y.js +4 -0
  205. package/dist/protobuf-DqCP8a-0.js +4 -0
  206. package/dist/pug-BvexKkw4.js +5 -0
  207. package/dist/{pug-Bmups_z0.js → pug-Dv3gE36O.js} +1 -1
  208. package/dist/puppet-CoIi0R3f.js +4 -0
  209. package/dist/purify.es-CrfFzTyi.js +536 -0
  210. package/dist/python-C-11-YMh.js +5 -0
  211. package/dist/{q-BzWcnVri.js → q-BzRpKgfd.js} +3 -2
  212. package/dist/q-CCVgEip7.js +4 -0
  213. package/dist/{quadrantDiagram-LMRXKWRM-h7nHf8xG.js → quadrantDiagram-LMRXKWRM-DPXwGNVa.js} +11 -10
  214. package/dist/r-CIdR0Sfs.js +4 -0
  215. package/dist/radar-NJJJXTRR-0adgjw0u.js +21 -0
  216. package/dist/{range-CgK0-PEw.js → range-CIbLpsrs.js} +3 -3
  217. package/dist/{react-plotly-BZakcxdv.js → react-plotly-DYyvxcRD.js} +4365 -4706
  218. package/dist/{requirementDiagram-4UW4RH46-BGEurQYq.js → requirementDiagram-4UW4RH46-Cs3Hqnm0.js} +24 -23
  219. package/dist/rpm-Dwvm039g.js +5 -0
  220. package/dist/ruby-DpTnO5gb.js +4 -0
  221. package/dist/{sankeyDiagram-GR3RE2ED-CxeJ_jfl.js → sankeyDiagram-GR3RE2ED-Be1d_Xf7.js} +7 -6
  222. package/dist/sas-CK9boxgv.js +4 -0
  223. package/dist/scheme-Y1aYL-Qq.js +4 -0
  224. package/dist/{sequenceDiagram-C3RYC4MD-CbFxwyr_.js → sequenceDiagram-C3RYC4MD-lbtovKTa.js} +24 -33
  225. package/dist/shell-D3eXGsHd.js +4 -0
  226. package/dist/sieve-BdwSFdWJ.js +4 -0
  227. package/dist/{simple-mode-Cgyya8F-.js → simple-mode-BMmwP_vI.js} +1 -1
  228. package/dist/{slides-component-BEyG25AH.js → slides-component-BoeQU7-s.js} +1012 -1033
  229. package/dist/smalltalk-BTYJquCm.js +4 -0
  230. package/dist/sparql-CYF0g4Cc.js +4 -0
  231. package/dist/{src-BNNJRxz3.js → src-BTqT1mA1.js} +6 -6
  232. package/dist/{stateDiagram-KXAO66HF-A61bMf29.js → stateDiagram-KXAO66HF-BmbR-Rol.js} +48 -49
  233. package/dist/stateDiagram-v2-UMBNRL4Z-DdJ7qVWc.js +39 -0
  234. package/dist/{step-IHYrujTc.js → step-2RJrMSSG.js} +1 -1
  235. package/dist/stex-CyWhoWHt.js +5 -0
  236. package/dist/style.css +1 -1
  237. package/dist/stylus-BBiKaI2h.js +4 -0
  238. package/dist/swift-COb15qFR.js +4 -0
  239. package/dist/tcl-Jik1LXu9.js +4 -0
  240. package/dist/textile-BFHPD3wr.js +4 -0
  241. package/dist/{time-D3tzCqJ6.js → time-BB30r1tK.js} +4 -4
  242. package/dist/{timeline-definition-XQNQX7LJ-BwdsB7CR.js → timeline-definition-XQNQX7LJ-1mv5caPW.js} +17 -17
  243. package/dist/{timer-D3Zlu9ow.js → timer-CcUhugb0.js} +2 -2
  244. package/dist/{toNumber-efKT08hh.js → toNumber-D3Ystr3y.js} +2 -2
  245. package/dist/{toString-BvCd3yJc.js → toString-CbuxCRDG.js} +2 -2
  246. package/dist/{toml-CIUkU1CP.js → toml-BqNUJWRI.js} +6 -2
  247. package/dist/toml-Brp9fBXs.js +4 -0
  248. package/dist/treemap-75Q7IDZK-CyBT8_Wh.js +21 -0
  249. package/dist/troff-CcZRW4vg.js +4 -0
  250. package/dist/ttcn-Bz_6ifRd.js +4 -0
  251. package/dist/ttcn-cfg-v-yi2rKc.js +4 -0
  252. package/dist/turtle-CDOsZYhB.js +4 -0
  253. package/dist/{types-1X1uZB4y.js → types-BPohCsA7.js} +198 -278
  254. package/dist/{useAsyncData-C4IqQK0g.js → useAsyncData-DHBqeb9a.js} +3 -2
  255. package/dist/{useDateFormatter-BCsBqetx.js → useDateFormatter-BkbjKw83.js} +9 -9
  256. package/dist/useIframeCapabilities-BEvvwlwt.js +46 -0
  257. package/dist/{useTheme-C2pgJzDH.js → useTheme-CnMbo-iq.js} +32 -29
  258. package/dist/vb-CL7fRwRw.js +4 -0
  259. package/dist/vbscript-CR2xfxpw.js +4 -0
  260. package/dist/{vega-component-Cv4J8CHz.js → vega-component-BfFcXZxw.js} +40 -39
  261. package/dist/{vega-loader.browser.module-Bi3ttvdj.js → vega-loader.browser.module-CFMtdrNw.js} +4 -5
  262. package/dist/velocity-CfuZoxPt.js +4 -0
  263. package/dist/verilog-CySTkzw_.js +4 -0
  264. package/dist/vhdl-Dvcd8KHW.js +4 -0
  265. package/dist/webidl-tbJt7sKk.js +4 -0
  266. package/dist/xquery-DJQVztyc.js +4 -0
  267. package/dist/{xychartDiagram-6GGTOJPD-BJRRi5HC.js → xychartDiagram-6GGTOJPD-njc-naaw.js} +24 -24
  268. package/dist/yacas-BbgBReEH.js +4 -0
  269. package/dist/z80-DPyb8VGz.js +4 -0
  270. package/dist/{zod-UPQf9SGn.js → zod-mAEs2ITo.js} +71 -81
  271. package/package.json +21 -17
  272. package/src/__mocks__/requests.ts +2 -0
  273. package/src/components/app-config/ai-config.tsx +1 -3
  274. package/src/components/app-config/common.tsx +14 -0
  275. package/src/components/app-config/data-form.tsx +282 -0
  276. package/src/components/app-config/user-config-form.tsx +36 -219
  277. package/src/components/chat/acp/__tests__/state.test.ts +75 -2
  278. package/src/components/chat/acp/agent-panel.tsx +143 -89
  279. package/src/components/chat/acp/blocks.tsx +77 -34
  280. package/src/components/chat/acp/state.ts +5 -1
  281. package/src/components/chat/acp/thread.tsx +12 -1
  282. package/src/components/chat/chat-panel.tsx +38 -5
  283. package/src/components/chat/chat-utils.ts +16 -5
  284. package/src/components/chat/markdown-renderer.css +1 -0
  285. package/src/components/chat/tool-call-accordion.tsx +7 -1
  286. package/src/components/data-table/__tests__/header-items.test.tsx +117 -0
  287. package/src/components/data-table/charts/__tests__/storage.test.ts +12 -6
  288. package/src/components/data-table/charts/charts.tsx +8 -2
  289. package/src/components/data-table/charts/storage.ts +1 -1
  290. package/src/components/data-table/column-header.tsx +4 -2
  291. package/src/components/data-table/column-wrapping/feature.ts +2 -0
  292. package/src/components/data-table/columns.tsx +12 -3
  293. package/src/components/data-table/data-table.tsx +7 -2
  294. package/src/components/data-table/header-items.tsx +63 -10
  295. package/src/components/data-table/renderers.tsx +3 -2
  296. package/src/components/dependency-graph/custom-node.tsx +11 -11
  297. package/src/components/dependency-graph/elements.ts +9 -4
  298. package/src/components/dependency-graph/panels.tsx +6 -4
  299. package/src/components/editor/Output.tsx +34 -25
  300. package/src/components/editor/actions/useCellActionButton.tsx +20 -4
  301. package/src/components/editor/ai/add-cell-with-ai.tsx +17 -3
  302. package/src/components/editor/ai/ai-completion-editor.tsx +203 -26
  303. package/src/components/editor/ai/completion-handlers.tsx +126 -23
  304. package/src/components/editor/cell/StagedAICell.tsx +81 -12
  305. package/src/components/editor/cell/code/cell-editor.tsx +6 -2
  306. package/src/components/editor/cell/useRunCells.ts +62 -30
  307. package/src/components/editor/chrome/panels/cache-panel.tsx +216 -0
  308. package/src/components/editor/chrome/panels/empty-state.tsx +3 -1
  309. package/src/components/editor/chrome/panels/packages-panel.tsx +1 -1
  310. package/src/components/editor/chrome/state.ts +1 -1
  311. package/src/components/editor/chrome/types.ts +66 -22
  312. package/src/components/editor/chrome/wrapper/app-chrome.tsx +4 -0
  313. package/src/components/editor/chrome/wrapper/minimap.tsx +2 -0
  314. package/src/components/editor/chrome/wrapper/pending-ai-cells.tsx +108 -0
  315. package/src/components/editor/chrome/wrapper/sidebar.tsx +1 -1
  316. package/src/components/editor/code/readonly-diff.tsx +49 -0
  317. package/src/components/editor/columns/storage.ts +1 -1
  318. package/src/components/editor/errors/auto-fix.tsx +138 -32
  319. package/src/components/editor/errors/fix-mode.ts +20 -0
  320. package/src/components/editor/inputs/Inputs.styles.ts +1 -1
  321. package/src/components/editor/navigation/__tests__/clipboard.test.ts +0 -5
  322. package/src/components/editor/navigation/clipboard.ts +2 -1
  323. package/src/components/editor/notebook-cell.tsx +20 -7
  324. package/src/components/editor/output/CalloutOutput.tsx +1 -1
  325. package/src/components/editor/output/ConsoleOutput.tsx +27 -33
  326. package/src/components/editor/output/HtmlOutput.tsx +3 -2
  327. package/src/components/editor/output/JsonOutput.tsx +15 -1
  328. package/src/components/editor/output/MarimoTracebackOutput.tsx +69 -52
  329. package/src/components/editor/output/__tests__/HtmlOutput.test.tsx +134 -0
  330. package/src/components/editor/output/__tests__/json-output.test.ts +43 -0
  331. package/src/components/editor/output/__tests__/traceback.test.tsx +8 -1
  332. package/src/components/editor/output/useWrapText.ts +6 -1
  333. package/src/components/editor/package-alert.tsx +37 -32
  334. package/src/components/editor/renderers/vertical-layout/vertical-layout-wrapper.tsx +5 -2
  335. package/src/components/forms/__tests__/form-utils.test.ts +4 -2
  336. package/src/components/home/state.ts +3 -2
  337. package/src/components/icons/copy-icon.tsx +11 -5
  338. package/src/components/scratchpad/scratchpad-history.ts +6 -1
  339. package/src/components/shortcuts/renderShortcut.tsx +3 -1
  340. package/src/components/slides/slides-component.tsx +25 -21
  341. package/src/components/ui/button.tsx +2 -0
  342. package/src/components/ui/confirmation-button.tsx +85 -0
  343. package/src/components/ui/context-menu.tsx +14 -4
  344. package/src/components/ui/dropdown-menu.tsx +14 -4
  345. package/src/components/ui/fullscreen.tsx +115 -1
  346. package/src/components/ui/popover.tsx +11 -3
  347. package/src/components/ui/range-slider.tsx +1 -1
  348. package/src/components/ui/select.tsx +7 -3
  349. package/src/components/ui/slider.tsx +1 -1
  350. package/src/components/ui/switch.tsx +2 -0
  351. package/src/components/ui/tooltip.tsx +10 -3
  352. package/src/core/ai/__tests__/staged-cells.test.ts +189 -64
  353. package/src/core/ai/config.ts +6 -2
  354. package/src/core/ai/context/providers/__tests__/__snapshots__/cell-output.test.ts.snap +17 -0
  355. package/src/core/ai/context/providers/__tests__/cell-output.test.ts +194 -10
  356. package/src/core/ai/context/providers/__tests__/datasource.test.ts +9 -1
  357. package/src/core/ai/context/providers/cell-output.ts +170 -112
  358. package/src/core/ai/context/providers/datasource.ts +25 -1
  359. package/src/core/ai/context/providers/tables.ts +2 -2
  360. package/src/core/ai/staged-cells.ts +32 -16
  361. package/src/core/ai/state.ts +8 -4
  362. package/src/core/ai/tools/__tests__/edit-notebook-tool.test.ts +556 -0
  363. package/src/core/ai/tools/__tests__/registry.test.ts +41 -8
  364. package/src/core/ai/tools/__tests__/run-cells-tool.test.ts +450 -0
  365. package/src/core/ai/tools/__tests__/utils.test.ts +87 -0
  366. package/src/core/ai/tools/base.ts +109 -6
  367. package/src/core/ai/tools/edit-notebook-tool.ts +239 -0
  368. package/src/core/ai/tools/registry.ts +48 -15
  369. package/src/core/ai/tools/run-cells-tool.ts +233 -0
  370. package/src/core/ai/tools/sample-tool.ts +53 -15
  371. package/src/core/ai/tools/utils.ts +23 -0
  372. package/src/core/cache/requests.ts +5 -0
  373. package/src/core/cells/__tests__/cells.test.ts +19 -1
  374. package/src/core/cells/__tests__/session.test.ts +20 -3
  375. package/src/core/cells/cells.ts +13 -8
  376. package/src/core/cells/session.ts +1 -1
  377. package/src/core/codemirror/__tests__/__snapshots__/setup.test.ts.snap +2 -0
  378. package/src/core/codemirror/__tests__/replace-editor-content.test.ts +336 -0
  379. package/src/core/codemirror/ai/resources.ts +13 -2
  380. package/src/core/codemirror/copilot/state.ts +4 -2
  381. package/src/core/codemirror/find-replace/navigate.ts +2 -2
  382. package/src/core/codemirror/format.ts +2 -9
  383. package/src/core/codemirror/language/__tests__/extension.test.ts +10 -2
  384. package/src/core/codemirror/language/__tests__/sql.test.ts +24 -6
  385. package/src/core/codemirror/language/languages/markdown.ts +16 -153
  386. package/src/core/codemirror/language/languages/python.ts +13 -10
  387. package/src/core/codemirror/language/languages/sql/sql-mode.ts +6 -1
  388. package/src/core/codemirror/language/languages/sql/sql.ts +43 -306
  389. package/src/core/codemirror/language/panel/markdown.tsx +2 -1
  390. package/src/core/codemirror/language/panel/panel.tsx +2 -7
  391. package/src/core/codemirror/language/utils.ts +3 -8
  392. package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +21 -14
  393. package/src/core/codemirror/lsp/federated-lsp.ts +20 -9
  394. package/src/core/codemirror/lsp/notebook-lsp.ts +35 -29
  395. package/src/core/codemirror/lsp/transports.ts +7 -13
  396. package/src/core/codemirror/lsp/types.ts +0 -13
  397. package/src/core/codemirror/replace-editor-content.ts +87 -0
  398. package/src/core/config/__tests__/config-schema.test.ts +3 -0
  399. package/src/core/config/config-schema.ts +12 -1
  400. package/src/core/config/feature-flag.tsx +2 -4
  401. package/src/core/errors/__tests__/errors.test.ts +1 -0
  402. package/src/core/errors/errors.ts +20 -6
  403. package/src/core/hotkeys/hotkeys.ts +12 -0
  404. package/src/core/islands/bridge.ts +2 -0
  405. package/src/core/islands/main.ts +4 -0
  406. package/src/core/kernel/messages.ts +1 -0
  407. package/src/core/lsp/__tests__/transport.test.ts +233 -0
  408. package/src/core/lsp/transport.ts +139 -0
  409. package/src/core/network/requests-network.ts +14 -0
  410. package/src/core/network/requests-static.ts +2 -0
  411. package/src/core/network/requests-toasting.ts +2 -0
  412. package/src/core/network/types.ts +5 -0
  413. package/src/core/rtc/state.ts +6 -1
  414. package/src/core/saving/save-component.tsx +43 -36
  415. package/src/core/vscode/is-in-vscode.ts +9 -0
  416. package/src/core/wasm/bridge.ts +2 -0
  417. package/src/core/wasm/store.ts +1 -1
  418. package/src/core/websocket/useMarimoWebSocket.tsx +8 -0
  419. package/src/css/app/Cell.css +31 -0
  420. package/src/css/app/codemirror-completions.css +1 -1
  421. package/src/css/globals.css +5 -0
  422. package/src/custom.d.ts +2 -0
  423. package/src/hooks/useIframeCapabilities.ts +14 -0
  424. package/src/hooks/useLocalStorage.ts +1 -1
  425. package/src/plugins/core/RenderHTML.tsx +65 -5
  426. package/src/plugins/core/__test__/RenderHTML.test.ts +25 -23
  427. package/src/plugins/core/__test__/renderHTML-sanitization.test.tsx +131 -0
  428. package/src/plugins/core/__test__/sanitize.test.ts +465 -0
  429. package/src/plugins/core/registerReactComponent.tsx +19 -2
  430. package/src/plugins/core/sanitize.ts +76 -0
  431. package/src/plugins/impl/DataTablePlugin.tsx +20 -19
  432. package/src/plugins/impl/FileBrowserPlugin.tsx +1 -3
  433. package/src/plugins/impl/FileUploadPlugin.tsx +1 -3
  434. package/src/plugins/impl/__tests__/DateTimePickerPlugin.test.tsx +40 -1
  435. package/src/plugins/impl/__tests__/DropdownPlugin.test.tsx +6 -0
  436. package/src/plugins/impl/__tests__/MultiSelectPlugin.test.ts +8 -1
  437. package/src/plugins/impl/__tests__/NumberPlugin.test.tsx +3 -0
  438. package/src/plugins/impl/chat/ChatPlugin.tsx +1 -1
  439. package/src/plugins/impl/chat/chat-ui.tsx +17 -2
  440. package/src/plugins/impl/chat/types.ts +1 -1
  441. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +7 -2
  442. package/src/plugins/impl/plotly/__tests__/parse-from-template.test.ts +17 -0
  443. package/src/plugins/impl/plotly/parse-from-template.ts +2 -1
  444. package/src/utils/__tests__/arrays.test.ts +42 -0
  445. package/src/utils/__tests__/capabilities.test.ts +453 -0
  446. package/src/utils/__tests__/formatting.test.ts +107 -0
  447. package/src/utils/__tests__/json-parser.test.ts +13 -0
  448. package/src/utils/__tests__/local-storage.test.ts +1 -1
  449. package/src/utils/__tests__/storage.test.ts +21 -21
  450. package/src/utils/arrays.ts +25 -0
  451. package/src/utils/capabilities.ts +114 -0
  452. package/src/utils/copy.ts +6 -0
  453. package/src/utils/formatting.ts +51 -0
  454. package/src/utils/json/json-parser.ts +28 -3
  455. package/src/utils/numbers.ts +2 -2
  456. package/src/utils/{storage.ts → storage/jotai.ts} +16 -4
  457. package/src/utils/storage/storage.ts +57 -0
  458. package/src/utils/{localStorage.ts → storage/typed.ts} +22 -12
  459. package/dist/any-language-editor-CVFQlioK.js +0 -156
  460. package/dist/apl-ChlaBfxB.js +0 -4
  461. package/dist/architecture-O4VJ6CD3-BVeaxUcM.js +0 -21
  462. package/dist/asciiarmor-CcJmm3l_.js +0 -4
  463. package/dist/asn1-ThRYxoBE.js +0 -4
  464. package/dist/assets/__vite-browser-external-Dv_SHu1h.js +0 -1
  465. package/dist/assets/worker-DVOR9oZG.js +0 -54
  466. package/dist/brainfuck-CEM0JgDn.js +0 -4
  467. package/dist/chunk-EXTU4WIE-DECT9AAK.js +0 -14
  468. package/dist/chunk-S3R3BYOJ-DMQ1yeyq.js +0 -386
  469. package/dist/classDiagram-KNZD7YFC-BG53O6Jt.js +0 -39
  470. package/dist/classDiagram-v2-RKCZMP56-BmKILsGU.js +0 -39
  471. package/dist/clojure-B7RHyE9t.js +0 -4
  472. package/dist/cmake-TeTMP4I5.js +0 -4
  473. package/dist/cobol-DI-mxUER.js +0 -4
  474. package/dist/coffeescript-DHUFLqWp.js +0 -4
  475. package/dist/commonlisp-SLiUrh1m.js +0 -4
  476. package/dist/crystal-B4fY1ZfJ.js +0 -4
  477. package/dist/css-Bdoq3TzK.js +0 -5
  478. package/dist/cypher-CBU182fp.js +0 -4
  479. package/dist/d-D8myDZeH.js +0 -4
  480. package/dist/data-grid-overlay-editor-qNmJk2x0.js +0 -135
  481. package/dist/diagram-QEK2KX5R-fu8Noi3H.js +0 -245
  482. package/dist/diff-DJF_UB7H.js +0 -4
  483. package/dist/dist-52-_pKoy.js +0 -6
  484. package/dist/dist-6DOMStFn.js +0 -6
  485. package/dist/dist-B334aW7p.js +0 -10
  486. package/dist/dist-BOI9lUz-.js +0 -12
  487. package/dist/dist-C06uhBzF.js +0 -6
  488. package/dist/dist-CGkpguCB.js +0 -6
  489. package/dist/dist-CrApzUED.js +0 -6
  490. package/dist/dist-Dp2GLdCl.js +0 -14
  491. package/dist/dist-WHFsbMDr.js +0 -6
  492. package/dist/dist-hyKcTPG9.js +0 -10
  493. package/dist/dtd-DY8q65lC.js +0 -4
  494. package/dist/dylan-CBLcjWCi.js +0 -4
  495. package/dist/ecl-BSXPNfOw.js +0 -4
  496. package/dist/eiffel-BJf0PQX-.js +0 -4
  497. package/dist/elm-DWQwPCZS.js +0 -4
  498. package/dist/erlang-BWBaGZ5e.js +0 -4
  499. package/dist/error-banner-OQIGTqFR.js +0 -1012
  500. package/dist/esm-BO9n_s6u.js +0 -26
  501. package/dist/factor-DT1-MBPl.js +0 -5
  502. package/dist/forth-D9GDt3FB.js +0 -4
  503. package/dist/fortran-DHkRhDWw.js +0 -4
  504. package/dist/gas-7lQEOM0H.js +0 -4
  505. package/dist/gherkin-BLLyroYi.js +0 -4
  506. package/dist/gitGraph-ZV4HHKMB-z2v_cInC.js +0 -21
  507. package/dist/groovy-C-wabwj0.js +0 -4
  508. package/dist/haskell-DaxVQ_d1.js +0 -4
  509. package/dist/haxe-C2yLoC7h.js +0 -5
  510. package/dist/idl-DQBP8i7k.js +0 -4
  511. package/dist/info-63CPKGFF-GS4w6pCB.js +0 -21
  512. package/dist/infoDiagram-STP46IZ2-DE9YYPFg.js +0 -44
  513. package/dist/javascript-DRwFV9r5.js +0 -5
  514. package/dist/jinja2-CNoIpVmN.js +0 -4
  515. package/dist/julia-DXDf-GhP.js +0 -4
  516. package/dist/livescript-S2uhJQx7.js +0 -4
  517. package/dist/lua-Bvgs0y2G.js +0 -4
  518. package/dist/mathematica-D2zqfwIg.js +0 -4
  519. package/dist/mbox-SBcPaDuZ.js +0 -4
  520. package/dist/mirc-hkQc7sVF.js +0 -4
  521. package/dist/mllike-DRWPBlr9.js +0 -6
  522. package/dist/modelica-CO2ROGlP.js +0 -4
  523. package/dist/mscgen-BpX61bO6.js +0 -6
  524. package/dist/mumps-BCnFeIn6.js +0 -4
  525. package/dist/nsis-BaTOxlD1.js +0 -5
  526. package/dist/ntriples-zEo5BWjr.js +0 -4
  527. package/dist/octave-BE0RnCM9.js +0 -4
  528. package/dist/oz-C4_2Ttul.js +0 -4
  529. package/dist/packet-HUATNLJX-CjHqJIqk.js +0 -21
  530. package/dist/pascal-Q3jJucpw.js +0 -4
  531. package/dist/perl-DkXZIWHF.js +0 -4
  532. package/dist/pie-WTHONI2E-D67gLWtR.js +0 -21
  533. package/dist/pig-DCgEHdsu.js +0 -4
  534. package/dist/powershell-3rK_nRRJ.js +0 -236
  535. package/dist/powershell-Eo2-7MoM.js +0 -4
  536. package/dist/properties-C0IOX8WR.js +0 -4
  537. package/dist/protobuf--lGQUSRO.js +0 -4
  538. package/dist/pug-Cf8AQHMJ.js +0 -5
  539. package/dist/puppet-D7Z3dTJn.js +0 -4
  540. package/dist/python-FHIx_i8Y.js +0 -5
  541. package/dist/q-B7UA1feM.js +0 -4
  542. package/dist/r-Cc9R2A7N.js +0 -4
  543. package/dist/radar-NJJJXTRR-C-AZP_Te.js +0 -21
  544. package/dist/rpm-vhJNlrQ6.js +0 -5
  545. package/dist/ruby-CVluPY0M.js +0 -4
  546. package/dist/sas-A8DL8oy3.js +0 -4
  547. package/dist/scheme-6xHHcSXC.js +0 -4
  548. package/dist/shell-DHN-e5rf.js +0 -4
  549. package/dist/sieve-BuQwLY02.js +0 -4
  550. package/dist/smalltalk-BA4HPg2H.js +0 -4
  551. package/dist/sparql-Bf4yCuy3.js +0 -4
  552. package/dist/stateDiagram-v2-UMBNRL4Z-C_0FUzzk.js +0 -38
  553. package/dist/stex-D-I1cYeE.js +0 -5
  554. package/dist/stylus-BMeped2l.js +0 -4
  555. package/dist/swift-lwEdlZoC.js +0 -4
  556. package/dist/tcl-B03ipeqv.js +0 -4
  557. package/dist/textile-Cy55fYGC.js +0 -4
  558. package/dist/toml-BLgrVtfu.js +0 -4
  559. package/dist/treemap-75Q7IDZK-DTvwfpWt.js +0 -21
  560. package/dist/troff-g6EjN2O2.js +0 -4
  561. package/dist/ttcn-Dzvba8jK.js +0 -4
  562. package/dist/ttcn-cfg-CadG0p1K.js +0 -4
  563. package/dist/turtle-DkXAMWo9.js +0 -4
  564. package/dist/vb-C5dCiel8.js +0 -4
  565. package/dist/vbscript-I4bDEQln.js +0 -4
  566. package/dist/velocity-mt0fDwFH.js +0 -4
  567. package/dist/verilog-Dxq3KJkc.js +0 -4
  568. package/dist/vhdl-Km0QUlV-.js +0 -4
  569. package/dist/webidl-B3lJ2MRL.js +0 -4
  570. package/dist/xquery-CcIxNPEe.js +0 -4
  571. package/dist/yacas-oMa-f-tN.js +0 -4
  572. package/dist/z80-D03Nvn6l.js +0 -4
  573. package/src/core/codemirror/language/__tests__/ast.test.ts +0 -124
  574. package/src/core/codemirror/language/utils/ast.ts +0 -84
  575. package/src/core/codemirror/language/utils/quotes.ts +0 -18
  576. /package/dist/{_arrayReduce-CVwxyrBP.js → _arrayReduce-Cd9xQjbl.js} +0 -0
  577. /package/dist/{_baseSlice-OgpvpOOJ.js → _baseSlice-CE9WsQZm.js} +0 -0
  578. /package/dist/{_hasUnicode-BgIggCqE.js → _hasUnicode-DkEebvtD.js} +0 -0
  579. /package/dist/{apl-DZqo8Elt.js → apl-aGhy11IM.js} +0 -0
  580. /package/dist/{array-aAxy08hN.js → array-DYSXIreg.js} +0 -0
  581. /package/dist/{asciiarmor-DTzHAIeX.js → asciiarmor-DJKJ3Gkn.js} +0 -0
  582. /package/dist/{asn1-DrAXKsZH.js → asn1-C6f5IeNs.js} +0 -0
  583. /package/dist/{asterisk-oF4U3h48.js → asterisk-DB1poX9_.js} +0 -0
  584. /package/dist/{brainfuck-BYgLey30.js → brainfuck-Ch9vjun0.js} +0 -0
  585. /package/dist/{chunk-57QY23SG-0TxCfmy_.js → chunk-57QY23SG-BpXU7ph4.js} +0 -0
  586. /package/dist/{clojure-Bs2M3OUY.js → clojure-B_lpr3zt.js} +0 -0
  587. /package/dist/{cmake-DpI8vxJN.js → cmake-DaocNF4I.js} +0 -0
  588. /package/dist/{cobol-BQyrWo72.js → cobol-suTPtt7c.js} +0 -0
  589. /package/dist/{coffeescript-9ke9UHmw.js → coffeescript-CPLIvtqJ.js} +0 -0
  590. /package/dist/{colors-Cr_mZ2aH.js → colors-BXlG8Lmz.js} +0 -0
  591. /package/dist/{common-keywords-BzgeAvH1.js → common-keywords-Bhll7O3b.js} +0 -0
  592. /package/dist/{commonlisp-DghUdrUH.js → commonlisp-BqM3qFK7.js} +0 -0
  593. /package/dist/{crystal-DEf_SInh.js → crystal-AsSFu4ke.js} +0 -0
  594. /package/dist/{css-BzTU9lNO.js → css-Df7Sdeyh.js} +0 -0
  595. /package/dist/{cypher-a2v0c11S.js → cypher-CaVKL6Gu.js} +0 -0
  596. /package/dist/{d-SAswny-M.js → d-DCGWK7NQ.js} +0 -0
  597. /package/dist/{defaultLocale-BAgEOGks.js → defaultLocale-CYgZlqDF.js} +0 -0
  598. /package/dist/{defaultLocale-471SYAPk.js → defaultLocale-Cto8YOmX.js} +0 -0
  599. /package/dist/{diff-OJ-xLXcG.js → diff-CsxOM4Tr.js} +0 -0
  600. /package/dist/{dist-CK8Gj3GX.js → dist-C76MUPD3.js} +0 -0
  601. /package/dist/{dtd-BsUf-rer.js → dtd-Dwr0Jmks.js} +0 -0
  602. /package/dist/{duckdb-keywords-B0NOra5o.js → duckdb-keywords-7wAWf848.js} +0 -0
  603. /package/dist/{dylan-C0ZYngjn.js → dylan-A7-ZBSey.js} +0 -0
  604. /package/dist/{ebnf-DF1xx0b_.js → ebnf-9_SaGDUz.js} +0 -0
  605. /package/dist/{ecl-Bsuvoouq.js → ecl-BzJVIQDc.js} +0 -0
  606. /package/dist/{eiffel-DgfSpLi-.js → eiffel-CO9eC_Op.js} +0 -0
  607. /package/dist/{elm-GNxDj-5E.js → elm-CVAWj8SB.js} +0 -0
  608. /package/dist/{emotion-is-prop-valid.esm-BHMWayAG.js → emotion-is-prop-valid.esm-C3Yi5GQt.js} +0 -0
  609. /package/dist/{erlang-Ds3uY1kL.js → erlang-DWbZP546.js} +0 -0
  610. /package/dist/{fcl-CqBgSioc.js → fcl-CM9t2iay.js} +0 -0
  611. /package/dist/{forth-JCaLysGk.js → forth-BTYqUuu3.js} +0 -0
  612. /package/dist/{fortran-Dc2AoKAl.js → fortran-DgAjHcCq.js} +0 -0
  613. /package/dist/{gas-Q4Uz82YW.js → gas-BjDSWPZd.js} +0 -0
  614. /package/dist/{gherkin-Dpxe49sQ.js → gherkin-ClRqqpKv.js} +0 -0
  615. /package/dist/{groovy-D8mTRCu6.js → groovy-BzNjnc8x.js} +0 -0
  616. /package/dist/{haskell-2_8cC4wY.js → haskell-DLdk34Jq.js} +0 -0
  617. /package/dist/{haxe-Bl9zkZlz.js → haxe-l6gaY_IS.js} +0 -0
  618. /package/dist/{http-DKCqY6yS.js → http-6Qg7z_h2.js} +0 -0
  619. /package/dist/{idl-Dn-HNfGW.js → idl-hlWT4D26.js} +0 -0
  620. /package/dist/{init-D6eDd7H0.js → init-tZ42Torz.js} +0 -0
  621. /package/dist/{jinja2-JjFiAGKk.js → jinja2-DI5k_Er3.js} +0 -0
  622. /package/dist/{julia-R5wne8eu.js → julia-BvDZDiIT.js} +0 -0
  623. /package/dist/{livescript-DSwokrYj.js → livescript-2YMQfkfI.js} +0 -0
  624. /package/dist/{lua-CgXfrp2-.js → lua-DIUrQRfA.js} +0 -0
  625. /package/dist/{main-Czi9-LVy.js → main-BMTpe7M0.js} +0 -0
  626. /package/dist/{math-C7wLpe9K.js → math-qsHyz2Eo.js} +0 -0
  627. /package/dist/{mathematica-BVli92MR.js → mathematica-Dqmg_BwL.js} +0 -0
  628. /package/dist/{mbox-CMFlocdS.js → mbox-Cng-P-F1.js} +0 -0
  629. /package/dist/{mirc-BkW04Zpc.js → mirc-CNDqOVhQ.js} +0 -0
  630. /package/dist/{mllike-DEjvHvNV.js → mllike-C1n2UDyX.js} +0 -0
  631. /package/dist/{modelica-CxDn-oje.js → modelica-QqQC2pFj.js} +0 -0
  632. /package/dist/{mscgen-D78wmE-w.js → mscgen-C3fl8uhp.js} +0 -0
  633. /package/dist/{mumps-Bi0IvPOV.js → mumps-BeCUbMej.js} +0 -0
  634. /package/dist/{nginx-DErPZFhX.js → nginx-ejv7DsBz.js} +0 -0
  635. /package/dist/{ntriples-Btyp6wRL.js → ntriples-CUgUpcma.js} +0 -0
  636. /package/dist/{octave-CZA6-2F8.js → octave-BD652tGl.js} +0 -0
  637. /package/dist/{oz-Bm6LSNfE.js → oz-DrRsFa0K.js} +0 -0
  638. /package/dist/{pascal-B4J6a9BH.js → pascal-hpcx9sVn.js} +0 -0
  639. /package/dist/{path-VDkDgx1I.js → path-Bbv2tLY1.js} +0 -0
  640. /package/dist/{perl-CzVqxS08.js → perl-DW8XHeFc.js} +0 -0
  641. /package/dist/{pig-Clh03cnn.js → pig-Cv7Nxbfo.js} +0 -0
  642. /package/dist/{prop-types-0wNc-99T.js → prop-types-Bd16OEUP.js} +0 -0
  643. /package/dist/{properties-D7ch1Wyb.js → properties-D-qJDXAM.js} +0 -0
  644. /package/dist/{protobuf-DrkdrMPK.js → protobuf-B48QZbd3.js} +0 -0
  645. /package/dist/{puppet-BtZG8zdO.js → puppet-15JDyiY2.js} +0 -0
  646. /package/dist/{python-B6FKOVIv.js → python-DWkQA94h.js} +0 -0
  647. /package/dist/{r-Dnvo5-96.js → r-dcNRe_Q8.js} +0 -0
  648. /package/dist/{range-PcytnUSJ.js → range-CQvYp_qE.js} +0 -0
  649. /package/dist/{rpm-B1DrgfnX.js → rpm-Djl3Dsf1.js} +0 -0
  650. /package/dist/{ruby-CelfUg17.js → ruby-Dd2CZTip.js} +0 -0
  651. /package/dist/{sas-DfSQFMWG.js → sas-DYF5_Iqu.js} +0 -0
  652. /package/dist/{scheme-BplhaWuO.js → scheme-YtWcji1H.js} +0 -0
  653. /package/dist/{shell-DqU5OS2c.js → shell-C3uC3Y0Z.js} +0 -0
  654. /package/dist/{sieve-BE4_IyGa.js → sieve-DHB17sQG.js} +0 -0
  655. /package/dist/{smalltalk-B_WPL8Nx.js → smalltalk-Y5v1Np3H.js} +0 -0
  656. /package/dist/{solr-DlJFg7H5.js → solr-DvRJLlRD.js} +0 -0
  657. /package/dist/{sparql-7XIlcOgW.js → sparql-BEt3GJwM.js} +0 -0
  658. /package/dist/{spreadsheet-BdZSVwVp.js → spreadsheet-Dp4B9_rc.js} +0 -0
  659. /package/dist/{sql-CCrq7lfJ.js → sql-DBsUs8nQ.js} +0 -0
  660. /package/dist/{stex-BiFc8QAu.js → stex-C6-x52ei.js} +0 -0
  661. /package/dist/{stylus-DlSH9xpH.js → stylus-DroA8via.js} +0 -0
  662. /package/dist/{swift-e3tMTZgJ.js → swift-DR0x1ESK.js} +0 -0
  663. /package/dist/{tcl-DfZMC20G.js → tcl-BeuTFc_c.js} +0 -0
  664. /package/dist/{textile-DaSeca5U.js → textile-C0ikhHN3.js} +0 -0
  665. /package/dist/{tiddlywiki-dfoiz8pS.js → tiddlywiki-C_2Nvsgu.js} +0 -0
  666. /package/dist/{tiki-yJbQzhma.js → tiki-CKQlhmQQ.js} +0 -0
  667. /package/dist/{treemap-BpgMKHv-.js → treemap-BYLUKIzA.js} +0 -0
  668. /package/dist/{troff-FN_FrCXR.js → troff-DkK0f2ZH.js} +0 -0
  669. /package/dist/{tslib.es6-DofFyd9S.js → tslib.es6-3ZL768sZ.js} +0 -0
  670. /package/dist/{ttcn-7_i4HlyB.js → ttcn-Bf8vrg-_.js} +0 -0
  671. /package/dist/{ttcn-cfg-B46AlBUV.js → ttcn-cfg-DjCKzd95.js} +0 -0
  672. /package/dist/{turtle-QQfeFveR.js → turtle-SSc84S9m.js} +0 -0
  673. /package/dist/{vb-DToPVnLa.js → vb-CQ6DC3cL.js} +0 -0
  674. /package/dist/{vbscript-CtsNaTz4.js → vbscript-Dw0gFssg.js} +0 -0
  675. /package/dist/{velocity-CAoNe6ns.js → velocity-BvJQyBmj.js} +0 -0
  676. /package/dist/{verilog-DrDOMiJq.js → verilog-CKGAvQjj.js} +0 -0
  677. /package/dist/{vhdl-DnO0OEPh.js → vhdl-B40_x6fM.js} +0 -0
  678. /package/dist/{webidl-Or6d1ZfA.js → webidl-Bi9hczCv.js} +0 -0
  679. /package/dist/{xquery-CEp_Mcpr.js → xquery-DwWUXvP3.js} +0 -0
  680. /package/dist/{yacas-DgnYrSlp.js → yacas-ClUs0mmH.js} +0 -0
  681. /package/dist/{z80-DlG_kyeB.js → z80-DPC4UGzR.js} +0 -0
@@ -1,18 +1,20 @@
1
1
  /* Copyright 2024 Marimo. All rights reserved. */
2
2
 
3
+ import type { EditorView } from "@codemirror/view";
3
4
  import type * as LSP from "vscode-languageserver-protocol";
5
+ import { getNotebook } from "@/core/cells/cells";
4
6
  import type { CellId } from "@/core/cells/ids";
5
7
  import { store } from "@/core/state/jotai";
6
8
  import { invariant } from "@/utils/invariant";
7
9
  import { Logger } from "@/utils/Logger";
8
10
  import { LRUCache } from "@/utils/lru";
11
+ import { Objects } from "@/utils/objects";
9
12
  import { topologicalCodesAtom } from "../copilot/getCodes";
10
13
  import { createNotebookLens, type NotebookLens } from "./lens";
11
14
  import {
12
15
  CellDocumentUri,
13
16
  type ILanguageServerClient,
14
17
  isClientWithNotify,
15
- isClientWithPlugins,
16
18
  } from "./types";
17
19
  import { getLSPDocument } from "./utils";
18
20
 
@@ -84,18 +86,32 @@ class Snapshotter {
84
86
  }
85
87
  }
86
88
 
89
+ const defaultGetNotebookEditors = () => {
90
+ const evs = getNotebook().cellHandles;
91
+ return Objects.mapValues(evs, (r) => r.current?.editorViewOrNull);
92
+ };
93
+
87
94
  export class NotebookLanguageServerClient implements ILanguageServerClient {
88
95
  public readonly documentUri: LSP.DocumentUri;
89
96
  private readonly client: ILanguageServerClient;
90
97
  private readonly snapshotter: Snapshotter;
98
+ private readonly getNotebookEditors: () => Record<
99
+ CellId,
100
+ EditorView | null | undefined
101
+ >;
91
102
 
92
103
  private static readonly SEEN_CELL_DOCUMENT_URIS = new Set<CellDocumentUri>();
93
104
 
94
105
  constructor(
95
106
  client: ILanguageServerClient,
96
107
  initialSettings: Record<string, unknown>,
108
+ getNotebookEditors: () => Record<
109
+ CellId,
110
+ EditorView | null | undefined
111
+ > = defaultGetNotebookEditors,
97
112
  ) {
98
113
  this.documentUri = getLSPDocument();
114
+ this.getNotebookEditors = getNotebookEditors;
99
115
 
100
116
  this.client = client;
101
117
  this.patchProcessNotification();
@@ -114,6 +130,17 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
114
130
  this.snapshotter = new Snapshotter(this.getNotebookCode.bind(this));
115
131
  }
116
132
 
133
+ onNotification(
134
+ listener: (n: {
135
+ jsonrpc: "2.0";
136
+ id?: null | undefined;
137
+ method: "textDocument/publishDiagnostics";
138
+ params: LSP.PublishDiagnosticsParams;
139
+ }) => void,
140
+ ): () => boolean {
141
+ return this.client.onNotification(listener);
142
+ }
143
+
117
144
  get ready(): boolean {
118
145
  return this.client.ready;
119
146
  }
@@ -150,16 +177,6 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
150
177
  this.client.close();
151
178
  }
152
179
 
153
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
154
- detachPlugin(plugin: any): void {
155
- this.client.detachPlugin(plugin);
156
- }
157
-
158
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
159
- attachPlugin(plugin: any): void {
160
- this.client.attachPlugin(plugin);
161
- }
162
-
163
180
  private getNotebookCode() {
164
181
  return store.get(topologicalCodesAtom);
165
182
  }
@@ -371,37 +388,26 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
371
388
  const newEdits = lens.getEditsForNewText(edit.newText);
372
389
  const editsToNewCode = new Map(newEdits.map((e) => [e.cellId, e.text]));
373
390
 
374
- invariant(
375
- isClientWithPlugins(this.client),
376
- "Expected client with plugins.",
377
- );
378
-
379
391
  // Update the code in the plugins manually
380
- for (const plugin of this.client.plugins) {
381
- const documentUri: string = plugin.documentUri;
382
- if (!CellDocumentUri.is(documentUri)) {
383
- Logger.warn("Invalid cell document URI", documentUri);
384
- continue;
385
- }
386
-
387
- const cellId = CellDocumentUri.parse(documentUri);
392
+ const editors = this.getNotebookEditors();
393
+ for (const [cellId, ev] of Objects.entries(editors)) {
388
394
  const newCode = editsToNewCode.get(cellId);
389
395
  if (newCode == null) {
390
396
  Logger.warn("No new code for cell", cellId);
391
397
  continue;
392
398
  }
393
399
 
394
- if (!plugin.view) {
395
- Logger.warn("No view for plugin", plugin);
400
+ if (!ev) {
401
+ Logger.warn("No view for plugin", cellId);
396
402
  continue;
397
403
  }
398
404
 
399
405
  // Only update if it has changed
400
- if (plugin.view.state.doc.toString() !== newCode) {
401
- plugin.view.dispatch({
406
+ if (ev.state.doc.toString() !== newCode) {
407
+ ev.dispatch({
402
408
  changes: {
403
409
  from: 0,
404
- to: plugin.view.state.doc.length,
410
+ to: ev.state.doc.length,
405
411
  insert: newCode,
406
412
  },
407
413
  });
@@ -1,5 +1,5 @@
1
1
  /* Copyright 2024 Marimo. All rights reserved. */
2
- import { WebSocketTransport } from "@open-rpc/client-js";
2
+ import { ReconnectingWebSocketTransport } from "@/core/lsp/transport";
3
3
  import { waitForConnectionOpen } from "../../network/connection";
4
4
  import { getRuntimeManager } from "../../runtime/config";
5
5
 
@@ -16,16 +16,10 @@ export function createTransport(
16
16
  serverName: "pylsp" | "basedpyright" | "copilot" | "ty",
17
17
  ) {
18
18
  const runtimeManager = getRuntimeManager();
19
- const transport = new WebSocketTransport(
20
- runtimeManager.getLSPURL(serverName).toString(),
21
- );
22
-
23
- // Override connect to ensure runtime is healthy
24
- const originalConnect = transport.connect.bind(transport);
25
- transport.connect = async () => {
26
- await waitForConnectionOpen();
27
- return originalConnect();
28
- };
29
-
30
- return transport;
19
+ return new ReconnectingWebSocketTransport({
20
+ getWsUrl: () => runtimeManager.getLSPURL(serverName).toString(),
21
+ waitForConnection: async () => {
22
+ await waitForConnectionOpen();
23
+ },
24
+ });
31
25
  }
@@ -1,6 +1,5 @@
1
1
  /* Copyright 2024 Marimo. All rights reserved. */
2
2
 
3
- import type { EditorView } from "@codemirror/view";
4
3
  import type { LanguageServerClient } from "@marimo-team/codemirror-languageserver";
5
4
  import type { DocumentUri } from "vscode-languageserver-protocol";
6
5
  import type { CellId } from "@/core/cells/ids";
@@ -41,15 +40,3 @@ export function isClientWithNotify(
41
40
  } {
42
41
  return "notify" in client;
43
42
  }
44
-
45
- /**
46
- * Plugins are a @private on `LanguageServerClient`,
47
- * hiding public use with TypeScript.
48
- */
49
- export function isClientWithPlugins(
50
- client: ILanguageServerClient,
51
- ): client is ILanguageServerClient & {
52
- plugins: { documentUri: string; view?: EditorView }[];
53
- } {
54
- return "plugins" in client;
55
- }
@@ -0,0 +1,87 @@
1
+ /* Copyright 2024 Marimo. All rights reserved. */
2
+
3
+ import type { TransactionSpec } from "@codemirror/state";
4
+ import type { EditorView } from "@codemirror/view";
5
+
6
+ /**
7
+ * Replace the entire content of the editor with new content.
8
+ *
9
+ * When the editor has focus, this function attempts to preserve the cursor position
10
+ * by keeping it on the same line and column. If the line no longer exists or shrinks,
11
+ * the cursor is adjusted accordingly. This prevents the cursor from jumping during
12
+ * external updates (e.g., auto-formatting or external edits).
13
+ *
14
+ * When the editor doesn't have focus, the content is replaced without any special handling.
15
+ *
16
+ * @param editor - The CodeMirror editor view
17
+ * @param newContent - The new content to replace the editor with
18
+ * @param options - Optional configuration
19
+ * @param options.preserveCursor - Whether to preserve cursor position when focused (default: true)
20
+ * @param options.effects - Additional effects to apply to the transaction
21
+ * @param options.userEvent - User event string for the transaction
22
+ */
23
+ export function replaceEditorContent(
24
+ editor: EditorView,
25
+ newContent: string,
26
+ options: {
27
+ preserveCursor?: boolean;
28
+ effects?: TransactionSpec["effects"];
29
+ userEvent?: string;
30
+ } = {},
31
+ ): void {
32
+ const { preserveCursor = true, effects, userEvent } = options;
33
+ const doc = editor.state.doc;
34
+ const currentContent = doc.toString();
35
+
36
+ // Noop if content is the same
37
+ if (currentContent === newContent) {
38
+ return;
39
+ }
40
+
41
+ // If editor has focus and we want to preserve cursor, try to maintain position
42
+ if (preserveCursor && editor.hasFocus) {
43
+ const cursorPos = editor.state.selection.main.head;
44
+
45
+ // Get the current line and column
46
+ const currentLine = doc.lineAt(cursorPos);
47
+ const lineNumber = currentLine.number; // 1-based line number
48
+ const columnInLine = cursorPos - currentLine.from; // 0-based column in line
49
+
50
+ // Calculate new cursor position based on line-aware logic
51
+ const newDoc = editor.state.update({
52
+ changes: { from: 0, to: doc.length, insert: newContent },
53
+ }).state.doc;
54
+
55
+ let newCursorPos: number;
56
+
57
+ if (lineNumber <= newDoc.lines) {
58
+ // Line still exists in new document
59
+ const newLine = newDoc.line(lineNumber);
60
+ const newLineLength = newLine.length;
61
+
62
+ // Keep same column, but clamp to line length if line shrank
63
+ newCursorPos = newLine.from + Math.min(columnInLine, newLineLength);
64
+ } else {
65
+ // Line no longer exists, move to the end of the last line
66
+ const lastLine = newDoc.line(newDoc.lines);
67
+ newCursorPos = lastLine.to;
68
+ }
69
+
70
+ // Apply changes with preserved cursor position
71
+ editor.dispatch({
72
+ changes: { from: 0, to: doc.length, insert: newContent },
73
+ selection: {
74
+ anchor: newCursorPos,
75
+ },
76
+ effects,
77
+ userEvent,
78
+ });
79
+ } else {
80
+ // Editor doesn't have focus or we don't want to preserve cursor
81
+ editor.dispatch({
82
+ changes: { from: 0, to: doc.length, insert: newContent },
83
+ effects,
84
+ userEvent,
85
+ });
86
+ }
87
+ }
@@ -57,6 +57,7 @@ test("default UserConfig - empty", () => {
57
57
  "activate_on_typing": true,
58
58
  "copilot": false,
59
59
  },
60
+ "diagnostics": {},
60
61
  "display": {
61
62
  "cell_output": "above",
62
63
  "code_editor_font_size": 14,
@@ -123,6 +124,7 @@ test("default UserConfig - one level", () => {
123
124
  "activate_on_typing": true,
124
125
  "copilot": false,
125
126
  },
127
+ "diagnostics": {},
126
128
  "display": {
127
129
  "cell_output": "above",
128
130
  "code_editor_font_size": 14,
@@ -172,6 +174,7 @@ test("default UserConfig - one level", () => {
172
174
  runtime: {},
173
175
  display: {},
174
176
  experimental: {},
177
+ diagnostics: {},
175
178
  }),
176
179
  ).toEqual(UserConfigSchema.parse({}));
177
180
  });
@@ -44,6 +44,9 @@ export const DEFAULT_AI_MODEL = "openai/gpt-4o";
44
44
  */
45
45
  const AUTO_DOWNLOAD_FORMATS = ["html", "markdown", "ipynb"] as const;
46
46
 
47
+ const COPILOT_MODES = ["manual", "ask", "agent"] as const;
48
+ export type CopilotMode = (typeof COPILOT_MODES)[number];
49
+
47
50
  const AiConfigSchema = z
48
51
  .object({
49
52
  api_key: z.string().optional(),
@@ -151,7 +154,7 @@ export const UserConfigSchema = z
151
154
  ai: z
152
155
  .looseObject({
153
156
  rules: z.string().prefault(""),
154
- mode: z.enum(["manual", "ask"]).prefault("manual"),
157
+ mode: z.enum(COPILOT_MODES).prefault("manual"),
155
158
  inline_tooltip: z.boolean().prefault(false),
156
159
  open_ai: AiConfigSchema.optional(),
157
160
  anthropic: AiConfigSchema.optional(),
@@ -183,6 +186,12 @@ export const UserConfigSchema = z
183
186
  // Pass through so that we don't remove any extra keys that the user has added.
184
187
  .prefault(() => ({})),
185
188
  server: z.looseObject({}).prefault(() => ({})),
189
+ diagnostics: z
190
+ .looseObject({
191
+ enabled: z.boolean().optional(),
192
+ sql_linter: z.boolean().optional(),
193
+ })
194
+ .prefault(() => ({})),
186
195
  sharing: z
187
196
  .looseObject({
188
197
  html: z.boolean().optional(),
@@ -204,6 +213,7 @@ export const UserConfigSchema = z
204
213
  keymap: {},
205
214
  runtime: {},
206
215
  display: {},
216
+ diagnostics: {},
207
217
  experimental: {},
208
218
  server: {},
209
219
  ai: {},
@@ -307,6 +317,7 @@ export function defaultUserConfig(): UserConfig {
307
317
  keymap: {},
308
318
  runtime: {},
309
319
  display: {},
320
+ diagnostics: {},
310
321
  experimental: {},
311
322
  server: {},
312
323
  ai: {},
@@ -11,9 +11,8 @@ export interface ExperimentalFeatures {
11
11
  rtc_v2: boolean;
12
12
  performant_table_charts: boolean;
13
13
  chat_modes: boolean;
14
- sql_linter: boolean;
14
+ cache_panel: boolean;
15
15
  external_agents: boolean;
16
- sql_mode: boolean;
17
16
  // Add new feature flags here
18
17
  }
19
18
 
@@ -23,9 +22,8 @@ const defaultValues: ExperimentalFeatures = {
23
22
  rtc_v2: false,
24
23
  performant_table_charts: false,
25
24
  chat_modes: false,
26
- sql_linter: true,
25
+ cache_panel: false,
27
26
  external_agents: import.meta.env.DEV,
28
- sql_mode: false,
29
27
  };
30
28
 
31
29
  export function getFeatureFlag<T extends keyof ExperimentalFeatures>(
@@ -57,6 +57,7 @@ describe("getAutoFixes", () => {
57
57
  expect(fixes).toHaveLength(1);
58
58
  expect(fixes[0].title).toBe("Fix with AI");
59
59
 
60
+ // No fixes without AI
60
61
  expect(getAutoFixes(error, { aiEnabled: false })).toHaveLength(0);
61
62
  });
62
63
 
@@ -1,21 +1,26 @@
1
1
  /* Copyright 2024 Marimo. All rights reserved. */
2
2
  import type { EditorView } from "@codemirror/view";
3
3
  import { invariant } from "@/utils/invariant";
4
+ import { getDatasourceContext } from "../ai/context/providers/datasource";
5
+ import type { AiCompletionCell } from "../ai/state";
4
6
  import type { CellId } from "../cells/ids";
5
7
  import type { MarimoError } from "../kernel/messages";
6
8
  import { wrapInFunction } from "./utils";
7
9
 
10
+ interface AIFix {
11
+ setAiCompletionCell: (opts: AiCompletionCell) => void;
12
+ triggerFix: boolean;
13
+ }
14
+
8
15
  export interface AutoFix {
9
16
  title: string;
10
17
  description: string;
18
+ fixType: "manual" | "ai";
11
19
  onFix: (ctx: {
12
20
  addCodeBelow: (code: string) => void;
13
21
  editor: EditorView | undefined;
14
22
  cellId: CellId;
15
- setAiCompletionCell?: (cell: {
16
- cellId: CellId;
17
- initialPrompt?: string;
18
- }) => void;
23
+ aiFix?: AIFix;
19
24
  }) => Promise<void>;
20
25
  }
21
26
 
@@ -31,6 +36,7 @@ export function getAutoFixes(
31
36
  title: "Fix: Wrap in a function",
32
37
  description:
33
38
  "Make this cell's variables local by wrapping the cell in a function.",
39
+ fixType: "manual",
34
40
  onFix: async (ctx) => {
35
41
  invariant(ctx.editor, "Editor is null");
36
42
  const code = wrapInFunction(ctx.editor.state.doc.toString());
@@ -59,6 +65,7 @@ export function getAutoFixes(
59
65
  {
60
66
  title: `Fix: Add '${cellCode}'`,
61
67
  description: "Add a new cell for the missing import",
68
+ fixType: "manual",
62
69
  onFix: async (ctx) => {
63
70
  ctx.addCodeBelow(cellCode);
64
71
  },
@@ -75,10 +82,17 @@ export function getAutoFixes(
75
82
  {
76
83
  title: "Fix with AI",
77
84
  description: "Fix the SQL statement",
85
+ fixType: "ai",
78
86
  onFix: async (ctx) => {
79
- ctx.setAiCompletionCell?.({
87
+ const datasourceContext = getDatasourceContext(ctx.cellId);
88
+ let initialPrompt = `Fix the SQL statement: ${error.msg}.`;
89
+ if (datasourceContext) {
90
+ initialPrompt += `\nDatabase schema: ${datasourceContext}`;
91
+ }
92
+ ctx.aiFix?.setAiCompletionCell({
80
93
  cellId: ctx.cellId,
81
- initialPrompt: `Fix the SQL statement: ${error.msg}`,
94
+ initialPrompt: initialPrompt,
95
+ triggerImmediately: ctx.aiFix.triggerFix,
82
96
  });
83
97
  },
84
98
  },
@@ -239,6 +239,18 @@ const DEFAULT_HOT_KEY = {
239
239
  group: "Editing",
240
240
  key: "F2",
241
241
  },
242
+ "cell.copyLineUp": {
243
+ name: "Copy line(s) up",
244
+ group: "Editing",
245
+ key: "Alt-Shift-ArrowUp",
246
+ editable: false,
247
+ },
248
+ "cell.copyLineDown": {
249
+ name: "Copy line(s) down",
250
+ group: "Editing",
251
+ key: "Alt-Shift-ArrowDown",
252
+ editable: false,
253
+ },
242
254
 
243
255
  // Markdown
244
256
  "markdown.bold": {
@@ -180,6 +180,8 @@ export class IslandsPyodideBridge implements RunRequests, EditRequests {
180
180
  listSecretKeys = throwNotImplemented;
181
181
  writeSecret = throwNotImplemented;
182
182
  invokeAiTool = throwNotImplemented;
183
+ clearCache = throwNotImplemented;
184
+ getCacheInfo = throwNotImplemented;
183
185
 
184
186
  private async putControlRequest(operation: object) {
185
187
  await this.rpc.proxy.request.bridge({
@@ -185,6 +185,10 @@ export async function initialize() {
185
185
  return;
186
186
  case "reconnected":
187
187
  return;
188
+ case "cache-cleared":
189
+ return;
190
+ case "cache-info-fetched":
191
+ return;
188
192
  default:
189
193
  logNever(msg.data);
190
194
  }
@@ -43,6 +43,7 @@ export type SecretKeysResult = OperationMessageData<"secret-keys-result">;
43
43
  export type StartupLogs = OperationMessageData<"startup-logs">;
44
44
  export type CellMessage = OperationMessageData<"cell-op">;
45
45
  export type Capabilities = OperationMessageData<"kernel-ready">["capabilities"];
46
+ export type CacheInfoFetched = OperationMessageData<"cache-info-fetched">;
46
47
 
47
48
  export type MessageOperationUnion = schemas["KnownUnions"]["operation"];
48
49