@marimo-team/islands 0.23.7-dev4 → 0.23.7-dev43

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 (514) hide show
  1. package/dist/{ConnectedDataExplorerComponent-PmilQqXR.js → ConnectedDataExplorerComponent-2lBNiUv6.js} +14 -14
  2. package/dist/{ErrorBoundary-Da4UeYxT.js → ErrorBoundary-D3wrPNma.js} +1 -1
  3. package/dist/{any-language-editor-BVR0l12r.js → any-language-editor-VWs_7v27.js} +15 -15
  4. package/dist/apl-Bdc61P1y.js +4 -0
  5. package/dist/{arc-CHF8PiiF.js → arc-DfkSnvZm.js} +2 -2
  6. package/dist/{architecture-7HQA4BMR-D0JB_3hE.js → architecture-7HQA4BMR-CS9jOrqM.js} +1 -1
  7. package/dist/{architectureDiagram-VXUJARFQ-BXQEUDtK.js → architectureDiagram-VXUJARFQ-CXVJxFhH.js} +16 -16
  8. package/dist/asciiarmor-DVRHDGzT.js +4 -0
  9. package/dist/asn1-BmuKfkfu.js +4 -0
  10. package/dist/assets/__vite-browser-external-CAdMKBac.js +1 -0
  11. package/dist/assets/worker-CpBbwbQo.js +73 -0
  12. package/dist/{blockDiagram-VD42YOAC-DhJe-Y9i.js → blockDiagram-VD42YOAC-DGDaxR8I.js} +11 -11
  13. package/dist/brainfuck-DPrRpyTV.js +4 -0
  14. package/dist/{button-CA5pI2YF.js → button-Dj4BTre0.js} +5 -0
  15. package/dist/{c4Diagram-YG6GDRKO-9dSfzOFR.js → c4Diagram-YG6GDRKO-C2hc6ne8.js} +5 -5
  16. package/dist/{capabilities-6laDasij.js → capabilities-C9rrYCzf.js} +1 -1
  17. package/dist/{channel-MqYIiKgS.js → channel-BBoIVUrJ.js} +1 -1
  18. package/dist/{chat-ui-B-gbqk_F.js → chat-ui-CufH8sfF.js} +626 -234
  19. package/dist/{check-CFM2mVDr.js → check-BcUIXnUT.js} +1 -1
  20. package/dist/{chunk-4BX2VUAB-BwfrWBqN.js → chunk-4BX2VUAB-CzXltWHN.js} +1 -1
  21. package/dist/{chunk-55IACEB6-D8THf2mi.js → chunk-55IACEB6-B-1mjMMC.js} +1 -1
  22. package/dist/{chunk-5FQGJX7Z-CO1e63h_.js → chunk-5FQGJX7Z-BOg95xG5.js} +2 -2
  23. package/dist/{chunk-ABZYJK2D-BrBb_0yY.js → chunk-ABZYJK2D-D0cLy8Bb.js} +2 -2
  24. package/dist/{chunk-ATLVNIR6-D-0XqNah.js → chunk-ATLVNIR6-BXsEjlHF.js} +2 -2
  25. package/dist/{chunk-B4BG7PRW-8iRKvugR.js → chunk-B4BG7PRW-Q1usn6T3.js} +7 -7
  26. package/dist/{chunk-CVBHYZKI-B6xhgaBd.js → chunk-CVBHYZKI-B_c5YBcW.js} +1 -1
  27. package/dist/{chunk-DI55MBZ5-C0_2D4m4.js → chunk-DI55MBZ5-D1qLYNrb.js} +6 -6
  28. package/dist/{chunk-EXTU4WIE-Jiw9ca1u.js → chunk-EXTU4WIE-BKNXdLmD.js} +2 -2
  29. package/dist/{chunk-FMBD7UC4-CHdus51S.js → chunk-FMBD7UC4-Ie8M9q0W.js} +1 -1
  30. package/dist/{chunk-HN2XXSSU-2Vfbq-kU.js → chunk-HN2XXSSU-E3n-Ys7Z.js} +1 -1
  31. package/dist/{chunk-JA3XYJ7Z-6wbaigKe.js → chunk-JA3XYJ7Z-D6c6cOBG.js} +3 -3
  32. package/dist/{chunk-JZLCHNYA-_rfptlUP.js → chunk-JZLCHNYA-BvsPHJmL.js} +6 -6
  33. package/dist/{chunk-MI3HLSF2-Do0-KRc0.js → chunk-MI3HLSF2-CUYEasXO.js} +1 -1
  34. package/dist/{chunk-N4CR4FBY-DIZG9dVD.js → chunk-N4CR4FBY-8ycT-O9a.js} +7 -7
  35. package/dist/{chunk-QN33PNHL-Cc64y40m.js → chunk-QN33PNHL-Bb-eUBW3.js} +2 -2
  36. package/dist/{chunk-QXUST7PY-BDG0-0Or.js → chunk-QXUST7PY-DV8yRwBd.js} +10 -10
  37. package/dist/{chunk-QZHKN3VN-B_Mdb8GC.js → chunk-QZHKN3VN-DRjXVwuJ.js} +1 -1
  38. package/dist/{chunk-S3R3BYOJ-DphMP0FA.js → chunk-S3R3BYOJ-mQeCz5CE.js} +4 -4
  39. package/dist/{chunk-TZMSLE5B-C9LUoYkc.js → chunk-TZMSLE5B-BqW10dHe.js} +3 -3
  40. package/dist/classDiagram-2ON5EDUG--Yh__LHb.js +30 -0
  41. package/dist/classDiagram-v2-WZHVMYZB-BC7X7Xtc.js +30 -0
  42. package/dist/{clike-sBZrGeF8.js → clike-DTxNUn7l.js} +1 -1
  43. package/dist/clojure-DEttQW5T.js +4 -0
  44. package/dist/cmake-jNlx_DaM.js +4 -0
  45. package/dist/cobol-BvvIm5MJ.js +4 -0
  46. package/dist/{code-block-37QAKDTI-0JNwiPGv.js → code-block-37QAKDTI-BsGy1AOJ.js} +1 -1
  47. package/dist/{code-visibility-zYxaYsuj.js → code-visibility-Cu7CFm0r.js} +573 -585
  48. package/dist/coffeescript-DTpBMyFU.js +4 -0
  49. package/dist/commonlisp-BmmUG8jb.js +4 -0
  50. package/dist/{copy-TGGAUEWp.js → copy-DLf4aN7I.js} +2 -2
  51. package/dist/{cose-bilkent-S5V4N54A-DXHZkJKX.js → cose-bilkent-S5V4N54A-kjoZoid4.js} +2 -2
  52. package/dist/crystal-BxyqmEWC.js +4 -0
  53. package/dist/css-BGoCtuG3.js +4 -0
  54. package/dist/cypher-BmCbdl3u.js +4 -0
  55. package/dist/d-CFrlbjZt.js +4 -0
  56. package/dist/{dagre-6UL2VRFP-tH87fkPA.js → dagre-6UL2VRFP-DRBWoQUw.js} +10 -10
  57. package/dist/{data-grid-overlay-editor-CWUN78-s.js → data-grid-overlay-editor-efe5ZagF.js} +2 -2
  58. package/dist/{diagram-PSM6KHXK-2VjPSCDn.js → diagram-PSM6KHXK-H66ATWP2.js} +18 -18
  59. package/dist/{diagram-QEK2KX5R-CiLmNyta.js → diagram-QEK2KX5R-DItl5Wns.js} +14 -14
  60. package/dist/{diagram-S2PKOQOG-Zha_1CLx.js → diagram-S2PKOQOG-CtuW_ZuL.js} +14 -14
  61. package/dist/diff-D6XwL6P8.js +4 -0
  62. package/dist/{dist-Brkazupz.js → dist--sWVZwjW.js} +1 -1
  63. package/dist/{dist-FN0ZA_8F.js → dist-21ButRCu.js} +1 -1
  64. package/dist/{dist-BetEKbPG.js → dist-B8RaFTRF.js} +1 -1
  65. package/dist/dist-BoHGySTM.js +5 -0
  66. package/dist/dist-ByAz19Qc.js +5 -0
  67. package/dist/dist-C93EysN4.js +5 -0
  68. package/dist/{dist-BHnX0ia_.js → dist-CY-lVor6.js} +1 -1
  69. package/dist/{dist-YP-G7W0f.js → dist-CYDuv4bR.js} +1 -1
  70. package/dist/{dist-CMjD5MQb.js → dist-Cfo5EE2t.js} +1 -1
  71. package/dist/dist-CjivSDvN.js +5 -0
  72. package/dist/dist-Cqwx-MH7.js +5 -0
  73. package/dist/{dist-ESg7xyoD.js → dist-D3ZI9nhS.js} +2 -2
  74. package/dist/{dist-DkC6YEo0.js → dist-DMZNjfX4.js} +1 -1
  75. package/dist/{dist-ChC1BhqM.js → dist-DbpcoFAV.js} +1 -1
  76. package/dist/dist-FUNenbiQ.js +5 -0
  77. package/dist/{dist-BEOU2g1b.js → dist-zhSud5X3.js} +1 -1
  78. package/dist/{dockerfile-COvlVLcE.js → dockerfile-twL37N91.js} +1 -1
  79. package/dist/dtd-Bw0lRN0-.js +4 -0
  80. package/dist/dylan-B55eBHTt.js +4 -0
  81. package/dist/ecl-C8G4p0wn.js +4 -0
  82. package/dist/eiffel-BmH46VJl.js +4 -0
  83. package/dist/elm-DhzeFqkl.js +4 -0
  84. package/dist/{erDiagram-Q2GNP2WA-biHZS05w.js → erDiagram-Q2GNP2WA--19X2kU5.js} +14 -14
  85. package/dist/erlang-CY-wdlsU.js +4 -0
  86. package/dist/{error-banner-DnBPzEWg.js → error-banner-CVkfBUT3.js} +2 -2
  87. package/dist/{esm-Dd1z1auZ.js → esm-CWp0KQeK.js} +1 -1
  88. package/dist/{esm-CYEyrE3Y.js → esm-DjNnlmpf.js} +96 -96
  89. package/dist/{extends-CzJgxo2J.js → extends-vAi97cpa.js} +4 -4
  90. package/dist/{factor-C2GT7jfQ.js → factor-CajWS6mS.js} +1 -1
  91. package/dist/factor-DWkgl0xw.js +4 -0
  92. package/dist/{flowDiagram-NV44I4VS-CWWlUpBR.js → flowDiagram-NV44I4VS-DQmWlo7f.js} +16 -16
  93. package/dist/{formats-CgaK7Gmx.js → formats-CpgZM9BM.js} +3 -3
  94. package/dist/forth-Cij_ie2t.js +4 -0
  95. package/dist/fortran-Br3X9cfm.js +4 -0
  96. package/dist/{ganttDiagram-JELNMOA3-D7B2c4Z9.js → ganttDiagram-JELNMOA3-BOGXJ8Lk.js} +7 -7
  97. package/dist/gas-DYsGcMN2.js +4 -0
  98. package/dist/gherkin-eVgXQ0fQ.js +4 -0
  99. package/dist/{gitGraph-G5XIXVHT-BdepdFa_.js → gitGraph-G5XIXVHT-DGlbae5m.js} +1 -1
  100. package/dist/{gitGraphDiagram-V2S2FVAM-CtLvNR1S.js → gitGraphDiagram-V2S2FVAM-DjzxfF0P.js} +14 -14
  101. package/dist/{glide-data-editor-CvlvtPWJ.js → glide-data-editor-BK9s_dqy.js} +13 -13
  102. package/dist/groovy-_NFHIXG7.js +4 -0
  103. package/dist/haskell-D6xNG_bH.js +4 -0
  104. package/dist/haxe-sU_rzAwn.js +5 -0
  105. package/dist/{html-to-image-hMMPiNe_.js → html-to-image-DxWM1HVj.js} +2395 -2301
  106. package/dist/idl-Ds_VbrUx.js +4 -0
  107. package/dist/{info-VBDWY6EO--JNA2rNu.js → info-VBDWY6EO-D2lvLLw5.js} +1 -1
  108. package/dist/{infoDiagram-HS3SLOUP-BbZyOxsP.js → infoDiagram-HS3SLOUP-ChNufFsP.js} +12 -12
  109. package/dist/{input-BAOe64zx.js → input-Cc1Vvw9A.js} +6 -6
  110. package/dist/javascript-CztfIl0i.js +4 -0
  111. package/dist/{journeyDiagram-XKPGCS4Q-BU2mjjzl.js → journeyDiagram-XKPGCS4Q-BO_O4Ij1.js} +6 -6
  112. package/dist/julia-DDv40QMV.js +4 -0
  113. package/dist/{kanban-definition-3W4ZIXB7-BlmczUuw.js → kanban-definition-3W4ZIXB7-CPpiiiWk.js} +11 -11
  114. package/dist/{katex-qPqrBHZ8.js → katex-9-9QRhxz.js} +1 -1
  115. package/dist/{label-BCWi-Oqu.js → label-BLqV33b1.js} +2 -2
  116. package/dist/{line-BWRi3U3S.js → line-C5s_12ee.js} +3 -3
  117. package/dist/{linear-DnHwODZa.js → linear-2NnK4cxi.js} +2 -2
  118. package/dist/livescript-BEOngLLc.js +4 -0
  119. package/dist/{loader-BvW0-YWZ.js → loader-Dr8Qem8p.js} +1 -1
  120. package/dist/lua-9-7BhQ4Y.js +4 -0
  121. package/dist/main.js +1175 -1142
  122. package/dist/mathematica-DDa0Pfxm.js +4 -0
  123. package/dist/mbox-iO03mmoE.js +4 -0
  124. package/dist/{mermaid-4DMBBIKO-CG1ECj5W.js → mermaid-4DMBBIKO-B7VQMwJx.js} +1 -1
  125. package/dist/{mermaid-CEbzCxCc.js → mermaid-DO-Daq7u.js} +46 -46
  126. package/dist/{mermaid-parser.core-CleJseNW.js → mermaid-parser.core-DreccfmS.js} +7 -7
  127. package/dist/{mhchem-BwoRNwg_.js → mhchem-yiCCuiEF.js} +1 -1
  128. package/dist/{mindmap-definition-VGOIOE7T-CcSYqYP9.js → mindmap-definition-VGOIOE7T-CC1_Vl0f.js} +13 -13
  129. package/dist/mirc-C9z5LT4X.js +4 -0
  130. package/dist/mllike-jGJbdm_C.js +6 -0
  131. package/dist/modelica-DzF7oIEL.js +4 -0
  132. package/dist/mscgen-DB-u125o.js +6 -0
  133. package/dist/mumps-CRTFHhzh.js +4 -0
  134. package/dist/nsis-C4NPTuox.js +4 -0
  135. package/dist/{nsis-B5K1qoyo.js → nsis-ClF3r5Tr.js} +1 -1
  136. package/dist/ntriples-BCOoGph1.js +4 -0
  137. package/dist/{number-overlay-editor-_GnlYFHC.js → number-overlay-editor-CpKi64Fy.js} +1 -1
  138. package/dist/octave-DTwNlazz.js +4 -0
  139. package/dist/{ordinal-2jIulmcR.js → ordinal-B43ZeR68.js} +1 -1
  140. package/dist/oz-DD38AzSz.js +4 -0
  141. package/dist/{packet-DYOGHKS2-CBxXGWNr.js → packet-DYOGHKS2-CmWtF3uO.js} +1 -1
  142. package/dist/pascal-BohSp9jV.js +4 -0
  143. package/dist/perl-f5OutoPM.js +4 -0
  144. package/dist/{pie-VRWISCQL-Bmdnqjip.js → pie-VRWISCQL-B6u8vus8.js} +1 -1
  145. package/dist/{pieDiagram-ADFJNKIX-DNyLF5H2.js → pieDiagram-ADFJNKIX-Di34MOFQ.js} +19 -19
  146. package/dist/pig-Dv7wSmHb.js +4 -0
  147. package/dist/powershell-rYgjKB39.js +4 -0
  148. package/dist/{process-output-Bza_GK7Q.js → process-output-DBYxXdrN.js} +30 -25
  149. package/dist/properties-BFUNLRDN.js +4 -0
  150. package/dist/protobuf-B9QJQPPv.js +4 -0
  151. package/dist/{pug-tjbzJCFk.js → pug-B_rby2yb.js} +1 -1
  152. package/dist/pug-DzvWpaMC.js +4 -0
  153. package/dist/puppet-B_K-n_xK.js +4 -0
  154. package/dist/python-CAiFcaA2.js +4 -0
  155. package/dist/q-cLeFIBLK.js +4 -0
  156. package/dist/{quadrantDiagram-AYHSOK5B-rXwjifrj.js → quadrantDiagram-AYHSOK5B-B9kVk1ny.js} +3 -3
  157. package/dist/r-04Y-Wco3.js +4 -0
  158. package/dist/{radar-ZZBFDIW7-BmCWDffL.js → radar-ZZBFDIW7-XAmXSa8s.js} +1 -1
  159. package/dist/{react-vega-B-rkEqtS.js → react-vega-Cavbrg4l.js} +1 -1
  160. package/dist/{react-vega-k9ODWPlI.js → react-vega-Dh6-UKKe.js} +13 -13
  161. package/dist/{requirementDiagram-UZGBJVZJ-DBdrMVbs.js → requirementDiagram-UZGBJVZJ-BxGfGYEx.js} +13 -13
  162. package/dist/{reveal-component-h0_DDpxE.js → reveal-component-CSA3g_zD.js} +10 -10
  163. package/dist/rpm-FUdrIia9.js +5 -0
  164. package/dist/ruby-DMjFXuEW.js +4 -0
  165. package/dist/{sankeyDiagram-TZEHDZUN-CxmzalGv.js → sankeyDiagram-TZEHDZUN-D09PBJ-n.js} +4 -4
  166. package/dist/sas-DzHZxjXK.js +4 -0
  167. package/dist/scheme-DxHd_Rb9.js +4 -0
  168. package/dist/semaphore-CNDGTzkX.js +46 -0
  169. package/dist/{sequenceDiagram-WL72ISMW-CVCDsJ9h.js → sequenceDiagram-WL72ISMW-t_Dpemj0.js} +7 -7
  170. package/dist/shell-C8Kwypgf.js +4 -0
  171. package/dist/sieve-DdyqOKXZ.js +4 -0
  172. package/dist/smalltalk-pB7X1D9y.js +4 -0
  173. package/dist/sparql-NhBO6oOa.js +4 -0
  174. package/dist/{spec-DSIuqd3f.js → spec-hVaaZsY5.js} +4 -4
  175. package/dist/{src-BY0BGg6V.js → src-Bf2iLOlr.js} +1 -1
  176. package/dist/{stateDiagram-FKZM4ZOC-D_2djEhW.js → stateDiagram-FKZM4ZOC-B18gTP_j.js} +16 -16
  177. package/dist/stateDiagram-v2-4FDKWEC3-B6e_t14A.js +29 -0
  178. package/dist/{step-DGAGWg3y.js → step-CWipAYTY.js} +1 -1
  179. package/dist/{strings-B_FOH6eV.js → strings-BiIhGaI8.js} +4 -4
  180. package/dist/style.css +1 -1
  181. package/dist/stylus-SfWSnzPv.js +4 -0
  182. package/dist/swift-jRPdq2zR.js +4 -0
  183. package/dist/{swiper-component-KkEVUDd3.js → swiper-component-DlD2GU2g.js} +2 -2
  184. package/dist/tcl-_hpTHGX3.js +4 -0
  185. package/dist/textile-C9h8slqH.js +4 -0
  186. package/dist/{time-CMdrp3hw.js → time-C1SGcFMH.js} +2 -2
  187. package/dist/{timeline-definition-IT6M3QCI-E4NzxCs3.js → timeline-definition-IT6M3QCI-DJnh1ks5.js} +3 -3
  188. package/dist/{toDate-CHtl9vts.js → toDate-CJWlVNGD.js} +3 -3
  189. package/dist/toml-DWvtinD4.js +4 -0
  190. package/dist/{tooltip-B0mtKTXm.js → tooltip-DRaMBu06.js} +3 -3
  191. package/dist/{treemap-GDKQZRPO-CoKHPxa7.js → treemap-GDKQZRPO-Du95DV6u.js} +1 -1
  192. package/dist/troff-Dwo_A0y7.js +4 -0
  193. package/dist/ttcn-V--CPFKq.js +4 -0
  194. package/dist/ttcn-cfg-CPSMchTG.js +4 -0
  195. package/dist/turtle-B4rPGBWu.js +4 -0
  196. package/dist/{types-DBtDeUKD.js → types-Dzuoc3LN.js} +1 -1
  197. package/dist/{useAsyncData-B6hCGywC.js → useAsyncData-C56Khv_R.js} +1 -1
  198. package/dist/{useDateFormatter-B3mCQMP3.js → useDateFormatter-B_9k85Ex.js} +2 -2
  199. package/dist/{useDeepCompareMemoize-CmwDuYUH.js → useDeepCompareMemoize-Dt98v2ua.js} +1 -1
  200. package/dist/{useIframeCapabilities-DbdLoEDm.js → useIframeCapabilities-BkYHTrss.js} +1 -1
  201. package/dist/{useLifecycle-CjMjllqy.js → useLifecycle-BF6-z62y.js} +3 -3
  202. package/dist/{useTheme-CByZUW0p.js → useTheme-DykuNHR2.js} +2 -2
  203. package/dist/vb-DaMBBd4j.js +4 -0
  204. package/dist/vbscript-BMJQqcE2.js +4 -0
  205. package/dist/{vega-component-CC8TqWWV.js → vega-component-BtvQ-Kc4.js} +26 -24
  206. package/dist/velocity-CGq2QRq2.js +4 -0
  207. package/dist/verilog-CUNo8F5u.js +4 -0
  208. package/dist/vhdl-CCzA0msW.js +4 -0
  209. package/dist/webidl-CqIMDIBL.js +4 -0
  210. package/dist/xquery-XC5Kbr-1.js +4 -0
  211. package/dist/{xychartDiagram-PRI3JC2R-CuxTvjw5.js → xychartDiagram-PRI3JC2R-Dk2d_bX0.js} +10 -10
  212. package/dist/yacas-CGOv7Dzy.js +4 -0
  213. package/dist/z80-CXhVmi-f.js +4 -0
  214. package/dist/{zod-BxdsqRPd.js → zod-BWkcDORu.js} +1 -1
  215. package/package.json +3 -3
  216. package/src/components/chat/chat-components.tsx +47 -0
  217. package/src/components/chat/chat-display.tsx +41 -7
  218. package/src/components/chat/chat-panel.tsx +37 -10
  219. package/src/components/chat/chat-utils.ts +42 -20
  220. package/src/components/chat/reasoning-accordion.tsx +14 -3
  221. package/src/components/chat/tool-call/shared.ts +13 -0
  222. package/src/components/chat/tool-call/tool-approval-card.tsx +62 -0
  223. package/src/components/chat/tool-call/tool-args.tsx +26 -0
  224. package/src/components/chat/tool-call/tool-call-view.tsx +99 -0
  225. package/src/components/chat/tool-call/tool-error-card.tsx +81 -0
  226. package/src/components/chat/tool-call/tool-history-row.tsx +153 -0
  227. package/src/components/chat/tool-call/tool-result.tsx +101 -0
  228. package/src/components/data-table/TableTopBar.tsx +5 -1
  229. package/src/components/data-table/data-table.tsx +5 -0
  230. package/src/components/data-table/download-policy/atoms.ts +10 -0
  231. package/src/components/data-table/export-actions.tsx +31 -4
  232. package/src/components/editor/actions/pair-with-agent-modal.tsx +140 -49
  233. package/src/components/editor/actions/useNotebookActions.tsx +3 -1
  234. package/src/components/editor/app-container.tsx +7 -1
  235. package/src/components/editor/chrome/panels/context-aware-panel/context-aware-panel.tsx +10 -2
  236. package/src/components/editor/chrome/wrapper/app-chrome.tsx +1 -0
  237. package/src/components/editor/chrome/wrapper/footer.tsx +4 -1
  238. package/src/components/editor/chrome/wrapper/panels.tsx +4 -1
  239. package/src/components/editor/chrome/wrapper/sidebar.tsx +4 -1
  240. package/src/components/editor/controls/Controls.tsx +11 -3
  241. package/src/components/editor/file-tree/requesting-tree.tsx +27 -25
  242. package/src/components/editor/file-tree/upload.tsx +23 -24
  243. package/src/components/editor/header/__tests__/status.test.tsx +108 -0
  244. package/src/components/editor/header/status.tsx +44 -10
  245. package/src/components/editor/navigation/__tests__/clipboard.test.ts +106 -0
  246. package/src/components/editor/navigation/__tests__/navigation.test.ts +70 -0
  247. package/src/components/editor/navigation/clipboard.ts +99 -25
  248. package/src/components/editor/navigation/navigation.ts +15 -1
  249. package/src/components/editor/notebook-cell.tsx +3 -0
  250. package/src/components/home/components.tsx +6 -0
  251. package/src/components/pages/run-page.tsx +4 -1
  252. package/src/core/ai/tools/__tests__/registry.test.ts +10 -12
  253. package/src/core/ai/tools/registry.ts +9 -5
  254. package/src/core/cells/__tests__/cells.test.ts +187 -0
  255. package/src/core/cells/__tests__/pending-cut-service.test.tsx +123 -0
  256. package/src/core/cells/cells.ts +102 -17
  257. package/src/core/cells/document-changes.ts +6 -1
  258. package/src/core/cells/pending-cut-service.ts +55 -0
  259. package/src/core/cells/utils.ts +11 -0
  260. package/src/core/codemirror/cells/extensions.ts +10 -0
  261. package/src/core/codemirror/markdown/__tests__/commands.test.ts +3 -3
  262. package/src/core/codemirror/markdown/commands.ts +1 -2
  263. package/src/core/edit-app.tsx +2 -1
  264. package/src/core/hotkeys/hotkeys.ts +5 -0
  265. package/src/core/islands/worker/worker.tsx +3 -2
  266. package/src/core/network/requests-network.ts +21 -3
  267. package/src/core/network/types.ts +12 -1
  268. package/src/core/run-app.tsx +2 -1
  269. package/src/core/wasm/__tests__/utils.test.ts +34 -0
  270. package/src/core/wasm/bridge.ts +14 -1
  271. package/src/core/wasm/utils.ts +14 -0
  272. package/src/core/wasm/worker/bootstrap.ts +3 -2
  273. package/src/core/wasm/worker/worker.ts +3 -2
  274. package/src/core/websocket/__tests__/useMarimoKernelConnection.hook.test.tsx +155 -0
  275. package/src/core/websocket/__tests__/useMarimoKernelConnection.test.ts +137 -0
  276. package/src/core/websocket/transports/basic.ts +2 -0
  277. package/src/core/websocket/transports/transport.ts +1 -0
  278. package/src/core/websocket/useMarimoKernelConnection.tsx +130 -55
  279. package/src/core/websocket/useWebSocket.tsx +5 -2
  280. package/src/css/app/Cell.css +10 -0
  281. package/src/plugins/impl/DataTablePlugin.tsx +12 -0
  282. package/src/plugins/impl/TabsPlugin.tsx +35 -7
  283. package/src/plugins/impl/__tests__/TabsPlugin.test.tsx +154 -0
  284. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +6 -0
  285. package/src/plugins/impl/vega/resolve-data.ts +8 -1
  286. package/src/utils/__tests__/id-tree.test.ts +71 -0
  287. package/src/utils/__tests__/semaphore.test.ts +218 -0
  288. package/src/utils/fileToBase64.ts +8 -7
  289. package/src/utils/id-tree.tsx +89 -0
  290. package/src/utils/semaphore.ts +88 -0
  291. package/dist/apl-BKoVld9y.js +0 -4
  292. package/dist/asciiarmor-DQrKIjoo.js +0 -4
  293. package/dist/asn1-BZvnj0dq.js +0 -4
  294. package/dist/assets/__vite-browser-external-rrUYDKRl.js +0 -1
  295. package/dist/assets/worker-Bfy15ViQ.js +0 -73
  296. package/dist/brainfuck-D558nlUv.js +0 -4
  297. package/dist/classDiagram-2ON5EDUG-CBHMR6ZU.js +0 -30
  298. package/dist/classDiagram-v2-WZHVMYZB-BsUtUGM_.js +0 -30
  299. package/dist/clojure-Cq8mTSrE.js +0 -4
  300. package/dist/cmake-D8HCovWK.js +0 -4
  301. package/dist/cobol-UolN-9iU.js +0 -4
  302. package/dist/coffeescript-VdNuWrt5.js +0 -4
  303. package/dist/commonlisp-ALX7fpDc.js +0 -4
  304. package/dist/crystal-PbyO9Q_s.js +0 -4
  305. package/dist/css-DFklJkr_.js +0 -4
  306. package/dist/cypher-BifNeYlv.js +0 -4
  307. package/dist/d-BA-JP4PJ.js +0 -4
  308. package/dist/diff-CtkDpav4.js +0 -4
  309. package/dist/dist-BuBwsFva.js +0 -5
  310. package/dist/dist-BzmEQ9u7.js +0 -5
  311. package/dist/dist-Cih01ssx.js +0 -5
  312. package/dist/dist-CqfONiY9.js +0 -5
  313. package/dist/dist-D0iD0Fi9.js +0 -5
  314. package/dist/dist-DtNLXm8d.js +0 -5
  315. package/dist/dtd-DW3_UFEG.js +0 -4
  316. package/dist/dylan-pDhodO2N.js +0 -4
  317. package/dist/ecl-BJT8-YD7.js +0 -4
  318. package/dist/eiffel-Dmns-9vS.js +0 -4
  319. package/dist/elm-Da4sO4Bz.js +0 -4
  320. package/dist/erlang-C-zBsDi7.js +0 -4
  321. package/dist/factor-4xPWlWB5.js +0 -4
  322. package/dist/forth-l-c75zSd.js +0 -4
  323. package/dist/fortran-DIujSODW.js +0 -4
  324. package/dist/gas-CXnG5g_b.js +0 -4
  325. package/dist/gherkin-VPeqd4-X.js +0 -4
  326. package/dist/groovy-CphhZQgg.js +0 -4
  327. package/dist/haskell-CCvlS5Iq.js +0 -4
  328. package/dist/haxe-C_bi66fP.js +0 -5
  329. package/dist/idl-1DcP4Dm8.js +0 -4
  330. package/dist/javascript-DUIGhBvO.js +0 -4
  331. package/dist/julia-Cs2G4PQi.js +0 -4
  332. package/dist/livescript-DMtVFaAN.js +0 -4
  333. package/dist/lua-BAoLtdJg.js +0 -4
  334. package/dist/mathematica-C_NoFtbo.js +0 -4
  335. package/dist/mbox-DcFJFYrH.js +0 -4
  336. package/dist/mirc-71dccf_u.js +0 -4
  337. package/dist/mllike-CWcOFVDq.js +0 -6
  338. package/dist/modelica-Ape2VXxx.js +0 -4
  339. package/dist/mscgen-Cc6TwbSN.js +0 -6
  340. package/dist/mumps-h-ZbdkJ9.js +0 -4
  341. package/dist/nsis-C0p3m7JW.js +0 -4
  342. package/dist/ntriples-c9lEeT5w.js +0 -4
  343. package/dist/octave-DzEgB_74.js +0 -4
  344. package/dist/oz-CAxvHkyQ.js +0 -4
  345. package/dist/pascal-BJzu1sgP.js +0 -4
  346. package/dist/perl--IrOzZ2Z.js +0 -4
  347. package/dist/pig-CiBKKNhC.js +0 -4
  348. package/dist/powershell-KY0j6Qop.js +0 -4
  349. package/dist/properties-BW8q3ziV.js +0 -4
  350. package/dist/protobuf-BGaeuTGV.js +0 -4
  351. package/dist/pug-DjOKK-4J.js +0 -4
  352. package/dist/puppet-DWm2o6zX.js +0 -4
  353. package/dist/python-Bp2gezZy.js +0 -4
  354. package/dist/q-DljPshos.js +0 -4
  355. package/dist/r-BajPMnEu.js +0 -4
  356. package/dist/rpm-BKx-ZZ62.js +0 -5
  357. package/dist/ruby-DJq_HNKc.js +0 -4
  358. package/dist/sas-WANvpcOU.js +0 -4
  359. package/dist/scheme-CliBbhGF.js +0 -4
  360. package/dist/shell-BwhrNUvM.js +0 -4
  361. package/dist/sieve-BIVePvMp.js +0 -4
  362. package/dist/smalltalk-D6G48JmY.js +0 -4
  363. package/dist/sparql-jjc3BmEP.js +0 -4
  364. package/dist/stateDiagram-v2-4FDKWEC3-Cv9Av10H.js +0 -29
  365. package/dist/stylus-WPBPQ4PE.js +0 -4
  366. package/dist/swift-O1Qy6iCm.js +0 -4
  367. package/dist/tcl-BAFdhvsi.js +0 -4
  368. package/dist/textile-DFuzhNLG.js +0 -4
  369. package/dist/toml-DRSTeely.js +0 -4
  370. package/dist/troff-B_ZjwBW0.js +0 -4
  371. package/dist/ttcn-CAyiB3ic.js +0 -4
  372. package/dist/ttcn-cfg-BS5_BGBJ.js +0 -4
  373. package/dist/turtle-CUBEDy3E.js +0 -4
  374. package/dist/vb-DY9S6-U2.js +0 -4
  375. package/dist/vbscript-gaHC39Jq.js +0 -4
  376. package/dist/velocity-TfCOtJZ_.js +0 -4
  377. package/dist/verilog-c2JOX8mv.js +0 -4
  378. package/dist/vhdl-dHBirRiO.js +0 -4
  379. package/dist/webidl-Bauj-i07.js +0 -4
  380. package/dist/xquery-CtaEAOt8.js +0 -4
  381. package/dist/yacas-BZ85agQP.js +0 -4
  382. package/dist/z80-hCgR-L4U.js +0 -4
  383. package/src/components/chat/tool-call-accordion.tsx +0 -247
  384. /package/dist/{ImageComparisonComponent-DaocPIse.js → ImageComparisonComponent-CNHIsPDj.js} +0 -0
  385. /package/dist/{Plot-PIeIvFnD.js → Plot-4wn-lMVn.js} +0 -0
  386. /package/dist/{apl-Dt8GMXYg.js → apl-BCgCq9iM.js} +0 -0
  387. /package/dist/{array-B-MVxRIF.js → array-tvvEqPy7.js} +0 -0
  388. /package/dist/{asciiarmor-CitDQ85h.js → asciiarmor-BtqU-KJQ.js} +0 -0
  389. /package/dist/{asn1-abrf9SMK.js → asn1-Dmb-dTMx.js} +0 -0
  390. /package/dist/{asterisk-BUZwqih-.js → asterisk-DaVJJDnV.js} +0 -0
  391. /package/dist/{brainfuck-BL-Boof0.js → brainfuck-C1HoZKlE.js} +0 -0
  392. /package/dist/{chunk-4F5CHEZ2-C6tO9vjs.js → chunk-4F5CHEZ2-BZq7Kom7.js} +0 -0
  393. /package/dist/{chunk-B2363JML-Ds8wZXyP.js → chunk-B2363JML-D9-XOau1.js} +0 -0
  394. /package/dist/{chunk-DR5Q36YT-CP69aZS_.js → chunk-DR5Q36YT-BflwErH1.js} +0 -0
  395. /package/dist/{chunk-FRFDVMJY-BgQv1HBE.js → chunk-FRFDVMJY-BSBUAX7r.js} +0 -0
  396. /package/dist/{chunk-PL6DKKU2-DHfTUHy8.js → chunk-PL6DKKU2-B0MTXvyc.js} +0 -0
  397. /package/dist/{chunk-SJTYNZTY-Diciw4sx.js → chunk-SJTYNZTY-CEG4F0pB.js} +0 -0
  398. /package/dist/{chunk-TQ3KTPDO-CQfP9npd.js → chunk-TQ3KTPDO-DiCtqVSi.js} +0 -0
  399. /package/dist/{chunk-UMXZTB3W-MSKeGL7W.js → chunk-UMXZTB3W-97iS1iEl.js} +0 -0
  400. /package/dist/{click-outside-container-BZgN7xS_.js → click-outside-container-BDd67_1U.js} +0 -0
  401. /package/dist/{clike-RWg7anhx.js → clike-CdT0yHjt.js} +0 -0
  402. /package/dist/{clojure-DaojKHow.js → clojure-CdyrCpUv.js} +0 -0
  403. /package/dist/{cmake-DN-_v0XE.js → cmake-BFlPxym7.js} +0 -0
  404. /package/dist/{cobol-C3VpMyux.js → cobol-CcJXewp8.js} +0 -0
  405. /package/dist/{coffeescript-DIkz3Tbt.js → coffeescript-DnKuIKRo.js} +0 -0
  406. /package/dist/{colors-Cn2p_FA3.js → colors-CQAOa8cK.js} +0 -0
  407. /package/dist/{common-keywords-hbLeU7VU.js → common-keywords-FBrXPTcz.js} +0 -0
  408. /package/dist/{commonlisp-CB1boOiP.js → commonlisp-B-kok83Z.js} +0 -0
  409. /package/dist/{crystal-DI2oCml6.js → crystal-FYRYjI1I.js} +0 -0
  410. /package/dist/{css-BdEVwQDV.js → css-B45lc2V3.js} +0 -0
  411. /package/dist/{cypher-BNHToqxU.js → cypher-DZMLyVY_.js} +0 -0
  412. /package/dist/{cytoscape.esm-WbbDoCfu.js → cytoscape.esm-ayF70frT.js} +0 -0
  413. /package/dist/{d-D7we7I1b.js → d-x-VVT4o9.js} +0 -0
  414. /package/dist/{diff-Cia6fzjN.js → diff-Dxe2mpXk.js} +0 -0
  415. /package/dist/{dist-BK-3fF4P.js → dist-B4LJpMEg.js} +0 -0
  416. /package/dist/{dist-CxdUraQr.js → dist-B507mf_I.js} +0 -0
  417. /package/dist/{dist-C89sHDXk.js → dist-BGdYVvOu.js} +0 -0
  418. /package/dist/{dist-DquyVv5H.js → dist-BNyrZfqT.js} +0 -0
  419. /package/dist/{dist-Zn0KNbo9.js → dist-Bc5pmZIw.js} +0 -0
  420. /package/dist/{dist-C-J0pt5p.js → dist-BvCfQQQE.js} +0 -0
  421. /package/dist/{dist-D9r7Cmw7.js → dist-C2ej4eOH.js} +0 -0
  422. /package/dist/{dist-HVuryI1a.js → dist-C34oIrQ9.js} +0 -0
  423. /package/dist/{dist-CGLzXdrt.js → dist-CDFZi-QD.js} +0 -0
  424. /package/dist/{dist-C9fmTOin.js → dist-CYEylvZA.js} +0 -0
  425. /package/dist/{dist-DadjmS-4.js → dist-DJ6zJQZ4.js} +0 -0
  426. /package/dist/{dist-CtCY55Jf.js → dist-Dh3wkoyH.js} +0 -0
  427. /package/dist/{dist-C474qFoq.js → dist-Dhk6FMb0.js} +0 -0
  428. /package/dist/{dist-DZjQ_MBo.js → dist-KnujRhFL.js} +0 -0
  429. /package/dist/{dist-CinA9Enb.js → dist-WdPUFc56.js} +0 -0
  430. /package/dist/{dist-DBLeRrPp.js → dist-t_qL7eB8.js} +0 -0
  431. /package/dist/{dist-CyFFzJTb.js → dist-usPCDYx8.js} +0 -0
  432. /package/dist/{dtd-H4Hubdwp.js → dtd-C9VM_Wfu.js} +0 -0
  433. /package/dist/{duckdb-keywords-CZ_ZTscu.js → duckdb-keywords-CvJhR_Yd.js} +0 -0
  434. /package/dist/{dylan-fVO6rnq3.js → dylan-DTSnEIFO.js} +0 -0
  435. /package/dist/{ebnf-WEXPLEWb.js → ebnf-2D4Ctp3y.js} +0 -0
  436. /package/dist/{ecl-B94VPjNR.js → ecl-N04ptnRK.js} +0 -0
  437. /package/dist/{eiffel-C_R6TusS.js → eiffel-Dd8rpqr_.js} +0 -0
  438. /package/dist/{elm-DzCHbO2g.js → elm-GT2E866W.js} +0 -0
  439. /package/dist/{erlang-BGNkx6JU.js → erlang-Cf0Bp5pY.js} +0 -0
  440. /package/dist/{esm-Bb_hbWan.js → esm-BaaaPNGl.js} +0 -0
  441. /package/dist/{fcl-B_Gv5Jfx.js → fcl-Ccj8Z5Xd.js} +0 -0
  442. /package/dist/{forth-Bybw0cJ7.js → forth-wd_XzGTg.js} +0 -0
  443. /package/dist/{fortran-C6PoCLkI.js → fortran-DcwUTZFe.js} +0 -0
  444. /package/dist/{gas-BBlhenj4.js → gas-DeALIER3.js} +0 -0
  445. /package/dist/{gherkin-NXtNG85X.js → gherkin-CKTqaJNX.js} +0 -0
  446. /package/dist/{groovy-BoFYK9xM.js → groovy-Bwdp_d8D.js} +0 -0
  447. /package/dist/{haskell-BtBdvQ1n.js → haskell-DCdCcPLK.js} +0 -0
  448. /package/dist/{haxe-D--o6dr0.js → haxe-DAyktQWJ.js} +0 -0
  449. /package/dist/{http-Dc2fv19V.js → http-_DVAYWoR.js} +0 -0
  450. /package/dist/{idl-AqTq5l7e.js → idl-CBuZiRYu.js} +0 -0
  451. /package/dist/{init-D-g0ONX1.js → init-uv0kkh4g.js} +0 -0
  452. /package/dist/{javascript-DvwNVye9.js → javascript-DzigE11c.js} +0 -0
  453. /package/dist/{julia-DoKiagZC.js → julia-PwfB-0Cm.js} +0 -0
  454. /package/dist/{katex-B7pMJpE0.js → katex-C_XRmjAP.js} +0 -0
  455. /package/dist/{livescript-DxBZMiWB.js → livescript-BJLz1EbT.js} +0 -0
  456. /package/dist/{lua-DmS_0NTu.js → lua-ZC-XC2jf.js} +0 -0
  457. /package/dist/{math-BYK36kWZ.js → math-DFcdCCU8.js} +0 -0
  458. /package/dist/{mathematica-ChlDFeIC.js → mathematica-DCYMx6qB.js} +0 -0
  459. /package/dist/{mbox-CguZuODr.js → mbox-OxMK_9XI.js} +0 -0
  460. /package/dist/{mirc-CFtY8dqz.js → mirc-nJVyhA0H.js} +0 -0
  461. /package/dist/{mllike-C0EJrEOk.js → mllike-DRO89bsU.js} +0 -0
  462. /package/dist/{modelica-C1kO1nfS.js → modelica-Don3E6ZD.js} +0 -0
  463. /package/dist/{mscgen-DEYdr7AY.js → mscgen-DJfqD3bN.js} +0 -0
  464. /package/dist/{mumps-B3NVJs2V.js → mumps-SjGTvDYL.js} +0 -0
  465. /package/dist/{nginx-ComVAAGN.js → nginx-DasThI7R.js} +0 -0
  466. /package/dist/{node-sql-parser-DNGGJ-Rw.js → node-sql-parser-B8nBD36q.js} +0 -0
  467. /package/dist/{ntriples-DHol9X9H.js → ntriples-CNBKRl3I.js} +0 -0
  468. /package/dist/{octave-CYGz0bfo.js → octave-DdeVHNlx.js} +0 -0
  469. /package/dist/{oz-kPxb2ni5.js → oz-CcKSoNvN.js} +0 -0
  470. /package/dist/{pascal-bZ0yrJKy.js → pascal-6leftwNj.js} +0 -0
  471. /package/dist/{path-Du6n3sOU.js → path-BGaWgPKg.js} +0 -0
  472. /package/dist/{perl-z4hvqyqz.js → perl-BhJIwWzN.js} +0 -0
  473. /package/dist/{pig-DZO8QDF9.js → pig-r-xDHqRf.js} +0 -0
  474. /package/dist/{powershell-BSuaDQEC.js → powershell-D-BELeNi.js} +0 -0
  475. /package/dist/{properties-BXhGLlIx.js → properties-CnuDhbll.js} +0 -0
  476. /package/dist/{protobuf-DM6iybWV.js → protobuf-CO8RBhvX.js} +0 -0
  477. /package/dist/{puppet-Bn05sQT8.js → puppet-NmXHjLy8.js} +0 -0
  478. /package/dist/{python-Cvnhm0g7.js → python-DAQXi720.js} +0 -0
  479. /package/dist/{q-B9V8hzex.js → q-DlikXfV0.js} +0 -0
  480. /package/dist/{r-Cf0gFqmq.js → r-CuohilwT.js} +0 -0
  481. /package/dist/{rpm-D-LMkTV1.js → rpm-0Pjwp0Pb.js} +0 -0
  482. /package/dist/{ruby-DeuPikpK.js → ruby-Dq8NJTDG.js} +0 -0
  483. /package/dist/{sas-C9tjgAo9.js → sas-CuwonyVP.js} +0 -0
  484. /package/dist/{scheme-D1_bUF0G.js → scheme-CYU-RRIf.js} +0 -0
  485. /package/dist/{shell-CJBmnks3.js → shell-COPmX2qE.js} +0 -0
  486. /package/dist/{sieve-1fSV75CF.js → sieve-B_3zyLne.js} +0 -0
  487. /package/dist/{simple-mode-B90Wdavj.js → simple-mode-DSBniks8.js} +0 -0
  488. /package/dist/{smalltalk-sZNPD0HO.js → smalltalk-DRft7iPv.js} +0 -0
  489. /package/dist/{solr-DTkyqJ-Z.js → solr-RZ9uTl59.js} +0 -0
  490. /package/dist/{sparql-oHc1nm77.js → sparql-CN6qj55H.js} +0 -0
  491. /package/dist/{spreadsheet-CER0raqY.js → spreadsheet-BNNUNXA2.js} +0 -0
  492. /package/dist/{sql-ByOoEONQ.js → sql-B4x8IkwU.js} +0 -0
  493. /package/dist/{stylus-KzkX6zRB.js → stylus-Bn_ZjOQ3.js} +0 -0
  494. /package/dist/{swift-DqVxZvKo.js → swift-BLUJhMbz.js} +0 -0
  495. /package/dist/{tcl-BtWSwXfA.js → tcl-C86fxecl.js} +0 -0
  496. /package/dist/{textile-CWDbn9Ql.js → textile-DmHh2rsK.js} +0 -0
  497. /package/dist/{tiddlywiki-Cr9xyOY1.js → tiddlywiki-DI0mF2WJ.js} +0 -0
  498. /package/dist/{tiki-D5JONyfZ.js → tiki-2HU6XLLn.js} +0 -0
  499. /package/dist/{timer-D7JVdX9U.js → timer-YZl28NYN.js} +0 -0
  500. /package/dist/{toml-BfehlgmL.js → toml-GWANRNAD.js} +0 -0
  501. /package/dist/{treemap-qFGzn7xk.js → treemap-D-ka1hvx.js} +0 -0
  502. /package/dist/{troff-BZBk6AAu.js → troff-BHTsomIy.js} +0 -0
  503. /package/dist/{ttcn-DVwvXg0_.js → ttcn-DQuhn5Mn.js} +0 -0
  504. /package/dist/{ttcn-cfg-gjbVLf1L.js → ttcn-cfg-HjFYtdB-.js} +0 -0
  505. /package/dist/{turtle-CgxKXorV.js → turtle-nCay33Nv.js} +0 -0
  506. /package/dist/{vb-B9kSwTdM.js → vb-BG-XlqqJ.js} +0 -0
  507. /package/dist/{vbscript-DrUKSCdb.js → vbscript-B6vyW0-D.js} +0 -0
  508. /package/dist/{velocity-AlMYTnMy.js → velocity-CWegueqO.js} +0 -0
  509. /package/dist/{verilog-DLUaM05j.js → verilog-CzSQm4cG.js} +0 -0
  510. /package/dist/{vhdl-DUJOtSmO.js → vhdl-DqnNVL7r.js} +0 -0
  511. /package/dist/{webidl-CQp4aHk_.js → webidl-DXEUpDWH.js} +0 -0
  512. /package/dist/{xquery-IxkjlwOD.js → xquery-Ba_NB5bD.js} +0 -0
  513. /package/dist/{yacas-Bnctn5w8.js → yacas-HKQU6hyk.js} +0 -0
  514. /package/dist/{z80-DrFwhx53.js → z80-CXkHXLdj.js} +0 -0
@@ -1,247 +0,0 @@
1
- /* Copyright 2026 Marimo. All rights reserved. */
2
-
3
- import type { ToolUIPart } from "ai";
4
- import { isEmpty } from "lodash-es";
5
- import {
6
- CheckCircleIcon,
7
- InfoIcon,
8
- Loader2,
9
- WrenchIcon,
10
- XCircleIcon,
11
- } from "lucide-react";
12
- import React from "react";
13
- import { z } from "zod";
14
- import {
15
- Accordion,
16
- AccordionContent,
17
- AccordionItem,
18
- AccordionTrigger,
19
- } from "@/components/ui/accordion";
20
- import { cn } from "@/utils/cn";
21
-
22
- // Zod schema matching the Python SuccessResult dataclass
23
- const SuccessResultSchema = z
24
- .object({
25
- status: z.string().default("success"),
26
- auth_required: z.boolean().default(false),
27
- action_url: z.any(),
28
- next_steps: z.any(),
29
- meta: z.any(),
30
- message: z.string().nullish(),
31
- })
32
- .passthrough();
33
-
34
- type SuccessResult = z.infer<typeof SuccessResultSchema>;
35
-
36
- const PrettySuccessResult: React.FC<{ data: SuccessResult }> = ({ data }) => {
37
- const {
38
- status,
39
- auth_required,
40
- action_url: _action_url,
41
- meta: _meta,
42
- next_steps: _next_steps,
43
- message,
44
- ...rest
45
- } = data;
46
-
47
- return (
48
- <div className="flex flex-col gap-1.5">
49
- <div className="flex items-center justify-between">
50
- <h3 className="text-xs font-semibold text-muted-foreground">
51
- Tool Result
52
- </h3>
53
- <div className="flex items-center gap-2">
54
- <span className="text-xs px-2 py-0.5 bg-[var(--grass-2)] text-[var(--grass-11)] rounded-full font-medium capitalize">
55
- {status}
56
- </span>
57
- {auth_required && (
58
- <span className="text-xs px-2 py-0.5 bg-[var(--amber-2)] text-[var(--amber-11)] rounded-full">
59
- Auth Required
60
- </span>
61
- )}
62
- </div>
63
- </div>
64
-
65
- {/* Message */}
66
- {message && (
67
- <div className="flex items-start gap-2">
68
- <InfoIcon className="h-3 w-3 text-[var(--blue-11)] mt-0.5 flex-shrink-0" />
69
- <div className="text-xs text-foreground">{message}</div>
70
- </div>
71
- )}
72
-
73
- {/* Data */}
74
- {rest && (
75
- <div className="space-y-3">
76
- {Object.entries(rest).map(([key, value]) => {
77
- if (isEmpty(value)) {
78
- return null;
79
- }
80
- return (
81
- <div key={key} className="space-y-1.5">
82
- <div className="text-xs font-medium text-muted-foreground capitalize flex items-center gap-2">
83
- <div className="w-1.5 h-1.5 bg-[var(--blue-9)] rounded-full" />
84
- {key}
85
- </div>
86
- <pre className="bg-[var(--slate-2)] p-2 text-muted-foreground border border-[var(--slate-4)] rounded text-xs overflow-auto scrollbar-thin max-h-64">
87
- {JSON.stringify(value, null, 2)}
88
- </pre>
89
- </div>
90
- );
91
- })}
92
- </div>
93
- )}
94
- </div>
95
- );
96
- };
97
-
98
- const ResultRenderer: React.FC<{ result: unknown }> = ({ result }) => {
99
- // Try to parse the result with our Zod schema
100
- const parseResult = SuccessResultSchema.safeParse(result);
101
-
102
- if (parseResult.success) {
103
- // If it matches the SuccessResult schema, show the pretty UI
104
- return <PrettySuccessResult data={parseResult.data} />;
105
- }
106
-
107
- // Otherwise, fall back to the current JSON viewer
108
- return (
109
- <div className="text-xs font-medium text-muted-foreground mb-1 max-h-64 overflow-y-auto scrollbar-thin">
110
- {typeof result === "string" ? result : JSON.stringify(result, null, 2)}
111
- </div>
112
- );
113
- };
114
-
115
- const ToolArgsRenderer: React.FC<{ input: unknown }> = ({ input }) => {
116
- const hasinput = input && input !== null;
117
-
118
- if (!hasinput) {
119
- return null;
120
- }
121
-
122
- const isEmptyInput = isEmpty(input);
123
-
124
- const isObject =
125
- typeof input === "object" &&
126
- !Array.isArray(input) &&
127
- Object.keys(input as Record<string, unknown>).length > 0;
128
-
129
- return (
130
- <div className="space-y-2">
131
- <h3 className="text-xs font-semibold text-muted-foreground">
132
- Tool Request
133
- </h3>
134
- <pre className="bg-[var(--slate-2)] p-2 text-muted-foreground border border-[var(--slate-4)] rounded text-xs overflow-auto scrollbar-thin max-h-64">
135
- {isEmptyInput
136
- ? "{}"
137
- : isObject
138
- ? JSON.stringify(input, null, 2)
139
- : String(input)}
140
- </pre>
141
- </div>
142
- );
143
- };
144
-
145
- interface ToolCallAccordionProps {
146
- toolName: string;
147
- result: unknown;
148
- error?: string;
149
- index?: number;
150
- state?: ToolUIPart["state"];
151
- className?: string;
152
- input?: unknown;
153
- }
154
-
155
- export const ToolCallAccordion: React.FC<ToolCallAccordionProps> = ({
156
- toolName,
157
- result,
158
- error,
159
- index = 0,
160
- state,
161
- className,
162
- input,
163
- }) => {
164
- const hasResult = state === "output-available" && (result || error);
165
- const status = error ? "error" : hasResult ? "success" : "loading";
166
-
167
- const getStatusIcon = () => {
168
- switch (status) {
169
- case "loading":
170
- return <Loader2 className="h-3 w-3 animate-spin" />;
171
- case "error":
172
- return <XCircleIcon className="h-3 w-3 text-[var(--red-11)]" />;
173
- case "success":
174
- return <CheckCircleIcon className="h-3 w-3 text-[var(--grass-11)]" />;
175
- default:
176
- return <WrenchIcon className="h-3 w-3" />;
177
- }
178
- };
179
-
180
- const getStatusText = () => {
181
- if (status === "loading") {
182
- return "Running";
183
- }
184
- if (error) {
185
- return "Failed";
186
- }
187
- if (hasResult) {
188
- return "Done";
189
- }
190
- return "Tool call";
191
- };
192
-
193
- return (
194
- <Accordion
195
- key={`tool-${index}`}
196
- type="single"
197
- collapsible={true}
198
- className={cn("w-full", className)}
199
- >
200
- <AccordionItem value="tool-call" className="border-0">
201
- <AccordionTrigger
202
- className={cn(
203
- "h-6 text-xs border-border shadow-none! ring-0! bg-muted/60 hover:bg-muted py-0 px-2 gap-1 rounded-sm [&[data-state=open]>svg]:rotate-180 hover:no-underline",
204
- status === "error" && "text-[var(--red-11)]/80",
205
- status === "success" && "text-[var(--grass-11)]/80",
206
- )}
207
- >
208
- <span className="flex items-center gap-1">
209
- {getStatusIcon()}
210
- {getStatusText()}:
211
- <code className="font-mono text-xs">
212
- {formatToolName(toolName)}
213
- </code>
214
- </span>
215
- </AccordionTrigger>
216
- <AccordionContent className="py-2 px-2">
217
- {/* Only show content when tool is complete */}
218
- {hasResult && (
219
- <div className="space-y-3">
220
- <ToolArgsRenderer input={input} />
221
- {result !== undefined && result !== null && (
222
- <ResultRenderer result={result} />
223
- )}
224
-
225
- {/* Error */}
226
- {error && (
227
- <div className="bg-[var(--red-2)] border border-[var(--red-6)] rounded-lg p-3">
228
- <div className="text-xs font-semibold text-[var(--red-11)] mb-2 flex items-center gap-2">
229
- <div className="w-1.5 h-1.5 bg-[var(--red-9)] rounded-full" />
230
- Error
231
- </div>
232
- <div className="text-sm text-[var(--red-11)] leading-relaxed">
233
- {error}
234
- </div>
235
- </div>
236
- )}
237
- </div>
238
- )}
239
- </AccordionContent>
240
- </AccordionItem>
241
- </Accordion>
242
- );
243
- };
244
-
245
- function formatToolName(toolName: string) {
246
- return toolName.replace("tool-", "");
247
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes