@marimo-team/islands 0.17.2 → 0.17.4
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/{Combination-De9yoNY5.js → Combination-DrSsMSEB.js} +860 -816
- package/dist/{ConnectedDataExplorerComponent-DuvpJOKp.js → ConnectedDataExplorerComponent-DY9cADKc.js} +2282 -2232
- package/dist/{ImageComparisonComponent--etUl2pp.js → ImageComparisonComponent-CJvR7Qzp.js} +3 -2
- package/dist/{_baseIsEqual-BFlyFUxC.js → _baseIsEqual-DbBiwJP8.js} +1 -1
- package/dist/{_basePickBy-gCCvtjgp.js → _basePickBy-ChFDiIEt.js} +3 -3
- package/dist/{_baseProperty-BuqBC0Ie.js → _baseProperty-Bf09f9Ee.js} +5 -5
- package/dist/_baseUniq-D5kohCWB.js +59 -0
- package/dist/any-language-editor-Bs2c1bKU.js +156 -0
- package/dist/apl-Bp8pgLcx.js +4 -0
- package/dist/{arc-C_O2hc-b.js → arc-DM-UhhIs.js} +2 -2
- package/dist/architecture-O4VJ6CD3-SVEfQWDz.js +24 -0
- package/dist/{architectureDiagram-W76B3OCA-CrK99pJi.js → architectureDiagram-W76B3OCA-GKSiVAlH.js} +41 -38
- package/dist/asciiarmor-IoNSjDv9.js +4 -0
- package/dist/asn1-B1GnbkOF.js +4 -0
- package/dist/{blockDiagram-QIGZ2CNN-BJOEyO6w.js → blockDiagram-QIGZ2CNN-wX8KWoV2.js} +30 -29
- package/dist/brainfuck-TRxEs4B5.js +4 -0
- package/dist/{button-ADXOb_gX.js → button-B8zS4Mtw.js} +5 -4
- package/dist/{c4Diagram-FPNF74CW-7Pz_X9wF.js → c4Diagram-FPNF74CW-Ns4C9pNn.js} +12 -12
- package/dist/{channel-X-wRUxX6.js → channel-Dgla_oqe.js} +1 -1
- package/dist/{check-COlaG7Ss.js → check-BZnPxXnd.js} +1 -1
- package/dist/{chunk-3AY6CYHV-BQH2fFpA.js → chunk-3AY6CYHV-HfZ-8MFM.js} +10 -10
- package/dist/{chunk-4BX2VUAB-D-QtDCKM.js → chunk-4BX2VUAB-CV5cUTmw.js} +1 -1
- package/dist/{chunk-4KMFLZZN-BirZvvJS.js → chunk-4KMFLZZN-Cbgb64pE.js} +17 -18
- package/dist/{chunk-55IACEB6-DjtPYZKs.js → chunk-55IACEB6--aEkhs1O.js} +1 -1
- package/dist/{chunk-6OXUPJBA-CTnnqlzw.js → chunk-6OXUPJBA-DQZp24uZ.js} +7 -7
- package/dist/{chunk-7GE3RBXV-CT47hCrL.js → chunk-7GE3RBXV-D0K_8mbM.js} +1 -1
- package/dist/{chunk-ABZYJK2D-B6ZsU6SR.js → chunk-ABZYJK2D-BwKkjFgF.js} +3 -3
- package/dist/{chunk-BN7GFLIU-DYWEsrG4.js → chunk-BN7GFLIU-93ktvOI2.js} +1 -1
- package/dist/{chunk-CVBHYZKI-BuzDGXz0.js → chunk-CVBHYZKI-tTpx9vm_.js} +1 -1
- package/dist/{chunk-CXMOBAN2-Bas2S5w1.js → chunk-CXMOBAN2-CagHnxl1.js} +6 -6
- package/dist/{chunk-EXTU4WIE-DXwNSukz.js → chunk-EXTU4WIE-Ve2vgn5X.js} +2 -2
- package/dist/{chunk-FMBD7UC4-CYKEpuPr.js → chunk-FMBD7UC4-CCvcIQpJ.js} +1 -1
- package/dist/{chunk-JA3XYJ7Z-DcxfkcDC.js → chunk-JA3XYJ7Z-CrQC4eYr.js} +4 -4
- package/dist/{chunk-JEIROHC2-C01ZIcIG.js → chunk-JEIROHC2-tuJLHPKk.js} +1 -1
- package/dist/{chunk-K7UQS3LO-CmbT97MV.js → chunk-K7UQS3LO-BzsTVREe.js} +7 -7
- package/dist/{chunk-KMC2YHZD-D64m-1E1.js → chunk-KMC2YHZD-CdKOlVi0.js} +1 -1
- package/dist/{chunk-QN33PNHL-DjB0j8Dr.js → chunk-QN33PNHL-CbdYySGk.js} +2 -2
- package/dist/{chunk-QYVHNE3D-VA4W4oxG.js → chunk-QYVHNE3D-BDj4udRH.js} +2 -2
- package/dist/{chunk-QZHKN3VN-KT0fl3Em.js → chunk-QZHKN3VN-E6VBm6ir.js} +1 -1
- package/dist/{chunk-S3R3BYOJ-C5zmcMvn.js → chunk-S3R3BYOJ-DuumGJ4u.js} +6 -6
- package/dist/{chunk-T44TD3VJ-BMOgu-Hk.js → chunk-T44TD3VJ-Bc-UhG4i.js} +1 -1
- package/dist/{chunk-TVAH2DTR-eKm8SKnH.js → chunk-TVAH2DTR-s8skdWqT.js} +6 -6
- package/dist/{chunk-TZMSLE5B-CQxFRiI2.js → chunk-TZMSLE5B-CUfRRoFb.js} +3 -3
- package/dist/{chunk-WFRQ32O7-Dg51o277.js → chunk-WFRQ32O7-BquRwCCj.js} +1 -1
- package/dist/{chunk-WFWHJNB7-DVLO98ge.js → chunk-WFWHJNB7-CHl0gCzu.js} +1 -1
- package/dist/{chunk-XRWGC2XP-UNFKdWQh.js → chunk-XRWGC2XP-CoSEoOcO.js} +1 -1
- package/dist/{chunk-ZPAFE4SF-DbCSwfLK.js → chunk-ZPAFE4SF-Bf1fn8cY.js} +1 -1
- package/dist/classDiagram-KNZD7YFC-ONLi1fgN.js +40 -0
- package/dist/classDiagram-v2-RKCZMP56-Ceij_i8m.js +40 -0
- package/dist/{clike-CytFO-kN.js → clike-Cbszc5XU.js} +1 -1
- package/dist/clojure-BNTL3o8Z.js +4 -0
- package/dist/{clone-CCgVUJ6x.js → clone-DE59DFkY.js} +1 -1
- package/dist/cmake-Bp6uEjiS.js +4 -0
- package/dist/cobol-CtS_R__A.js +4 -0
- package/dist/coffeescript-D5u5aYAu.js +4 -0
- package/dist/commonlisp-BvLWy9eh.js +4 -0
- package/dist/compiler-runtime-5MdCVm0X.js +13 -0
- package/dist/{constants-BaCMVd12.js → constants-BlvmN57i.js} +3 -3
- package/dist/{copy-GNcK40wy.js → copy-bxQOKABs.js} +2 -2
- package/dist/{cose-bilkent-S5V4N54A-BnvuJG6Y.js → cose-bilkent-S5V4N54A-DZE8LVzQ.js} +3 -3
- package/dist/crystal-CaTWnt-Z.js +4 -0
- package/dist/css-BMUPibQH.js +5 -0
- package/dist/cypher-PopjPg_G.js +4 -0
- package/dist/d-Ds7bO8W5.js +4 -0
- package/dist/{dagre-5GWH7T2D-rn7tZYaQ.js → dagre-5GWH7T2D-g2ShbPGy.js} +39 -37
- package/dist/{dagre-Bghq6VKO.js → dagre-TBn9HZB0.js} +14 -13
- package/dist/{data-grid-overlay-editor-B4_Caieu.js → data-grid-overlay-editor-BuhjNOgs.js} +4 -4
- package/dist/{diagram-N5W7TBWH-lbF94o-g.js → diagram-N5W7TBWH-BYhyeV0B.js} +44 -41
- package/dist/{diagram-QEK2KX5R-CKBhSzsO.js → diagram-QEK2KX5R-CiuUIBpl.js} +38 -35
- package/dist/{diagram-S2PKOQOG-161_1f53.js → diagram-S2PKOQOG-D0Z2Q5P-.js} +38 -35
- package/dist/diff-C_xR-pxD.js +4 -0
- package/dist/{dist-BSyYM1Gi.js → dist-7CqcJssH.js} +6 -6
- package/dist/{dist-C9-uHBqC.js → dist-8v4BI_h_.js} +1 -1
- package/dist/{dist-71jYYbWP.js → dist-B3CNaJau.js} +2 -2
- package/dist/dist-B9JCXzyv.js +6 -0
- package/dist/{dist-DzJem5xc.js → dist-BMhv6XDi.js} +1 -1
- package/dist/{dist-CWh5ZwcC.js → dist-BYS0EtbC.js} +2 -2
- package/dist/{dist-BaPjLM6s.js → dist-BgsDu-bU.js} +1 -1
- package/dist/{dist-CNAkUyxv.js → dist-BxmsyHv5.js} +1 -1
- package/dist/{dist-CWqB4bg8.js → dist-C02gS--y.js} +3 -3
- package/dist/{dist-C76MUPD3.js → dist-C5Iu9a3-.js} +2 -2
- package/dist/{dist-DxESp2-T.js → dist-C5Ns3q-m.js} +3 -3
- package/dist/dist-C6QrJGYr.js +10 -0
- package/dist/{dist-BAqp4Vtl.js → dist-CBu8cgzz.js} +8 -4
- package/dist/dist-CFZ32udY.js +6 -0
- package/dist/{dist-DaTVdKJa.js → dist-CXimnGhI.js} +2 -2
- package/dist/{dist-CtOeHDJp.js → dist-CawOxmKh.js} +5 -5
- package/dist/dist-CmgxQNWN.js +10 -0
- package/dist/dist-Cr6Cu8sC.js +6 -0
- package/dist/{dist-BBhmkni2.js → dist-CxRajUZ6.js} +1 -1
- package/dist/{dist-CPNnKuPh.js → dist-D08oiinq.js} +12 -10
- package/dist/{dist-BNRdMfJH.js → dist-D4LUTYHc.js} +2 -2
- package/dist/{dist-C2IEc8og.js → dist-DGKjHTv9.js} +5 -5
- package/dist/{dist-4dtbqf8A.js → dist-DGnWQOnS.js} +3 -3
- package/dist/{dist-BqdQPWpQ.js → dist-DSDOMDNR.js} +2 -2
- package/dist/{dist-_4cudra1.js → dist-DTNqkRGE.js} +3 -3
- package/dist/{dist-28HYzERB.js → dist-D_GkrgWD.js} +2 -2
- package/dist/{dist-Cw0F6l-7.js → dist-DbHWFmjZ.js} +1 -1
- package/dist/{dist-B_wjJqqS.js → dist-Dh7gw0Ay.js} +2 -2
- package/dist/{dist-B8Pbw5ln.js → dist-DiO9ni9a.js} +2 -2
- package/dist/{dist-BYHiiJB-.js → dist-DlSZED-1.js} +2 -2
- package/dist/{dist-Da046MhT.js → dist-DvsjKDQ4.js} +1 -1
- package/dist/{dist-O0zVziwn.js → dist-DzKKEoge.js} +3 -3
- package/dist/{dist-CwZcC4om.js → dist-HKzG1oF6.js} +1 -1
- package/dist/{dist-CJb8EiFO.js → dist-K_AqLCfS.js} +3 -3
- package/dist/dist-NxHLuq7w.js +6 -0
- package/dist/dist-S2JcqPPB.js +12 -0
- package/dist/{dist-CNvMOZu9.js → dist-XkGsOiy0.js} +2 -2
- package/dist/{dist-Drf3cyIW.js → dist-_tHnp24J.js} +3 -3
- package/dist/{dist-xLN9qCAp.js → dist-eSnWVS11.js} +3 -3
- package/dist/dist-hcPlrsR9.js +6 -0
- package/dist/{dist-DlK420ke.js → dist-owpR56zn.js} +1 -1
- package/dist/dist-poXa8G8m.js +6 -0
- package/dist/{dist-CTIyD_KU.js → dist-qGpLTiEi.js} +3 -3
- package/dist/{dockerfile-Cmlcqk35.js → dockerfile-CWWeWT3z.js} +1 -1
- package/dist/dtd-CGRYzaHQ.js +4 -0
- package/dist/dylan-Ctfki5HL.js +4 -0
- package/dist/ecl--gmEivzz.js +4 -0
- package/dist/eiffel-o31DRAP-.js +4 -0
- package/dist/elm-Dqa6TVIh.js +4 -0
- package/dist/{erDiagram-AWTI2OKA-BU7Qig7n.js → erDiagram-AWTI2OKA-BeadFjpg.js} +25 -25
- package/dist/erlang-BtVO_vQG.js +4 -0
- package/dist/error-banner-B7LmpmGT.js +1013 -0
- package/dist/{esm-Oo8OvZ6m.js → esm-CQIOyi5v.js} +579 -564
- package/dist/{factor-BZnBK3CG.js → factor-7tQNNEWF.js} +1 -1
- package/dist/factor-CNLvRc__.js +5 -0
- package/dist/{flowDiagram-PVAE7QVJ-JKJebWeY.js → flowDiagram-PVAE7QVJ-GgklUvqn.js} +27 -27
- package/dist/{formats-DOEuF6TR.js → formats-kyFd0DPJ.js} +23 -22
- package/dist/forth-Bp2zDfH-.js +4 -0
- package/dist/fortran-B3A-KieX.js +4 -0
- package/dist/{ganttDiagram-OWAHRB6G-BvWRfg05.js → ganttDiagram-OWAHRB6G-D5wYR6WK.js} +17 -17
- package/dist/gas-_Xt_kGOG.js +4 -0
- package/dist/gherkin-DzZpg8Ls.js +4 -0
- package/dist/gitGraph-ZV4HHKMB-DFGD7PPm.js +24 -0
- package/dist/{gitGraphDiagram-NY62KEGX-VEJJBf5L.js → gitGraphDiagram-NY62KEGX-DCwA-g9b.js} +38 -35
- package/dist/{glide-data-editor-Bne10icG.js → glide-data-editor-1bUl_mRe.js} +515 -515
- package/dist/graphlib-R11f1son.js +228 -0
- package/dist/groovy-BtD10jRQ.js +4 -0
- package/dist/haskell-C-JVWnIV.js +4 -0
- package/dist/haxe-Del5TcJQ.js +5 -0
- package/dist/idl-BLlRatde.js +4 -0
- package/dist/info-63CPKGFF-eZyiEu_4.js +24 -0
- package/dist/infoDiagram-STP46IZ2-CUr2vZlE.js +48 -0
- package/dist/{isEmpty-Do_v2sls.js → isEmpty-CIFmGKJN.js} +2 -2
- package/dist/isString-BsphYkXQ.js +9 -0
- package/dist/{isSymbol-CtkA8Y0a.js → isSymbol-BnxbuvDK.js} +1 -1
- package/dist/javascript-Bm7QL4E3.js +5 -0
- package/dist/jinja2-BxbImxq2.js +4 -0
- package/dist/{journeyDiagram-BIP6EPQ6-CsgEQgxh.js → journeyDiagram-BIP6EPQ6-DtjQC_m1.js} +10 -10
- package/dist/jsx-runtime-CvL6gNI-.js +22 -0
- package/dist/julia-DV1Vz9mw.js +4 -0
- package/dist/{kanban-definition-6OIFK2YF-Bi8Ete2P.js → kanban-definition-6OIFK2YF-U3q5gvb8.js} +19 -19
- package/dist/{katex-C-g3rKKt.js → katex-BWgzyQrl.js} +1 -1
- package/dist/{label-BiVIU_wb.js → label-Wr-xTlW7.js} +463 -453
- package/dist/{line-B7-GoF1m.js → line-C7OvOvNm.js} +3 -3
- package/dist/{linear-DeGGALuc.js → linear-CgANSWNu.js} +4 -4
- package/dist/livescript-9UMSMMrl.js +4 -0
- package/dist/{loader-BBqwtZWj.js → loader-Dj9XWZTh.js} +164 -4
- package/dist/lua-Bcbc7wWe.js +4 -0
- package/dist/main.js +40727 -41561
- package/dist/mathematica-DG4QUwYU.js +4 -0
- package/dist/mbox--auqAoPc.js +4 -0
- package/dist/{memoize-D7eDkf3R.js → memoize-XkDn33QI.js} +1 -1
- package/dist/{merge-C_6cGM6o.js → merge-dMlizkC5.js} +1 -1
- package/dist/{mermaid-BmtvsZ2m.js → mermaid-DIjoC4T4.js} +67 -66
- package/dist/{mermaid-parser.core-geyG_6o0.js → mermaid-parser.core-B433qyUL.js} +8 -8
- package/dist/{mhchem-OhAaJ0fA.js → mhchem-1x4KnXMF.js} +1 -1
- package/dist/min-WjLsUjBa.js +89 -0
- package/dist/{mindmap-definition-Q6HEUPPD-B-wmX1oG.js → mindmap-definition-Q6HEUPPD-LFgV4R8y.js} +24 -24
- package/dist/mirc-9dVcMicH.js +4 -0
- package/dist/mllike-Di9N4E3Q.js +6 -0
- package/dist/modelica-S3adENkL.js +4 -0
- package/dist/mscgen-DAG0zH4w.js +6 -0
- package/dist/mumps-afzuy08D.js +4 -0
- package/dist/{now-DumxsrcX.js → now-8WTe-KKa.js} +1 -1
- package/dist/nsis-Bzwy0lPH.js +5 -0
- package/dist/{nsis-D4bLR_Y1.js → nsis-CFb2Zrib.js} +1 -1
- package/dist/ntriples-D9oM8s3v.js +4 -0
- package/dist/{number-overlay-editor-D6r-48ka.js → number-overlay-editor-DYjnpjXo.js} +2 -2
- package/dist/octave-BMLCk2qM.js +4 -0
- package/dist/{once-3OSMKEsL.js → once-rI5AYku5.js} +1 -1
- package/dist/{ordinal-DpEbSVPc.js → ordinal-pQYxWJYN.js} +1 -1
- package/dist/oz-CX5JTWTK.js +4 -0
- package/dist/packet-HUATNLJX-BvWMmF9U.js +24 -0
- package/dist/pascal-BeZmsfFX.js +4 -0
- package/dist/perl-CZ_HryPN.js +4 -0
- package/dist/pie-WTHONI2E-BCXZJKz0.js +24 -0
- package/dist/{pieDiagram-ADFJNKIX-C3GvPNUL.js → pieDiagram-ADFJNKIX-CsZmho0o.js} +43 -40
- package/dist/pig-OPEEOu6V.js +4 -0
- package/dist/powershell-DyR-5LnA.js +4 -0
- package/dist/{precisionRound-7YYJq2rW.js → precisionRound-DMLkFNYv.js} +1 -1
- package/dist/properties-Cl4tecfb.js +4 -0
- package/dist/protobuf-B8X247vV.js +4 -0
- package/dist/pug-Kmpa-Pbv.js +5 -0
- package/dist/{pug-Dv3gE36O.js → pug-ZDYeT34w.js} +1 -1
- package/dist/puppet-Pl07qkSO.js +4 -0
- package/dist/python-DQgTXBpp.js +5 -0
- package/dist/q-D7uiP00h.js +4 -0
- package/dist/{quadrantDiagram-LMRXKWRM-DPXwGNVa.js → quadrantDiagram-LMRXKWRM-CY6GTOgM.js} +8 -8
- package/dist/r-DbUoToEd.js +4 -0
- package/dist/radar-NJJJXTRR-8kjOeCwx.js +24 -0
- package/dist/{range-CIbLpsrs.js → range-CTMc_Qhu.js} +3 -3
- package/dist/{react-plotly-DYyvxcRD.js → react-plotly-Cs07wkly.js} +2 -2
- package/dist/react-vega-B9eMrRW1.js +32035 -0
- package/dist/react-vega-DM3e8kar.js +25 -0
- package/dist/reduce-C-jV7KRY.js +268 -0
- package/dist/{requirementDiagram-4UW4RH46-Cs3Hqnm0.js → requirementDiagram-4UW4RH46-CfLWneBF.js} +24 -24
- package/dist/rpm-BjQFZZ1e.js +5 -0
- package/dist/ruby-BXpop5ZX.js +4 -0
- package/dist/{sankeyDiagram-GR3RE2ED-Be1d_Xf7.js → sankeyDiagram-GR3RE2ED-Dkxfzm6f.js} +7 -7
- package/dist/sas-CzFr9Hlz.js +4 -0
- package/dist/scheme-C6QRPvcm.js +4 -0
- package/dist/{sequenceDiagram-C3RYC4MD-lbtovKTa.js → sequenceDiagram-C3RYC4MD-hSi31Kfa.js} +14 -14
- package/dist/shell-Bs7FrcsL.js +4 -0
- package/dist/sieve-D39XRya9.js +4 -0
- package/dist/{slides-component-BoeQU7-s.js → slides-component-Ct11erUn.js} +9 -8
- package/dist/smalltalk-CdAwDOFE.js +4 -0
- package/dist/sparql-DsDWhEhN.js +4 -0
- package/dist/spec-rqRnkIf4.js +1256 -0
- package/dist/{src-BTqT1mA1.js → src-CKr0QbVy.js} +1 -1
- package/dist/{stateDiagram-KXAO66HF-BmbR-Rol.js → stateDiagram-KXAO66HF-DJsLA_DN.js} +42 -40
- package/dist/stateDiagram-v2-UMBNRL4Z-D-p_ngHt.js +39 -0
- package/dist/{step-2RJrMSSG.js → step-BsM8YHun.js} +1 -1
- package/dist/stex-DvqvBdH8.js +5 -0
- package/dist/style.css +1 -1
- package/dist/stylus-DxzxWmvV.js +4 -0
- package/dist/swift-DTC4Wg4z.js +4 -0
- package/dist/tcl-DantlS-i.js +4 -0
- package/dist/textile-pOphaahD.js +4 -0
- package/dist/{time-BB30r1tK.js → time-U9NHhrDC.js} +4 -4
- package/dist/{timeline-definition-XQNQX7LJ-1mv5caPW.js → timeline-definition-XQNQX7LJ-rojWjX6M.js} +7 -7
- package/dist/{toNumber-D3Ystr3y.js → toNumber-CUG0Hyhp.js} +2 -2
- package/dist/{toString-CbuxCRDG.js → toString-CT4n1k2E.js} +2 -2
- package/dist/toml-hgYsPM5p.js +4 -0
- package/dist/treemap-75Q7IDZK-Do1WIR9v.js +24 -0
- package/dist/troff-BwevrEUZ.js +4 -0
- package/dist/{dtd-RplB6hDg.js → ttcn-C5gJcxta.js} +2 -2
- package/dist/ttcn-cfg-CPKlfqST.js +4 -0
- package/dist/turtle-EH0lMhMf.js +4 -0
- package/dist/{types-BPohCsA7.js → types-Bt7p5SYB.js} +1028 -1038
- package/dist/uniq-DgSyegN3.js +8 -0
- package/dist/{useAsyncData-DHBqeb9a.js → useAsyncData-Dp2V69OV.js} +3 -3
- package/dist/{useIframeCapabilities-BEvvwlwt.js → useIframeCapabilities-B9u0SmJ4.js} +2 -2
- package/dist/{useTheme-CnMbo-iq.js → useTheme-D7vlj42b.js} +4 -4
- package/dist/vb-DNk7gts-.js +4 -0
- package/dist/vbscript-znK_5PUS.js +4 -0
- package/dist/vega-component-C58Jk3ub.js +633 -0
- package/dist/{vega-loader.browser.module-CFMtdrNw.js → vega-loader.browser-BK7-IO9k.js} +91 -99
- package/dist/velocity-DmPhlhdp.js +4 -0
- package/dist/verilog-CePnwf4S.js +4 -0
- package/dist/vhdl-Ckdh8uiO.js +4 -0
- package/dist/webidl-8N8qbzRd.js +4 -0
- package/dist/xquery-Cocyk-z0.js +4 -0
- package/dist/{xychartDiagram-6GGTOJPD-njc-naaw.js → xychartDiagram-6GGTOJPD-CiC1eONZ.js} +23 -23
- package/dist/yacas-CPmShRg-.js +4 -0
- package/dist/z80-B500UaFh.js +4 -0
- package/package.json +12 -9
- package/src/components/ai/ai-provider-icon.tsx +2 -1
- package/src/components/app-config/constants.ts +25 -1
- package/src/components/charts/lazy.tsx +7 -0
- package/src/components/charts/tooltip.ts +5 -0
- package/src/components/charts/types.ts +8 -0
- package/src/components/chat/acp/__tests__/state.test.ts +0 -13
- package/src/components/chat/acp/agent-panel.tsx +7 -1
- package/src/components/chat/acp/agent-selector.tsx +5 -0
- package/src/components/chat/acp/blocks.tsx +51 -8
- package/src/components/chat/acp/state.ts +8 -2
- package/src/components/chat/acp/thread.tsx +10 -3
- package/src/components/chat/chat-panel.tsx +7 -1
- package/src/components/data-table/__tests__/__snapshots__/chart-spec-model.test.ts.snap +473 -184
- package/src/components/data-table/__tests__/chart-spec-model.test.ts +32 -28
- package/src/components/data-table/charts/__tests__/__snapshots__/spec-snapshot.test.ts.snap +1 -1
- package/src/components/data-table/charts/__tests__/altair-generator.test.ts +162 -0
- package/src/components/data-table/charts/__tests__/spec-snapshot.test.ts +1 -1
- package/src/components/data-table/charts/__tests__/spec.test.ts +145 -6
- package/src/components/data-table/charts/chart-spec/altair-generator.ts +6 -1
- package/src/components/data-table/charts/chart-spec/encodings.ts +11 -7
- package/src/components/data-table/charts/chart-spec/spec.ts +9 -8
- package/src/components/data-table/charts/chart-spec/tooltips.ts +4 -3
- package/src/components/data-table/charts/chart-spec/types.ts +1 -1
- package/src/components/data-table/charts/chart-spec/utils.ts +23 -0
- package/src/components/data-table/charts/components/form-fields.tsx +2 -2
- package/src/components/data-table/charts/constants.ts +7 -3
- package/src/components/data-table/charts/lazy-chart.tsx +15 -11
- package/src/components/data-table/charts/types.ts +6 -14
- package/src/components/data-table/column-summary/chart-spec-model.tsx +112 -269
- package/src/components/data-table/column-summary/column-summary.tsx +12 -12
- package/src/components/data-table/column-summary/legacy-chart-spec.ts +78 -2
- package/src/components/data-table/column-summary/utils.ts +1 -1
- package/src/components/datasources/__tests__/utils.test.ts +339 -138
- package/src/components/datasources/column-preview.tsx +9 -9
- package/src/components/datasources/datasources.tsx +4 -0
- package/src/components/datasources/utils.ts +94 -4
- package/src/components/editor/Output.tsx +9 -6
- package/src/components/editor/ai/ai-completion-editor.tsx +2 -2
- package/src/components/editor/code/readonly-diff.tsx +4 -0
- package/src/components/editor/output/ConsoleOutput.tsx +14 -11
- package/src/components/editor/renderers/slides-layout/types.ts +1 -1
- package/src/components/tracing/tracing-spec.ts +2 -2
- package/src/components/tracing/tracing.test.tsx +1 -1
- package/src/components/tracing/tracing.tsx +57 -74
- package/src/components/tracing/utils.ts +22 -0
- package/src/components/ui/query-param-preserving-link.tsx +48 -0
- package/src/core/ai/context/providers/__tests__/cell-output.test.ts +12 -1
- package/src/core/ai/context/providers/cell-output.ts +2 -8
- package/src/core/ai/tools/__tests__/run-cells-tool.test.ts +1 -1
- package/src/core/ai/tools/edit-notebook-tool.ts +15 -7
- package/src/core/ai/tools/run-cells-tool.ts +60 -26
- package/src/core/cells/ids.ts +1 -1
- package/src/core/codemirror/language/__tests__/extension.test.ts +6 -12
- package/src/core/codemirror/language/__tests__/markdown.test.ts +23 -36
- package/src/core/codemirror/language/languages/python.ts +40 -6
- package/src/core/codemirror/language/languages/sql/completion-store.ts +2 -2
- package/src/core/codemirror/language/languages/sql/sql.ts +14 -0
- package/src/core/codemirror/language/languages/sql/utils.ts +54 -3
- package/src/core/codemirror/lsp/notebook-lsp.ts +52 -4
- package/src/core/codemirror/lsp/transports.ts +3 -0
- package/src/core/datasets/__tests__/data-source.test.ts +6 -0
- package/src/core/datasets/data-source-connections.ts +1 -0
- package/src/core/dom/__tests__/outline.test.ts +43 -0
- package/src/core/dom/outline.ts +1 -1
- package/src/core/islands/main.ts +2 -0
- package/src/core/lsp/__tests__/transport.test.ts +57 -0
- package/src/core/lsp/transport.ts +16 -0
- package/src/css/md.css +6 -0
- package/src/plugins/core/RenderHTML.tsx +26 -0
- package/src/plugins/core/__test__/sanitize.test.ts +27 -0
- package/src/plugins/core/sanitize.ts +9 -2
- package/src/plugins/impl/DataTablePlugin.tsx +21 -27
- package/src/plugins/impl/data-explorer/ConnectedDataExplorerComponent.tsx +26 -22
- package/src/plugins/impl/data-explorer/functions/function.ts +1 -2
- package/src/plugins/impl/data-explorer/functions/types.ts +65 -14
- package/src/plugins/impl/data-explorer/queries/queries.ts +9 -9
- package/src/plugins/impl/data-explorer/queries/types.ts +23 -5
- package/src/plugins/impl/data-frames/DataFramePlugin.tsx +2 -1
- package/src/plugins/impl/vega/__tests__/__snapshots__/make-selectable.test.ts.snap +2309 -0
- package/src/plugins/impl/vega/__tests__/encodings.test.ts +93 -0
- package/src/plugins/impl/vega/__tests__/make-selectable.test.ts +621 -0
- package/src/plugins/impl/vega/__tests__/params.test.ts +121 -1
- package/src/plugins/impl/vega/encodings.ts +16 -2
- package/src/plugins/impl/vega/make-selectable.ts +339 -10
- package/src/plugins/impl/vega/params.ts +76 -14
- package/src/plugins/impl/vega/types.ts +32 -13
- package/src/plugins/impl/vega/vega-component.tsx +74 -26
- package/src/plugins/impl/vega/vega.css +1 -0
- package/src/stories/__fixtures__/vega.ts +1 -1
- package/src/utils/arrays.ts +16 -0
- package/dist/_baseUniq-CKN9mEDq.js +0 -324
- package/dist/any-language-editor-Du2Q_6IK.js +0 -156
- package/dist/apl-CUm2DGqh.js +0 -4
- package/dist/architecture-O4VJ6CD3-PFw3eFBY.js +0 -21
- package/dist/asciiarmor-lqJ78U01.js +0 -4
- package/dist/asn1-CjwpSTlW.js +0 -4
- package/dist/brainfuck-ClvDI1dq.js +0 -4
- package/dist/classDiagram-KNZD7YFC-HUFFxNdk.js +0 -40
- package/dist/classDiagram-v2-RKCZMP56-Dw7Acmuf.js +0 -40
- package/dist/clojure-8GefCgPe.js +0 -4
- package/dist/cmake-yAhT9H0F.js +0 -4
- package/dist/cobol-BmltueOY.js +0 -4
- package/dist/coffeescript-C7KEQBcH.js +0 -4
- package/dist/commonlisp-CNbiJRU-.js +0 -4
- package/dist/crystal-OdjZZ8bc.js +0 -4
- package/dist/css-DhTxMmL_.js +0 -5
- package/dist/cypher-CgN8E3YI.js +0 -4
- package/dist/d-g41sJcBC.js +0 -4
- package/dist/diff-ViRYYhhg.js +0 -4
- package/dist/dist-BfJO8Bm9.js +0 -12
- package/dist/dist-CLuF3AtO.js +0 -6
- package/dist/dist-CU04U4NL.js +0 -10
- package/dist/dist-DNUT6b47.js +0 -6
- package/dist/dist-DbAb2sY7.js +0 -6
- package/dist/dist-DiDFQ2Rk.js +0 -6
- package/dist/dist-SNAyAOJ-.js +0 -6
- package/dist/dist-cbW5xJNV.js +0 -6
- package/dist/dist-h8eGLSbK.js +0 -10
- package/dist/dylan-BX8KJufP.js +0 -4
- package/dist/ecl-CWtLaNMH.js +0 -4
- package/dist/eiffel-C-mlZPMn.js +0 -4
- package/dist/elm-CWp06vcb.js +0 -4
- package/dist/erlang-pfp22AZM.js +0 -4
- package/dist/error-banner-BAWlXn49.js +0 -1012
- package/dist/esm-B2pocBPL.js +0 -26
- package/dist/esm-YVnxJqkD.js +0 -33066
- package/dist/factor-CEn53jua.js +0 -5
- package/dist/forth-CL8vu_y8.js +0 -4
- package/dist/fortran-DsmXkYtE.js +0 -4
- package/dist/gas-mYt9Rtlx.js +0 -4
- package/dist/gherkin-DHNCKBNj.js +0 -4
- package/dist/gitGraph-ZV4HHKMB-Cpd6k0O8.js +0 -21
- package/dist/graphlib-DRS8CrjA.js +0 -227
- package/dist/groovy-DzRtOS5a.js +0 -4
- package/dist/haskell-Bl9iT_Mp.js +0 -4
- package/dist/haxe-DqA0ED6k.js +0 -5
- package/dist/idl-WU2hil4i.js +0 -4
- package/dist/info-63CPKGFF-CG-xzUJo.js +0 -21
- package/dist/infoDiagram-STP46IZ2-zoRBGoup.js +0 -45
- package/dist/javascript-QY2BGJeV.js +0 -5
- package/dist/jinja2-Czleq7Sk.js +0 -4
- package/dist/jsx-runtime-DZyWJV5b.js +0 -31
- package/dist/julia-Dru3Qi0y.js +0 -4
- package/dist/livescript-Dxqi_HLT.js +0 -4
- package/dist/lua-ByH1cUQZ.js +0 -4
- package/dist/mathematica-CWJIFuES.js +0 -4
- package/dist/mbox-qhPIGaUI.js +0 -4
- package/dist/min-Dwa_NbP6.js +0 -93
- package/dist/mirc-yYcXhXBY.js +0 -4
- package/dist/mllike-BfT_Nl9x.js +0 -6
- package/dist/modelica-lVDtz1Rm.js +0 -4
- package/dist/mscgen-DvwdD1QJ.js +0 -6
- package/dist/mumps-BiY3GwKd.js +0 -4
- package/dist/nsis-Dk18Sq_4.js +0 -5
- package/dist/ntriples-Cj-8VqKF.js +0 -4
- package/dist/octave-BgFAaYjU.js +0 -4
- package/dist/oz-IsEG1I1m.js +0 -4
- package/dist/packet-HUATNLJX-Cafuo3IG.js +0 -21
- package/dist/pascal-BVf7FtIE.js +0 -4
- package/dist/perl-BM0-y4mZ.js +0 -4
- package/dist/pie-WTHONI2E-BE0pHBwB.js +0 -21
- package/dist/pig-CLBjzQmc.js +0 -4
- package/dist/powershell-B_qvE33J.js +0 -4
- package/dist/properties-CUTpsH2y.js +0 -4
- package/dist/protobuf-DqCP8a-0.js +0 -4
- package/dist/pug-BvexKkw4.js +0 -5
- package/dist/puppet-CoIi0R3f.js +0 -4
- package/dist/python-C-11-YMh.js +0 -5
- package/dist/q-CCVgEip7.js +0 -4
- package/dist/r-CIdR0Sfs.js +0 -4
- package/dist/radar-NJJJXTRR-0adgjw0u.js +0 -21
- package/dist/rpm-Dwvm039g.js +0 -5
- package/dist/ruby-DpTnO5gb.js +0 -4
- package/dist/sas-CK9boxgv.js +0 -4
- package/dist/scheme-Y1aYL-Qq.js +0 -4
- package/dist/shell-D3eXGsHd.js +0 -4
- package/dist/sieve-BdwSFdWJ.js +0 -4
- package/dist/smalltalk-BTYJquCm.js +0 -4
- package/dist/sparql-CYF0g4Cc.js +0 -4
- package/dist/stateDiagram-v2-UMBNRL4Z-DdJ7qVWc.js +0 -39
- package/dist/stex-CyWhoWHt.js +0 -5
- package/dist/stylus-BBiKaI2h.js +0 -4
- package/dist/swift-COb15qFR.js +0 -4
- package/dist/tcl-Jik1LXu9.js +0 -4
- package/dist/textile-BFHPD3wr.js +0 -4
- package/dist/toml-Brp9fBXs.js +0 -4
- package/dist/treemap-75Q7IDZK-CyBT8_Wh.js +0 -21
- package/dist/troff-CcZRW4vg.js +0 -4
- package/dist/tslib.es6-3ZL768sZ.js +0 -49
- package/dist/ttcn-Bz_6ifRd.js +0 -4
- package/dist/ttcn-cfg-v-yi2rKc.js +0 -4
- package/dist/turtle-CDOsZYhB.js +0 -4
- package/dist/useDateFormatter-BkbjKw83.js +0 -543
- package/dist/vb-CL7fRwRw.js +0 -4
- package/dist/vbscript-CR2xfxpw.js +0 -4
- package/dist/vega-component-BfFcXZxw.js +0 -465
- package/dist/velocity-CfuZoxPt.js +0 -4
- package/dist/verilog-CySTkzw_.js +0 -4
- package/dist/vhdl-Dvcd8KHW.js +0 -4
- package/dist/webidl-tbJt7sKk.js +0 -4
- package/dist/xquery-DJQVztyc.js +0 -4
- package/dist/yacas-BbgBReEH.js +0 -4
- package/dist/z80-DPyb8VGz.js +0 -4
- /package/dist/{_arrayReduce-Cd9xQjbl.js → _arrayReduce-CmsTTAw1.js} +0 -0
- /package/dist/{_baseSlice-CE9WsQZm.js → _baseSlice-CAnpEJwx.js} +0 -0
- /package/dist/{_hasUnicode-DkEebvtD.js → _hasUnicode-CbmCTPAa.js} +0 -0
- /package/dist/{apl-aGhy11IM.js → apl-Css595_H.js} +0 -0
- /package/dist/{array-DYSXIreg.js → array-D3smvOQ_.js} +0 -0
- /package/dist/{asciiarmor-DJKJ3Gkn.js → asciiarmor-BTCuJwxh.js} +0 -0
- /package/dist/{asn1-C6f5IeNs.js → asn1-DXjhS5QI.js} +0 -0
- /package/dist/{asterisk-DB1poX9_.js → asterisk-5HlmsIaw.js} +0 -0
- /package/dist/{brainfuck-Ch9vjun0.js → brainfuck--WlEc-iG.js} +0 -0
- /package/dist/{chunk-57QY23SG-BpXU7ph4.js → chunk-57QY23SG-D7ymhFFp.js} +0 -0
- /package/dist/{click-outside-container-2BH589Bq.js → click-outside-container-DSVM9sZw.js} +0 -0
- /package/dist/{clike-Bc2PZzZQ.js → clike-DDIJB_R8.js} +0 -0
- /package/dist/{clojure-B_lpr3zt.js → clojure-Z-GPBZyY.js} +0 -0
- /package/dist/{cmake-DaocNF4I.js → cmake-DncBqspt.js} +0 -0
- /package/dist/{cobol-suTPtt7c.js → cobol-DqUe0gl7.js} +0 -0
- /package/dist/{coffeescript-CPLIvtqJ.js → coffeescript-CH5_OO0H.js} +0 -0
- /package/dist/{colors-BXlG8Lmz.js → colors-DQmMCNWX.js} +0 -0
- /package/dist/{common-keywords-Bhll7O3b.js → common-keywords-CAEsQSF5.js} +0 -0
- /package/dist/{commonlisp-BqM3qFK7.js → commonlisp-UmhR9BfE.js} +0 -0
- /package/dist/{crystal-AsSFu4ke.js → crystal-5Sqf7MXt.js} +0 -0
- /package/dist/{css-Df7Sdeyh.js → css-bDybSxwf.js} +0 -0
- /package/dist/{cypher-CaVKL6Gu.js → cypher-PIeAFhrd.js} +0 -0
- /package/dist/{cytoscape.esm-BFEMljQI.js → cytoscape.esm-DclyBJ4D.js} +0 -0
- /package/dist/{d-DCGWK7NQ.js → d-Bd8EVRQt.js} +0 -0
- /package/dist/{defaultLocale-Cto8YOmX.js → defaultLocale-BPzjWfXP.js} +0 -0
- /package/dist/{defaultLocale-CYgZlqDF.js → defaultLocale-Om7Wxg5c.js} +0 -0
- /package/dist/{diff-CsxOM4Tr.js → diff-CAQdgtD6.js} +0 -0
- /package/dist/{dtd-Dwr0Jmks.js → dtd-eKW3pZj_.js} +0 -0
- /package/dist/{duckdb-keywords-7wAWf848.js → duckdb-keywords-BC3kWZZM.js} +0 -0
- /package/dist/{dylan-A7-ZBSey.js → dylan-CIO7R9Tr.js} +0 -0
- /package/dist/{ebnf-9_SaGDUz.js → ebnf-Pr4a9I6n.js} +0 -0
- /package/dist/{ecl-BzJVIQDc.js → ecl-BqYW-aOJ.js} +0 -0
- /package/dist/{eiffel-CO9eC_Op.js → eiffel-BOKM91eM.js} +0 -0
- /package/dist/{elm-CVAWj8SB.js → elm-3sobs3PV.js} +0 -0
- /package/dist/{emotion-is-prop-valid.esm-C3Yi5GQt.js → emotion-is-prop-valid.esm-Cm1uulbm.js} +0 -0
- /package/dist/{erlang-DWbZP546.js → erlang-C5EBzhP1.js} +0 -0
- /package/dist/{esm-AtKNNGYO.js → esm-CopBBL2y.js} +0 -0
- /package/dist/{fcl-CM9t2iay.js → fcl-Brh8s8q_.js} +0 -0
- /package/dist/{forth-BTYqUuu3.js → forth-DneRHr4K.js} +0 -0
- /package/dist/{fortran-DgAjHcCq.js → fortran-DsdmZbwQ.js} +0 -0
- /package/dist/{gas-BjDSWPZd.js → gas-DaoJ65Z9.js} +0 -0
- /package/dist/{gherkin-ClRqqpKv.js → gherkin-DUP_UlW-.js} +0 -0
- /package/dist/{groovy-BzNjnc8x.js → groovy-Rvyan8yX.js} +0 -0
- /package/dist/{haskell-DLdk34Jq.js → haskell-DIvpY54L.js} +0 -0
- /package/dist/{haxe-l6gaY_IS.js → haxe-Da_5bBNs.js} +0 -0
- /package/dist/{http-6Qg7z_h2.js → http-CMvcwl3E.js} +0 -0
- /package/dist/{idl-hlWT4D26.js → idl-DvL3aO0N.js} +0 -0
- /package/dist/{init-tZ42Torz.js → init-BNp5RczD.js} +0 -0
- /package/dist/{invariant-D3JoRb4I.js → invariant-Cl2wkkjN.js} +0 -0
- /package/dist/{isArrayLikeObject-DU5MCuQM.js → isArrayLikeObject-1qkWxZbL.js} +0 -0
- /package/dist/{javascript-DGukg1sB.js → javascript-DoyAP8vn.js} +0 -0
- /package/dist/{jinja2-DI5k_Er3.js → jinja2-Veqp7mFj.js} +0 -0
- /package/dist/{julia-BvDZDiIT.js → julia-Gi684CX7.js} +0 -0
- /package/dist/{katex-DgfMWJY9.js → katex-U6RPAuWM.js} +0 -0
- /package/dist/{livescript-2YMQfkfI.js → livescript-BKj_Zhvo.js} +0 -0
- /package/dist/{lua-DIUrQRfA.js → lua-CDA7hreG.js} +0 -0
- /package/dist/{main-BMTpe7M0.js → main-63eIj2Yx.js} +0 -0
- /package/dist/{marked.esm-DkVwEwtO.js → marked.esm-DE8HU3tw.js} +0 -0
- /package/dist/{math-qsHyz2Eo.js → math-C2iLT5gz.js} +0 -0
- /package/dist/{mathematica-Dqmg_BwL.js → mathematica-GWfSHReY.js} +0 -0
- /package/dist/{mbox-Cng-P-F1.js → mbox-Dwsrc4Ak.js} +0 -0
- /package/dist/{mirc-CNDqOVhQ.js → mirc-B2JE5ype.js} +0 -0
- /package/dist/{mllike-C1n2UDyX.js → mllike-BkBh4PFX.js} +0 -0
- /package/dist/{modelica-QqQC2pFj.js → modelica-C0hNlKgR.js} +0 -0
- /package/dist/{mscgen-C3fl8uhp.js → mscgen-DWWpdZnb.js} +0 -0
- /package/dist/{mumps-BeCUbMej.js → mumps-CMePAlSe.js} +0 -0
- /package/dist/{nginx-ejv7DsBz.js → nginx-GurZbX0E.js} +0 -0
- /package/dist/{node-sql-parser-CoPWN4hn.js → node-sql-parser-IKID_dZE.js} +0 -0
- /package/dist/{ntriples-CUgUpcma.js → ntriples-BnE6tX0Y.js} +0 -0
- /package/dist/{octave-BD652tGl.js → octave-Dfu3PmNP.js} +0 -0
- /package/dist/{oz-DrRsFa0K.js → oz-DqNpAjpZ.js} +0 -0
- /package/dist/{pascal-hpcx9sVn.js → pascal-GP_8jbNL.js} +0 -0
- /package/dist/{path-Bbv2tLY1.js → path-BeMi_1Je.js} +0 -0
- /package/dist/{perl-DW8XHeFc.js → perl-DUDEqQOD.js} +0 -0
- /package/dist/{pig-Cv7Nxbfo.js → pig-Csr4LnKs.js} +0 -0
- /package/dist/{powershell-Dr7WZMDU.js → powershell-Cw4tDKZx.js} +0 -0
- /package/dist/{prop-types-Bd16OEUP.js → prop-types-CzOfzj9N.js} +0 -0
- /package/dist/{properties-D-qJDXAM.js → properties-CUhUGfHR.js} +0 -0
- /package/dist/{protobuf-B48QZbd3.js → protobuf-CPZe957V.js} +0 -0
- /package/dist/{puppet-15JDyiY2.js → puppet-BP1AOwo6.js} +0 -0
- /package/dist/{purify.es-CrfFzTyi.js → purify.es-CDFkadZl.js} +0 -0
- /package/dist/{python-DWkQA94h.js → python-BMcMimC3.js} +0 -0
- /package/dist/{q-BzRpKgfd.js → q-BNfSHUci.js} +0 -0
- /package/dist/{r-dcNRe_Q8.js → r-DiJzLRZc.js} +0 -0
- /package/dist/{range-CQvYp_qE.js → range-sX2tw-Jz.js} +0 -0
- /package/dist/{react-dom-CpBooCbY.js → react-dom-BTjywDxo.js} +0 -0
- /package/dist/{rpm-Djl3Dsf1.js → rpm-CywAxCKo.js} +0 -0
- /package/dist/{ruby-Dd2CZTip.js → ruby-B0a4mSSU.js} +0 -0
- /package/dist/{sas-DYF5_Iqu.js → sas-DTh30wZQ.js} +0 -0
- /package/dist/{scheme-YtWcji1H.js → scheme-CsOlAIFf.js} +0 -0
- /package/dist/{shell-C3uC3Y0Z.js → shell-7w75P-tg.js} +0 -0
- /package/dist/{sieve-DHB17sQG.js → sieve-BphUEMa4.js} +0 -0
- /package/dist/{simple-mode-BMmwP_vI.js → simple-mode-BcThS5Pa.js} +0 -0
- /package/dist/{smalltalk-Y5v1Np3H.js → smalltalk-CHwdNey_.js} +0 -0
- /package/dist/{solr-DvRJLlRD.js → solr-CuWbYJLt.js} +0 -0
- /package/dist/{sparql-BEt3GJwM.js → sparql-BtwCqUvT.js} +0 -0
- /package/dist/{spreadsheet-Dp4B9_rc.js → spreadsheet-C1JzeuKn.js} +0 -0
- /package/dist/{sql-DBsUs8nQ.js → sql-wv_2DQzf.js} +0 -0
- /package/dist/{stex-C6-x52ei.js → stex-BmcrV7cx.js} +0 -0
- /package/dist/{stylus-DroA8via.js → stylus-SVJ7TGPh.js} +0 -0
- /package/dist/{swift-DR0x1ESK.js → swift-f7KaABxm.js} +0 -0
- /package/dist/{tcl-BeuTFc_c.js → tcl-CbTFkeHJ.js} +0 -0
- /package/dist/{textile-C0ikhHN3.js → textile-CFn6QLRy.js} +0 -0
- /package/dist/{tiddlywiki-C_2Nvsgu.js → tiddlywiki-DBhMcdVM.js} +0 -0
- /package/dist/{tiki-CKQlhmQQ.js → tiki-CqcXr_YN.js} +0 -0
- /package/dist/{timer-CcUhugb0.js → timer-ly0jlpkr.js} +0 -0
- /package/dist/{toml-BqNUJWRI.js → toml-YgDIoI1n.js} +0 -0
- /package/dist/{treemap-BYLUKIzA.js → treemap-D5sUCpbF.js} +0 -0
- /package/dist/{troff-DkK0f2ZH.js → troff-CIp_4RXg.js} +0 -0
- /package/dist/{ttcn-Bf8vrg-_.js → ttcn-Yn_uOBYK.js} +0 -0
- /package/dist/{ttcn-cfg-DjCKzd95.js → ttcn-cfg-BVum2rmM.js} +0 -0
- /package/dist/{turtle-SSc84S9m.js → turtle-BeWx-YoQ.js} +0 -0
- /package/dist/{vb-CQ6DC3cL.js → vb-DKEmSA_2.js} +0 -0
- /package/dist/{vbscript-Dw0gFssg.js → vbscript-BPsxuP0n.js} +0 -0
- /package/dist/{velocity-BvJQyBmj.js → velocity-ycm1NvlO.js} +0 -0
- /package/dist/{verilog-CKGAvQjj.js → verilog-ogjm0Ytr.js} +0 -0
- /package/dist/{vhdl-B40_x6fM.js → vhdl-BvjyOM9y.js} +0 -0
- /package/dist/{webidl-Bi9hczCv.js → webidl-QdwcTYEu.js} +0 -0
- /package/dist/{xquery-DwWUXvP3.js → xquery-BErHIIc-.js} +0 -0
- /package/dist/{yacas-ClUs0mmH.js → yacas-BBBJNs0h.js} +0 -0
- /package/dist/{z80-DPC4UGzR.js → z80-nG9RRukG.js} +0 -0
- /package/dist/{zod-mAEs2ITo.js → zod-0AbTN3Cg.js} +0 -0
|
@@ -21,11 +21,12 @@ import {
|
|
|
21
21
|
} from "./base";
|
|
22
22
|
import type { CopilotMode } from "./registry";
|
|
23
23
|
|
|
24
|
+
const POST_EXECUTION_DELAY = 200;
|
|
25
|
+
const WAIT_FOR_CELLS_TIMEOUT = 30_000;
|
|
26
|
+
|
|
24
27
|
interface CellOutput {
|
|
25
28
|
consoleOutput?: string;
|
|
26
|
-
// consoleAttachments?: FileUIPart[];
|
|
27
29
|
cellOutput?: string;
|
|
28
|
-
// cellAttachments?: FileUIPart[];
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
// Must use Record instead of Map because Map serializes to JSON as {}
|
|
@@ -67,6 +68,12 @@ export class RunStaleCellsTool
|
|
|
67
68
|
}) satisfies z.ZodType<RunStaleCellsOutput>;
|
|
68
69
|
readonly mode: CopilotMode[] = ["agent"];
|
|
69
70
|
|
|
71
|
+
private readonly postExecutionDelay: number;
|
|
72
|
+
|
|
73
|
+
constructor(opts?: { postExecutionDelay?: number }) {
|
|
74
|
+
this.postExecutionDelay = opts?.postExecutionDelay ?? POST_EXECUTION_DELAY;
|
|
75
|
+
}
|
|
76
|
+
|
|
70
77
|
handler = async (
|
|
71
78
|
_args: EmptyToolInput,
|
|
72
79
|
toolContext: ToolNotebookContext,
|
|
@@ -91,7 +98,12 @@ export class RunStaleCellsTool
|
|
|
91
98
|
});
|
|
92
99
|
|
|
93
100
|
// Wait for all cells to finish executing
|
|
94
|
-
const allCellsFinished = await this.waitForCellsToFinish(
|
|
101
|
+
const allCellsFinished = await this.waitForCellsToFinish(
|
|
102
|
+
store,
|
|
103
|
+
staleCells,
|
|
104
|
+
WAIT_FOR_CELLS_TIMEOUT,
|
|
105
|
+
this.postExecutionDelay,
|
|
106
|
+
);
|
|
95
107
|
if (!allCellsFinished) {
|
|
96
108
|
return {
|
|
97
109
|
status: "success",
|
|
@@ -105,6 +117,7 @@ export class RunStaleCellsTool
|
|
|
105
117
|
|
|
106
118
|
const cellsToOutput = new Map<CellId, CellOutput | null>();
|
|
107
119
|
let resultMessage = "";
|
|
120
|
+
let outputHasErrors = false;
|
|
108
121
|
|
|
109
122
|
for (const cellId of staleCells) {
|
|
110
123
|
const cellContextData = getCellContextData(cellId, updatedNotebook, {
|
|
@@ -112,13 +125,13 @@ export class RunStaleCellsTool
|
|
|
112
125
|
});
|
|
113
126
|
|
|
114
127
|
let cellOutputString: string | undefined;
|
|
115
|
-
// let cellAttachments: FileUIPart[] | undefined;
|
|
116
128
|
let consoleOutputString: string | undefined;
|
|
117
|
-
// let consoleAttachments: FileUIPart[] | undefined;
|
|
118
129
|
|
|
119
130
|
const cellOutput = cellContextData.cellOutput;
|
|
120
131
|
const consoleOutputs = cellContextData.consoleOutputs;
|
|
121
|
-
|
|
132
|
+
const hasConsoleOutput = consoleOutputs && consoleOutputs.length > 0;
|
|
133
|
+
|
|
134
|
+
if (!cellOutput && !hasConsoleOutput) {
|
|
122
135
|
// Set null to show no output
|
|
123
136
|
cellsToOutput.set(cellId, null);
|
|
124
137
|
continue;
|
|
@@ -126,31 +139,26 @@ export class RunStaleCellsTool
|
|
|
126
139
|
|
|
127
140
|
if (cellOutput) {
|
|
128
141
|
cellOutputString = this.formatOutputString(cellOutput);
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
// cellContextData.cellName,
|
|
133
|
-
// );
|
|
142
|
+
if (this.outputHasErrors(cellOutput)) {
|
|
143
|
+
outputHasErrors = true;
|
|
144
|
+
}
|
|
134
145
|
}
|
|
135
146
|
|
|
136
|
-
if (
|
|
137
|
-
// consoleAttachments = await getAttachmentsForOutputs(
|
|
138
|
-
// consoleOutputs,
|
|
139
|
-
// cellId,
|
|
140
|
-
// cellContextData.cellName,
|
|
141
|
-
// );
|
|
147
|
+
if (hasConsoleOutput) {
|
|
142
148
|
consoleOutputString = consoleOutputs
|
|
143
149
|
.map((output) => this.formatOutputString(output))
|
|
144
150
|
.join("\n");
|
|
145
151
|
resultMessage +=
|
|
146
152
|
"Console output represents the stdout or stderr of the cell (eg. print statements).";
|
|
153
|
+
|
|
154
|
+
if (consoleOutputs.some((output) => this.outputHasErrors(output))) {
|
|
155
|
+
outputHasErrors = true;
|
|
156
|
+
}
|
|
147
157
|
}
|
|
148
158
|
|
|
149
159
|
cellsToOutput.set(cellId, {
|
|
150
160
|
cellOutput: cellOutputString,
|
|
151
161
|
consoleOutput: consoleOutputString,
|
|
152
|
-
// cellAttachments: cellAttachments,
|
|
153
|
-
// consoleAttachments: consoleAttachments,
|
|
154
162
|
});
|
|
155
163
|
}
|
|
156
164
|
|
|
@@ -161,16 +169,32 @@ export class RunStaleCellsTool
|
|
|
161
169
|
};
|
|
162
170
|
}
|
|
163
171
|
|
|
172
|
+
const nextSteps = [
|
|
173
|
+
"Review the output of the cells. The CellId is the key of the result object.",
|
|
174
|
+
outputHasErrors
|
|
175
|
+
? "There are errors in the cells. Please fix them by using the edit notebook tool and the given CellIds."
|
|
176
|
+
: "You may edit the notebook further with the given CellIds.",
|
|
177
|
+
];
|
|
178
|
+
|
|
164
179
|
return {
|
|
165
180
|
status: "success",
|
|
166
181
|
cellsToOutput: Object.fromEntries(cellsToOutput),
|
|
167
182
|
message: resultMessage === "" ? undefined : resultMessage,
|
|
168
|
-
next_steps:
|
|
169
|
-
"Review the output of the cells, if you need to make any changes, you can run this tool again, the CellId is the key of the result object if you want to edit the cell.",
|
|
170
|
-
],
|
|
183
|
+
next_steps: nextSteps,
|
|
171
184
|
};
|
|
172
185
|
};
|
|
173
186
|
|
|
187
|
+
private outputHasErrors(cellOutput: BaseOutput): boolean {
|
|
188
|
+
const { output } = cellOutput;
|
|
189
|
+
if (
|
|
190
|
+
output.mimetype === "application/vnd.marimo+error" ||
|
|
191
|
+
output.mimetype === "application/vnd.marimo+traceback"
|
|
192
|
+
) {
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
|
|
174
198
|
private formatOutputString(cellOutput: BaseOutput): string {
|
|
175
199
|
let outputString = "";
|
|
176
200
|
const { outputType, processedContent, imageUrl, output } = cellOutput;
|
|
@@ -199,7 +223,8 @@ export class RunStaleCellsTool
|
|
|
199
223
|
private async waitForCellsToFinish(
|
|
200
224
|
store: JotaiStore,
|
|
201
225
|
cellIds: CellId[],
|
|
202
|
-
timeout
|
|
226
|
+
timeout: number,
|
|
227
|
+
postExecutionDelay: number,
|
|
203
228
|
): Promise<boolean> {
|
|
204
229
|
const checkAllFinished = (
|
|
205
230
|
notebook: ReturnType<typeof notebookAtom.read>,
|
|
@@ -212,9 +237,18 @@ export class RunStaleCellsTool
|
|
|
212
237
|
});
|
|
213
238
|
};
|
|
214
239
|
|
|
215
|
-
//
|
|
216
|
-
|
|
240
|
+
// Add a small delay after cells finish to allow console outputs to arrive
|
|
241
|
+
// Console outputs are streamed and might still be in-flight
|
|
242
|
+
const delayForConsoleOutputs = async () => {
|
|
243
|
+
if (postExecutionDelay > 0) {
|
|
244
|
+
await new Promise((resolve) => setTimeout(resolve, postExecutionDelay));
|
|
245
|
+
}
|
|
217
246
|
return true;
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
// Return immediately if all cells are finished
|
|
250
|
+
if (checkAllFinished(store.get(notebookAtom))) {
|
|
251
|
+
return await delayForConsoleOutputs();
|
|
218
252
|
}
|
|
219
253
|
|
|
220
254
|
// Wait for notebook state changes with timeout
|
|
@@ -225,7 +259,7 @@ export class RunStaleCellsTool
|
|
|
225
259
|
setTimeout(() => reject(new Error("timeout")), timeout),
|
|
226
260
|
),
|
|
227
261
|
]);
|
|
228
|
-
return
|
|
262
|
+
return await delayForConsoleOutputs();
|
|
229
263
|
} catch {
|
|
230
264
|
return false;
|
|
231
265
|
}
|
package/src/core/cells/ids.ts
CHANGED
|
@@ -94,7 +94,7 @@ export const HTMLCellId = {
|
|
|
94
94
|
*/
|
|
95
95
|
export function findCellId(element: HTMLElement): CellId | null {
|
|
96
96
|
let cellId: CellId | null = null;
|
|
97
|
-
const cellContainer = HTMLCellId.
|
|
97
|
+
const cellContainer = HTMLCellId.findElementThroughShadowDOMs(element);
|
|
98
98
|
if (cellContainer) {
|
|
99
99
|
cellId = HTMLCellId.parse(cellContainer.id);
|
|
100
100
|
}
|
|
@@ -163,23 +163,19 @@ describe("switchLanguage", () => {
|
|
|
163
163
|
// Switch back to python
|
|
164
164
|
switchLanguage(mockEditor, { language: "python", keepCodeAsIs: false });
|
|
165
165
|
expect(mockEditor.state.doc.toString()).toMatchInlineSnapshot(`
|
|
166
|
-
"mo.md(
|
|
167
|
-
r"""
|
|
166
|
+
"mo.md(r"""
|
|
168
167
|
print('Hello')
|
|
169
168
|
print('Goodbye')
|
|
170
|
-
"""
|
|
171
|
-
)"
|
|
169
|
+
""")"
|
|
172
170
|
`);
|
|
173
171
|
|
|
174
172
|
// Switch to sql
|
|
175
173
|
switchLanguage(mockEditor, { language: "sql", keepCodeAsIs: false });
|
|
176
174
|
expect(mockEditor.state.doc.toString()).toMatchInlineSnapshot(`
|
|
177
|
-
"mo.md(
|
|
178
|
-
r"""
|
|
175
|
+
"mo.md(r"""
|
|
179
176
|
print('Hello')
|
|
180
177
|
print('Goodbye')
|
|
181
|
-
"""
|
|
182
|
-
)"
|
|
178
|
+
""")"
|
|
183
179
|
`);
|
|
184
180
|
|
|
185
181
|
// Switch back to python
|
|
@@ -187,12 +183,10 @@ describe("switchLanguage", () => {
|
|
|
187
183
|
expect(mockEditor.state.doc.toString()).toMatchInlineSnapshot(`
|
|
188
184
|
"_df = mo.sql(
|
|
189
185
|
f"""
|
|
190
|
-
mo.md(
|
|
191
|
-
r\\"""
|
|
186
|
+
mo.md(r\\"""
|
|
192
187
|
print('Hello')
|
|
193
188
|
print('Goodbye')
|
|
194
|
-
\\"""
|
|
195
|
-
)
|
|
189
|
+
\\""")
|
|
196
190
|
"""
|
|
197
191
|
)"
|
|
198
192
|
`);
|
|
@@ -185,11 +185,10 @@ describe("MarkdownLanguageAdapter", () => {
|
|
|
185
185
|
});
|
|
186
186
|
|
|
187
187
|
it("should preserve indentation in f-strings", () => {
|
|
188
|
-
const pythonCode =
|
|
189
|
-
'mo.md(\n f"""\n```python\n{some_variable}\n```\n"""\n)';
|
|
188
|
+
const pythonCode = 'mo.md(f"""\n```python\n{some_variable}\n```\n""")';
|
|
190
189
|
const [innerCode, offset, metadata] = adapter.transformIn(pythonCode);
|
|
191
190
|
expect(innerCode).toBe("```python\n{some_variable}\n```");
|
|
192
|
-
expect(offset).toBe(
|
|
191
|
+
expect(offset).toBe(10);
|
|
193
192
|
expect(metadata.quotePrefix).toBe("f");
|
|
194
193
|
|
|
195
194
|
// Transform out
|
|
@@ -198,7 +197,7 @@ describe("MarkdownLanguageAdapter", () => {
|
|
|
198
197
|
metadata,
|
|
199
198
|
);
|
|
200
199
|
expect(outerCode).toMatch(pythonCode);
|
|
201
|
-
expect(outerOffset).toBe(
|
|
200
|
+
expect(outerOffset).toBe(12);
|
|
202
201
|
});
|
|
203
202
|
|
|
204
203
|
it("should handle f-strings", () => {
|
|
@@ -252,41 +251,35 @@ describe("MarkdownLanguageAdapter", () => {
|
|
|
252
251
|
const code = '"Hello" world';
|
|
253
252
|
const [wrappedCode, offset] = adapter.transformOut(code, metadata);
|
|
254
253
|
expect(wrappedCode).toMatchInlineSnapshot(`
|
|
255
|
-
"mo.md(
|
|
256
|
-
"""
|
|
254
|
+
"mo.md("""
|
|
257
255
|
"Hello" world
|
|
258
|
-
"""
|
|
259
|
-
)"
|
|
256
|
+
""")"
|
|
260
257
|
`);
|
|
261
|
-
expect(offset).toBe(
|
|
258
|
+
expect(offset).toBe(11);
|
|
262
259
|
});
|
|
263
260
|
|
|
264
261
|
it("ends with quote", () => {
|
|
265
262
|
const code = 'Hello "world"';
|
|
266
263
|
const [wrappedCode, offset] = adapter.transformOut(code, metadata);
|
|
267
264
|
expect(wrappedCode).toMatchInlineSnapshot(`
|
|
268
|
-
"mo.md(
|
|
269
|
-
"""
|
|
265
|
+
"mo.md("""
|
|
270
266
|
Hello "world"
|
|
271
|
-
"""
|
|
272
|
-
)"
|
|
267
|
+
""")"
|
|
273
268
|
`);
|
|
274
|
-
expect(offset).toBe(
|
|
269
|
+
expect(offset).toBe(11);
|
|
275
270
|
});
|
|
276
271
|
|
|
277
272
|
it("should wrap Markdown code with triple double-quoted string format", () => {
|
|
278
273
|
const code = "# Markdown Title\n\nSome content here.";
|
|
279
274
|
const [wrappedCode, offset] = adapter.transformOut(code, metadata);
|
|
280
275
|
expect(wrappedCode).toMatchInlineSnapshot(`
|
|
281
|
-
"mo.md(
|
|
282
|
-
"""
|
|
276
|
+
"mo.md("""
|
|
283
277
|
# Markdown Title
|
|
284
278
|
|
|
285
279
|
Some content here.
|
|
286
|
-
"""
|
|
287
|
-
)"
|
|
280
|
+
""")"
|
|
288
281
|
`);
|
|
289
|
-
expect(offset).toBe(
|
|
282
|
+
expect(offset).toBe(11);
|
|
290
283
|
});
|
|
291
284
|
|
|
292
285
|
it("should escape triple quotes in the Markdown code", () => {
|
|
@@ -312,14 +305,12 @@ describe("MarkdownLanguageAdapter", () => {
|
|
|
312
305
|
metadata.quotePrefix = "f";
|
|
313
306
|
const [wrappedCode, offset] = adapter.transformOut(code, metadata);
|
|
314
307
|
expect(wrappedCode).toMatchInlineSnapshot(`
|
|
315
|
-
"mo.md(
|
|
316
|
-
f"""
|
|
308
|
+
"mo.md(f"""
|
|
317
309
|
# Title
|
|
318
310
|
{some_variable}
|
|
319
|
-
"""
|
|
320
|
-
)"
|
|
311
|
+
""")"
|
|
321
312
|
`);
|
|
322
|
-
expect(offset).toBe(
|
|
313
|
+
expect(offset).toBe(12);
|
|
323
314
|
});
|
|
324
315
|
|
|
325
316
|
it("should handle rf-strings in transformOut", () => {
|
|
@@ -327,14 +318,12 @@ describe("MarkdownLanguageAdapter", () => {
|
|
|
327
318
|
metadata.quotePrefix = "rf";
|
|
328
319
|
const [wrappedCode, offset] = adapter.transformOut(code, metadata);
|
|
329
320
|
expect(wrappedCode).toMatchInlineSnapshot(`
|
|
330
|
-
"mo.md(
|
|
331
|
-
rf"""
|
|
321
|
+
"mo.md(rf"""
|
|
332
322
|
# Title
|
|
333
323
|
{some_variable}
|
|
334
|
-
"""
|
|
335
|
-
)"
|
|
324
|
+
""")"
|
|
336
325
|
`);
|
|
337
|
-
expect(offset).toBe(
|
|
326
|
+
expect(offset).toBe(13);
|
|
338
327
|
});
|
|
339
328
|
});
|
|
340
329
|
|
|
@@ -369,13 +358,11 @@ describe("MarkdownLanguageAdapter", () => {
|
|
|
369
358
|
|
|
370
359
|
it("should return true for complex nested markdown", () => {
|
|
371
360
|
const pythonCode = String.raw`
|
|
372
|
-
mo.md(
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
"""
|
|
378
|
-
)
|
|
361
|
+
mo.md(rf"""
|
|
362
|
+
\`\`\`python
|
|
363
|
+
{pathlib.Path(__file__).read_text(encoding="utf-8")}
|
|
364
|
+
\`\`\`
|
|
365
|
+
""")
|
|
379
366
|
`;
|
|
380
367
|
expect(adapter.isSupported(pythonCode)).toBe(true);
|
|
381
368
|
});
|
|
@@ -44,8 +44,15 @@ import {
|
|
|
44
44
|
import type { LanguageAdapter } from "../types";
|
|
45
45
|
|
|
46
46
|
const pylspClient = once((lspConfig: LSPConfig) => {
|
|
47
|
+
// Create a mutable reference for the resync callback
|
|
48
|
+
let resyncCallback: (() => Promise<void>) | undefined;
|
|
49
|
+
|
|
50
|
+
const transport = createTransport("pylsp", async () => {
|
|
51
|
+
await resyncCallback?.();
|
|
52
|
+
});
|
|
53
|
+
|
|
47
54
|
const lspClientOpts = {
|
|
48
|
-
transport
|
|
55
|
+
transport,
|
|
49
56
|
rootUri: getLSPDocumentRootUri(),
|
|
50
57
|
workspaceFolders: [],
|
|
51
58
|
};
|
|
@@ -126,47 +133,74 @@ const pylspClient = once((lspConfig: LSPConfig) => {
|
|
|
126
133
|
|
|
127
134
|
// We wrap the client in a NotebookLanguageServerClient to add some
|
|
128
135
|
// additional functionality to handle multiple cells
|
|
129
|
-
|
|
136
|
+
const notebookClient = new NotebookLanguageServerClient(
|
|
130
137
|
new LanguageServerClient({
|
|
131
138
|
...lspClientOpts,
|
|
132
139
|
}),
|
|
133
140
|
settings,
|
|
134
141
|
);
|
|
142
|
+
|
|
143
|
+
// Set the resync callback now that the client exists
|
|
144
|
+
resyncCallback = () => notebookClient.resyncAllDocuments();
|
|
145
|
+
|
|
146
|
+
return notebookClient;
|
|
135
147
|
});
|
|
136
148
|
|
|
137
149
|
const tyLspClient = once((_: LSPConfig) => {
|
|
150
|
+
let resyncCallback: (() => Promise<void>) | undefined;
|
|
151
|
+
|
|
152
|
+
const transport = createTransport("ty", async () => {
|
|
153
|
+
await resyncCallback?.();
|
|
154
|
+
});
|
|
155
|
+
|
|
138
156
|
const lspClientOpts = {
|
|
139
|
-
transport
|
|
157
|
+
transport,
|
|
140
158
|
rootUri: getLSPDocumentRootUri(),
|
|
141
159
|
workspaceFolders: [],
|
|
142
160
|
};
|
|
143
161
|
|
|
144
162
|
// We wrap the client in a NotebookLanguageServerClient to add some
|
|
145
163
|
// additional functionality to handle multiple cells
|
|
146
|
-
|
|
164
|
+
const notebookClient = new NotebookLanguageServerClient(
|
|
147
165
|
new LanguageServerClient({
|
|
148
166
|
...lspClientOpts,
|
|
149
167
|
getWorkspaceConfiguration: (_) => [{ disableLanguageServices: true }],
|
|
150
168
|
}),
|
|
151
169
|
{},
|
|
152
170
|
);
|
|
171
|
+
|
|
172
|
+
// Set the resync callback now that the client exists
|
|
173
|
+
resyncCallback = () => notebookClient.resyncAllDocuments();
|
|
174
|
+
|
|
175
|
+
return notebookClient;
|
|
153
176
|
});
|
|
154
177
|
|
|
155
178
|
const pyrightClient = once((_: LSPConfig) => {
|
|
179
|
+
let resyncCallback: (() => Promise<void>) | undefined;
|
|
180
|
+
|
|
181
|
+
const transport = createTransport("basedpyright", async () => {
|
|
182
|
+
await resyncCallback?.();
|
|
183
|
+
});
|
|
184
|
+
|
|
156
185
|
const lspClientOpts = {
|
|
157
|
-
transport
|
|
186
|
+
transport,
|
|
158
187
|
rootUri: getLSPDocumentRootUri(),
|
|
159
188
|
workspaceFolders: [],
|
|
160
189
|
};
|
|
161
190
|
|
|
162
191
|
// We wrap the client in a NotebookLanguageServerClient to add some
|
|
163
192
|
// additional functionality to handle multiple cells
|
|
164
|
-
|
|
193
|
+
const notebookClient = new NotebookLanguageServerClient(
|
|
165
194
|
new LanguageServerClient({
|
|
166
195
|
...lspClientOpts,
|
|
167
196
|
}),
|
|
168
197
|
{},
|
|
169
198
|
);
|
|
199
|
+
|
|
200
|
+
// Set the resync callback now that the client exists
|
|
201
|
+
resyncCallback = () => notebookClient.resyncAllDocuments();
|
|
202
|
+
|
|
203
|
+
return notebookClient;
|
|
170
204
|
});
|
|
171
205
|
|
|
172
206
|
/**
|
|
@@ -134,7 +134,7 @@ class SQLCompletionStore {
|
|
|
134
134
|
if (!connection) {
|
|
135
135
|
return ModifiedStandardSQL;
|
|
136
136
|
}
|
|
137
|
-
return guessDialect(connection)
|
|
137
|
+
return guessDialect(connection);
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
getCompletionSource(connectionName: ConnectionName): SQLConfig | null {
|
|
@@ -152,7 +152,7 @@ class SQLCompletionStore {
|
|
|
152
152
|
const schema = this.cache.getOrCreate(connection);
|
|
153
153
|
|
|
154
154
|
return {
|
|
155
|
-
dialect: guessDialect(connection)
|
|
155
|
+
dialect: guessDialect(connection),
|
|
156
156
|
schema: schema.shouldAddLocalTables
|
|
157
157
|
? { ...schema.schema, ...getTablesMap() }
|
|
158
158
|
: schema.schema,
|
|
@@ -38,6 +38,7 @@ import type { HotkeyProvider } from "@/core/hotkeys/hotkeys";
|
|
|
38
38
|
import type { ValidateSQLResult } from "@/core/kernel/messages";
|
|
39
39
|
import { store } from "@/core/state/jotai";
|
|
40
40
|
import { resolvedThemeAtom } from "@/theme/useTheme";
|
|
41
|
+
import { logNever } from "@/utils/assertNever";
|
|
41
42
|
import { Logger } from "@/utils/Logger";
|
|
42
43
|
import { variableCompletionSource } from "../../embedded/embedded-python";
|
|
43
44
|
import { languageMetadataField } from "../../metadata";
|
|
@@ -52,6 +53,7 @@ import {
|
|
|
52
53
|
} from "./completion-sources";
|
|
53
54
|
import { SCHEMA_CACHE } from "./completion-store";
|
|
54
55
|
import { getSQLMode, type SQLMode } from "./sql-mode";
|
|
56
|
+
import { isKnownDialect } from "./utils";
|
|
55
57
|
|
|
56
58
|
const DEFAULT_DIALECT = DuckDBDialect;
|
|
57
59
|
const DEFAULT_PARSER_DIALECT = "DuckDB";
|
|
@@ -353,6 +355,11 @@ function connectionNameToParserDialect(
|
|
|
353
355
|
): ParserDialects | null {
|
|
354
356
|
const dialect =
|
|
355
357
|
SCHEMA_CACHE.getInternalDialect(connectionName)?.toLowerCase();
|
|
358
|
+
|
|
359
|
+
if (!dialect || !isKnownDialect(dialect)) {
|
|
360
|
+
return null;
|
|
361
|
+
}
|
|
362
|
+
|
|
356
363
|
switch (dialect) {
|
|
357
364
|
case "postgresql":
|
|
358
365
|
case "postgres":
|
|
@@ -385,8 +392,15 @@ function connectionNameToParserDialect(
|
|
|
385
392
|
case "flink":
|
|
386
393
|
return "FlinkSQL";
|
|
387
394
|
case "mongodb":
|
|
395
|
+
case "noql":
|
|
388
396
|
return "Noql";
|
|
397
|
+
case "oracle":
|
|
398
|
+
case "oracledb":
|
|
399
|
+
case "timescaledb":
|
|
400
|
+
Logger.debug("Unsupported dialect", { dialect });
|
|
401
|
+
return null;
|
|
389
402
|
default:
|
|
403
|
+
logNever(dialect);
|
|
390
404
|
return null;
|
|
391
405
|
}
|
|
392
406
|
}
|
|
@@ -17,14 +17,52 @@ import {
|
|
|
17
17
|
DuckDBDialect,
|
|
18
18
|
} from "@marimo-team/codemirror-sql/dialects";
|
|
19
19
|
import type { DataSourceConnection } from "@/core/kernel/messages";
|
|
20
|
+
import { logNever } from "@/utils/assertNever";
|
|
21
|
+
import { Logger } from "@/utils/Logger";
|
|
22
|
+
|
|
23
|
+
const KNOWN_DIALECTS_ARRAY = [
|
|
24
|
+
"postgresql",
|
|
25
|
+
"postgres",
|
|
26
|
+
"db2",
|
|
27
|
+
"mysql",
|
|
28
|
+
"sqlite",
|
|
29
|
+
"mssql",
|
|
30
|
+
"sqlserver",
|
|
31
|
+
"duckdb",
|
|
32
|
+
"mariadb",
|
|
33
|
+
"cassandra",
|
|
34
|
+
"noql",
|
|
35
|
+
"athena",
|
|
36
|
+
"bigquery",
|
|
37
|
+
"hive",
|
|
38
|
+
"redshift",
|
|
39
|
+
"snowflake",
|
|
40
|
+
"flink",
|
|
41
|
+
"mongodb",
|
|
42
|
+
"oracle",
|
|
43
|
+
"oracledb",
|
|
44
|
+
"timescaledb",
|
|
45
|
+
] as const;
|
|
46
|
+
const KNOWN_DIALECTS: ReadonlySet<string> = new Set(KNOWN_DIALECTS_ARRAY);
|
|
47
|
+
type KnownDialect = (typeof KNOWN_DIALECTS_ARRAY)[number];
|
|
48
|
+
|
|
49
|
+
export function isKnownDialect(dialect: string): dialect is KnownDialect {
|
|
50
|
+
return KNOWN_DIALECTS.has(dialect);
|
|
51
|
+
}
|
|
20
52
|
|
|
21
53
|
/**
|
|
22
54
|
* Guess the CodeMirror SQL dialect from the backend connection dialect.
|
|
55
|
+
* If unknown, return the standard SQL dialect.
|
|
23
56
|
*/
|
|
24
57
|
export function guessDialect(
|
|
25
58
|
connection: Pick<DataSourceConnection, "dialect">,
|
|
26
|
-
): SQLDialect
|
|
27
|
-
|
|
59
|
+
): SQLDialect {
|
|
60
|
+
const dialect = connection.dialect;
|
|
61
|
+
if (!isKnownDialect(dialect)) {
|
|
62
|
+
return ModifiedStandardSQL;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
switch (dialect) {
|
|
28
66
|
case "postgresql":
|
|
29
67
|
case "postgres":
|
|
30
68
|
return PostgreSQL;
|
|
@@ -46,8 +84,21 @@ export function guessDialect(
|
|
|
46
84
|
return PLSQL;
|
|
47
85
|
case "bigquery":
|
|
48
86
|
return BigQueryDialect;
|
|
87
|
+
case "timescaledb":
|
|
88
|
+
return PostgreSQL; // TimescaleDB is a PostgreSQL dialect
|
|
89
|
+
case "athena":
|
|
90
|
+
case "db2":
|
|
91
|
+
case "hive":
|
|
92
|
+
case "redshift":
|
|
93
|
+
case "snowflake":
|
|
94
|
+
case "flink":
|
|
95
|
+
case "mongodb":
|
|
96
|
+
case "noql":
|
|
97
|
+
Logger.debug("Unsupported dialect", { dialect });
|
|
98
|
+
return ModifiedStandardSQL;
|
|
49
99
|
default:
|
|
50
|
-
|
|
100
|
+
logNever(dialect);
|
|
101
|
+
return ModifiedStandardSQL;
|
|
51
102
|
}
|
|
52
103
|
}
|
|
53
104
|
|
|
@@ -99,9 +99,17 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
|
|
|
99
99
|
CellId,
|
|
100
100
|
EditorView | null | undefined
|
|
101
101
|
>;
|
|
102
|
-
|
|
102
|
+
private readonly initialSettings: Record<string, unknown>;
|
|
103
103
|
private static readonly SEEN_CELL_DOCUMENT_URIS = new Set<CellDocumentUri>();
|
|
104
104
|
|
|
105
|
+
/**
|
|
106
|
+
* Cache of completion items to avoid jitter while typing in the same completion item
|
|
107
|
+
*/
|
|
108
|
+
private readonly completionItemCache = new LRUCache<
|
|
109
|
+
string,
|
|
110
|
+
Promise<LSP.CompletionItem>
|
|
111
|
+
>(10);
|
|
112
|
+
|
|
105
113
|
constructor(
|
|
106
114
|
client: ILanguageServerClient,
|
|
107
115
|
initialSettings: Record<string, unknown>,
|
|
@@ -112,7 +120,7 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
|
|
|
112
120
|
) {
|
|
113
121
|
this.documentUri = getLSPDocument();
|
|
114
122
|
this.getNotebookEditors = getNotebookEditors;
|
|
115
|
-
|
|
123
|
+
this.initialSettings = initialSettings;
|
|
116
124
|
this.client = client;
|
|
117
125
|
this.patchProcessNotification();
|
|
118
126
|
|
|
@@ -177,6 +185,37 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
|
|
|
177
185
|
this.client.close();
|
|
178
186
|
}
|
|
179
187
|
|
|
188
|
+
/**
|
|
189
|
+
* Re-synchronize all open documents with the LSP server.
|
|
190
|
+
* This is called after a WebSocket reconnection to restore document state.
|
|
191
|
+
*/
|
|
192
|
+
public async resyncAllDocuments(): Promise<void> {
|
|
193
|
+
invariant(
|
|
194
|
+
isClientWithNotify(this.client),
|
|
195
|
+
"notify is not a method on the client",
|
|
196
|
+
);
|
|
197
|
+
await this.client.initialize();
|
|
198
|
+
this.client.notify("workspace/didChangeConfiguration", {
|
|
199
|
+
settings: this.initialSettings,
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
// Get the current document state
|
|
203
|
+
const { lens, version } = this.snapshotter.snapshot();
|
|
204
|
+
|
|
205
|
+
// Re-open the merged document with the LSP server
|
|
206
|
+
// This sends a textDocument/didOpen for the entire notebook
|
|
207
|
+
await this.client.textDocumentDidOpen({
|
|
208
|
+
textDocument: {
|
|
209
|
+
languageId: "python", // Default to Python for marimo notebooks
|
|
210
|
+
text: lens.mergedText,
|
|
211
|
+
uri: this.documentUri,
|
|
212
|
+
version: version,
|
|
213
|
+
},
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
Logger.log("[lsp] Document re-synchronization complete");
|
|
217
|
+
}
|
|
218
|
+
|
|
180
219
|
private getNotebookCode() {
|
|
181
220
|
return store.get(topologicalCodesAtom);
|
|
182
221
|
}
|
|
@@ -428,10 +467,19 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
|
|
|
428
467
|
};
|
|
429
468
|
}
|
|
430
469
|
|
|
431
|
-
completionItemResolve(
|
|
470
|
+
async completionItemResolve(
|
|
432
471
|
params: LSP.CompletionItem,
|
|
433
472
|
): Promise<LSP.CompletionItem> {
|
|
434
|
-
|
|
473
|
+
// Used cached result to avoid jitter while typing in the same completion item
|
|
474
|
+
const key = JSON.stringify(params);
|
|
475
|
+
const cached = this.completionItemCache.get(key);
|
|
476
|
+
if (cached) {
|
|
477
|
+
return cached;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
const resolved = this.client.completionItemResolve(params);
|
|
481
|
+
this.completionItemCache.set(key, resolved);
|
|
482
|
+
return resolved;
|
|
435
483
|
}
|
|
436
484
|
|
|
437
485
|
async textDocumentPrepareRename(
|