@marimo-team/islands 0.25.3-dev34 → 0.25.3-dev349

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 (1055) hide show
  1. package/dist/{ConnectedDataExplorerComponent-7EaP9VWb.js → ConnectedDataExplorerComponent-xliyyXNO.js} +188 -212
  2. package/dist/{ErrorBoundary-CkPa08Bb.js → ErrorBoundary-kxPR3skp.js} +79 -85
  3. package/dist/{ImageComparisonComponent-uU8FSKZE.js → ImageComparisonComponent-CoiwlCwG.js} +20 -20
  4. package/dist/{Plot-DdYOe1UK.js → Plot-BHJLG4xm.js} +2474 -3107
  5. package/dist/_baseSet-Bd5zh2yg.js +327 -0
  6. package/dist/{abnfDiagram-VCTEODGH-z_OSynK8.js → abnfDiagram-VCTEODGH-Dl9Nrtbf.js} +5 -5
  7. package/dist/any-language-editor-CBHhdCC0.js +75 -0
  8. package/dist/{apl-GEW9-ZP1.js → apl-stFrI2NB.js} +1 -1
  9. package/dist/{arc-7ra3iNdN.js → arc-4W6H62B5.js} +1 -1
  10. package/dist/architecture-7GRP2DOG-GlkXha5_.js +2 -0
  11. package/dist/{architectureDiagram-5GKGNRK7-Cs8J8BZr.js → architectureDiagram-5GKGNRK7-DTg032fQ.js} +48 -64
  12. package/dist/{arrays-CN1djC4k.js → arrays-DoQ-AILx.js} +15 -27
  13. package/dist/{asciiarmor-BWNxzkG7.js → asciiarmor-DHwFuaIC.js} +1 -1
  14. package/dist/{asn1-Bcn2QutK.js → asn1-KIH4fwAq.js} +1 -1
  15. package/dist/assertNever-ie77PjMn.js +507 -0
  16. package/dist/assets/__vite-browser-external-Ci3vRqC9.js +1 -0
  17. package/dist/assets/worker-D9NGcZWK.js +171 -0
  18. package/dist/{blockDiagram-I7D4REHJ-Cg25UrxT.js → blockDiagram-I7D4REHJ-BoCyD5KO.js} +28 -39
  19. package/dist/{brainfuck-BQCYDheZ.js → brainfuck-UPAij4U9.js} +1 -1
  20. package/dist/{button-CvjkwdSk.js → button-qQhINE7z.js} +64 -64
  21. package/dist/{c4Diagram-7LVT6UL2-BxFgrnNV.js → c4Diagram-7LVT6UL2-DmcTtm4p.js} +8 -8
  22. package/dist/{capabilities-CQ5IjhzL.js → capabilities-DKqMqBzm.js} +2 -2
  23. package/dist/{channel-CPObtJXj.js → channel-B9eaiezW.js} +1 -1
  24. package/dist/{chat-ui-BeKQyQQI.js → chat-ui-BV0qyfru.js} +2551 -2390
  25. package/dist/{check-BMKBBrdc.js → check-DTIv5ZZ3.js} +1 -1
  26. package/dist/{chunk-4HAMMTFA-D4eFPyFh.js → chunk-4HAMMTFA-qKgadZwy.js} +6 -6
  27. package/dist/{chunk-75Z2AOVW-D7gxIs2Q.js → chunk-75Z2AOVW-76L6My3P.js} +4 -4
  28. package/dist/{chunk-YOKDWASO-DKplTrBY.js → chunk-7TTQLYRW-DBSfUUe5.js} +6253 -5835
  29. package/dist/{chunk-DU6HZSFF-BwiyaNpg.js → chunk-DU6HZSFF-4SDIhUTY.js} +14 -22
  30. package/dist/{chunk-F27PBJKO-ufseIn5y.js → chunk-F27PBJKO-COH2t-FO.js} +3 -3
  31. package/dist/{chunk-FOHPRMQF-BpYR8RqP.js → chunk-FOHPRMQF-ezmr_yWy.js} +49 -58
  32. package/dist/{chunk-GMAD6QVW-BhaJx0X3.js → chunk-GMAD6QVW-BJGF8QZL.js} +16 -75
  33. package/dist/{chunk-GVQU2GXP-Cwbt-lF0.js → chunk-GVQU2GXP-BkolpSXU.js} +3 -3
  34. package/dist/{chunk-IMKFNOWR-aoSFasqF.js → chunk-IMKFNOWR-CsFB-2LW.js} +8 -8
  35. package/dist/{chunk-L3NEJ4N5-n-zgIVSy.js → chunk-L3NEJ4N5-B-BFQp9t.js} +6 -6
  36. package/dist/{chunk-OSK3NFVY-DXa-Cxbn.js → chunk-OSK3NFVY-BzfZ4VBG.js} +8 -8
  37. package/dist/{chunk-P2QGCYS3-B_Zd3-X0.js → chunk-P2QGCYS3-DJApLVdt.js} +1 -1
  38. package/dist/{chunk-POPQ4Y6H-hYOXbYH_.js → chunk-POPQ4Y6H-BFSZel4w.js} +2 -2
  39. package/dist/{chunk-PWAF6VOD-CQw5qATZ.js → chunk-PWAF6VOD-CRu_RGP2.js} +2 -2
  40. package/dist/{chunk-SHT3W25Y-CMaybO3O.js → chunk-SHT3W25Y-ByuJHeBL.js} +10 -10
  41. package/dist/{chunk-SVP7TREG-BNBrTAw1.js → chunk-SVP7TREG-9oBZhbrr.js} +3 -3
  42. package/dist/{chunk-TICWLB2K-DXNxvUJn.js → chunk-TICWLB2K-Bx4m0cJ1.js} +10 -10
  43. package/dist/{chunk-XXDRQBXY-Dnl5VBqG.js → chunk-XXDRQBXY-BM-YIt-_.js} +1 -1
  44. package/dist/classDiagram-ZZMXUADV-Cms37-C9.js +30 -0
  45. package/dist/classDiagram-v2-VYDZK3BY-qAom4Bi7.js +30 -0
  46. package/dist/{clike-CxK9W55Z.js → clike-xU8sCVU1.js} +2 -6
  47. package/dist/{clojure-Dzcvwpxk.js → clojure-psoSEo36.js} +1 -1
  48. package/dist/{cmake-DYr-71zp.js → cmake-DDHBwlE7.js} +1 -1
  49. package/dist/{cobol-DC3g37Kq.js → cobol-C4qjDcIq.js} +1 -1
  50. package/dist/code-visibility-D8Fumu_H.js +130 -0
  51. package/dist/{coffeescript-C-eFwH5N.js → coffeescript-D6UgrGgo.js} +1 -1
  52. package/dist/{common-DCeV59yz.js → common-BwaJX-Um.js} +11323 -10613
  53. package/dist/{commonlisp-CyaNXrJR.js → commonlisp-B0ChVjnu.js} +1 -1
  54. package/dist/{compiler-runtime-CldRdSsv.js → compiler-runtime-C5KHtL5D.js} +3 -3
  55. package/dist/config-CvBnR945.js +618 -0
  56. package/dist/{copy-icon-BgUO8jsi.js → copy-icon-DmtNidSa.js} +21 -22
  57. package/dist/{cose-bilkent-JH36ORCC-_LyRKVqm.js → cose-bilkent-JH36ORCC-B_Oz4vMP.js} +58 -71
  58. package/dist/createReducer-BxBCTvKn.js +67 -0
  59. package/dist/{crystal-ih5ax5tQ.js → crystal-DZsc9Ue0.js} +1 -1
  60. package/dist/{css-CN_wP7_R.js → css-DkYRnQ9U.js} +1 -1
  61. package/dist/{cubic-OaEBhQPK.js → cubic-CA80xY_e.js} +6 -7
  62. package/dist/cynefin-OW5HDTMX-0-HehVvH.js +2 -0
  63. package/dist/{cynefinDiagram-5FMLGOSQ-DWHuKJs8.js → cynefinDiagram-5FMLGOSQ-BjJZwMEz.js} +5 -5
  64. package/dist/{cypher-CqGRcmZo.js → cypher-CpWPqgvy.js} +1 -1
  65. package/dist/{cytoscape.esm-jJhXJpLB.js → cytoscape.esm-BbeMznK5.js} +411 -512
  66. package/dist/{d-Cj0sOW2z.js → d-Bx2ggfYO.js} +1 -1
  67. package/dist/{dagre-BGSfXNEb.js → dagre-CpjuekF1.js} +550 -700
  68. package/dist/{dagre-GXQ25YYZ-DYLu-OCU.js → dagre-GXQ25YYZ-Bohu7_09.js} +14 -16
  69. package/dist/{data-grid-overlay-editor-DOGpF5cl.js → data-grid-overlay-editor-xN2CoaW7.js} +8 -8
  70. package/dist/{data-grid-types-0PJ-9N5n.js → data-grid-types-DIX_pCco.js} +2 -2
  71. package/dist/{debounce-C3jyATpc.js → debounce-DrhhziJv.js} +2 -2
  72. package/dist/{diagram-S7CK7UJ4-PwwcUOHP.js → diagram-S7CK7UJ4-Chl0n835.js} +7 -15
  73. package/dist/{diagram-UQ7AKVKN-CvJbL_IM.js → diagram-UQ7AKVKN-DHx8nzy7.js} +5 -5
  74. package/dist/{diagram-VSXAHHWV-BJWcVVJY.js → diagram-VSXAHHWV-LXjisZoM.js} +6 -6
  75. package/dist/{diagram-VX7I27RA-B5RkqnzN.js → diagram-VX7I27RA-CKdpv1U4.js} +7 -7
  76. package/dist/{diagram-Z3DM3KII-CyijwTR2.js → diagram-Z3DM3KII-sY-sI--2.js} +5 -5
  77. package/dist/{dialog-Cc479ZEH.js → dialog-Cqu5Hp5U.js} +32 -32
  78. package/dist/{diff-B_hUkiat.js → diff-DNXaJS8v.js} +1 -1
  79. package/dist/{dist-D6d86eNJ.js → dist-B-Id1kt3.js} +48 -47
  80. package/dist/{dist-DiDibOYr.js → dist-BDw9g6PC.js} +152 -151
  81. package/dist/{dist-diIx5qJW.js → dist-B_EswY8r.js} +33 -32
  82. package/dist/{dist-DoE4XJBC.js → dist-B_xgcU0N.js} +9800 -10654
  83. package/dist/{dist-CLdpGQVr.js → dist-BcGGwW1q.js} +119 -121
  84. package/dist/dist-BdZQUzPS.js +850 -0
  85. package/dist/{dist-CN_BeG2I.js → dist-Bj8s59mu.js} +59 -58
  86. package/dist/{dist-CkTTIdBe.js → dist-C3dYgyiI.js} +337 -337
  87. package/dist/{dist-PXYI_yuP.js → dist-C6ttp2Iy.js} +24 -23
  88. package/dist/{dist-DUAh96QY.js → dist-CB9MzCXv.js} +1 -1
  89. package/dist/{dist-CSbh1PNP.js → dist-CCYz0qJ2.js} +24 -23
  90. package/dist/{dist-BMQf5zIS.js → dist-CDjivQ67.js} +124 -123
  91. package/dist/{dist-D-wwqlzJ.js → dist-CNT4u03u.js} +159 -158
  92. package/dist/{dist-Lm-D-Vr6.js → dist-CiSkXlAO.js} +3 -3
  93. package/dist/{dist-F8Ep36rk.js → dist-DVVzH9mP.js} +60 -59
  94. package/dist/{dist-OR1OnN-y.js → dist-DlniJvh2.js} +32 -31
  95. package/dist/{dist-CSJ0MDRw.js → dist-Dq-hanx8.js} +57 -56
  96. package/dist/{dist-C8fAKSH1.js → dist-FakvNY2e.js} +54 -53
  97. package/dist/{dist-BuaRHxOc.js → dist-K-qmZv0f.js} +45 -44
  98. package/dist/{dist-Cg7gzw-a.js → dist-NPImE_g9.js} +79 -78
  99. package/dist/{dist-CN8zI-XC.js → dist-PKX4HaX5.js} +239 -239
  100. package/dist/{dist-CrSP_H1M.js → dist-U4WlxEDL.js} +243 -243
  101. package/dist/{dist-BK4Oj99o.js → dist-UKKHsqHo.js} +19 -18
  102. package/dist/{dist-Bvs24R_E.js → dist-VRN9rDqa.js} +32 -31
  103. package/dist/{dist-BorMD-uX.js → dist-f1h5p-fp.js} +76 -75
  104. package/dist/{dist-BLfKmR-l.js → dist-h8Te4SvD.js} +17 -16
  105. package/dist/{dist-DBtSl3sf.js → dist-ymIUQ4tH.js} +48 -50
  106. package/dist/dropdown-menu-DXEYk99S.js +5982 -0
  107. package/dist/{dtd-B8FGSWWe.js → dtd-D1YZQCVT.js} +1 -1
  108. package/dist/{dylan-DbIBYIrw.js → dylan-CxbG-PUm.js} +2 -2
  109. package/dist/{ebnfDiagram-PWID7BFC-DG90ELFp.js → ebnfDiagram-PWID7BFC-CD0P2xeH.js} +5 -5
  110. package/dist/{ecl-DBmkdWAd.js → ecl-DIXH6vul.js} +1 -1
  111. package/dist/{eiffel-CcWSDDzK.js → eiffel-D0de-eQr.js} +1 -1
  112. package/dist/{elm-MC-b8a6C.js → elm-DrQrn4VD.js} +1 -1
  113. package/dist/{erDiagram-RLTQ6QDP-FMo_SpyX.js → erDiagram-RLTQ6QDP-BaKQuYxC.js} +14 -14
  114. package/dist/{erlang-AdO1-xtV.js → erlang-2KpKpfC7.js} +1 -1
  115. package/dist/{error-banner-CFPHFw4h.js → error-banner-DUB_qUeL.js} +140 -140
  116. package/dist/error-entries-CTb_cxXY.js +2651 -0
  117. package/dist/{esm-G4Fhsgng.js → esm-DQtHTnHn.js} +640 -660
  118. package/dist/{esm-AMFssoNp.js → esm-Dc_RPXvZ.js} +335 -335
  119. package/dist/{esm-D2gTsXEV.js → esm-wKplZtOX.js} +580 -581
  120. package/dist/eventmodeling-NTZA5JFV-DoBvB4Lj.js +2 -0
  121. package/dist/{factor-Ys-13HOP.js → factor-Bwu3ZGOk.js} +1 -1
  122. package/dist/{feedback-button-HmgYHka9.js → feedback-button-C1UwtVjl.js} +105 -114
  123. package/dist/flowDiagram-HODETNUW-BcCpHh7-.js +15 -0
  124. package/dist/{formats-DRHUWwSK.js → formats-hF6fETr6.js} +9 -9
  125. package/dist/{forth-DiMuIXFe.js → forth-DYatDpr6.js} +2 -3
  126. package/dist/{fortran-hkrF2eM4.js → fortran-n8mcQPkL.js} +1 -1
  127. package/dist/{ganttDiagram-EL5Y4UJY-Dh_4cBJZ.js → ganttDiagram-EL5Y4UJY-YzTghq1V.js} +17 -17
  128. package/dist/{gas-DlhqN9k8.js → gas-BUZOHBVw.js} +1 -1
  129. package/dist/{gherkin-0SlhEZ3t.js → gherkin-CrSjX26K.js} +1 -1
  130. package/dist/gitGraph-4MIJSDKK-Ch7kj-d2.js +2 -0
  131. package/dist/{gitGraphDiagram-WWUBYQGX-D5nSIzdE.js → gitGraphDiagram-WWUBYQGX-CK66dT35.js} +4 -4
  132. package/dist/{glide-data-editor-ChLxq3bk.js → glide-data-editor-o_BhuAJB.js} +6732 -2978
  133. package/dist/{glide-utils-pisbYVjH.js → glide-utils-Bnd_k48H.js} +109 -78
  134. package/dist/{globals-CP_-MiOh.js → globals-HTpXpd2Q.js} +3 -3
  135. package/dist/{graphlib-BmY_CCV9.js → graphlib-nlwT3Wvy.js} +177 -220
  136. package/dist/{groovy-YhcTMyvX.js → groovy-IgGNjeU9.js} +1 -1
  137. package/dist/hasIn-C20JsQ2m.js +28 -0
  138. package/dist/{haskell-CodLxrtT.js → haskell-Bs1k3a9s.js} +1 -1
  139. package/dist/{haxe-CiRWNFkH.js → haxe-CQ8Yb3XF.js} +1 -1
  140. package/dist/highlighted-body-JLMTFACH-yt0ZZn80.js +42 -0
  141. package/dist/{error-entries-CnqKxhU9.js → html-to-image-Bbl0PeC7.js} +26184 -26482
  142. package/dist/{idl-DZgBq75I.js → idl-DjnxoAWx.js} +1 -1
  143. package/dist/info-A6RAGUB7-DCz_Egh9.js +2 -0
  144. package/dist/{infoDiagram-27XIBGKW-CRSDtRrd.js → infoDiagram-27XIBGKW-DWltseIa.js} +4 -4
  145. package/dist/isArrayLikeObject-B-HXCsex.js +626 -0
  146. package/dist/isEmpty-CdX7MTE1.js +14 -0
  147. package/dist/{ishikawaDiagram-5VMMS53U-DxLEUldB.js → ishikawaDiagram-5VMMS53U-DHgepBPo.js} +5 -7
  148. package/dist/{javascript-BfNytHiM.js → javascript-BQtCoAFy.js} +2 -2
  149. package/dist/{journeyDiagram-3NMN7TZE-BaLqn-dZ.js → journeyDiagram-3NMN7TZE-CYXsL3IE.js} +4 -4
  150. package/dist/{jsx-runtime-3BD1kT0s.js → jsx-runtime-D8btoEHk.js} +2 -2
  151. package/dist/{julia--tLIAG7q.js → julia-BfgtHJE5.js} +1 -1
  152. package/dist/{kanban-definition-UXKFOSKX-BLhvu8o4.js → kanban-definition-UXKFOSKX-B2_BIjBq.js} +10 -10
  153. package/dist/{katex-BIdZGsyO.js → katex-wAapZGrX.js} +793 -724
  154. package/dist/linear-TJTTbHM9.js +203 -0
  155. package/dist/{livescript-CVPfYnY_.js → livescript-gIdRPKtg.js} +1 -1
  156. package/dist/{loader-BPdQhmlq.js → loader-Bin_dutt.js} +13 -13
  157. package/dist/{lua-4Fa-T-qq.js → lua-CxFpWvnv.js} +2 -2
  158. package/dist/main.js +10930 -8473
  159. package/dist/{mathematica-CtYAy6GG.js → mathematica-QSveeEoW.js} +1 -1
  160. package/dist/{mbox-D0w9Ah1C.js → mbox-2JtaCPNT.js} +1 -1
  161. package/dist/{mermaid-Bjm6C1qN.js → mermaid--2K0cmt9.js} +170 -176
  162. package/dist/mermaid-WFAXDIZX-DHB2z13u.js +1 -0
  163. package/dist/{mermaid-parser.core-DxuSfYwJ.js → mermaid-parser.core-DtOnl7m4.js} +19 -25
  164. package/dist/{mhchem-CdWPJK6g.js → mhchem-CX8M7Ktl.js} +1 -1
  165. package/dist/{micromark-factory-space-DGxAzmw8.js → micromark-factory-space-C5soVmaM.js} +1 -1
  166. package/dist/{mindmap-definition-YA3MSWOX-g2LwxnYQ.js → mindmap-definition-YA3MSWOX-DNebycIP.js} +13 -13
  167. package/dist/{mirc-De9aSAZM.js → mirc-BqD6ade4.js} +1 -1
  168. package/dist/{mllike-BbugeaY_.js → mllike-CT0hgEOO.js} +1 -1
  169. package/dist/{modelica-BjJwWw1F.js → modelica-DKKebcvq.js} +1 -1
  170. package/dist/{mscgen-DwiRH5ma.js → mscgen-BJCCsWjR.js} +1 -1
  171. package/dist/{mumps--plbDM9o.js → mumps-DVQAXZkU.js} +1 -1
  172. package/dist/{nginx-C4Df7REc.js → nginx-AP4LH2NN.js} +1 -1
  173. package/dist/{node-sql-parser-BiZOJ-FS.js → node-sql-parser-C9dndbfr.js} +7184 -7195
  174. package/dist/{now-jM8-M7IR.js → now-BKZCLE5P.js} +12 -13
  175. package/dist/{nsis-fiiOqLc3.js → nsis-Cah9xkdT.js} +1 -1
  176. package/dist/{ntriples-jV77I4k8.js → ntriples-CQoaLOV6.js} +2 -2
  177. package/dist/{number-overlay-editor-CCm8xv1J.js → number-overlay-editor-Dmo99-rX.js} +17 -22
  178. package/dist/{objects-CzUgoMIF.js → objects-DCmMvZtn.js} +1 -3
  179. package/dist/{octave-Cztd01tF.js → octave-CeDj2bTn.js} +1 -1
  180. package/dist/{once-BtE-wKRL.js → once-NnpX_HnX.js} +1 -1
  181. package/dist/{oz-Bl8o3BDl.js → oz-BksQrg3k.js} +1 -1
  182. package/dist/packet-AYTQ26CC-DEMHgLPq.js +2 -0
  183. package/dist/{pascal-BO5JqysR.js → pascal-BKL17mpl.js} +1 -1
  184. package/dist/{pegDiagram-XKGWAZYB-CpMAt3Qs.js → pegDiagram-XKGWAZYB-CH4U3II-.js} +5 -5
  185. package/dist/pencil-MMnw1YQh.js +10 -0
  186. package/dist/{perl-Drlh9s6m.js → perl-CacqJ-Ss.js} +1 -1
  187. package/dist/pick-DgpAbcwP.js +35 -0
  188. package/dist/pie-WAS4IAKB-DMjTEeHd.js +2 -0
  189. package/dist/{pieDiagram-E7YTZNPT-CVTthoZo.js → pieDiagram-E7YTZNPT-pfcrdUCa.js} +7 -7
  190. package/dist/{pig-BWGR8wZw.js → pig-CXSGZ_K9.js} +1 -1
  191. package/dist/{powershell-DT99xlz_.js → powershell-DY_yIxBM.js} +3 -6
  192. package/dist/precisionRound-DMIVQrt2.js +97 -0
  193. package/dist/{process-output-DgQrilBD.js → process-output-Dw_sI4Xp.js} +6 -6
  194. package/dist/{properties-Q-rkxld0.js → properties-Om0IDE07.js} +1 -1
  195. package/dist/{protobuf-DKyWZbs7.js → protobuf-B8nxxb4Q.js} +1 -1
  196. package/dist/{pug-42ZJUbEC.js → pug-lkUBPvVS.js} +3 -7
  197. package/dist/{puppet-B4UozHhh.js → puppet-DMkXsi4d.js} +1 -1
  198. package/dist/purify.es-DmnrIjg4.js +877 -0
  199. package/dist/{python-DREjAV__.js → python-JQVycMgr.js} +1 -1
  200. package/dist/{q-Bi63IpBO.js → q-DqE__nNB.js} +1 -1
  201. package/dist/{quadrantDiagram-AXDQQJYC-Blrm7V7_.js → quadrantDiagram-AXDQQJYC-nGFBFig7.js} +3 -3
  202. package/dist/{r-DSwXWKMR.js → r-Cbliap7Q.js} +1 -1
  203. package/dist/radar-RG4KPBEZ-9PwdCvai.js +2 -0
  204. package/dist/railroad-74A4TZTK-8N9kF5jl.js +2 -0
  205. package/dist/railroad-abnf-HS5TGJTU-Sg6YmzlR.js +2 -0
  206. package/dist/railroad-ebnf-LZEXJU2U-CYwp2Oee.js +2 -0
  207. package/dist/railroad-peg-WCYAUIDC-BfDkAuQ3.js +2 -0
  208. package/dist/{railroadDiagram-O6MQD6OU-ao8cqqFB.js → railroadDiagram-O6MQD6OU-BZKpAbNG.js} +5 -5
  209. package/dist/{react-sHtZdjeP.js → react-Bgs_wQh3.js} +3 -3
  210. package/dist/{react-dom-DUmH0GXv.js → react-dom-DdqGVp5N.js} +5 -5
  211. package/dist/{react-vega-BDpbvBCb.js → react-vega-CGgQEf0O.js} +13800 -17236
  212. package/dist/{requirementDiagram-BXWQKSXE--J8vyfm-.js → requirementDiagram-BXWQKSXE-DnyfIHe3.js} +13 -13
  213. package/dist/{reveal-component-C3tSBdGZ.js → reveal-component-SAEDhB8R.js} +1172 -1285
  214. package/dist/{rolldown-runtime-Cb76FRpK.js → rolldown-runtime-BPCzCO3I.js} +1 -1
  215. package/dist/{rpm-DPb1DeKM.js → rpm-DmT_LNpE.js} +1 -1
  216. package/dist/{ruby-U7fZA4DP.js → ruby-BHVZTtLW.js} +1 -1
  217. package/dist/{sankeyDiagram-P5KCCOFB-ELvOcnZH.js → sankeyDiagram-P5KCCOFB-CrOfyc2n.js} +2 -2
  218. package/dist/{sas-CLk1JpTn.js → sas-CrG5N1he.js} +1 -1
  219. package/dist/{scheme-CT-2k2Tl.js → scheme-BHUnz-IB.js} +1 -1
  220. package/dist/select-suaAxFuo.js +1200 -0
  221. package/dist/{semaphore-89jsoHtS.js → semaphore-8KhQouXt.js} +4 -5
  222. package/dist/{sequenceDiagram-WJ2MYXX4-CiQbn62x.js → sequenceDiagram-WJ2MYXX4-BeYuWX7N.js} +6 -6
  223. package/dist/{shell-BLO7fcsk.js → shell-C5IBmRU5.js} +1 -1
  224. package/dist/{sieve-nG3C7WNH.js → sieve-BzCnt_E6.js} +2 -2
  225. package/dist/{sizeCapture-INFHLROL-Dx5SpkQF.js → sizeCapture-INFHLROL-DBeZ20mI.js} +1 -1
  226. package/dist/{smalltalk-BROcZybA.js → smalltalk-DQFAQul3.js} +1 -1
  227. package/dist/{solr-mVltHNc5.js → solr-BiapYPCk.js} +1 -1
  228. package/dist/{sparql-Cv1Ksr4v.js → sparql-BcUKO1is.js} +1 -1
  229. package/dist/{spec-D_u2ipzF.js → spec-BQNx2-D7.js} +42 -12
  230. package/dist/{src-CA_m4ONl.js → src-D5uZaZib.js} +8 -14
  231. package/dist/{stateDiagram-D77RDMKH-DVEeGs5b.js → stateDiagram-D77RDMKH-B8FxwAM2.js} +18 -18
  232. package/dist/stateDiagram-v2-MP3YSRHH-CzWLBqm1.js +30 -0
  233. package/dist/static-state-Al_hmf1n.js +68 -0
  234. package/dist/{stex-Btf3omL8.js → stex-CQ_aCGTF.js} +1 -1
  235. package/dist/style.css +1 -1
  236. package/dist/{stylus-Dt4VvLXL.js → stylus-D4gHF5lg.js} +1 -1
  237. package/dist/{swift-DHsn_CVI.js → swift-CnvIBnbt.js} +1 -1
  238. package/dist/{swimlanes-42K2YHIH-CqkGoGqn.js → swimlanes-42K2YHIH-CzKmGMts.js} +37 -59
  239. package/dist/swimlanesDiagram-VR7AAH4N-DnWIUN_9.js +30 -0
  240. package/dist/{swiper-component-DKntyn8p.js → swiper-component-DTdNB9wg.js} +45 -78
  241. package/dist/{tcl-CV0OLBOl.js → tcl-DkOjjZYO.js} +1 -1
  242. package/dist/{textile-D320oKVM.js → textile-DgzBVSEW.js} +1 -1
  243. package/dist/{tiki-BF2aDPlB.js → tiki-MighF8A_.js} +1 -1
  244. package/dist/{time-BaMbJs4z.js → time-BlOl70lB.js} +19 -19
  245. package/dist/{timeline-definition-24CTP7MA-DLRUNVAx.js → timeline-definition-24CTP7MA-Czf2QN2R.js} +5 -5
  246. package/dist/toast-CsJa1nGj.js +491 -0
  247. package/dist/{toml-CaUN7UHo.js → toml-B0B7UAba.js} +1 -1
  248. package/dist/{tooltip-CtBZ5q8p.js → tooltip-BVbJPkcl.js} +321 -297
  249. package/dist/treeView-Q6P3EWNA-BQywp0E1.js +2 -0
  250. package/dist/treemap-WGGIJYW6-P2ZJnldw.js +2 -0
  251. package/dist/{troff-DQUFcClZ.js → troff-B4IRX71y.js} +1 -1
  252. package/dist/{ttcn-CQL1duJS.js → ttcn-B4tpvdJD.js} +1 -1
  253. package/dist/{ttcn-cfg-BMmEFJPu.js → ttcn-cfg-pfE-1FV8.js} +1 -1
  254. package/dist/{turtle-C3esgsRr.js → turtle-Bc97ufp6.js} +1 -1
  255. package/dist/use-restore-focus-tPmARo1Q.js +7641 -0
  256. package/dist/{use-vega-container-remeasure-Bz4PZMtt.js → use-vega-container-remeasure-BrUpWQfF.js} +4 -8
  257. package/dist/{useAsyncData-BneN349z.js → useAsyncData-P5-Oovhq.js} +21 -20
  258. package/dist/{useDateFormatter-DkajGwwd.js → useDateFormatter-B4ygYuUU.js} +5 -5
  259. package/dist/{useDeepCompareMemoize-Z_7R8wTt.js → useDeepCompareMemoize-Bcu0DkCS.js} +3 -3
  260. package/dist/useEvent-BoN7U38T.js +19 -0
  261. package/dist/{useIframeCapabilities-DBETvvPl.js → useIframeCapabilities-HTZiVlGV.js} +2 -2
  262. package/dist/useLifecycle-MTdtnR3-.js +112 -0
  263. package/dist/{vb-RK1eDXRl.js → vb-C5kpOY_q.js} +1 -1
  264. package/dist/{vbscript-BCOeM0de.js → vbscript-Ck0hgOg5.js} +1 -1
  265. package/dist/{vega-component-1lFfDE_8.js → vega-component-BhBbP4S7.js} +167 -172
  266. package/dist/{vega-embed-container-BgKnsDbB.js → vega-embed-container-DgpACsCB.js} +7 -7
  267. package/dist/{vega-loader.browser-CpbZAXub.js → vega-loader.browser-Co9gYE8Z.js} +638 -295
  268. package/dist/{velocity-CZKOFbOI.js → velocity-2Doc6dgJ.js} +1 -1
  269. package/dist/{vennDiagram-4TSXK5OY-CypgoBVZ.js → vennDiagram-4TSXK5OY-BrHqWB1U.js} +4 -4
  270. package/dist/{verilog-DqQTzVn8.js → verilog-CmZmYe4R.js} +2 -2
  271. package/dist/{vhdl-vQr2bfmi.js → vhdl-esMnUHZm.js} +1 -1
  272. package/dist/wardley-WFR3VGLG-CIBJ6O2G.js +2 -0
  273. package/dist/{wardleyDiagram-VM6X3IG4-B6xjiQ_g.js → wardleyDiagram-VM6X3IG4-Cms1K_3v.js} +5 -5
  274. package/dist/{webidl-DzX7N40e.js → webidl-G_RlXG7G.js} +1 -1
  275. package/dist/{xquery-Cw_Q_hGR.js → xquery-IUQpMoMl.js} +1 -1
  276. package/dist/{xychartDiagram-S5SC5T6Z-e0PefDVs.js → xychartDiagram-S5SC5T6Z-_kUiODzS.js} +8 -8
  277. package/dist/{yacas-DiC4jJBE.js → yacas-ObL0t2h9.js} +1 -1
  278. package/dist/{z80-CUOQDEJO.js → z80-jyuJhy0k.js} +1 -1
  279. package/package.json +37 -42
  280. package/src/__mocks__/document.tsx +63 -0
  281. package/src/__mocks__/executions.ts +219 -0
  282. package/src/__mocks__/notebook.ts +3 -7
  283. package/src/__mocks__/partial.ts +26 -0
  284. package/src/__mocks__/requests.ts +1 -7
  285. package/src/__tests__/CellStatus.test.tsx +25 -26
  286. package/src/__tests__/fixtures/pair-config.ts +1 -1
  287. package/src/__tests__/main.test.tsx +24 -1
  288. package/src/__tests__/module-entry.test.ts +44 -0
  289. package/src/__tests__/mount.test.ts +17 -78
  290. package/src/__tests__/{host-imports.test.ts → replica-imports.test.ts} +12 -11
  291. package/src/components/ai/__tests__/ai-model-dropdown.test.tsx +63 -0
  292. package/src/components/ai/__tests__/ai-utils.test.ts +8 -0
  293. package/src/components/ai/ai-model-dropdown.tsx +11 -6
  294. package/src/components/app-config/__tests__/state.test.tsx +50 -0
  295. package/src/components/app-config/ai-config.tsx +154 -150
  296. package/src/components/app-config/app-config-button.tsx +6 -5
  297. package/src/components/app-config/app-config-form.tsx +5 -9
  298. package/src/components/app-config/common.tsx +7 -9
  299. package/src/components/app-config/data-form.tsx +113 -116
  300. package/src/components/app-config/get-dirty-values.ts +4 -4
  301. package/src/components/app-config/mcp-config.tsx +30 -53
  302. package/src/components/app-config/user-config-form.css +91 -0
  303. package/src/components/app-config/user-config-form.tsx +266 -349
  304. package/src/components/chat/__tests__/capabilities-popover.test.tsx +0 -1
  305. package/src/components/chat/__tests__/chat-display.test.tsx +196 -0
  306. package/src/components/chat/__tests__/chat-markdown.test.tsx +43 -0
  307. package/src/components/chat/__tests__/chat-utils.test.ts +93 -1
  308. package/src/components/chat/__tests__/message-queue.test.tsx +17 -0
  309. package/src/components/chat/__tests__/notebook-access-selector.test.tsx +64 -0
  310. package/src/components/chat/__tests__/notebook-context.test.ts +199 -0
  311. package/src/components/chat/__tests__/turn-timing.test.ts +84 -0
  312. package/src/components/chat/__tests__/use-assistant-turn.test.ts +95 -0
  313. package/src/components/chat/__tests__/user-message.test.tsx +27 -0
  314. package/src/components/chat/acp/__tests__/agent-panel-initialization.test.tsx +1 -1
  315. package/src/components/chat/acp/__tests__/agent-panel.test.tsx +22 -17
  316. package/src/components/chat/acp/__tests__/session-tabs.test.tsx +43 -0
  317. package/src/components/chat/acp/__tests__/state.test.ts +2 -2
  318. package/src/components/chat/acp/agent-panel.tsx +6 -3
  319. package/src/components/chat/acp/blocks.tsx +13 -12
  320. package/src/components/chat/acp/common.tsx +4 -5
  321. package/src/components/chat/acp/model-selector.tsx +1 -1
  322. package/src/components/chat/acp/session-tabs.tsx +8 -3
  323. package/src/components/chat/agent-activity.tsx +132 -0
  324. package/src/components/chat/capabilities-popover.tsx +2 -11
  325. package/src/components/chat/chat-components.tsx +9 -4
  326. package/src/components/chat/chat-display.tsx +131 -57
  327. package/src/components/chat/chat-history-popover.tsx +6 -1
  328. package/src/components/chat/chat-markdown.tsx +15 -0
  329. package/src/components/chat/chat-panel.tsx +249 -309
  330. package/src/components/chat/chat-typography.css +108 -0
  331. package/src/components/chat/chat-utils.ts +24 -35
  332. package/src/components/chat/notebook-access-selector.stories.tsx +22 -0
  333. package/src/components/chat/notebook-access-selector.tsx +100 -0
  334. package/src/components/chat/notebook-context.ts +80 -0
  335. package/src/components/chat/tool-call/__tests__/tool-labels.test.ts +76 -0
  336. package/src/components/chat/tool-call/__tests__/tool-step.test.tsx +57 -0
  337. package/src/components/chat/tool-call/shared.ts +6 -0
  338. package/src/components/chat/tool-call/tool-call-view.tsx +22 -76
  339. package/src/components/chat/tool-call/tool-labels.ts +172 -0
  340. package/src/components/chat/tool-call/tool-result.tsx +1 -1
  341. package/src/components/chat/tool-call/tool-step.tsx +145 -0
  342. package/src/components/chat/turn-timing.ts +73 -0
  343. package/src/components/chat/use-assistant-turn.ts +65 -0
  344. package/src/components/chat/use-chat-generation.ts +20 -0
  345. package/src/components/chat/user-message.tsx +145 -0
  346. package/src/components/data-table/TableBottomBar.tsx +4 -1
  347. package/src/components/data-table/TableTopBar.tsx +2 -0
  348. package/src/components/data-table/__tests__/chart-spec-model.test.ts +195 -195
  349. package/src/components/data-table/__tests__/column-explorer.test.tsx +27 -1
  350. package/src/components/data-table/__tests__/columns.test.tsx +105 -0
  351. package/src/components/data-table/__tests__/context-menu-interaction.test.tsx +130 -0
  352. package/src/components/data-table/__tests__/data-table.test.tsx +1 -0
  353. package/src/components/data-table/__tests__/date-popover.test.tsx +72 -0
  354. package/src/components/data-table/__tests__/export-actions.test.tsx +105 -0
  355. package/src/components/data-table/__tests__/keyboard-selection.test.tsx +188 -0
  356. package/src/components/data-table/__tests__/pagination.test.tsx +28 -1
  357. package/src/components/data-table/__tests__/search-highlight.test.tsx +109 -0
  358. package/src/components/data-table/__tests__/url-detector.test.tsx +74 -0
  359. package/src/components/data-table/cell-selection/feature.ts +2 -2
  360. package/src/components/data-table/cell-selection/types.ts +2 -2
  361. package/src/components/data-table/charts/__tests__/chart-panel.test.tsx +74 -1
  362. package/src/components/data-table/charts/__tests__/spec-snapshot.test.ts +20 -20
  363. package/src/components/data-table/charts/__tests__/spec.test.ts +78 -52
  364. package/src/components/data-table/charts/__tests__/storage.test.ts +4 -1
  365. package/src/components/data-table/charts/chart-spec/spec.ts +68 -43
  366. package/src/components/data-table/charts/charts.tsx +40 -30
  367. package/src/components/data-table/charts/storage.ts +16 -5
  368. package/src/components/data-table/column-explorer-panel/column-explorer.tsx +1 -1
  369. package/src/components/data-table/column-formatting/types.ts +1 -2
  370. package/src/components/data-table/column-summary/chart-spec-model.tsx +23 -16
  371. package/src/components/data-table/column-summary/column-summary.tsx +2 -4
  372. package/src/components/data-table/column-visibility-dropdown.tsx +8 -13
  373. package/src/components/data-table/columns.tsx +45 -46
  374. package/src/components/data-table/context-menu.tsx +36 -20
  375. package/src/components/data-table/data-table.tsx +17 -1
  376. package/src/components/data-table/date-popover.tsx +6 -4
  377. package/src/components/data-table/export-actions.tsx +76 -48
  378. package/src/components/data-table/pagination.tsx +44 -33
  379. package/src/components/data-table/range-focus/atoms.ts +4 -6
  380. package/src/components/data-table/range-focus/use-cell-range-selection.ts +65 -38
  381. package/src/components/data-table/range-focus/use-scroll-into-view.ts +21 -2
  382. package/src/components/data-table/renderers.tsx +16 -7
  383. package/src/components/data-table/row-viewer-panel/__tests__/row-viewer.test.tsx +24 -1
  384. package/src/components/data-table/row-viewer-panel/row-viewer.tsx +4 -4
  385. package/src/components/data-table/search-highlight.tsx +79 -0
  386. package/src/components/data-table/types.ts +1 -0
  387. package/src/components/data-table/url-detector.tsx +49 -9
  388. package/src/components/datasources/__tests__/column-actions.test.tsx +97 -0
  389. package/src/components/datasources/__tests__/column-preview.test.tsx +96 -5
  390. package/src/components/datasources/__tests__/datasources-interactions.test.tsx +181 -0
  391. package/src/components/datasources/__tests__/table-list.test.tsx +118 -0
  392. package/src/components/datasources/__tests__/utils.test.ts +57 -6
  393. package/src/components/datasources/column-preview.tsx +17 -12
  394. package/src/components/datasources/datasources.tsx +56 -43
  395. package/src/components/datasources/utils.ts +32 -23
  396. package/src/components/debugger/debugger-code.tsx +5 -0
  397. package/src/components/dependency-graph/custom-node.tsx +1 -1
  398. package/src/components/dependency-graph/dependency-graph-tree.tsx +8 -8
  399. package/src/components/dependency-graph/elements.ts +24 -21
  400. package/src/components/dependency-graph/minimap-content.tsx +15 -20
  401. package/src/components/dependency-graph/panels.tsx +4 -2
  402. package/src/components/dependency-graph/utils/__tests__/layout.test.ts +18 -11
  403. package/src/components/editor/SortableCell.tsx +1 -3
  404. package/src/components/editor/__tests__/Output.test.tsx +50 -32
  405. package/src/{core/attachments/__tests__/toast.test.tsx → components/editor/__tests__/agent-toast.test.tsx} +1 -1
  406. package/src/components/editor/__tests__/data-attributes.test.tsx +38 -26
  407. package/src/components/editor/__tests__/output-persistence.test.tsx +28 -9
  408. package/src/components/editor/__tests__/package-alert.test.tsx +22 -1
  409. package/src/components/editor/actions/__tests__/name-cell-input.test.tsx +69 -0
  410. package/src/components/editor/actions/__tests__/pair-with-agent-commands.test.ts +21 -40
  411. package/src/components/editor/actions/__tests__/pair-with-agent-modal.test.tsx +41 -14
  412. package/src/components/editor/actions/__tests__/pair-with-agent.test.tsx +6 -24
  413. package/src/components/editor/actions/__tests__/useCellActionButton.test.tsx +131 -0
  414. package/src/components/editor/actions/__tests__/useSetOutputsExpanded.test.ts +2 -1
  415. package/src/components/editor/actions/name-cell-input.tsx +4 -3
  416. package/src/components/editor/actions/pair-with-agent-commands.ts +10 -7
  417. package/src/components/editor/actions/pair-with-agent-modal.tsx +29 -30
  418. package/src/components/editor/actions/pair-with-agent.tsx +16 -39
  419. package/src/components/editor/actions/useCellActionButton.tsx +47 -35
  420. package/src/components/editor/actions/useConfigActions.tsx +3 -4
  421. package/src/components/editor/actions/useNotebookActions.tsx +25 -29
  422. package/src/components/editor/actions/useRestartKernel.tsx +0 -5
  423. package/src/components/editor/actions/useSetCodeVisibility.ts +11 -12
  424. package/src/components/editor/actions/useSetOutputsExpanded.ts +15 -23
  425. package/src/components/editor/ai/ai-completion-editor.tsx +2 -1
  426. package/src/components/editor/ai/completion-handlers.tsx +0 -37
  427. package/src/components/editor/ai/prompt-input.tsx +189 -0
  428. package/src/components/editor/alerts/__tests__/connection-notice.test.tsx +1 -1
  429. package/src/components/editor/alerts/connection-notice.tsx +1 -1
  430. package/src/components/editor/alerts/startup-logs-alert.tsx +1 -0
  431. package/src/components/editor/alerts/stdin-blocking-alert.tsx +4 -2
  432. package/src/components/editor/app-container.tsx +1 -1
  433. package/src/components/editor/boundary/__tests__/ErrorBoundary.test.tsx +1 -1
  434. package/src/components/editor/cell/CellStatus.tsx +28 -23
  435. package/src/components/editor/cell/CreateCellButton.tsx +15 -21
  436. package/src/components/editor/cell/DeleteButton.tsx +3 -2
  437. package/src/components/editor/cell/RunButton.tsx +18 -8
  438. package/src/components/editor/cell/StagedAICell.tsx +52 -137
  439. package/src/components/editor/cell/StopButton.tsx +5 -5
  440. package/src/components/editor/cell/__tests__/useRunCells.test.tsx +151 -0
  441. package/src/components/editor/cell/__tests__/useShouldShowInterrupt.test.ts +39 -0
  442. package/src/components/editor/cell/cell-actions.tsx +12 -1
  443. package/src/components/editor/cell/cell-context-menu.tsx +22 -3
  444. package/src/components/editor/cell/code/__tests__/language-toggle.test.tsx +91 -0
  445. package/src/components/editor/cell/code/cell-editor.tsx +67 -170
  446. package/src/components/editor/cell/code/language-toggle.tsx +14 -11
  447. package/src/components/editor/cell/collapse.tsx +16 -6
  448. package/src/components/editor/cell/useAddCell.ts +4 -8
  449. package/src/components/editor/cell/useDeleteCell.tsx +10 -36
  450. package/src/components/editor/cell/useRunCells.ts +72 -58
  451. package/src/components/editor/cell/useShouldShowInterrupt.ts +2 -12
  452. package/src/components/editor/cell/useSplitCell.tsx +10 -6
  453. package/src/components/editor/chrome/components/__tests__/feedback-button.test.tsx +1 -1
  454. package/src/components/editor/chrome/components/feedback-button.tsx +2 -8
  455. package/src/components/editor/chrome/panels/__tests__/packages-panel.test.tsx +31 -2
  456. package/src/components/editor/chrome/panels/__tests__/runtime-details.test.tsx +1 -1
  457. package/src/components/editor/chrome/panels/__tests__/sandbox-recovery.test.tsx +1 -1
  458. package/src/components/editor/chrome/panels/cache-panel.tsx +1 -0
  459. package/src/components/editor/chrome/panels/dependency-graph-panel.tsx +1 -1
  460. package/src/components/editor/chrome/panels/logs-panel.tsx +2 -1
  461. package/src/components/editor/chrome/panels/outline/__tests__/outline-keyboard.test.tsx +84 -0
  462. package/src/components/editor/chrome/panels/outline/floating-outline.tsx +39 -14
  463. package/src/components/editor/chrome/panels/outline/useActiveOutline.tsx +3 -2
  464. package/src/components/editor/chrome/panels/packages-panel.tsx +4 -7
  465. package/src/components/editor/chrome/panels/panel-header.tsx +13 -0
  466. package/src/components/editor/chrome/panels/secrets-panel.tsx +1 -0
  467. package/src/components/editor/chrome/panels/session-panel.tsx +1 -1
  468. package/src/components/editor/chrome/panels/snippets-panel.tsx +10 -12
  469. package/src/components/editor/chrome/panels/variable-panel.tsx +1 -5
  470. package/src/components/editor/chrome/types.ts +1 -1
  471. package/src/components/editor/chrome/wrapper/__tests__/attachment-status.test.tsx +7 -9
  472. package/src/components/editor/chrome/wrapper/__tests__/document-sync-status.test.tsx +95 -0
  473. package/src/components/editor/chrome/wrapper/__tests__/pending-ai-cells.test.tsx +265 -37
  474. package/src/components/editor/chrome/wrapper/__tests__/useAskAiAboutCell.test.tsx +58 -0
  475. package/src/components/editor/chrome/wrapper/app-chrome.tsx +91 -74
  476. package/src/components/editor/chrome/wrapper/footer-items/attachment-status.tsx +4 -4
  477. package/src/components/editor/chrome/wrapper/footer-items/backend-status.tsx +3 -17
  478. package/src/components/editor/chrome/wrapper/footer-items/document-sync-status.tsx +54 -0
  479. package/src/components/editor/chrome/wrapper/footer-items/lsp-status.tsx +1 -1
  480. package/src/components/editor/chrome/wrapper/footer-items/machine-stats.tsx +1 -1
  481. package/src/components/editor/chrome/wrapper/footer-items/runtime-settings.tsx +1 -7
  482. package/src/components/editor/chrome/wrapper/footer.tsx +2 -2
  483. package/src/components/editor/chrome/wrapper/minimap-state.ts +1 -1
  484. package/src/components/editor/chrome/wrapper/pending-ai-cells.tsx +143 -72
  485. package/src/components/editor/chrome/wrapper/pending-ai-changes-badge.tsx +25 -0
  486. package/src/components/editor/chrome/wrapper/sidebar.tsx +8 -4
  487. package/src/components/editor/chrome/wrapper/storage.ts +1 -1
  488. package/src/components/editor/chrome/wrapper/useAskAiAboutCell.ts +36 -0
  489. package/src/components/editor/columns/__tests__/cell-column.test.tsx +1 -1
  490. package/src/components/editor/columns/cell-column.tsx +1 -1
  491. package/src/components/editor/columns/sortable-column.tsx +2 -2
  492. package/src/components/editor/connections/components.tsx +5 -10
  493. package/src/components/editor/controls/Controls.tsx +4 -4
  494. package/src/components/editor/controls/__tests__/keyboard-shortcuts.test.tsx +61 -0
  495. package/src/components/editor/controls/__tests__/notebook-menu-dropdown.test.tsx +10 -4
  496. package/src/components/editor/controls/keyboard-shortcuts.tsx +14 -5
  497. package/src/components/editor/documentation.css +34 -11
  498. package/src/components/editor/errors/__tests__/send-error-report-button.test.tsx +26 -22
  499. package/src/components/editor/errors/auto-fix.tsx +4 -8
  500. package/src/components/editor/errors/send-error-report-button.tsx +3 -6
  501. package/src/components/editor/file-tree/__tests__/file-explorer-interactions.test.tsx +6 -0
  502. package/src/components/editor/file-tree/__tests__/file-explorer-navigation.test.tsx +47 -0
  503. package/src/components/editor/file-tree/__tests__/use-file-search.test.tsx +91 -0
  504. package/src/components/editor/file-tree/file-explorer.tsx +48 -15
  505. package/src/components/editor/file-tree/file-name-input.tsx +1 -0
  506. package/src/components/editor/file-tree/file-viewer.tsx +4 -2
  507. package/src/components/editor/file-tree/use-file-search.ts +35 -21
  508. package/src/components/editor/header/__tests__/filename-form.test.tsx +1 -4
  509. package/src/components/editor/header/__tests__/status.test.tsx +5 -3
  510. package/src/components/editor/header/app-header.tsx +1 -1
  511. package/src/components/editor/header/filename-form.tsx +1 -1
  512. package/src/components/editor/header/status.tsx +44 -22
  513. package/src/components/editor/links/__tests__/cell-link.test.tsx +148 -0
  514. package/src/components/editor/links/cell-link-list.tsx +1 -1
  515. package/src/components/editor/links/cell-link.tsx +21 -11
  516. package/src/components/editor/navigation/__tests__/clipboard.test.ts +60 -38
  517. package/src/components/editor/navigation/__tests__/navigation.test.ts +109 -85
  518. package/src/components/editor/navigation/__tests__/selection.test.ts +43 -21
  519. package/src/components/editor/navigation/clipboard.ts +17 -14
  520. package/src/components/editor/navigation/focus-utils.ts +23 -4
  521. package/src/components/editor/navigation/multi-cell-action-toolbar.tsx +17 -33
  522. package/src/components/editor/navigation/navigation.ts +74 -72
  523. package/src/components/editor/navigation/selection.ts +30 -29
  524. package/src/components/editor/notebook-banner.tsx +1 -0
  525. package/src/components/editor/notebook-cell.tsx +158 -172
  526. package/src/components/editor/output/MarimoErrorOutput.tsx +41 -4
  527. package/src/components/editor/output/MarimoTracebackOutput.tsx +19 -17
  528. package/src/components/editor/output/Outputs.css +8 -0
  529. package/src/components/editor/output/VideoOutput.tsx +6 -0
  530. package/src/components/editor/output/__tests__/VideoOutput.test.tsx +131 -0
  531. package/src/components/editor/output/__tests__/traceback.test.tsx +27 -1
  532. package/src/components/editor/output/ansi-reduce.ts +40 -20
  533. package/src/components/editor/output/console/ConsoleOutput.tsx +19 -25
  534. package/src/components/editor/output/console/__tests__/ConsoleOutput.test.tsx +125 -69
  535. package/src/components/editor/package-alert.tsx +14 -7
  536. package/src/components/editor/renderers/__tests__/add-cell-buttons.test.tsx +18 -0
  537. package/src/components/editor/renderers/cell-array.tsx +31 -102
  538. package/src/components/editor/renderers/grid-layout/__tests__/grid-layout.test.tsx +75 -0
  539. package/src/components/editor/renderers/grid-layout/grid-layout.tsx +28 -22
  540. package/src/components/editor/renderers/slides-layout/__tests__/plugin.test.ts +0 -4
  541. package/src/components/editor/renderers/slides-layout/slides-layout.tsx +1 -1
  542. package/src/components/editor/renderers/vertical-layout/__tests__/useFocusFirstEditor.test.ts +4 -4
  543. package/src/components/editor/renderers/vertical-layout/sidebar/toggle.tsx +7 -1
  544. package/src/components/editor/renderers/vertical-layout/useFocusFirstEditor.ts +1 -1
  545. package/src/components/editor/renderers/vertical-layout/vertical-layout.tsx +19 -37
  546. package/src/components/editor/stdin-blocking-alert.tsx +4 -2
  547. package/src/components/home/components.tsx +17 -31
  548. package/src/components/icons/__tests__/large-spinner.test.tsx +39 -0
  549. package/src/components/icons/large-spinner.tsx +3 -14
  550. package/src/components/icons/spinner.tsx +1 -1
  551. package/src/components/markdown/__tests__/markdown-renderer.test.tsx +32 -2
  552. package/src/components/markdown/markdown-renderer.tsx +43 -28
  553. package/src/components/mcp/mcp-status-indicator.tsx +18 -14
  554. package/src/components/pages/__tests__/home-page.test.tsx +116 -0
  555. package/src/components/pages/edit-page.tsx +19 -17
  556. package/src/components/pages/home-page.tsx +164 -91
  557. package/src/components/scratchpad/scratchpad.test.tsx +89 -0
  558. package/src/components/scratchpad/scratchpad.tsx +47 -33
  559. package/src/components/scratchpad/state.ts +7 -0
  560. package/src/components/slides/__tests__/minimap-actions.test.tsx +22 -29
  561. package/src/components/slides/__tests__/minimap.test.ts +38 -19
  562. package/src/components/slides/__tests__/slide-scroll-hint.test.tsx +37 -0
  563. package/src/components/slides/minimap.tsx +22 -14
  564. package/src/components/slides/reveal-component.tsx +73 -36
  565. package/src/components/slides/reveal-slides.css +5 -4
  566. package/src/components/slides/slide-cell-view.tsx +39 -35
  567. package/src/components/slides/slide-form.tsx +1 -0
  568. package/src/components/slides/slide-scroll-hint.tsx +3 -1
  569. package/src/components/slides/slide.tsx +3 -4
  570. package/src/components/sort/SortableCellsProvider.tsx +8 -25
  571. package/src/components/static-html/__tests__/static-banner.test.tsx +1 -1
  572. package/src/components/tracing/tracing-keyboard.test.tsx +85 -0
  573. package/src/components/tracing/tracing.tsx +46 -42
  574. package/src/components/ui/__tests__/draggable-popover.test.tsx +24 -0
  575. package/src/components/ui/__tests__/fullscreen.test.tsx +99 -2
  576. package/src/components/ui/__tests__/range-slider.test.tsx +165 -0
  577. package/src/components/ui/alert-dialog.tsx +1 -1
  578. package/src/components/ui/draggable-popover.tsx +24 -2
  579. package/src/components/ui/fullscreen.tsx +43 -3
  580. package/src/components/ui/range-slider.tsx +22 -9
  581. package/src/components/ui/slider.tsx +6 -2
  582. package/src/components/ui/toast.tsx +1 -1
  583. package/src/core/MarimoApp.tsx +3 -1
  584. package/src/core/ai/__tests__/staged-cells.test.ts +90 -609
  585. package/src/core/ai/context/context.ts +2 -0
  586. package/src/core/ai/context/providers/__tests__/cell-output.test.ts +8 -12
  587. package/src/core/ai/context/providers/__tests__/cell.test.ts +49 -0
  588. package/src/core/ai/context/providers/cell-output.ts +2 -2
  589. package/src/core/ai/context/providers/cell.ts +54 -0
  590. package/src/core/ai/context/providers/datasource.ts +6 -2
  591. package/src/core/ai/staged-cells.ts +56 -323
  592. package/src/core/ai/state.ts +3 -0
  593. package/src/core/ai/tools/__tests__/edit-notebook-tool.test.ts +47 -91
  594. package/src/core/ai/tools/__tests__/registry.test.ts +17 -0
  595. package/src/core/ai/tools/base.ts +18 -15
  596. package/src/core/ai/tools/edit-notebook-tool.ts +86 -80
  597. package/src/core/ai/tools/registry.ts +13 -10
  598. package/src/core/ai/tools/sample-tool.ts +6 -7
  599. package/src/core/cells/__tests__/__snapshots__/cells.test.ts.snap +6 -529
  600. package/src/core/cells/__tests__/actions.test.ts +623 -35
  601. package/src/core/cells/__tests__/add-missing-import.test.ts +7 -8
  602. package/src/core/cells/__tests__/arrange.test.ts +432 -0
  603. package/src/core/cells/__tests__/cell.test.ts +148 -150
  604. package/src/core/cells/__tests__/cells.test.ts +384 -2930
  605. package/src/core/cells/__tests__/collapseConsoleOutputs.test.ts +69 -0
  606. package/src/core/cells/__tests__/document.test.ts +158 -0
  607. package/src/core/cells/__tests__/editor.test.ts +57 -0
  608. package/src/core/cells/__tests__/flush-document.test.ts +40 -0
  609. package/src/core/cells/__tests__/harness.ts +109 -0
  610. package/src/core/cells/__tests__/layout.test.ts +176 -0
  611. package/src/core/cells/__tests__/logs.test.ts +0 -13
  612. package/src/core/cells/__tests__/notebook-outline.test.ts +23 -14
  613. package/src/core/cells/__tests__/outputs.test.tsx +71 -53
  614. package/src/core/cells/__tests__/pending-delete-service.test.tsx +11 -20
  615. package/src/core/cells/__tests__/session.test.ts +546 -211
  616. package/src/core/cells/__tests__/utils.test.ts +135 -337
  617. package/src/core/cells/actions.ts +677 -6
  618. package/src/core/cells/add-missing-import.ts +48 -47
  619. package/src/core/cells/arrange.ts +529 -0
  620. package/src/core/cells/cell.ts +79 -146
  621. package/src/core/cells/cells.ts +106 -1459
  622. package/src/core/cells/columns.ts +38 -0
  623. package/src/core/cells/document.ts +167 -0
  624. package/src/core/cells/edit.ts +30 -0
  625. package/src/core/cells/editor.ts +82 -0
  626. package/src/core/cells/focus.ts +27 -6
  627. package/src/core/cells/layout.ts +221 -0
  628. package/src/core/cells/outputs.ts +12 -28
  629. package/src/core/cells/pending-delete-service.ts +8 -14
  630. package/src/core/cells/scrollCellIntoView.ts +6 -0
  631. package/src/core/cells/session.ts +166 -68
  632. package/src/core/cells/types.ts +21 -51
  633. package/src/core/cells/utils.ts +85 -87
  634. package/src/core/codemirror/__tests__/format.test.ts +4 -35
  635. package/src/core/codemirror/__tests__/setup.test.ts +67 -33
  636. package/src/core/codemirror/ai/__tests__/resources.test.ts +117 -0
  637. package/src/core/codemirror/ai/resources.ts +1 -1
  638. package/src/core/codemirror/cells/__tests__/extensions.test.ts +2 -6
  639. package/src/core/codemirror/cells/extensions.ts +18 -30
  640. package/src/core/codemirror/cells/state.ts +2 -6
  641. package/src/core/codemirror/cm.ts +5 -1
  642. package/src/core/codemirror/config/types.ts +1 -1
  643. package/src/core/codemirror/copilot/__tests__/completion-integration.test.ts +4 -0
  644. package/src/core/codemirror/copilot/__tests__/getCodes.test.ts +13 -10
  645. package/src/core/codemirror/copilot/getCodes.ts +3 -3
  646. package/src/core/codemirror/format.ts +6 -23
  647. package/src/core/codemirror/keymaps/vim.ts +4 -8
  648. package/src/core/codemirror/language/__tests__/extension.test.ts +7 -3
  649. package/src/core/codemirror/language/__tests__/sql.test.ts +22 -20
  650. package/src/core/codemirror/language/__tests__/utils.test.ts +194 -17
  651. package/src/core/codemirror/language/cell-code.ts +114 -0
  652. package/src/core/codemirror/language/extension.ts +52 -35
  653. package/src/core/codemirror/language/languages/markdown.ts +8 -6
  654. package/src/core/codemirror/language/languages/python.ts +19 -13
  655. package/src/core/codemirror/language/languages/sql/sql.ts +16 -24
  656. package/src/core/codemirror/language/panel/panel.tsx +1 -0
  657. package/src/core/codemirror/language/types.ts +7 -7
  658. package/src/core/codemirror/language/utils.ts +9 -39
  659. package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +1 -2
  660. package/src/core/codemirror/lsp/notebook-lsp.ts +6 -5
  661. package/src/core/codemirror/lsp/utils.ts +1 -1
  662. package/src/core/codemirror/misc/__tests__/paste.test.ts +3 -1
  663. package/src/core/codemirror/misc/paste.ts +1 -1
  664. package/src/core/codemirror/placeholder/__tests__/extensions.test.ts +75 -0
  665. package/src/core/codemirror/placeholder/extensions.ts +80 -19
  666. package/src/core/codemirror/readonly/__tests__/extension.test.ts +1 -1
  667. package/src/core/codemirror/readonly/extension.ts +2 -2
  668. package/src/core/codemirror/utils.ts +1 -0
  669. package/src/core/config/__tests__/app-config.test.ts +64 -0
  670. package/src/core/config/__tests__/config-schema.test.ts +177 -17
  671. package/src/core/config/config-schema.ts +116 -18
  672. package/src/core/config/config.ts +65 -20
  673. package/src/core/config/feature-flag.tsx +0 -2
  674. package/src/core/datasets/__tests__/data-source-discovery.test.ts +5 -5
  675. package/src/core/datasets/data-source-discovery.ts +4 -6
  676. package/src/core/documentation/doc-lookup.ts +1 -1
  677. package/src/core/dom/outline.ts +4 -1
  678. package/src/core/edit-app.tsx +28 -38
  679. package/src/core/errors/__tests__/error-entries.test.ts +40 -1
  680. package/src/core/errors/error-entries.ts +6 -4
  681. package/src/core/executions/__tests__/atoms.test.ts +282 -0
  682. package/src/core/executions/__tests__/freshness.test.ts +482 -0
  683. package/src/core/executions/__tests__/hooks.test.tsx +150 -0
  684. package/src/core/executions/__tests__/input.test.ts +86 -0
  685. package/src/core/executions/__tests__/interrupt.test.ts +200 -0
  686. package/src/core/executions/__tests__/output.test.ts +266 -0
  687. package/src/core/executions/__tests__/run.test.ts +387 -0
  688. package/src/core/executions/__tests__/select.test.ts +343 -0
  689. package/src/core/executions/atoms.ts +378 -0
  690. package/src/core/executions/freshness.ts +171 -0
  691. package/src/core/executions/hooks.ts +86 -0
  692. package/src/core/executions/index.ts +50 -0
  693. package/src/core/executions/input.ts +55 -0
  694. package/src/core/executions/interrupt.ts +49 -0
  695. package/src/core/executions/output.ts +242 -0
  696. package/src/core/executions/run.ts +107 -0
  697. package/src/core/executions/select.ts +210 -0
  698. package/src/core/export/__tests__/hooks.test.ts +0 -5
  699. package/src/core/export/hooks.ts +1 -1
  700. package/src/core/export/layout.ts +2 -2
  701. package/src/core/hotkeys/actions.ts +2 -4
  702. package/src/core/hotkeys/hotkeys.ts +2 -1
  703. package/src/core/islands/__tests__/bootstrap.test.ts +69 -17
  704. package/src/core/islands/__tests__/bridge.test.ts +104 -65
  705. package/src/core/islands/bootstrap.ts +53 -55
  706. package/src/core/islands/bridge.ts +88 -43
  707. package/src/core/islands/components/IslandControls.tsx +15 -7
  708. package/src/core/islands/components/__tests__/IslandControls.test.tsx +36 -51
  709. package/src/core/islands/components/__tests__/web-components.test.tsx +63 -0
  710. package/src/core/islands/components/output-wrapper.tsx +5 -5
  711. package/src/core/islands/components/web-components.tsx +12 -1
  712. package/src/core/islands/worker/__tests__/controller.test.ts +62 -4
  713. package/src/core/islands/worker/controller.ts +4 -10
  714. package/src/core/islands/worker/worker.tsx +78 -52
  715. package/src/core/kernel/__tests__/RuntimeState.test.ts +1 -1
  716. package/src/core/kernel/__tests__/handlers.test.ts +7 -157
  717. package/src/core/kernel/handlers.ts +13 -79
  718. package/src/core/kernel/state.ts +0 -15
  719. package/src/core/lifecycle/render-policy.ts +12 -26
  720. package/src/core/meta/__tests__/code-visibility.test.tsx +78 -70
  721. package/src/core/meta/code-visibility.ts +18 -9
  722. package/src/core/network/__tests__/connection.test.ts +1 -1
  723. package/src/core/network/__tests__/requests-network.test.ts +0 -16
  724. package/src/core/network/__tests__/requests-toasting.test.tsx +7 -7
  725. package/src/core/network/connection-notice.ts +1 -1
  726. package/src/core/network/connection.ts +1 -6
  727. package/src/core/network/requests-network.ts +5 -55
  728. package/src/core/network/requests-static.ts +1 -7
  729. package/src/core/network/requests-toasting.tsx +2 -56
  730. package/src/core/network/resolve.ts +1 -5
  731. package/src/core/network/types.ts +6 -19
  732. package/src/core/network/useConnectionNotice.ts +8 -2
  733. package/src/core/notebook/__tests__/operations.test.ts +51 -0
  734. package/src/core/notebook/attachments.ts +38 -0
  735. package/src/core/notebook/document/__tests__/codemirror.test.ts +765 -0
  736. package/src/core/notebook/document/__tests__/draft.test.ts +363 -0
  737. package/src/core/notebook/document/__tests__/fixtures.ts +92 -0
  738. package/src/core/notebook/document/__tests__/hooks.test.tsx +391 -0
  739. package/src/core/notebook/document/__tests__/lifecycle-scenarios.test.ts +61 -0
  740. package/src/core/notebook/document/__tests__/model.test.ts +247 -0
  741. package/src/core/notebook/document/__tests__/protocol-fixtures.ts +38 -0
  742. package/src/core/notebook/document/__tests__/recovery-scenarios.test.ts +230 -0
  743. package/src/core/notebook/document/__tests__/scenario-fixture.ts +43 -0
  744. package/src/core/notebook/document/__tests__/scenarios.test.ts +205 -0
  745. package/src/core/notebook/document/__tests__/state.test.ts +459 -0
  746. package/src/core/notebook/document/__tests__/submission.test.ts +203 -0
  747. package/src/core/notebook/document/__tests__/test-host.test.ts +92 -0
  748. package/src/core/notebook/document/__tests__/test-host.ts +243 -0
  749. package/src/core/notebook/document/__tests__/test-notebook.ts +150 -0
  750. package/src/core/notebook/document/__tests__/user.ts +61 -0
  751. package/src/core/notebook/document/codemirror.ts +216 -0
  752. package/src/core/notebook/document/draft.ts +502 -0
  753. package/src/core/notebook/document/hooks.tsx +118 -0
  754. package/src/core/notebook/document/index.ts +24 -0
  755. package/src/core/notebook/document/model.ts +102 -0
  756. package/src/core/notebook/document/select.ts +41 -0
  757. package/src/core/notebook/document/state.ts +378 -0
  758. package/src/core/notebook/document/sync.ts +376 -0
  759. package/src/core/notebook/index.ts +19 -0
  760. package/src/core/notebook/operations.ts +30 -0
  761. package/src/core/notebook/replica/AGENTS.md +11 -0
  762. package/src/core/{host → notebook/replica}/__tests__/attachments.test.ts +9 -10
  763. package/src/core/{host → notebook/replica}/__tests__/document.test.ts +18 -16
  764. package/src/core/notebook/replica/__tests__/executions.test.ts +200 -0
  765. package/src/core/notebook/replica/__tests__/fixtures.ts +103 -0
  766. package/src/core/notebook/replica/__tests__/replica.test.ts +559 -0
  767. package/src/core/notebook/replica/__tests__/results.test.ts +193 -0
  768. package/src/core/notebook/replica/__tests__/runtime.test.ts +78 -0
  769. package/src/core/notebook/replica/backend.ts +21 -0
  770. package/src/core/notebook/replica/connection.ts +38 -0
  771. package/src/core/notebook/replica/index.ts +20 -0
  772. package/src/core/notebook/replica/replica.ts +336 -0
  773. package/src/core/{host → notebook/replica}/resources/attachments.ts +6 -3
  774. package/src/core/{host → notebook/replica}/resources/document.ts +3 -3
  775. package/src/core/notebook/replica/resources/executions.ts +157 -0
  776. package/src/core/notebook/replica/resources/results.ts +48 -0
  777. package/src/core/notebook/replica/resources/runtime.ts +14 -0
  778. package/src/core/packages/__tests__/useSandboxController.test.tsx +1 -1
  779. package/src/core/packages/useSandboxController.ts +1 -1
  780. package/src/core/run-app.tsx +49 -51
  781. package/src/core/runtime/__tests__/adapter.test.ts +4 -4
  782. package/src/core/runtime/__tests__/createWsUrl.test.ts +70 -12
  783. package/src/core/runtime/__tests__/runtime.test.ts +82 -198
  784. package/src/core/runtime/adapter.ts +6 -13
  785. package/src/core/runtime/config.ts +4 -24
  786. package/src/core/runtime/runtime.ts +35 -58
  787. package/src/core/runtime/types.ts +0 -7
  788. package/src/core/saving/__tests__/document.test.tsx +123 -0
  789. package/src/core/saving/__tests__/state.test.ts +111 -0
  790. package/src/core/saving/__tests__/useAutoSave.test.tsx +67 -0
  791. package/src/core/saving/document.ts +33 -0
  792. package/src/core/saving/filename.ts +1 -1
  793. package/src/core/saving/save-component.tsx +39 -60
  794. package/src/core/saving/state.ts +38 -39
  795. package/src/core/saving/useAutoSave.ts +17 -53
  796. package/src/core/session/__tests__/backend.test.ts +236 -0
  797. package/src/core/session/__tests__/useNotebookReplica.hook.test.tsx +186 -0
  798. package/src/core/{websocket → session}/__tests__/useNotebookSession.hook.test.tsx +354 -275
  799. package/src/core/session/active-notebook.ts +28 -0
  800. package/src/core/session/backend.ts +123 -0
  801. package/src/core/{websocket → session}/connection-utils.ts +2 -14
  802. package/src/core/session/embedded.ts +7 -0
  803. package/src/core/{websocket → session}/types.ts +2 -2
  804. package/src/core/session/useNotebookReplica.ts +74 -0
  805. package/src/core/{websocket → session}/useNotebookSession.tsx +97 -77
  806. package/src/core/state/__tests__/jotai.test.tsx +108 -0
  807. package/src/core/state/jotai.ts +1 -1
  808. package/src/core/static/__tests__/files.test.ts +38 -10
  809. package/src/core/static/files.ts +2 -0
  810. package/src/core/{websocket → transports}/__tests__/connection-state.test.ts +1 -13
  811. package/src/core/transports/__tests__/server.test.ts +408 -0
  812. package/src/core/transports/__tests__/static.test.ts +340 -0
  813. package/src/core/transports/__tests__/wasm.test.ts +166 -0
  814. package/src/core/{websocket → transports}/connection-state.ts +9 -16
  815. package/src/core/transports/server.ts +152 -0
  816. package/src/core/transports/static.ts +180 -0
  817. package/src/core/transports/wasm.ts +95 -0
  818. package/src/core/vscode/__tests__/vscode-bindings.test.ts +125 -0
  819. package/src/core/vscode/vscode-bindings.ts +14 -2
  820. package/src/core/wasm/__tests__/bridge.test.ts +354 -64
  821. package/src/core/wasm/__tests__/worker.test.ts +191 -0
  822. package/src/core/wasm/bridge.ts +167 -92
  823. package/src/core/wasm/rpc.ts +15 -3
  824. package/src/core/wasm/store.ts +3 -3
  825. package/src/core/wasm/worker/bootstrap.ts +55 -51
  826. package/src/core/wasm/worker/getMarimoWheel.ts +1 -1
  827. package/src/core/wasm/worker/save-worker.ts +9 -10
  828. package/src/core/wasm/worker/types.ts +31 -19
  829. package/src/core/wasm/worker/worker.ts +120 -72
  830. package/src/css/app/Cell.css +7 -36
  831. package/src/css/app/codemirror.css +1 -1
  832. package/src/css/common.css +1 -1
  833. package/src/css/globals.css +72 -24
  834. package/src/css/katex.min.css +1 -1
  835. package/src/hooks/__tests__/useAsyncData.test.tsx +148 -0
  836. package/src/hooks/__tests__/useDebounce.test.tsx +51 -0
  837. package/src/hooks/__tests__/useDeepCompareMemoize.test.tsx +39 -0
  838. package/src/hooks/__tests__/useDelayElapsed.test.tsx +28 -0
  839. package/src/hooks/__tests__/useInternalStateWithSync.test.tsx +20 -0
  840. package/src/hooks/__tests__/useScript.test.tsx +77 -0
  841. package/src/hooks/__tests__/useStateForKey.test.tsx +257 -0
  842. package/src/hooks/useAsyncData.ts +3 -3
  843. package/src/hooks/useDataSourceDiscovery.ts +6 -4
  844. package/src/hooks/useDebounce.ts +6 -10
  845. package/src/hooks/useDeepCompareMemoize.ts +1 -1
  846. package/src/hooks/useDelayElapsed.ts +14 -10
  847. package/src/hooks/useElapsedTime.ts +3 -3
  848. package/src/hooks/useEventListener.ts +1 -2
  849. package/src/hooks/useInputHistory.ts +4 -7
  850. package/src/hooks/useInternalStateWithSync.ts +6 -6
  851. package/src/hooks/useResizeObserver.ts +4 -7
  852. package/src/hooks/useScript.ts +67 -70
  853. package/src/hooks/useStateForKey.ts +93 -0
  854. package/src/mount.tsx +22 -23
  855. package/src/plugins/__tests__/plugin-object-schemas.test.ts +104 -0
  856. package/src/plugins/core/RenderHTML.tsx +3 -5
  857. package/src/plugins/core/__test__/PluginSlot.test.tsx +202 -0
  858. package/src/plugins/core/__test__/RenderHTML-copy.test.tsx +60 -0
  859. package/src/plugins/core/__test__/registerReactComponent.test.ts +45 -0
  860. package/src/plugins/core/__test__/sanitize.test.ts +8 -0
  861. package/src/plugins/core/registerReactComponent.tsx +29 -29
  862. package/src/plugins/core/sanitize-html.ts +6 -0
  863. package/src/plugins/impl/CodeEditorPlugin.tsx +1 -1
  864. package/src/plugins/impl/DataEditorPlugin.tsx +60 -28
  865. package/src/plugins/impl/DataTablePlugin.tsx +69 -37
  866. package/src/plugins/impl/DropdownPlugin.tsx +2 -6
  867. package/src/plugins/impl/FileBrowserPlugin.tsx +4 -16
  868. package/src/plugins/impl/FormPlugin.tsx +1 -1
  869. package/src/plugins/impl/RangeSliderPlugin.tsx +16 -2
  870. package/src/plugins/impl/RefreshPlugin.tsx +1 -0
  871. package/src/plugins/impl/SliderPlugin.tsx +41 -11
  872. package/src/plugins/impl/__test__/slider-labels.test.tsx +30 -0
  873. package/src/plugins/impl/__tests__/DataEditorPlugin.test.ts +190 -10
  874. package/src/plugins/impl/__tests__/DataTablePlugin.test.tsx +387 -1
  875. package/src/plugins/impl/__tests__/FileBrowserPlugin.test.tsx +45 -0
  876. package/src/plugins/impl/__tests__/RangeSliderPlugin.test.tsx +109 -0
  877. package/src/plugins/impl/__tests__/SliderPlugin.test.tsx +64 -3
  878. package/src/plugins/impl/anywidget/__tests__/registry.test.ts +153 -0
  879. package/src/plugins/impl/anywidget/__tests__/widget-binding.test.ts +241 -2
  880. package/src/plugins/impl/anywidget/model.ts +3 -1
  881. package/src/plugins/impl/anywidget/registry.ts +18 -14
  882. package/src/plugins/impl/anywidget/runtime.ts +21 -9
  883. package/src/plugins/impl/anywidget/widget-binding.ts +160 -82
  884. package/src/plugins/impl/chat/__tests__/chat-prompts.test.tsx +93 -0
  885. package/src/plugins/impl/chat/chat-ui.tsx +17 -15
  886. package/src/plugins/impl/code/any-language-editor.tsx +2 -2
  887. package/src/plugins/impl/common/error-banner.tsx +5 -3
  888. package/src/plugins/impl/data-editor/__tests__/column-types.test.ts +42 -0
  889. package/src/plugins/impl/data-editor/__tests__/editor-state.test.ts +52 -1
  890. package/src/plugins/impl/data-editor/__tests__/glide-data-editor.test.tsx +278 -7
  891. package/src/plugins/impl/data-editor/__tests__/glide-utils.test.ts +116 -0
  892. package/src/plugins/impl/data-editor/column-types.ts +55 -0
  893. package/src/plugins/impl/data-editor/editor-state.ts +18 -2
  894. package/src/plugins/impl/data-editor/glide-data-editor.tsx +104 -22
  895. package/src/plugins/impl/data-editor/glide-portal.tsx +5 -3
  896. package/src/plugins/impl/data-editor/glide-utils.ts +39 -38
  897. package/src/plugins/impl/data-editor/types.ts +5 -0
  898. package/src/plugins/impl/data-explorer/ConnectedDataExplorerComponent.tsx +1 -1
  899. package/src/plugins/impl/data-explorer/components/column-summary.tsx +4 -2
  900. package/src/plugins/impl/data-explorer/functions/types.ts +1 -5
  901. package/src/plugins/impl/data-explorer/state/reducer.ts +1 -1
  902. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +1 -2
  903. package/src/plugins/impl/data-frames/__tests__/sidebar.test.tsx +160 -0
  904. package/src/plugins/impl/data-frames/forms/__tests__/__snapshots__/form.test.tsx.snap +66 -66
  905. package/src/plugins/impl/data-frames/panel.tsx +44 -16
  906. package/src/plugins/impl/mpl-interactive/MplInteractivePlugin.tsx +5 -3
  907. package/src/plugins/impl/panel/PanelPlugin.tsx +16 -17
  908. package/src/plugins/impl/panel/__tests__/utils.test.ts +39 -1
  909. package/src/plugins/impl/panel/utils.ts +17 -0
  910. package/src/plugins/impl/plotly/PlotlyPlugin.tsx +2 -5
  911. package/src/plugins/impl/plotly/selection.ts +25 -19
  912. package/src/plugins/impl/vega/VegaPlugin.tsx +2 -3
  913. package/src/plugins/impl/vega/make-selectable.ts +4 -7
  914. package/src/plugins/layout/AccordionPlugin.tsx +2 -1
  915. package/src/plugins/layout/DownloadPlugin.tsx +7 -11
  916. package/src/plugins/layout/LazyPlugin.tsx +7 -4
  917. package/src/plugins/layout/RoutesPlugin.tsx +1 -1
  918. package/src/plugins/layout/TexPlugin.tsx +0 -1
  919. package/src/plugins/layout/__test__/DownloadPlugin.test.tsx +205 -0
  920. package/src/plugins/layout/__tests__/AccordionPlugin.test.tsx +21 -0
  921. package/src/plugins/layout/__tests__/LazyPlugin.test.tsx +98 -0
  922. package/src/stories/__tests__/editor-story.test.tsx +33 -0
  923. package/src/stories/button.stories.tsx +1 -0
  924. package/src/stories/cell-status.stories.tsx +29 -24
  925. package/src/stories/cell.stories.tsx +46 -46
  926. package/src/stories/data-table.stories.tsx +31 -0
  927. package/src/stories/editor.stories.tsx +28 -17
  928. package/src/stories/form-wrapper.stories.tsx +2 -2
  929. package/src/stories/layout/vertical/one-column.stories.tsx +28 -42
  930. package/src/stories/runtime-story.tsx +23 -17
  931. package/src/stories/select.stories.tsx +2 -2
  932. package/src/stories/switchable-multi-select.stories.tsx +1 -1
  933. package/src/stories/theme.stories.tsx +4 -1
  934. package/src/theme/__tests__/islands-theme.test.tsx +276 -0
  935. package/src/theme/namespace.tsx +4 -3
  936. package/src/theme/useTheme.ts +71 -41
  937. package/src/utils/__tests__/arrays.test.ts +35 -0
  938. package/src/utils/__tests__/batch-requests.test.ts +3 -3
  939. package/src/utils/__tests__/{createReducer.test.ts → createReducer.test.tsx} +127 -1
  940. package/src/utils/__tests__/download.test.tsx +183 -23
  941. package/src/utils/__tests__/numbers.test.ts +105 -1
  942. package/src/utils/__tests__/objects.test.ts +21 -0
  943. package/src/utils/arrays.ts +11 -2
  944. package/src/utils/blob.ts +1 -1
  945. package/src/utils/createReducer.ts +115 -79
  946. package/src/utils/download.ts +67 -6
  947. package/src/utils/errors.ts +0 -7
  948. package/src/utils/maps.ts +0 -3
  949. package/src/utils/numbers.ts +79 -18
  950. package/src/utils/objects.ts +4 -9
  951. package/src/utils/time.ts +10 -0
  952. package/src/utils/tracer.ts +9 -5
  953. package/src/utils/zod-utils.ts +1 -3
  954. package/dist/_baseMerge-BiGRwuqv.js +0 -165
  955. package/dist/any-language-editor-D4q-IFcM.js +0 -76
  956. package/dist/architecture-7GRP2DOG-BWLylgiA.js +0 -3
  957. package/dist/assets/__vite-browser-external-BXYkiFsk.js +0 -1
  958. package/dist/assets/worker-HPY9fbhz.js +0 -114
  959. package/dist/classDiagram-ZZMXUADV-DXdCCDOg.js +0 -30
  960. package/dist/classDiagram-v2-VYDZK3BY-DyZqrtLP.js +0 -30
  961. package/dist/code-visibility-A6NQ-XVM.js +0 -138
  962. package/dist/cynefin-OW5HDTMX-obq-i80l.js +0 -3
  963. package/dist/dropdown-menu-BuE2b8Yb.js +0 -4678
  964. package/dist/eventmodeling-NTZA5JFV-D7nP7Uyu.js +0 -3
  965. package/dist/flowDiagram-HODETNUW-DQ4JuadE.js +0 -16
  966. package/dist/gitGraph-4MIJSDKK-Dy9uQXGh.js +0 -3
  967. package/dist/hasIn-o2Us0uVx.js +0 -132
  968. package/dist/highlighted-body-KPVGNVTW-3Ziwfz-V.js +0 -38
  969. package/dist/html-to-image-BsG_zyNW.js +0 -3251
  970. package/dist/info-A6RAGUB7-DKoayiHY.js +0 -3
  971. package/dist/isArrayLikeObject-BZl-15ir.js +0 -450
  972. package/dist/isEmpty-BSZ1LaUo.js +0 -35
  973. package/dist/isSymbol-kQcfYbNX.js +0 -8
  974. package/dist/label-DoysmLMW.js +0 -281
  975. package/dist/linear-DWERh7eI.js +0 -252
  976. package/dist/mermaid-HWGCJPDP-Du3-HPQA.js +0 -2
  977. package/dist/packet-AYTQ26CC-Yw7ajchJ.js +0 -3
  978. package/dist/pick-CJeoxYOS.js +0 -51
  979. package/dist/pie-WAS4IAKB-BKdKOAkL.js +0 -3
  980. package/dist/precisionRound-DhAzeRcm.js +0 -49
  981. package/dist/purify.es-DMv5zIkJ.js +0 -866
  982. package/dist/radar-RG4KPBEZ-ScR_D_Ts.js +0 -3
  983. package/dist/railroad-74A4TZTK-DQvPSdo5.js +0 -3
  984. package/dist/railroad-abnf-HS5TGJTU-CsJQG2O8.js +0 -3
  985. package/dist/railroad-ebnf-LZEXJU2U-BgEobkSn.js +0 -3
  986. package/dist/railroad-peg-WCYAUIDC-DjLAjofI.js +0 -3
  987. package/dist/select-DemoKT4G.js +0 -1344
  988. package/dist/stateDiagram-v2-MP3YSRHH-1OQRe6iA.js +0 -30
  989. package/dist/swimlanesDiagram-VR7AAH4N-CszjkrKo.js +0 -30
  990. package/dist/toDate-gyi35XS2.js +0 -1185
  991. package/dist/toast-PkdZraM8.js +0 -1830
  992. package/dist/treeView-Q6P3EWNA-DuRV97YF.js +0 -3
  993. package/dist/treemap-WGGIJYW6-AsLq-uwC.js +0 -3
  994. package/dist/use-restore-focus-CKjfFjLM.js +0 -6369
  995. package/dist/useLifecycle-Dfq8UD-b.js +0 -169
  996. package/dist/useTheme-Bu5bBgrh.js +0 -904
  997. package/dist/wardley-WFR3VGLG-Na-tFhQJ.js +0 -3
  998. package/src/components/chat/reasoning-accordion.tsx +0 -61
  999. package/src/components/chat/tool-call/tool-error-card.tsx +0 -81
  1000. package/src/components/chat/tool-call/tool-history-row.tsx +0 -174
  1001. package/src/components/editor/ai/__tests__/staged-cell-submission.test.ts +0 -106
  1002. package/src/components/editor/ai/add-cell-with-ai.tsx +0 -506
  1003. package/src/components/editor/ai/staged-cell-submission.ts +0 -46
  1004. package/src/components/editor/alerts/connecting-alert.tsx +0 -27
  1005. package/src/components/editor/cell/__tests__/StagedAICell.test.tsx +0 -64
  1006. package/src/components/editor/cell/code/__tests__/rtc-editor-config.test.ts +0 -50
  1007. package/src/components/editor/chrome/wrapper/footer-items/rtc-status.tsx +0 -65
  1008. package/src/components/editor/navigation/__tests__/state.test.ts +0 -81
  1009. package/src/components/editor/navigation/state.ts +0 -65
  1010. package/src/components/icons/loading-ellipsis.tsx +0 -46
  1011. package/src/core/ai/tools/__tests__/run-cells-tool.test.ts +0 -656
  1012. package/src/core/ai/tools/run-cells-tool.ts +0 -303
  1013. package/src/core/attachments/state.ts +0 -18
  1014. package/src/core/cells/__tests__/apply-transaction.test.ts +0 -991
  1015. package/src/core/cells/__tests__/document-changes.test.ts +0 -1140
  1016. package/src/core/cells/__tests__/document-roundtrip.test.ts +0 -392
  1017. package/src/core/cells/document-changes.ts +0 -944
  1018. package/src/core/codemirror/rtc/extension.ts +0 -453
  1019. package/src/core/codemirror/rtc/loro/__tests__/sync.test.ts +0 -52
  1020. package/src/core/codemirror/rtc/loro/awareness.ts +0 -531
  1021. package/src/core/codemirror/rtc/loro/colors.ts +0 -38
  1022. package/src/core/codemirror/rtc/loro/sync.ts +0 -168
  1023. package/src/core/host/AGENTS.md +0 -11
  1024. package/src/core/host/__tests__/events.test.ts +0 -46
  1025. package/src/core/host/__tests__/fixtures.ts +0 -39
  1026. package/src/core/host/__tests__/notebook-client.test.ts +0 -433
  1027. package/src/core/host/__tests__/protocol.test.ts +0 -229
  1028. package/src/core/host/__tests__/stream.test.ts +0 -209
  1029. package/src/core/host/connection.ts +0 -81
  1030. package/src/core/host/events.ts +0 -61
  1031. package/src/core/host/notebook-client.ts +0 -290
  1032. package/src/core/host/protocol.ts +0 -1948
  1033. package/src/core/host/resources/resource.ts +0 -47
  1034. package/src/core/host/stream.ts +0 -211
  1035. package/src/core/network/__tests__/requests-lazy.test.ts +0 -334
  1036. package/src/core/network/requests-lazy.ts +0 -226
  1037. package/src/core/rtc/state.ts +0 -34
  1038. package/src/core/state/__tests__/jotai.test.ts +0 -25
  1039. package/src/core/wasm/worker/message-buffer.ts +0 -33
  1040. package/src/core/websocket/__tests__/createConnectionTransport.test.ts +0 -49
  1041. package/src/core/websocket/__tests__/useNotebookClient.hook.test.tsx +0 -170
  1042. package/src/core/websocket/state.ts +0 -7
  1043. package/src/core/websocket/transports/__tests__/basic.test.ts +0 -275
  1044. package/src/core/websocket/transports/__tests__/sse.test.ts +0 -335
  1045. package/src/core/websocket/transports/__tests__/transport.test.ts +0 -308
  1046. package/src/core/websocket/transports/__tests__/ws.test.ts +0 -125
  1047. package/src/core/websocket/transports/basic.ts +0 -102
  1048. package/src/core/websocket/transports/create.ts +0 -31
  1049. package/src/core/websocket/transports/sse.ts +0 -308
  1050. package/src/core/websocket/transports/transport.ts +0 -50
  1051. package/src/core/websocket/transports/ws.ts +0 -98
  1052. package/src/core/websocket/useNotebookClient.ts +0 -88
  1053. package/src/utils/__tests__/id-tree.test.ts +0 -2145
  1054. package/src/utils/id-tree.tsx +0 -1134
  1055. /package/src/{core/attachments/toast.ts → components/editor/agent-toast.ts} +0 -0
@@ -48,6 +48,7 @@ import { DEFAULT_AI_MODEL, type UserConfig } from "@/core/config/config-schema";
48
48
  import { isWasm } from "@/core/wasm/utils";
49
49
  import { cn } from "@/utils/cn";
50
50
  import { Events } from "@/utils/events";
51
+ import { Objects } from "@/utils/objects";
51
52
  import { Strings } from "@/utils/strings";
52
53
  import { AIModelDropdown, getProviderLabel } from "../ai/ai-model-dropdown";
53
54
  import {
@@ -118,7 +119,7 @@ export const AiProviderTitle: React.FC<AiProviderTitleProps> = ({
118
119
  children,
119
120
  }) => {
120
121
  return (
121
- <div className="flex items-center text-base font-semibold">
122
+ <div className="flex items-center text-sm font-medium">
122
123
  {provider && <AiProviderIcon provider={provider} className="mr-2" />}
123
124
  {children}
124
125
  </div>
@@ -148,9 +149,10 @@ export const ApiKey: React.FC<ApiKeyProps> = ({
148
149
  control={form.control}
149
150
  name={name}
150
151
  render={({ field, override }) => (
151
- <div className="flex flex-col space-y-1">
152
+ <div className="settings-field flex flex-col space-y-1">
152
153
  <FormItem className={formItemClasses}>
153
- <FormLabel>API Key</FormLabel>
154
+ <FormLabel>API key</FormLabel>
155
+ {description && <FormDescription>{description}</FormDescription>}
154
156
  <FormControl>
155
157
  <Input
156
158
  data-testid={testId}
@@ -173,7 +175,6 @@ export const ApiKey: React.FC<ApiKeyProps> = ({
173
175
  <FormMessage />
174
176
  <IsOverridden override={override} />
175
177
  </FormItem>
176
- {description && <FormDescription>{description}</FormDescription>}
177
178
  </div>
178
179
  )}
179
180
  />
@@ -217,9 +218,10 @@ export const BaseUrl: React.FC<BaseUrlProps> = ({
217
218
  control={form.control}
218
219
  name={name}
219
220
  render={({ field, override }) => (
220
- <div className="flex flex-col space-y-1">
221
+ <div className="settings-field flex flex-col space-y-1">
221
222
  <FormItem className={formItemClasses}>
222
223
  <FormLabel>Base URL</FormLabel>
224
+ {description && <FormDescription>{description}</FormDescription>}
223
225
  <FormControl>
224
226
  <Input
225
227
  data-testid={testId}
@@ -238,7 +240,6 @@ export const BaseUrl: React.FC<BaseUrlProps> = ({
238
240
  <FormMessage />
239
241
  <IsOverridden override={override} />
240
242
  </FormItem>
241
- {description && <FormDescription>{description}</FormDescription>}
242
243
  </div>
243
244
  )}
244
245
  />
@@ -282,6 +283,7 @@ export const ModelSelector: React.FC<ModelSelectorProps> = ({
282
283
  const renderFormItem = () => (
283
284
  <FormItem className={formItemClasses}>
284
285
  <FormLabel>{label}</FormLabel>
286
+ {description && <FormDescription>{description}</FormDescription>}
285
287
  <FormControl>
286
288
  <AIModelDropdown
287
289
  value={value}
@@ -324,11 +326,10 @@ export const ModelSelector: React.FC<ModelSelectorProps> = ({
324
326
  );
325
327
 
326
328
  return (
327
- <div className="flex flex-col space-y-1">
329
+ <div className="settings-field flex flex-col space-y-1">
328
330
  {renderFormItem()}
329
331
  <IsOverridden override={override} />
330
332
  <IncorrectModelId value={value} />
331
- {description && <FormDescription>{description}</FormDescription>}
332
333
  </div>
333
334
  );
334
335
  }}
@@ -343,6 +344,7 @@ interface ProviderSelectProps {
343
344
  options: string[];
344
345
  testId: string;
345
346
  disabled?: boolean;
347
+ description?: React.ReactNode;
346
348
  }
347
349
 
348
350
  export const ProviderSelect: React.FC<ProviderSelectProps> = ({
@@ -351,15 +353,17 @@ export const ProviderSelect: React.FC<ProviderSelectProps> = ({
351
353
  options,
352
354
  testId,
353
355
  disabled = false,
356
+ description,
354
357
  }) => {
355
358
  return (
356
359
  <OverriddenFormField
357
360
  control={form.control}
358
361
  name={name}
359
362
  render={({ field, override }) => (
360
- <div className="flex flex-col space-y-1">
363
+ <div className="settings-field flex flex-col space-y-1">
361
364
  <FormItem className={formItemClasses}>
362
365
  <FormLabel>Provider</FormLabel>
366
+ {description && <FormDescription>{description}</FormDescription>}
363
367
  <FormControl>
364
368
  <NativeSelect
365
369
  data-testid={testId}
@@ -439,7 +443,7 @@ const renderCopilotProvider = ({
439
443
  if (copilot === "custom") {
440
444
  return (
441
445
  <ModelSelector
442
- label="Autocomplete Model"
446
+ label="Autocomplete model"
443
447
  form={form}
444
448
  config={config}
445
449
  name="ai.models.autocomplete_model"
@@ -460,7 +464,9 @@ const SettingGroup = ({
460
464
  className?: string;
461
465
  }) => {
462
466
  return (
463
- <div className={cn("flex flex-col gap-4 pb-4", className)}>{children}</div>
467
+ <div className={cn("settings-group flex flex-col gap-4", className)}>
468
+ {children}
469
+ </div>
464
470
  );
465
471
  };
466
472
 
@@ -501,6 +507,7 @@ const ModelListItem: React.FC<ModelListItemProps> = ({
501
507
  <ModelInfoCard model={model} />
502
508
  {model.custom && (
503
509
  <Button
510
+ aria-label={`Delete model ${model.name}`}
504
511
  variant="ghost"
505
512
  size="icon"
506
513
  onClick={handleDelete}
@@ -561,18 +568,14 @@ export const AiCodeCompletionConfig: React.FC<AiConfigProps> = ({
561
568
  const { value: copilot } = getOverride("completion.copilot", watchedCopilot);
562
569
  return (
563
570
  <SettingGroup>
564
- <SettingSubtitle>Code Completion</SettingSubtitle>
565
- <p className="text-sm text-muted-secondary">
566
- Choose GitHub Copilot, Codeium, or a custom provider (such as Ollama) to
567
- enable AI-powered code completion.
568
- </p>
569
-
571
+ <SettingSubtitle>Copilot</SettingSubtitle>
570
572
  <ProviderSelect
571
573
  form={form}
572
574
  config={config}
573
575
  name="completion.copilot"
574
576
  options={["none", "github", "codeium", "custom"]}
575
577
  testId="copilot-select"
578
+ description="Choose GitHub Copilot, Codeium, or a custom provider (such as Ollama) to enable AI-powered code completion."
576
579
  />
577
580
 
578
581
  {renderCopilotProvider({ form, config, onSubmit, copilot })}
@@ -681,7 +684,10 @@ export const CustomProvidersConfig: React.FC<AiConfigProps> = ({
681
684
  };
682
685
 
683
686
  const removeProvider = (providerName: string) => {
684
- const { [providerName]: _, ...rest } = customProviders;
687
+ const rest = Objects.filter(
688
+ customProviders,
689
+ (_, name) => name !== providerName,
690
+ );
685
691
  // Reset to clear nested dirty state, then set new value
686
692
  form.resetField("ai.custom_providers");
687
693
  form.setValue("ai.custom_providers", rest, { shouldDirty: true });
@@ -691,7 +697,7 @@ export const CustomProvidersConfig: React.FC<AiConfigProps> = ({
691
697
  const providerForm = (
692
698
  <div className="flex flex-col gap-3 p-4 border border-border rounded-md bg-muted/20">
693
699
  <div className="flex flex-col gap-1.5">
694
- <Label htmlFor={providerNameInputId}>Provider Name</Label>
700
+ <Label htmlFor={providerNameInputId}>Provider name</Label>
695
701
  <Input
696
702
  id={providerNameInputId}
697
703
  placeholder="e.g., together, groq, mistral"
@@ -729,7 +735,7 @@ export const CustomProvidersConfig: React.FC<AiConfigProps> = ({
729
735
  </div>
730
736
 
731
737
  <div className="flex flex-col gap-1.5">
732
- <Label htmlFor={apiKeyInputId}>API Key (optional)</Label>
738
+ <Label htmlFor={apiKeyInputId}>API key (optional)</Label>
733
739
  <Input
734
740
  id={apiKeyInputId}
735
741
  placeholder="sk-..."
@@ -745,7 +751,7 @@ export const CustomProvidersConfig: React.FC<AiConfigProps> = ({
745
751
  disabled={!hasValidValues}
746
752
  size="xs"
747
753
  >
748
- Add Provider
754
+ Add provider
749
755
  </Button>
750
756
  <Button variant="outline" onClick={resetForm} size="xs">
751
757
  Cancel
@@ -834,7 +840,7 @@ export const CustomProvidersConfig: React.FC<AiConfigProps> = ({
834
840
  className="w-fit self-end"
835
841
  >
836
842
  <Trash2Icon className="h-4 w-4 mr-2" />
837
- Remove Provider
843
+ Remove provider
838
844
  </Button>
839
845
  </AccordionFormItem>
840
846
  );
@@ -842,10 +848,10 @@ export const CustomProvidersConfig: React.FC<AiConfigProps> = ({
842
848
 
843
849
  return (
844
850
  <SettingGroup>
845
- <SettingSubtitle>Custom Providers</SettingSubtitle>
851
+ <SettingSubtitle>Custom providers</SettingSubtitle>
846
852
  <p className="text-sm text-muted-secondary">
847
853
  Add your own OpenAI-compatible provider. Once added, you can
848
- configure models in the AI Models tab.
854
+ configure models in the AI models tab.
849
855
  </p>
850
856
 
851
857
  {customProviderEntries.length > 0 && (
@@ -867,7 +873,7 @@ export const CustomProvidersConfig: React.FC<AiConfigProps> = ({
867
873
  className="self-start"
868
874
  isFormOpen={isAddingProvider}
869
875
  setIsFormOpen={setIsAddingProvider}
870
- label="Add Provider"
876
+ label="Add provider"
871
877
  />
872
878
  )}
873
879
  </SettingGroup>
@@ -1203,9 +1209,12 @@ export const AiProvidersConfig: React.FC<AiConfigProps> = ({
1203
1209
  disabled={isWasmRuntime}
1204
1210
  name="ai.bedrock.region_name"
1205
1211
  render={({ field, override }) => (
1206
- <div className="flex flex-col space-y-1">
1212
+ <div className="settings-field flex flex-col space-y-1">
1207
1213
  <FormItem className={formItemClasses}>
1208
- <FormLabel>AWS Region</FormLabel>
1214
+ <FormLabel>AWS region</FormLabel>
1215
+ <FormDescription>
1216
+ The AWS region where Bedrock service is available.
1217
+ </FormDescription>
1209
1218
  <FormControl>
1210
1219
  <NativeSelect
1211
1220
  data-testid="bedrock-region-select"
@@ -1228,9 +1237,6 @@ export const AiProvidersConfig: React.FC<AiConfigProps> = ({
1228
1237
  <FormMessage />
1229
1238
  <IsOverridden override={override} />
1230
1239
  </FormItem>
1231
- <FormDescription>
1232
- The AWS region where Bedrock service is available.
1233
- </FormDescription>
1234
1240
  </div>
1235
1241
  )}
1236
1242
  />
@@ -1240,9 +1246,13 @@ export const AiProvidersConfig: React.FC<AiConfigProps> = ({
1240
1246
  disabled={isWasmRuntime}
1241
1247
  name="ai.bedrock.profile_name"
1242
1248
  render={({ field, override }) => (
1243
- <div className="flex flex-col space-y-1">
1249
+ <div className="settings-field flex flex-col space-y-1">
1244
1250
  <FormItem className={formItemClasses}>
1245
- <FormLabel>AWS Profile Name (Optional)</FormLabel>
1251
+ <FormLabel>AWS profile name (optional)</FormLabel>
1252
+ <FormDescription>
1253
+ The AWS profile name from your ~/.aws/credentials file.
1254
+ Leave blank to use your default AWS credentials.
1255
+ </FormDescription>
1246
1256
  <FormControl>
1247
1257
  <Input
1248
1258
  data-testid="bedrock-profile-input"
@@ -1257,17 +1267,13 @@ export const AiProvidersConfig: React.FC<AiConfigProps> = ({
1257
1267
  <FormMessage />
1258
1268
  <IsOverridden override={override} />
1259
1269
  </FormItem>
1260
- <FormDescription>
1261
- The AWS profile name from your ~/.aws/credentials file. Leave
1262
- blank to use your default AWS credentials.
1263
- </FormDescription>
1264
1270
  </div>
1265
1271
  )}
1266
1272
  />
1267
1273
  </AccordionFormItem>
1268
1274
 
1269
1275
  <AccordionFormItem
1270
- title="OpenAI-Compatible (Legacy)"
1276
+ title="OpenAI-compatible (legacy)"
1271
1277
  provider="openai-compatible"
1272
1278
  isConfigured={
1273
1279
  hasValue("ai.open_ai_compatible.api_key") &&
@@ -1275,7 +1281,7 @@ export const AiProvidersConfig: React.FC<AiConfigProps> = ({
1275
1281
  }
1276
1282
  >
1277
1283
  <p className="text-sm text-amber-600 dark:text-amber-400 mb-2">
1278
- Consider using Custom Providers instead, which allows you to add
1284
+ Consider using Custom providers instead, which allows you to add
1279
1285
  multiple providers with distinct names.
1280
1286
  </p>
1281
1287
  <ApiKey
@@ -1321,98 +1327,11 @@ export const AiAssistConfig: React.FC<AiConfigProps> = ({
1321
1327
 
1322
1328
  return (
1323
1329
  <SettingGroup>
1324
- <SettingSubtitle>AI Assistant</SettingSubtitle>
1325
-
1326
- <FormField
1327
- control={form.control}
1328
- name="ai.inline_tooltip"
1329
- render={({ field }) => (
1330
- <div className="flex flex-col gap-y-1">
1331
- <FormItem className={formItemClasses}>
1332
- <FormLabel className="font-normal">AI Edit Tooltip</FormLabel>
1333
- <FormControl>
1334
- <Checkbox
1335
- data-testid="inline-ai-checkbox"
1336
- checked={field.value === true}
1337
- onCheckedChange={field.onChange}
1338
- />
1339
- </FormControl>
1340
- </FormItem>
1341
- <FormDescription>
1342
- Enable "Edit with AI" tooltip when selecting code.
1343
- </FormDescription>
1344
- </div>
1345
- )}
1346
- />
1347
-
1348
- <FormField
1349
- control={form.control}
1350
- name="ai.max_tokens"
1351
- render={({ field }) => {
1352
- return (
1353
- <div className="flex flex-col gap-y-1">
1354
- <div className="flex items-center gap-x-2">
1355
- <FormItem className={formItemClasses}>
1356
- <FormLabel className="font-normal">
1357
- Max output tokens
1358
- </FormLabel>
1359
- <FormControl>
1360
- <Input
1361
- data-testid="ai-max-tokens-input"
1362
- type="number"
1363
- min={1}
1364
- disabled={!maxTokensEnabled}
1365
- className="w-28 h-6"
1366
- value={field.value ?? (maxTokensEnabled ? "" : 32768)}
1367
- onChange={(e) => {
1368
- const n = Number.parseInt(e.target.value, 10);
1369
- field.onChange(Number.isFinite(n) && n > 0 ? n : null);
1370
- }}
1371
- />
1372
- </FormControl>
1373
- </FormItem>
1374
- <FormItem className={formItemClasses}>
1375
- <Checkbox
1376
- data-testid="ai-max-tokens-checkbox"
1377
- checked={maxTokensEnabled}
1378
- onCheckedChange={(checked) => {
1379
- const isChecked = checked === true;
1380
- setMaxTokensEnabled(isChecked);
1381
- // null signals delete to the server; cast because
1382
- // UserConfig (OpenAPI-derived) types max_tokens as
1383
- // `number | undefined`, but zod accepts `null`.
1384
- const next = (
1385
- isChecked ? (field.value ?? 32768) : null
1386
- ) as number | undefined;
1387
- // shouldDirty: true forces RHF to keep this in
1388
- // dirtyFields even when `next` happens to equal the
1389
- // form's defaultValue (e.g. untick → tick when disk
1390
- // started with 32768). Otherwise getDirtyValues
1391
- // would skip it and the save body would be empty.
1392
- form.setValue("ai.max_tokens", next, {
1393
- shouldDirty: true,
1394
- shouldTouch: true,
1395
- });
1396
- onSubmit(form.getValues());
1397
- }}
1398
- />
1399
- <FormLabel className="font-normal">Override</FormLabel>
1400
- </FormItem>
1401
- </div>
1402
-
1403
- <FormDescription>
1404
- Each provider sets its own max output tokens (Anthropic uses a
1405
- recommended default). Adjust to control costs or enable more
1406
- output.
1407
- </FormDescription>
1408
- </div>
1409
- );
1410
- }}
1411
- />
1330
+ <SettingSubtitle>AI assistant</SettingSubtitle>
1412
1331
 
1413
1332
  <FormErrorsBanner />
1414
1333
  <ModelSelector
1415
- label="Chat Model"
1334
+ label="Chat model"
1416
1335
  form={form}
1417
1336
  config={config}
1418
1337
  name="ai.models.chat_model"
@@ -1424,7 +1343,7 @@ export const AiAssistConfig: React.FC<AiConfigProps> = ({
1424
1343
  onSubmit={onSubmit}
1425
1344
  />
1426
1345
  <ModelSelector
1427
- label="Edit Model"
1346
+ label="Edit model"
1428
1347
  form={form}
1429
1348
  config={config}
1430
1349
  name="ai.models.edit_model"
@@ -1432,20 +1351,85 @@ export const AiAssistConfig: React.FC<AiConfigProps> = ({
1432
1351
  description={
1433
1352
  <span>
1434
1353
  Model to use for code editing with the{" "}
1435
- <Kbd className="inline">Generate with AI</Kbd> button.
1354
+ <Kbd className="inline">Edit with AI</Kbd> action.
1436
1355
  </span>
1437
1356
  }
1438
1357
  forRole="edit"
1439
1358
  onSubmit={onSubmit}
1440
1359
  />
1441
1360
 
1361
+ <FormField
1362
+ control={form.control}
1363
+ name="ai.max_tokens"
1364
+ render={({ field }) => {
1365
+ return (
1366
+ <div className="settings-field flex flex-col gap-y-1">
1367
+ <FormItem className={formItemClasses}>
1368
+ <FormLabel className="font-normal">Max output tokens</FormLabel>
1369
+ <FormDescription>
1370
+ Limit output tokens for both chat and code edits. When not
1371
+ overridden, each provider uses its default (Anthropic uses a
1372
+ recommended default).
1373
+ </FormDescription>
1374
+ <div className="flex flex-wrap items-center gap-2">
1375
+ <FormControl>
1376
+ <Input
1377
+ data-testid="ai-max-tokens-input"
1378
+ type="number"
1379
+ min={1}
1380
+ disabled={!maxTokensEnabled}
1381
+ className="w-20 h-7"
1382
+ value={field.value ?? (maxTokensEnabled ? "" : 32768)}
1383
+ onChange={(e) => {
1384
+ const n = Number.parseInt(e.target.value, 10);
1385
+ field.onChange(Number.isFinite(n) && n > 0 ? n : null);
1386
+ }}
1387
+ />
1388
+ </FormControl>
1389
+ <FormItem className="flex-row items-center gap-1.5">
1390
+ <FormControl>
1391
+ <Checkbox
1392
+ data-testid="ai-max-tokens-checkbox"
1393
+ checked={maxTokensEnabled}
1394
+ onCheckedChange={(checked) => {
1395
+ const isChecked = checked === true;
1396
+ setMaxTokensEnabled(isChecked);
1397
+ // null signals delete to the server.
1398
+ const next = isChecked
1399
+ ? (field.value ?? 32768)
1400
+ : null;
1401
+ // shouldDirty: true forces RHF to keep this in
1402
+ // dirtyFields even when `next` happens to equal the
1403
+ // form's defaultValue (e.g. untick → tick when disk
1404
+ // started with 32768). Otherwise getDirtyValues
1405
+ // would skip it and the save body would be empty.
1406
+ form.setValue("ai.max_tokens", next, {
1407
+ shouldDirty: true,
1408
+ shouldTouch: true,
1409
+ });
1410
+ onSubmit(form.getValues());
1411
+ }}
1412
+ />
1413
+ </FormControl>
1414
+ <FormLabel className="font-normal">Override</FormLabel>
1415
+ </FormItem>
1416
+ </div>
1417
+ </FormItem>
1418
+ </div>
1419
+ );
1420
+ }}
1421
+ />
1422
+
1442
1423
  <OverriddenFormField
1443
1424
  control={form.control}
1444
1425
  name="ai.rules"
1445
1426
  render={({ field, override }) => (
1446
- <div className="flex flex-col">
1427
+ <div className="settings-field flex flex-col">
1447
1428
  <FormItem>
1448
- <FormLabel>Custom Rules</FormLabel>
1429
+ <FormLabel>Custom rules</FormLabel>
1430
+ <FormDescription>
1431
+ Custom rules to include in all AI completion prompts.
1432
+ </FormDescription>
1449
1433
  <FormControl>
1450
1434
  <Textarea
1451
1435
  data-testid="ai-rules-input"
@@ -1459,8 +1443,28 @@ export const AiAssistConfig: React.FC<AiConfigProps> = ({
1459
1443
  <FormMessage />
1460
1444
  <IsOverridden override={override} />
1461
1445
  </FormItem>
1446
+ </div>
1447
+ )}
1448
+ />
1449
+ <FormField
1450
+ control={form.control}
1451
+ name="ai.inline_tooltip"
1452
+ render={({ field }) => (
1453
+ <div className="settings-field flex flex-col gap-y-1">
1454
+ <FormItem className={formItemClasses}>
1455
+ <FormLabel className="font-normal">
1456
+ Show “Edit with AI” on text selection
1457
+ </FormLabel>
1458
+ <FormControl>
1459
+ <Checkbox
1460
+ data-testid="inline-ai-checkbox"
1461
+ checked={field.value === true}
1462
+ onCheckedChange={field.onChange}
1463
+ />
1464
+ </FormControl>
1465
+ </FormItem>
1462
1466
  <FormDescription>
1463
- Custom rules to include in all AI completion prompts.
1467
+ Enable "Edit with AI" tooltip when selecting code.
1464
1468
  </FormDescription>
1465
1469
  </div>
1466
1470
  )}
@@ -1653,7 +1657,7 @@ export const AiModelDisplayConfig: React.FC<AiConfigProps> = ({
1653
1657
 
1654
1658
  <div className="bg-background">
1655
1659
  <Tree
1656
- aria-label="AI Models by Provider"
1660
+ aria-label="AI models by provider"
1657
1661
  className="flex-1 overflow-auto outline-hidden focus-visible:outline-hidden"
1658
1662
  selectionMode="none"
1659
1663
  >
@@ -1765,7 +1769,7 @@ export const AddModelForm: React.FC<{
1765
1769
  {customProviderNames.length > 0 && (
1766
1770
  <>
1767
1771
  <p className="px-2 py-1 text-xs text-muted-secondary font-medium">
1768
- Custom Providers
1772
+ Custom providers
1769
1773
  </p>
1770
1774
  {customProviderNames.map((p) => (
1771
1775
  <SelectItem key={p} value={p}>
@@ -1777,7 +1781,7 @@ export const AddModelForm: React.FC<{
1777
1781
  ))}
1778
1782
  {knownProviders.length > 0 && (
1779
1783
  <p className="px-2 py-1 text-xs text-muted-secondary font-medium mt-1">
1780
- Built-in Providers
1784
+ Built-in providers
1781
1785
  </p>
1782
1786
  )}
1783
1787
  </>
@@ -1846,7 +1850,7 @@ export const AddModelForm: React.FC<{
1846
1850
  id={modelNameInputId}
1847
1851
  value={modelName}
1848
1852
  onChange={(e) => setModelName(e.target.value)}
1849
- placeholder="gpt-4"
1853
+ placeholder="gpt-5.6-sol"
1850
1854
  className="text-xs mb-0"
1851
1855
  />
1852
1856
  </div>
@@ -1876,7 +1880,7 @@ export const AddModelForm: React.FC<{
1876
1880
  <AddButton
1877
1881
  isFormOpen={isFormOpen}
1878
1882
  setIsFormOpen={setIsFormOpen}
1879
- label="Add Model"
1883
+ label="Add model"
1880
1884
  className="pl-2"
1881
1885
  />
1882
1886
  {modelAdded && (
@@ -1930,9 +1934,9 @@ const AiEnabledConfig: React.FC<AiConfigProps> = ({ form }) => {
1930
1934
  control={form.control}
1931
1935
  name="ai.enabled"
1932
1936
  render={({ field, override }) => (
1933
- <div className="flex flex-col gap-y-1">
1937
+ <div className="settings-field flex flex-col gap-y-1">
1934
1938
  <FormItem className={formItemClasses}>
1935
- <FormLabel className="font-normal">Enable AI features</FormLabel>
1939
+ <FormLabel className="font-normal">Show AI features</FormLabel>
1936
1940
  <FormControl>
1937
1941
  <Checkbox
1938
1942
  data-testid="ai-enabled-checkbox"
@@ -1946,8 +1950,8 @@ const AiEnabledConfig: React.FC<AiConfigProps> = ({ form }) => {
1946
1950
  <IsOverridden override={override} />
1947
1951
  </FormItem>
1948
1952
  <FormDescription>
1949
- When disabled, AI actions and panels are hidden from the marimo
1950
- UI.
1953
+ When disabled, various AI-related features are hidden from the
1954
+ marimo UI.
1951
1955
  </FormDescription>
1952
1956
  </div>
1953
1957
  )}
@@ -1981,32 +1985,32 @@ export const AiConfig: React.FC<AiConfigProps> = ({
1981
1985
  onValueChange={(value) => setActiveTab(value as AiSettingsSubTab)}
1982
1986
  className="flex-1"
1983
1987
  >
1984
- <TabsList className="mb-2">
1985
- <TabsTrigger value="ai-features">AI Features</TabsTrigger>
1988
+ <TabsList className="mb-2 max-w-full justify-start overflow-x-auto">
1989
+ <TabsTrigger value="ai-features">AI features</TabsTrigger>
1986
1990
  {aiEnabled !== false && (
1987
1991
  <>
1988
- <TabsTrigger value="ai-providers">AI Providers</TabsTrigger>
1989
- <TabsTrigger value="ai-models">AI Models</TabsTrigger>
1992
+ <TabsTrigger value="ai-providers">AI providers</TabsTrigger>
1993
+ <TabsTrigger value="ai-models">AI models</TabsTrigger>
1990
1994
  {!wasm && <TabsTrigger value="mcp">MCP</TabsTrigger>}
1991
1995
  </>
1992
1996
  )}
1993
1997
  </TabsList>
1998
+ {aiEnabled !== false && <PairWithAgentBanner className="mt-2 mb-6" />}
1994
1999
 
1995
- <TabsContent value="ai-features">
2000
+ <TabsContent value="ai-features" className="space-y-6">
2001
+ {aiEnabled !== false && (
2002
+ <AiAssistConfig form={form} config={config} onSubmit={onSubmit} />
2003
+ )}
1996
2004
  <AiCodeCompletionConfig
1997
2005
  form={form}
1998
2006
  config={config}
1999
2007
  onSubmit={onSubmit}
2000
2008
  />
2001
2009
  <AiEnabledConfig form={form} config={config} onSubmit={onSubmit} />
2002
- {aiEnabled !== false && (
2003
- <AiAssistConfig form={form} config={config} onSubmit={onSubmit} />
2004
- )}
2005
2010
  </TabsContent>
2006
2011
  {aiEnabled !== false && (
2007
2012
  <>
2008
2013
  <TabsContent value="ai-providers">
2009
- <PairWithAgentBanner className="mb-4" />
2010
2014
  <AiProvidersConfig
2011
2015
  form={form}
2012
2016
  config={config}
@@ -2,7 +2,6 @@
2
2
 
3
3
  import { useAtom } from "jotai";
4
4
  import { SettingsIcon } from "lucide-react";
5
- import { VisuallyHidden } from "react-aria";
6
5
  import { AppConfigForm } from "@/components/app-config/app-config-form";
7
6
  import {
8
7
  Popover,
@@ -51,10 +50,12 @@ export const ConfigButton: React.FC<Props> = ({
51
50
  );
52
51
 
53
52
  const userSettingsDialog = (
54
- <DialogContent className="w-[90vw] h-[90vh] overflow-hidden sm:max-w-5xl top-[5vh] p-0">
55
- <VisuallyHidden>
56
- <DialogTitle>User settings</DialogTitle>
57
- </VisuallyHidden>
53
+ <DialogContent className="flex flex-col gap-0 w-[94vw] h-[90vh] overflow-hidden sm:max-w-5xl top-[5vh] p-0 font-prose">
54
+ <div className="border-b px-6 py-4 pr-12">
55
+ <DialogTitle className="text-base font-semibold">
56
+ User settings
57
+ </DialogTitle>
58
+ </div>
58
59
  <UserConfigForm />
59
60
  </DialogContent>
60
61
  );
@@ -37,7 +37,7 @@ import {
37
37
  const FORM_DEBOUNCE = 100; // ms;
38
38
 
39
39
  export const AppConfigForm: React.FC = () => {
40
- const [config, setConfig] = useAppConfig();
40
+ const config = useAppConfig();
41
41
  const { saveAppConfig } = useRequestClient();
42
42
  const htmlCheckboxId = useId();
43
43
  const ipynbCheckboxId = useId();
@@ -50,18 +50,14 @@ export const AppConfigForm: React.FC = () => {
50
50
  defaultValues: config,
51
51
  });
52
52
 
53
+ // The host document carries the saved config back.
53
54
  const onSubmit = async (values: AppConfig) => {
54
- await saveAppConfig({ config: values })
55
- .then(() => {
56
- setConfig(values);
57
- })
58
- .catch(() => {
59
- setConfig(values);
60
- });
55
+ await saveAppConfig({ config: values });
61
56
  };
62
57
 
63
58
  const debouncedSubmit = useDebouncedCallback((v: AppConfig) => {
64
- onSubmit(v);
59
+ // The request client reports a failed save, so nothing is left to handle.
60
+ onSubmit(v).catch(() => undefined);
65
61
  }, FORM_DEBOUNCE);
66
62
 
67
63
  // When width is changed, dispatch a resize event so widgets know to resize