@band-app/server 0.3.0 → 0.3.1
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/client/assets/DockviewTerminalContainer-7Pkqfotg.js +2 -0
- package/dist/client/assets/{TerminalPanel-B_7JSCCc.js → TerminalPanel-DAjuH-1U.js} +1 -1
- package/dist/client/assets/{_basePickBy-OQ1l2y4N.js → _basePickBy-B02OZLcK.js} +1 -1
- package/dist/client/assets/{_baseUniq-DP68ni3r.js → _baseUniq-DxmC1mRo.js} +1 -1
- package/dist/client/assets/{arc-BsOTNMJP.js → arc-BxtlwYEK.js} +1 -1
- package/dist/client/assets/{architectureDiagram-VXUJARFQ-5ctkZyKm.js → architectureDiagram-VXUJARFQ-BnYx6bly.js} +1 -1
- package/dist/client/assets/{blockDiagram-VD42YOAC-JKAkJdAV.js → blockDiagram-VD42YOAC-HBOCmfSX.js} +1 -1
- package/dist/client/assets/{c4Diagram-YG6GDRKO-RuKjDs_5.js → c4Diagram-YG6GDRKO-SWifZ63q.js} +1 -1
- package/dist/client/assets/channel-AmzbAQB9.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-BhHxyh-d.js → chunk-4BX2VUAB-CHmUyEof.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-CYm2wbN6.js → chunk-55IACEB6-CPjk6PkV.js} +1 -1
- package/dist/client/assets/{chunk-B4BG7PRW-C9lN0wb3.js → chunk-B4BG7PRW-wibRuvxs.js} +1 -1
- package/dist/client/assets/{chunk-DI55MBZ5-Bt2XM7pP.js → chunk-DI55MBZ5-3Os9hWPG.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-CD7Uflt_.js → chunk-FMBD7UC4-CyyZMRYx.js} +1 -1
- package/dist/client/assets/{chunk-QN33PNHL-BU5wcW-Y.js → chunk-QN33PNHL-OjyZvCLX.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-BfxuPp_p.js → chunk-QZHKN3VN-DvKGTNd6.js} +1 -1
- package/dist/client/assets/{chunk-TZMSLE5B-BRxuGNcy.js → chunk-TZMSLE5B-CiDjoyCu.js} +1 -1
- package/dist/client/assets/classDiagram-2ON5EDUG-B7NSG0Se.js +1 -0
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-B7NSG0Se.js +1 -0
- package/dist/client/assets/clone-DGVvqALc.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-BRSOoelM.js → cose-bilkent-S5V4N54A-Xt9mkXow.js} +1 -1
- package/dist/client/assets/{dagre-6UL2VRFP-CqEPGLG_.js → dagre-6UL2VRFP-iKb8-8az.js} +1 -1
- package/dist/client/assets/{diagram-PSM6KHXK-CW6lQAph.js → diagram-PSM6KHXK-5EN_OWwE.js} +1 -1
- package/dist/client/assets/{diagram-QEK2KX5R-DXpQB09y.js → diagram-QEK2KX5R-Bspa_oIP.js} +1 -1
- package/dist/client/assets/{diagram-S2PKOQOG-BuKSc7hj.js → diagram-S2PKOQOG-rMh8HVTX.js} +1 -1
- package/dist/client/assets/{erDiagram-Q2GNP2WA-DCOsaIMe.js → erDiagram-Q2GNP2WA-DDIi6KEO.js} +1 -1
- package/dist/client/assets/{flowDiagram-NV44I4VS-DcrleJ78.js → flowDiagram-NV44I4VS-keexbyTE.js} +1 -1
- package/dist/client/assets/{ganttDiagram-JELNMOA3-DvQNO27q.js → ganttDiagram-JELNMOA3-BJDtoWV3.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-DvTlrniW.js → gitGraphDiagram-V2S2FVAM-C3U_yDok.js} +1 -1
- package/dist/client/assets/{graph-BVOV61MY.js → graph-CXIustk1.js} +1 -1
- package/dist/client/assets/{highlighted-body-B3W2YXNL-s73Py2xy.js → highlighted-body-B3W2YXNL-Wrr4mAYt.js} +1 -1
- package/dist/client/assets/{index-DGRRlzO8.js → index--YcOjZeH.js} +1 -1
- package/dist/client/assets/{index-xFYSTaUY.js → index-6JEkkDo8.js} +1 -1
- package/dist/client/assets/{index-ouQJCO_a.js → index-Aitm1TDm.js} +1 -1
- package/dist/client/assets/{index-D3UFDKZm.js → index-BQnMh5Ey.js} +1 -1
- package/dist/client/assets/{index-CF9PCIXP.js → index-BW_n511W.js} +1 -1
- package/dist/client/assets/{index-V0GcGOe-.js → index-Bc5chL-g.js} +1 -1
- package/dist/client/assets/{index-D7QbmAu4.js → index-Br9YzqZk.js} +1 -1
- package/dist/client/assets/{index-CK-BTC9O.js → index-C49Jfk-p.js} +1 -1
- package/dist/client/assets/{index-DcHmgA8z.js → index-CImHE-vf.js} +1 -1
- package/dist/client/assets/{index-DpO1oBiD.js → index-CP6eh1me.js} +1 -1
- package/dist/client/assets/{index-0hkPM41a.js → index-DQZeHe3T.js} +1 -1
- package/dist/client/assets/{index-D8qAYkE6.js → index-DVb3uzxJ.js} +1 -1
- package/dist/client/assets/{index-DzkW40bH.js → index-DbV1dJqS.js} +1 -1
- package/dist/client/assets/{index-CNvrx9RT.js → index-Dp56OOnl.js} +1 -1
- package/dist/client/assets/{index-DLckpD-5.js → index-DyG7IfDO.js} +1 -1
- package/dist/client/assets/{index-DeXx_AuY.js → index-MvOIOMkW.js} +1 -1
- package/dist/client/assets/{index-BSkZi14t.js → index-XciBSftr.js} +1 -1
- package/dist/client/assets/{index-LSBeIErX.js → index-oZQsTqMq.js} +1 -1
- package/dist/client/assets/{infoDiagram-HS3SLOUP-BkIrT0lS.js → infoDiagram-HS3SLOUP-Coba2Ecg.js} +1 -1
- package/dist/client/assets/{journeyDiagram-XKPGCS4Q-CuAJwUYZ.js → journeyDiagram-XKPGCS4Q-DcRdN5Jw.js} +1 -1
- package/dist/client/assets/{kanban-definition-3W4ZIXB7-C5oojjKn.js → kanban-definition-3W4ZIXB7-B4rTq8FU.js} +1 -1
- package/dist/client/assets/{layout-VixgcoEh.js → layout-CS8um6L3.js} +1 -1
- package/dist/client/assets/{linear-B8GEtbtI.js → linear-BN5Y0XM-.js} +1 -1
- package/dist/client/assets/{main-CaSLsHIV.js → main-BIlcXlzs.js} +235 -235
- package/dist/client/assets/main-BnrSCdeV.css +1 -0
- package/dist/client/assets/{mindmap-definition-VGOIOE7T-ChF2Jy20.js → mindmap-definition-VGOIOE7T-Ds51PqE9.js} +1 -1
- package/dist/client/assets/{pieDiagram-ADFJNKIX-Cs7BVmqM.js → pieDiagram-ADFJNKIX-gYVi9omj.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-AYHSOK5B-V83WZ4fh.js → quadrantDiagram-AYHSOK5B-C5iqQQKZ.js} +1 -1
- package/dist/client/assets/{requirementDiagram-UZGBJVZJ-D2GE0VK5.js → requirementDiagram-UZGBJVZJ-BqKUhE2H.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-TZEHDZUN-C-ahmW9t.js → sankeyDiagram-TZEHDZUN-BkDgrkkQ.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-WL72ISMW-CeikJo7j.js → sequenceDiagram-WL72ISMW-DOxbfZhn.js} +1 -1
- package/dist/client/assets/{stateDiagram-FKZM4ZOC-BxMm9YXu.js → stateDiagram-FKZM4ZOC-B3TrsBb9.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3-CQVcKuBa.js +1 -0
- package/dist/client/assets/{timeline-definition-IT6M3QCI-gFAlmUmY.js → timeline-definition-IT6M3QCI-DG2Hs4KW.js} +1 -1
- package/dist/client/assets/{treemap-GDKQZRPO-DKt9bIHO.js → treemap-GDKQZRPO-BgXNPM_M.js} +1 -1
- package/dist/client/assets/{useSessionListContext-DeLrvh5j.js → useSessionListContext-C4FLYEE-.js} +1 -1
- package/dist/client/assets/{workspace._workspaceId-Dm5LPp7D.js → workspace._workspaceId-B2-qsdVH.js} +1 -1
- package/dist/client/assets/{workspace._workspaceId.changes-DixHvPIg.js → workspace._workspaceId.changes-ah5-NQ9M.js} +1 -1
- package/dist/client/assets/workspace._workspaceId.code-BUlNqyPU.js +1 -0
- package/dist/client/assets/{workspace._workspaceId.code._-DWgmdTsF.js → workspace._workspaceId.code._-DebwiKyc.js} +1 -1
- package/dist/client/assets/{workspace._workspaceId.code.index-k3jnNrmM.js → workspace._workspaceId.code.index-BoCEbFIx.js} +1 -1
- package/dist/client/assets/{workspace._workspaceId.index-L6dOjOuf.js → workspace._workspaceId.index-sal33uc0.js} +1 -1
- package/dist/client/assets/{workspace._workspaceId.terminal-j5zlufNR.js → workspace._workspaceId.terminal-BquerOxc.js} +2 -2
- package/dist/client/assets/{xychartDiagram-PRI3JC2R-DCzhNdgu.js → xychartDiagram-PRI3JC2R-C25x1FNe.js} +1 -1
- package/dist/server/assets/{DockviewTerminalContainer-0lBzSHAB.js → DockviewTerminalContainer-BJRCcV8V.js} +10 -2
- package/dist/server/assets/{TerminalPanel-DlyqXpg4.js → TerminalPanel-C-Tqzsb9.js} +1 -1
- package/dist/server/assets/{_basePickBy-Uvw-ZCjq.js → _basePickBy-DnnQYRPA.js} +2 -2
- package/dist/server/assets/{_baseUniq-DJi3N8KD.js → _baseUniq-DK15vf9R.js} +1 -1
- package/dist/server/assets/{_tanstack-start-manifest_v-CLW7JNBK.js → _tanstack-start-manifest_v-51-y0m60.js} +1 -1
- package/dist/server/assets/{arc-B2OUCIV1.js → arc-NNeAZNFP.js} +1 -1
- package/dist/server/assets/{architecture-7HQA4BMR-BhS6ObWP.js → architecture-7HQA4BMR-CFBQ6v0L.js} +6 -6
- package/dist/server/assets/{architectureDiagram-VXUJARFQ-Zlx9bJA4.js → architectureDiagram-VXUJARFQ-C5DZiZyi.js} +6 -6
- package/dist/server/assets/{blockDiagram-VD42YOAC-D4Kk0Ngg.js → blockDiagram-VD42YOAC-L5ieGxFF.js} +6 -6
- package/dist/server/assets/{c4Diagram-YG6GDRKO-DyIulYvs.js → c4Diagram-YG6GDRKO-Bv39r0cE.js} +2 -2
- package/dist/server/assets/{channel-D5u33HGQ.js → channel-BJm48Wp9.js} +1 -1
- package/dist/server/assets/{chunk-4BX2VUAB-xAm1S4cV.js → chunk-4BX2VUAB-DJ-pm5Zg.js} +1 -1
- package/dist/server/assets/{chunk-55IACEB6-BKYzWPC-.js → chunk-55IACEB6-B6e_cQv2.js} +1 -1
- package/dist/server/assets/{chunk-B4BG7PRW-0GA7TpHM.js → chunk-B4BG7PRW-BuDzYmK0.js} +4 -4
- package/dist/server/assets/{chunk-DI55MBZ5-BZgnoUtH.js → chunk-DI55MBZ5-DjAWM8Pq.js} +3 -3
- package/dist/server/assets/{chunk-FMBD7UC4-D4-haik2.js → chunk-FMBD7UC4-DYB3IL_G.js} +1 -1
- package/dist/server/assets/{chunk-QN33PNHL-cz0i18Kh.js → chunk-QN33PNHL-CehfCXvD.js} +1 -1
- package/dist/server/assets/{chunk-QZHKN3VN-B6EetbPS.js → chunk-QZHKN3VN-BmLwAQLo.js} +1 -1
- package/dist/server/assets/{chunk-TZMSLE5B-Bs97HrcS.js → chunk-TZMSLE5B-7ME36Awr.js} +1 -1
- package/dist/server/assets/{classDiagram-v2-WZHVMYZB-DX-De1xE.js → classDiagram-2ON5EDUG-Bm6tgj68.js} +5 -5
- package/dist/server/assets/{classDiagram-2ON5EDUG-DX-De1xE.js → classDiagram-v2-WZHVMYZB-Bm6tgj68.js} +5 -5
- package/dist/server/assets/{clone-B8d9SkTy.js → clone-BcVyfejn.js} +1 -1
- package/dist/server/assets/{cose-bilkent-S5V4N54A-9mJAWvad.js → cose-bilkent-S5V4N54A-DmleNa4v.js} +1 -1
- package/dist/server/assets/{dagre-6UL2VRFP-C1atBmRs.js → dagre-6UL2VRFP-L-yKb3Zq.js} +6 -6
- package/dist/server/assets/{diagram-PSM6KHXK-CyGQvN3g.js → diagram-PSM6KHXK-CLQUsOvK.js} +7 -7
- package/dist/server/assets/{diagram-QEK2KX5R-DzfTH21h.js → diagram-QEK2KX5R-CPIjUINK.js} +6 -6
- package/dist/server/assets/{diagram-S2PKOQOG-Bn4ENm4_.js → diagram-S2PKOQOG-CT98niKC.js} +6 -6
- package/dist/server/assets/{erDiagram-Q2GNP2WA-DqzNX--h.js → erDiagram-Q2GNP2WA-B8SLNOhT.js} +4 -4
- package/dist/server/assets/{flowDiagram-NV44I4VS-qQuNi_ek.js → flowDiagram-NV44I4VS-CKOlpEYf.js} +5 -5
- package/dist/server/assets/{ganttDiagram-JELNMOA3-CvxepebM.js → ganttDiagram-JELNMOA3-Cz_3Y_fm.js} +2 -2
- package/dist/server/assets/{gitGraph-G5XIXVHT-BmYVGvm7.js → gitGraph-G5XIXVHT-Bd-Xnyvl.js} +6 -6
- package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-BIMAii04.js → gitGraphDiagram-V2S2FVAM-LTcGOQh8.js} +7 -7
- package/dist/server/assets/{graph-DXLb-QKT.js → graph-NUwJV50a.js} +2 -2
- package/dist/server/assets/{highlighted-body-B3W2YXNL-imCkdLOn.js → highlighted-body-B3W2YXNL-uXJZSUGv.js} +1 -1
- package/dist/server/assets/{index-RhBuqPPl.js → index-BL6ldRfC.js} +2 -2
- package/dist/server/assets/{index-D5lNe_xt.js → index-BR3UKwL5.js} +2 -2
- package/dist/server/assets/{index-vnItYDqO.js → index-BfIGXl0c.js} +2 -2
- package/dist/server/assets/{index-BR76j4Vk.js → index-BsiXULyc.js} +2 -2
- package/dist/server/assets/{index-BA0UwY9Z.js → index-Cc7MEkFb.js} +1 -1
- package/dist/server/assets/{index-xMc3ZlRc.js → index-CiwZb3K7.js} +2 -2
- package/dist/server/assets/{index-BG9HkusL.js → index-CjogWqmh.js} +5 -5
- package/dist/server/assets/{index-cStp1vpB.js → index-D3nc-6Y6.js} +3 -3
- package/dist/server/assets/{index-Du735q5O.js → index-DLBp1ZlP.js} +2 -2
- package/dist/server/assets/{index-CA8DyWtN.js → index-DTO2Bghw.js} +2 -2
- package/dist/server/assets/{index-CnuRAKgr.js → index-DcSGnX9Y.js} +3 -3
- package/dist/server/assets/{index-E4GEYitW.js → index-Dpdg8d2x.js} +4 -4
- package/dist/server/assets/{index-BZuMEWyk.js → index-GifGhqSy.js} +1 -1
- package/dist/server/assets/{index-CS3QeU4e.js → index-TSafpX9w.js} +5 -5
- package/dist/server/assets/{index-Cj7do86C.js → index-ehJX-x7u.js} +2 -2
- package/dist/server/assets/{index-CQTgGi5V.js → index-kawf-mXU.js} +2 -2
- package/dist/server/assets/{index-BOtyo6Nx.js → index-lgqrOY_d.js} +2 -2
- package/dist/server/assets/{index-A_IwCrQa.js → index-v2ZoIblX.js} +2 -2
- package/dist/server/assets/{info-VBDWY6EO-Dw4W0VYI.js → info-VBDWY6EO-CK3UQKwB.js} +6 -6
- package/dist/server/assets/{infoDiagram-HS3SLOUP-C2Qm4J_0.js → infoDiagram-HS3SLOUP-CHCI1AvB.js} +5 -5
- package/dist/server/assets/{journeyDiagram-XKPGCS4Q-C0cd_WBg.js → journeyDiagram-XKPGCS4Q-DnaN-6ze.js} +4 -4
- package/dist/server/assets/{kanban-definition-3W4ZIXB7-kcejmLgx.js → kanban-definition-3W4ZIXB7-JU-5yrQV.js} +2 -2
- package/dist/server/assets/{layout-EA-crFYK.js → layout-CdOTdZJ1.js} +4 -4
- package/dist/server/assets/{linear-DWOAXyT_.js → linear-BxoHwVMJ.js} +1 -1
- package/dist/server/assets/{mermaid-3ZIDBTTL-B3JY0bnx.js → mermaid-3ZIDBTTL-CKq41YLn.js} +1 -1
- package/dist/server/assets/{mermaid-parser.core-CxYB8AxK.js → mermaid-parser.core-DZVkd7yV.js} +11 -11
- package/dist/server/assets/{mindmap-definition-VGOIOE7T-C2uLj2ri.js → mindmap-definition-VGOIOE7T-D4mbSp8m.js} +3 -3
- package/dist/server/assets/{packet-DYOGHKS2-bCkPivks.js → packet-DYOGHKS2-nhhZIGJC.js} +6 -6
- package/dist/server/assets/{pie-VRWISCQL-cbn_jdq6.js → pie-VRWISCQL-kCISsi8U.js} +6 -6
- package/dist/server/assets/{pieDiagram-ADFJNKIX-BYnq3CiI.js → pieDiagram-ADFJNKIX-CHCBgglI.js} +7 -7
- package/dist/server/assets/{quadrantDiagram-AYHSOK5B-Bg0bur0-.js → quadrantDiagram-AYHSOK5B-D1Es_GIX.js} +2 -2
- package/dist/server/assets/{radar-ZZBFDIW7-CjGOJm-y.js → radar-ZZBFDIW7-_TLemglD.js} +6 -6
- package/dist/server/assets/{requirementDiagram-UZGBJVZJ-BiHrf5LP.js → requirementDiagram-UZGBJVZJ-CgQ8ccM0.js} +3 -3
- package/dist/server/assets/{router-BejKXIrT.js → router-ui6wVh7X.js} +444 -98
- package/dist/server/assets/{sankeyDiagram-TZEHDZUN-BLGAaS-t.js → sankeyDiagram-TZEHDZUN-dV-3kXAD.js} +1 -1
- package/dist/server/assets/{sequenceDiagram-WL72ISMW-CSRhSSG0.js → sequenceDiagram-WL72ISMW-DSjsmvhJ.js} +3 -3
- package/dist/server/assets/{stateDiagram-FKZM4ZOC-B_CCwVLH.js → stateDiagram-FKZM4ZOC-D1P44e7A.js} +8 -8
- package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-Br6BE9Dl.js → stateDiagram-v2-4FDKWEC3-BUB-g8R5.js} +4 -4
- package/dist/server/assets/{timeline-definition-IT6M3QCI-CpqSODIH.js → timeline-definition-IT6M3QCI-o0TWDfVE.js} +2 -2
- package/dist/server/assets/{treemap-GDKQZRPO-BqVJj6g2.js → treemap-GDKQZRPO-BnU8dMVn.js} +6 -6
- package/dist/server/assets/{workspace._workspaceId-BbEoQ0xz.js → workspace._workspaceId-BKa2ZK9u.js} +1 -1
- package/dist/server/assets/{workspace._workspaceId.changes-DRDZGvmq.js → workspace._workspaceId.changes-B8i8BeUK.js} +1 -1
- package/dist/server/assets/{workspace._workspaceId.code._-B5vvVD15.js → workspace._workspaceId.code._-4IwwK8EO.js} +1 -1
- package/dist/server/assets/{workspace._workspaceId.code.index-BDyHn77d.js → workspace._workspaceId.code.index-BTqIEfGL.js} +1 -1
- package/dist/server/assets/{workspace._workspaceId.index-ZhjhoB2w.js → workspace._workspaceId.index-ac3z18YW.js} +1 -1
- package/dist/server/assets/{workspace._workspaceId.terminal-Bi68U-9c.js → workspace._workspaceId.terminal-CvQaDekl.js} +2 -2
- package/dist/server/assets/{xychartDiagram-PRI3JC2R-AnGllwBT.js → xychartDiagram-PRI3JC2R-_U_JrS6w.js} +2 -2
- package/dist/server/server.js +2 -2
- package/dist/start-server.mjs +1111 -713
- package/package.json +5 -5
- package/dist/client/assets/DockviewTerminalContainer-C0Z9VUwT.js +0 -2
- package/dist/client/assets/channel-BJ7kvLrw.js +0 -1
- package/dist/client/assets/classDiagram-2ON5EDUG-DtIBgqOd.js +0 -1
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-DtIBgqOd.js +0 -1
- package/dist/client/assets/clone-BC8-cd9B.js +0 -1
- package/dist/client/assets/main-DunGnoXJ.css +0 -1
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3-CMecyWp7.js +0 -1
- package/dist/client/assets/workspace._workspaceId.code-ClgjzVFK.js +0 -1
|
@@ -40420,53 +40420,53 @@ async function loadLanguage(lang) {
|
|
|
40420
40420
|
try {
|
|
40421
40421
|
switch (lang) {
|
|
40422
40422
|
case "javascript":
|
|
40423
|
-
return import("./index-
|
|
40423
|
+
return import("./index-v2ZoIblX.js").then((m2) => m2.javascript());
|
|
40424
40424
|
case "jsx":
|
|
40425
|
-
return import("./index-
|
|
40425
|
+
return import("./index-v2ZoIblX.js").then((m2) => m2.javascript({ jsx: true }));
|
|
40426
40426
|
case "typescript":
|
|
40427
|
-
return import("./index-
|
|
40427
|
+
return import("./index-v2ZoIblX.js").then(
|
|
40428
40428
|
(m2) => m2.javascript({ typescript: true })
|
|
40429
40429
|
);
|
|
40430
40430
|
case "tsx":
|
|
40431
|
-
return import("./index-
|
|
40431
|
+
return import("./index-v2ZoIblX.js").then(
|
|
40432
40432
|
(m2) => m2.javascript({ jsx: true, typescript: true })
|
|
40433
40433
|
);
|
|
40434
40434
|
case "python":
|
|
40435
|
-
return import("./index-
|
|
40435
|
+
return import("./index-ehJX-x7u.js").then((m2) => m2.python());
|
|
40436
40436
|
case "html":
|
|
40437
|
-
return import("./index-
|
|
40437
|
+
return import("./index-Dpdg8d2x.js").then((m2) => m2.html());
|
|
40438
40438
|
case "css":
|
|
40439
|
-
return import("./index-
|
|
40439
|
+
return import("./index-CiwZb3K7.js").then((m2) => m2.css());
|
|
40440
40440
|
case "scss":
|
|
40441
40441
|
case "sass":
|
|
40442
|
-
return import("./index-
|
|
40442
|
+
return import("./index-DcSGnX9Y.js").then((m2) => m2.sass());
|
|
40443
40443
|
case "less":
|
|
40444
|
-
return import("./index-
|
|
40444
|
+
return import("./index-D3nc-6Y6.js").then((m2) => m2.less());
|
|
40445
40445
|
case "json":
|
|
40446
40446
|
case "jsonc":
|
|
40447
|
-
return import("./index-
|
|
40447
|
+
return import("./index-BsiXULyc.js").then((m2) => m2.json());
|
|
40448
40448
|
case "markdown":
|
|
40449
40449
|
case "mdx":
|
|
40450
|
-
return import("./index-
|
|
40450
|
+
return import("./index-TSafpX9w.js").then((m2) => m2.markdown());
|
|
40451
40451
|
case "xml":
|
|
40452
|
-
return import("./index-
|
|
40452
|
+
return import("./index-BR3UKwL5.js").then((m2) => m2.xml());
|
|
40453
40453
|
case "yaml":
|
|
40454
|
-
return import("./index-
|
|
40454
|
+
return import("./index-kawf-mXU.js").then((m2) => m2.yaml());
|
|
40455
40455
|
case "sql":
|
|
40456
|
-
return import("./index-
|
|
40456
|
+
return import("./index-BfIGXl0c.js").then((m2) => m2.sql());
|
|
40457
40457
|
case "rust":
|
|
40458
|
-
return import("./index-
|
|
40458
|
+
return import("./index-DTO2Bghw.js").then((m2) => m2.rust());
|
|
40459
40459
|
case "go":
|
|
40460
|
-
return import("./index-
|
|
40460
|
+
return import("./index-DLBp1ZlP.js").then((m2) => m2.go());
|
|
40461
40461
|
case "java":
|
|
40462
|
-
return import("./index-
|
|
40462
|
+
return import("./index-BL6ldRfC.js").then((m2) => m2.java());
|
|
40463
40463
|
case "kotlin":
|
|
40464
|
-
return import("./index-
|
|
40464
|
+
return import("./index-BL6ldRfC.js").then((m2) => m2.java());
|
|
40465
40465
|
case "c":
|
|
40466
40466
|
case "cpp":
|
|
40467
|
-
return import("./index-
|
|
40467
|
+
return import("./index-lgqrOY_d.js").then((m2) => m2.cpp());
|
|
40468
40468
|
case "php":
|
|
40469
|
-
return import("./index-
|
|
40469
|
+
return import("./index-CjogWqmh.js").then((m2) => m2.php());
|
|
40470
40470
|
// Legacy modes via StreamLanguage
|
|
40471
40471
|
case "bash":
|
|
40472
40472
|
case "fish":
|
|
@@ -46546,6 +46546,44 @@ function useUpdateSettings() {
|
|
|
46546
46546
|
}
|
|
46547
46547
|
});
|
|
46548
46548
|
}
|
|
46549
|
+
const EXPERIMENTAL_FLAG_KEYS = {
|
|
46550
|
+
contextMeter: "band.experimental.context-meter"
|
|
46551
|
+
};
|
|
46552
|
+
function readFlag(key2) {
|
|
46553
|
+
if (typeof window === "undefined") return false;
|
|
46554
|
+
return window.localStorage.getItem(key2) === "true";
|
|
46555
|
+
}
|
|
46556
|
+
function writeFlag(key2, value) {
|
|
46557
|
+
if (typeof window === "undefined") return;
|
|
46558
|
+
window.localStorage.setItem(key2, value ? "true" : "false");
|
|
46559
|
+
window.dispatchEvent(new CustomEvent("band:experimental-flag-change", { detail: { key: key2 } }));
|
|
46560
|
+
}
|
|
46561
|
+
function useExperimentalFlag(key2) {
|
|
46562
|
+
const [enabled, setEnabled] = reactExports.useState(() => readFlag(key2));
|
|
46563
|
+
reactExports.useEffect(() => {
|
|
46564
|
+
const sync = (e2) => {
|
|
46565
|
+
if (e2 instanceof CustomEvent && e2.detail?.key !== key2) return;
|
|
46566
|
+
setEnabled(readFlag(key2));
|
|
46567
|
+
};
|
|
46568
|
+
window.addEventListener("band:experimental-flag-change", sync);
|
|
46569
|
+
window.addEventListener("storage", sync);
|
|
46570
|
+
return () => {
|
|
46571
|
+
window.removeEventListener("band:experimental-flag-change", sync);
|
|
46572
|
+
window.removeEventListener("storage", sync);
|
|
46573
|
+
};
|
|
46574
|
+
}, [key2]);
|
|
46575
|
+
const set2 = reactExports.useCallback(
|
|
46576
|
+
(value) => {
|
|
46577
|
+
writeFlag(key2, value);
|
|
46578
|
+
setEnabled(value);
|
|
46579
|
+
},
|
|
46580
|
+
[key2]
|
|
46581
|
+
);
|
|
46582
|
+
return [enabled, set2];
|
|
46583
|
+
}
|
|
46584
|
+
function useExperimentalContextMeter() {
|
|
46585
|
+
return useExperimentalFlag(EXPERIMENTAL_FLAG_KEYS.contextMeter);
|
|
46586
|
+
}
|
|
46549
46587
|
function SettingsRow({
|
|
46550
46588
|
label,
|
|
46551
46589
|
description,
|
|
@@ -46625,6 +46663,14 @@ const KNOWN_AGENTS = [
|
|
|
46625
46663
|
{ id: "opencode", type: "opencode", label: "OpenCode", defaultCommand: "opencode" }
|
|
46626
46664
|
];
|
|
46627
46665
|
const MODEL_DEFAULT_SENTINEL = "__band_default__";
|
|
46666
|
+
function formatCtxWindow$1(n2) {
|
|
46667
|
+
if (n2 >= 1e6) {
|
|
46668
|
+
const m2 = n2 / 1e6;
|
|
46669
|
+
return `${Number.isInteger(m2) ? m2.toFixed(0) : m2.toFixed(1)}M`;
|
|
46670
|
+
}
|
|
46671
|
+
if (n2 >= 1e3) return `${Math.round(n2 / 1e3)}k`;
|
|
46672
|
+
return String(n2);
|
|
46673
|
+
}
|
|
46628
46674
|
function SettingsPage({ open: open2, onOpenChange }) {
|
|
46629
46675
|
const { settings } = useSettingsQuery();
|
|
46630
46676
|
const updateSettingsMutation = useUpdateSettings();
|
|
@@ -46649,6 +46695,7 @@ function SettingsPage({ open: open2, onOpenChange }) {
|
|
|
46649
46695
|
);
|
|
46650
46696
|
const [selectedTheme, setSelectedTheme] = reactExports.useState(settings.theme ?? "system");
|
|
46651
46697
|
const [agentModels, setAgentModels] = reactExports.useState({});
|
|
46698
|
+
const [contextMeterEnabled, setContextMeterEnabled] = useExperimentalContextMeter();
|
|
46652
46699
|
const adapter2 = useAdapter();
|
|
46653
46700
|
reactExports.useEffect(() => {
|
|
46654
46701
|
if (!adapter2.listModels) return;
|
|
@@ -46977,6 +47024,22 @@ function SettingsPage({ open: open2, onOpenChange }) {
|
|
|
46977
47024
|
)
|
|
46978
47025
|
}
|
|
46979
47026
|
),
|
|
47027
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
47028
|
+
SettingsRow,
|
|
47029
|
+
{
|
|
47030
|
+
htmlFor: "agents-context-meter",
|
|
47031
|
+
label: "Context window meter",
|
|
47032
|
+
description: "Show a context-usage donut next to the session-history button in the chat input. Token counting accuracy varies by agent — disable if numbers look wrong.",
|
|
47033
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
47034
|
+
Switch,
|
|
47035
|
+
{
|
|
47036
|
+
id: "agents-context-meter",
|
|
47037
|
+
checked: contextMeterEnabled,
|
|
47038
|
+
onCheckedChange: setContextMeterEnabled
|
|
47039
|
+
}
|
|
47040
|
+
)
|
|
47041
|
+
}
|
|
47042
|
+
),
|
|
46980
47043
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Accordion, { type: "multiple", className: "w-full", children: KNOWN_AGENTS.map((known) => {
|
|
46981
47044
|
const agent = codingAgents.find((a2) => a2.type === known.type);
|
|
46982
47045
|
const enabled = !!agent;
|
|
@@ -47075,7 +47138,13 @@ function SettingsPage({ open: open2, onOpenChange }) {
|
|
|
47075
47138
|
/* @__PURE__ */ jsxRuntimeExports.jsx(SelectTrigger, { className: "h-8 text-xs", children: /* @__PURE__ */ jsxRuntimeExports.jsx(SelectValue, { placeholder: "Default" }) }),
|
|
47076
47139
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(SelectContent, { children: [
|
|
47077
47140
|
/* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: MODEL_DEFAULT_SENTINEL, children: "Default" }),
|
|
47078
|
-
models.map((m2) => /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: m2.id, children:
|
|
47141
|
+
models.map((m2) => /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: m2.id, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "flex w-full items-baseline justify-between gap-2", children: [
|
|
47142
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: m2.name }),
|
|
47143
|
+
m2.contextWindow !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-[10px] uppercase tabular-nums text-muted-foreground", children: [
|
|
47144
|
+
formatCtxWindow$1(m2.contextWindow),
|
|
47145
|
+
" ctx"
|
|
47146
|
+
] })
|
|
47147
|
+
] }) }, m2.id))
|
|
47079
47148
|
] })
|
|
47080
47149
|
]
|
|
47081
47150
|
}
|
|
@@ -47298,7 +47367,7 @@ function DashboardShell({ toolbarMenuItems, hideTitleBar }) {
|
|
|
47298
47367
|
children: /* @__PURE__ */ jsxRuntimeExports.jsx(Menu$1, { className: "size-5" })
|
|
47299
47368
|
}
|
|
47300
47369
|
) }) }),
|
|
47301
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: "More" })
|
|
47370
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "bottom", children: "More" })
|
|
47302
47371
|
] }),
|
|
47303
47372
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenuContent, { align: "start", children: [
|
|
47304
47373
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenuItem, { onClick: () => setEditMode((v2) => !v2), children: [
|
|
@@ -47370,7 +47439,7 @@ function DashboardShell({ toolbarMenuItems, hideTitleBar }) {
|
|
|
47370
47439
|
children: /* @__PURE__ */ jsxRuntimeExports.jsx(Plus, { className: "size-5" })
|
|
47371
47440
|
}
|
|
47372
47441
|
) }),
|
|
47373
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: "Add project" })
|
|
47442
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "bottom", children: "Add project" })
|
|
47374
47443
|
] }) })
|
|
47375
47444
|
] }),
|
|
47376
47445
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -51791,7 +51860,7 @@ function WorkspacePickerDialog({ open: open2, onOpenChange }) {
|
|
|
51791
51860
|
workspaceId,
|
|
51792
51861
|
projectName: project.name,
|
|
51793
51862
|
branch: worktree.branch,
|
|
51794
|
-
agent: statuses
|
|
51863
|
+
agent: statuses.get(workspaceId)?.agent
|
|
51795
51864
|
});
|
|
51796
51865
|
}
|
|
51797
51866
|
}
|
|
@@ -131842,12 +131911,12 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
|
|
|
131842
131911
|
registerLayoutLoaders([
|
|
131843
131912
|
{
|
|
131844
131913
|
name: "dagre",
|
|
131845
|
-
loader: /* @__PURE__ */ __name(async () => await import("./dagre-6UL2VRFP-
|
|
131914
|
+
loader: /* @__PURE__ */ __name(async () => await import("./dagre-6UL2VRFP-L-yKb3Zq.js"), "loader")
|
|
131846
131915
|
},
|
|
131847
131916
|
...[
|
|
131848
131917
|
{
|
|
131849
131918
|
name: "cose-bilkent",
|
|
131850
|
-
loader: /* @__PURE__ */ __name(async () => await import("./cose-bilkent-S5V4N54A-
|
|
131919
|
+
loader: /* @__PURE__ */ __name(async () => await import("./cose-bilkent-S5V4N54A-DmleNa4v.js"), "loader")
|
|
131851
131920
|
}
|
|
131852
131921
|
]
|
|
131853
131922
|
]);
|
|
@@ -132286,7 +132355,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
|
|
|
132286
132355
|
return /^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt);
|
|
132287
132356
|
}, "detector");
|
|
132288
132357
|
var loader = /* @__PURE__ */ __name(async () => {
|
|
132289
|
-
const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-
|
|
132358
|
+
const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-Bv39r0cE.js");
|
|
132290
132359
|
return { id, diagram: diagram2 };
|
|
132291
132360
|
}, "loader");
|
|
132292
132361
|
var plugin = {
|
|
@@ -132303,7 +132372,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
132303
132372
|
return /^\s*graph/.test(txt);
|
|
132304
132373
|
}, "detector");
|
|
132305
132374
|
var loader2 = /* @__PURE__ */ __name(async () => {
|
|
132306
|
-
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-
|
|
132375
|
+
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CKOlpEYf.js");
|
|
132307
132376
|
return { id: id2, diagram: diagram2 };
|
|
132308
132377
|
}, "loader");
|
|
132309
132378
|
var plugin2 = {
|
|
@@ -132326,7 +132395,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
132326
132395
|
return /^\s*flowchart/.test(txt);
|
|
132327
132396
|
}, "detector");
|
|
132328
132397
|
var loader3 = /* @__PURE__ */ __name(async () => {
|
|
132329
|
-
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-
|
|
132398
|
+
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CKOlpEYf.js");
|
|
132330
132399
|
return { id: id3, diagram: diagram2 };
|
|
132331
132400
|
}, "loader");
|
|
132332
132401
|
var plugin3 = {
|
|
@@ -132340,7 +132409,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
|
|
|
132340
132409
|
return /^\s*erDiagram/.test(txt);
|
|
132341
132410
|
}, "detector");
|
|
132342
132411
|
var loader4 = /* @__PURE__ */ __name(async () => {
|
|
132343
|
-
const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-
|
|
132412
|
+
const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-B8SLNOhT.js");
|
|
132344
132413
|
return { id: id4, diagram: diagram2 };
|
|
132345
132414
|
}, "loader");
|
|
132346
132415
|
var plugin4 = {
|
|
@@ -132354,7 +132423,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
|
|
|
132354
132423
|
return /^\s*gitGraph/.test(txt);
|
|
132355
132424
|
}, "detector");
|
|
132356
132425
|
var loader5 = /* @__PURE__ */ __name(async () => {
|
|
132357
|
-
const { diagram: diagram2 } = await import("./gitGraphDiagram-V2S2FVAM-
|
|
132426
|
+
const { diagram: diagram2 } = await import("./gitGraphDiagram-V2S2FVAM-LTcGOQh8.js");
|
|
132358
132427
|
return { id: id5, diagram: diagram2 };
|
|
132359
132428
|
}, "loader");
|
|
132360
132429
|
var plugin5 = {
|
|
@@ -132368,7 +132437,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
|
|
|
132368
132437
|
return /^\s*gantt/.test(txt);
|
|
132369
132438
|
}, "detector");
|
|
132370
132439
|
var loader6 = /* @__PURE__ */ __name(async () => {
|
|
132371
|
-
const { diagram: diagram2 } = await import("./ganttDiagram-JELNMOA3-
|
|
132440
|
+
const { diagram: diagram2 } = await import("./ganttDiagram-JELNMOA3-Cz_3Y_fm.js");
|
|
132372
132441
|
return { id: id6, diagram: diagram2 };
|
|
132373
132442
|
}, "loader");
|
|
132374
132443
|
var plugin6 = {
|
|
@@ -132382,7 +132451,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
|
|
|
132382
132451
|
return /^\s*info/.test(txt);
|
|
132383
132452
|
}, "detector");
|
|
132384
132453
|
var loader7 = /* @__PURE__ */ __name(async () => {
|
|
132385
|
-
const { diagram: diagram2 } = await import("./infoDiagram-HS3SLOUP-
|
|
132454
|
+
const { diagram: diagram2 } = await import("./infoDiagram-HS3SLOUP-CHCI1AvB.js");
|
|
132386
132455
|
return { id: id7, diagram: diagram2 };
|
|
132387
132456
|
}, "loader");
|
|
132388
132457
|
var info = {
|
|
@@ -132395,7 +132464,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
|
|
|
132395
132464
|
return /^\s*pie/.test(txt);
|
|
132396
132465
|
}, "detector");
|
|
132397
132466
|
var loader8 = /* @__PURE__ */ __name(async () => {
|
|
132398
|
-
const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-
|
|
132467
|
+
const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-CHCBgglI.js");
|
|
132399
132468
|
return { id: id8, diagram: diagram2 };
|
|
132400
132469
|
}, "loader");
|
|
132401
132470
|
var pie = {
|
|
@@ -132408,7 +132477,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
|
|
|
132408
132477
|
return /^\s*quadrantChart/.test(txt);
|
|
132409
132478
|
}, "detector");
|
|
132410
132479
|
var loader9 = /* @__PURE__ */ __name(async () => {
|
|
132411
|
-
const { diagram: diagram2 } = await import("./quadrantDiagram-AYHSOK5B-
|
|
132480
|
+
const { diagram: diagram2 } = await import("./quadrantDiagram-AYHSOK5B-D1Es_GIX.js");
|
|
132412
132481
|
return { id: id9, diagram: diagram2 };
|
|
132413
132482
|
}, "loader");
|
|
132414
132483
|
var plugin7 = {
|
|
@@ -132422,7 +132491,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
|
|
|
132422
132491
|
return /^\s*xychart(-beta)?/.test(txt);
|
|
132423
132492
|
}, "detector");
|
|
132424
132493
|
var loader10 = /* @__PURE__ */ __name(async () => {
|
|
132425
|
-
const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-
|
|
132494
|
+
const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-_U_JrS6w.js");
|
|
132426
132495
|
return { id: id10, diagram: diagram2 };
|
|
132427
132496
|
}, "loader");
|
|
132428
132497
|
var plugin8 = {
|
|
@@ -132436,7 +132505,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
|
|
|
132436
132505
|
return /^\s*requirement(Diagram)?/.test(txt);
|
|
132437
132506
|
}, "detector");
|
|
132438
132507
|
var loader11 = /* @__PURE__ */ __name(async () => {
|
|
132439
|
-
const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-
|
|
132508
|
+
const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-CgQ8ccM0.js");
|
|
132440
132509
|
return { id: id11, diagram: diagram2 };
|
|
132441
132510
|
}, "loader");
|
|
132442
132511
|
var plugin9 = {
|
|
@@ -132450,7 +132519,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
|
|
|
132450
132519
|
return /^\s*sequenceDiagram/.test(txt);
|
|
132451
132520
|
}, "detector");
|
|
132452
132521
|
var loader12 = /* @__PURE__ */ __name(async () => {
|
|
132453
|
-
const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-
|
|
132522
|
+
const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-DSjsmvhJ.js");
|
|
132454
132523
|
return { id: id12, diagram: diagram2 };
|
|
132455
132524
|
}, "loader");
|
|
132456
132525
|
var plugin10 = {
|
|
@@ -132467,7 +132536,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
132467
132536
|
return /^\s*classDiagram/.test(txt);
|
|
132468
132537
|
}, "detector");
|
|
132469
132538
|
var loader13 = /* @__PURE__ */ __name(async () => {
|
|
132470
|
-
const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-
|
|
132539
|
+
const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-Bm6tgj68.js");
|
|
132471
132540
|
return { id: id13, diagram: diagram2 };
|
|
132472
132541
|
}, "loader");
|
|
132473
132542
|
var plugin11 = {
|
|
@@ -132484,7 +132553,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
132484
132553
|
return /^\s*classDiagram-v2/.test(txt);
|
|
132485
132554
|
}, "detector");
|
|
132486
132555
|
var loader14 = /* @__PURE__ */ __name(async () => {
|
|
132487
|
-
const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-
|
|
132556
|
+
const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-Bm6tgj68.js");
|
|
132488
132557
|
return { id: id14, diagram: diagram2 };
|
|
132489
132558
|
}, "loader");
|
|
132490
132559
|
var plugin12 = {
|
|
@@ -132501,7 +132570,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
132501
132570
|
return /^\s*stateDiagram/.test(txt);
|
|
132502
132571
|
}, "detector");
|
|
132503
132572
|
var loader15 = /* @__PURE__ */ __name(async () => {
|
|
132504
|
-
const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-
|
|
132573
|
+
const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-D1P44e7A.js");
|
|
132505
132574
|
return { id: id15, diagram: diagram2 };
|
|
132506
132575
|
}, "loader");
|
|
132507
132576
|
var plugin13 = {
|
|
@@ -132521,7 +132590,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
132521
132590
|
return false;
|
|
132522
132591
|
}, "detector");
|
|
132523
132592
|
var loader16 = /* @__PURE__ */ __name(async () => {
|
|
132524
|
-
const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-
|
|
132593
|
+
const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-BUB-g8R5.js");
|
|
132525
132594
|
return { id: id16, diagram: diagram2 };
|
|
132526
132595
|
}, "loader");
|
|
132527
132596
|
var plugin14 = {
|
|
@@ -132535,7 +132604,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
|
|
|
132535
132604
|
return /^\s*journey/.test(txt);
|
|
132536
132605
|
}, "detector");
|
|
132537
132606
|
var loader17 = /* @__PURE__ */ __name(async () => {
|
|
132538
|
-
const { diagram: diagram2 } = await import("./journeyDiagram-XKPGCS4Q-
|
|
132607
|
+
const { diagram: diagram2 } = await import("./journeyDiagram-XKPGCS4Q-DnaN-6ze.js");
|
|
132539
132608
|
return { id: id17, diagram: diagram2 };
|
|
132540
132609
|
}, "loader");
|
|
132541
132610
|
var plugin15 = {
|
|
@@ -132602,7 +132671,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
|
|
|
132602
132671
|
return false;
|
|
132603
132672
|
}, "detector");
|
|
132604
132673
|
var loader18 = /* @__PURE__ */ __name(async () => {
|
|
132605
|
-
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-
|
|
132674
|
+
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CKOlpEYf.js");
|
|
132606
132675
|
return { id: id18, diagram: diagram2 };
|
|
132607
132676
|
}, "loader");
|
|
132608
132677
|
var plugin16 = {
|
|
@@ -132616,7 +132685,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
|
|
|
132616
132685
|
return /^\s*timeline/.test(txt);
|
|
132617
132686
|
}, "detector");
|
|
132618
132687
|
var loader19 = /* @__PURE__ */ __name(async () => {
|
|
132619
|
-
const { diagram: diagram2 } = await import("./timeline-definition-IT6M3QCI-
|
|
132688
|
+
const { diagram: diagram2 } = await import("./timeline-definition-IT6M3QCI-o0TWDfVE.js");
|
|
132620
132689
|
return { id: id19, diagram: diagram2 };
|
|
132621
132690
|
}, "loader");
|
|
132622
132691
|
var plugin17 = {
|
|
@@ -132630,7 +132699,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
|
|
|
132630
132699
|
return /^\s*mindmap/.test(txt);
|
|
132631
132700
|
}, "detector");
|
|
132632
132701
|
var loader20 = /* @__PURE__ */ __name(async () => {
|
|
132633
|
-
const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-
|
|
132702
|
+
const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-D4mbSp8m.js");
|
|
132634
132703
|
return { id: id20, diagram: diagram2 };
|
|
132635
132704
|
}, "loader");
|
|
132636
132705
|
var plugin18 = {
|
|
@@ -132644,7 +132713,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
|
|
|
132644
132713
|
return /^\s*kanban/.test(txt);
|
|
132645
132714
|
}, "detector");
|
|
132646
132715
|
var loader21 = /* @__PURE__ */ __name(async () => {
|
|
132647
|
-
const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-
|
|
132716
|
+
const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-JU-5yrQV.js");
|
|
132648
132717
|
return { id: id21, diagram: diagram2 };
|
|
132649
132718
|
}, "loader");
|
|
132650
132719
|
var plugin19 = {
|
|
@@ -132658,7 +132727,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
|
|
|
132658
132727
|
return /^\s*sankey(-beta)?/.test(txt);
|
|
132659
132728
|
}, "detector");
|
|
132660
132729
|
var loader22 = /* @__PURE__ */ __name(async () => {
|
|
132661
|
-
const { diagram: diagram2 } = await import("./sankeyDiagram-TZEHDZUN-
|
|
132730
|
+
const { diagram: diagram2 } = await import("./sankeyDiagram-TZEHDZUN-dV-3kXAD.js");
|
|
132662
132731
|
return { id: id22, diagram: diagram2 };
|
|
132663
132732
|
}, "loader");
|
|
132664
132733
|
var plugin20 = {
|
|
@@ -132672,7 +132741,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
|
|
|
132672
132741
|
return /^\s*packet(-beta)?/.test(txt);
|
|
132673
132742
|
}, "detector");
|
|
132674
132743
|
var loader23 = /* @__PURE__ */ __name(async () => {
|
|
132675
|
-
const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-
|
|
132744
|
+
const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-CT98niKC.js");
|
|
132676
132745
|
return { id: id23, diagram: diagram2 };
|
|
132677
132746
|
}, "loader");
|
|
132678
132747
|
var packet = {
|
|
@@ -132685,7 +132754,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
|
|
|
132685
132754
|
return /^\s*radar-beta/.test(txt);
|
|
132686
132755
|
}, "detector");
|
|
132687
132756
|
var loader24 = /* @__PURE__ */ __name(async () => {
|
|
132688
|
-
const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-
|
|
132757
|
+
const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-CPIjUINK.js");
|
|
132689
132758
|
return { id: id24, diagram: diagram2 };
|
|
132690
132759
|
}, "loader");
|
|
132691
132760
|
var radar = {
|
|
@@ -132698,7 +132767,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
|
|
|
132698
132767
|
return /^\s*block(-beta)?/.test(txt);
|
|
132699
132768
|
}, "detector");
|
|
132700
132769
|
var loader25 = /* @__PURE__ */ __name(async () => {
|
|
132701
|
-
const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-
|
|
132770
|
+
const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-L5ieGxFF.js");
|
|
132702
132771
|
return { id: id25, diagram: diagram2 };
|
|
132703
132772
|
}, "loader");
|
|
132704
132773
|
var plugin21 = {
|
|
@@ -132712,7 +132781,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
|
|
|
132712
132781
|
return /^\s*architecture/.test(txt);
|
|
132713
132782
|
}, "detector");
|
|
132714
132783
|
var loader26 = /* @__PURE__ */ __name(async () => {
|
|
132715
|
-
const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-
|
|
132784
|
+
const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-C5DZiZyi.js");
|
|
132716
132785
|
return { id: id26, diagram: diagram2 };
|
|
132717
132786
|
}, "loader");
|
|
132718
132787
|
var architecture = {
|
|
@@ -132726,7 +132795,7 @@ var detector27 = /* @__PURE__ */ __name((txt) => {
|
|
|
132726
132795
|
return /^\s*treemap/.test(txt);
|
|
132727
132796
|
}, "detector");
|
|
132728
132797
|
var loader27 = /* @__PURE__ */ __name(async () => {
|
|
132729
|
-
const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-
|
|
132798
|
+
const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-CLQUsOvK.js");
|
|
132730
132799
|
return { id: id27, diagram: diagram2 };
|
|
132731
132800
|
}, "loader");
|
|
132732
132801
|
var treemap = {
|
|
@@ -148404,7 +148473,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
|
|
|
148404
148473
|
var et2 = ({ className: e2, language: t2, style: o3, isIncomplete: n2, ...s2 }) => jsxRuntimeExports.jsx("div", { className: f("my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2", e2), "data-incomplete": n2 || void 0, "data-language": t2, "data-streamdown": "code-block", style: { contentVisibility: "auto", containIntrinsicSize: "auto 200px", ...o3 }, ...s2 });
|
|
148405
148474
|
var Se = reactExports.createContext({ code: "" }), de = () => reactExports.useContext(Se);
|
|
148406
148475
|
var ot2 = ({ language: e2 }) => jsxRuntimeExports.jsx("div", { className: "flex h-8 items-center text-muted-foreground text-xs", "data-language": e2, "data-streamdown": "code-block-header", children: jsxRuntimeExports.jsx("span", { className: "ml-1 font-mono lowercase", children: e2 }) });
|
|
148407
|
-
var cn = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-
|
|
148476
|
+
var cn = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-uXJZSUGv.js").then((e2) => ({ default: e2.HighlightedCodeBlockBody }))), rt = ({ code: e2, language: t2, className: o3, children: n2, isIncomplete: s2 = false, ...r2 }) => {
|
|
148408
148477
|
let i2 = reactExports.useMemo(() => e2.replace(cn, ""), [e2]), c2 = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i2.split(`
|
|
148409
148478
|
`).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i2]);
|
|
148410
148479
|
return jsxRuntimeExports.jsx(Se.Provider, { value: { code: e2 }, children: jsxRuntimeExports.jsxs(et2, { isIncomplete: s2, language: t2, children: [jsxRuntimeExports.jsx(ot2, { language: t2 }), n2 ? jsxRuntimeExports.jsx("div", { className: "pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end", children: jsxRuntimeExports.jsx("div", { className: "pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur", "data-streamdown": "code-block-actions", children: n2 }) }) : null, jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: jsxRuntimeExports.jsx(Qe, { className: o3, language: t2, result: c2, ...r2 }), children: jsxRuntimeExports.jsx(dn, { className: o3, code: i2, language: t2, raw: c2, ...r2 }) })] }) });
|
|
@@ -148726,7 +148795,7 @@ var Dt = ({ children: e2, className: t2, onDownload: o3, onError: n2 }) => {
|
|
|
148726
148795
|
}, []), jsxRuntimeExports.jsxs("div", { className: "relative", ref: i2, children: [jsxRuntimeExports.jsx("button", { className: f("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50", t2), disabled: c2, onClick: () => r2(!s2), title: "Download table", type: "button", children: e2 != null ? e2 : jsxRuntimeExports.jsx(Z, { size: 14 }) }), s2 ? jsxRuntimeExports.jsxs("div", { className: "absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg", children: [jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("csv"), title: "Download table as CSV", type: "button", children: "CSV" }), jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("markdown"), title: "Download table as Markdown", type: "button", children: "Markdown" })] }) : null] });
|
|
148727
148796
|
};
|
|
148728
148797
|
var Vt = ({ children: e2, className: t2, showControls: o3, ...n2 }) => jsxRuntimeExports.jsxs("div", { className: "my-4 flex flex-col gap-2 rounded-lg border border-border bg-sidebar p-2", "data-streamdown": "table-wrapper", children: [o3 ? jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-end gap-1", children: [jsxRuntimeExports.jsx(Ht, {}), jsxRuntimeExports.jsx(Dt, {})] }) : null, jsxRuntimeExports.jsx("div", { className: "border-collapse overflow-x-auto overscroll-y-auto rounded-md border border-border bg-background", children: jsxRuntimeExports.jsx("table", { className: f("w-full divide-y divide-border", t2), "data-streamdown": "table", ...n2, children: e2 }) })] });
|
|
148729
|
-
var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-
|
|
148798
|
+
var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-CKq41YLn.js").then((e2) => ({ default: e2.Mermaid }))), Kn = /language-([^\s]+)/;
|
|
148730
148799
|
function ke(e2, t2) {
|
|
148731
148800
|
if (!(e2 != null && e2.position || t2 != null && t2.position)) return true;
|
|
148732
148801
|
if (!(e2 != null && e2.position && (t2 != null && t2.position))) return false;
|
|
@@ -151105,18 +151174,26 @@ function DockviewBrowserContainer({
|
|
|
151105
151174
|
console.error("[DockviewBrowserContainer] fromJSON failed, creating default:", err);
|
|
151106
151175
|
createDefaultPanel$1(event.api, workspaceId);
|
|
151107
151176
|
}
|
|
151177
|
+
let dropped = 0;
|
|
151108
151178
|
if (knownBrowserIds) {
|
|
151109
151179
|
const orphans = event.api.panels.filter((p3) => !knownBrowserIds.has(p3.id));
|
|
151110
151180
|
for (const orphan of orphans) {
|
|
151111
151181
|
event.api.removePanel(orphan);
|
|
151182
|
+
dropped++;
|
|
151112
151183
|
}
|
|
151113
151184
|
if (event.api.panels.length === 0) {
|
|
151114
151185
|
createDefaultPanel$1(event.api, workspaceId);
|
|
151186
|
+
dropped++;
|
|
151115
151187
|
}
|
|
151116
151188
|
}
|
|
151117
151189
|
setTimeout(() => {
|
|
151118
151190
|
isRestoringRef.current = false;
|
|
151119
151191
|
}, 0);
|
|
151192
|
+
if (dropped > 0) {
|
|
151193
|
+
persistToServer$1(workspaceId, event.api.toJSON(), {
|
|
151194
|
+
queryClient: queryClientRef.current
|
|
151195
|
+
});
|
|
151196
|
+
}
|
|
151120
151197
|
} else {
|
|
151121
151198
|
createDefaultPanel$1(event.api, workspaceId);
|
|
151122
151199
|
persistToServer$1(workspaceId, event.api.toJSON(), { queryClient: queryClientRef.current });
|
|
@@ -160473,12 +160550,14 @@ const PromptInputAttach = ({ className, ...props }) => {
|
|
|
160473
160550
|
{
|
|
160474
160551
|
type: "button",
|
|
160475
160552
|
className: cn$2(
|
|
160476
|
-
|
|
160553
|
+
// Match the icon-button shell used by SessionHistoryMenu / ModeMenu /
|
|
160554
|
+
// AgentModelMenu in the action row so all affordances line up.
|
|
160555
|
+
"inline-flex shrink-0 items-center justify-center rounded-md px-1.5 py-1 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
|
|
160477
160556
|
className
|
|
160478
160557
|
),
|
|
160479
160558
|
onClick: () => fileInputRef.current?.click(),
|
|
160480
160559
|
...props,
|
|
160481
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx(Paperclip, { className: "size-
|
|
160560
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(Paperclip, { className: "size-4" })
|
|
160482
160561
|
}
|
|
160483
160562
|
)
|
|
160484
160563
|
] });
|
|
@@ -160549,7 +160628,6 @@ const PromptInputSubmit = ({
|
|
|
160549
160628
|
className,
|
|
160550
160629
|
status,
|
|
160551
160630
|
onStop,
|
|
160552
|
-
queueCount,
|
|
160553
160631
|
...props
|
|
160554
160632
|
}) => {
|
|
160555
160633
|
const { hasContent: hasContent2 } = reactExports.useContext(PromptInputContext);
|
|
@@ -160557,15 +160635,11 @@ const PromptInputSubmit = ({
|
|
|
160557
160635
|
const isStreaming = status === "streaming";
|
|
160558
160636
|
const isBusy = isSubmitting || isStreaming;
|
|
160559
160637
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
160560
|
-
queueCount != null && queueCount > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(Badge, { variant: "secondary", className: "text-xs tabular-nums", children: [
|
|
160561
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { className: "size-3" }),
|
|
160562
|
-
queueCount
|
|
160563
|
-
] }),
|
|
160564
160638
|
isStreaming && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
160565
160639
|
"button",
|
|
160566
160640
|
{
|
|
160567
160641
|
type: "button",
|
|
160568
|
-
className: "inline-flex size-8 lg:size-7 shrink-0 items-center justify-center rounded-full bg-
|
|
160642
|
+
className: "inline-flex size-8 lg:size-7 shrink-0 items-center justify-center rounded-full bg-secondary text-secondary-foreground transition-colors hover:bg-secondary/80",
|
|
160569
160643
|
onClick: onStop,
|
|
160570
160644
|
children: /* @__PURE__ */ jsxRuntimeExports.jsx(Square, { className: "size-4 lg:size-3.5 fill-current" })
|
|
160571
160645
|
}
|
|
@@ -161914,6 +161988,8 @@ function ChatView({
|
|
|
161914
161988
|
const [initialSessionCleared, setInitialSessionCleared] = reactExports.useState(false);
|
|
161915
161989
|
const currentSessionId = activeSessionId ?? (initialSessionCleared ? void 0 : initialSessionId);
|
|
161916
161990
|
const [hasMore, setHasMore] = reactExports.useState(false);
|
|
161991
|
+
const [usage, setUsage] = reactExports.useState(void 0);
|
|
161992
|
+
const [contextMeterEnabled] = useExperimentalContextMeter();
|
|
161917
161993
|
const [loadingOlder, setLoadingOlder] = reactExports.useState(false);
|
|
161918
161994
|
const scrollHeightBeforePrependRef = reactExports.useRef(null);
|
|
161919
161995
|
const sentinelRef = reactExports.useRef(null);
|
|
@@ -161982,6 +162058,18 @@ function ChatView({
|
|
|
161982
162058
|
const [agentDefaultModel, setAgentDefaultModel] = reactExports.useState();
|
|
161983
162059
|
const [userModelOverride, setUserModelOverride] = reactExports.useState();
|
|
161984
162060
|
const selectedModel = userModelOverride ?? agentDefaultModel;
|
|
162061
|
+
const selectedModelInfo = reactExports.useMemo(
|
|
162062
|
+
() => models.find((m2) => m2.id === selectedModel),
|
|
162063
|
+
[models, selectedModel]
|
|
162064
|
+
);
|
|
162065
|
+
reactExports.useEffect(() => {
|
|
162066
|
+
if (!selectedModel) return;
|
|
162067
|
+
setUsage((prev2) => {
|
|
162068
|
+
if (!prev2 || prev2.maxContextTokens === void 0) return prev2;
|
|
162069
|
+
const { maxContextTokens: _drop, ...rest } = prev2;
|
|
162070
|
+
return rest;
|
|
162071
|
+
});
|
|
162072
|
+
}, [selectedModel]);
|
|
161985
162073
|
reactExports.useEffect(() => {
|
|
161986
162074
|
const modelsP = trpc.models.listAll.query().then((data) => {
|
|
161987
162075
|
setAgentGroups(data.agents);
|
|
@@ -162055,6 +162143,25 @@ function ChatView({
|
|
|
162055
162143
|
const sid = dataPart.data.sessionId;
|
|
162056
162144
|
sessionIdRef.current = sid;
|
|
162057
162145
|
onActiveSessionChange?.(sid);
|
|
162146
|
+
} else if (dataPart.type === "data-usage" && dataPart.data != null && typeof dataPart.data === "object") {
|
|
162147
|
+
const data = dataPart.data;
|
|
162148
|
+
if (typeof data.inputTokens === "number" && typeof data.outputTokens === "number") {
|
|
162149
|
+
const next2 = {
|
|
162150
|
+
provider: data.provider,
|
|
162151
|
+
inputTokens: data.inputTokens,
|
|
162152
|
+
outputTokens: data.outputTokens,
|
|
162153
|
+
cacheReadTokens: data.cacheReadTokens,
|
|
162154
|
+
cacheCreationTokens: data.cacheCreationTokens,
|
|
162155
|
+
reasoningOutputTokens: data.reasoningOutputTokens,
|
|
162156
|
+
contextTokens: data.contextTokens,
|
|
162157
|
+
totalProcessedTokens: data.totalProcessedTokens,
|
|
162158
|
+
maxContextTokens: data.maxContextTokens
|
|
162159
|
+
};
|
|
162160
|
+
setUsage((prev2) => {
|
|
162161
|
+
const shouldUseNext = prev2?.totalProcessedTokens !== void 0 && next2.totalProcessedTokens !== void 0 ? next2.totalProcessedTokens >= prev2.totalProcessedTokens : usageContextSize(next2) >= usageContextSize(prev2);
|
|
162162
|
+
return shouldUseNext ? next2 : prev2;
|
|
162163
|
+
});
|
|
162164
|
+
}
|
|
162058
162165
|
}
|
|
162059
162166
|
}
|
|
162060
162167
|
});
|
|
@@ -162149,6 +162256,19 @@ function ChatView({
|
|
|
162149
162256
|
firstEventIdRef.current = data.firstEventId ?? void 0;
|
|
162150
162257
|
firstMessageIndexRef.current = data.firstMessageIndex ?? void 0;
|
|
162151
162258
|
setHasMore(data.hasMore);
|
|
162259
|
+
if (data.lastUsage) {
|
|
162260
|
+
setUsage({
|
|
162261
|
+
provider: data.lastUsage.provider,
|
|
162262
|
+
inputTokens: data.lastUsage.inputTokens,
|
|
162263
|
+
outputTokens: data.lastUsage.outputTokens,
|
|
162264
|
+
cacheReadTokens: data.lastUsage.cacheReadTokens,
|
|
162265
|
+
cacheCreationTokens: data.lastUsage.cacheCreationTokens,
|
|
162266
|
+
reasoningOutputTokens: data.lastUsage.reasoningOutputTokens,
|
|
162267
|
+
contextTokens: data.lastUsage.contextTokens,
|
|
162268
|
+
totalProcessedTokens: data.lastUsage.totalProcessedTokens,
|
|
162269
|
+
maxContextTokens: data.lastUsage.maxContextTokens
|
|
162270
|
+
});
|
|
162271
|
+
}
|
|
162152
162272
|
} finally {
|
|
162153
162273
|
setLoadingHistory(false);
|
|
162154
162274
|
}
|
|
@@ -162276,6 +162396,7 @@ function ChatView({
|
|
|
162276
162396
|
onActiveSessionChange?.(sessionId);
|
|
162277
162397
|
setMessages([]);
|
|
162278
162398
|
setQueuedMessages([]);
|
|
162399
|
+
setUsage(void 0);
|
|
162279
162400
|
trpc.queue.clear.mutate({ workspaceId, chatId }).catch(() => {
|
|
162280
162401
|
});
|
|
162281
162402
|
onShowSessionListChange(false);
|
|
@@ -162305,6 +162426,7 @@ function ChatView({
|
|
|
162305
162426
|
onActiveSessionChange?.(void 0);
|
|
162306
162427
|
setMessages([]);
|
|
162307
162428
|
setQueuedMessages([]);
|
|
162429
|
+
setUsage(void 0);
|
|
162308
162430
|
trpc.queue.clear.mutate({ workspaceId, chatId }).catch(() => {
|
|
162309
162431
|
});
|
|
162310
162432
|
onShowSessionListChange(false);
|
|
@@ -162561,6 +162683,17 @@ function ChatView({
|
|
|
162561
162683
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(PromptInputActions, { children: [
|
|
162562
162684
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0.5", children: [
|
|
162563
162685
|
/* @__PURE__ */ jsxRuntimeExports.jsx(PromptInputAttach, {}),
|
|
162686
|
+
supportsSessionListing && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
162687
|
+
SessionHistoryMenu,
|
|
162688
|
+
{
|
|
162689
|
+
workspaceId,
|
|
162690
|
+
chatId,
|
|
162691
|
+
activeSessionId: activeSessionId ?? sessionIdRef.current,
|
|
162692
|
+
onSelectSession: handleSelectSession,
|
|
162693
|
+
onNewSession: handleNewSession
|
|
162694
|
+
}
|
|
162695
|
+
),
|
|
162696
|
+
contextMeterEnabled && /* @__PURE__ */ jsxRuntimeExports.jsx(ContextMeter, { usage, model: selectedModel, modelInfo: selectedModelInfo }),
|
|
162564
162697
|
(agentGroups.length > 0 || models.length > 0) && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
162565
162698
|
AgentModelMenu,
|
|
162566
162699
|
{
|
|
@@ -162573,26 +162706,9 @@ function ChatView({
|
|
|
162573
162706
|
disabled: status !== "ready" && status !== "error"
|
|
162574
162707
|
}
|
|
162575
162708
|
),
|
|
162576
|
-
modes.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(ModeMenu, { modes, selected: selectedMode, onSelect: handleModeSelect })
|
|
162577
|
-
supportsSessionListing && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
162578
|
-
SessionHistoryMenu,
|
|
162579
|
-
{
|
|
162580
|
-
workspaceId,
|
|
162581
|
-
chatId,
|
|
162582
|
-
activeSessionId: activeSessionId ?? sessionIdRef.current,
|
|
162583
|
-
onSelectSession: handleSelectSession,
|
|
162584
|
-
onNewSession: handleNewSession
|
|
162585
|
-
}
|
|
162586
|
-
)
|
|
162709
|
+
modes.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(ModeMenu, { modes, selected: selectedMode, onSelect: handleModeSelect })
|
|
162587
162710
|
] }),
|
|
162588
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
162589
|
-
PromptInputSubmit,
|
|
162590
|
-
{
|
|
162591
|
-
status,
|
|
162592
|
-
onStop: handleStop,
|
|
162593
|
-
queueCount: queuedMessages.length
|
|
162594
|
-
}
|
|
162595
|
-
)
|
|
162711
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(PromptInputSubmit, { status, onStop: handleStop })
|
|
162596
162712
|
] })
|
|
162597
162713
|
]
|
|
162598
162714
|
}
|
|
@@ -162622,7 +162738,7 @@ function ModeMenu({
|
|
|
162622
162738
|
"button",
|
|
162623
162739
|
{
|
|
162624
162740
|
type: "button",
|
|
162625
|
-
className: "inline-flex items-center gap-1 rounded-md px-
|
|
162741
|
+
className: "inline-flex items-center gap-1 rounded-md px-1.5 py-1 text-xs font-medium text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
|
|
162626
162742
|
children: [
|
|
162627
162743
|
/* @__PURE__ */ jsxRuntimeExports.jsx(ModeIcon, { modeId: current?.id ?? "", className: "size-3" }),
|
|
162628
162744
|
current?.name ?? "Mode"
|
|
@@ -162672,7 +162788,7 @@ function AgentModelMenu({
|
|
|
162672
162788
|
type: "button",
|
|
162673
162789
|
disabled,
|
|
162674
162790
|
className: cn$2(
|
|
162675
|
-
"inline-flex items-center gap-1 rounded-md px-
|
|
162791
|
+
"inline-flex items-center gap-1 rounded-md px-1.5 py-1 text-xs font-medium text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
|
|
162676
162792
|
disabled && "opacity-50 cursor-not-allowed"
|
|
162677
162793
|
),
|
|
162678
162794
|
children: [
|
|
@@ -162704,7 +162820,7 @@ function AgentModelMenu({
|
|
|
162704
162820
|
isCurrentAgent && model.id === selectedModel ? "bg-accent" : ""
|
|
162705
162821
|
),
|
|
162706
162822
|
children: [
|
|
162707
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
162823
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ModelLine, { model }),
|
|
162708
162824
|
model.description && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs text-muted-foreground", children: model.description })
|
|
162709
162825
|
]
|
|
162710
162826
|
},
|
|
@@ -162731,7 +162847,7 @@ function AgentModelMenu({
|
|
|
162731
162847
|
model.id === selectedModel ? "bg-accent" : ""
|
|
162732
162848
|
),
|
|
162733
162849
|
children: [
|
|
162734
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
162850
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ModelLine, { model }),
|
|
162735
162851
|
model.description && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs text-muted-foreground", children: model.description })
|
|
162736
162852
|
]
|
|
162737
162853
|
},
|
|
@@ -162751,6 +162867,181 @@ function relativeTime$2(ms) {
|
|
|
162751
162867
|
const months = Math.floor(days / 30);
|
|
162752
162868
|
return `${months}mo ago`;
|
|
162753
162869
|
}
|
|
162870
|
+
const MODEL_CONTEXT_WINDOWS = {
|
|
162871
|
+
// Claude — Opus 4.x ships a 200k default and a separate [1m] long-context
|
|
162872
|
+
// tier. Sonnet 4.6 is 1M GA at standard pricing (the [1m] suffix is a
|
|
162873
|
+
// legacy alias). Haiku 4.5 stays at 200k.
|
|
162874
|
+
"claude-opus-4-7[1m]": 1e6,
|
|
162875
|
+
"claude-opus-4-6[1m]": 1e6,
|
|
162876
|
+
"claude-opus-4-7": 2e5,
|
|
162877
|
+
"claude-opus-4-6": 2e5,
|
|
162878
|
+
"claude-sonnet-4-6[1m]": 1e6,
|
|
162879
|
+
"claude-sonnet-4-6": 1e6,
|
|
162880
|
+
"claude-haiku-4-5": 2e5,
|
|
162881
|
+
// OpenAI — GPT-5 family runs at 400k inside Codex CLI (the Responses API
|
|
162882
|
+
// tier is 1M but Band shells out to the codex binary which caps at 400k).
|
|
162883
|
+
"gpt-5": 4e5,
|
|
162884
|
+
"gpt-4.1": 1e6,
|
|
162885
|
+
"gpt-4o": 128e3,
|
|
162886
|
+
// Gemini 2.5 Pro and Flash are both 1M (~1,048,576).
|
|
162887
|
+
"gemini-2.5-pro": 1e6,
|
|
162888
|
+
"gemini-2.5-flash": 1e6
|
|
162889
|
+
};
|
|
162890
|
+
function getContextWindow(model) {
|
|
162891
|
+
if (!model) return 2e5;
|
|
162892
|
+
if (MODEL_CONTEXT_WINDOWS[model]) return MODEL_CONTEXT_WINDOWS[model];
|
|
162893
|
+
const entries2 = Object.entries(MODEL_CONTEXT_WINDOWS).sort(([a2], [b2]) => b2.length - a2.length);
|
|
162894
|
+
for (const [key2, value] of entries2) {
|
|
162895
|
+
if (model.startsWith(key2)) return value;
|
|
162896
|
+
}
|
|
162897
|
+
return 2e5;
|
|
162898
|
+
}
|
|
162899
|
+
function formatTokens(n2) {
|
|
162900
|
+
if (n2 >= 1e6) return `${(n2 / 1e6).toFixed(1)}M`;
|
|
162901
|
+
if (n2 >= 1e3) return `${(n2 / 1e3).toFixed(n2 >= 1e4 ? 0 : 1)}k`;
|
|
162902
|
+
return String(n2);
|
|
162903
|
+
}
|
|
162904
|
+
function formatCtxWindow(n2) {
|
|
162905
|
+
if (n2 >= 1e6) {
|
|
162906
|
+
const m2 = n2 / 1e6;
|
|
162907
|
+
return `${Number.isInteger(m2) ? m2.toFixed(0) : m2.toFixed(1)}M`;
|
|
162908
|
+
}
|
|
162909
|
+
if (n2 >= 1e3) return `${Math.round(n2 / 1e3)}k`;
|
|
162910
|
+
return String(n2);
|
|
162911
|
+
}
|
|
162912
|
+
function ModelLine({ model }) {
|
|
162913
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "flex w-full items-baseline justify-between gap-2", children: [
|
|
162914
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-sm font-medium", children: model.name }),
|
|
162915
|
+
model.contextWindow !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-[10px] uppercase tabular-nums text-muted-foreground", children: [
|
|
162916
|
+
formatCtxWindow(model.contextWindow),
|
|
162917
|
+
" ctx"
|
|
162918
|
+
] })
|
|
162919
|
+
] });
|
|
162920
|
+
}
|
|
162921
|
+
const DONUT_RADIUS = 9;
|
|
162922
|
+
const DONUT_CIRCUMFERENCE = 2 * Math.PI * DONUT_RADIUS;
|
|
162923
|
+
function ContextMeter({
|
|
162924
|
+
usage,
|
|
162925
|
+
model,
|
|
162926
|
+
modelInfo
|
|
162927
|
+
}) {
|
|
162928
|
+
const contextSize = usage ? usage.contextTokens ?? legacyContextSize(usage) : 0;
|
|
162929
|
+
const window2 = usage?.maxContextTokens ?? modelInfo?.contextWindow ?? getContextWindow(model);
|
|
162930
|
+
const pct = Math.min(100, contextSize / window2 * 100);
|
|
162931
|
+
const pctRounded = Math.round(pct);
|
|
162932
|
+
const danger = pct >= 85;
|
|
162933
|
+
const warn = !danger && pct >= 65;
|
|
162934
|
+
const progressColor = danger ? "stroke-foreground" : warn ? "stroke-muted-foreground" : "stroke-muted-foreground/60";
|
|
162935
|
+
const dashOffset = pct <= 0 ? DONUT_CIRCUMFERENCE : DONUT_CIRCUMFERENCE * (1 - pct / 100);
|
|
162936
|
+
const [open2, setOpen] = reactExports.useState(false);
|
|
162937
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(Popover, { open: open2, onOpenChange: setOpen, children: [
|
|
162938
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
162939
|
+
"button",
|
|
162940
|
+
{
|
|
162941
|
+
type: "button",
|
|
162942
|
+
"aria-label": `Context window: ${pctRounded}% of ${formatTokens(window2)}`,
|
|
162943
|
+
className: "inline-flex items-center justify-center rounded-md px-1.5 py-1 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
|
|
162944
|
+
onPointerEnter: (e2) => {
|
|
162945
|
+
if (e2.pointerType === "mouse") setOpen(true);
|
|
162946
|
+
},
|
|
162947
|
+
onPointerLeave: (e2) => {
|
|
162948
|
+
if (e2.pointerType === "mouse") setOpen(false);
|
|
162949
|
+
},
|
|
162950
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { viewBox: "0 0 24 24", className: "size-5 -rotate-90 shrink-0", "aria-hidden": "true", children: [
|
|
162951
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
162952
|
+
"circle",
|
|
162953
|
+
{
|
|
162954
|
+
cx: "12",
|
|
162955
|
+
cy: "12",
|
|
162956
|
+
r: DONUT_RADIUS,
|
|
162957
|
+
fill: "none",
|
|
162958
|
+
className: "stroke-muted-foreground/25",
|
|
162959
|
+
strokeWidth: "3"
|
|
162960
|
+
}
|
|
162961
|
+
),
|
|
162962
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
162963
|
+
"circle",
|
|
162964
|
+
{
|
|
162965
|
+
cx: "12",
|
|
162966
|
+
cy: "12",
|
|
162967
|
+
r: DONUT_RADIUS,
|
|
162968
|
+
fill: "none",
|
|
162969
|
+
className: cn$2("transition-all", progressColor),
|
|
162970
|
+
strokeWidth: "3",
|
|
162971
|
+
strokeLinecap: "round",
|
|
162972
|
+
strokeDasharray: DONUT_CIRCUMFERENCE,
|
|
162973
|
+
strokeDashoffset: dashOffset
|
|
162974
|
+
}
|
|
162975
|
+
)
|
|
162976
|
+
] })
|
|
162977
|
+
}
|
|
162978
|
+
) }),
|
|
162979
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
162980
|
+
PopoverContent,
|
|
162981
|
+
{
|
|
162982
|
+
onPointerEnter: (e2) => {
|
|
162983
|
+
if (e2.pointerType === "mouse") setOpen(true);
|
|
162984
|
+
},
|
|
162985
|
+
onPointerLeave: (e2) => {
|
|
162986
|
+
if (e2.pointerType === "mouse") setOpen(false);
|
|
162987
|
+
},
|
|
162988
|
+
className: "w-auto p-2",
|
|
162989
|
+
side: "top",
|
|
162990
|
+
align: "end",
|
|
162991
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-0.5 text-xs", children: usage ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
162992
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
162993
|
+
"Input: ",
|
|
162994
|
+
usage.inputTokens.toLocaleString()
|
|
162995
|
+
] }),
|
|
162996
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
162997
|
+
"Output: ",
|
|
162998
|
+
usage.outputTokens.toLocaleString()
|
|
162999
|
+
] }),
|
|
163000
|
+
usage.cacheReadTokens !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
163001
|
+
"Cache read: ",
|
|
163002
|
+
usage.cacheReadTokens.toLocaleString()
|
|
163003
|
+
] }),
|
|
163004
|
+
usage.cacheCreationTokens !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
163005
|
+
"Cache write: ",
|
|
163006
|
+
usage.cacheCreationTokens.toLocaleString()
|
|
163007
|
+
] }),
|
|
163008
|
+
usage.reasoningOutputTokens !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
163009
|
+
"Reasoning output: ",
|
|
163010
|
+
usage.reasoningOutputTokens.toLocaleString()
|
|
163011
|
+
] }),
|
|
163012
|
+
usage.totalProcessedTokens !== void 0 && usage.totalProcessedTokens > contextSize && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
163013
|
+
"Total processed: ",
|
|
163014
|
+
usage.totalProcessedTokens.toLocaleString()
|
|
163015
|
+
] }),
|
|
163016
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-1 border-t pt-1", children: [
|
|
163017
|
+
"Context: ",
|
|
163018
|
+
contextSize.toLocaleString(),
|
|
163019
|
+
" / ",
|
|
163020
|
+
window2.toLocaleString(),
|
|
163021
|
+
" (",
|
|
163022
|
+
pctRounded,
|
|
163023
|
+
"%)"
|
|
163024
|
+
] })
|
|
163025
|
+
] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
163026
|
+
"Context window: ",
|
|
163027
|
+
window2.toLocaleString(),
|
|
163028
|
+
" tokens"
|
|
163029
|
+
] }) })
|
|
163030
|
+
}
|
|
163031
|
+
)
|
|
163032
|
+
] });
|
|
163033
|
+
}
|
|
163034
|
+
function usageContextSize(usage) {
|
|
163035
|
+
if (!usage) return 0;
|
|
163036
|
+
return usage.contextTokens ?? legacyContextSize(usage);
|
|
163037
|
+
}
|
|
163038
|
+
function legacyContextSize(usage) {
|
|
163039
|
+
const isClaude = usage.provider === "claude" || usage.cacheCreationTokens !== void 0;
|
|
163040
|
+
if (isClaude) {
|
|
163041
|
+
return usage.inputTokens + (usage.cacheReadTokens ?? 0) + (usage.cacheCreationTokens ?? 0) + (usage.reasoningOutputTokens ?? 0);
|
|
163042
|
+
}
|
|
163043
|
+
return usage.inputTokens + (usage.reasoningOutputTokens ?? 0);
|
|
163044
|
+
}
|
|
162754
163045
|
function SessionHistoryMenu({
|
|
162755
163046
|
workspaceId,
|
|
162756
163047
|
chatId,
|
|
@@ -162772,8 +163063,8 @@ function SessionHistoryMenu({
|
|
|
162772
163063
|
"button",
|
|
162773
163064
|
{
|
|
162774
163065
|
type: "button",
|
|
162775
|
-
className: "inline-flex items-center justify-center rounded-md px-
|
|
162776
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { className: "size-
|
|
163066
|
+
className: "inline-flex items-center justify-center rounded-md px-1.5 py-1 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
|
|
163067
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { className: "size-4" })
|
|
162777
163068
|
}
|
|
162778
163069
|
) }) }),
|
|
162779
163070
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: "Session history" })
|
|
@@ -163259,6 +163550,7 @@ function DockviewChatContainer({
|
|
|
163259
163550
|
visible,
|
|
163260
163551
|
wsActive
|
|
163261
163552
|
}) {
|
|
163553
|
+
const adapter2 = useAdapter();
|
|
163262
163554
|
const queryClient2 = useQueryClient();
|
|
163263
163555
|
const apiRef = reactExports.useRef(null);
|
|
163264
163556
|
const isRestoringRef = reactExports.useRef(false);
|
|
@@ -163266,8 +163558,14 @@ function DockviewChatContainer({
|
|
|
163266
163558
|
const { data: initialData } = useQuery({
|
|
163267
163559
|
queryKey: chatLayoutKey(workspaceId),
|
|
163268
163560
|
queryFn: async () => {
|
|
163269
|
-
const { tree }
|
|
163270
|
-
|
|
163561
|
+
const [{ tree }, { chats }] = await Promise.all([
|
|
163562
|
+
trpc.chatLayout.get.query({ workspaceId }).catch(() => ({ tree: null })),
|
|
163563
|
+
trpc.chats.list.query({ workspaceId }).catch(() => ({ chats: [] }))
|
|
163564
|
+
]);
|
|
163565
|
+
return {
|
|
163566
|
+
layout: tree,
|
|
163567
|
+
chatIds: new Set(chats.map((c2) => c2.id))
|
|
163568
|
+
};
|
|
163271
163569
|
},
|
|
163272
163570
|
staleTime: Number.POSITIVE_INFINITY
|
|
163273
163571
|
// never auto-refetch — we manage persistence ourselves
|
|
@@ -163362,6 +163660,9 @@ function DockviewChatContainer({
|
|
|
163362
163660
|
if (panel) {
|
|
163363
163661
|
api.removePanel(panel);
|
|
163364
163662
|
}
|
|
163663
|
+
trpc.chats.remove.mutate({ chatId }).catch((err) => {
|
|
163664
|
+
console.error("[DockviewChatContainer] failed to remove chat:", err);
|
|
163665
|
+
});
|
|
163365
163666
|
}, []);
|
|
163366
163667
|
reactExports.useEffect(() => {
|
|
163367
163668
|
if (!visible) return;
|
|
@@ -163410,14 +163711,42 @@ function DockviewChatContainer({
|
|
|
163410
163711
|
window.addEventListener("keydown", handler, true);
|
|
163411
163712
|
return () => window.removeEventListener("keydown", handler, true);
|
|
163412
163713
|
}, [visible, closeTab, handleSplit, handleAddTab]);
|
|
163714
|
+
reactExports.useEffect(() => {
|
|
163715
|
+
return adapter2.subscribeStatusEvents((event) => {
|
|
163716
|
+
if (event.workspaceId !== workspaceId) return;
|
|
163717
|
+
const api = apiRef.current;
|
|
163718
|
+
if (!api) return;
|
|
163719
|
+
if (event.kind === "chat-created" && typeof event.chatId === "string") {
|
|
163720
|
+
if (api.getPanel(event.chatId)) return;
|
|
163721
|
+
api.addPanel({
|
|
163722
|
+
id: event.chatId,
|
|
163723
|
+
component: "chatTab",
|
|
163724
|
+
tabComponent: "chatTab",
|
|
163725
|
+
title: "Chat",
|
|
163726
|
+
params: { workspaceId, chatId: event.chatId }
|
|
163727
|
+
});
|
|
163728
|
+
} else if (event.kind === "chat-removed" && typeof event.chatId === "string") {
|
|
163729
|
+
const panel = api.getPanel(event.chatId);
|
|
163730
|
+
if (panel) {
|
|
163731
|
+
api.removePanel(panel);
|
|
163732
|
+
if (api.panels.length === 0) {
|
|
163733
|
+
createDefaultPanel(api, workspaceId);
|
|
163734
|
+
}
|
|
163735
|
+
}
|
|
163736
|
+
}
|
|
163737
|
+
});
|
|
163738
|
+
}, [adapter2, workspaceId]);
|
|
163413
163739
|
addTabRef.current = { onAdd: handleAddTab, onSplit: handleSplit };
|
|
163414
163740
|
closeTabRef.current = closeTab;
|
|
163415
163741
|
const initialLayoutRef = reactExports.useRef(null);
|
|
163416
163742
|
initialLayoutRef.current = initialData?.layout ?? null;
|
|
163743
|
+
const initialChatIdsRef = reactExports.useRef(null);
|
|
163744
|
+
initialChatIdsRef.current = initialData?.chatIds ?? null;
|
|
163417
163745
|
const onReady = reactExports.useCallback(
|
|
163418
163746
|
(event) => {
|
|
163419
163747
|
apiRef.current = event.api;
|
|
163420
163748
|
const savedLayout = initialLayoutRef.current;
|
|
163749
|
+
const knownChatIds = initialChatIdsRef.current;
|
|
163421
163750
|
if (savedLayout && isDockviewLayout(savedLayout)) {
|
|
163422
163751
|
isRestoringRef.current = true;
|
|
163423
163752
|
try {
|
|
@@ -163426,9 +163755,26 @@ function DockviewChatContainer({
|
|
|
163426
163755
|
console.error("[DockviewChatContainer] fromJSON failed, creating default:", err);
|
|
163427
163756
|
createDefaultPanel(event.api, workspaceId);
|
|
163428
163757
|
}
|
|
163758
|
+
let dropped = 0;
|
|
163759
|
+
if (knownChatIds) {
|
|
163760
|
+
const orphans = event.api.panels.filter((p3) => !knownChatIds.has(p3.id));
|
|
163761
|
+
for (const orphan of orphans) {
|
|
163762
|
+
event.api.removePanel(orphan);
|
|
163763
|
+
dropped++;
|
|
163764
|
+
}
|
|
163765
|
+
if (event.api.panels.length === 0) {
|
|
163766
|
+
createDefaultPanel(event.api, workspaceId);
|
|
163767
|
+
dropped++;
|
|
163768
|
+
}
|
|
163769
|
+
}
|
|
163429
163770
|
setTimeout(() => {
|
|
163430
163771
|
isRestoringRef.current = false;
|
|
163431
163772
|
}, 0);
|
|
163773
|
+
if (dropped > 0) {
|
|
163774
|
+
persistToServer(workspaceId, event.api.toJSON(), {
|
|
163775
|
+
queryClient: queryClientRef.current
|
|
163776
|
+
});
|
|
163777
|
+
}
|
|
163432
163778
|
} else {
|
|
163433
163779
|
createDefaultPanel(event.api, workspaceId);
|
|
163434
163780
|
persistToServer(workspaceId, event.api.toJSON(), { queryClient: queryClientRef.current });
|
|
@@ -163494,7 +163840,7 @@ const PANEL_SHORTCUTS = {
|
|
|
163494
163840
|
browser: "⌘B"
|
|
163495
163841
|
};
|
|
163496
163842
|
const DockviewTerminalContainer = reactExports.lazy(
|
|
163497
|
-
() => import("./DockviewTerminalContainer-
|
|
163843
|
+
() => import("./DockviewTerminalContainer-BJRCcV8V.js").then((m2) => ({
|
|
163498
163844
|
default: m2.DockviewTerminalContainer
|
|
163499
163845
|
}))
|
|
163500
163846
|
);
|
|
@@ -167455,11 +167801,11 @@ function RootLayout() {
|
|
|
167455
167801
|
] })
|
|
167456
167802
|
] });
|
|
167457
167803
|
}
|
|
167458
|
-
const $$splitComponentImporter$7 = () => import("./index-
|
|
167804
|
+
const $$splitComponentImporter$7 = () => import("./index-GifGhqSy.js");
|
|
167459
167805
|
const Route$7 = createFileRoute("/")({
|
|
167460
167806
|
component: lazyRouteComponent($$splitComponentImporter$7, "component")
|
|
167461
167807
|
});
|
|
167462
|
-
const $$splitComponentImporter$6 = () => import("./workspace._workspaceId-
|
|
167808
|
+
const $$splitComponentImporter$6 = () => import("./workspace._workspaceId-BKa2ZK9u.js");
|
|
167463
167809
|
const Route$6 = createFileRoute("/workspace/$workspaceId")({
|
|
167464
167810
|
component: lazyRouteComponent($$splitComponentImporter$6, "component")
|
|
167465
167811
|
});
|
|
@@ -167478,11 +167824,11 @@ const FindInFileContext = reactExports.createContext({
|
|
|
167478
167824
|
function useFindInFileContext() {
|
|
167479
167825
|
return reactExports.useContext(FindInFileContext);
|
|
167480
167826
|
}
|
|
167481
|
-
const $$splitComponentImporter$5 = () => import("./workspace._workspaceId.index-
|
|
167827
|
+
const $$splitComponentImporter$5 = () => import("./workspace._workspaceId.index-ac3z18YW.js");
|
|
167482
167828
|
const Route$5 = createFileRoute("/workspace/$workspaceId/")({
|
|
167483
167829
|
component: lazyRouteComponent($$splitComponentImporter$5, "component")
|
|
167484
167830
|
});
|
|
167485
|
-
const $$splitComponentImporter$4 = () => import("./workspace._workspaceId.terminal-
|
|
167831
|
+
const $$splitComponentImporter$4 = () => import("./workspace._workspaceId.terminal-CvQaDekl.js");
|
|
167486
167832
|
const Route$4 = createFileRoute("/workspace/$workspaceId/terminal")({
|
|
167487
167833
|
component: lazyRouteComponent($$splitComponentImporter$4, "component")
|
|
167488
167834
|
});
|
|
@@ -167490,15 +167836,15 @@ const $$splitComponentImporter$3 = () => import("./workspace._workspaceId.code-C
|
|
|
167490
167836
|
const Route$3 = createFileRoute("/workspace/$workspaceId/code")({
|
|
167491
167837
|
component: lazyRouteComponent($$splitComponentImporter$3, "component")
|
|
167492
167838
|
});
|
|
167493
|
-
const $$splitComponentImporter$2 = () => import("./workspace._workspaceId.changes-
|
|
167839
|
+
const $$splitComponentImporter$2 = () => import("./workspace._workspaceId.changes-B8i8BeUK.js");
|
|
167494
167840
|
const Route$2 = createFileRoute("/workspace/$workspaceId/changes")({
|
|
167495
167841
|
component: lazyRouteComponent($$splitComponentImporter$2, "component")
|
|
167496
167842
|
});
|
|
167497
|
-
const $$splitComponentImporter$1 = () => import("./workspace._workspaceId.code.index-
|
|
167843
|
+
const $$splitComponentImporter$1 = () => import("./workspace._workspaceId.code.index-BTqIEfGL.js");
|
|
167498
167844
|
const Route$1 = createFileRoute("/workspace/$workspaceId/code/")({
|
|
167499
167845
|
component: lazyRouteComponent($$splitComponentImporter$1, "component")
|
|
167500
167846
|
});
|
|
167501
|
-
const $$splitComponentImporter = () => import("./workspace._workspaceId.code._-
|
|
167847
|
+
const $$splitComponentImporter = () => import("./workspace._workspaceId.code._-4IwwK8EO.js");
|
|
167502
167848
|
const Route2 = createFileRoute("/workspace/$workspaceId/code/$")({
|
|
167503
167849
|
component: lazyRouteComponent($$splitComponentImporter, "component")
|
|
167504
167850
|
});
|