@band-app/server 0.20.0 → 0.20.2

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.
Files changed (161) hide show
  1. package/dist/client/assets/DockviewBrowserContainer-DuxWaqHN.js +5 -0
  2. package/dist/client/assets/{DockviewTerminalContainer-CqH5m62N.js → DockviewTerminalContainer-BXoPda0X.js} +2 -2
  3. package/dist/client/assets/TerminalPanel-CulmEPyX.js +5 -0
  4. package/dist/client/assets/{_basePickBy-CosPBGEe.js → _basePickBy-K7I344em.js} +1 -1
  5. package/dist/client/assets/{_baseUniq-CNCpSB0P.js → _baseUniq-840KfAAa.js} +1 -1
  6. package/dist/client/assets/{arc-UDGCZidA.js → arc-CyZzBxl3.js} +1 -1
  7. package/dist/client/assets/{architectureDiagram-VXUJARFQ-CeS1u1s5.js → architectureDiagram-VXUJARFQ-CmR2ldp9.js} +1 -1
  8. package/dist/client/assets/{blockDiagram-VD42YOAC-DNtrsJ3_.js → blockDiagram-VD42YOAC-DrrwS0qA.js} +1 -1
  9. package/dist/client/assets/{c4Diagram-YG6GDRKO-L-AKg5Ca.js → c4Diagram-YG6GDRKO-DaK5OX1L.js} +1 -1
  10. package/dist/client/assets/channel-Dr0vMA-3.js +1 -0
  11. package/dist/client/assets/{chunk-4BX2VUAB-6WG78h6_.js → chunk-4BX2VUAB-CsnsxsVp.js} +1 -1
  12. package/dist/client/assets/{chunk-55IACEB6-CivChWg7.js → chunk-55IACEB6-BwSrHj7M.js} +1 -1
  13. package/dist/client/assets/{chunk-B4BG7PRW-BKLAk8Ng.js → chunk-B4BG7PRW-BufiBtiI.js} +1 -1
  14. package/dist/client/assets/{chunk-DI55MBZ5-B_cDZCba.js → chunk-DI55MBZ5-Yk6m5bd6.js} +1 -1
  15. package/dist/client/assets/{chunk-FMBD7UC4-CZgE72J_.js → chunk-FMBD7UC4-DjItmPEo.js} +1 -1
  16. package/dist/client/assets/{chunk-QN33PNHL-1qh6IGru.js → chunk-QN33PNHL-B7fPTsQD.js} +1 -1
  17. package/dist/client/assets/{chunk-QZHKN3VN-Cl_2nn9E.js → chunk-QZHKN3VN-TVQc71ZW.js} +1 -1
  18. package/dist/client/assets/{chunk-TZMSLE5B-DpxKjqWA.js → chunk-TZMSLE5B-2idj0WVp.js} +1 -1
  19. package/dist/client/assets/classDiagram-2ON5EDUG-DazWWFRK.js +1 -0
  20. package/dist/client/assets/classDiagram-v2-WZHVMYZB-DazWWFRK.js +1 -0
  21. package/dist/client/assets/clone-DLEN27Sv.js +1 -0
  22. package/dist/client/assets/{cose-bilkent-S5V4N54A-DCzND3wc.js → cose-bilkent-S5V4N54A-BhM4dIed.js} +1 -1
  23. package/dist/client/assets/{dagre-6UL2VRFP-phsFBB-e.js → dagre-6UL2VRFP-BW7B-2Wf.js} +1 -1
  24. package/dist/client/assets/{diagram-PSM6KHXK-C3SOO9R0.js → diagram-PSM6KHXK-D_bAy1sr.js} +1 -1
  25. package/dist/client/assets/{diagram-QEK2KX5R-CAFBJ4hH.js → diagram-QEK2KX5R-D8JQR6S5.js} +1 -1
  26. package/dist/client/assets/{diagram-S2PKOQOG-Bpydud7g.js → diagram-S2PKOQOG-CfcIDV7e.js} +1 -1
  27. package/dist/client/assets/{erDiagram-Q2GNP2WA-Co4WhzwN.js → erDiagram-Q2GNP2WA-CH496Ckq.js} +1 -1
  28. package/dist/client/assets/{flowDiagram-NV44I4VS-BZA58aUI.js → flowDiagram-NV44I4VS-DnG8llmE.js} +1 -1
  29. package/dist/client/assets/{ganttDiagram-JELNMOA3--4j85sTO.js → ganttDiagram-JELNMOA3--itEi_t7.js} +1 -1
  30. package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-6AH31Cb1.js → gitGraphDiagram-V2S2FVAM-TMvOD2Hw.js} +1 -1
  31. package/dist/client/assets/{graph-7CJlwe2i.js → graph-c_E6O25w.js} +1 -1
  32. package/dist/client/assets/{highlighted-body-B3W2YXNL-D5Kact6h.js → highlighted-body-B3W2YXNL-BQQGrbuP.js} +1 -1
  33. package/dist/client/assets/{index-Cp85A8y4.js → index-A07Yw0tn.js} +1 -1
  34. package/dist/client/assets/{index-C4gIKOr_.js → index-B5eB60aU.js} +1 -1
  35. package/dist/client/assets/{index-DCu6TAMf.js → index-B7YwKzXu.js} +1 -1
  36. package/dist/client/assets/{index-pr8WXb_L.js → index-BDr61s69.js} +1 -1
  37. package/dist/client/assets/{index-CralkALm.js → index-By0qQdHl.js} +1 -1
  38. package/dist/client/assets/{index-BwJYeeov.js → index-CKuNUVLa.js} +1 -1
  39. package/dist/client/assets/{index-CoRbY65h.js → index-CPgwx8nF.js} +1 -1
  40. package/dist/client/assets/{index-DnzvlwNY.js → index-CZ26DWy1.js} +1 -1
  41. package/dist/client/assets/{index-B2DcQ-ug.js → index-C_O1BBs4.js} +1 -1
  42. package/dist/client/assets/{index--MhpXyw4.js → index-Cu2JEhny.js} +1 -1
  43. package/dist/client/assets/{index-B4wpLa0T.js → index-D8IXa_66.js} +1 -1
  44. package/dist/client/assets/{index-D_D2pxKM.js → index-DOS5ytTy.js} +1 -1
  45. package/dist/client/assets/{index-Dn_GfMwq.js → index-DWRgJu21.js} +1 -1
  46. package/dist/client/assets/{index-DMMKTe60.js → index-DfuA-PNG.js} +1 -1
  47. package/dist/client/assets/{index-Djl4xLSO.js → index-Ds5Q3ErL.js} +1 -1
  48. package/dist/client/assets/{index-B5R7cbs8.js → index-iGcckmiU.js} +1 -1
  49. package/dist/client/assets/{index-DgEnNhJH.js → index-m8_Ch1aa.js} +1 -1
  50. package/dist/client/assets/{index-Cv7YFrOV.js → index-vbYm59ME.js} +1 -1
  51. package/dist/client/assets/{infoDiagram-HS3SLOUP-CeA337Zm.js → infoDiagram-HS3SLOUP--m1No2DR.js} +1 -1
  52. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-ujbs0LMd.js → journeyDiagram-XKPGCS4Q-BDutHWrQ.js} +1 -1
  53. package/dist/client/assets/{kanban-definition-3W4ZIXB7-ffQDH_Ro.js → kanban-definition-3W4ZIXB7-C7PkU-98.js} +1 -1
  54. package/dist/client/assets/{layout-Bp2mKXuW.js → layout-TzPz9qDe.js} +1 -1
  55. package/dist/client/assets/main-BgcIGjy5.css +1 -0
  56. package/dist/client/assets/{main-axhmccT5.js → main-Dg3qcN-n.js} +220 -220
  57. package/dist/client/assets/{mindmap-definition-VGOIOE7T-ADZcbwuf.js → mindmap-definition-VGOIOE7T-CSiVydvY.js} +1 -1
  58. package/dist/client/assets/{pieDiagram-ADFJNKIX-BdG4-xDd.js → pieDiagram-ADFJNKIX-Dc6SkC1V.js} +1 -1
  59. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-DUtM9sRB.js → quadrantDiagram-AYHSOK5B-BhNEAthj.js} +1 -1
  60. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-Bb0HlfNx.js → requirementDiagram-UZGBJVZJ-C1P5R6lO.js} +1 -1
  61. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-DVCE_8pf.js → sankeyDiagram-TZEHDZUN-Bk4NapW-.js} +1 -1
  62. package/dist/client/assets/{sequenceDiagram-WL72ISMW-CKQaWU-Q.js → sequenceDiagram-WL72ISMW-CZkAOyvQ.js} +1 -1
  63. package/dist/client/assets/{square-terminal-BiJr_LVr.js → square-terminal-GppBzFTB.js} +1 -1
  64. package/dist/client/assets/{stateDiagram-FKZM4ZOC-D0QXwVbV.js → stateDiagram-FKZM4ZOC-BHVMEify.js} +1 -1
  65. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-DvHwGtBf.js +1 -0
  66. package/dist/client/assets/{timeline-definition-IT6M3QCI-CUDKk5ha.js → timeline-definition-IT6M3QCI-BddSUTvN.js} +1 -1
  67. package/dist/client/assets/{treemap-GDKQZRPO-yUFqXQpQ.js → treemap-GDKQZRPO-C1EZTZwZ.js} +1 -1
  68. package/dist/client/assets/{workspace._workspaceId-DorcrnsD.js → workspace._workspaceId-BWohejgu.js} +2 -2
  69. package/dist/client/assets/{workspace._workspaceId-Bz0CuqC_.js → workspace._workspaceId-DlSNI5Oq.js} +1 -1
  70. package/dist/client/assets/{xychartDiagram-PRI3JC2R-Dju2LIYt.js → xychartDiagram-PRI3JC2R-DpUCBrE-.js} +1 -1
  71. package/dist/openapi.json +76 -0
  72. package/dist/server/assets/{DockviewBrowserContainer-DaEHL7rU.js → DockviewBrowserContainer-DLO8DHQ8.js} +29 -34
  73. package/dist/server/assets/{DockviewTerminalContainer-QeRuw498.js → DockviewTerminalContainer-CyrT6RMc.js} +3 -3
  74. package/dist/server/assets/{TerminalPanel-CIQVz_Z4.js → TerminalPanel-EgMwvOQl.js} +1 -49
  75. package/dist/server/assets/{_basePickBy-Bgz-DXU9.js → _basePickBy-DffNdyLl.js} +2 -2
  76. package/dist/server/assets/{_baseUniq-CevNURdU.js → _baseUniq-Bfpn2XXj.js} +1 -1
  77. package/dist/server/assets/_tanstack-start-manifest_v-Bz2MwyQC.js +4 -0
  78. package/dist/server/assets/{arc-jD7cuYE0.js → arc-D-2lE2nY.js} +1 -1
  79. package/dist/server/assets/{architecture-7HQA4BMR-CH32HJV2.js → architecture-7HQA4BMR-Dl_dn3FS.js} +6 -6
  80. package/dist/server/assets/{architectureDiagram-VXUJARFQ-DisnJPPo.js → architectureDiagram-VXUJARFQ-CUeN4CLM.js} +6 -6
  81. package/dist/server/assets/{blockDiagram-VD42YOAC-Djjy-jiv.js → blockDiagram-VD42YOAC-CoHm7pVm.js} +6 -6
  82. package/dist/server/assets/{c4Diagram-YG6GDRKO-B12Oi-HH.js → c4Diagram-YG6GDRKO-ixN9bfNO.js} +2 -2
  83. package/dist/server/assets/{channel-DFaIo-PG.js → channel-C2x8ka5l.js} +1 -1
  84. package/dist/server/assets/{chunk-4BX2VUAB-DHfsBptR.js → chunk-4BX2VUAB-ty5ENgn-.js} +1 -1
  85. package/dist/server/assets/{chunk-55IACEB6-jIjVbMix.js → chunk-55IACEB6-CdhYl0WD.js} +1 -1
  86. package/dist/server/assets/{chunk-B4BG7PRW-CZ4z-SYy.js → chunk-B4BG7PRW-BskXevag.js} +4 -4
  87. package/dist/server/assets/{chunk-DI55MBZ5-BAZeiYrT.js → chunk-DI55MBZ5-BjfW2WAW.js} +3 -3
  88. package/dist/server/assets/{chunk-FMBD7UC4-CPlukapU.js → chunk-FMBD7UC4-Cuj-_YqX.js} +1 -1
  89. package/dist/server/assets/{chunk-QN33PNHL-BBEzEMyZ.js → chunk-QN33PNHL-N-a0mOYh.js} +1 -1
  90. package/dist/server/assets/{chunk-QZHKN3VN-BbJAuOLh.js → chunk-QZHKN3VN-G3i4r4Cx.js} +1 -1
  91. package/dist/server/assets/{chunk-TZMSLE5B-DXQ0720e.js → chunk-TZMSLE5B-B3g6EfmG.js} +1 -1
  92. package/dist/server/assets/{classDiagram-v2-WZHVMYZB-Dd_NiCJt.js → classDiagram-2ON5EDUG-BHvCGARt.js} +5 -5
  93. package/dist/server/assets/{classDiagram-2ON5EDUG-Dd_NiCJt.js → classDiagram-v2-WZHVMYZB-BHvCGARt.js} +5 -5
  94. package/dist/server/assets/{clone-D2G5HtzD.js → clone-Dvf-f1rO.js} +1 -1
  95. package/dist/server/assets/{cose-bilkent-S5V4N54A-D9MbA73U.js → cose-bilkent-S5V4N54A-DQur-dSk.js} +1 -1
  96. package/dist/server/assets/{dagre-6UL2VRFP-3X8TKKNF.js → dagre-6UL2VRFP-BqY_BEAB.js} +6 -6
  97. package/dist/server/assets/{diagram-PSM6KHXK-BifH8r_E.js → diagram-PSM6KHXK-Ci3qYhO1.js} +7 -7
  98. package/dist/server/assets/{diagram-QEK2KX5R-CpM2yo3A.js → diagram-QEK2KX5R-Cetw62MH.js} +6 -6
  99. package/dist/server/assets/{diagram-S2PKOQOG-Dem9oHxL.js → diagram-S2PKOQOG-C9ZAbCH3.js} +6 -6
  100. package/dist/server/assets/{erDiagram-Q2GNP2WA-Cv2t_qcc.js → erDiagram-Q2GNP2WA-CXWd7XfZ.js} +4 -4
  101. package/dist/server/assets/{flowDiagram-NV44I4VS-DO9viNx6.js → flowDiagram-NV44I4VS-BYT0MDKu.js} +5 -5
  102. package/dist/server/assets/{ganttDiagram-JELNMOA3-BQLkwHvs.js → ganttDiagram-JELNMOA3-DRqUEh77.js} +1 -1
  103. package/dist/server/assets/{gitGraph-G5XIXVHT-Rf89GAs0.js → gitGraph-G5XIXVHT-BCxnYqav.js} +6 -6
  104. package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-Cn1yq3PZ.js → gitGraphDiagram-V2S2FVAM-iXeYaqRc.js} +7 -7
  105. package/dist/server/assets/{graph-DdtTxequ.js → graph-CsW8oeuR.js} +2 -2
  106. package/dist/server/assets/{highlighted-body-B3W2YXNL-DGIqRI0V.js → highlighted-body-B3W2YXNL-DFADuqgv.js} +1 -1
  107. package/dist/server/assets/{index-rDKMQzl_.js → index-24i7qhhh.js} +1 -1
  108. package/dist/server/assets/{index-eS7k7NKN.js → index-4I0NKW9A.js} +2 -2
  109. package/dist/server/assets/{index-CSvLh_Yz.js → index-BFTJZ14_.js} +2 -2
  110. package/dist/server/assets/{index-_XlsLUmp.js → index-BGD-OYit.js} +2 -2
  111. package/dist/server/assets/{index-COXowzgf.js → index-BY32AoKU.js} +4 -4
  112. package/dist/server/assets/{index-CVQ-l3zd.js → index-Bk2rEXd9.js} +2 -2
  113. package/dist/server/assets/{index-iwREUWd1.js → index-C5QUMB__.js} +2 -2
  114. package/dist/server/assets/{index-CEu724dC.js → index-CW8ZK5DO.js} +2 -2
  115. package/dist/server/assets/{index-DF0W4io9.js → index-CaI_IFFh.js} +3 -3
  116. package/dist/server/assets/{index-IABw8d2w.js → index-CqA-krzP.js} +2 -2
  117. package/dist/server/assets/{index-D0gkB7DS.js → index-CsRze8_V.js} +1 -1
  118. package/dist/server/assets/{index-B7HiLzkZ.js → index-Dh-QOcLi.js} +3 -3
  119. package/dist/server/assets/{index-Bd47fsM9.js → index-DlE6TTwo.js} +5 -5
  120. package/dist/server/assets/{index-dA-FNez1.js → index-IuIWAovp.js} +5 -5
  121. package/dist/server/assets/{index-CZSZYqEH.js → index-O9RnegqI.js} +2 -2
  122. package/dist/server/assets/{index-C7aw98b-.js → index-RNkDnge6.js} +2 -2
  123. package/dist/server/assets/{index-DKFYHMSW.js → index-Xzkl582b.js} +2 -2
  124. package/dist/server/assets/{index-CN-GsVYc.js → index-u8w_jl1U.js} +2 -2
  125. package/dist/server/assets/{info-VBDWY6EO-DVBWXH0S.js → info-VBDWY6EO-CE3Djkbi.js} +6 -6
  126. package/dist/server/assets/{infoDiagram-HS3SLOUP-Dn-PUlKq.js → infoDiagram-HS3SLOUP-CcvjlamO.js} +5 -5
  127. package/dist/server/assets/{journeyDiagram-XKPGCS4Q-C1eLAzL9.js → journeyDiagram-XKPGCS4Q-D1o9zBGm.js} +4 -4
  128. package/dist/server/assets/{kanban-definition-3W4ZIXB7-DFHxxNcb.js → kanban-definition-3W4ZIXB7-CbYt-CCT.js} +2 -2
  129. package/dist/server/assets/{layout-BEatsupl.js → layout-hg_ZN_X1.js} +4 -4
  130. package/dist/server/assets/{mermaid-3ZIDBTTL-8mt5O2g5.js → mermaid-3ZIDBTTL-B1numrTC.js} +1 -1
  131. package/dist/server/assets/{mermaid-parser.core-BLOfHo-D.js → mermaid-parser.core-BjIxT260.js} +11 -11
  132. package/dist/server/assets/{mindmap-definition-VGOIOE7T-B5_qScJU.js → mindmap-definition-VGOIOE7T-s5IHcHtD.js} +3 -3
  133. package/dist/server/assets/{packet-DYOGHKS2-DYeTXPnX.js → packet-DYOGHKS2-CghPtnD0.js} +6 -6
  134. package/dist/server/assets/{pie-VRWISCQL-BlyZBKB0.js → pie-VRWISCQL-4ycWjPDl.js} +6 -6
  135. package/dist/server/assets/{pieDiagram-ADFJNKIX-CwWqz5Xf.js → pieDiagram-ADFJNKIX-Xc0hpyln.js} +7 -7
  136. package/dist/server/assets/{quadrantDiagram-AYHSOK5B-BZ8A8mON.js → quadrantDiagram-AYHSOK5B-CTCsgLnq.js} +1 -1
  137. package/dist/server/assets/{radar-ZZBFDIW7-B60czbOE.js → radar-ZZBFDIW7-CnRv1HeP.js} +6 -6
  138. package/dist/server/assets/{requirementDiagram-UZGBJVZJ-Cctcn3D4.js → requirementDiagram-UZGBJVZJ-6L85o8SZ.js} +3 -3
  139. package/dist/server/assets/{router-V4X9DgJt.js → router-DbWGQ17k.js} +486 -260
  140. package/dist/server/assets/{sankeyDiagram-TZEHDZUN-Bvyi-a8d.js → sankeyDiagram-TZEHDZUN-Dtxaeifp.js} +1 -1
  141. package/dist/server/assets/{sequenceDiagram-WL72ISMW-C83rLE-r.js → sequenceDiagram-WL72ISMW-37UL27_4.js} +3 -3
  142. package/dist/server/assets/{square-terminal-Dcy5Z6a4.js → square-terminal-D4RjbVtI.js} +1 -1
  143. package/dist/server/assets/{stateDiagram-FKZM4ZOC-lfXNq0DS.js → stateDiagram-FKZM4ZOC-Bs7b06Ra.js} +8 -8
  144. package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-BkZqIjkI.js → stateDiagram-v2-4FDKWEC3-DUdtQcpy.js} +4 -4
  145. package/dist/server/assets/{timeline-definition-IT6M3QCI-CejT7_79.js → timeline-definition-IT6M3QCI-C2u2MfVa.js} +2 -2
  146. package/dist/server/assets/{treemap-GDKQZRPO-Dvu1YI6l.js → treemap-GDKQZRPO-CF8Y_9gD.js} +6 -6
  147. package/dist/server/assets/{workspace._workspaceId-BpnCyMIU.js → workspace._workspaceId-C9ajqro8.js} +3 -3
  148. package/dist/server/assets/{workspace._workspaceId-D20Q15rI.js → workspace._workspaceId-DbDNrvi3.js} +1 -1
  149. package/dist/server/assets/{xychartDiagram-PRI3JC2R-DmHHkA_A.js → xychartDiagram-PRI3JC2R-C1IkvLoX.js} +1 -1
  150. package/dist/server/server.js +2 -2
  151. package/dist/start-server.mjs +333 -59
  152. package/package.json +4 -4
  153. package/dist/client/assets/DockviewBrowserContainer-CE6D36cE.js +0 -5
  154. package/dist/client/assets/TerminalPanel-BCLbEfyo.js +0 -5
  155. package/dist/client/assets/channel-vYE3Ojmg.js +0 -1
  156. package/dist/client/assets/classDiagram-2ON5EDUG-xnvZA_6X.js +0 -1
  157. package/dist/client/assets/classDiagram-v2-WZHVMYZB-xnvZA_6X.js +0 -1
  158. package/dist/client/assets/clone-DsvuocD4.js +0 -1
  159. package/dist/client/assets/main-BzKe6bG7.css +0 -1
  160. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-C3iyPGuZ.js +0 -1
  161. package/dist/server/assets/_tanstack-start-manifest_v-9Dn7fTyV.js +0 -4
@@ -40668,53 +40668,53 @@ async function loadLanguage(lang) {
40668
40668
  try {
40669
40669
  switch (lang) {
40670
40670
  case "javascript":
40671
- return import("./index-CZSZYqEH.js").then((m2) => m2.javascript());
40671
+ return import("./index-O9RnegqI.js").then((m2) => m2.javascript());
40672
40672
  case "jsx":
40673
- return import("./index-CZSZYqEH.js").then((m2) => m2.javascript({ jsx: true }));
40673
+ return import("./index-O9RnegqI.js").then((m2) => m2.javascript({ jsx: true }));
40674
40674
  case "typescript":
40675
- return import("./index-CZSZYqEH.js").then(
40675
+ return import("./index-O9RnegqI.js").then(
40676
40676
  (m2) => m2.javascript({ typescript: true })
40677
40677
  );
40678
40678
  case "tsx":
40679
- return import("./index-CZSZYqEH.js").then(
40679
+ return import("./index-O9RnegqI.js").then(
40680
40680
  (m2) => m2.javascript({ jsx: true, typescript: true })
40681
40681
  );
40682
40682
  case "python":
40683
- return import("./index-CN-GsVYc.js").then((m2) => m2.python());
40683
+ return import("./index-u8w_jl1U.js").then((m2) => m2.python());
40684
40684
  case "html":
40685
- return import("./index-COXowzgf.js").then((m2) => m2.html());
40685
+ return import("./index-BY32AoKU.js").then((m2) => m2.html());
40686
40686
  case "css":
40687
- return import("./index-IABw8d2w.js").then((m2) => m2.css());
40687
+ return import("./index-CqA-krzP.js").then((m2) => m2.css());
40688
40688
  case "scss":
40689
40689
  case "sass":
40690
- return import("./index-DF0W4io9.js").then((m2) => m2.sass());
40690
+ return import("./index-CaI_IFFh.js").then((m2) => m2.sass());
40691
40691
  case "less":
40692
- return import("./index-B7HiLzkZ.js").then((m2) => m2.less());
40692
+ return import("./index-Dh-QOcLi.js").then((m2) => m2.less());
40693
40693
  case "json":
40694
40694
  case "jsonc":
40695
- return import("./index-_XlsLUmp.js").then((m2) => m2.json());
40695
+ return import("./index-BGD-OYit.js").then((m2) => m2.json());
40696
40696
  case "markdown":
40697
40697
  case "mdx":
40698
- return import("./index-Bd47fsM9.js").then((m2) => m2.markdown());
40698
+ return import("./index-DlE6TTwo.js").then((m2) => m2.markdown());
40699
40699
  case "xml":
40700
- return import("./index-iwREUWd1.js").then((m2) => m2.xml());
40700
+ return import("./index-C5QUMB__.js").then((m2) => m2.xml());
40701
40701
  case "yaml":
40702
- return import("./index-C7aw98b-.js").then((m2) => m2.yaml());
40702
+ return import("./index-RNkDnge6.js").then((m2) => m2.yaml());
40703
40703
  case "sql":
40704
- return import("./index-DKFYHMSW.js").then((m2) => m2.sql());
40704
+ return import("./index-Xzkl582b.js").then((m2) => m2.sql());
40705
40705
  case "rust":
40706
- return import("./index-CEu724dC.js").then((m2) => m2.rust());
40706
+ return import("./index-CW8ZK5DO.js").then((m2) => m2.rust());
40707
40707
  case "go":
40708
- return import("./index-CSvLh_Yz.js").then((m2) => m2.go());
40708
+ return import("./index-BFTJZ14_.js").then((m2) => m2.go());
40709
40709
  case "java":
40710
- return import("./index-CVQ-l3zd.js").then((m2) => m2.java());
40710
+ return import("./index-Bk2rEXd9.js").then((m2) => m2.java());
40711
40711
  case "kotlin":
40712
- return import("./index-CVQ-l3zd.js").then((m2) => m2.java());
40712
+ return import("./index-Bk2rEXd9.js").then((m2) => m2.java());
40713
40713
  case "c":
40714
40714
  case "cpp":
40715
- return import("./index-eS7k7NKN.js").then((m2) => m2.cpp());
40715
+ return import("./index-4I0NKW9A.js").then((m2) => m2.cpp());
40716
40716
  case "php":
40717
- return import("./index-dA-FNez1.js").then((m2) => m2.php());
40717
+ return import("./index-IuIWAovp.js").then((m2) => m2.php());
40718
40718
  // Legacy modes via StreamLanguage
40719
40719
  case "bash":
40720
40720
  case "fish":
@@ -46641,17 +46641,32 @@ function DeleteWorkspaceDialog({
46641
46641
  ] })
46642
46642
  ] }) });
46643
46643
  }
46644
+ function slugifyBranchName(input) {
46645
+ return input.toLowerCase().replace(/\s+/g, "-").replace(/[^a-z0-9\-/]/g, "").replace(/-{2,}/g, "-").replace(/\/+/g, "/").replace(/^[-/]+|[-/]+$/g, "");
46646
+ }
46644
46647
  function NewWorkspaceDialog({ projectName, open: open2, onOpenChange }) {
46645
46648
  const [branch, setBranch] = reactExports.useState("");
46646
46649
  const [base2, setBase] = reactExports.useState("");
46647
46650
  const [prompt, setPrompt] = reactExports.useState("");
46648
46651
  const createWorkspaceMutation = useCreateWorkspace();
46652
+ const { projects } = useProjects();
46653
+ const slug = slugifyBranchName(branch);
46654
+ const slugError = (() => {
46655
+ if (branch && !slug) return "Branch name contains no valid characters.";
46656
+ if (slug) {
46657
+ const project = projects.find((p2) => p2.name === projectName);
46658
+ if (project?.worktrees.some((wt2) => wt2.branch === slug)) {
46659
+ return `A workspace named "${slug}" already exists.`;
46660
+ }
46661
+ }
46662
+ return null;
46663
+ })();
46649
46664
  const handleSubmit = async (e3) => {
46650
46665
  e3.preventDefault();
46651
- if (!branch.trim()) return;
46666
+ if (!slug || slugError) return;
46652
46667
  await createWorkspaceMutation.mutateAsync({
46653
46668
  project: projectName,
46654
- branch: branch.trim(),
46669
+ branch: slug,
46655
46670
  base: base2.trim() || void 0,
46656
46671
  prompt: prompt.trim() || void 0
46657
46672
  });
@@ -46684,6 +46699,11 @@ function NewWorkspaceDialog({ projectName, open: open2, onOpenChange }) {
46684
46699
  autoFocus: true
46685
46700
  }
46686
46701
  ),
46702
+ branch && slug !== branch && !slugError && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-xs text-muted-foreground", children: [
46703
+ "Will be created as: ",
46704
+ /* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: slug })
46705
+ ] }),
46706
+ slugError && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-destructive", children: slugError }),
46687
46707
  /* @__PURE__ */ jsxRuntimeExports.jsx(Label$1, { htmlFor: "base-branch", children: "Base branch (optional)" }),
46688
46708
  /* @__PURE__ */ jsxRuntimeExports.jsx(
46689
46709
  Input,
@@ -46711,7 +46731,14 @@ function NewWorkspaceDialog({ projectName, open: open2, onOpenChange }) {
46711
46731
  ] }),
46712
46732
  /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogFooter, { children: [
46713
46733
  /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { type: "button", variant: "ghost", onClick: () => onOpenChange(false), children: "Cancel" }),
46714
- /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { type: "submit", children: "Create" })
46734
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
46735
+ Button,
46736
+ {
46737
+ type: "submit",
46738
+ disabled: !slug || !!slugError || createWorkspaceMutation.isPending,
46739
+ children: "Create"
46740
+ }
46741
+ )
46715
46742
  ] })
46716
46743
  ] }) }) });
46717
46744
  }
@@ -108956,7 +108983,7 @@ var tn = f$5("block", "before:content-[counter(line)]", "before:inline-block", "
108956
108983
  var et$1 = ({ className: e3, language: t2, style: o3, isIncomplete: n2, ...s2 }) => jsxRuntimeExports.jsx("div", { className: f$5("my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2", e3), "data-incomplete": n2 || void 0, "data-language": t2, "data-streamdown": "code-block", style: { contentVisibility: "auto", containIntrinsicSize: "auto 200px", ...o3 }, ...s2 });
108957
108984
  var Se$1 = reactExports.createContext({ code: "" }), de$2 = () => reactExports.useContext(Se$1);
108958
108985
  var ot$1 = ({ language: e3 }) => jsxRuntimeExports.jsx("div", { className: "flex h-8 items-center text-muted-foreground text-xs", "data-language": e3, "data-streamdown": "code-block-header", children: jsxRuntimeExports.jsx("span", { className: "ml-1 font-mono lowercase", children: e3 }) });
108959
- var cn = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-DGIqRI0V.js").then((e3) => ({ default: e3.HighlightedCodeBlockBody }))), rt = ({ code: e3, language: t2, className: o3, children: n2, isIncomplete: s2 = false, ...r2 }) => {
108986
+ var cn = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-DFADuqgv.js").then((e3) => ({ default: e3.HighlightedCodeBlockBody }))), rt = ({ code: e3, language: t2, className: o3, children: n2, isIncomplete: s2 = false, ...r2 }) => {
108960
108987
  let i2 = reactExports.useMemo(() => e3.replace(cn, ""), [e3]), c2 = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i2.split(`
108961
108988
  `).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i2]);
108962
108989
  return jsxRuntimeExports.jsx(Se$1.Provider, { value: { code: e3 }, children: jsxRuntimeExports.jsxs(et$1, { isIncomplete: s2, language: t2, children: [jsxRuntimeExports.jsx(ot$1, { 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$1, { className: o3, language: t2, result: c2, ...r2 }), children: jsxRuntimeExports.jsx(dn, { className: o3, code: i2, language: t2, raw: c2, ...r2 }) })] }) });
@@ -109278,7 +109305,7 @@ var Dt = ({ children: e3, className: t2, onDownload: o3, onError: n2 }) => {
109278
109305
  }, []), jsxRuntimeExports.jsxs("div", { className: "relative", ref: i2, children: [jsxRuntimeExports.jsx("button", { className: f$5("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: e3 != null ? e3 : jsxRuntimeExports.jsx(Z$2, { 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] });
109279
109306
  };
109280
109307
  var Vt = ({ children: e3, 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$5("w-full divide-y divide-border", t2), "data-streamdown": "table", ...n2, children: e3 }) })] });
109281
- var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-8mt5O2g5.js").then((e3) => ({ default: e3.Mermaid }))), Kn = /language-([^\s]+)/;
109308
+ var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-B1numrTC.js").then((e3) => ({ default: e3.Mermaid }))), Kn = /language-([^\s]+)/;
109282
109309
  function ke$1(e3, t2) {
109283
109310
  if (!(e3 != null && e3.position || t2 != null && t2.position)) return true;
109284
109311
  if (!(e3 != null && e3.position && (t2 != null && t2.position))) return false;
@@ -161449,12 +161476,12 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
161449
161476
  registerLayoutLoaders([
161450
161477
  {
161451
161478
  name: "dagre",
161452
- loader: /* @__PURE__ */ __name(async () => await import("./dagre-6UL2VRFP-3X8TKKNF.js"), "loader")
161479
+ loader: /* @__PURE__ */ __name(async () => await import("./dagre-6UL2VRFP-BqY_BEAB.js"), "loader")
161453
161480
  },
161454
161481
  ...[
161455
161482
  {
161456
161483
  name: "cose-bilkent",
161457
- loader: /* @__PURE__ */ __name(async () => await import("./cose-bilkent-S5V4N54A-D9MbA73U.js"), "loader")
161484
+ loader: /* @__PURE__ */ __name(async () => await import("./cose-bilkent-S5V4N54A-DQur-dSk.js"), "loader")
161458
161485
  }
161459
161486
  ]
161460
161487
  ]);
@@ -161893,7 +161920,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
161893
161920
  return /^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt);
161894
161921
  }, "detector");
161895
161922
  var loader = /* @__PURE__ */ __name(async () => {
161896
- const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-B12Oi-HH.js");
161923
+ const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-ixN9bfNO.js");
161897
161924
  return { id, diagram: diagram2 };
161898
161925
  }, "loader");
161899
161926
  var plugin = {
@@ -161910,7 +161937,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
161910
161937
  return /^\s*graph/.test(txt);
161911
161938
  }, "detector");
161912
161939
  var loader2 = /* @__PURE__ */ __name(async () => {
161913
- const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-DO9viNx6.js");
161940
+ const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-BYT0MDKu.js");
161914
161941
  return { id: id2, diagram: diagram2 };
161915
161942
  }, "loader");
161916
161943
  var plugin2 = {
@@ -161933,7 +161960,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
161933
161960
  return /^\s*flowchart/.test(txt);
161934
161961
  }, "detector");
161935
161962
  var loader3 = /* @__PURE__ */ __name(async () => {
161936
- const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-DO9viNx6.js");
161963
+ const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-BYT0MDKu.js");
161937
161964
  return { id: id3, diagram: diagram2 };
161938
161965
  }, "loader");
161939
161966
  var plugin3 = {
@@ -161947,7 +161974,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
161947
161974
  return /^\s*erDiagram/.test(txt);
161948
161975
  }, "detector");
161949
161976
  var loader4 = /* @__PURE__ */ __name(async () => {
161950
- const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-Cv2t_qcc.js");
161977
+ const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-CXWd7XfZ.js");
161951
161978
  return { id: id4, diagram: diagram2 };
161952
161979
  }, "loader");
161953
161980
  var plugin4 = {
@@ -161961,7 +161988,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
161961
161988
  return /^\s*gitGraph/.test(txt);
161962
161989
  }, "detector");
161963
161990
  var loader5 = /* @__PURE__ */ __name(async () => {
161964
- const { diagram: diagram2 } = await import("./gitGraphDiagram-V2S2FVAM-Cn1yq3PZ.js");
161991
+ const { diagram: diagram2 } = await import("./gitGraphDiagram-V2S2FVAM-iXeYaqRc.js");
161965
161992
  return { id: id5, diagram: diagram2 };
161966
161993
  }, "loader");
161967
161994
  var plugin5 = {
@@ -161975,7 +162002,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
161975
162002
  return /^\s*gantt/.test(txt);
161976
162003
  }, "detector");
161977
162004
  var loader6 = /* @__PURE__ */ __name(async () => {
161978
- const { diagram: diagram2 } = await import("./ganttDiagram-JELNMOA3-BQLkwHvs.js");
162005
+ const { diagram: diagram2 } = await import("./ganttDiagram-JELNMOA3-DRqUEh77.js");
161979
162006
  return { id: id6, diagram: diagram2 };
161980
162007
  }, "loader");
161981
162008
  var plugin6 = {
@@ -161989,7 +162016,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
161989
162016
  return /^\s*info/.test(txt);
161990
162017
  }, "detector");
161991
162018
  var loader7 = /* @__PURE__ */ __name(async () => {
161992
- const { diagram: diagram2 } = await import("./infoDiagram-HS3SLOUP-Dn-PUlKq.js");
162019
+ const { diagram: diagram2 } = await import("./infoDiagram-HS3SLOUP-CcvjlamO.js");
161993
162020
  return { id: id7, diagram: diagram2 };
161994
162021
  }, "loader");
161995
162022
  var info = {
@@ -162002,7 +162029,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
162002
162029
  return /^\s*pie/.test(txt);
162003
162030
  }, "detector");
162004
162031
  var loader8 = /* @__PURE__ */ __name(async () => {
162005
- const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-CwWqz5Xf.js");
162032
+ const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-Xc0hpyln.js");
162006
162033
  return { id: id8, diagram: diagram2 };
162007
162034
  }, "loader");
162008
162035
  var pie = {
@@ -162015,7 +162042,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
162015
162042
  return /^\s*quadrantChart/.test(txt);
162016
162043
  }, "detector");
162017
162044
  var loader9 = /* @__PURE__ */ __name(async () => {
162018
- const { diagram: diagram2 } = await import("./quadrantDiagram-AYHSOK5B-BZ8A8mON.js");
162045
+ const { diagram: diagram2 } = await import("./quadrantDiagram-AYHSOK5B-CTCsgLnq.js");
162019
162046
  return { id: id9, diagram: diagram2 };
162020
162047
  }, "loader");
162021
162048
  var plugin7 = {
@@ -162029,7 +162056,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
162029
162056
  return /^\s*xychart(-beta)?/.test(txt);
162030
162057
  }, "detector");
162031
162058
  var loader10 = /* @__PURE__ */ __name(async () => {
162032
- const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-DmHHkA_A.js");
162059
+ const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-C1IkvLoX.js");
162033
162060
  return { id: id10, diagram: diagram2 };
162034
162061
  }, "loader");
162035
162062
  var plugin8 = {
@@ -162043,7 +162070,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
162043
162070
  return /^\s*requirement(Diagram)?/.test(txt);
162044
162071
  }, "detector");
162045
162072
  var loader11 = /* @__PURE__ */ __name(async () => {
162046
- const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-Cctcn3D4.js");
162073
+ const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-6L85o8SZ.js");
162047
162074
  return { id: id11, diagram: diagram2 };
162048
162075
  }, "loader");
162049
162076
  var plugin9 = {
@@ -162057,7 +162084,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
162057
162084
  return /^\s*sequenceDiagram/.test(txt);
162058
162085
  }, "detector");
162059
162086
  var loader12 = /* @__PURE__ */ __name(async () => {
162060
- const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-C83rLE-r.js");
162087
+ const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-37UL27_4.js");
162061
162088
  return { id: id12, diagram: diagram2 };
162062
162089
  }, "loader");
162063
162090
  var plugin10 = {
@@ -162074,7 +162101,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
162074
162101
  return /^\s*classDiagram/.test(txt);
162075
162102
  }, "detector");
162076
162103
  var loader13 = /* @__PURE__ */ __name(async () => {
162077
- const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-Dd_NiCJt.js");
162104
+ const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-BHvCGARt.js");
162078
162105
  return { id: id13, diagram: diagram2 };
162079
162106
  }, "loader");
162080
162107
  var plugin11 = {
@@ -162091,7 +162118,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
162091
162118
  return /^\s*classDiagram-v2/.test(txt);
162092
162119
  }, "detector");
162093
162120
  var loader14 = /* @__PURE__ */ __name(async () => {
162094
- const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-Dd_NiCJt.js");
162121
+ const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-BHvCGARt.js");
162095
162122
  return { id: id14, diagram: diagram2 };
162096
162123
  }, "loader");
162097
162124
  var plugin12 = {
@@ -162108,7 +162135,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
162108
162135
  return /^\s*stateDiagram/.test(txt);
162109
162136
  }, "detector");
162110
162137
  var loader15 = /* @__PURE__ */ __name(async () => {
162111
- const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-lfXNq0DS.js");
162138
+ const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-Bs7b06Ra.js");
162112
162139
  return { id: id15, diagram: diagram2 };
162113
162140
  }, "loader");
162114
162141
  var plugin13 = {
@@ -162128,7 +162155,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
162128
162155
  return false;
162129
162156
  }, "detector");
162130
162157
  var loader16 = /* @__PURE__ */ __name(async () => {
162131
- const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-BkZqIjkI.js");
162158
+ const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-DUdtQcpy.js");
162132
162159
  return { id: id16, diagram: diagram2 };
162133
162160
  }, "loader");
162134
162161
  var plugin14 = {
@@ -162142,7 +162169,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
162142
162169
  return /^\s*journey/.test(txt);
162143
162170
  }, "detector");
162144
162171
  var loader17 = /* @__PURE__ */ __name(async () => {
162145
- const { diagram: diagram2 } = await import("./journeyDiagram-XKPGCS4Q-C1eLAzL9.js");
162172
+ const { diagram: diagram2 } = await import("./journeyDiagram-XKPGCS4Q-D1o9zBGm.js");
162146
162173
  return { id: id17, diagram: diagram2 };
162147
162174
  }, "loader");
162148
162175
  var plugin15 = {
@@ -162209,7 +162236,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
162209
162236
  return false;
162210
162237
  }, "detector");
162211
162238
  var loader18 = /* @__PURE__ */ __name(async () => {
162212
- const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-DO9viNx6.js");
162239
+ const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-BYT0MDKu.js");
162213
162240
  return { id: id18, diagram: diagram2 };
162214
162241
  }, "loader");
162215
162242
  var plugin16 = {
@@ -162223,7 +162250,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
162223
162250
  return /^\s*timeline/.test(txt);
162224
162251
  }, "detector");
162225
162252
  var loader19 = /* @__PURE__ */ __name(async () => {
162226
- const { diagram: diagram2 } = await import("./timeline-definition-IT6M3QCI-CejT7_79.js");
162253
+ const { diagram: diagram2 } = await import("./timeline-definition-IT6M3QCI-C2u2MfVa.js");
162227
162254
  return { id: id19, diagram: diagram2 };
162228
162255
  }, "loader");
162229
162256
  var plugin17 = {
@@ -162237,7 +162264,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
162237
162264
  return /^\s*mindmap/.test(txt);
162238
162265
  }, "detector");
162239
162266
  var loader20 = /* @__PURE__ */ __name(async () => {
162240
- const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-B5_qScJU.js");
162267
+ const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-s5IHcHtD.js");
162241
162268
  return { id: id20, diagram: diagram2 };
162242
162269
  }, "loader");
162243
162270
  var plugin18 = {
@@ -162251,7 +162278,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
162251
162278
  return /^\s*kanban/.test(txt);
162252
162279
  }, "detector");
162253
162280
  var loader21 = /* @__PURE__ */ __name(async () => {
162254
- const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-DFHxxNcb.js");
162281
+ const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-CbYt-CCT.js");
162255
162282
  return { id: id21, diagram: diagram2 };
162256
162283
  }, "loader");
162257
162284
  var plugin19 = {
@@ -162265,7 +162292,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
162265
162292
  return /^\s*sankey(-beta)?/.test(txt);
162266
162293
  }, "detector");
162267
162294
  var loader22 = /* @__PURE__ */ __name(async () => {
162268
- const { diagram: diagram2 } = await import("./sankeyDiagram-TZEHDZUN-Bvyi-a8d.js");
162295
+ const { diagram: diagram2 } = await import("./sankeyDiagram-TZEHDZUN-Dtxaeifp.js");
162269
162296
  return { id: id22, diagram: diagram2 };
162270
162297
  }, "loader");
162271
162298
  var plugin20 = {
@@ -162279,7 +162306,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
162279
162306
  return /^\s*packet(-beta)?/.test(txt);
162280
162307
  }, "detector");
162281
162308
  var loader23 = /* @__PURE__ */ __name(async () => {
162282
- const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-Dem9oHxL.js");
162309
+ const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-C9ZAbCH3.js");
162283
162310
  return { id: id23, diagram: diagram2 };
162284
162311
  }, "loader");
162285
162312
  var packet = {
@@ -162292,7 +162319,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
162292
162319
  return /^\s*radar-beta/.test(txt);
162293
162320
  }, "detector");
162294
162321
  var loader24 = /* @__PURE__ */ __name(async () => {
162295
- const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-CpM2yo3A.js");
162322
+ const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-Cetw62MH.js");
162296
162323
  return { id: id24, diagram: diagram2 };
162297
162324
  }, "loader");
162298
162325
  var radar = {
@@ -162305,7 +162332,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
162305
162332
  return /^\s*block(-beta)?/.test(txt);
162306
162333
  }, "detector");
162307
162334
  var loader25 = /* @__PURE__ */ __name(async () => {
162308
- const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-Djjy-jiv.js");
162335
+ const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-CoHm7pVm.js");
162309
162336
  return { id: id25, diagram: diagram2 };
162310
162337
  }, "loader");
162311
162338
  var plugin21 = {
@@ -162319,7 +162346,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
162319
162346
  return /^\s*architecture/.test(txt);
162320
162347
  }, "detector");
162321
162348
  var loader26 = /* @__PURE__ */ __name(async () => {
162322
- const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-DisnJPPo.js");
162349
+ const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-CUeN4CLM.js");
162323
162350
  return { id: id26, diagram: diagram2 };
162324
162351
  }, "loader");
162325
162352
  var architecture = {
@@ -162333,7 +162360,7 @@ var detector27 = /* @__PURE__ */ __name((txt) => {
162333
162360
  return /^\s*treemap/.test(txt);
162334
162361
  }, "detector");
162335
162362
  var loader27 = /* @__PURE__ */ __name(async () => {
162336
- const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-BifH8r_E.js");
162363
+ const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-Ci3qYhO1.js");
162337
162364
  return { id: id27, diagram: diagram2 };
162338
162365
  }, "loader");
162339
162366
  var treemap = {
@@ -164648,6 +164675,54 @@ function CodeBrowserView({
164648
164675
  ) })
164649
164676
  );
164650
164677
  }
164678
+ async function writeClipboardText(text2) {
164679
+ if (typeof navigator !== "undefined" && navigator.clipboard?.writeText) {
164680
+ try {
164681
+ await navigator.clipboard.writeText(text2);
164682
+ return true;
164683
+ } catch {
164684
+ }
164685
+ }
164686
+ return legacyCopy(text2);
164687
+ }
164688
+ function legacyCopy(text2) {
164689
+ if (typeof document === "undefined") return false;
164690
+ const textarea = document.createElement("textarea");
164691
+ textarea.value = text2;
164692
+ textarea.setAttribute("readonly", "");
164693
+ textarea.style.position = "fixed";
164694
+ textarea.style.top = "0";
164695
+ textarea.style.left = "0";
164696
+ textarea.style.width = "1px";
164697
+ textarea.style.height = "1px";
164698
+ textarea.style.padding = "0";
164699
+ textarea.style.border = "0";
164700
+ textarea.style.opacity = "0";
164701
+ textarea.style.pointerEvents = "none";
164702
+ document.body.appendChild(textarea);
164703
+ const previouslyFocused = document.activeElement;
164704
+ try {
164705
+ textarea.focus();
164706
+ textarea.select();
164707
+ textarea.setSelectionRange(0, text2.length);
164708
+ return document.execCommand("copy");
164709
+ } catch {
164710
+ return false;
164711
+ } finally {
164712
+ document.body.removeChild(textarea);
164713
+ previouslyFocused?.focus?.();
164714
+ }
164715
+ }
164716
+ async function readClipboardText() {
164717
+ if (typeof navigator === "undefined" || !navigator.clipboard?.readText) {
164718
+ return "";
164719
+ }
164720
+ try {
164721
+ return await navigator.clipboard.readText();
164722
+ } catch {
164723
+ return "";
164724
+ }
164725
+ }
164651
164726
  function cycleTabsInActiveGroup(api, direction, refocus) {
164652
164727
  const group = api?.activeGroup;
164653
164728
  if (!api || !group) return;
@@ -173502,7 +173577,8 @@ const INITIAL_STATE = {
173502
173577
  taskRunning: false,
173503
173578
  taskErrorMessage: void 0,
173504
173579
  currentAssistantId: void 0,
173505
- messageIdCounter: 0
173580
+ messageIdCounter: 0,
173581
+ pendingOptimisticTask: false
173506
173582
  };
173507
173583
  function appendPart(messages, assistantId, part) {
173508
173584
  const idx = messages.findIndex((m2) => m2.id === assistantId);
@@ -173594,13 +173670,29 @@ function chatEventReducer(state2, event) {
173594
173670
  const lastEventId = Math.max(state2.lastEventId ?? 0, event.eventId);
173595
173671
  switch (event.type) {
173596
173672
  case "subscription-opened": {
173597
- const taskRunning = state2.taskRunning || event.taskRunning;
173673
+ if (state2.pendingOptimisticTask) {
173674
+ const taskRunning2 = state2.taskRunning || event.taskRunning;
173675
+ return {
173676
+ ...state2,
173677
+ lastEventId,
173678
+ sessionId: event.sessionId ?? state2.sessionId,
173679
+ taskRunning: taskRunning2,
173680
+ status: taskRunning2 ? "streaming" : state2.status
173681
+ };
173682
+ }
173683
+ const taskRunning = event.taskRunning;
173684
+ let status = state2.status;
173685
+ if (taskRunning) {
173686
+ status = "streaming";
173687
+ } else if (state2.taskRunning) {
173688
+ status = state2.messages.some((m2) => m2.role === "assistant") ? "completed" : "idle";
173689
+ }
173598
173690
  return {
173599
173691
  ...state2,
173600
173692
  lastEventId,
173601
173693
  sessionId: event.sessionId ?? state2.sessionId,
173602
173694
  taskRunning,
173603
- status: taskRunning ? "streaming" : state2.status
173695
+ status
173604
173696
  };
173605
173697
  }
173606
173698
  case "session-resolved":
@@ -173653,7 +173745,11 @@ function chatEventReducer(state2, event) {
173653
173745
  taskRunning: true,
173654
173746
  status: "submitting",
173655
173747
  taskErrorMessage: void 0,
173656
- currentAssistantId: void 0
173748
+ currentAssistantId: void 0,
173749
+ // Negative eventId ⇒ this is `send()`'s synthetic pre-ack task-started.
173750
+ // A real server task-started (positive eventId) acknowledges it and
173751
+ // clears the pending flag, re-enabling authoritative downgrades.
173752
+ pendingOptimisticTask: event.eventId < 0
173657
173753
  };
173658
173754
  case "task-completed":
173659
173755
  return {
@@ -173661,7 +173757,8 @@ function chatEventReducer(state2, event) {
173661
173757
  lastEventId,
173662
173758
  taskRunning: false,
173663
173759
  status: "completed",
173664
- currentAssistantId: void 0
173760
+ currentAssistantId: void 0,
173761
+ pendingOptimisticTask: false
173665
173762
  };
173666
173763
  case "task-error":
173667
173764
  return {
@@ -173670,7 +173767,8 @@ function chatEventReducer(state2, event) {
173670
173767
  taskRunning: false,
173671
173768
  status: "error",
173672
173769
  taskErrorMessage: event.message,
173673
- currentAssistantId: void 0
173770
+ currentAssistantId: void 0,
173771
+ pendingOptimisticTask: false
173674
173772
  };
173675
173773
  case "text-start": {
173676
173774
  const created = state2.currentAssistantId === void 0;
@@ -175408,7 +175506,39 @@ function VirtualizedMessageList({
175408
175506
  estimateSize = 220,
175409
175507
  overscan = 5
175410
175508
  }) {
175411
- const { scrollRef } = useStickToBottomContext();
175509
+ const { scrollRef, scrollToBottom } = useStickToBottomContext();
175510
+ const [revealed, setRevealed] = reactExports.useState(false);
175511
+ reactExports.useEffect(() => {
175512
+ let raf = 0;
175513
+ let frames = 0;
175514
+ let stableFrames = 0;
175515
+ let lastHeight = -1;
175516
+ const MAX_FRAMES = 24;
175517
+ const STABLE_FRAMES = 2;
175518
+ const reveal = () => {
175519
+ scrollToBottom("instant");
175520
+ setRevealed(true);
175521
+ };
175522
+ const tick = () => {
175523
+ frames += 1;
175524
+ const el = scrollRef.current;
175525
+ if (el) el.scrollTop = el.scrollHeight;
175526
+ const height = el ? el.scrollHeight : 0;
175527
+ if (height === lastHeight) {
175528
+ stableFrames += 1;
175529
+ } else {
175530
+ stableFrames = 0;
175531
+ }
175532
+ lastHeight = height;
175533
+ if (stableFrames >= STABLE_FRAMES && frames >= 2 || frames >= MAX_FRAMES) {
175534
+ reveal();
175535
+ return;
175536
+ }
175537
+ raf = requestAnimationFrame(tick);
175538
+ };
175539
+ raf = requestAnimationFrame(tick);
175540
+ return () => cancelAnimationFrame(raf);
175541
+ }, []);
175412
175542
  const estimateSizeFn = reactExports.useCallback(() => estimateSize, [estimateSize]);
175413
175543
  const itemsRef = reactExports.useRef(items);
175414
175544
  itemsRef.current = items;
@@ -175438,7 +175568,11 @@ function VirtualizedMessageList({
175438
175568
  // scrollbar shows the correct extent.
175439
175569
  height: `${totalSize}px`,
175440
175570
  width: "100%",
175441
- position: "relative"
175571
+ position: "relative",
175572
+ // First-paint reveal gate (see the effect above). Hidden rows
175573
+ // still occupy layout — their ResizeObservers keep firing — so
175574
+ // the height/offset convergence completes off-screen.
175575
+ visibility: revealed ? void 0 : "hidden"
175442
175576
  },
175443
175577
  children: virtualItems.map((virtualRow) => {
175444
175578
  const item = items[virtualRow.index];
@@ -175839,64 +175973,64 @@ function ChatView({
175839
175973
  const getMessageKey = reactExports.useCallback((message) => message.id, []);
175840
175974
  const messagesRef = reactExports.useRef(messages);
175841
175975
  messagesRef.current = messages;
175842
- const isStreamingRef = reactExports.useRef(isStreaming);
175843
- isStreamingRef.current = isStreaming;
175844
- const renderMessageItem = reactExports.useCallback((message, messageIndex) => {
175845
- const currentMessages = messagesRef.current;
175846
- const currentIsStreaming = isStreamingRef.current;
175847
- const isLastMessage = messageIndex === currentMessages.length - 1;
175848
- const isLastAssistant = message.role === "assistant" && isLastMessage;
175849
- const hasPendingInteractiveTool = isLastAssistant && message.parts.some((p2) => {
175850
- if (!isToolUIPart(p2) || !IN_PROGRESS_STATES.has(p2.state)) return false;
175851
- const name2 = getToolName(p2);
175852
- return name2 === "AskUserQuestion" || name2 === "ExitPlanMode";
175853
- });
175854
- const showThinking = isLastAssistant && currentIsStreaming && !hasPendingInteractiveTool;
175855
- const segments = groupMessageParts(message.parts);
175856
- if (message.role !== "assistant") {
175857
- if (segments.length === 0) return null;
175858
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Message, { from: "user", children: /* @__PURE__ */ jsxRuntimeExports.jsx(MessageContent, { children: segments.map((segment) => {
175859
- if (segment.type === "text" && segment.part.type === "text" && segment.part.text.trim()) {
175860
- return /* @__PURE__ */ jsxRuntimeExports.jsx(MessageResponse, { children: segment.part.text }, `${message.id}-text-${segment.partIndex}`);
175861
- }
175862
- if (segment.type === "file") {
175863
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
175864
- MessageFilePart,
175865
- {
175866
- part: segment.part
175867
- },
175868
- `${message.id}-file-${segment.partIndex}`
175869
- );
175870
- }
175871
- return null;
175872
- }) }) });
175873
- }
175874
- if (segments.length === 0 && !showThinking) return null;
175875
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Message, { from: "assistant", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(MessageContent, { children: [
175876
- segments.map((segment) => {
175877
- if (segment.type === "text") {
175878
- const { part, partIndex } = segment;
175879
- if (part.type === "text" && part.text.trim()) {
175880
- return /* @__PURE__ */ jsxRuntimeExports.jsx(MessageResponse, { children: part.text }, `${message.id}-text-${partIndex}`);
175976
+ const renderMessageItem = reactExports.useCallback(
175977
+ (message, messageIndex) => {
175978
+ const currentMessages = messagesRef.current;
175979
+ const isLastMessage = messageIndex === currentMessages.length - 1;
175980
+ const isLastAssistant = message.role === "assistant" && isLastMessage;
175981
+ const hasPendingInteractiveTool = isLastAssistant && message.parts.some((p2) => {
175982
+ if (!isToolUIPart(p2) || !IN_PROGRESS_STATES.has(p2.state)) return false;
175983
+ const name2 = getToolName(p2);
175984
+ return name2 === "AskUserQuestion" || name2 === "ExitPlanMode";
175985
+ });
175986
+ const showThinking = isLastAssistant && isStreaming && !hasPendingInteractiveTool;
175987
+ const segments = groupMessageParts(message.parts);
175988
+ if (message.role !== "assistant") {
175989
+ if (segments.length === 0) return null;
175990
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Message, { from: "user", children: /* @__PURE__ */ jsxRuntimeExports.jsx(MessageContent, { children: segments.map((segment) => {
175991
+ if (segment.type === "text" && segment.part.type === "text" && segment.part.text.trim()) {
175992
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(MessageResponse, { children: segment.part.text }, `${message.id}-text-${segment.partIndex}`);
175993
+ }
175994
+ if (segment.type === "file") {
175995
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
175996
+ MessageFilePart,
175997
+ {
175998
+ part: segment.part
175999
+ },
176000
+ `${message.id}-file-${segment.partIndex}`
176001
+ );
175881
176002
  }
175882
176003
  return null;
175883
- }
175884
- if (segment.type === "file") {
175885
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
175886
- MessageFilePart,
175887
- {
175888
- part: segment.part
175889
- },
175890
- `${message.id}-file-${segment.partIndex}`
175891
- );
175892
- }
175893
- const item = toolPartToItem(segment.part);
175894
- if (isTaskTool(item.toolName)) return null;
175895
- return /* @__PURE__ */ jsxRuntimeExports.jsx(ToolCall, { item }, `${message.id}-tool-${segment.partIndex}`);
175896
- }),
175897
- showThinking && /* @__PURE__ */ jsxRuntimeExports.jsx(ThinkingIndicator, {})
175898
- ] }) });
175899
- }, []);
176004
+ }) }) });
176005
+ }
176006
+ if (segments.length === 0 && !showThinking) return null;
176007
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Message, { from: "assistant", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(MessageContent, { children: [
176008
+ segments.map((segment) => {
176009
+ if (segment.type === "text") {
176010
+ const { part, partIndex } = segment;
176011
+ if (part.type === "text" && part.text.trim()) {
176012
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(MessageResponse, { children: part.text }, `${message.id}-text-${partIndex}`);
176013
+ }
176014
+ return null;
176015
+ }
176016
+ if (segment.type === "file") {
176017
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
176018
+ MessageFilePart,
176019
+ {
176020
+ part: segment.part
176021
+ },
176022
+ `${message.id}-file-${segment.partIndex}`
176023
+ );
176024
+ }
176025
+ const item = toolPartToItem(segment.part);
176026
+ if (isTaskTool(item.toolName)) return null;
176027
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(ToolCall, { item }, `${message.id}-tool-${segment.partIndex}`);
176028
+ }),
176029
+ showThinking && /* @__PURE__ */ jsxRuntimeExports.jsx(ThinkingIndicator, {})
176030
+ ] }) });
176031
+ },
176032
+ [isStreaming]
176033
+ );
175900
176034
  const getLastUserMessage = reactExports.useCallback(() => {
175901
176035
  const currentMessages = messagesRef.current;
175902
176036
  for (let i2 = currentMessages.length - 1; i2 >= 0; i2--) {
@@ -176746,6 +176880,20 @@ function newChatId() {
176746
176880
  function chatLayoutKey(workspaceId) {
176747
176881
  return ["chatLayout", workspaceId];
176748
176882
  }
176883
+ let sharedSettingsPromise = null;
176884
+ let sharedSettingsAt = 0;
176885
+ const SHARED_SETTINGS_TTL_MS = 5e3;
176886
+ function getSharedSettings() {
176887
+ const now2 = Date.now();
176888
+ if (!sharedSettingsPromise || now2 - sharedSettingsAt > SHARED_SETTINGS_TTL_MS) {
176889
+ sharedSettingsAt = now2;
176890
+ sharedSettingsPromise = trpc.settings.get.query().catch(() => {
176891
+ sharedSettingsPromise = null;
176892
+ return null;
176893
+ });
176894
+ }
176895
+ return sharedSettingsPromise;
176896
+ }
176749
176897
  const saveTimers = /* @__PURE__ */ new Map();
176750
176898
  function persistToServer(workspaceId, layout, opts) {
176751
176899
  if (opts?.queryClient) {
@@ -176852,11 +177000,13 @@ function writeCachedTabMeta(chatId, patch2) {
176852
177000
  } catch {
176853
177001
  }
176854
177002
  }
177003
+ const RESUME_CAPABLE_AGENT_TYPES = /* @__PURE__ */ new Set(["claude-code", "codex", "opencode"]);
176855
177004
  function ChatTab(props) {
176856
177005
  const initialChatId = props.params.chatId;
176857
177006
  const initialCache = readCachedTabMeta(initialChatId);
176858
177007
  const [title, setTitle] = reactExports.useState(initialCache.title ?? props.api.title ?? "Chat");
176859
177008
  const [agentType, setAgentType] = reactExports.useState(initialCache.agentType);
177009
+ const [sessionId, setSessionId] = reactExports.useState(void 0);
176860
177010
  const [panelCount, setPanelCount] = reactExports.useState(props.containerApi.panels.length);
176861
177011
  reactExports.useEffect(() => {
176862
177012
  const d2 = props.api.onDidTitleChange(() => {
@@ -176878,28 +177028,61 @@ function ChatTab(props) {
176878
177028
  }, [props.containerApi]);
176879
177029
  const chatId = props.params.chatId;
176880
177030
  const workspaceId = props.params.workspaceId;
177031
+ const mountedRef = reactExports.useRef(true);
176881
177032
  reactExports.useEffect(() => {
177033
+ return () => {
177034
+ mountedRef.current = false;
177035
+ };
177036
+ }, []);
177037
+ const codingAgentsRef = reactExports.useRef([]);
177038
+ const defaultAgentIdRef = reactExports.useRef(void 0);
177039
+ const applyChatMeta = reactExports.useCallback(
177040
+ (chat) => {
177041
+ if (!mountedRef.current) return;
177042
+ setSessionId(chat?.activeSessionId ?? void 0);
177043
+ const agentId = chat?.agent ?? defaultAgentIdRef.current ?? "";
177044
+ const found = codingAgentsRef.current.find((a2) => a2.id === agentId);
177045
+ if (found) {
177046
+ setAgentType(found.type);
177047
+ writeCachedTabMeta(chatId, { agentType: found.type });
177048
+ }
177049
+ },
177050
+ [chatId]
177051
+ );
177052
+ const refreshTabMeta = reactExports.useCallback(() => {
176882
177053
  if (!chatId || !workspaceId) return;
176883
- let cancelled2 = false;
176884
177054
  Promise.all([
176885
- trpc.settings.get.query().catch(() => null),
177055
+ getSharedSettings(),
176886
177056
  trpc.chats.get.query({ chatId }).catch(() => ({ chat: null }))
176887
177057
  ]).then(([settings, chatResult]) => {
176888
- if (cancelled2) return;
177058
+ if (!mountedRef.current) return;
176889
177059
  const raw2 = settings?.codingAgents;
176890
- const codingAgents = Array.isArray(raw2) ? raw2 : [];
176891
- const defaultAgentId = settings?.defaultCodingAgent;
176892
- const agentId = chatResult.chat?.agent ?? defaultAgentId ?? "";
176893
- const found = codingAgents.find((a2) => a2.id === agentId);
176894
- if (found) {
176895
- setAgentType(found.type);
176896
- writeCachedTabMeta(chatId, { agentType: found.type });
176897
- }
177060
+ codingAgentsRef.current = Array.isArray(raw2) ? raw2 : [];
177061
+ defaultAgentIdRef.current = settings?.defaultCodingAgent;
177062
+ applyChatMeta(chatResult.chat);
177063
+ }).catch(() => {
177064
+ });
177065
+ }, [chatId, workspaceId, applyChatMeta]);
177066
+ const refreshChatMeta = reactExports.useCallback(() => {
177067
+ if (!chatId) return;
177068
+ trpc.chats.get.query({ chatId }).then((res) => applyChatMeta(res.chat)).catch(() => {
177069
+ });
177070
+ }, [chatId, applyChatMeta]);
177071
+ reactExports.useEffect(() => {
177072
+ refreshTabMeta();
177073
+ }, [refreshTabMeta]);
177074
+ const canResume = !!sessionId && !!agentType && RESUME_CAPABLE_AGENT_TYPES.has(agentType);
177075
+ const handleContinueInTerminal = reactExports.useCallback(() => {
177076
+ trpc.chats.continueInTerminal.mutate({ chatId }).then(() => {
177077
+ crossPanelHandlers.onActivateTerminalPanel(workspaceId);
177078
+ }).catch((err) => {
177079
+ console.error("[ChatTab] continue in terminal failed:", err);
176898
177080
  });
176899
- return () => {
176900
- cancelled2 = true;
176901
- };
176902
177081
  }, [chatId, workspaceId]);
177082
+ const handleCopySessionId = reactExports.useCallback(() => {
177083
+ if (!sessionId) return;
177084
+ void writeClipboardText(sessionId);
177085
+ }, [sessionId]);
176903
177086
  const handleClose2 = reactExports.useCallback(
176904
177087
  (e3) => {
176905
177088
  e3.stopPropagation();
@@ -176908,35 +177091,65 @@ function ChatTab(props) {
176908
177091
  [chatId]
176909
177092
  );
176910
177093
  const showClose = panelCount > 1;
176911
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "dv-default-tab", children: [
176912
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 min-w-0", children: [
176913
- /* @__PURE__ */ jsxRuntimeExports.jsx(
176914
- "span",
176915
- {
176916
- className: "inline-flex size-3.5 shrink-0 items-center justify-center transition-opacity duration-150",
176917
- style: { opacity: agentType ? 1 : 0 },
176918
- children: agentType && /* @__PURE__ */ jsxRuntimeExports.jsx(AgentIcon, { type: agentType, className: "size-3.5" })
176919
- }
176920
- ),
176921
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate min-w-[6rem] max-w-[14rem]", children: title })
176922
- ] }),
176923
- /* @__PURE__ */ jsxRuntimeExports.jsx(
176924
- "button",
176925
- {
176926
- type: "button",
176927
- "aria-hidden": !showClose,
176928
- tabIndex: showClose ? 0 : -1,
176929
- className: "ml-1 inline-flex size-4 items-center justify-center rounded-sm opacity-60 hover:opacity-100 hover:bg-accent transition-opacity",
176930
- style: {
176931
- opacity: showClose ? void 0 : 0,
176932
- pointerEvents: showClose ? void 0 : "none"
176933
- },
176934
- onClick: handleClose2,
176935
- title: "Close tab",
176936
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(X$7, { className: "size-3" })
176937
- }
176938
- )
176939
- ] });
177094
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
177095
+ ContextMenu,
177096
+ {
177097
+ onOpenChange: (open2) => {
177098
+ if (open2) refreshChatMeta();
177099
+ },
177100
+ children: [
177101
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ContextMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "dv-default-tab", "data-testid": `chat-tab__trigger--${chatId}`, children: [
177102
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 min-w-0", children: [
177103
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
177104
+ "span",
177105
+ {
177106
+ className: "inline-flex size-3.5 shrink-0 items-center justify-center transition-opacity duration-150",
177107
+ style: { opacity: agentType ? 1 : 0 },
177108
+ children: agentType && /* @__PURE__ */ jsxRuntimeExports.jsx(AgentIcon, { type: agentType, className: "size-3.5" })
177109
+ }
177110
+ ),
177111
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate min-w-[6rem] max-w-[14rem]", children: title })
177112
+ ] }),
177113
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
177114
+ "button",
177115
+ {
177116
+ type: "button",
177117
+ "aria-hidden": !showClose,
177118
+ tabIndex: showClose ? 0 : -1,
177119
+ className: "ml-1 inline-flex size-4 items-center justify-center rounded-sm opacity-60 hover:opacity-100 hover:bg-accent transition-opacity",
177120
+ style: {
177121
+ opacity: showClose ? void 0 : 0,
177122
+ pointerEvents: showClose ? void 0 : "none"
177123
+ },
177124
+ onClick: handleClose2,
177125
+ title: "Close tab",
177126
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(X$7, { className: "size-3" })
177127
+ }
177128
+ )
177129
+ ] }) }),
177130
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuContent, { "data-testid": "chat-tab__context-menu", children: [
177131
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
177132
+ ContextMenuItem,
177133
+ {
177134
+ disabled: !canResume,
177135
+ onClick: handleContinueInTerminal,
177136
+ "data-testid": "chat-tab__context-menu-item--continue-in-terminal",
177137
+ children: "Continue in terminal"
177138
+ }
177139
+ ),
177140
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
177141
+ ContextMenuItem,
177142
+ {
177143
+ disabled: !sessionId,
177144
+ onClick: handleCopySessionId,
177145
+ "data-testid": "chat-tab__context-menu-item--copy-session-id",
177146
+ children: "Copy session ID"
177147
+ }
177148
+ )
177149
+ ] })
177150
+ ]
177151
+ }
177152
+ );
176940
177153
  }
176941
177154
  const addTabRef = {
176942
177155
  current: { onAdd: () => {
@@ -200793,12 +201006,12 @@ const PANEL_SHORTCUTS = {
200793
201006
  browser: "⇧⌘B"
200794
201007
  };
200795
201008
  const DockviewTerminalContainer = reactExports.lazy(
200796
- () => import("./DockviewTerminalContainer-QeRuw498.js").then((m2) => ({
201009
+ () => import("./DockviewTerminalContainer-CyrT6RMc.js").then((m2) => ({
200797
201010
  default: m2.DockviewTerminalContainer
200798
201011
  }))
200799
201012
  );
200800
201013
  const DockviewBrowserContainer = reactExports.lazy(
200801
- () => import("./DockviewBrowserContainer-DaEHL7rU.js").then((m2) => ({
201014
+ () => import("./DockviewBrowserContainer-DLO8DHQ8.js").then((m2) => ({
200802
201015
  default: m2.DockviewBrowserContainer
200803
201016
  }))
200804
201017
  );
@@ -200812,6 +201025,8 @@ const crossPanelHandlers = {
200812
201025
  onFindInFile: () => {
200813
201026
  },
200814
201027
  onActivateFilesPanel: () => {
201028
+ },
201029
+ onActivateTerminalPanel: () => {
200815
201030
  }
200816
201031
  };
200817
201032
  function NoWorkspaceMessage({ Icon: Icon2 }) {
@@ -201251,11 +201466,20 @@ function SharedDockviewLayout() {
201251
201466
  apiRef.current?.getPanel("files")?.api.setActive();
201252
201467
  }
201253
201468
  }, []);
201469
+ const handleActivateTerminalPanel = reactExports.useCallback((workspaceId) => {
201470
+ if (workspaceId !== activeWorkspaceIdRef.current) return;
201471
+ if (hiddenPanelsRef.current.includes("terminal")) return;
201472
+ apiRef.current?.getPanel("terminal")?.api.setActive();
201473
+ queueMicrotask(() => {
201474
+ window.dispatchEvent(new CustomEvent("band:focus-terminal"));
201475
+ });
201476
+ }, []);
201254
201477
  crossPanelHandlers.onOpenFile = handleOpenFile;
201255
201478
  crossPanelHandlers.onFileOpened = handleFileOpened;
201256
201479
  crossPanelHandlers.onSelectFile = handleSelectFile;
201257
201480
  crossPanelHandlers.onFindInFile = handleSetFindInFile;
201258
201481
  crossPanelHandlers.onActivateFilesPanel = handleActivateFilesPanel;
201482
+ crossPanelHandlers.onActivateTerminalPanel = handleActivateTerminalPanel;
201259
201483
  const paletteCommands = reactExports.useMemo(
201260
201484
  () => buildCommands({
201261
201485
  getApi: () => apiRef.current,
@@ -202326,12 +202550,12 @@ function RootLayout() {
202326
202550
  ] })
202327
202551
  ] });
202328
202552
  }
202329
- const $$splitComponentImporter$1 = () => import("./index-D0gkB7DS.js");
202553
+ const $$splitComponentImporter$1 = () => import("./index-CsRze8_V.js");
202330
202554
  const Route$1 = createFileRoute("/")({
202331
202555
  component: lazyRouteComponent($$splitComponentImporter$1, "component")
202332
202556
  });
202333
- const $$splitNotFoundComponentImporter = () => import("./workspace._workspaceId-D20Q15rI.js");
202334
- const $$splitComponentImporter = () => import("./workspace._workspaceId-BpnCyMIU.js");
202557
+ const $$splitNotFoundComponentImporter = () => import("./workspace._workspaceId-DbDNrvi3.js");
202558
+ const $$splitComponentImporter = () => import("./workspace._workspaceId-C9ajqro8.js");
202335
202559
  const Route2 = createFileRoute("/workspace/$workspaceId")({
202336
202560
  component: lazyRouteComponent($$splitComponentImporter, "component"),
202337
202561
  // Bookmarks / shared links from before route unification (`/workspace/$id/changes`,
@@ -202532,7 +202756,7 @@ export {
202532
202756
  isFunction$1 as by,
202533
202757
  isEmpty as bz,
202534
202758
  continuedIndent as c,
202535
- isIterateeCall$1 as c$,
202759
+ millisecond as c$,
202536
202760
  SearchFilesDialog as c0,
202537
202761
  WorkspacePickerDialog as c1,
202538
202762
  useDiffTarget as c2,
@@ -202543,102 +202767,104 @@ export {
202543
202767
  ordinal as c7,
202544
202768
  getUserDefinedConfig as c8,
202545
202769
  getIconSVG as c9,
202546
- RotateCw as cA,
202547
- Rgb as cB,
202548
- rgbConvert as cC,
202549
- define as cD,
202550
- extend$2 as cE,
202551
- Color as cF,
202552
- nogamma as cG,
202553
- hue as cH,
202554
- time$2 as cI,
202555
- min$1 as cJ,
202556
- max$1 as cK,
202557
- dayjs2 as cL,
202558
- timeFormat as cM,
202559
- timeMonth as cN,
202560
- timeSunday as cO,
202561
- timeSaturday as cP,
202562
- timeFriday as cQ,
202563
- timeThursday as cR,
202564
- timeWednesday as cS,
202565
- timeTuesday as cT,
202566
- timeMonday as cU,
202567
- timeDay as cV,
202568
- timeHour as cW,
202569
- timeMinute as cX,
202570
- second as cY,
202571
- millisecond as cZ,
202572
- isObject$2 as c_,
202770
+ DropdownMenuItem as cA,
202771
+ TriangleAlert as cB,
202772
+ RotateCw as cC,
202773
+ Rgb as cD,
202774
+ rgbConvert as cE,
202775
+ define as cF,
202776
+ extend$2 as cG,
202777
+ Color as cH,
202778
+ nogamma as cI,
202779
+ hue as cJ,
202780
+ time$2 as cK,
202781
+ min$1 as cL,
202782
+ max$1 as cM,
202783
+ dayjs2 as cN,
202784
+ timeFormat as cO,
202785
+ timeMonth as cP,
202786
+ timeSunday as cQ,
202787
+ timeSaturday as cR,
202788
+ timeFriday as cS,
202789
+ timeThursday as cT,
202790
+ timeWednesday as cU,
202791
+ timeTuesday as cV,
202792
+ timeMonday as cW,
202793
+ timeDay as cX,
202794
+ timeHour as cY,
202795
+ timeMinute as cZ,
202796
+ second as c_,
202573
202797
  registerIconPacks as ca,
202574
202798
  unknownIcon as cb,
202575
- ArrowUp as cc,
202576
- ArrowDown as cd,
202577
- ArrowRight as ce,
202578
- ClipboardPaste as cf,
202579
- getCurrentZoomLevel as cg,
202580
- openExternalUrl as ch,
202581
- subscribeToZoomChanges as ci,
202582
- SearchBar as cj,
202583
- ZOOM_CSS_VAR as ck,
202584
- invoke as cl,
202585
- listen as cm,
202586
- reactDomExports as cn,
202587
- Globe as co,
202588
- Popover as cp,
202589
- PopoverTrigger as cq,
202590
- PopoverContent as cr,
202591
- Search as cs,
202592
- Trash2 as ct,
202593
- DropdownMenu as cu,
202594
- DropdownMenuTrigger as cv,
202595
- ChevronDown as cw,
202596
- DropdownMenuContent as cx,
202597
- DropdownMenuItem as cy,
202598
- TriangleAlert as cz,
202799
+ writeClipboardText as cc,
202800
+ readClipboardText as cd,
202801
+ ArrowUp as ce,
202802
+ ArrowDown as cf,
202803
+ ArrowRight as cg,
202804
+ ClipboardPaste as ch,
202805
+ getCurrentZoomLevel as ci,
202806
+ openExternalUrl as cj,
202807
+ subscribeToZoomChanges as ck,
202808
+ SearchBar as cl,
202809
+ ZOOM_CSS_VAR as cm,
202810
+ invoke as cn,
202811
+ listen as co,
202812
+ reactDomExports as cp,
202813
+ Globe as cq,
202814
+ Popover as cr,
202815
+ PopoverTrigger as cs,
202816
+ PopoverContent as ct,
202817
+ Search as cu,
202818
+ Trash2 as cv,
202819
+ DropdownMenu as cw,
202820
+ DropdownMenuTrigger as cx,
202821
+ ChevronDown as cy,
202822
+ DropdownMenuContent as cz,
202599
202823
  foldInside as d,
202600
- keysIn as d0,
202601
- eq as d1,
202602
- isArrayLike$1 as d2,
202603
- isArray$1 as d3,
202604
- identity$1 as d4,
202605
- isIndex$1 as d5,
202606
- assignValue as d6,
202607
- format as d7,
202608
- styles2String as d8,
202609
- isLabelStyle as d9,
202610
- Uint8Array$1 as dA,
202611
- isTypedArray$1 as dB,
202612
- isLength$1 as dC,
202613
- Set$1 as dD,
202614
- createAssigner as dE,
202615
- isPrototype as dF,
202616
- router as dG,
202617
- setToString as da,
202618
- overRest as db,
202619
- baseFor as dc,
202620
- baseAssignValue as dd,
202621
- baseUnary as de,
202622
- merge$1 as df,
202623
- isObjectLike$1 as dg,
202624
- baseGetTag as dh,
202625
- Symbol$1 as di,
202626
- arrayLikeKeys as dj,
202627
- baseKeys as dk,
202628
- memoize as dl,
202629
- isArguments$1 as dm,
202630
- copyObject as dn,
202631
- getPrototype as dp,
202632
- cloneArrayBuffer as dq,
202633
- cloneTypedArray as dr,
202634
- getTag$1 as ds,
202635
- nodeUtil as dt,
202636
- copyArray as du,
202637
- isBuffer$1 as dv,
202638
- cloneBuffer as dw,
202639
- initCloneObject as dx,
202640
- Stack as dy,
202641
- MapCache as dz,
202824
+ isObject$2 as d0,
202825
+ isIterateeCall$1 as d1,
202826
+ keysIn as d2,
202827
+ eq as d3,
202828
+ isArrayLike$1 as d4,
202829
+ isArray$1 as d5,
202830
+ identity$1 as d6,
202831
+ isIndex$1 as d7,
202832
+ assignValue as d8,
202833
+ format as d9,
202834
+ Stack as dA,
202835
+ MapCache as dB,
202836
+ Uint8Array$1 as dC,
202837
+ isTypedArray$1 as dD,
202838
+ isLength$1 as dE,
202839
+ Set$1 as dF,
202840
+ createAssigner as dG,
202841
+ isPrototype as dH,
202842
+ router as dI,
202843
+ styles2String as da,
202844
+ isLabelStyle as db,
202845
+ setToString as dc,
202846
+ overRest as dd,
202847
+ baseFor as de,
202848
+ baseAssignValue as df,
202849
+ baseUnary as dg,
202850
+ merge$1 as dh,
202851
+ isObjectLike$1 as di,
202852
+ baseGetTag as dj,
202853
+ Symbol$1 as dk,
202854
+ arrayLikeKeys as dl,
202855
+ baseKeys as dm,
202856
+ memoize as dn,
202857
+ isArguments$1 as dp,
202858
+ copyObject as dq,
202859
+ getPrototype as dr,
202860
+ cloneArrayBuffer as ds,
202861
+ cloneTypedArray as dt,
202862
+ getTag$1 as du,
202863
+ nodeUtil as dv,
202864
+ copyArray as dw,
202865
+ isBuffer$1 as dx,
202866
+ cloneBuffer as dy,
202867
+ initCloneObject as dz,
202642
202868
  ifNotIn as e,
202643
202869
  foldNodeProp as f,
202644
202870
  completeFromList as g,