@marimo-team/islands 0.17.2 → 0.17.4

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 (582) hide show
  1. package/dist/{Combination-De9yoNY5.js → Combination-DrSsMSEB.js} +860 -816
  2. package/dist/{ConnectedDataExplorerComponent-DuvpJOKp.js → ConnectedDataExplorerComponent-DY9cADKc.js} +2282 -2232
  3. package/dist/{ImageComparisonComponent--etUl2pp.js → ImageComparisonComponent-CJvR7Qzp.js} +3 -2
  4. package/dist/{_baseIsEqual-BFlyFUxC.js → _baseIsEqual-DbBiwJP8.js} +1 -1
  5. package/dist/{_basePickBy-gCCvtjgp.js → _basePickBy-ChFDiIEt.js} +3 -3
  6. package/dist/{_baseProperty-BuqBC0Ie.js → _baseProperty-Bf09f9Ee.js} +5 -5
  7. package/dist/_baseUniq-D5kohCWB.js +59 -0
  8. package/dist/any-language-editor-Bs2c1bKU.js +156 -0
  9. package/dist/apl-Bp8pgLcx.js +4 -0
  10. package/dist/{arc-C_O2hc-b.js → arc-DM-UhhIs.js} +2 -2
  11. package/dist/architecture-O4VJ6CD3-SVEfQWDz.js +24 -0
  12. package/dist/{architectureDiagram-W76B3OCA-CrK99pJi.js → architectureDiagram-W76B3OCA-GKSiVAlH.js} +41 -38
  13. package/dist/asciiarmor-IoNSjDv9.js +4 -0
  14. package/dist/asn1-B1GnbkOF.js +4 -0
  15. package/dist/{blockDiagram-QIGZ2CNN-BJOEyO6w.js → blockDiagram-QIGZ2CNN-wX8KWoV2.js} +30 -29
  16. package/dist/brainfuck-TRxEs4B5.js +4 -0
  17. package/dist/{button-ADXOb_gX.js → button-B8zS4Mtw.js} +5 -4
  18. package/dist/{c4Diagram-FPNF74CW-7Pz_X9wF.js → c4Diagram-FPNF74CW-Ns4C9pNn.js} +12 -12
  19. package/dist/{channel-X-wRUxX6.js → channel-Dgla_oqe.js} +1 -1
  20. package/dist/{check-COlaG7Ss.js → check-BZnPxXnd.js} +1 -1
  21. package/dist/{chunk-3AY6CYHV-BQH2fFpA.js → chunk-3AY6CYHV-HfZ-8MFM.js} +10 -10
  22. package/dist/{chunk-4BX2VUAB-D-QtDCKM.js → chunk-4BX2VUAB-CV5cUTmw.js} +1 -1
  23. package/dist/{chunk-4KMFLZZN-BirZvvJS.js → chunk-4KMFLZZN-Cbgb64pE.js} +17 -18
  24. package/dist/{chunk-55IACEB6-DjtPYZKs.js → chunk-55IACEB6--aEkhs1O.js} +1 -1
  25. package/dist/{chunk-6OXUPJBA-CTnnqlzw.js → chunk-6OXUPJBA-DQZp24uZ.js} +7 -7
  26. package/dist/{chunk-7GE3RBXV-CT47hCrL.js → chunk-7GE3RBXV-D0K_8mbM.js} +1 -1
  27. package/dist/{chunk-ABZYJK2D-B6ZsU6SR.js → chunk-ABZYJK2D-BwKkjFgF.js} +3 -3
  28. package/dist/{chunk-BN7GFLIU-DYWEsrG4.js → chunk-BN7GFLIU-93ktvOI2.js} +1 -1
  29. package/dist/{chunk-CVBHYZKI-BuzDGXz0.js → chunk-CVBHYZKI-tTpx9vm_.js} +1 -1
  30. package/dist/{chunk-CXMOBAN2-Bas2S5w1.js → chunk-CXMOBAN2-CagHnxl1.js} +6 -6
  31. package/dist/{chunk-EXTU4WIE-DXwNSukz.js → chunk-EXTU4WIE-Ve2vgn5X.js} +2 -2
  32. package/dist/{chunk-FMBD7UC4-CYKEpuPr.js → chunk-FMBD7UC4-CCvcIQpJ.js} +1 -1
  33. package/dist/{chunk-JA3XYJ7Z-DcxfkcDC.js → chunk-JA3XYJ7Z-CrQC4eYr.js} +4 -4
  34. package/dist/{chunk-JEIROHC2-C01ZIcIG.js → chunk-JEIROHC2-tuJLHPKk.js} +1 -1
  35. package/dist/{chunk-K7UQS3LO-CmbT97MV.js → chunk-K7UQS3LO-BzsTVREe.js} +7 -7
  36. package/dist/{chunk-KMC2YHZD-D64m-1E1.js → chunk-KMC2YHZD-CdKOlVi0.js} +1 -1
  37. package/dist/{chunk-QN33PNHL-DjB0j8Dr.js → chunk-QN33PNHL-CbdYySGk.js} +2 -2
  38. package/dist/{chunk-QYVHNE3D-VA4W4oxG.js → chunk-QYVHNE3D-BDj4udRH.js} +2 -2
  39. package/dist/{chunk-QZHKN3VN-KT0fl3Em.js → chunk-QZHKN3VN-E6VBm6ir.js} +1 -1
  40. package/dist/{chunk-S3R3BYOJ-C5zmcMvn.js → chunk-S3R3BYOJ-DuumGJ4u.js} +6 -6
  41. package/dist/{chunk-T44TD3VJ-BMOgu-Hk.js → chunk-T44TD3VJ-Bc-UhG4i.js} +1 -1
  42. package/dist/{chunk-TVAH2DTR-eKm8SKnH.js → chunk-TVAH2DTR-s8skdWqT.js} +6 -6
  43. package/dist/{chunk-TZMSLE5B-CQxFRiI2.js → chunk-TZMSLE5B-CUfRRoFb.js} +3 -3
  44. package/dist/{chunk-WFRQ32O7-Dg51o277.js → chunk-WFRQ32O7-BquRwCCj.js} +1 -1
  45. package/dist/{chunk-WFWHJNB7-DVLO98ge.js → chunk-WFWHJNB7-CHl0gCzu.js} +1 -1
  46. package/dist/{chunk-XRWGC2XP-UNFKdWQh.js → chunk-XRWGC2XP-CoSEoOcO.js} +1 -1
  47. package/dist/{chunk-ZPAFE4SF-DbCSwfLK.js → chunk-ZPAFE4SF-Bf1fn8cY.js} +1 -1
  48. package/dist/classDiagram-KNZD7YFC-ONLi1fgN.js +40 -0
  49. package/dist/classDiagram-v2-RKCZMP56-Ceij_i8m.js +40 -0
  50. package/dist/{clike-CytFO-kN.js → clike-Cbszc5XU.js} +1 -1
  51. package/dist/clojure-BNTL3o8Z.js +4 -0
  52. package/dist/{clone-CCgVUJ6x.js → clone-DE59DFkY.js} +1 -1
  53. package/dist/cmake-Bp6uEjiS.js +4 -0
  54. package/dist/cobol-CtS_R__A.js +4 -0
  55. package/dist/coffeescript-D5u5aYAu.js +4 -0
  56. package/dist/commonlisp-BvLWy9eh.js +4 -0
  57. package/dist/compiler-runtime-5MdCVm0X.js +13 -0
  58. package/dist/{constants-BaCMVd12.js → constants-BlvmN57i.js} +3 -3
  59. package/dist/{copy-GNcK40wy.js → copy-bxQOKABs.js} +2 -2
  60. package/dist/{cose-bilkent-S5V4N54A-BnvuJG6Y.js → cose-bilkent-S5V4N54A-DZE8LVzQ.js} +3 -3
  61. package/dist/crystal-CaTWnt-Z.js +4 -0
  62. package/dist/css-BMUPibQH.js +5 -0
  63. package/dist/cypher-PopjPg_G.js +4 -0
  64. package/dist/d-Ds7bO8W5.js +4 -0
  65. package/dist/{dagre-5GWH7T2D-rn7tZYaQ.js → dagre-5GWH7T2D-g2ShbPGy.js} +39 -37
  66. package/dist/{dagre-Bghq6VKO.js → dagre-TBn9HZB0.js} +14 -13
  67. package/dist/{data-grid-overlay-editor-B4_Caieu.js → data-grid-overlay-editor-BuhjNOgs.js} +4 -4
  68. package/dist/{diagram-N5W7TBWH-lbF94o-g.js → diagram-N5W7TBWH-BYhyeV0B.js} +44 -41
  69. package/dist/{diagram-QEK2KX5R-CKBhSzsO.js → diagram-QEK2KX5R-CiuUIBpl.js} +38 -35
  70. package/dist/{diagram-S2PKOQOG-161_1f53.js → diagram-S2PKOQOG-D0Z2Q5P-.js} +38 -35
  71. package/dist/diff-C_xR-pxD.js +4 -0
  72. package/dist/{dist-BSyYM1Gi.js → dist-7CqcJssH.js} +6 -6
  73. package/dist/{dist-C9-uHBqC.js → dist-8v4BI_h_.js} +1 -1
  74. package/dist/{dist-71jYYbWP.js → dist-B3CNaJau.js} +2 -2
  75. package/dist/dist-B9JCXzyv.js +6 -0
  76. package/dist/{dist-DzJem5xc.js → dist-BMhv6XDi.js} +1 -1
  77. package/dist/{dist-CWh5ZwcC.js → dist-BYS0EtbC.js} +2 -2
  78. package/dist/{dist-BaPjLM6s.js → dist-BgsDu-bU.js} +1 -1
  79. package/dist/{dist-CNAkUyxv.js → dist-BxmsyHv5.js} +1 -1
  80. package/dist/{dist-CWqB4bg8.js → dist-C02gS--y.js} +3 -3
  81. package/dist/{dist-C76MUPD3.js → dist-C5Iu9a3-.js} +2 -2
  82. package/dist/{dist-DxESp2-T.js → dist-C5Ns3q-m.js} +3 -3
  83. package/dist/dist-C6QrJGYr.js +10 -0
  84. package/dist/{dist-BAqp4Vtl.js → dist-CBu8cgzz.js} +8 -4
  85. package/dist/dist-CFZ32udY.js +6 -0
  86. package/dist/{dist-DaTVdKJa.js → dist-CXimnGhI.js} +2 -2
  87. package/dist/{dist-CtOeHDJp.js → dist-CawOxmKh.js} +5 -5
  88. package/dist/dist-CmgxQNWN.js +10 -0
  89. package/dist/dist-Cr6Cu8sC.js +6 -0
  90. package/dist/{dist-BBhmkni2.js → dist-CxRajUZ6.js} +1 -1
  91. package/dist/{dist-CPNnKuPh.js → dist-D08oiinq.js} +12 -10
  92. package/dist/{dist-BNRdMfJH.js → dist-D4LUTYHc.js} +2 -2
  93. package/dist/{dist-C2IEc8og.js → dist-DGKjHTv9.js} +5 -5
  94. package/dist/{dist-4dtbqf8A.js → dist-DGnWQOnS.js} +3 -3
  95. package/dist/{dist-BqdQPWpQ.js → dist-DSDOMDNR.js} +2 -2
  96. package/dist/{dist-_4cudra1.js → dist-DTNqkRGE.js} +3 -3
  97. package/dist/{dist-28HYzERB.js → dist-D_GkrgWD.js} +2 -2
  98. package/dist/{dist-Cw0F6l-7.js → dist-DbHWFmjZ.js} +1 -1
  99. package/dist/{dist-B_wjJqqS.js → dist-Dh7gw0Ay.js} +2 -2
  100. package/dist/{dist-B8Pbw5ln.js → dist-DiO9ni9a.js} +2 -2
  101. package/dist/{dist-BYHiiJB-.js → dist-DlSZED-1.js} +2 -2
  102. package/dist/{dist-Da046MhT.js → dist-DvsjKDQ4.js} +1 -1
  103. package/dist/{dist-O0zVziwn.js → dist-DzKKEoge.js} +3 -3
  104. package/dist/{dist-CwZcC4om.js → dist-HKzG1oF6.js} +1 -1
  105. package/dist/{dist-CJb8EiFO.js → dist-K_AqLCfS.js} +3 -3
  106. package/dist/dist-NxHLuq7w.js +6 -0
  107. package/dist/dist-S2JcqPPB.js +12 -0
  108. package/dist/{dist-CNvMOZu9.js → dist-XkGsOiy0.js} +2 -2
  109. package/dist/{dist-Drf3cyIW.js → dist-_tHnp24J.js} +3 -3
  110. package/dist/{dist-xLN9qCAp.js → dist-eSnWVS11.js} +3 -3
  111. package/dist/dist-hcPlrsR9.js +6 -0
  112. package/dist/{dist-DlK420ke.js → dist-owpR56zn.js} +1 -1
  113. package/dist/dist-poXa8G8m.js +6 -0
  114. package/dist/{dist-CTIyD_KU.js → dist-qGpLTiEi.js} +3 -3
  115. package/dist/{dockerfile-Cmlcqk35.js → dockerfile-CWWeWT3z.js} +1 -1
  116. package/dist/dtd-CGRYzaHQ.js +4 -0
  117. package/dist/dylan-Ctfki5HL.js +4 -0
  118. package/dist/ecl--gmEivzz.js +4 -0
  119. package/dist/eiffel-o31DRAP-.js +4 -0
  120. package/dist/elm-Dqa6TVIh.js +4 -0
  121. package/dist/{erDiagram-AWTI2OKA-BU7Qig7n.js → erDiagram-AWTI2OKA-BeadFjpg.js} +25 -25
  122. package/dist/erlang-BtVO_vQG.js +4 -0
  123. package/dist/error-banner-B7LmpmGT.js +1013 -0
  124. package/dist/{esm-Oo8OvZ6m.js → esm-CQIOyi5v.js} +579 -564
  125. package/dist/{factor-BZnBK3CG.js → factor-7tQNNEWF.js} +1 -1
  126. package/dist/factor-CNLvRc__.js +5 -0
  127. package/dist/{flowDiagram-PVAE7QVJ-JKJebWeY.js → flowDiagram-PVAE7QVJ-GgklUvqn.js} +27 -27
  128. package/dist/{formats-DOEuF6TR.js → formats-kyFd0DPJ.js} +23 -22
  129. package/dist/forth-Bp2zDfH-.js +4 -0
  130. package/dist/fortran-B3A-KieX.js +4 -0
  131. package/dist/{ganttDiagram-OWAHRB6G-BvWRfg05.js → ganttDiagram-OWAHRB6G-D5wYR6WK.js} +17 -17
  132. package/dist/gas-_Xt_kGOG.js +4 -0
  133. package/dist/gherkin-DzZpg8Ls.js +4 -0
  134. package/dist/gitGraph-ZV4HHKMB-DFGD7PPm.js +24 -0
  135. package/dist/{gitGraphDiagram-NY62KEGX-VEJJBf5L.js → gitGraphDiagram-NY62KEGX-DCwA-g9b.js} +38 -35
  136. package/dist/{glide-data-editor-Bne10icG.js → glide-data-editor-1bUl_mRe.js} +515 -515
  137. package/dist/graphlib-R11f1son.js +228 -0
  138. package/dist/groovy-BtD10jRQ.js +4 -0
  139. package/dist/haskell-C-JVWnIV.js +4 -0
  140. package/dist/haxe-Del5TcJQ.js +5 -0
  141. package/dist/idl-BLlRatde.js +4 -0
  142. package/dist/info-63CPKGFF-eZyiEu_4.js +24 -0
  143. package/dist/infoDiagram-STP46IZ2-CUr2vZlE.js +48 -0
  144. package/dist/{isEmpty-Do_v2sls.js → isEmpty-CIFmGKJN.js} +2 -2
  145. package/dist/isString-BsphYkXQ.js +9 -0
  146. package/dist/{isSymbol-CtkA8Y0a.js → isSymbol-BnxbuvDK.js} +1 -1
  147. package/dist/javascript-Bm7QL4E3.js +5 -0
  148. package/dist/jinja2-BxbImxq2.js +4 -0
  149. package/dist/{journeyDiagram-BIP6EPQ6-CsgEQgxh.js → journeyDiagram-BIP6EPQ6-DtjQC_m1.js} +10 -10
  150. package/dist/jsx-runtime-CvL6gNI-.js +22 -0
  151. package/dist/julia-DV1Vz9mw.js +4 -0
  152. package/dist/{kanban-definition-6OIFK2YF-Bi8Ete2P.js → kanban-definition-6OIFK2YF-U3q5gvb8.js} +19 -19
  153. package/dist/{katex-C-g3rKKt.js → katex-BWgzyQrl.js} +1 -1
  154. package/dist/{label-BiVIU_wb.js → label-Wr-xTlW7.js} +463 -453
  155. package/dist/{line-B7-GoF1m.js → line-C7OvOvNm.js} +3 -3
  156. package/dist/{linear-DeGGALuc.js → linear-CgANSWNu.js} +4 -4
  157. package/dist/livescript-9UMSMMrl.js +4 -0
  158. package/dist/{loader-BBqwtZWj.js → loader-Dj9XWZTh.js} +164 -4
  159. package/dist/lua-Bcbc7wWe.js +4 -0
  160. package/dist/main.js +40727 -41561
  161. package/dist/mathematica-DG4QUwYU.js +4 -0
  162. package/dist/mbox--auqAoPc.js +4 -0
  163. package/dist/{memoize-D7eDkf3R.js → memoize-XkDn33QI.js} +1 -1
  164. package/dist/{merge-C_6cGM6o.js → merge-dMlizkC5.js} +1 -1
  165. package/dist/{mermaid-BmtvsZ2m.js → mermaid-DIjoC4T4.js} +67 -66
  166. package/dist/{mermaid-parser.core-geyG_6o0.js → mermaid-parser.core-B433qyUL.js} +8 -8
  167. package/dist/{mhchem-OhAaJ0fA.js → mhchem-1x4KnXMF.js} +1 -1
  168. package/dist/min-WjLsUjBa.js +89 -0
  169. package/dist/{mindmap-definition-Q6HEUPPD-B-wmX1oG.js → mindmap-definition-Q6HEUPPD-LFgV4R8y.js} +24 -24
  170. package/dist/mirc-9dVcMicH.js +4 -0
  171. package/dist/mllike-Di9N4E3Q.js +6 -0
  172. package/dist/modelica-S3adENkL.js +4 -0
  173. package/dist/mscgen-DAG0zH4w.js +6 -0
  174. package/dist/mumps-afzuy08D.js +4 -0
  175. package/dist/{now-DumxsrcX.js → now-8WTe-KKa.js} +1 -1
  176. package/dist/nsis-Bzwy0lPH.js +5 -0
  177. package/dist/{nsis-D4bLR_Y1.js → nsis-CFb2Zrib.js} +1 -1
  178. package/dist/ntriples-D9oM8s3v.js +4 -0
  179. package/dist/{number-overlay-editor-D6r-48ka.js → number-overlay-editor-DYjnpjXo.js} +2 -2
  180. package/dist/octave-BMLCk2qM.js +4 -0
  181. package/dist/{once-3OSMKEsL.js → once-rI5AYku5.js} +1 -1
  182. package/dist/{ordinal-DpEbSVPc.js → ordinal-pQYxWJYN.js} +1 -1
  183. package/dist/oz-CX5JTWTK.js +4 -0
  184. package/dist/packet-HUATNLJX-BvWMmF9U.js +24 -0
  185. package/dist/pascal-BeZmsfFX.js +4 -0
  186. package/dist/perl-CZ_HryPN.js +4 -0
  187. package/dist/pie-WTHONI2E-BCXZJKz0.js +24 -0
  188. package/dist/{pieDiagram-ADFJNKIX-C3GvPNUL.js → pieDiagram-ADFJNKIX-CsZmho0o.js} +43 -40
  189. package/dist/pig-OPEEOu6V.js +4 -0
  190. package/dist/powershell-DyR-5LnA.js +4 -0
  191. package/dist/{precisionRound-7YYJq2rW.js → precisionRound-DMLkFNYv.js} +1 -1
  192. package/dist/properties-Cl4tecfb.js +4 -0
  193. package/dist/protobuf-B8X247vV.js +4 -0
  194. package/dist/pug-Kmpa-Pbv.js +5 -0
  195. package/dist/{pug-Dv3gE36O.js → pug-ZDYeT34w.js} +1 -1
  196. package/dist/puppet-Pl07qkSO.js +4 -0
  197. package/dist/python-DQgTXBpp.js +5 -0
  198. package/dist/q-D7uiP00h.js +4 -0
  199. package/dist/{quadrantDiagram-LMRXKWRM-DPXwGNVa.js → quadrantDiagram-LMRXKWRM-CY6GTOgM.js} +8 -8
  200. package/dist/r-DbUoToEd.js +4 -0
  201. package/dist/radar-NJJJXTRR-8kjOeCwx.js +24 -0
  202. package/dist/{range-CIbLpsrs.js → range-CTMc_Qhu.js} +3 -3
  203. package/dist/{react-plotly-DYyvxcRD.js → react-plotly-Cs07wkly.js} +2 -2
  204. package/dist/react-vega-B9eMrRW1.js +32035 -0
  205. package/dist/react-vega-DM3e8kar.js +25 -0
  206. package/dist/reduce-C-jV7KRY.js +268 -0
  207. package/dist/{requirementDiagram-4UW4RH46-Cs3Hqnm0.js → requirementDiagram-4UW4RH46-CfLWneBF.js} +24 -24
  208. package/dist/rpm-BjQFZZ1e.js +5 -0
  209. package/dist/ruby-BXpop5ZX.js +4 -0
  210. package/dist/{sankeyDiagram-GR3RE2ED-Be1d_Xf7.js → sankeyDiagram-GR3RE2ED-Dkxfzm6f.js} +7 -7
  211. package/dist/sas-CzFr9Hlz.js +4 -0
  212. package/dist/scheme-C6QRPvcm.js +4 -0
  213. package/dist/{sequenceDiagram-C3RYC4MD-lbtovKTa.js → sequenceDiagram-C3RYC4MD-hSi31Kfa.js} +14 -14
  214. package/dist/shell-Bs7FrcsL.js +4 -0
  215. package/dist/sieve-D39XRya9.js +4 -0
  216. package/dist/{slides-component-BoeQU7-s.js → slides-component-Ct11erUn.js} +9 -8
  217. package/dist/smalltalk-CdAwDOFE.js +4 -0
  218. package/dist/sparql-DsDWhEhN.js +4 -0
  219. package/dist/spec-rqRnkIf4.js +1256 -0
  220. package/dist/{src-BTqT1mA1.js → src-CKr0QbVy.js} +1 -1
  221. package/dist/{stateDiagram-KXAO66HF-BmbR-Rol.js → stateDiagram-KXAO66HF-DJsLA_DN.js} +42 -40
  222. package/dist/stateDiagram-v2-UMBNRL4Z-D-p_ngHt.js +39 -0
  223. package/dist/{step-2RJrMSSG.js → step-BsM8YHun.js} +1 -1
  224. package/dist/stex-DvqvBdH8.js +5 -0
  225. package/dist/style.css +1 -1
  226. package/dist/stylus-DxzxWmvV.js +4 -0
  227. package/dist/swift-DTC4Wg4z.js +4 -0
  228. package/dist/tcl-DantlS-i.js +4 -0
  229. package/dist/textile-pOphaahD.js +4 -0
  230. package/dist/{time-BB30r1tK.js → time-U9NHhrDC.js} +4 -4
  231. package/dist/{timeline-definition-XQNQX7LJ-1mv5caPW.js → timeline-definition-XQNQX7LJ-rojWjX6M.js} +7 -7
  232. package/dist/{toNumber-D3Ystr3y.js → toNumber-CUG0Hyhp.js} +2 -2
  233. package/dist/{toString-CbuxCRDG.js → toString-CT4n1k2E.js} +2 -2
  234. package/dist/toml-hgYsPM5p.js +4 -0
  235. package/dist/treemap-75Q7IDZK-Do1WIR9v.js +24 -0
  236. package/dist/troff-BwevrEUZ.js +4 -0
  237. package/dist/{dtd-RplB6hDg.js → ttcn-C5gJcxta.js} +2 -2
  238. package/dist/ttcn-cfg-CPKlfqST.js +4 -0
  239. package/dist/turtle-EH0lMhMf.js +4 -0
  240. package/dist/{types-BPohCsA7.js → types-Bt7p5SYB.js} +1028 -1038
  241. package/dist/uniq-DgSyegN3.js +8 -0
  242. package/dist/{useAsyncData-DHBqeb9a.js → useAsyncData-Dp2V69OV.js} +3 -3
  243. package/dist/{useIframeCapabilities-BEvvwlwt.js → useIframeCapabilities-B9u0SmJ4.js} +2 -2
  244. package/dist/{useTheme-CnMbo-iq.js → useTheme-D7vlj42b.js} +4 -4
  245. package/dist/vb-DNk7gts-.js +4 -0
  246. package/dist/vbscript-znK_5PUS.js +4 -0
  247. package/dist/vega-component-C58Jk3ub.js +633 -0
  248. package/dist/{vega-loader.browser.module-CFMtdrNw.js → vega-loader.browser-BK7-IO9k.js} +91 -99
  249. package/dist/velocity-DmPhlhdp.js +4 -0
  250. package/dist/verilog-CePnwf4S.js +4 -0
  251. package/dist/vhdl-Ckdh8uiO.js +4 -0
  252. package/dist/webidl-8N8qbzRd.js +4 -0
  253. package/dist/xquery-Cocyk-z0.js +4 -0
  254. package/dist/{xychartDiagram-6GGTOJPD-njc-naaw.js → xychartDiagram-6GGTOJPD-CiC1eONZ.js} +23 -23
  255. package/dist/yacas-CPmShRg-.js +4 -0
  256. package/dist/z80-B500UaFh.js +4 -0
  257. package/package.json +12 -9
  258. package/src/components/ai/ai-provider-icon.tsx +2 -1
  259. package/src/components/app-config/constants.ts +25 -1
  260. package/src/components/charts/lazy.tsx +7 -0
  261. package/src/components/charts/tooltip.ts +5 -0
  262. package/src/components/charts/types.ts +8 -0
  263. package/src/components/chat/acp/__tests__/state.test.ts +0 -13
  264. package/src/components/chat/acp/agent-panel.tsx +7 -1
  265. package/src/components/chat/acp/agent-selector.tsx +5 -0
  266. package/src/components/chat/acp/blocks.tsx +51 -8
  267. package/src/components/chat/acp/state.ts +8 -2
  268. package/src/components/chat/acp/thread.tsx +10 -3
  269. package/src/components/chat/chat-panel.tsx +7 -1
  270. package/src/components/data-table/__tests__/__snapshots__/chart-spec-model.test.ts.snap +473 -184
  271. package/src/components/data-table/__tests__/chart-spec-model.test.ts +32 -28
  272. package/src/components/data-table/charts/__tests__/__snapshots__/spec-snapshot.test.ts.snap +1 -1
  273. package/src/components/data-table/charts/__tests__/altair-generator.test.ts +162 -0
  274. package/src/components/data-table/charts/__tests__/spec-snapshot.test.ts +1 -1
  275. package/src/components/data-table/charts/__tests__/spec.test.ts +145 -6
  276. package/src/components/data-table/charts/chart-spec/altair-generator.ts +6 -1
  277. package/src/components/data-table/charts/chart-spec/encodings.ts +11 -7
  278. package/src/components/data-table/charts/chart-spec/spec.ts +9 -8
  279. package/src/components/data-table/charts/chart-spec/tooltips.ts +4 -3
  280. package/src/components/data-table/charts/chart-spec/types.ts +1 -1
  281. package/src/components/data-table/charts/chart-spec/utils.ts +23 -0
  282. package/src/components/data-table/charts/components/form-fields.tsx +2 -2
  283. package/src/components/data-table/charts/constants.ts +7 -3
  284. package/src/components/data-table/charts/lazy-chart.tsx +15 -11
  285. package/src/components/data-table/charts/types.ts +6 -14
  286. package/src/components/data-table/column-summary/chart-spec-model.tsx +112 -269
  287. package/src/components/data-table/column-summary/column-summary.tsx +12 -12
  288. package/src/components/data-table/column-summary/legacy-chart-spec.ts +78 -2
  289. package/src/components/data-table/column-summary/utils.ts +1 -1
  290. package/src/components/datasources/__tests__/utils.test.ts +339 -138
  291. package/src/components/datasources/column-preview.tsx +9 -9
  292. package/src/components/datasources/datasources.tsx +4 -0
  293. package/src/components/datasources/utils.ts +94 -4
  294. package/src/components/editor/Output.tsx +9 -6
  295. package/src/components/editor/ai/ai-completion-editor.tsx +2 -2
  296. package/src/components/editor/code/readonly-diff.tsx +4 -0
  297. package/src/components/editor/output/ConsoleOutput.tsx +14 -11
  298. package/src/components/editor/renderers/slides-layout/types.ts +1 -1
  299. package/src/components/tracing/tracing-spec.ts +2 -2
  300. package/src/components/tracing/tracing.test.tsx +1 -1
  301. package/src/components/tracing/tracing.tsx +57 -74
  302. package/src/components/tracing/utils.ts +22 -0
  303. package/src/components/ui/query-param-preserving-link.tsx +48 -0
  304. package/src/core/ai/context/providers/__tests__/cell-output.test.ts +12 -1
  305. package/src/core/ai/context/providers/cell-output.ts +2 -8
  306. package/src/core/ai/tools/__tests__/run-cells-tool.test.ts +1 -1
  307. package/src/core/ai/tools/edit-notebook-tool.ts +15 -7
  308. package/src/core/ai/tools/run-cells-tool.ts +60 -26
  309. package/src/core/cells/ids.ts +1 -1
  310. package/src/core/codemirror/language/__tests__/extension.test.ts +6 -12
  311. package/src/core/codemirror/language/__tests__/markdown.test.ts +23 -36
  312. package/src/core/codemirror/language/languages/python.ts +40 -6
  313. package/src/core/codemirror/language/languages/sql/completion-store.ts +2 -2
  314. package/src/core/codemirror/language/languages/sql/sql.ts +14 -0
  315. package/src/core/codemirror/language/languages/sql/utils.ts +54 -3
  316. package/src/core/codemirror/lsp/notebook-lsp.ts +52 -4
  317. package/src/core/codemirror/lsp/transports.ts +3 -0
  318. package/src/core/datasets/__tests__/data-source.test.ts +6 -0
  319. package/src/core/datasets/data-source-connections.ts +1 -0
  320. package/src/core/dom/__tests__/outline.test.ts +43 -0
  321. package/src/core/dom/outline.ts +1 -1
  322. package/src/core/islands/main.ts +2 -0
  323. package/src/core/lsp/__tests__/transport.test.ts +57 -0
  324. package/src/core/lsp/transport.ts +16 -0
  325. package/src/css/md.css +6 -0
  326. package/src/plugins/core/RenderHTML.tsx +26 -0
  327. package/src/plugins/core/__test__/sanitize.test.ts +27 -0
  328. package/src/plugins/core/sanitize.ts +9 -2
  329. package/src/plugins/impl/DataTablePlugin.tsx +21 -27
  330. package/src/plugins/impl/data-explorer/ConnectedDataExplorerComponent.tsx +26 -22
  331. package/src/plugins/impl/data-explorer/functions/function.ts +1 -2
  332. package/src/plugins/impl/data-explorer/functions/types.ts +65 -14
  333. package/src/plugins/impl/data-explorer/queries/queries.ts +9 -9
  334. package/src/plugins/impl/data-explorer/queries/types.ts +23 -5
  335. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +2 -1
  336. package/src/plugins/impl/vega/__tests__/__snapshots__/make-selectable.test.ts.snap +2309 -0
  337. package/src/plugins/impl/vega/__tests__/encodings.test.ts +93 -0
  338. package/src/plugins/impl/vega/__tests__/make-selectable.test.ts +621 -0
  339. package/src/plugins/impl/vega/__tests__/params.test.ts +121 -1
  340. package/src/plugins/impl/vega/encodings.ts +16 -2
  341. package/src/plugins/impl/vega/make-selectable.ts +339 -10
  342. package/src/plugins/impl/vega/params.ts +76 -14
  343. package/src/plugins/impl/vega/types.ts +32 -13
  344. package/src/plugins/impl/vega/vega-component.tsx +74 -26
  345. package/src/plugins/impl/vega/vega.css +1 -0
  346. package/src/stories/__fixtures__/vega.ts +1 -1
  347. package/src/utils/arrays.ts +16 -0
  348. package/dist/_baseUniq-CKN9mEDq.js +0 -324
  349. package/dist/any-language-editor-Du2Q_6IK.js +0 -156
  350. package/dist/apl-CUm2DGqh.js +0 -4
  351. package/dist/architecture-O4VJ6CD3-PFw3eFBY.js +0 -21
  352. package/dist/asciiarmor-lqJ78U01.js +0 -4
  353. package/dist/asn1-CjwpSTlW.js +0 -4
  354. package/dist/brainfuck-ClvDI1dq.js +0 -4
  355. package/dist/classDiagram-KNZD7YFC-HUFFxNdk.js +0 -40
  356. package/dist/classDiagram-v2-RKCZMP56-Dw7Acmuf.js +0 -40
  357. package/dist/clojure-8GefCgPe.js +0 -4
  358. package/dist/cmake-yAhT9H0F.js +0 -4
  359. package/dist/cobol-BmltueOY.js +0 -4
  360. package/dist/coffeescript-C7KEQBcH.js +0 -4
  361. package/dist/commonlisp-CNbiJRU-.js +0 -4
  362. package/dist/crystal-OdjZZ8bc.js +0 -4
  363. package/dist/css-DhTxMmL_.js +0 -5
  364. package/dist/cypher-CgN8E3YI.js +0 -4
  365. package/dist/d-g41sJcBC.js +0 -4
  366. package/dist/diff-ViRYYhhg.js +0 -4
  367. package/dist/dist-BfJO8Bm9.js +0 -12
  368. package/dist/dist-CLuF3AtO.js +0 -6
  369. package/dist/dist-CU04U4NL.js +0 -10
  370. package/dist/dist-DNUT6b47.js +0 -6
  371. package/dist/dist-DbAb2sY7.js +0 -6
  372. package/dist/dist-DiDFQ2Rk.js +0 -6
  373. package/dist/dist-SNAyAOJ-.js +0 -6
  374. package/dist/dist-cbW5xJNV.js +0 -6
  375. package/dist/dist-h8eGLSbK.js +0 -10
  376. package/dist/dylan-BX8KJufP.js +0 -4
  377. package/dist/ecl-CWtLaNMH.js +0 -4
  378. package/dist/eiffel-C-mlZPMn.js +0 -4
  379. package/dist/elm-CWp06vcb.js +0 -4
  380. package/dist/erlang-pfp22AZM.js +0 -4
  381. package/dist/error-banner-BAWlXn49.js +0 -1012
  382. package/dist/esm-B2pocBPL.js +0 -26
  383. package/dist/esm-YVnxJqkD.js +0 -33066
  384. package/dist/factor-CEn53jua.js +0 -5
  385. package/dist/forth-CL8vu_y8.js +0 -4
  386. package/dist/fortran-DsmXkYtE.js +0 -4
  387. package/dist/gas-mYt9Rtlx.js +0 -4
  388. package/dist/gherkin-DHNCKBNj.js +0 -4
  389. package/dist/gitGraph-ZV4HHKMB-Cpd6k0O8.js +0 -21
  390. package/dist/graphlib-DRS8CrjA.js +0 -227
  391. package/dist/groovy-DzRtOS5a.js +0 -4
  392. package/dist/haskell-Bl9iT_Mp.js +0 -4
  393. package/dist/haxe-DqA0ED6k.js +0 -5
  394. package/dist/idl-WU2hil4i.js +0 -4
  395. package/dist/info-63CPKGFF-CG-xzUJo.js +0 -21
  396. package/dist/infoDiagram-STP46IZ2-zoRBGoup.js +0 -45
  397. package/dist/javascript-QY2BGJeV.js +0 -5
  398. package/dist/jinja2-Czleq7Sk.js +0 -4
  399. package/dist/jsx-runtime-DZyWJV5b.js +0 -31
  400. package/dist/julia-Dru3Qi0y.js +0 -4
  401. package/dist/livescript-Dxqi_HLT.js +0 -4
  402. package/dist/lua-ByH1cUQZ.js +0 -4
  403. package/dist/mathematica-CWJIFuES.js +0 -4
  404. package/dist/mbox-qhPIGaUI.js +0 -4
  405. package/dist/min-Dwa_NbP6.js +0 -93
  406. package/dist/mirc-yYcXhXBY.js +0 -4
  407. package/dist/mllike-BfT_Nl9x.js +0 -6
  408. package/dist/modelica-lVDtz1Rm.js +0 -4
  409. package/dist/mscgen-DvwdD1QJ.js +0 -6
  410. package/dist/mumps-BiY3GwKd.js +0 -4
  411. package/dist/nsis-Dk18Sq_4.js +0 -5
  412. package/dist/ntriples-Cj-8VqKF.js +0 -4
  413. package/dist/octave-BgFAaYjU.js +0 -4
  414. package/dist/oz-IsEG1I1m.js +0 -4
  415. package/dist/packet-HUATNLJX-Cafuo3IG.js +0 -21
  416. package/dist/pascal-BVf7FtIE.js +0 -4
  417. package/dist/perl-BM0-y4mZ.js +0 -4
  418. package/dist/pie-WTHONI2E-BE0pHBwB.js +0 -21
  419. package/dist/pig-CLBjzQmc.js +0 -4
  420. package/dist/powershell-B_qvE33J.js +0 -4
  421. package/dist/properties-CUTpsH2y.js +0 -4
  422. package/dist/protobuf-DqCP8a-0.js +0 -4
  423. package/dist/pug-BvexKkw4.js +0 -5
  424. package/dist/puppet-CoIi0R3f.js +0 -4
  425. package/dist/python-C-11-YMh.js +0 -5
  426. package/dist/q-CCVgEip7.js +0 -4
  427. package/dist/r-CIdR0Sfs.js +0 -4
  428. package/dist/radar-NJJJXTRR-0adgjw0u.js +0 -21
  429. package/dist/rpm-Dwvm039g.js +0 -5
  430. package/dist/ruby-DpTnO5gb.js +0 -4
  431. package/dist/sas-CK9boxgv.js +0 -4
  432. package/dist/scheme-Y1aYL-Qq.js +0 -4
  433. package/dist/shell-D3eXGsHd.js +0 -4
  434. package/dist/sieve-BdwSFdWJ.js +0 -4
  435. package/dist/smalltalk-BTYJquCm.js +0 -4
  436. package/dist/sparql-CYF0g4Cc.js +0 -4
  437. package/dist/stateDiagram-v2-UMBNRL4Z-DdJ7qVWc.js +0 -39
  438. package/dist/stex-CyWhoWHt.js +0 -5
  439. package/dist/stylus-BBiKaI2h.js +0 -4
  440. package/dist/swift-COb15qFR.js +0 -4
  441. package/dist/tcl-Jik1LXu9.js +0 -4
  442. package/dist/textile-BFHPD3wr.js +0 -4
  443. package/dist/toml-Brp9fBXs.js +0 -4
  444. package/dist/treemap-75Q7IDZK-CyBT8_Wh.js +0 -21
  445. package/dist/troff-CcZRW4vg.js +0 -4
  446. package/dist/tslib.es6-3ZL768sZ.js +0 -49
  447. package/dist/ttcn-Bz_6ifRd.js +0 -4
  448. package/dist/ttcn-cfg-v-yi2rKc.js +0 -4
  449. package/dist/turtle-CDOsZYhB.js +0 -4
  450. package/dist/useDateFormatter-BkbjKw83.js +0 -543
  451. package/dist/vb-CL7fRwRw.js +0 -4
  452. package/dist/vbscript-CR2xfxpw.js +0 -4
  453. package/dist/vega-component-BfFcXZxw.js +0 -465
  454. package/dist/velocity-CfuZoxPt.js +0 -4
  455. package/dist/verilog-CySTkzw_.js +0 -4
  456. package/dist/vhdl-Dvcd8KHW.js +0 -4
  457. package/dist/webidl-tbJt7sKk.js +0 -4
  458. package/dist/xquery-DJQVztyc.js +0 -4
  459. package/dist/yacas-BbgBReEH.js +0 -4
  460. package/dist/z80-DPyb8VGz.js +0 -4
  461. /package/dist/{_arrayReduce-Cd9xQjbl.js → _arrayReduce-CmsTTAw1.js} +0 -0
  462. /package/dist/{_baseSlice-CE9WsQZm.js → _baseSlice-CAnpEJwx.js} +0 -0
  463. /package/dist/{_hasUnicode-DkEebvtD.js → _hasUnicode-CbmCTPAa.js} +0 -0
  464. /package/dist/{apl-aGhy11IM.js → apl-Css595_H.js} +0 -0
  465. /package/dist/{array-DYSXIreg.js → array-D3smvOQ_.js} +0 -0
  466. /package/dist/{asciiarmor-DJKJ3Gkn.js → asciiarmor-BTCuJwxh.js} +0 -0
  467. /package/dist/{asn1-C6f5IeNs.js → asn1-DXjhS5QI.js} +0 -0
  468. /package/dist/{asterisk-DB1poX9_.js → asterisk-5HlmsIaw.js} +0 -0
  469. /package/dist/{brainfuck-Ch9vjun0.js → brainfuck--WlEc-iG.js} +0 -0
  470. /package/dist/{chunk-57QY23SG-BpXU7ph4.js → chunk-57QY23SG-D7ymhFFp.js} +0 -0
  471. /package/dist/{click-outside-container-2BH589Bq.js → click-outside-container-DSVM9sZw.js} +0 -0
  472. /package/dist/{clike-Bc2PZzZQ.js → clike-DDIJB_R8.js} +0 -0
  473. /package/dist/{clojure-B_lpr3zt.js → clojure-Z-GPBZyY.js} +0 -0
  474. /package/dist/{cmake-DaocNF4I.js → cmake-DncBqspt.js} +0 -0
  475. /package/dist/{cobol-suTPtt7c.js → cobol-DqUe0gl7.js} +0 -0
  476. /package/dist/{coffeescript-CPLIvtqJ.js → coffeescript-CH5_OO0H.js} +0 -0
  477. /package/dist/{colors-BXlG8Lmz.js → colors-DQmMCNWX.js} +0 -0
  478. /package/dist/{common-keywords-Bhll7O3b.js → common-keywords-CAEsQSF5.js} +0 -0
  479. /package/dist/{commonlisp-BqM3qFK7.js → commonlisp-UmhR9BfE.js} +0 -0
  480. /package/dist/{crystal-AsSFu4ke.js → crystal-5Sqf7MXt.js} +0 -0
  481. /package/dist/{css-Df7Sdeyh.js → css-bDybSxwf.js} +0 -0
  482. /package/dist/{cypher-CaVKL6Gu.js → cypher-PIeAFhrd.js} +0 -0
  483. /package/dist/{cytoscape.esm-BFEMljQI.js → cytoscape.esm-DclyBJ4D.js} +0 -0
  484. /package/dist/{d-DCGWK7NQ.js → d-Bd8EVRQt.js} +0 -0
  485. /package/dist/{defaultLocale-Cto8YOmX.js → defaultLocale-BPzjWfXP.js} +0 -0
  486. /package/dist/{defaultLocale-CYgZlqDF.js → defaultLocale-Om7Wxg5c.js} +0 -0
  487. /package/dist/{diff-CsxOM4Tr.js → diff-CAQdgtD6.js} +0 -0
  488. /package/dist/{dtd-Dwr0Jmks.js → dtd-eKW3pZj_.js} +0 -0
  489. /package/dist/{duckdb-keywords-7wAWf848.js → duckdb-keywords-BC3kWZZM.js} +0 -0
  490. /package/dist/{dylan-A7-ZBSey.js → dylan-CIO7R9Tr.js} +0 -0
  491. /package/dist/{ebnf-9_SaGDUz.js → ebnf-Pr4a9I6n.js} +0 -0
  492. /package/dist/{ecl-BzJVIQDc.js → ecl-BqYW-aOJ.js} +0 -0
  493. /package/dist/{eiffel-CO9eC_Op.js → eiffel-BOKM91eM.js} +0 -0
  494. /package/dist/{elm-CVAWj8SB.js → elm-3sobs3PV.js} +0 -0
  495. /package/dist/{emotion-is-prop-valid.esm-C3Yi5GQt.js → emotion-is-prop-valid.esm-Cm1uulbm.js} +0 -0
  496. /package/dist/{erlang-DWbZP546.js → erlang-C5EBzhP1.js} +0 -0
  497. /package/dist/{esm-AtKNNGYO.js → esm-CopBBL2y.js} +0 -0
  498. /package/dist/{fcl-CM9t2iay.js → fcl-Brh8s8q_.js} +0 -0
  499. /package/dist/{forth-BTYqUuu3.js → forth-DneRHr4K.js} +0 -0
  500. /package/dist/{fortran-DgAjHcCq.js → fortran-DsdmZbwQ.js} +0 -0
  501. /package/dist/{gas-BjDSWPZd.js → gas-DaoJ65Z9.js} +0 -0
  502. /package/dist/{gherkin-ClRqqpKv.js → gherkin-DUP_UlW-.js} +0 -0
  503. /package/dist/{groovy-BzNjnc8x.js → groovy-Rvyan8yX.js} +0 -0
  504. /package/dist/{haskell-DLdk34Jq.js → haskell-DIvpY54L.js} +0 -0
  505. /package/dist/{haxe-l6gaY_IS.js → haxe-Da_5bBNs.js} +0 -0
  506. /package/dist/{http-6Qg7z_h2.js → http-CMvcwl3E.js} +0 -0
  507. /package/dist/{idl-hlWT4D26.js → idl-DvL3aO0N.js} +0 -0
  508. /package/dist/{init-tZ42Torz.js → init-BNp5RczD.js} +0 -0
  509. /package/dist/{invariant-D3JoRb4I.js → invariant-Cl2wkkjN.js} +0 -0
  510. /package/dist/{isArrayLikeObject-DU5MCuQM.js → isArrayLikeObject-1qkWxZbL.js} +0 -0
  511. /package/dist/{javascript-DGukg1sB.js → javascript-DoyAP8vn.js} +0 -0
  512. /package/dist/{jinja2-DI5k_Er3.js → jinja2-Veqp7mFj.js} +0 -0
  513. /package/dist/{julia-BvDZDiIT.js → julia-Gi684CX7.js} +0 -0
  514. /package/dist/{katex-DgfMWJY9.js → katex-U6RPAuWM.js} +0 -0
  515. /package/dist/{livescript-2YMQfkfI.js → livescript-BKj_Zhvo.js} +0 -0
  516. /package/dist/{lua-DIUrQRfA.js → lua-CDA7hreG.js} +0 -0
  517. /package/dist/{main-BMTpe7M0.js → main-63eIj2Yx.js} +0 -0
  518. /package/dist/{marked.esm-DkVwEwtO.js → marked.esm-DE8HU3tw.js} +0 -0
  519. /package/dist/{math-qsHyz2Eo.js → math-C2iLT5gz.js} +0 -0
  520. /package/dist/{mathematica-Dqmg_BwL.js → mathematica-GWfSHReY.js} +0 -0
  521. /package/dist/{mbox-Cng-P-F1.js → mbox-Dwsrc4Ak.js} +0 -0
  522. /package/dist/{mirc-CNDqOVhQ.js → mirc-B2JE5ype.js} +0 -0
  523. /package/dist/{mllike-C1n2UDyX.js → mllike-BkBh4PFX.js} +0 -0
  524. /package/dist/{modelica-QqQC2pFj.js → modelica-C0hNlKgR.js} +0 -0
  525. /package/dist/{mscgen-C3fl8uhp.js → mscgen-DWWpdZnb.js} +0 -0
  526. /package/dist/{mumps-BeCUbMej.js → mumps-CMePAlSe.js} +0 -0
  527. /package/dist/{nginx-ejv7DsBz.js → nginx-GurZbX0E.js} +0 -0
  528. /package/dist/{node-sql-parser-CoPWN4hn.js → node-sql-parser-IKID_dZE.js} +0 -0
  529. /package/dist/{ntriples-CUgUpcma.js → ntriples-BnE6tX0Y.js} +0 -0
  530. /package/dist/{octave-BD652tGl.js → octave-Dfu3PmNP.js} +0 -0
  531. /package/dist/{oz-DrRsFa0K.js → oz-DqNpAjpZ.js} +0 -0
  532. /package/dist/{pascal-hpcx9sVn.js → pascal-GP_8jbNL.js} +0 -0
  533. /package/dist/{path-Bbv2tLY1.js → path-BeMi_1Je.js} +0 -0
  534. /package/dist/{perl-DW8XHeFc.js → perl-DUDEqQOD.js} +0 -0
  535. /package/dist/{pig-Cv7Nxbfo.js → pig-Csr4LnKs.js} +0 -0
  536. /package/dist/{powershell-Dr7WZMDU.js → powershell-Cw4tDKZx.js} +0 -0
  537. /package/dist/{prop-types-Bd16OEUP.js → prop-types-CzOfzj9N.js} +0 -0
  538. /package/dist/{properties-D-qJDXAM.js → properties-CUhUGfHR.js} +0 -0
  539. /package/dist/{protobuf-B48QZbd3.js → protobuf-CPZe957V.js} +0 -0
  540. /package/dist/{puppet-15JDyiY2.js → puppet-BP1AOwo6.js} +0 -0
  541. /package/dist/{purify.es-CrfFzTyi.js → purify.es-CDFkadZl.js} +0 -0
  542. /package/dist/{python-DWkQA94h.js → python-BMcMimC3.js} +0 -0
  543. /package/dist/{q-BzRpKgfd.js → q-BNfSHUci.js} +0 -0
  544. /package/dist/{r-dcNRe_Q8.js → r-DiJzLRZc.js} +0 -0
  545. /package/dist/{range-CQvYp_qE.js → range-sX2tw-Jz.js} +0 -0
  546. /package/dist/{react-dom-CpBooCbY.js → react-dom-BTjywDxo.js} +0 -0
  547. /package/dist/{rpm-Djl3Dsf1.js → rpm-CywAxCKo.js} +0 -0
  548. /package/dist/{ruby-Dd2CZTip.js → ruby-B0a4mSSU.js} +0 -0
  549. /package/dist/{sas-DYF5_Iqu.js → sas-DTh30wZQ.js} +0 -0
  550. /package/dist/{scheme-YtWcji1H.js → scheme-CsOlAIFf.js} +0 -0
  551. /package/dist/{shell-C3uC3Y0Z.js → shell-7w75P-tg.js} +0 -0
  552. /package/dist/{sieve-DHB17sQG.js → sieve-BphUEMa4.js} +0 -0
  553. /package/dist/{simple-mode-BMmwP_vI.js → simple-mode-BcThS5Pa.js} +0 -0
  554. /package/dist/{smalltalk-Y5v1Np3H.js → smalltalk-CHwdNey_.js} +0 -0
  555. /package/dist/{solr-DvRJLlRD.js → solr-CuWbYJLt.js} +0 -0
  556. /package/dist/{sparql-BEt3GJwM.js → sparql-BtwCqUvT.js} +0 -0
  557. /package/dist/{spreadsheet-Dp4B9_rc.js → spreadsheet-C1JzeuKn.js} +0 -0
  558. /package/dist/{sql-DBsUs8nQ.js → sql-wv_2DQzf.js} +0 -0
  559. /package/dist/{stex-C6-x52ei.js → stex-BmcrV7cx.js} +0 -0
  560. /package/dist/{stylus-DroA8via.js → stylus-SVJ7TGPh.js} +0 -0
  561. /package/dist/{swift-DR0x1ESK.js → swift-f7KaABxm.js} +0 -0
  562. /package/dist/{tcl-BeuTFc_c.js → tcl-CbTFkeHJ.js} +0 -0
  563. /package/dist/{textile-C0ikhHN3.js → textile-CFn6QLRy.js} +0 -0
  564. /package/dist/{tiddlywiki-C_2Nvsgu.js → tiddlywiki-DBhMcdVM.js} +0 -0
  565. /package/dist/{tiki-CKQlhmQQ.js → tiki-CqcXr_YN.js} +0 -0
  566. /package/dist/{timer-CcUhugb0.js → timer-ly0jlpkr.js} +0 -0
  567. /package/dist/{toml-BqNUJWRI.js → toml-YgDIoI1n.js} +0 -0
  568. /package/dist/{treemap-BYLUKIzA.js → treemap-D5sUCpbF.js} +0 -0
  569. /package/dist/{troff-DkK0f2ZH.js → troff-CIp_4RXg.js} +0 -0
  570. /package/dist/{ttcn-Bf8vrg-_.js → ttcn-Yn_uOBYK.js} +0 -0
  571. /package/dist/{ttcn-cfg-DjCKzd95.js → ttcn-cfg-BVum2rmM.js} +0 -0
  572. /package/dist/{turtle-SSc84S9m.js → turtle-BeWx-YoQ.js} +0 -0
  573. /package/dist/{vb-CQ6DC3cL.js → vb-DKEmSA_2.js} +0 -0
  574. /package/dist/{vbscript-Dw0gFssg.js → vbscript-BPsxuP0n.js} +0 -0
  575. /package/dist/{velocity-BvJQyBmj.js → velocity-ycm1NvlO.js} +0 -0
  576. /package/dist/{verilog-CKGAvQjj.js → verilog-ogjm0Ytr.js} +0 -0
  577. /package/dist/{vhdl-B40_x6fM.js → vhdl-BvjyOM9y.js} +0 -0
  578. /package/dist/{webidl-Bi9hczCv.js → webidl-QdwcTYEu.js} +0 -0
  579. /package/dist/{xquery-DwWUXvP3.js → xquery-BErHIIc-.js} +0 -0
  580. /package/dist/{yacas-ClUs0mmH.js → yacas-BBBJNs0h.js} +0 -0
  581. /package/dist/{z80-DPC4UGzR.js → z80-nG9RRukG.js} +0 -0
  582. /package/dist/{zod-mAEs2ITo.js → zod-0AbTN3Cg.js} +0 -0
@@ -21,11 +21,12 @@ import {
21
21
  } from "./base";
22
22
  import type { CopilotMode } from "./registry";
23
23
 
24
+ const POST_EXECUTION_DELAY = 200;
25
+ const WAIT_FOR_CELLS_TIMEOUT = 30_000;
26
+
24
27
  interface CellOutput {
25
28
  consoleOutput?: string;
26
- // consoleAttachments?: FileUIPart[];
27
29
  cellOutput?: string;
28
- // cellAttachments?: FileUIPart[];
29
30
  }
30
31
 
31
32
  // Must use Record instead of Map because Map serializes to JSON as {}
@@ -67,6 +68,12 @@ export class RunStaleCellsTool
67
68
  }) satisfies z.ZodType<RunStaleCellsOutput>;
68
69
  readonly mode: CopilotMode[] = ["agent"];
69
70
 
71
+ private readonly postExecutionDelay: number;
72
+
73
+ constructor(opts?: { postExecutionDelay?: number }) {
74
+ this.postExecutionDelay = opts?.postExecutionDelay ?? POST_EXECUTION_DELAY;
75
+ }
76
+
70
77
  handler = async (
71
78
  _args: EmptyToolInput,
72
79
  toolContext: ToolNotebookContext,
@@ -91,7 +98,12 @@ export class RunStaleCellsTool
91
98
  });
92
99
 
93
100
  // Wait for all cells to finish executing
94
- const allCellsFinished = await this.waitForCellsToFinish(store, staleCells);
101
+ const allCellsFinished = await this.waitForCellsToFinish(
102
+ store,
103
+ staleCells,
104
+ WAIT_FOR_CELLS_TIMEOUT,
105
+ this.postExecutionDelay,
106
+ );
95
107
  if (!allCellsFinished) {
96
108
  return {
97
109
  status: "success",
@@ -105,6 +117,7 @@ export class RunStaleCellsTool
105
117
 
106
118
  const cellsToOutput = new Map<CellId, CellOutput | null>();
107
119
  let resultMessage = "";
120
+ let outputHasErrors = false;
108
121
 
109
122
  for (const cellId of staleCells) {
110
123
  const cellContextData = getCellContextData(cellId, updatedNotebook, {
@@ -112,13 +125,13 @@ export class RunStaleCellsTool
112
125
  });
113
126
 
114
127
  let cellOutputString: string | undefined;
115
- // let cellAttachments: FileUIPart[] | undefined;
116
128
  let consoleOutputString: string | undefined;
117
- // let consoleAttachments: FileUIPart[] | undefined;
118
129
 
119
130
  const cellOutput = cellContextData.cellOutput;
120
131
  const consoleOutputs = cellContextData.consoleOutputs;
121
- if (!cellOutput && !consoleOutputs) {
132
+ const hasConsoleOutput = consoleOutputs && consoleOutputs.length > 0;
133
+
134
+ if (!cellOutput && !hasConsoleOutput) {
122
135
  // Set null to show no output
123
136
  cellsToOutput.set(cellId, null);
124
137
  continue;
@@ -126,31 +139,26 @@ export class RunStaleCellsTool
126
139
 
127
140
  if (cellOutput) {
128
141
  cellOutputString = this.formatOutputString(cellOutput);
129
- // cellAttachments = await getAttachmentsForOutputs(
130
- // [cellOutput],
131
- // cellId,
132
- // cellContextData.cellName,
133
- // );
142
+ if (this.outputHasErrors(cellOutput)) {
143
+ outputHasErrors = true;
144
+ }
134
145
  }
135
146
 
136
- if (consoleOutputs) {
137
- // consoleAttachments = await getAttachmentsForOutputs(
138
- // consoleOutputs,
139
- // cellId,
140
- // cellContextData.cellName,
141
- // );
147
+ if (hasConsoleOutput) {
142
148
  consoleOutputString = consoleOutputs
143
149
  .map((output) => this.formatOutputString(output))
144
150
  .join("\n");
145
151
  resultMessage +=
146
152
  "Console output represents the stdout or stderr of the cell (eg. print statements).";
153
+
154
+ if (consoleOutputs.some((output) => this.outputHasErrors(output))) {
155
+ outputHasErrors = true;
156
+ }
147
157
  }
148
158
 
149
159
  cellsToOutput.set(cellId, {
150
160
  cellOutput: cellOutputString,
151
161
  consoleOutput: consoleOutputString,
152
- // cellAttachments: cellAttachments,
153
- // consoleAttachments: consoleAttachments,
154
162
  });
155
163
  }
156
164
 
@@ -161,16 +169,32 @@ export class RunStaleCellsTool
161
169
  };
162
170
  }
163
171
 
172
+ const nextSteps = [
173
+ "Review the output of the cells. The CellId is the key of the result object.",
174
+ outputHasErrors
175
+ ? "There are errors in the cells. Please fix them by using the edit notebook tool and the given CellIds."
176
+ : "You may edit the notebook further with the given CellIds.",
177
+ ];
178
+
164
179
  return {
165
180
  status: "success",
166
181
  cellsToOutput: Object.fromEntries(cellsToOutput),
167
182
  message: resultMessage === "" ? undefined : resultMessage,
168
- next_steps: [
169
- "Review the output of the cells, if you need to make any changes, you can run this tool again, the CellId is the key of the result object if you want to edit the cell.",
170
- ],
183
+ next_steps: nextSteps,
171
184
  };
172
185
  };
173
186
 
187
+ private outputHasErrors(cellOutput: BaseOutput): boolean {
188
+ const { output } = cellOutput;
189
+ if (
190
+ output.mimetype === "application/vnd.marimo+error" ||
191
+ output.mimetype === "application/vnd.marimo+traceback"
192
+ ) {
193
+ return true;
194
+ }
195
+ return false;
196
+ }
197
+
174
198
  private formatOutputString(cellOutput: BaseOutput): string {
175
199
  let outputString = "";
176
200
  const { outputType, processedContent, imageUrl, output } = cellOutput;
@@ -199,7 +223,8 @@ export class RunStaleCellsTool
199
223
  private async waitForCellsToFinish(
200
224
  store: JotaiStore,
201
225
  cellIds: CellId[],
202
- timeout = 30_000,
226
+ timeout: number,
227
+ postExecutionDelay: number,
203
228
  ): Promise<boolean> {
204
229
  const checkAllFinished = (
205
230
  notebook: ReturnType<typeof notebookAtom.read>,
@@ -212,9 +237,18 @@ export class RunStaleCellsTool
212
237
  });
213
238
  };
214
239
 
215
- // If already finished, return immediately
216
- if (checkAllFinished(store.get(notebookAtom))) {
240
+ // Add a small delay after cells finish to allow console outputs to arrive
241
+ // Console outputs are streamed and might still be in-flight
242
+ const delayForConsoleOutputs = async () => {
243
+ if (postExecutionDelay > 0) {
244
+ await new Promise((resolve) => setTimeout(resolve, postExecutionDelay));
245
+ }
217
246
  return true;
247
+ };
248
+
249
+ // Return immediately if all cells are finished
250
+ if (checkAllFinished(store.get(notebookAtom))) {
251
+ return await delayForConsoleOutputs();
218
252
  }
219
253
 
220
254
  // Wait for notebook state changes with timeout
@@ -225,7 +259,7 @@ export class RunStaleCellsTool
225
259
  setTimeout(() => reject(new Error("timeout")), timeout),
226
260
  ),
227
261
  ]);
228
- return true;
262
+ return await delayForConsoleOutputs();
229
263
  } catch {
230
264
  return false;
231
265
  }
@@ -94,7 +94,7 @@ export const HTMLCellId = {
94
94
  */
95
95
  export function findCellId(element: HTMLElement): CellId | null {
96
96
  let cellId: CellId | null = null;
97
- const cellContainer = HTMLCellId.findElement(element);
97
+ const cellContainer = HTMLCellId.findElementThroughShadowDOMs(element);
98
98
  if (cellContainer) {
99
99
  cellId = HTMLCellId.parse(cellContainer.id);
100
100
  }
@@ -163,23 +163,19 @@ describe("switchLanguage", () => {
163
163
  // Switch back to python
164
164
  switchLanguage(mockEditor, { language: "python", keepCodeAsIs: false });
165
165
  expect(mockEditor.state.doc.toString()).toMatchInlineSnapshot(`
166
- "mo.md(
167
- r"""
166
+ "mo.md(r"""
168
167
  print('Hello')
169
168
  print('Goodbye')
170
- """
171
- )"
169
+ """)"
172
170
  `);
173
171
 
174
172
  // Switch to sql
175
173
  switchLanguage(mockEditor, { language: "sql", keepCodeAsIs: false });
176
174
  expect(mockEditor.state.doc.toString()).toMatchInlineSnapshot(`
177
- "mo.md(
178
- r"""
175
+ "mo.md(r"""
179
176
  print('Hello')
180
177
  print('Goodbye')
181
- """
182
- )"
178
+ """)"
183
179
  `);
184
180
 
185
181
  // Switch back to python
@@ -187,12 +183,10 @@ describe("switchLanguage", () => {
187
183
  expect(mockEditor.state.doc.toString()).toMatchInlineSnapshot(`
188
184
  "_df = mo.sql(
189
185
  f"""
190
- mo.md(
191
- r\\"""
186
+ mo.md(r\\"""
192
187
  print('Hello')
193
188
  print('Goodbye')
194
- \\"""
195
- )
189
+ \\""")
196
190
  """
197
191
  )"
198
192
  `);
@@ -185,11 +185,10 @@ describe("MarkdownLanguageAdapter", () => {
185
185
  });
186
186
 
187
187
  it("should preserve indentation in f-strings", () => {
188
- const pythonCode =
189
- 'mo.md(\n f"""\n```python\n{some_variable}\n```\n"""\n)';
188
+ const pythonCode = 'mo.md(f"""\n```python\n{some_variable}\n```\n""")';
190
189
  const [innerCode, offset, metadata] = adapter.transformIn(pythonCode);
191
190
  expect(innerCode).toBe("```python\n{some_variable}\n```");
192
- expect(offset).toBe(15);
191
+ expect(offset).toBe(10);
193
192
  expect(metadata.quotePrefix).toBe("f");
194
193
 
195
194
  // Transform out
@@ -198,7 +197,7 @@ describe("MarkdownLanguageAdapter", () => {
198
197
  metadata,
199
198
  );
200
199
  expect(outerCode).toMatch(pythonCode);
201
- expect(outerOffset).toBe(17);
200
+ expect(outerOffset).toBe(12);
202
201
  });
203
202
 
204
203
  it("should handle f-strings", () => {
@@ -252,41 +251,35 @@ describe("MarkdownLanguageAdapter", () => {
252
251
  const code = '"Hello" world';
253
252
  const [wrappedCode, offset] = adapter.transformOut(code, metadata);
254
253
  expect(wrappedCode).toMatchInlineSnapshot(`
255
- "mo.md(
256
- """
254
+ "mo.md("""
257
255
  "Hello" world
258
- """
259
- )"
256
+ """)"
260
257
  `);
261
- expect(offset).toBe(16);
258
+ expect(offset).toBe(11);
262
259
  });
263
260
 
264
261
  it("ends with quote", () => {
265
262
  const code = 'Hello "world"';
266
263
  const [wrappedCode, offset] = adapter.transformOut(code, metadata);
267
264
  expect(wrappedCode).toMatchInlineSnapshot(`
268
- "mo.md(
269
- """
265
+ "mo.md("""
270
266
  Hello "world"
271
- """
272
- )"
267
+ """)"
273
268
  `);
274
- expect(offset).toBe(16);
269
+ expect(offset).toBe(11);
275
270
  });
276
271
 
277
272
  it("should wrap Markdown code with triple double-quoted string format", () => {
278
273
  const code = "# Markdown Title\n\nSome content here.";
279
274
  const [wrappedCode, offset] = adapter.transformOut(code, metadata);
280
275
  expect(wrappedCode).toMatchInlineSnapshot(`
281
- "mo.md(
282
- """
276
+ "mo.md("""
283
277
  # Markdown Title
284
278
 
285
279
  Some content here.
286
- """
287
- )"
280
+ """)"
288
281
  `);
289
- expect(offset).toBe(16);
282
+ expect(offset).toBe(11);
290
283
  });
291
284
 
292
285
  it("should escape triple quotes in the Markdown code", () => {
@@ -312,14 +305,12 @@ describe("MarkdownLanguageAdapter", () => {
312
305
  metadata.quotePrefix = "f";
313
306
  const [wrappedCode, offset] = adapter.transformOut(code, metadata);
314
307
  expect(wrappedCode).toMatchInlineSnapshot(`
315
- "mo.md(
316
- f"""
308
+ "mo.md(f"""
317
309
  # Title
318
310
  {some_variable}
319
- """
320
- )"
311
+ """)"
321
312
  `);
322
- expect(offset).toBe(17);
313
+ expect(offset).toBe(12);
323
314
  });
324
315
 
325
316
  it("should handle rf-strings in transformOut", () => {
@@ -327,14 +318,12 @@ describe("MarkdownLanguageAdapter", () => {
327
318
  metadata.quotePrefix = "rf";
328
319
  const [wrappedCode, offset] = adapter.transformOut(code, metadata);
329
320
  expect(wrappedCode).toMatchInlineSnapshot(`
330
- "mo.md(
331
- rf"""
321
+ "mo.md(rf"""
332
322
  # Title
333
323
  {some_variable}
334
- """
335
- )"
324
+ """)"
336
325
  `);
337
- expect(offset).toBe(18);
326
+ expect(offset).toBe(13);
338
327
  });
339
328
  });
340
329
 
@@ -369,13 +358,11 @@ describe("MarkdownLanguageAdapter", () => {
369
358
 
370
359
  it("should return true for complex nested markdown", () => {
371
360
  const pythonCode = String.raw`
372
- mo.md(
373
- rf"""
374
- \`\`\`python
375
- {pathlib.Path(__file__).read_text(encoding="utf-8")}
376
- \`\`\`
377
- """
378
- )
361
+ mo.md(rf"""
362
+ \`\`\`python
363
+ {pathlib.Path(__file__).read_text(encoding="utf-8")}
364
+ \`\`\`
365
+ """)
379
366
  `;
380
367
  expect(adapter.isSupported(pythonCode)).toBe(true);
381
368
  });
@@ -44,8 +44,15 @@ import {
44
44
  import type { LanguageAdapter } from "../types";
45
45
 
46
46
  const pylspClient = once((lspConfig: LSPConfig) => {
47
+ // Create a mutable reference for the resync callback
48
+ let resyncCallback: (() => Promise<void>) | undefined;
49
+
50
+ const transport = createTransport("pylsp", async () => {
51
+ await resyncCallback?.();
52
+ });
53
+
47
54
  const lspClientOpts = {
48
- transport: createTransport("pylsp"),
55
+ transport,
49
56
  rootUri: getLSPDocumentRootUri(),
50
57
  workspaceFolders: [],
51
58
  };
@@ -126,47 +133,74 @@ const pylspClient = once((lspConfig: LSPConfig) => {
126
133
 
127
134
  // We wrap the client in a NotebookLanguageServerClient to add some
128
135
  // additional functionality to handle multiple cells
129
- return new NotebookLanguageServerClient(
136
+ const notebookClient = new NotebookLanguageServerClient(
130
137
  new LanguageServerClient({
131
138
  ...lspClientOpts,
132
139
  }),
133
140
  settings,
134
141
  );
142
+
143
+ // Set the resync callback now that the client exists
144
+ resyncCallback = () => notebookClient.resyncAllDocuments();
145
+
146
+ return notebookClient;
135
147
  });
136
148
 
137
149
  const tyLspClient = once((_: LSPConfig) => {
150
+ let resyncCallback: (() => Promise<void>) | undefined;
151
+
152
+ const transport = createTransport("ty", async () => {
153
+ await resyncCallback?.();
154
+ });
155
+
138
156
  const lspClientOpts = {
139
- transport: createTransport("ty"),
157
+ transport,
140
158
  rootUri: getLSPDocumentRootUri(),
141
159
  workspaceFolders: [],
142
160
  };
143
161
 
144
162
  // We wrap the client in a NotebookLanguageServerClient to add some
145
163
  // additional functionality to handle multiple cells
146
- return new NotebookLanguageServerClient(
164
+ const notebookClient = new NotebookLanguageServerClient(
147
165
  new LanguageServerClient({
148
166
  ...lspClientOpts,
149
167
  getWorkspaceConfiguration: (_) => [{ disableLanguageServices: true }],
150
168
  }),
151
169
  {},
152
170
  );
171
+
172
+ // Set the resync callback now that the client exists
173
+ resyncCallback = () => notebookClient.resyncAllDocuments();
174
+
175
+ return notebookClient;
153
176
  });
154
177
 
155
178
  const pyrightClient = once((_: LSPConfig) => {
179
+ let resyncCallback: (() => Promise<void>) | undefined;
180
+
181
+ const transport = createTransport("basedpyright", async () => {
182
+ await resyncCallback?.();
183
+ });
184
+
156
185
  const lspClientOpts = {
157
- transport: createTransport("basedpyright"),
186
+ transport,
158
187
  rootUri: getLSPDocumentRootUri(),
159
188
  workspaceFolders: [],
160
189
  };
161
190
 
162
191
  // We wrap the client in a NotebookLanguageServerClient to add some
163
192
  // additional functionality to handle multiple cells
164
- return new NotebookLanguageServerClient(
193
+ const notebookClient = new NotebookLanguageServerClient(
165
194
  new LanguageServerClient({
166
195
  ...lspClientOpts,
167
196
  }),
168
197
  {},
169
198
  );
199
+
200
+ // Set the resync callback now that the client exists
201
+ resyncCallback = () => notebookClient.resyncAllDocuments();
202
+
203
+ return notebookClient;
170
204
  });
171
205
 
172
206
  /**
@@ -134,7 +134,7 @@ class SQLCompletionStore {
134
134
  if (!connection) {
135
135
  return ModifiedStandardSQL;
136
136
  }
137
- return guessDialect(connection) ?? ModifiedStandardSQL;
137
+ return guessDialect(connection);
138
138
  }
139
139
 
140
140
  getCompletionSource(connectionName: ConnectionName): SQLConfig | null {
@@ -152,7 +152,7 @@ class SQLCompletionStore {
152
152
  const schema = this.cache.getOrCreate(connection);
153
153
 
154
154
  return {
155
- dialect: guessDialect(connection) ?? ModifiedStandardSQL,
155
+ dialect: guessDialect(connection),
156
156
  schema: schema.shouldAddLocalTables
157
157
  ? { ...schema.schema, ...getTablesMap() }
158
158
  : schema.schema,
@@ -38,6 +38,7 @@ import type { HotkeyProvider } from "@/core/hotkeys/hotkeys";
38
38
  import type { ValidateSQLResult } from "@/core/kernel/messages";
39
39
  import { store } from "@/core/state/jotai";
40
40
  import { resolvedThemeAtom } from "@/theme/useTheme";
41
+ import { logNever } from "@/utils/assertNever";
41
42
  import { Logger } from "@/utils/Logger";
42
43
  import { variableCompletionSource } from "../../embedded/embedded-python";
43
44
  import { languageMetadataField } from "../../metadata";
@@ -52,6 +53,7 @@ import {
52
53
  } from "./completion-sources";
53
54
  import { SCHEMA_CACHE } from "./completion-store";
54
55
  import { getSQLMode, type SQLMode } from "./sql-mode";
56
+ import { isKnownDialect } from "./utils";
55
57
 
56
58
  const DEFAULT_DIALECT = DuckDBDialect;
57
59
  const DEFAULT_PARSER_DIALECT = "DuckDB";
@@ -353,6 +355,11 @@ function connectionNameToParserDialect(
353
355
  ): ParserDialects | null {
354
356
  const dialect =
355
357
  SCHEMA_CACHE.getInternalDialect(connectionName)?.toLowerCase();
358
+
359
+ if (!dialect || !isKnownDialect(dialect)) {
360
+ return null;
361
+ }
362
+
356
363
  switch (dialect) {
357
364
  case "postgresql":
358
365
  case "postgres":
@@ -385,8 +392,15 @@ function connectionNameToParserDialect(
385
392
  case "flink":
386
393
  return "FlinkSQL";
387
394
  case "mongodb":
395
+ case "noql":
388
396
  return "Noql";
397
+ case "oracle":
398
+ case "oracledb":
399
+ case "timescaledb":
400
+ Logger.debug("Unsupported dialect", { dialect });
401
+ return null;
389
402
  default:
403
+ logNever(dialect);
390
404
  return null;
391
405
  }
392
406
  }
@@ -17,14 +17,52 @@ import {
17
17
  DuckDBDialect,
18
18
  } from "@marimo-team/codemirror-sql/dialects";
19
19
  import type { DataSourceConnection } from "@/core/kernel/messages";
20
+ import { logNever } from "@/utils/assertNever";
21
+ import { Logger } from "@/utils/Logger";
22
+
23
+ const KNOWN_DIALECTS_ARRAY = [
24
+ "postgresql",
25
+ "postgres",
26
+ "db2",
27
+ "mysql",
28
+ "sqlite",
29
+ "mssql",
30
+ "sqlserver",
31
+ "duckdb",
32
+ "mariadb",
33
+ "cassandra",
34
+ "noql",
35
+ "athena",
36
+ "bigquery",
37
+ "hive",
38
+ "redshift",
39
+ "snowflake",
40
+ "flink",
41
+ "mongodb",
42
+ "oracle",
43
+ "oracledb",
44
+ "timescaledb",
45
+ ] as const;
46
+ const KNOWN_DIALECTS: ReadonlySet<string> = new Set(KNOWN_DIALECTS_ARRAY);
47
+ type KnownDialect = (typeof KNOWN_DIALECTS_ARRAY)[number];
48
+
49
+ export function isKnownDialect(dialect: string): dialect is KnownDialect {
50
+ return KNOWN_DIALECTS.has(dialect);
51
+ }
20
52
 
21
53
  /**
22
54
  * Guess the CodeMirror SQL dialect from the backend connection dialect.
55
+ * If unknown, return the standard SQL dialect.
23
56
  */
24
57
  export function guessDialect(
25
58
  connection: Pick<DataSourceConnection, "dialect">,
26
- ): SQLDialect | undefined {
27
- switch (connection.dialect) {
59
+ ): SQLDialect {
60
+ const dialect = connection.dialect;
61
+ if (!isKnownDialect(dialect)) {
62
+ return ModifiedStandardSQL;
63
+ }
64
+
65
+ switch (dialect) {
28
66
  case "postgresql":
29
67
  case "postgres":
30
68
  return PostgreSQL;
@@ -46,8 +84,21 @@ export function guessDialect(
46
84
  return PLSQL;
47
85
  case "bigquery":
48
86
  return BigQueryDialect;
87
+ case "timescaledb":
88
+ return PostgreSQL; // TimescaleDB is a PostgreSQL dialect
89
+ case "athena":
90
+ case "db2":
91
+ case "hive":
92
+ case "redshift":
93
+ case "snowflake":
94
+ case "flink":
95
+ case "mongodb":
96
+ case "noql":
97
+ Logger.debug("Unsupported dialect", { dialect });
98
+ return ModifiedStandardSQL;
49
99
  default:
50
- return undefined;
100
+ logNever(dialect);
101
+ return ModifiedStandardSQL;
51
102
  }
52
103
  }
53
104
 
@@ -99,9 +99,17 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
99
99
  CellId,
100
100
  EditorView | null | undefined
101
101
  >;
102
-
102
+ private readonly initialSettings: Record<string, unknown>;
103
103
  private static readonly SEEN_CELL_DOCUMENT_URIS = new Set<CellDocumentUri>();
104
104
 
105
+ /**
106
+ * Cache of completion items to avoid jitter while typing in the same completion item
107
+ */
108
+ private readonly completionItemCache = new LRUCache<
109
+ string,
110
+ Promise<LSP.CompletionItem>
111
+ >(10);
112
+
105
113
  constructor(
106
114
  client: ILanguageServerClient,
107
115
  initialSettings: Record<string, unknown>,
@@ -112,7 +120,7 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
112
120
  ) {
113
121
  this.documentUri = getLSPDocument();
114
122
  this.getNotebookEditors = getNotebookEditors;
115
-
123
+ this.initialSettings = initialSettings;
116
124
  this.client = client;
117
125
  this.patchProcessNotification();
118
126
 
@@ -177,6 +185,37 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
177
185
  this.client.close();
178
186
  }
179
187
 
188
+ /**
189
+ * Re-synchronize all open documents with the LSP server.
190
+ * This is called after a WebSocket reconnection to restore document state.
191
+ */
192
+ public async resyncAllDocuments(): Promise<void> {
193
+ invariant(
194
+ isClientWithNotify(this.client),
195
+ "notify is not a method on the client",
196
+ );
197
+ await this.client.initialize();
198
+ this.client.notify("workspace/didChangeConfiguration", {
199
+ settings: this.initialSettings,
200
+ });
201
+
202
+ // Get the current document state
203
+ const { lens, version } = this.snapshotter.snapshot();
204
+
205
+ // Re-open the merged document with the LSP server
206
+ // This sends a textDocument/didOpen for the entire notebook
207
+ await this.client.textDocumentDidOpen({
208
+ textDocument: {
209
+ languageId: "python", // Default to Python for marimo notebooks
210
+ text: lens.mergedText,
211
+ uri: this.documentUri,
212
+ version: version,
213
+ },
214
+ });
215
+
216
+ Logger.log("[lsp] Document re-synchronization complete");
217
+ }
218
+
180
219
  private getNotebookCode() {
181
220
  return store.get(topologicalCodesAtom);
182
221
  }
@@ -428,10 +467,19 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
428
467
  };
429
468
  }
430
469
 
431
- completionItemResolve(
470
+ async completionItemResolve(
432
471
  params: LSP.CompletionItem,
433
472
  ): Promise<LSP.CompletionItem> {
434
- return this.client.completionItemResolve(params);
473
+ // Used cached result to avoid jitter while typing in the same completion item
474
+ const key = JSON.stringify(params);
475
+ const cached = this.completionItemCache.get(key);
476
+ if (cached) {
477
+ return cached;
478
+ }
479
+
480
+ const resolved = this.client.completionItemResolve(params);
481
+ this.completionItemCache.set(key, resolved);
482
+ return resolved;
435
483
  }
436
484
 
437
485
  async textDocumentPrepareRename(