@marimo-team/islands 0.23.17-dev8 → 0.24.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 (643) hide show
  1. package/dist/{ConnectedDataExplorerComponent-f9vLjQiF.js → ConnectedDataExplorerComponent-BUC1MrsF.js} +24 -24
  2. package/dist/{ErrorBoundary-DhLqwSWA.js → ErrorBoundary-BniTEhHn.js} +7 -7
  3. package/dist/{ImageComparisonComponent-C3y7L3eJ.js → ImageComparisonComponent-B7b8DcJI.js} +42 -31
  4. package/dist/{Plot-YQOuVIei.js → Plot-eTseCFf_.js} +4 -4
  5. package/dist/_initCloneObject-DNUst5Cg.js +91 -0
  6. package/dist/abnfDiagram-N423BO3Z-DA4j92-C.js +112 -0
  7. package/dist/{any-language-editor-DifE-fl7.js → any-language-editor-LHl8ZmVN.js} +26 -26
  8. package/dist/apl-Cwo7GIH7.js +4 -0
  9. package/dist/{arc-CTIpFoOn.js → arc-9nABupDE.js} +2 -2
  10. package/dist/architecture-TIHT7OUA-DxLlkuAK.js +5 -0
  11. package/dist/{architectureDiagram-VXUJARFQ-DXwkyAaM.js → architectureDiagram-T3A2C74G-BBlBK1Oh.js} +327 -214
  12. package/dist/{arrays-sEtDRoG4.js → arrays-C56grfjL.js} +1 -1
  13. package/dist/asciiarmor-jrfEZ3j_.js +4 -0
  14. package/dist/asn1-BNEiJ4nQ.js +4 -0
  15. package/dist/assets/__vite-browser-external-DUz7vvG0.js +1 -0
  16. package/dist/assets/{worker-CDEKsBgX.js → worker-Cl1KJG2_.js} +2 -2
  17. package/dist/blockDiagram-VBNYF7ZC-Datz1WNn.js +3284 -0
  18. package/dist/brainfuck-BCunvTbd.js +4 -0
  19. package/dist/{button-BSm8IXRU.js → button-Dr2uAwhT.js} +9 -7
  20. package/dist/{c4Diagram-YG6GDRKO-B6dZC_oU.js → c4Diagram-5PPSVZJV-DTIsibpE.js} +165 -162
  21. package/dist/{capabilities-C6OQ5YBO.js → capabilities-BilXeZ7p.js} +2 -2
  22. package/dist/{channel-BN070S0F.js → channel-CuV_jmG4.js} +1 -1
  23. package/dist/chat-ui-o-tATfmW.js +8619 -0
  24. package/dist/{check-DP7U0H0G.js → check-58HHfHKy.js} +1 -1
  25. package/dist/chunk-2GRJ4B5K-DRayWnnu.js +68 -0
  26. package/dist/{chunk-QZHKN3VN-Dym5BS7y.js → chunk-2Q5K7J3B-BSLyFOHa.js} +1 -1
  27. package/dist/chunk-3NCLNEKW-BPlp8K7N.js +11 -0
  28. package/dist/chunk-4I5QYGJK-CYJC3pkC.js +260 -0
  29. package/dist/chunk-5FCAYU7R-C3cMIeyz.js +24 -0
  30. package/dist/{chunk-5FQGJX7Z-B9WoXK1R.js → chunk-5FQGJX7Z-BRZ_XYUw.js} +6 -6
  31. package/dist/chunk-5HE753X5-D2jFCVXb.js +34 -0
  32. package/dist/chunk-5JV3BV7I-B7tzprBU.js +50 -0
  33. package/dist/{chunk-DI55MBZ5-D4Y8yV8B.js → chunk-5RXB4S5H-DcCPfb0q.js} +373 -327
  34. package/dist/chunk-5TONJI2A-LRqbgPte.js +59 -0
  35. package/dist/{chunk-FMBD7UC4-quJmebXa.js → chunk-5VM5RSS4-ChXEBudA.js} +1 -1
  36. package/dist/chunk-6Q2QTUOP-zcnb3OaV.js +503 -0
  37. package/dist/{chunk-HN2XXSSU-Bv0QkeMr.js → chunk-7BUUIJ7U-CkIbJNZo.js} +32 -25
  38. package/dist/chunk-7Z6QIM7H-1j-x7ddW.js +606 -0
  39. package/dist/{chunk-FRFDVMJY-BHBqN-vD.js → chunk-BIQX33UG-B-BYk6sM.js} +3 -3
  40. package/dist/chunk-Bfp04NdC.js +25 -0
  41. package/dist/chunk-CQNSW5MT-DBXDKSOU.js +34 -0
  42. package/dist/{chunk-4F5CHEZ2-VlodlEGo.js → chunk-CYSBUYHQ-Cv-vKQV-.js} +1 -1
  43. package/dist/{chunk-SJTYNZTY-DnXoKWpW.js → chunk-EMLP6XTP-DCtMkXLF.js} +1 -1
  44. package/dist/{chunk-B4BG7PRW-B_z2FEHm.js → chunk-GF5L2VYU-esTxzELH.js} +878 -636
  45. package/dist/chunk-I66GZJ75-9xAsFrdW.js +3744 -0
  46. package/dist/chunk-J7OUQ5F2-CbNBTlFM.js +81 -0
  47. package/dist/chunk-JG7HCLWE-CZIm6axg.js +59 -0
  48. package/dist/{flowDiagram-NV44I4VS-BRhSg-ro.js → chunk-JQJVKLGR-ZALkKVji.js} +1019 -1001
  49. package/dist/{chunk-4BX2VUAB-iU5lQTDI.js → chunk-JWPE2WC7-C_Daz-Oc.js} +1 -1
  50. package/dist/{chunk-QN33PNHL-DPBNNzpR.js → chunk-KBJHAD2P-B7m9DztL.js} +3 -2
  51. package/dist/chunk-KEIR6QF5-aP6TmWQ-.js +21095 -0
  52. package/dist/{chunk-UMXZTB3W-D1uHz8MN.js → chunk-MOZMSUNE-BQi-ggQx.js} +7 -4
  53. package/dist/{chunk-S3R3BYOJ-BdgLc8AM.js → chunk-NSK5VX7P-BmmoJBbx.js} +320 -29
  54. package/dist/chunk-OSBZ3O6U-BcrmpSY_.js +22 -0
  55. package/dist/{chunk-TQ3KTPDO-CsDx6v37.js → chunk-QBLGF6JB-BACuPUWb.js} +3 -3
  56. package/dist/chunk-QR6OTTB3-C4L1dLRd.js +3762 -0
  57. package/dist/{chunk-B2363JML-zL3VngtH.js → chunk-R7FJI6CG-BYAXJpIb.js} +3 -3
  58. package/dist/chunk-RYQCIY6F-poA0Ugpr.js +243 -0
  59. package/dist/chunk-U6XO7XAA-I8tCjTeT.js +60 -0
  60. package/dist/chunk-UBXNYLIW-C8LueN5Q.js +34 -0
  61. package/dist/{chunk-ATLVNIR6-qFiszptQ.js → chunk-W5SLKNZC-DK-_KuKT.js} +2 -2
  62. package/dist/{chunk-JA3XYJ7Z-CY4CRbV5.js → chunk-WRU74C26-DLgw-V0j.js} +262 -451
  63. package/dist/chunk-XXDRQBXY-Dzcp3rUR.js +9 -0
  64. package/dist/chunk-Y2CYZVJY-DX3DSigL.js +13 -0
  65. package/dist/{chunk-PL6DKKU2-CAHKc95s.js → chunk-YOTPTUD7-C8qfgaz5.js} +5 -5
  66. package/dist/{chunk-MI3HLSF2-HGWI-8Pg.js → chunk-ZIRB5QZD-_JX1DzEJ.js} +12 -8
  67. package/dist/classDiagram-JCYQIIEL-D8A6ZyXv.js +32 -0
  68. package/dist/classDiagram-v2-OCEON4UE-DIdYl-t3.js +32 -0
  69. package/dist/{click-outside-container-BSIeYt4y.js → click-outside-container-BZNsAj09.js} +2 -2
  70. package/dist/{clike-7lgyEYRk.js → clike-CWndBX_M.js} +1 -1
  71. package/dist/clojure-2X0Rfij9.js +4 -0
  72. package/dist/cmake-DEwzCy9U.js +4 -0
  73. package/dist/cobol-Ck4eCoAB.js +4 -0
  74. package/dist/{code-block-37QAKDTI-MSxEjskJ.js → code-block-37QAKDTI-B4pWe5MI.js} +4 -4
  75. package/dist/coffeescript-bB1IDwhg.js +4 -0
  76. package/dist/{common-BLoQG6ym.js → common-DV4qU2ew.js} +797 -804
  77. package/dist/commonlisp-BDYrVBNC.js +4 -0
  78. package/dist/{compiler-runtime-CEbnTgxf.js → compiler-runtime-DsR6imPN.js} +2 -2
  79. package/dist/{copy-DNq8q3zw.js → copy-C7ZKMKox.js} +5 -5
  80. package/dist/{cose-bilkent-S5V4N54A-BYj0aL7z.js → cose-bilkent-JH36ORCC-D6iQzSi6.js} +6 -5
  81. package/dist/crystal-BSoiVUiH.js +4 -0
  82. package/dist/css-w1h9i21f.js +4 -0
  83. package/dist/cynefin-VYW2F7L2-DnZOHyNF.js +5 -0
  84. package/dist/cynefinDiagram-MW4NZA55-B1GNPS2u.js +367 -0
  85. package/dist/cypher-B4xzuKGP.js +4 -0
  86. package/dist/{cytoscape.esm-Dr8XzXWK.js → cytoscape.esm-BPa26Dup.js} +393 -334
  87. package/dist/d-D50Bz34p.js +4 -0
  88. package/dist/{dagre-By_QsQgc.js → dagre-ThTNj8pe.js} +60 -45
  89. package/dist/dagre-VZM6K2ZE-DEs5dfXA.js +343 -0
  90. package/dist/{data-grid-overlay-editor-BWRG2b_o.js → data-grid-overlay-editor-Ci7TXVf5.js} +5 -5
  91. package/dist/{debounce-BOD3DbfP.js → debounce-D784bpms.js} +2 -2
  92. package/dist/{defaultLocale-BpsHxBd7.js → defaultLocale-CMezyvMc.js} +26 -26
  93. package/dist/diagram-7IWD3JNH-Bdk1_wJO.js +321 -0
  94. package/dist/diagram-B4RE2ZJO-Be9eYLJ0.js +464 -0
  95. package/dist/{diagram-S2PKOQOG-CGh4OMEV.js → diagram-LBJQPF4R-BNSnzxFw.js} +26 -18
  96. package/dist/{diagram-PSM6KHXK-D4ftnaua.js → diagram-Q27KOJAE-NPRzyGtd.js} +68 -63
  97. package/dist/diagram-UB23O5K3-Dogz4itg.js +236 -0
  98. package/dist/diff-BMdzfXq-.js +4 -0
  99. package/dist/{dist-BTdrwBWP.js → dist-72nb8Uag.js} +3 -3
  100. package/dist/{dist-CV79CsQ0.js → dist-9PC5KxMl.js} +2 -2
  101. package/dist/{dist-BOMbzyb3.js → dist-Awj73yUw.js} +3 -3
  102. package/dist/{dist-w_gWE5Wf.js → dist-B0Ctcrt9.js} +1 -1
  103. package/dist/{dist-BO5HRiTf.js → dist-B1Donbpk.js} +2 -2
  104. package/dist/dist-BC6wzWNb.js +5 -0
  105. package/dist/{dist-De-GlSAs.js → dist-BJ2IUa0l.js} +15 -9
  106. package/dist/dist-BMd_RcOy.js +5 -0
  107. package/dist/dist-BZEWjN6r.js +5 -0
  108. package/dist/{dist-BP39XM8u.js → dist-B_K4AAkc.js} +1 -1
  109. package/dist/dist-BeuGjR3n.js +6 -0
  110. package/dist/dist-BfDQCUe6.js +5 -0
  111. package/dist/dist-BhNblTOV.js +8 -0
  112. package/dist/{dist-BPF0gTRZ.js → dist-C0ifRfXi.js} +1 -1
  113. package/dist/{dist-pqIwD8VD.js → dist-C3mEki35.js} +2 -2
  114. package/dist/{dist-LpLXa9Lb.js → dist-CNfV2vDI.js} +2 -2
  115. package/dist/{dist-DviUBLUp.js → dist-COcQ5Vyc.js} +4 -4
  116. package/dist/dist-CRCm4Fuo.js +5 -0
  117. package/dist/{dist-4lVIWUT3.js → dist-CSZpLb9d.js} +1 -1
  118. package/dist/{dist-BIEt-mlF.js → dist-CWswQBvu.js} +1 -1
  119. package/dist/{dist-D3bdsa1d.js → dist-CXYro_Nw.js} +4 -4
  120. package/dist/{dist-CRmSjkLP.js → dist-Ckfsc8C3.js} +2 -2
  121. package/dist/{dist-CSlJrrAw.js → dist-Cyq6Pxtv.js} +1 -1
  122. package/dist/{dist-JGehap7K.js → dist-D-BWPyoX.js} +5 -5
  123. package/dist/{dist-BCX980mU.js → dist-D-YB6j-O.js} +2 -2
  124. package/dist/{dist-DgjbnqTg.js → dist-D1vYHETp.js} +2 -2
  125. package/dist/{dist-BpeiYpG2.js → dist-D9-ePb6D.js} +2 -2
  126. package/dist/dist-DBPEbGkd.js +8 -0
  127. package/dist/{dist-C2_4pjuS.js → dist-DC409ROm.js} +1 -1
  128. package/dist/{dist-BdqCKQ1O.js → dist-DJRUd9aM.js} +2 -2
  129. package/dist/{dist-DaXJPX8F.js → dist-DLvxZEAK.js} +2 -2
  130. package/dist/dist-DSsl8IAI.js +5 -0
  131. package/dist/{dist-3NCqaWjt.js → dist-D_ulymry.js} +2 -2
  132. package/dist/{dist-DZwp8lro.js → dist-DgY27bJ4.js} +3 -3
  133. package/dist/{dist-BwhXBwMd.js → dist-DiwVZiK7.js} +1 -1
  134. package/dist/{dist-DwqBJ014.js → dist-DnYHhW6c.js} +2 -2
  135. package/dist/dist-Dx0kkrek.js +5 -0
  136. package/dist/{dist-DsoKosxi.js → dist-HaLHv0k5.js} +2 -3
  137. package/dist/dist-NKA1TU8a.js +6 -0
  138. package/dist/dist-ZFcsIdHj.js +8 -0
  139. package/dist/{dist-C18MUWTj.js → dist-iZ8-rtUy.js} +2 -2
  140. package/dist/{dist-DIlxLFXG.js → dist-j30bBjjN.js} +15 -15
  141. package/dist/{dist-SXNmlE8A.js → dist-kOCFEa1U.js} +3 -3
  142. package/dist/{dist-CFSb_Frm.js → dist-sxRUVPmt.js} +1 -1
  143. package/dist/dist-uA2RbGmY.js +5 -0
  144. package/dist/{dist-B2jmQKKx.js → dist-xVU82Nq7.js} +2 -2
  145. package/dist/dist-zSCo-xCB.js +8 -0
  146. package/dist/{dockerfile-B82Pkz_V.js → dockerfile-DImRFUlA.js} +1 -1
  147. package/dist/dtd-B9dCT0pu.js +4 -0
  148. package/dist/dylan-DLghDyuR.js +4 -0
  149. package/dist/ebnfDiagram-BXEA7PRR-CqRWkG7L.js +129 -0
  150. package/dist/ecl-w0qdPHDB.js +4 -0
  151. package/dist/eiffel-C5AWRCNP.js +4 -0
  152. package/dist/elm-CT8FZrOm.js +4 -0
  153. package/dist/{erDiagram-Q2GNP2WA-BcKAHFqF.js → erDiagram-JOGREHBK-BZMJX-Au.js} +568 -436
  154. package/dist/erlang-DPD-9M5g.js +4 -0
  155. package/dist/{error-banner-B_GQfxxD.js → error-banner-BwCLtmkH.js} +6 -6
  156. package/dist/{esm-CuQHjs36.js → esm-BJ4n0NUT.js} +1 -1
  157. package/dist/{esm-DKOv6P2M.js → esm-Dusmf6uu.js} +105 -105
  158. package/dist/{esm-DzZVaNH4.js → esm-QLUgkqzZ.js} +6 -6
  159. package/dist/eventmodeling-45OFAUF4-D8Kbnsr6.js +5 -0
  160. package/dist/{extends-w2_S44bV.js → extends-iFBneQO_.js} +9 -9
  161. package/dist/{factor-Bq2mGIHt.js → factor-BonZgUGg.js} +1 -1
  162. package/dist/factor-rFfeJu3r.js +4 -0
  163. package/dist/flowDiagram-UKHOOZJN-DqIE8_b3.js +21 -0
  164. package/dist/{formats-Dwq1THhr.js → formats-HSfYlcA8.js} +7 -7
  165. package/dist/forth-C-3AyQx4.js +4 -0
  166. package/dist/fortran-BSN9TeT7.js +4 -0
  167. package/dist/ganttDiagram-PKOTCBZU-Bc9puoXb.js +2207 -0
  168. package/dist/gas-DwmuvQpB.js +4 -0
  169. package/dist/gherkin-gmCjL-Sn.js +4 -0
  170. package/dist/{gitGraph-G5XIXVHT-BjTx0kww.js → gitGraph-TEB2WS4Q-DVzLmQHc.js} +2 -3
  171. package/dist/gitGraphDiagram-DS77QQ5N-CqKr-Dfg.js +766 -0
  172. package/dist/{glide-data-editor-B9K6-MJe.js → glide-data-editor-BI2i_IEE.js} +18 -18
  173. package/dist/graphlib-DMVIRZap.js +614 -0
  174. package/dist/groovy-DCjvesOy.js +4 -0
  175. package/dist/hasIn-synBnXn4.js +119 -0
  176. package/dist/haskell-C1p0D9L8.js +4 -0
  177. package/dist/haxe-q-fgv0zr.js +5 -0
  178. package/dist/{html-to-image-CZ1kLKkq.js → html-to-image-BOiFHx3u.js} +7535 -3056
  179. package/dist/idl-Bmg4bsnK.js +4 -0
  180. package/dist/{info-VBDWY6EO-CA67FznA.js → info-DKCQHKI2-BxOTqQHM.js} +2 -3
  181. package/dist/infoDiagram-6WML65LV-B869X2KY.js +37 -0
  182. package/dist/{input-C5K4VBvB.js → input-BRE2a7Ay.js} +13 -13
  183. package/dist/{_baseFor-4jw-lnCC.js → isArrayLikeObject-CBUaLibE.js} +96 -29
  184. package/dist/{isEmpty-CJJMn-QP.js → isEmpty-CgME6WRV.js} +15 -15
  185. package/dist/{isSymbol-CoUCgMCM.js → isSymbol-Ch3GYg4S.js} +1 -1
  186. package/dist/ishikawaDiagram-WSZJBQD7-BrOMFBYy.js +731 -0
  187. package/dist/javascript-BY5QZ-eN.js +4 -0
  188. package/dist/{journeyDiagram-XKPGCS4Q-DEal0aT1.js → journeyDiagram-NVQOT4AX-CTwHlsTm.js} +124 -123
  189. package/dist/{jsx-runtime-DebpN0FN.js → jsx-runtime-Dp_oQwaf.js} +1 -1
  190. package/dist/julia-DbR1YalK.js +4 -0
  191. package/dist/{kanban-definition-3W4ZIXB7-Dl90wENN.js → kanban-definition-27J2QSJJ-CKowzO9_.js} +51 -45
  192. package/dist/{katex-C4t-BmrK.js → katex-Ci33kJVq.js} +1 -1
  193. package/dist/{katex-Bld7b-fk.js → katex-Dp22h6yO.js} +2871 -3002
  194. package/dist/{label-DjoYwqmj.js → label-CMh2d8pJ.js} +6 -6
  195. package/dist/{line-C43FIPBd.js → line-Bc27KE1D.js} +3 -3
  196. package/dist/{linear-H_vsH9ao.js → linear-6pDlrp1I.js} +4 -4
  197. package/dist/livescript-BDUooIeL.js +4 -0
  198. package/dist/{loader-DX-IDS7n.js → loader-DTnbNSVZ.js} +11 -11
  199. package/dist/lua-CswAWSkH.js +4 -0
  200. package/dist/main.js +747 -752
  201. package/dist/map-BQ_Xp80D.js +137 -0
  202. package/dist/mathematica-Bw7v11B5.js +4 -0
  203. package/dist/mbox-j35IMz1j.js +4 -0
  204. package/dist/merge-CDbSrd9f.js +69 -0
  205. package/dist/mermaid-4DMBBIKO-BZSpTmcx.js +6 -0
  206. package/dist/mermaid-DpAz2sTy.js +1265 -0
  207. package/dist/mermaid-parser.core-BQzz3_BI.js +87 -0
  208. package/dist/{mhchem-EGhUZR1V.js → mhchem-BDHjke3h.js} +1 -1
  209. package/dist/{micromark-factory-space-CwHmg6iz.js → micromark-factory-space-Cr4NxAt3.js} +1 -1
  210. package/dist/{mindmap-definition-VGOIOE7T-CCDupjWW.js → mindmap-definition-FAOFIHXS-CTsi-HFj.js} +126 -80
  211. package/dist/mirc-Ba_RHVXO.js +4 -0
  212. package/dist/mllike-DbTP2dPp.js +6 -0
  213. package/dist/modelica-lpT3V1X6.js +4 -0
  214. package/dist/mscgen-BN4ZSJMx.js +6 -0
  215. package/dist/mumps-uI5g1A0g.js +4 -0
  216. package/dist/{node-sql-parser-v1Vi-Fft.js → node-sql-parser-BaLGWQe1.js} +1 -1
  217. package/dist/{now-Ch98bJO_.js → now-sFWt-GLC.js} +2 -2
  218. package/dist/{nsis-i9_sgigf.js → nsis-C68fFq_o.js} +1 -1
  219. package/dist/nsis-Df56GiRg.js +4 -0
  220. package/dist/ntriples-B3LWuG7W.js +4 -0
  221. package/dist/{number-overlay-editor-Ck_mc_gT.js → number-overlay-editor-CeBHRJvI.js} +3 -3
  222. package/dist/octave-CovfQgOx.js +4 -0
  223. package/dist/{once-B60G2fuJ.js → once-Boutk_9X.js} +1 -1
  224. package/dist/{ordinal-Bkv2-veX.js → ordinal-Bdajf2BE.js} +1 -1
  225. package/dist/oz-DQQAvVFb.js +4 -0
  226. package/dist/{packet-DYOGHKS2-Bkgofxf3.js → packet-7NZHBO7P-BG8whXXH.js} +2 -3
  227. package/dist/pascal-xz94P9sf.js +4 -0
  228. package/dist/pegDiagram-VL7TDLO6-CNpT8Sqz.js +124 -0
  229. package/dist/perl-aEWKE-1n.js +4 -0
  230. package/dist/pick-CaEWivSF.js +47 -0
  231. package/dist/{pie-VRWISCQL-B1AMhN_7.js → pie-RZYD4A2V-Cc_QhFbT.js} +2 -3
  232. package/dist/pieDiagram-7S7Q4E2Y-Ct8jRpe_.js +219 -0
  233. package/dist/pig-DB6DOZl7.js +4 -0
  234. package/dist/powershell-DM5saUx1.js +4 -0
  235. package/dist/{precisionRound-CnHPY_5v.js → precisionRound-BOoJTbDj.js} +1 -1
  236. package/dist/{process-output-bVfbcx5_.js → process-output-HrsM52f8.js} +7 -7
  237. package/dist/properties-BGjYQuGo.js +4 -0
  238. package/dist/protobuf-BPpEyPud.js +4 -0
  239. package/dist/{pug-BhE2JRSg.js → pug-DFPPZ3LA.js} +1 -1
  240. package/dist/pug-uJzB88ft.js +4 -0
  241. package/dist/puppet-oIm2d_Lg.js +4 -0
  242. package/dist/{purify.es-EnR5yhgI.js → purify.es-DR5PNXwx.js} +160 -155
  243. package/dist/python-WE57eUzD.js +4 -0
  244. package/dist/q-CR8xPodo.js +4 -0
  245. package/dist/{quadrantDiagram-AYHSOK5B-BqDB9tUC.js → quadrantDiagram-CIZ2JOQS-B5n_xFcF.js} +429 -401
  246. package/dist/r-CJdmQZNj.js +4 -0
  247. package/dist/{radar-ZZBFDIW7-C2b7A32s.js → radar-I7S5WNFK-OhUkecXA.js} +2 -3
  248. package/dist/railroad-3IZDKUUU-1CmOpo1B.js +5 -0
  249. package/dist/railroad-abnf-AHOZXSZD-DmH4lsDS.js +5 -0
  250. package/dist/railroad-ebnf-EBAXGLYW-CzK0md4e.js +5 -0
  251. package/dist/railroad-peg-LSFZ7HO6-DOklooKz.js +5 -0
  252. package/dist/railroadDiagram-AXF67PYL-BbUWbtf8.js +100 -0
  253. package/dist/{react-DA-nE2FX.js → react-DhGsCS90.js} +1 -1
  254. package/dist/{react-dom-BTJzcVJ9.js → react-dom-CmENFV8Q.js} +2 -2
  255. package/dist/{react-vega-BazDALhI.js → react-vega-zyfTF9SY.js} +8036 -4796
  256. package/dist/{requirementDiagram-UZGBJVZJ-KbVt8SPH.js → requirementDiagram-LRYGKXZP-CpoDmKSf.js} +137 -105
  257. package/dist/{reveal-component-BejXPHja.js → reveal-component-CYZAzXrV.js} +27 -28
  258. package/dist/rough.esm-lGyFQ0B-.js +1363 -0
  259. package/dist/rpm-Cm5K4RH9.js +5 -0
  260. package/dist/ruby-ArsuTozQ.js +4 -0
  261. package/dist/sankeyDiagram-W5VNT64P-D82rYiAG.js +942 -0
  262. package/dist/sas-DShligrE.js +4 -0
  263. package/dist/scheme-kDLirQL7.js +4 -0
  264. package/dist/sequenceDiagram-SI44F4Z6-DgVKU1s5.js +4281 -0
  265. package/dist/shell-CVQuWP_N.js +4 -0
  266. package/dist/sieve-BW-ePwnq.js +4 -0
  267. package/dist/sizeCapture-X5ZJPWSS-BQgxHTji.js +48 -0
  268. package/dist/smalltalk-DI4aAXxY.js +4 -0
  269. package/dist/sparql-B2sp0oiz.js +4 -0
  270. package/dist/{spec-CQKL_D3i.js → spec-BL1GSUUF.js} +4 -4
  271. package/dist/{src-DV3ha_nA.js → src-BwVZVGyf.js} +13 -22
  272. package/dist/{stateDiagram-FKZM4ZOC-ByOvQf2n.js → stateDiagram-OKZ733FA-Cc9BchXz.js} +61 -58
  273. package/dist/stateDiagram-v2-UEYNNEHI-Dd4Tuw6F.js +32 -0
  274. package/dist/{step-BqHnkgWE.js → step-BqVgkWtk.js} +1 -1
  275. package/dist/stex-D2rme5UG.js +4 -0
  276. package/dist/{strings-DIy9NAmg.js → strings-DMLVGXRo.js} +305 -305
  277. package/dist/style.css +1 -1
  278. package/dist/stylus-xxO-85eO.js +4 -0
  279. package/dist/swift-Ctg533nZ.js +4 -0
  280. package/dist/swimlanes-SLNWSIFB-BHvhO5uv.js +5564 -0
  281. package/dist/swimlanesDiagram-ULZ7WXOC-aI_zgQ8O.js +33 -0
  282. package/dist/{swiper-component-CEdAYjb7.js → swiper-component-Cx0cRWLk.js} +6 -6
  283. package/dist/tcl-phm9c5Nd.js +4 -0
  284. package/dist/textile-CphjAg90.js +4 -0
  285. package/dist/{time-Bb4A7I6a.js → time-DAJu9fnj.js} +4 -4
  286. package/dist/timeline-definition-Z64GVDOM-BAHuDYyA.js +1107 -0
  287. package/dist/{timer-BpI_FKSA.js → timer-aIIabkbI.js} +1 -1
  288. package/dist/{toDate-CqhBWjvO.js → toDate-BGM7kFtQ.js} +6 -6
  289. package/dist/toml-BUuMK772.js +4 -0
  290. package/dist/{tooltip-f-qR0iUx.js → tooltip-BtUxZT5h.js} +7 -7
  291. package/dist/treeView-QDETBFTQ-DsLN_c8p.js +5 -0
  292. package/dist/{treemap-GDKQZRPO-SDux0AV8.js → treemap-6X3UGDF4-K1bi3LJm.js} +2 -3
  293. package/dist/troff-lCtc05A3.js +4 -0
  294. package/dist/ttcn-CcykzBcW.js +4 -0
  295. package/dist/ttcn-cfg-C-XYdqpE.js +4 -0
  296. package/dist/turtle-CpfVZs8G.js +4 -0
  297. package/dist/{types-DicH9Oi0.js → types-DT8UHI5w.js} +1 -1
  298. package/dist/{use-vega-container-remeasure-DGNrIQSk.js → use-vega-container-remeasure-B7OD7yUY.js} +3 -3
  299. package/dist/{useAsyncData-CYOQb1EW.js → useAsyncData-CDcbh-Qv.js} +5 -5
  300. package/dist/{useDateFormatter-Bt2qr_XS.js → useDateFormatter-B_vTzxpm.js} +4 -4
  301. package/dist/{useDeepCompareMemoize-CSHQeQEI.js → useDeepCompareMemoize-Bj6QvwiG.js} +3 -3
  302. package/dist/{useIframeCapabilities-kA09ykNq.js → useIframeCapabilities-CxuXXwjj.js} +4 -4
  303. package/dist/{useLifecycle-CMJGqBaY.js → useLifecycle-Bw4wRj_O.js} +7 -7
  304. package/dist/{useTheme-DYfby65G.js → useTheme-BzEXeAR5.js} +8 -7
  305. package/dist/vb-VOIzXwm9.js +4 -0
  306. package/dist/vbscript-D0WfcnVk.js +4 -0
  307. package/dist/{vega-component-C7nO5zcf.js → vega-component-CJug-VdR.js} +24 -24
  308. package/dist/{vega-embed-container-DAQAMjiO.js → vega-embed-container-BRjjqRGz.js} +9 -9
  309. package/dist/{vega-loader.browser-DmpxCJqx.js → vega-loader.browser-CGb-2Kwi.js} +106 -113
  310. package/dist/velocity-CCrc5n-0.js +4 -0
  311. package/dist/vennDiagram-T6HMQDX7-CTyzMewS.js +1913 -0
  312. package/dist/verilog-BLFhaDBH.js +4 -0
  313. package/dist/vhdl-DjuqPE9b.js +4 -0
  314. package/dist/wardley-OPB4EBWU-CP99MvU1.js +5 -0
  315. package/dist/wardleyDiagram-T6FBY63Y-vcno_rbk.js +669 -0
  316. package/dist/webidl-Cc7RrfeK.js +4 -0
  317. package/dist/xquery-BiCRLnNG.js +4 -0
  318. package/dist/{xychartDiagram-PRI3JC2R-BSkNxYNw.js → xychartDiagram-ELKLHX3M-DyFDERhM.js} +417 -353
  319. package/dist/yacas-CWcjav-O.js +4 -0
  320. package/dist/z80-DpYS2lE7.js +4 -0
  321. package/dist/{zod-BUcyXSdR.js → zod-BFY2SnzC.js} +42 -43
  322. package/package.json +7 -7
  323. package/src/__mocks__/requests.ts +5 -0
  324. package/src/components/ai/ai-model-dropdown.tsx +2 -2
  325. package/src/components/app-config/user-config-form.tsx +26 -0
  326. package/src/components/chat/__tests__/capabilities-popover.test.tsx +38 -0
  327. package/src/components/chat/__tests__/chat-abort.test.ts +51 -0
  328. package/src/components/chat/__tests__/use-chat-controller-id.test.tsx +39 -0
  329. package/src/components/chat/capabilities-popover.tsx +68 -0
  330. package/src/components/chat/chat-abort.ts +44 -0
  331. package/src/components/chat/chat-display.tsx +17 -0
  332. package/src/components/chat/chat-panel.tsx +107 -50
  333. package/src/components/chat/chat-utils.ts +1 -1
  334. package/src/components/chat/use-chat-controller-id.ts +24 -0
  335. package/src/components/data-table/charts/__tests__/schemas.test.ts +35 -0
  336. package/src/components/data-table/charts/schemas.ts +5 -2
  337. package/src/components/databases/icons/huggingface.svg +8 -0
  338. package/src/components/datasets/__tests__/icons.test.ts +21 -0
  339. package/src/components/datasets/icons.tsx +10 -0
  340. package/src/components/datasources/__tests__/components.test.tsx +29 -0
  341. package/src/components/datasources/components.tsx +8 -3
  342. package/src/components/editor/actions/export-dialog/__tests__/export-dialog.test.tsx +35 -0
  343. package/src/components/editor/actions/export-dialog/__tests__/state.test.ts +61 -0
  344. package/src/components/editor/actions/export-dialog/export-command.ts +4 -9
  345. package/src/components/editor/actions/export-dialog/format-notice.tsx +28 -0
  346. package/src/components/editor/actions/export-dialog/state.ts +23 -5
  347. package/src/components/editor/actions/export-dialog/use-export-dialog.ts +3 -13
  348. package/src/components/editor/actions/useConfigActions.tsx +24 -0
  349. package/src/components/editor/ai/add-cell-with-ai.tsx +2 -2
  350. package/src/components/editor/ai/ai-completion-editor.tsx +2 -2
  351. package/src/components/editor/chrome/panels/outline/__tests__/useActiveOutline.test.ts +26 -0
  352. package/src/components/editor/chrome/wrapper/useOpenAiAssistant.ts +2 -2
  353. package/src/components/editor/code/__tests__/readonly-python-code.test.tsx +114 -2
  354. package/src/components/editor/connections/storage/__tests__/__snapshots__/as-code.test.ts.snap +14 -0
  355. package/src/components/editor/connections/storage/__tests__/as-code.test.ts +20 -0
  356. package/src/components/editor/connections/storage/add-storage-form.tsx +10 -0
  357. package/src/components/editor/connections/storage/as-code.ts +19 -1
  358. package/src/components/editor/connections/storage/schemas.ts +19 -0
  359. package/src/components/storage/__tests__/storage-snippets.test.ts +88 -0
  360. package/src/components/storage/components.tsx +2 -0
  361. package/src/components/storage/storage-snippets.ts +58 -0
  362. package/src/core/__tests__/mode.test.ts +85 -0
  363. package/src/core/ai/__tests__/config.test.tsx +96 -0
  364. package/src/core/ai/config.ts +16 -22
  365. package/src/core/ai/constants.ts +7 -0
  366. package/src/core/ai/staged-cells.ts +3 -0
  367. package/src/core/ai/state.ts +10 -0
  368. package/src/core/codemirror/__tests__/setup.test.ts +1 -1
  369. package/src/core/codemirror/cm.ts +2 -2
  370. package/src/core/codemirror/code-lens/__tests__/extension.test.ts +85 -6
  371. package/src/core/codemirror/code-lens/extension.ts +144 -47
  372. package/src/core/codemirror/find-replace/search-highlight.ts +8 -3
  373. package/src/core/codemirror/language/languages/sql/__tests__/renderers.test.tsx +44 -0
  374. package/src/core/codemirror/language/languages/sql/renderers.tsx +3 -3
  375. package/src/core/codemirror/theme/__tests__/light.test.ts +59 -123
  376. package/src/core/codemirror/theme/dark.ts +6 -5
  377. package/src/core/codemirror/theme/light.ts +6 -4
  378. package/src/core/config/__tests__/config-schema.test.ts +2 -0
  379. package/src/core/config/config-schema.ts +1 -0
  380. package/src/core/config/feature-flag.tsx +0 -2
  381. package/src/core/dom/outline.ts +25 -2
  382. package/src/core/hotkeys/hotkeys.ts +2 -0
  383. package/src/core/mode.ts +11 -9
  384. package/src/core/network/__tests__/api.test.ts +132 -17
  385. package/src/core/network/__tests__/export-filename.test.ts +43 -0
  386. package/src/core/network/__tests__/requests-lazy.test.ts +1 -0
  387. package/src/core/network/api.ts +47 -12
  388. package/src/core/network/export-filename.ts +37 -0
  389. package/src/core/network/markdown-export.ts +19 -0
  390. package/src/core/network/requests-network.ts +29 -5
  391. package/src/core/network/types.ts +4 -0
  392. package/src/core/storage/types.ts +1 -0
  393. package/src/css/app/codemirror.css +11 -7
  394. package/src/css/globals.css +8 -0
  395. package/src/plugins/impl/DataEditorPlugin.tsx +2 -9
  396. package/src/plugins/impl/__tests__/DataEditorPlugin.test.ts +18 -0
  397. package/src/plugins/impl/chat/chat-ui.tsx +51 -3
  398. package/src/plugins/impl/data-frames/__tests__/schema.test.ts +30 -0
  399. package/src/plugins/impl/data-frames/schema.ts +4 -1
  400. package/src/plugins/impl/image-comparison/ImageComparisonComponent.tsx +20 -1
  401. package/src/plugins/impl/image-comparison/__tests__/ImageComparisonComponent.test.tsx +58 -0
  402. package/src/stories/theme.stories.tsx +71 -1
  403. package/dist/_baseUniq-B_2Hw7zG.js +0 -380
  404. package/dist/apl-e1B5LPEL.js +0 -4
  405. package/dist/architecture-7HQA4BMR-DHUrQjL4.js +0 -6
  406. package/dist/asciiarmor-B-gwgesP.js +0 -4
  407. package/dist/asn1-DF2ckRB4.js +0 -4
  408. package/dist/assets/__vite-browser-external-DltVXDv7.js +0 -1
  409. package/dist/blockDiagram-VD42YOAC-CIOjvxeD.js +0 -3131
  410. package/dist/brainfuck-4G-7_gq_.js +0 -4
  411. package/dist/chat-ui-DsZJj75A.js +0 -8369
  412. package/dist/chunk-55IACEB6-7h71GwyW.js +0 -8
  413. package/dist/chunk-ABZYJK2D-BxBDji1u.js +0 -2438
  414. package/dist/chunk-BNovOVIE.js +0 -28
  415. package/dist/chunk-CVBHYZKI-CwazXVlJ.js +0 -13
  416. package/dist/chunk-DR5Q36YT-5Yp2GWwR.js +0 -137
  417. package/dist/chunk-EXTU4WIE-BQPBhApE.js +0 -10
  418. package/dist/chunk-JZLCHNYA-DWIR9m5O.js +0 -4901
  419. package/dist/chunk-N4CR4FBY-Bw2HcMNc.js +0 -65
  420. package/dist/chunk-QXUST7PY-DtC2t9Mk.js +0 -498
  421. package/dist/chunk-TCCFYFTB-DPWJa9zL.js +0 -13948
  422. package/dist/chunk-TZMSLE5B-BzSHcq-K.js +0 -63
  423. package/dist/classDiagram-2ON5EDUG-BiQPjMNY.js +0 -30
  424. package/dist/classDiagram-v2-WZHVMYZB-YHdR8fqM.js +0 -30
  425. package/dist/clojure-CUybM11R.js +0 -4
  426. package/dist/clone-Q4Fqwn6q.js +0 -9
  427. package/dist/cmake-BPjGcuDL.js +0 -4
  428. package/dist/cobol-BETk_nb6.js +0 -4
  429. package/dist/coffeescript-CManZxXL.js +0 -4
  430. package/dist/commonlisp-DWkn7GW8.js +0 -4
  431. package/dist/crystal-CCbg5EUH.js +0 -4
  432. package/dist/css-By8eo-XS.js +0 -4
  433. package/dist/cypher-DwfHg3nP.js +0 -4
  434. package/dist/d-Brs1wNbw.js +0 -4
  435. package/dist/dagre-6UL2VRFP-DpYjBqQs.js +0 -296
  436. package/dist/diagram-QEK2KX5R-DVlUOgs1.js +0 -228
  437. package/dist/diff-DJIRmJ1g.js +0 -4
  438. package/dist/dist-5o9uz19x.js +0 -5
  439. package/dist/dist-BpDH0DEP.js +0 -5
  440. package/dist/dist-BpXhbQXO.js +0 -8
  441. package/dist/dist-ByadAk_L.js +0 -5
  442. package/dist/dist-CK0g7JvP.js +0 -8
  443. package/dist/dist-CfzCtiq2.js +0 -5
  444. package/dist/dist-D8JtVFrW.js +0 -8
  445. package/dist/dist-DK2Oocpu.js +0 -6
  446. package/dist/dist-DnSu977r.js +0 -5
  447. package/dist/dist-UmxJm6sW.js +0 -8
  448. package/dist/dist-aYSBQSyM.js +0 -5
  449. package/dist/dist-kkZ1Ztlh.js +0 -6
  450. package/dist/dist-ngPczwNi.js +0 -5
  451. package/dist/dist-wQRyxyTV.js +0 -5
  452. package/dist/dtd-Dyiazv4N.js +0 -4
  453. package/dist/dylan-D8Fcw7NA.js +0 -4
  454. package/dist/ecl-CjKp8Vii.js +0 -4
  455. package/dist/eiffel-K9ViOX5r.js +0 -4
  456. package/dist/elm-B5NVtRco.js +0 -4
  457. package/dist/erlang-BnLzgk7R.js +0 -4
  458. package/dist/factor-C7f9Jz5R.js +0 -4
  459. package/dist/flatten-Bbw7g6-K.js +0 -8
  460. package/dist/forth-rGM8jLao.js +0 -4
  461. package/dist/fortran-B3acSe0i.js +0 -4
  462. package/dist/ganttDiagram-JELNMOA3-CXXCN7LN.js +0 -2170
  463. package/dist/gas-Bb1Vmv_N.js +0 -4
  464. package/dist/gherkin-C9Lyidgd.js +0 -4
  465. package/dist/gitGraphDiagram-V2S2FVAM-BOlkMSqK.js +0 -652
  466. package/dist/graphlib-Ns7y5crs.js +0 -359
  467. package/dist/groovy-DQk6XcGH.js +0 -4
  468. package/dist/hasIn-Deg7jl_j.js +0 -108
  469. package/dist/haskell-mV0Vw9gv.js +0 -4
  470. package/dist/haxe-DqxN89zH.js +0 -5
  471. package/dist/idl-ya8W561J.js +0 -4
  472. package/dist/infoDiagram-HS3SLOUP-D3TyKnL_.js +0 -30
  473. package/dist/javascript-CgqgptVu.js +0 -4
  474. package/dist/julia-CFQ-HusI.js +0 -4
  475. package/dist/livescript-D__3TmDo.js +0 -4
  476. package/dist/lua-Bytcgj_W.js +0 -4
  477. package/dist/main-B1Jo_8pC.js +0 -4321
  478. package/dist/mathematica-DJhvVKvl.js +0 -4
  479. package/dist/mbox-IGHPCjfR.js +0 -4
  480. package/dist/memoize-BOtf2yFf.js +0 -17
  481. package/dist/merge-Be1CqGnU.js +0 -222
  482. package/dist/mermaid-4DMBBIKO-FXbOziy9.js +0 -6
  483. package/dist/mermaid-hv6IckVw.js +0 -1100
  484. package/dist/mermaid-parser.core-DoivvxPd.js +0 -54
  485. package/dist/min-Dtgc8txR.js +0 -38
  486. package/dist/mirc-tcwvVugm.js +0 -4
  487. package/dist/mllike-Dx91i62r.js +0 -6
  488. package/dist/modelica-_SRt-yU5.js +0 -4
  489. package/dist/mscgen-GZrGS9gt.js +0 -6
  490. package/dist/mumps-Cv3ygyod.js +0 -4
  491. package/dist/nsis-BU7GeGbI.js +0 -4
  492. package/dist/ntriples-CL-FCYXb.js +0 -4
  493. package/dist/octave-Dc6_3DIu.js +0 -4
  494. package/dist/oz-DpUAJCXf.js +0 -4
  495. package/dist/pascal-B17mncXs.js +0 -4
  496. package/dist/perl-BTpK97q9.js +0 -4
  497. package/dist/pick-D1Qo8s2C.js +0 -43
  498. package/dist/pieDiagram-ADFJNKIX-JvXG_6hk.js +0 -170
  499. package/dist/pig-CFb638Ap.js +0 -4
  500. package/dist/powershell-Cxo-_2A5.js +0 -4
  501. package/dist/properties-BPgT1xTB.js +0 -4
  502. package/dist/protobuf-BgHBaIIK.js +0 -4
  503. package/dist/pug-25-oS0SG.js +0 -4
  504. package/dist/puppet-DarIr20S.js +0 -4
  505. package/dist/python-BqmOsBsi.js +0 -4
  506. package/dist/q-D3QJCTup.js +0 -4
  507. package/dist/r-Cz_yBX4z.js +0 -4
  508. package/dist/rpm-DGOtYwAI.js +0 -5
  509. package/dist/ruby-DBZu4rPc.js +0 -4
  510. package/dist/sankeyDiagram-TZEHDZUN-DgkF38jx.js +0 -892
  511. package/dist/sas-Dd1D9qTq.js +0 -4
  512. package/dist/scheme-BmDjvTHX.js +0 -4
  513. package/dist/sequenceDiagram-WL72ISMW-BDmx9n95.js +0 -3652
  514. package/dist/shell-BL8zFSaj.js +0 -4
  515. package/dist/sieve-BAx2WqUP.js +0 -4
  516. package/dist/smalltalk-CYRzF7VV.js +0 -4
  517. package/dist/sparql-YWaDRO4A.js +0 -4
  518. package/dist/stateDiagram-v2-4FDKWEC3-C3xqeavR.js +0 -29
  519. package/dist/stex-B5O-env2.js +0 -4
  520. package/dist/stylus-lYsyLFc1.js +0 -4
  521. package/dist/swift-ClQz9z1n.js +0 -4
  522. package/dist/tcl-B3jhsfqY.js +0 -4
  523. package/dist/textile-Cb1Dw7Aq.js +0 -4
  524. package/dist/timeline-definition-IT6M3QCI-CkD_trIn.js +0 -856
  525. package/dist/toml-nHZhetdO.js +0 -4
  526. package/dist/troff-DuJAGWKH.js +0 -4
  527. package/dist/ttcn-BxrcwP21.js +0 -4
  528. package/dist/ttcn-cfg-BAg_9dcc.js +0 -4
  529. package/dist/turtle-zCq949as.js +0 -4
  530. package/dist/vb-De5hElus.js +0 -4
  531. package/dist/vbscript-Cypcpv4F.js +0 -4
  532. package/dist/velocity-Di7l-yhe.js +0 -4
  533. package/dist/verilog-Bzi-S3g2.js +0 -4
  534. package/dist/vhdl-B0ZZITaW.js +0 -4
  535. package/dist/webidl-0sviiRcN.js +0 -4
  536. package/dist/xquery-B4qMVWaB.js +0 -4
  537. package/dist/yacas-Jt25Fuv8.js +0 -4
  538. package/dist/z80-CrcbYzmp.js +0 -4
  539. /package/dist/{apl-99A7dLQe.js → apl-CMUKiT2b.js} +0 -0
  540. /package/dist/{array-O78LT16Y.js → array-CEIRxyh3.js} +0 -0
  541. /package/dist/{asciiarmor-DLEhpFDx.js → asciiarmor-C_r6K6db.js} +0 -0
  542. /package/dist/{asn1-CMrcTsT4.js → asn1-DnlnCQTu.js} +0 -0
  543. /package/dist/{asterisk-CqykImq7.js → asterisk-DaVJJDnV.js} +0 -0
  544. /package/dist/{brainfuck-ChPt5yBe.js → brainfuck-CtQoQVkV.js} +0 -0
  545. /package/dist/{clike-CE0fXfM_.js → clike-CIAs0ABt.js} +0 -0
  546. /package/dist/{clojure-QkBEMU-g.js → clojure-C6tKQYjD.js} +0 -0
  547. /package/dist/{cmake-CU1jX7Mo.js → cmake-D-nfcg14.js} +0 -0
  548. /package/dist/{cobol-DMOKzzky.js → cobol-DYTC58p9.js} +0 -0
  549. /package/dist/{coffeescript-DjnjLyfk.js → coffeescript-DctDWA58.js} +0 -0
  550. /package/dist/{colors-DmiH1bIH.js → colors-DR_aHfmQ.js} +0 -0
  551. /package/dist/{common-keywords-D3nPJNQP.js → common-keywords-FBrXPTcz.js} +0 -0
  552. /package/dist/{commonlisp-CYd9iOSe.js → commonlisp-BmvTqU5y.js} +0 -0
  553. /package/dist/{crystal-Dy55yoYG.js → crystal-BPIK2UMa.js} +0 -0
  554. /package/dist/{css-CNU8w3HJ.js → css-CDo_Lwzn.js} +0 -0
  555. /package/dist/{cypher-q47DGzK7.js → cypher-KztbD63v.js} +0 -0
  556. /package/dist/{d-jEkaLvxX.js → d-HXBWOoe9.js} +0 -0
  557. /package/dist/{defaultLocale-DoeErsX2.js → defaultLocale-DMZFeDB8.js} +0 -0
  558. /package/dist/{diff-vb2-unFN.js → diff-B9rWZH0m.js} +0 -0
  559. /package/dist/{dtd-C9kR-bXa.js → dtd-LtAMP5y8.js} +0 -0
  560. /package/dist/{duckdb-keywords-B6HYCMOT.js → duckdb-keywords-CvJhR_Yd.js} +0 -0
  561. /package/dist/{dylan-BLckrK-V.js → dylan-DXMK92pf.js} +0 -0
  562. /package/dist/{ebnf-Cnp3L9jg.js → ebnf-2D4Ctp3y.js} +0 -0
  563. /package/dist/{ecl-CEsf6XVg.js → ecl-Dqq8ser2.js} +0 -0
  564. /package/dist/{eiffel-2KGZNzx6.js → eiffel-ChExWBDx.js} +0 -0
  565. /package/dist/{elm-D2s3K5wF.js → elm-BMBz2xbZ.js} +0 -0
  566. /package/dist/{emotion-is-prop-valid.esm-DdVSF4FD.js → emotion-is-prop-valid.esm-_z-EwK5u.js} +0 -0
  567. /package/dist/{erlang-0PMFOndk.js → erlang-CGSDzg9P.js} +0 -0
  568. /package/dist/{fcl-D9nccAWI.js → fcl-Ccj8Z5Xd.js} +0 -0
  569. /package/dist/{forth-DG89iUsu.js → forth-vTkfR0aY.js} +0 -0
  570. /package/dist/{fortran-ytKsAVvu.js → fortran-CF4LAVFn.js} +0 -0
  571. /package/dist/{gas-Cg2Fm0N2.js → gas-mMFbQ2x4.js} +0 -0
  572. /package/dist/{gherkin-B87FEnZ-.js → gherkin-DLS1q0XM.js} +0 -0
  573. /package/dist/{groovy-Dcs08AWD.js → groovy-Zt6CNPxV.js} +0 -0
  574. /package/dist/{haskell-cwkOuhx6.js → haskell-kVOgzpVy.js} +0 -0
  575. /package/dist/{haxe-DWEo4q10.js → haxe-Bo21F6gc.js} +0 -0
  576. /package/dist/{http-B8jdG64J.js → http-_DVAYWoR.js} +0 -0
  577. /package/dist/{idl-WWQwDcRV.js → idl-B865GSM-.js} +0 -0
  578. /package/dist/{init-DNBbYZd_.js → init-TaqZJsBY.js} +0 -0
  579. /package/dist/{invariant-wRzNXIsJ.js → invariant-hOqqBz8A.js} +0 -0
  580. /package/dist/{javascript-BeR74dxD.js → javascript-CSLuHpxZ.js} +0 -0
  581. /package/dist/{julia-UlvCUYGL.js → julia-BCOLeQif.js} +0 -0
  582. /package/dist/{livescript-GPmFcmYV.js → livescript-DqUzLZFs.js} +0 -0
  583. /package/dist/{lua-DYoT_0zM.js → lua-D0ciLwkO.js} +0 -0
  584. /package/dist/{math-CBNc2Ib0.js → math-CTnb-N1W.js} +0 -0
  585. /package/dist/{mathematica-DSFIQlbG.js → mathematica-DujD1RDf.js} +0 -0
  586. /package/dist/{mbox-ej8lFMdL.js → mbox-8OkSQMDn.js} +0 -0
  587. /package/dist/{mirc-CAdIdvHQ.js → mirc-D47x8yRQ.js} +0 -0
  588. /package/dist/{mllike-CjTB1lHF.js → mllike-Dcfw-g6D.js} +0 -0
  589. /package/dist/{modelica-BB68FYMa.js → modelica-BHtr9gKR.js} +0 -0
  590. /package/dist/{mscgen-BkbzgGGI.js → mscgen-uZedQc_A.js} +0 -0
  591. /package/dist/{mumps-Cu-28E9F.js → mumps-Bc9QS1-K.js} +0 -0
  592. /package/dist/{nginx-C1ofKPst.js → nginx-DasThI7R.js} +0 -0
  593. /package/dist/{ntriples-D9cQiZxZ.js → ntriples-Clpn9Mrg.js} +0 -0
  594. /package/dist/{objects-De59twF-.js → objects-UzwQd5gx.js} +0 -0
  595. /package/dist/{octave-BvtAnPX0.js → octave-DA2esRWi.js} +0 -0
  596. /package/dist/{oz-COaVHk2E.js → oz-D8i-brWx.js} +0 -0
  597. /package/dist/{pascal-BFpqVD2x.js → pascal-Dt1a0CeN.js} +0 -0
  598. /package/dist/{path-DwWbhZFI.js → path-7gr7eZmp.js} +0 -0
  599. /package/dist/{perl-DaiORxHP.js → perl-CXy9EfRp.js} +0 -0
  600. /package/dist/{pig-DFzRhmsF.js → pig-DnXnrjQg.js} +0 -0
  601. /package/dist/{powershell-BG2LQNKN.js → powershell-BYE6u-Qk.js} +0 -0
  602. /package/dist/{properties-CqJJR5QY.js → properties-DlhyusaK.js} +0 -0
  603. /package/dist/{protobuf-WwDYV1yY.js → protobuf-DoMSrsPi.js} +0 -0
  604. /package/dist/{puppet-QNY3w_uN.js → puppet-DGi4idFA.js} +0 -0
  605. /package/dist/{python-4QrQ3Ugi.js → python-CYhALYh0.js} +0 -0
  606. /package/dist/{q-DhwXuxE2.js → q-Cs_qWJkU.js} +0 -0
  607. /package/dist/{r-Df-nkR25.js → r-DWJSQl1c.js} +0 -0
  608. /package/dist/{range-BOiA8qqU.js → range-Bieq5MNc.js} +0 -0
  609. /package/dist/{rpm-Cokue07s.js → rpm-DIip1m0n.js} +0 -0
  610. /package/dist/{ruby-DrYcL3qF.js → ruby-NgZGoa7Q.js} +0 -0
  611. /package/dist/{sas-CoiPirA5.js → sas-DEKzCzM2.js} +0 -0
  612. /package/dist/{scheme-CwFLjzHv.js → scheme-CBrGar2n.js} +0 -0
  613. /package/dist/{semaphore-C8rmHdhj.js → semaphore-P832H4YT.js} +0 -0
  614. /package/dist/{shell-BFV-R24I.js → shell-D7XFPOM_.js} +0 -0
  615. /package/dist/{sieve-CxwXF5T9.js → sieve-BOxOVQ18.js} +0 -0
  616. /package/dist/{simple-mode-DTaJtKPt.js → simple-mode-D-FXBgPn.js} +0 -0
  617. /package/dist/{smalltalk-QivVOCtX.js → smalltalk-DYK-HkUK.js} +0 -0
  618. /package/dist/{solr-BLvysN-c.js → solr-RZ9uTl59.js} +0 -0
  619. /package/dist/{sparql-nKsFk8j7.js → sparql-CU1uk9Py.js} +0 -0
  620. /package/dist/{spreadsheet-BWc8C2FT.js → spreadsheet-BNNUNXA2.js} +0 -0
  621. /package/dist/{sql-CWfUjlV1.js → sql-B4x8IkwU.js} +0 -0
  622. /package/dist/{stex-DtMAhV4-.js → stex-DIvyJfNO.js} +0 -0
  623. /package/dist/{stylus-BLKQAycn.js → stylus-BokZhKWB.js} +0 -0
  624. /package/dist/{swift-CJoKqiKj.js → swift-TlA42tbT.js} +0 -0
  625. /package/dist/{tcl-YTeYFNUc.js → tcl-C-m7N_9k.js} +0 -0
  626. /package/dist/{textile-C6rKQqMQ.js → textile-BWOWG894.js} +0 -0
  627. /package/dist/{tiddlywiki-ZXwTHGNT.js → tiddlywiki-DI0mF2WJ.js} +0 -0
  628. /package/dist/{tiki-C628O_u4.js → tiki-2HU6XLLn.js} +0 -0
  629. /package/dist/{toml-DxlPGbRy.js → toml-GapOS-6U.js} +0 -0
  630. /package/dist/{treemap-DY3NBr79.js → treemap-CQJ0bIDy.js} +0 -0
  631. /package/dist/{troff-DFCfH7Ku.js → troff-ChPXSGgg.js} +0 -0
  632. /package/dist/{ttcn-DAW-ERVP.js → ttcn-CGf_ktUb.js} +0 -0
  633. /package/dist/{ttcn-cfg-CpJ8b7EN.js → ttcn-cfg-E0kw_vEm.js} +0 -0
  634. /package/dist/{turtle-BneV2f8L.js → turtle-DDIYttZr.js} +0 -0
  635. /package/dist/{vb-D973Vxxh.js → vb-DsGz8YA-.js} +0 -0
  636. /package/dist/{vbscript-Dckaq3YO.js → vbscript-BfQcpKZn.js} +0 -0
  637. /package/dist/{velocity-DKty-GUC.js → velocity-BMi53hPb.js} +0 -0
  638. /package/dist/{verilog-aNaK_biA.js → verilog-B_WDxmCB.js} +0 -0
  639. /package/dist/{vhdl-CQuehnQy.js → vhdl-C52-TT0z.js} +0 -0
  640. /package/dist/{webidl-Bhg8vaMr.js → webidl-Cnphjlul.js} +0 -0
  641. /package/dist/{xquery-D2q16GaM.js → xquery-X_kWyOft.js} +0 -0
  642. /package/dist/{yacas-DHGOHnNa.js → yacas-Dpp9zAZ5.js} +0 -0
  643. /package/dist/{z80-BPhTmO22.js → z80-BZLZAthF.js} +0 -0
@@ -0,0 +1,4 @@
1
+ import { t as yacas } from "./yacas-Dpp9zAZ5.js";
2
+ export {
3
+ yacas
4
+ };
@@ -0,0 +1,4 @@
1
+ import { t as z80 } from "./z80-BZLZAthF.js";
2
+ export {
3
+ z80
4
+ };
@@ -1,9 +1,9 @@
1
- import { r as __export, s as __toESM } from "./chunk-BNovOVIE.js";
2
- import { c as useEventListener, p as useComposedRefs, u as createSlot } from "./button-BSm8IXRU.js";
3
- import { t as require_react } from "./react-DA-nE2FX.js";
4
- import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
5
- import { t as require_react_dom } from "./react-dom-BTJzcVJ9.js";
6
- import { t as require_jsx_runtime } from "./jsx-runtime-DebpN0FN.js";
1
+ import { o as __toESM, r as __export } from "./chunk-Bfp04NdC.js";
2
+ import { c as useEventListener, p as useComposedRefs, u as createSlot } from "./button-Dr2uAwhT.js";
3
+ import { t as require_react } from "./react-DhGsCS90.js";
4
+ import { t as require_compiler_runtime } from "./compiler-runtime-DsR6imPN.js";
5
+ import { t as require_react_dom } from "./react-dom-CmENFV8Q.js";
6
+ import { t as require_jsx_runtime } from "./jsx-runtime-Dp_oQwaf.js";
7
7
  var import_react = /* @__PURE__ */ __toESM(require_react(), 1), import_react_dom$1 = /* @__PURE__ */ __toESM(require_react_dom(), 1), import_jsx_runtime = /* @__PURE__ */ __toESM(require_jsx_runtime(), 1), Primitive = [
8
8
  "a",
9
9
  "button",
@@ -11758,77 +11758,76 @@ var external_exports = /* @__PURE__ */ __export({
11758
11758
  config(en_default());
11759
11759
  var zod_default = external_exports;
11760
11760
  export {
11761
- isInVscodeExtension as $,
11761
+ StyleNamespace as $,
11762
11762
  looseObject as A,
11763
- union as B,
11763
+ unknown as B,
11764
11764
  any as C,
11765
11765
  discriminatedUnion as D,
11766
11766
  custom as E,
11767
11767
  optional as F,
11768
- parse$1 as G,
11769
- safeParseAsync as H,
11768
+ parseAsync$1 as G,
11769
+ ZodError as H,
11770
11770
  record as I,
11771
- prettifyError as J,
11772
- parseAsync$1 as K,
11773
- strictObject as L,
11771
+ MAX_HEIGHT_OFFSET as J,
11772
+ $ZodError as K,
11773
+ string$1 as L,
11774
11774
  never as M,
11775
11775
  number$1 as N,
11776
11776
  lazy as O,
11777
11777
  object as P,
11778
- withSmartCollisionBoundary as Q,
11779
- string$1 as R,
11778
+ isInVscodeExtension as Q,
11779
+ tuple as R,
11780
11780
  _null as S,
11781
11781
  boolean$1 as T,
11782
- ZodError as U,
11783
- unknown as V,
11784
- toJSONSchema as W,
11785
- useFullScreenElement as X,
11786
- MAX_HEIGHT_OFFSET as Y,
11787
- withFullScreenAsRoot as Z,
11782
+ toJSONSchema as U,
11783
+ safeParseAsync as V,
11784
+ parse$1 as W,
11785
+ withFullScreenAsRoot as X,
11786
+ useFullScreenElement as Y,
11787
+ withSmartCollisionBoundary as Z,
11788
11788
  ZodString as _,
11789
- createContextScope as _t,
11789
+ Primitive as _t,
11790
11790
  ZodIssueCode as a,
11791
- Portal as at,
11791
+ FocusScope as at,
11792
11792
  _enum as b,
11793
11793
  ZodBoolean as c,
11794
- DismissableLayer as ct,
11794
+ Root as ct,
11795
11795
  ZodDiscriminatedUnion as d,
11796
- useId as dt,
11797
- StyleNamespace as et,
11796
+ Presence as dt,
11797
+ hideOthers as et,
11798
11798
  ZodEnum as f,
11799
- Presence as ft,
11799
+ useControllableState as ft,
11800
11800
  ZodOptional as g,
11801
- createContext2 as gt,
11801
+ createContextScope as gt,
11802
11802
  ZodObject as h,
11803
- composeEventHandlers as ht,
11803
+ createContext2 as ht,
11804
11804
  string as i,
11805
- useFocusGuards as it,
11805
+ Portal as it,
11806
11806
  nan as j,
11807
11807
  literal as k,
11808
11808
  ZodDate as l,
11809
- Root as lt,
11809
+ useCallbackRef$1 as lt,
11810
11810
  ZodNumber as m,
11811
- useLayoutEffect2 as mt,
11811
+ composeEventHandlers as mt,
11812
11812
  date as n,
11813
- Combination_default as nt,
11813
+ __awaiter as nt,
11814
11814
  ZodAny as o,
11815
- FocusScope as ot,
11815
+ Branch as ot,
11816
11816
  ZodLiteral as p,
11817
- useControllableState as pt,
11818
- $ZodError as q,
11817
+ useLayoutEffect2 as pt,
11818
+ prettifyError as q,
11819
11819
  number as r,
11820
- __awaiter as rt,
11820
+ useFocusGuards as rt,
11821
11821
  ZodArray as s,
11822
- Branch as st,
11822
+ DismissableLayer as st,
11823
11823
  zod_default as t,
11824
- hideOthers as tt,
11824
+ Combination_default as tt,
11825
11825
  ZodDefault as u,
11826
- useCallbackRef$1 as ut,
11826
+ useId as ut,
11827
11827
  ZodType as v,
11828
- Primitive as vt,
11828
+ dispatchDiscreteCustomEvent as vt,
11829
11829
  array as w,
11830
11830
  _instanceof as x,
11831
11831
  ZodUnion as y,
11832
- dispatchDiscreteCustomEvent as yt,
11833
- tuple as z
11832
+ union as z
11834
11833
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/islands",
3
- "version": "0.23.17-dev8",
3
+ "version": "0.24.0",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -21,7 +21,7 @@
21
21
  "./unstable_internal/*": "./src/*"
22
22
  },
23
23
  "dependencies": {
24
- "@ai-sdk/react": "^3.0.134",
24
+ "@ai-sdk/react": "^4.0.40",
25
25
  "@anywidget/types": "^0.4.0",
26
26
  "@codemirror/autocomplete": "^6.20.1",
27
27
  "@codemirror/commands": "^6.10.2",
@@ -92,7 +92,7 @@
92
92
  "@xterm/addon-web-links": "^0.12.0",
93
93
  "@xterm/xterm": "^5.5.0",
94
94
  "@zed-industries/agent-client-protocol": "^0.4.5",
95
- "ai": "^6.0.129",
95
+ "ai": "^7.0.37",
96
96
  "ansi_up": "^6.0.6",
97
97
  "class-variance-authority": "^0.7.1",
98
98
  "clsx": "^2.1.1",
@@ -195,7 +195,7 @@
195
195
  "@babel/preset-typescript": "^7.25.9",
196
196
  "@codecov/vite-plugin": "^1.9.1",
197
197
  "@csstools/postcss-light-dark-function": "^2.0.11",
198
- "@playwright/test": "^1.59.1",
198
+ "@playwright/test": "^1.62.1",
199
199
  "@storybook/addon-docs": "^10.3.5",
200
200
  "@storybook/addon-links": "^10.3.5",
201
201
  "@storybook/react-vite": "^10.3.5",
@@ -211,7 +211,7 @@
211
211
  "@types/react-dom": "^19.2.3",
212
212
  "@types/timestring": "^6.0.5",
213
213
  "@vitejs/plugin-react": "^5.2.0",
214
- "@vitest/coverage-v8": "3.2.4",
214
+ "@vitest/coverage-v8": "3.2.7",
215
215
  "babel-plugin-react-compiler": "19.1.0-rc.3",
216
216
  "blob-polyfill": "^7.0.20220408",
217
217
  "cross-env": "^7.0.3",
@@ -228,11 +228,11 @@
228
228
  "storybook": "^10.3.5",
229
229
  "stylelint": "^16.26.1",
230
230
  "stylelint-config-standard": "^36.0.1",
231
- "tailwindcss": "^4.3.0",
231
+ "tailwindcss": "^4.3.3",
232
232
  "vega-typings": "^2.1.0",
233
233
  "vite": "npm:rolldown-vite@7.3.1",
234
234
  "vite-plugin-top-level-await": "^1.6.0",
235
235
  "vite-plugin-wasm": "^3.6.0",
236
- "vitest": "^3.2.4"
236
+ "vitest": "^3.2.7"
237
237
  }
238
238
  }
@@ -72,26 +72,31 @@ export const MockRequestClient = {
72
72
  format: "html",
73
73
  dependenciesAvailable: true,
74
74
  missingPackages: [],
75
+ missingSetup: [],
75
76
  },
76
77
  {
77
78
  format: "markdown",
78
79
  dependenciesAvailable: true,
79
80
  missingPackages: [],
81
+ missingSetup: [],
80
82
  },
81
83
  {
82
84
  format: "ipynb",
83
85
  dependenciesAvailable: true,
84
86
  missingPackages: [],
87
+ missingSetup: [],
85
88
  },
86
89
  {
87
90
  format: "pdf",
88
91
  dependenciesAvailable: true,
89
92
  missingPackages: [],
93
+ missingSetup: [],
90
94
  },
91
95
  {
92
96
  format: "script",
93
97
  dependenciesAvailable: true,
94
98
  missingPackages: [],
99
+ missingSetup: [],
95
100
  },
96
101
  ],
97
102
  }),
@@ -9,7 +9,7 @@ import {
9
9
  CircleHelpIcon,
10
10
  } from "lucide-react";
11
11
  import React from "react";
12
- import { type SupportedRole, useModelChange } from "@/core/ai/config";
12
+ import { type SupportedRole, useAIConfigActions } from "@/core/ai/config";
13
13
  import {
14
14
  AiModelId,
15
15
  isKnownAIProvider,
@@ -64,7 +64,7 @@ export const AIModelDropdown = ({
64
64
 
65
65
  const ai = useAtomValue(aiAtom);
66
66
  const completion = useAtomValue(completionAtom);
67
- const { saveModelChange } = useModelChange();
67
+ const { saveModelChange } = useAIConfigActions();
68
68
  const { handleClick } = useOpenSettingsToTab();
69
69
 
70
70
  // Only include autocompleteModel if copilot is set to "custom"
@@ -985,6 +985,32 @@ export const UserConfigForm: React.FC = () => {
985
985
  </div>
986
986
  )}
987
987
  />
988
+ <OverriddenFormField
989
+ control={form.control}
990
+ name="display.code_lens"
991
+ render={({ field, override }) => (
992
+ <div className="flex flex-col space-y-1">
993
+ <FormItem className={formItemClasses}>
994
+ <FormLabel>Code lens</FormLabel>
995
+ <FormControl>
996
+ <Checkbox
997
+ data-testid="code-lens-checkbox"
998
+ checked={override.value}
999
+ disabled={override.isOverridden}
1000
+ onCheckedChange={field.onChange}
1001
+ />
1002
+ </FormControl>
1003
+ <FormMessage />
1004
+ <IsOverridden override={override} />
1005
+ </FormItem>
1006
+
1007
+ <FormDescription>
1008
+ Shows inline icons in cell editors for datasources and
1009
+ storage buckets.
1010
+ </FormDescription>
1011
+ </div>
1012
+ )}
1013
+ />
988
1014
  </SettingGroup>
989
1015
  <SettingGroup title="Outputs">
990
1016
  <OverriddenFormField
@@ -0,0 +1,38 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ import { fireEvent, render, screen } from "@testing-library/react";
4
+ import { createStore, Provider } from "jotai";
5
+ import { describe, expect, it } from "vitest";
6
+ import { chatOptionsAtom } from "@/core/ai/state";
7
+ import { CapabilitiesPopover } from "../capabilities-popover";
8
+
9
+ describe("CapabilitiesPopover", () => {
10
+ it("updates ephemeral chat options", () => {
11
+ const store = createStore();
12
+
13
+ render(
14
+ <Provider store={store}>
15
+ <CapabilitiesPopover />
16
+ </Provider>,
17
+ );
18
+
19
+ const trigger = screen.getByRole("button", { name: "Capabilities" });
20
+ expect(trigger).not.toHaveAttribute("data-active");
21
+
22
+ fireEvent.click(trigger);
23
+ const webSearch = screen.getByRole("switch", { name: "Web search" });
24
+ expect(webSearch).not.toBeChecked();
25
+
26
+ fireEvent.click(webSearch);
27
+
28
+ expect(webSearch).toBeChecked();
29
+ expect(trigger).toHaveAttribute("data-active", "true");
30
+ expect(trigger).toHaveClass("bg-primary/15", "text-primary", "ring-1");
31
+ expect(trigger).toHaveAttribute(
32
+ "title",
33
+ "Capabilities (web search enabled)",
34
+ );
35
+ expect(store.get(chatOptionsAtom)).toEqual({ webSearch: true });
36
+ expect(createStore().get(chatOptionsAtom)).toEqual({ webSearch: false });
37
+ });
38
+ });
@@ -0,0 +1,51 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ import type { UIMessageChunk } from "ai";
4
+ import { describe, expect, it } from "vitest";
5
+ import {
6
+ describeChatAbortReason,
7
+ getAbortReasonFromChunk,
8
+ resolveChatAbortReason,
9
+ USER_CANCELLED_ABORT_REASON,
10
+ } from "../chat-abort";
11
+
12
+ describe("chat-abort", () => {
13
+ it("reads reason from abort chunks", () => {
14
+ const chunk: UIMessageChunk = {
15
+ type: "abort",
16
+ reason: USER_CANCELLED_ABORT_REASON,
17
+ };
18
+ expect(getAbortReasonFromChunk(chunk)).toBe(USER_CANCELLED_ABORT_REASON);
19
+ });
20
+
21
+ it("returns undefined for non-abort chunks", () => {
22
+ expect(
23
+ getAbortReasonFromChunk({ type: "text-delta", id: "1", delta: "hi" }),
24
+ ).toBeUndefined();
25
+ });
26
+
27
+ it("defaults client-side aborts to user_cancelled", () => {
28
+ expect(resolveChatAbortReason({ isAbort: true, streamReason: null })).toBe(
29
+ USER_CANCELLED_ABORT_REASON,
30
+ );
31
+ expect(resolveChatAbortReason({ isAbort: false })).toBeNull();
32
+ });
33
+
34
+ it("preserves stream abort reasons when present", () => {
35
+ expect(
36
+ resolveChatAbortReason({ isAbort: true, streamReason: "timeout" }),
37
+ ).toBe("timeout");
38
+ });
39
+
40
+ it("describes known and unknown abort reasons", () => {
41
+ expect(describeChatAbortReason(USER_CANCELLED_ABORT_REASON)).toBe(
42
+ "Generation stopped",
43
+ );
44
+ expect(describeChatAbortReason("timeout")).toBe(
45
+ "Generation stopped: timed out",
46
+ );
47
+ expect(describeChatAbortReason("provider_reset")).toBe(
48
+ "Generation stopped: provider_reset",
49
+ );
50
+ });
51
+ });
@@ -0,0 +1,39 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ import { act, renderHook } from "@testing-library/react";
4
+ import { describe, expect, it } from "vitest";
5
+ import type { ChatId } from "@/core/ai/state";
6
+ import { useChatControllerId } from "../use-chat-controller-id";
7
+
8
+ describe("useChatControllerId", () => {
9
+ it("creates a new ID when starting another unsaved chat", () => {
10
+ const activeChatId = "existing-chat" as ChatId;
11
+ const initialProps: { activeId: ChatId | undefined } = {
12
+ activeId: undefined,
13
+ };
14
+ const { result, rerender } = renderHook(
15
+ ({ activeId }: { activeId: ChatId | undefined }) =>
16
+ useChatControllerId(activeId),
17
+ { initialProps },
18
+ );
19
+
20
+ const initialDraftId = result.current.chatControllerId;
21
+ rerender({ activeId: activeChatId });
22
+
23
+ expect(result.current.chatControllerId).toBe(activeChatId);
24
+
25
+ act(() => result.current.renewDraftChatId());
26
+ rerender({ activeId: undefined });
27
+
28
+ expect(result.current.chatControllerId).not.toBe(initialDraftId);
29
+ });
30
+
31
+ it("renews the ID when the current chat is already unsaved", () => {
32
+ const { result } = renderHook(() => useChatControllerId(undefined));
33
+ const initialDraftId = result.current.chatControllerId;
34
+
35
+ act(() => result.current.renewDraftChatId());
36
+
37
+ expect(result.current.chatControllerId).not.toBe(initialDraftId);
38
+ });
39
+ });
@@ -0,0 +1,68 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ import { useAtom } from "jotai";
4
+ import { SlidersHorizontalIcon } from "lucide-react";
5
+ import type React from "react";
6
+ import { Button } from "@/components/ui/button";
7
+ import {
8
+ Popover,
9
+ PopoverContent,
10
+ PopoverTrigger,
11
+ } from "@/components/ui/popover";
12
+ import { ExternalLink } from "@/components/ui/links";
13
+ import { Switch } from "@/components/ui/switch";
14
+ import { chatOptionsAtom } from "@/core/ai/state";
15
+ import { cn } from "@/utils/cn";
16
+
17
+ export const CapabilitiesPopover: React.FC = () => {
18
+ const [chatOptions, setChatOptions] = useAtom(chatOptionsAtom);
19
+ const webSearchOn = chatOptions.webSearch;
20
+
21
+ return (
22
+ <Popover>
23
+ <PopoverTrigger asChild={true}>
24
+ <Button
25
+ aria-label="Capabilities"
26
+ title={
27
+ webSearchOn ? "Capabilities (web search enabled)" : "Capabilities"
28
+ }
29
+ data-active={webSearchOn || undefined}
30
+ variant="text"
31
+ size="icon"
32
+ className={cn(
33
+ "h-6 w-6 shrink-0 bg-muted hover:bg-muted/30",
34
+ webSearchOn &&
35
+ "bg-primary/15 text-primary ring-1 ring-primary/30 opacity-100 hover:bg-primary/20",
36
+ )}
37
+ >
38
+ <SlidersHorizontalIcon className="h-3.5 w-3.5" />
39
+ </Button>
40
+ </PopoverTrigger>
41
+ <PopoverContent className="w-76 p-3" align="start" side="top">
42
+ <label
43
+ htmlFor="web-search-toggle"
44
+ className="flex items-start justify-between gap-3 cursor-pointer"
45
+ >
46
+ <div className="flex flex-col gap-0.5">
47
+ <span className="text-sm font-semibold">Web search</span>
48
+ <span className="text-xs text-muted-foreground">
49
+ Search the web when the model supports it.{" "}
50
+ <ExternalLink href="https://docs.marimo.io/guides/editor_features/tools#web-search-and-fetch">
51
+ Learn more
52
+ </ExternalLink>
53
+ </span>
54
+ </div>
55
+ <Switch
56
+ id="web-search-toggle"
57
+ aria-label="Web search"
58
+ size="sm"
59
+ checked={webSearchOn}
60
+ onCheckedChange={(webSearch) =>
61
+ setChatOptions((options) => ({ ...options, webSearch }))
62
+ }
63
+ />
64
+ </label>
65
+ </PopoverContent>
66
+ </Popover>
67
+ );
68
+ };
@@ -0,0 +1,44 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ import type { UIMessageChunk } from "ai";
4
+
5
+ /** Matches pydantic-ai / marimo AbortChunk.reason for user Stop. */
6
+ export const USER_CANCELLED_ABORT_REASON = "user_cancelled";
7
+
8
+ /**
9
+ * Read an abort reason from a UI message stream chunk, if present.
10
+ */
11
+ export function getAbortReasonFromChunk(
12
+ chunk: UIMessageChunk,
13
+ ): string | undefined {
14
+ if (chunk.type !== "abort") {
15
+ return undefined;
16
+ }
17
+ return chunk.reason;
18
+ }
19
+
20
+ /**
21
+ * Resolve the abort reason for logging/UI. Client-side Stop often never
22
+ * receives a server AbortChunk (the fetch is aborted first), so default to
23
+ * user_cancelled when the turn ended as an abort.
24
+ */
25
+ export function resolveChatAbortReason(opts: {
26
+ isAbort: boolean;
27
+ streamReason?: string | null;
28
+ }): string | null {
29
+ if (!opts.isAbort) {
30
+ return null;
31
+ }
32
+ return opts.streamReason || USER_CANCELLED_ABORT_REASON;
33
+ }
34
+
35
+ export function describeChatAbortReason(reason: string): string {
36
+ switch (reason) {
37
+ case USER_CANCELLED_ABORT_REASON:
38
+ return "Generation stopped";
39
+ case "timeout":
40
+ return "Generation stopped: timed out";
41
+ default:
42
+ return `Generation stopped: ${reason}`;
43
+ }
44
+ }
@@ -92,6 +92,17 @@ export const renderUIMessage = ({
92
92
  );
93
93
  case "file":
94
94
  return <AttachmentRenderer attachment={part} key={index} />;
95
+ case "reasoning-file":
96
+ return (
97
+ <AttachmentRenderer
98
+ key={index}
99
+ attachment={{
100
+ type: "file",
101
+ mediaType: part.mediaType,
102
+ url: part.url,
103
+ }}
104
+ />
105
+ );
95
106
  case "dynamic-tool":
96
107
  return (
97
108
  <ToolCallView
@@ -128,6 +139,12 @@ export const renderUIMessage = ({
128
139
  href={part.url}
129
140
  />
130
141
  );
142
+ case "custom":
143
+ return (
144
+ <div key={index} className="text-sm text-muted-foreground">
145
+ {part.kind}
146
+ </div>
147
+ );
131
148
  case "step-start":
132
149
  return null;
133
150
  default: