@marimo-team/frontend 0.15.5 → 0.16.0-dev96986
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/ConnectedDataExplorerComponent-CNLoZkWr.js +19 -0
- package/dist/assets/{ImageComparisonComponent-CEXMKKA4.js → ImageComparisonComponent-SX7fDaTK.js} +1 -1
- package/dist/assets/{VegaLite-Bt14Ds9k.js → VegaLite-MJUW3b7C.js} +6 -6
- package/dist/assets/_baseEach-9_logFrf.js +1 -0
- package/dist/assets/_baseMap-NzEbKt5c.js +1 -0
- package/dist/assets/_baseUniq-C5LFcyNC.js +1 -0
- package/dist/assets/_createAggregator-ZRm2b6Zm.js +1 -0
- package/dist/assets/agent-panel-BBd11wNX.js +287 -0
- package/dist/assets/agent-panel-D92Mfy1i.css +1 -0
- package/dist/assets/{any-language-editor-DiwNT6zp.js → any-language-editor-DwAaEQfS.js} +1 -1
- package/dist/assets/architectureDiagram-W76B3OCA-BJmVXUoW.js +36 -0
- package/dist/assets/{between-horizontal-start-FyewyCGn.js → between-horizontal-start-KiwU-a3C.js} +1 -1
- package/dist/assets/{blockDiagram-QIGZ2CNN-BrOkAf_c.js → blockDiagram-QIGZ2CNN-DzxZjE7B.js} +1 -1
- package/dist/assets/{c4Diagram-FPNF74CW-BHPzDxE2.js → c4Diagram-FPNF74CW-DjmldG_J.js} +5 -5
- package/dist/assets/channel-DHcKBVM4.js +1 -0
- package/dist/assets/chat-panel-DgJZr0eS.js +3 -0
- package/dist/assets/{chunk-4BX2VUAB-DLxaCNYh.js → chunk-4BX2VUAB-EUTQThiZ.js} +1 -1
- package/dist/assets/{chunk-55IACEB6-DdzvO3HR.js → chunk-55IACEB6-DZAiDJxy.js} +1 -1
- package/dist/assets/{chunk-FMBD7UC4-R5o-nSiG.js → chunk-FMBD7UC4-Bd0Czs-J.js} +1 -1
- package/dist/assets/{chunk-K7UQS3LO-DxaMrGgG.js → chunk-K7UQS3LO-DEKMIknX.js} +1 -1
- package/dist/assets/{chunk-QN33PNHL-DqS9-FYm.js → chunk-QN33PNHL-E0jwHU_n.js} +1 -1
- package/dist/assets/{chunk-QZHKN3VN-BZ-TzajS.js → chunk-QZHKN3VN-BzaIHJbq.js} +1 -1
- package/dist/assets/{chunk-TVAH2DTR-BsgP2dyv.js → chunk-TVAH2DTR-CZFYvqnm.js} +1 -1
- package/dist/assets/{chunk-TZMSLE5B-D-h3ahXI.js → chunk-TZMSLE5B-BNqnFjtv.js} +1 -1
- package/dist/assets/{circle-play-CQtRZ-rT.js → circle-play-D3J_mYrF.js} +1 -1
- package/dist/assets/classDiagram-KNZD7YFC-D-xwLnlX.js +1 -0
- package/dist/assets/classDiagram-v2-RKCZMP56-D-xwLnlX.js +1 -0
- package/dist/assets/{clear-button-BY6Z_ViL.js → clear-button-ifzRuAR3.js} +1 -1
- package/dist/assets/clone-CSxIll62.js +1 -0
- package/dist/assets/command-palette-D2fdVSET.js +1 -0
- package/dist/assets/common-Ku-cF_2J.js +1 -0
- package/dist/assets/{compile-Ct_jzdKr.js → compile-BgZlHW1c.js} +1 -1
- package/dist/assets/cose-bilkent-S5V4N54A-CVM83SqK.js +1 -0
- package/dist/assets/dagre-5GWH7T2D-ouQPkxT3.js +4 -0
- package/dist/assets/{data-grid-overlay-editor-BN_wulc3.js → data-grid-overlay-editor-B47j5GJJ.js} +1 -1
- package/dist/assets/datasources-panel-Bt41Zir-.js +1 -0
- package/dist/assets/{dependency-graph-panel-BOmSCZf7.js → dependency-graph-panel-CZC_B7pK.js} +4 -4
- package/dist/assets/diagram-N5W7TBWH-CQ817ZdR.js +24 -0
- package/dist/assets/diagram-QEK2KX5R-DOK_psUO.js +43 -0
- package/dist/assets/diagram-S2PKOQOG-CVljmOW8.js +24 -0
- package/dist/assets/{documentation-panel-BxjJO_Gw.js → documentation-panel-C7yIvGg1.js} +1 -1
- package/dist/assets/edit-page-CyTMQV2u.js +129 -0
- package/dist/assets/{ellipsis-vertical-UHbmjI2n.js → ellipsis-vertical-C7FjlUsY.js} +1 -1
- package/dist/assets/{empty-state-BIBXzY_0.js → empty-state-DIOGM_CU.js} +1 -1
- package/dist/assets/{erDiagram-AWTI2OKA-E84mAle_.js → erDiagram-AWTI2OKA-DYu8cEdc.js} +1 -1
- package/dist/assets/{error-panel-MEvQ6K7h.js → error-panel-Ddb8RkFG.js} +1 -1
- package/dist/assets/file-explorer-panel-Oy9DbyFP.js +1 -0
- package/dist/assets/{flowDiagram-PVAE7QVJ-DfbIRSAW.js → flowDiagram-PVAE7QVJ-CmvW5iTb.js} +1 -1
- package/dist/assets/{ganttDiagram-OWAHRB6G-DR4HZ1z_.js → ganttDiagram-OWAHRB6G-BaKQlCaT.js} +4 -4
- package/dist/assets/gitGraphDiagram-NY62KEGX-CWO24eP6.js +65 -0
- package/dist/assets/{glide-data-editor-nNmo1lPq.js → glide-data-editor-CNDLEJ9a.js} +11 -11
- package/dist/assets/graph-BZKTtxsc.js +1 -0
- package/dist/assets/home-page-Bvwppn9N.js +9 -0
- package/dist/assets/{index-VPWqq2Pg.js → index-0XOUPdwT.js} +1 -1
- package/dist/assets/{index-uacyUula.js → index-BH7f3aiU.js} +1 -1
- package/dist/assets/{index-Dt9UWeWn.js → index-BJVyzkx5.js} +1 -1
- package/dist/assets/{index-BAH034Ue.js → index-B_d_JZGI.js} +1 -1
- package/dist/assets/{index-CB2pnVQG.js → index-BgXbBA39.js} +1 -1
- package/dist/assets/{index-B8llrTSo.js → index-Brf2DwUM.js} +1 -1
- package/dist/assets/{index-BLu5CX6z.js → index-CXrWwFX6.js} +1 -1
- package/dist/assets/{index-DyLSuOH1.js → index-CZaurnA9.js} +1 -1
- package/dist/assets/{index-BFSnz7iM.js → index-CerjupfZ.js} +1 -1
- package/dist/assets/{index-B7yXbrLa.js → index-D-tZfElD.js} +1 -1
- package/dist/assets/{index-c6If577Q.js → index-D3PqGupX.js} +1 -1
- package/dist/assets/{index-CSgxTUzD.js → index-DCkzth56.js} +1 -1
- package/dist/assets/{index-DWOaniGT.js → index-DFrGFNW1.js} +1 -1
- package/dist/assets/{index-CPN7TRA1.js → index-DZhOPkOB.js} +1 -1
- package/dist/assets/index-DadI618h.css +1 -0
- package/dist/assets/{index-DqzMPAC8.js → index-DkntzpX4.js} +2 -2
- package/dist/assets/{index-B1_GXGaP.js → index-DmgwT3sx.js} +1 -1
- package/dist/assets/index-PmY0x4Zd.js +578 -0
- package/dist/assets/{index-Bq516OmX.js → index-WXJFkQHg.js} +1 -1
- package/dist/assets/{index-DSU75csX.js → index-qE8lHQ-N.js} +1 -1
- package/dist/assets/{index-DMomwMcN.js → index-zrSUQXha.js} +1 -1
- package/dist/assets/infoDiagram-STP46IZ2-CAuVVehw.js +2 -0
- package/dist/assets/isEmpty-D1t7Gran.js +1 -0
- package/dist/assets/{journeyDiagram-BIP6EPQ6-BBiFyygf.js → journeyDiagram-BIP6EPQ6-D4Rp6H_h.js} +1 -1
- package/dist/assets/{kanban-definition-6OIFK2YF-DhgA6Nt6.js → kanban-definition-6OIFK2YF-DFt9DftA.js} +4 -4
- package/dist/assets/layout-D8WXi2_g.js +1 -0
- package/dist/assets/linear-BwY8e5hA.js +1 -0
- package/dist/assets/links-4B6ldZ5P.js +7 -0
- package/dist/assets/{logs-panel-B9SmTZAW.js → logs-panel-Dxiyt7dO.js} +1 -1
- package/dist/assets/{agent-panel-DpQ6muj-.css → markdown-renderer-ClyzDMmG.css} +1 -1
- package/dist/assets/markdown-renderer-VDu-NBKB.js +263 -0
- package/dist/assets/mermaid-B-O-Puyi.js +1 -0
- package/dist/assets/{mermaid.core-4nVOEVX3.js → mermaid.core-BFFCqfOn.js} +41 -41
- package/dist/assets/min-DtVSfYKl.js +1 -0
- package/dist/assets/{mindmap-definition-Q6HEUPPD-CVLQNn1q.js → mindmap-definition-Q6HEUPPD-kyvIY8Dg.js} +2 -2
- package/dist/assets/{number-overlay-editor-CzRzXLcd.js → number-overlay-editor-GjLB2UK4.js} +1 -1
- package/dist/assets/outline-panel-CMJjOoN7.js +1 -0
- package/dist/assets/packages-panel-nfXB-bKW.js +1 -0
- package/dist/assets/{pieDiagram-ADFJNKIX-C5IQ5DBZ.js → pieDiagram-ADFJNKIX-D8JFQcWR.js} +3 -3
- package/dist/assets/{quadrantDiagram-LMRXKWRM-CFXFnQxx.js → quadrantDiagram-LMRXKWRM-Nf8GzxXG.js} +1 -1
- package/dist/assets/{react-plotly-mzdv02_Y.js → react-plotly-CnW9p7ZA.js} +1 -1
- package/dist/assets/{requirementDiagram-4UW4RH46-D9bPC89T.js → requirementDiagram-4UW4RH46-CCUxF8BZ.js} +1 -1
- package/dist/assets/run-page-Bl4p3AbZ.js +1 -0
- package/dist/assets/sankeyDiagram-GR3RE2ED-Sr8kDwP1.js +10 -0
- package/dist/assets/scratchpad-panel-Ja1Mu-W3.js +1 -0
- package/dist/assets/secrets-panel-B-3fcSyP.js +1 -0
- package/dist/assets/{sequenceDiagram-C3RYC4MD-6N7_hY4k.js → sequenceDiagram-C3RYC4MD-CBJ152Q3.js} +4 -4
- package/dist/assets/{slides-component-DMjQomc3.css → slides-component-C-LoGC1U.css} +1 -1
- package/dist/assets/{slides-component-EcjC8sDK.js → slides-component-DGtsVP5o.js} +1 -1
- package/dist/assets/snippets-panel-ClNnwKBM.js +1 -0
- package/dist/assets/sortBy-D47H6Vyl.js +1 -0
- package/dist/assets/state-B_RCHTH5.js +1 -0
- package/dist/assets/stateDiagram-KXAO66HF-BlBFSAZr.js +1 -0
- package/dist/assets/stateDiagram-v2-UMBNRL4Z-DbA-iToo.js +1 -0
- package/dist/assets/storage-BNcWOH3-.js +26 -0
- package/dist/assets/terminal-CATzv5Hd.js +10 -0
- package/dist/assets/time-CsYqILfB.js +1 -0
- package/dist/assets/{timeline-definition-XQNQX7LJ-BEaynAiY.js → timeline-definition-XQNQX7LJ-CGrhjuAs.js} +1 -1
- package/dist/assets/tracing-DUbJtOyq.js +2 -0
- package/dist/assets/{tracing-panel-BmuHLPrY.js → tracing-panel-DmzqPUtc.js} +2 -2
- package/dist/assets/{trash-UBqfK4mR.js → trash-rxdjLzkf.js} +1 -1
- package/dist/assets/{tree-XiEycetl.js → tree-C2Ul1h1C.js} +1 -1
- package/dist/assets/{treemap-75Q7IDZK-CnuVFbBG.js → treemap-75Q7IDZK-N9hyUpyj.js} +20 -20
- package/dist/assets/{ts-tags-CloPe9IY.js → ts-tags-DxCDHihD.js} +1 -1
- package/dist/assets/variable-panel-BbgupOdG.js +1 -0
- package/dist/assets/{vega-component-DsTH4tuX.js → vega-component-CR_MHOBT.js} +1 -1
- package/dist/assets/worker-fHbtoWvT.js +1 -0
- package/dist/assets/{xychartDiagram-6GGTOJPD-Dcz3O-A3.js → xychartDiagram-6GGTOJPD-jdLZsMb2.js} +1 -1
- package/dist/index.html +2 -2
- package/package.json +10 -5
- package/src/__tests__/mocks.ts +43 -0
- package/src/components/app-config/user-config-form.tsx +78 -1
- package/src/components/chat/acp/__tests__/__snapshots__/prompt.test.ts.snap +116 -65
- package/src/components/chat/acp/__tests__/atoms.test.ts +1 -1
- package/src/components/chat/acp/__tests__/context-utils.test.ts +222 -0
- package/src/components/chat/acp/__tests__/prompt.test.ts +1 -1
- package/src/components/chat/acp/__tests__/state.test.ts +38 -42
- package/src/components/chat/acp/agent-docs.tsx +33 -6
- package/src/components/chat/acp/agent-panel.css +0 -18
- package/src/components/chat/acp/agent-panel.tsx +394 -72
- package/src/components/chat/acp/agent-selector.tsx +7 -1
- package/src/components/chat/acp/blocks.tsx +40 -10
- package/src/components/chat/acp/common.tsx +10 -2
- package/src/components/chat/acp/context-utils.ts +127 -0
- package/src/components/chat/acp/prompt.ts +96 -53
- package/src/components/chat/acp/state.ts +1 -1
- package/src/components/chat/acp/types.ts +8 -0
- package/src/components/chat/chat-panel.tsx +28 -89
- package/src/components/chat/chat-utils.ts +127 -1
- package/src/components/chat/markdown-renderer.css +39 -0
- package/src/components/chat/markdown-renderer.tsx +12 -47
- package/src/components/chat/tool-call-accordion.tsx +148 -26
- package/src/components/data-table/SearchBar.tsx +8 -7
- package/src/components/data-table/__tests__/column_formatting.test.ts +50 -35
- package/src/components/data-table/__tests__/data-table.test.tsx +39 -1
- package/src/components/data-table/cell-hover-template/feature.ts +14 -0
- package/src/components/data-table/cell-hover-template/types.ts +11 -0
- package/src/components/data-table/charts/components/form-fields.tsx +41 -37
- package/src/components/data-table/charts/forms/common-chart.tsx +2 -2
- package/src/components/data-table/column-explorer-panel/column-explorer.tsx +5 -2
- package/src/components/data-table/column-formatting/feature.ts +62 -29
- package/src/components/data-table/column-formatting/types.ts +1 -0
- package/src/components/data-table/column-header.tsx +3 -1
- package/src/components/data-table/column-summary/chart-spec-model.tsx +24 -7
- package/src/components/data-table/column-summary/column-summary.tsx +18 -9
- package/src/components/data-table/columns.tsx +42 -18
- package/src/components/data-table/data-table.tsx +10 -2
- package/src/components/data-table/date-popover.tsx +85 -75
- package/src/components/data-table/filter-pills.tsx +14 -9
- package/src/components/data-table/header-items.tsx +5 -1
- package/src/components/data-table/pagination.tsx +20 -13
- package/src/components/data-table/renderers.tsx +28 -0
- package/src/components/data-table/row-viewer-panel/row-viewer.tsx +10 -8
- package/src/components/datasources/column-preview.tsx +6 -2
- package/src/components/datasources/datasources.tsx +8 -12
- package/src/components/editor/Cell.tsx +6 -0
- package/src/components/editor/actions/name-cell-input.tsx +6 -1
- package/src/components/editor/actions/useCellActionButton.tsx +3 -1
- package/src/components/editor/ai/__tests__/completion-utils.test.ts +178 -1
- package/src/components/editor/ai/add-cell-with-ai.tsx +68 -66
- package/src/components/editor/ai/ai-completion-editor.tsx +29 -26
- package/src/components/editor/ai/completion-handlers.tsx +44 -6
- package/src/components/editor/ai/completion-utils.ts +92 -0
- package/src/components/editor/ai/transport/chat-transport.tsx +39 -0
- package/src/components/editor/cell/CellStatus.tsx +23 -20
- package/src/components/editor/cell/CreateCellButton.tsx +3 -4
- package/src/components/editor/cell/StagedAICell.tsx +51 -0
- package/src/components/editor/cell/cell-actions.tsx +2 -1
- package/src/components/editor/cell/code/language-toggle.tsx +3 -4
- package/src/components/editor/chrome/wrapper/footer-items/machine-stats.tsx +39 -28
- package/src/components/editor/controls/notebook-menu-dropdown.tsx +4 -2
- package/src/components/editor/file-tree/requesting-tree.tsx +14 -8
- package/src/components/editor/renderers/CellArray.tsx +3 -4
- package/src/components/editor/renderers/slides-layout/slides-layout.tsx +3 -3
- package/src/components/editor/renderers/slides-layout/types.ts +1 -0
- package/src/components/pages/home-page.tsx +4 -1
- package/src/components/slides/slides-component.tsx +1 -1
- package/src/components/slides/slides.css +6 -0
- package/src/components/terminal/__tests__/state.test.ts +207 -0
- package/src/components/terminal/hooks.ts +41 -0
- package/src/components/terminal/state.ts +75 -0
- package/src/components/terminal/terminal.tsx +334 -13
- package/src/components/terminal/theme.tsx +57 -0
- package/src/components/tracing/tracing-spec.ts +5 -4
- package/src/components/ui/range-slider.tsx +4 -2
- package/src/components/ui/slider.tsx +3 -1
- package/src/components/variables/variables-table.tsx +3 -0
- package/src/core/MarimoApp.tsx +9 -6
- package/src/core/ai/__tests__/staged-cells.test.ts +356 -0
- package/src/core/ai/context/__tests__/registry.test.ts +6 -4
- package/src/core/ai/context/providers/cell-output.ts +3 -2
- package/src/core/ai/context/providers/error.ts +3 -1
- package/src/core/ai/context/providers/file.ts +7 -2
- package/src/core/ai/context/providers/tables.ts +3 -2
- package/src/core/ai/context/providers/variable.ts +6 -4
- package/src/core/ai/staged-cells.ts +208 -0
- package/src/core/cells/cells.ts +1 -1
- package/src/core/cells/logs.ts +1 -1
- package/src/core/codemirror/find-replace/search-highlight.ts +3 -1
- package/src/core/codemirror/language/LanguageAdapters.ts +9 -3
- package/src/core/codemirror/lsp/federated-lsp.ts +1 -1
- package/src/core/codemirror/lsp/notebook-lsp.ts +8 -2
- package/src/core/codemirror/readonly/__tests__/extension.test.ts +1 -1
- package/src/core/codemirror/rtc/loro/awareness.ts +52 -17
- package/src/core/codemirror/rtc/loro/sync.ts +12 -4
- package/src/core/config/config-schema.ts +1 -0
- package/src/core/config/config.ts +4 -0
- package/src/core/hotkeys/hotkeys.ts +8 -4
- package/src/core/i18n/__tests__/locale-provider.test.tsx +176 -0
- package/src/core/i18n/locale-provider.tsx +35 -0
- package/src/core/i18n/with-locale.tsx +12 -0
- package/src/core/islands/components/web-components.tsx +13 -10
- package/src/core/islands/main.ts +2 -2
- package/src/core/kernel/RuntimeState.ts +4 -1
- package/src/core/kernel/messages.ts +8 -12
- package/src/core/network/DeferredRequestRegistry.ts +16 -4
- package/src/core/runtime/runtime.ts +5 -4
- package/src/core/saving/__tests__/filename.test.ts +37 -0
- package/src/core/static/__tests__/download-html.test.ts +43 -1
- package/src/core/wasm/bridge.ts +5 -1
- package/src/core/wasm/store.ts +4 -1
- package/src/core/wasm/worker/message-buffer.ts +3 -2
- package/src/core/websocket/types.ts +22 -16
- package/src/core/websocket/useMarimoWebSocket.tsx +2 -2
- package/src/css/app/Cell.css +11 -0
- package/src/hooks/useFormatting.ts +97 -0
- package/src/hooks/useTimer.ts +8 -5
- package/src/plugins/core/RenderHTML.tsx +36 -2
- package/src/plugins/core/__test__/RenderHTML.test.ts +72 -0
- package/src/plugins/core/registerReactComponent.tsx +44 -10
- package/src/plugins/impl/DataTablePlugin.tsx +4 -0
- package/src/plugins/impl/FileBrowserPlugin.tsx +8 -2
- package/src/plugins/impl/RangeSliderPlugin.tsx +5 -3
- package/src/plugins/impl/SliderPlugin.tsx +3 -1
- package/src/plugins/impl/anywidget/model.ts +16 -5
- package/src/plugins/impl/data-editor/types.ts +7 -5
- package/src/plugins/impl/data-explorer/components/column-summary.tsx +20 -13
- package/src/plugins/impl/panel/utils.ts +6 -4
- package/src/plugins/layout/OutlinePlugin.tsx +69 -0
- package/src/plugins/layout/StatPlugin.tsx +4 -1
- package/src/plugins/plugins.ts +2 -0
- package/src/stories/cell.stories.tsx +1 -1
- package/src/stories/layout/vertical/one-column.stories.tsx +1 -1
- package/src/utils/__tests__/cell-urls.test.ts +29 -0
- package/src/utils/__tests__/dates.test.ts +45 -24
- package/src/utils/__tests__/filenames.test.ts +18 -0
- package/src/utils/__tests__/numbers.test.ts +42 -30
- package/src/utils/__tests__/once.test.ts +187 -0
- package/src/utils/__tests__/path.test.ts +38 -0
- package/src/utils/__tests__/urls.test.ts +56 -1
- package/src/utils/dates.ts +15 -10
- package/src/utils/edit-distance.ts +8 -6
- package/src/utils/errors.ts +9 -0
- package/src/utils/id-tree.tsx +21 -10
- package/src/utils/localStorage.ts +13 -4
- package/src/utils/numbers.ts +11 -11
- package/src/utils/once.ts +32 -0
- package/src/utils/paths.ts +4 -1
- package/src/utils/pluralize.ts +12 -5
- package/src/utils/python-poet/poet.ts +30 -15
- package/src/utils/time.ts +5 -1
- package/dist/assets/ConnectedDataExplorerComponent-Cn5-l2X1.js +0 -19
- package/dist/assets/_baseEach-C1FLm7WW.js +0 -1
- package/dist/assets/_baseMap-DBVArUYD.js +0 -1
- package/dist/assets/_baseUniq-Dk7ZPJ3N.js +0 -1
- package/dist/assets/_createAggregator-Bn38fDd3.js +0 -1
- package/dist/assets/agent-panel-COUYnuIK.js +0 -475
- package/dist/assets/architectureDiagram-W76B3OCA-DBzWQKKu.js +0 -36
- package/dist/assets/channel-CjhbjOv4.js +0 -1
- package/dist/assets/chat-panel-BPXKoTnZ.js +0 -7
- package/dist/assets/chat-panel-Brrs_eeH.css +0 -1
- package/dist/assets/classDiagram-KNZD7YFC-DHs5cFzy.js +0 -1
- package/dist/assets/classDiagram-v2-RKCZMP56-DHs5cFzy.js +0 -1
- package/dist/assets/clone-DM1YNjEn.js +0 -1
- package/dist/assets/command-palette-S0bzQp7v.js +0 -1
- package/dist/assets/common-B8U9k2Ly.js +0 -1
- package/dist/assets/cose-bilkent-S5V4N54A-wz1Sfx7j.js +0 -1
- package/dist/assets/dagre-5GWH7T2D-BfpcVBgq.js +0 -4
- package/dist/assets/datasources-panel-DfuURLJw.js +0 -1
- package/dist/assets/diagram-N5W7TBWH-Bf0oqqQh.js +0 -24
- package/dist/assets/diagram-QEK2KX5R-ZTc3qikh.js +0 -43
- package/dist/assets/diagram-S2PKOQOG-tLScBy7Z.js +0 -24
- package/dist/assets/edit-page-DJ8kJZ9w.js +0 -129
- package/dist/assets/file-explorer-panel-CzNUJ63G.js +0 -1
- package/dist/assets/gitGraphDiagram-NY62KEGX-C1t6QtVa.js +0 -65
- package/dist/assets/graph-CssCVWIq.js +0 -1
- package/dist/assets/home-page-9eW6qida.js +0 -9
- package/dist/assets/index-CknhX2Vy.css +0 -1
- package/dist/assets/index-DcCIe7np.js +0 -28
- package/dist/assets/index-OC46250R.js +0 -570
- package/dist/assets/infoDiagram-STP46IZ2-CwiAoz9f.js +0 -2
- package/dist/assets/layout-DpQrxGW-.js +0 -1
- package/dist/assets/linear-NsreOeBF.js +0 -1
- package/dist/assets/links-CbvGxbsJ.js +0 -7
- package/dist/assets/mermaid-DSt0r6IQ.js +0 -1
- package/dist/assets/min-D259kI3t.js +0 -1
- package/dist/assets/outline-panel-uvsS-YEQ.js +0 -1
- package/dist/assets/packages-panel-xMz9W2hW.js +0 -1
- package/dist/assets/run-page-Bb68qdhQ.js +0 -1
- package/dist/assets/sankeyDiagram-GR3RE2ED-BSJOau8E.js +0 -10
- package/dist/assets/scratchpad-panel-BF4BO-U4.js +0 -1
- package/dist/assets/secrets-panel-CdIX44dQ.js +0 -1
- package/dist/assets/snippets-panel-Dco9h0rb.js +0 -1
- package/dist/assets/sortBy-aLGA-PGK.js +0 -1
- package/dist/assets/stateDiagram-KXAO66HF-Bd68WT3b.js +0 -1
- package/dist/assets/stateDiagram-v2-UMBNRL4Z-BXz_GSwb.js +0 -1
- package/dist/assets/storage-CGlP4lCF.js +0 -26
- package/dist/assets/terminal-CxkHubcu.js +0 -9
- package/dist/assets/time-D2nr1UgQ.js +0 -1
- package/dist/assets/tracing-kTqHxa7q.js +0 -2
- package/dist/assets/variable-panel-noTnH-AQ.js +0 -1
- package/dist/assets/worker-X5rxzQGQ.js +0 -1
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
var xo=Object.defineProperty;var Nn=P=>{throw TypeError(P)};var fo=(P,F,O)=>F in P?xo(P,F,{enumerable:!0,configurable:!0,writable:!0,value:O}):P[F]=O;var G=(P,F,O)=>fo(P,typeof F!="symbol"?F+"":F,O),bt=(P,F,O)=>F.has(P)||Nn("Cannot "+O);var J=(P,F,O)=>(bt(P,F,"read from private field"),O?O.call(P):F.get(P)),ve=(P,F,O)=>F.has(P)?Nn("Cannot add the same private member more than once"):F instanceof WeakSet?F.add(P):F.set(P,O),Te=(P,F,O,Ue)=>(bt(P,F,"write to private field"),Ue?Ue.call(P,O):F.set(P,O),O),we=(P,F,O)=>(bt(P,F,"access private method"),O);var Sn=(P,F,O,Ue)=>({set _(lt){Te(P,F,lt,O)},get _(){return J(P,F,Ue)}});import{c as Ae,d5 as b,d6 as h,fP as v,fQ as y,fR as pe,fS as H,fT as z,fU as w,d8 as _e,fV as Cn,d as De,r as k,a as A,fW as yt,j as o,a_ as se,bn as In,c5 as vt,fX as kn,d9 as go,fY as bo,T as ue,bI as Tn,am as yo,an as vo,al as wo,e_ as _o,fZ as jo,f_ as No,W as So,f$ as Co,dW as Io,_ as ko,da as To,d0 as Ao,d2 as Mo,d3 as Ro,d4 as Uo,g0 as Eo,av as Po,cJ as Fo,N as Do,K as An,g1 as qo,aB as it,g2 as wt,C as $o,aW as zo,cp as rt,ay as Mn,cM as ae,ei as _t,dY as Wo,aG as Oo,dZ as Lo,f8 as Bo,e0 as Vo,d$ as Ho,g3 as Yo,ba as jt,L as qe,g4 as Go,ax as Jo,g5 as Nt,a0 as St,bt as Qo,d1 as Ct,cP as Rn,dH as Xo,a1 as Zo,dD as Ko,ds as ei,dy as ti,dz as ni,bQ as si,dA as ai,dB as oi,dC as ii,dt as ri,dp as li,dw as ci,dh as di,di as mi,du as ui,__tla as pi}from"./index-PmY0x4Zd.js";import{M as Un,F as hi,__tla as xi}from"./markdown-renderer-VDu-NBKB.js";import{R as En,k as fi,__tla as gi}from"./edit-page-CyTMQV2u.js";import{C as Pn}from"./links-4B6ldZ5P.js";import{P as Fn}from"./empty-state-DIOGM_CU.js";import{a as bi}from"./state-B_RCHTH5.js";import{__tla as yi}from"./storage-BNcWOH3-.js";import"./index-BJVyzkx5.js";import"./index-B_d_JZGI.js";import"./index-DkntzpX4.js";import"./index-qE8lHQ-N.js";import"./index-DCkzth56.js";import"./index-CXrWwFX6.js";import"./index-Brf2DwUM.js";import"./index-DZhOPkOB.js";import"./index-CerjupfZ.js";import"./index-WXJFkQHg.js";import"./index-BgXbBA39.js";import"./index-DFrGFNW1.js";import"./index-D3PqGupX.js";import"./apl-CXdQSnD-.js";import"./asciiarmor-D5V0T9Cu.js";import"./asn1-DWPaVWf6.js";import"./brainfuck-CtZaYBKt.js";import"./cobol-stawOqaz.js";import"./clike-BgBwzOhw.js";import"./clojure-DiuoqK-z.js";import"./css-ZjFoif2m.js";import"./cmake-DXn5xaP-.js";import"./coffeescript-BTDxI-eT.js";import"./commonlisp-vq6DHwts.js";import"./cypher-gJDei3ni.js";import"./python-DD-Q2bae.js";import"./crystal-CRzZ78HM.js";import"./d-BShv7fp-.js";import"./diff-UJJ5BM9S.js";import"./dtd-DI9Herc-.js";import"./dylan-DkEP81N9.js";import"./ecl-DPFc0Uaf.js";import"./eiffel-DR5c0IrL.js";import"./elm-DompmV0j.js";import"./erlang-BuqgqA5h.js";import"./factor-CFXhaUWb.js";import"./simple-mode-C3vEBAcb.js";import"./forth-POgR1ypr.js";import"./fortran-DL7KluxX.js";import"./mllike-3c2dg9RT.js";import"./gas-bV0CklSb.js";import"./gherkin-B6X1vGSW.js";import"./groovy-DnIzCrpZ.js";import"./haskell-CLQs6EAM.js";import"./haxe-D25e-2l-.js";import"./idl-pcmmZuaN.js";import"./javascript-BpzJj0-u.js";import"./jinja2-DhgKlfW7.js";import"./julia-DjdwvFuI.js";import"./livescript-HO6ttBFx.js";import"./lua-8DXOpKDz.js";import"./mirc-DkvFAiy5.js";import"./mathematica-IIbmv7SK.js";import"./modelica-DSrSSXCg.js";import"./mumps-zvxmGV4l.js";import"./mbox-z_N2Mo3d.js";import"./nsis-BvKfQ9lQ.js";import"./ntriples-BSwWqoLa.js";import"./octave-C4hdQ5Hf.js";import"./oz-qQq7irPq.js";import"./pascal-CafrKXZF.js";import"./perl-tdMlh9QA.js";import"./pig-CwGJVRC4.js";import"./powershell-D1ly3AHC.js";import"./properties-_nPj978X.js";import"./protobuf-B4y9do6W.js";import"./pug-BTvK5tSS.js";import"./puppet-Bc-yJKzi.js";import"./q-B0kTJ4cI.js";import"./r-BA4EbLKE.js";import"./rpm-DI_rRufH.js";import"./ruby-CR-u2WLS.js";import"./sas-Bqaci40L.js";import"./scheme-qjP0V5Ag.js";import"./shell-BLav31RL.js";import"./sieve-r025o_jW.js";import"./smalltalk-C7J3IyEP.js";import"./sparql-BRLJFz69.js";import"./stylus-Bdo_Aemu.js";import"./swift-B_XXVlXX.js";import"./verilog-B4LBqg_1.js";import"./tcl-B2fODqDH.js";import"./textile-BuVhTOzU.js";import"./toml-wcPdHu67.js";import"./troff-Ce85hlLp.js";import"./ttcn-BxnYHtq8.js";import"./ttcn-cfg-CKJxb-l2.js";import"./turtle-BkSuIpt-.js";import"./webidl-CGwyPRYs.js";import"./vb-BHgjm0DN.js";import"./vbscript-Dawdd5GZ.js";import"./velocity-BdD_26Jv.js";import"./vhdl-CWWH2SUo.js";import"./xquery-CVDBqZPY.js";import"./yacas-I8QjZlxf.js";import"./z80-D8p3gKXp.js";import"./mscgen-B2igx18G.js";import"./index-zrSUQXha.js";import"./trash-rxdjLzkf.js";import"./katex-LV4FpwlL.js";import"./between-horizontal-start-KiwU-a3C.js";import"./_createAggregator-ZRm2b6Zm.js";import"./_baseEach-9_logFrf.js";import{__tla as vi}from"./loro_wasm_bg-C1ks32Vm.js";let Dn,wi=Promise.all([(()=>{try{return pi}catch{}})(),(()=>{try{return xi}catch{}})(),(()=>{try{return gi}catch{}})(),(()=>{try{return yi}catch{}})(),(()=>{try{return vi}catch{}})()]).then(async()=>{var le,Ee,tt,We,Oe,Le,Pe,Be,te,qn,$n,zn,Wn,On,Je;const P=Ae("arrow-down",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]),F=Ae("circle-stop",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["rect",{x:"9",y:"9",width:"6",height:"6",rx:"1",key:"1ssd4o"}]]),O=Ae("file-audio-2",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v2",key:"17k7jt"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["circle",{cx:"3",cy:"17",r:"1",key:"vo6nti"}],["path",{d:"M2 17v-3a4 4 0 0 1 8 0v3",key:"1ggdre"}],["circle",{cx:"9",cy:"17",r:"1",key:"bc1fq4"}]]),Ue=Ae("plug",[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M9 8V2",key:"14iosj"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z",key:"osxo6l"}]]),lt=Ae("shield-check",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]),Ln=Ae("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]),$e=Ae("wifi-off",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]),ct=Ae("wifi",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]]),Bn="authenticate",Vn="initialize",Hn="session/cancel",Yn="session/load",Gn="session/new",Jn="session/prompt",Qn="session/set_mode",Xn="fs/read_text_file",Zn="fs/write_text_file",Kn="session/request_permission",es="session/update",ts="terminal/create",ns="terminal/kill",ss="terminal/output",as="terminal/release",os="terminal/wait_for_exit",It=b({_meta:v(y()).optional(),content:h(),path:h(),sessionId:h()}),kt=b({_meta:v(y()).optional(),limit:pe().optional().nullable(),line:pe().optional().nullable(),path:h(),sessionId:h()}),Tt=b({_meta:v(y()).optional(),sessionId:h(),terminalId:h()}),At=b({_meta:v(y()).optional(),sessionId:h(),terminalId:h()}),Mt=b({_meta:v(y()).optional(),sessionId:h(),terminalId:h()}),Rt=b({_meta:v(y()).optional(),sessionId:h(),terminalId:h()}),is=v(y()),rs=z([w("assistant"),w("user")]),ls=b({_meta:v(y()).optional(),mimeType:h().optional().nullable(),text:h(),uri:h()}),cs=b({_meta:v(y()).optional(),blob:h(),mimeType:h().optional().nullable(),uri:h()}),Ut=z([w("read"),w("edit"),w("delete"),w("move"),w("search"),w("execute"),w("think"),w("fetch"),w("switch_mode"),w("other")]),Et=z([w("pending"),w("in_progress"),w("completed"),w("failed")]),ds=b({_meta:v(y()).optional()}),ms=b({_meta:v(y()).optional(),content:h()}),us=b({_meta:v(y()).optional(),outcome:z([b({outcome:w("cancelled")}),b({optionId:h(),outcome:w("selected")})])}),ps=b({_meta:v(y()).optional(),terminalId:h()}),hs=b({_meta:v(y()).optional()}),xs=b({_meta:v(y()).optional(),exitCode:pe().optional().nullable(),signal:h().optional().nullable()}),fs=b({_meta:v(y()).optional()}),gs=v(y()),bs=b({_meta:v(y()).optional(),sessionId:h()}),ys=v(y()),vs=b({_meta:v(y()).optional(),methodId:h()}),ws=b({_meta:v(y()).optional(),modeId:h(),sessionId:h()}),_s=v(y()),Pt=b({_meta:v(y()).optional(),name:h(),value:h()}),he=b({_meta:v(y()).optional(),audience:H(rs).optional().nullable(),lastModified:h().optional().nullable(),priority:pe().optional().nullable()}),Ft=z([ls,cs]),js=b({_meta:v(y()).optional()}),Ns=b({meta:y().optional()}),Ss=b({_meta:v(y()).optional(),stopReason:z([w("end_turn"),w("max_tokens"),w("max_turn_requests"),w("refusal"),w("cancelled")])}),Cs=v(y()),Dt=h(),Is=v(y()),ks=b({hint:h()}),Ts=b({_meta:v(y()).optional(),kind:z([w("allow_once"),w("allow_always"),w("reject_once"),w("reject_always")]),name:h(),optionId:h()}),dt=z([b({content:z([b({_meta:v(y()).optional(),annotations:he.optional().nullable(),text:h(),type:w("text")}),b({_meta:v(y()).optional(),annotations:he.optional().nullable(),data:h(),mimeType:h(),type:w("image"),uri:h().optional().nullable()}),b({_meta:v(y()).optional(),annotations:he.optional().nullable(),data:h(),mimeType:h(),type:w("audio")}),b({_meta:v(y()).optional(),annotations:he.optional().nullable(),description:h().optional().nullable(),mimeType:h().optional().nullable(),name:h(),size:pe().optional().nullable(),title:h().optional().nullable(),type:w("resource_link"),uri:h()}),b({_meta:v(y()).optional(),annotations:he.optional().nullable(),resource:Ft,type:w("resource")})]),type:w("content")}),b({_meta:v(y()).optional(),newText:h(),oldText:h().optional().nullable(),path:h(),type:w("diff")}),b({terminalId:h(),type:w("terminal")})]),mt=b({_meta:v(y()).optional(),line:pe().optional().nullable(),path:h()}),qt=b({_meta:v(y()).optional(),name:h(),value:h()}),As=b({_meta:v(y()).optional(),exitCode:pe().optional().nullable(),signal:h().optional().nullable()}),Ms=b({_meta:v(y()).optional(),readTextFile:_e().optional(),writeTextFile:_e().optional()}),Rs=b({args:H(h()),command:h(),env:H(qt),name:h()}),$t=z([b({headers:H(Pt),name:h(),type:w("http"),url:h()}),b({headers:H(Pt),name:h(),type:w("sse"),url:h()}),Rs]),Qe=z([b({_meta:v(y()).optional(),annotations:he.optional().nullable(),text:h(),type:w("text")}),b({_meta:v(y()).optional(),annotations:he.optional().nullable(),data:h(),mimeType:h(),type:w("image"),uri:h().optional().nullable()}),b({_meta:v(y()).optional(),annotations:he.optional().nullable(),data:h(),mimeType:h(),type:w("audio")}),b({_meta:v(y()).optional(),annotations:he.optional().nullable(),description:h().optional().nullable(),mimeType:h().optional().nullable(),name:h(),size:pe().optional().nullable(),title:h().optional().nullable(),type:w("resource_link"),uri:h()}),b({_meta:v(y()).optional(),annotations:he.optional().nullable(),resource:Ft,type:w("resource")})]),Us=b({_meta:v(y()).optional(),description:h().optional().nullable(),id:h(),name:h()}),Es=b({_meta:v(y()).optional(),http:_e().optional(),sse:_e().optional()}),Ps=b({_meta:v(y()).optional(),audio:_e().optional(),embeddedContext:_e().optional(),image:_e().optional()}),Fs=b({_meta:v(y()).optional(),description:h().optional().nullable(),id:Dt,name:h()}),zt=b({_meta:v(y()).optional(),availableModes:H(Fs),currentModeId:h()}),Ds=b({_meta:v(y()).optional(),content:h(),priority:z([w("high"),w("medium"),w("low")]),status:z([w("pending"),w("in_progress"),w("completed")])}),qs=ks,$s=z([bs,ys]),Wt=b({_meta:v(y()).optional(),args:H(h()).optional(),command:h(),cwd:h().optional().nullable(),env:H(qt).optional(),outputByteLimit:pe().optional().nullable(),sessionId:h()}),zs=b({_meta:v(y()).optional(),exitStatus:As.optional().nullable(),output:h(),truncated:_e()}),Ws=b({_meta:v(y()).optional(),cwd:h(),mcpServers:H($t)}),Os=b({_meta:v(y()).optional(),cwd:h(),mcpServers:H($t),sessionId:h()}),Ls=b({_meta:v(y()).optional(),prompt:H(Qe),sessionId:h()}),Bs=b({_meta:v(y()).optional(),modes:zt.optional().nullable(),sessionId:h()}),Vs=b({_meta:v(y()).optional(),modes:zt.optional().nullable()}),Hs=b({_meta:v(y()).optional(),content:H(dt).optional().nullable(),kind:Ut.optional().nullable(),locations:H(mt).optional().nullable(),rawInput:v(y()).optional(),rawOutput:v(y()).optional(),status:Et.optional().nullable(),title:h().optional().nullable(),toolCallId:h()}),Ys=b({_meta:v(y()).optional(),fs:Ms.optional(),terminal:_e().optional()}),Gs=b({_meta:v(y()).optional(),loadSession:_e().optional(),mcpCapabilities:Es.optional(),promptCapabilities:Ps.optional()}),Js=b({_meta:v(y()).optional(),description:h(),input:qs.optional().nullable(),name:h()}),Qs=z([ds,ms,us,ps,zs,hs,xs,fs,gs]),Ot=b({_meta:v(y()).optional(),options:H(Ts),sessionId:h(),toolCall:Hs}),Xs=b({_meta:v(y()).optional(),clientCapabilities:Ys.optional(),protocolVersion:pe()}),Zs=b({_meta:v(y()).optional(),agentCapabilities:Gs.optional(),authMethods:H(Us).optional(),protocolVersion:pe()}),Lt=b({_meta:v(y()).optional(),sessionId:h(),update:z([b({content:Qe,sessionUpdate:w("user_message_chunk")}),b({content:Qe,sessionUpdate:w("agent_message_chunk")}),b({content:Qe,sessionUpdate:w("agent_thought_chunk")}),b({_meta:v(y()).optional(),content:H(dt).optional(),kind:z([w("read"),w("edit"),w("delete"),w("move"),w("search"),w("execute"),w("think"),w("fetch"),w("switch_mode"),w("other")]).optional(),locations:H(mt).optional(),rawInput:v(y()).optional(),rawOutput:v(y()).optional(),sessionUpdate:w("tool_call"),status:z([w("pending"),w("in_progress"),w("completed"),w("failed")]).optional(),title:h(),toolCallId:h()}),b({_meta:v(y()).optional(),content:H(dt).optional().nullable(),kind:Ut.optional().nullable(),locations:H(mt).optional().nullable(),rawInput:v(y()).optional(),rawOutput:v(y()).optional(),sessionUpdate:w("tool_call_update"),status:Et.optional().nullable(),title:h().optional().nullable(),toolCallId:h()}),b({_meta:v(y()).optional(),entries:H(Ds),sessionUpdate:w("plan")}),b({availableCommands:H(Js),sessionUpdate:w("available_commands_update")}),b({currentModeId:Dt,sessionUpdate:w("current_mode_update")})])}),Ks=z([It,kt,Ot,Wt,Tt,At,Mt,Rt,is]),ea=z([Xs,vs,Ws,Os,ws,Ls,_s]),ta=z([Zs,js,Bs,Vs,Ns,Ss,Cs]),na=z([Lt,Is]);z([Ks,Qs,$s,ea,ta,na]);class sa{constructor(e,t,n){ve(this,le);const s=e(this);Te(this,le,new aa(async(i,l)=>{var r,c,d,m,u;switch(i){case Zn:{const p=It.parse(l);return s.writeTextFile(p)}case Xn:{const p=kt.parse(l);return s.readTextFile(p)}case Kn:{const p=Ot.parse(l);return s.requestPermission(p)}case ts:{const p=Wt.parse(l);return(r=s.createTerminal)==null?void 0:r.call(s,p)}case ss:{const p=Tt.parse(l);return(c=s.terminalOutput)==null?void 0:c.call(s,p)}case as:{const p=At.parse(l);return await((d=s.releaseTerminal)==null?void 0:d.call(s,p))??{}}case os:{const p=Mt.parse(l);return(m=s.waitForTerminalExit)==null?void 0:m.call(s,p)}case ns:{const p=Rt.parse(l);return await((u=s.killTerminal)==null?void 0:u.call(s,p))??{}}default:if(i.startsWith("_")){const p=i.substring(1);if(!s.extMethod)throw K.methodNotFound(i);return s.extMethod(p,l)}throw K.methodNotFound(i)}},async(i,l)=>{if(i===es){const r=Lt.parse(l);return s.sessionUpdate(r)}if(i.startsWith("_")){const r=i.substring(1);return s.extNotification?s.extNotification(r,l):void 0}throw K.methodNotFound(i)},t,n))}async initialize(e){return await J(this,le).sendRequest(Vn,e)}async newSession(e){return await J(this,le).sendRequest(Gn,e)}async loadSession(e){return await J(this,le).sendRequest(Yn,e)??{}}async setSessionMode(e){return await J(this,le).sendRequest(Qn,e)??{}}async authenticate(e){return await J(this,le).sendRequest(Bn,e)??{}}async prompt(e){return await J(this,le).sendRequest(Jn,e)}async cancel(e){return await J(this,le).sendNotification(Hn,e)}async extMethod(e,t){return await J(this,le).sendRequest(`_${e}`,t)}async extNotification(e,t){return await J(this,le).sendNotification(`_${e}`,t)}}le=new WeakMap;class aa{constructor(e,t,n,s){ve(this,te);ve(this,Ee,new Map);ve(this,tt,0);ve(this,We);ve(this,Oe);ve(this,Le);ve(this,Pe,Promise.resolve());ve(this,Be);Te(this,We,e),Te(this,Oe,t),Te(this,Le,n),Te(this,Be,new TextEncoder),we(this,te,qn).call(this,s)}async sendRequest(e,t){const n=Sn(this,tt)._++,s=new Promise((i,l)=>{J(this,Ee).set(n,{resolve:i,reject:l})});return await we(this,te,Je).call(this,{jsonrpc:"2.0",id:n,method:e,params:t}),s}async sendNotification(e,t){await we(this,te,Je).call(this,{jsonrpc:"2.0",method:e,params:t})}}Ee=new WeakMap,tt=new WeakMap,We=new WeakMap,Oe=new WeakMap,Le=new WeakMap,Pe=new WeakMap,Be=new WeakMap,te=new WeakSet,qn=async function(e){let t="";const n=new TextDecoder,s=e.getReader();try{for(;;){const{value:i,done:l}=await s.read();if(l)break;if(!i)continue;t+=n.decode(i,{stream:!0});const r=t.split(`
|
|
2
|
+
`);t=r.pop()||"";for(const c of r){const d=c.trim();if(d){let m;try{const u=JSON.parse(d);m=u.id,we(this,te,$n).call(this,u)}catch(u){console.error("Unexpected error during message processing:",d,u),m&&we(this,te,Je).call(this,{jsonrpc:"2.0",id:m,error:{code:-32700,message:"Parse error"}})}}}}}finally{s.releaseLock()}},$n=async function(e){if("method"in e&&"id"in e){const t=await we(this,te,zn).call(this,e.method,e.params);"error"in t&&console.error("Error handling request",e,t.error),await we(this,te,Je).call(this,{jsonrpc:"2.0",id:e.id,...t})}else if("method"in e){const t=await we(this,te,Wn).call(this,e.method,e.params);"error"in t&&console.error("Error handling notification",e,t.error)}else"id"in e?we(this,te,On).call(this,e):console.error("Invalid message",{message:e})},zn=async function(e,t){try{return{result:await J(this,We).call(this,e,t)??null}}catch(n){if(n instanceof K)return n.toResult();if(n instanceof Cn)return K.invalidParams(n.format()).toResult();let s;(n instanceof Error||typeof n=="object"&&n!=null&&"message"in n&&typeof n.message=="string")&&(s=n.message);try{return K.internalError(s?JSON.parse(s):{}).toResult()}catch{return K.internalError({details:s}).toResult()}}},Wn=async function(e,t){try{return await J(this,Oe).call(this,e,t),{result:null}}catch(n){if(n instanceof K)return n.toResult();if(n instanceof Cn)return K.invalidParams(n.format()).toResult();let s;(n instanceof Error||typeof n=="object"&&n!=null&&"message"in n&&typeof n.message=="string")&&(s=n.message);try{return K.internalError(s?JSON.parse(s):{}).toResult()}catch{return K.internalError({details:s}).toResult()}}},On=function(e){const t=J(this,Ee).get(e.id);t?("result"in e?t.resolve(e.result):"error"in e&&t.reject(e.error),J(this,Ee).delete(e.id)):console.error("Got response to unknown request",e.id)},Je=async function(e){const t=JSON.stringify(e)+`
|
|
3
|
+
`;return Te(this,Pe,J(this,Pe).then(async()=>{const n=J(this,Le).getWriter();try{await n.write(J(this,Be).encode(t))}finally{n.releaseLock()}}).catch(n=>{console.error("ACP write error:",n)})),J(this,Pe)};class K extends Error{constructor(t,n,s){super(n);G(this,"code");G(this,"data");this.code=t,this.name="RequestError",this.data=s}static parseError(t){return new K(-32700,"Parse error",t)}static invalidRequest(t){return new K(-32600,"Invalid request",t)}static methodNotFound(t){return new K(-32601,"Method not found",{method:t})}static invalidParams(t){return new K(-32602,"Invalid params",t)}static internalError(t){return new K(-32603,"Internal error",t)}static authRequired(t){return new K(-32e3,"Authentication required",t)}toResult(){return{error:{code:this.code,message:this.message,data:this.data}}}toErrorResponse(){return{code:this.code,message:this.message,data:this.data}}}class oa{constructor(){G(this,"promise");G(this,"resolve");G(this,"reject");this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}class ia{constructor(e,t){G(this,"agent");G(this,"options");G(this,"pendingPermissions",new Map);this.agent=e,this.options=t}async sessionUpdate(e){this.options.onSessionNotification(e)}async writeTextFile(e){if(this.options.writeTextFile)return this.options.writeTextFile(e);throw new Error("Write text file handler not implemented")}async readTextFile(e){if(this.options.readTextFile)return this.options.readTextFile(e);throw new Error("Read text file handler not implemented")}async requestPermission(e){const t=`${Date.now()}-${Math.random()}`,n=new oa;return this.pendingPermissions.set(t,n),this.options.onRequestPermission({...e,deferredId:t}),n.promise}resolvePermission(e,t){const n=this.pendingPermissions.get(e);n&&(this.pendingPermissions.delete(e),n.resolve(t))}rejectPermission(e,t){const n=this.pendingPermissions.get(e);n&&(this.pendingPermissions.delete(e),n.reject(t))}}class ra{constructor(e,t){G(this,"agent");G(this,"callbacks");this.agent=e,this.callbacks=t}extMethod(e,t){return this.agent.extMethod?this.agent.extMethod(e,t):Promise.resolve({})}extNotification(e,t){return this.agent.extNotification?this.agent.extNotification(e,t):Promise.resolve()}async setSessionMode(e){var t,n,s,i;return(n=(t=this.callbacks).on_setSessionMode_start)==null||n.call(t,e),(i=(s=this.agent).setSessionMode)==null?void 0:i.call(s,e).then(l=>{var r,c;return(c=(r=this.callbacks).on_setSessionMode_response)==null||c.call(r,l,e),l})}async initialize(e){var t,n;return(n=(t=this.callbacks).on_initialize_start)==null||n.call(t,e),this.agent.initialize(e).then(s=>{var i,l;return(l=(i=this.callbacks).on_initialize_response)==null||l.call(i,s,e),s})}async newSession(e){var t,n;return(n=(t=this.callbacks).on_newSession_start)==null||n.call(t,e),this.agent.newSession(e).then(s=>{var i,l;return(l=(i=this.callbacks).on_newSession_response)==null||l.call(i,s,e),s})}async loadSession(e){var t,n;if((n=(t=this.callbacks).on_loadSession_start)==null||n.call(t,e),this.agent.loadSession)return this.agent.loadSession(e).then(s=>{var i,l;return(l=(i=this.callbacks).on_loadSession_response)==null||l.call(i,s,e),s});throw new Error("Agent does not support loadSession capability")}async authenticate(e){var t,n;return(n=(t=this.callbacks).on_authenticate_start)==null||n.call(t,e),this.agent.authenticate(e).then(()=>{var s,i;(i=(s=this.callbacks).on_authenticate_response)==null||i.call(s,void 0,e)})}async prompt(e){var t,n;return(n=(t=this.callbacks).on_prompt_start)==null||n.call(t,e),this.agent.prompt(e).then(s=>{var i,l;return(l=(i=this.callbacks).on_prompt_response)==null||l.call(i,s,e),s})}async cancel(e){var t,n;return(n=(t=this.callbacks).on_cancel_start)==null||n.call(t,e),this.agent.cancel(e).then(()=>{var s,i;(i=(s=this.callbacks).on_cancel_response)==null||i.call(s,void 0,e)})}}const la=globalThis.ReadableStream,ca=globalThis.WritableStream;globalThis.ReadableStream!==void 0&&globalThis.WritableStream!==void 0||console.warn("Streams API not supported in this browser. Consider using a polyfill.");class da{constructor(e){G(this,"managers",new Map);G(this,"options");G(this,"currentUrl",null);this.options=e}async connect(e){this.currentUrl=e;let t=this.managers.get(e);if(t){if(t.getConnectionState()==="connected"){const n=t.getStreams();if(n)return n}}else t=new ma({url:e,onConnectionStateChange:n=>this.options.onConnectionStateChange(n,e),onError:n=>this.options.onError(n,e),reconnectAttempts:this.options.reconnectAttempts,reconnectDelay:this.options.reconnectDelay}),this.managers.set(e,t);return await t.connect()}disconnect(e){if(e){const t=this.managers.get(e);t&&(t.disconnect(),this.managers.delete(e))}else{for(const[t,n]of this.managers.entries())n.disconnect(),this.managers.delete(t);this.currentUrl=null}}getCurrentUrl(){return this.currentUrl}getConnectionState(e){const t=e||this.currentUrl;if(!t)return"disconnected";const n=this.managers.get(t);return n?n.getConnectionState():"disconnected"}getActiveConnections(){return Array.from(this.managers.keys()).filter(e=>{var t;return((t=this.managers.get(e))==null?void 0:t.getConnectionState())==="connected"})}}class ma{constructor(e){G(this,"ws",null);G(this,"options");G(this,"reconnectCount",0);G(this,"reconnectTimer",null);G(this,"readableStream",null);G(this,"writableStream",null);this.options={reconnectAttempts:3,reconnectDelay:1e3,...e}}async connect(){this.updateConnectionState({status:"connecting",url:this.options.url});try{return this.ws=new WebSocket(this.options.url),new Promise((e,t)=>{this.ws?(this.ws.onopen=()=>{var n;this.reconnectCount=0,this.updateConnectionState({status:"connected",url:this.options.url}),this.ws&&(this.readableStream=(function(s){const i=new la({start(r){s.onmessage=c=>{if(c.data instanceof ArrayBuffer)r.enqueue(new Uint8Array(c.data));else if(c.data instanceof Uint8Array)r.enqueue(c.data);else{const d=new TextEncoder;r.enqueue(d.encode(`${c.data}
|
|
4
|
+
`))}},s.onclose=()=>{r.close()},s.onerror=c=>{r.error(c)}},cancel(){s.close()}}),l=async function*(){const r=i.getReader();try{for(;;){const{value:c,done:d}=await r.read();if(d)break;yield c}}finally{r.releaseLock()}};return i.values=l,i[Symbol.asyncIterator]=l,i})(this.ws),this.writableStream=(n=this.ws,new ca({write(s){n.readyState===WebSocket.OPEN&&n.send(s)},close(){n.close()},abort(){n.close()}})),e({readable:this.readableStream,writable:this.writableStream}))},this.ws.onerror=n=>{const s=new Error("WebSocket connection error");this.options.onError(s),this.updateConnectionState({status:"error",error:s.message,url:this.options.url}),t(s)},this.ws.onclose=()=>{this.updateConnectionState({status:"disconnected",url:this.options.url}),this.attemptReconnect()}):t(new Error("WebSocket not initialized"))})}catch(e){const t=e instanceof Error?e:new Error(String(e));throw this.options.onError(t),this.updateConnectionState({status:"error",error:t.message,url:this.options.url}),t}}disconnect(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.ws&&(this.ws.close(),this.ws=null),this.readableStream=null,this.writableStream=null,this.updateConnectionState({status:"disconnected"})}attemptReconnect(){this.reconnectCount<(this.options.reconnectAttempts||3)&&(this.reconnectCount++,this.reconnectTimer=setTimeout(async()=>{try{await this.connect()}catch{}},this.options.reconnectDelay))}updateConnectionState(e){this.options.onConnectionStateChange(e)}getConnectionState(){if(!this.ws)return"disconnected";switch(this.ws.readyState){case WebSocket.CONNECTING:return"connecting";case WebSocket.OPEN:return"connected";case WebSocket.CLOSING:case WebSocket.CLOSED:return"disconnected";default:return"error"}}getStreams(){return this.readableStream&&this.writableStream?{readable:this.readableStream,writable:this.writableStream}:null}}const Bt=a=>{let e;const t=new Set,n=(r,c)=>{const d=typeof r=="function"?r(e):r;if(!Object.is(d,e)){const m=e;e=c??(typeof d!="object"||d===null)?d:Object.assign({},e,d),t.forEach(u=>u(e,m))}},s=()=>e,i={setState:n,getState:s,getInitialState:()=>l,subscribe:r=>(t.add(r),()=>t.delete(r))},l=e=a(n,s,i);return i},ua=a=>a,Vt=a=>{const e=(n=>n?Bt(n):Bt)(a),t=n=>(function(s,i=ua){const l=De.useSyncExternalStore(s.subscribe,De.useCallback(()=>i(s.getState()),[s,i]),De.useCallback(()=>i(s.getInitialState()),[s,i]));return De.useDebugValue(l),l})(e,n);return Object.assign(t,e),t},pa=(Ht=(a,e)=>({connections:{},activeConnectionUrl:null,connectionState:{status:"disconnected"},agentCapabilities:null,activeSessionId:null,notifications:{},sessionModes:{},setConnection:(t,n,s)=>{a(i=>{var l,r;return{connections:{...i.connections,[t]:{url:t,state:n,capabilities:s??((l=i.connections[t])==null?void 0:l.capabilities)??null}},...i.activeConnectionUrl===t&&{connectionState:n,agentCapabilities:s??((r=i.connections[t])==null?void 0:r.capabilities)??null}}})},setActiveConnection:t=>{a(n=>{const s=t?n.connections[t]:null;return{activeConnectionUrl:t,connectionState:(s==null?void 0:s.state)??{status:"disconnected"},agentCapabilities:(s==null?void 0:s.capabilities)??null}})},removeConnection:t=>{a(n=>{const s={...n.connections};delete s[t];const i=n.activeConnectionUrl===t?null:n.activeConnectionUrl,l=i?s[i]:null;return{connections:s,activeConnectionUrl:i,connectionState:(l==null?void 0:l.state)??{status:"disconnected"},agentCapabilities:(l==null?void 0:l.capabilities)??null}})},setConnectionState:t=>{a({connectionState:t});const{activeConnectionUrl:n}=e();n&&e().setConnection(n,t)},setAgentCapabilities:t=>{a({agentCapabilities:t});const{activeConnectionUrl:n}=e();n&&e().setConnection(n,e().connectionState,t)},setActiveSessionId:t=>{a({activeSessionId:t})},setActiveModeId:(t,n)=>{a(s=>{const i=s.sessionModes[t];return{sessionModes:{...s.sessionModes,[t]:{...i,currentModeId:n}}}})},setModeState:(t,n)=>{a(s=>({sessionModes:{...s.sessionModes,[t]:n}}))},addNotification:t=>{const n=e().notifications,s=e().activeSessionId;if(!s)return;const i={...t,id:`${Date.now()}-${Math.random()}`,timestamp:Date.now()},l=n[s]||[],r={...n,[s]:[...l,i]};a({notifications:r})},clearNotifications:t=>{if(t){const n={...e().notifications};delete n[t],a({notifications:n})}else a({notifications:{}})},getActiveNotifications:()=>{const{activeSessionId:t,notifications:n}=e();return t&&n[t]||[]},getActiveConnection:()=>{const{activeConnectionUrl:t,connections:n}=e();return t&&n[t]||null},getConnection:t=>{const{connections:n}=e();return n[t]||{url:t,state:{status:"disconnected"},capabilities:null}}}))?Vt(Ht):Vt;var Ht;const ha=typeof window<"u"?k.useLayoutEffect:k.useEffect;function Se(a){const e=k.useRef(()=>{throw new Error("Cannot call an event handler while rendering.")});return ha(()=>{e.current=a},[a]),k.useCallback((...t)=>{var n;return(n=e.current)==null?void 0:n.call(e,...t)},[e])}const Yt=["tool_call","tool_call_update"];function xa(a,e){return!!a&&(a.type==="session_notification"&&e.type==="session_notification"?!(!Yt.includes(a.data.update.sessionUpdate)||!Yt.includes(e.data.update.sessionUpdate))||a.data.update.sessionUpdate===e.data.update.sessionUpdate:a.type===e.type)}function fa(a){var t;const e=new Map;for(const n of a)e.has(n.toolCallId)||e.set(n.toolCallId,[]),(t=e.get(n.toolCallId))==null||t.push(n);return Array.from(e.values()).map(n=>{var i;const s=n.at(0);return(function(l,r){if(!l)throw new Error(r)})(!!(s!=null&&s.toolCallId),"Tool call ID is required"),{...s,toolCallId:s.toolCallId,status:(i=n.at(-1))==null?void 0:i.status,rawOutput:Object.assign({},...n.map(l=>l.rawOutput)),locations:n.flatMap(l=>l.locations||[]),content:n.flatMap(l=>l.content||[])}})}const ga=a=>{const e=A.c(14),{message:t}=a.data;if(t.includes("WebSocket"))return null;let n,s,i,l,r,c,d;return e[0]===Symbol.for("react.memo_cache_sentinel")?(n=o.jsx("div",{className:"flex-shrink-0",children:o.jsx(vt,{className:"h-5 w-5 text-[var(--red-11)]"})}),e[0]=n):n=e[0],e[1]===Symbol.for("react.memo_cache_sentinel")?(s=o.jsx("div",{className:"flex items-center gap-2 mb-2",children:o.jsx("h4",{className:"text-sm font-medium text-[var(--red-11)]",children:"Agent Error"})}),e[1]=s):s=e[1],e[2]!==t?(i=o.jsx("div",{className:"text-sm text-[var(--red-11)] leading-relaxed mb-3",children:t}),e[2]=t,e[3]=i):i=e[3],e[4]!==a.onRetry?(l=a.onRetry&&o.jsxs(se,{size:"xs",variant:"outline",onClick:a.onRetry,className:"text-[var(--red-11)] border-[var(--red-6)] hover:bg-[var(--red-3)]",children:[o.jsx(En,{className:"h-3 w-3 mr-1"}),"Retry"]}),e[4]=a.onRetry,e[5]=l):l=e[5],e[6]!==a.onDismiss?(r=a.onDismiss&&o.jsxs(se,{size:"xs",variant:"ghost",onClick:a.onDismiss,className:"text-[var(--red-10)] hover:bg-[var(--red-3)]",children:[o.jsx(In,{className:"h-3 w-3 mr-1"}),"Dismiss"]}),e[6]=a.onDismiss,e[7]=r):r=e[7],e[8]!==l||e[9]!==r?(c=o.jsxs("div",{className:"flex items-center gap-2",children:[l,r]}),e[8]=l,e[9]=r,e[10]=c):c=e[10],e[11]!==i||e[12]!==c?(d=o.jsx("div",{className:"border border-[var(--red-6)] bg-[var(--red-2)] rounded-lg p-4 my-2","data-block-type":"error",children:o.jsxs("div",{className:"flex items-start gap-3",children:[n,o.jsxs("div",{className:"flex-1 min-w-0",children:[s,i,c]})]})}),e[11]=i,e[12]=c,e[13]=d):d=e[13],d},ba=a=>{const e=A.c(33),{status:t}=a.data;if(a.isConnected)return null;let n;e[0]!==t?(n=(()=>{switch(t){case"connected":return{icon:o.jsx(ct,{className:"h-4 w-4"}),title:"Connected to Agent",message:"Successfully established connection with the AI agent",bgColor:"bg-[var(--blue-2)]",borderColor:"border-[var(--blue-6)]",textColor:"text-[var(--blue-11)]",iconColor:"text-[var(--blue-10)]"};case"disconnected":return{icon:o.jsx($e,{className:"h-4 w-4"}),title:"Disconnected from Agent",message:"Connection to the AI agent has been lost",bgColor:"bg-[var(--amber-2)]",borderColor:"border-[var(--amber-6)]",textColor:"text-[var(--amber-11)]",iconColor:"text-[var(--amber-10)]"};case"connecting":return{icon:o.jsx(ct,{className:"h-4 w-4 animate-pulse"}),title:"Connecting to Agent",message:"Establishing connection with the AI agent...",bgColor:"bg-[var(--gray-2)]",borderColor:"border-[var(--gray-6)]",textColor:"text-[var(--gray-11)]",iconColor:"text-[var(--gray-10)]"};case"error":return{icon:o.jsx($e,{className:"h-4 w-4"}),title:"Connection Error",message:"Failed to connect to the AI agent",bgColor:"bg-[var(--red-2)]",borderColor:"border-[var(--red-6)]",textColor:"text-[var(--red-11)]",iconColor:"text-[var(--red-10)]"};default:return{icon:o.jsx($e,{className:"h-4 w-4"}),title:"Connection Status Changed",message:`Agent connection status: ${t}`,bgColor:"bg-[var(--gray-2)]",borderColor:"border-[var(--gray-6)]",textColor:"text-[var(--gray-11)]",iconColor:"text-[var(--gray-10)]"}}})(),e[0]=t,e[1]=n):n=e[1];const s=n,i=t==="disconnected"||t==="error",l=`border ${s.borderColor} ${s.bgColor} rounded-lg p-3 my-2`,r=`flex-shrink-0 ${s.iconColor}`;let c;e[2]!==s.icon||e[3]!==r?(c=o.jsx("div",{className:r,children:s.icon}),e[2]=s.icon,e[3]=r,e[4]=c):c=e[4];const d=`text-sm font-medium ${s.textColor}`;let m,u,p;e[5]!==s.title||e[6]!==d?(m=o.jsx("h4",{className:d,children:s.title}),e[5]=s.title,e[6]=d,e[7]=m):m=e[7],e[8]!==a.timestamp?(u=a.timestamp&&o.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(a.timestamp).toLocaleTimeString()}),e[8]=a.timestamp,e[9]=u):u=e[9],e[10]!==m||e[11]!==u?(p=o.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[m,u]}),e[10]=m,e[11]=u,e[12]=p):p=e[12];const _=`text-sm ${s.textColor} opacity-90 mb-2`;let f,x,g,j,N;return e[13]!==s.message||e[14]!==_?(f=o.jsx("div",{className:_,children:s.message}),e[13]=s.message,e[14]=_,e[15]=f):f=e[15],e[16]!==s.bgColor||e[17]!==s.borderColor||e[18]!==s.textColor||e[19]!==a.onRetry||e[20]!==i?(x=i&&a.onRetry&&o.jsxs(se,{size:"xs",variant:"outline",onClick:a.onRetry,className:`${s.textColor} ${s.borderColor} hover:${s.bgColor}`,children:[o.jsx(En,{className:"h-3 w-3 mr-1"}),"Retry Connection"]}),e[16]=s.bgColor,e[17]=s.borderColor,e[18]=s.textColor,e[19]=a.onRetry,e[20]=i,e[21]=x):x=e[21],e[22]!==x||e[23]!==p||e[24]!==f?(g=o.jsxs("div",{className:"flex-1 min-w-0",children:[p,f,x]}),e[22]=x,e[23]=p,e[24]=f,e[25]=g):g=e[25],e[26]!==g||e[27]!==c?(j=o.jsxs("div",{className:"flex items-start gap-3",children:[c,g]}),e[26]=g,e[27]=c,e[28]=j):j=e[28],e[29]!==t||e[30]!==l||e[31]!==j?(N=o.jsx("div",{className:l,"data-block-type":"connection-change","data-status":t,children:j}),e[29]=t,e[30]=l,e[31]=j,e[32]=N):N=e[32],N},ya=a=>{const e=A.c(7),t=a.startTimestamp/1e3,n=a.endTimestamp/1e3,s=`Thought for ${Math.round(n-t)||"1"}s`;let i,l,r;return e[0]!==a.data?(i=a.data.map(Ma),e[0]=a.data,e[1]=i):i=e[1],e[2]!==i?(l=o.jsx("div",{className:"flex flex-col gap-2 text-muted-foreground",children:o.jsx(Xe,{data:i})}),e[2]=i,e[3]=l):l=e[3],e[4]!==s||e[5]!==l?(r=o.jsx("div",{className:"text-xs text-muted-foreground",children:o.jsx(pt,{title:s,children:l})}),e[4]=s,e[5]=l,e[6]=r):r=e[6],r},va=a=>{const e=A.c(14);let t,n,s,i,l,r;if(e[0]!==a.data){const c=a.data.flatMap(Ra);s="rounded-lg border bg-background p-2 text-xs";const d=o.jsxs("span",{className:"font-medium text-muted-foreground",children:["To-dos"," ",o.jsx("span",{className:"font-normal text-muted-foreground",children:c.length})]});e[5]!==d?(i=o.jsx("div",{className:"flex items-center justify-between mb-2",children:d}),e[5]=d,e[6]=i):i=e[6],t="flex flex-col gap-1",n=c.map(Ua),e[0]=a.data,e[1]=t,e[2]=n,e[3]=s,e[4]=i}else t=e[1],n=e[2],s=e[3],i=e[4];return e[7]!==t||e[8]!==n?(l=o.jsx("ul",{className:t,children:n}),e[7]=t,e[8]=n,e[9]=l):l=e[9],e[10]!==s||e[11]!==i||e[12]!==l?(r=o.jsxs("div",{className:s,children:[i,l]}),e[10]=s,e[11]=i,e[12]=l,e[13]=r):r=e[13],r},wa=a=>{const e=A.c(4);let t,n;return e[0]!==a.data?(t=a.data.map(Ea),e[0]=a.data,e[1]=t):t=e[1],e[2]!==t?(n=o.jsx("div",{className:"flex flex-col gap-2 text-muted-foreground border p-2 bg-background rounded break-words",children:o.jsx(Xe,{data:t})}),e[2]=t,e[3]=n):n=e[3],n},_a=a=>{const e=A.c(4);let t,n;return e[0]!==a.data?(t=a.data.map(Pa),e[0]=a.data,e[1]=t):t=e[1],e[2]!==t?(n=o.jsx("div",{className:"flex flex-col gap-2",children:o.jsx(Xe,{data:t})}),e[2]=t,e[3]=n):n=e[3],n},Xe=a=>{const e=A.c(5),t=Fa;let n,s;if(e[0]!==a.data){let i;e[2]===Symbol.for("react.memo_cache_sentinel")?(i=(l,r)=>o.jsx(De.Fragment,{children:t(l)},`${l.type}-${r}`),e[2]=i):i=e[2],n=a.data.map(i),e[0]=a.data,e[1]=n}else n=e[1];return e[3]!==n?(s=o.jsx("div",{children:n}),e[3]=n,e[4]=s):s=e[4],s},Gt=a=>{const e=A.c(3),t=`data:${a.data.mimeType};base64,${a.data.data}`,n=a.data.uri??"";let s;return e[0]!==t||e[1]!==n?(s=o.jsx("img",{src:t,alt:n}),e[0]=t,e[1]=n,e[2]=s):s=e[2],s},Jt=a=>{const e=A.c(3),t=`data:${a.data.mimeType};base64,${a.data.data}`;let n,s;return e[0]===Symbol.for("react.memo_cache_sentinel")?(n=o.jsx("track",{kind:"captions"}),e[0]=n):n=e[0],e[1]!==t?(s=o.jsx("audio",{src:t,controls:!0,children:n}),e[1]=t,e[2]=s):s=e[2],s},ja=a=>{var t,n;const e=A.c(25);if("text"in a.data.resource){let s,i,l,r;return e[0]!==a.data.resource.mimeType?(s=a.data.resource.mimeType&&o.jsx(ut,{mimeType:a.data.resource.mimeType}),e[0]=a.data.resource.mimeType,e[1]=s):s=e[1],e[2]!==a.data.resource.uri||e[3]!==s?(i=o.jsx(yo,{children:o.jsxs("span",{className:"flex items-center gap-1",children:[s,a.data.resource.uri]})}),e[2]=a.data.resource.uri,e[3]=s,e[4]=i):i=e[4],e[5]!==a.data.resource.text?(l=o.jsx(vo,{className:"max-h-96 overflow-y-auto scrollbar-thin",children:o.jsx(Un,{content:a.data.resource.text})}),e[5]=a.data.resource.text,e[6]=l):l=e[6],e[7]!==i||e[8]!==l?(r=o.jsxs(wo,{children:[i,l]}),e[7]=i,e[8]=l,e[9]=r):r=e[9],r}if("blob"in a.data.resource){if((t=a.data.resource.mimeType)!=null&&t.startsWith("image/")){let m;return e[10]!==a.data.resource.blob||e[11]!==a.data.resource.mimeType?(m=o.jsx(Gt,{data:{type:"image",mimeType:a.data.resource.mimeType,data:a.data.resource.blob}}),e[10]=a.data.resource.blob,e[11]=a.data.resource.mimeType,e[12]=m):m=e[12],m}if((n=a.data.resource.mimeType)!=null&&n.startsWith("audio/")){let m;return e[13]!==a.data.resource.blob||e[14]!==a.data.resource.mimeType?(m=o.jsx(Jt,{data:{type:"audio",mimeType:a.data.resource.mimeType,data:a.data.resource.blob}}),e[13]=a.data.resource.blob,e[14]=a.data.resource.mimeType,e[15]=m):m=e[15],m}const s=a.data.resource.blob,i=a.data.resource.mimeType??"";let l;e[16]!==s||e[17]!==i?(l=_o(s,i),e[16]=s,e[17]=i,e[18]=l):l=e[18];const r=l;let c,d;return e[19]!==a.data.resource.mimeType?(c=a.data.resource.mimeType&&o.jsx(ut,{mimeType:a.data.resource.mimeType}),e[19]=a.data.resource.mimeType,e[20]=c):c=e[20],e[21]!==r||e[22]!==a.data.resource.uri||e[23]!==c?(d=o.jsxs("a",{href:r,className:"flex items-center gap-1",download:!0,children:[c,a.data.resource.uri]}),e[21]=r,e[22]=a.data.resource.uri,e[23]=c,e[24]=d):d=e[24],d}return Tn(a.data.resource),null},Na=a=>{const e=A.c(8);if(a.data.uri.startsWith("http")){let i;return e[0]!==a.data.name||e[1]!==a.data.uri?(i=o.jsx("a",{href:a.data.uri,target:"_blank",rel:"noopener noreferrer",className:"text-link hover:underline",children:a.data.name}),e[0]=a.data.name,e[1]=a.data.uri,e[2]=i):i=e[2],i}let t;e[3]!==a.data.mimeType?(t=a.data.mimeType&&o.jsx(ut,{mimeType:a.data.mimeType}),e[3]=a.data.mimeType,e[4]=t):t=e[4];const n=a.data.name||a.data.title||a.data.uri;let s;return e[5]!==t||e[6]!==n?(s=o.jsxs("span",{className:"flex items-center gap-1",children:[t,n]}),e[5]=t,e[6]=n,e[7]=s):s=e[7],s},ut=a=>{const e=A.c(6);if(a.mimeType.startsWith("image/")){let n;return e[0]===Symbol.for("react.memo_cache_sentinel")?(n=o.jsx(jo,{className:"h-2 w-2"}),e[0]=n):n=e[0],n}if(a.mimeType.startsWith("audio/")){let n;return e[1]===Symbol.for("react.memo_cache_sentinel")?(n=o.jsx(O,{className:"h-2 w-2"}),e[1]=n):n=e[1],n}if(a.mimeType.startsWith("video/")){let n;return e[2]===Symbol.for("react.memo_cache_sentinel")?(n=o.jsx(No,{className:"h-2 w-2"}),e[2]=n):n=e[2],n}if(a.mimeType.startsWith("text/")){let n;return e[3]===Symbol.for("react.memo_cache_sentinel")?(n=o.jsx(So,{className:"h-2 w-2"}),e[3]=n):n=e[3],n}if(a.mimeType.startsWith("application/")){let n;return e[4]===Symbol.for("react.memo_cache_sentinel")?(n=o.jsx(Co,{className:"h-2 w-2"}),e[4]=n):n=e[4],n}let t;return e[5]===Symbol.for("react.memo_cache_sentinel")?(t=o.jsx(Io,{className:"h-2 w-2"}),e[5]=t):t=e[5],t},Sa=a=>{const e=A.c(10);if(a.data.length===0)return null;const t=a.data[0].sessionUpdate;let n;e[0]!==t||e[1]!==a.endTimestamp||e[2]!==a.startTimestamp?(n=r=>{if((function(c){const d=c[0];return d.sessionUpdate==="tool_call"||d.sessionUpdate==="tool_call_update"})(r))return o.jsx(Ia,{data:r});if(r[0].sessionUpdate==="agent_thought_chunk")return o.jsx(ya,{startTimestamp:a.startTimestamp,endTimestamp:a.endTimestamp,data:r});if((function(c){return c[0].sessionUpdate==="user_message_chunk"})(r))return o.jsx(wa,{data:r});if((function(c){return c[0].sessionUpdate==="agent_message_chunk"})(r))return o.jsx(_a,{data:r});if((function(c){return c[0].sessionUpdate==="plan"})(r))return o.jsx(va,{data:r});if(t==="available_commands_update")return null;if(t==="current_mode_update"){const c=r.at(-1);return(c==null?void 0:c.sessionUpdate)==="current_mode_update"?o.jsx(Ca,{data:c}):null}return o.jsx(pt,{title:r[0].sessionUpdate,children:o.jsx(kn,{data:r,format:"tree",className:"max-h-64"})})},e[0]=t,e[1]=a.endTimestamp,e[2]=a.startTimestamp,e[3]=n):n=e[3];const s=n;let i,l;return e[4]!==a.data||e[5]!==s?(i=s(a.data),e[4]=a.data,e[5]=s,e[6]=i):i=e[6],e[7]!==t||e[8]!==i?(l=o.jsx("div",{className:"flex flex-col text-sm gap-2","data-block-type":t,children:i}),e[7]=t,e[8]=i,e[9]=l):l=e[9],l},Ca=a=>{const e=A.c(2),{currentModeId:t}=a.data;let n;return e[0]!==t?(n=o.jsxs("div",{children:["Mode: ",t]}),e[0]=t,e[1]=n):n=e[1],n},Ia=a=>{const e=A.c(6);let t,n,s;return e[0]!==a.data?(t="flex flex-col text-muted-foreground",n=fa(a.data).map(Da),e[0]=a.data,e[1]=t,e[2]=n):(t=e[1],n=e[2]),e[3]!==t||e[4]!==n?(s=o.jsx("div",{className:t,children:n}),e[3]=t,e[4]=n,e[5]=s):s=e[5],s},ka=a=>{const e=A.c(4);let t,n;return e[0]!==a.data?(t=a.data.map(qa),e[0]=a.data,e[1]=t):t=e[1],e[2]!==t?(n=o.jsx("div",{className:"flex flex-col gap-2 text-muted-foreground",children:t}),e[2]=t,e[3]=n):n=e[3],n};function Ta(a){var n;const e=a.title||bo.startCase(a.kind||"")||"Tool call",t=(n=a.locations)==null?void 0:n[0];return t&&!e.includes(t.path)?`${e}: ${t.path}`:e}const Aa=a=>{const e=A.c(6);if(a.data.length<=1)return null;let t,n,s;return e[0]!==a.data?(t="flex flex-col gap-2",n=a.data.map($a).join(`
|
|
5
|
+
`),e[0]=a.data,e[1]=t,e[2]=n):(t=e[1],n=e[2]),e[3]!==t||e[4]!==n?(s=o.jsx("div",{className:t,children:n}),e[3]=t,e[4]=n,e[5]=s):s=e[5],s},Qt=a=>{const e=A.c(24),{content:t,locations:n,status:s,kind:i,rawInput:l}=a.data;let r;e[0]!==t?(r=t==null?void 0:t.filter(za).map(Wa),e[0]=t,e[1]=r):r=e[1];const c=r;let d;e[2]!==t?(d=t==null?void 0:t.filter(Oa),e[2]=t,e[3]=d):d=e[3];const m=d,u=s==="failed",p=n&&n.length>0;if(!t&&!p&&l){let S;return e[4]!==l?(S=o.jsx("pre",{className:"bg-[var(--slate-2)] p-1 text-muted-foreground border border-[var(--slate-4)] rounded text-xs overflow-auto scrollbar-thin max-h-64",children:o.jsx(kn,{data:l,format:"tree"})}),e[4]=l,e[5]=S):S=e[5],S}const _=!c||c.length===0,f=!m||m.length===0;if(_&&f&&p){const S=i||"";let I,T,U;return e[6]!==S?(I=yt(S),e[6]=S,e[7]=I):I=e[7],e[8]!==n?(T=n==null?void 0:n.map(La).join(", "),e[8]=n,e[9]=T):T=e[9],e[10]!==I||e[11]!==T?(U=o.jsx("div",{className:"flex flex-col gap-2 pr-2",children:o.jsxs("span",{className:"text-xs text-muted-foreground",children:[I," ",T]})}),e[10]=I,e[11]=T,e[12]=U):U=e[12],U}let x,g,j,N;return e[13]!==n?(x=n&&o.jsx(Aa,{data:n}),e[13]=n,e[14]=x):x=e[14],e[15]!==c?(g=c&&o.jsx(Xe,{data:c}),e[15]=c,e[16]=g):g=e[16],e[17]!==m||e[18]!==u?(j=m&&!u&&o.jsx(ka,{data:m}),e[17]=m,e[18]=u,e[19]=j):j=e[19],e[20]!==x||e[21]!==g||e[22]!==j?(N=o.jsxs("div",{className:"flex flex-col gap-2 pr-2",children:[x,g,j]}),e[20]=x,e[21]=g,e[22]=j,e[23]=N):N=e[23],N};function Ma(a){return a.content}function Ra(a){return a.entries}function Ua(a,e){return o.jsxs("li",{className:`
|
|
6
|
+
flex items-center gap-2 px-2 py-1 rounded
|
|
7
|
+
`,children:[o.jsx("input",{type:"checkbox",checked:a.status==="completed",readOnly:!0,className:"accent-primary h-4 w-4 rounded border border-muted-foreground/30",tabIndex:-1}),o.jsx("span",{className:ue("text-xs",a.status==="completed"&&"line-through text-muted-foreground"),children:a.content})]},`${a.status}-${e}`)}function Ea(a){return a.content}function Pa(a){return a.content}function Fa(a){return a.type==="text"?o.jsx(Un,{content:a.text}):a.type==="image"?o.jsx(Gt,{data:a}):a.type==="audio"?o.jsx(Jt,{data:a}):a.type==="resource"?o.jsx(ja,{data:a}):a.type==="resource_link"?o.jsx(Na,{data:a}):(Tn(a),null)}function Da(a){return o.jsx(pt,{status:a.status==="completed"?"success":a.status==="failed"?"error":a.status==="in_progress"||a.status==="pending"?"loading":void 0,title:o.jsx("span",{"data-tool-data":JSON.stringify(a),children:(e=Ta(a),e.startsWith("`")&&e.endsWith("`")?o.jsx("i",{children:e.slice(1,-1)}):e)}),defaultIcon:o.jsx(go,{className:"h-3 w-3"}),children:o.jsx(Qt,{data:a})},a.toolCallId);var e}function qa(a){return o.jsxs("div",{className:"border rounded-md overflow-hidden bg-[var(--gray-2)] max-h-64 overflow-y-auto scrollbar-thin",children:[o.jsx("div",{className:"px-2 py-1 bg-[var(--gray-2)] border-b text-xs font-medium text-[var(--gray-11)]",children:a.path}),o.jsxs("div",{className:"font-mono text-xs",children:[a.oldText&&o.jsx("div",{className:"px-3 py-1 border-b bg-[var(--red-2)] border-b-[var(--red-6)]",children:o.jsxs("div",{className:"flex",children:[o.jsx("span",{className:"text-[var(--red-11)] select-none mr-2",children:"-"}),o.jsx("pre",{className:"text-[var(--red-11)] px-1 rounded whitespace-pre-wrap break-words flex-1 line-through opacity-80",children:a.oldText})]})}),a.newText&&o.jsx("div",{className:"px-3 py-1 bg-[var(--grass-2)] border-b-[var(--grass-6)]",children:o.jsxs("div",{className:"flex",children:[o.jsx("span",{className:"text-[var(--grass-11)] select-none mr-2",children:"+"}),o.jsx("pre",{className:"text-[var(--grass-11)] px-1 rounded whitespace-pre-wrap break-words flex-1 italic opacity-90",children:a.newText})]})})]})]},a.path)}function $a(a){return a.line?`${a.path}:${a.line}`:a.path}function za(a){return a.type==="content"}function Wa(a){return a.content}function Oa(a){return a.type==="diff"}function La(a){return a.path}const pt=a=>{const e=A.c(31),{title:t,children:n,status:s,index:i,defaultIcon:l}=a,r=i===void 0?0:i;let c;e[0]!==l||e[1]!==s?(c=()=>{switch(s){case"loading":return o.jsx(To,{className:"h-3 w-3 animate-spin"});case"error":return o.jsx(vt,{className:"h-3 w-3 text-destructive"});case"success":return o.jsx(Pn,{className:"h-3 w-3 text-[var(--blue-9)]"});default:return l}},e[0]=l,e[1]=s,e[2]=c):c=e[2];const d=c,m=`tool-${r}`,u=s==="error"&&"text-destructive/80",p=s==="success"&&"text-[var(--blue-8)]";let _,f,x,g,j,N,S,I,T,U;return e[3]!==u||e[4]!==p?(_=ue("py-1 text-xs border-border shadow-none! ring-0! bg-muted hover:bg-muted/30 px-2 gap-1 rounded-sm [&[data-state=open]>svg]:rotate-180",u,p),e[3]=u,e[4]=p,e[5]=_):_=e[5],e[6]!==d?(f=d(),e[6]=d,e[7]=f):f=e[7],e[8]!==t?(x=o.jsx("code",{className:"font-mono text-xs",children:t}),e[8]=t,e[9]=x):x=e[9],e[10]!==f||e[11]!==x?(g=o.jsxs("span",{className:"flex items-center gap-1",children:[f,x]}),e[10]=f,e[11]=x,e[12]=g):g=e[12],e[13]!==_||e[14]!==g?(j=o.jsx(Ao,{className:_,children:g}),e[13]=_,e[14]=g,e[15]=j):j=e[15],e[16]!==n||e[17]!==s?(N=s!=="error"&&o.jsx("div",{className:"text-xs font-medium text-muted-foreground mb-1",children:n}),e[16]=n,e[17]=s,e[18]=N):N=e[18],e[19]!==n||e[20]!==s?(S=s==="error"&&o.jsx("div",{className:"bg-destructive/10 border border-destructive/20 rounded-md p-3 text-xs text-destructive",children:n}),e[19]=n,e[20]=s,e[21]=S):S=e[21],e[22]!==N||e[23]!==S?(I=o.jsx(Mo,{className:"p-2",children:o.jsxs("div",{className:"space-y-3 max-h-64 overflow-y-auto scrollbar-thin",children:[N,S]})}),e[22]=N,e[23]=S,e[24]=I):I=e[24],e[25]!==j||e[26]!==I?(T=o.jsxs(Ro,{value:"tool-call",className:"border-0",children:[j,I]}),e[25]=j,e[26]=I,e[27]=T):T=e[27],e[28]!==T||e[29]!==m?(U=o.jsx(Uo,{type:"single",collapsible:!0,className:"w-full",children:T},m),e[28]=T,e[29]=m,e[30]=U):U=e[30],U},Xt=k.memo(a=>{const e=A.c(16),{status:t,className:n}=a;let s;e[0]!==t?(s=()=>{switch(t){case"connected":return{icon:o.jsx(ct,{className:"h-3 w-3"}),label:"Connected",variant:"default",className:"bg-[var(--blue-3)] text-[var(--blue-11)] border-[var(--blue-5)]"};case"connecting":return{icon:o.jsx(Ue,{className:"h-3 w-3 animate-pulse"}),label:"Connecting",variant:"secondary",className:"bg-[var(--yellow-3)] text-[var(--yellow-11)] border-[var(--yellow-5)]"};case"disconnected":return{icon:o.jsx($e,{className:"h-3 w-3"}),label:"Disconnected",variant:"outline",className:"bg-[var(--red-3)] text-[var(--red-11)] border-[var(--red-5)]"};default:return{icon:o.jsx($e,{className:"h-3 w-3"}),label:t||"Unknown",variant:"outline",className:"bg-[var(--gray-3)] text-[var(--gray-11)] border-[var(--gray-5)]"}}},e[0]=t,e[1]=s):s=e[1];const i=s;let l,r,c,d,m,u;return e[2]!==n||e[3]!==i?(r=i(),l=ko,c=r.variant,d=ue(r.className,n),e[2]=n,e[3]=i,e[4]=l,e[5]=r,e[6]=c,e[7]=d):(l=e[4],r=e[5],c=e[6],d=e[7]),e[8]!==r.label?(m=o.jsx("span",{className:"ml-1 text-xs font-medium",children:r.label}),e[8]=r.label,e[9]=m):m=e[9],e[10]!==l||e[11]!==r.icon||e[12]!==c||e[13]!==d||e[14]!==m?(u=o.jsxs(l,{variant:c,className:d,children:[r.icon,m]}),e[10]=l,e[11]=r.icon,e[12]=c,e[13]=d,e[14]=m,e[15]=u):u=e[15],u});Xt.displayName="ConnectionStatus";const Zt=k.memo(a=>{const e=A.c(14),{permission:t,onResolve:n}=a;let s,i,l,r,c,d;if(e[0]===Symbol.for("react.memo_cache_sentinel")?(s=o.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[o.jsx(lt,{className:"h-4 w-4 text-[var(--amber-11)]"}),o.jsx("h3",{className:"text-sm font-medium text-[var(--amber-11)]",children:"Permission Request"})]}),i=o.jsx("p",{className:"text-sm text-[var(--amber-11)] mb-3",children:"The AI agent is requesting permission to proceed:"}),e[0]=s,e[1]=i):(s=e[0],i=e[1]),e[2]!==t.toolCall?(l=o.jsx(Qt,{data:t.toolCall}),e[2]=t.toolCall,e[3]=l):l=e[3],e[4]!==n||e[5]!==t.options){let m;e[7]!==n?(m=u=>o.jsxs(se,{size:"xs",variant:"text",className:u.kind.startsWith("allow")?"text-[var(--blue-10)]":"text-[var(--red-10)]",onClick:()=>n({outcome:{outcome:"selected",optionId:u.optionId}}),children:[u.kind.startsWith("allow")&&o.jsx(Pn,{className:"h-3 w-3 mr-1"}),u.kind.startsWith("reject")&&o.jsx(vt,{className:"h-3 w-3 mr-1"}),u.name]},u.optionId),e[7]=n,e[8]=m):m=e[8],r=t.options.map(m),e[4]=n,e[5]=t.options,e[6]=r}else r=e[6];return e[9]!==r?(c=o.jsx("div",{className:"flex gap-2",children:r}),e[9]=r,e[10]=c):c=e[10],e[11]!==l||e[12]!==c?(d=o.jsxs("div",{className:"border border-[var(--amber-8)] bg-[var(--amber-2)] rounded-lg p-2",children:[s,i,l,c]}),e[11]=l,e[12]=c,e[13]=d):d=e[13],d});Zt.displayName="PermissionRequest";const ze=Fo("marimo:acp:sessions:v1",{sessions:[],activeTabId:null}),ht=Po(a=>{const e=a(ze);return e.activeTabId&&e.sessions.find(t=>t.tabId===e.activeTabId)||null},(a,e,t)=>{e(ze,n=>({...n,activeTabId:t}))});function Kt(a,e=20){return a.length<=e?a:`${a.slice(0,e-3)}...`}function Ba(a,e){const t=tn(e.agentId),n=Date.now(),s=e.firstMessage?Kt(e.firstMessage.trim()):`New ${e.agentId} session`,i=`tab_${Do()}`;if(t==="single"){const l=a.sessions.filter(c=>c.agentId===e.agentId),r=a.sessions.filter(c=>c.agentId!==e.agentId);if(l.length>0){const c=l[0],d={agentId:e.agentId,title:s,createdAt:n,lastUsedAt:n,tabId:c.tabId,externalAgentSessionId:null};return{...a,sessions:[...r.slice(0,0),d],activeTabId:d.tabId}}}return{...a,sessions:[...a.sessions.slice(0,0),{agentId:e.agentId,tabId:i,title:s,createdAt:n,lastUsedAt:n,externalAgentSessionId:null}],activeTabId:i}}function en(a,e){const t=a.activeTabId;return t?{...a,sessions:a.sessions.map(n=>n.tabId===t?{...n,externalAgentSessionId:e,lastUsedAt:Date.now()}:n)}:a}const Ze={claude:{port:3017,command:"npx @zed-industries/claude-code-acp",webSocketUrl:"ws://localhost:3017/message",sessionSupport:"single"},gemini:{port:3019,command:"npx @google/gemini-cli --experimental-acp",webSocketUrl:"ws://localhost:3019/message",sessionSupport:"single"}};function tn(a){return Ze[a].sessionSupport}const nn=k.memo(a=>{const e=A.c(35),{agentId:t,showCopy:n,className:s}=a,i=n===void 0||n;let l;e[0]!==t?(l=(function(C){const $=Ze[C].port;return`npx stdio-to-ws "${Ze[C].command}" --port ${$}`})(t),e[0]=t,e[1]=l):l=e[1];const r=l;let c;e[2]!==t?(c=(function(C){return yt(C)})(t),e[2]=t,e[3]=c):c=e[3];const d=c,m=An(qo),{sendCommand:u}=(function(){const C=A.c(3),{addCommand:$}=bi(),{setIsTerminalOpen:Q}=Eo();let X;return C[0]!==$||C[1]!==Q?(X={sendCommand:L=>{Q(!0),$(L)}},C[0]=$,C[1]=Q,C[2]=X):X=C[2],X})();let p;e[4]!==r||e[5]!==u?(p=()=>{u(r)},e[4]=r,e[5]=u,e[6]=p):p=e[6];const _=p;let f,x,g,j,N,S,I,T,U,q,R;return e[7]!==s?(f=ue("space-y-2",s),e[7]=s,e[8]=f):f=e[8],e[9]!==t?(x=o.jsx(wt,{provider:t,className:"h-4 w-4"}),e[9]=t,e[10]=x):x=e[10],e[11]!==d?(g=o.jsx("span",{className:"font-medium text-sm",children:d}),e[11]=d,e[12]=g):g=e[12],e[13]!==x||e[14]!==g?(j=o.jsxs("div",{className:"flex items-center gap-2",children:[x,g]}),e[13]=x,e[14]=g,e[15]=j):j=e[15],e[16]===Symbol.for("react.memo_cache_sentinel")?(N=o.jsx(Ln,{className:"h-4 w-4 mt-0.5 text-muted-foreground flex-shrink-0"}),e[16]=N):N=e[16],e[17]!==r?(S=o.jsx("code",{className:"text-xs font-mono break-words flex-1 whitespace-pre-wrap",children:r}),e[17]=r,e[18]=S):S=e[18],e[19]!==r||e[20]!==i?(I=i&&o.jsx(se,{size:"xs",variant:"outline",className:"border",children:o.jsx($o,{value:r,className:"h-3 w-3"})}),e[19]=r,e[20]=i,e[21]=I):I=e[21],e[22]!==m.terminal||e[23]!==_?(T=m.terminal&&o.jsx(it,{content:"Run in terminal",delayDuration:100,children:o.jsx(se,{onClick:_,title:"Send to terminal",size:"xs",variant:"outline",children:o.jsx(fi,{className:"h-3 w-3"})})}),e[22]=m.terminal,e[23]=_,e[24]=T):T=e[24],e[25]!==I||e[26]!==T?(U=o.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[I,T]}),e[25]=I,e[26]=T,e[27]=U):U=e[27],e[28]!==S||e[29]!==U?(q=o.jsx("div",{className:"bg-muted/50 rounded-md p-2 border",children:o.jsxs("div",{className:"flex items-start gap-2 text-xs",children:[N,S,U]})}),e[28]=S,e[29]=U,e[30]=q):q=e[30],e[31]!==q||e[32]!==f||e[33]!==j?(R=o.jsxs("div",{className:f,children:[j,q]}),e[31]=q,e[32]=f,e[33]=j,e[34]=R):R=e[34],R});nn.displayName="AgentDocItem";const Ke=k.memo(a=>{const e=A.c(22),{title:t,description:n,agents:s,showCopy:i,className:l}=a;let r;e[0]!==s?(r=s===void 0?["claude","gemini"]:s,e[0]=s,e[1]=r):r=e[1];const c=r,d=i===void 0||i;let m,u,p,_,f,x,g;if(e[2]!==l?(m=ue("space-y-4",l),e[2]=l,e[3]=m):m=e[3],e[4]!==t?(u=o.jsx("h3",{className:"font-medium text-sm",children:t}),e[4]=t,e[5]=u):u=e[5],e[6]!==n?(p=o.jsx("p",{className:"text-xs text-muted-foreground",children:n}),e[6]=n,e[7]=p):p=e[7],e[8]!==u||e[9]!==p?(_=o.jsxs("div",{className:"space-y-2",children:[u,p]}),e[8]=u,e[9]=p,e[10]=_):_=e[10],e[11]!==c||e[12]!==d){let j;e[14]!==d?(j=N=>o.jsx(nn,{agentId:N,showCopy:d},N),e[14]=d,e[15]=j):j=e[15],f=c.map(j),e[11]=c,e[12]=d,e[13]=f}else f=e[13];return e[16]!==f?(x=o.jsx("div",{className:"space-y-3",children:f}),e[16]=f,e[17]=x):x=e[17],e[18]!==m||e[19]!==_||e[20]!==x?(g=o.jsxs("div",{className:m,children:[_,x]}),e[18]=m,e[19]=_,e[20]=x,e[21]=g):g=e[21],g});Ke.displayName="AgentDocs";const sn=[{id:"claude",displayName:"Claude",iconId:"anthropic"},{id:"gemini",displayName:"Gemini",iconId:"google"}],an=k.memo(a=>{const e=A.c(24),{agent:t,onSelect:n,existingSessions:s}=a;let i;e[0]!==t.id?(i=tn(t.id),e[0]=t.id,e[1]=i):i=e[1];const l=i;let r;if(e[2]!==t.id||e[3]!==s){let j;e[5]!==t.id?(j=N=>N.agentId===t.id,e[5]=t.id,e[6]=j):j=e[6],r=s.some(j),e[2]=t.id,e[3]=s,e[4]=r}else r=e[4];const c=r;let d;e[7]!==t.displayName||e[8]!==c||e[9]!==l?(d=()=>l==="single"&&c?`Reset ${t.displayName} session`:`New ${t.displayName} session`,e[7]=t.displayName,e[8]=c,e[9]=l,e[10]=d):d=e[10];const m=d;let u,p;e[11]!==t.id||e[12]!==n?(u=()=>n(t.id),e[11]=t.id,e[12]=n,e[13]=u):u=e[13],e[14]!==t.iconId?(p=o.jsx(wt,{provider:t.iconId,className:"h-3 w-3 mr-2"}),e[14]=t.iconId,e[15]=p):p=e[15];const _=m();let f,x,g;return e[16]!==_?(f=o.jsx("span",{children:_}),e[16]=_,e[17]=f):f=e[17],e[18]!==p||e[19]!==f?(x=o.jsxs("div",{className:"flex items-center w-full",children:[p,f]}),e[18]=p,e[19]=f,e[20]=x):x=e[20],e[21]!==u||e[22]!==x?(g=o.jsx(Wo,{onClick:u,className:"cursor-pointer",children:x}),e[21]=u,e[22]=x,e[23]=g):g=e[23],g});an.displayName="AgentMenuItem";const et=k.memo(a=>{const e=A.c(30),{onSessionCreated:t,className:n}=a,s=zo(),[i,l]=rt(ze),r=Mn(ht),[c,d]=k.useState(!1);let m;e[0]!==t||e[1]!==i||e[2]!==r||e[3]!==l?(m=async C=>{const $=Ba(i,{agentId:C});l($),r($.activeTabId),d(!1),t==null||t(C)},e[0]=t,e[1]=i,e[2]=r,e[3]=l,e[4]=m):m=e[4];const u=ae(m);let p,_,f,x,g,j,N,S,I,T,U,q,R;return e[5]!==n?(p=ue("h-6 gap-1 px-2 text-xs bg-muted/30 hover:bg-muted/50 border border-border border-y-0 rounded-none focus-visible:ring-0",n),e[5]=n,e[6]=p):p=e[6],e[7]===Symbol.for("react.memo_cache_sentinel")?(_=o.jsx("span",{children:"New session"}),f=o.jsx(Oo,{className:"h-3 w-3"}),e[7]=_,e[8]=f):(_=e[7],f=e[8]),e[9]!==p?(x=o.jsx(Lo,{asChild:!0,children:o.jsxs(se,{variant:"ghost",size:"sm",className:p,children:[_,f]})}),e[9]=p,e[10]=x):x=e[10],e[11]!==u||e[12]!==i?(g=sn.map(C=>o.jsx(an,{agent:C,onSelect:u,existingSessions:i.sessions},C.id)),e[11]=u,e[12]=i,e[13]=g):g=e[13],e[14]===Symbol.for("react.memo_cache_sentinel")?(j=o.jsx(Bo,{}),e[14]=j):j=e[14],e[15]===Symbol.for("react.memo_cache_sentinel")?(N=o.jsx("br",{}),e[15]=N):N=e[15],e[16]!==s?(S=_t.dirname(s??""),e[16]=s,e[17]=S):S=e[17],e[18]!==S?(I=o.jsxs("div",{className:"text-xs font-medium text-muted-foreground mb-3",children:["To start an external agent, run the following command in your terminal.",N,"Note: This must be in the directory"," ",S]}),e[18]=S,e[19]=I):I=e[19],e[20]===Symbol.for("react.memo_cache_sentinel")?(T=o.jsx(Ke,{agents:sn.map(Va),showCopy:!0}),e[20]=T):T=e[20],e[21]!==I?(U=o.jsxs("div",{className:"px-2 py-2",children:[I,T]}),e[21]=I,e[22]=U):U=e[22],e[23]!==U||e[24]!==g?(q=o.jsxs(Vo,{align:"start",className:"w-fit",children:[g,j,U]}),e[23]=U,e[24]=g,e[25]=q):q=e[25],e[26]!==c||e[27]!==q||e[28]!==x?(R=o.jsxs(Ho,{open:c,onOpenChange:d,children:[x,q]}),e[26]=c,e[27]=q,e[28]=x,e[29]=R):R=e[29],R});function Va(a){return a.id}et.displayName="AgentSelector";const on=k.memo(a=>{const e=A.c(10),{isVisible:t,onScrollToBottom:n,className:s}=a;if(!t)return null;let i,l,r,c,d,m;return e[0]!==s?(i=ue("absolute bottom-2 right-6 z-10 animate-in fade-in-0 zoom-in-95 duration-200",s),e[0]=s,e[1]=i):i=e[1],e[2]===Symbol.for("react.memo_cache_sentinel")?(l=ue("h-8 w-8 p-0 rounded-full","bg-background/90 backdrop-blur-sm","border border-border/50","shadow-md shadow-black/10","hover:bg-background hover:shadow-black/15","transition-all duration-200","focus:outline-none focus:ring-2 focus:ring-primary/50"),r=o.jsx(P,{className:"h-4 w-4"}),c=o.jsx("span",{className:"sr-only",children:"Scroll to bottom"}),e[2]=l,e[3]=r,e[4]=c):(l=e[2],r=e[3],c=e[4]),e[5]!==n?(d=o.jsxs(se,{variant:"secondary",size:"sm",onClick:n,className:l,children:[r,c]}),e[5]=n,e[6]=d):d=e[6],e[7]!==i||e[8]!==d?(m=o.jsx("div",{className:i,children:d}),e[7]=i,e[8]=d,e[9]=m):m=e[9],m});on.displayName="ScrollToBottomButton";const rn=k.memo(a=>{const e=A.c(23),{session:t,isActive:n,onSelect:s,onClose:i}=a,l=n&&"bg-background border-b-0 relative z-10";let r,c,d,m,u,p,_,f,x;return e[0]!==l?(r=ue("flex items-center gap-1 px-2 py-1 text-xs border-r border-border bg-muted/30 hover:bg-muted/50 cursor-pointer min-w-0",l),e[0]=l,e[1]=r):r=e[1],e[2]!==s||e[3]!==t.tabId?(c=()=>s(t.tabId),e[2]=s,e[3]=t.tabId,e[4]=c):c=e[4],e[5]!==t.agentId?(d=o.jsx("span",{className:"text-muted-foreground text-[10px] font-medium",children:o.jsx(wt,{provider:t.agentId,className:"h-3 w-3"})}),e[5]=t.agentId,e[6]=d):d=e[6],e[7]!==t.title?(m=o.jsx("span",{className:"truncate",title:t.title,children:t.title}),e[7]=t.title,e[8]=m):m=e[8],e[9]!==d||e[10]!==m?(u=o.jsxs("div",{className:"flex items-center gap-1 min-w-0 flex-1",children:[d,m]}),e[9]=d,e[10]=m,e[11]=u):u=e[11],e[12]!==i||e[13]!==t.tabId?(p=g=>{g.stopPropagation(),i(t.tabId)},e[12]=i,e[13]=t.tabId,e[14]=p):p=e[14],e[15]===Symbol.for("react.memo_cache_sentinel")?(_=o.jsx(In,{className:"h-3 w-3"}),e[15]=_):_=e[15],e[16]!==p?(f=o.jsx(se,{variant:"ghost",size:"sm",className:"h-4 w-4 p-0 hover:bg-destructive/20 hover:text-destructive flex-shrink-0",onClick:p,children:_}),e[16]=p,e[17]=f):f=e[17],e[18]!==r||e[19]!==c||e[20]!==u||e[21]!==f?(x=o.jsxs("div",{className:r,onClick:c,children:[u,f]}),e[18]=r,e[19]=c,e[20]=u,e[21]=f,e[22]=x):x=e[22],x});rn.displayName="SessionTab";const ln=k.memo(a=>{const e=A.c(11),{sessions:t,activeTabId:n,onSelectSession:s,onCloseSession:i}=a;let l,r;if(e[0]!==n||e[1]!==i||e[2]!==s||e[3]!==t){let c;e[5]!==n||e[6]!==i||e[7]!==s?(c=d=>o.jsx(rn,{session:d,isActive:d.tabId===n,onSelect:s,onClose:i},d.tabId),e[5]=n,e[6]=i,e[7]=s,e[8]=c):c=e[8],l=t.map(c),e[0]=n,e[1]=i,e[2]=s,e[3]=t,e[4]=l}else l=e[4];return e[9]!==l?(r=o.jsx("div",{className:"flex min-w-0 flex-1 overflow-x-auto",children:l}),e[9]=l,e[10]=r):r=e[10],r});ln.displayName="SessionList";const cn=k.memo(a=>{const e=A.c(5),{className:t}=a;let n,s,i;return e[0]!==t?(n=ue("flex items-center border-b bg-muted/20",t),e[0]=t,e[1]=n):n=e[1],e[2]===Symbol.for("react.memo_cache_sentinel")?(s=o.jsx(et,{className:"h-6"}),e[2]=s):s=e[2],e[3]!==n?(i=o.jsx("div",{className:n,children:s}),e[3]=n,e[4]=i):i=e[4],i});cn.displayName="EmptySessionTabs";const xt=k.memo(a=>{const e=A.c(18),{className:t}=a,[n,s]=rt(ze),i=Mn(ht);let l;e[0]!==i||e[1]!==s?(l=g=>{i(g),s(j=>(function(N,S){return{...N,sessions:N.sessions.map(I=>I.tabId===S?{...I,lastUsedAt:Date.now()}:I)}})(j,g))},e[0]=i,e[1]=s,e[2]=l):l=e[2];const r=ae(l);let c;e[3]!==s?(c=g=>{s(j=>(function(N,S){const I=N.sessions.filter(T=>T.tabId!==S);return{sessions:I,activeTabId:N.activeTabId===S?I.length>0?I[I.length-1].tabId:null:N.activeTabId}})(j,g))},e[3]=s,e[4]=c):c=e[4];const d=ae(c),{sessions:m,activeTabId:u}=n;if(m.length===0){let g;return e[5]!==t?(g=o.jsx(cn,{className:t}),e[5]=t,e[6]=g):g=e[6],g}let p,_,f,x;return e[7]!==t?(p=ue("flex items-center border-b bg-muted/20 overflow-hidden",t),e[7]=t,e[8]=p):p=e[8],e[9]!==u||e[10]!==d||e[11]!==r||e[12]!==m?(_=o.jsx(ln,{sessions:m,activeTabId:u,onSelectSession:r,onCloseSession:d}),e[9]=u,e[10]=d,e[11]=r,e[12]=m,e[13]=_):_=e[13],e[14]===Symbol.for("react.memo_cache_sentinel")?(f=o.jsx(et,{className:"h-6 flex-shrink-0"}),e[14]=f):f=e[14],e[15]!==p||e[16]!==_?(x=o.jsxs("div",{className:p,children:[_,f]}),e[15]=p,e[16]=_,e[17]=x):x=e[17],x});xt.displayName="SessionTabs";const Ha=a=>{const e=A.c(17),{notifications:t,isConnected:n,onRetryConnection:s,onRetryLastAction:i,onDismissError:l}=a;let r,c,d;if(e[0]!==n||e[1]!==t||e[2]!==l||e[3]!==s||e[4]!==i){let m,u=(function(f){const x=[];for(const g of f){const j=x[x.length-1];j&&xa(j.at(0),g)?j.push(g):x.push([g])}return x})(t);u=u.filter((f,x)=>x===u.length-1||!dn(f)),e[7]!==n||e[8]!==l||e[9]!==s||e[10]!==i?(m=f=>{if(f.length===0)return null;if(f[0].type==="error"){const x=f[f.length-1];return o.jsx(ga,{data:x.data,onRetry:i,onDismiss:l?()=>l(x.id):void 0},x.id)}if(dn(f)){const x=f[f.length-1];return o.jsx(ba,{data:x.data,isConnected:n,onRetry:s,timestamp:x.timestamp},x.id)}if((function(x){return x[0].type==="session_notification"})(f)){const x=f[0].timestamp,g=f[f.length-1].timestamp,j=f.map(Ya);return o.jsx(Sa,{data:j,startTimestamp:x,endTimestamp:g})}return"Unknown notification type"},e[7]=n,e[8]=l,e[9]=s,e[10]=i,e[11]=m):m=e[11];const p=m;let _;r="flex flex-col gap-4 px-2 pb-10",e[12]!==p?(_=f=>o.jsx(De.Fragment,{children:p(f)},f[0].id),e[12]=p,e[13]=_):_=e[13],c=u.map(_),e[0]=n,e[1]=t,e[2]=l,e[3]=s,e[4]=i,e[5]=r,e[6]=c}else r=e[5],c=e[6];return e[14]!==r||e[15]!==c?(d=o.jsx("div",{className:r,children:c}),e[14]=r,e[15]=c,e[16]=d):d=e[16],d};function dn(a){return a[0].type==="connection_change"}function Ya(a){return a.data.update}function Ga(a){return`
|
|
8
|
+
I am currently editing a marimo notebook.
|
|
9
|
+
You can read or write to the notebook at ${a}
|
|
10
|
+
|
|
11
|
+
If you make edits to the notebook, only edit the contents inside the function decorator with @app.cell.
|
|
12
|
+
marimo will automatically handle adding the parameters and return statement of the function. For example,
|
|
13
|
+
for each edit, just return:
|
|
14
|
+
|
|
15
|
+
\`\`\`
|
|
16
|
+
@app.cell
|
|
17
|
+
def _():
|
|
18
|
+
<your code here>
|
|
19
|
+
return
|
|
20
|
+
\`\`\`
|
|
21
|
+
|
|
22
|
+
## Marimo fundamentals
|
|
23
|
+
|
|
24
|
+
Marimo is a reactive notebook that differs from traditional notebooks in key ways:
|
|
25
|
+
|
|
26
|
+
- Cells execute automatically when their dependencies change
|
|
27
|
+
- Variables cannot be redeclared across cells
|
|
28
|
+
- The notebook forms a directed acyclic graph (DAG)
|
|
29
|
+
- The last expression in a cell is automatically displayed
|
|
30
|
+
- UI elements are reactive and update the notebook automatically
|
|
31
|
+
|
|
32
|
+
## Code Requirements
|
|
33
|
+
|
|
34
|
+
1. All code must be complete and runnable
|
|
35
|
+
2. Follow consistent coding style throughout
|
|
36
|
+
3. Include descriptive variable names and helpful comments
|
|
37
|
+
4. Import all modules in the first cell, always including \`import marimo as mo\`
|
|
38
|
+
5. Never redeclare variables across cells
|
|
39
|
+
6. Ensure no cycles in notebook dependency graph
|
|
40
|
+
7. The last expression in a cell is automatically displayed, just like in Jupyter notebooks.
|
|
41
|
+
8. Don't include comments in markdown cells
|
|
42
|
+
9. Don't include comments in SQL cells
|
|
43
|
+
10. Never define anything using \`global\`.
|
|
44
|
+
|
|
45
|
+
## Reactivity
|
|
46
|
+
|
|
47
|
+
Marimo's reactivity means:
|
|
48
|
+
|
|
49
|
+
- When a variable changes, all cells that use that variable automatically re-execute
|
|
50
|
+
- UI elements trigger updates when their values change without explicit callbacks
|
|
51
|
+
- UI element values are accessed through \`.value\` attribute
|
|
52
|
+
- You cannot access a UI element's value in the same cell where it's defined
|
|
53
|
+
- Cells prefixed with an underscore (e.g. _my_var) are local to the cell and cannot be accessed by other cells
|
|
54
|
+
|
|
55
|
+
## Best Practices
|
|
56
|
+
|
|
57
|
+
<data_handling>
|
|
58
|
+
- Use polars for data manipulation
|
|
59
|
+
- Implement proper data validation
|
|
60
|
+
- Handle missing values appropriately
|
|
61
|
+
- Use efficient data structures
|
|
62
|
+
- A variable in the last expression of a cell is automatically displayed as a table
|
|
63
|
+
</data_handling>
|
|
64
|
+
|
|
65
|
+
<visualization>
|
|
66
|
+
- For matplotlib: use plt.gca() as the last expression instead of plt.show()
|
|
67
|
+
- For plotly: return the figure object directly
|
|
68
|
+
- For altair: return the chart object directly. Add tooltips where appropriate. You can pass polars dataframes directly to altair.
|
|
69
|
+
- Include proper labels, titles, and color schemes
|
|
70
|
+
- Make visualizations interactive where appropriate
|
|
71
|
+
</visualization>
|
|
72
|
+
|
|
73
|
+
<ui_elements>
|
|
74
|
+
- Access UI element values with .value attribute (e.g., slider.value)
|
|
75
|
+
- Create UI elements in one cell and reference them in later cells
|
|
76
|
+
- Create intuitive layouts with mo.hstack(), mo.vstack(), and mo.tabs()
|
|
77
|
+
- Prefer reactive updates over callbacks (marimo handles reactivity automatically)
|
|
78
|
+
- Group related UI elements for better organization
|
|
79
|
+
</ui_elements>
|
|
80
|
+
|
|
81
|
+
<sql>
|
|
82
|
+
- When writing duckdb, prefer using marimo's SQL cells, which start with df = mo.sql(f"""<your query>""") for DuckDB, or df = mo.sql(f"""<your query>""", engine=engine) for other SQL engines.
|
|
83
|
+
- See the SQL with duckdb example for an example on how to do this
|
|
84
|
+
- Don't add comments in cells that use mo.sql()
|
|
85
|
+
- Consider using \`vega_datasets\` for common example datasets
|
|
86
|
+
</sql>
|
|
87
|
+
|
|
88
|
+
## Troubleshooting
|
|
89
|
+
|
|
90
|
+
Common issues and solutions:
|
|
91
|
+
- Circular dependencies: Reorganize code to remove cycles in the dependency graph
|
|
92
|
+
- UI element value access: Move access to a separate cell from definition
|
|
93
|
+
- Visualization not showing: Ensure the visualization object is the last expression
|
|
94
|
+
|
|
95
|
+
## Available UI elements
|
|
96
|
+
|
|
97
|
+
- \`mo.ui.altair_chart(altair_chart)\`
|
|
98
|
+
- \`mo.ui.button(value=None, kind='primary')\`
|
|
99
|
+
- \`mo.ui.run_button(label=None, tooltip=None, kind='primary')\`
|
|
100
|
+
- \`mo.ui.checkbox(label='', value=False)\`
|
|
101
|
+
- \`mo.ui.date(value=None, label=None, full_width=False)\`
|
|
102
|
+
- \`mo.ui.dropdown(options, value=None, label=None, full_width=False)\`
|
|
103
|
+
- \`mo.ui.file(label='', multiple=False, full_width=False)\`
|
|
104
|
+
- \`mo.ui.number(value=None, label=None, full_width=False)\`
|
|
105
|
+
- \`mo.ui.radio(options, value=None, label=None, full_width=False)\`
|
|
106
|
+
- \`mo.ui.refresh(options: List[str], default_interval: str)\`
|
|
107
|
+
- \`mo.ui.slider(start, stop, value=None, label=None, full_width=False, step=None)\`
|
|
108
|
+
- \`mo.ui.range_slider(start, stop, value=None, label=None, full_width=False, step=None)\`
|
|
109
|
+
- \`mo.ui.table(data, columns=None, on_select=None, sortable=True, filterable=True)\`
|
|
110
|
+
- \`mo.ui.text(value='', label=None, full_width=False)\`
|
|
111
|
+
- \`mo.ui.text_area(value='', label=None, full_width=False)\`
|
|
112
|
+
- \`mo.ui.data_explorer(df)\`
|
|
113
|
+
- \`mo.ui.dataframe(df)\`
|
|
114
|
+
- \`mo.ui.plotly(plotly_figure)\`
|
|
115
|
+
- \`mo.ui.tabs(elements: dict[str, mo.ui.Element])\`
|
|
116
|
+
- \`mo.ui.array(elements: list[mo.ui.Element])\`
|
|
117
|
+
- \`mo.ui.form(element: mo.ui.Element, label='', bordered=True)\`
|
|
118
|
+
|
|
119
|
+
## Layout and utility functions
|
|
120
|
+
|
|
121
|
+
- \`mo.md(text)\` - display markdown
|
|
122
|
+
- \`mo.stop(predicate, output=None)\` - stop execution conditionally
|
|
123
|
+
- \`mo.output.append(value)\` - append to the output when it is not the last expression
|
|
124
|
+
- \`mo.output.replace(value)\` - replace the output when it is not the last expression
|
|
125
|
+
- \`mo.Html(html)\` - display HTML
|
|
126
|
+
- \`mo.image(image)\` - display an image
|
|
127
|
+
- \`mo.hstack(elements)\` - stack elements horizontally
|
|
128
|
+
- \`mo.vstack(elements)\` - stack elements vertically
|
|
129
|
+
- \`mo.tabs(elements)\` - create a tabbed interface
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
## Examples
|
|
134
|
+
|
|
135
|
+
<example title="Markdown ccell">
|
|
136
|
+
${Ce([`
|
|
137
|
+
mo.md("""
|
|
138
|
+
# Hello world
|
|
139
|
+
This is a _markdown_ **cell**.
|
|
140
|
+
""")
|
|
141
|
+
`])}
|
|
142
|
+
</example>
|
|
143
|
+
|
|
144
|
+
<example title="Basic UI with reactivity">
|
|
145
|
+
${Ce([`
|
|
146
|
+
import marimo as mo
|
|
147
|
+
import altair as alt
|
|
148
|
+
import polars as pl
|
|
149
|
+
import numpy as np
|
|
150
|
+
`,`
|
|
151
|
+
n_points = mo.ui.slider(10, 100, value=50, label="Number of points")
|
|
152
|
+
n_points
|
|
153
|
+
`,`
|
|
154
|
+
x = np.random.rand(n_points.value)
|
|
155
|
+
y = np.random.rand(n_points.value)
|
|
156
|
+
|
|
157
|
+
df = pl.DataFrame({"x": x, "y": y})
|
|
158
|
+
|
|
159
|
+
chart = alt.Chart(df).mark_circle(opacity=0.7).encode(
|
|
160
|
+
x=alt.X('x', title='X axis'),
|
|
161
|
+
y=alt.Y('y', title='Y axis')
|
|
162
|
+
).properties(
|
|
163
|
+
title=f"Scatter plot with {n_points.value} points",
|
|
164
|
+
width=400,
|
|
165
|
+
height=300
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
chart
|
|
169
|
+
`])}
|
|
170
|
+
</example>
|
|
171
|
+
|
|
172
|
+
<example title="Data explorer">
|
|
173
|
+
${Ce([`
|
|
174
|
+
import marimo as mo
|
|
175
|
+
import polars as pl
|
|
176
|
+
from vega_datasets import data
|
|
177
|
+
`,`
|
|
178
|
+
cars_df = pl.DataFrame(data.cars())
|
|
179
|
+
mo.ui.data_explorer(cars_df)
|
|
180
|
+
`])}
|
|
181
|
+
</example>
|
|
182
|
+
|
|
183
|
+
<example title="Multiple UI elements">
|
|
184
|
+
${Ce([`
|
|
185
|
+
import marimo as mo
|
|
186
|
+
import polars as pl
|
|
187
|
+
import altair as alt
|
|
188
|
+
`,`
|
|
189
|
+
iris = pl.read_csv("hf://datasets/scikit-learn/iris/Iris.csv")
|
|
190
|
+
`,`
|
|
191
|
+
species_selector = mo.ui.dropdown(
|
|
192
|
+
options=["All"] + iris["Species"].unique().to_list(),
|
|
193
|
+
value="All",
|
|
194
|
+
label="Species",
|
|
195
|
+
)
|
|
196
|
+
x_feature = mo.ui.dropdown(
|
|
197
|
+
options=iris.select(pl.col(pl.Float64, pl.Int64)).columns,
|
|
198
|
+
value="SepalLengthCm",
|
|
199
|
+
label="X Feature",
|
|
200
|
+
)
|
|
201
|
+
y_feature = mo.ui.dropdown(
|
|
202
|
+
options=iris.select(pl.col(pl.Float64, pl.Int64)).columns,
|
|
203
|
+
value="SepalWidthCm",
|
|
204
|
+
label="Y Feature",
|
|
205
|
+
)
|
|
206
|
+
mo.hstack([species_selector, x_feature, y_feature])
|
|
207
|
+
`,`
|
|
208
|
+
filtered_data = iris if species_selector.value == "All" else iris.filter(pl.col("Species") == species_selector.value)
|
|
209
|
+
|
|
210
|
+
chart = alt.Chart(filtered_data).mark_circle().encode(
|
|
211
|
+
x=alt.X(x_feature.value, title=x_feature.value),
|
|
212
|
+
y=alt.Y(y_feature.value, title=y_feature.value),
|
|
213
|
+
color='Species'
|
|
214
|
+
).properties(
|
|
215
|
+
title=f"{y_feature.value} vs {x_feature.value}",
|
|
216
|
+
width=500,
|
|
217
|
+
height=400
|
|
218
|
+
)
|
|
219
|
+
|
|
220
|
+
chart
|
|
221
|
+
`])}
|
|
222
|
+
</example>
|
|
223
|
+
|
|
224
|
+
<example title="Conditional Outputs">
|
|
225
|
+
${Ce([`
|
|
226
|
+
mo.stop(not data.value, mo.md("No data to display"))
|
|
227
|
+
|
|
228
|
+
if mode.value == "scatter":
|
|
229
|
+
mo.output.replace(render_scatter(data.value))
|
|
230
|
+
else:
|
|
231
|
+
mo.output.replace(render_bar_chart(data.value))
|
|
232
|
+
`])}
|
|
233
|
+
</example>
|
|
234
|
+
|
|
235
|
+
<example title="Interactive chart with Altair">
|
|
236
|
+
${Ce([`
|
|
237
|
+
import marimo as mo
|
|
238
|
+
import altair as alt
|
|
239
|
+
import polars as pl
|
|
240
|
+
`,`# Load dataset
|
|
241
|
+
weather = pl.read_csv("https://raw.githubusercontent.com/vega/vega-datasets/refs/heads/main/data/weather.csv")
|
|
242
|
+
weather_dates = weather.with_columns(
|
|
243
|
+
pl.col("date").str.strptime(pl.Date, format="%Y-%m-%d")
|
|
244
|
+
)
|
|
245
|
+
_chart = (
|
|
246
|
+
alt.Chart(weather_dates)
|
|
247
|
+
.mark_point()
|
|
248
|
+
.encode(
|
|
249
|
+
x="date:T",
|
|
250
|
+
y="temp_max",
|
|
251
|
+
color="location",
|
|
252
|
+
)
|
|
253
|
+
)
|
|
254
|
+
`,`chart = mo.ui.altair_chart(_chart)
|
|
255
|
+
chart`,`
|
|
256
|
+
# Display the selection
|
|
257
|
+
chart.value`])}
|
|
258
|
+
</example>
|
|
259
|
+
|
|
260
|
+
<example title="Run Button Example">
|
|
261
|
+
${Ce(["import marimo as mo",`
|
|
262
|
+
first_button = mo.ui.run_button(label="Option 1")
|
|
263
|
+
second_button = mo.ui.run_button(label="Option 2")
|
|
264
|
+
[first_button, second_button]`,`
|
|
265
|
+
if first_button.value:
|
|
266
|
+
print("You chose option 1!")
|
|
267
|
+
elif second_button.value:
|
|
268
|
+
print("You chose option 2!")
|
|
269
|
+
else:
|
|
270
|
+
print("Click a button!")`])}
|
|
271
|
+
</example>
|
|
272
|
+
|
|
273
|
+
<example title="SQL with duckdb">
|
|
274
|
+
${Ce([`import marimo as mo
|
|
275
|
+
import polars as pl`,"weather = pl.read_csv('https://raw.githubusercontent.com/vega/vega-datasets/refs/heads/main/data/weather.csv')",`seattle_weather_df = mo.sql(
|
|
276
|
+
f"""
|
|
277
|
+
SELECT * FROM weather WHERE location = 'Seattle';
|
|
278
|
+
"""
|
|
279
|
+
)`])}
|
|
280
|
+
</example>`}function Ce(a){return a.map(e=>{return`
|
|
281
|
+
@app.cell
|
|
282
|
+
def _():
|
|
283
|
+
${t=e,t.trim().split(`
|
|
284
|
+
`).map(n=>(" "+n).trimEnd()).join(`
|
|
285
|
+
`)}
|
|
286
|
+
return
|
|
287
|
+
`;var t}).join("")}const ie=qe.get("agents"),Ja=["image/*","text/*"],mn=k.memo(a=>{const e=A.c(4),{currentAgentId:t}=a;let n,s;return e[0]!==t?(n=t?yt(t):"Agents",e[0]=t,e[1]=n):n=e[1],e[2]!==n?(s=o.jsx("span",{className:"text-sm font-medium",children:n}),e[2]=n,e[3]=s):s=e[3],s});mn.displayName="AgentTitle";const un=k.memo(a=>{const e=A.c(4),{connectionState:t,onConnect:n,onDisconnect:s}=a,i=t.status==="connected",l=i?s:n,r=t.status==="connecting",c=i?"Disconnect":"Connect";let d;return e[0]!==l||e[1]!==r||e[2]!==c?(d=o.jsx(se,{variant:"outline",size:"xs",onClick:l,disabled:r,children:c}),e[0]=l,e[1]=r,e[2]=c,e[3]=d):d=e[3],d});un.displayName="ConnectionControl";const pn=k.memo(a=>{const e=A.c(9),{currentAgentId:t,connectionStatus:n,shouldShowConnectionControl:s}=a;let i,l,r,c;return e[0]===Symbol.for("react.memo_cache_sentinel")?(i=o.jsx(Ct,{className:"h-4 w-4 text-muted-foreground"}),e[0]=i):i=e[0],e[1]!==t?(l=o.jsx(mn,{currentAgentId:t}),e[1]=t,e[2]=l):l=e[2],e[3]!==n||e[4]!==s?(r=s&&o.jsx(Xt,{status:n}),e[3]=n,e[4]=s,e[5]=r):r=e[5],e[6]!==l||e[7]!==r?(c=o.jsxs("div",{className:"flex items-center gap-2",children:[i,l,r]}),e[6]=l,e[7]=r,e[8]=c):c=e[8],c});pn.displayName="HeaderInfo";const ft=k.memo(a=>{const e=A.c(19),{connectionState:t,currentAgentId:n,onConnect:s,onDisconnect:i,onRestartThread:l,hasActiveSession:r,shouldShowConnectionControl:c}=a;let d,m,u,p,_;return e[0]!==t.status||e[1]!==n||e[2]!==c?(d=o.jsx(pn,{currentAgentId:n,connectionStatus:t.status,shouldShowConnectionControl:c}),e[0]=t.status,e[1]=n,e[2]=c,e[3]=d):d=e[3],e[4]!==t.status||e[5]!==r||e[6]!==l?(m=r&&t.status==="connected"&&l&&o.jsxs(se,{variant:"outline",size:"xs",onClick:l,title:"Restart thread (create new session)",children:[o.jsx(Qo,{className:"h-3 w-3 mr-1"}),"Restart"]}),e[4]=t.status,e[5]=r,e[6]=l,e[7]=m):m=e[7],e[8]!==t||e[9]!==s||e[10]!==i||e[11]!==c?(u=c&&o.jsx(un,{connectionState:t,onConnect:s,onDisconnect:i}),e[8]=t,e[9]=s,e[10]=i,e[11]=c,e[12]=u):u=e[12],e[13]!==m||e[14]!==u?(p=o.jsxs("div",{className:"flex items-center gap-2",children:[m,u]}),e[13]=m,e[14]=u,e[15]=p):p=e[15],e[16]!==d||e[17]!==p?(_=o.jsxs("div",{className:"flex border-b px-3 py-2 justify-between shrink-0 items-center",children:[d,p]}),e[16]=d,e[17]=p,e[18]=_):_=e[18],_});ft.displayName="AgentPanelHeader";const hn=k.memo(a=>{const e=A.c(15),{currentAgentId:t,connectionState:n,onConnect:s,onDisconnect:i}=a,l=An(Nt);let r,c,d,m,u,p;return e[0]!==n||e[1]!==t||e[2]!==s||e[3]!==i?(r=o.jsx(ft,{connectionState:n,currentAgentId:t,onConnect:s,onDisconnect:i,hasActiveSession:!1}),e[0]=n,e[1]=t,e[2]=s,e[3]=i,e[4]=r):r=e[4],e[5]===Symbol.for("react.memo_cache_sentinel")?(c=o.jsx(xt,{}),e[5]=c):c=e[5],e[6]===Symbol.for("react.memo_cache_sentinel")?(d=o.jsx(Fn,{title:"No Agent Sessions",description:"Create a new session to start a conversation",action:o.jsx(et,{className:"border-y-1 rounded"}),icon:o.jsx(Ct,{})}),e[6]=d):d=e[6],e[7]!==n.status||e[8]!==l?(m=n.status==="disconnected"&&o.jsx(Ke,{className:"border-t pt-6",title:"Connect to an agent",description:o.jsxs(o.Fragment,{children:["Start agents by running these commands in your terminal:",o.jsx("br",{}),"Note: This must be in the directory"," ",_t.dirname(l??"")]})}),e[7]=n.status,e[8]=l,e[9]=m):m=e[9],e[10]!==m?(u=o.jsx("div",{className:"flex-1 flex items-center justify-center p-6",children:o.jsxs("div",{className:"max-w-md w-full space-y-6",children:[d,m]})}),e[10]=m,e[11]=u):u=e[11],e[12]!==r||e[13]!==u?(p=o.jsxs("div",{className:"flex flex-col h-full",children:[r,c,u]}),e[12]=r,e[13]=u,e[14]=p):p=e[14],p});hn.displayName="EmptyState";const xn=k.memo(a=>{const e=A.c(10),{isLoading:t,isRequestingPermission:n,onStop:s}=a;if(!t)return null;let i,l,r,c,d,m;return e[0]===Symbol.for("react.memo_cache_sentinel")?(i=o.jsx(Zo,{size:"small",className:"text-primary"}),e[0]=i):i=e[0],e[1]!==n?(l=o.jsxs("div",{className:"flex items-center gap-2",children:[i,n?o.jsx("span",{children:"Waiting for permission to continue..."}):o.jsx("span",{children:"Agent is working..."})]}),e[1]=n,e[2]=l):l=e[2],e[3]===Symbol.for("react.memo_cache_sentinel")?(r=o.jsx(F,{className:"h-3 w-3 mr-1"}),c=o.jsx("span",{className:"text-xs",children:"Stop"}),e[3]=r,e[4]=c):(r=e[3],c=e[4]),e[5]!==s?(d=o.jsx("div",{className:"flex items-center gap-2",children:o.jsxs(se,{size:"sm",variant:"outline",onClick:s,className:"h-6 px-2",children:[r,c]})}),e[5]=s,e[6]=d):d=e[6],e[7]!==l||e[8]!==d?(m=o.jsx("div",{className:"px-3 py-2 border-t bg-muted/30 flex-shrink-0",children:o.jsxs("div",{className:"flex items-center justify-between text-xs text-muted-foreground",children:[l,d]})}),e[7]=l,e[8]=d,e[9]=m):m=e[9],m});xn.displayName="LoadingIndicator";const fn=k.memo(a=>{const e=A.c(61),{isLoading:t,activeSessionId:n,promptValue:s,commands:i,onPromptValueChange:l,onPromptSubmit:r,onAddFiles:c,onStop:d,fileInputRef:m,sessionMode:u,onModeChange:p}=a,_=k.useRef(null);let f;e:{if(!i){f=void 0;break e}let D,W,Z;e[0]===Symbol.for("react.memo_cache_sentinel")?(D=/^\/(\w+)?/,e[0]=D):D=e[0],e[1]!==i?(W=i.map(Qa),e[1]=i,e[2]=W):W=e[2],e[3]!==W?(Z={triggerCompletionRegex:D,completions:W},e[3]=W,e[4]=Z):Z=e[4],f=Z}const x=f;let g;e[5]!==r||e[6]!==s?(g=()=>{s.trim()&&r(void 0,s)},e[5]=r,e[6]=s,e[7]=g):g=e[7];const j=ae(g);let N;e[8]===Symbol.for("react.memo_cache_sentinel")?(N=()=>{Ko(_)},e[8]=N):N=e[8];const S=ae(N),I=(t||!n)&&"opacity-50 pointer-events-none";let T;e[9]!==I?(T=ue("px-3 py-2 min-h-[80px]",I),e[9]=I,e[10]=T):T=e[10];const U=t?Rn.NOOP:l,q=t?"Processing...":`Ask anything, ${Xo} to include context about tables or dataframes`,R=t?"opacity-50 pointer-events-none":"";let C,$,Q,X,L,xe,de,je,fe,ge,Me,Ie;e[11]!==c||e[12]!==r||e[13]!==x||e[14]!==s||e[15]!==U||e[16]!==q||e[17]!==R?(C=o.jsx(ei,{inputRef:_,value:s,onChange:U,onSubmit:r,additionalCompletions:x,onClose:Rn.NOOP,onAddFiles:c,placeholder:q,className:R,maxHeight:"120px"}),e[11]=c,e[12]=r,e[13]=x,e[14]=s,e[15]=U,e[16]=q,e[17]=R,e[18]=C):C=e[18],e[19]!==T||e[20]!==C?($=o.jsx("div",{className:T,children:C}),e[19]=T,e[20]=C,e[21]=$):$=e[21],e[22]!==p||e[23]!==u?(Q=u&&p&&o.jsx(gn,{sessionMode:u,onModeChange:p}),e[22]=p,e[23]=u,e[24]=Q):Q=e[24],e[25]!==Q?(X=o.jsx("div",{className:"flex items-center gap-2",children:Q}),e[25]=Q,e[26]=X):X=e[26],e[27]===Symbol.for("react.memo_cache_sentinel")?(L=o.jsx(ti,{className:"h-3.5 w-3.5"}),e[27]=L):L=e[27],e[28]!==S?(xe=o.jsx(it,{content:"Add context",children:o.jsx(se,{variant:"text",size:"icon",onClick:S,children:L})}),e[28]=S,e[29]=xe):xe=e[29],e[30]!==m?(de=()=>{var D;return(D=m.current)==null?void 0:D.click()},e[30]=m,e[31]=de):de=e[31],e[32]===Symbol.for("react.memo_cache_sentinel")?(je=o.jsx(ni,{className:"h-3.5 w-3.5"}),e[32]=je):je=e[32],e[33]!==de?(fe=o.jsx(it,{content:"Attach a file",children:o.jsx(se,{variant:"text",size:"icon",className:"cursor-pointer",onClick:de,title:"Attach a file",children:je})}),e[33]=de,e[34]=fe):fe=e[34],e[35]!==c?(ge=D=>{D.target.files&&c([...D.target.files])},e[35]=c,e[36]=ge):ge=e[36],e[37]===Symbol.for("react.memo_cache_sentinel")?(Me=Ja.join(","),e[37]=Me):Me=e[37],e[38]!==m||e[39]!==ge?(Ie=o.jsx(si,{ref:m,type:"file",multiple:!0,hidden:!0,onChange:ge,accept:Me}),e[38]=m,e[39]=ge,e[40]=Ie):Ie=e[40];const Ve=t?"Stop":"Submit",M=t?d:j,E=!t&&!s.trim();let re,ce,be,Y,B,ee;return e[41]!==t?(re=t?o.jsx(ai,{className:"h-3 w-3 fill-current"}):o.jsx(oi,{className:"h-3 w-3"}),e[41]=t,e[42]=re):re=e[42],e[43]!==M||e[44]!==E||e[45]!==re?(ce=o.jsx(se,{variant:"text",size:"sm",className:"h-6 w-6 p-0 hover:bg-muted/30 cursor-pointer",onClick:M,disabled:E,children:re}),e[43]=M,e[44]=E,e[45]=re,e[46]=ce):ce=e[46],e[47]!==Ve||e[48]!==ce?(be=o.jsx(it,{content:Ve,children:ce}),e[47]=Ve,e[48]=ce,e[49]=be):be=e[49],e[50]!==xe||e[51]!==fe||e[52]!==Ie||e[53]!==be?(Y=o.jsxs("div",{className:"flex flex-row",children:[xe,fe,Ie,be]}),e[50]=xe,e[51]=fe,e[52]=Ie,e[53]=be,e[54]=Y):Y=e[54],e[55]!==X||e[56]!==Y?(B=o.jsx(ii,{children:o.jsxs("div",{className:"px-3 py-2 border-t border-border/20 flex flex-row items-center justify-between",children:[X,Y]})}),e[55]=X,e[56]=Y,e[57]=B):B=e[57],e[58]!==$||e[59]!==B?(ee=o.jsxs("div",{className:"border-t bg-background flex-shrink-0",children:[$,B]}),e[58]=$,e[59]=B,e[60]=ee):ee=e[60],ee});fn.displayName="PromptArea";const gn=k.memo(a=>{const e=A.c(28),{sessionMode:t,onModeChange:n}=a;let s,i,l,r,c,d,m,u,p,_,f,x;if(e[0]!==n||e[1]!==(t==null?void 0:t.availableModes)||e[2]!==(t==null?void 0:t.currentModeId)){p=Symbol.for("react.early_return_sentinel");e:{const g=(t==null?void 0:t.availableModes)||[],j=t==null?void 0:t.currentModeId;if(g.length===0){p=null;break e}const N=g.map(Xa);let S;e[12]!==j?(S=T=>T.value===j,e[12]=j,e[13]=S):S=e[13];const I=N.find(S);l=ci,d=j,m=n,u=o.jsx(ri,{className:"h-6 text-xs border-border shadow-none! ring-0! bg-muted hover:bg-muted/30 py-0 px-2 gap-1 capitalize",children:(I==null?void 0:I.label)??j}),i=di,s=mi,e[14]===Symbol.for("react.memo_cache_sentinel")?(r=o.jsx(ui,{children:"Agent Mode"}),e[14]=r):r=e[14],c=N.map(Za)}e[0]=n,e[1]=t==null?void 0:t.availableModes,e[2]=t==null?void 0:t.currentModeId,e[3]=s,e[4]=i,e[5]=l,e[6]=r,e[7]=c,e[8]=d,e[9]=m,e[10]=u,e[11]=p}else s=e[3],i=e[4],l=e[5],r=e[6],c=e[7],d=e[8],m=e[9],u=e[10],p=e[11];return p!==Symbol.for("react.early_return_sentinel")?p:(e[15]!==s||e[16]!==r||e[17]!==c?(_=o.jsxs(s,{children:[r,c]}),e[15]=s,e[16]=r,e[17]=c,e[18]=_):_=e[18],e[19]!==i||e[20]!==_?(f=o.jsx(i,{children:_}),e[19]=i,e[20]=_,e[21]=f):f=e[21],e[22]!==l||e[23]!==d||e[24]!==m||e[25]!==u||e[26]!==f?(x=o.jsxs(l,{value:d,onValueChange:m,children:[u,f]}),e[22]=l,e[23]=d,e[24]=m,e[25]=u,e[26]=f,e[27]=x):x=e[27],x)});gn.displayName="ModeSelector";const bn=k.memo(a=>{const e=A.c(32),{hasNotifications:t,agentId:n,connectionState:s,notifications:i,pendingPermission:l,onResolvePermission:r,onRetryConnection:c,onRetryLastAction:d,onDismissError:m,sessionId:u}=a,[p,_]=k.useState(!0),f=k.useRef(null),x=s.status==="disconnected";let g;e[0]===Symbol.for("react.memo_cache_sentinel")?(g=()=>{const L=f.current;if(!L)return;const{scrollTop:xe,scrollHeight:de,clientHeight:je}=L,fe=!(de>je)||Math.abs(de-je-xe)<5;_(fe)},e[0]=g):g=e[0];const j=ae(g);let N;e[1]===Symbol.for("react.memo_cache_sentinel")?(N=()=>{const L=f.current;L&&L.scrollTo({top:L.scrollHeight,behavior:"smooth"})},e[1]=N):N=e[1];const S=ae(N);let I,T,U,q,R,C;e[2]!==p||e[3]!==i.length||e[4]!==S?(I=()=>{if(p&&i.length>0){const L=setTimeout(S,100);return()=>clearTimeout(L)}},T=[i.length,p,S],e[2]=p,e[3]=i.length,e[4]=S,e[5]=I,e[6]=T):(I=e[5],T=e[6]),k.useEffect(I,T),e[7]!==r||e[8]!==l?(U=l&&o.jsx("div",{className:"p-3 border-b",children:o.jsx(Zt,{permission:l,onResolve:r})}),e[7]=r,e[8]=l,e[9]=U):U=e[9],e[10]!==u?(q=u&&o.jsxs("div",{className:"text-xs text-muted-foreground mb-2 px-2",children:["Session ID: ",u]}),e[10]=u,e[11]=q):q=e[11],e[12]!==n||e[13]!==s.status||e[14]!==t||e[15]!==x||e[16]!==i||e[17]!==m||e[18]!==c||e[19]!==d?(R=t?o.jsx("div",{className:"space-y-2",children:o.jsx(Ha,{isConnected:s.status==="connected",notifications:i,onRetryConnection:c,onRetryLastAction:d,onDismissError:m})}):o.jsxs("div",{className:"flex items-center justify-center h-full min-h-[200px] flex-col",children:[o.jsx(Fn,{title:"Waiting for agent",description:"Your AI agent will appear here when active",icon:o.jsx(Ct,{})}),x&&n&&o.jsx(Ke,{className:"border-t pt-6 px-5",title:"Make sure you're connected to an agent",description:"Run this command in your terminal:",agents:[n]}),x&&o.jsx(se,{variant:"outline",onClick:c,type:"button",className:"mt-4",children:"Retry"})]}),e[12]=n,e[13]=s.status,e[14]=t,e[15]=x,e[16]=i,e[17]=m,e[18]=c,e[19]=d,e[20]=R):R=e[20],e[21]!==j||e[22]!==q||e[23]!==R?(C=o.jsxs("div",{ref:f,className:"flex-1 bg-muted/20 w-full flex flex-col overflow-y-auto p-2",onScroll:j,children:[q,R]}),e[21]=j,e[22]=q,e[23]=R,e[24]=C):C=e[24];const $=!p&&t;let Q,X;return e[25]!==S||e[26]!==$?(Q=o.jsx(on,{isVisible:$,onScrollToBottom:S}),e[25]=S,e[26]=$,e[27]=Q):Q=e[27],e[28]!==Q||e[29]!==U||e[30]!==C?(X=o.jsxs("div",{className:"flex-1 flex flex-col overflow-hidden flex-shrink-0 relative",children:[U,C,Q]}),e[28]=Q,e[29]=U,e[30]=C,e[31]=X):X=e[31],X});bn.displayName="ChatContent";const gt="_skip_auto_connect_";function yn(){const a=jt.get(Nt);return a?_t.dirname(a):""}Dn=()=>{const[a,e]=k.useState(!1),[t,n]=k.useState(""),[s,i]=k.useState(),l=k.useRef(null),[r]=rt(ht),[c,d]=rt(ze),m=r?(u=r.agentId,Ze[u].webSocketUrl):gt;var u;const{sendUpdateFile:p,sendFileDetails:_}=Jo(),f=k.useRef(!1),x=(function(M){const{wsUrl:E,autoConnect:re=!0,reconnectAttempts:ce=3,reconnectDelay:be=2e3,clientOptions:Y={}}=M,{getConnection:B,notifications:ee,activeSessionId:D,agentCapabilities:W,sessionModes:Z,setActiveModeId:He,setModeState:ke,setActiveSessionId:nt,setConnection:st,setActiveConnection:at,addNotification:Ne,clearNotifications:Ka}=pa(),[Ye,ot]=k.useState(null),[eo,vn]=k.useState(null),[to,no]=k.useState(!1),[so,wn]=k.useState([]),Re=k.useRef(null),Fe=k.useRef(null),ao=k.useRef(null),oo=k.useRef(!1),io=Se((V,me)=>{st(me,V),Ne({type:"connection_change",data:V})}),ro=Se((V,me)=>{Ne({type:"error",data:V})}),lo=Se(V=>{Ne({type:"session_notification",data:V}),V.update.sessionUpdate==="available_commands_update"&&wn(V.update.availableCommands)}),co=Se(V=>{ot(V)}),_n=Se(async()=>{Re.current||(Re.current=new da({onConnectionStateChange:io,onError:ro,reconnectAttempts:ce,reconnectDelay:be})),at(E);const{readable:V,writable:me}=await Re.current.connect(E),po=new sa(ne=>{const oe=new ia(ne,{...Y,onRequestPermission:ye=>{var Ge;(Ge=Y==null?void 0:Y.onRequestPermission)==null||Ge.call(Y,ye),co(ye)},onSessionNotification:ye=>{var Ge;(Ge=Y==null?void 0:Y.onSessionNotification)==null||Ge.call(Y,ye),lo(ye)}});return Fe.current=oe,oe},me,V),ho=new ra(po,{on_initialize_response:ne=>{const oe=ne.agentCapabilities;console.log("[acp] Agent capabilities",oe);const ye=B(E);st(E,ye.state,oe)},on_newSession_response:ne=>{console.log("[acp] New session created",ne);const oe=ne.sessionId;nt(oe),ke(oe,ne.modes)},on_loadSession_response:(ne,oe)=>{console.log("[acp] Session resumed",oe);const ye=oe.sessionId;nt(ye),ke(ye,ne.modes)},on_prompt_start:ne=>{for(const oe of ne.prompt)Ne({type:"session_notification",data:{sessionId:ne.sessionId,update:{sessionUpdate:"user_message_chunk",content:oe}}})},on_setSessionMode_start:ne=>{console.log("[acp] Session mode set",ne);const oe=ne.sessionId;He(oe,ne.modeId)}});vn(ho)}),jn=Se(V=>{const me=V||E;Re.current&&(V?Re.current.disconnect(V):(Re.current.disconnect(me),Re.current=null,Fe.current=null,vn(null))),V||(ot(null),wn([]),oo.current=!1,ao.current=null,no(!1))}),mo=Se(V=>{if(Ye&&Fe.current){const me=Ye.deferredId;me&&Fe.current.resolvePermission(me,V)}ot(null)}),uo=Se(V=>{if(Ye&&Fe.current){const me=Ye.deferredId;me&&Fe.current.rejectPermission(me,V)}ot(null)});return k.useEffect(()=>(re&&_n().catch(console.error),()=>{jn()}),[re,E]),{connect:_n,disconnect:jn,connectionState:B(E).state,activeSessionId:D,notifications:D&&ee[D]||[],isSessionLoading:to,clearNotifications:Ka,pendingPermission:Ye,resolvePermission:mo,rejectPermission:uo,agent:eo,agentCapabilities:W,sessionMode:D?Z[D]:null,availableCommands:so}})({wsUrl:m,clientOptions:{readTextFile:M=>(ie.debug("Agent requesting file read",{path:M.path}),_({path:M.path}).then(E=>({content:E.contents||""}))),writeTextFile:M=>(ie.debug("Agent requesting file write",{path:M.path,contentLength:M.content.length}),p({path:M.path,contents:M.content}).then(()=>({})))},autoConnect:!1}),{connect:g,disconnect:j,connectionState:N,notifications:S,pendingPermission:I,availableCommands:T,resolvePermission:U,sessionMode:q,activeSessionId:R,agent:C}=x;k.useEffect(()=>{C==null||C.initialize({protocolVersion:1,clientCapabilities:{fs:{readTextFile:!0,writeTextFile:!0}}})},[C]),k.useEffect(()=>{if(m!==gt)return ie.debug("Auto-connecting to agent",{sessionId:R}),g(),()=>{}},[m]);const $=ae(async()=>{if(f.current||!C)return;R&&await C.cancel({sessionId:R}).catch(E=>{ie.error("Failed to cancel active session",{error:E})}),ie.debug("Creating new agent session",{}),f.current=!0;const M=await C.newSession({cwd:yn(),mcpServers:[]}).finally(()=>{f.current=!1});d(E=>en(E,M.sessionId))}),Q=ae(async M=>{if(C){if(ie.debug("Resuming agent session",{sessionId:M}),!C.loadSession)throw new Error("Agent does not support loading sessions");await C.loadSession({sessionId:M,cwd:yn(),mcpServers:[]}),d(E=>en(E,M))}}),X=N.status==="connected",L=r==null?void 0:r.externalAgentSessionId;k.useEffect(()=>{!X||!r||!C||R&&L||(async()=>{try{if(L)try{await Q(L)}catch(M){ie.debug("Failed to resume session, creating new session",{externalSessionId:L,error:M}),await $()}else await $()}catch(M){ie.error("Failed to create or resume session:",M)}})()},[X,C,L,R]);const xe=ae(async(M,E)=>{if(!R||!C||a)return;ie.debug("Submitting prompt to agent",{sessionId:R}),e(!0),n(""),i(void 0),r!=null&&r.title.startsWith("New ")&&d(B=>(function(ee,D){const W=ee.activeTabId;return W?{...ee,sessions:ee.sessions.map(Z=>Z.tabId===W?{...Z,title:Kt(D)}:Z)}:ee})(B,E));const re=jt.get(Nt);if(!re)return void St({title:"Notebook must be named",description:"Please name the notebook to use the agent",variant:"danger"});const ce=[{type:"text",text:E}],{contextBlocks:be,attachmentBlocks:Y}=await(async function(B){const ee=[],D=[];if(!B.includes("@"))return{contextBlocks:ee,attachmentBlocks:D};try{const W=Yo(jt),Z=W.parseAllContextIds(B);if(Z.length===0)return{contextBlocks:ee,attachmentBlocks:D};const He=W.formatContextForAI(Z);He.trim()&&ee.push({type:"resource",resource:{uri:"context.md",mimeType:"text/markdown",text:He}});try{const ke=await W.getAttachmentsForContext(Z);if(ke.length>0){const nt=await(async function(st){const at=[];for(const Ne of st)at.push({type:"resource_link",uri:Ne.url,mimeType:Ne.mediaType,name:Ne.filename??Ne.url});return at})(ke);D.push(...nt),qe.debug("Added AI context attachments",{count:ke.length})}}catch(ke){qe.error("Error getting AI context attachments",{error:ke})}qe.debug("Parsed context for agent",{contextIds:Z,contextLength:He.length,attachmentCount:D.length})}catch(W){qe.error("Error parsing context for agent",{error:W})}return{contextBlocks:ee,attachmentBlocks:D}})(E);if(ce.push(...be,...Y),s&&s.length>0){const B=await(async function(ee){const D=[];for(const W of ee)try{const Z=await Go(W,"dataUrl");D.push({type:"resource_link",uri:Z,mimeType:W.type,name:W.name})}catch(Z){qe.error("Error converting file to resource link",{fileName:W.name,error:Z})}return D})(s);ce.push(...B)}S.some(B=>B.type==="session_notification"&&B.data.update.sessionUpdate==="user_message_chunk")||ce.push({type:"resource_link",uri:re,mimeType:"text/x-python",name:re},{type:"resource",resource:{uri:"marimo_rules.md",mimeType:"text/markdown",text:Ga(re)}});try{await C.prompt({sessionId:R,prompt:ce})}catch(B){ie.error("Failed to send prompt",{error:B})}finally{e(!1)}}),de=ae(async()=>{R&&C&&(await C.cancel({sessionId:R}),e(!1))}),je=ae(M=>{M.length!==0&&i(E=>[...E??[],...M])}),fe=ae(M=>{s&&i(s.filter(E=>E!==M))}),ge=ae(()=>{ie.debug("Manual connect requested",{currentStatus:N.status}),g()}),Me=ae(()=>{ie.debug("Manual disconnect requested",{sessionId:R,currentStatus:N.status}),j()}),Ie=ae(M=>{var E;ie.debug("Mode change requested",{sessionId:R,mode:M}),C?C.setSessionMode?(E=C.setSessionMode)==null||E.call(C,{sessionId:R,modeId:M}):St({title:"Mode change not supported",description:"The agent does not support mode changes",variant:"danger"}):St({title:"Agent not connected",description:"Please connect to an agent to change the mode",variant:"danger"})}),Ve=S.length>0;return c.sessions.length>0?o.jsxs("div",{className:"flex flex-col flex-1 overflow-hidden mo-agent-panel",children:[o.jsx(ft,{connectionState:N,currentAgentId:r==null?void 0:r.agentId,onConnect:ge,onDisconnect:Me,onRestartThread:$,hasActiveSession:!0,shouldShowConnectionControl:m!==gt}),o.jsx(xt,{}),o.jsx(bn,{agentId:r==null?void 0:r.agentId,sessionId:R,hasNotifications:Ve,connectionState:N,notifications:S,pendingPermission:I,onResolvePermission:M=>{ie.debug("Resolving permission request",{sessionId:R,option:M}),U(M)},onRetryConnection:ge}),o.jsx(xn,{isLoading:a,isRequestingPermission:!!I,onStop:de}),s&&s.length>0&&o.jsx("div",{className:"flex flex-row gap-1 flex-wrap p-3 border-t",children:s.map(M=>o.jsx(hi,{file:M,onRemove:()=>fe(M)},M.name))}),o.jsx(fn,{isLoading:a,activeSessionId:R,promptValue:t,onPromptValueChange:n,onPromptSubmit:xe,onAddFiles:je,onStop:de,fileInputRef:l,commands:T,sessionMode:q,onModeChange:Ie})]}):o.jsx(hn,{currentAgentId:r==null?void 0:r.agentId,connectionState:N,onConnect:ge,onDisconnect:Me})};function Qa(a){return{label:`/${a.name}`,info:a.description}}function Xa(a){return{value:a.id,label:a.name,subtitle:a.description??""}}function Za(a){return o.jsx(li,{value:a.value,className:"text-xs",children:o.jsxs("div",{className:"flex flex-col",children:[a.label,a.subtitle&&o.jsx("div",{className:"text-muted-foreground text-xs pt-1 block",children:a.subtitle})]})},a.value)}});export{wi as __tla,Dn as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.mo-agent-panel{pre{width:100%}}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{L as n,r as u,j as t,E as l,C as d,R as c}from"./index-
|
|
1
|
+
import{L as n,r as u,j as t,E as l,C as d,R as c}from"./index-PmY0x4Zd.js";import{l as g,a as m}from"./index-BJVyzkx5.js";import"./index-B_d_JZGI.js";import"./index-DkntzpX4.js";import"./index-qE8lHQ-N.js";import"./index-DCkzth56.js";import"./index-CXrWwFX6.js";import"./index-Brf2DwUM.js";import"./index-DZhOPkOB.js";import"./index-CerjupfZ.js";import"./index-WXJFkQHg.js";import"./index-BgXbBA39.js";import"./index-DFrGFNW1.js";import"./index-D3PqGupX.js";import"./apl-CXdQSnD-.js";import"./asciiarmor-D5V0T9Cu.js";import"./asn1-DWPaVWf6.js";import"./brainfuck-CtZaYBKt.js";import"./cobol-stawOqaz.js";import"./clike-BgBwzOhw.js";import"./clojure-DiuoqK-z.js";import"./css-ZjFoif2m.js";import"./cmake-DXn5xaP-.js";import"./coffeescript-BTDxI-eT.js";import"./commonlisp-vq6DHwts.js";import"./cypher-gJDei3ni.js";import"./python-DD-Q2bae.js";import"./crystal-CRzZ78HM.js";import"./d-BShv7fp-.js";import"./diff-UJJ5BM9S.js";import"./dtd-DI9Herc-.js";import"./dylan-DkEP81N9.js";import"./ecl-DPFc0Uaf.js";import"./eiffel-DR5c0IrL.js";import"./elm-DompmV0j.js";import"./erlang-BuqgqA5h.js";import"./factor-CFXhaUWb.js";import"./simple-mode-C3vEBAcb.js";import"./forth-POgR1ypr.js";import"./fortran-DL7KluxX.js";import"./mllike-3c2dg9RT.js";import"./gas-bV0CklSb.js";import"./gherkin-B6X1vGSW.js";import"./groovy-DnIzCrpZ.js";import"./haskell-CLQs6EAM.js";import"./haxe-D25e-2l-.js";import"./idl-pcmmZuaN.js";import"./javascript-BpzJj0-u.js";import"./jinja2-DhgKlfW7.js";import"./julia-DjdwvFuI.js";import"./livescript-HO6ttBFx.js";import"./lua-8DXOpKDz.js";import"./mirc-DkvFAiy5.js";import"./mathematica-IIbmv7SK.js";import"./modelica-DSrSSXCg.js";import"./mumps-zvxmGV4l.js";import"./mbox-z_N2Mo3d.js";import"./nsis-BvKfQ9lQ.js";import"./ntriples-BSwWqoLa.js";import"./octave-C4hdQ5Hf.js";import"./oz-qQq7irPq.js";import"./pascal-CafrKXZF.js";import"./perl-tdMlh9QA.js";import"./pig-CwGJVRC4.js";import"./powershell-D1ly3AHC.js";import"./properties-_nPj978X.js";import"./protobuf-B4y9do6W.js";import"./pug-BTvK5tSS.js";import"./puppet-Bc-yJKzi.js";import"./q-B0kTJ4cI.js";import"./r-BA4EbLKE.js";import"./rpm-DI_rRufH.js";import"./ruby-CR-u2WLS.js";import"./sas-Bqaci40L.js";import"./scheme-qjP0V5Ag.js";import"./shell-BLav31RL.js";import"./sieve-r025o_jW.js";import"./smalltalk-C7J3IyEP.js";import"./sparql-BRLJFz69.js";import"./stylus-Bdo_Aemu.js";import"./swift-B_XXVlXX.js";import"./verilog-B4LBqg_1.js";import"./tcl-B2fODqDH.js";import"./textile-BuVhTOzU.js";import"./toml-wcPdHu67.js";import"./troff-Ce85hlLp.js";import"./ttcn-BxnYHtq8.js";import"./ttcn-cfg-CKJxb-l2.js";import"./turtle-BkSuIpt-.js";import"./webidl-CGwyPRYs.js";import"./vb-BHgjm0DN.js";import"./vbscript-Dawdd5GZ.js";import"./velocity-BdD_26Jv.js";import"./vhdl-CWWH2SUo.js";import"./xquery-CVDBqZPY.js";import"./yacas-I8QjZlxf.js";import"./z80-D8p3gKXp.js";import"./mscgen-B2igx18G.js";import"./index-zrSUQXha.js";const e={python:"py",javascript:"js",typescript:"ts"},j=({language:o,showCopyButton:s,extensions:r=[],...p})=>{const i=(o=e[o||""]||o)&&!(o in m);i&&n.warn(`Language ${o} not found in CodeMirror.`);const a=u.useMemo(()=>o?[g(o),...r].filter(Boolean):r,[o,r]);return t.jsxs("div",{className:"relative w-full group hover-actions-parent",children:[i&&t.jsx(l,{className:"mb-1 rounded-sm",error:`Language ${o} not supported.
|
|
2
2
|
|
|
3
3
|
Supported languages are: ${Object.keys(m).join(", ")}`}),s&&!i&&t.jsx(d,{tooltip:!1,className:"absolute top-2 right-2 p-1 hover-action z-10 text-muted-foreground",value:p.value||"",toastTitle:"Copied to clipboard"}),t.jsx(c,{...p,extensions:a})]})};export{e as LANGUAGE_MAP,j as default};
|