@marimo-team/frontend 0.19.8-dev41 → 0.19.8-dev49

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 (637) hide show
  1. package/dist/assets/{CellStatus-D-CCv4h6.js → CellStatus-CZlcjSUO.js} +1 -1
  2. package/dist/assets/{ConnectedDataExplorerComponent-C1BlkUlk.js → ConnectedDataExplorerComponent-HbY4uSsv.js} +1 -1
  3. package/dist/assets/Deferred-DxQeE5uh.js +1 -0
  4. package/dist/assets/{DeferredRequestRegistry-tv0PqJZ0.js → DeferredRequestRegistry-CMf25YiV.js} +1 -1
  5. package/dist/assets/{ImperativeModal-DZr52ffu.js → ImperativeModal-BNN1HA7x.js} +1 -1
  6. package/dist/assets/{JsonOutput-CU0ad2LH.js → JsonOutput-PE5ko4gi.js} +9 -9
  7. package/dist/assets/LazyAnyLanguageCodeMirror-DgZ8iknE.js +2 -0
  8. package/dist/assets/{MarimoErrorOutput-BydcsyYP.js → MarimoErrorOutput-Lf9P8Fhl.js} +5 -5
  9. package/dist/assets/{RenderHTML-3amWMGgo.js → RenderHTML-D-of_-s7.js} +1 -1
  10. package/dist/assets/__vite-browser-external-DT1nudb6.js +1 -0
  11. package/dist/assets/add-cell-with-ai-e_HMl7UU.js +90 -0
  12. package/dist/assets/{add-database-form-BnEY6X5s.js → add-database-form-DvnhmpaG.js} +1 -1
  13. package/dist/assets/agent-panel-bOQya9ER.js +287 -0
  14. package/dist/assets/{ai-model-dropdown-Cugcw6NV.js → ai-model-dropdown-Dk2SdB3C.js} +4 -4
  15. package/dist/assets/{alert-dialog-Ctz24SMn.js → alert-dialog-BW4srmS0.js} +1 -1
  16. package/dist/assets/{any-language-editor-DyXJSyeK.js → any-language-editor-BODEG_5g.js} +1 -1
  17. package/dist/assets/apl-CaYjM5u2.js +1 -0
  18. package/dist/assets/{app-config-button-66OSct-U.js → app-config-button-DMsJtN9b.js} +1 -1
  19. package/dist/assets/{arc-xh3ZebK_.js → arc-D1owqr0z.js} +1 -1
  20. package/dist/assets/{architecture-U656AL7Q-DQB1ihe9.js → architecture-U656AL7Q-DENTsr7c.js} +1 -1
  21. package/dist/assets/{architectureDiagram-VXUJARFQ-B8zMpJcM.js → architectureDiagram-VXUJARFQ-CDeVogFv.js} +1 -1
  22. package/dist/assets/asciiarmor-D2cJUKTq.js +1 -0
  23. package/dist/assets/asn1-CZDBKivQ.js +1 -0
  24. package/dist/assets/{blockDiagram-VD42YOAC-CF1a-_t0.js → blockDiagram-VD42YOAC-Bol-uwBO.js} +1 -1
  25. package/dist/assets/bot-message-square-B2ThzDUZ.js +1 -0
  26. package/dist/assets/brainfuck-D5O26WTe.js +1 -0
  27. package/dist/assets/{c4Diagram-YG6GDRKO-YIsEsUdQ.js → c4Diagram-YG6GDRKO-C-eNQ40H.js} +1 -1
  28. package/dist/assets/{cache-panel-C_9WDApV.js → cache-panel-D07YsKqa.js} +1 -1
  29. package/dist/assets/cell-editor-BW4w46wt.js +23 -0
  30. package/dist/assets/cell-link-B9b7J8QK.js +1 -0
  31. package/dist/assets/{cells-B0XKj2oa.js → cells-DPp5cDaO.js} +42 -42
  32. package/dist/assets/channel-CdzZX-OR.js +1 -0
  33. package/dist/assets/chat-display--jAB7huF.js +1 -0
  34. package/dist/assets/chat-panel-DzMwk8Wu.js +3 -0
  35. package/dist/assets/{chunk-4BX2VUAB-BP-RGZn9.js → chunk-4BX2VUAB-KawmK-5L.js} +1 -1
  36. package/dist/assets/chunk-55IACEB6-njZIr50E.js +1 -0
  37. package/dist/assets/{chunk-5FQGJX7Z-T2jyw7ZD.js → chunk-5FQGJX7Z-DPlx2kjA.js} +3 -3
  38. package/dist/assets/{chunk-ABZYJK2D-D1A06qKo.js → chunk-ABZYJK2D-0jga8uiE.js} +3 -3
  39. package/dist/assets/{chunk-ATLVNIR6-C5FWd1qN.js → chunk-ATLVNIR6-B17dg7Ry.js} +1 -1
  40. package/dist/assets/{chunk-B4BG7PRW-BEayfxv_.js → chunk-B4BG7PRW-DoVbcCDm.js} +1 -1
  41. package/dist/assets/{chunk-CVBHYZKI-Brsoob-W.js → chunk-CVBHYZKI-DU48rJVu.js} +1 -1
  42. package/dist/assets/{chunk-DI55MBZ5-BSrtupT8.js → chunk-DI55MBZ5-rLpl7joX.js} +1 -1
  43. package/dist/assets/{chunk-EXTU4WIE-wi_fHsHN.js → chunk-EXTU4WIE-Dmu97ZvI.js} +1 -1
  44. package/dist/assets/{chunk-FMBD7UC4-kejklSRQ.js → chunk-FMBD7UC4-CHJv683r.js} +1 -1
  45. package/dist/assets/{chunk-HN2XXSSU-BBxJMYrA.js → chunk-HN2XXSSU-Bdbi3Mns.js} +1 -1
  46. package/dist/assets/{chunk-JA3XYJ7Z-tKDxhnhw.js → chunk-JA3XYJ7Z-DOm8KfKa.js} +1 -1
  47. package/dist/assets/{chunk-JZLCHNYA-DtvI9B9X.js → chunk-JZLCHNYA-48QVgmR4.js} +1 -1
  48. package/dist/assets/{chunk-MI3HLSF2-D6we5Ftb.js → chunk-MI3HLSF2-n3vxgSbN.js} +1 -1
  49. package/dist/assets/{chunk-N4CR4FBY-BQcJpHO7.js → chunk-N4CR4FBY-BNoQB557.js} +2 -2
  50. package/dist/assets/{chunk-QN33PNHL-BboKw3W6.js → chunk-QN33PNHL-BOQncxfy.js} +1 -1
  51. package/dist/assets/{chunk-QXUST7PY-C4Ihfbmy.js → chunk-QXUST7PY-DkCIa8tJ.js} +1 -1
  52. package/dist/assets/{chunk-QZHKN3VN-DCq7JxLD.js → chunk-QZHKN3VN-Cp_TxrNJ.js} +1 -1
  53. package/dist/assets/{chunk-S3R3BYOJ-D1UiABQX.js → chunk-S3R3BYOJ-8loRaCFh.js} +1 -1
  54. package/dist/assets/{chunk-TZMSLE5B-BjrxQwUX.js → chunk-TZMSLE5B-CPHBPwrM.js} +1 -1
  55. package/dist/assets/classDiagram-2ON5EDUG-CUlU7OLD.js +1 -0
  56. package/dist/assets/classDiagram-v2-WZHVMYZB-DAwrDtTO.js +1 -0
  57. package/dist/assets/{clike-wo4CVrJj.js → clike-TwxwxEw_.js} +1 -1
  58. package/dist/assets/clojure-B8dfjAV6.js +1 -0
  59. package/dist/assets/cmake-D3vlGJdL.js +1 -0
  60. package/dist/assets/cobol-S-4I_F1W.js +1 -0
  61. package/dist/assets/{code-block-37QAKDTI-FUPT3-7o.js → code-block-37QAKDTI-DnnrjIZy.js} +1 -1
  62. package/dist/assets/coffeescript-DG-Oj54u.js +1 -0
  63. package/dist/assets/{column-preview-DrmYyyvE.js → column-preview-CXjSXUhP.js} +1 -1
  64. package/dist/assets/{command-DTFQw11F.js → command-2ElA5IkO.js} +1 -1
  65. package/dist/assets/{command-palette-CrOe4bpD.js → command-palette-DrD2qhGV.js} +1 -1
  66. package/dist/assets/{common-C0Pspoza.js → common-DSlhalAu.js} +1 -1
  67. package/dist/assets/commonlisp-CWlOS49U.js +1 -0
  68. package/dist/assets/{config-D2-Bw6QC.js → config-Q0O7_stz.js} +1 -1
  69. package/dist/assets/{context-Ga_vV5mE.js → context-BfYAMNLF.js} +1 -1
  70. package/dist/assets/{copy-icon-C9v8EtBA.js → copy-icon-v8ME_JKB.js} +1 -1
  71. package/dist/assets/{cose-bilkent-S5V4N54A-vYRNxW8r.js → cose-bilkent-S5V4N54A-tFAvjCRW.js} +1 -1
  72. package/dist/assets/crystal-CD-LQ3E-.js +1 -0
  73. package/dist/assets/{css-BJsW3aHa.js → css-sdrF9ahV.js} +1 -1
  74. package/dist/assets/cypher-oiVTIRlU.js +1 -0
  75. package/dist/assets/d-KaoGirPa.js +1 -0
  76. package/dist/assets/{dagre-6UL2VRFP-CX3NGWnu.js → dagre-6UL2VRFP-DOB6anec.js} +1 -1
  77. package/dist/assets/{data-grid-overlay-editor-BTyw6887.js → data-grid-overlay-editor-D8lE4fym.js} +1 -1
  78. package/dist/assets/{datasource-2_-ICoTV.js → datasource-CtyqtITR.js} +2 -2
  79. package/dist/assets/{dates-CT5PUuFo.js → dates-CrvjILe3.js} +1 -1
  80. package/dist/assets/{dependency-graph-panel-z8kf8Tus.js → dependency-graph-panel-Cbke_QgZ.js} +3 -3
  81. package/dist/assets/{diagram-PSM6KHXK-C0Sfgs1J.js → diagram-PSM6KHXK-DpuCiAS7.js} +1 -1
  82. package/dist/assets/{diagram-QEK2KX5R-DYSkW6Ju.js → diagram-QEK2KX5R-IlkvvuKX.js} +1 -1
  83. package/dist/assets/{diagram-S2PKOQOG-CfHqQVo3.js → diagram-S2PKOQOG-DJt_T1Gq.js} +1 -1
  84. package/dist/assets/{dialog-tQELcltn.js → dialog-eb-NieZw.js} +1 -1
  85. package/dist/assets/diff-Df1QxxZl.js +1 -0
  86. package/dist/assets/dist-4mAhUzty.js +1 -0
  87. package/dist/assets/dist-5CXgzdUa.js +1 -0
  88. package/dist/assets/{dist-DGPkGdD2.js → dist-8kKeYgOg.js} +1 -1
  89. package/dist/assets/dist-B27MCO52.js +1 -0
  90. package/dist/assets/{dist-SpkGM8op.js → dist-BXnpRw3d.js} +1 -1
  91. package/dist/assets/{dist-h1RhtzUB.js → dist-BZP3Xxma.js} +1 -1
  92. package/dist/assets/dist-Bc7uxGRW.js +1 -0
  93. package/dist/assets/{dist-BSxIk2Vq.js → dist-BtJZmWkg.js} +1 -1
  94. package/dist/assets/{dist-TiFCI16_.js → dist-Btv5Rh1v.js} +1 -1
  95. package/dist/assets/{dist-BwcKpTZt.js → dist-ByjGU_ag.js} +1 -1
  96. package/dist/assets/{dist-2qScxWoK.js → dist-C-V6lvxH.js} +1 -1
  97. package/dist/assets/dist-C6SivM7z.js +1 -0
  98. package/dist/assets/dist-C9k2RMmO.js +1 -0
  99. package/dist/assets/{dist-C0QU3Oay.js → dist-CEEqzIVj.js} +1 -1
  100. package/dist/assets/{dist-BtUqLXS9.js → dist-CEaOyZOW.js} +1 -1
  101. package/dist/assets/{dist-BcotcL0h.js → dist-CLc5WXWw.js} +1 -1
  102. package/dist/assets/{dist-B1CD4nG7.js → dist-CRjEDsfC.js} +1 -1
  103. package/dist/assets/{dist-DstaRs6N.js → dist-CsRJPnA9.js} +1 -1
  104. package/dist/assets/dist-Cx8mOJOB.js +1 -0
  105. package/dist/assets/{dist-CNknMFYG.js → dist-DLgWirXg.js} +1 -1
  106. package/dist/assets/{dist-B407S7D_.js → dist-DOZ8nmkC.js} +1 -1
  107. package/dist/assets/{dist-h7FGpi6W.js → dist-DUlOLsKi.js} +1 -1
  108. package/dist/assets/{dist-GCDTTvNx.js → dist-Dv0MupEh.js} +1 -1
  109. package/dist/assets/{dist-DDGMbl6p.js → dist-DwV58Fb1.js} +1 -1
  110. package/dist/assets/{dist-Cip4Ndtd.js → dist-OlCHPNfN.js} +1 -1
  111. package/dist/assets/{dist-Cayq-K1c.js → dist-bBwmhqty.js} +1 -1
  112. package/dist/assets/dist-fO1a06Tp.js +1 -0
  113. package/dist/assets/dist-iXB2pOUD.js +1 -0
  114. package/dist/assets/dist-lTwzYaMX.js +1 -0
  115. package/dist/assets/{dist-DXT0W0hS.js → dist-wS1s8MYb.js} +1 -1
  116. package/dist/assets/{dockerfile-BPCA7-hu.js → dockerfile-BmwSYxi2.js} +1 -1
  117. package/dist/assets/{documentation-panel-DIp1L-6Y.js → documentation-panel-BDQNa1xE.js} +1 -1
  118. package/dist/assets/{download-CxmzcjnR.js → download-os8QlW6l.js} +1 -1
  119. package/dist/assets/{dropdown-menu-BUgFWmX1.js → dropdown-menu-ldcmQvIV.js} +1 -1
  120. package/dist/assets/dtd-Aj5m459l.js +1 -0
  121. package/dist/assets/dylan-CdSB1nh8.js +1 -0
  122. package/dist/assets/ecl-CvwsCfi6.js +1 -0
  123. package/dist/assets/{edit-page-DRwTenyP.js → edit-page-BpIuEeU6.js} +7 -7
  124. package/dist/assets/eiffel-Bws25dAs.js +1 -0
  125. package/dist/assets/elm--WkcLZ1a.js +1 -0
  126. package/dist/assets/{erDiagram-Q2GNP2WA-BfRyUS6D.js → erDiagram-Q2GNP2WA-CekwCx1v.js} +1 -1
  127. package/dist/assets/erlang-Ct30wW1o.js +1 -0
  128. package/dist/assets/{error-banner-w4pz2qUB.js → error-banner-B9ts0mNl.js} +1 -1
  129. package/dist/assets/{error-panel-Cz3rrpG9.js → error-panel-B_234Lt3.js} +1 -1
  130. package/dist/assets/{es-GXAIFcot.js → es-BYgU_srD.js} +1 -1
  131. package/dist/assets/{esm-BK6tLEHQ.js → esm-Bmu2DhPy.js} +1 -1
  132. package/dist/assets/{esm-BmQh-C2G.js → esm-D82gQH1f.js} +1 -1
  133. package/dist/assets/{factor-Ccw_GUUV.js → factor-B3fhZG6W.js} +1 -1
  134. package/dist/assets/factor-DbSpQa-0.js +1 -0
  135. package/dist/assets/{field-D9jE8HEt.js → field-CySaBlkz.js} +1 -1
  136. package/dist/assets/{file-explorer-panel-BJWXa6fg.js → file-explorer-panel-T3oL7Bzx.js} +1 -1
  137. package/dist/assets/{floating-outline-BSd7WV6r.js → floating-outline-BtdqbkUq.js} +1 -1
  138. package/dist/assets/{flowDiagram-NV44I4VS-DKkZCUwG.js → flowDiagram-NV44I4VS-BhCyaqwV.js} +1 -1
  139. package/dist/assets/{focus-CZLCQiuh.js → focus-C1YokgL7.js} +1 -1
  140. package/dist/assets/{form-BQhIjeKF.js → form-BidPUZUn.js} +2 -2
  141. package/dist/assets/{formats-DGZwRUPy.js → formats-CobRswjh.js} +1 -1
  142. package/dist/assets/forth-BP0pXyoR.js +1 -0
  143. package/dist/assets/fortran-DpX_2iww.js +1 -0
  144. package/dist/assets/{gallery-page-1AmSypJ6.js → gallery-page-D5ulMArd.js} +1 -1
  145. package/dist/assets/{ganttDiagram-JELNMOA3-J8yLTqxn.js → ganttDiagram-JELNMOA3-Ct2B_ci4.js} +1 -1
  146. package/dist/assets/gas-CiUR6fHB.js +1 -0
  147. package/dist/assets/gherkin-C9v48C48.js +1 -0
  148. package/dist/assets/{gitGraph-F6HP7TQM-ULnyMCh9.js → gitGraph-F6HP7TQM-BwJPuiCH.js} +1 -1
  149. package/dist/assets/{gitGraphDiagram-NY62KEGX-DXw3a-uS.js → gitGraphDiagram-NY62KEGX-DOBPUqeq.js} +1 -1
  150. package/dist/assets/{glide-data-editor-Cw8eE9Xn.js → glide-data-editor-D1ZoJKPr.js} +4 -4
  151. package/dist/assets/{globals-DvWD0xHx.js → globals-BgACvYmr.js} +1 -1
  152. package/dist/assets/groovy-psUnKwK-.js +1 -0
  153. package/dist/assets/haskell-DZHQAKUV.js +1 -0
  154. package/dist/assets/haxe-AOvPCF-w.js +1 -0
  155. package/dist/assets/{home-page-BaZhe30b.js → home-page-DUMF8ZY4.js} +1 -1
  156. package/dist/assets/{hooks-B2h7NTXb.js → hooks-BGeojgid.js} +1 -1
  157. package/dist/assets/{html-to-image-Cc7t14sm.js → html-to-image-CIQqSu-S.js} +1 -1
  158. package/dist/assets/idl-CSA8C1ck.js +1 -0
  159. package/dist/assets/index-CeUwN_0i.css +2 -0
  160. package/dist/assets/{index-CQQ-Toaw.js → index-DFrkvKWf.js} +21 -21
  161. package/dist/assets/{info-NVLQJR56-gsco60Pt.js → info-NVLQJR56-Ccg18Lpe.js} +1 -1
  162. package/dist/assets/infoDiagram-WHAUD3N6-Cytag0-K.js +2 -0
  163. package/dist/assets/{input-DHHmNa19.js → input-DUrq2DiR.js} +1 -1
  164. package/dist/assets/javascript-XMYUq5-t.js +1 -0
  165. package/dist/assets/{journeyDiagram-XKPGCS4Q-Bmx7dA25.js → journeyDiagram-XKPGCS4Q-CPDnALH5.js} +1 -1
  166. package/dist/assets/julia-oON8zLDW.js +1 -0
  167. package/dist/assets/{kanban-definition-3W4ZIXB7-DJzhLwsl.js → kanban-definition-3W4ZIXB7-D0-Tthpw.js} +1 -1
  168. package/dist/assets/katex-DF982Ty5.js +1 -0
  169. package/dist/assets/{kiosk-mode-S90PbrZr.js → kiosk-mode-WmM7aFkh.js} +1 -1
  170. package/dist/assets/{label-C--1sWU6.js → label-E64zk6_7.js} +1 -1
  171. package/dist/assets/{layout-BRVYycwo.js → layout-_O8thjaV.js} +4 -4
  172. package/dist/assets/{line-VKarCWVL.js → line-BA7eTS55.js} +1 -1
  173. package/dist/assets/{linear-DWpCiijk.js → linear-BWciPXnd.js} +1 -1
  174. package/dist/assets/links-DWIqY1l5.js +1 -0
  175. package/dist/assets/livescript--BxQO5G_.js +1 -0
  176. package/dist/assets/{logs-panel-DU1PTK6I.js → logs-panel-C3cavnFO.js} +1 -1
  177. package/dist/assets/{loro_wasm_bg-aCueZs8k.js → loro_wasm_bg-C3Vl7VMX.js} +1 -1
  178. package/dist/assets/lua-CUyaVUOv.js +1 -0
  179. package/dist/assets/markdown-renderer-DJy8ww5d.js +10 -0
  180. package/dist/assets/mathematica-ONd8izyd.js +1 -0
  181. package/dist/assets/mbox-kjl3g9N-.js +1 -0
  182. package/dist/assets/{menu-items-vwmjPhjW.js → menu-items-BMjcEb2j.js} +1 -1
  183. package/dist/assets/mermaid-4DMBBIKO-DyygmIT8.js +1 -0
  184. package/dist/assets/{mermaid-parser.core-D237JwYN.js → mermaid-parser.core-BLHYb13y.js} +2 -2
  185. package/dist/assets/{mermaid-dAaJQU1M.js → mermaid-y-IBDpJK.js} +3 -3
  186. package/dist/assets/{mhchem-2XRJK9de.js → mhchem-ICopO0mb.js} +1 -1
  187. package/dist/assets/{mindmap-definition-VGOIOE7T-whTFv8Zv.js → mindmap-definition-VGOIOE7T-BflEJS3A.js} +1 -1
  188. package/dist/assets/mirc-BZ6TyuOO.js +1 -0
  189. package/dist/assets/mllike-Dxt2U6MQ.js +1 -0
  190. package/dist/assets/{mode-CTf4rB7H.js → mode-Bn7pdJvO.js} +1 -1
  191. package/dist/assets/modelica-B9sdhdtj.js +1 -0
  192. package/dist/assets/mscgen-5e5Z5trn.js +1 -0
  193. package/dist/assets/{multi-map-A4XNra08.js → multi-map-DxdLNTBd.js} +1 -1
  194. package/dist/assets/mumps-BUfWDrRe.js +1 -0
  195. package/dist/assets/{name-cell-input-Bmq-KdJ-.js → name-cell-input-Bc7geMVf.js} +1 -1
  196. package/dist/assets/nsis-Dq7T79DJ.js +1 -0
  197. package/dist/assets/{nsis-CzZqoCdu.js → nsis-QuE155sg.js} +1 -1
  198. package/dist/assets/ntriples-Dqzi7kwu.js +1 -0
  199. package/dist/assets/{number-overlay-editor-65UcMR52.js → number-overlay-editor-Dylprn80.js} +1 -1
  200. package/dist/assets/octave-v4IgjFm5.js +1 -0
  201. package/dist/assets/{ordinal-DAqJmfoU.js → ordinal-DG_POl79.js} +1 -1
  202. package/dist/assets/{outline-panel-Cfpy5BTW.js → outline-panel-Bxt_JABC.js} +1 -1
  203. package/dist/assets/oz-BtUsXhbc.js +1 -0
  204. package/dist/assets/packages-panel-yEp7rAYf.js +1 -0
  205. package/dist/assets/{packet-BFZMPI3H-CnHEXEVi.js → packet-BFZMPI3H-C_EwQwCX.js} +1 -1
  206. package/dist/assets/panels-IsIZwIow.js +1 -0
  207. package/dist/assets/pascal-DV7k6vJ0.js +1 -0
  208. package/dist/assets/perl-Bz7YaP_R.js +1 -0
  209. package/dist/assets/{pie-7BOR55EZ-C5Sp4r8f.js → pie-7BOR55EZ-B2NFlNeo.js} +1 -1
  210. package/dist/assets/{pieDiagram-ADFJNKIX-4n07I4VV.js → pieDiagram-ADFJNKIX-DXRnX2TS.js} +1 -1
  211. package/dist/assets/pig-BQWmcOEQ.js +1 -0
  212. package/dist/assets/{popover-B-131r4d.js → popover-CH1FzjxU.js} +1 -1
  213. package/dist/assets/powershell-CmIFs71i.js +1 -0
  214. package/dist/assets/{precisionRound-C3fmBb6j.js → precisionRound-CU2C3Vxx.js} +1 -1
  215. package/dist/assets/{process-output-CdIpMer6.js → process-output-ByfLnk6j.js} +1 -1
  216. package/dist/assets/properties-D7F2Eomu.js +1 -0
  217. package/dist/assets/protobuf-BMELuvny.js +1 -0
  218. package/dist/assets/pug-C2KbP_v3.js +1 -0
  219. package/dist/assets/{pug-BqLMXh-D.js → pug-NA-6TsNe.js} +1 -1
  220. package/dist/assets/puppet-C7MviiPj.js +1 -0
  221. package/dist/assets/python-BUl8uFIl.js +1 -0
  222. package/dist/assets/q-B5bIbNKB.js +1 -0
  223. package/dist/assets/{quadrantDiagram-AYHSOK5B-CNm24EC2.js → quadrantDiagram-AYHSOK5B-e3OVACTV.js} +1 -1
  224. package/dist/assets/r-B0lU_x8o.js +1 -0
  225. package/dist/assets/{radar-NHE76QYJ-DAElyE_r.js → radar-NHE76QYJ-C3XGuwbG.js} +1 -1
  226. package/dist/assets/{react-plotly-OyYr93y7.js → react-plotly-kw5W3sN8.js} +1 -1
  227. package/dist/assets/{react-vega-BEiHA2e9.js → react-vega-BL1HBBjq.js} +1 -1
  228. package/dist/assets/react-vega-gERE3HQc.js +1 -0
  229. package/dist/assets/{readonly-python-code-o3TsTcFg.js → readonly-python-code-WjTf6Pdd.js} +1 -1
  230. package/dist/assets/{renderShortcut-Xr6z-RjZ.js → renderShortcut-BckyRbYt.js} +1 -1
  231. package/dist/assets/{request-registry-BWqkV683.js → request-registry-C5_pVc8Y.js} +1 -1
  232. package/dist/assets/{requirementDiagram-UZGBJVZJ-B7BwuJGh.js → requirementDiagram-UZGBJVZJ-DMbzgjKI.js} +1 -1
  233. package/dist/assets/rpm-BqQ3VFpY.js +1 -0
  234. package/dist/assets/ruby-AFh8QoqR.js +1 -0
  235. package/dist/assets/{run-page-BRiD7IM8.js → run-page-_7E2SCeQ.js} +1 -1
  236. package/dist/assets/{sankeyDiagram-TZEHDZUN-C8KpmdhC.js → sankeyDiagram-TZEHDZUN-B90PTMUW.js} +1 -1
  237. package/dist/assets/sas-CeRTI9sn.js +1 -0
  238. package/dist/assets/scheme-D0VcE_o1.js +1 -0
  239. package/dist/assets/{scratchpad-panel-9Nh-KCKz.js → scratchpad-panel-C6thsU6k.js} +1 -1
  240. package/dist/assets/{secrets-panel-CEMSgQv5.js → secrets-panel-Db_JucCn.js} +1 -1
  241. package/dist/assets/{select-B7bfltkI.js → select-BVdzZKAh.js} +1 -1
  242. package/dist/assets/{sequenceDiagram-WL72ISMW-D0_AcPzd.js → sequenceDiagram-WL72ISMW-DKFGl_80.js} +1 -1
  243. package/dist/assets/{session-panel-9cibvZIi.js → session-panel-3zs_-lnF.js} +1 -1
  244. package/dist/assets/{share-rXkgGlhr.js → share-ipf2hrOh.js} +1 -1
  245. package/dist/assets/shell-BBh9RTgS.js +1 -0
  246. package/dist/assets/sieve-BSX0MHaT.js +1 -0
  247. package/dist/assets/{slides-component-C0UAH9QZ.js → slides-component-JYH8kck6.js} +1 -1
  248. package/dist/assets/smalltalk-PvrpLgKW.js +1 -0
  249. package/dist/assets/{snippets-panel-BLiaEg0s.js → snippets-panel-Bbk7MFBI.js} +1 -1
  250. package/dist/assets/sparql-CXsmb8zq.js +1 -0
  251. package/dist/assets/{house-BI81AWSn.js → square-CuJ72M8f.js} +1 -1
  252. package/dist/assets/{src-DJ8ZKoFs.js → src-CvyFXpBy.js} +1 -1
  253. package/dist/assets/{state-DAl4qLSi.js → state-BrMfOLl1.js} +1 -1
  254. package/dist/assets/{state-Q32Iqos3.js → state-D4T75eZb.js} +1 -1
  255. package/dist/assets/{stateDiagram-FKZM4ZOC-Dz_iVJd6.js → stateDiagram-FKZM4ZOC-Czf6mxbq.js} +1 -1
  256. package/dist/assets/stateDiagram-v2-4FDKWEC3-DT577w6p.js +1 -0
  257. package/dist/assets/{step-DGkZosD0.js → step-CVy5FnKg.js} +1 -1
  258. package/dist/assets/stex-Dn4qnyVB.js +1 -0
  259. package/dist/assets/stylus-B60bUBy2.js +1 -0
  260. package/dist/assets/swift-BwnHGvoR.js +1 -0
  261. package/dist/assets/{switch-D5W4wgWK.js → switch-dWLWbbtg.js} +1 -1
  262. package/dist/assets/tcl-Bj8phnhq.js +1 -0
  263. package/dist/assets/{terminal-BLSSaFMR.js → terminal-CjhjkmtR.js} +1 -1
  264. package/dist/assets/{textarea-UfsPtSW1.js → textarea-CRI7xDBj.js} +1 -1
  265. package/dist/assets/textile-WPCmEeGb.js +1 -0
  266. package/dist/assets/{time-CSCsAxXS.js → time-DkuObi5n.js} +1 -1
  267. package/dist/assets/{timeline-definition-IT6M3QCI-DPXEeoSm.js → timeline-definition-IT6M3QCI-Cr57imdX.js} +1 -1
  268. package/dist/assets/{toggle-CriARMQK.js → toggle-zVW4FXNz.js} +1 -1
  269. package/dist/assets/toml-Cdfp0vaG.js +1 -0
  270. package/dist/assets/{tooltip-C_WgOOcZ.js → tooltip-CMQz28hC.js} +1 -1
  271. package/dist/assets/{tooltip-DqsDDLgU.js → tooltip-DxKBXCGp.js} +1 -1
  272. package/dist/assets/{tracing-BqFhwuOc.js → tracing-U3RlLbPJ.js} +1 -1
  273. package/dist/assets/tracing-panel-D6GhZuLA.js +2 -0
  274. package/dist/assets/{tree-Hg81oJmp.js → tree-B--q0-tu.js} +1 -1
  275. package/dist/assets/{treemap-KMMF4GRG-Bf9yeA5X.js → treemap-KMMF4GRG-CQXdJ2ER.js} +1 -1
  276. package/dist/assets/troff-D4suUzlg.js +1 -0
  277. package/dist/assets/ttcn-CvD_6RGm.js +1 -0
  278. package/dist/assets/ttcn-cfg-BX59kgnW.js +1 -0
  279. package/dist/assets/turtle-midFOTTV.js +1 -0
  280. package/dist/assets/{types-DIb0tcCO.js → types-BRfQN3HL.js} +1 -1
  281. package/dist/assets/{useAddCell-CXRk4Ma4.js → useAddCell-CmuX2hOk.js} +1 -1
  282. package/dist/assets/{useBoolean-IZsSX_XF.js → useBoolean-Ck_unDZw.js} +1 -1
  283. package/dist/assets/{useCellActionButton-Du-bZZ06.js → useCellActionButton-DUDHPTmq.js} +1 -1
  284. package/dist/assets/{useDateFormatter-CieT0-H-.js → useDateFormatter-CqhdUl2n.js} +1 -1
  285. package/dist/assets/{useDeleteCell-D0DAGwMP.js → useDeleteCell-DdRX94yC.js} +1 -1
  286. package/dist/assets/{useDependencyPanelTab-CN5-nxOy.js → useDependencyPanelTab-CeDmKn0Z.js} +1 -1
  287. package/dist/assets/{useInstallPackage-Co79H1lQ.js → useInstallPackage-D4fX0Ee_.js} +1 -1
  288. package/dist/assets/useNotebookActions-BFGSBiOA.js +1 -0
  289. package/dist/assets/{useNumberFormatter-BX4DTYtT.js → useNumberFormatter-Db6Vjve5.js} +1 -1
  290. package/dist/assets/{usePress-3CRs0fQg.js → usePress-C__vuri5.js} +1 -1
  291. package/dist/assets/useRunCells-D2HBb4DB.js +1 -0
  292. package/dist/assets/{useSplitCell-Cjr7nuBc.js → useSplitCell-C4khe6eU.js} +1 -1
  293. package/dist/assets/utilities.esm-MA1QpjVT.js +3 -0
  294. package/dist/assets/vb-CSNH0UHQ.js +1 -0
  295. package/dist/assets/vbscript-DTgXfl5y.js +1 -0
  296. package/dist/assets/{vega-component-7jd4fFCJ.js → vega-component-D4L27L4Y.js} +1 -1
  297. package/dist/assets/{vega-loader.browser-BegSZk0G.js → vega-loader.browser-DXARUlxo.js} +1 -1
  298. package/dist/assets/velocity-CKgzALh9.js +1 -0
  299. package/dist/assets/verilog-NDqaS3bW.js +1 -0
  300. package/dist/assets/vhdl-BibQgFNM.js +1 -0
  301. package/dist/assets/webidl-BjqVurO-.js +1 -0
  302. package/dist/assets/worker-BPV9SmHz.js +120 -0
  303. package/dist/assets/{write-secret-modal-DO-EOoNO.js → write-secret-modal-1fGKmd5H.js} +1 -1
  304. package/dist/assets/xquery-DQLXMdMd.js +1 -0
  305. package/dist/assets/{xychartDiagram-PRI3JC2R-DINfGlOV.js → xychartDiagram-PRI3JC2R-DtYN6-1-.js} +1 -1
  306. package/dist/assets/yacas-DlkZlCdY.js +1 -0
  307. package/dist/assets/z80-YKwwCjvZ.js +1 -0
  308. package/dist/index.html +113 -114
  309. package/package.json +1 -1
  310. package/src/components/app-config/optional-features.tsx +1 -1
  311. package/src/components/chat/__tests__/useFileState.test.tsx +93 -0
  312. package/src/components/chat/acp/agent-panel.tsx +26 -77
  313. package/src/components/chat/chat-components.tsx +114 -1
  314. package/src/components/chat/chat-panel.tsx +32 -104
  315. package/src/components/chat/chat-utils.ts +42 -0
  316. package/src/components/editor/ai/add-cell-with-ai.tsx +85 -53
  317. package/src/components/editor/ai/ai-completion-editor.tsx +15 -38
  318. package/src/components/editor/chrome/panels/packages-panel.tsx +12 -9
  319. package/src/core/islands/__tests__/bridge.test.ts +7 -2
  320. package/src/core/islands/bridge.ts +1 -1
  321. package/src/core/islands/main.ts +7 -0
  322. package/src/core/network/types.ts +2 -2
  323. package/src/core/wasm/bridge.ts +1 -1
  324. package/src/core/websocket/useMarimoKernelConnection.tsx +5 -15
  325. package/src/plugins/impl/anywidget/AnyWidgetPlugin.tsx +86 -167
  326. package/src/plugins/impl/anywidget/__tests__/AnyWidgetPlugin.test.tsx +37 -123
  327. package/src/plugins/impl/anywidget/__tests__/model.test.ts +128 -122
  328. package/src/{utils/__tests__/data-views.test.ts → plugins/impl/anywidget/__tests__/serialization.test.ts} +42 -96
  329. package/src/plugins/impl/anywidget/model.ts +348 -223
  330. package/src/plugins/impl/anywidget/schemas.ts +32 -0
  331. package/src/{utils/data-views.ts → plugins/impl/anywidget/serialization.ts} +13 -36
  332. package/src/plugins/impl/anywidget/types.ts +27 -0
  333. package/src/plugins/impl/chat/chat-ui.tsx +22 -20
  334. package/src/utils/Deferred.ts +21 -0
  335. package/src/utils/json/base64.ts +38 -8
  336. package/dist/assets/Deferred-CrO5-0RA.js +0 -1
  337. package/dist/assets/LazyAnyLanguageCodeMirror-BqosdyZU.js +0 -2
  338. package/dist/assets/__vite-browser-external-DBckR0WR.js +0 -1
  339. package/dist/assets/add-cell-with-ai-B07D0AiE.js +0 -90
  340. package/dist/assets/agent-panel-C1O0Y8Bi.js +0 -287
  341. package/dist/assets/apl-DpOiWl6J.js +0 -1
  342. package/dist/assets/asciiarmor-DVIuYySe.js +0 -1
  343. package/dist/assets/asn1-CWHjZJq6.js +0 -1
  344. package/dist/assets/brainfuck-CIKJewgG.js +0 -1
  345. package/dist/assets/cell-editor-DZgQrVMs.js +0 -23
  346. package/dist/assets/cell-link-B37i0WNz.js +0 -1
  347. package/dist/assets/channel-CXFsg7SH.js +0 -1
  348. package/dist/assets/chat-components-BNjAKvAv.js +0 -1
  349. package/dist/assets/chat-display-q9RdcWB-.js +0 -1
  350. package/dist/assets/chat-panel-viPqlAXC.js +0 -3
  351. package/dist/assets/chunk-55IACEB6-NZRDKuqH.js +0 -1
  352. package/dist/assets/classDiagram-2ON5EDUG-BHD5dOKT.js +0 -1
  353. package/dist/assets/classDiagram-v2-WZHVMYZB-VYd80hrd.js +0 -1
  354. package/dist/assets/clojure-CTxjMkBI.js +0 -1
  355. package/dist/assets/cmake-aJ0aGjat.js +0 -1
  356. package/dist/assets/cobol-Dw9T4cw-.js +0 -1
  357. package/dist/assets/coffeescript-B5HCKl_0.js +0 -1
  358. package/dist/assets/commonlisp-C578hhl1.js +0 -1
  359. package/dist/assets/crystal-D84c1nzD.js +0 -1
  360. package/dist/assets/cypher-DBO3MHmN.js +0 -1
  361. package/dist/assets/d-KvHiAR3H.js +0 -1
  362. package/dist/assets/diff-BmUpKGx-.js +0 -1
  363. package/dist/assets/dist-1nstYXhq.js +0 -1
  364. package/dist/assets/dist-8LCoAaYJ.js +0 -1
  365. package/dist/assets/dist-B6bNYRJb.js +0 -1
  366. package/dist/assets/dist-BKMynip3.js +0 -1
  367. package/dist/assets/dist-BP1tfplb.js +0 -1
  368. package/dist/assets/dist-BuwU3nUf.js +0 -1
  369. package/dist/assets/dist-DrFRlZJz.js +0 -1
  370. package/dist/assets/dist-DzjeKTWA.js +0 -1
  371. package/dist/assets/dist-QPLTo43F.js +0 -1
  372. package/dist/assets/dist-YQMqR1ri.js +0 -1
  373. package/dist/assets/dtd-Dwf-AbUl.js +0 -1
  374. package/dist/assets/dylan-VHUB-7ez.js +0 -1
  375. package/dist/assets/ecl-DvGrObaA.js +0 -1
  376. package/dist/assets/eiffel-CUYga93e.js +0 -1
  377. package/dist/assets/elm-BhMhmEP6.js +0 -1
  378. package/dist/assets/erlang-D4xbdJFD.js +0 -1
  379. package/dist/assets/factor-C0grrWrC.js +0 -1
  380. package/dist/assets/forth-CSTdXn4A.js +0 -1
  381. package/dist/assets/fortran-fENQO2l9.js +0 -1
  382. package/dist/assets/gas-CPJMP4zj.js +0 -1
  383. package/dist/assets/gherkin-CiUmN4EE.js +0 -1
  384. package/dist/assets/groovy-DMooZA1X.js +0 -1
  385. package/dist/assets/haskell-sDlThg6u.js +0 -1
  386. package/dist/assets/haxe-Do80ITri.js +0 -1
  387. package/dist/assets/idl-DFPg6k4F.js +0 -1
  388. package/dist/assets/index-GcHhnSIR.css +0 -2
  389. package/dist/assets/infoDiagram-WHAUD3N6-32du45zK.js +0 -2
  390. package/dist/assets/javascript-BGc4iHiT.js +0 -1
  391. package/dist/assets/julia-BHNHVraD.js +0 -1
  392. package/dist/assets/katex-axIMlGRc.js +0 -1
  393. package/dist/assets/links-DgZx-VxW.js +0 -1
  394. package/dist/assets/livescript-Bv2FpOTI.js +0 -1
  395. package/dist/assets/lua-BysKHKPZ.js +0 -1
  396. package/dist/assets/markdown-renderer-Y3WEBmX7.js +0 -10
  397. package/dist/assets/mathematica-BBTHoTvM.js +0 -1
  398. package/dist/assets/mbox-DeT9_lvk.js +0 -1
  399. package/dist/assets/mermaid-4DMBBIKO-Dn0v3H8Z.js +0 -1
  400. package/dist/assets/mirc-D5fMSrXQ.js +0 -1
  401. package/dist/assets/mllike-BtxCpmpf.js +0 -1
  402. package/dist/assets/modelica-CRQcZpK6.js +0 -1
  403. package/dist/assets/mscgen-BfscU11q.js +0 -1
  404. package/dist/assets/mumps-g7ooySbl.js +0 -1
  405. package/dist/assets/nsis-BtyCmCHZ.js +0 -1
  406. package/dist/assets/ntriples-DLyxF-NO.js +0 -1
  407. package/dist/assets/octave-CFXP_zzr.js +0 -1
  408. package/dist/assets/oz-CrQbC0N_.js +0 -1
  409. package/dist/assets/packages-panel-C2SNGD_P.js +0 -1
  410. package/dist/assets/panels-D47UNcb0.js +0 -1
  411. package/dist/assets/pascal-CCSZgYZH.js +0 -1
  412. package/dist/assets/perl-Bc1MycMl.js +0 -1
  413. package/dist/assets/pig-CDr04RdE.js +0 -1
  414. package/dist/assets/powershell-DcvrUwmh.js +0 -1
  415. package/dist/assets/properties-Y8OgFJMt.js +0 -1
  416. package/dist/assets/protobuf-Dyx-ENis.js +0 -1
  417. package/dist/assets/pug-T7qjkmFh.js +0 -1
  418. package/dist/assets/puppet-BzYSg90u.js +0 -1
  419. package/dist/assets/python-D4S7tVrv.js +0 -1
  420. package/dist/assets/q-YpqabiSl.js +0 -1
  421. package/dist/assets/r-DzpuVbmQ.js +0 -1
  422. package/dist/assets/react-vega-BrNLU7si.js +0 -1
  423. package/dist/assets/rpm-DlmAEsH3.js +0 -1
  424. package/dist/assets/ruby-BHSBK3B4.js +0 -1
  425. package/dist/assets/sas-DmQmrPAn.js +0 -1
  426. package/dist/assets/scheme-CZHvt0eC.js +0 -1
  427. package/dist/assets/shell-BJzvpTMz.js +0 -1
  428. package/dist/assets/sieve-DGjPhm-6.js +0 -1
  429. package/dist/assets/smalltalk-DaG60CSr.js +0 -1
  430. package/dist/assets/sparql-CN49rXKB.js +0 -1
  431. package/dist/assets/square-DPZjfUaq.js +0 -1
  432. package/dist/assets/stateDiagram-v2-4FDKWEC3-CupainMB.js +0 -1
  433. package/dist/assets/stex-D6sqtveI.js +0 -1
  434. package/dist/assets/stylus-CzHZ_0CL.js +0 -1
  435. package/dist/assets/swift-5fr5bTbW.js +0 -1
  436. package/dist/assets/tcl-D5oaR_GS.js +0 -1
  437. package/dist/assets/textile-CJ5e8-7o.js +0 -1
  438. package/dist/assets/toml-D9QwsDZO.js +0 -1
  439. package/dist/assets/tracing-panel-R9i0TrmX.js +0 -2
  440. package/dist/assets/troff-DlwQJbfr.js +0 -1
  441. package/dist/assets/ttcn-DUvoO9Vo.js +0 -1
  442. package/dist/assets/ttcn-cfg-Cj-t-B3M.js +0 -1
  443. package/dist/assets/turtle-DzvxCIjc.js +0 -1
  444. package/dist/assets/useNotebookActions--9xrGXss.js +0 -1
  445. package/dist/assets/useRunCells-DaW_oMnr.js +0 -1
  446. package/dist/assets/utilities.esm-CME5sKpT.js +0 -3
  447. package/dist/assets/vb-Caf126uo.js +0 -1
  448. package/dist/assets/vbscript-BgRl-LR8.js +0 -1
  449. package/dist/assets/velocity-CpvfwasF.js +0 -1
  450. package/dist/assets/verilog-hsHogyKv.js +0 -1
  451. package/dist/assets/vhdl-FciHazR1.js +0 -1
  452. package/dist/assets/webidl-CqjZNx5V.js +0 -1
  453. package/dist/assets/worker-CyCdlLVf.js +0 -120
  454. package/dist/assets/xquery-DpTaL2IT.js +0 -1
  455. package/dist/assets/yacas-D6bbkHsk.js +0 -1
  456. package/dist/assets/z80-MlujNizn.js +0 -1
  457. /package/dist/assets/{Combination-izwufzWe.js → Combination-BAEdC-rz.js} +0 -0
  458. /package/dist/assets/{ImageComparisonComponent-BVXYpigZ.js → ImageComparisonComponent-BmIQwrIS.js} +0 -0
  459. /package/dist/assets/{Inputs-CbenuziM.js → Inputs-GV-aQbOR.js} +0 -0
  460. /package/dist/assets/{SSRProvider-DrpctNAg.js → SSRProvider-BIDQNg9Q.js} +0 -0
  461. /package/dist/assets/{alert-Cx8eFRUM.js → alert-BOoN6gJ1.js} +0 -0
  462. /package/dist/assets/{apl-CpVTW0fY.js → apl-DHQPYmx2.js} +0 -0
  463. /package/dist/assets/{array-BKCdRGCR.js → array-Cf4PUXPA.js} +0 -0
  464. /package/dist/assets/{asciiarmor-qDK46YPd.js → asciiarmor-fnQAw8T8.js} +0 -0
  465. /package/dist/assets/{asn1-s2ZJql-T.js → asn1-5lb7I37s.js} +0 -0
  466. /package/dist/assets/{asterisk-Cy-53Fu-.js → asterisk-B04IJwAt.js} +0 -0
  467. /package/dist/assets/{badge-D4keL3YC.js → badge-DX6CQ6PA.js} +0 -0
  468. /package/dist/assets/{blob-Bgnx1kuY.js → blob-D-eV0cU3.js} +0 -0
  469. /package/dist/assets/{brainfuck-5fD7ZBSv.js → brainfuck-D30bRgvC.js} +0 -0
  470. /package/dist/assets/{bundle.esm-CBAPjfrh.js → bundle.esm-i_UbZC0w.js} +0 -0
  471. /package/dist/assets/{card-DdlNjkEA.js → card-OlSjYhmd.js} +0 -0
  472. /package/dist/assets/{chunk-76Q3JFCE-B261Xkae.js → chunk-76Q3JFCE-BAZ3z-Fu.js} +0 -0
  473. /package/dist/assets/{chunk-FWNWRKHM-C0b0DIG0.js → chunk-FWNWRKHM-DzIkWreD.js} +0 -0
  474. /package/dist/assets/{chunk-LBM3YZW2-D3uTpSOd.js → chunk-LBM3YZW2-BRBe7ZaP.js} +0 -0
  475. /package/dist/assets/{chunk-LHMN2FUI-2FK1AIwU.js → chunk-LHMN2FUI-C4onQD9F.js} +0 -0
  476. /package/dist/assets/{chunk-O7ZBX7Z2-DoE29Zoe.js → chunk-O7ZBX7Z2-CFqB9i7k.js} +0 -0
  477. /package/dist/assets/{chunk-S6J4BHB3-Cvr0itXK.js → chunk-S6J4BHB3-C4KwSfr_.js} +0 -0
  478. /package/dist/assets/{chunk-T53DSG4Q-C7bPrBIt.js → chunk-T53DSG4Q-Bhd043Cg.js} +0 -0
  479. /package/dist/assets/{chunk-XAJISQIX-TwS9jXHm.js → chunk-XAJISQIX-0gvwv13B.js} +0 -0
  480. /package/dist/assets/{clear-button-DI7_bdOB.js → clear-button-DMZhBF9S.js} +0 -0
  481. /package/dist/assets/{click-outside-container-Npdlddni.js → click-outside-container-BXzp0MYr.js} +0 -0
  482. /package/dist/assets/{clike-D58k-9vu.js → clike-jZeb2kFn.js} +0 -0
  483. /package/dist/assets/{clojure-Dkfjc-Fr.js → clojure-C0pkR8m2.js} +0 -0
  484. /package/dist/assets/{cmake-ffkxaUPf.js → cmake-DlvFtk_M.js} +0 -0
  485. /package/dist/assets/{cobol-CKARYRbQ.js → cobol-C_yb45mr.js} +0 -0
  486. /package/dist/assets/{coffeescript-Dz_r13Pd.js → coffeescript-DBK0AeMT.js} +0 -0
  487. /package/dist/assets/{colors-CUF0x3zZ.js → colors-DUsH-HF1.js} +0 -0
  488. /package/dist/assets/{common-keywords-CU-S2Vqm.js → common-keywords-D6ImdZX8.js} +0 -0
  489. /package/dist/assets/{commonlisp-EavL1_-N.js → commonlisp-Bo8hOdn-.js} +0 -0
  490. /package/dist/assets/{copy-BaRrAFL-.js → copy-DHrHayPa.js} +0 -0
  491. /package/dist/assets/{crystal-BQ8grXRY.js → crystal-DYrQEMVi.js} +0 -0
  492. /package/dist/assets/{css-Bmqfl4iE.js → css-zh47N2UC.js} +0 -0
  493. /package/dist/assets/{cypher-BKXIqXpT.js → cypher-BWPAHm69.js} +0 -0
  494. /package/dist/assets/{cytoscape.esm-BihqZ2_-.js → cytoscape.esm-BauVghWH.js} +0 -0
  495. /package/dist/assets/{d-DRfFJaS4.js → d-CMuL95tt.js} +0 -0
  496. /package/dist/assets/{defaultLocale-B6z1Qyqt.js → defaultLocale-BLne0bXb.js} +0 -0
  497. /package/dist/assets/{defaultLocale-YteS-k_t.js → defaultLocale-JieDVWC_.js} +0 -0
  498. /package/dist/assets/{diff-BWk1g4qN.js → diff-oor_HZ51.js} +0 -0
  499. /package/dist/assets/{dist-qIIHXwC_.js → dist-B62Xo7-b.js} +0 -0
  500. /package/dist/assets/{dist-Bx6F_B1m.js → dist-B83wRp_v.js} +0 -0
  501. /package/dist/assets/{dist-DLCy1STk.js → dist-BZWmfQbq.js} +0 -0
  502. /package/dist/assets/{dist-OZngTf6n.js → dist-BpuNldXk.js} +0 -0
  503. /package/dist/assets/{dist-DxxvVPQH.js → dist-C1VXabOr.js} +0 -0
  504. /package/dist/assets/{dist-Bpsss9Eu.js → dist-C5H5qIvq.js} +0 -0
  505. /package/dist/assets/{dist-BMEHQAhk.js → dist-CDXJRSCj.js} +0 -0
  506. /package/dist/assets/{dist-DsxhNXOv.js → dist-CF4gkF4y.js} +0 -0
  507. /package/dist/assets/{dist-rT8uZk_k.js → dist-CNW1zLeq.js} +0 -0
  508. /package/dist/assets/{dist-BYyu59D8.js → dist-CoCQUAeM.js} +0 -0
  509. /package/dist/assets/{dist-Dj9zNHXU.js → dist-CtrmRz20.js} +0 -0
  510. /package/dist/assets/{dist-BIKFl48f.js → dist-Dcqqg9UU.js} +0 -0
  511. /package/dist/assets/{dist-B0VqT_4z.js → dist-sMh6mJ2d.js} +0 -0
  512. /package/dist/assets/{dist-BZe-2kC9.js → dist-tLOz534J.js} +0 -0
  513. /package/dist/assets/{dtd-C1gvGnbI.js → dtd-Fe_Eikw6.js} +0 -0
  514. /package/dist/assets/{duckdb-keywords-CR9f4wu5.js → duckdb-keywords-5i8us9ML.js} +0 -0
  515. /package/dist/assets/{dylan-D26gjyBo.js → dylan-DjUZAjRK.js} +0 -0
  516. /package/dist/assets/{ebnf-BdwTqLUx.js → ebnf--2SLsnbd.js} +0 -0
  517. /package/dist/assets/{ecl-D_pghsRW.js → ecl-qgyT1LqI.js} +0 -0
  518. /package/dist/assets/{eiffel-CQeRT5l7.js → eiffel-Dgulx8rf.js} +0 -0
  519. /package/dist/assets/{elm-BMJejWwJ.js → elm-BvFY4GJb.js} +0 -0
  520. /package/dist/assets/{emotion-is-prop-valid.esm-Dangy3Bv.js → emotion-is-prop-valid.esm-C59xfSYt.js} +0 -0
  521. /package/dist/assets/{empty-state-DrmGF88A.js → empty-state-B8Cxr9nj.js} +0 -0
  522. /package/dist/assets/{en-US-DU2jJCpg.js → en-US-CCVfmA-q.js} +0 -0
  523. /package/dist/assets/{erlang-DTDt7sE1.js → erlang-Ba0XOLlj.js} +0 -0
  524. /package/dist/assets/{errors-CPlNr33a.js → errors-TZBmrJmc.js} +0 -0
  525. /package/dist/assets/{esm-DvGqZhsW.js → esm-vpVfqVb3.js} +0 -0
  526. /package/dist/assets/{extends-Dqvpuc10.js → extends-BiFDv3jB.js} +0 -0
  527. /package/dist/assets/{fcl-BFWIADMy.js → fcl-CcJxrJDr.js} +0 -0
  528. /package/dist/assets/{forth-DLug1Uos.js → forth-gbBFxz8f.js} +0 -0
  529. /package/dist/assets/{fortran-CfPd9x83.js → fortran-CXijpPbh.js} +0 -0
  530. /package/dist/assets/{gas-C1vwqe1-.js → gas-CnHGSLCd.js} +0 -0
  531. /package/dist/assets/{gherkin-DxFhlJYL.js → gherkin-DfEZpSxY.js} +0 -0
  532. /package/dist/assets/{groovy-AqjvKzmp.js → groovy-9JiNA9gq.js} +0 -0
  533. /package/dist/assets/{haskell-B9BMJXS_.js → haskell-CKr_RZFK.js} +0 -0
  534. /package/dist/assets/{haxe-CFd4aFZH.js → haxe-DsAAHfaR.js} +0 -0
  535. /package/dist/assets/{http-CgzOAOXj.js → http-BBXW5Cu0.js} +0 -0
  536. /package/dist/assets/{icon-32x32-XIbzzdoo.js → icon-32x32-DH9kM4Sh.js} +0 -0
  537. /package/dist/assets/{icons-DjR3qLG_.js → icons-CCHmxi8d.js} +0 -0
  538. /package/dist/assets/{idl-DKlFwAHI.js → idl-Djz72z1a.js} +0 -0
  539. /package/dist/assets/{init-DZpk0tdu.js → init-DRQmrFIb.js} +0 -0
  540. /package/dist/assets/{isValid-DpSSOU5z.js → isValid-DDt9wNjK.js} +0 -0
  541. /package/dist/assets/{javascript-BMuus-3E.js → javascript-CsBr0q2-.js} +0 -0
  542. /package/dist/assets/{julia-DGv2rboF.js → julia-BCYfl68O.js} +0 -0
  543. /package/dist/assets/{katex-CbllUrnh.js → katex-CDLTCvjQ.js} +0 -0
  544. /package/dist/assets/{kbd-k3Sn_RwW.js → kbd-Cm6Ba9qg.js} +0 -0
  545. /package/dist/assets/{links-fh_IXIKE.js → links-7AQBmdyV.js} +0 -0
  546. /package/dist/assets/{livescript-51GCvdcX.js → livescript-BEw7FNJP.js} +0 -0
  547. /package/dist/assets/{loro_wasm_bg-CdafknAX.js → loro_wasm_bg-DzFUi5p_.js} +0 -0
  548. /package/dist/assets/{lua-BwsAaftY.js → lua-DqxHXOsz.js} +0 -0
  549. /package/dist/assets/{math-PgJy15ir.js → math-BJjKGmt3.js} +0 -0
  550. /package/dist/assets/{mathematica-Du4amQ2X.js → mathematica-Do-octY0.js} +0 -0
  551. /package/dist/assets/{mbox-DKL-l6mb.js → mbox-VgrgGytk.js} +0 -0
  552. /package/dist/assets/{mirc-CvS1f8zr.js → mirc-DkD5mNIp.js} +0 -0
  553. /package/dist/assets/{mllike-VhUq11ot.js → mllike-C8Ah4kKN.js} +0 -0
  554. /package/dist/assets/{modelica-CjlHUZat.js → modelica-2q7w6nLE.js} +0 -0
  555. /package/dist/assets/{mscgen-26STiUsc.js → mscgen-BRqvO7u4.js} +0 -0
  556. /package/dist/assets/{multi-icon-BWLbAXq5.js → multi-icon-jM74Rbvg.js} +0 -0
  557. /package/dist/assets/{mumps-4o8IRFVU.js → mumps-CjtiTT1a.js} +0 -0
  558. /package/dist/assets/{nginx-CFpObAqg.js → nginx-CiiHaY6Q.js} +0 -0
  559. /package/dist/assets/{node-sql-parser-UQ9Ur_LP.js → node-sql-parser-Bzh-sm1v.js} +0 -0
  560. /package/dist/assets/{ntriples-D0zMsGJ-.js → ntriples-4lauqsM6.js} +0 -0
  561. /package/dist/assets/{numbers-UHLm3mA-.js → numbers-D7O23mOZ.js} +0 -0
  562. /package/dist/assets/{objectWithoutPropertiesLoose-DoKw85w0.js → objectWithoutPropertiesLoose-DfWeGRFv.js} +0 -0
  563. /package/dist/assets/{octave-CpJ40RVG.js → octave-A2kFK0nR.js} +0 -0
  564. /package/dist/assets/{oz-W9l5CbXg.js → oz-CvXDMSbl.js} +0 -0
  565. /package/dist/assets/{panel-context-2mVKaSYm.js → panel-context-HhzMRtZm.js} +0 -0
  566. /package/dist/assets/{pascal-BZtdYBm4.js → pascal-6Jinj26u.js} +0 -0
  567. /package/dist/assets/{path-dqkZlAhR.js → path-D7fidI_g.js} +0 -0
  568. /package/dist/assets/{paths-Dfii2bN8.js → paths-BzSgteR-.js} +0 -0
  569. /package/dist/assets/{perl-Q79ziUtd.js → perl-CXauYQdN.js} +0 -0
  570. /package/dist/assets/{pig-Dn9ueYxG.js → pig-Dl0QLQI6.js} +0 -0
  571. /package/dist/assets/{powershell-DfXPJ56g.js → powershell-6bdy_rHW.js} +0 -0
  572. /package/dist/assets/{preload-helper-DItdS47A.js → preload-helper-D2MJg03u.js} +0 -0
  573. /package/dist/assets/{prop-types-DVDiRdwc.js → prop-types-DaaA-ptl.js} +0 -0
  574. /package/dist/assets/{properties-DRrw--9g.js → properties-p1rx3aF7.js} +0 -0
  575. /package/dist/assets/{protobuf-5jBh6Y7Q.js → protobuf-BZ6p9Xh_.js} +0 -0
  576. /package/dist/assets/{puppet-Bql5dDjm.js → puppet-CjdIRV7D.js} +0 -0
  577. /package/dist/assets/{purify.es-B-nzWya6.js → purify.es-DZrAQFIu.js} +0 -0
  578. /package/dist/assets/{python-C7HNB5A8.js → python-uzyJYIWU.js} +0 -0
  579. /package/dist/assets/{q-CW9lnZXb.js → q-CfD3i9uI.js} +0 -0
  580. /package/dist/assets/{r-DmuxMz9j.js → r-JyJdYHQB.js} +0 -0
  581. /package/dist/assets/{range-7fnH_zLA.js → range-1DwpgXvM.js} +0 -0
  582. /package/dist/assets/{react-resizable-panels.browser.esm-Mq45xjWt.js → react-resizable-panels.browser.esm-Da3ksQXL.js} +0 -0
  583. /package/dist/assets/{requests-BQkjRazP.js → requests-De5yEBc8.js} +0 -0
  584. /package/dist/assets/{rpm-2BQZRXYJ.js → rpm-DuGPfDyX.js} +0 -0
  585. /package/dist/assets/{ruby-B-FyRKB2.js → ruby-CA1TzLxZ.js} +0 -0
  586. /package/dist/assets/{runs-DyBOFmAK.js → runs-YUGrkyfE.js} +0 -0
  587. /package/dist/assets/{sas-Q-94el51.js → sas-BJPWZC7M.js} +0 -0
  588. /package/dist/assets/{scheme-By445Ne_.js → scheme-IRagAY3r.js} +0 -0
  589. /package/dist/assets/{session-fBtIbMpB.js → session-BOFn9QrD.js} +0 -0
  590. /package/dist/assets/{shell-CezKrT5T.js → shell-BVpF3W_J.js} +0 -0
  591. /package/dist/assets/{sieve-MRWdUbX3.js → sieve-BSfPMeZl.js} +0 -0
  592. /package/dist/assets/{simple-mode-BtxX-F6Z.js → simple-mode-BmS_AmGQ.js} +0 -0
  593. /package/dist/assets/{smalltalk-C0KZrhPl.js → smalltalk-CkHVehky.js} +0 -0
  594. /package/dist/assets/{solr-BkyoAXqg.js → solr-DYYuHZ7Q.js} +0 -0
  595. /package/dist/assets/{sparql-CIMoBhOL.js → sparql-CmKKjr-f.js} +0 -0
  596. /package/dist/assets/{spreadsheet-7FZkhkVo.js → spreadsheet-hVThRh5Z.js} +0 -0
  597. /package/dist/assets/{sql-BNnXxKXA.js → sql-DG1AJQLP.js} +0 -0
  598. /package/dist/assets/{src-CmKhyEBC.js → src-CsZby044.js} +0 -0
  599. /package/dist/assets/{stex-CtmkcLz7.js → stex-jWatZkll.js} +0 -0
  600. /package/dist/assets/{stylus-BxV1gbJN.js → stylus-D28PuRsm.js} +0 -0
  601. /package/dist/assets/{swift-C7ozIpB2.js → swift-D-jfpPuv.js} +0 -0
  602. /package/dist/assets/{table-BOsFCeLh.js → table-DScsXgJW.js} +0 -0
  603. /package/dist/assets/{tcl-D9BrnXdg.js → tcl-BrQdCDVA.js} +0 -0
  604. /package/dist/assets/{textile-8cDJUs1C.js → textile-DXBc8HMq.js} +0 -0
  605. /package/dist/assets/{tiddlywiki-DE5lnTl3.js → tiddlywiki-Dc8c_QaF.js} +0 -0
  606. /package/dist/assets/{tiki-Dt9oCY2i.js → tiki-CwGnGueS.js} +0 -0
  607. /package/dist/assets/{timer-DXL2Iyk5.js → timer-B6DpdVnC.js} +0 -0
  608. /package/dist/assets/{toml-Dtc3-sql.js → toml-ClSouHPE.js} +0 -0
  609. /package/dist/assets/{trash-2-B8SQYdQq.js → trash-2-DDsWrxuJ.js} +0 -0
  610. /package/dist/assets/{trash-Cv0yH8fs.js → trash-DCF6Krvi.js} +0 -0
  611. /package/dist/assets/{treemap-8bMgVaTX.js → treemap-CZF0Enj1.js} +0 -0
  612. /package/dist/assets/{triangle-alert-U93NZYDl.js → triangle-alert-CebQ7XwA.js} +0 -0
  613. /package/dist/assets/{troff-CxUT34rC.js → troff-BGDyQn9x.js} +0 -0
  614. /package/dist/assets/{ttcn-BiVwbsr5.js → ttcn-De1OdISX.js} +0 -0
  615. /package/dist/assets/{ttcn-cfg-BLBfLtVM.js → ttcn-cfg-CQMSrhCz.js} +0 -0
  616. /package/dist/assets/{turtle-DqTQI7WU.js → turtle-DNhfxysg.js} +0 -0
  617. /package/dist/assets/{types-DZmRsGZN.js → types-iYXk7c05.js} +0 -0
  618. /package/dist/assets/{use-toast-T0_cQDma.js → use-toast-BDYuj3zG.js} +0 -0
  619. /package/dist/assets/{useAsyncData-CgmD3hjw.js → useAsyncData-BMGLSTg8.js} +0 -0
  620. /package/dist/assets/{useDebounce-B28kFfrM.js → useDebounce-7iEVSqwM.js} +0 -0
  621. /package/dist/assets/{useDeepCompareMemoize-CFtQU7An.js → useDeepCompareMemoize-5OUgerQ3.js} +0 -0
  622. /package/dist/assets/{useIframeCapabilities-CC8VH6kZ.js → useIframeCapabilities-B_pQb20b.js} +0 -0
  623. /package/dist/assets/{useInterval-BNfubus2.js → useInterval-B-PjgTm9.js} +0 -0
  624. /package/dist/assets/{useTheme-CTORu22_.js → useTheme-DQozhcp1.js} +0 -0
  625. /package/dist/assets/{uuid-DercMavo.js → uuid-DXdzqzcr.js} +0 -0
  626. /package/dist/assets/{vb-D-mN5USJ.js → vb-BX7-Md9G.js} +0 -0
  627. /package/dist/assets/{vbscript-BHlqX42l.js → vbscript-DNMzJOTU.js} +0 -0
  628. /package/dist/assets/{velocity-BX6395is.js → velocity-viirwPm7.js} +0 -0
  629. /package/dist/assets/{verilog-CixbCKyb.js → verilog-CZguTLBV.js} +0 -0
  630. /package/dist/assets/{vhdl-CofOR-02.js → vhdl-CAEhCBOl.js} +0 -0
  631. /package/dist/assets/{web-vitals-Br9feh_D.js → web-vitals-CUbDLLN1.js} +0 -0
  632. /package/dist/assets/{webidl-DAqkXtNt.js → webidl-BNJg_7gX.js} +0 -0
  633. /package/dist/assets/{workflow-B12dAR4X.js → workflow-BphwJiK3.js} +0 -0
  634. /package/dist/assets/{ws-DQY2KwIl.js → ws-DcVtI9Wj.js} +0 -0
  635. /package/dist/assets/{xquery-wPbfv0-o.js → xquery-CGV_r322.js} +0 -0
  636. /package/dist/assets/{yacas-B5Zk1avC.js → yacas-uRzw7z7m.js} +0 -0
  637. /package/dist/assets/{z80-C0HuDTqd.js → z80-CBK8t-9T.js} +0 -0
@@ -3,10 +3,8 @@
3
3
  import { useCompletion } from "@ai-sdk/react";
4
4
  import { EditorView } from "@codemirror/view";
5
5
  import {
6
- AtSignIcon,
7
6
  CircleCheckIcon,
8
7
  Loader2Icon,
9
- SendIcon,
10
8
  SparklesIcon,
11
9
  XIcon,
12
10
  } from "lucide-react";
@@ -20,6 +18,10 @@ import { storePrompt } from "@marimo-team/codemirror-ai";
20
18
  import type { ReactCodeMirrorRef } from "@uiw/react-codemirror";
21
19
  import { useAtom, useAtomValue } from "jotai";
22
20
  import { AIModelDropdown } from "@/components/ai/ai-model-dropdown";
21
+ import {
22
+ AddContextButton,
23
+ SendButton,
24
+ } from "@/components/chat/chat-components";
23
25
  import { Checkbox } from "@/components/ui/checkbox";
24
26
  import { Label } from "@/components/ui/label";
25
27
  import { Switch } from "@/components/ui/switch";
@@ -253,39 +255,6 @@ export const AiCompletionEditor: React.FC<Props> = ({
253
255
  }
254
256
  };
255
257
 
256
- const loadingStopButton = (
257
- <Button
258
- data-testid="stop-completion-button"
259
- variant="text"
260
- size="xs"
261
- className="mb-0"
262
- onClick={stop}
263
- >
264
- <Loader2Icon className="animate-spin mr-1" size={14} />
265
- Stop
266
- </Button>
267
- );
268
-
269
- const submitButton = (
270
- <Tooltip content="Submit">
271
- <Button variant="text" size="icon" onClick={handleSubmit}>
272
- <SendIcon className="h-3 w-3" />
273
- </Button>
274
- </Tooltip>
275
- );
276
-
277
- const contextButton = (
278
- <Tooltip content="Add context">
279
- <Button
280
- variant="text"
281
- size="icon"
282
- onClick={() => addContextCompletion(inputRef)}
283
- >
284
- <AtSignIcon className="h-3 w-3" />
285
- </Button>
286
- </Tooltip>
287
- );
288
-
289
258
  const completionButtons = (
290
259
  <>
291
260
  <AcceptCompletionButton
@@ -355,9 +324,17 @@ export const AiCompletionEditor: React.FC<Props> = ({
355
324
 
356
325
  <div className="-mr-1.5 py-1.5">
357
326
  <div className="flex flex-row items-center justify-end gap-0.5">
358
- {isLoading && loadingStopButton}
359
- {submitButton}
360
- {contextButton}
327
+ <SendButton
328
+ isLoading={isLoading}
329
+ onStop={stop}
330
+ onSendClick={handleSubmit}
331
+ isEmpty={!input.trim()}
332
+ showStopLabel={true}
333
+ />
334
+ <AddContextButton
335
+ handleAddContext={() => addContextCompletion(inputRef)}
336
+ isLoading={isLoading}
337
+ />
361
338
  <AIModelDropdown
362
339
  triggerClassName="h-7 text-xs"
363
340
  iconSize="small"
@@ -349,8 +349,9 @@ const PackagesList: React.FC<{
349
349
 
350
350
  const UpgradeButton: React.FC<{
351
351
  packageName: string;
352
+ tags?: { kind: string; value: string }[];
352
353
  onSuccess: () => void;
353
- }> = ({ packageName, onSuccess }) => {
354
+ }> = ({ packageName, tags, onSuccess }) => {
354
355
  const [loading, setLoading] = React.useState(false);
355
356
  const { addPackage } = useRequestClient();
356
357
 
@@ -362,9 +363,11 @@ const UpgradeButton: React.FC<{
362
363
  const handleUpgradePackage = async () => {
363
364
  try {
364
365
  setLoading(true);
366
+ const group = tags?.find((tag) => tag.kind === "group")?.value;
365
367
  const response = await addPackage({
366
368
  package: packageName,
367
369
  upgrade: true,
370
+ group,
368
371
  });
369
372
  if (response.success) {
370
373
  onSuccess();
@@ -395,12 +398,10 @@ const RemoveButton: React.FC<{
395
398
  const handleRemovePackage = async () => {
396
399
  try {
397
400
  setLoading(true);
398
- const isDev = tags?.some(
399
- (tag) => tag.kind === "group" && tag.value === "dev",
400
- );
401
+ const group = tags?.find((tag) => tag.kind === "group")?.value;
401
402
  const response = await removePackage({
402
403
  package: packageName,
403
- dev: isDev,
404
+ group,
404
405
  });
405
406
  if (response.success) {
406
407
  onSuccess();
@@ -604,12 +605,14 @@ const DependencyTreeNode: React.FC<{
604
605
  {/* Actions for top-level packages */}
605
606
  {isTopLevel && (
606
607
  <div className="flex gap-1 invisible group-hover:visible">
607
- <UpgradeButton packageName={node.name} onSuccess={onSuccess} />
608
+ <UpgradeButton
609
+ packageName={node.name}
610
+ tags={node.tags}
611
+ onSuccess={onSuccess}
612
+ />
613
+
608
614
  <RemoveButton
609
615
  packageName={node.name}
610
- // FIXME: Backend types are wrong/outdated.
611
- // tags actually have the shape: Array<{ kind: string; value: string }>
612
- // @ts-expect-error — backend tag types do not match frontend expectations yet
613
616
  tags={node.tags}
614
617
  onSuccess={onSuccess}
615
618
  />
@@ -192,9 +192,11 @@ describe("IslandsPyodideBridge", () => {
192
192
  const request = {
193
193
  modelId: "widget-1",
194
194
  message: {
195
+ method: "update" as const,
195
196
  state: { value: 42 },
196
197
  bufferPaths: [],
197
198
  },
199
+ buffers: [],
198
200
  };
199
201
 
200
202
  await bridge.sendModelValue(request);
@@ -202,12 +204,14 @@ describe("IslandsPyodideBridge", () => {
202
204
  expect(mockBridge).toHaveBeenCalledWith({
203
205
  functionName: "put_control_request",
204
206
  payload: {
205
- type: "update-widget-model",
207
+ type: "model",
206
208
  modelId: "widget-1",
207
209
  message: {
210
+ method: "update",
208
211
  state: { value: 42 },
209
212
  bufferPaths: [],
210
213
  },
214
+ buffers: [],
211
215
  },
212
216
  });
213
217
  });
@@ -226,7 +230,8 @@ describe("IslandsPyodideBridge", () => {
226
230
  await bridge.sendRun({ cellIds: [], codes: [] });
227
231
  await bridge.sendModelValue({
228
232
  modelId: "",
229
- message: { state: {}, bufferPaths: [] },
233
+ message: { method: "update", state: {}, bufferPaths: [] },
234
+ buffers: [],
230
235
  });
231
236
 
232
237
  // All calls should have the type field
@@ -140,7 +140,7 @@ export class IslandsPyodideBridge implements RunRequests, EditRequests {
140
140
 
141
141
  sendModelValue: RunRequests["sendModelValue"] = async (request) => {
142
142
  await this.putControlRequest({
143
- type: "update-widget-model",
143
+ type: "model",
144
144
  ...request,
145
145
  });
146
146
  return null;
@@ -13,6 +13,10 @@ import "iconify-icon";
13
13
 
14
14
  import { toast } from "@/components/ui/use-toast";
15
15
  import { renderHTML } from "@/plugins/core/RenderHTML";
16
+ import {
17
+ handleWidgetMessage,
18
+ MODEL_MANAGER,
19
+ } from "@/plugins/impl/anywidget/model";
16
20
  import { initializePlugins } from "@/plugins/plugins";
17
21
  import { logNever } from "@/utils/assertNever";
18
22
  import { Functions } from "@/utils/functions";
@@ -194,6 +198,9 @@ export async function initialize() {
194
198
  return;
195
199
  case "kernel-startup-error":
196
200
  return;
201
+ case "model-lifecycle":
202
+ handleWidgetMessage(MODEL_MANAGER, msg.data);
203
+ return;
197
204
  default:
198
205
  logNever(msg.data);
199
206
  }
@@ -78,7 +78,7 @@ export interface SetCellConfigRequest {
78
78
  configs: Record<CellId, Partial<CellConfig>>;
79
79
  }
80
80
  export type UpdateUIElementRequest = schemas["UpdateUIElementRequest"];
81
- export type UpdateWidgetModelRequest = schemas["UpdateWidgetModelRequest"];
81
+ export type ModelRequest = schemas["ModelRequest"];
82
82
  export type UpdateCellIdsRequest = schemas["UpdateCellIdsRequest"];
83
83
  export type UpdateUserConfigRequest = schemas["UpdateUserConfigRequest"];
84
84
  export type ShutdownSessionRequest = schemas["ShutdownSessionRequest"];
@@ -110,7 +110,7 @@ export type LspServerHealth = schemas["LspServerHealth"];
110
110
  */
111
111
  export interface RunRequests {
112
112
  sendComponentValues: (request: UpdateUIElementValuesRequest) => Promise<null>;
113
- sendModelValue: (request: UpdateWidgetModelRequest) => Promise<null>;
113
+ sendModelValue: (request: ModelRequest) => Promise<null>;
114
114
  sendInstantiate: (request: InstantiateNotebookRequest) => Promise<null>;
115
115
  sendFunctionRequest: (request: InvokeFunctionRequest) => Promise<null>;
116
116
  }
@@ -541,7 +541,7 @@ export class PyodideBridge implements RunRequests, EditRequests {
541
541
 
542
542
  sendModelValue: RunRequests["sendModelValue"] = async (request) => {
543
543
  await this.putControlRequest({
544
- type: "update-widget-model",
544
+ type: "model",
545
545
  ...request,
546
546
  });
547
547
  return null;
@@ -11,7 +11,6 @@ import { useConnectionTransport } from "@/core/websocket/useWebSocket";
11
11
  import { renderHTML } from "@/plugins/core/RenderHTML";
12
12
  import {
13
13
  handleWidgetMessage,
14
- isMessageWidgetState,
15
14
  MODEL_MANAGER,
16
15
  } from "@/plugins/impl/anywidget/model";
17
16
  import { logNever } from "@/utils/assertNever";
@@ -141,31 +140,22 @@ export function useMarimoKernelConnection(opts: {
141
140
  return;
142
141
 
143
142
  case "send-ui-element-message": {
144
- const modelId = msg.data.model_id;
145
143
  const uiElement = msg.data.ui_element;
146
- const message = msg.data.message;
147
- const buffers = safeExtractSetUIElementMessageBuffers(msg.data);
148
-
149
- if (modelId && isMessageWidgetState(message)) {
150
- handleWidgetMessage({
151
- modelId,
152
- msg: message,
153
- buffers,
154
- modelManager: MODEL_MANAGER,
155
- });
156
- }
157
-
158
144
  if (uiElement) {
145
+ const buffers = safeExtractSetUIElementMessageBuffers(msg.data);
159
146
  UI_ELEMENT_REGISTRY.broadcastMessage(
160
147
  uiElement as UIElementId,
161
148
  msg.data.message,
162
149
  buffers,
163
150
  );
164
151
  }
165
-
166
152
  return;
167
153
  }
168
154
 
155
+ case "model-lifecycle":
156
+ handleWidgetMessage(MODEL_MANAGER, msg.data);
157
+ return;
158
+
169
159
  case "remove-ui-elements":
170
160
  handleRemoveUIElements(msg.data);
171
161
  return;
@@ -1,97 +1,50 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
3
 
4
- import type { AnyWidget, Experimental } from "@anywidget/types";
5
- import { isEqual } from "lodash-es";
6
- import { useEffect, useMemo, useRef } from "react";
7
- import useEvent from "react-use-event-hook";
4
+ import type { AnyWidget } from "@anywidget/types";
5
+ import { useEffect, useRef } from "react";
8
6
  import { z } from "zod";
9
- import { MarimoIncomingMessageEvent } from "@/core/dom/events";
10
7
  import { asRemoteURL } from "@/core/runtime/config";
11
8
  import { resolveVirtualFileURL } from "@/core/static/files";
12
9
  import { isStaticNotebook } from "@/core/static/static-state";
13
10
  import { useAsyncData } from "@/hooks/useAsyncData";
14
- import { useDeepCompareMemoize } from "@/hooks/useDeepCompareMemoize";
15
- import {
16
- type HTMLElementNotDerivedFromRef,
17
- useEventListener,
18
- } from "@/hooks/useEventListener";
11
+ import type { HTMLElementNotDerivedFromRef } from "@/hooks/useEventListener";
19
12
  import { createPlugin } from "@/plugins/core/builder";
20
- import { rpc } from "@/plugins/core/rpc";
21
13
  import type { IPluginProps } from "@/plugins/types";
22
- import {
23
- decodeFromWire,
24
- isWireFormat,
25
- serializeBuffersToBase64,
26
- type WireFormat,
27
- } from "@/utils/data-views";
28
14
  import { prettyError } from "@/utils/errors";
29
- import type { Base64String } from "@/utils/json/base64";
30
15
  import { Logger } from "@/utils/Logger";
31
16
  import { ErrorBanner } from "../common/error-banner";
32
- import { MODEL_MANAGER, Model } from "./model";
17
+ import { getMarimoInternal, MODEL_MANAGER, type Model } from "./model";
18
+ import type { ModelState, WidgetModelId } from "./types";
33
19
 
20
+ /**
21
+ * AnyWidget asset data
22
+ */
34
23
  interface Data {
35
24
  jsUrl: string;
36
25
  jsHash: string;
37
26
  css?: string | null;
38
27
  }
39
28
 
40
- type T = Record<string, unknown>;
41
-
42
- // eslint-disable-next-line @typescript-eslint/consistent-type-definitions
43
- type PluginFunctions = {
44
- send_to_widget: <T>(req: {
45
- content: unknown;
46
- buffers: Base64String[];
47
- }) => Promise<null | undefined>;
48
- };
29
+ type AnyWidgetState = ModelState;
49
30
 
50
- export const AnyWidgetPlugin = createPlugin<WireFormat<T>>("marimo-anywidget")
51
- .withData(
52
- z.object({
53
- jsUrl: z.string(),
54
- jsHash: z.string(),
55
- css: z.string().nullish(),
56
- }),
57
- )
58
- .withFunctions<PluginFunctions>({
59
- send_to_widget: rpc
60
- .input(
61
- z.object({
62
- content: z.unknown(),
63
- buffers: z.array(z.string().transform((v) => v as Base64String)),
64
- }),
65
- )
66
- .output(z.null().optional()),
67
- })
68
- .renderer((props) => <AnyWidgetSlot {...props} />);
69
-
70
- const AnyWidgetSlot = (
71
- props: IPluginProps<WireFormat<T>, Data, PluginFunctions>,
72
- ) => {
73
- const { css, jsUrl, jsHash } = props.data;
31
+ /**
32
+ * Initial value is a model_id reference.
33
+ * The backend sends just { model_id: string } and the frontend
34
+ * retrieves the actual state from the 'open' message.
35
+ */
36
+ interface ModelIdRef {
37
+ model_id: WidgetModelId;
38
+ }
74
39
 
75
- // Decode wire format { state, bufferPaths, buffers } to state with DataViews
76
- const valueWithBuffers = useMemo(() => {
77
- if (isWireFormat(props.value)) {
78
- const decoded = decodeFromWire(props.value);
79
- Logger.debug("AnyWidget decoded wire format:", {
80
- bufferPaths: props.value.bufferPaths,
81
- buffersCount: props.value.buffers?.length,
82
- decodedKeys: Object.keys(decoded),
83
- });
84
- return decoded;
85
- }
86
- Logger.warn("AnyWidget value is not wire format:", props.value);
87
- return props.value;
88
- }, [props.value]);
40
+ export function useAnyWidgetModule(opts: { jsUrl: string; jsHash: string }) {
41
+ const { jsUrl, jsHash } = opts;
89
42
 
90
43
  // JS is an ESM file with a render function on it
91
44
  // export function render({ model, el }) {
92
45
  // ...
93
46
  const {
94
- data: module,
47
+ data: jsModule,
95
48
  error,
96
49
  refetch,
97
50
  } = useAsyncData(async () => {
@@ -117,9 +70,16 @@ const AnyWidgetSlot = (
117
70
  }
118
71
  }, [hasError, jsUrl]);
119
72
 
73
+ return {
74
+ jsModule,
75
+ error,
76
+ };
77
+ }
78
+
79
+ export function useMountCss(css: string | null | undefined, host: HTMLElement) {
120
80
  // Mount the CSS
121
81
  useEffect(() => {
122
- const shadowRoot = props.host.shadowRoot;
82
+ const shadowRoot = host.shadowRoot;
123
83
  if (!css || !shadowRoot) {
124
84
  return;
125
85
  }
@@ -156,23 +116,38 @@ const AnyWidgetSlot = (
156
116
  return () => {
157
117
  style.remove();
158
118
  };
159
- }, [css, props.host]);
119
+ }, [css, host]);
120
+ }
160
121
 
161
- // Wrap setValue to serialize DataViews back to base64 before sending
162
- // Structure matches ipywidgets protocol: { state, bufferPaths, buffers }
163
- const wrappedSetValue = useEvent((partialValue: Partial<T>) =>
164
- props.setValue(serializeBuffersToBase64(partialValue)),
165
- );
122
+ export const AnyWidgetPlugin = createPlugin<ModelIdRef>("marimo-anywidget")
123
+ .withData(
124
+ z.object({
125
+ jsUrl: z.string(),
126
+ jsHash: z.string(),
127
+ css: z.string().nullish(),
128
+ }),
129
+ )
130
+ .withFunctions({})
131
+ .renderer((props) => <AnyWidgetSlot {...props} />);
132
+
133
+ const AnyWidgetSlot = (props: IPluginProps<ModelIdRef, Data>) => {
134
+ const { css, jsUrl, jsHash } = props.data;
135
+ const { model_id: modelId } = props.value;
136
+ const host = props.host as HTMLElementNotDerivedFromRef;
137
+
138
+ const { jsModule, error } = useAnyWidgetModule({ jsUrl, jsHash });
139
+
140
+ useMountCss(css, host);
166
141
 
167
142
  if (error) {
168
143
  return <ErrorBanner error={error} />;
169
144
  }
170
145
 
171
- if (!module) {
146
+ if (!jsModule) {
172
147
  return null;
173
148
  }
174
149
 
175
- if (!isAnyWidgetModule(module)) {
150
+ if (!isAnyWidgetModule(jsModule)) {
176
151
  const error = new Error(
177
152
  `Module at ${jsUrl} does not appear to be a valid anywidget`,
178
153
  );
@@ -189,10 +164,8 @@ const AnyWidgetSlot = (
189
164
  // Plugins may be stateful and we cannot make assumptions that we won't be
190
165
  // so it is safer to just re-render.
191
166
  key={key}
192
- {...props}
193
- widget={module.default}
194
- setValue={wrappedSetValue}
195
- value={valueWithBuffers}
167
+ widget={jsModule.default}
168
+ modelId={modelId}
196
169
  />
197
170
  );
198
171
  };
@@ -200,125 +173,72 @@ const AnyWidgetSlot = (
200
173
  /**
201
174
  * Run the anywidget module
202
175
  *
203
- * @param widgetDef - The anywidget definition
204
- * @param model - The model to pass to the widget
176
+ * Per AFM spec (anywidget.dev/en/afm):
177
+ * - initialize() is called once per model lifetime
178
+ * - render() is called once per view (can be multiple per model)
205
179
  */
206
- async function runAnyWidgetModule(
207
- widgetDef: AnyWidget,
180
+ async function runAnyWidgetModule<T extends AnyWidgetState>(
181
+ widgetDef: AnyWidget<T>,
208
182
  model: Model<T>,
209
183
  el: HTMLElement,
210
- ): Promise<() => void> {
211
- const experimental: Experimental = {
212
- invoke: async (_name, _msg, _options) => {
213
- const message =
214
- "anywidget.invoke not supported in marimo. Please file an issue at https://github.com/marimo-team/marimo/issues";
215
- Logger.warn(message);
216
- throw new Error(message);
217
- },
218
- };
184
+ signal: AbortSignal,
185
+ ): Promise<void> {
219
186
  // Clear the element, in case the widget is re-rendering
220
187
  el.innerHTML = "";
221
- const widget =
222
- typeof widgetDef === "function" ? await widgetDef() : widgetDef;
223
- await widget.initialize?.({ model, experimental });
188
+
224
189
  try {
225
- const unsub = await widget.render?.({ model, el, experimental });
226
- return () => {
227
- unsub?.();
228
- };
190
+ const render = await getMarimoInternal(model).resolveWidget(widgetDef);
191
+ await render(el, signal);
229
192
  } catch (error) {
230
193
  Logger.error("Error rendering anywidget", error);
231
194
  el.classList.add("text-error");
232
195
  el.innerHTML = `Error rendering anywidget: ${prettyError(error)}`;
233
- return () => {
234
- // No-op
235
- };
236
196
  }
237
197
  }
238
198
 
239
199
  function isAnyWidgetModule(mod: any): mod is { default: AnyWidget } {
240
- return (
241
- mod.default &&
242
- (typeof mod.default === "function" ||
243
- mod.default?.render ||
244
- mod.default?.initialize)
245
- );
246
- }
247
-
248
- export function getDirtyFields(value: T, initialValue: T): Set<keyof T> {
249
- return new Set(
250
- Object.keys(value).filter((key) => !isEqual(value[key], initialValue[key])),
251
- );
252
- }
200
+ if (!mod.default) {
201
+ return false;
202
+ }
253
203
 
254
- function hasModelId(message: unknown): message is { model_id: string } {
255
204
  return (
256
- typeof message === "object" && message !== null && "model_id" in message
205
+ typeof mod.default === "function" ||
206
+ typeof mod.default?.render === "function" ||
207
+ typeof mod.default?.initialize === "function"
257
208
  );
258
209
  }
259
210
 
260
- interface Props
261
- extends Omit<IPluginProps<T, Data, PluginFunctions>, "setValue"> {
262
- widget: AnyWidget;
263
- value: T;
264
- setValue: (value: Partial<T>) => void;
211
+ interface Props<T extends AnyWidgetState> {
212
+ widget: AnyWidget<T>;
213
+ modelId: WidgetModelId;
265
214
  }
266
215
 
267
- const LoadedSlot = ({
268
- value,
269
- setValue,
216
+ const LoadedSlot = <T extends AnyWidgetState>({
270
217
  widget,
271
- functions,
272
- data,
273
- host,
274
- }: Props & { widget: AnyWidget }) => {
218
+ modelId,
219
+ }: Props<T> & { widget: AnyWidget<T> }) => {
275
220
  const htmlRef = useRef<HTMLDivElement>(null);
276
221
 
277
- // value is already decoded from wire format
278
- const model = useRef<Model<T>>(
279
- new Model(value, setValue, functions.send_to_widget, new Set()),
280
- );
222
+ // value is already decoded from wire format, may be null if waiting for open message
223
+ const model = MODEL_MANAGER.getSync(modelId);
281
224
 
282
- // Listen to incoming messages
283
- useEventListener(
284
- host as HTMLElementNotDerivedFromRef,
285
- MarimoIncomingMessageEvent.TYPE,
286
- (e) => {
287
- const message = e.detail.message;
288
- if (hasModelId(message)) {
289
- MODEL_MANAGER.get(message.model_id).then((model) => {
290
- model.receiveCustomMessage(message, e.detail.buffers);
291
- });
292
- } else {
293
- model.current.receiveCustomMessage(message, e.detail.buffers);
294
- }
295
- },
296
- );
225
+ if (!model) {
226
+ Logger.error("Model not found for modelId", modelId);
227
+ }
297
228
 
298
229
  useEffect(() => {
299
- if (!htmlRef.current) {
230
+ if (!htmlRef.current || !model) {
300
231
  return;
301
232
  }
302
- const unsubPromise = runAnyWidgetModule(
303
- widget,
304
- model.current,
305
- htmlRef.current,
306
- );
307
- return () => {
308
- unsubPromise.then((unsub) => unsub());
309
- };
310
- // We re-run the widget when the jsUrl changes, which means the cell
233
+ const controller = new AbortController();
234
+ runAnyWidgetModule(widget, model, htmlRef.current, controller.signal);
235
+ return () => controller.abort();
236
+ // We re-run the widget when the modelId changes, which means the cell
311
237
  // that created the Widget has been re-run.
312
238
  // We need to re-run the widget because it may contain initialization code
313
239
  // that could be reset by the new widget.
314
240
  // See example: https://github.com/marimo-team/marimo/issues/3962#issuecomment-2703184123
315
- }, [widget, data.jsUrl]);
316
-
317
- // When the value changes, update the model
318
- const valueMemo = useDeepCompareMemoize(value);
319
- useEffect(() => {
320
- model.current.updateAndEmitDiffs(valueMemo);
321
- }, [valueMemo]);
241
+ }, [widget, modelId, model]);
322
242
 
323
243
  return <div ref={htmlRef} />;
324
244
  };
@@ -327,5 +247,4 @@ export const visibleForTesting = {
327
247
  LoadedSlot,
328
248
  runAnyWidgetModule,
329
249
  isAnyWidgetModule,
330
- getDirtyFields,
331
250
  };