@marimo-team/frontend 0.23.7-dev20 → 0.23.7-dev23
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.
- package/dist/assets/CellStatus-CPWOUWua.js +1 -0
- package/dist/assets/ConnectedDataExplorerComponent-_SSN_nx7.js +1 -0
- package/dist/assets/DeferredRequestRegistry-BrJi1ezh.js +1 -0
- package/dist/assets/ImperativeModal-DMLPabMc.js +1 -0
- package/dist/assets/JsonOutput-DPTx4W3_.js +49 -0
- package/dist/assets/LazyAnyLanguageCodeMirror-BFOqW5K4.js +2 -0
- package/dist/assets/MarimoErrorOutput-CaE2lts5.js +7 -0
- package/dist/assets/RSPContexts-D6ufu5K9.js +1 -0
- package/dist/assets/RenderHTML-BjdmkXPK.js +1 -0
- package/dist/assets/RunButton-t4OttNnT.js +1 -0
- package/dist/assets/add-cell-with-ai-Brv9Nib_.js +97 -0
- package/dist/assets/add-connection-dialog-CDimGa9X.js +167 -0
- package/dist/assets/agent-panel-GKPzGkcA.js +287 -0
- package/dist/assets/ai-model-dropdown-BNBl1Zqz.js +5 -0
- package/dist/assets/any-language-editor-CkME1nrW.js +1 -0
- package/dist/assets/apl-CZC-w0DM.js +1 -0
- package/dist/assets/app-config-button-DhyIdUji.js +1 -0
- package/dist/assets/arc-D0XsJSsf.js +1 -0
- package/dist/assets/architecture-7HQA4BMR-CyeFAHwy.js +1 -0
- package/dist/assets/architectureDiagram-VXUJARFQ-1WJT-eC3.js +36 -0
- package/dist/assets/asciiarmor-Dxkbb4uS.js +1 -0
- package/dist/assets/asn1-CrA2MPaL.js +1 -0
- package/dist/assets/ban-0fKnt00i.js +1 -0
- package/dist/assets/blockDiagram-VD42YOAC-JexHZqqE.js +122 -0
- package/dist/assets/brainfuck-B5oLVauS.js +1 -0
- package/dist/assets/c4Diagram-YG6GDRKO-Bq-DoY7t.js +10 -0
- package/dist/assets/cache-panel-5jV2EZcN.js +1 -0
- package/dist/assets/cell-editor-Bsykn4S-.js +20 -0
- package/dist/assets/cell-link-CKjfkiFA.js +1 -0
- package/dist/assets/cells-DFP-V6he.js +229 -0
- package/dist/assets/channel-V1GV6hO1.js +1 -0
- package/dist/assets/chat-display-D2yhLWNi.js +1 -0
- package/dist/assets/chat-panel-B5MUxP69.js +3 -0
- package/dist/assets/chat-ui-D4WaB_kd.js +4 -0
- package/dist/assets/chunk-4BX2VUAB-Dhno12SW.js +1 -0
- package/dist/assets/chunk-55IACEB6-BRJvcREw.js +1 -0
- package/dist/assets/chunk-5FQGJX7Z-DzaUzyuM.js +113 -0
- package/dist/assets/chunk-ABZYJK2D-fbQovzbZ.js +80 -0
- package/dist/assets/chunk-ATLVNIR6-C71UReOL.js +1 -0
- package/dist/assets/chunk-B4BG7PRW-ChmO4xUA.js +165 -0
- package/dist/assets/chunk-CVBHYZKI-B6tT645I.js +1 -0
- package/dist/assets/chunk-DI55MBZ5-DaLBJUsc.js +220 -0
- package/dist/assets/chunk-EXTU4WIE-B3Lv3QWb.js +1 -0
- package/dist/assets/chunk-FMBD7UC4-CDFiCFLp.js +15 -0
- package/dist/assets/chunk-HN2XXSSU-xW6J7MXn.js +1 -0
- package/dist/assets/chunk-JA3XYJ7Z-jqUKn_dB.js +70 -0
- package/dist/assets/chunk-JZLCHNYA-xGZ72asD.js +54 -0
- package/dist/assets/chunk-MI3HLSF2-CXMqGP2w.js +32 -0
- package/dist/assets/chunk-N4CR4FBY-D8iMP1ch.js +2 -0
- package/dist/assets/chunk-QN33PNHL-Ddzf5Xc1.js +1 -0
- package/dist/assets/chunk-QXUST7PY-BUBd7EW9.js +7 -0
- package/dist/assets/chunk-QZHKN3VN-37WEuSLJ.js +1 -0
- package/dist/assets/chunk-S3R3BYOJ-7UJSqSFb.js +2 -0
- package/dist/assets/chunk-TZMSLE5B-B7Xjx897.js +1 -0
- package/dist/assets/classDiagram-2ON5EDUG-C8jlAFC-.js +1 -0
- package/dist/assets/classDiagram-v2-WZHVMYZB-DYST6eBL.js +1 -0
- package/dist/assets/clike-npv7NBwP.js +1 -0
- package/dist/assets/clojure-D60XavrX.js +1 -0
- package/dist/assets/cmake-CrWsGXcU.js +1 -0
- package/dist/assets/cobol-CZosvDFE.js +1 -0
- package/dist/assets/code-block-37QAKDTI-uGNNXUL3.js +2 -0
- package/dist/assets/coffeescript-DQGIz3iX.js +1 -0
- package/dist/assets/column-preview-D_mFRbEq.js +1 -0
- package/dist/assets/command-FM3TtrvZ.js +1 -0
- package/dist/assets/command-palette-Bwq10yhf.js +1 -0
- package/dist/assets/common-W-U2rLKH.js +1 -0
- package/dist/assets/commonlisp-DrWSVXOx.js +1 -0
- package/dist/assets/components-BtpZRoDo.js +1 -0
- package/dist/assets/components-DtZWQLFy.js +1 -0
- package/dist/assets/config-DzkFE_hx.js +1 -0
- package/dist/assets/context-QkTujrKn.js +1 -0
- package/dist/assets/copy-icon-OjtDb4gO.js +1 -0
- package/dist/assets/cose-bilkent-S5V4N54A-CgMkzBzk.js +1 -0
- package/dist/assets/crystal-CMu2RgP7.js +1 -0
- package/dist/assets/css-OVjTGRm9.js +1 -0
- package/dist/assets/cypher-C4I5nX3I.js +1 -0
- package/dist/assets/d-B_OAkSA3.js +1 -0
- package/dist/assets/dagre-6UL2VRFP-rclmYCNC.js +4 -0
- package/dist/assets/data-grid-overlay-editor-CO7vLLX5.js +1 -0
- package/dist/assets/datasource-UkkpYsAn.js +3 -0
- package/dist/assets/dates-Cc5BIu1h.js +1 -0
- package/dist/assets/dependency-graph-panel-D427rIm7.js +5 -0
- package/dist/assets/diagram-PSM6KHXK-Dr5x-oaJ.js +24 -0
- package/dist/assets/diagram-QEK2KX5R-Cyino8Ci.js +43 -0
- package/dist/assets/diagram-S2PKOQOG-DYLuU52t.js +24 -0
- package/dist/assets/diff-f-qA4U7T.js +1 -0
- package/dist/assets/dist-B2-3vH3I.js +1 -0
- package/dist/assets/dist-B3r3gs4u.js +1 -0
- package/dist/assets/dist-B7U5jPfs.js +1 -0
- package/dist/assets/dist-BYYXrYaA.js +1 -0
- package/dist/assets/dist-Bc225YxE.js +1 -0
- package/dist/assets/dist-C5-lSp3f.js +7 -0
- package/dist/assets/dist-CAIBlJtJ.js +1 -0
- package/dist/assets/dist-CBSMxaO_.js +6 -0
- package/dist/assets/dist-CGC-UAcL.js +1 -0
- package/dist/assets/dist-CNghxh0Q.js +1 -0
- package/dist/assets/dist-CO_N76Iz.js +1 -0
- package/dist/assets/dist-CSowihAs.js +1 -0
- package/dist/assets/dist-C_k5-SEy.js +1 -0
- package/dist/assets/dist-CcoNWYux.js +1 -0
- package/dist/assets/dist-CiOPfbN_.js +1 -0
- package/dist/assets/dist-Cofj3PRM.js +1 -0
- package/dist/assets/dist-CpTFpfm_.js +1 -0
- package/dist/assets/dist-CqEym3Sr.js +1 -0
- package/dist/assets/dist-CtCHoDJA.js +1 -0
- package/dist/assets/dist-D6HkmGB2.js +1 -0
- package/dist/assets/dist-D86l0QaP.js +1 -0
- package/dist/assets/dist-DB3ebLb3.js +1 -0
- package/dist/assets/dist-DYXeLJlk.js +1 -0
- package/dist/assets/dist-Dr8mWwQ_.js +1 -0
- package/dist/assets/dist-Dx65VI0Y.js +1 -0
- package/dist/assets/dist-FSgOAwAH.js +1 -0
- package/dist/assets/dist-K7UrYXpJ.js +1 -0
- package/dist/assets/dist-_fyDen1v.js +1 -0
- package/dist/assets/dist-cS6yvaqe.js +1 -0
- package/dist/assets/dist-fQYV9WTb.js +1 -0
- package/dist/assets/dockerfile-CrSl2ewL.js +1 -0
- package/dist/assets/documentation-panel-Drea8KzZ.js +1 -0
- package/dist/assets/download-PdY73eIa.js +9 -0
- package/dist/assets/dtd-DWRTME-w.js +1 -0
- package/dist/assets/dylan-DnEm_ULG.js +1 -0
- package/dist/assets/ecl-Dbf1A5nG.js +1 -0
- package/dist/assets/edit-page-ms9zMhPH.js +9 -0
- package/dist/assets/eiffel-Xj76_r0X.js +1 -0
- package/dist/assets/elm-nUwO24NA.js +1 -0
- package/dist/assets/erDiagram-Q2GNP2WA-FdS4NKUh.js +60 -0
- package/dist/assets/erlang-CFVqMiR0.js +1 -0
- package/dist/assets/error-banner-LdWZDbqd.js +1 -0
- package/dist/assets/error-panel-kKZXxhac.js +1 -0
- package/dist/assets/es-DGgq-Wes.js +5 -0
- package/dist/assets/esm-CwPtnMeh.js +1 -0
- package/dist/assets/esm-mzWG_jdC.js +1 -0
- package/dist/assets/external-link-BTNxSavU.js +1 -0
- package/dist/assets/factor-MWFhpc0o.js +1 -0
- package/dist/assets/factor-mJPTAioV.js +1 -0
- package/dist/assets/field-BqBRuxbN.js +1 -0
- package/dist/assets/file-explorer-panel-CwTZ0CcT.js +26 -0
- package/dist/assets/file-icons-CRWi1gUG.js +1 -0
- package/dist/assets/file-name-input-DVJd7Dc5.js +3 -0
- package/dist/assets/fileToBase64-DZfwJMrG.js +1 -0
- package/dist/assets/floating-outline-D8dOyOI7.js +1 -0
- package/dist/assets/flowDiagram-NV44I4VS-DO4w8anv.js +162 -0
- package/dist/assets/focus-DIIsMOUb.js +1 -0
- package/dist/assets/form-CvdGBYia.js +2 -0
- package/dist/assets/formats-Dp4U6mm4.js +1 -0
- package/dist/assets/formatting-3l1CoS7X.js +1 -0
- package/dist/assets/forth-DBQr6L61.js +1 -0
- package/dist/assets/fortran-BkjqlXUL.js +1 -0
- package/dist/assets/gallery-page-BmNMHGRE.js +1 -0
- package/dist/assets/ganttDiagram-JELNMOA3-Df-MBIrj.js +267 -0
- package/dist/assets/gas-BNFtcdO9.js +1 -0
- package/dist/assets/gherkin-BrOMWqkN.js +1 -0
- package/dist/assets/gitGraph-G5XIXVHT-BAQx1hNd.js +1 -0
- package/dist/assets/gitGraphDiagram-V2S2FVAM-fv2cmbLH.js +65 -0
- package/dist/assets/glide-data-editor-Cq7anCV2.js +132 -0
- package/dist/assets/globals-O4mEvp0x.js +1 -0
- package/dist/assets/groovy-DuCnwFRS.js +1 -0
- package/dist/assets/haskell-BD39942g.js +1 -0
- package/dist/assets/haxe-CXsKoap0.js +1 -0
- package/dist/assets/home-page-CPo76A_0.js +4 -0
- package/dist/assets/hooks-cC9mPQOU.js +1 -0
- package/dist/assets/html-to-image-DkwHQ_Qj.js +2 -0
- package/dist/assets/idl-D7hb6rI1.js +1 -0
- package/dist/assets/index-5DPWreKX.js +42 -0
- package/dist/assets/index-DaOEdWXw.css +2 -0
- package/dist/assets/info-VBDWY6EO-Cw9vVNQD.js +1 -0
- package/dist/assets/infoDiagram-HS3SLOUP-CpBkxLyN.js +2 -0
- package/dist/assets/input-DkSJHlVD.js +1 -0
- package/dist/assets/javascript-1S1_-Xac.js +1 -0
- package/dist/assets/journeyDiagram-XKPGCS4Q-C_cdVaga.js +139 -0
- package/dist/assets/julia-CbOUdU45.js +1 -0
- package/dist/assets/kanban-definition-3W4ZIXB7-CLpEm5s3.js +89 -0
- package/dist/assets/katex-BuYoGw8D.js +1 -0
- package/dist/assets/kiosk-mode-BZ0oIEFv.js +1 -0
- package/dist/assets/layout-Cb_Fr_ha.js +9 -0
- package/dist/assets/line-ortW3H6T.js +1 -0
- package/dist/assets/linear-CIVE7jyt.js +1 -0
- package/dist/assets/links-DguLoFik.js +1 -0
- package/dist/assets/livescript-4YbxVKEy.js +1 -0
- package/dist/assets/logs-panel-p5ey7yP9.js +1 -0
- package/dist/assets/loro_wasm_bg-Ci19hd4D.js +1 -0
- package/dist/assets/lua-Dp2B-Joo.js +1 -0
- package/dist/assets/maps-n3GaPJwv.js +1 -0
- package/dist/assets/markdown-renderer-DyxPYsSd.js +5 -0
- package/dist/assets/mathematica-BaSnKpgq.js +1 -0
- package/dist/assets/mbox-JZJfXD_G.js +1 -0
- package/dist/assets/mermaid-4DMBBIKO-DteMkkpS.js +1 -0
- package/dist/assets/mermaid-Bn_5WH3Y.js +11 -0
- package/dist/assets/mermaid-parser.core-CMygPhv_.js +4 -0
- package/dist/assets/mhchem-DSE1tfes.js +1 -0
- package/dist/assets/mindmap-definition-VGOIOE7T-mbWtJhR6.js +68 -0
- package/dist/assets/mirc-BZe50pjl.js +1 -0
- package/dist/assets/mllike-Bgkhf51-.js +1 -0
- package/dist/assets/modelica-BzrnHsaM.js +1 -0
- package/dist/assets/mscgen-C7fmiScS.js +1 -0
- package/dist/assets/mumps-DYao3Wbn.js +1 -0
- package/dist/assets/name-cell-input-CB-q8mGB.js +1 -0
- package/dist/assets/nsis-BV9URIq2.js +1 -0
- package/dist/assets/nsis-CDylpiaC.js +1 -0
- package/dist/assets/ntriples-CCTjcLNo.js +1 -0
- package/dist/assets/number-overlay-editor-CHaQ6o4_.js +9 -0
- package/dist/assets/octave-CalSSDIP.js +1 -0
- package/dist/assets/ordinal-RiUP-mHf.js +1 -0
- package/dist/assets/outline-panel-orc1hZ1w.js +1 -0
- package/dist/assets/oz-BwBvNNj4.js +1 -0
- package/dist/assets/packages-panel-Cf5MZz_M.js +1 -0
- package/dist/assets/packet-DYOGHKS2-BXa5LrXK.js +1 -0
- package/dist/assets/panels-Btt-Kg9z.js +1 -0
- package/dist/assets/pascal-VtYjd8tX.js +1 -0
- package/dist/assets/pathUtils-CJjndqMI.js +1 -0
- package/dist/assets/perl-CuiQHSod.js +1 -0
- package/dist/assets/pie-VRWISCQL-BpZiOBLl.js +1 -0
- package/dist/assets/pieDiagram-ADFJNKIX-ouQhtndl.js +30 -0
- package/dist/assets/pig-CIHZG4Z9.js +1 -0
- package/dist/assets/powershell-CI2Wos2z.js +1 -0
- package/dist/assets/precisionRound-Cl9k9ZmS.js +1 -0
- package/dist/assets/process-output-CfR2Cs_X.js +1 -0
- package/dist/assets/properties-CBOFbPgT.js +1 -0
- package/dist/assets/protobuf-CdcXLd43.js +1 -0
- package/dist/assets/pug-BXVTM5jr.js +1 -0
- package/dist/assets/pug-DJHP9Svh.js +1 -0
- package/dist/assets/puppet-B2nxuZc5.js +1 -0
- package/dist/assets/python-VpIaVd-6.js +1 -0
- package/dist/assets/q-CamvlcK6.js +1 -0
- package/dist/assets/quadrantDiagram-AYHSOK5B-NRkmQ1sP.js +7 -0
- package/dist/assets/r-CgsrYWFj.js +1 -0
- package/dist/assets/radar-ZZBFDIW7-CB-lQl_C.js +1 -0
- package/dist/assets/radio-group-B-1HJbUZ.js +1 -0
- package/dist/assets/react-vega-Bzl9LfSR.js +188 -0
- package/dist/assets/react-vega-CFabbyYN.js +1 -0
- package/dist/assets/readonly-python-code-CgXIooOB.js +1 -0
- package/dist/assets/renderShortcut-DpuO8OzB.js +1 -0
- package/dist/assets/request-registry-Bqm1niH2.js +1 -0
- package/dist/assets/requirementDiagram-UZGBJVZJ-C0LTiV9S.js +64 -0
- package/dist/assets/reveal-component-Dop5VNNi.js +91 -0
- package/dist/assets/rpm-DBux1aMG.js +1 -0
- package/dist/assets/ruby-BWHIAyVi.js +1 -0
- package/dist/assets/run-page-CclsHuGK.js +1 -0
- package/dist/assets/sankeyDiagram-TZEHDZUN-CR2AycvD.js +10 -0
- package/dist/assets/sas-DJpj3tMb.js +1 -0
- package/dist/assets/scheme-DF-J69qP.js +1 -0
- package/dist/assets/scratchpad-panel-0WSd_KKK.js +1 -0
- package/dist/assets/secrets-panel-Btgh4GYP.js +1 -0
- package/dist/assets/sequenceDiagram-WL72ISMW-CtF8-7iq.js +145 -0
- package/dist/assets/session-panel-DKVn-WKZ.js +1 -0
- package/dist/assets/share-DMwTZOTH.js +1 -0
- package/dist/assets/shell-m-RSMeeH.js +1 -0
- package/dist/assets/sieve-CtzQvaig.js +1 -0
- package/dist/assets/smalltalk-ClFvBgAI.js +1 -0
- package/dist/assets/snippets-panel-9-A9D6qT.js +1 -0
- package/dist/assets/sparql-icVR0QFW.js +1 -0
- package/dist/assets/spec-CPQR_o92.js +1 -0
- package/dist/assets/src-CyeQdfB6.js +1 -0
- package/dist/assets/state-BGDrw26V.js +1 -0
- package/dist/assets/state-D9MN6ifx.js +1 -0
- package/dist/assets/state-Dp5UtFP-.js +1 -0
- package/dist/assets/state-OpvKreSm.js +3 -0
- package/dist/assets/stateDiagram-FKZM4ZOC-R47bQmIs.js +1 -0
- package/dist/assets/stateDiagram-v2-4FDKWEC3-sSKQU37N.js +1 -0
- package/dist/assets/step-Ca7ZnceH.js +1 -0
- package/dist/assets/stex-Ccczot4V.js +1 -0
- package/dist/assets/stylus-TkCXytG7.js +1 -0
- package/dist/assets/swift-CBYBwE0m.js +1 -0
- package/dist/assets/swiper-component-DOawvfgn.js +1 -0
- package/dist/assets/switch-C4flmwHC.js +1 -0
- package/dist/assets/tcl-DvyBVTw2.js +1 -0
- package/dist/assets/terminal-BvSpzJLl.js +62 -0
- package/dist/assets/textarea-DQ04jSpC.js +1 -0
- package/dist/assets/textile-DA3WvzuI.js +1 -0
- package/dist/assets/time-Dfh8bLaf.js +1 -0
- package/dist/assets/timeline-definition-IT6M3QCI-qZnC-_po.js +61 -0
- package/dist/assets/toml-BJa3ckRR.js +1 -0
- package/dist/assets/tracing-BTx5CNF2.js +1 -0
- package/dist/assets/tracing-panel-BKbWANmz.js +2 -0
- package/dist/assets/tree-actions-OR_cmYSp.js +1 -0
- package/dist/assets/treemap-GDKQZRPO-C2f4_yBW.js +1 -0
- package/dist/assets/troff-CqZSdBAp.js +1 -0
- package/dist/assets/ttcn-BouEBguh.js +1 -0
- package/dist/assets/ttcn-cfg-C1whpGsE.js +1 -0
- package/dist/assets/turtle-DQ8l-awL.js +1 -0
- package/dist/assets/useBoolean-Ds7VXcF9.js +1 -0
- package/dist/assets/useCellActionButton-DB5AiJOa.js +1 -0
- package/dist/assets/useDateFormatter-ICIDGgHf.js +1 -0
- package/dist/assets/useDeleteCell-BMtor1KV.js +1 -0
- package/dist/assets/useDependencyPanelTab-cx4o-vc-.js +1 -0
- package/dist/assets/useInstallPackage-DUF4IRRI.js +1 -0
- package/dist/assets/useNotebookActions-C2hJSWHR.js +1 -0
- package/dist/assets/useNumberFormatter-ByUv-u9o.js +1 -0
- package/dist/assets/usePress-DQ_tAz5W.js +7 -0
- package/dist/assets/useRunCells-YtfQa1U2.js +1 -0
- package/dist/assets/useSplitCell-DNwaHxTE.js +1 -0
- package/dist/assets/utils-DCL4n9wx.js +61 -0
- package/dist/assets/vb-B7wOdn6U.js +1 -0
- package/dist/assets/vbscript-DvH455rJ.js +1 -0
- package/dist/assets/vega-component-BxmCJUfV.js +1 -0
- package/dist/assets/vega-loader.browser-C8wT63Va.js +6 -0
- package/dist/assets/velocity-B6C6O90i.js +1 -0
- package/dist/assets/verilog-JbcxpuFW.js +1 -0
- package/dist/assets/vhdl-SEFTp5Re.js +1 -0
- package/dist/assets/webidl-ChYZayPm.js +1 -0
- package/dist/assets/write-secret-modal-CfmbDpYE.js +1 -0
- package/dist/assets/xquery-DWwllqyg.js +1 -0
- package/dist/assets/xychartDiagram-PRI3JC2R-Ul_9KMcM.js +7 -0
- package/dist/assets/yacas-DQRdrpIp.js +1 -0
- package/dist/assets/z80-CGBxwDW7.js +1 -0
- package/dist/index.html +117 -116
- package/package.json +3 -3
- package/src/components/chat/chat-components.tsx +47 -0
- package/src/components/chat/chat-display.tsx +41 -7
- package/src/components/chat/chat-panel.tsx +37 -10
- package/src/components/chat/chat-utils.ts +42 -20
- package/src/components/chat/reasoning-accordion.tsx +14 -3
- package/src/components/chat/tool-call/shared.ts +13 -0
- package/src/components/chat/tool-call/tool-approval-card.tsx +62 -0
- package/src/components/chat/tool-call/tool-args.tsx +26 -0
- package/src/components/chat/tool-call/tool-call-view.tsx +99 -0
- package/src/components/chat/tool-call/tool-error-card.tsx +81 -0
- package/src/components/chat/tool-call/tool-history-row.tsx +153 -0
- package/src/components/chat/tool-call/tool-result.tsx +101 -0
- package/src/core/ai/tools/__tests__/registry.test.ts +10 -12
- package/src/core/ai/tools/registry.ts +9 -5
- package/dist/assets/CellStatus-CSvTla4f.js +0 -1
- package/dist/assets/ConnectedDataExplorerComponent-BEDxXsa0.js +0 -1
- package/dist/assets/DeferredRequestRegistry-CUzZ0y7K.js +0 -1
- package/dist/assets/ImperativeModal-CvOOClOZ.js +0 -1
- package/dist/assets/JsonOutput-JTrlf9N4.js +0 -49
- package/dist/assets/LazyAnyLanguageCodeMirror-CXbgDeVw.js +0 -2
- package/dist/assets/MarimoErrorOutput-hJIljqUO.js +0 -7
- package/dist/assets/RSPContexts-eRifaAal.js +0 -1
- package/dist/assets/RenderHTML-a81krr2r.js +0 -1
- package/dist/assets/RunButton-Cw4OpYze.js +0 -1
- package/dist/assets/add-cell-with-ai-DfJY2bip.js +0 -92
- package/dist/assets/add-connection-dialog-Dr86oIaM.js +0 -167
- package/dist/assets/agent-panel-BqqMglHo.js +0 -287
- package/dist/assets/ai-model-dropdown-BtI9PY1X.js +0 -5
- package/dist/assets/any-language-editor-Bu4hSl-d.js +0 -1
- package/dist/assets/apl-CaYjM5u2.js +0 -1
- package/dist/assets/app-config-button-BE6k0AGO.js +0 -1
- package/dist/assets/arc-D1owqr0z.js +0 -1
- package/dist/assets/architecture-7HQA4BMR-BzXB-NJy.js +0 -1
- package/dist/assets/architectureDiagram-VXUJARFQ-D6wy26r_.js +0 -36
- package/dist/assets/asciiarmor-D2cJUKTq.js +0 -1
- package/dist/assets/asn1-CZDBKivQ.js +0 -1
- package/dist/assets/blockDiagram-VD42YOAC-CGtjuPGT.js +0 -122
- package/dist/assets/brainfuck-D5O26WTe.js +0 -1
- package/dist/assets/c4Diagram-YG6GDRKO-BSjPyzdq.js +0 -10
- package/dist/assets/cache-panel-VFeeaT52.js +0 -1
- package/dist/assets/cell-editor-BnpmZwdT.js +0 -20
- package/dist/assets/cell-link-DieESi6t.js +0 -1
- package/dist/assets/cells-CQvqgbJL.js +0 -229
- package/dist/assets/channel-D2-MhlpJ.js +0 -1
- package/dist/assets/chat-display-DXa2yk_L.js +0 -1
- package/dist/assets/chat-panel-B_FKBw0c.js +0 -3
- package/dist/assets/chat-ui-DRuFbdVZ.js +0 -4
- package/dist/assets/chunk-4BX2VUAB-Co_nHYv2.js +0 -1
- package/dist/assets/chunk-55IACEB6-CSG9iNvo.js +0 -1
- package/dist/assets/chunk-5FQGJX7Z-BReOK4Lg.js +0 -113
- package/dist/assets/chunk-ABZYJK2D-CvNlx3OC.js +0 -80
- package/dist/assets/chunk-ATLVNIR6-EZIDpjkm.js +0 -1
- package/dist/assets/chunk-B4BG7PRW-B3yrge9N.js +0 -165
- package/dist/assets/chunk-CVBHYZKI-lxEaq00s.js +0 -1
- package/dist/assets/chunk-DI55MBZ5-NrI5veM7.js +0 -220
- package/dist/assets/chunk-EXTU4WIE-DcGAJuBg.js +0 -1
- package/dist/assets/chunk-FMBD7UC4-CD1D2uhs.js +0 -15
- package/dist/assets/chunk-HN2XXSSU-DNIvfs-V.js +0 -1
- package/dist/assets/chunk-JA3XYJ7Z-B-G51Lop.js +0 -70
- package/dist/assets/chunk-JZLCHNYA-B1QJXpkc.js +0 -54
- package/dist/assets/chunk-MI3HLSF2-SpVCtnNg.js +0 -32
- package/dist/assets/chunk-N4CR4FBY-DaT7rK9q.js +0 -2
- package/dist/assets/chunk-QN33PNHL-eWaiYkN_.js +0 -1
- package/dist/assets/chunk-QXUST7PY-yCShGuH_.js +0 -7
- package/dist/assets/chunk-QZHKN3VN-Bf2ysi2t.js +0 -1
- package/dist/assets/chunk-S3R3BYOJ-BuT2smkb.js +0 -2
- package/dist/assets/chunk-TZMSLE5B-tzDl0-3S.js +0 -1
- package/dist/assets/classDiagram-2ON5EDUG-CSdm65qE.js +0 -1
- package/dist/assets/classDiagram-v2-WZHVMYZB-B2-GAMOQ.js +0 -1
- package/dist/assets/clike-TwxwxEw_.js +0 -1
- package/dist/assets/clojure-B8dfjAV6.js +0 -1
- package/dist/assets/cmake-D3vlGJdL.js +0 -1
- package/dist/assets/cobol-S-4I_F1W.js +0 -1
- package/dist/assets/code-block-37QAKDTI-BZ77cXM8.js +0 -2
- package/dist/assets/coffeescript-DG-Oj54u.js +0 -1
- package/dist/assets/column-preview-B59x-AoX.js +0 -1
- package/dist/assets/command-OHlV5HHD.js +0 -1
- package/dist/assets/command-palette-BM-axWW4.js +0 -1
- package/dist/assets/common-DstWRPls.js +0 -1
- package/dist/assets/commonlisp-CWlOS49U.js +0 -1
- package/dist/assets/components-BKjSTOL0.js +0 -1
- package/dist/assets/components-BLTMoYca.js +0 -1
- package/dist/assets/config-CeTe6Mau.js +0 -1
- package/dist/assets/context-B3MsQb-b.js +0 -1
- package/dist/assets/copy-icon-8abB4Lgh.js +0 -1
- package/dist/assets/cose-bilkent-S5V4N54A-CEx_UMjg.js +0 -1
- package/dist/assets/crystal-CD-LQ3E-.js +0 -1
- package/dist/assets/css-sdrF9ahV.js +0 -1
- package/dist/assets/cypher-oiVTIRlU.js +0 -1
- package/dist/assets/d-KaoGirPa.js +0 -1
- package/dist/assets/dagre-6UL2VRFP-Ca6G800E.js +0 -4
- package/dist/assets/data-grid-overlay-editor-D-UNM6-P.js +0 -1
- package/dist/assets/datasource-BpHWX4lD.js +0 -3
- package/dist/assets/dates-orWokFRU.js +0 -1
- package/dist/assets/dependency-graph-panel-DVAWOnhj.js +0 -5
- package/dist/assets/diagram-PSM6KHXK-B6oP3YWR.js +0 -24
- package/dist/assets/diagram-QEK2KX5R-BjsoVcta.js +0 -43
- package/dist/assets/diagram-S2PKOQOG-CmzTe5KJ.js +0 -24
- package/dist/assets/diff-Df1QxxZl.js +0 -1
- package/dist/assets/dist-2Z1sSg1x.js +0 -1
- package/dist/assets/dist-7iwSqhl8.js +0 -1
- package/dist/assets/dist-A6v5-U3i.js +0 -1
- package/dist/assets/dist-B6zNcPeA.js +0 -1
- package/dist/assets/dist-BDZFwK9_.js +0 -1
- package/dist/assets/dist-BiTPETny.js +0 -1
- package/dist/assets/dist-BojrNCCU.js +0 -1
- package/dist/assets/dist-CHMkheIP.js +0 -1
- package/dist/assets/dist-CPepgudT.js +0 -1
- package/dist/assets/dist-CQG39nVX.js +0 -1
- package/dist/assets/dist-CSOCJn9h.js +0 -1
- package/dist/assets/dist-CmTrDl8w.js +0 -1
- package/dist/assets/dist-CwZoXpmG.js +0 -1
- package/dist/assets/dist-Cwcldbhl.js +0 -1
- package/dist/assets/dist-D1lU2Qzi.js +0 -1
- package/dist/assets/dist-D8QLIJ8u.js +0 -1
- package/dist/assets/dist-DBiqbYe-.js +0 -1
- package/dist/assets/dist-DLY3MFt_.js +0 -1
- package/dist/assets/dist-DOBJtV_h.js +0 -1
- package/dist/assets/dist-DQOq2Tf-.js +0 -6
- package/dist/assets/dist-DUpLnFKL.js +0 -1
- package/dist/assets/dist-DZaaRVnC.js +0 -1
- package/dist/assets/dist-DZq-MBWk.js +0 -7
- package/dist/assets/dist-DaXyrkOa.js +0 -1
- package/dist/assets/dist-GYoBJCzF.js +0 -1
- package/dist/assets/dist-Iv0YPPAU.js +0 -1
- package/dist/assets/dist-RsQv8CvG.js +0 -1
- package/dist/assets/dist-YUbAFc_i.js +0 -1
- package/dist/assets/dist-bOUvGRGG.js +0 -1
- package/dist/assets/dist-q4pwbvzW.js +0 -1
- package/dist/assets/dockerfile-CImncS5w.js +0 -1
- package/dist/assets/documentation-panel-DOwrxSmS.js +0 -1
- package/dist/assets/download-D37eAThw.js +0 -9
- package/dist/assets/dtd-Aj5m459l.js +0 -1
- package/dist/assets/dylan-CdSB1nh8.js +0 -1
- package/dist/assets/ecl-CvwsCfi6.js +0 -1
- package/dist/assets/edit-page-DZuEJBmv.js +0 -9
- package/dist/assets/eiffel-Bws25dAs.js +0 -1
- package/dist/assets/elm--WkcLZ1a.js +0 -1
- package/dist/assets/erDiagram-Q2GNP2WA-CK4Kc1gP.js +0 -60
- package/dist/assets/erlang-Ct30wW1o.js +0 -1
- package/dist/assets/error-banner-JKAA0BVv.js +0 -1
- package/dist/assets/error-panel-iXq4blF1.js +0 -1
- package/dist/assets/es-CaLpD1T5.js +0 -5
- package/dist/assets/esm-BmrwxxCo.js +0 -1
- package/dist/assets/esm-DN_A77ya.js +0 -1
- package/dist/assets/factor-B3fhZG6W.js +0 -1
- package/dist/assets/factor-DbSpQa-0.js +0 -1
- package/dist/assets/field-CD7Io4xo.js +0 -1
- package/dist/assets/file-explorer-panel-YmaDORzk.js +0 -26
- package/dist/assets/file-icons-CJjHFZoa.js +0 -1
- package/dist/assets/file-name-input-Dti85i-l.js +0 -3
- package/dist/assets/fileToBase64-Dpv4aII5.js +0 -1
- package/dist/assets/floating-outline-CRNblX2_.js +0 -1
- package/dist/assets/flowDiagram-NV44I4VS-hhUTWDGs.js +0 -162
- package/dist/assets/focus-BOQLCb0u.js +0 -1
- package/dist/assets/form-Zq0BEAeQ.js +0 -2
- package/dist/assets/formats-D4Sso5bX.js +0 -1
- package/dist/assets/formatting-BDxRugYY.js +0 -1
- package/dist/assets/forth-BP0pXyoR.js +0 -1
- package/dist/assets/fortran-DpX_2iww.js +0 -1
- package/dist/assets/gallery-page-DDCU0YEU.js +0 -1
- package/dist/assets/ganttDiagram-JELNMOA3-Dpb7hBaR.js +0 -267
- package/dist/assets/gas-CiUR6fHB.js +0 -1
- package/dist/assets/gherkin-C9v48C48.js +0 -1
- package/dist/assets/gitGraph-G5XIXVHT-Xz2NQxVt.js +0 -1
- package/dist/assets/gitGraphDiagram-V2S2FVAM-DHCl4EFT.js +0 -65
- package/dist/assets/glide-data-editor-BELaKoS9.js +0 -132
- package/dist/assets/globals-B64vMQ0L.js +0 -1
- package/dist/assets/groovy-psUnKwK-.js +0 -1
- package/dist/assets/haskell-DZHQAKUV.js +0 -1
- package/dist/assets/haxe-AOvPCF-w.js +0 -1
- package/dist/assets/home-page-CFZknmVJ.js +0 -4
- package/dist/assets/hooks-BhxMMR6X.js +0 -1
- package/dist/assets/html-to-image-D1De-o9R.js +0 -2
- package/dist/assets/idl-CSA8C1ck.js +0 -1
- package/dist/assets/index-BTq_h4uZ.js +0 -42
- package/dist/assets/index-DisN5cp_.css +0 -2
- package/dist/assets/info-VBDWY6EO-BpskktdI.js +0 -1
- package/dist/assets/infoDiagram-HS3SLOUP-C51uJjUn.js +0 -2
- package/dist/assets/input-DW6LU13i.js +0 -1
- package/dist/assets/javascript-XMYUq5-t.js +0 -1
- package/dist/assets/journeyDiagram-XKPGCS4Q-CD6bTQpr.js +0 -139
- package/dist/assets/julia-oON8zLDW.js +0 -1
- package/dist/assets/kanban-definition-3W4ZIXB7-D3rGxlSj.js +0 -89
- package/dist/assets/katex-DPCeZ37j.js +0 -1
- package/dist/assets/kiosk-mode-DGC0xDP_.js +0 -1
- package/dist/assets/layout-C74kqxlS.js +0 -9
- package/dist/assets/line-BA7eTS55.js +0 -1
- package/dist/assets/linear-Dmb_KwjK.js +0 -1
- package/dist/assets/links-Bi_gi3iZ.js +0 -1
- package/dist/assets/livescript--BxQO5G_.js +0 -1
- package/dist/assets/logs-panel-B8xVxjgp.js +0 -1
- package/dist/assets/loro_wasm_bg-CklgjGbG.js +0 -1
- package/dist/assets/lua-CUyaVUOv.js +0 -1
- package/dist/assets/maps-BS8Ra-JU.js +0 -1
- package/dist/assets/markdown-renderer-DDfK2Hm1.js +0 -5
- package/dist/assets/mathematica-ONd8izyd.js +0 -1
- package/dist/assets/mbox-kjl3g9N-.js +0 -1
- package/dist/assets/mermaid-4DMBBIKO-BeB_2G2B.js +0 -1
- package/dist/assets/mermaid-B6II7_1_.js +0 -11
- package/dist/assets/mermaid-parser.core-CzmbMcI0.js +0 -4
- package/dist/assets/mhchem-B4Y0i8Fp.js +0 -1
- package/dist/assets/mindmap-definition-VGOIOE7T-CmLdKdIH.js +0 -68
- package/dist/assets/mirc-BZ6TyuOO.js +0 -1
- package/dist/assets/mllike-Dxt2U6MQ.js +0 -1
- package/dist/assets/modelica-B9sdhdtj.js +0 -1
- package/dist/assets/mscgen-5e5Z5trn.js +0 -1
- package/dist/assets/mumps-BUfWDrRe.js +0 -1
- package/dist/assets/name-cell-input-BOJED96M.js +0 -1
- package/dist/assets/nsis-Dq7T79DJ.js +0 -1
- package/dist/assets/nsis-QuE155sg.js +0 -1
- package/dist/assets/ntriples-Dqzi7kwu.js +0 -1
- package/dist/assets/number-overlay-editor-C8YnP6Ac.js +0 -9
- package/dist/assets/octave-v4IgjFm5.js +0 -1
- package/dist/assets/ordinal-C9PZ4yw5.js +0 -1
- package/dist/assets/outline-panel-b7DUTxCg.js +0 -1
- package/dist/assets/oz-BtUsXhbc.js +0 -1
- package/dist/assets/packages-panel-CsjVrbrw.js +0 -1
- package/dist/assets/packet-DYOGHKS2-BqwwD9JS.js +0 -1
- package/dist/assets/panels-rOdN-lhQ.js +0 -1
- package/dist/assets/pascal-DV7k6vJ0.js +0 -1
- package/dist/assets/pathUtils-DOhgNpTR.js +0 -1
- package/dist/assets/perl-Bz7YaP_R.js +0 -1
- package/dist/assets/pie-VRWISCQL-BqNfdcWg.js +0 -1
- package/dist/assets/pieDiagram-ADFJNKIX-MH-0tvkn.js +0 -30
- package/dist/assets/pig-BQWmcOEQ.js +0 -1
- package/dist/assets/powershell-CmIFs71i.js +0 -1
- package/dist/assets/precisionRound-C3fmBb6j.js +0 -1
- package/dist/assets/process-output-lWggtdHR.js +0 -1
- package/dist/assets/properties-D7F2Eomu.js +0 -1
- package/dist/assets/protobuf-BMELuvny.js +0 -1
- package/dist/assets/pug-C2KbP_v3.js +0 -1
- package/dist/assets/pug-NA-6TsNe.js +0 -1
- package/dist/assets/puppet-C7MviiPj.js +0 -1
- package/dist/assets/python-BUl8uFIl.js +0 -1
- package/dist/assets/q-B5bIbNKB.js +0 -1
- package/dist/assets/quadrantDiagram-AYHSOK5B-BSw-Ouba.js +0 -7
- package/dist/assets/r-B0lU_x8o.js +0 -1
- package/dist/assets/radar-ZZBFDIW7-CYyEWqrT.js +0 -1
- package/dist/assets/radio-group-dnHLEMQN.js +0 -1
- package/dist/assets/react-vega-B30MPQ4_.js +0 -188
- package/dist/assets/react-vega-CXAF6OHL.js +0 -1
- package/dist/assets/readonly-python-code-B2nKkRm8.js +0 -1
- package/dist/assets/renderShortcut-D_8sQXCD.js +0 -1
- package/dist/assets/request-registry-5ELz5pd2.js +0 -1
- package/dist/assets/requirementDiagram-UZGBJVZJ-BtGFP-o9.js +0 -64
- package/dist/assets/reveal-component-CRXRtrKQ.js +0 -91
- package/dist/assets/rpm-BqQ3VFpY.js +0 -1
- package/dist/assets/ruby-AFh8QoqR.js +0 -1
- package/dist/assets/run-page-HwiYpW0n.js +0 -1
- package/dist/assets/sankeyDiagram-TZEHDZUN-yIdYlc6x.js +0 -10
- package/dist/assets/sas-CeRTI9sn.js +0 -1
- package/dist/assets/scheme-D0VcE_o1.js +0 -1
- package/dist/assets/scratchpad-panel-CQPeL9uQ.js +0 -1
- package/dist/assets/secrets-panel-DgXG36fa.js +0 -1
- package/dist/assets/sequenceDiagram-WL72ISMW-DQwYuLw4.js +0 -145
- package/dist/assets/session-panel-DDsg3OVJ.js +0 -1
- package/dist/assets/share-DdpVbvDN.js +0 -1
- package/dist/assets/shell-BBh9RTgS.js +0 -1
- package/dist/assets/sieve-BSX0MHaT.js +0 -1
- package/dist/assets/smalltalk-PvrpLgKW.js +0 -1
- package/dist/assets/snippets-panel-CL4Fe7G1.js +0 -1
- package/dist/assets/sparql-CXsmb8zq.js +0 -1
- package/dist/assets/spec-ByOlaO3e.js +0 -1
- package/dist/assets/src-Cf4NnJCp.js +0 -1
- package/dist/assets/state-BNbY1nER.js +0 -1
- package/dist/assets/state-BmNumiqM.js +0 -1
- package/dist/assets/state-Cy8CWhme.js +0 -1
- package/dist/assets/state-Qlb7fpYs.js +0 -3
- package/dist/assets/stateDiagram-FKZM4ZOC-CseMlyhB.js +0 -1
- package/dist/assets/stateDiagram-v2-4FDKWEC3-Bpp9WfFj.js +0 -1
- package/dist/assets/step-CVy5FnKg.js +0 -1
- package/dist/assets/stex-D6sqtveI.js +0 -1
- package/dist/assets/stylus-B60bUBy2.js +0 -1
- package/dist/assets/swift-BwnHGvoR.js +0 -1
- package/dist/assets/swiper-component-B1e0X8Wt.js +0 -1
- package/dist/assets/switch-BT9Ki10B.js +0 -1
- package/dist/assets/tcl-Bj8phnhq.js +0 -1
- package/dist/assets/terminal-G4Y2HQik.js +0 -62
- package/dist/assets/textarea-BIlunvBI.js +0 -1
- package/dist/assets/textile-WPCmEeGb.js +0 -1
- package/dist/assets/time-RwUekUwP.js +0 -1
- package/dist/assets/timeline-definition-IT6M3QCI-Cac1cr1H.js +0 -61
- package/dist/assets/toml-Cdfp0vaG.js +0 -1
- package/dist/assets/tracing-DxGrQWpp.js +0 -1
- package/dist/assets/tracing-panel-CkSlaa2T.js +0 -2
- package/dist/assets/tree-actions-Bzr5XDGx.js +0 -1
- package/dist/assets/treemap-GDKQZRPO-Bimjb3pR.js +0 -1
- package/dist/assets/troff-D4suUzlg.js +0 -1
- package/dist/assets/ttcn-CvD_6RGm.js +0 -1
- package/dist/assets/ttcn-cfg-BX59kgnW.js +0 -1
- package/dist/assets/turtle-midFOTTV.js +0 -1
- package/dist/assets/useBoolean-BYUGB06y.js +0 -1
- package/dist/assets/useCellActionButton-BUDcn6TS.js +0 -1
- package/dist/assets/useDateFormatter-CgFoBhVq.js +0 -1
- package/dist/assets/useDeleteCell-BImYFHqx.js +0 -1
- package/dist/assets/useDependencyPanelTab-DjkP1aZy.js +0 -1
- package/dist/assets/useInstallPackage-CScpUItd.js +0 -1
- package/dist/assets/useNotebookActions-CcSrDfx2.js +0 -1
- package/dist/assets/useNumberFormatter-DtiQW2H_.js +0 -1
- package/dist/assets/usePress-CfcdTqJM.js +0 -7
- package/dist/assets/useRunCells-CHuy8C5z.js +0 -1
- package/dist/assets/useSplitCell-BxJOt_Lh.js +0 -1
- package/dist/assets/utils-441jgnV8.js +0 -61
- package/dist/assets/vb-CSNH0UHQ.js +0 -1
- package/dist/assets/vbscript-DTgXfl5y.js +0 -1
- package/dist/assets/vega-component-2S2ePGs4.js +0 -1
- package/dist/assets/vega-loader.browser-BegSZk0G.js +0 -6
- package/dist/assets/velocity-CKgzALh9.js +0 -1
- package/dist/assets/verilog-NDqaS3bW.js +0 -1
- package/dist/assets/vhdl-BibQgFNM.js +0 -1
- package/dist/assets/webidl-BjqVurO-.js +0 -1
- package/dist/assets/write-secret-modal-BcEaI0rD.js +0 -1
- package/dist/assets/xquery-DQLXMdMd.js +0 -1
- package/dist/assets/xychartDiagram-PRI3JC2R-DwmHTbm4.js +0 -7
- package/dist/assets/yacas-DlkZlCdY.js +0 -1
- package/dist/assets/z80-YKwwCjvZ.js +0 -1
- package/src/components/chat/tool-call-accordion.tsx +0 -247
- /package/dist/assets/{Deferred-DMWKlZOV.js → Deferred-CP7vq682.js} +0 -0
- /package/dist/assets/{ImageComparisonComponent-MKB-qBjQ.js → ImageComparisonComponent-B5A-4CCj.js} +0 -0
- /package/dist/assets/{Inputs-NeZ9OMUu.js → Inputs-BG_nVZPt.js} +0 -0
- /package/dist/assets/{Plot-KSPp-GdN.js → Plot-CoEOwQq-.js} +0 -0
- /package/dist/assets/{SSRProvider-kyGHZp36.js → SSRProvider-CkFAAHXw.js} +0 -0
- /package/dist/assets/{alert-DvqcBMUv.js → alert-yTS3WpF4.js} +0 -0
- /package/dist/assets/{apl-DHQPYmx2.js → apl-4hxG7HNk.js} +0 -0
- /package/dist/assets/{array-Cf4PUXPA.js → array-D5VxClQs.js} +0 -0
- /package/dist/assets/{asciiarmor-fnQAw8T8.js → asciiarmor-Dv_174xi.js} +0 -0
- /package/dist/assets/{asn1-5lb7I37s.js → asn1-iiMvplI8.js} +0 -0
- /package/dist/assets/{asterisk-XerxOHb_.js → asterisk-CC3QRUnf.js} +0 -0
- /package/dist/assets/{azure-C2Di2emT.js → azure-B42ls0Ui.js} +0 -0
- /package/dist/assets/{badge-C7-HR1IO.js → badge-j3NGjqhR.js} +0 -0
- /package/dist/assets/{blob-Daju1h1M.js → blob-Bgnx1kuY.js} +0 -0
- /package/dist/assets/{brainfuck-D30bRgvC.js → brainfuck-C1zBqC_V.js} +0 -0
- /package/dist/assets/{bundle.esm-BIoPrMH_.js → bundle.esm-BSRebOhe.js} +0 -0
- /package/dist/assets/{card-ICvk7-qa.js → card--6HRj4T9.js} +0 -0
- /package/dist/assets/{chunk-4F5CHEZ2-CRKjiogH.js → chunk-4F5CHEZ2-DUo5vZ2r.js} +0 -0
- /package/dist/assets/{chunk-B2363JML-DvPUNzRx.js → chunk-B2363JML-BBEseLU0.js} +0 -0
- /package/dist/assets/{chunk-DR5Q36YT-DrxpR6Mz.js → chunk-DR5Q36YT-C0WIZcJM.js} +0 -0
- /package/dist/assets/{chunk-FRFDVMJY-DpWfc7R9.js → chunk-FRFDVMJY-CXpDqtzE.js} +0 -0
- /package/dist/assets/{chunk-PL6DKKU2-D7_8iK_E.js → chunk-PL6DKKU2-CdWr1t_8.js} +0 -0
- /package/dist/assets/{chunk-SJTYNZTY-DwmVeUIB.js → chunk-SJTYNZTY-SWJVmNtW.js} +0 -0
- /package/dist/assets/{chunk-TQ3KTPDO-BdfwTgi0.js → chunk-TQ3KTPDO-NHSLONf7.js} +0 -0
- /package/dist/assets/{chunk-UMXZTB3W-BZR4zVXt.js → chunk-UMXZTB3W-Ct179y25.js} +0 -0
- /package/dist/assets/{clear-button-DJUQ_tmP.js → clear-button-CIwzVocs.js} +0 -0
- /package/dist/assets/{click-outside-container-Npdlddni.js → click-outside-container-Bx6OOW4y.js} +0 -0
- /package/dist/assets/{clike-jZeb2kFn.js → clike-DgscWMor.js} +0 -0
- /package/dist/assets/{clojure-C0pkR8m2.js → clojure-BHbbYwIQ.js} +0 -0
- /package/dist/assets/{cmake-DlvFtk_M.js → cmake-DLR6lpqL.js} +0 -0
- /package/dist/assets/{cobol-C_yb45mr.js → cobol-BCxTxy3w.js} +0 -0
- /package/dist/assets/{coffeescript-DBK0AeMT.js → coffeescript-CpA2P5vm.js} +0 -0
- /package/dist/assets/{colors-DUsH-HF1.js → colors-CWfEs9Oi.js} +0 -0
- /package/dist/assets/{common-keywords-D2VmoaPb.js → common-keywords-0dB1lgek.js} +0 -0
- /package/dist/assets/{commonlisp-Bo8hOdn-.js → commonlisp-IOtLAQXJ.js} +0 -0
- /package/dist/assets/{copy-DqHGjTAN.js → copy-LK56fFow.js} +0 -0
- /package/dist/assets/{crystal-DYrQEMVi.js → crystal-D5D6_kGA.js} +0 -0
- /package/dist/assets/{css-zh47N2UC.js → css-DOb8-BDy.js} +0 -0
- /package/dist/assets/{cypher-BWPAHm69.js → cypher-DLF7i4IG.js} +0 -0
- /package/dist/assets/{cytoscape.esm-B7Zr-PlQ.js → cytoscape.esm-CuwfIk-V.js} +0 -0
- /package/dist/assets/{d-CMuL95tt.js → d-ByNdxjrk.js} +0 -0
- /package/dist/assets/{defaultLocale-YteS-k_t.js → defaultLocale-BLUna9fQ.js} +0 -0
- /package/dist/assets/{defaultLocale-B6z1Qyqt.js → defaultLocale-DzliDDTm.js} +0 -0
- /package/dist/assets/{dialog-DBzaWZPw.js → dialog-DzC_QCtT.js} +0 -0
- /package/dist/assets/{diff-oor_HZ51.js → diff-DgsriQcn.js} +0 -0
- /package/dist/assets/{dist-DsbE_iBm.js → dist-4ni0fia5.js} +0 -0
- /package/dist/assets/{dist-VjDnmGCZ.js → dist-B1U1kGCR.js} +0 -0
- /package/dist/assets/{dist-CBX4gLSR.js → dist-B6ehDvA-.js} +0 -0
- /package/dist/assets/{dist-CpSELpRR.js → dist-BA8xhrl2.js} +0 -0
- /package/dist/assets/{dist-B324sPca.js → dist-CPczQFlJ.js} +0 -0
- /package/dist/assets/{dist-E6ttb8td.js → dist-ChF5Ln9c.js} +0 -0
- /package/dist/assets/{dist-B847wb8t.js → dist-CjBmWBr2.js} +0 -0
- /package/dist/assets/{dist-Bxj5sO2I.js → dist-D8MaDlGc.js} +0 -0
- /package/dist/assets/{dist-D_yqofzt.js → dist-DviQ3W6h.js} +0 -0
- /package/dist/assets/{dist-1sgFrolC.js → dist-WcxjmQmQ.js} +0 -0
- /package/dist/assets/{dist-BjkXqMhR.js → dist-fhXsH3fb.js} +0 -0
- /package/dist/assets/{dist-Bu99ARwH.js → dist-oSdg9XA7.js} +0 -0
- /package/dist/assets/{dist-DdITFgCr.js → dist-qBfIhsAs.js} +0 -0
- /package/dist/assets/{dtd-Fe_Eikw6.js → dtd-BY21shY3.js} +0 -0
- /package/dist/assets/{duckdb-keywords-qEANwaB-.js → duckdb-keywords-DH8yhwVC.js} +0 -0
- /package/dist/assets/{dylan-DjUZAjRK.js → dylan-D_hF5J0y.js} +0 -0
- /package/dist/assets/{ebnf-BbpZiR1i.js → ebnf-D73UE5Hl.js} +0 -0
- /package/dist/assets/{ecl-qgyT1LqI.js → ecl-C1ORA0cg.js} +0 -0
- /package/dist/assets/{eiffel-Dgulx8rf.js → eiffel-1fe3g8c_.js} +0 -0
- /package/dist/assets/{elm-BvFY4GJb.js → elm-hjWurFzL.js} +0 -0
- /package/dist/assets/{emotion-is-prop-valid.esm-DD4AwVTU.js → emotion-is-prop-valid.esm-C59xfSYt.js} +0 -0
- /package/dist/assets/{empty-state-vCWg-_A9.js → empty-state-Cjt8SfMh.js} +0 -0
- /package/dist/assets/{en-US-D_il4jD7.js → en-US-Cb8rIK52.js} +0 -0
- /package/dist/assets/{erlang-Ba0XOLlj.js → erlang-Bp4wxA5O.js} +0 -0
- /package/dist/assets/{errors-CPlNr33a.js → errors-vr57w7Ul.js} +0 -0
- /package/dist/assets/{esm-C9WujutX.js → esm-DM72gy9Q.js} +0 -0
- /package/dist/assets/{events-BRAWQiYK.js → events-CPoJAfgx.js} +0 -0
- /package/dist/assets/{extends-B2LJnKU3.js → extends-BiFDv3jB.js} +0 -0
- /package/dist/assets/{eye-off-n1Li95bE.js → eye-off-BT-KOYV5.js} +0 -0
- /package/dist/assets/{fcl-CvYyfPhf.js → fcl-1tMcz7c0.js} +0 -0
- /package/dist/assets/{file-BrdxGLRX.js → file-HTLbeC2b.js} +0 -0
- /package/dist/assets/{file-headphone-BrQspHac.js → file-headphone-B3fuktN0.js} +0 -0
- /package/dist/assets/{forth-gbBFxz8f.js → forth-5O98d424.js} +0 -0
- /package/dist/assets/{fortran-CXijpPbh.js → fortran-BIuAFxQ8.js} +0 -0
- /package/dist/assets/{gas-CnHGSLCd.js → gas-CHHhShkY.js} +0 -0
- /package/dist/assets/{gherkin-DfEZpSxY.js → gherkin-DIjcYYBT.js} +0 -0
- /package/dist/assets/{github-BKS_2Qwn.js → github-raQvpeuZ.js} +0 -0
- /package/dist/assets/{groovy-9JiNA9gq.js → groovy-BYU3Z-yz.js} +0 -0
- /package/dist/assets/{haskell-CKr_RZFK.js → haskell-CjOVOYhk.js} +0 -0
- /package/dist/assets/{haxe-DsAAHfaR.js → haxe-Cb_U41Kf.js} +0 -0
- /package/dist/assets/{house-mGK3v0Mm.js → house-D2ldnAB9.js} +0 -0
- /package/dist/assets/{http-BJwmEMko.js → http-DTsrgwMt.js} +0 -0
- /package/dist/assets/{icons-D9TuFTJG.js → icons-D7rawFWk.js} +0 -0
- /package/dist/assets/{idl-Djz72z1a.js → idl-XfUB5VqU.js} +0 -0
- /package/dist/assets/{image-DQHXdEQn.js → image-BIibSXT6.js} +0 -0
- /package/dist/assets/{init-DRQmrFIb.js → init-BYCsRZEq.js} +0 -0
- /package/dist/assets/{isValid-C8T5uJYI.js → isValid-CklTTytn.js} +0 -0
- /package/dist/assets/{javascript-CsBr0q2-.js → javascript-BZ9iuJe9.js} +0 -0
- /package/dist/assets/{julia-BCYfl68O.js → julia-ZgWUbR6s.js} +0 -0
- /package/dist/assets/{katex-BywUFgaS.js → katex-BNYG1in3.js} +0 -0
- /package/dist/assets/{kbd-B3Breaz2.js → kbd-CTUAEnEx.js} +0 -0
- /package/dist/assets/{link-CfEtM3Rl.js → link-CoJxTwWE.js} +0 -0
- /package/dist/assets/{links-Dpap8NI2.js → links-D1JoyKTt.js} +0 -0
- /package/dist/assets/{livescript-BEw7FNJP.js → livescript-PvHqMAnA.js} +0 -0
- /package/dist/assets/{loro_wasm_bg-BArxhAm3.js → loro_wasm_bg-Z5Iceaci.js} +0 -0
- /package/dist/assets/{lua-DqxHXOsz.js → lua-BAkgehCh.js} +0 -0
- /package/dist/assets/{marimo-icons-Dk6YhPWV.js → marimo-icons-CcDNGIRM.js} +0 -0
- /package/dist/assets/{math-BJjKGmt3.js → math-D-qpUWKO.js} +0 -0
- /package/dist/assets/{mathematica-Do-octY0.js → mathematica-sYPoESCW.js} +0 -0
- /package/dist/assets/{mbox-VgrgGytk.js → mbox-BFVpgB4i.js} +0 -0
- /package/dist/assets/{message-circle-CWm2KnSx.js → message-circle-1YLdnr8A.js} +0 -0
- /package/dist/assets/{micromark-factory-space-DzSMahmM.js → micromark-factory-space-C-RG533a.js} +0 -0
- /package/dist/assets/{mirc-DkD5mNIp.js → mirc-DAwdMlc7.js} +0 -0
- /package/dist/assets/{mllike-C8Ah4kKN.js → mllike-CNENYbun.js} +0 -0
- /package/dist/assets/{modelica-2q7w6nLE.js → modelica-FtpuFG3d.js} +0 -0
- /package/dist/assets/{mscgen-BRqvO7u4.js → mscgen-BZpZ1eAc.js} +0 -0
- /package/dist/assets/{multi-icon-BvuxcR2m.js → multi-icon-aZG-rdCp.js} +0 -0
- /package/dist/assets/{mumps-CjtiTT1a.js → mumps-BM8g2rR9.js} +0 -0
- /package/dist/assets/{nginx-JMUOT8EG.js → nginx-CREUN6EW.js} +0 -0
- /package/dist/assets/{node-sql-parser-TdBo37ty.js → node-sql-parser-fWuidk6P.js} +0 -0
- /package/dist/assets/{ntriples-4lauqsM6.js → ntriples-Dpum4Lhl.js} +0 -0
- /package/dist/assets/{numbers-etj36G80.js → numbers-C3BAdHZE.js} +0 -0
- /package/dist/assets/{objectWithoutPropertiesLoose-DaPAPabU.js → objectWithoutPropertiesLoose-DfWeGRFv.js} +0 -0
- /package/dist/assets/{octave-A2kFK0nR.js → octave-C-8skAyy.js} +0 -0
- /package/dist/assets/{oz-CvXDMSbl.js → oz-C9dNiWs3.js} +0 -0
- /package/dist/assets/{panel-context-D-qi_oxP.js → panel-context-C3ham7ZV.js} +0 -0
- /package/dist/assets/{pascal-6Jinj26u.js → pascal-OtDoyUlT.js} +0 -0
- /package/dist/assets/{path-D7fidI_g.js → path-_EHCEa2c.js} +0 -0
- /package/dist/assets/{paths-BXWH6vv4.js → paths-D5zczhUD.js} +0 -0
- /package/dist/assets/{perl-CXauYQdN.js → perl-Bq6zPLry.js} +0 -0
- /package/dist/assets/{pig-Dl0QLQI6.js → pig-CzHJ3vXa.js} +0 -0
- /package/dist/assets/{play-C7DcCsoO.js → play-5vQl-hy9.js} +0 -0
- /package/dist/assets/{plus-BgB18UzY.js → plus-CxkHs8QM.js} +0 -0
- /package/dist/assets/{powershell-6bdy_rHW.js → powershell-CPgLwhmC.js} +0 -0
- /package/dist/assets/{preload-helper-DItdS47A.js → preload-helper-BPPi7vOr.js} +0 -0
- /package/dist/assets/{prop-types-BiQYf0aU.js → prop-types-DaaA-ptl.js} +0 -0
- /package/dist/assets/{properties-p1rx3aF7.js → properties-Kfp4iofx.js} +0 -0
- /package/dist/assets/{protobuf-BZ6p9Xh_.js → protobuf-BtodseUb.js} +0 -0
- /package/dist/assets/{puppet-CjdIRV7D.js → puppet-DqMZ-3jb.js} +0 -0
- /package/dist/assets/{purify.es-DBmVz-Wl.js → purify.es-B9KxLTTS.js} +0 -0
- /package/dist/assets/{python-uzyJYIWU.js → python-Du1sm3Dz.js} +0 -0
- /package/dist/assets/{q-CfD3i9uI.js → q-mTJjDbkl.js} +0 -0
- /package/dist/assets/{r-JyJdYHQB.js → r-CiWGt8bY.js} +0 -0
- /package/dist/assets/{range-7fnH_zLA.js → range-gMGfxVwZ.js} +0 -0
- /package/dist/assets/{react-icons.esm-D9xfKaPZ.js → react-icons.esm-BNzu6e7h.js} +0 -0
- /package/dist/assets/{react-resizable-panels.browser.esm-BUNcfKXO.js → react-resizable-panels.browser.esm-BdtIs0E-.js} +0 -0
- /package/dist/assets/{refresh-ccw-C-n2VFP5.js → refresh-ccw-DLc784Sj.js} +0 -0
- /package/dist/assets/{refresh-cw-DHwG4Mac.js → refresh-cw-a_9k9BK7.js} +0 -0
- /package/dist/assets/{requests-QKoDeQkn.js → requests-Bm3bohzL.js} +0 -0
- /package/dist/assets/{rotate-ccw-CNsAb2VZ.js → rotate-ccw-DoQtGgvU.js} +0 -0
- /package/dist/assets/{rpm-DuGPfDyX.js → rpm-DoWl8uQ-.js} +0 -0
- /package/dist/assets/{ruby-CA1TzLxZ.js → ruby-EPWn7HjP.js} +0 -0
- /package/dist/assets/{runs-D87fZMlB.js → runs-_nm7RTvJ.js} +0 -0
- /package/dist/assets/{sas-BJPWZC7M.js → sas-C49N66K9.js} +0 -0
- /package/dist/assets/{save-Clg5dMoP.js → save-DZ5aail6.js} +0 -0
- /package/dist/assets/{scheme-IRagAY3r.js → scheme-BKBMeaMf.js} +0 -0
- /package/dist/assets/{semaphore-QJCD9q3h.js → semaphore-FlZezxaf.js} +0 -0
- /package/dist/assets/{session-gB-8RZAq.js → session-0B5NBztP.js} +0 -0
- /package/dist/assets/{settings-DfFe0dWD.js → settings-SnYErNWQ.js} +0 -0
- /package/dist/assets/{shell-BVpF3W_J.js → shell-B3Qif7WE.js} +0 -0
- /package/dist/assets/{sieve-BSfPMeZl.js → sieve-D2oOzUQe.js} +0 -0
- /package/dist/assets/{simple-mode-BmS_AmGQ.js → simple-mode-awvuWmjh.js} +0 -0
- /package/dist/assets/{smalltalk-CkHVehky.js → smalltalk-D2JNyQE_.js} +0 -0
- /package/dist/assets/{solr-BHjX6hxO.js → solr-DD6Hdy4w.js} +0 -0
- /package/dist/assets/{sparkles-CZ5WmLPA.js → sparkles-CC9Bko6a.js} +0 -0
- /package/dist/assets/{sparql-CmKKjr-f.js → sparql-B_E2GW41.js} +0 -0
- /package/dist/assets/{spinner-Bhir8k53.js → spinner-UuZAUjoP.js} +0 -0
- /package/dist/assets/{spreadsheet-ColK3G9J.js → spreadsheet-DQc2JQ5m.js} +0 -0
- /package/dist/assets/{sql-BfkgiLSh.js → sql-Cj5Wcvsd.js} +0 -0
- /package/dist/assets/{square-DMaNzePN.js → square-B5xWCt0a.js} +0 -0
- /package/dist/assets/{square-function-D1dlJvD8.js → square-function-uY_yJr5g.js} +0 -0
- /package/dist/assets/{src-HwYBNPfa.js → src-faGJHwXX.js} +0 -0
- /package/dist/assets/{stex-CtmkcLz7.js → stex-BGrE-q7N.js} +0 -0
- /package/dist/assets/{stylus-D28PuRsm.js → stylus-R6o8NrsG.js} +0 -0
- /package/dist/assets/{swift-D-jfpPuv.js → swift-Dbh-hbmH.js} +0 -0
- /package/dist/assets/{table-DPyRV1LT.js → table-Bgc-inJs.js} +0 -0
- /package/dist/assets/{tcl-BrQdCDVA.js → tcl-B7hCCUdg.js} +0 -0
- /package/dist/assets/{textile-DXBc8HMq.js → textile-3T2abjma.js} +0 -0
- /package/dist/assets/{tiddlywiki-DzM1IR9M.js → tiddlywiki-Co__osNU.js} +0 -0
- /package/dist/assets/{tiki-DI4TiGi6.js → tiki-CfCZczlo.js} +0 -0
- /package/dist/assets/{timer-ffBO1paY.js → timer-BgiWPhV9.js} +0 -0
- /package/dist/assets/{toml-ClSouHPE.js → toml-BfSTXCbK.js} +0 -0
- /package/dist/assets/{trash-2-CKlZA04n.js → trash-2-rVklqqFF.js} +0 -0
- /package/dist/assets/{trash-CdBDfa8x.js → trash-DqeDe-Ua.js} +0 -0
- /package/dist/assets/{treemap-CZF0Enj1.js → treemap-F5PoC_M0.js} +0 -0
- /package/dist/assets/{triangle-alert-B8l157gP.js → triangle-alert-D2p96PEF.js} +0 -0
- /package/dist/assets/{troff-BGDyQn9x.js → troff-TmwTwfFH.js} +0 -0
- /package/dist/assets/{ttcn-De1OdISX.js → ttcn-BptQ-efU.js} +0 -0
- /package/dist/assets/{ttcn-cfg-CQMSrhCz.js → ttcn-cfg-BJSeQh2j.js} +0 -0
- /package/dist/assets/{turtle-DNhfxysg.js → turtle-NWQZPdQh.js} +0 -0
- /package/dist/assets/{types-W8WWuumF.js → types-BYwxXaSY.js} +0 -0
- /package/dist/assets/{types-Bhw3Hco_.js → types-iYXk7c05.js} +0 -0
- /package/dist/assets/{use-toast-T0_cQDma.js → use-toast-IPAtJGea.js} +0 -0
- /package/dist/assets/{useAsyncData-BFC6lWG9.js → useAsyncData-Bczwgx1s.js} +0 -0
- /package/dist/assets/{useDebounce-CLMpJfhX.js → useDebounce-7xZwVnnu.js} +0 -0
- /package/dist/assets/{useDeepCompareMemoize-D0WTlCXt.js → useDeepCompareMemoize-xE3f8Uuu.js} +0 -0
- /package/dist/assets/{useHotkey-3DXVR1KZ.js → useHotkey-CKk0vHze.js} +0 -0
- /package/dist/assets/{useIframeCapabilities-BfimgBBe.js → useIframeCapabilities-CcI1zSdn.js} +0 -0
- /package/dist/assets/{useInterval-CAy_JAzY.js → useInterval-Bc-mr0KL.js} +0 -0
- /package/dist/assets/{useTheme-DyLIIrGi.js → useTheme-TeWD29Uz.js} +0 -0
- /package/dist/assets/{uuid-DercMavo.js → uuid-e9lSomwA.js} +0 -0
- /package/dist/assets/{vb-BX7-Md9G.js → vb-5MAVubtN.js} +0 -0
- /package/dist/assets/{vbscript-DNMzJOTU.js → vbscript-C3wI-prb.js} +0 -0
- /package/dist/assets/{velocity-viirwPm7.js → velocity-BZ0SsVqc.js} +0 -0
- /package/dist/assets/{verilog-CZguTLBV.js → verilog-sCLfsuOk.js} +0 -0
- /package/dist/assets/{vhdl-CAEhCBOl.js → vhdl-D8-XDERr.js} +0 -0
- /package/dist/assets/{web-vitals-CBsQ2DM_.js → web-vitals-CJ8ovao_.js} +0 -0
- /package/dist/assets/{webidl-BNJg_7gX.js → webidl-C2DK9LNJ.js} +0 -0
- /package/dist/assets/{workflow-ClChd5xI.js → workflow-Bm8qF7yj.js} +0 -0
- /package/dist/assets/{ws-BV7dcs53.js → ws-YSapF1PN.js} +0 -0
- /package/dist/assets/{xquery-CGV_r322.js → xquery-Db3HYO3C.js} +0 -0
- /package/dist/assets/{yacas-uRzw7z7m.js → yacas-DhfMSinV.js} +0 -0
- /package/dist/assets/{youtube-CbdpN8oL.js → youtube-3lRHw8NU.js} +0 -0
- /package/dist/assets/{z80-CBK8t-9T.js → z80-CH-vqbta.js} +0 -0
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
3
|
import type { components } from "@marimo-team/marimo-api";
|
|
4
|
-
import
|
|
5
|
-
ChatAddToolOutputFunction,
|
|
6
|
-
FileUIPart,
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
import {
|
|
5
|
+
type ChatAddToolOutputFunction,
|
|
6
|
+
type FileUIPart,
|
|
7
|
+
isToolUIPart,
|
|
8
|
+
type ToolUIPart,
|
|
9
|
+
type UIMessage,
|
|
9
10
|
} from "ai";
|
|
10
11
|
import { useState } from "react";
|
|
11
12
|
import useEvent from "react-use-event-hook";
|
|
@@ -16,6 +17,7 @@ import type {
|
|
|
16
17
|
InvokeAiToolRequest,
|
|
17
18
|
InvokeAiToolResponse,
|
|
18
19
|
} from "@/core/network/types";
|
|
20
|
+
import { logNever } from "@/utils/assertNever";
|
|
19
21
|
import { blobToString } from "@/utils/fileToBase64";
|
|
20
22
|
import { Logger } from "@/utils/Logger";
|
|
21
23
|
import { getAICompletionBodyWithAttachments } from "../editor/ai/completion-utils";
|
|
@@ -134,11 +136,11 @@ export async function handleToolCall({
|
|
|
134
136
|
try {
|
|
135
137
|
if (FRONTEND_TOOL_REGISTRY.has(toolCall.toolName)) {
|
|
136
138
|
// Invoke the frontend tool
|
|
137
|
-
const response = await FRONTEND_TOOL_REGISTRY.invoke(
|
|
138
|
-
toolCall.toolName,
|
|
139
|
-
toolCall.input,
|
|
140
|
-
toolContext,
|
|
141
|
-
);
|
|
139
|
+
const response = await FRONTEND_TOOL_REGISTRY.invoke({
|
|
140
|
+
toolName: toolCall.toolName,
|
|
141
|
+
rawArgs: toolCall.input,
|
|
142
|
+
toolContext: toolContext,
|
|
143
|
+
});
|
|
142
144
|
addToolOutput({
|
|
143
145
|
tool: toolCall.toolName,
|
|
144
146
|
toolCallId: toolCall.toolCallId,
|
|
@@ -166,9 +168,33 @@ export async function handleToolCall({
|
|
|
166
168
|
}
|
|
167
169
|
}
|
|
168
170
|
|
|
171
|
+
/**
|
|
172
|
+
* Returns true if a tool call is "ready to be sent back to the server" — i.e.
|
|
173
|
+
* either it has reached a terminal output state, or the user has just supplied
|
|
174
|
+
* an approval response that the server hasn't seen yet.
|
|
175
|
+
*/
|
|
176
|
+
function isToolCallReadyToSend(state: ToolUIPart["state"]): boolean {
|
|
177
|
+
switch (state) {
|
|
178
|
+
case "output-available":
|
|
179
|
+
case "output-error":
|
|
180
|
+
case "output-denied":
|
|
181
|
+
case "approval-responded":
|
|
182
|
+
return true;
|
|
183
|
+
case "input-streaming":
|
|
184
|
+
case "input-available":
|
|
185
|
+
case "approval-requested":
|
|
186
|
+
return false;
|
|
187
|
+
default:
|
|
188
|
+
logNever(state);
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
169
193
|
/**
|
|
170
194
|
* Checks if we should send a message automatically based on the messages.
|
|
171
|
-
* We
|
|
195
|
+
* We auto-send when every tool call on the last assistant message has either
|
|
196
|
+
* finished (output-available/error/denied) or has just received a user
|
|
197
|
+
* approval response, and the assistant hasn't replied yet.
|
|
172
198
|
*/
|
|
173
199
|
export function hasPendingToolCalls(messages: UIMessage[]): boolean {
|
|
174
200
|
if (messages.length === 0) {
|
|
@@ -188,17 +214,14 @@ export function hasPendingToolCalls(messages: UIMessage[]): boolean {
|
|
|
188
214
|
return false;
|
|
189
215
|
}
|
|
190
216
|
|
|
191
|
-
const toolParts = parts.filter(
|
|
192
|
-
part.type.startsWith("tool-"),
|
|
193
|
-
) as ToolUIPart[];
|
|
217
|
+
const toolParts = parts.filter(isToolUIPart);
|
|
194
218
|
|
|
195
|
-
// Guard against no tool parts
|
|
196
219
|
if (toolParts.length === 0) {
|
|
197
220
|
return false;
|
|
198
221
|
}
|
|
199
222
|
|
|
200
|
-
const
|
|
201
|
-
(part
|
|
223
|
+
const allToolCallsReady = toolParts.every((part) =>
|
|
224
|
+
isToolCallReadyToSend(part.state),
|
|
202
225
|
);
|
|
203
226
|
|
|
204
227
|
// Check if the last part has any text content
|
|
@@ -206,10 +229,9 @@ export function hasPendingToolCalls(messages: UIMessage[]): boolean {
|
|
|
206
229
|
const hasTextContent =
|
|
207
230
|
lastPart.type === "text" && lastPart.text?.trim().length > 0;
|
|
208
231
|
|
|
209
|
-
Logger.
|
|
232
|
+
Logger.debug("All tool calls ready to send: %s", allToolCallsReady);
|
|
210
233
|
|
|
211
|
-
|
|
212
|
-
return allToolCallsCompleted && !hasTextContent;
|
|
234
|
+
return allToolCallsReady && !hasTextContent;
|
|
213
235
|
}
|
|
214
236
|
|
|
215
237
|
export function useFileState() {
|
|
@@ -21,20 +21,31 @@ export const ReasoningAccordion: React.FC<ReasoningAccordionProps> = ({
|
|
|
21
21
|
index = 0,
|
|
22
22
|
isStreaming = false,
|
|
23
23
|
}) => {
|
|
24
|
+
const [openItem, setOpenItem] = React.useState<string>("");
|
|
25
|
+
|
|
26
|
+
// Some reasoning models emit a reasoning part with no surfaced content
|
|
27
|
+
// (e.g. OpenAI's o-series, which hides chain-of-thought but still marks
|
|
28
|
+
// its boundaries on the wire). pydantic-ai's Vercel adapter forwards the
|
|
29
|
+
// empty start/end pair, producing a 0-char ReasoningUIPart. Skip it.
|
|
30
|
+
if (!reasoning && !isStreaming) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
|
|
24
34
|
return (
|
|
25
35
|
<Accordion
|
|
26
36
|
key={index}
|
|
27
37
|
type="single"
|
|
28
38
|
collapsible={true}
|
|
29
39
|
className="w-full mb-2"
|
|
30
|
-
value={isStreaming ? "reasoning" :
|
|
40
|
+
value={isStreaming ? "reasoning" : openItem}
|
|
41
|
+
onValueChange={setOpenItem}
|
|
31
42
|
>
|
|
32
43
|
<AccordionItem value="reasoning" className="border-0">
|
|
33
44
|
<AccordionTrigger className="text-xs text-muted-foreground hover:bg-muted/50 px-2 py-1 h-auto rounded-sm [&[data-state=open]>svg]:rotate-180">
|
|
34
45
|
<span className="flex items-center gap-2">
|
|
35
46
|
<BotMessageSquareIcon className="h-3 w-3" />
|
|
36
|
-
{isStreaming ? "Thinking" : "View reasoning"}
|
|
37
|
-
chars)
|
|
47
|
+
{isStreaming ? "Thinking" : "View reasoning"}
|
|
48
|
+
{reasoning.length > 0 && ` (${reasoning.length} chars)`}
|
|
38
49
|
</span>
|
|
39
50
|
</AccordionTrigger>
|
|
40
51
|
<AccordionContent className="pb-2 px-2">
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
|
|
3
|
+
import type { ToolUIPart } from "ai";
|
|
4
|
+
|
|
5
|
+
export type ToolState = ToolUIPart["state"];
|
|
6
|
+
|
|
7
|
+
// The AI SDK declares `approval` inline on every variant of `UIToolInvocation`
|
|
8
|
+
// rather than exporting a named type, so we derive ours from there.
|
|
9
|
+
export type ToolApproval = NonNullable<ToolUIPart["approval"]>;
|
|
10
|
+
|
|
11
|
+
export function formatToolName(toolName: string): string {
|
|
12
|
+
return toolName.replace("tool-", "");
|
|
13
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
|
|
3
|
+
import type { ChatAddToolApproveResponseFunction } from "ai";
|
|
4
|
+
import { ShieldQuestionIcon } from "lucide-react";
|
|
5
|
+
import React from "react";
|
|
6
|
+
import { Button } from "@/components/ui/button";
|
|
7
|
+
import { cn } from "@/utils/cn";
|
|
8
|
+
import { formatToolName, type ToolApproval } from "./shared";
|
|
9
|
+
import { ToolArgsRenderer } from "./tool-args";
|
|
10
|
+
|
|
11
|
+
interface ToolApprovalCardProps {
|
|
12
|
+
toolName: string;
|
|
13
|
+
input: unknown;
|
|
14
|
+
approval: ToolApproval;
|
|
15
|
+
onApprove: ChatAddToolApproveResponseFunction;
|
|
16
|
+
className?: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export const ToolApprovalCard: React.FC<ToolApprovalCardProps> = ({
|
|
20
|
+
toolName,
|
|
21
|
+
input,
|
|
22
|
+
approval,
|
|
23
|
+
onApprove,
|
|
24
|
+
className,
|
|
25
|
+
}) => {
|
|
26
|
+
return (
|
|
27
|
+
<div
|
|
28
|
+
className={cn(
|
|
29
|
+
"rounded-md border border-(--amber-6) bg-(--amber-2) p-3 space-y-3",
|
|
30
|
+
className,
|
|
31
|
+
)}
|
|
32
|
+
role="alertdialog"
|
|
33
|
+
aria-label={`Approval required for ${formatToolName(toolName)}`}
|
|
34
|
+
>
|
|
35
|
+
<div className="flex items-start gap-2">
|
|
36
|
+
<ShieldQuestionIcon className="h-4 w-4 text-(--amber-11) mt-0.5 shrink-0" />
|
|
37
|
+
<div className="text-xs text-(--amber-11) leading-relaxed">
|
|
38
|
+
<span className="font-semibold">Approval required:</span>{" "}
|
|
39
|
+
<code className="font-mono">{formatToolName(toolName)}</code>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<ToolArgsRenderer input={input} />
|
|
44
|
+
|
|
45
|
+
<div className="flex items-center justify-end gap-2">
|
|
46
|
+
<Button
|
|
47
|
+
size="xs"
|
|
48
|
+
variant="outline"
|
|
49
|
+
onClick={() => onApprove({ id: approval.id, approved: false })}
|
|
50
|
+
>
|
|
51
|
+
Deny
|
|
52
|
+
</Button>
|
|
53
|
+
<Button
|
|
54
|
+
size="xs"
|
|
55
|
+
onClick={() => onApprove({ id: approval.id, approved: true })}
|
|
56
|
+
>
|
|
57
|
+
Approve
|
|
58
|
+
</Button>
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
);
|
|
62
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
|
|
3
|
+
import React from "react";
|
|
4
|
+
|
|
5
|
+
interface ToolArgsRendererProps {
|
|
6
|
+
input: unknown;
|
|
7
|
+
label?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const ToolArgsRenderer: React.FC<ToolArgsRendererProps> = ({
|
|
11
|
+
input,
|
|
12
|
+
label = "Tool Request",
|
|
13
|
+
}) => {
|
|
14
|
+
if (input == null) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<div className="space-y-2">
|
|
20
|
+
<h3 className="text-xs font-semibold text-muted-foreground">{label}</h3>
|
|
21
|
+
<pre className="bg-(--slate-2) p-2 text-muted-foreground border border-(--slate-4) rounded text-xs overflow-auto scrollbar-thin max-h-64">
|
|
22
|
+
{JSON.stringify(input, null, 2)}
|
|
23
|
+
</pre>
|
|
24
|
+
</div>
|
|
25
|
+
);
|
|
26
|
+
};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
|
|
3
|
+
import type { ChatAddToolApproveResponseFunction } from "ai";
|
|
4
|
+
import React from "react";
|
|
5
|
+
import { logNever } from "@/utils/assertNever";
|
|
6
|
+
import type { ToolApproval, ToolState } from "./shared";
|
|
7
|
+
import { ToolApprovalCard } from "./tool-approval-card";
|
|
8
|
+
import { ToolErrorCard } from "./tool-error-card";
|
|
9
|
+
import { ToolHistoryRow } from "./tool-history-row";
|
|
10
|
+
|
|
11
|
+
interface ToolCallViewProps {
|
|
12
|
+
toolName: string;
|
|
13
|
+
state: ToolState;
|
|
14
|
+
result?: unknown;
|
|
15
|
+
errorText?: string;
|
|
16
|
+
input?: unknown;
|
|
17
|
+
approval?: ToolApproval;
|
|
18
|
+
onApprove?: ChatAddToolApproveResponseFunction;
|
|
19
|
+
index?: number;
|
|
20
|
+
className?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Whether this tool call belongs to the latest message in the conversation.
|
|
23
|
+
* Used by error cards to decide whether to stay expanded (live) or collapse
|
|
24
|
+
* (the user has moved on).
|
|
25
|
+
*/
|
|
26
|
+
isLive?: boolean;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export const ToolCallView: React.FC<ToolCallViewProps> = ({
|
|
30
|
+
toolName,
|
|
31
|
+
state,
|
|
32
|
+
result,
|
|
33
|
+
errorText,
|
|
34
|
+
input,
|
|
35
|
+
approval,
|
|
36
|
+
onApprove,
|
|
37
|
+
index,
|
|
38
|
+
className,
|
|
39
|
+
isLive = true,
|
|
40
|
+
}) => {
|
|
41
|
+
switch (state) {
|
|
42
|
+
case "approval-requested":
|
|
43
|
+
// Approval is a live, blocking action — render it as a prominent card
|
|
44
|
+
// Fall back to history row if the wiring isn't
|
|
45
|
+
// available (shouldn't happen in practice).
|
|
46
|
+
if (approval != null && onApprove != null) {
|
|
47
|
+
return (
|
|
48
|
+
<ToolApprovalCard
|
|
49
|
+
toolName={toolName}
|
|
50
|
+
input={input}
|
|
51
|
+
approval={approval}
|
|
52
|
+
onApprove={onApprove}
|
|
53
|
+
className={className}
|
|
54
|
+
/>
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
return (
|
|
58
|
+
<ToolHistoryRow
|
|
59
|
+
toolName={toolName}
|
|
60
|
+
state="input-available"
|
|
61
|
+
input={input}
|
|
62
|
+
index={index}
|
|
63
|
+
className={className}
|
|
64
|
+
/>
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
case "output-error":
|
|
68
|
+
return (
|
|
69
|
+
<ToolErrorCard
|
|
70
|
+
toolName={toolName}
|
|
71
|
+
input={input}
|
|
72
|
+
errorText={errorText}
|
|
73
|
+
isLive={isLive}
|
|
74
|
+
className={className}
|
|
75
|
+
/>
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
case "input-streaming":
|
|
79
|
+
case "input-available":
|
|
80
|
+
case "approval-responded":
|
|
81
|
+
case "output-available":
|
|
82
|
+
case "output-denied":
|
|
83
|
+
return (
|
|
84
|
+
<ToolHistoryRow
|
|
85
|
+
toolName={toolName}
|
|
86
|
+
state={state}
|
|
87
|
+
input={input}
|
|
88
|
+
result={result}
|
|
89
|
+
approval={approval}
|
|
90
|
+
index={index}
|
|
91
|
+
className={className}
|
|
92
|
+
/>
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
default:
|
|
96
|
+
logNever(state);
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
|
|
3
|
+
import { ChevronDownIcon, XCircleIcon } from "lucide-react";
|
|
4
|
+
import React from "react";
|
|
5
|
+
import { cn } from "@/utils/cn";
|
|
6
|
+
import { formatToolName } from "./shared";
|
|
7
|
+
import { ToolArgsRenderer } from "./tool-args";
|
|
8
|
+
|
|
9
|
+
interface ToolErrorCardProps {
|
|
10
|
+
toolName: string;
|
|
11
|
+
input: unknown;
|
|
12
|
+
errorText?: string;
|
|
13
|
+
// When false, defaults to collapsed (the conversation has moved past this).
|
|
14
|
+
isLive: boolean;
|
|
15
|
+
className?: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const ToolErrorCard: React.FC<ToolErrorCardProps> = ({
|
|
19
|
+
toolName,
|
|
20
|
+
input,
|
|
21
|
+
errorText,
|
|
22
|
+
isLive,
|
|
23
|
+
className,
|
|
24
|
+
}) => {
|
|
25
|
+
const [open, setOpen] = React.useState(isLive);
|
|
26
|
+
|
|
27
|
+
// Auto-collapse once when the conversation moves past this turn.
|
|
28
|
+
// The user can still re-open manually afterwards; we only do this on the
|
|
29
|
+
// live → not-live transition, never the reverse.
|
|
30
|
+
const wasLive = React.useRef(isLive);
|
|
31
|
+
React.useEffect(() => {
|
|
32
|
+
if (wasLive.current && !isLive) {
|
|
33
|
+
setOpen(false);
|
|
34
|
+
}
|
|
35
|
+
wasLive.current = isLive;
|
|
36
|
+
}, [isLive]);
|
|
37
|
+
|
|
38
|
+
return (
|
|
39
|
+
<div
|
|
40
|
+
className={cn(
|
|
41
|
+
"rounded-md border border-(--red-6) bg-(--red-2)",
|
|
42
|
+
className,
|
|
43
|
+
)}
|
|
44
|
+
>
|
|
45
|
+
<button
|
|
46
|
+
type="button"
|
|
47
|
+
onClick={() => setOpen((prev) => !prev)}
|
|
48
|
+
className="w-full flex items-center gap-2 px-3 py-2 text-xs text-(--red-11) hover:bg-(--red-3) rounded-md transition-colors"
|
|
49
|
+
aria-expanded={open}
|
|
50
|
+
>
|
|
51
|
+
<XCircleIcon className="h-3.5 w-3.5 shrink-0" />
|
|
52
|
+
<span className="flex-1 text-left">
|
|
53
|
+
<span className="font-semibold">Failed:</span>{" "}
|
|
54
|
+
<code className="font-mono">{formatToolName(toolName)}</code>
|
|
55
|
+
</span>
|
|
56
|
+
<ChevronDownIcon
|
|
57
|
+
className={cn(
|
|
58
|
+
"h-3.5 w-3.5 shrink-0 transition-transform",
|
|
59
|
+
open && "rotate-180",
|
|
60
|
+
)}
|
|
61
|
+
/>
|
|
62
|
+
</button>
|
|
63
|
+
|
|
64
|
+
{open && (
|
|
65
|
+
<div className="px-3 pb-3 space-y-3 border-t border-(--red-6)/40 pt-3">
|
|
66
|
+
<ToolArgsRenderer input={input} />
|
|
67
|
+
{errorText && (
|
|
68
|
+
<div>
|
|
69
|
+
<h3 className="text-xs font-semibold text-(--red-11) mb-1">
|
|
70
|
+
Error
|
|
71
|
+
</h3>
|
|
72
|
+
<pre className="bg-(--red-2) border border-(--red-6) rounded p-2 text-xs text-(--red-11) leading-relaxed overflow-auto scrollbar-thin max-h-64 whitespace-pre-wrap">
|
|
73
|
+
{errorText}
|
|
74
|
+
</pre>
|
|
75
|
+
</div>
|
|
76
|
+
)}
|
|
77
|
+
</div>
|
|
78
|
+
)}
|
|
79
|
+
</div>
|
|
80
|
+
);
|
|
81
|
+
};
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
|
|
3
|
+
import { BanIcon, CheckCircleIcon, Loader2, WrenchIcon } from "lucide-react";
|
|
4
|
+
import React from "react";
|
|
5
|
+
import {
|
|
6
|
+
Accordion,
|
|
7
|
+
AccordionContent,
|
|
8
|
+
AccordionItem,
|
|
9
|
+
AccordionTrigger,
|
|
10
|
+
} from "@/components/ui/accordion";
|
|
11
|
+
import { logNever } from "@/utils/assertNever";
|
|
12
|
+
import { cn } from "@/utils/cn";
|
|
13
|
+
import { formatToolName, type ToolApproval, type ToolState } from "./shared";
|
|
14
|
+
import { ToolArgsRenderer } from "./tool-args";
|
|
15
|
+
import { ResultRenderer } from "./tool-result";
|
|
16
|
+
|
|
17
|
+
// States considered "inert" — they represent past or background work that the
|
|
18
|
+
// user does not need to act on.
|
|
19
|
+
export type HistoryState = Exclude<
|
|
20
|
+
ToolState,
|
|
21
|
+
"approval-requested" | "output-error"
|
|
22
|
+
>;
|
|
23
|
+
|
|
24
|
+
const STATUS_LABEL: Record<HistoryState, string> = {
|
|
25
|
+
"input-streaming": "Generating",
|
|
26
|
+
"input-available": "Running",
|
|
27
|
+
"approval-responded": "Awaiting result",
|
|
28
|
+
"output-available": "Done",
|
|
29
|
+
"output-denied": "Denied",
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const StatusIcon: React.FC<{ state: HistoryState }> = ({ state }) => {
|
|
33
|
+
switch (state) {
|
|
34
|
+
case "input-streaming":
|
|
35
|
+
case "input-available":
|
|
36
|
+
case "approval-responded":
|
|
37
|
+
return <Loader2 className="h-3 w-3 animate-spin" />;
|
|
38
|
+
case "output-available":
|
|
39
|
+
return <CheckCircleIcon className="h-3 w-3 text-(--grass-11)" />;
|
|
40
|
+
case "output-denied":
|
|
41
|
+
return <BanIcon className="h-3 w-3 text-muted-foreground" />;
|
|
42
|
+
default:
|
|
43
|
+
logNever(state);
|
|
44
|
+
return <WrenchIcon className="h-3 w-3" />;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
function getTriggerToneClass(state: HistoryState): string {
|
|
49
|
+
switch (state) {
|
|
50
|
+
case "output-available":
|
|
51
|
+
return "text-(--grass-11)/80";
|
|
52
|
+
case "output-denied":
|
|
53
|
+
return "text-muted-foreground";
|
|
54
|
+
case "input-streaming":
|
|
55
|
+
case "input-available":
|
|
56
|
+
case "approval-responded":
|
|
57
|
+
return "";
|
|
58
|
+
default:
|
|
59
|
+
logNever(state);
|
|
60
|
+
return "";
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
interface ToolHistoryRowProps {
|
|
65
|
+
toolName: string;
|
|
66
|
+
state: HistoryState;
|
|
67
|
+
input: unknown;
|
|
68
|
+
result?: unknown;
|
|
69
|
+
approval?: ToolApproval;
|
|
70
|
+
index?: number;
|
|
71
|
+
className?: string;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export const ToolHistoryRow: React.FC<ToolHistoryRowProps> = ({
|
|
75
|
+
toolName,
|
|
76
|
+
state,
|
|
77
|
+
input,
|
|
78
|
+
result,
|
|
79
|
+
approval,
|
|
80
|
+
index = 0,
|
|
81
|
+
className,
|
|
82
|
+
}) => {
|
|
83
|
+
return (
|
|
84
|
+
<Accordion
|
|
85
|
+
key={`tool-${index}`}
|
|
86
|
+
type="single"
|
|
87
|
+
collapsible={true}
|
|
88
|
+
className={cn("w-full", className)}
|
|
89
|
+
>
|
|
90
|
+
<AccordionItem value="tool-call" className="border-0">
|
|
91
|
+
<AccordionTrigger
|
|
92
|
+
className={cn(
|
|
93
|
+
"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",
|
|
94
|
+
getTriggerToneClass(state),
|
|
95
|
+
)}
|
|
96
|
+
>
|
|
97
|
+
<span className="flex items-center gap-1">
|
|
98
|
+
<StatusIcon state={state} />
|
|
99
|
+
{STATUS_LABEL[state]}:
|
|
100
|
+
<code className="font-mono text-xs">
|
|
101
|
+
{formatToolName(toolName)}
|
|
102
|
+
</code>
|
|
103
|
+
</span>
|
|
104
|
+
</AccordionTrigger>
|
|
105
|
+
<AccordionContent className="py-2 px-2">
|
|
106
|
+
<HistoryContent
|
|
107
|
+
state={state}
|
|
108
|
+
input={input}
|
|
109
|
+
result={result}
|
|
110
|
+
approval={approval}
|
|
111
|
+
/>
|
|
112
|
+
</AccordionContent>
|
|
113
|
+
</AccordionItem>
|
|
114
|
+
</Accordion>
|
|
115
|
+
);
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
const HistoryContent: React.FC<{
|
|
119
|
+
state: HistoryState;
|
|
120
|
+
input: unknown;
|
|
121
|
+
result?: unknown;
|
|
122
|
+
approval?: ToolApproval;
|
|
123
|
+
}> = ({ state, input, result, approval }) => {
|
|
124
|
+
switch (state) {
|
|
125
|
+
case "input-streaming":
|
|
126
|
+
case "input-available":
|
|
127
|
+
case "approval-responded":
|
|
128
|
+
return <ToolArgsRenderer input={input} />;
|
|
129
|
+
|
|
130
|
+
case "output-available":
|
|
131
|
+
return (
|
|
132
|
+
<div className="space-y-3">
|
|
133
|
+
<ToolArgsRenderer input={input} />
|
|
134
|
+
{result != null && <ResultRenderer result={result} />}
|
|
135
|
+
</div>
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
case "output-denied":
|
|
139
|
+
return (
|
|
140
|
+
<div className="space-y-3">
|
|
141
|
+
<ToolArgsRenderer input={input} />
|
|
142
|
+
<div className="bg-muted/40 border border-border rounded-md p-3 text-xs text-muted-foreground leading-relaxed">
|
|
143
|
+
Tool execution was denied
|
|
144
|
+
{approval?.reason ? `: ${approval.reason}` : "."}
|
|
145
|
+
</div>
|
|
146
|
+
</div>
|
|
147
|
+
);
|
|
148
|
+
|
|
149
|
+
default:
|
|
150
|
+
logNever(state);
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
};
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
|
|
3
|
+
import { isEmpty } from "lodash-es";
|
|
4
|
+
import { InfoIcon } from "lucide-react";
|
|
5
|
+
import React from "react";
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
|
|
8
|
+
// A value worth rendering: drop null/undefined and empty containers
|
|
9
|
+
// (`{}`, `[]`), but keep meaningful primitives (`0`, `false`, `""`).
|
|
10
|
+
function isUninformative(value: unknown): boolean {
|
|
11
|
+
if (value == null) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
if (typeof value === "object") {
|
|
15
|
+
return isEmpty(value);
|
|
16
|
+
}
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Zod schema matching the Python SuccessResult dataclass
|
|
21
|
+
const SuccessResultSchema = z.looseObject({
|
|
22
|
+
status: z.string().default("success"),
|
|
23
|
+
auth_required: z.boolean().default(false),
|
|
24
|
+
action_url: z.any(),
|
|
25
|
+
next_steps: z.any(),
|
|
26
|
+
meta: z.any(),
|
|
27
|
+
message: z.string().nullish(),
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
type SuccessResult = z.infer<typeof SuccessResultSchema>;
|
|
31
|
+
|
|
32
|
+
const PrettySuccessResult: React.FC<{ data: SuccessResult }> = ({ data }) => {
|
|
33
|
+
const {
|
|
34
|
+
status,
|
|
35
|
+
auth_required,
|
|
36
|
+
action_url: _action_url,
|
|
37
|
+
meta: _meta,
|
|
38
|
+
next_steps: _next_steps,
|
|
39
|
+
message,
|
|
40
|
+
...rest
|
|
41
|
+
} = data;
|
|
42
|
+
|
|
43
|
+
return (
|
|
44
|
+
<div className="flex flex-col gap-1.5">
|
|
45
|
+
<div className="flex items-center justify-between">
|
|
46
|
+
<h3 className="text-xs font-semibold text-muted-foreground">
|
|
47
|
+
Tool Result
|
|
48
|
+
</h3>
|
|
49
|
+
<div className="flex items-center gap-2">
|
|
50
|
+
<span className="text-xs px-2 py-0.5 bg-(--grass-2) text-(--grass-11) rounded-full font-medium capitalize">
|
|
51
|
+
{status}
|
|
52
|
+
</span>
|
|
53
|
+
{auth_required && (
|
|
54
|
+
<span className="text-xs px-2 py-0.5 bg-(--amber-2) text-(--amber-11) rounded-full">
|
|
55
|
+
Auth Required
|
|
56
|
+
</span>
|
|
57
|
+
)}
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
{message && (
|
|
62
|
+
<div className="flex items-start gap-2">
|
|
63
|
+
<InfoIcon className="h-3 w-3 text-(--blue-11) mt-0.5 shrink-0" />
|
|
64
|
+
<div className="text-xs text-foreground">{message}</div>
|
|
65
|
+
</div>
|
|
66
|
+
)}
|
|
67
|
+
|
|
68
|
+
{rest && (
|
|
69
|
+
<div className="space-y-3">
|
|
70
|
+
{Object.entries(rest).map(([key, value]) => {
|
|
71
|
+
if (isUninformative(value)) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
return (
|
|
75
|
+
<div key={key} className="space-y-1.5">
|
|
76
|
+
<span className="text-xs text-muted-foreground">{key}</span>
|
|
77
|
+
<pre className="bg-(--slate-2) p-2 text-muted-foreground border border-(--slate-4) rounded text-xs overflow-auto scrollbar-thin max-h-64">
|
|
78
|
+
{JSON.stringify(value, null, 2)}
|
|
79
|
+
</pre>
|
|
80
|
+
</div>
|
|
81
|
+
);
|
|
82
|
+
})}
|
|
83
|
+
</div>
|
|
84
|
+
)}
|
|
85
|
+
</div>
|
|
86
|
+
);
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
export const ResultRenderer: React.FC<{ result: unknown }> = ({ result }) => {
|
|
90
|
+
const parseResult = SuccessResultSchema.safeParse(result);
|
|
91
|
+
|
|
92
|
+
if (parseResult.success) {
|
|
93
|
+
return <PrettySuccessResult data={parseResult.data} />;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return (
|
|
97
|
+
<div className="text-xs font-medium text-muted-foreground mb-1 max-h-64 overflow-y-auto scrollbar-thin">
|
|
98
|
+
{typeof result === "string" ? result : JSON.stringify(result, null, 2)}
|
|
99
|
+
</div>
|
|
100
|
+
);
|
|
101
|
+
};
|