@marimo-team/islands 0.16.4 → 0.17.0

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 (589) hide show
  1. package/dist/{ConnectedDataExplorerComponent-CCjhPKMy.js → ConnectedDataExplorerComponent-DJEUH6Bb.js} +78 -100
  2. package/dist/{_baseIsEqual-oN7pRNcM.js → _baseIsEqual-CN4oFUZ4.js} +20 -20
  3. package/dist/{_basePickBy-CYvzhRjy.js → _basePickBy-CzSvE_-f.js} +3 -3
  4. package/dist/{_baseProperty-DGUdIBuu.js → _baseProperty-DbbUiyUD.js} +5 -5
  5. package/dist/{_baseUniq-B5gfSl8S.js → _baseUniq-DwoC-LVO.js} +4 -4
  6. package/dist/any-language-editor-CEXn1vFs.js +156 -0
  7. package/dist/apl-DuVfHsPc.js +4 -0
  8. package/dist/architecture-O4VJ6CD3-lp-opOaL.js +21 -0
  9. package/dist/{architectureDiagram-W76B3OCA-DkEhipkW.js → architectureDiagram-W76B3OCA-CoBORy6u.js} +34 -34
  10. package/dist/asciiarmor-qIVWsi4F.js +4 -0
  11. package/dist/asn1-BjPqARr7.js +4 -0
  12. package/dist/assets/__vite-browser-external-lX-sn9m2.js +1 -0
  13. package/dist/assets/worker-vPn7gxWj.js +54 -0
  14. package/dist/{blockDiagram-QIGZ2CNN-DZOqLMYa.js → blockDiagram-QIGZ2CNN-0yzoLIar.js} +75 -86
  15. package/dist/brainfuck-DPGTVfkE.js +4 -0
  16. package/dist/{button-CEcjneWG.js → button-DcnBVpVa.js} +11 -14
  17. package/dist/{c4Diagram-FPNF74CW-DVaR7c9q.js → c4Diagram-FPNF74CW-CKsIA_DD.js} +27 -51
  18. package/dist/{channel-Uh0KpgGW.js → channel-3LVvQZcD.js} +1 -1
  19. package/dist/{check-BK9zDfQk.js → check-D7ifz5op.js} +1 -1
  20. package/dist/{chunk-3AY6CYHV-Dk2R2-S1.js → chunk-3AY6CYHV-B2C-aVc3.js} +35 -35
  21. package/dist/{chunk-4BX2VUAB-CqO6zUIz.js → chunk-4BX2VUAB-DEd4VI9L.js} +1 -1
  22. package/dist/{chunk-4KMFLZZN-CloTfTwP.js → chunk-4KMFLZZN-DnvP3O4K.js} +216 -325
  23. package/dist/{chunk-55IACEB6-I0rmqTua.js → chunk-55IACEB6-BcCzwOOl.js} +1 -1
  24. package/dist/{chunk-6OXUPJBA-BuROSTmo.js → chunk-6OXUPJBA-eNAAfJ3Q.js} +7 -7
  25. package/dist/{chunk-7GE3RBXV-B1-tsIPP.js → chunk-7GE3RBXV-CSAeQvLz.js} +1 -1
  26. package/dist/{chunk-ABZYJK2D-CLlso8tj.js → chunk-ABZYJK2D-CZcb_1iM.js} +16 -20
  27. package/dist/{chunk-BN7GFLIU-Db2-FjLn.js → chunk-BN7GFLIU-pBc5O5Rh.js} +1 -1
  28. package/dist/{chunk-CVBHYZKI-BONeiloK.js → chunk-CVBHYZKI-CivHZg9P.js} +3 -3
  29. package/dist/{chunk-CXMOBAN2-U9GJSP1d.js → chunk-CXMOBAN2-Dd0E6qb0.js} +46 -54
  30. package/dist/chunk-EXTU4WIE-GQ2ZWfJo.js +10 -0
  31. package/dist/{chunk-FMBD7UC4-DyV3BR_I.js → chunk-FMBD7UC4-C6YcisV6.js} +1 -1
  32. package/dist/{chunk-JA3XYJ7Z-C9A1076P.js → chunk-JA3XYJ7Z-DYeQaT57.js} +21 -25
  33. package/dist/{chunk-JEIROHC2-BGnFkSVq.js → chunk-JEIROHC2-B-EZMP4V.js} +1 -1
  34. package/dist/{chunk-K7UQS3LO-033LOsjK.js → chunk-K7UQS3LO-DENzlS-M.js} +7 -7
  35. package/dist/{chunk-KMC2YHZD-DT4Sq4Ld.js → chunk-KMC2YHZD-SckhHdEh.js} +1 -1
  36. package/dist/{chunk-QN33PNHL-gs44MZla.js → chunk-QN33PNHL-Cjq5b604.js} +2 -2
  37. package/dist/{chunk-QYVHNE3D-B8BO1AnT.js → chunk-QYVHNE3D-CNUuivie.js} +3 -4
  38. package/dist/{chunk-QZHKN3VN-CeN_GkU6.js → chunk-QZHKN3VN-DugEU_bA.js} +1 -1
  39. package/dist/chunk-S3R3BYOJ-itCT6Vif.js +380 -0
  40. package/dist/{chunk-T44TD3VJ-BwzD6YE0.js → chunk-T44TD3VJ-BLdfTX8J.js} +1 -1
  41. package/dist/{chunk-TVAH2DTR-Bi6jpQJQ.js → chunk-TVAH2DTR-BOnwF9d8.js} +7 -8
  42. package/dist/{chunk-TZMSLE5B-D8klz2H_.js → chunk-TZMSLE5B-DGs66AlL.js} +4 -5
  43. package/dist/{chunk-WFRQ32O7-CzSwSlN0.js → chunk-WFRQ32O7-CPsipkmJ.js} +1 -1
  44. package/dist/{chunk-WFWHJNB7-DN_cavM6.js → chunk-WFWHJNB7-Cmed18Pk.js} +1 -1
  45. package/dist/{chunk-XRWGC2XP-Bb5eGNM2.js → chunk-XRWGC2XP-DH5GDaY8.js} +1 -1
  46. package/dist/{chunk-ZPAFE4SF-S5UYNb0V.js → chunk-ZPAFE4SF-DPDwaqZm.js} +22 -22
  47. package/dist/classDiagram-KNZD7YFC-azuS_99k.js +39 -0
  48. package/dist/classDiagram-v2-RKCZMP56-CQpyQQOR.js +39 -0
  49. package/dist/{click-outside-container-DE4e7p1p.js → click-outside-container-CL_FkgGY.js} +7 -12
  50. package/dist/{clike-CxAz4p9E.js → clike-DYfRWWXk.js} +1 -1
  51. package/dist/{clike-Cg_DBrJ0.js → clike-bzZTreP4.js} +1 -1
  52. package/dist/clojure-ATksAecl.js +4 -0
  53. package/dist/{clone-Dk4FkKH0.js → clone-Msbhmn2a.js} +1 -1
  54. package/dist/cmake-CWylaz2C.js +4 -0
  55. package/dist/cobol-BiLLCZIQ.js +4 -0
  56. package/dist/coffeescript-Ca4jipi8.js +4 -0
  57. package/dist/commonlisp-BwFjyEC7.js +4 -0
  58. package/dist/{constants-Cjd_3kwd.js → constants-BCOEQoEQ.js} +3 -3
  59. package/dist/{copy-C5RFg7ok.js → copy-BkZ8PkBM.js} +6 -2
  60. package/dist/{cose-bilkent-S5V4N54A-B3iOTGu5.js → cose-bilkent-S5V4N54A-BZnbwyVD.js} +20 -20
  61. package/dist/crystal-BhUsQHbh.js +4 -0
  62. package/dist/css-Cf4wlIyV.js +5 -0
  63. package/dist/cypher-Dj8Hzgxa.js +4 -0
  64. package/dist/{cytoscape.esm-DTDV0Nbj.js → cytoscape.esm-BTpRoPd2.js} +586 -661
  65. package/dist/d-DZI7tbTy.js +4 -0
  66. package/dist/{dagre-5GWH7T2D-KM4Z11yT.js → dagre-5GWH7T2D-BGaiSZZO.js} +32 -37
  67. package/dist/{dagre-B0u1urxE.js → dagre-pyfDIOWJ.js} +57 -76
  68. package/dist/data-grid-overlay-editor-867aBz0Y.js +133 -0
  69. package/dist/{diagram-N5W7TBWH-CtO7az4G.js → diagram-N5W7TBWH-CzLE0jZB.js} +35 -51
  70. package/dist/diagram-QEK2KX5R-AGS60xEZ.js +245 -0
  71. package/dist/{diagram-S2PKOQOG-CiXElLNQ.js → diagram-S2PKOQOG-BxRoG6yW.js} +28 -28
  72. package/dist/diff-WQISUHG5.js +4 -0
  73. package/dist/{dist-CdE2C2In.js → dist-2Ne-33Xy.js} +15 -20
  74. package/dist/{dist-DKFaZRVk.js → dist-B0YD1aXi.js} +2 -2
  75. package/dist/{dist-DBhzmFyH.js → dist-B1Dv8Sdk.js} +3 -3
  76. package/dist/{dist-CGIZPq3J.js → dist-BFkr6kAQ.js} +2 -2
  77. package/dist/{dist-DL_ci7Yc.js → dist-BL2DSY0P.js} +1 -1
  78. package/dist/dist-BawZu0ix.js +10 -0
  79. package/dist/{dist-Bar1QnNM.js → dist-BhVFggab.js} +3 -3
  80. package/dist/{textile-Cy55fYGC.js → dist-BiOF7987.js} +4 -2
  81. package/dist/{dist-BQmQQqFH.js → dist-BpzZrRd6.js} +1 -1
  82. package/dist/{dist-CxD5E6Sh.js → dist-C7zhQ7K0.js} +24 -22
  83. package/dist/{dist-BqgkUnEN.js → dist-CBhnQKQ4.js} +3 -3
  84. package/dist/{dist-Dzk1C8l5.js → dist-CId4IPXu.js} +10 -13
  85. package/dist/{dist-CUnh_3Ii.js → dist-CYhQCVru.js} +2 -2
  86. package/dist/{dist-BBlFk9ki.js → dist-CZq5-ZyD.js} +1 -1
  87. package/dist/{dist-elblfNXO.js → dist-Cacac5HV.js} +2 -2
  88. package/dist/{dist-CChOkSUg.js → dist-CfQHSIQC.js} +3 -3
  89. package/dist/{dist-JCAky9ND.js → dist-CkvGMBAS.js} +17 -22
  90. package/dist/dist-Cs3McXEj.js +6 -0
  91. package/dist/{dist-o7fhJC7U.js → dist-CvyfRaIr.js} +3 -3
  92. package/dist/{dist-CZfRM7pE.js → dist-D-3fICwh.js} +2 -2
  93. package/dist/dist-D3aaithT.js +6 -0
  94. package/dist/{dist-CutXTm8t.js → dist-DBhEu3-F.js} +1 -1
  95. package/dist/dist-DELcMSpJ.js +6 -0
  96. package/dist/{dist-C7ASiFxI.js → dist-DMxl6Qbu.js} +273 -263
  97. package/dist/{dist-CLvpViod.js → dist-DS6nuHYK.js} +2 -3
  98. package/dist/dist-Dgts3WXd.js +6 -0
  99. package/dist/{dist--I6Htnlv.js → dist-DlHkZUnY.js} +5 -5
  100. package/dist/dist-Doiq_KIP.js +15 -0
  101. package/dist/dist-DtpUiDG_.js +6 -0
  102. package/dist/{dist-DzOpMdwb.js → dist-NUdHX0XE.js} +4 -4
  103. package/dist/{dist-C3WYsf4K.js → dist-PGgOcwbF.js} +4 -10
  104. package/dist/{dist-DNnYAdRE.js → dist-RdxOJbBw.js} +2 -2
  105. package/dist/{dist-BEvIw5Nh.js → dist-RwqAqkpG.js} +1 -1
  106. package/dist/dist-ZjnJq_jD.js +10 -0
  107. package/dist/{dist-CbRkrKrP.js → dist-biZ846D9.js} +5 -5
  108. package/dist/{dist-DW9er3Zq.js → dist-d5NxvX2s.js} +44 -23
  109. package/dist/{dist-C3QUag__.js → dist-ivwkJchV.js} +3 -3
  110. package/dist/dist-mof3iuBu.js +12 -0
  111. package/dist/{dist-Cib4sGDA.js → dist-reo2kYlN.js} +2 -2
  112. package/dist/{dist-BZBitvuL.js → dist-wHVprCkn.js} +1 -1
  113. package/dist/{dist-C5zMs_n5.js → dist-y8uoXYaE.js} +3 -3
  114. package/dist/{dist-DPF5TTUg.js → dist-z_iuDES7.js} +126 -115
  115. package/dist/{dockerfile-Dum_1b-5.js → dockerfile-sZMPcXVY.js} +1 -1
  116. package/dist/dtd-B2M8dhfC.js +4 -0
  117. package/dist/dylan-CU3Vt8SC.js +4 -0
  118. package/dist/ecl-B8ESAVq4.js +4 -0
  119. package/dist/eiffel-DDfMIKeA.js +4 -0
  120. package/dist/elm-Bj6rj8jf.js +4 -0
  121. package/dist/{erDiagram-AWTI2OKA-ZTIl9iQO.js → erDiagram-AWTI2OKA-CTxzb-U8.js} +20 -20
  122. package/dist/erlang-BxyshZUq.js +4 -0
  123. package/dist/{error-banner-OQIGTqFR.js → error-banner-npbEfanI.js} +13 -13
  124. package/dist/{esm-DxFkg7a6.js → esm-BdiY4QsX.js} +1528 -1492
  125. package/dist/{esm-d0g2RsOH.js → esm-CAWW9sum.js} +6 -8
  126. package/dist/{esm-1_Mp6VD2.js → esm-YY5zh7KV.js} +324 -395
  127. package/dist/{esm-BO9n_s6u.js → esm-svAVli9f.js} +5 -5
  128. package/dist/{factor-CdgiDGiu.js → factor-CRFTmP_a.js} +1 -1
  129. package/dist/factor-CYk6XT8r.js +5 -0
  130. package/dist/{flowDiagram-PVAE7QVJ-DsbofOzu.js → flowDiagram-PVAE7QVJ-Dck2hiJe.js} +22 -22
  131. package/dist/{formats-D5C6JAJf.js → formats-BnqXUb1V.js} +13 -17
  132. package/dist/forth-fcoJkd-f.js +4 -0
  133. package/dist/fortran-IxZHu4wc.js +4 -0
  134. package/dist/{fullscreen-D1yTiBlu.js → fullscreen-blsKUrtN.js} +741 -744
  135. package/dist/{ganttDiagram-OWAHRB6G-FnCH1Yj3.js → ganttDiagram-OWAHRB6G-AWzfzpup.js} +9 -9
  136. package/dist/gas-B8rmKcim.js +4 -0
  137. package/dist/gherkin-BTm-jIdJ.js +4 -0
  138. package/dist/gitGraph-ZV4HHKMB-DFg_OLQb.js +21 -0
  139. package/dist/{gitGraphDiagram-NY62KEGX-B0wvMNqU.js → gitGraphDiagram-NY62KEGX-GyNboWSV.js} +31 -34
  140. package/dist/{glide-data-editor-CYfKmSNp.js → glide-data-editor-DHuN8kQ8.js} +1701 -1771
  141. package/dist/{graphlib-BGmr7CYF.js → graphlib-hb3zmtVD.js} +5 -5
  142. package/dist/groovy-01kRHFMD.js +4 -0
  143. package/dist/haskell-B3PhE05w.js +4 -0
  144. package/dist/haxe-DEoAm8oA.js +5 -0
  145. package/dist/{hotkeys-yFrUwyJK.js → hotkeys-Ct2T3e9O.js} +4 -7
  146. package/dist/idl-DsDJU9cV.js +4 -0
  147. package/dist/info-63CPKGFF-D3DZmDBa.js +21 -0
  148. package/dist/infoDiagram-STP46IZ2-ec08vi_U.js +44 -0
  149. package/dist/{isArrayLikeObject-DiDsNamC.js → isArrayLikeObject-BlvK28do.js} +3 -5
  150. package/dist/{isEmpty-BBG-u1GM.js → isEmpty--odfYjh1.js} +2 -2
  151. package/dist/{isSymbol-BxF-_8BA.js → isSymbol-Cb1f2HgO.js} +1 -1
  152. package/dist/{javascript-Dfq1qI35.js → javascript-BfCTmOnk.js} +2 -2
  153. package/dist/javascript-gwczVhuU.js +5 -0
  154. package/dist/jinja2-AkZRdFk3.js +4 -0
  155. package/dist/{journeyDiagram-BIP6EPQ6-B3PotfAW.js → journeyDiagram-BIP6EPQ6-TmXYCUbT.js} +23 -24
  156. package/dist/julia-_s6qe3bf.js +4 -0
  157. package/dist/{kanban-definition-6OIFK2YF-BTrQZ3LN.js → kanban-definition-6OIFK2YF-B6ozleHo.js} +15 -15
  158. package/dist/{katex-dN__NFdn.js → katex-mPzRsXEy.js} +1 -1
  159. package/dist/{katex-BE4xflfm.js → katex-mkWmhPUh.js} +149 -173
  160. package/dist/{label-BinTsX-u.js → label-VVRKZmrP.js} +21 -24
  161. package/dist/{linear-DyTdUIqX.js → linear-iebAbJVD.js} +1 -1
  162. package/dist/livescript-CwPHQdv5.js +4 -0
  163. package/dist/{loader-Dijti3y4.js → loader-CM0VALo9.js} +19 -26
  164. package/dist/lua-s7nRxkCP.js +4 -0
  165. package/dist/main.js +8234 -8633
  166. package/dist/{marked.esm-3RjvXPoO.js → marked.esm-DJM8la36.js} +5 -5
  167. package/dist/mathematica-Ci36yd1q.js +4 -0
  168. package/dist/mbox-DbOYMNCO.js +4 -0
  169. package/dist/{memoize-Dq87l1O_.js → memoize-DYoRBSLn.js} +1 -1
  170. package/dist/{merge-BPDCIm8P.js → merge-BjuR6j_w.js} +1 -1
  171. package/dist/{mermaid-BlJDcO4M.js → mermaid-YPPMBmhk.js} +58 -76
  172. package/dist/{mermaid-parser.core-CSFx6MQ7.js → mermaid-parser.core-BLkyTSZj.js} +8 -8
  173. package/dist/{mhchem-DZ68WS0G.js → mhchem-Dw7wvXtr.js} +1 -1
  174. package/dist/{min-BzhKOmZo.js → min-B_i2ahn4.js} +7 -7
  175. package/dist/{mindmap-definition-Q6HEUPPD-9hhnrO1k.js → mindmap-definition-Q6HEUPPD-F6-JnXwq.js} +17 -17
  176. package/dist/mirc-VmNe8AwF.js +4 -0
  177. package/dist/mllike-BdD7SJEa.js +6 -0
  178. package/dist/modelica-BA4VqzC3.js +4 -0
  179. package/dist/mscgen-DF-5WHJm.js +6 -0
  180. package/dist/mumps-c_Uia_QN.js +4 -0
  181. package/dist/{node-sql-parser-13oju30e.js → node-sql-parser-BqKV-TpL.js} +14343 -14351
  182. package/dist/{now-DVBcRCoE.js → now-CwRqw0nS.js} +1 -1
  183. package/dist/nsis-BAANGODV.js +5 -0
  184. package/dist/{nsis-BW6_XagK.js → nsis-BWJEeUyS.js} +1 -1
  185. package/dist/ntriples-Bslqh2Ki.js +4 -0
  186. package/dist/{number-overlay-editor-D1YdiOrm.js → number-overlay-editor-CeyruAX4.js} +17 -23
  187. package/dist/octave-DYn5ltia.js +4 -0
  188. package/dist/oz-B_N-StZq.js +4 -0
  189. package/dist/packet-HUATNLJX-CkqjFdAv.js +21 -0
  190. package/dist/pascal-DU4CtAUu.js +4 -0
  191. package/dist/perl-Bae6k32u.js +4 -0
  192. package/dist/pie-WTHONI2E-D0rWwX5P.js +21 -0
  193. package/dist/{pieDiagram-ADFJNKIX-CSBC0ZgF.js → pieDiagram-ADFJNKIX-C5dSQVCn.js} +28 -28
  194. package/dist/pig-DSIxUEgX.js +4 -0
  195. package/dist/powershell-31lcPgIF.js +4 -0
  196. package/dist/powershell-BZx53Ujw.js +236 -0
  197. package/dist/properties-lmYbntDG.js +4 -0
  198. package/dist/protobuf-BTYoCEpV.js +4 -0
  199. package/dist/pug-DMFM7zzO.js +5 -0
  200. package/dist/{pug-Bmups_z0.js → pug-PJh82u1M.js} +1 -1
  201. package/dist/puppet-B0ub07d-.js +4 -0
  202. package/dist/python-C4jT87Nt.js +5 -0
  203. package/dist/{q-BzWcnVri.js → q-CMoUHJ5Q.js} +3 -2
  204. package/dist/q-YbPYlqRI.js +4 -0
  205. package/dist/{quadrantDiagram-LMRXKWRM-h7nHf8xG.js → quadrantDiagram-LMRXKWRM-DlahxNiy.js} +7 -7
  206. package/dist/r-OfNu6HAI.js +4 -0
  207. package/dist/radar-NJJJXTRR-Bxqv4O5a.js +21 -0
  208. package/dist/{range-CgK0-PEw.js → range-DxfkexCE.js} +3 -3
  209. package/dist/{react-plotly-BZakcxdv.js → react-plotly-D_IAfR8f.js} +4364 -4705
  210. package/dist/{requirementDiagram-4UW4RH46-BGEurQYq.js → requirementDiagram-4UW4RH46-DTkinyvU.js} +17 -17
  211. package/dist/rpm-D_3b5peD.js +5 -0
  212. package/dist/ruby-CehsJy_T.js +4 -0
  213. package/dist/{sankeyDiagram-GR3RE2ED-CxeJ_jfl.js → sankeyDiagram-GR3RE2ED-CsLnEnnq.js} +3 -3
  214. package/dist/sas-DwQHzPoF.js +4 -0
  215. package/dist/scheme-B6ArxiQu.js +4 -0
  216. package/dist/{sequenceDiagram-C3RYC4MD-CbFxwyr_.js → sequenceDiagram-C3RYC4MD-BdEOR6SC.js} +20 -30
  217. package/dist/shell-AHmQgDfc.js +4 -0
  218. package/dist/sieve-CgodKOcx.js +4 -0
  219. package/dist/{simple-mode-Cgyya8F-.js → simple-mode-BP3Jd4vf.js} +1 -1
  220. package/dist/{slides-component-BEyG25AH.js → slides-component-2bbal1YJ.js} +24 -46
  221. package/dist/smalltalk-BeFzDkbo.js +4 -0
  222. package/dist/sparql-BWxq-Lnx.js +4 -0
  223. package/dist/{src-BNNJRxz3.js → src-DZkaBUmt.js} +6 -6
  224. package/dist/{stateDiagram-KXAO66HF-A61bMf29.js → stateDiagram-KXAO66HF-DQLH2jhP.js} +39 -41
  225. package/dist/stateDiagram-v2-UMBNRL4Z-D9v8fKjF.js +38 -0
  226. package/dist/stex-Dvaq0qsm.js +5 -0
  227. package/dist/style.css +1 -1
  228. package/dist/stylus-Ge0ofWlZ.js +4 -0
  229. package/dist/swift-CjQfbVxV.js +4 -0
  230. package/dist/tcl-CAGDF11K.js +4 -0
  231. package/dist/textile-CrXreJtf.js +4 -0
  232. package/dist/{time-D3tzCqJ6.js → time-CFkXkVrt.js} +1 -1
  233. package/dist/{timeline-definition-XQNQX7LJ-BwdsB7CR.js → timeline-definition-XQNQX7LJ-bToVq14i.js} +4 -5
  234. package/dist/{timer-D3Zlu9ow.js → timer-CzOhIJuk.js} +2 -2
  235. package/dist/{toNumber-efKT08hh.js → toNumber-EFF1Z9T1.js} +2 -2
  236. package/dist/{toString-BvCd3yJc.js → toString-C2mCkasT.js} +2 -2
  237. package/dist/toml-AdLXKwEi.js +4 -0
  238. package/dist/{toml-CIUkU1CP.js → toml-eSl4PUAH.js} +6 -2
  239. package/dist/treemap-75Q7IDZK-Da9Jv6a_.js +21 -0
  240. package/dist/troff-C-LaM2ex.js +4 -0
  241. package/dist/ttcn-DTclUi6T.js +4 -0
  242. package/dist/ttcn-cfg-BtBPbmLX.js +4 -0
  243. package/dist/turtle-BODDDg5O.js +4 -0
  244. package/dist/{types-Dcb1hf55.js → types-CRXV0KD5.js} +385 -252
  245. package/dist/{useAsyncData-DAtPzJzP.js → useAsyncData-uMVTsDI9.js} +1 -1
  246. package/dist/{useDateFormatter-CiUlIu7v.js → useDateFormatter-Dcz7jstn.js} +6 -6
  247. package/dist/{useTheme-CmsvrO5o.js → useTheme-NbEx-ZNV.js} +14 -10
  248. package/dist/vb-Cb1HQHii.js +4 -0
  249. package/dist/vbscript-CpXOP4wZ.js +4 -0
  250. package/dist/{vega-component-B3LA6qbm.js → vega-component-hegVmfuS.js} +21 -21
  251. package/dist/{vega-loader.browser.module-Bi3ttvdj.js → vega-loader.browser.module-DcW8jnKp.js} +1 -2
  252. package/dist/velocity-Dz0rBQIk.js +4 -0
  253. package/dist/verilog-6Di9aLKw.js +4 -0
  254. package/dist/vhdl-BRNesXYc.js +4 -0
  255. package/dist/webidl-BpRNYIYn.js +4 -0
  256. package/dist/xquery-DXWcJ7b6.js +4 -0
  257. package/dist/{xychartDiagram-6GGTOJPD-BJRRi5HC.js → xychartDiagram-6GGTOJPD-C7Bhm_yt.js} +12 -13
  258. package/dist/yacas-DbSARPz4.js +4 -0
  259. package/dist/z80-DzslPj_l.js +4 -0
  260. package/dist/{zod-UPQf9SGn.js → zod-ChY6miG5.js} +71 -81
  261. package/package.json +12 -12
  262. package/src/__mocks__/requests.ts +2 -0
  263. package/src/__tests__/chat-history.test.ts +123 -0
  264. package/src/components/app-config/ai-config.tsx +23 -0
  265. package/src/components/app-config/mcp-config.tsx +42 -2
  266. package/src/components/app-config/user-config-form.tsx +29 -49
  267. package/src/components/chat/acp/__tests__/context-utils.test.ts +1 -1
  268. package/src/components/chat/acp/agent-panel.tsx +1 -1
  269. package/src/components/chat/acp/blocks.tsx +46 -53
  270. package/src/components/chat/acp/common.tsx +1 -1
  271. package/src/components/chat/acp/context-utils.ts +1 -1
  272. package/src/components/chat/acp/session-tabs.tsx +1 -1
  273. package/src/components/chat/chat-history-popover.tsx +125 -0
  274. package/src/components/chat/chat-history-utils.ts +69 -0
  275. package/src/components/chat/chat-panel.tsx +9 -57
  276. package/src/components/chat/chat-utils.ts +11 -4
  277. package/src/components/data-table/__tests__/header-items.test.tsx +117 -0
  278. package/src/components/data-table/column-header.tsx +4 -2
  279. package/src/components/data-table/columns.tsx +2 -1
  280. package/src/components/data-table/data-table.tsx +7 -2
  281. package/src/components/data-table/header-items.tsx +63 -10
  282. package/src/components/dependency-graph/custom-node.tsx +11 -11
  283. package/src/components/dependency-graph/elements.ts +9 -4
  284. package/src/components/dependency-graph/panels.tsx +6 -4
  285. package/src/components/editor/Output.tsx +6 -1
  286. package/src/components/editor/__tests__/data-attributes.test.tsx +1 -1
  287. package/src/components/editor/actions/useNotebookActions.tsx +2 -4
  288. package/src/components/editor/ai/__tests__/completion-utils.test.ts +23 -31
  289. package/src/components/editor/ai/ai-completion-editor.tsx +135 -5
  290. package/src/components/editor/ai/completion-handlers.tsx +106 -22
  291. package/src/components/editor/cell/CreateCellButton.tsx +14 -2
  292. package/src/components/editor/cell/code/cell-editor.tsx +6 -0
  293. package/src/components/editor/chrome/panels/cache-panel.tsx +216 -0
  294. package/src/components/editor/chrome/panels/empty-state.tsx +3 -1
  295. package/src/components/editor/chrome/types.ts +66 -22
  296. package/src/components/editor/chrome/wrapper/app-chrome.tsx +2 -0
  297. package/src/components/editor/database/schemas.ts +2 -10
  298. package/src/components/editor/errors/auto-fix.tsx +138 -32
  299. package/src/components/editor/errors/fix-mode.ts +15 -0
  300. package/src/components/editor/navigation/__tests__/clipboard.test.ts +0 -5
  301. package/src/components/editor/navigation/clipboard.ts +2 -1
  302. package/src/components/editor/{Cell.tsx → notebook-cell.tsx} +25 -8
  303. package/src/components/editor/output/ConsoleOutput.tsx +27 -33
  304. package/src/components/editor/output/JsonOutput.tsx +9 -0
  305. package/src/components/editor/output/MarimoErrorOutput.tsx +4 -34
  306. package/src/components/editor/output/MarimoTracebackOutput.tsx +10 -7
  307. package/src/components/editor/output/__tests__/json-output.test.ts +43 -0
  308. package/src/components/editor/package-alert.tsx +3 -0
  309. package/src/components/editor/renderers/{CellArray.tsx → cell-array.tsx} +1 -1
  310. package/src/components/forms/__tests__/form-utils.test.ts +6 -4
  311. package/src/components/icons/copy-icon.tsx +11 -5
  312. package/src/components/mcp/hooks.ts +48 -0
  313. package/src/components/mcp/mcp-status-indicator.tsx +144 -0
  314. package/src/components/shortcuts/renderShortcut.tsx +3 -1
  315. package/src/components/ui/button.tsx +2 -0
  316. package/src/components/ui/confirmation-button.tsx +85 -0
  317. package/src/components/ui/number-field.tsx +4 -1
  318. package/src/components/ui/switch.tsx +2 -0
  319. package/src/core/ai/context/providers/__tests__/__snapshots__/tables.test.ts.snap +13 -19
  320. package/src/core/ai/context/providers/__tests__/cell-output.test.ts +0 -1
  321. package/src/core/ai/context/providers/__tests__/datasource.test.ts +14 -7
  322. package/src/core/ai/context/providers/__tests__/error.test.ts +24 -15
  323. package/src/core/ai/context/providers/cell-output.ts +5 -5
  324. package/src/core/ai/context/providers/common.ts +13 -4
  325. package/src/core/ai/context/providers/datasource.ts +56 -21
  326. package/src/core/ai/context/providers/error.ts +3 -4
  327. package/src/core/ai/context/providers/file.ts +2 -2
  328. package/src/core/ai/context/providers/tables.ts +36 -8
  329. package/src/core/ai/context/providers/variable.ts +2 -3
  330. package/src/core/ai/state.ts +6 -3
  331. package/src/core/ai/tools/__tests__/registry.test.ts +33 -8
  332. package/src/core/ai/tools/base.ts +81 -1
  333. package/src/core/ai/tools/registry.ts +36 -10
  334. package/src/core/ai/tools/sample-tool.ts +44 -8
  335. package/src/core/cache/requests.ts +5 -0
  336. package/src/core/cells/__tests__/cells.test.ts +6 -6
  337. package/src/core/cells/cells.ts +13 -14
  338. package/src/core/cells/scrollCellIntoView.ts +1 -1
  339. package/src/core/codemirror/__tests__/__snapshots__/setup.test.ts.snap +2 -0
  340. package/src/core/codemirror/__tests__/replace-editor-content.test.ts +336 -0
  341. package/src/core/codemirror/__tests__/setup.test.ts +1 -0
  342. package/src/core/codemirror/cm.ts +3 -2
  343. package/src/core/codemirror/find-replace/navigate.ts +2 -2
  344. package/src/core/codemirror/format.ts +2 -9
  345. package/src/core/codemirror/language/__tests__/sql.test.ts +24 -6
  346. package/src/core/codemirror/language/languages/python.ts +1 -3
  347. package/src/core/codemirror/language/languages/sql/sql.ts +23 -13
  348. package/src/core/codemirror/language/panel/panel.tsx +1 -6
  349. package/src/core/codemirror/language/utils.ts +3 -8
  350. package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +21 -14
  351. package/src/core/codemirror/lsp/federated-lsp.ts +20 -9
  352. package/src/core/codemirror/lsp/notebook-lsp.ts +35 -29
  353. package/src/core/codemirror/lsp/types.ts +0 -13
  354. package/src/core/codemirror/replace-editor-content.ts +87 -0
  355. package/src/core/config/__tests__/config-schema.test.ts +5 -0
  356. package/src/core/config/config-schema.ts +10 -0
  357. package/src/core/config/feature-flag.tsx +2 -6
  358. package/src/core/edit-app.tsx +1 -1
  359. package/src/core/errors/__tests__/errors.test.ts +1 -0
  360. package/src/core/errors/errors.ts +20 -6
  361. package/src/core/islands/bridge.ts +2 -0
  362. package/src/core/islands/main.ts +4 -0
  363. package/src/core/kernel/messages.ts +1 -0
  364. package/src/core/network/CachingRequestRegistry.ts +2 -2
  365. package/src/core/network/requests-network.ts +14 -0
  366. package/src/core/network/requests-static.ts +2 -0
  367. package/src/core/network/requests-toasting.ts +2 -0
  368. package/src/core/network/types.ts +5 -0
  369. package/src/core/saving/save-component.tsx +43 -36
  370. package/src/core/wasm/bridge.ts +2 -0
  371. package/src/core/websocket/useMarimoWebSocket.tsx +8 -0
  372. package/src/css/app/codemirror-completions.css +1 -1
  373. package/src/custom.d.ts +2 -0
  374. package/src/plugins/core/registerReactComponent.tsx +5 -1
  375. package/src/plugins/impl/DataTablePlugin.tsx +19 -19
  376. package/src/plugins/impl/__tests__/DateTimePickerPlugin.test.tsx +32 -0
  377. package/src/plugins/impl/chat/ChatPlugin.tsx +1 -1
  378. package/src/plugins/impl/chat/chat-ui.tsx +17 -2
  379. package/src/plugins/impl/chat/types.ts +1 -1
  380. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +7 -2
  381. package/src/plugins/impl/plotly/__tests__/parse-from-template.test.ts +17 -0
  382. package/src/plugins/impl/plotly/parse-from-template.ts +2 -1
  383. package/src/stories/cell.stories.tsx +1 -1
  384. package/src/stories/layout/vertical/one-column.stories.tsx +1 -1
  385. package/src/utils/__tests__/formatting.test.ts +107 -0
  386. package/src/utils/__tests__/json-parser.test.ts +13 -0
  387. package/src/utils/copy.ts +6 -0
  388. package/src/utils/formatting.ts +51 -0
  389. package/src/utils/json/json-parser.ts +28 -3
  390. package/src/utils/numbers.ts +24 -1
  391. package/dist/any-language-editor-CVFQlioK.js +0 -156
  392. package/dist/apl-ChlaBfxB.js +0 -4
  393. package/dist/architecture-O4VJ6CD3-BVeaxUcM.js +0 -21
  394. package/dist/asciiarmor-CcJmm3l_.js +0 -4
  395. package/dist/asn1-ThRYxoBE.js +0 -4
  396. package/dist/assets/__vite-browser-external-BeNtI_tJ.js +0 -1
  397. package/dist/assets/worker-DnuXpGWN.js +0 -54
  398. package/dist/brainfuck-CEM0JgDn.js +0 -4
  399. package/dist/chunk-EXTU4WIE-DECT9AAK.js +0 -14
  400. package/dist/chunk-S3R3BYOJ-DMQ1yeyq.js +0 -386
  401. package/dist/classDiagram-KNZD7YFC-BG53O6Jt.js +0 -39
  402. package/dist/classDiagram-v2-RKCZMP56-BmKILsGU.js +0 -39
  403. package/dist/clojure-B7RHyE9t.js +0 -4
  404. package/dist/cmake-TeTMP4I5.js +0 -4
  405. package/dist/cobol-DI-mxUER.js +0 -4
  406. package/dist/coffeescript-DHUFLqWp.js +0 -4
  407. package/dist/commonlisp-SLiUrh1m.js +0 -4
  408. package/dist/crystal-B4fY1ZfJ.js +0 -4
  409. package/dist/css-Bdoq3TzK.js +0 -5
  410. package/dist/cypher-CBU182fp.js +0 -4
  411. package/dist/d-D8myDZeH.js +0 -4
  412. package/dist/data-grid-overlay-editor-qNmJk2x0.js +0 -135
  413. package/dist/diagram-QEK2KX5R-fu8Noi3H.js +0 -245
  414. package/dist/diff-DJF_UB7H.js +0 -4
  415. package/dist/dist-52-_pKoy.js +0 -6
  416. package/dist/dist-6DOMStFn.js +0 -6
  417. package/dist/dist-B334aW7p.js +0 -10
  418. package/dist/dist-BOI9lUz-.js +0 -12
  419. package/dist/dist-C06uhBzF.js +0 -6
  420. package/dist/dist-CGkpguCB.js +0 -6
  421. package/dist/dist-CrApzUED.js +0 -6
  422. package/dist/dist-Dp2GLdCl.js +0 -14
  423. package/dist/dist-WHFsbMDr.js +0 -6
  424. package/dist/dist-hyKcTPG9.js +0 -10
  425. package/dist/dtd-DY8q65lC.js +0 -4
  426. package/dist/dylan-CBLcjWCi.js +0 -4
  427. package/dist/ecl-BSXPNfOw.js +0 -4
  428. package/dist/eiffel-BJf0PQX-.js +0 -4
  429. package/dist/elm-DWQwPCZS.js +0 -4
  430. package/dist/erlang-BWBaGZ5e.js +0 -4
  431. package/dist/factor-DT1-MBPl.js +0 -5
  432. package/dist/forth-D9GDt3FB.js +0 -4
  433. package/dist/fortran-DHkRhDWw.js +0 -4
  434. package/dist/gas-7lQEOM0H.js +0 -4
  435. package/dist/gherkin-BLLyroYi.js +0 -4
  436. package/dist/gitGraph-ZV4HHKMB-z2v_cInC.js +0 -21
  437. package/dist/groovy-C-wabwj0.js +0 -4
  438. package/dist/haskell-DaxVQ_d1.js +0 -4
  439. package/dist/haxe-C2yLoC7h.js +0 -5
  440. package/dist/idl-DQBP8i7k.js +0 -4
  441. package/dist/info-63CPKGFF-GS4w6pCB.js +0 -21
  442. package/dist/infoDiagram-STP46IZ2-DE9YYPFg.js +0 -44
  443. package/dist/javascript-DRwFV9r5.js +0 -5
  444. package/dist/jinja2-CNoIpVmN.js +0 -4
  445. package/dist/julia-DXDf-GhP.js +0 -4
  446. package/dist/livescript-S2uhJQx7.js +0 -4
  447. package/dist/lua-Bvgs0y2G.js +0 -4
  448. package/dist/mathematica-D2zqfwIg.js +0 -4
  449. package/dist/mbox-SBcPaDuZ.js +0 -4
  450. package/dist/mirc-hkQc7sVF.js +0 -4
  451. package/dist/mllike-DRWPBlr9.js +0 -6
  452. package/dist/modelica-CO2ROGlP.js +0 -4
  453. package/dist/mscgen-BpX61bO6.js +0 -6
  454. package/dist/mumps-BCnFeIn6.js +0 -4
  455. package/dist/nsis-BaTOxlD1.js +0 -5
  456. package/dist/ntriples-zEo5BWjr.js +0 -4
  457. package/dist/octave-BE0RnCM9.js +0 -4
  458. package/dist/oz-C4_2Ttul.js +0 -4
  459. package/dist/packet-HUATNLJX-CjHqJIqk.js +0 -21
  460. package/dist/pascal-Q3jJucpw.js +0 -4
  461. package/dist/perl-DkXZIWHF.js +0 -4
  462. package/dist/pie-WTHONI2E-D67gLWtR.js +0 -21
  463. package/dist/pig-DCgEHdsu.js +0 -4
  464. package/dist/powershell-3rK_nRRJ.js +0 -236
  465. package/dist/powershell-Eo2-7MoM.js +0 -4
  466. package/dist/properties-C0IOX8WR.js +0 -4
  467. package/dist/protobuf--lGQUSRO.js +0 -4
  468. package/dist/pug-Cf8AQHMJ.js +0 -5
  469. package/dist/puppet-D7Z3dTJn.js +0 -4
  470. package/dist/python-FHIx_i8Y.js +0 -5
  471. package/dist/q-B7UA1feM.js +0 -4
  472. package/dist/r-Cc9R2A7N.js +0 -4
  473. package/dist/radar-NJJJXTRR-C-AZP_Te.js +0 -21
  474. package/dist/rpm-vhJNlrQ6.js +0 -5
  475. package/dist/ruby-CVluPY0M.js +0 -4
  476. package/dist/sas-A8DL8oy3.js +0 -4
  477. package/dist/scheme-6xHHcSXC.js +0 -4
  478. package/dist/shell-DHN-e5rf.js +0 -4
  479. package/dist/sieve-BuQwLY02.js +0 -4
  480. package/dist/smalltalk-BA4HPg2H.js +0 -4
  481. package/dist/sparql-Bf4yCuy3.js +0 -4
  482. package/dist/stateDiagram-v2-UMBNRL4Z-C_0FUzzk.js +0 -38
  483. package/dist/stex-D-I1cYeE.js +0 -5
  484. package/dist/stylus-BMeped2l.js +0 -4
  485. package/dist/swift-lwEdlZoC.js +0 -4
  486. package/dist/tcl-B03ipeqv.js +0 -4
  487. package/dist/toml-BLgrVtfu.js +0 -4
  488. package/dist/treemap-75Q7IDZK-DTvwfpWt.js +0 -21
  489. package/dist/troff-g6EjN2O2.js +0 -4
  490. package/dist/ttcn-Dzvba8jK.js +0 -4
  491. package/dist/ttcn-cfg-CadG0p1K.js +0 -4
  492. package/dist/turtle-DkXAMWo9.js +0 -4
  493. package/dist/vb-C5dCiel8.js +0 -4
  494. package/dist/vbscript-I4bDEQln.js +0 -4
  495. package/dist/velocity-mt0fDwFH.js +0 -4
  496. package/dist/verilog-Dxq3KJkc.js +0 -4
  497. package/dist/vhdl-Km0QUlV-.js +0 -4
  498. package/dist/webidl-B3lJ2MRL.js +0 -4
  499. package/dist/xquery-CcIxNPEe.js +0 -4
  500. package/dist/yacas-oMa-f-tN.js +0 -4
  501. package/dist/z80-D03Nvn6l.js +0 -4
  502. /package/dist/{apl-DZqo8Elt.js → apl-CEHentF4.js} +0 -0
  503. /package/dist/{asciiarmor-DTzHAIeX.js → asciiarmor-DURYiCS0.js} +0 -0
  504. /package/dist/{asn1-DrAXKsZH.js → asn1-ETAiEoXY.js} +0 -0
  505. /package/dist/{asterisk-oF4U3h48.js → asterisk-DTpbbXPb.js} +0 -0
  506. /package/dist/{brainfuck-BYgLey30.js → brainfuck-BWQep-SA.js} +0 -0
  507. /package/dist/{clojure-Bs2M3OUY.js → clojure-BzFapDkA.js} +0 -0
  508. /package/dist/{cmake-DpI8vxJN.js → cmake-DvlbIC8x.js} +0 -0
  509. /package/dist/{cobol-BQyrWo72.js → cobol-BrEI4cPR.js} +0 -0
  510. /package/dist/{coffeescript-9ke9UHmw.js → coffeescript-B6cvu8mO.js} +0 -0
  511. /package/dist/{common-keywords-BzgeAvH1.js → common-keywords-WqQm7W8t.js} +0 -0
  512. /package/dist/{commonlisp-DghUdrUH.js → commonlisp-BIT8PQqi.js} +0 -0
  513. /package/dist/{crystal-DEf_SInh.js → crystal-B_UcPArT.js} +0 -0
  514. /package/dist/{css-BzTU9lNO.js → css-dHbnt_zl.js} +0 -0
  515. /package/dist/{cypher-a2v0c11S.js → cypher-Dh3FOpL7.js} +0 -0
  516. /package/dist/{d-SAswny-M.js → d-CQD1IHee.js} +0 -0
  517. /package/dist/{diff-OJ-xLXcG.js → diff-CpF_IDx0.js} +0 -0
  518. /package/dist/{dtd-BsUf-rer.js → dtd-DYoNpy6c.js} +0 -0
  519. /package/dist/{duckdb-keywords-B0NOra5o.js → duckdb-keywords-CdIsl9L0.js} +0 -0
  520. /package/dist/{dylan-C0ZYngjn.js → dylan-Bc_2G1E-.js} +0 -0
  521. /package/dist/{ebnf-DF1xx0b_.js → ebnf-jGVT_YpN.js} +0 -0
  522. /package/dist/{ecl-Bsuvoouq.js → ecl-UIU-P-Ar.js} +0 -0
  523. /package/dist/{eiffel-DgfSpLi-.js → eiffel-C90Oyuix.js} +0 -0
  524. /package/dist/{elm-GNxDj-5E.js → elm-B9fWSySj.js} +0 -0
  525. /package/dist/{erlang-Ds3uY1kL.js → erlang-Ccff0UAn.js} +0 -0
  526. /package/dist/{fcl-CqBgSioc.js → fcl-CGR8NxAg.js} +0 -0
  527. /package/dist/{forth-JCaLysGk.js → forth-U1ROGcBY.js} +0 -0
  528. /package/dist/{fortran-Dc2AoKAl.js → fortran-3nOkjDmc.js} +0 -0
  529. /package/dist/{gas-Q4Uz82YW.js → gas-B_4H5FzV.js} +0 -0
  530. /package/dist/{gherkin-Dpxe49sQ.js → gherkin-B0eru5Uz.js} +0 -0
  531. /package/dist/{groovy-D8mTRCu6.js → groovy-dqjtZUVf.js} +0 -0
  532. /package/dist/{haskell-2_8cC4wY.js → haskell-DFzCCQzo.js} +0 -0
  533. /package/dist/{haxe-Bl9zkZlz.js → haxe-Da8Pj5RT.js} +0 -0
  534. /package/dist/{http-DKCqY6yS.js → http-1HACL_9s.js} +0 -0
  535. /package/dist/{idl-Dn-HNfGW.js → idl-D3NXs5iM.js} +0 -0
  536. /package/dist/{jinja2-JjFiAGKk.js → jinja2-gBHAxUdF.js} +0 -0
  537. /package/dist/{julia-R5wne8eu.js → julia-bG-6nJ-_.js} +0 -0
  538. /package/dist/{livescript-DSwokrYj.js → livescript-BlsRC8UJ.js} +0 -0
  539. /package/dist/{lua-CgXfrp2-.js → lua-BbDC0_5w.js} +0 -0
  540. /package/dist/{mathematica-BVli92MR.js → mathematica-YZTe3-PF.js} +0 -0
  541. /package/dist/{mbox-CMFlocdS.js → mbox-CY5idp08.js} +0 -0
  542. /package/dist/{mirc-BkW04Zpc.js → mirc-CbQuFZKk.js} +0 -0
  543. /package/dist/{mllike-DEjvHvNV.js → mllike-DsbHMX-5.js} +0 -0
  544. /package/dist/{modelica-CxDn-oje.js → modelica-CQuvsOQk.js} +0 -0
  545. /package/dist/{mscgen-D78wmE-w.js → mscgen-LIpBP9VR.js} +0 -0
  546. /package/dist/{mumps-Bi0IvPOV.js → mumps-Ct5NXoaG.js} +0 -0
  547. /package/dist/{nginx-DErPZFhX.js → nginx-Dvc62C8z.js} +0 -0
  548. /package/dist/{ntriples-Btyp6wRL.js → ntriples-jVkxWUuv.js} +0 -0
  549. /package/dist/{octave-CZA6-2F8.js → octave-jGOImUB0.js} +0 -0
  550. /package/dist/{oz-Bm6LSNfE.js → oz-Y0FKDMS2.js} +0 -0
  551. /package/dist/{pascal-B4J6a9BH.js → pascal-BaLtPWWB.js} +0 -0
  552. /package/dist/{perl-CzVqxS08.js → perl-CjfE0JLo.js} +0 -0
  553. /package/dist/{pig-Clh03cnn.js → pig-DE4epV99.js} +0 -0
  554. /package/dist/{properties-D7ch1Wyb.js → properties-CLyCG5C-.js} +0 -0
  555. /package/dist/{protobuf-DrkdrMPK.js → protobuf-BjBBs_V4.js} +0 -0
  556. /package/dist/{puppet-BtZG8zdO.js → puppet-ZImLuomA.js} +0 -0
  557. /package/dist/{python-B6FKOVIv.js → python-C9YN71pR.js} +0 -0
  558. /package/dist/{r-Dnvo5-96.js → r-DILmKWWW.js} +0 -0
  559. /package/dist/{rpm-B1DrgfnX.js → rpm-fpIsm1Kr.js} +0 -0
  560. /package/dist/{ruby-CelfUg17.js → ruby-BuiQI41h.js} +0 -0
  561. /package/dist/{sas-DfSQFMWG.js → sas-C76sJ1zF.js} +0 -0
  562. /package/dist/{scheme-BplhaWuO.js → scheme-DHjM-txv.js} +0 -0
  563. /package/dist/{shell-DqU5OS2c.js → shell--7NmGJ9p.js} +0 -0
  564. /package/dist/{sieve-BE4_IyGa.js → sieve-DaPvBv1M.js} +0 -0
  565. /package/dist/{smalltalk-B_WPL8Nx.js → smalltalk-KPvwrjCs.js} +0 -0
  566. /package/dist/{solr-DlJFg7H5.js → solr-PvZUtEDb.js} +0 -0
  567. /package/dist/{sparql-7XIlcOgW.js → sparql-CXSUIQer.js} +0 -0
  568. /package/dist/{spreadsheet-BdZSVwVp.js → spreadsheet-DPJdGPkx.js} +0 -0
  569. /package/dist/{sql-CCrq7lfJ.js → sql-Dp4ZLSIa.js} +0 -0
  570. /package/dist/{stex-BiFc8QAu.js → stex-CeXW4zzk.js} +0 -0
  571. /package/dist/{stylus-DlSH9xpH.js → stylus-BXcmrg9w.js} +0 -0
  572. /package/dist/{swift-e3tMTZgJ.js → swift-DD8I7hKP.js} +0 -0
  573. /package/dist/{tcl-DfZMC20G.js → tcl-B9Lp4GtA.js} +0 -0
  574. /package/dist/{textile-DaSeca5U.js → textile-qdiY0teq.js} +0 -0
  575. /package/dist/{tiddlywiki-dfoiz8pS.js → tiddlywiki-t32lkubq.js} +0 -0
  576. /package/dist/{tiki-yJbQzhma.js → tiki-B0qKrSMl.js} +0 -0
  577. /package/dist/{troff-FN_FrCXR.js → troff-105XJOEu.js} +0 -0
  578. /package/dist/{ttcn-7_i4HlyB.js → ttcn-1_BxDcM8.js} +0 -0
  579. /package/dist/{ttcn-cfg-B46AlBUV.js → ttcn-cfg-Cn_XgXiw.js} +0 -0
  580. /package/dist/{turtle-QQfeFveR.js → turtle-BI6LyfEu.js} +0 -0
  581. /package/dist/{vb-DToPVnLa.js → vb-BecoBfmr.js} +0 -0
  582. /package/dist/{vbscript-CtsNaTz4.js → vbscript-De-zpA4i.js} +0 -0
  583. /package/dist/{velocity-CAoNe6ns.js → velocity-DhlYJTrD.js} +0 -0
  584. /package/dist/{verilog-DrDOMiJq.js → verilog-BDZgxDOW.js} +0 -0
  585. /package/dist/{vhdl-DnO0OEPh.js → vhdl-CV0OKTbp.js} +0 -0
  586. /package/dist/{webidl-Or6d1ZfA.js → webidl-BOM1Fs0O.js} +0 -0
  587. /package/dist/{xquery-CEp_Mcpr.js → xquery-CltP_CGh.js} +0 -0
  588. /package/dist/{yacas-DgnYrSlp.js → yacas-Dch4E2Dg.js} +0 -0
  589. /package/dist/{z80-DlG_kyeB.js → z80-B5Yly27o.js} +0 -0
@@ -18,8 +18,14 @@ import {
18
18
  } from "@marimo-team/codemirror-sql";
19
19
  import { DuckDBDialect } from "@marimo-team/codemirror-sql/dialects";
20
20
  import dedent from "string-dedent";
21
+ import type { CellId } from "@/core/cells/ids";
21
22
  import { cellIdState } from "@/core/codemirror/cells/state";
22
- import { getFeatureFlag } from "@/core/config/feature-flag";
23
+ import type { PlaceholderType } from "@/core/codemirror/config/types";
24
+ import type {
25
+ CompletionConfig,
26
+ DiagnosticsConfig,
27
+ LSPConfig,
28
+ } from "@/core/config/config-schema";
23
29
  import {
24
30
  dataSourceConnectionsAtom,
25
31
  setLatestEngineSelected,
@@ -30,6 +36,7 @@ import {
30
36
  INTERNAL_SQL_ENGINES,
31
37
  } from "@/core/datasets/engines";
32
38
  import { ValidateSQL } from "@/core/datasets/request-registry";
39
+ import type { HotkeyProvider } from "@/core/hotkeys/hotkeys";
33
40
  import type { ValidateSQLResult } from "@/core/kernel/messages";
34
41
  import { store } from "@/core/state/jotai";
35
42
  import { resolvedThemeAtom } from "@/theme/useTheme";
@@ -77,17 +84,10 @@ export class SQLLanguageAdapter
77
84
  implements LanguageAdapter<SQLLanguageAdapterMetadata>
78
85
  {
79
86
  readonly type = "sql";
80
- sqlLinterEnabled: boolean;
81
87
  sqlModeEnabled: boolean;
82
88
 
83
89
  constructor() {
84
- try {
85
- this.sqlLinterEnabled = getFeatureFlag("sql_linter");
86
- this.sqlModeEnabled = getFeatureFlag("sql_mode");
87
- } catch {
88
- this.sqlLinterEnabled = false;
89
- this.sqlModeEnabled = false;
90
- }
90
+ this.sqlModeEnabled = true;
91
91
  }
92
92
 
93
93
  get defaultMetadata(): SQLLanguageAdapterMetadata {
@@ -215,7 +215,13 @@ export class SQLLanguageAdapter
215
215
  return commentLines;
216
216
  }
217
217
 
218
- getExtension(): Extension[] {
218
+ getExtension(
219
+ _cellId: CellId,
220
+ _completionConfig: CompletionConfig,
221
+ _hotkeys: HotkeyProvider,
222
+ _placeholderType: PlaceholderType,
223
+ lspConfig: LSPConfig & { diagnostics: DiagnosticsConfig },
224
+ ): Extension[] {
219
225
  const extensions = [
220
226
  // This can be updated with a dispatch effect
221
227
  sqlConfigCompartment.of(sql({ dialect: DEFAULT_DIALECT })),
@@ -245,7 +251,9 @@ export class SQLLanguageAdapter
245
251
  }),
246
252
  ];
247
253
 
248
- if (this.sqlLinterEnabled) {
254
+ const sqlLinterEnabled = lspConfig?.diagnostics?.sql_linter ?? false;
255
+
256
+ if (sqlLinterEnabled) {
249
257
  const theme = store.get(resolvedThemeAtom);
250
258
  const parser = new CustomSqlParser({
251
259
  getParserOptions: (state: EditorState) => {
@@ -666,8 +674,10 @@ function sqlValidationExtension(): Extension {
666
674
  let lastValidationRequest: string | null = null;
667
675
 
668
676
  return EditorView.updateListener.of((update) => {
669
- // Only run validation if the document has changed and editor is focused
670
- if (!update.docChanged || !update.view.hasFocus) {
677
+ // Only run validation if the document has changed
678
+ // The extension only runs on keypress, so we don't need to check for focus
679
+ // This lets AI completions / external calls trigger validation
680
+ if (!update.docChanged) {
671
681
  return;
672
682
  }
673
683
 
@@ -5,7 +5,6 @@ import { Button } from "@/components/ui/button";
5
5
  import { Checkbox } from "@/components/ui/checkbox";
6
6
  import { Tooltip, TooltipProvider } from "@/components/ui/tooltip";
7
7
  import { normalizeName } from "@/core/cells/names";
8
- import { getFeatureFlag } from "@/core/config/feature-flag";
9
8
  import { type ConnectionName, DUCKDB_ENGINE } from "@/core/datasets/engines";
10
9
  import { useAutoGrowInputProps } from "@/hooks/useAutoGrowInputProps";
11
10
  import { formatSQL } from "../../format";
@@ -71,8 +70,6 @@ export const LanguagePanelComponent: React.FC<{
71
70
  updateSQLDialectFromConnection(view, engine);
72
71
  };
73
72
 
74
- const sqlModeEnabled = getFeatureFlag("sql_mode");
75
-
76
73
  actions = (
77
74
  <div className="flex flex-1 gap-2 items-center">
78
75
  <label className="flex gap-2 items-center">
@@ -98,9 +95,7 @@ export const LanguagePanelComponent: React.FC<{
98
95
  onChange={switchEngine}
99
96
  />
100
97
  <div className="flex items-center gap-2 ml-auto">
101
- {sqlModeEnabled && metadata.engine === DUCKDB_ENGINE && (
102
- <SQLModeSelect />
103
- )}
98
+ {metadata.engine === DUCKDB_ENGINE && <SQLModeSelect />}
104
99
  <Tooltip content="Format SQL">
105
100
  <Button
106
101
  variant="text"
@@ -2,6 +2,7 @@
2
2
 
3
3
  import type { EditorState } from "@codemirror/state";
4
4
  import type { EditorView } from "@codemirror/view";
5
+ import { replaceEditorContent } from "../replace-editor-content";
5
6
  import { languageAdapterState } from "./extension";
6
7
  import { languageMetadataField } from "./metadata";
7
8
 
@@ -36,14 +37,8 @@ export function updateEditorCodeFromPython(
36
37
  ): string {
37
38
  const languageAdapter = editor.state.field(languageAdapterState);
38
39
  const [code] = languageAdapter.transformIn(pythonCode);
39
- const doc = editor.state.doc;
40
- // Noop if the code is the same
41
- if (doc.toString() === code) {
42
- return code;
43
- }
44
- editor.dispatch({
45
- changes: { from: 0, to: doc.length, insert: code },
46
- });
40
+ // Use replaceEditorContent which preserves cursor position when focused
41
+ replaceEditorContent(editor, code);
47
42
  return code;
48
43
  }
49
44
 
@@ -195,35 +195,36 @@ describe("createNotebookLens", () => {
195
195
  });
196
196
 
197
197
  describe("NotebookLanguageServerClient", () => {
198
- let plugins: any[] = [];
199
198
  let mockClient: Mocked<ILanguageServerClient>;
200
199
  let notebookClient: NotebookLanguageServerClient;
201
200
 
202
201
  beforeEach(() => {
203
- plugins = [];
204
202
  mockClient = {
205
- plugins,
206
203
  ready: true,
207
204
  capabilities: {},
208
205
  initializePromise: Promise.resolve(),
206
+ clientCapabilities: {},
207
+ completionItemResolve: vi.fn(),
209
208
  initialize: vi.fn(),
210
209
  close: vi.fn(),
211
- detachPlugin: vi.fn().mockImplementation((plugin) => {
212
- plugins = plugins.filter((p) => p !== plugin);
213
- }),
214
- attachPlugin: vi.fn().mockImplementation((plugin) => {
215
- plugins.push(plugin);
216
- }),
210
+ onNotification: vi.fn(),
217
211
  textDocumentDidOpen: vi.fn(),
218
212
  textDocumentDidChange: vi.fn(),
219
213
  textDocumentHover: vi.fn(),
220
214
  textDocumentCompletion: vi.fn(),
215
+ textDocumentDefinition: vi.fn(),
216
+ textDocumentPrepareRename: vi.fn(),
217
+ textDocumentCodeAction: vi.fn(),
218
+ textDocumentSignatureHelp: vi.fn(),
221
219
  textDocumentRename: vi.fn(),
222
- processNotification: vi.fn(),
223
- notify: vi.fn(),
224
- request: vi.fn(),
225
- } as unknown as Mocked<ILanguageServerClient>;
226
- notebookClient = new NotebookLanguageServerClient(mockClient, {});
220
+ };
221
+ (mockClient as any).processNotification = vi.fn();
222
+ (mockClient as any).notify = vi.fn();
223
+ notebookClient = new NotebookLanguageServerClient(mockClient, {}, () => ({
224
+ [Cells.cell1]: new EditorView({ doc: "# this is a comment" }),
225
+ [Cells.cell2]: new EditorView({ doc: "import math\nimport numpy" }),
226
+ [Cells.cell3]: new EditorView({ doc: "print(math.sqrt(4))" }),
227
+ }));
227
228
 
228
229
  // Mock the atom instead of the instance method
229
230
  vi.spyOn(store, "get").mockImplementation((atom) => {
@@ -404,6 +405,12 @@ describe("NotebookLanguageServerClient", () => {
404
405
  });
405
406
  expect(mockView3.state.doc.toString()).toBe("print(math.sqrt(4))");
406
407
 
408
+ (notebookClient as any).getNotebookEditors = () => ({
409
+ [Cells.cell1]: mockView1,
410
+ [Cells.cell2]: mockView2,
411
+ [Cells.cell3]: mockView3,
412
+ });
413
+
407
414
  // Setup rename params
408
415
  const renameParams: LSP.RenameParams = {
409
416
  textDocument: { uri: CellDocumentUri.of(Cells.cell2) },
@@ -1,6 +1,5 @@
1
1
  /* Copyright 2024 Marimo. All rights reserved. */
2
2
 
3
- import type { LanguageServerPlugin } from "@marimo-team/codemirror-languageserver";
4
3
  import type * as LSP from "vscode-languageserver-protocol";
5
4
  import { Objects } from "@/utils/objects";
6
5
  import type { ILanguageServerClient } from "./types";
@@ -24,6 +23,26 @@ export class FederatedLanguageServerClient implements ILanguageServerClient {
24
23
  this.documentUri = getLSPDocument();
25
24
  }
26
25
 
26
+ onNotification(
27
+ listener: (n: {
28
+ jsonrpc: "2.0";
29
+ id?: null | undefined;
30
+ method: "textDocument/publishDiagnostics";
31
+ params: LSP.PublishDiagnosticsParams;
32
+ }) => void,
33
+ ): () => boolean {
34
+ const callbacks: Array<() => boolean> = [];
35
+ for (const client of this.clients) {
36
+ callbacks.push(client.onNotification(listener));
37
+ }
38
+ return () => {
39
+ for (const cb of callbacks) {
40
+ cb();
41
+ }
42
+ return true;
43
+ };
44
+ }
45
+
27
46
  get clientCapabilities(): LSP.ClientCapabilities | undefined {
28
47
  const capabilities = this.clients
29
48
  .map((client) => {
@@ -153,14 +172,6 @@ export class FederatedLanguageServerClient implements ILanguageServerClient {
153
172
  return null;
154
173
  }
155
174
 
156
- attachPlugin(plugin: LanguageServerPlugin): void {
157
- this.clients.forEach((client) => client.attachPlugin(plugin));
158
- }
159
-
160
- detachPlugin(plugin: LanguageServerPlugin): void {
161
- this.clients.forEach((client) => client.detachPlugin(plugin));
162
- }
163
-
164
175
  // Merge completions from all clients
165
176
  async textDocumentCompletion(
166
177
  params: LSP.CompletionParams,
@@ -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,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
+ }
@@ -45,6 +45,7 @@ test("default UserConfig - empty", () => {
45
45
  expect(defaultConfig).toMatchInlineSnapshot(`
46
46
  {
47
47
  "ai": {
48
+ "inline_tooltip": false,
48
49
  "mode": "manual",
49
50
  "models": {
50
51
  "custom_models": [],
@@ -56,6 +57,7 @@ test("default UserConfig - empty", () => {
56
57
  "activate_on_typing": true,
57
58
  "copilot": false,
58
59
  },
60
+ "diagnostics": {},
59
61
  "display": {
60
62
  "cell_output": "above",
61
63
  "code_editor_font_size": 14,
@@ -110,6 +112,7 @@ test("default UserConfig - one level", () => {
110
112
  expect(defaultConfig).toMatchInlineSnapshot(`
111
113
  {
112
114
  "ai": {
115
+ "inline_tooltip": false,
113
116
  "mode": "manual",
114
117
  "models": {
115
118
  "custom_models": [],
@@ -121,6 +124,7 @@ test("default UserConfig - one level", () => {
121
124
  "activate_on_typing": true,
122
125
  "copilot": false,
123
126
  },
127
+ "diagnostics": {},
124
128
  "display": {
125
129
  "cell_output": "above",
126
130
  "code_editor_font_size": 14,
@@ -170,6 +174,7 @@ test("default UserConfig - one level", () => {
170
174
  runtime: {},
171
175
  display: {},
172
176
  experimental: {},
177
+ diagnostics: {},
173
178
  }),
174
179
  ).toEqual(UserConfigSchema.parse({}));
175
180
  });
@@ -152,6 +152,7 @@ export const UserConfigSchema = z
152
152
  .looseObject({
153
153
  rules: z.string().prefault(""),
154
154
  mode: z.enum(["manual", "ask"]).prefault("manual"),
155
+ inline_tooltip: z.boolean().prefault(false),
155
156
  open_ai: AiConfigSchema.optional(),
156
157
  anthropic: AiConfigSchema.optional(),
157
158
  google: AiConfigSchema.optional(),
@@ -182,6 +183,12 @@ export const UserConfigSchema = z
182
183
  // Pass through so that we don't remove any extra keys that the user has added.
183
184
  .prefault(() => ({})),
184
185
  server: z.looseObject({}).prefault(() => ({})),
186
+ diagnostics: z
187
+ .looseObject({
188
+ enabled: z.boolean().optional(),
189
+ sql_linter: z.boolean().optional(),
190
+ })
191
+ .prefault(() => ({})),
185
192
  sharing: z
186
193
  .looseObject({
187
194
  html: z.boolean().optional(),
@@ -203,6 +210,7 @@ export const UserConfigSchema = z
203
210
  keymap: {},
204
211
  runtime: {},
205
212
  display: {},
213
+ diagnostics: {},
206
214
  experimental: {},
207
215
  server: {},
208
216
  ai: {},
@@ -216,6 +224,7 @@ export type KeymapConfig = UserConfig["keymap"];
216
224
  export type LSPConfig = UserConfig["language_servers"];
217
225
  export type DiagnosticsConfig = UserConfig["diagnostics"];
218
226
  export type DisplayConfig = UserConfig["display"];
227
+ export type AiConfig = UserConfig["ai"];
219
228
 
220
229
  export const AppTitleSchema = z.string();
221
230
  export const SqlOutputSchema = z
@@ -305,6 +314,7 @@ export function defaultUserConfig(): UserConfig {
305
314
  keymap: {},
306
315
  runtime: {},
307
316
  display: {},
317
+ diagnostics: {},
308
318
  experimental: {},
309
319
  server: {},
310
320
  ai: {},
@@ -7,27 +7,23 @@ import { getResolvedMarimoConfig } from "./config";
7
7
  // eslint-disable-next-line @typescript-eslint/no-empty-interface
8
8
  export interface ExperimentalFeatures {
9
9
  markdown: boolean; // Used in playground (community cloud)
10
- inline_ai_tooltip: boolean;
11
10
  wasm_layouts: boolean; // Used in playground (community cloud)
12
11
  rtc_v2: boolean;
13
12
  performant_table_charts: boolean;
14
13
  chat_modes: boolean;
15
- sql_linter: boolean;
14
+ cache_panel: boolean;
16
15
  external_agents: boolean;
17
- sql_mode: boolean;
18
16
  // Add new feature flags here
19
17
  }
20
18
 
21
19
  const defaultValues: ExperimentalFeatures = {
22
20
  markdown: true,
23
- inline_ai_tooltip: import.meta.env.DEV,
24
21
  wasm_layouts: false,
25
22
  rtc_v2: false,
26
23
  performant_table_charts: false,
27
24
  chat_modes: false,
28
- sql_linter: true,
25
+ cache_panel: false,
29
26
  external_agents: import.meta.env.DEV,
30
- sql_mode: false,
31
27
  };
32
28
 
33
29
  export function getFeatureFlag<T extends keyof ExperimentalFeatures>(
@@ -15,7 +15,7 @@ import {
15
15
  useRunAllCells,
16
16
  useRunStaleCells,
17
17
  } from "../components/editor/cell/useRunCells";
18
- import { CellArray } from "../components/editor/renderers/CellArray";
18
+ import { CellArray } from "../components/editor/renderers/cell-array";
19
19
  import { CellsRenderer } from "../components/editor/renderers/cells-renderer";
20
20
  import { useHotkey } from "../hooks/useHotkey";
21
21
  import {
@@ -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