@marimo-team/frontend 0.23.9-dev9 → 0.23.10-dev0

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 (600) hide show
  1. package/dist/assets/{CellStatus-D_-Xs2i2.js → CellStatus-BLWR83i_.js} +1 -1
  2. package/dist/assets/{ConnectedDataExplorerComponent-CKOLvj_e.js → ConnectedDataExplorerComponent-W0UfNkj7.js} +1 -1
  3. package/dist/assets/JsonOutput-BJaeXQim.js +53 -0
  4. package/dist/assets/LazyAnyLanguageCodeMirror-BEvXb3VX.js +2 -0
  5. package/dist/assets/MarimoErrorOutput-B0h5OVW9.js +7 -0
  6. package/dist/assets/{RenderHTML-IGRZU9wj.js → RenderHTML-ChwPJgPd.js} +1 -1
  7. package/dist/assets/{RunButton-Cf9ByHXe.js → RunButton-NDsrcmxR.js} +1 -1
  8. package/dist/assets/{add-cell-with-ai-9EyttqGQ.js → add-cell-with-ai-FxJitVGs.js} +21 -21
  9. package/dist/assets/{add-connection-dialog-Bqsr9NiO.js → add-connection-dialog-EgkKupsZ.js} +1 -1
  10. package/dist/assets/{agent-panel-CSzzOKD1.js → agent-panel-BSt1fSQZ.js} +6 -6
  11. package/dist/assets/ai-model-dropdown-DxAk02Lc.js +5 -0
  12. package/dist/assets/{any-language-editor-Cs-Qsdlp.js → any-language-editor-CXeLf_N8.js} +1 -1
  13. package/dist/assets/apl-EAxnZS_5.js +1 -0
  14. package/dist/assets/{app-config-button-Cooknt8P.js → app-config-button-BcOcIm9W.js} +1 -1
  15. package/dist/assets/{arc-D0XsJSsf.js → arc-CWuN1tfc.js} +1 -1
  16. package/dist/assets/{architecture-7HQA4BMR-CyeFAHwy.js → architecture-7HQA4BMR-DJtUfdk-.js} +1 -1
  17. package/dist/assets/{architectureDiagram-VXUJARFQ-1WJT-eC3.js → architectureDiagram-VXUJARFQ-Cgi4wo9P.js} +1 -1
  18. package/dist/assets/arrow-right-pRnMoIOW.js +1 -0
  19. package/dist/assets/asciiarmor-zxnaShQE.js +1 -0
  20. package/dist/assets/asn1-7i28Os5R.js +1 -0
  21. package/dist/assets/{blockDiagram-VD42YOAC-JexHZqqE.js → blockDiagram-VD42YOAC-CsHap8-F.js} +1 -1
  22. package/dist/assets/brainfuck-BZegPsXK.js +1 -0
  23. package/dist/assets/{c4Diagram-YG6GDRKO-Bq-DoY7t.js → c4Diagram-YG6GDRKO-CZuArudM.js} +1 -1
  24. package/dist/assets/{cache-panel-CZqzacQu.js → cache-panel-DYiVMv5x.js} +1 -1
  25. package/dist/assets/cell-editor-C5CDtKML.js +20 -0
  26. package/dist/assets/{cell-link-VlbhstGP.js → cell-link-B1pHtGWp.js} +1 -1
  27. package/dist/assets/{cells-WW455pbI.js → cells-BsaJrRWi.js} +60 -62
  28. package/dist/assets/channel-6XBTrC3Q.js +1 -0
  29. package/dist/assets/{chat-display-0SSKyMkt.js → chat-display-ccjE30z9.js} +1 -1
  30. package/dist/assets/chat-panel-CtvtP3kb.js +3 -0
  31. package/dist/assets/chat-ui-DV8CD_s1.js +4 -0
  32. package/dist/assets/{chunk-4BX2VUAB-Dhno12SW.js → chunk-4BX2VUAB-Ca6WzYTr.js} +1 -1
  33. package/dist/assets/chunk-55IACEB6-Cr4aqhf3.js +1 -0
  34. package/dist/assets/{chunk-5FQGJX7Z-BzXnQz5s.js → chunk-5FQGJX7Z-D9iBG0F7.js} +2 -2
  35. package/dist/assets/{chunk-ABZYJK2D-fbQovzbZ.js → chunk-ABZYJK2D-BG7Eb4WW.js} +3 -3
  36. package/dist/assets/{chunk-ATLVNIR6-C71UReOL.js → chunk-ATLVNIR6-CqLn9HI1.js} +1 -1
  37. package/dist/assets/{chunk-B4BG7PRW-ChmO4xUA.js → chunk-B4BG7PRW-D4SyZNjn.js} +1 -1
  38. package/dist/assets/{chunk-CVBHYZKI-B6tT645I.js → chunk-CVBHYZKI-C-NWvPQL.js} +1 -1
  39. package/dist/assets/{chunk-DI55MBZ5-DaLBJUsc.js → chunk-DI55MBZ5-t9uiMPiN.js} +1 -1
  40. package/dist/assets/{chunk-EXTU4WIE-B3Lv3QWb.js → chunk-EXTU4WIE-BmVk7Fyq.js} +1 -1
  41. package/dist/assets/{chunk-FMBD7UC4-CDFiCFLp.js → chunk-FMBD7UC4-DlnzxSkO.js} +1 -1
  42. package/dist/assets/{chunk-HN2XXSSU-xW6J7MXn.js → chunk-HN2XXSSU-Bcaj5fRB.js} +1 -1
  43. package/dist/assets/{chunk-JA3XYJ7Z-jqUKn_dB.js → chunk-JA3XYJ7Z-B5b2QHOb.js} +1 -1
  44. package/dist/assets/{chunk-JZLCHNYA-xGZ72asD.js → chunk-JZLCHNYA-1_sVfAnw.js} +1 -1
  45. package/dist/assets/{chunk-MI3HLSF2-CXMqGP2w.js → chunk-MI3HLSF2-DqzZqBCh.js} +1 -1
  46. package/dist/assets/{chunk-N4CR4FBY-D8iMP1ch.js → chunk-N4CR4FBY-CFJoD-EQ.js} +2 -2
  47. package/dist/assets/{chunk-QN33PNHL-Ddzf5Xc1.js → chunk-QN33PNHL-BBE_bx9E.js} +1 -1
  48. package/dist/assets/{chunk-QXUST7PY-BUBd7EW9.js → chunk-QXUST7PY-Cu1nR-L2.js} +1 -1
  49. package/dist/assets/{chunk-QZHKN3VN-37WEuSLJ.js → chunk-QZHKN3VN-BAnb9AKF.js} +1 -1
  50. package/dist/assets/{chunk-S3R3BYOJ-7UJSqSFb.js → chunk-S3R3BYOJ-Cl0iW04v.js} +1 -1
  51. package/dist/assets/{chunk-TZMSLE5B-B7Xjx897.js → chunk-TZMSLE5B-f5ix6iSd.js} +1 -1
  52. package/dist/assets/classDiagram-2ON5EDUG-DlIMDu6i.js +1 -0
  53. package/dist/assets/classDiagram-v2-WZHVMYZB-CcIhhkQu.js +1 -0
  54. package/dist/assets/{clike-npv7NBwP.js → clike-bdcjLdZ4.js} +1 -1
  55. package/dist/assets/clojure-VUVi7fTV.js +1 -0
  56. package/dist/assets/cmake-DZJIDbjY.js +1 -0
  57. package/dist/assets/cobol-klCRwlLm.js +1 -0
  58. package/dist/assets/{code-block-37QAKDTI-BZVOQdyl.js → code-block-37QAKDTI-B19XL3UR.js} +1 -1
  59. package/dist/assets/coffeescript-C9foD9ub.js +1 -0
  60. package/dist/assets/{column-preview-CyyMserX.js → column-preview-BPismotx.js} +1 -1
  61. package/dist/assets/{command-palette-C0SuD26e.js → command-palette-Cdy8eCpi.js} +1 -1
  62. package/dist/assets/{common-Bei_EA1L.js → common-6n8M1qiK.js} +1 -1
  63. package/dist/assets/commonlisp-tHxoA35J.js +1 -0
  64. package/dist/assets/{components-B-vsJpY6.js → components-BzBUxUz0.js} +1 -1
  65. package/dist/assets/{components-cjKlTr3f.js → components-CK-WtvAJ.js} +1 -1
  66. package/dist/assets/config-ClMcu_sV.js +1 -0
  67. package/dist/assets/{cose-bilkent-S5V4N54A-CgMkzBzk.js → cose-bilkent-S5V4N54A-CQqSLzd1.js} +1 -1
  68. package/dist/assets/crystal-CQ11GdrX.js +1 -0
  69. package/dist/assets/{css-OVjTGRm9.js → css-ACAb8MRM.js} +1 -1
  70. package/dist/assets/cypher-CJ0Uzw29.js +1 -0
  71. package/dist/assets/d-DP0SUIt1.js +1 -0
  72. package/dist/assets/{dagre-6UL2VRFP-rclmYCNC.js → dagre-6UL2VRFP-CVKXpDlr.js} +1 -1
  73. package/dist/assets/{data-grid-overlay-editor-CO7vLLX5.js → data-grid-overlay-editor-BdDYn72O.js} +1 -1
  74. package/dist/assets/{datasource-CrDfHWto.js → datasource-DjDpJnbt.js} +2 -2
  75. package/dist/assets/dependency-graph-panel-BNaXAcZr.js +5 -0
  76. package/dist/assets/{diagram-PSM6KHXK-Dr5x-oaJ.js → diagram-PSM6KHXK-BfzLNKp-.js} +1 -1
  77. package/dist/assets/{diagram-QEK2KX5R-Cyino8Ci.js → diagram-QEK2KX5R-D_H77Ni5.js} +1 -1
  78. package/dist/assets/{diagram-S2PKOQOG-DYLuU52t.js → diagram-S2PKOQOG-DJmVBeMk.js} +1 -1
  79. package/dist/assets/diff-CNs8MB38.js +1 -0
  80. package/dist/assets/{dist-K7UrYXpJ.js → dist-BtL81uwZ.js} +1 -1
  81. package/dist/assets/{dist-BYYXrYaA.js → dist-Bww7hlVc.js} +1 -1
  82. package/dist/assets/{dist-BTDGJ6yw.js → dist-CJIOLS6O.js} +1 -1
  83. package/dist/assets/dist-CPF3W2Y-.js +1 -0
  84. package/dist/assets/{dist-D6HkmGB2.js → dist-CUapWJe4.js} +1 -1
  85. package/dist/assets/{dist-DYXeLJlk.js → dist-CWeWT34c.js} +1 -1
  86. package/dist/assets/{dist-CSowihAs.js → dist-CuCuJBdf.js} +1 -1
  87. package/dist/assets/{dist-fQYV9WTb.js → dist-DH60fwgs.js} +1 -1
  88. package/dist/assets/dist-DZPpMvcR.js +1 -0
  89. package/dist/assets/dist-DkcQg5xD.js +1 -0
  90. package/dist/assets/dist-DkzFxGAX.js +1 -0
  91. package/dist/assets/{dist-CtCHoDJA.js → dist-DmBXXm0k.js} +1 -1
  92. package/dist/assets/{dist-DB3ebLb3.js → dist-W1iHBJeE.js} +1 -1
  93. package/dist/assets/{dist-CO_N76Iz.js → dist-cgiAP5sW.js} +1 -1
  94. package/dist/assets/{dist-CGC-UAcL.js → dist-vkd1160q.js} +1 -1
  95. package/dist/assets/{dockerfile-CrSl2ewL.js → dockerfile-BSMbgQQl.js} +1 -1
  96. package/dist/assets/{documentation-panel-BWa3CXAu.js → documentation-panel-5jUKZR-l.js} +1 -1
  97. package/dist/assets/{download-CKGdZtPf.js → download-DT8gf0PL.js} +1 -1
  98. package/dist/assets/dtd-BsD0uJw0.js +1 -0
  99. package/dist/assets/dylan-DbrGP1IP.js +1 -0
  100. package/dist/assets/ecl-C0rZlhHw.js +1 -0
  101. package/dist/assets/edit-page-B7KTvcRN.js +9 -0
  102. package/dist/assets/eiffel-2ZX-OpSJ.js +1 -0
  103. package/dist/assets/elm-CbOSKldD.js +1 -0
  104. package/dist/assets/{erDiagram-Q2GNP2WA-FdS4NKUh.js → erDiagram-Q2GNP2WA-ROTNwSJz.js} +1 -1
  105. package/dist/assets/erlang-BWiOgHIX.js +1 -0
  106. package/dist/assets/{error-panel-BW7R1Ohr.js → error-panel-DHcg_ER5.js} +1 -1
  107. package/dist/assets/{esm-CwPtnMeh.js → esm-DeiyaVAJ.js} +1 -1
  108. package/dist/assets/{factor-MWFhpc0o.js → factor-C-_cRSDM.js} +1 -1
  109. package/dist/assets/factor-CUwFIMOP.js +1 -0
  110. package/dist/assets/{file-explorer-panel-C5v0FnJv.js → file-explorer-panel-CbOdvGyZ.js} +3 -3
  111. package/dist/assets/{file-icons-B1JtCN2e.js → file-icons-BiMOJy0r.js} +1 -1
  112. package/dist/assets/{floating-outline-wGcVRNZu.js → floating-outline-BN9sAcQ0.js} +1 -1
  113. package/dist/assets/{flowDiagram-NV44I4VS-DO4w8anv.js → flowDiagram-NV44I4VS--ee3IIVF.js} +1 -1
  114. package/dist/assets/{focus-COroLbWe.js → focus-q38vUCl-.js} +1 -1
  115. package/dist/assets/{form-Bstooyv1.js → form-BtBTvVVd.js} +2 -2
  116. package/dist/assets/forth-BEQA4QQL.js +1 -0
  117. package/dist/assets/fortran-DoPpOZgG.js +1 -0
  118. package/dist/assets/{ganttDiagram-JELNMOA3-Df-MBIrj.js → ganttDiagram-JELNMOA3-BGhmW2aP.js} +1 -1
  119. package/dist/assets/gas-BYovsvOE.js +1 -0
  120. package/dist/assets/gherkin-CFiRc1Pf.js +1 -0
  121. package/dist/assets/{gitGraph-G5XIXVHT-BAQx1hNd.js → gitGraph-G5XIXVHT-DuJ_0c_E.js} +1 -1
  122. package/dist/assets/{gitGraphDiagram-V2S2FVAM-fv2cmbLH.js → gitGraphDiagram-V2S2FVAM-DXFCZcxr.js} +1 -1
  123. package/dist/assets/{glide-data-editor-BAApVyo5.js → glide-data-editor-DqKNgyfg.js} +4 -4
  124. package/dist/assets/{globals-DggqXXLE.js → globals-7JnRMGd4.js} +1 -1
  125. package/dist/assets/groovy-DJNH7evt.js +1 -0
  126. package/dist/assets/haskell-duZvcePm.js +1 -0
  127. package/dist/assets/haxe-B2l95qvB.js +1 -0
  128. package/dist/assets/{home-page-B8SPyTFn.js → home-page-lXjPDNM0.js} +2 -2
  129. package/dist/assets/{hooks-CktFWxvJ.js → hooks-DP41kAWj.js} +1 -1
  130. package/dist/assets/{html-to-image-DB5sfuws.js → html-to-image-BWL3Ct4n.js} +1 -1
  131. package/dist/assets/idl-CZ_xwU8I.js +1 -0
  132. package/dist/assets/index-BIw7BKLH.css +2 -0
  133. package/dist/assets/index-awsLWRjZ.js +38 -0
  134. package/dist/assets/{info-VBDWY6EO-Cw9vVNQD.js → info-VBDWY6EO-DPQEAe2T.js} +1 -1
  135. package/dist/assets/infoDiagram-HS3SLOUP-CaaUieFa.js +2 -0
  136. package/dist/assets/javascript-CF5KGSAj.js +1 -0
  137. package/dist/assets/{journeyDiagram-XKPGCS4Q-C_cdVaga.js → journeyDiagram-XKPGCS4Q-9D2JCyrN.js} +1 -1
  138. package/dist/assets/julia-BQlq5iZn.js +1 -0
  139. package/dist/assets/{kanban-definition-3W4ZIXB7-CLpEm5s3.js → kanban-definition-3W4ZIXB7-DxV26rf-.js} +1 -1
  140. package/dist/assets/katex-CzQ1KdW3.js +1 -0
  141. package/dist/assets/{kiosk-mode-tHwBN3rS.js → kiosk-mode-BqvqWsFx.js} +1 -1
  142. package/dist/assets/layout-DXDnDtNw.js +9 -0
  143. package/dist/assets/{line-ortW3H6T.js → line-x4bpd_8D.js} +1 -1
  144. package/dist/assets/{linear-CIVE7jyt.js → linear-CW_ww8od.js} +1 -1
  145. package/dist/assets/livescript-sRMenfqS.js +1 -0
  146. package/dist/assets/{logs-panel-DZSPhsIs.js → logs-panel-BNoBKY1q.js} +1 -1
  147. package/dist/assets/{loro_wasm_bg-Ci19hd4D.js → loro_wasm_bg-CtNTubKN.js} +1 -1
  148. package/dist/assets/lua-a56ITumN.js +1 -0
  149. package/dist/assets/{markdown-renderer-BnUV17Tg.js → markdown-renderer-CU5Lbyax.js} +3 -3
  150. package/dist/assets/mathematica-B3m4jXeH.js +1 -0
  151. package/dist/assets/mbox-BtL7aO2I.js +1 -0
  152. package/dist/assets/mermaid-4DMBBIKO-CekzuCTz.js +1 -0
  153. package/dist/assets/{mermaid-D619LWHW.js → mermaid-Bes0ynI8.js} +3 -3
  154. package/dist/assets/{mermaid-parser.core-CMygPhv_.js → mermaid-parser.core-aYU6qXxk.js} +2 -2
  155. package/dist/assets/{mhchem-DSE1tfes.js → mhchem-8N2oE3tb.js} +1 -1
  156. package/dist/assets/{mindmap-definition-VGOIOE7T-mbWtJhR6.js → mindmap-definition-VGOIOE7T-DTJAbAQ8.js} +1 -1
  157. package/dist/assets/mirc-S27kuZ31.js +1 -0
  158. package/dist/assets/mllike-B3kx3KeF.js +1 -0
  159. package/dist/assets/modelica-DgbW4dSi.js +1 -0
  160. package/dist/assets/mscgen-BIa_4d-0.js +1 -0
  161. package/dist/assets/mumps-4fnELyHs.js +1 -0
  162. package/dist/assets/{name-cell-input-BZQLfDw0.js → name-cell-input-BNc3X9qF.js} +1 -1
  163. package/dist/assets/{nsis-CDylpiaC.js → nsis-BGZ5EB-j.js} +1 -1
  164. package/dist/assets/nsis-BfGyMssE.js +1 -0
  165. package/dist/assets/ntriples-DeY1n_tC.js +1 -0
  166. package/dist/assets/{number-overlay-editor-CHaQ6o4_.js → number-overlay-editor-DL4IwqDH.js} +1 -1
  167. package/dist/assets/octave-7Qn21jzx.js +1 -0
  168. package/dist/assets/{ordinal-RiUP-mHf.js → ordinal-_nQ2r1qQ.js} +1 -1
  169. package/dist/assets/{outline-panel-C4q1Ql1i.js → outline-panel-De2gw3Ro.js} +1 -1
  170. package/dist/assets/oz-CiPFl3Ni.js +1 -0
  171. package/dist/assets/{packages-panel-D9p8Tiee.js → packages-panel-C8maQt0Q.js} +1 -1
  172. package/dist/assets/{packet-DYOGHKS2-BXa5LrXK.js → packet-DYOGHKS2-CxgeJpvT.js} +1 -1
  173. package/dist/assets/pair-with-agent-modal-1tufe5MP.js +4 -0
  174. package/dist/assets/panels-BKv_j2lC.js +1 -0
  175. package/dist/assets/pascal-BH9yQLzw.js +1 -0
  176. package/dist/assets/perl-DfMCx2i2.js +1 -0
  177. package/dist/assets/{pie-VRWISCQL-BpZiOBLl.js → pie-VRWISCQL-GZ13ReaG.js} +1 -1
  178. package/dist/assets/{pieDiagram-ADFJNKIX-ouQhtndl.js → pieDiagram-ADFJNKIX-_3l2XiEo.js} +1 -1
  179. package/dist/assets/pig-D9CNebQN.js +1 -0
  180. package/dist/assets/powershell-Dss0bU9F.js +1 -0
  181. package/dist/assets/{process-output-czqgvDia.js → process-output-B2oklQi4.js} +1 -1
  182. package/dist/assets/properties-CHADYQUL.js +1 -0
  183. package/dist/assets/protobuf-DFN-V4SD.js +1 -0
  184. package/dist/assets/{pug-BXVTM5jr.js → pug-CYW0agOo.js} +1 -1
  185. package/dist/assets/pug-DOI9FnEk.js +1 -0
  186. package/dist/assets/puppet-BV0HAkDS.js +1 -0
  187. package/dist/assets/python-C83Db0-4.js +1 -0
  188. package/dist/assets/q-D84S4YaJ.js +1 -0
  189. package/dist/assets/{quadrantDiagram-AYHSOK5B-NRkmQ1sP.js → quadrantDiagram-AYHSOK5B-CX3AMAvR.js} +1 -1
  190. package/dist/assets/r-jmqrRzXv.js +1 -0
  191. package/dist/assets/{radar-ZZBFDIW7-CB-lQl_C.js → radar-ZZBFDIW7-CbAjwmA0.js} +1 -1
  192. package/dist/assets/{radio-group-BHzskOrm.js → radio-group-DlVSuZ_1.js} +1 -1
  193. package/dist/assets/{react-vega-CFabbyYN.js → react-vega-COx3Ibyn.js} +1 -1
  194. package/dist/assets/{react-vega-Bzl9LfSR.js → react-vega-CXIQBUis.js} +1 -1
  195. package/dist/assets/{readonly-python-code-u31O1EoO.js → readonly-python-code-D3_kHsDx.js} +1 -1
  196. package/dist/assets/renderShortcut-CcFk3m01.js +1 -0
  197. package/dist/assets/{requirementDiagram-UZGBJVZJ-C0LTiV9S.js → requirementDiagram-UZGBJVZJ-ORHKBnkg.js} +1 -1
  198. package/dist/assets/reveal-component-C50CTy8h.js +1069 -0
  199. package/dist/assets/rpm-DUjG0xRk.js +1 -0
  200. package/dist/assets/ruby-SP4FIzir.js +1 -0
  201. package/dist/assets/run-page-DeOIw0On.js +1 -0
  202. package/dist/assets/{sankeyDiagram-TZEHDZUN-CR2AycvD.js → sankeyDiagram-TZEHDZUN-Dvb8kmWa.js} +1 -1
  203. package/dist/assets/sas-BxaPz2EX.js +1 -0
  204. package/dist/assets/scheme-HBseLApj.js +1 -0
  205. package/dist/assets/{scratchpad-panel-B8GVlZFc.js → scratchpad-panel-DWbD_QB3.js} +1 -1
  206. package/dist/assets/{secrets-panel-B3E_Dkep.js → secrets-panel-BBvdIhtU.js} +1 -1
  207. package/dist/assets/{sequenceDiagram-WL72ISMW-CtF8-7iq.js → sequenceDiagram-WL72ISMW-DQycpQtE.js} +1 -1
  208. package/dist/assets/{session-panel-CeJHBx2m.js → session-panel-BHgL-7KC.js} +1 -1
  209. package/dist/assets/shell-w8ATY_lQ.js +1 -0
  210. package/dist/assets/sieve-Dyq0LGDO.js +1 -0
  211. package/dist/assets/smalltalk-D7mAtumc.js +1 -0
  212. package/dist/assets/{snippets-panel-BxEqEAeR.js → snippets-panel-FY_Ezibl.js} +1 -1
  213. package/dist/assets/sparql-DAeEYE_u.js +1 -0
  214. package/dist/assets/{src-CyeQdfB6.js → src-CvyFXpBy.js} +1 -1
  215. package/dist/assets/{state-D9_BpRuU.js → state-BTTshiKq.js} +3 -3
  216. package/dist/assets/{state-NqzCpbZn.js → state-D-2KaAHK.js} +1 -1
  217. package/dist/assets/{stateDiagram-FKZM4ZOC-R47bQmIs.js → stateDiagram-FKZM4ZOC-D78DIR_F.js} +1 -1
  218. package/dist/assets/stateDiagram-v2-4FDKWEC3-DX9rpmwh.js +1 -0
  219. package/dist/assets/{step-Ca7ZnceH.js → step-D7xg1Moj.js} +1 -1
  220. package/dist/assets/stylus-Cw3Ugan7.js +1 -0
  221. package/dist/assets/swift-CPsNOBsX.js +1 -0
  222. package/dist/assets/{switch-C8Pev-_F.js → switch-BiU_sAcn.js} +1 -1
  223. package/dist/assets/tcl-BfWyQdZa.js +1 -0
  224. package/dist/assets/{terminal-HJ3qH9Tb.js → terminal-BYGihNNp.js} +1 -1
  225. package/dist/assets/{textarea-By_oENlk.js → textarea-DwltG8V6.js} +1 -1
  226. package/dist/assets/textile-BKgaSzSN.js +1 -0
  227. package/dist/assets/{time-Dfh8bLaf.js → time-DLdI7jB3.js} +1 -1
  228. package/dist/assets/{timeline-definition-IT6M3QCI-qZnC-_po.js → timeline-definition-IT6M3QCI-DIywx3xf.js} +1 -1
  229. package/dist/assets/toml-BSOdv04W.js +1 -0
  230. package/dist/assets/{tracing-panel-DHbxfRgn.js → tracing-panel-bN0O3PuU.js} +2 -2
  231. package/dist/assets/{tracing-D3RHMNJS.js → tracing-zLH-qWb2.js} +1 -1
  232. package/dist/assets/{treemap-GDKQZRPO-C2f4_yBW.js → treemap-GDKQZRPO-Dz_qZhuG.js} +1 -1
  233. package/dist/assets/troff-C0hD9kig.js +1 -0
  234. package/dist/assets/ttcn-DEqPxhoh.js +1 -0
  235. package/dist/assets/ttcn-cfg-B-7jSlUe.js +1 -0
  236. package/dist/assets/turtle-BTtgFsu8.js +1 -0
  237. package/dist/assets/{useBoolean-DRITaoFR.js → useBoolean-Bp18o6XG.js} +1 -1
  238. package/dist/assets/{useCellActionButton-JqNWxCAc.js → useCellActionButton-h5LjhtEx.js} +1 -1
  239. package/dist/assets/{useDeleteCell-DhTEQpE6.js → useDeleteCell-BBPIhnQj.js} +1 -1
  240. package/dist/assets/useDependencyPanelTab-BSkmlMqr.js +1 -0
  241. package/dist/assets/{useHotkey-CKk0vHze.js → useHotkey-TKvjHf1m.js} +1 -1
  242. package/dist/assets/useNotebookActions-B32eCmtG.js +1 -0
  243. package/dist/assets/{useRunCells-DeA7yeHJ.js → useRunCells-BiCBGyeW.js} +1 -1
  244. package/dist/assets/{useSplitCell-DWx-q9BJ.js → useSplitCell-uogO-7ac.js} +1 -1
  245. package/dist/assets/useTheme-CI2eq4XN.js +1 -0
  246. package/dist/assets/utils-CvI-39U6.js +1 -0
  247. package/dist/assets/vb-DfRPk_ji.js +1 -0
  248. package/dist/assets/vbscript-C8D4uv5N.js +1 -0
  249. package/dist/assets/{vega-component-CBW7fUCI.js → vega-component-COOhhZ3h.js} +1 -1
  250. package/dist/assets/velocity-DxKr2FFC.js +1 -0
  251. package/dist/assets/verilog-CxVhamiH.js +1 -0
  252. package/dist/assets/vhdl-B-IpBNOA.js +1 -0
  253. package/dist/assets/webidl-CBjKmBwO.js +1 -0
  254. package/dist/assets/xquery-ABGCbLv0.js +1 -0
  255. package/dist/assets/{xychartDiagram-PRI3JC2R-Ul_9KMcM.js → xychartDiagram-PRI3JC2R-CjS1dL8k.js} +1 -1
  256. package/dist/assets/yacas-Ckyxh7oh.js +1 -0
  257. package/dist/assets/z80-Dr5sQweg.js +1 -0
  258. package/dist/index.html +32 -32
  259. package/package.json +1 -1
  260. package/src/components/ai/__tests__/ai-utils.test.ts +43 -38
  261. package/src/components/ai/ai-model-dropdown.tsx +2 -2
  262. package/src/components/app-config/ai-config.tsx +147 -16
  263. package/src/components/app-config/user-config-form.tsx +37 -1
  264. package/src/components/chat/__tests__/chat-utils.test.ts +269 -0
  265. package/src/components/chat/chat-panel.tsx +38 -5
  266. package/src/components/chat/chat-utils.ts +14 -58
  267. package/src/components/data-table/TableBottomBar.tsx +5 -8
  268. package/src/components/data-table/__tests__/column-explorer.test.tsx +128 -0
  269. package/src/components/data-table/__tests__/header-items.test.tsx +220 -10
  270. package/src/components/data-table/column-explorer-panel/column-explorer.tsx +95 -29
  271. package/src/components/data-table/column-header.tsx +17 -12
  272. package/src/components/data-table/data-table.tsx +4 -0
  273. package/src/components/data-table/export-actions.tsx +19 -12
  274. package/src/components/data-table/header-items.tsx +40 -16
  275. package/src/components/data-table/hooks/use-column-visibility.ts +14 -0
  276. package/src/components/data-table/schemas.ts +2 -2
  277. package/src/components/data-table/table-explorer-panel/table-explorer-panel.tsx +16 -6
  278. package/src/components/databases/display.tsx +2 -0
  279. package/src/components/datasources/__tests__/utils.test.ts +82 -0
  280. package/src/components/datasources/utils.ts +16 -15
  281. package/src/components/editor/Disconnected.tsx +1 -60
  282. package/src/components/editor/__tests__/viewer-banner.test.tsx +89 -0
  283. package/src/components/editor/actions/pair-with-agent-modal.tsx +1 -0
  284. package/src/components/editor/actions/useCellActionButton.tsx +3 -3
  285. package/src/components/editor/actions/useNotebookActions.tsx +5 -2
  286. package/src/components/editor/cell/code/cell-editor.tsx +25 -5
  287. package/src/components/editor/chrome/types.ts +13 -6
  288. package/src/components/editor/chrome/wrapper/app-chrome.tsx +6 -4
  289. package/src/components/editor/chrome/wrapper/footer-items/ai-status.tsx +10 -1
  290. package/src/components/editor/chrome/wrapper/sidebar.tsx +7 -5
  291. package/src/components/editor/errors/auto-fix.tsx +3 -3
  292. package/src/components/editor/header/__tests__/status.test.tsx +0 -15
  293. package/src/components/editor/header/app-header.tsx +1 -4
  294. package/src/components/editor/header/status.tsx +4 -13
  295. package/src/components/editor/navigation/__tests__/navigation.test.ts +15 -0
  296. package/src/components/editor/navigation/navigation.ts +5 -0
  297. package/src/components/editor/output/MarimoErrorOutput.tsx +103 -25
  298. package/src/components/editor/output/MarimoTracebackOutput.tsx +28 -39
  299. package/src/components/editor/renderers/cell-array.tsx +27 -24
  300. package/src/components/editor/renderers/slides-layout/__tests__/compute-slide-cells.test.ts +30 -17
  301. package/src/components/editor/renderers/slides-layout/compute-slide-cells.ts +17 -8
  302. package/src/components/editor/renderers/slides-layout/slides-layout.tsx +10 -12
  303. package/src/components/editor/viewer-banner.tsx +82 -0
  304. package/src/components/slides/minimap.tsx +45 -9
  305. package/src/components/slides/reveal-component.tsx +82 -37
  306. package/src/components/slides/slide-cell-view.tsx +12 -1
  307. package/src/components/slides/slide-form.tsx +11 -3
  308. package/src/components/static-html/static-banner.tsx +28 -22
  309. package/src/core/ai/__tests__/model-registry.test.ts +72 -60
  310. package/src/core/ai/model-registry.ts +33 -28
  311. package/src/core/cells/__tests__/actions.test.ts +48 -0
  312. package/src/core/cells/actions.ts +5 -6
  313. package/src/core/codemirror/__tests__/setup.test.ts +29 -0
  314. package/src/core/codemirror/cells/traceback-decorations.ts +1 -1
  315. package/src/core/codemirror/cm.ts +50 -3
  316. package/src/core/codemirror/completion/hints.ts +4 -1
  317. package/src/core/codemirror/format.ts +1 -0
  318. package/src/core/codemirror/keymaps/vim.ts +63 -0
  319. package/src/core/codemirror/language/languages/sql/sql.ts +1 -0
  320. package/src/core/codemirror/language/languages/sql/utils.ts +2 -0
  321. package/src/core/config/__tests__/config-schema.test.ts +4 -0
  322. package/src/core/config/config-schema.ts +4 -0
  323. package/src/core/config/config.ts +16 -0
  324. package/src/core/edit-app.tsx +3 -0
  325. package/src/core/islands/bootstrap.ts +2 -0
  326. package/src/core/kernel/__tests__/handlers.test.ts +5 -0
  327. package/src/core/websocket/__tests__/useMarimoKernelConnection.test.ts +0 -13
  328. package/src/core/websocket/types.ts +0 -6
  329. package/src/core/websocket/useMarimoKernelConnection.tsx +3 -12
  330. package/src/css/app/Cell.css +0 -1
  331. package/src/plugins/impl/DataTablePlugin.tsx +48 -22
  332. package/src/plugins/impl/chat/ChatPlugin.tsx +7 -1
  333. package/src/plugins/impl/chat/__tests__/chat-ui.test.ts +278 -0
  334. package/src/plugins/impl/chat/chat-ui.tsx +106 -59
  335. package/src/plugins/impl/chat/types.ts +5 -0
  336. package/src/utils/__tests__/json-parser.test.ts +1 -69
  337. package/src/utils/json/json-parser.ts +0 -30
  338. package/dist/assets/JsonOutput-DfDkDg0V.js +0 -53
  339. package/dist/assets/LazyAnyLanguageCodeMirror-DFv3yT20.js +0 -2
  340. package/dist/assets/MarimoErrorOutput-BXSRPZqF.js +0 -7
  341. package/dist/assets/ai-model-dropdown-D0tfwqft.js +0 -5
  342. package/dist/assets/apl-CZC-w0DM.js +0 -1
  343. package/dist/assets/asciiarmor-Dxkbb4uS.js +0 -1
  344. package/dist/assets/asn1-CrA2MPaL.js +0 -1
  345. package/dist/assets/brainfuck-B5oLVauS.js +0 -1
  346. package/dist/assets/cell-editor-hBNMClE6.js +0 -20
  347. package/dist/assets/channel-V1GV6hO1.js +0 -1
  348. package/dist/assets/chat-panel-BC-bG7Ms.js +0 -3
  349. package/dist/assets/chat-ui-B0pCMupQ.js +0 -4
  350. package/dist/assets/chunk-55IACEB6-BRJvcREw.js +0 -1
  351. package/dist/assets/classDiagram-2ON5EDUG-C8jlAFC-.js +0 -1
  352. package/dist/assets/classDiagram-v2-WZHVMYZB-DYST6eBL.js +0 -1
  353. package/dist/assets/clojure-D60XavrX.js +0 -1
  354. package/dist/assets/cmake-CrWsGXcU.js +0 -1
  355. package/dist/assets/cobol-CZosvDFE.js +0 -1
  356. package/dist/assets/coffeescript-DQGIz3iX.js +0 -1
  357. package/dist/assets/commonlisp-DrWSVXOx.js +0 -1
  358. package/dist/assets/config-C1gn3-tv.js +0 -1
  359. package/dist/assets/crystal-CMu2RgP7.js +0 -1
  360. package/dist/assets/cypher-C4I5nX3I.js +0 -1
  361. package/dist/assets/d-B_OAkSA3.js +0 -1
  362. package/dist/assets/dependency-graph-panel-skSyvOmU.js +0 -5
  363. package/dist/assets/diff-f-qA4U7T.js +0 -1
  364. package/dist/assets/dist-B2-3vH3I.js +0 -1
  365. package/dist/assets/dist-B3r3gs4u.js +0 -1
  366. package/dist/assets/dist-Dx65VI0Y.js +0 -1
  367. package/dist/assets/dist-FSgOAwAH.js +0 -1
  368. package/dist/assets/dtd-DWRTME-w.js +0 -1
  369. package/dist/assets/dylan-DnEm_ULG.js +0 -1
  370. package/dist/assets/ecl-Dbf1A5nG.js +0 -1
  371. package/dist/assets/edit-page-cW6c6KHJ.js +0 -9
  372. package/dist/assets/eiffel-Xj76_r0X.js +0 -1
  373. package/dist/assets/elm-nUwO24NA.js +0 -1
  374. package/dist/assets/erlang-CFVqMiR0.js +0 -1
  375. package/dist/assets/factor-mJPTAioV.js +0 -1
  376. package/dist/assets/forth-DBQr6L61.js +0 -1
  377. package/dist/assets/fortran-BkjqlXUL.js +0 -1
  378. package/dist/assets/gas-BNFtcdO9.js +0 -1
  379. package/dist/assets/gherkin-BrOMWqkN.js +0 -1
  380. package/dist/assets/groovy-DuCnwFRS.js +0 -1
  381. package/dist/assets/haskell-BD39942g.js +0 -1
  382. package/dist/assets/haxe-CXsKoap0.js +0 -1
  383. package/dist/assets/idl-D7hb6rI1.js +0 -1
  384. package/dist/assets/index-Cn0RBoFD.css +0 -2
  385. package/dist/assets/index-Df-5tfH1.js +0 -38
  386. package/dist/assets/infoDiagram-HS3SLOUP-CpBkxLyN.js +0 -2
  387. package/dist/assets/javascript-1S1_-Xac.js +0 -1
  388. package/dist/assets/julia-CbOUdU45.js +0 -1
  389. package/dist/assets/katex-BuYoGw8D.js +0 -1
  390. package/dist/assets/layout-CCKaB1K9.js +0 -9
  391. package/dist/assets/livescript-4YbxVKEy.js +0 -1
  392. package/dist/assets/lua-Dp2B-Joo.js +0 -1
  393. package/dist/assets/mathematica-BaSnKpgq.js +0 -1
  394. package/dist/assets/mbox-JZJfXD_G.js +0 -1
  395. package/dist/assets/mermaid-4DMBBIKO-BV51xhvi.js +0 -1
  396. package/dist/assets/mirc-BZe50pjl.js +0 -1
  397. package/dist/assets/mllike-Bgkhf51-.js +0 -1
  398. package/dist/assets/modelica-BzrnHsaM.js +0 -1
  399. package/dist/assets/mscgen-C7fmiScS.js +0 -1
  400. package/dist/assets/mumps-DYao3Wbn.js +0 -1
  401. package/dist/assets/nsis-BV9URIq2.js +0 -1
  402. package/dist/assets/ntriples-CCTjcLNo.js +0 -1
  403. package/dist/assets/octave-CalSSDIP.js +0 -1
  404. package/dist/assets/oz-BwBvNNj4.js +0 -1
  405. package/dist/assets/panels-CFhryJbE.js +0 -1
  406. package/dist/assets/pascal-VtYjd8tX.js +0 -1
  407. package/dist/assets/perl-CuiQHSod.js +0 -1
  408. package/dist/assets/pig-CIHZG4Z9.js +0 -1
  409. package/dist/assets/powershell-CI2Wos2z.js +0 -1
  410. package/dist/assets/properties-CBOFbPgT.js +0 -1
  411. package/dist/assets/protobuf-CdcXLd43.js +0 -1
  412. package/dist/assets/pug-DJHP9Svh.js +0 -1
  413. package/dist/assets/puppet-B2nxuZc5.js +0 -1
  414. package/dist/assets/python-VpIaVd-6.js +0 -1
  415. package/dist/assets/q-CamvlcK6.js +0 -1
  416. package/dist/assets/r-CgsrYWFj.js +0 -1
  417. package/dist/assets/renderShortcut-U2SzoZCS.js +0 -1
  418. package/dist/assets/reveal-component-Ds9C9Z1D.js +0 -1069
  419. package/dist/assets/rpm-DBux1aMG.js +0 -1
  420. package/dist/assets/ruby-BWHIAyVi.js +0 -1
  421. package/dist/assets/run-page-BC3D2rvr.js +0 -1
  422. package/dist/assets/sas-DJpj3tMb.js +0 -1
  423. package/dist/assets/scheme-DF-J69qP.js +0 -1
  424. package/dist/assets/shell-m-RSMeeH.js +0 -1
  425. package/dist/assets/sieve-CtzQvaig.js +0 -1
  426. package/dist/assets/smalltalk-ClFvBgAI.js +0 -1
  427. package/dist/assets/sparql-icVR0QFW.js +0 -1
  428. package/dist/assets/stateDiagram-v2-4FDKWEC3-sSKQU37N.js +0 -1
  429. package/dist/assets/stylus-TkCXytG7.js +0 -1
  430. package/dist/assets/swift-CBYBwE0m.js +0 -1
  431. package/dist/assets/tcl-DvyBVTw2.js +0 -1
  432. package/dist/assets/textile-DA3WvzuI.js +0 -1
  433. package/dist/assets/toml-BJa3ckRR.js +0 -1
  434. package/dist/assets/troff-CqZSdBAp.js +0 -1
  435. package/dist/assets/ttcn-BouEBguh.js +0 -1
  436. package/dist/assets/ttcn-cfg-C1whpGsE.js +0 -1
  437. package/dist/assets/turtle-DQ8l-awL.js +0 -1
  438. package/dist/assets/useDependencyPanelTab-BeLaV_28.js +0 -1
  439. package/dist/assets/useNotebookActions-C6L8GqPD.js +0 -4
  440. package/dist/assets/useTheme-TeWD29Uz.js +0 -1
  441. package/dist/assets/utils-Wvjk_Y4h.js +0 -1
  442. package/dist/assets/vb-B7wOdn6U.js +0 -1
  443. package/dist/assets/vbscript-DvH455rJ.js +0 -1
  444. package/dist/assets/velocity-B6C6O90i.js +0 -1
  445. package/dist/assets/verilog-JbcxpuFW.js +0 -1
  446. package/dist/assets/vhdl-SEFTp5Re.js +0 -1
  447. package/dist/assets/webidl-ChYZayPm.js +0 -1
  448. package/dist/assets/xquery-DWwllqyg.js +0 -1
  449. package/dist/assets/yacas-DQRdrpIp.js +0 -1
  450. package/dist/assets/z80-CGBxwDW7.js +0 -1
  451. /package/dist/assets/{ImageComparisonComponent-B5A-4CCj.js → ImageComparisonComponent-BIetTBDq.js} +0 -0
  452. /package/dist/assets/{Inputs-BG_nVZPt.js → Inputs-C6ftxLAJ.js} +0 -0
  453. /package/dist/assets/{Plot-CoEOwQq-.js → Plot-Ba3WGWNu.js} +0 -0
  454. /package/dist/assets/{apl-4hxG7HNk.js → apl-Byte72fT.js} +0 -0
  455. /package/dist/assets/{array-D5VxClQs.js → array-CC7vZNGO.js} +0 -0
  456. /package/dist/assets/{asciiarmor-Dv_174xi.js → asciiarmor-BU-VnG1Y.js} +0 -0
  457. /package/dist/assets/{asn1-iiMvplI8.js → asn1-hTvH3S4T.js} +0 -0
  458. /package/dist/assets/{asterisk-CC3QRUnf.js → asterisk-DIMri3P4.js} +0 -0
  459. /package/dist/assets/{brainfuck-C1zBqC_V.js → brainfuck-C-q1Rv8J.js} +0 -0
  460. /package/dist/assets/{chunk-4F5CHEZ2-DUo5vZ2r.js → chunk-4F5CHEZ2-eEwFz7fp.js} +0 -0
  461. /package/dist/assets/{chunk-B2363JML-BBEseLU0.js → chunk-B2363JML-COExSe0d.js} +0 -0
  462. /package/dist/assets/{chunk-DR5Q36YT-C0WIZcJM.js → chunk-DR5Q36YT-OB6tC_dd.js} +0 -0
  463. /package/dist/assets/{chunk-FRFDVMJY-CXpDqtzE.js → chunk-FRFDVMJY-CO3-6rb4.js} +0 -0
  464. /package/dist/assets/{chunk-PL6DKKU2-CdWr1t_8.js → chunk-PL6DKKU2-B9mDp5iV.js} +0 -0
  465. /package/dist/assets/{chunk-SJTYNZTY-SWJVmNtW.js → chunk-SJTYNZTY-Dh_h90Yu.js} +0 -0
  466. /package/dist/assets/{chunk-TQ3KTPDO-NHSLONf7.js → chunk-TQ3KTPDO-CFybjK0M.js} +0 -0
  467. /package/dist/assets/{chunk-UMXZTB3W-Ct179y25.js → chunk-UMXZTB3W-C3w83KpJ.js} +0 -0
  468. /package/dist/assets/{clear-button-CIwzVocs.js → clear-button-Cfe8K4j_.js} +0 -0
  469. /package/dist/assets/{click-outside-container-Bx6OOW4y.js → click-outside-container-BNVqwewc.js} +0 -0
  470. /package/dist/assets/{clike-DgscWMor.js → clike-BE-9Ct_H.js} +0 -0
  471. /package/dist/assets/{clojure-BHbbYwIQ.js → clojure-Co-TLeNo.js} +0 -0
  472. /package/dist/assets/{cmake-DLR6lpqL.js → cmake-B-Nm_Opd.js} +0 -0
  473. /package/dist/assets/{cobol-BCxTxy3w.js → cobol-BGdihAZT.js} +0 -0
  474. /package/dist/assets/{coffeescript-CpA2P5vm.js → coffeescript-BUZXkMUO.js} +0 -0
  475. /package/dist/assets/{colors-CWfEs9Oi.js → colors-BG8Z91CW.js} +0 -0
  476. /package/dist/assets/{common-keywords-0dB1lgek.js → common-keywords-15xBKau4.js} +0 -0
  477. /package/dist/assets/{commonlisp-IOtLAQXJ.js → commonlisp-CFkPbxvX.js} +0 -0
  478. /package/dist/assets/{crystal-D5D6_kGA.js → crystal-CqfqDl34.js} +0 -0
  479. /package/dist/assets/{css-DOb8-BDy.js → css-DPEtZWJi.js} +0 -0
  480. /package/dist/assets/{cypher-DLF7i4IG.js → cypher-B0t8FJvU.js} +0 -0
  481. /package/dist/assets/{cytoscape.esm-CuwfIk-V.js → cytoscape.esm-DT8iy6p1.js} +0 -0
  482. /package/dist/assets/{d-ByNdxjrk.js → d-DRa_XRSB.js} +0 -0
  483. /package/dist/assets/{diff-DgsriQcn.js → diff-GLneonpD.js} +0 -0
  484. /package/dist/assets/{dist-B6ehDvA-.js → dist-A7swzSTR.js} +0 -0
  485. /package/dist/assets/{dist-Cofj3PRM.js → dist-BF6UNR6V.js} +0 -0
  486. /package/dist/assets/{dist-Bc225YxE.js → dist-BQWswd1A.js} +0 -0
  487. /package/dist/assets/{dist-DviQ3W6h.js → dist-BQeNY9Zl.js} +0 -0
  488. /package/dist/assets/{dist-BA8xhrl2.js → dist-BXRWfNwi.js} +0 -0
  489. /package/dist/assets/{dist-fhXsH3fb.js → dist-BlOtCkpT.js} +0 -0
  490. /package/dist/assets/{dist-D8MaDlGc.js → dist-C78V1LRz.js} +0 -0
  491. /package/dist/assets/{dist-CcoNWYux.js → dist-CKT_lJKW.js} +0 -0
  492. /package/dist/assets/{dist-CNghxh0Q.js → dist-CNyMUs19.js} +0 -0
  493. /package/dist/assets/{dist-qBfIhsAs.js → dist-CXBpwk_w.js} +0 -0
  494. /package/dist/assets/{dist-D86l0QaP.js → dist-CciFN1z_.js} +0 -0
  495. /package/dist/assets/{dist-cS6yvaqe.js → dist-CocyeH0q.js} +0 -0
  496. /package/dist/assets/{dist-C_k5-SEy.js → dist-CpcTHxTt.js} +0 -0
  497. /package/dist/assets/{dist-WcxjmQmQ.js → dist-CsvFAFh9.js} +0 -0
  498. /package/dist/assets/{dist-oSdg9XA7.js → dist-D70Tz1Kr.js} +0 -0
  499. /package/dist/assets/{dist-CjBmWBr2.js → dist-DUHHizRG.js} +0 -0
  500. /package/dist/assets/{dist-CiOPfbN_.js → dist-DqVEVg0c.js} +0 -0
  501. /package/dist/assets/{dtd-BY21shY3.js → dtd-uVrZNVF0.js} +0 -0
  502. /package/dist/assets/{duckdb-keywords-DH8yhwVC.js → duckdb-keywords-CYQ5DEZJ.js} +0 -0
  503. /package/dist/assets/{dylan-D_hF5J0y.js → dylan-DkNeA4FZ.js} +0 -0
  504. /package/dist/assets/{ebnf-D73UE5Hl.js → ebnf-XMH6KY7E.js} +0 -0
  505. /package/dist/assets/{ecl-C1ORA0cg.js → ecl-CldUgvc9.js} +0 -0
  506. /package/dist/assets/{eiffel-1fe3g8c_.js → eiffel-CoMDRbRL.js} +0 -0
  507. /package/dist/assets/{elm-hjWurFzL.js → elm-Cb5XC6ev.js} +0 -0
  508. /package/dist/assets/{erlang-Bp4wxA5O.js → erlang-8H3fTZ3L.js} +0 -0
  509. /package/dist/assets/{esm-DM72gy9Q.js → esm-1wf4HygE.js} +0 -0
  510. /package/dist/assets/{fcl-1tMcz7c0.js → fcl-DyFJAgkq.js} +0 -0
  511. /package/dist/assets/{formatting-3l1CoS7X.js → formatting-CSG9kqNb.js} +0 -0
  512. /package/dist/assets/{forth-5O98d424.js → forth-B8kC4npz.js} +0 -0
  513. /package/dist/assets/{fortran-BIuAFxQ8.js → fortran-CNWGEL3c.js} +0 -0
  514. /package/dist/assets/{gallery-page-7ltBHWVR.js → gallery-page-Bcf7fYLy.js} +0 -0
  515. /package/dist/assets/{gas-CHHhShkY.js → gas-DnZQNTHK.js} +0 -0
  516. /package/dist/assets/{gherkin-DIjcYYBT.js → gherkin-JfGcGvci.js} +0 -0
  517. /package/dist/assets/{groovy-BYU3Z-yz.js → groovy-D0FWiAVm.js} +0 -0
  518. /package/dist/assets/{haskell-CjOVOYhk.js → haskell-wUB3uX-G.js} +0 -0
  519. /package/dist/assets/{haxe-Cb_U41Kf.js → haxe-g0JY6eL-.js} +0 -0
  520. /package/dist/assets/{http-DTsrgwMt.js → http-ySzAzH5W.js} +0 -0
  521. /package/dist/assets/{idl-XfUB5VqU.js → idl-CV2cLkPc.js} +0 -0
  522. /package/dist/assets/{init-BYCsRZEq.js → init-DsZRk2YA.js} +0 -0
  523. /package/dist/assets/{javascript-BZ9iuJe9.js → javascript-CT6okXEZ.js} +0 -0
  524. /package/dist/assets/{julia-ZgWUbR6s.js → julia-CKC48ufo.js} +0 -0
  525. /package/dist/assets/{katex-BNYG1in3.js → katex-BE4UDS50.js} +0 -0
  526. /package/dist/assets/{links-DguLoFik.js → links-1rtF1-eC.js} +0 -0
  527. /package/dist/assets/{livescript-PvHqMAnA.js → livescript-C43pZ6Ue.js} +0 -0
  528. /package/dist/assets/{loro_wasm_bg-Z5Iceaci.js → loro_wasm_bg-CXnd80ne.js} +0 -0
  529. /package/dist/assets/{lua-BAkgehCh.js → lua-Cs2mb10K.js} +0 -0
  530. /package/dist/assets/{marimo-icons-CcDNGIRM.js → marimo-icons-CiwvnnsT.js} +0 -0
  531. /package/dist/assets/{math-D-qpUWKO.js → math-B-ZqhQTL.js} +0 -0
  532. /package/dist/assets/{mathematica-sYPoESCW.js → mathematica-B5FMK3ma.js} +0 -0
  533. /package/dist/assets/{mbox-BFVpgB4i.js → mbox-36Zrn5Bd.js} +0 -0
  534. /package/dist/assets/{mirc-DAwdMlc7.js → mirc-BKTAABSX.js} +0 -0
  535. /package/dist/assets/{mllike-CNENYbun.js → mllike-DbuClUqc.js} +0 -0
  536. /package/dist/assets/{modelica-FtpuFG3d.js → modelica-CKRvBm7N.js} +0 -0
  537. /package/dist/assets/{mscgen-BZpZ1eAc.js → mscgen-B4BRgnCi.js} +0 -0
  538. /package/dist/assets/{multi-icon-aZG-rdCp.js → multi-icon-NVkxesVZ.js} +0 -0
  539. /package/dist/assets/{mumps-BM8g2rR9.js → mumps-BFiMcyFV.js} +0 -0
  540. /package/dist/assets/{nginx-CREUN6EW.js → nginx-Cz_XvoTm.js} +0 -0
  541. /package/dist/assets/{node-sql-parser-fWuidk6P.js → node-sql-parser-BtkrI4pN.js} +0 -0
  542. /package/dist/assets/{ntriples-Dpum4Lhl.js → ntriples-QQAkJYAR.js} +0 -0
  543. /package/dist/assets/{octave-C-8skAyy.js → octave-DsTphmGZ.js} +0 -0
  544. /package/dist/assets/{oz-C9dNiWs3.js → oz-CD9rr5Iz.js} +0 -0
  545. /package/dist/assets/{panel-context-C3ham7ZV.js → panel-context-BJbBGfoL.js} +0 -0
  546. /package/dist/assets/{pascal-OtDoyUlT.js → pascal-DdHEIlJE.js} +0 -0
  547. /package/dist/assets/{path-_EHCEa2c.js → path-DvTahePH.js} +0 -0
  548. /package/dist/assets/{perl-Bq6zPLry.js → perl-DHPJBQ1u.js} +0 -0
  549. /package/dist/assets/{pig-CzHJ3vXa.js → pig-Yz7ERgca.js} +0 -0
  550. /package/dist/assets/{powershell-CPgLwhmC.js → powershell-CHPZ_bsU.js} +0 -0
  551. /package/dist/assets/{properties-Kfp4iofx.js → properties-CI9nc7K4.js} +0 -0
  552. /package/dist/assets/{protobuf-BtodseUb.js → protobuf-BYSIv2pY.js} +0 -0
  553. /package/dist/assets/{puppet-DqMZ-3jb.js → puppet-CEpLafZX.js} +0 -0
  554. /package/dist/assets/{python-Du1sm3Dz.js → python-BndVuwG1.js} +0 -0
  555. /package/dist/assets/{q-mTJjDbkl.js → q-L_cetpiW.js} +0 -0
  556. /package/dist/assets/{r-CiWGt8bY.js → r-Dd37AKWk.js} +0 -0
  557. /package/dist/assets/{request-registry-Gm-nOP6a.js → request-registry--h6PWG50.js} +0 -0
  558. /package/dist/assets/{requests-Bm3bohzL.js → requests-DqJEWJ-Q.js} +0 -0
  559. /package/dist/assets/{rpm-DoWl8uQ-.js → rpm-CHrvhtlN.js} +0 -0
  560. /package/dist/assets/{ruby-EPWn7HjP.js → ruby-BPOowfX6.js} +0 -0
  561. /package/dist/assets/{runs-_nm7RTvJ.js → runs-BD0G-C2A.js} +0 -0
  562. /package/dist/assets/{sas-C49N66K9.js → sas-BsEFSvEP.js} +0 -0
  563. /package/dist/assets/{scheme-BKBMeaMf.js → scheme-B42INBu7.js} +0 -0
  564. /package/dist/assets/{shell-B3Qif7WE.js → shell-BPea12OI.js} +0 -0
  565. /package/dist/assets/{sieve-D2oOzUQe.js → sieve-C-yPcLw5.js} +0 -0
  566. /package/dist/assets/{simple-mode-awvuWmjh.js → simple-mode-CFlvn0Mm.js} +0 -0
  567. /package/dist/assets/{smalltalk-D2JNyQE_.js → smalltalk-e7OO1ATb.js} +0 -0
  568. /package/dist/assets/{solr-DD6Hdy4w.js → solr-BAO4N63o.js} +0 -0
  569. /package/dist/assets/{sparql-B_E2GW41.js → sparql-B4I2Ledx.js} +0 -0
  570. /package/dist/assets/{spreadsheet-DQc2JQ5m.js → spreadsheet-DWqd5foV.js} +0 -0
  571. /package/dist/assets/{sql-Cj5Wcvsd.js → sql-RBdzBYsM.js} +0 -0
  572. /package/dist/assets/{src-faGJHwXX.js → src-BnrQkOKh.js} +0 -0
  573. /package/dist/assets/{stylus-R6o8NrsG.js → stylus-CBRbZwhN.js} +0 -0
  574. /package/dist/assets/{swift-Dbh-hbmH.js → swift-B2hnU7ha.js} +0 -0
  575. /package/dist/assets/{swiper-component-Dgt-sBCT.js → swiper-component-YGJlBaCp.js} +0 -0
  576. /package/dist/assets/{tcl-B7hCCUdg.js → tcl-BtyamtaZ.js} +0 -0
  577. /package/dist/assets/{textile-3T2abjma.js → textile-M9mhyNE9.js} +0 -0
  578. /package/dist/assets/{tiddlywiki-Co__osNU.js → tiddlywiki-BsHUDwie.js} +0 -0
  579. /package/dist/assets/{tiki-CfCZczlo.js → tiki-ZqBe4Kjv.js} +0 -0
  580. /package/dist/assets/{timer-BgiWPhV9.js → timer-B6DpdVnC.js} +0 -0
  581. /package/dist/assets/{toml-BfSTXCbK.js → toml-YxyxhyRy.js} +0 -0
  582. /package/dist/assets/{treemap-F5PoC_M0.js → treemap-DeGcO9km.js} +0 -0
  583. /package/dist/assets/{troff-TmwTwfFH.js → troff-C7xpi05X.js} +0 -0
  584. /package/dist/assets/{ttcn-BptQ-efU.js → ttcn-D3YytrJU.js} +0 -0
  585. /package/dist/assets/{ttcn-cfg-BJSeQh2j.js → ttcn-cfg-DlZ5vA9E.js} +0 -0
  586. /package/dist/assets/{turtle-NWQZPdQh.js → turtle-BSHvAsUe.js} +0 -0
  587. /package/dist/assets/{types-iYXk7c05.js → types-a-yURniQ.js} +0 -0
  588. /package/dist/assets/{useInterval-Bc-mr0KL.js → useInterval-2YvvhIZI.js} +0 -0
  589. /package/dist/assets/{vb-5MAVubtN.js → vb-DdkIDLlO.js} +0 -0
  590. /package/dist/assets/{vbscript-C3wI-prb.js → vbscript-DhYGmk_p.js} +0 -0
  591. /package/dist/assets/{velocity-BZ0SsVqc.js → velocity-DAXJNEw4.js} +0 -0
  592. /package/dist/assets/{verilog-sCLfsuOk.js → verilog-jmuT_L3b.js} +0 -0
  593. /package/dist/assets/{vhdl-D8-XDERr.js → vhdl-DcVQ97RU.js} +0 -0
  594. /package/dist/assets/{web-vitals-CJ8ovao_.js → web-vitals-xkV-JBVF.js} +0 -0
  595. /package/dist/assets/{webidl-C2DK9LNJ.js → webidl-B-YB_4OQ.js} +0 -0
  596. /package/dist/assets/{write-secret-modal-DEx_mRHR.js → write-secret-modal-BFLlHwgU.js} +0 -0
  597. /package/dist/assets/{ws-YSapF1PN.js → ws-BnE9sl8z.js} +0 -0
  598. /package/dist/assets/{xquery-Db3HYO3C.js → xquery-DOmY3Oe8.js} +0 -0
  599. /package/dist/assets/{yacas-DhfMSinV.js → yacas-pL3kJRXV.js} +0 -0
  600. /package/dist/assets/{z80-CH-vqbta.js → z80-VwVuI_MT.js} +0 -0
@@ -13,7 +13,7 @@ import { Tooltip } from "@/components/ui/tooltip";
13
13
  import { aiCompletionCellAtom } from "@/core/ai/state";
14
14
  import { notebookAtom, useCellActions } from "@/core/cells/cells";
15
15
  import type { CellId } from "@/core/cells/ids";
16
- import { aiEnabledAtom } from "@/core/config/config";
16
+ import { aiFeaturesEnabledAtom } from "@/core/config/config";
17
17
  import { getAutoFixes } from "@/core/errors/errors";
18
18
  import type { MarimoError } from "@/core/kernel/messages";
19
19
  import { cn } from "@/utils/cn";
@@ -30,9 +30,9 @@ export const AutoFixButton = ({
30
30
  }) => {
31
31
  const store = useStore();
32
32
  const { createNewCell } = useCellActions();
33
- const aiEnabled = useAtomValue(aiEnabledAtom);
33
+ const aiFeaturesEnabled = useAtomValue(aiFeaturesEnabledAtom);
34
34
  const autoFixes = errors.flatMap((error) =>
35
- getAutoFixes(error, { aiEnabled }),
35
+ getAutoFixes(error, { aiEnabled: aiFeaturesEnabled }),
36
36
  );
37
37
  const setAiCompletionCell = useSetAtom(aiCompletionCellAtom);
38
38
 
@@ -90,19 +90,4 @@ describe("StatusOverlay disconnect indicator", () => {
90
90
  expect(onReconnect).not.toHaveBeenCalled();
91
91
  },
92
92
  );
93
-
94
- it("does not render the disconnect icon when another tab has taken over", () => {
95
- const onReconnect = vi.fn();
96
- const { queryByTestId } = renderOverlay(
97
- {
98
- state: WebSocketState.CLOSED,
99
- code: WebSocketClosedReason.ALREADY_RUNNING,
100
- reason: "another browser tab is already connected to the kernel",
101
- canTakeover: true,
102
- },
103
- onReconnect,
104
- );
105
-
106
- expect(queryByTestId("disconnected-indicator")).toBeNull();
107
- });
108
93
  });
@@ -18,10 +18,7 @@ export const AppHeader: React.FC<PropsWithChildren<Props>> = ({
18
18
  <div className={className}>
19
19
  {children}
20
20
  {connection.state === WebSocketState.CLOSED && (
21
- <Disconnected
22
- reason={connection.reason}
23
- canTakeover={connection.canTakeover}
24
- />
21
+ <Disconnected reason={connection.reason} />
25
22
  )}
26
23
  </div>
27
24
  );
@@ -1,7 +1,7 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
 
3
3
  import { useAtomValue } from "jotai";
4
- import { HourglassIcon, LockIcon, UnlinkIcon } from "lucide-react";
4
+ import { HourglassIcon, UnlinkIcon } from "lucide-react";
5
5
  import React from "react";
6
6
  import { Tooltip } from "@/components/ui/tooltip";
7
7
  import { notebookScrollToRunning } from "@/core/cells/actions";
@@ -24,13 +24,13 @@ export const StatusOverlay: React.FC<{
24
24
  const isOpen = connection.state === WebSocketState.OPEN;
25
25
  // Only KERNEL_DISCONNECTED is recoverable by a retry. Other terminal
26
26
  // reasons (MALFORMED_QUERY, KERNEL_STARTUP_ERROR) would deterministically
27
- // fail the same way; ALREADY_RUNNING is handled by `LockedIcon` below.
27
+ // fail the same way.
28
28
  const canReconnect =
29
29
  isClosed && connection.code === WebSocketClosedReason.KERNEL_DISCONNECTED;
30
30
 
31
31
  return (
32
32
  <>
33
- {isClosed && !connection.canTakeover && <NoiseBackground />}
33
+ {isClosed && <NoiseBackground />}
34
34
  <div
35
35
  className={cn(
36
36
  "z-50 top-4 left-4",
@@ -38,12 +38,11 @@ export const StatusOverlay: React.FC<{
38
38
  )}
39
39
  >
40
40
  {isOpen && isRunning && <RunningIcon />}
41
- {isClosed && !connection.canTakeover && (
41
+ {isClosed && (
42
42
  <DisconnectedIcon
43
43
  onReconnect={canReconnect ? onReconnect : undefined}
44
44
  />
45
45
  )}
46
- {isClosed && connection.canTakeover && <LockedIcon />}
47
46
  </div>
48
47
  </>
49
48
  );
@@ -79,14 +78,6 @@ const DisconnectedIcon: React.FC<{ onReconnect?: () => void }> = ({
79
78
  );
80
79
  };
81
80
 
82
- const LockedIcon = () => (
83
- <Tooltip content="Notebook locked">
84
- <div className={topLeftStatus}>
85
- <LockIcon className="w-[25px] h-[25px] text-(--blue-11)" />
86
- </div>
87
- </Tooltip>
88
- );
89
-
90
81
  const RunningIcon = () => {
91
82
  const scratchpadOnly = useAtomValue(onlyScratchpadIsRunningAtom);
92
83
  const tooltip = scratchpadOnly
@@ -1207,6 +1207,21 @@ describe("useCellNavigationProps", () => {
1207
1207
  });
1208
1208
 
1209
1209
  describe("AI completion functionality", () => {
1210
+ beforeEach(() => {
1211
+ const config = defaultUserConfig();
1212
+ store.set(userConfigAtom, {
1213
+ ...config,
1214
+ ai: {
1215
+ ...config.ai,
1216
+ models: {
1217
+ displayed_models: [],
1218
+ custom_models: [],
1219
+ edit_model: "openai/gpt-4o",
1220
+ },
1221
+ },
1222
+ });
1223
+ });
1224
+
1210
1225
  it("should toggle AI completion when shortcut is pressed", () => {
1211
1226
  const { result } = renderWithProvider(() =>
1212
1227
  useCellNavigationProps(cellId1, optionsWithMockEditor),
@@ -24,6 +24,7 @@ import { usePendingDeleteService } from "@/core/cells/pending-delete-service";
24
24
  import { scrollCellIntoView } from "@/core/cells/scrollCellIntoView";
25
25
  import {
26
26
  hotkeysAtom,
27
+ isAiFeatureEnabled,
27
28
  keymapPresetAtom,
28
29
  userConfigAtom,
29
30
  } from "@/core/config/config";
@@ -195,6 +196,7 @@ export function useCellNavigationProps(
195
196
  const pendingDeleteService = usePendingDeleteService();
196
197
  const deleteCells = useDeleteManyCellsCallback();
197
198
  const userConfig = useAtomValue(userConfigAtom);
199
+ const aiFeaturesEnabled = isAiFeatureEnabled(userConfig);
198
200
 
199
201
  // Wrap selection actions to clear pending cells on any selection change
200
202
  const selectionActions = {
@@ -496,6 +498,9 @@ export function useCellNavigationProps(
496
498
  return true;
497
499
  }),
498
500
  "cell.aiCompletion": (cellId) => {
501
+ if (!aiFeaturesEnabled) {
502
+ return false;
503
+ }
499
504
  let closed = false;
500
505
  setAiCompletionCell((v) => {
501
506
  // Toggle close
@@ -1,12 +1,16 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
 
3
+ import { useAtomValue } from "jotai";
3
4
  import {
5
+ ChevronDown,
6
+ ChevronRight,
7
+ InfoIcon,
4
8
  NotebookPenIcon,
5
9
  PackageIcon,
6
10
  SquareArrowOutUpRightIcon,
7
11
  TerminalIcon,
8
12
  } from "lucide-react";
9
- import { Fragment, type JSX } from "react";
13
+ import { Fragment, type JSX, useState } from "react";
10
14
  import {
11
15
  Accordion,
12
16
  AccordionContent,
@@ -16,7 +20,9 @@ import {
16
20
  import { Button } from "@/components/ui/button";
17
21
  import { Kbd } from "@/components/ui/kbd";
18
22
  import { ExternalLink } from "@/components/ui/links";
23
+ import { Tooltip } from "@/components/ui/tooltip";
19
24
  import type { CellId } from "@/core/cells/ids";
25
+ import { resolvedMarimoConfigAtom } from "@/core/config/config";
20
26
  import { renderHTML } from "@/plugins/core/RenderHTML";
21
27
  import { splitMangledLocals } from "@/utils/local-variables";
22
28
  import type { MarimoError } from "../../../core/kernel/messages";
@@ -29,6 +35,39 @@ import { MangledSegments } from "../errors/mangled-local-chip";
29
35
  import { CellLinkError } from "../links/cell-link";
30
36
  import { processTextForUrls } from "./console/text-rendering";
31
37
 
38
+ const CollapsibleTraceback = ({
39
+ traceback,
40
+ }: {
41
+ traceback: string;
42
+ }): JSX.Element => {
43
+ const [isOpen, setIsOpen] = useState(true);
44
+ return (
45
+ <div className="mt-2">
46
+ <button
47
+ type="button"
48
+ onClick={() => setIsOpen(!isOpen)}
49
+ aria-expanded={isOpen}
50
+ aria-label={isOpen ? "Collapse traceback" : "Expand traceback"}
51
+ className="flex items-center gap-1 text-muted-foreground/70 hover:text-muted-foreground transition-colors"
52
+ >
53
+ {isOpen ? (
54
+ <ChevronDown className="h-3 w-3" />
55
+ ) : (
56
+ <ChevronRight className="h-3 w-3" />
57
+ )}
58
+ <span className="text-[0.6875rem] uppercase tracking-wider">
59
+ Traceback
60
+ </span>
61
+ </button>
62
+ {isOpen && (
63
+ <div className="font-code text-sm mt-1 p-3 bg-muted rounded border overflow-auto max-h-[50vh] cursor-text select-text">
64
+ {renderHTML({ html: traceback })}
65
+ </div>
66
+ )}
67
+ </div>
68
+ );
69
+ };
70
+
32
71
  const Tip = (props: {
33
72
  title?: string;
34
73
  className?: string;
@@ -37,10 +76,13 @@ const Tip = (props: {
37
76
  return (
38
77
  <Accordion type="single" collapsible={true} className={props.className}>
39
78
  <AccordionItem value="item-1" className="text-muted-foreground">
40
- <AccordionTrigger className="pt-2 pb-2 font-normal">
79
+ <AccordionTrigger className="pt-2 pb-0 font-normal">
41
80
  {props.title ?? "Tip"}
42
81
  </AccordionTrigger>
43
- <AccordionContent className="mr-24 text-[0.84375rem]">
82
+ <AccordionContent
83
+ className="mr-24 text-[0.84375rem]"
84
+ wrapperClassName="pt-0 pb-2"
85
+ >
44
86
  {props.children}
45
87
  </AccordionContent>
46
88
  </AccordionItem>
@@ -63,10 +105,21 @@ export const MarimoErrorOutput = ({
63
105
  className,
64
106
  }: Props): JSX.Element => {
65
107
  const chromeActions = useChromeActions();
66
-
67
- let titleContents = "This cell wasn't run because it has errors";
108
+ // The console area (where tracebacks are shown) sits below the cell editor.
109
+ // When cell outputs are also displayed below the editor, the traceback is
110
+ // already adjacent, so the "See the console area" hint is redundant. It is
111
+ // only helpful when outputs are displayed above the editor.
112
+ const showConsoleHint =
113
+ useAtomValue(resolvedMarimoConfigAtom).display.cell_output === "above";
114
+
115
+ let titleContents: string | null =
116
+ "This cell wasn't run because it has errors";
68
117
  let alertVariant: "destructive" | "default" = "destructive";
69
118
  let titleColor = "text-error";
119
+ // A small muted overline shown above the title for static errors, where
120
+ // the cell genuinely never executes. These errors have no separate title:
121
+ // the body text already describes them, so the overline carries the status.
122
+ let statusOverline: string | null = null;
70
123
  const liStyle = "my-0.5 ml-8 text-muted-foreground/40";
71
124
 
72
125
  // Check for certain error types to adjust title and appearance
@@ -77,7 +130,6 @@ export const MarimoErrorOutput = ({
77
130
  } else if (errors.some((e) => e.type === "ancestor-prevented")) {
78
131
  titleContents = "Ancestor prevented from running";
79
132
  alertVariant = "default";
80
- titleColor = "text-muted-foreground";
81
133
  titleColor = "text-secondary-foreground";
82
134
  } else if (errors.some((e) => e.type === "ancestor-stopped")) {
83
135
  titleContents = "Ancestor stopped";
@@ -85,6 +137,19 @@ export const MarimoErrorOutput = ({
85
137
  titleColor = "text-secondary-foreground";
86
138
  } else if (errors.some((e) => e.type === "sql-error")) {
87
139
  titleContents = "SQL error";
140
+ } else if (
141
+ errors.some(
142
+ (e) =>
143
+ e.type === "multiple-defs" ||
144
+ e.type === "cycle" ||
145
+ e.type === "setup-refs" ||
146
+ e.type === "import-star",
147
+ )
148
+ ) {
149
+ // Static errors: the body text describes the problem, so there is no
150
+ // separate title — only the status overline.
151
+ titleContents = null;
152
+ statusOverline = "Cell not run";
88
153
  } else {
89
154
  // Check for exception type
90
155
  const exceptionError = errors.find((e) => e.type === "exception");
@@ -475,9 +540,11 @@ export const MarimoErrorOutput = ({
475
540
  </ExternalLink>
476
541
  ).
477
542
  </p>
478
- <div className="text-muted-foreground mt-2">
479
- See the console area for a traceback.
480
- </div>
543
+ {showConsoleHint && (
544
+ <div className="text-muted-foreground mt-2">
545
+ See the console area for a traceback.
546
+ </div>
547
+ )}
481
548
  </div>
482
549
  </li>
483
550
  );
@@ -492,13 +559,13 @@ export const MarimoErrorOutput = ({
492
559
  {processTextForUrls(error.msg, `exception-${idx}`)}
493
560
  </p>
494
561
  {"traceback" in error && error.traceback ? (
495
- <div className="font-code text-sm mt-2 p-3 bg-muted rounded border overflow-auto max-h-[50vh] cursor-text select-text">
496
- {renderHTML({ html: error.traceback })}
497
- </div>
562
+ <CollapsibleTraceback traceback={error.traceback} />
498
563
  ) : (
499
- <div className="text-muted-foreground mt-2">
500
- See the console area for a traceback.
501
- </div>
564
+ showConsoleHint && (
565
+ <div className="text-muted-foreground mt-2">
566
+ See the console area for a traceback.
567
+ </div>
568
+ )
502
569
  )}
503
570
  </div>
504
571
  ) : (
@@ -506,9 +573,7 @@ export const MarimoErrorOutput = ({
506
573
  {processTextForUrls(error.msg, `exception-${idx}`)}
507
574
  <CellLinkError cellId={error.raising_cell} />
508
575
  {"traceback" in error && error.traceback && (
509
- <div className="font-code text-sm mt-2 p-3 bg-muted rounded border overflow-auto max-h-[50vh] cursor-text select-text">
510
- {renderHTML({ html: error.traceback })}
511
- </div>
576
+ <CollapsibleTraceback traceback={error.traceback} />
512
577
  )}
513
578
  </div>
514
579
  )}
@@ -633,23 +698,36 @@ export const MarimoErrorOutput = ({
633
698
  };
634
699
 
635
700
  const title = (
636
- <AlertTitle className={`font-code font-medium tracking-wide ${titleColor}`}>
637
- {titleContents}
638
- </AlertTitle>
701
+ <div className="space-y-0.5">
702
+ {statusOverline && (
703
+ <div className="flex items-center gap-1 font-code text-[0.6875rem] uppercase tracking-wider text-muted-foreground/70">
704
+ {statusOverline}
705
+ <Tooltip
706
+ content="marimo didn't run this cell because it detected an error."
707
+ delayDuration={200}
708
+ >
709
+ <InfoIcon className="size-3 cursor-help" />
710
+ </Tooltip>
711
+ </div>
712
+ )}
713
+ {titleContents && (
714
+ <AlertTitle className={`font-code font-medium ${titleColor}`}>
715
+ {titleContents}
716
+ </AlertTitle>
717
+ )}
718
+ </div>
639
719
  );
640
720
 
641
721
  return (
642
722
  <Alert
643
723
  variant={alertVariant}
644
724
  className={cn(
645
- "border-none font-code text-sm text-[0.84375rem] px-0 text-muted-foreground normal [&:has(svg)]:pl-0 space-y-4",
725
+ "border-none font-code text-sm text-[0.84375rem] p-0 text-muted-foreground normal [&:has(svg)]:pl-0 space-y-2",
646
726
  className,
647
727
  )}
648
728
  >
649
729
  {title}
650
- <div>
651
- <div className="flex flex-col gap-8">{renderMessages()}</div>
652
- </div>
730
+ <div className="flex flex-col gap-4">{renderMessages()}</div>
653
731
  </Alert>
654
732
  );
655
733
  };
@@ -5,17 +5,13 @@ import { useAtomValue } from "jotai";
5
5
  import {
6
6
  BugPlayIcon,
7
7
  ChevronDown,
8
+ ChevronRight,
8
9
  CopyIcon,
9
10
  ExternalLinkIcon,
10
11
  MessageCircleIcon,
11
12
  SearchIcon,
12
13
  } from "lucide-react";
13
14
  import { type JSX, useState } from "react";
14
- import {
15
- Accordion,
16
- AccordionContent,
17
- AccordionItem,
18
- } from "@/components/ui/accordion";
19
15
  import { Button } from "@/components/ui/button";
20
16
  import {
21
17
  DropdownMenu,
@@ -29,7 +25,7 @@ import { getCellEditorView } from "@/core/cells/cells";
29
25
  import type { CellId } from "@/core/cells/ids";
30
26
  import { SCRATCH_CELL_ID } from "@/core/cells/ids";
31
27
  import { insertDebuggerAtLine } from "@/core/codemirror/editing/debugging";
32
- import { aiEnabledAtom } from "@/core/config/config";
28
+ import { aiFeaturesEnabledAtom } from "@/core/config/config";
33
29
  import { getRequestClient } from "@/core/network/requests";
34
30
  import { isStaticNotebook } from "@/core/static/static-state";
35
31
  import { isWasm } from "@/core/wasm/utils";
@@ -45,7 +41,6 @@ import {
45
41
  extractAllTracebackInfo,
46
42
  getTracebackInfo,
47
43
  } from "@/utils/traceback";
48
- import { cn } from "../../../utils/cn";
49
44
  import { AIFixButton } from "../errors/auto-fix";
50
45
  import { MangledSegments } from "../errors/mangled-local-chip";
51
46
  import { CellLinkTraceback } from "../links/cell-link";
@@ -57,8 +52,6 @@ interface Props {
57
52
  onRefactorWithAI?: OnRefactorWithAI;
58
53
  }
59
54
 
60
- const KEY = "item";
61
-
62
55
  /**
63
56
  * List of errors due to violations of Marimo semantics.
64
57
  */
@@ -75,10 +68,9 @@ export const MarimoTracebackOutput = ({
75
68
  replaceMangledLocal,
76
69
  ],
77
70
  });
78
- const [expanded, setExpanded] = useState(true);
79
71
 
80
72
  const lastTracebackLine = lastLine(traceback);
81
- const aiEnabled = useAtomValue(aiEnabledAtom);
73
+ const aiFeaturesEnabled = useAtomValue(aiFeaturesEnabledAtom);
82
74
 
83
75
  // Get last traceback info
84
76
  const tracebackInfo = extractAllTracebackInfo(traceback)?.at(0);
@@ -91,10 +83,13 @@ export const MarimoTracebackOutput = ({
91
83
  !isStaticNotebook() &&
92
84
  cellId !== SCRATCH_CELL_ID;
93
85
 
94
- const showAIFix = onRefactorWithAI && aiEnabled && !isStaticNotebook();
86
+ const showAIFix =
87
+ onRefactorWithAI && aiFeaturesEnabled && !isStaticNotebook();
95
88
 
96
89
  const showSearch = !isStaticNotebook();
97
90
 
91
+ const [isOpen, setIsOpen] = useState(true);
92
+
98
93
  const handleRefactorWithAI = (triggerImmediately: boolean) => {
99
94
  onRefactorWithAI?.({
100
95
  prompt: `My code gives the following error:\n\n${lastTracebackLine}`,
@@ -102,35 +97,29 @@ export const MarimoTracebackOutput = ({
102
97
  });
103
98
  };
104
99
 
105
- const [error, errorMessage] = lastTracebackLine.split(":", 2);
106
- const errorMessageSegments = errorMessage
107
- ? splitMangledLocals(errorMessage)
108
- : [];
109
-
110
100
  return (
111
101
  <div className="flex flex-col gap-2 min-w-full w-fit">
112
- <Accordion type="single" collapsible={true} value={expanded ? KEY : ""}>
113
- <AccordionItem value={KEY} className="border-none">
114
- <div
115
- className="flex gap-2 h-10 px-2 hover:bg-muted rounded-sm select-none items-center cursor-pointer transition-all"
116
- onClick={() => setExpanded((prev) => !prev)}
117
- >
118
- <ChevronDown
119
- className={cn(
120
- "h-4 w-4 text-muted-foreground transition-transform duration-200 shrink-0",
121
- expanded ? "rotate-180" : "rotate-0",
122
- )}
123
- />
124
- <div className="text-sm inline font-mono">
125
- <span className="text-destructive">{error || "Error"}:</span>{" "}
126
- <MangledSegments segments={errorMessageSegments} />
127
- </div>
128
- </div>
129
- <AccordionContent className="text-muted-foreground px-4 pt-2 text-xs overflow-auto">
130
- {htmlTraceback}
131
- </AccordionContent>
132
- </AccordionItem>
133
- </Accordion>
102
+ <button
103
+ type="button"
104
+ onClick={() => setIsOpen(!isOpen)}
105
+ aria-expanded={isOpen}
106
+ aria-label={isOpen ? "Collapse traceback" : "Expand traceback"}
107
+ className="self-start flex items-center gap-1 pt-2 text-muted-foreground/70 hover:text-muted-foreground transition-colors"
108
+ >
109
+ {isOpen ? (
110
+ <ChevronDown className="h-3 w-3" />
111
+ ) : (
112
+ <ChevronRight className="h-3 w-3" />
113
+ )}
114
+ <span className="text-[0.6875rem] uppercase tracking-wider">
115
+ Traceback
116
+ </span>
117
+ </button>
118
+ {isOpen && (
119
+ <div className="text-muted-foreground pr-4 text-xs overflow-auto">
120
+ {htmlTraceback}
121
+ </div>
122
+ )}
134
123
  <div className="flex gap-2">
135
124
  {showAIFix && (
136
125
  <AIFixButton
@@ -24,7 +24,7 @@ import { maybeAddMarimoImport } from "@/core/cells/add-missing-import";
24
24
  import { SETUP_CELL_ID } from "@/core/cells/ids";
25
25
  import { LanguageAdapters } from "@/core/codemirror/language/LanguageAdapters";
26
26
  import { MARKDOWN_INITIAL_HIDE_CODE } from "@/core/codemirror/language/languages/markdown";
27
- import { aiEnabledAtom } from "@/core/config/config";
27
+ import { aiEnabledAtom, aiFeaturesEnabledAtom } from "@/core/config/config";
28
28
  import { canInteractWithAppAtom } from "@/core/network/connection";
29
29
  import { useBoolean } from "@/hooks/useBoolean";
30
30
  import { cn } from "@/utils/cn";
@@ -261,6 +261,7 @@ const AddCellButtons: React.FC<{
261
261
  const { createNewCell } = useCellActions();
262
262
  const [isAiButtonOpen, isAiButtonOpenActions] = useBoolean(false);
263
263
  const aiEnabled = useAtomValue(aiEnabledAtom);
264
+ const aiFeaturesEnabled = useAtomValue(aiFeaturesEnabledAtom);
264
265
  const canInteractWithApp = useAtomValue(canInteractWithAppAtom);
265
266
  const { handleClick } = useOpenSettingsToTab();
266
267
 
@@ -270,7 +271,7 @@ const AddCellButtons: React.FC<{
270
271
  );
271
272
 
272
273
  const renderBody = () => {
273
- if (isAiButtonOpen) {
274
+ if (aiEnabled && isAiButtonOpen) {
274
275
  return <AddCellWithAI onClose={isAiButtonOpenActions.toggle} />;
275
276
  }
276
277
 
@@ -328,30 +329,32 @@ const AddCellButtons: React.FC<{
328
329
  <DatabaseIcon className="mr-2 size-4 shrink-0" />
329
330
  SQL
330
331
  </Button>
331
- <Tooltip
332
- content={
333
- aiEnabled ? null : (
334
- <span>AI provider not found or Edit model not selected</span>
335
- )
336
- }
337
- delayDuration={100}
338
- asChild={false}
339
- >
340
- <Button
341
- className={buttonClass}
342
- variant="text"
343
- size="sm"
344
- disabled={!canInteractWithApp}
345
- onClick={
346
- aiEnabled
347
- ? isAiButtonOpenActions.toggle
348
- : () => handleClick("ai", "ai-providers")
332
+ {aiEnabled && (
333
+ <Tooltip
334
+ content={
335
+ aiFeaturesEnabled ? null : (
336
+ <span>AI provider not found or Edit model not selected</span>
337
+ )
349
338
  }
339
+ delayDuration={100}
340
+ asChild={false}
350
341
  >
351
- <SparklesIcon className="mr-2 size-4 shrink-0" />
352
- Generate with AI
353
- </Button>
354
- </Tooltip>
342
+ <Button
343
+ className={buttonClass}
344
+ variant="text"
345
+ size="sm"
346
+ disabled={!canInteractWithApp}
347
+ onClick={
348
+ aiFeaturesEnabled
349
+ ? isAiButtonOpenActions.toggle
350
+ : () => handleClick("ai", "ai-providers")
351
+ }
352
+ >
353
+ <SparklesIcon className="mr-2 size-4 shrink-0" />
354
+ Generate with AI
355
+ </Button>
356
+ </Tooltip>
357
+ )}
355
358
  </>
356
359
  );
357
360
  };