@marimo-team/islands 0.16.5 → 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 (549) hide show
  1. package/dist/{ConnectedDataExplorerComponent-D96i9G-X.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-ChrNdVdJ.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-D_kEsT07.js → glide-data-editor-DHuN8kQ8.js} +1650 -1720
  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 +8161 -8431
  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-MWiyXDcI.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-1X1uZB4y.js → types-CRXV0KD5.js} +84 -95
  245. package/dist/{useAsyncData-C4IqQK0g.js → useAsyncData-uMVTsDI9.js} +1 -1
  246. package/dist/{useDateFormatter-BCsBqetx.js → useDateFormatter-Dcz7jstn.js} +6 -6
  247. package/dist/{useTheme-C2pgJzDH.js → useTheme-NbEx-ZNV.js} +13 -10
  248. package/dist/vb-Cb1HQHii.js +4 -0
  249. package/dist/vbscript-CpXOP4wZ.js +4 -0
  250. package/dist/{vega-component-Cv4J8CHz.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/components/app-config/user-config-form.tsx +29 -25
  264. package/src/components/chat/chat-utils.ts +11 -4
  265. package/src/components/data-table/__tests__/header-items.test.tsx +117 -0
  266. package/src/components/data-table/column-header.tsx +4 -2
  267. package/src/components/data-table/columns.tsx +2 -1
  268. package/src/components/data-table/data-table.tsx +7 -2
  269. package/src/components/data-table/header-items.tsx +63 -10
  270. package/src/components/dependency-graph/custom-node.tsx +11 -11
  271. package/src/components/dependency-graph/elements.ts +9 -4
  272. package/src/components/dependency-graph/panels.tsx +6 -4
  273. package/src/components/editor/Output.tsx +6 -1
  274. package/src/components/editor/ai/ai-completion-editor.tsx +135 -5
  275. package/src/components/editor/ai/completion-handlers.tsx +106 -22
  276. package/src/components/editor/cell/code/cell-editor.tsx +5 -0
  277. package/src/components/editor/chrome/panels/cache-panel.tsx +216 -0
  278. package/src/components/editor/chrome/panels/empty-state.tsx +3 -1
  279. package/src/components/editor/chrome/types.ts +66 -22
  280. package/src/components/editor/chrome/wrapper/app-chrome.tsx +2 -0
  281. package/src/components/editor/errors/auto-fix.tsx +138 -32
  282. package/src/components/editor/errors/fix-mode.ts +15 -0
  283. package/src/components/editor/navigation/__tests__/clipboard.test.ts +0 -5
  284. package/src/components/editor/navigation/clipboard.ts +2 -1
  285. package/src/components/editor/notebook-cell.tsx +20 -7
  286. package/src/components/editor/output/ConsoleOutput.tsx +27 -33
  287. package/src/components/editor/output/JsonOutput.tsx +9 -0
  288. package/src/components/editor/output/MarimoTracebackOutput.tsx +10 -7
  289. package/src/components/editor/output/__tests__/json-output.test.ts +43 -0
  290. package/src/components/editor/package-alert.tsx +3 -0
  291. package/src/components/forms/__tests__/form-utils.test.ts +4 -2
  292. package/src/components/icons/copy-icon.tsx +11 -5
  293. package/src/components/shortcuts/renderShortcut.tsx +3 -1
  294. package/src/components/ui/button.tsx +2 -0
  295. package/src/components/ui/confirmation-button.tsx +85 -0
  296. package/src/components/ui/switch.tsx +2 -0
  297. package/src/core/ai/context/providers/__tests__/datasource.test.ts +9 -1
  298. package/src/core/ai/context/providers/datasource.ts +25 -1
  299. package/src/core/ai/state.ts +6 -3
  300. package/src/core/ai/tools/__tests__/registry.test.ts +33 -8
  301. package/src/core/ai/tools/base.ts +81 -1
  302. package/src/core/ai/tools/registry.ts +36 -10
  303. package/src/core/ai/tools/sample-tool.ts +44 -8
  304. package/src/core/cache/requests.ts +5 -0
  305. package/src/core/cells/cells.ts +1 -1
  306. package/src/core/codemirror/__tests__/__snapshots__/setup.test.ts.snap +2 -0
  307. package/src/core/codemirror/__tests__/replace-editor-content.test.ts +336 -0
  308. package/src/core/codemirror/find-replace/navigate.ts +2 -2
  309. package/src/core/codemirror/format.ts +2 -9
  310. package/src/core/codemirror/language/__tests__/sql.test.ts +24 -6
  311. package/src/core/codemirror/language/languages/python.ts +1 -3
  312. package/src/core/codemirror/language/languages/sql/sql.ts +23 -13
  313. package/src/core/codemirror/language/panel/panel.tsx +1 -6
  314. package/src/core/codemirror/language/utils.ts +3 -8
  315. package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +21 -14
  316. package/src/core/codemirror/lsp/federated-lsp.ts +20 -9
  317. package/src/core/codemirror/lsp/notebook-lsp.ts +35 -29
  318. package/src/core/codemirror/lsp/types.ts +0 -13
  319. package/src/core/codemirror/replace-editor-content.ts +87 -0
  320. package/src/core/config/__tests__/config-schema.test.ts +3 -0
  321. package/src/core/config/config-schema.ts +8 -0
  322. package/src/core/config/feature-flag.tsx +2 -4
  323. package/src/core/errors/__tests__/errors.test.ts +1 -0
  324. package/src/core/errors/errors.ts +20 -6
  325. package/src/core/islands/bridge.ts +2 -0
  326. package/src/core/islands/main.ts +4 -0
  327. package/src/core/kernel/messages.ts +1 -0
  328. package/src/core/network/requests-network.ts +14 -0
  329. package/src/core/network/requests-static.ts +2 -0
  330. package/src/core/network/requests-toasting.ts +2 -0
  331. package/src/core/network/types.ts +5 -0
  332. package/src/core/saving/save-component.tsx +43 -36
  333. package/src/core/wasm/bridge.ts +2 -0
  334. package/src/core/websocket/useMarimoWebSocket.tsx +8 -0
  335. package/src/css/app/codemirror-completions.css +1 -1
  336. package/src/custom.d.ts +2 -0
  337. package/src/plugins/core/registerReactComponent.tsx +5 -1
  338. package/src/plugins/impl/DataTablePlugin.tsx +19 -19
  339. package/src/plugins/impl/__tests__/DateTimePickerPlugin.test.tsx +32 -0
  340. package/src/plugins/impl/chat/ChatPlugin.tsx +1 -1
  341. package/src/plugins/impl/chat/chat-ui.tsx +17 -2
  342. package/src/plugins/impl/chat/types.ts +1 -1
  343. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +7 -2
  344. package/src/plugins/impl/plotly/__tests__/parse-from-template.test.ts +17 -0
  345. package/src/plugins/impl/plotly/parse-from-template.ts +2 -1
  346. package/src/utils/__tests__/formatting.test.ts +107 -0
  347. package/src/utils/__tests__/json-parser.test.ts +13 -0
  348. package/src/utils/copy.ts +6 -0
  349. package/src/utils/formatting.ts +51 -0
  350. package/src/utils/json/json-parser.ts +28 -3
  351. package/dist/any-language-editor-CVFQlioK.js +0 -156
  352. package/dist/apl-ChlaBfxB.js +0 -4
  353. package/dist/architecture-O4VJ6CD3-BVeaxUcM.js +0 -21
  354. package/dist/asciiarmor-CcJmm3l_.js +0 -4
  355. package/dist/asn1-ThRYxoBE.js +0 -4
  356. package/dist/assets/__vite-browser-external-Dv_SHu1h.js +0 -1
  357. package/dist/assets/worker-DVOR9oZG.js +0 -54
  358. package/dist/brainfuck-CEM0JgDn.js +0 -4
  359. package/dist/chunk-EXTU4WIE-DECT9AAK.js +0 -14
  360. package/dist/chunk-S3R3BYOJ-DMQ1yeyq.js +0 -386
  361. package/dist/classDiagram-KNZD7YFC-BG53O6Jt.js +0 -39
  362. package/dist/classDiagram-v2-RKCZMP56-BmKILsGU.js +0 -39
  363. package/dist/clojure-B7RHyE9t.js +0 -4
  364. package/dist/cmake-TeTMP4I5.js +0 -4
  365. package/dist/cobol-DI-mxUER.js +0 -4
  366. package/dist/coffeescript-DHUFLqWp.js +0 -4
  367. package/dist/commonlisp-SLiUrh1m.js +0 -4
  368. package/dist/crystal-B4fY1ZfJ.js +0 -4
  369. package/dist/css-Bdoq3TzK.js +0 -5
  370. package/dist/cypher-CBU182fp.js +0 -4
  371. package/dist/d-D8myDZeH.js +0 -4
  372. package/dist/data-grid-overlay-editor-qNmJk2x0.js +0 -135
  373. package/dist/diagram-QEK2KX5R-fu8Noi3H.js +0 -245
  374. package/dist/diff-DJF_UB7H.js +0 -4
  375. package/dist/dist-52-_pKoy.js +0 -6
  376. package/dist/dist-6DOMStFn.js +0 -6
  377. package/dist/dist-B334aW7p.js +0 -10
  378. package/dist/dist-BOI9lUz-.js +0 -12
  379. package/dist/dist-C06uhBzF.js +0 -6
  380. package/dist/dist-CGkpguCB.js +0 -6
  381. package/dist/dist-CrApzUED.js +0 -6
  382. package/dist/dist-Dp2GLdCl.js +0 -14
  383. package/dist/dist-WHFsbMDr.js +0 -6
  384. package/dist/dist-hyKcTPG9.js +0 -10
  385. package/dist/dtd-DY8q65lC.js +0 -4
  386. package/dist/dylan-CBLcjWCi.js +0 -4
  387. package/dist/ecl-BSXPNfOw.js +0 -4
  388. package/dist/eiffel-BJf0PQX-.js +0 -4
  389. package/dist/elm-DWQwPCZS.js +0 -4
  390. package/dist/erlang-BWBaGZ5e.js +0 -4
  391. package/dist/factor-DT1-MBPl.js +0 -5
  392. package/dist/forth-D9GDt3FB.js +0 -4
  393. package/dist/fortran-DHkRhDWw.js +0 -4
  394. package/dist/gas-7lQEOM0H.js +0 -4
  395. package/dist/gherkin-BLLyroYi.js +0 -4
  396. package/dist/gitGraph-ZV4HHKMB-z2v_cInC.js +0 -21
  397. package/dist/groovy-C-wabwj0.js +0 -4
  398. package/dist/haskell-DaxVQ_d1.js +0 -4
  399. package/dist/haxe-C2yLoC7h.js +0 -5
  400. package/dist/idl-DQBP8i7k.js +0 -4
  401. package/dist/info-63CPKGFF-GS4w6pCB.js +0 -21
  402. package/dist/infoDiagram-STP46IZ2-DE9YYPFg.js +0 -44
  403. package/dist/javascript-DRwFV9r5.js +0 -5
  404. package/dist/jinja2-CNoIpVmN.js +0 -4
  405. package/dist/julia-DXDf-GhP.js +0 -4
  406. package/dist/livescript-S2uhJQx7.js +0 -4
  407. package/dist/lua-Bvgs0y2G.js +0 -4
  408. package/dist/mathematica-D2zqfwIg.js +0 -4
  409. package/dist/mbox-SBcPaDuZ.js +0 -4
  410. package/dist/mirc-hkQc7sVF.js +0 -4
  411. package/dist/mllike-DRWPBlr9.js +0 -6
  412. package/dist/modelica-CO2ROGlP.js +0 -4
  413. package/dist/mscgen-BpX61bO6.js +0 -6
  414. package/dist/mumps-BCnFeIn6.js +0 -4
  415. package/dist/nsis-BaTOxlD1.js +0 -5
  416. package/dist/ntriples-zEo5BWjr.js +0 -4
  417. package/dist/octave-BE0RnCM9.js +0 -4
  418. package/dist/oz-C4_2Ttul.js +0 -4
  419. package/dist/packet-HUATNLJX-CjHqJIqk.js +0 -21
  420. package/dist/pascal-Q3jJucpw.js +0 -4
  421. package/dist/perl-DkXZIWHF.js +0 -4
  422. package/dist/pie-WTHONI2E-D67gLWtR.js +0 -21
  423. package/dist/pig-DCgEHdsu.js +0 -4
  424. package/dist/powershell-3rK_nRRJ.js +0 -236
  425. package/dist/powershell-Eo2-7MoM.js +0 -4
  426. package/dist/properties-C0IOX8WR.js +0 -4
  427. package/dist/protobuf--lGQUSRO.js +0 -4
  428. package/dist/pug-Cf8AQHMJ.js +0 -5
  429. package/dist/puppet-D7Z3dTJn.js +0 -4
  430. package/dist/python-FHIx_i8Y.js +0 -5
  431. package/dist/q-B7UA1feM.js +0 -4
  432. package/dist/r-Cc9R2A7N.js +0 -4
  433. package/dist/radar-NJJJXTRR-C-AZP_Te.js +0 -21
  434. package/dist/rpm-vhJNlrQ6.js +0 -5
  435. package/dist/ruby-CVluPY0M.js +0 -4
  436. package/dist/sas-A8DL8oy3.js +0 -4
  437. package/dist/scheme-6xHHcSXC.js +0 -4
  438. package/dist/shell-DHN-e5rf.js +0 -4
  439. package/dist/sieve-BuQwLY02.js +0 -4
  440. package/dist/smalltalk-BA4HPg2H.js +0 -4
  441. package/dist/sparql-Bf4yCuy3.js +0 -4
  442. package/dist/stateDiagram-v2-UMBNRL4Z-C_0FUzzk.js +0 -38
  443. package/dist/stex-D-I1cYeE.js +0 -5
  444. package/dist/stylus-BMeped2l.js +0 -4
  445. package/dist/swift-lwEdlZoC.js +0 -4
  446. package/dist/tcl-B03ipeqv.js +0 -4
  447. package/dist/toml-BLgrVtfu.js +0 -4
  448. package/dist/treemap-75Q7IDZK-DTvwfpWt.js +0 -21
  449. package/dist/troff-g6EjN2O2.js +0 -4
  450. package/dist/ttcn-Dzvba8jK.js +0 -4
  451. package/dist/ttcn-cfg-CadG0p1K.js +0 -4
  452. package/dist/turtle-DkXAMWo9.js +0 -4
  453. package/dist/vb-C5dCiel8.js +0 -4
  454. package/dist/vbscript-I4bDEQln.js +0 -4
  455. package/dist/velocity-mt0fDwFH.js +0 -4
  456. package/dist/verilog-Dxq3KJkc.js +0 -4
  457. package/dist/vhdl-Km0QUlV-.js +0 -4
  458. package/dist/webidl-B3lJ2MRL.js +0 -4
  459. package/dist/xquery-CcIxNPEe.js +0 -4
  460. package/dist/yacas-oMa-f-tN.js +0 -4
  461. package/dist/z80-D03Nvn6l.js +0 -4
  462. /package/dist/{apl-DZqo8Elt.js → apl-CEHentF4.js} +0 -0
  463. /package/dist/{asciiarmor-DTzHAIeX.js → asciiarmor-DURYiCS0.js} +0 -0
  464. /package/dist/{asn1-DrAXKsZH.js → asn1-ETAiEoXY.js} +0 -0
  465. /package/dist/{asterisk-oF4U3h48.js → asterisk-DTpbbXPb.js} +0 -0
  466. /package/dist/{brainfuck-BYgLey30.js → brainfuck-BWQep-SA.js} +0 -0
  467. /package/dist/{clojure-Bs2M3OUY.js → clojure-BzFapDkA.js} +0 -0
  468. /package/dist/{cmake-DpI8vxJN.js → cmake-DvlbIC8x.js} +0 -0
  469. /package/dist/{cobol-BQyrWo72.js → cobol-BrEI4cPR.js} +0 -0
  470. /package/dist/{coffeescript-9ke9UHmw.js → coffeescript-B6cvu8mO.js} +0 -0
  471. /package/dist/{common-keywords-BzgeAvH1.js → common-keywords-WqQm7W8t.js} +0 -0
  472. /package/dist/{commonlisp-DghUdrUH.js → commonlisp-BIT8PQqi.js} +0 -0
  473. /package/dist/{crystal-DEf_SInh.js → crystal-B_UcPArT.js} +0 -0
  474. /package/dist/{css-BzTU9lNO.js → css-dHbnt_zl.js} +0 -0
  475. /package/dist/{cypher-a2v0c11S.js → cypher-Dh3FOpL7.js} +0 -0
  476. /package/dist/{d-SAswny-M.js → d-CQD1IHee.js} +0 -0
  477. /package/dist/{diff-OJ-xLXcG.js → diff-CpF_IDx0.js} +0 -0
  478. /package/dist/{dtd-BsUf-rer.js → dtd-DYoNpy6c.js} +0 -0
  479. /package/dist/{duckdb-keywords-B0NOra5o.js → duckdb-keywords-CdIsl9L0.js} +0 -0
  480. /package/dist/{dylan-C0ZYngjn.js → dylan-Bc_2G1E-.js} +0 -0
  481. /package/dist/{ebnf-DF1xx0b_.js → ebnf-jGVT_YpN.js} +0 -0
  482. /package/dist/{ecl-Bsuvoouq.js → ecl-UIU-P-Ar.js} +0 -0
  483. /package/dist/{eiffel-DgfSpLi-.js → eiffel-C90Oyuix.js} +0 -0
  484. /package/dist/{elm-GNxDj-5E.js → elm-B9fWSySj.js} +0 -0
  485. /package/dist/{erlang-Ds3uY1kL.js → erlang-Ccff0UAn.js} +0 -0
  486. /package/dist/{fcl-CqBgSioc.js → fcl-CGR8NxAg.js} +0 -0
  487. /package/dist/{forth-JCaLysGk.js → forth-U1ROGcBY.js} +0 -0
  488. /package/dist/{fortran-Dc2AoKAl.js → fortran-3nOkjDmc.js} +0 -0
  489. /package/dist/{gas-Q4Uz82YW.js → gas-B_4H5FzV.js} +0 -0
  490. /package/dist/{gherkin-Dpxe49sQ.js → gherkin-B0eru5Uz.js} +0 -0
  491. /package/dist/{groovy-D8mTRCu6.js → groovy-dqjtZUVf.js} +0 -0
  492. /package/dist/{haskell-2_8cC4wY.js → haskell-DFzCCQzo.js} +0 -0
  493. /package/dist/{haxe-Bl9zkZlz.js → haxe-Da8Pj5RT.js} +0 -0
  494. /package/dist/{http-DKCqY6yS.js → http-1HACL_9s.js} +0 -0
  495. /package/dist/{idl-Dn-HNfGW.js → idl-D3NXs5iM.js} +0 -0
  496. /package/dist/{jinja2-JjFiAGKk.js → jinja2-gBHAxUdF.js} +0 -0
  497. /package/dist/{julia-R5wne8eu.js → julia-bG-6nJ-_.js} +0 -0
  498. /package/dist/{livescript-DSwokrYj.js → livescript-BlsRC8UJ.js} +0 -0
  499. /package/dist/{lua-CgXfrp2-.js → lua-BbDC0_5w.js} +0 -0
  500. /package/dist/{mathematica-BVli92MR.js → mathematica-YZTe3-PF.js} +0 -0
  501. /package/dist/{mbox-CMFlocdS.js → mbox-CY5idp08.js} +0 -0
  502. /package/dist/{mirc-BkW04Zpc.js → mirc-CbQuFZKk.js} +0 -0
  503. /package/dist/{mllike-DEjvHvNV.js → mllike-DsbHMX-5.js} +0 -0
  504. /package/dist/{modelica-CxDn-oje.js → modelica-CQuvsOQk.js} +0 -0
  505. /package/dist/{mscgen-D78wmE-w.js → mscgen-LIpBP9VR.js} +0 -0
  506. /package/dist/{mumps-Bi0IvPOV.js → mumps-Ct5NXoaG.js} +0 -0
  507. /package/dist/{nginx-DErPZFhX.js → nginx-Dvc62C8z.js} +0 -0
  508. /package/dist/{ntriples-Btyp6wRL.js → ntriples-jVkxWUuv.js} +0 -0
  509. /package/dist/{octave-CZA6-2F8.js → octave-jGOImUB0.js} +0 -0
  510. /package/dist/{oz-Bm6LSNfE.js → oz-Y0FKDMS2.js} +0 -0
  511. /package/dist/{pascal-B4J6a9BH.js → pascal-BaLtPWWB.js} +0 -0
  512. /package/dist/{perl-CzVqxS08.js → perl-CjfE0JLo.js} +0 -0
  513. /package/dist/{pig-Clh03cnn.js → pig-DE4epV99.js} +0 -0
  514. /package/dist/{properties-D7ch1Wyb.js → properties-CLyCG5C-.js} +0 -0
  515. /package/dist/{protobuf-DrkdrMPK.js → protobuf-BjBBs_V4.js} +0 -0
  516. /package/dist/{puppet-BtZG8zdO.js → puppet-ZImLuomA.js} +0 -0
  517. /package/dist/{python-B6FKOVIv.js → python-C9YN71pR.js} +0 -0
  518. /package/dist/{r-Dnvo5-96.js → r-DILmKWWW.js} +0 -0
  519. /package/dist/{rpm-B1DrgfnX.js → rpm-fpIsm1Kr.js} +0 -0
  520. /package/dist/{ruby-CelfUg17.js → ruby-BuiQI41h.js} +0 -0
  521. /package/dist/{sas-DfSQFMWG.js → sas-C76sJ1zF.js} +0 -0
  522. /package/dist/{scheme-BplhaWuO.js → scheme-DHjM-txv.js} +0 -0
  523. /package/dist/{shell-DqU5OS2c.js → shell--7NmGJ9p.js} +0 -0
  524. /package/dist/{sieve-BE4_IyGa.js → sieve-DaPvBv1M.js} +0 -0
  525. /package/dist/{smalltalk-B_WPL8Nx.js → smalltalk-KPvwrjCs.js} +0 -0
  526. /package/dist/{solr-DlJFg7H5.js → solr-PvZUtEDb.js} +0 -0
  527. /package/dist/{sparql-7XIlcOgW.js → sparql-CXSUIQer.js} +0 -0
  528. /package/dist/{spreadsheet-BdZSVwVp.js → spreadsheet-DPJdGPkx.js} +0 -0
  529. /package/dist/{sql-CCrq7lfJ.js → sql-Dp4ZLSIa.js} +0 -0
  530. /package/dist/{stex-BiFc8QAu.js → stex-CeXW4zzk.js} +0 -0
  531. /package/dist/{stylus-DlSH9xpH.js → stylus-BXcmrg9w.js} +0 -0
  532. /package/dist/{swift-e3tMTZgJ.js → swift-DD8I7hKP.js} +0 -0
  533. /package/dist/{tcl-DfZMC20G.js → tcl-B9Lp4GtA.js} +0 -0
  534. /package/dist/{textile-DaSeca5U.js → textile-qdiY0teq.js} +0 -0
  535. /package/dist/{tiddlywiki-dfoiz8pS.js → tiddlywiki-t32lkubq.js} +0 -0
  536. /package/dist/{tiki-yJbQzhma.js → tiki-B0qKrSMl.js} +0 -0
  537. /package/dist/{troff-FN_FrCXR.js → troff-105XJOEu.js} +0 -0
  538. /package/dist/{ttcn-7_i4HlyB.js → ttcn-1_BxDcM8.js} +0 -0
  539. /package/dist/{ttcn-cfg-B46AlBUV.js → ttcn-cfg-Cn_XgXiw.js} +0 -0
  540. /package/dist/{turtle-QQfeFveR.js → turtle-BI6LyfEu.js} +0 -0
  541. /package/dist/{vb-DToPVnLa.js → vb-BecoBfmr.js} +0 -0
  542. /package/dist/{vbscript-CtsNaTz4.js → vbscript-De-zpA4i.js} +0 -0
  543. /package/dist/{velocity-CAoNe6ns.js → velocity-DhlYJTrD.js} +0 -0
  544. /package/dist/{verilog-DrDOMiJq.js → verilog-BDZgxDOW.js} +0 -0
  545. /package/dist/{vhdl-DnO0OEPh.js → vhdl-CV0OKTbp.js} +0 -0
  546. /package/dist/{webidl-Or6d1ZfA.js → webidl-BOM1Fs0O.js} +0 -0
  547. /package/dist/{xquery-CEp_Mcpr.js → xquery-CltP_CGh.js} +0 -0
  548. /package/dist/{yacas-DgnYrSlp.js → yacas-Dch4E2Dg.js} +0 -0
  549. /package/dist/{z80-DlG_kyeB.js → z80-B5Yly27o.js} +0 -0
@@ -5,6 +5,7 @@ import {
5
5
  BotMessageSquareIcon,
6
6
  BoxIcon,
7
7
  DatabaseIcon,
8
+ DatabaseZapIcon,
8
9
  FileTextIcon,
9
10
  FolderTreeIcon,
10
11
  FunctionSquareIcon,
@@ -13,7 +14,6 @@ import {
13
14
  type LucideIcon,
14
15
  NetworkIcon,
15
16
  NotebookPenIcon,
16
- ScrollTextIcon,
17
17
  SquareDashedBottomCodeIcon,
18
18
  TextSearchIcon,
19
19
  XCircleIcon,
@@ -35,6 +35,7 @@ export type PanelType =
35
35
  | "scratchpad"
36
36
  | "chat"
37
37
  | "agents"
38
+ | "cache"
38
39
  | "secrets"
39
40
  | "logs";
40
41
 
@@ -46,13 +47,29 @@ export interface PanelDescriptor {
46
47
  position: "sidebar" | "footer";
47
48
  }
48
49
 
50
+ /* Panels are ordered in roughly decreasing order of importance as well as
51
+ * logically grouped.
52
+ *
53
+ * 1. Must-have panels first.
54
+ * 2. Panels that can add cells to the editor.
55
+ * 3. Nice-to-have observability panels.
56
+ */
49
57
  export const PANELS: PanelDescriptor[] = [
58
+ // 1. Must-have panels.
59
+ //
60
+ // The files panel is at the top to orient
61
+ // users within their filesystem and give
62
+ // them a quick glance at their project structure,
63
+ // without having to leave their editor.
50
64
  {
51
65
  type: "files",
52
66
  Icon: FolderTreeIcon,
53
67
  tooltip: "View files",
54
68
  position: "sidebar",
55
69
  },
70
+ // Because notebooks uniquely have data in RAM,
71
+ // it's important to give humans visibility into
72
+ // what that data is.
56
73
  {
57
74
  type: "variables",
58
75
  Icon: FunctionSquareIcon,
@@ -65,24 +82,18 @@ export const PANELS: PanelDescriptor[] = [
65
82
  tooltip: "Explore data sources",
66
83
  position: "sidebar",
67
84
  },
68
- {
69
- type: "dependencies",
70
- Icon: NetworkIcon,
71
- tooltip: "Explore dependencies",
72
- position: "sidebar",
73
- },
85
+ // Every notebook has a package environment that must
86
+ // be managed.
74
87
  {
75
88
  type: "packages",
76
89
  Icon: BoxIcon,
77
90
  tooltip: "Manage packages",
78
91
  position: "sidebar",
79
92
  },
80
- {
81
- type: "outline",
82
- Icon: ScrollTextIcon,
83
- tooltip: "View outline",
84
- position: "sidebar",
85
- },
93
+ // 2. "Add cells" panels.
94
+ //
95
+ // We start with chat because it's the easiest
96
+ // way to add new cells to the editor.
86
97
  {
87
98
  type: "chat",
88
99
  Icon: BotMessageSquareIcon,
@@ -90,12 +101,38 @@ export const PANELS: PanelDescriptor[] = [
90
101
  position: "sidebar",
91
102
  },
92
103
  {
104
+ // TODO(akshayka): Consider merging with chat panel
105
+ // before release.
93
106
  type: "agents",
94
107
  Icon: HatGlassesIcon,
95
108
  tooltip: "Agents",
96
109
  position: "sidebar",
97
110
  hidden: !getFeatureFlag("external_agents"),
98
111
  },
112
+ // Scratchpad is the only way users can
113
+ // code without DAG restrictions, so it is
114
+ // privileged.
115
+ {
116
+ type: "scratchpad",
117
+ Icon: NotebookPenIcon,
118
+ tooltip: "Scratchpad",
119
+ position: "sidebar",
120
+ },
121
+ {
122
+ // TODO(akshayka): Consider making snippets default
123
+ // off, user configuration to enable.
124
+ type: "snippets",
125
+ Icon: SquareDashedBottomCodeIcon,
126
+ tooltip: "Snippets",
127
+ position: "sidebar",
128
+ },
129
+ // 3. Nice-to-have observability panels.
130
+ //
131
+ // Utility panels that provide observability
132
+ // into the state or structure of the notebook. These
133
+ // observability panels are less crucial than variables
134
+ // or datasets, so they are positioned at the end of the
135
+ // sidebar.
99
136
  {
100
137
  type: "documentation",
101
138
  Icon: TextSearchIcon,
@@ -109,15 +146,18 @@ export const PANELS: PanelDescriptor[] = [
109
146
  position: "sidebar",
110
147
  },
111
148
  {
112
- type: "tracing",
113
- Icon: ActivityIcon,
114
- tooltip: "Tracing",
149
+ // TODO(akshayka): Consider making dependencies
150
+ // default off; the minimap is a more effective
151
+ // overview.
152
+ type: "dependencies",
153
+ Icon: NetworkIcon,
154
+ tooltip: "Explore dependencies",
115
155
  position: "sidebar",
116
156
  },
117
157
  {
118
- type: "snippets",
119
- Icon: SquareDashedBottomCodeIcon,
120
- tooltip: "Snippets",
158
+ type: "tracing",
159
+ Icon: ActivityIcon,
160
+ tooltip: "Tracing",
121
161
  position: "sidebar",
122
162
  },
123
163
  {
@@ -128,11 +168,15 @@ export const PANELS: PanelDescriptor[] = [
128
168
  hidden: isWasm(),
129
169
  position: "sidebar",
130
170
  },
171
+ // TODO(akshayka): The cache panel should not be default shown,
172
+ // even when it's out of feature flag. (User config to
173
+ // turn it on.)
131
174
  {
132
- type: "scratchpad",
133
- Icon: NotebookPenIcon,
134
- tooltip: "Scratchpad",
175
+ type: "cache",
176
+ Icon: DatabaseZapIcon,
177
+ tooltip: "Manage cache",
135
178
  position: "sidebar",
179
+ hidden: !getFeatureFlag("cache_panel"),
136
180
  },
137
181
  {
138
182
  type: "errors",
@@ -56,6 +56,7 @@ const LazySecretsPanel = React.lazy(() => import("../panels/secrets-panel"));
56
56
  const LazySnippetsPanel = React.lazy(() => import("../panels/snippets-panel"));
57
57
  const LazyTracingPanel = React.lazy(() => import("../panels/tracing-panel"));
58
58
  const LazyVariablePanel = React.lazy(() => import("../panels/variable-panel"));
59
+ const LazyCachePanel = React.lazy(() => import("../panels/cache-panel"));
59
60
 
60
61
  export const AppChrome: React.FC<PropsWithChildren> = ({ children }) => {
61
62
  const { isSidebarOpen, isTerminalOpen, selectedPanel } = useChromeState();
@@ -176,6 +177,7 @@ export const AppChrome: React.FC<PropsWithChildren> = ({ children }) => {
176
177
  {selectedPanel === "logs" && <LazyLogsPanel />}
177
178
  {selectedPanel === "tracing" && <LazyTracingPanel />}
178
179
  {selectedPanel === "secrets" && <LazySecretsPanel />}
180
+ {selectedPanel === "cache" && <LazyCachePanel />}
179
181
  </TooltipProvider>
180
182
  </Suspense>
181
183
  </div>
@@ -1,8 +1,14 @@
1
1
  /* Copyright 2024 Marimo. All rights reserved. */
2
2
 
3
- import { useAtomValue, useSetAtom } from "jotai";
4
- import { WrenchIcon } from "lucide-react";
3
+ import { useAtomValue, useSetAtom, useStore } from "jotai";
4
+ import { ChevronDownIcon, SparklesIcon, WrenchIcon } from "lucide-react";
5
5
  import { Button } from "@/components/ui/button";
6
+ import {
7
+ DropdownMenu,
8
+ DropdownMenuContent,
9
+ DropdownMenuItem,
10
+ DropdownMenuTrigger,
11
+ } from "@/components/ui/dropdown-menu";
6
12
  import { Tooltip } from "@/components/ui/tooltip";
7
13
  import { aiCompletionCellAtom } from "@/core/ai/state";
8
14
  import { notebookAtom, useCellActions } from "@/core/cells/cells";
@@ -10,8 +16,8 @@ import type { CellId } from "@/core/cells/ids";
10
16
  import { aiEnabledAtom } from "@/core/config/config";
11
17
  import { getAutoFixes } from "@/core/errors/errors";
12
18
  import type { MarimoError } from "@/core/kernel/messages";
13
- import { store } from "@/core/state/jotai";
14
19
  import { cn } from "@/utils/cn";
20
+ import { type FixMode, useFixMode } from "./fix-mode";
15
21
 
16
22
  export const AutoFixButton = ({
17
23
  errors,
@@ -22,6 +28,7 @@ export const AutoFixButton = ({
22
28
  cellId: CellId;
23
29
  className?: string;
24
30
  }) => {
31
+ const store = useStore();
25
32
  const { createNewCell } = useCellActions();
26
33
  const aiEnabled = useAtomValue(aiEnabledAtom);
27
34
  const autoFixes = errors.flatMap((error) =>
@@ -37,35 +44,134 @@ export const AutoFixButton = ({
37
44
  // multiple fixes.
38
45
  const firstFix = autoFixes[0];
39
46
 
47
+ const handleFix = (triggerFix: boolean) => {
48
+ const editorView =
49
+ store.get(notebookAtom).cellHandles[cellId].current?.editorView;
50
+ firstFix.onFix({
51
+ addCodeBelow: (code: string) => {
52
+ createNewCell({
53
+ cellId: cellId,
54
+ autoFocus: false,
55
+ before: false,
56
+ code: code,
57
+ });
58
+ },
59
+ editor: editorView,
60
+ cellId: cellId,
61
+ aiFix: {
62
+ setAiCompletionCell,
63
+ triggerFix,
64
+ },
65
+ });
66
+ // Focus the editor
67
+ editorView?.focus();
68
+ };
69
+
70
+ return (
71
+ <div className={cn("my-2", className)}>
72
+ {firstFix.fixType === "ai" ? (
73
+ <AIFixButton
74
+ tooltip={firstFix.description}
75
+ openPrompt={() => handleFix(false)}
76
+ applyAutofix={() => handleFix(true)}
77
+ />
78
+ ) : (
79
+ <Tooltip content={firstFix.description} align="start">
80
+ <Button
81
+ size="xs"
82
+ variant="outline"
83
+ className="font-normal"
84
+ onClick={() => handleFix(false)}
85
+ >
86
+ <WrenchIcon className="h-3 w-3 mr-2" />
87
+ {firstFix.title}
88
+ </Button>
89
+ </Tooltip>
90
+ )}
91
+ </div>
92
+ );
93
+ };
94
+
95
+ const PromptIcon = SparklesIcon;
96
+ const AutofixIcon = WrenchIcon;
97
+
98
+ const PromptTitle = "Suggest a prompt";
99
+ const AutofixTitle = "Fix with AI";
100
+
101
+ export const AIFixButton = ({
102
+ tooltip,
103
+ openPrompt,
104
+ applyAutofix,
105
+ }: {
106
+ tooltip: string;
107
+ openPrompt: () => void;
108
+ applyAutofix: () => void;
109
+ }) => {
110
+ const { fixMode, setFixMode } = useFixMode();
111
+
112
+ return (
113
+ <div className="flex">
114
+ <Tooltip content={tooltip} align="start">
115
+ <Button
116
+ size="xs"
117
+ variant="outline"
118
+ className="font-normal rounded-r-none border-r-0"
119
+ onClick={fixMode === "prompt" ? openPrompt : applyAutofix}
120
+ >
121
+ {fixMode === "prompt" ? (
122
+ <PromptIcon className="h-3 w-3 mr-2 mb-0.5" />
123
+ ) : (
124
+ <AutofixIcon className="h-3 w-3 mr-2 mb-0.5" />
125
+ )}
126
+ {fixMode === "prompt" ? PromptTitle : AutofixTitle}
127
+ </Button>
128
+ </Tooltip>
129
+ <DropdownMenu>
130
+ <DropdownMenuTrigger asChild={true}>
131
+ <Button
132
+ size="xs"
133
+ variant="outline"
134
+ className="rounded-l-none px-2"
135
+ aria-label="Fix options"
136
+ >
137
+ <ChevronDownIcon className="h-3 w-3" />
138
+ </Button>
139
+ </DropdownMenuTrigger>
140
+ <DropdownMenuContent align="end" className="w-56">
141
+ <DropdownMenuItem
142
+ className="flex items-center gap-2"
143
+ onClick={() => {
144
+ setFixMode(fixMode === "prompt" ? "autofix" : "prompt");
145
+ }}
146
+ >
147
+ <AiModeItem mode={fixMode === "prompt" ? "autofix" : "prompt"} />
148
+ </DropdownMenuItem>
149
+ </DropdownMenuContent>
150
+ </DropdownMenu>
151
+ </div>
152
+ );
153
+ };
154
+
155
+ const AiModeItem = ({ mode }: { mode: FixMode }) => {
156
+ const icon =
157
+ mode === "prompt" ? (
158
+ <PromptIcon className="h-4 w-4" />
159
+ ) : (
160
+ <AutofixIcon className="h-4 w-4" />
161
+ );
162
+ const title = mode === "prompt" ? PromptTitle : AutofixTitle;
163
+ const description =
164
+ mode === "prompt"
165
+ ? "Edit the prompt before applying"
166
+ : "Apply AI fixes automatically";
167
+
40
168
  return (
41
- <Tooltip content={firstFix.description} align="start">
42
- <Button
43
- size="xs"
44
- variant="outline"
45
- className={cn("my-2 font-normal", className)}
46
- onClick={() => {
47
- const editorView =
48
- store.get(notebookAtom).cellHandles[cellId].current?.editorView;
49
- firstFix.onFix({
50
- addCodeBelow: (code: string) => {
51
- createNewCell({
52
- cellId: cellId,
53
- autoFocus: false,
54
- before: false,
55
- code: code,
56
- });
57
- },
58
- editor: editorView,
59
- cellId: cellId,
60
- setAiCompletionCell,
61
- });
62
- // Focus the editor
63
- editorView?.focus();
64
- }}
65
- >
66
- <WrenchIcon className="h-3 w-3 mr-2" />
67
- {firstFix.title}
68
- </Button>
69
- </Tooltip>
169
+ <div className="flex items-center gap-2">
170
+ {icon}
171
+ <div className="flex flex-col">
172
+ <span className="font-medium">{title}</span>
173
+ <span className="text-xs text-muted-foreground">{description}</span>
174
+ </div>
175
+ </div>
70
176
  );
71
177
  };
@@ -0,0 +1,15 @@
1
+ /* Copyright 2024 Marimo. All rights reserved. */
2
+
3
+ import { useAtom } from "jotai";
4
+ import { atomWithStorage } from "jotai/utils";
5
+
6
+ export type FixMode = "prompt" | "autofix";
7
+
8
+ const BASE_KEY = "marimo:ai-autofix-mode";
9
+
10
+ const fixModeAtom = atomWithStorage<FixMode>(BASE_KEY, "autofix");
11
+
12
+ export function useFixMode() {
13
+ const [fixMode, setFixMode] = useAtom(fixModeAtom);
14
+ return { fixMode, setFixMode };
15
+ }
@@ -178,11 +178,6 @@ describe("useCellClipboard", () => {
178
178
  "Failed to copy cells to clipboard",
179
179
  expect.any(Error),
180
180
  );
181
- expect(toast).toHaveBeenCalledWith({
182
- title: "Copy failed",
183
- description: "Failed to copy cells to clipboard.",
184
- variant: "danger",
185
- });
186
181
  });
187
182
 
188
183
  it("should filter out non-existent cells", async () => {
@@ -5,6 +5,7 @@ import { z } from "zod";
5
5
  import { toast } from "@/components/ui/use-toast";
6
6
  import { getNotebook, useCellActions } from "@/core/cells/cells";
7
7
  import type { CellId } from "@/core/cells/ids";
8
+ import { copyToClipboard } from "@/utils/copy";
8
9
  import { Logger } from "@/utils/Logger";
9
10
 
10
11
  // According to MDN, custom mimetypes should start with "web "
@@ -70,7 +71,7 @@ export function useCellClipboard() {
70
71
  // Fallback to simple text copy
71
72
  try {
72
73
  const plainText = cells.map((cell) => cell.code).join("\n\n");
73
- await navigator.clipboard.writeText(plainText);
74
+ await copyToClipboard(plainText);
74
75
  toastSuccess(cells.length);
75
76
  } catch {
76
77
  toastError();
@@ -86,7 +86,7 @@ import {
86
86
  useTemporarilyShownCode,
87
87
  useTemporarilyShownCodeActions,
88
88
  } from "./navigation/state";
89
- import { OutputArea } from "./Output";
89
+ import { type OnRefactorWithAI, OutputArea } from "./Output";
90
90
  import { ConsoleOutput } from "./output/ConsoleOutput";
91
91
  import { CellDragHandle, SortableCell } from "./SortableCell";
92
92
 
@@ -532,9 +532,15 @@ const EditableCellComponent = ({
532
532
  isMarkdownCodeHidden && hasOutput && !navigationProps["data-selected"],
533
533
  });
534
534
 
535
- const handleRefactorWithAI = useEvent((opts: { prompt: string }) => {
536
- setAiCompletionCell({ cellId, initialPrompt: opts.prompt });
537
- });
535
+ const handleRefactorWithAI: OnRefactorWithAI = useEvent(
536
+ (opts: { prompt: string; triggerImmediately: boolean }) => {
537
+ setAiCompletionCell({
538
+ cellId,
539
+ initialPrompt: opts.prompt,
540
+ triggerImmediately: opts.triggerImmediately,
541
+ });
542
+ },
543
+ );
538
544
 
539
545
  // TODO(akshayka): Move to our own Tooltip component once it's easier
540
546
  // to get the tooltip to show next to the cursor ...
@@ -622,6 +628,7 @@ const EditableCellComponent = ({
622
628
  showHiddenCode={showHiddenCode}
623
629
  languageAdapter={languageAdapter}
624
630
  setLanguageAdapter={setLanguageAdapter}
631
+ outputArea={cellOutput}
625
632
  />
626
633
  <CellRightSideActions
627
634
  className={cn(
@@ -1027,9 +1034,15 @@ const SetupCellComponent = ({
1027
1034
  },
1028
1035
  );
1029
1036
 
1030
- const handleRefactorWithAI = useEvent((opts: { prompt: string }) => {
1031
- setAiCompletionCell({ cellId, initialPrompt: opts.prompt });
1032
- });
1037
+ const handleRefactorWithAI: OnRefactorWithAI = useEvent(
1038
+ (opts: { prompt: string; triggerImmediately: boolean }) => {
1039
+ setAiCompletionCell({
1040
+ cellId,
1041
+ initialPrompt: opts.prompt,
1042
+ triggerImmediately: opts.triggerImmediately,
1043
+ });
1044
+ },
1045
+ );
1033
1046
 
1034
1047
  // TODO(akshayka): Move to our own Tooltip component once it's easier
1035
1048
  // to get the tooltip to show next to the cursor ...
@@ -1,10 +1,11 @@
1
1
  /* Copyright 2024 Marimo. All rights reserved. */
2
2
 
3
3
  import { AnsiUp } from "ansi_up";
4
- import { ChevronRightIcon, CopyIcon, WrapTextIcon } from "lucide-react";
4
+ import { ChevronRightIcon, WrapTextIcon } from "lucide-react";
5
5
  import React, { useLayoutEffect } from "react";
6
6
  import { ToggleButton } from "react-aria-components";
7
7
  import { DebuggerControls } from "@/components/debugger/debugger-code";
8
+ import { CopyClipboardIcon } from "@/components/icons/copy-icon";
8
9
  import { Input } from "@/components/ui/input";
9
10
  import { Tooltip } from "@/components/ui/tooltip";
10
11
  import type { CellId } from "@/core/cells/ids";
@@ -13,13 +14,12 @@ import type { WithResponse } from "@/core/cells/types";
13
14
  import type { OutputMessage } from "@/core/kernel/messages";
14
15
  import { useSelectAllContent } from "@/hooks/useSelectAllContent";
15
16
  import { cn } from "@/utils/cn";
16
- import { copyToClipboard } from "@/utils/copy";
17
17
  import { ansiToPlainText, parseHtmlContent } from "@/utils/dom";
18
18
  import { invariant } from "@/utils/invariant";
19
19
  import { Strings } from "@/utils/strings";
20
20
  import { NameCellContentEditable } from "../actions/name-cell-input";
21
21
  import { ErrorBoundary } from "../boundary/ErrorBoundary";
22
- import { OutputRenderer } from "../Output";
22
+ import { type OnRefactorWithAI, OutputRenderer } from "../Output";
23
23
  import { useWrapText } from "./useWrapText";
24
24
 
25
25
  const ansiUp = new AnsiUp();
@@ -31,7 +31,7 @@ interface Props {
31
31
  consoleOutputs: WithResponse<OutputMessage>[];
32
32
  stale: boolean;
33
33
  debuggerActive: boolean;
34
- onRefactorWithAI?: (opts: { prompt: string }) => void;
34
+ onRefactorWithAI?: OnRefactorWithAI;
35
35
  onClear?: () => void;
36
36
  onSubmitDebugger: (text: string, index: number) => void;
37
37
  }
@@ -112,39 +112,33 @@ const ConsoleOutputInternal = (props: Props): React.ReactNode => {
112
112
  (output) => output.channel === "stdin",
113
113
  );
114
114
 
115
+ const getOutputString = (): string => {
116
+ const text = consoleOutputs
117
+ .filter((output) => output.channel !== "pdb")
118
+ .map((output) => {
119
+ if (
120
+ output.mimetype.startsWith("application/vnd.marimo") ||
121
+ output.mimetype === "text/html"
122
+ ) {
123
+ return parseHtmlContent(Strings.asString(output.data));
124
+ }
125
+
126
+ // Convert ANSI to HTML, then parse as HTML
127
+ return ansiToPlainText(Strings.asString(output.data));
128
+ })
129
+ .join("\n");
130
+ return text;
131
+ };
132
+
115
133
  return (
116
134
  <div className="relative group">
117
135
  {hasOutputs && (
118
136
  <div className="absolute top-1 right-5 z-10 opacity-0 group-hover:opacity-100 flex gap-1">
119
- <Tooltip content="Copy all">
120
- <span>
121
- <button
122
- aria-label="Copy all console output"
123
- className="p-1 rounded bg-transparent text-muted-foreground hover:text-foreground"
124
- type="button"
125
- onClick={() => {
126
- const text = reversedOutputs
127
- .filter((output) => output.channel !== "pdb")
128
- .map((output) => {
129
- // If starts with `<`, then assume it's HTML
130
- if (
131
- typeof output.data === "string" &&
132
- output.data.startsWith("<")
133
- ) {
134
- return parseHtmlContent(output.data);
135
- }
136
-
137
- // Otherwise, convert the ANSI to HTML, then parse as HTML
138
- return ansiToPlainText(Strings.asString(output.data));
139
- })
140
- .join("\n");
141
- void copyToClipboard(text);
142
- }}
143
- >
144
- <CopyIcon className="h-4 w-4" />
145
- </button>
146
- </span>
147
- </Tooltip>
137
+ <CopyClipboardIcon
138
+ tooltip="Copy console output"
139
+ value={getOutputString}
140
+ className="h-4 w-4"
141
+ />
148
142
  <Tooltip content={wrapText ? "Disable wrap text" : "Wrap text"}>
149
143
  <span>
150
144
  <ToggleButton
@@ -194,6 +194,7 @@ const LEAF_RENDERERS = {
194
194
  "video/": (value: string) => <VideoOutput src={value} />,
195
195
  "text/html:": (value: string) => <HtmlOutput html={value} inline={true} />,
196
196
  "text/plain+float:": (value: string) => <span>{value}</span>,
197
+ "text/plain+bigint:": (value: string) => <span>{value}</span>,
197
198
  "text/plain+set:": (value: string) => <span>set{value}</span>,
198
199
  "text/plain+tuple:": (value: string) => <span>{value}</span>,
199
200
  "text/plain:": (value: string) => <CollapsibleTextOutput text={value} />,
@@ -351,6 +352,9 @@ function pythonJsonReplacer(_key: string, value: unknown): unknown {
351
352
  if (typeof value === "object") {
352
353
  return value;
353
354
  }
355
+ if (typeof value === "bigint") {
356
+ return `${REPLACE_PREFIX}${value}${REPLACE_SUFFIX}`;
357
+ }
354
358
  if (Array.isArray(value)) {
355
359
  return value;
356
360
  }
@@ -359,6 +363,11 @@ function pythonJsonReplacer(_key: string, value: unknown): unknown {
359
363
  if (value.startsWith("text/plain+float:")) {
360
364
  return `${REPLACE_PREFIX}${leafData(value)}${REPLACE_SUFFIX}`;
361
365
  }
366
+ if (value.startsWith("text/plain+bigint:")) {
367
+ // Use BigInt to avoid precision loss
368
+ const number = BigInt(leafData(value));
369
+ return `${REPLACE_PREFIX}${number}${REPLACE_SUFFIX}`;
370
+ }
362
371
  if (value.startsWith("text/plain+tuple:")) {
363
372
  // replace first and last characters [] with ()
364
373
  return `${REPLACE_PREFIX}(${leafData(value).slice(1, -1)})${REPLACE_SUFFIX}`;
@@ -3,7 +3,6 @@
3
3
  import { type DOMNode, Element, Text } from "html-react-parser";
4
4
  import { useAtomValue } from "jotai";
5
5
  import {
6
- BugIcon,
7
6
  BugPlayIcon,
8
7
  ChevronDown,
9
8
  CopyIcon,
@@ -40,12 +39,14 @@ import {
40
39
  getTracebackInfo,
41
40
  } from "@/utils/traceback";
42
41
  import { cn } from "../../../utils/cn";
42
+ import { AIFixButton } from "../errors/auto-fix";
43
43
  import { CellLinkTraceback } from "../links/cell-link";
44
+ import type { OnRefactorWithAI } from "../Output";
44
45
 
45
46
  interface Props {
46
47
  cellId: CellId | undefined;
47
48
  traceback: string;
48
- onRefactorWithAI?: (opts: { prompt: string }) => void;
49
+ onRefactorWithAI?: OnRefactorWithAI;
49
50
  }
50
51
 
51
52
  const KEY = "item";
@@ -69,9 +70,10 @@ export const MarimoTracebackOutput = ({
69
70
  // Get last traceback info
70
71
  const tracebackInfo = extractAllTracebackInfo(traceback)?.at(0);
71
72
 
72
- const handleRefactorWithAI = () => {
73
+ const handleRefactorWithAI = (triggerImmediately: boolean) => {
73
74
  onRefactorWithAI?.({
74
75
  prompt: `My code gives the following error:\n\n${lastTracebackLine}`,
76
+ triggerImmediately,
75
77
  });
76
78
  };
77
79
 
@@ -103,10 +105,11 @@ export const MarimoTracebackOutput = ({
103
105
  </Accordion>
104
106
  <div className="flex gap-2">
105
107
  {onRefactorWithAI && aiEnabled && (
106
- <Button size="xs" variant="outline" onClick={handleRefactorWithAI}>
107
- <BugIcon className="h-3 w-3 mr-2" />
108
- Fix with AI
109
- </Button>
108
+ <AIFixButton
109
+ tooltip="Fix with AI"
110
+ openPrompt={() => handleRefactorWithAI(false)}
111
+ applyAutofix={() => handleRefactorWithAI(true)}
112
+ />
110
113
  )}
111
114
  {tracebackInfo && tracebackInfo.kind === "cell" && !isWasm() && (
112
115
  <Tooltip content={"Attach pdb to the exception point."}>