@marimo-team/frontend 0.21.2-dev5 → 0.21.2-dev53
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-CDSBsjjF.js → CellStatus-DX8MnBMk.js} +1 -1
- package/dist/assets/{ConnectedDataExplorerComponent-Buaffg3u.js → ConnectedDataExplorerComponent-7yXYooWG.js} +1 -1
- package/dist/assets/{DeferredRequestRegistry-O6RDJKs0.js → DeferredRequestRegistry-B8jPCuU1.js} +1 -1
- package/dist/assets/{ImperativeModal-qEtcJ95s.js → ImperativeModal-C3CD5-Aq.js} +1 -1
- package/dist/assets/JsonOutput-DqjAyzM8.js +46 -0
- package/dist/assets/{LazyAnyLanguageCodeMirror-m8w66E4s.js → LazyAnyLanguageCodeMirror-CcCHIX38.js} +2 -2
- package/dist/assets/{MarimoErrorOutput-az74f3Mp.js → MarimoErrorOutput-Dat_S09q.js} +5 -5
- package/dist/assets/RenderHTML-C7XM39M2.js +1 -0
- package/dist/assets/{add-cell-with-ai-DUn4LN4W.js → add-cell-with-ai-y2xroEGf.js} +9 -9
- package/dist/assets/{add-connection-dialog-CBz0AUVX.js → add-connection-dialog-QDBOmil3.js} +23 -23
- package/dist/assets/{agent-panel-u83dsDsM.js → agent-panel-DziFrEjJ.js} +6 -6
- package/dist/assets/ai-model-dropdown-CiJpv5wN.js +5 -0
- package/dist/assets/{alert-dialog-9WfvUF7e.js → alert-dialog-ebk_-wsU.js} +1 -1
- package/dist/assets/{any-language-editor-DwQMnAM3.js → any-language-editor-DZYnKlJB.js} +1 -1
- package/dist/assets/{app-config-button-rDu-lCIB.js → app-config-button-CpAv9Tiu.js} +1 -1
- package/dist/assets/{architectureDiagram-VXUJARFQ-DfMHHFZ3.js → architectureDiagram-VXUJARFQ-DKmk99ac.js} +1 -1
- package/dist/assets/{azure-BTXHztTw.js → azure-Dw5gKmUz.js} +1 -1
- package/dist/assets/{blockDiagram-VD42YOAC-CuEDwbg7.js → blockDiagram-VD42YOAC-TpAhP5OQ.js} +1 -1
- package/dist/assets/{c4Diagram-YG6GDRKO-CD9uz7WG.js → c4Diagram-YG6GDRKO-Dg8hCyKf.js} +1 -1
- package/dist/assets/{cache-panel-qIxnndwr.js → cache-panel-D0OsHk_D.js} +1 -1
- package/dist/assets/cell-editor-RbAVpSFb.js +22 -0
- package/dist/assets/{cell-link-Q_UEP94Z.js → cell-link-CNgO3c-T.js} +1 -1
- package/dist/assets/{cells-fq1RMGX_.js → cells-39RE4UzS.js} +77 -76
- package/dist/assets/channel-D1wPYhc9.js +1 -0
- package/dist/assets/{chat-display-D_Fuuy6r.js → chat-display-BPUVrlA6.js} +1 -1
- package/dist/assets/{chat-panel-BO-JoQSp.js → chat-panel-esz5TfF-.js} +2 -2
- package/dist/assets/{chunk-5FQGJX7Z-CM1a_K7I.js → chunk-5FQGJX7Z-sGWxL7Ey.js} +3 -3
- package/dist/assets/{chunk-ABZYJK2D-D_Wumzom.js → chunk-ABZYJK2D-DXJ7hnjx.js} +1 -1
- package/dist/assets/{chunk-ATLVNIR6-BZ0lTgIn.js → chunk-ATLVNIR6-CTEqcLEc.js} +1 -1
- package/dist/assets/{chunk-B4BG7PRW-Dw1S6osV.js → chunk-B4BG7PRW-CkAIqtPf.js} +1 -1
- package/dist/assets/{chunk-DI55MBZ5-Q63FTCPP.js → chunk-DI55MBZ5-C4F9vu8o.js} +1 -1
- package/dist/assets/{chunk-EXTU4WIE-CfkJ_R7W.js → chunk-EXTU4WIE-BT0Py-4P.js} +1 -1
- package/dist/assets/{chunk-JA3XYJ7Z-B41fGeoj.js → chunk-JA3XYJ7Z-CGd7jja_.js} +1 -1
- package/dist/assets/{chunk-JZLCHNYA-D43EJxQw.js → chunk-JZLCHNYA-CqY-RYTj.js} +1 -1
- package/dist/assets/{chunk-N4CR4FBY-DCtw0-ni.js → chunk-N4CR4FBY-aUDjVzN7.js} +2 -2
- package/dist/assets/{chunk-QN33PNHL-CLA2rsaS.js → chunk-QN33PNHL-DHnCb5-U.js} +1 -1
- package/dist/assets/{chunk-QXUST7PY-De1DpbnL.js → chunk-QXUST7PY-CRO5kYCE.js} +1 -1
- package/dist/assets/{chunk-S3R3BYOJ-qrwvlUdq.js → chunk-S3R3BYOJ-CSHQgcuP.js} +1 -1
- package/dist/assets/{chunk-TZMSLE5B-C4KcThb0.js → chunk-TZMSLE5B-CE7o9asH.js} +1 -1
- package/dist/assets/classDiagram-2ON5EDUG-BDIQSKYv.js +1 -0
- package/dist/assets/classDiagram-v2-WZHVMYZB-Cdh4cVOB.js +1 -0
- package/dist/assets/{code-block-37QAKDTI-D4FF4cnN.js → code-block-37QAKDTI-DMpe1jNG.js} +1 -1
- package/dist/assets/{column-preview-WsubyItX.js → column-preview-BUKHsglA.js} +1 -1
- package/dist/assets/{command-rfxSsiHU.js → command-DmzEbs6L.js} +1 -1
- package/dist/assets/{command-palette-Bez4BqJF.js → command-palette-BX5gNpUr.js} +1 -1
- package/dist/assets/{common-BYwO983A.js → common-B4yshY-H.js} +1 -1
- package/dist/assets/{components-Ozq0825a.js → components-DCqJqyys.js} +1 -1
- package/dist/assets/{components-Bpgzv_5_.js → components-oKCjx6cN.js} +1 -1
- package/dist/assets/{config-3Aq84phF.js → config-DqxNMQDN.js} +1 -1
- package/dist/assets/{context-CIAP2NOh.js → context-CRmPPhx9.js} +1 -1
- package/dist/assets/{context-aware-panel-CfsfBlhO.js → context-aware-panel-DC0Te9Hj.js} +2 -2
- package/dist/assets/copy-KjcPgPw9.js +1 -0
- package/dist/assets/{copy-icon-BgmMM9Zg.js → copy-icon-P0kzz1Pr.js} +1 -1
- package/dist/assets/{dagre-6UL2VRFP-BhMnPhuU.js → dagre-6UL2VRFP-XqoNLMQ3.js} +1 -1
- package/dist/assets/{data-grid-overlay-editor-kbv73SQ7.js → data-grid-overlay-editor-Cus1-BFN.js} +1 -1
- package/dist/assets/{datasource-F9sJtuof.js → datasource-DKHG39NV.js} +2 -2
- package/dist/assets/{dates-CHaNfieI.js → dates-CTqMeMGY.js} +1 -1
- package/dist/assets/{dependency-graph-panel-AOBcX2tP.js → dependency-graph-panel-7GKT3dyD.js} +4 -4
- package/dist/assets/{diagram-PSM6KHXK-Cr2t4zul.js → diagram-PSM6KHXK-BuzKNNcN.js} +1 -1
- package/dist/assets/{diagram-QEK2KX5R-DLU_hSO4.js → diagram-QEK2KX5R-A5LBQS11.js} +1 -1
- package/dist/assets/{diagram-S2PKOQOG-C7EkNAO3.js → diagram-S2PKOQOG-dkJE8SA0.js} +1 -1
- package/dist/assets/{dialog-CVN1lcMF.js → dialog-1_jIyAb_.js} +1 -1
- package/dist/assets/{dist-DJBpXGro.js → dist-6P6vjf93.js} +1 -1
- package/dist/assets/dist-BWGxTsTP.js +1 -0
- package/dist/assets/{dist-CblX3KGI.js → dist-B_buFm3B.js} +1 -1
- package/dist/assets/{dist-CXLJUPFl.js → dist-BatEf-0f.js} +1 -1
- package/dist/assets/dist-C3AnARPE.js +1 -0
- package/dist/assets/{dist-BNC_tnlW.js → dist-C6ohaMKU.js} +1 -1
- package/dist/assets/{dist-BoDHthoc.js → dist-CO9Pg2Rc.js} +1 -1
- package/dist/assets/{dist-By6zhkxZ.js → dist-CSV6H5w_.js} +1 -1
- package/dist/assets/{dist-6FIAeDIu.js → dist-CYs1oP7g.js} +1 -1
- package/dist/assets/{dist-DbK_4_qo.js → dist-DD9ZJMK5.js} +1 -1
- package/dist/assets/{dist-DlTbNRBn.js → dist-DReDpc2z.js} +1 -1
- package/dist/assets/dist-DSlq5ZeQ.js +1 -0
- package/dist/assets/{dist-DrceDAhM.js → dist-DXyIIB32.js} +1 -1
- package/dist/assets/{dist-CcGcwrUD.js → dist-DkaderFA.js} +1 -1
- package/dist/assets/{dist-BiZQlfhr.js → dist-Dq3BlK4R.js} +1 -1
- package/dist/assets/{dist-ClzRAVN-.js → dist-Dxov2ltb.js} +1 -1
- package/dist/assets/{dist-BXXPfIam.js → dist-EtGG9C1A.js} +1 -1
- package/dist/assets/{dist-C3MmXcLA.js → dist-NjId5Gdz.js} +1 -1
- package/dist/assets/dist-ZM59OWYL.js +1 -0
- package/dist/assets/dist-_TwZ4tIe.js +1 -0
- package/dist/assets/dist-f9b2H4q_.js +1 -0
- package/dist/assets/{dist-mxGLXOFm.js → dist-feWVQ4dq.js} +1 -1
- package/dist/assets/{documentation-panel-D28MpqbI.js → documentation-panel-D5d_BbHV.js} +1 -1
- package/dist/assets/{download-B9_ToVd4.js → download-B1vXaivj.js} +4 -4
- package/dist/assets/{dropdown-menu-DdPu5Kfu.js → dropdown-menu-BehqiLFL.js} +1 -1
- package/dist/assets/{edit-page-otS-QvnC.js → edit-page-B5cAZdO7.js} +7 -7
- package/dist/assets/{en-US-BO8E69bZ.js → en-US-f8tajDx1.js} +1 -1
- package/dist/assets/{erDiagram-Q2GNP2WA-DqlEo_Us.js → erDiagram-Q2GNP2WA-CgH6udOW.js} +1 -1
- package/dist/assets/{error-banner-BRG6IPhC.js → error-banner-J5F3weEj.js} +1 -1
- package/dist/assets/{error-panel-RRoj_iOR.js → error-panel-DnhKJ5Ou.js} +1 -1
- package/dist/assets/{es-CzkousWe.js → es-DYI7U61K.js} +1 -1
- package/dist/assets/{esm-CBkHtTOV.js → esm-BC1J92im.js} +1 -1
- package/dist/assets/{esm-DhTsVMLM.js → esm-DKLLCu3N.js} +1 -1
- package/dist/assets/{field-B1jGbQlH.js → field-B08lvxnl.js} +1 -1
- package/dist/assets/file-explorer-panel-BUk69TND.js +26 -0
- package/dist/assets/{file-icons-CWLHDa1J.js → file-icons-3DTS8ZM7.js} +1 -1
- package/dist/assets/{floating-outline-BvQKiC0F.js → floating-outline-DmugATcB.js} +1 -1
- package/dist/assets/{flowDiagram-NV44I4VS-CQlIJ12H.js → flowDiagram-NV44I4VS-D85BL4rA.js} +1 -1
- package/dist/assets/{focus-DYwTiH9-.js → focus-DlJH7sfh.js} +1 -1
- package/dist/assets/{form-CrQYrsUC.js → form-760_EqmF.js} +2 -2
- package/dist/assets/{formats-rhOJovGE.js → formats-wYuh1bqp.js} +1 -1
- package/dist/assets/{formatting-B4ZCH3ol.js → formatting-CraOPe94.js} +1 -1
- package/dist/assets/{gallery-page-eRea0yic.js → gallery-page--paiPvYX.js} +1 -1
- package/dist/assets/{ganttDiagram-JELNMOA3-B3EGIuZL.js → ganttDiagram-JELNMOA3-DzCOXWlF.js} +1 -1
- package/dist/assets/{gitGraphDiagram-V2S2FVAM-h5SlguJK.js → gitGraphDiagram-V2S2FVAM-BUHURX6t.js} +1 -1
- package/dist/assets/{glide-data-editor-xt5xNZeV.js → glide-data-editor-DYdoQTO5.js} +4 -4
- package/dist/assets/{globals-BsV5fVR-.js → globals-7M5DRsIb.js} +1 -1
- package/dist/assets/home-page-CxQ1e98h.js +4 -0
- package/dist/assets/{hooks-CHx5dUUq.js → hooks-C3jEff2O.js} +1 -1
- package/dist/assets/html-to-image-DTFXm6_Z.js +2 -0
- package/dist/assets/{index-GjXovVsl.css → index-BmoocKR0.css} +1 -1
- package/dist/assets/index-DNchElHl.js +38 -0
- package/dist/assets/{infoDiagram-HS3SLOUP-pzpClObZ.js → infoDiagram-HS3SLOUP-GG5r0Y5G.js} +1 -1
- package/dist/assets/{input-CUwqpKjd.js → input-CN1ZeRYm.js} +1 -1
- package/dist/assets/{isValid-BGe7pJXT.js → isValid-DY4Mgbr7.js} +1 -1
- package/dist/assets/{journeyDiagram-XKPGCS4Q-BrdRi92v.js → journeyDiagram-XKPGCS4Q-B1dvnV4D.js} +1 -1
- package/dist/assets/{kanban-definition-3W4ZIXB7-B6WqgFqh.js → kanban-definition-3W4ZIXB7-CefbrXQv.js} +1 -1
- package/dist/assets/{kiosk-mode-DNjEnIWb.js → kiosk-mode-CyTnrzwK.js} +1 -1
- package/dist/assets/{layout-CwFtCyW8.js → layout-3b3tzmbb.js} +3 -3
- package/dist/assets/{linear-BP9rwmWK.js → linear-BDnrHGYO.js} +1 -1
- package/dist/assets/{links-CIQwYQ48.js → links-CptYD1FP.js} +1 -1
- package/dist/assets/{logs-panel-BU1tNEVc.js → logs-panel-C4k_2IHW.js} +1 -1
- package/dist/assets/{markdown-renderer-MR9df58W.js → markdown-renderer-DSy5IuAx.js} +1 -1
- package/dist/assets/{menu-items-UxKrm8hS.js → menu-items-BpHXKv51.js} +1 -1
- package/dist/assets/mermaid-4DMBBIKO-g7AL4SLJ.js +1 -0
- package/dist/assets/{mermaid-Djr3jUAB.js → mermaid-C43VbdrM.js} +3 -3
- package/dist/assets/{mermaid-parser.core-DR82IMb2.js → mermaid-parser.core-CdM8D_p_.js} +1 -1
- package/dist/assets/{mindmap-definition-VGOIOE7T-DAmJpbPM.js → mindmap-definition-VGOIOE7T-CcV7D-wF.js} +1 -1
- package/dist/assets/{mode-AcL8c6qH.js → mode-D-iRbN9x.js} +1 -1
- package/dist/assets/{multi-map-Pp1P2DOX.js → multi-map-C8RbwBrw.js} +1 -1
- package/dist/assets/{name-cell-input-DVFEv_aO.js → name-cell-input-Dyb0ZO4X.js} +1 -1
- package/dist/assets/{number-overlay-editor-D__AflXQ.js → number-overlay-editor-BBJO1mf8.js} +1 -1
- package/dist/assets/{outline-panel-CP0oIuiU.js → outline-panel-D7CJwO8u.js} +1 -1
- package/dist/assets/{packages-panel-CzRELimG.js → packages-panel-Bp1SYjgc.js} +1 -1
- package/dist/assets/{panels-wTweRyIv.js → panels-D0aw6jdc.js} +1 -1
- package/dist/assets/{pieDiagram-ADFJNKIX-DbGIFRoq.js → pieDiagram-ADFJNKIX-C1fBf15W.js} +1 -1
- package/dist/assets/{popover-BPGG2gPG.js → popover-Bvoif-Mg.js} +1 -1
- package/dist/assets/{precisionRound-BOmLQIKI.js → precisionRound-CCOoIlcP.js} +1 -1
- package/dist/assets/{process-output-CTVsT--B.js → process-output-BxPWHcIi.js} +1 -1
- package/dist/assets/{quadrantDiagram-AYHSOK5B-CLAtyple.js → quadrantDiagram-AYHSOK5B-RVooN-fX.js} +1 -1
- package/dist/assets/{react-vega-BZav_-2n.js → react-vega-BKRQSy0g.js} +1 -1
- package/dist/assets/react-vega-DXESF7qN.js +1 -0
- package/dist/assets/{readonly-python-code-DH-1xZGq.js → readonly-python-code-D95oshJa.js} +1 -1
- package/dist/assets/{renderShortcut-CnD1Dah5.js → renderShortcut-BYvKm38e.js} +1 -1
- package/dist/assets/{request-registry-B-7cIM_I.js → request-registry-XB2EzJHm.js} +1 -1
- package/dist/assets/{requirementDiagram-UZGBJVZJ-DDDTB1LD.js → requirementDiagram-UZGBJVZJ-DtqOYJpH.js} +1 -1
- package/dist/assets/{run-page-FCvGnICa.js → run-page-B7CASued.js} +1 -1
- package/dist/assets/{sankeyDiagram-TZEHDZUN-DAWPOfBw.js → sankeyDiagram-TZEHDZUN-DmcooLA8.js} +1 -1
- package/dist/assets/{scratchpad-panel-k9lrm-rC.js → scratchpad-panel-BIVRgYOU.js} +1 -1
- package/dist/assets/{secrets-panel-B1Z-6dmz.js → secrets-panel-C24hZEiO.js} +1 -1
- package/dist/assets/{select-CxT2Geqr.js → select-Cnd3vm9n.js} +1 -1
- package/dist/assets/{sequenceDiagram-WL72ISMW-D_qAidD2.js → sequenceDiagram-WL72ISMW-S2qeLb7J.js} +1 -1
- package/dist/assets/{session-panel-WhN0qilM.js → session-panel-CNabBHQm.js} +1 -1
- package/dist/assets/{share-BdH_5I58.js → share-NjpZ54PJ.js} +1 -1
- package/dist/assets/{snippets-panel-BCDHUuku.js → snippets-panel-D1JAeJj1.js} +1 -1
- package/dist/assets/{spec-DbmSqx09.js → spec-DnVBmJUh.js} +1 -1
- package/dist/assets/{state-Ce7CVShi.js → state-BagvlaEz.js} +1 -1
- package/dist/assets/{state-3V5UxC3B.js → state-Cz_wrzCz.js} +1 -1
- package/dist/assets/{state-CBmCYWFH.js → state-DMQXxemS.js} +1 -1
- package/dist/assets/{stateDiagram-FKZM4ZOC-C7qgDrGA.js → stateDiagram-FKZM4ZOC-uuQ60pIl.js} +1 -1
- package/dist/assets/stateDiagram-v2-4FDKWEC3-D-GWhQTG.js +1 -0
- package/dist/assets/stex-CruVQx-P.js +1 -0
- package/dist/assets/{switch-CVKxYu_0.js → switch-Bwpd2AFq.js} +1 -1
- package/dist/assets/{terminal-Cr7wbEjz.js → terminal-Gl8Fi44y.js} +1 -1
- package/dist/assets/{time-D2GKc0U6.js → time-Bw8f15NM.js} +1 -1
- package/dist/assets/{timeline-definition-IT6M3QCI-hd6uJKGs.js → timeline-definition-IT6M3QCI-TKWeDnSQ.js} +1 -1
- package/dist/assets/{toggle-RCwU-rnE.js → toggle-C_gNjXg8.js} +1 -1
- package/dist/assets/{tooltip-D9723Brr.js → tooltip-CR_izE8Q.js} +1 -1
- package/dist/assets/tracing-DwAC7DWN.js +1 -0
- package/dist/assets/tracing-panel-D1iNgclL.js +2 -0
- package/dist/assets/{tree-Ch2-GuhG.js → tree-WVrWjdwv.js} +3 -3
- package/dist/assets/{useAddCell-YC7rpcmD.js → useAddCell-D6Q7JziZ.js} +1 -1
- package/dist/assets/{useBoolean-m1e6E3Ao.js → useBoolean-CrltYVhE.js} +1 -1
- package/dist/assets/{useCellActionButton-GUb2fXU8.js → useCellActionButton-B2G9OaX9.js} +1 -1
- package/dist/assets/{useDateFormatter-CpE7XQLs.js → useDateFormatter-DOoVZUts.js} +1 -1
- package/dist/assets/{useDeleteCell-DRUDRiy0.js → useDeleteCell-d8veThW7.js} +1 -1
- package/dist/assets/{useDependencyPanelTab-nFVMlEx0.js → useDependencyPanelTab-B3iIj3MO.js} +1 -1
- package/dist/assets/{useInstallPackage-C9V-on2J.js → useInstallPackage-CQEr5429.js} +1 -1
- package/dist/assets/{useNotebookActions-ChLHy-0O.js → useNotebookActions-SAEOWcBo.js} +1 -1
- package/dist/assets/{useNumberFormatter-DbDKSvEd.js → useNumberFormatter-BXZcbTzH.js} +1 -1
- package/dist/assets/{usePress-BHGkpw8X.js → usePress-alQ5Crny.js} +1 -1
- package/dist/assets/{useRunCells-5m6jCnyo.js → useRunCells-Dhl8ZTGh.js} +1 -1
- package/dist/assets/{useSplitCell-DGD9smMq.js → useSplitCell-BSnFazbH.js} +1 -1
- package/dist/assets/{utils-CdjCA1J8.js → utils-C24l2A1T.js} +1 -1
- package/dist/assets/{vega-component-CRbeDmeM.js → vega-component-9Pf4pVZL.js} +1 -1
- package/dist/assets/{vega-loader.browser-CZV6_g2i.js → vega-loader.browser-BJ9oKrvH.js} +1 -1
- package/dist/assets/{write-secret-modal-BCvuRAFb.js → write-secret-modal-BFCsWMoW.js} +1 -1
- package/dist/assets/{xychartDiagram-PRI3JC2R-CXlUBSbQ.js → xychartDiagram-PRI3JC2R-CIp-yeSa.js} +1 -1
- package/dist/index.html +125 -125
- package/package.json +1 -1
- package/src/__mocks__/notebook.ts +9 -9
- package/src/__tests__/branded.ts +20 -0
- package/src/components/app-config/user-config-form.tsx +5 -4
- package/src/components/data-table/__tests__/utils.test.ts +138 -1
- package/src/components/data-table/charts/__tests__/storage.test.ts +7 -7
- package/src/components/data-table/context-menu.tsx +9 -5
- package/src/components/data-table/data-table.tsx +3 -0
- package/src/components/data-table/range-focus/__tests__/atoms.test.ts +8 -2
- package/src/components/data-table/range-focus/__tests__/test-utils.ts +2 -0
- package/src/components/data-table/range-focus/__tests__/utils.test.ts +82 -8
- package/src/components/data-table/range-focus/atoms.ts +2 -2
- package/src/components/data-table/range-focus/utils.ts +50 -12
- package/src/components/data-table/types.ts +7 -0
- package/src/components/data-table/utils.ts +87 -0
- package/src/components/editor/__tests__/data-attributes.test.tsx +8 -8
- package/src/components/editor/ai/__tests__/completion-utils.test.ts +15 -15
- package/src/components/editor/navigation/__tests__/clipboard.test.ts +2 -2
- package/src/components/editor/navigation/__tests__/selection.test.ts +7 -6
- package/src/components/editor/navigation/__tests__/state.test.ts +8 -7
- package/src/components/editor/output/MarimoErrorOutput.tsx +7 -7
- package/src/components/editor/output/__tests__/traceback.test.tsx +4 -4
- package/src/components/editor/output/console/__tests__/ConsoleOutput.test.tsx +4 -4
- package/src/components/editor/renderers/vertical-layout/useFocusFirstEditor.ts +8 -1
- package/src/components/storage/storage-file-viewer.tsx +35 -1
- package/src/components/storage/storage-inspector.tsx +9 -4
- package/src/components/storage/storage-snippets.ts +3 -3
- package/src/components/tracing/tracing.tsx +3 -1
- package/src/components/ui/range-slider.tsx +108 -1
- package/src/core/ai/__tests__/staged-cells.test.ts +9 -8
- package/src/core/ai/context/providers/__tests__/cell-output.test.ts +31 -31
- package/src/core/ai/context/providers/__tests__/datasource.test.ts +3 -3
- package/src/core/ai/context/providers/__tests__/tables.test.ts +3 -2
- package/src/core/ai/context/providers/__tests__/variable.test.ts +84 -63
- package/src/core/ai/tools/__tests__/edit-notebook-tool.test.ts +10 -9
- package/src/core/ai/tools/__tests__/run-cells-tool.test.ts +6 -6
- package/src/core/ai/tools/edit-notebook-tool.ts +3 -3
- package/src/core/cells/__tests__/add-missing-import.test.ts +3 -3
- package/src/core/cells/__tests__/cells.test.ts +192 -135
- package/src/core/cells/__tests__/focus.test.ts +5 -4
- package/src/core/cells/__tests__/logs.test.ts +13 -12
- package/src/core/cells/__tests__/pending-delete-service.test.tsx +3 -3
- package/src/core/cells/__tests__/runs.test.ts +22 -21
- package/src/core/cells/__tests__/scrollCellIntoView.test.ts +8 -7
- package/src/core/cells/__tests__/session.test.ts +23 -22
- package/src/core/cells/cells.ts +1 -1
- package/src/core/cells/ids.ts +5 -5
- package/src/core/cells/logs.ts +2 -2
- package/src/core/cells/runs.ts +6 -8
- package/src/core/codemirror/__tests__/format.test.ts +34 -36
- package/src/core/codemirror/__tests__/setup.test.ts +2 -2
- package/src/core/codemirror/cells/__tests__/extensions.test.ts +114 -0
- package/src/core/codemirror/cells/__tests__/traceback-decorations.test.ts +33 -32
- package/src/core/codemirror/cells/extensions.ts +66 -23
- package/src/core/codemirror/completion/__tests__/keymap.test.ts +15 -35
- package/src/core/codemirror/completion/keymap.ts +14 -4
- package/src/core/codemirror/copilot/__tests__/getCodes.test.ts +12 -13
- package/src/core/codemirror/language/__tests__/utils.test.ts +3 -3
- package/src/core/codemirror/language/embedded/__tests__/embedded-python.test.ts +7 -8
- package/src/core/codemirror/language/languages/python.ts +4 -0
- package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +4 -3
- package/src/core/codemirror/lsp/notebook-lsp.ts +28 -2
- package/src/core/codemirror/reactive-references/__tests__/analyzer.test.ts +7 -6
- package/src/core/codemirror/reactive-references/analyzer.ts +2 -2
- package/src/core/codemirror/rtc/loro/__tests__/sync.test.ts +52 -0
- package/src/core/codemirror/rtc/loro/sync.ts +1 -0
- package/src/core/datasets/__tests__/data-source.test.ts +5 -6
- package/src/core/datasets/state.ts +1 -1
- package/src/core/errors/__tests__/errors.test.ts +2 -1
- package/src/core/export/__tests__/hooks.test.ts +37 -36
- package/src/core/islands/main.ts +2 -7
- package/src/core/kernel/__tests__/handlers.test.ts +5 -4
- package/src/core/kernel/handlers.ts +7 -4
- package/src/core/network/DeferredRequestRegistry.ts +2 -2
- package/src/core/network/__tests__/CachingRequestRegistry.test.ts +9 -10
- package/src/core/network/__tests__/DeferredRequestRegistry.test.ts +4 -6
- package/src/core/static/__tests__/virtual-file-tracker.test.ts +8 -8
- package/src/core/static/virtual-file-tracker.ts +1 -1
- package/src/core/storage/__tests__/state.test.ts +31 -21
- package/src/core/storage/state.ts +1 -1
- package/src/core/variables/__tests__/state.test.ts +6 -6
- package/src/core/variables/types.ts +2 -2
- package/src/core/wasm/__tests__/state.test.ts +8 -8
- package/src/core/websocket/useMarimoKernelConnection.tsx +12 -15
- package/src/css/md-tooltip.css +4 -39
- package/src/css/md.css +7 -0
- package/src/plugins/core/RenderHTML.tsx +17 -0
- package/src/plugins/core/__test__/RenderHTML.test.ts +45 -0
- package/src/plugins/core/sanitize-html.ts +25 -18
- package/src/plugins/impl/DataTablePlugin.tsx +23 -2
- package/src/plugins/impl/SliderPlugin.tsx +1 -3
- package/src/plugins/impl/__tests__/SliderPlugin.test.tsx +120 -0
- package/src/plugins/impl/anywidget/model.ts +1 -2
- package/src/stories/cell.stories.tsx +8 -8
- package/src/stories/layout/vertical/one-column.stories.tsx +9 -8
- package/src/stories/log-viewer.stories.tsx +8 -8
- package/src/stories/variables.stories.tsx +2 -2
- package/src/utils/__tests__/download.test.tsx +21 -20
- package/src/utils/copy.ts +18 -5
- package/src/utils/download.ts +4 -3
- package/src/utils/html-to-image.ts +6 -0
- package/src/utils/json/base64.ts +3 -3
- package/src/utils/traceback.ts +5 -3
- package/dist/assets/JsonOutput-DKXKGKvX.js +0 -46
- package/dist/assets/RenderHTML-DJ8khuob.js +0 -1
- package/dist/assets/ai-model-dropdown-DPTa_EpU.js +0 -5
- package/dist/assets/cell-editor-DX7IcqNr.js +0 -23
- package/dist/assets/channel-CkT8Qdo2.js +0 -1
- package/dist/assets/classDiagram-2ON5EDUG-BhMT_rTz.js +0 -1
- package/dist/assets/classDiagram-v2-WZHVMYZB-D-F4WEyb.js +0 -1
- package/dist/assets/copy-YwM0Pd7v.js +0 -1
- package/dist/assets/dist-BTqMkf4j.js +0 -1
- package/dist/assets/dist-DHw9sXeN.js +0 -1
- package/dist/assets/dist-Du0qZeXz.js +0 -1
- package/dist/assets/dist-a0FfbvMD.js +0 -1
- package/dist/assets/dist-cfkfP0ni.js +0 -1
- package/dist/assets/dist-pzQ9JG-p.js +0 -1
- package/dist/assets/file-explorer-panel-CB8vF5ob.js +0 -26
- package/dist/assets/home-page-itW0tRmv.js +0 -4
- package/dist/assets/html-to-image-BnSc-Wa0.js +0 -2
- package/dist/assets/index-0n92c_W7.js +0 -38
- package/dist/assets/mermaid-4DMBBIKO-PoHnhmy8.js +0 -1
- package/dist/assets/react-vega-Da-Ps9UW.js +0 -1
- package/dist/assets/stateDiagram-v2-4FDKWEC3-CEqeIlM0.js +0 -1
- package/dist/assets/stex-BBWVYm-R.js +0 -1
- package/dist/assets/tracing-DUVd0jtl.js +0 -1
- package/dist/assets/tracing-panel-CuTxPn_x.js +0 -2
- /package/dist/assets/{Combination-Cs9nbinQ.js → Combination-CSPK4t6z.js} +0 -0
- /package/dist/assets/{Deferred-BMfCOLaw.js → Deferred-CfyqLOPG.js} +0 -0
- /package/dist/assets/{SSRProvider-DC7ElCZZ.js → SSRProvider-CwqN9FWV.js} +0 -0
- /package/dist/assets/{badge-hTpPIsMT.js → badge-DImLVznf.js} +0 -0
- /package/dist/assets/{blob-CObhN-9g.js → blob-DgooIGjS.js} +0 -0
- /package/dist/assets/{bot-message-square-CK6eoGWy.js → bot-message-square-Dw41U6lL.js} +0 -0
- /package/dist/assets/{chart-no-axes-column-DV8gdCvH.js → chart-no-axes-column-a9XtWmzk.js} +0 -0
- /package/dist/assets/{check-BE0hEwVo.js → check-DZA_bRpw.js} +0 -0
- /package/dist/assets/{chevron-right-D0GQBpTb.js → chevron-right-CvVxySQk.js} +0 -0
- /package/dist/assets/{circle-check-gLIOLu8x.js → circle-check-CbaVeozR.js} +0 -0
- /package/dist/assets/{circle-play-DYGULlKZ.js → circle-play-DYn5nR6N.js} +0 -0
- /package/dist/assets/{circle-plus-CGG-gArM.js → circle-plus-nCze0-py.js} +0 -0
- /package/dist/assets/{clipboard-paste-DoYSN8Sv.js → clipboard-paste-EHXeKq9D.js} +0 -0
- /package/dist/assets/{code-xml-DwHPF_nL.js → code-xml-BlrJCgNZ.js} +0 -0
- /package/dist/assets/{copy-CkudG0Ej.js → copy-D6N1-xc1.js} +0 -0
- /package/dist/assets/{database-zap-DTWCDKdn.js → database-zap-BIGMFOfP.js} +0 -0
- /package/dist/assets/{defaultLocale-DK1MWd7f.js → defaultLocale-CGfP-Ye3.js} +0 -0
- /package/dist/assets/{defaultLocale-OkOxlkkM.js → defaultLocale-CuYNS33t.js} +0 -0
- /package/dist/assets/{dist-8UD0A5sU.js → dist-BF9S272t.js} +0 -0
- /package/dist/assets/{dist-apDpadc4.js → dist-Bk1itfBD.js} +0 -0
- /package/dist/assets/{dist-CQqv2gQL.js → dist-Dm11d0_A.js} +0 -0
- /package/dist/assets/{download-DBW9RXtT.js → download-nLboiTtW.js} +0 -0
- /package/dist/assets/{ellipsis-0_zJdF6H.js → ellipsis-d7eaKIFn.js} +0 -0
- /package/dist/assets/{ellipsis-vertical-CAB7tdza.js → ellipsis-vertical-DBQ5kWTo.js} +0 -0
- /package/dist/assets/{emotion-is-prop-valid.esm-D1keIaYa.js → emotion-is-prop-valid.esm-D7FeWASw.js} +0 -0
- /package/dist/assets/{errors-Bfogio62.js → errors-0IrrdfSG.js} +0 -0
- /package/dist/assets/{extends-DRbCSry7.js → extends-aq1t6BkR.js} +0 -0
- /package/dist/assets/{eye-off-vwi9L975.js → eye-off-CF3GmvXV.js} +0 -0
- /package/dist/assets/{file-DzHkbIdO.js → file-C-yMeaec.js} +0 -0
- /package/dist/assets/{file-headphone-B5q2Ow55.js → file-headphone-CPAP8asn.js} +0 -0
- /package/dist/assets/{file-plus-corner-lLQw9OnR.js → file-plus-corner-ks__N1mr.js} +0 -0
- /package/dist/assets/{github-BVtI-3F1.js → github-CRD4USKm.js} +0 -0
- /package/dist/assets/{image-DXfkah9d.js → image-CfyJzBP9.js} +0 -0
- /package/dist/assets/{link-Cf10mh3t.js → link-_dbp0XNB.js} +0 -0
- /package/dist/assets/{maps-OKerBHH8.js → maps-DQsjfyTy.js} +0 -0
- /package/dist/assets/{numbers-CYnquDho.js → numbers-Cno6K0UF.js} +0 -0
- /package/dist/assets/{objectWithoutPropertiesLoose-DP4vAkvg.js → objectWithoutPropertiesLoose-Dxmp_Bd_.js} +0 -0
- /package/dist/assets/{ordinal-BjO5SoTk.js → ordinal-CMAUv8ku.js} +0 -0
- /package/dist/assets/{paths-D2lG83Oh.js → paths-BVwhPRFT.js} +0 -0
- /package/dist/assets/{play-DKSqmedg.js → play-Bu_0ogGD.js} +0 -0
- /package/dist/assets/{plus-dVmh0yTy.js → plus-DJ99CUbx.js} +0 -0
- /package/dist/assets/{preload-helper-BW0IMuFq.js → preload-helper-y72bE5iF.js} +0 -0
- /package/dist/assets/{prop-types-RrUi-pOT.js → prop-types-DRf51_gT.js} +0 -0
- /package/dist/assets/{purify.es-BBn8CPhf.js → purify.es-Cf8RQecB.js} +0 -0
- /package/dist/assets/{range-DNqFcYmr.js → range-ClqUI25v.js} +0 -0
- /package/dist/assets/{refresh-ccw-DLpfIr8v.js → refresh-ccw-DQ6SJ8UC.js} +0 -0
- /package/dist/assets/{refresh-cw-CHAHPgkx.js → refresh-cw-Dg9tCj4k.js} +0 -0
- /package/dist/assets/{rotate-ccw-hLlF_82X.js → rotate-ccw-BCkZViUZ.js} +0 -0
- /package/dist/assets/{save-8fSvKYJT.js → save-CUdcv5qm.js} +0 -0
- /package/dist/assets/{session-BrEm7qNv.js → session-CByuQ-M-.js} +0 -0
- /package/dist/assets/{settings-CzQUw9rV.js → settings-B7nhfCat.js} +0 -0
- /package/dist/assets/{spinner-C5JoisA7.js → spinner-pCogyRyo.js} +0 -0
- /package/dist/assets/{square-CxAsQQ77.js → square-KVNDGpgy.js} +0 -0
- /package/dist/assets/{square-function-B006EYFX.js → square-function-BMNCw7Qb.js} +0 -0
- /package/dist/assets/{stex-0ac7Aukl.js → stex-C6JeW1YI.js} +0 -0
- /package/dist/assets/{table-BCnp9gKC.js → table-Od8PbuV-.js} +0 -0
- /package/dist/assets/{toDate-BqKH-Jd9.js → toDate-Cfp9W_O9.js} +0 -0
- /package/dist/assets/{trash-2-CAoNMkjq.js → trash-2-Bc_J7TQO.js} +0 -0
- /package/dist/assets/{trash-BZMAQneW.js → trash-Cxd189Vw.js} +0 -0
- /package/dist/assets/{triangle-alert-qZo1ox6x.js → triangle-alert-CzLrbLGN.js} +0 -0
- /package/dist/assets/{types-C1RN112u.js → types-CLOMZuqU.js} +0 -0
- /package/dist/assets/{use-toast-Hc8CXlvz.js → use-toast-BtZldTi5.js} +0 -0
- /package/dist/assets/{useDebounce-B0dx2Gp0.js → useDebounce-DwTO_rGp.js} +0 -0
- /package/dist/assets/{useTheme-BYXBU1of.js → useTheme-KDW4sktg.js} +0 -0
- /package/dist/assets/{uuid-ClFZlR7U.js → uuid-BukULOeS.js} +0 -0
- /package/dist/assets/{workflow-BmeqNuSH.js → workflow-BqHyyStM.js} +0 -0
- /package/dist/assets/{x-BI1M8X_v.js → x-CdLP7-v3.js} +0 -0
- /package/dist/assets/{youtube-DE-Ej6FR.js → youtube-CfU-SnDw.js} +0 -0
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
3
|
|
|
4
4
|
import { describe, expect, it, vi } from "vitest";
|
|
5
|
-
import
|
|
5
|
+
import { cellId, variableName } from "@/__tests__/branded";
|
|
6
6
|
import type { DatasetTablesMap } from "@/core/datasets/data-source-connections";
|
|
7
|
-
import type { Variable,
|
|
7
|
+
import type { Variable, Variables } from "@/core/variables/types";
|
|
8
8
|
import { type VariableContextItem, VariableContextProvider } from "../variable";
|
|
9
9
|
|
|
10
10
|
// Mock the variable completions module
|
|
@@ -17,7 +17,7 @@ vi.mock("@/core/codemirror/completion/variable-completions", () => ({
|
|
|
17
17
|
prefix: string,
|
|
18
18
|
) => {
|
|
19
19
|
return Object.entries(variables).map(([name, variable]) => ({
|
|
20
|
-
name: `${prefix}${name}
|
|
20
|
+
name: variableName(`${prefix}${name}`),
|
|
21
21
|
displayname: name,
|
|
22
22
|
detail: variable.dataType || "unknown",
|
|
23
23
|
boost,
|
|
@@ -34,9 +34,9 @@ const createMockVariable = (
|
|
|
34
34
|
name: string,
|
|
35
35
|
options: Partial<Variable> = {},
|
|
36
36
|
): Variable => ({
|
|
37
|
-
name: name
|
|
38
|
-
declaredBy: ["cell1"
|
|
39
|
-
usedBy: ["cell2"
|
|
37
|
+
name: variableName(name),
|
|
38
|
+
declaredBy: [cellId("cell1")],
|
|
39
|
+
usedBy: [cellId("cell2")],
|
|
40
40
|
value: `value_of_${name}`,
|
|
41
41
|
dataType: "str",
|
|
42
42
|
...options,
|
|
@@ -55,10 +55,13 @@ describe("VariableContextProvider", () => {
|
|
|
55
55
|
|
|
56
56
|
it("should return variable items for single variable", () => {
|
|
57
57
|
const variables: Variables = {
|
|
58
|
-
["user_name"
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
58
|
+
[variableName("user_name")]: createMockVariable(
|
|
59
|
+
variableName("user_name"),
|
|
60
|
+
{
|
|
61
|
+
value: '"John Doe"',
|
|
62
|
+
dataType: "str",
|
|
63
|
+
},
|
|
64
|
+
),
|
|
62
65
|
};
|
|
63
66
|
const tablesMap: DatasetTablesMap = new Map();
|
|
64
67
|
const provider = new VariableContextProvider(variables, tablesMap);
|
|
@@ -69,29 +72,32 @@ describe("VariableContextProvider", () => {
|
|
|
69
72
|
|
|
70
73
|
it("should return variable items for multiple variables with different types", () => {
|
|
71
74
|
const variables: Variables = {
|
|
72
|
-
["user_id"
|
|
75
|
+
[variableName("user_id")]: createMockVariable(variableName("user_id"), {
|
|
73
76
|
value: "123",
|
|
74
77
|
dataType: "int",
|
|
75
|
-
declaredBy: ["cell1"
|
|
76
|
-
usedBy: ["cell2"
|
|
77
|
-
}),
|
|
78
|
-
["is_active" as VariableName]: createMockVariable("is_active", {
|
|
79
|
-
value: "True",
|
|
80
|
-
dataType: "bool",
|
|
81
|
-
declaredBy: ["cell2" as CellId],
|
|
82
|
-
usedBy: [],
|
|
78
|
+
declaredBy: [cellId("cell1")],
|
|
79
|
+
usedBy: [cellId("cell2"), cellId("cell3")],
|
|
83
80
|
}),
|
|
84
|
-
["
|
|
81
|
+
[variableName("is_active")]: createMockVariable(
|
|
82
|
+
variableName("is_active"),
|
|
83
|
+
{
|
|
84
|
+
value: "True",
|
|
85
|
+
dataType: "bool",
|
|
86
|
+
declaredBy: [cellId("cell2")],
|
|
87
|
+
usedBy: [],
|
|
88
|
+
},
|
|
89
|
+
),
|
|
90
|
+
[variableName("scores")]: createMockVariable(variableName("scores"), {
|
|
85
91
|
value: "[1, 2, 3, 4, 5]",
|
|
86
92
|
dataType: "list",
|
|
87
|
-
declaredBy: ["cell3"
|
|
88
|
-
usedBy: ["cell4"
|
|
93
|
+
declaredBy: [cellId("cell3")],
|
|
94
|
+
usedBy: [cellId("cell4")],
|
|
89
95
|
}),
|
|
90
|
-
["config"
|
|
96
|
+
[variableName("config")]: createMockVariable(variableName("config"), {
|
|
91
97
|
value: '{"debug": true, "timeout": 30}',
|
|
92
98
|
dataType: "dict",
|
|
93
|
-
declaredBy: ["cell1"
|
|
94
|
-
usedBy: ["cell2"
|
|
99
|
+
declaredBy: [cellId("cell1")],
|
|
100
|
+
usedBy: [cellId("cell2"), cellId("cell4")],
|
|
95
101
|
}),
|
|
96
102
|
};
|
|
97
103
|
const tablesMap: DatasetTablesMap = new Map();
|
|
@@ -103,18 +109,27 @@ describe("VariableContextProvider", () => {
|
|
|
103
109
|
|
|
104
110
|
it("should handle variables with null/undefined values", () => {
|
|
105
111
|
const variables: Variables = {
|
|
106
|
-
["null_var"
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
112
|
+
[variableName("null_var")]: createMockVariable(
|
|
113
|
+
variableName("null_var"),
|
|
114
|
+
{
|
|
115
|
+
value: null,
|
|
116
|
+
dataType: "NoneType",
|
|
117
|
+
},
|
|
118
|
+
),
|
|
119
|
+
[variableName("undefined_var")]: createMockVariable(
|
|
120
|
+
variableName("undefined_var"),
|
|
121
|
+
{
|
|
122
|
+
value: undefined,
|
|
123
|
+
dataType: null,
|
|
124
|
+
},
|
|
125
|
+
),
|
|
126
|
+
[variableName("empty_string")]: createMockVariable(
|
|
127
|
+
variableName("empty_string"),
|
|
128
|
+
{
|
|
129
|
+
value: '""',
|
|
130
|
+
dataType: "str",
|
|
131
|
+
},
|
|
132
|
+
),
|
|
118
133
|
};
|
|
119
134
|
const tablesMap: DatasetTablesMap = new Map();
|
|
120
135
|
const provider = new VariableContextProvider(variables, tablesMap);
|
|
@@ -125,23 +140,23 @@ describe("VariableContextProvider", () => {
|
|
|
125
140
|
|
|
126
141
|
it("should handle complex data types", () => {
|
|
127
142
|
const variables: Variables = {
|
|
128
|
-
["df"
|
|
143
|
+
[variableName("df")]: createMockVariable(variableName("df"), {
|
|
129
144
|
value: "<DataFrame shape: (100, 5)>",
|
|
130
145
|
dataType: "pandas.DataFrame",
|
|
131
|
-
declaredBy: ["cell1"
|
|
132
|
-
usedBy: ["cell2"
|
|
146
|
+
declaredBy: [cellId("cell1")],
|
|
147
|
+
usedBy: [cellId("cell2"), cellId("cell3")],
|
|
133
148
|
}),
|
|
134
|
-
["model"
|
|
149
|
+
[variableName("model")]: createMockVariable(variableName("model"), {
|
|
135
150
|
value: "<sklearn.linear_model.LinearRegression>",
|
|
136
151
|
dataType: "sklearn.linear_model._base.LinearRegression",
|
|
137
|
-
declaredBy: ["cell4"
|
|
138
|
-
usedBy: ["cell5"
|
|
152
|
+
declaredBy: [cellId("cell4")],
|
|
153
|
+
usedBy: [cellId("cell5")],
|
|
139
154
|
}),
|
|
140
|
-
["array"
|
|
155
|
+
[variableName("array")]: createMockVariable(variableName("array"), {
|
|
141
156
|
value: "array([1, 2, 3, 4, 5])",
|
|
142
157
|
dataType: "numpy.ndarray",
|
|
143
|
-
declaredBy: ["cell2"
|
|
144
|
-
usedBy: ["cell3"
|
|
158
|
+
declaredBy: [cellId("cell2")],
|
|
159
|
+
usedBy: [cellId("cell3")],
|
|
145
160
|
}),
|
|
146
161
|
};
|
|
147
162
|
const tablesMap: DatasetTablesMap = new Map();
|
|
@@ -153,21 +168,27 @@ describe("VariableContextProvider", () => {
|
|
|
153
168
|
|
|
154
169
|
it("should handle variables with special characters in names", () => {
|
|
155
170
|
const variables: Variables = {
|
|
156
|
-
["_private_var"
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
171
|
+
[variableName("_private_var")]: createMockVariable(
|
|
172
|
+
variableName("_private_var"),
|
|
173
|
+
{
|
|
174
|
+
value: "42",
|
|
175
|
+
dataType: "int",
|
|
176
|
+
},
|
|
177
|
+
),
|
|
178
|
+
[variableName("var_with_numbers123")]: createMockVariable(
|
|
179
|
+
variableName("var_with_numbers123"),
|
|
162
180
|
{
|
|
163
181
|
value: '"test"',
|
|
164
182
|
dataType: "str",
|
|
165
183
|
},
|
|
166
184
|
),
|
|
167
|
-
["CONSTANT_VAR"
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
185
|
+
[variableName("CONSTANT_VAR")]: createMockVariable(
|
|
186
|
+
variableName("CONSTANT_VAR"),
|
|
187
|
+
{
|
|
188
|
+
value: "3.14159",
|
|
189
|
+
dataType: "float",
|
|
190
|
+
},
|
|
191
|
+
),
|
|
171
192
|
};
|
|
172
193
|
const tablesMap: DatasetTablesMap = new Map();
|
|
173
194
|
const provider = new VariableContextProvider(variables, tablesMap);
|
|
@@ -191,7 +212,7 @@ describe("VariableContextProvider", () => {
|
|
|
191
212
|
data: { variable },
|
|
192
213
|
};
|
|
193
214
|
|
|
194
|
-
const variables: Variables = { ["username"
|
|
215
|
+
const variables: Variables = { [variableName("username")]: variable };
|
|
195
216
|
const tablesMap: DatasetTablesMap = new Map();
|
|
196
217
|
const provider = new VariableContextProvider(variables, tablesMap);
|
|
197
218
|
|
|
@@ -213,7 +234,7 @@ describe("VariableContextProvider", () => {
|
|
|
213
234
|
};
|
|
214
235
|
|
|
215
236
|
const variables: Variables = {
|
|
216
|
-
["mystery_var"
|
|
237
|
+
[variableName("mystery_var")]: variable,
|
|
217
238
|
};
|
|
218
239
|
const tablesMap: DatasetTablesMap = new Map();
|
|
219
240
|
const provider = new VariableContextProvider(variables, tablesMap);
|
|
@@ -237,7 +258,7 @@ describe("VariableContextProvider", () => {
|
|
|
237
258
|
};
|
|
238
259
|
|
|
239
260
|
const variables: Variables = {
|
|
240
|
-
["complex_data"
|
|
261
|
+
[variableName("complex_data")]: variable,
|
|
241
262
|
};
|
|
242
263
|
const tablesMap: DatasetTablesMap = new Map();
|
|
243
264
|
const provider = new VariableContextProvider(variables, tablesMap);
|
|
@@ -260,7 +281,7 @@ describe("VariableContextProvider", () => {
|
|
|
260
281
|
data: { variable },
|
|
261
282
|
};
|
|
262
283
|
|
|
263
|
-
const variables: Variables = { ["sales_df"
|
|
284
|
+
const variables: Variables = { [variableName("sales_df")]: variable };
|
|
264
285
|
const tablesMap: DatasetTablesMap = new Map();
|
|
265
286
|
const provider = new VariableContextProvider(variables, tablesMap);
|
|
266
287
|
|
|
@@ -284,12 +305,12 @@ describe("VariableContextProvider", () => {
|
|
|
284
305
|
describe("integration with tables", () => {
|
|
285
306
|
it("should work with both variables and tables", () => {
|
|
286
307
|
const variables: Variables = {
|
|
287
|
-
["df"
|
|
308
|
+
[variableName("df")]: createMockVariable(variableName("df"), {
|
|
288
309
|
dataType: "pandas.DataFrame",
|
|
289
310
|
value: "<DataFrame shape: (50, 3)>",
|
|
290
311
|
}),
|
|
291
|
-
["connection_string"
|
|
292
|
-
"connection_string",
|
|
312
|
+
[variableName("connection_string")]: createMockVariable(
|
|
313
|
+
variableName("connection_string"),
|
|
293
314
|
{
|
|
294
315
|
dataType: "str",
|
|
295
316
|
value: '"postgresql://localhost:5432/mydb"',
|
|
@@ -5,6 +5,7 @@ import { EditorView } from "@codemirror/view";
|
|
|
5
5
|
import { getDefaultStore } from "jotai";
|
|
6
6
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
7
7
|
import { MockNotebook } from "@/__mocks__/notebook";
|
|
8
|
+
import { cellId } from "@/__tests__/branded";
|
|
8
9
|
import { notebookAtom } from "@/core/cells/cells";
|
|
9
10
|
import type { CellId } from "@/core/cells/ids";
|
|
10
11
|
import { updateEditorCodeFromPython } from "@/core/codemirror/language/utils";
|
|
@@ -32,7 +33,7 @@ function createMockEditorView(code: string): EditorView {
|
|
|
32
33
|
doc: code,
|
|
33
34
|
extensions: [
|
|
34
35
|
adaptiveLanguageConfiguration({
|
|
35
|
-
cellId: "cell1"
|
|
36
|
+
cellId: cellId("cell1"),
|
|
36
37
|
completionConfig: {
|
|
37
38
|
copilot: false,
|
|
38
39
|
activate_on_typing: true,
|
|
@@ -44,7 +45,7 @@ function createMockEditorView(code: string): EditorView {
|
|
|
44
45
|
lspConfig: {},
|
|
45
46
|
}),
|
|
46
47
|
cellConfigExtension({
|
|
47
|
-
cellId: "cell1"
|
|
48
|
+
cellId: cellId("cell1"),
|
|
48
49
|
completionConfig: {
|
|
49
50
|
copilot: false,
|
|
50
51
|
activate_on_typing: true,
|
|
@@ -93,9 +94,9 @@ describe("EditNotebookTool", () => {
|
|
|
93
94
|
};
|
|
94
95
|
tool = new EditNotebookTool();
|
|
95
96
|
|
|
96
|
-
cellId1 = "cell-1"
|
|
97
|
-
cellId2 = "cell-2"
|
|
98
|
-
cellId3 = "cell-3"
|
|
97
|
+
cellId1 = cellId("cell-1");
|
|
98
|
+
cellId2 = cellId("cell-2");
|
|
99
|
+
cellId3 = cellId("cell-3");
|
|
99
100
|
|
|
100
101
|
// Reset mocks
|
|
101
102
|
vi.clearAllMocks();
|
|
@@ -270,7 +271,7 @@ describe("EditNotebookTool", () => {
|
|
|
270
271
|
{
|
|
271
272
|
edit: {
|
|
272
273
|
type: "update_cell",
|
|
273
|
-
position: { cellId: "nonexistent"
|
|
274
|
+
position: { cellId: cellId("nonexistent") },
|
|
274
275
|
code: "x = 2",
|
|
275
276
|
},
|
|
276
277
|
},
|
|
@@ -283,7 +284,7 @@ describe("EditNotebookTool", () => {
|
|
|
283
284
|
{
|
|
284
285
|
edit: {
|
|
285
286
|
type: "update_cell",
|
|
286
|
-
position: { cellId: "nonexistent"
|
|
287
|
+
position: { cellId: cellId("nonexistent") },
|
|
287
288
|
code: "x = 2",
|
|
288
289
|
},
|
|
289
290
|
},
|
|
@@ -496,7 +497,7 @@ describe("EditNotebookTool", () => {
|
|
|
496
497
|
type: "add_cell",
|
|
497
498
|
position: {
|
|
498
499
|
type: "relative",
|
|
499
|
-
cellId: "nonexistent"
|
|
500
|
+
cellId: cellId("nonexistent"),
|
|
500
501
|
before: true,
|
|
501
502
|
},
|
|
502
503
|
code: "y = 2",
|
|
@@ -660,7 +661,7 @@ describe("EditNotebookTool", () => {
|
|
|
660
661
|
{
|
|
661
662
|
edit: {
|
|
662
663
|
type: "delete_cell",
|
|
663
|
-
position: { cellId: "nonexistent"
|
|
664
|
+
position: { cellId: cellId("nonexistent") },
|
|
664
665
|
},
|
|
665
666
|
},
|
|
666
667
|
toolContext as never,
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { getDefaultStore } from "jotai";
|
|
4
4
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
5
5
|
import { MockNotebook } from "@/__mocks__/notebook";
|
|
6
|
+
import { cellId } from "@/__tests__/branded";
|
|
6
7
|
import { notebookAtom } from "@/core/cells/cells";
|
|
7
8
|
import type { CellId } from "@/core/cells/ids";
|
|
8
9
|
import { RunStaleCellsTool } from "../run-cells-tool";
|
|
@@ -46,9 +47,9 @@ describe("RunStaleCellsTool", () => {
|
|
|
46
47
|
|
|
47
48
|
tool = new RunStaleCellsTool({ postExecutionDelay: 0 });
|
|
48
49
|
|
|
49
|
-
cellId1 = "cell-1"
|
|
50
|
-
cellId2 = "cell-2"
|
|
51
|
-
cellId3 = "cell-3"
|
|
50
|
+
cellId1 = cellId("cell-1");
|
|
51
|
+
cellId2 = cellId("cell-2");
|
|
52
|
+
cellId3 = cellId("cell-3");
|
|
52
53
|
|
|
53
54
|
// Reset mocks
|
|
54
55
|
vi.clearAllMocks();
|
|
@@ -490,9 +491,8 @@ describe("RunStaleCellsTool", () => {
|
|
|
490
491
|
});
|
|
491
492
|
|
|
492
493
|
it("should omit output for cells that exceed total output budget", async () => {
|
|
493
|
-
const cellIds = Array.from(
|
|
494
|
-
{
|
|
495
|
-
(_, i) => `budget-cell-${i}` as CellId,
|
|
494
|
+
const cellIds = Array.from({ length: 25 }, (_, i) =>
|
|
495
|
+
cellId(`budget-cell-${i}`),
|
|
496
496
|
);
|
|
497
497
|
const cellData: Record<string, { code: string; edited: boolean }> = {};
|
|
498
498
|
for (const id of cellIds) {
|
|
@@ -90,7 +90,7 @@ export class EditNotebookTool
|
|
|
90
90
|
switch (edit.type) {
|
|
91
91
|
case "update_cell": {
|
|
92
92
|
const { position, code } = edit;
|
|
93
|
-
const cellId = position.cellId as CellId;
|
|
93
|
+
const cellId = position.cellId as CellId | undefined;
|
|
94
94
|
|
|
95
95
|
if (!cellId) {
|
|
96
96
|
throw new ToolExecutionError(
|
|
@@ -152,7 +152,7 @@ export class EditNotebookTool
|
|
|
152
152
|
|
|
153
153
|
switch (position.type) {
|
|
154
154
|
case "relative": {
|
|
155
|
-
const cellId = position.cellId as CellId;
|
|
155
|
+
const cellId = position.cellId as CellId | undefined;
|
|
156
156
|
if (!cellId) {
|
|
157
157
|
throw new ToolExecutionError(
|
|
158
158
|
"Cell ID is required for add_cell with relative position",
|
|
@@ -214,7 +214,7 @@ export class EditNotebookTool
|
|
|
214
214
|
}
|
|
215
215
|
case "delete_cell": {
|
|
216
216
|
const { position } = edit;
|
|
217
|
-
const cellId = position.cellId as CellId;
|
|
217
|
+
const cellId = position.cellId as CellId | undefined;
|
|
218
218
|
|
|
219
219
|
if (!cellId) {
|
|
220
220
|
throw new ToolExecutionError(
|
|
@@ -4,6 +4,7 @@ import { createStore } from "jotai";
|
|
|
4
4
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
5
5
|
import { MockNotebook } from "@/__mocks__/notebook";
|
|
6
6
|
import { MockRequestClient } from "@/__mocks__/requests";
|
|
7
|
+
import { cellId } from "@/__tests__/branded";
|
|
7
8
|
import { store } from "@/core/state/jotai";
|
|
8
9
|
import { variablesAtom } from "@/core/variables/state";
|
|
9
10
|
import type { Variables } from "@/core/variables/types";
|
|
@@ -13,7 +14,6 @@ import {
|
|
|
13
14
|
maybeAddMissingImport,
|
|
14
15
|
} from "../add-missing-import";
|
|
15
16
|
import { notebookAtom } from "../cells";
|
|
16
|
-
import type { CellId } from "../ids";
|
|
17
17
|
|
|
18
18
|
// Mock the getRequestClient function
|
|
19
19
|
const mockRequestClient = MockRequestClient.create();
|
|
@@ -21,8 +21,8 @@ vi.mock("@/core/network/requests", () => ({
|
|
|
21
21
|
getRequestClient: () => mockRequestClient,
|
|
22
22
|
}));
|
|
23
23
|
|
|
24
|
-
const Cell1 = "1"
|
|
25
|
-
const Cell2 = "2"
|
|
24
|
+
const Cell1 = cellId("1");
|
|
25
|
+
const Cell2 = cellId("2");
|
|
26
26
|
|
|
27
27
|
describe("maybeAddMissingImport", () => {
|
|
28
28
|
beforeEach(() => {
|