@band-app/server 0.19.0 → 0.20.0

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 (165) hide show
  1. package/dist/client/assets/{DockviewBrowserContainer-DZtIWqpD.js → DockviewBrowserContainer-CE6D36cE.js} +2 -2
  2. package/dist/client/assets/{DockviewTerminalContainer-CuCLFf9Q.js → DockviewTerminalContainer-CqH5m62N.js} +2 -2
  3. package/dist/client/assets/TerminalPanel-BCLbEfyo.js +5 -0
  4. package/dist/client/assets/{_basePickBy-CO9jQnZa.js → _basePickBy-CosPBGEe.js} +1 -1
  5. package/dist/client/assets/{_baseUniq-DGqwnf8z.js → _baseUniq-CNCpSB0P.js} +1 -1
  6. package/dist/client/assets/{arc-BMkYdJIp.js → arc-UDGCZidA.js} +1 -1
  7. package/dist/client/assets/{architectureDiagram-VXUJARFQ-CQCPK2yK.js → architectureDiagram-VXUJARFQ-CeS1u1s5.js} +1 -1
  8. package/dist/client/assets/{blockDiagram-VD42YOAC-DdR7KelQ.js → blockDiagram-VD42YOAC-DNtrsJ3_.js} +1 -1
  9. package/dist/client/assets/{c4Diagram-YG6GDRKO-R9AqKMUN.js → c4Diagram-YG6GDRKO-L-AKg5Ca.js} +1 -1
  10. package/dist/client/assets/channel-vYE3Ojmg.js +1 -0
  11. package/dist/client/assets/{chunk-4BX2VUAB-BnKGVCzE.js → chunk-4BX2VUAB-6WG78h6_.js} +1 -1
  12. package/dist/client/assets/{chunk-55IACEB6-By56kV4y.js → chunk-55IACEB6-CivChWg7.js} +1 -1
  13. package/dist/client/assets/{chunk-B4BG7PRW-Mdspuz8t.js → chunk-B4BG7PRW-BKLAk8Ng.js} +1 -1
  14. package/dist/client/assets/{chunk-DI55MBZ5-iyZEN5hA.js → chunk-DI55MBZ5-B_cDZCba.js} +1 -1
  15. package/dist/client/assets/{chunk-FMBD7UC4-DMP1kj21.js → chunk-FMBD7UC4-CZgE72J_.js} +1 -1
  16. package/dist/client/assets/{chunk-QN33PNHL-DcPxVAYl.js → chunk-QN33PNHL-1qh6IGru.js} +1 -1
  17. package/dist/client/assets/{chunk-QZHKN3VN-Bp7cG1_B.js → chunk-QZHKN3VN-Cl_2nn9E.js} +1 -1
  18. package/dist/client/assets/{chunk-TZMSLE5B-pNRrcxP_.js → chunk-TZMSLE5B-DpxKjqWA.js} +1 -1
  19. package/dist/client/assets/classDiagram-2ON5EDUG-xnvZA_6X.js +1 -0
  20. package/dist/client/assets/classDiagram-v2-WZHVMYZB-xnvZA_6X.js +1 -0
  21. package/dist/client/assets/clike-B9uivgTg.js +1 -0
  22. package/dist/client/assets/clone-DsvuocD4.js +1 -0
  23. package/dist/client/assets/{cose-bilkent-S5V4N54A-CSNWhuW5.js → cose-bilkent-S5V4N54A-DCzND3wc.js} +1 -1
  24. package/dist/client/assets/{dagre-6UL2VRFP-2AP9Vpxl.js → dagre-6UL2VRFP-phsFBB-e.js} +1 -1
  25. package/dist/client/assets/{diagram-PSM6KHXK-HtGU4kRc.js → diagram-PSM6KHXK-C3SOO9R0.js} +1 -1
  26. package/dist/client/assets/{diagram-QEK2KX5R-K2WsknJk.js → diagram-QEK2KX5R-CAFBJ4hH.js} +1 -1
  27. package/dist/client/assets/{diagram-S2PKOQOG-BDEONaZX.js → diagram-S2PKOQOG-Bpydud7g.js} +1 -1
  28. package/dist/client/assets/{erDiagram-Q2GNP2WA-CPBjK29N.js → erDiagram-Q2GNP2WA-Co4WhzwN.js} +1 -1
  29. package/dist/client/assets/{flowDiagram-NV44I4VS-Bxg-lsJi.js → flowDiagram-NV44I4VS-BZA58aUI.js} +1 -1
  30. package/dist/client/assets/{ganttDiagram-JELNMOA3-CfsLGU7a.js → ganttDiagram-JELNMOA3--4j85sTO.js} +3 -3
  31. package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-DSZ8yygB.js → gitGraphDiagram-V2S2FVAM-6AH31Cb1.js} +1 -1
  32. package/dist/client/assets/{graph-CrcNy0Ae.js → graph-7CJlwe2i.js} +1 -1
  33. package/dist/client/assets/{highlighted-body-B3W2YXNL-CPmygcyP.js → highlighted-body-B3W2YXNL-D5Kact6h.js} +1 -1
  34. package/dist/client/assets/{index-DxYfeZ2E.js → index--MhpXyw4.js} +1 -1
  35. package/dist/client/assets/{index-BCP4tBa7.js → index-B2DcQ-ug.js} +1 -1
  36. package/dist/client/assets/{index-BsrQ2eX6.js → index-B4wpLa0T.js} +1 -1
  37. package/dist/client/assets/{index-uRf2_zL0.js → index-B5R7cbs8.js} +1 -1
  38. package/dist/client/assets/{index-CLRzbnfI.js → index-BwJYeeov.js} +1 -1
  39. package/dist/client/assets/{index-Crm271Ii.js → index-C4gIKOr_.js} +1 -1
  40. package/dist/client/assets/{index-BILlMvI9.js → index-CoRbY65h.js} +1 -1
  41. package/dist/client/assets/{index-BLRI8YiL.js → index-Cp85A8y4.js} +1 -1
  42. package/dist/client/assets/{index-ByaEwL4Q.js → index-CralkALm.js} +1 -1
  43. package/dist/client/assets/{index-CNLX1boT.js → index-Cv7YFrOV.js} +1 -1
  44. package/dist/client/assets/{index-CsHJ2Ff0.js → index-DCu6TAMf.js} +1 -1
  45. package/dist/client/assets/{index-CQixBiQh.js → index-DMMKTe60.js} +1 -1
  46. package/dist/client/assets/{index-Dw0-IJHh.js → index-D_D2pxKM.js} +1 -1
  47. package/dist/client/assets/{index-DPbyu5Yx.js → index-DgEnNhJH.js} +1 -1
  48. package/dist/client/assets/{index-CPlAHhxv.js → index-Djl4xLSO.js} +1 -1
  49. package/dist/client/assets/{index-J9vyzIxg.js → index-Dn_GfMwq.js} +1 -1
  50. package/dist/client/assets/{index-CUf8QFIy.js → index-DnzvlwNY.js} +1 -1
  51. package/dist/client/assets/{index-DiDm-B1D.js → index-pr8WXb_L.js} +1 -1
  52. package/dist/client/assets/{infoDiagram-HS3SLOUP-DznSvSTI.js → infoDiagram-HS3SLOUP-CeA337Zm.js} +1 -1
  53. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-CZi4YujP.js → journeyDiagram-XKPGCS4Q-ujbs0LMd.js} +1 -1
  54. package/dist/client/assets/{kanban-definition-3W4ZIXB7-X0OvmcRW.js → kanban-definition-3W4ZIXB7-ffQDH_Ro.js} +1 -1
  55. package/dist/client/assets/{layout-BvRrjwqG.js → layout-Bp2mKXuW.js} +1 -1
  56. package/dist/client/assets/main-BzKe6bG7.css +1 -0
  57. package/dist/client/assets/{main-jiI3VEaS.js → main-axhmccT5.js} +271 -271
  58. package/dist/client/assets/{mindmap-definition-VGOIOE7T-CQESwmPy.js → mindmap-definition-VGOIOE7T-ADZcbwuf.js} +1 -1
  59. package/dist/client/assets/{pieDiagram-ADFJNKIX-B28DXcFe.js → pieDiagram-ADFJNKIX-BdG4-xDd.js} +1 -1
  60. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-BFzNIbiV.js → quadrantDiagram-AYHSOK5B-DUtM9sRB.js} +1 -1
  61. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-DYMElT8I.js → requirementDiagram-UZGBJVZJ-Bb0HlfNx.js} +1 -1
  62. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-BWTESPW7.js → sankeyDiagram-TZEHDZUN-DVCE_8pf.js} +1 -1
  63. package/dist/client/assets/{sequenceDiagram-WL72ISMW-PLqAiKkw.js → sequenceDiagram-WL72ISMW-CKQaWU-Q.js} +1 -1
  64. package/dist/client/assets/{square-terminal-DqD2bbPR.js → square-terminal-BiJr_LVr.js} +1 -1
  65. package/dist/client/assets/{stateDiagram-FKZM4ZOC-BuoBLww9.js → stateDiagram-FKZM4ZOC-D0QXwVbV.js} +1 -1
  66. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-C3iyPGuZ.js +1 -0
  67. package/dist/client/assets/{timeline-definition-IT6M3QCI-gHz-ibEM.js → timeline-definition-IT6M3QCI-CUDKk5ha.js} +1 -1
  68. package/dist/client/assets/{treemap-GDKQZRPO-Df_3w7Ws.js → treemap-GDKQZRPO-yUFqXQpQ.js} +1 -1
  69. package/dist/client/assets/{workspace._workspaceId-rXFF_FK_.js → workspace._workspaceId-Bz0CuqC_.js} +1 -1
  70. package/dist/client/assets/workspace._workspaceId-DorcrnsD.js +2 -0
  71. package/dist/client/assets/{xychartDiagram-PRI3JC2R-Dtkqhnxi.js → xychartDiagram-PRI3JC2R-Dju2LIYt.js} +1 -1
  72. package/dist/migrations/20260619184346_drop_tasks_max_turns/migration.sql +1 -0
  73. package/dist/migrations/20260619184346_drop_tasks_max_turns/snapshot.json +1157 -0
  74. package/dist/openapi.json +192 -48
  75. package/dist/server/assets/{DockviewBrowserContainer-MBbRqrFN.js → DockviewBrowserContainer-DaEHL7rU.js} +1 -1
  76. package/dist/server/assets/{DockviewTerminalContainer-CbiPuY7W.js → DockviewTerminalContainer-QeRuw498.js} +3 -3
  77. package/dist/server/assets/{TerminalPanel-r3EgkGO2.js → TerminalPanel-CIQVz_Z4.js} +250 -143
  78. package/dist/server/assets/{_basePickBy-BYBSjWdr.js → _basePickBy-Bgz-DXU9.js} +2 -2
  79. package/dist/server/assets/{_baseUniq-BFd712qn.js → _baseUniq-CevNURdU.js} +1 -1
  80. package/dist/server/assets/_tanstack-start-manifest_v-9Dn7fTyV.js +4 -0
  81. package/dist/server/assets/{arc-BgLIk2km.js → arc-jD7cuYE0.js} +1 -1
  82. package/dist/server/assets/{architecture-7HQA4BMR-CNuGd6ji.js → architecture-7HQA4BMR-CH32HJV2.js} +6 -6
  83. package/dist/server/assets/{architectureDiagram-VXUJARFQ-CUWYpRdN.js → architectureDiagram-VXUJARFQ-DisnJPPo.js} +6 -6
  84. package/dist/server/assets/{blockDiagram-VD42YOAC-LC7jFY0y.js → blockDiagram-VD42YOAC-Djjy-jiv.js} +6 -6
  85. package/dist/server/assets/{c4Diagram-YG6GDRKO-xiCvsYEV.js → c4Diagram-YG6GDRKO-B12Oi-HH.js} +2 -2
  86. package/dist/server/assets/{channel-HTn7VGn7.js → channel-DFaIo-PG.js} +1 -1
  87. package/dist/server/assets/{chunk-4BX2VUAB-BddWsJMu.js → chunk-4BX2VUAB-DHfsBptR.js} +1 -1
  88. package/dist/server/assets/{chunk-55IACEB6-gS8ucPXk.js → chunk-55IACEB6-jIjVbMix.js} +1 -1
  89. package/dist/server/assets/{chunk-B4BG7PRW-CjE0PrHm.js → chunk-B4BG7PRW-CZ4z-SYy.js} +4 -4
  90. package/dist/server/assets/{chunk-DI55MBZ5-D4otQuhU.js → chunk-DI55MBZ5-BAZeiYrT.js} +3 -3
  91. package/dist/server/assets/{chunk-FMBD7UC4-BoFKStlk.js → chunk-FMBD7UC4-CPlukapU.js} +1 -1
  92. package/dist/server/assets/{chunk-QN33PNHL-9tTIFZTB.js → chunk-QN33PNHL-BBEzEMyZ.js} +1 -1
  93. package/dist/server/assets/{chunk-QZHKN3VN-CQD5IUAL.js → chunk-QZHKN3VN-BbJAuOLh.js} +1 -1
  94. package/dist/server/assets/{chunk-TZMSLE5B-jMi7C9xq.js → chunk-TZMSLE5B-DXQ0720e.js} +1 -1
  95. package/dist/server/assets/{classDiagram-v2-WZHVMYZB-BA0nXDYs.js → classDiagram-2ON5EDUG-Dd_NiCJt.js} +5 -5
  96. package/dist/server/assets/{classDiagram-2ON5EDUG-BA0nXDYs.js → classDiagram-v2-WZHVMYZB-Dd_NiCJt.js} +5 -5
  97. package/dist/server/assets/clike-xqXYL6ge.js +805 -0
  98. package/dist/server/assets/{clone-BxCmpdXf.js → clone-D2G5HtzD.js} +1 -1
  99. package/dist/server/assets/{cose-bilkent-S5V4N54A-CkINSUhh.js → cose-bilkent-S5V4N54A-D9MbA73U.js} +1 -1
  100. package/dist/server/assets/{dagre-6UL2VRFP-BqzGOyEx.js → dagre-6UL2VRFP-3X8TKKNF.js} +6 -6
  101. package/dist/server/assets/{diagram-PSM6KHXK-VebVrDpW.js → diagram-PSM6KHXK-BifH8r_E.js} +7 -7
  102. package/dist/server/assets/{diagram-QEK2KX5R-BvyHvb1q.js → diagram-QEK2KX5R-CpM2yo3A.js} +6 -6
  103. package/dist/server/assets/{diagram-S2PKOQOG-B8goNnsj.js → diagram-S2PKOQOG-Dem9oHxL.js} +6 -6
  104. package/dist/server/assets/{erDiagram-Q2GNP2WA-BcjilkRw.js → erDiagram-Q2GNP2WA-Cv2t_qcc.js} +4 -4
  105. package/dist/server/assets/{flowDiagram-NV44I4VS-DHAz3SxN.js → flowDiagram-NV44I4VS-DO9viNx6.js} +5 -5
  106. package/dist/server/assets/{ganttDiagram-JELNMOA3-52f5bTC2.js → ganttDiagram-JELNMOA3-BQLkwHvs.js} +1 -1
  107. package/dist/server/assets/{gitGraph-G5XIXVHT-Bgqr7JP3.js → gitGraph-G5XIXVHT-Rf89GAs0.js} +6 -6
  108. package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-FbdmGq-M.js → gitGraphDiagram-V2S2FVAM-Cn1yq3PZ.js} +7 -7
  109. package/dist/server/assets/{graph-DDmq4O_B.js → graph-DdtTxequ.js} +2 -2
  110. package/dist/server/assets/{highlighted-body-B3W2YXNL-CYHh4OgM.js → highlighted-body-B3W2YXNL-DGIqRI0V.js} +1 -1
  111. package/dist/server/assets/{index-C1uM7oUj.js → index-B7HiLzkZ.js} +3 -3
  112. package/dist/server/assets/{index-DIM8z75Y.js → index-Bd47fsM9.js} +5 -5
  113. package/dist/server/assets/{index-B9Uf27go.js → index-C7aw98b-.js} +2 -2
  114. package/dist/server/assets/{index-BpqPCP54.js → index-CEu724dC.js} +2 -2
  115. package/dist/server/assets/{index-BPkfrfUo.js → index-CN-GsVYc.js} +2 -2
  116. package/dist/server/assets/{index-C7DnXrUx.js → index-COXowzgf.js} +4 -4
  117. package/dist/server/assets/{index-DV0oV1aJ.js → index-CSvLh_Yz.js} +2 -2
  118. package/dist/server/assets/{index-B-aV-zvo.js → index-CVQ-l3zd.js} +2 -2
  119. package/dist/server/assets/{index-BJ-zYyy7.js → index-CZSZYqEH.js} +2 -2
  120. package/dist/server/assets/{index-b-ToRK86.js → index-D0gkB7DS.js} +1 -1
  121. package/dist/server/assets/{index-BqgyveYS.js → index-DF0W4io9.js} +3 -3
  122. package/dist/server/assets/{index-yImIxy9C.js → index-DKFYHMSW.js} +2 -2
  123. package/dist/server/assets/{index-ByjtLqv-.js → index-IABw8d2w.js} +2 -2
  124. package/dist/server/assets/{index-BLYKLsr8.js → index-_XlsLUmp.js} +2 -2
  125. package/dist/server/assets/{index-CbrgO9Py.js → index-dA-FNez1.js} +5 -5
  126. package/dist/server/assets/{index-Dh2e2-op.js → index-eS7k7NKN.js} +2 -2
  127. package/dist/server/assets/{index-CNXUBnWF.js → index-iwREUWd1.js} +2 -2
  128. package/dist/server/assets/{index-CN6Wkz5N.js → index-rDKMQzl_.js} +1 -1
  129. package/dist/server/assets/{info-VBDWY6EO-niG3bn42.js → info-VBDWY6EO-DVBWXH0S.js} +6 -6
  130. package/dist/server/assets/{infoDiagram-HS3SLOUP-C0ZcYc2V.js → infoDiagram-HS3SLOUP-Dn-PUlKq.js} +5 -5
  131. package/dist/server/assets/{journeyDiagram-XKPGCS4Q-DlzIOQ2Q.js → journeyDiagram-XKPGCS4Q-C1eLAzL9.js} +4 -4
  132. package/dist/server/assets/{kanban-definition-3W4ZIXB7-DVR-_Oli.js → kanban-definition-3W4ZIXB7-DFHxxNcb.js} +2 -2
  133. package/dist/server/assets/{layout-DrEsLnWz.js → layout-BEatsupl.js} +4 -4
  134. package/dist/server/assets/{mermaid-3ZIDBTTL-DSjx-3jg.js → mermaid-3ZIDBTTL-8mt5O2g5.js} +1 -1
  135. package/dist/server/assets/{mermaid-parser.core-BktN7pRz.js → mermaid-parser.core-BLOfHo-D.js} +11 -11
  136. package/dist/server/assets/{mindmap-definition-VGOIOE7T-C3p_lEUY.js → mindmap-definition-VGOIOE7T-B5_qScJU.js} +3 -3
  137. package/dist/server/assets/{packet-DYOGHKS2-BUqJsUFr.js → packet-DYOGHKS2-DYeTXPnX.js} +6 -6
  138. package/dist/server/assets/{pie-VRWISCQL-jcPaeZCL.js → pie-VRWISCQL-BlyZBKB0.js} +6 -6
  139. package/dist/server/assets/{pieDiagram-ADFJNKIX-BroIyG3N.js → pieDiagram-ADFJNKIX-CwWqz5Xf.js} +7 -7
  140. package/dist/server/assets/{quadrantDiagram-AYHSOK5B-DMH-yS8Y.js → quadrantDiagram-AYHSOK5B-BZ8A8mON.js} +1 -1
  141. package/dist/server/assets/{radar-ZZBFDIW7-C3KENTEn.js → radar-ZZBFDIW7-B60czbOE.js} +6 -6
  142. package/dist/server/assets/{requirementDiagram-UZGBJVZJ-BmwXQjqZ.js → requirementDiagram-UZGBJVZJ-Cctcn3D4.js} +3 -3
  143. package/dist/server/assets/{router-Cne-GWAI.js → router-V4X9DgJt.js} +2266 -506
  144. package/dist/server/assets/{sankeyDiagram-TZEHDZUN-BgYyRe28.js → sankeyDiagram-TZEHDZUN-Bvyi-a8d.js} +1 -1
  145. package/dist/server/assets/{sequenceDiagram-WL72ISMW-DKSZXEOM.js → sequenceDiagram-WL72ISMW-C83rLE-r.js} +3 -3
  146. package/dist/server/assets/{square-terminal-Dq10fSle.js → square-terminal-Dcy5Z6a4.js} +1 -1
  147. package/dist/server/assets/{stateDiagram-FKZM4ZOC-ByoaVX2u.js → stateDiagram-FKZM4ZOC-lfXNq0DS.js} +8 -8
  148. package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-BgkMjukC.js → stateDiagram-v2-4FDKWEC3-BkZqIjkI.js} +4 -4
  149. package/dist/server/assets/{timeline-definition-IT6M3QCI-ByMKy2X3.js → timeline-definition-IT6M3QCI-CejT7_79.js} +2 -2
  150. package/dist/server/assets/{treemap-GDKQZRPO-QFA03rde.js → treemap-GDKQZRPO-Dvu1YI6l.js} +6 -6
  151. package/dist/server/assets/{workspace._workspaceId-LFuKLA8U.js → workspace._workspaceId-BpnCyMIU.js} +11 -9
  152. package/dist/server/assets/{workspace._workspaceId-DfI3AStI.js → workspace._workspaceId-D20Q15rI.js} +1 -1
  153. package/dist/server/assets/{xychartDiagram-PRI3JC2R-DBO0yxoy.js → xychartDiagram-PRI3JC2R-DmHHkA_A.js} +1 -1
  154. package/dist/server/server.js +2 -2
  155. package/dist/start-server.mjs +1618 -806
  156. package/package.json +5 -4
  157. package/dist/client/assets/TerminalPanel-CDDGecbZ.js +0 -5
  158. package/dist/client/assets/channel-8nL7_R0T.js +0 -1
  159. package/dist/client/assets/classDiagram-2ON5EDUG-DC6mHowO.js +0 -1
  160. package/dist/client/assets/classDiagram-v2-WZHVMYZB-DC6mHowO.js +0 -1
  161. package/dist/client/assets/clone-DI4tbye2.js +0 -1
  162. package/dist/client/assets/main-DZa742Ns.css +0 -1
  163. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-Dtt72DXR.js +0 -1
  164. package/dist/client/assets/workspace._workspaceId-B4tmTDq0.js +0 -2
  165. package/dist/server/assets/_tanstack-start-manifest_v-DnlOZCmi.js +0 -4
@@ -1,5 +1,5 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../server.js";
2
- import { m as createLucideIcon, bX as ArrowLeft, c7 as ArrowRight, c8 as ArrowUp, c9 as ArrowDown, X, ca as ClipboardPaste, c1 as useSettingsQuery, cb as getCurrentZoomLevel, cc as openExternalUrl, cd as subscribeToZoomChanges, ce as SearchBar, cf as ZOOM_CSS_VAR } from "./router-Cne-GWAI.js";
2
+ import { m as createLucideIcon, bX as ArrowLeft, cc as ArrowUp, cd as ArrowDown, ce as ArrowRight, X, cf as ClipboardPaste, c3 as useSettingsQuery, cg as getCurrentZoomLevel, ch as openExternalUrl, ci as subscribeToZoomChanges, cj as SearchBar, ck as ZOOM_CSS_VAR } from "./router-V4X9DgJt.js";
3
3
  import "node:async_hooks";
4
4
  import "node:stream";
5
5
  import "util";
@@ -10,14 +10,21 @@ import "node:stream/web";
10
10
  import "node:process";
11
11
  import "node:path";
12
12
  import "node:url";
13
- const __iconNode$1 = [
13
+ const __iconNode$3 = [
14
14
  ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }],
15
15
  ["path", { d: "M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2", key: "4jdomd" }],
16
16
  ["path", { d: "M16 4h2a2 2 0 0 1 2 2v4", key: "3hqy98" }],
17
17
  ["path", { d: "M21 14H11", key: "1bme5i" }],
18
18
  ["path", { d: "m15 10-4 4 4 4", key: "5dvupr" }]
19
19
  ];
20
- const ClipboardCopy = createLucideIcon("clipboard-copy", __iconNode$1);
20
+ const ClipboardCopy = createLucideIcon("clipboard-copy", __iconNode$3);
21
+ const __iconNode$2 = [
22
+ ["path", { d: "M20 4v7a4 4 0 0 1-4 4H4", key: "6o5b7l" }],
23
+ ["path", { d: "m9 10-5 5 5 5", key: "1kshq7" }]
24
+ ];
25
+ const CornerDownLeft = createLucideIcon("corner-down-left", __iconNode$2);
26
+ const __iconNode$1 = [["path", { d: "M22 2 2 22", key: "y4kqgn" }]];
27
+ const Slash = createLucideIcon("slash", __iconNode$1);
21
28
  const __iconNode = [
22
29
  ["path", { d: "M12 20h-1a2 2 0 0 1-2-2 2 2 0 0 1-2 2H6", key: "1528k5" }],
23
30
  ["path", { d: "M13 8h7a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-7", key: "13ksps" }],
@@ -191,6 +198,8 @@ async function readClipboardText() {
191
198
  }
192
199
  const SEQ_ESC = "\x1B";
193
200
  const SEQ_TAB = " ";
201
+ const SEQ_ENTER = "\r";
202
+ const SEQ_SLASH = "/";
194
203
  const SEQ_ARROW_UP = "\x1B[A";
195
204
  const SEQ_ARROW_DOWN = "\x1B[B";
196
205
  const SEQ_ARROW_RIGHT = "\x1B[C";
@@ -235,18 +244,18 @@ function TerminalToolbar({
235
244
  const idleArrows = reactExports.useMemo(
236
245
  () => [
237
246
  { Icon: ArrowLeft, seq: SEQ_ARROW_LEFT, ariaLabel: "Arrow Left" },
238
- { Icon: ArrowRight, seq: SEQ_ARROW_RIGHT, ariaLabel: "Arrow Right" },
239
247
  { Icon: ArrowUp, seq: SEQ_ARROW_UP, ariaLabel: "Arrow Up" },
240
- { Icon: ArrowDown, seq: SEQ_ARROW_DOWN, ariaLabel: "Arrow Down" }
248
+ { Icon: ArrowDown, seq: SEQ_ARROW_DOWN, ariaLabel: "Arrow Down" },
249
+ { Icon: ArrowRight, seq: SEQ_ARROW_RIGHT, ariaLabel: "Arrow Right" }
241
250
  ],
242
251
  []
243
252
  );
244
253
  const selectionArrows = reactExports.useMemo(
245
254
  () => [
246
255
  { Icon: ArrowLeft, dir: "left", ariaLabel: "Extend selection left" },
247
- { Icon: ArrowRight, dir: "right", ariaLabel: "Extend selection right" },
248
256
  { Icon: ArrowUp, dir: "up", ariaLabel: "Extend selection up" },
249
- { Icon: ArrowDown, dir: "down", ariaLabel: "Extend selection down" }
257
+ { Icon: ArrowDown, dir: "down", ariaLabel: "Extend selection down" },
258
+ { Icon: ArrowRight, dir: "right", ariaLabel: "Extend selection right" }
250
259
  ],
251
260
  []
252
261
  );
@@ -260,109 +269,131 @@ function TerminalToolbar({
260
269
  "aria-label": selectionMode ? "Terminal selection controls" : "Terminal accessory keys",
261
270
  style: { bottom: bottomOffset },
262
271
  className: "fixed inset-x-0 z-50 flex justify-center border-t border-border bg-background/95 shadow-lg backdrop-blur-md",
263
- children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex w-full max-w-3xl items-center gap-1 overflow-x-auto px-2 py-1.5", children: selectionMode ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
264
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
265
- ToolbarButton,
266
- {
267
- ariaLabel: "Copy selection and exit",
268
- title: "Copy",
269
- onPointerDown: tap(handleCopyAndExit),
270
- variant: "primary",
271
- children: [
272
- /* @__PURE__ */ jsxRuntimeExports.jsx(ClipboardCopy, { className: "size-4" }),
273
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs", children: "Copy" })
274
- ]
275
- }
276
- ),
277
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
278
- ToolbarButton,
279
- {
280
- ariaLabel: "Exit selection mode",
281
- title: "Done",
282
- onPointerDown: tap(onExitSelection),
283
- children: [
284
- /* @__PURE__ */ jsxRuntimeExports.jsx(X, { className: "size-4" }),
285
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs", children: "Done" })
286
- ]
287
- }
288
- ),
289
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mx-1 h-6 w-px shrink-0 bg-border", "aria-hidden": "true" }),
290
- /* @__PURE__ */ jsxRuntimeExports.jsx(
291
- "span",
292
- {
293
- className: "mr-1 shrink-0 select-none text-xs font-medium uppercase tracking-wide text-muted-foreground",
294
- "aria-hidden": "true",
295
- children: "Extend"
296
- }
297
- ),
298
- selectionArrows.map(({ Icon, dir, ariaLabel }) => /* @__PURE__ */ jsxRuntimeExports.jsx(
299
- ToolbarButton,
300
- {
301
- ariaLabel,
302
- title: ariaLabel,
303
- onPointerDown: tap(() => onExtendSelection(dir)),
304
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, { className: "size-4" })
305
- },
306
- dir
307
- ))
308
- ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
309
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
310
- ToolbarButton,
311
- {
312
- ariaLabel: "Paste from clipboard",
313
- title: "Paste",
314
- onPointerDown: tap(handlePaste),
315
- children: [
316
- /* @__PURE__ */ jsxRuntimeExports.jsx(ClipboardPaste, { className: "size-4" }),
317
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs", children: "Paste" })
318
- ]
319
- }
320
- ),
321
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
322
- ToolbarButton,
323
- {
324
- ariaLabel: "Select all",
325
- title: "Select all",
326
- onPointerDown: tap(onSelectAll),
327
- children: [
328
- /* @__PURE__ */ jsxRuntimeExports.jsx(TextCursorInput, { className: "size-4" }),
329
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs", children: "All" })
330
- ]
331
- }
332
- ),
333
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mx-1 h-6 w-px shrink-0 bg-border", "aria-hidden": "true" }),
334
- idleKeyButtons.map(({ label, seq, ariaLabel }) => /* @__PURE__ */ jsxRuntimeExports.jsx(
335
- ToolbarButton,
336
- {
337
- ariaLabel,
338
- title: label,
339
- onPointerDown: tap(() => sendInput(seq)),
340
- children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs font-medium", children: label })
341
- },
342
- label
343
- )),
272
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex w-full max-w-3xl items-center gap-1 px-2 py-1.5", children: [
273
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex min-w-0 flex-1 items-center gap-1 overflow-x-auto", children: selectionMode ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
274
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
275
+ ToolbarButton,
276
+ {
277
+ ariaLabel: "Copy selection and exit",
278
+ title: "Copy",
279
+ onPointerDown: tap(handleCopyAndExit),
280
+ variant: "primary",
281
+ children: [
282
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ClipboardCopy, { className: "size-4" }),
283
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs", children: "Copy" })
284
+ ]
285
+ }
286
+ ),
287
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
288
+ ToolbarButton,
289
+ {
290
+ ariaLabel: "Exit selection mode",
291
+ title: "Done",
292
+ onPointerDown: tap(onExitSelection),
293
+ children: [
294
+ /* @__PURE__ */ jsxRuntimeExports.jsx(X, { className: "size-4" }),
295
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs", children: "Done" })
296
+ ]
297
+ }
298
+ ),
299
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mx-1 h-6 w-px shrink-0 bg-border", "aria-hidden": "true" }),
300
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
301
+ "span",
302
+ {
303
+ className: "mr-1 shrink-0 select-none text-xs font-medium uppercase tracking-wide text-muted-foreground",
304
+ "aria-hidden": "true",
305
+ children: "Extend"
306
+ }
307
+ ),
308
+ selectionArrows.map(({ Icon, dir, ariaLabel }) => /* @__PURE__ */ jsxRuntimeExports.jsx(
309
+ ToolbarButton,
310
+ {
311
+ ariaLabel,
312
+ title: ariaLabel,
313
+ onPointerDown: tap(() => onExtendSelection(dir)),
314
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, { className: "size-4" })
315
+ },
316
+ dir
317
+ ))
318
+ ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
319
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
320
+ ToolbarButton,
321
+ {
322
+ ariaLabel: "Paste from clipboard",
323
+ title: "Paste",
324
+ onPointerDown: tap(handlePaste),
325
+ children: [
326
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ClipboardPaste, { className: "size-4" }),
327
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs", children: "Paste" })
328
+ ]
329
+ }
330
+ ),
331
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
332
+ ToolbarButton,
333
+ {
334
+ ariaLabel: "Select all",
335
+ title: "Select all",
336
+ onPointerDown: tap(onSelectAll),
337
+ children: [
338
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TextCursorInput, { className: "size-4" }),
339
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs", children: "All" })
340
+ ]
341
+ }
342
+ ),
343
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mx-1 h-6 w-px shrink-0 bg-border", "aria-hidden": "true" }),
344
+ idleKeyButtons.map(({ label, seq, ariaLabel }) => /* @__PURE__ */ jsxRuntimeExports.jsx(
345
+ ToolbarButton,
346
+ {
347
+ ariaLabel,
348
+ title: label,
349
+ onPointerDown: tap(() => sendInput(seq)),
350
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs font-medium", children: label })
351
+ },
352
+ label
353
+ )),
354
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
355
+ ToolbarButton,
356
+ {
357
+ ariaLabel: "Send slash",
358
+ title: "Slash command",
359
+ onPointerDown: tap(() => sendInput(SEQ_SLASH)),
360
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Slash, { className: "size-4" })
361
+ }
362
+ ),
363
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
364
+ ToolbarButton,
365
+ {
366
+ ariaLabel: pendingCtrl ? "Cancel pending Ctrl" : "Arm Ctrl modifier",
367
+ title: "Ctrl (sticky — taps the next key as Ctrl+key)",
368
+ onPointerDown: tap(onToggleCtrl),
369
+ active: pendingCtrl,
370
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs font-medium", children: "Ctrl" })
371
+ }
372
+ ),
373
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mx-1 h-6 w-px shrink-0 bg-border", "aria-hidden": "true" }),
374
+ idleArrows.map(({ Icon, seq, ariaLabel }) => /* @__PURE__ */ jsxRuntimeExports.jsx(
375
+ ToolbarButton,
376
+ {
377
+ ariaLabel,
378
+ title: ariaLabel,
379
+ onPointerDown: tap(() => sendInput(seq)),
380
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, { className: "size-4" })
381
+ },
382
+ ariaLabel
383
+ ))
384
+ ] }) }),
385
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-6 w-px shrink-0 bg-border", "aria-hidden": "true" }),
344
386
  /* @__PURE__ */ jsxRuntimeExports.jsx(
345
387
  ToolbarButton,
346
388
  {
347
- ariaLabel: pendingCtrl ? "Cancel pending Ctrl" : "Arm Ctrl modifier",
348
- title: "Ctrl (sticky — taps the next key as Ctrl+key)",
349
- onPointerDown: tap(onToggleCtrl),
350
- active: pendingCtrl,
351
- children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs font-medium", children: "Ctrl" })
389
+ ariaLabel: "Send Enter",
390
+ title: "Enter",
391
+ onPointerDown: tap(() => sendInput(SEQ_ENTER)),
392
+ variant: "primary",
393
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(CornerDownLeft, { className: "size-4" })
352
394
  }
353
- ),
354
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mx-1 h-6 w-px shrink-0 bg-border", "aria-hidden": "true" }),
355
- idleArrows.map(({ Icon, seq, ariaLabel }) => /* @__PURE__ */ jsxRuntimeExports.jsx(
356
- ToolbarButton,
357
- {
358
- ariaLabel,
359
- title: ariaLabel,
360
- onPointerDown: tap(() => sendInput(seq)),
361
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, { className: "size-4" })
362
- },
363
- ariaLabel
364
- ))
365
- ] }) })
395
+ )
396
+ ] })
366
397
  }
367
398
  );
368
399
  }
@@ -774,50 +805,120 @@ function TerminalPanel({
774
805
  containerEl.addEventListener("touchend", onTapEnd, { passive: true });
775
806
  containerEl.addEventListener("touchcancel", onTapCancel, { passive: true });
776
807
  const proto = location.protocol === "https:" ? "wss:" : "ws:";
777
- const ws = new WebSocket(
778
- `${proto}//${location.host}/terminal?workspaceId=${encodeURIComponent(workspaceId)}&terminalId=${encodeURIComponent(terminalId)}`
779
- );
780
- wsRef.current = ws;
781
- ws.binaryType = "arraybuffer";
782
- ws.onopen = () => {
783
- if (paneMetadata && (paneMetadata.command || paneMetadata.cwd || paneMetadata.env)) {
784
- const initMsg = { type: "init" };
785
- if (paneMetadata.command) initMsg.command = paneMetadata.command;
786
- if (paneMetadata.cwd) initMsg.cwd = paneMetadata.cwd;
787
- if (paneMetadata.env) initMsg.env = paneMetadata.env;
788
- ws.send(JSON.stringify(initMsg));
808
+ const wsUrl = `${proto}//${location.host}/terminal?workspaceId=${encodeURIComponent(workspaceId)}&terminalId=${encodeURIComponent(terminalId)}`;
809
+ const HEARTBEAT_INTERVAL_MS = 1e4;
810
+ const HEARTBEAT_TIMEOUT_MS = 2e4;
811
+ const RECONNECT_BASE_MS = 500;
812
+ const RECONNECT_MAX_MS = 1e4;
813
+ let intentionalClose = false;
814
+ let didConnectOnce = false;
815
+ let reconnectAttempts = 0;
816
+ let reconnectTimer = null;
817
+ let heartbeatTimer = null;
818
+ let lastPongAt = 0;
819
+ const clearReconnectTimer = () => {
820
+ if (reconnectTimer !== null) {
821
+ clearTimeout(reconnectTimer);
822
+ reconnectTimer = null;
789
823
  }
790
- fitAddon.fit();
791
- ws.send(
792
- JSON.stringify({
793
- type: "resize",
794
- cols: terminal.cols,
795
- rows: terminal.rows
796
- })
797
- );
798
- if (autoFocus) {
799
- terminal.focus();
824
+ };
825
+ const stopHeartbeat = () => {
826
+ if (heartbeatTimer !== null) {
827
+ clearInterval(heartbeatTimer);
828
+ heartbeatTimer = null;
800
829
  }
801
830
  };
802
- ws.onmessage = (event) => {
803
- if (event.data instanceof ArrayBuffer) {
804
- terminal.write(new Uint8Array(event.data));
805
- } else {
806
- try {
807
- const msg = JSON.parse(event.data);
808
- if (msg.type === "title" && typeof msg.title === "string") {
809
- onTitleChangeRef.current?.(msg.title);
831
+ const probeConnection = () => {
832
+ const ws = wsRef.current;
833
+ if (!ws || ws.readyState !== WebSocket.OPEN) return;
834
+ if (Date.now() - lastPongAt > HEARTBEAT_TIMEOUT_MS) {
835
+ ws.close();
836
+ return;
837
+ }
838
+ try {
839
+ ws.send(JSON.stringify({ type: "ping" }));
840
+ } catch {
841
+ ws.close();
842
+ }
843
+ };
844
+ const scheduleReconnect = () => {
845
+ if (intentionalClose || reconnectTimer !== null) return;
846
+ const delay = Math.min(RECONNECT_BASE_MS * 2 ** reconnectAttempts, RECONNECT_MAX_MS);
847
+ if (delay < RECONNECT_MAX_MS) reconnectAttempts += 1;
848
+ reconnectTimer = setTimeout(() => {
849
+ reconnectTimer = null;
850
+ connect();
851
+ }, delay);
852
+ };
853
+ function connect() {
854
+ if (intentionalClose) return;
855
+ clearReconnectTimer();
856
+ const isReconnect = didConnectOnce;
857
+ const ws = new WebSocket(wsUrl);
858
+ wsRef.current = ws;
859
+ ws.binaryType = "arraybuffer";
860
+ ws.onopen = () => {
861
+ reconnectAttempts = 0;
862
+ lastPongAt = Date.now();
863
+ if (isReconnect) terminal.reset();
864
+ if (!didConnectOnce && paneMetadata && (paneMetadata.command || paneMetadata.cwd || paneMetadata.env)) {
865
+ const initMsg = { type: "init" };
866
+ if (paneMetadata.command) initMsg.command = paneMetadata.command;
867
+ if (paneMetadata.cwd) initMsg.cwd = paneMetadata.cwd;
868
+ if (paneMetadata.env) initMsg.env = paneMetadata.env;
869
+ ws.send(JSON.stringify(initMsg));
870
+ }
871
+ didConnectOnce = true;
872
+ fitAddon.fit();
873
+ ws.send(JSON.stringify({ type: "resize", cols: terminal.cols, rows: terminal.rows }));
874
+ if (autoFocus && !isReconnect) terminal.focus();
875
+ stopHeartbeat();
876
+ heartbeatTimer = setInterval(probeConnection, HEARTBEAT_INTERVAL_MS);
877
+ };
878
+ ws.onmessage = (event) => {
879
+ if (event.data instanceof ArrayBuffer) {
880
+ terminal.write(new Uint8Array(event.data));
881
+ } else {
882
+ try {
883
+ const msg = JSON.parse(event.data);
884
+ if (msg.type === "pong") {
885
+ lastPongAt = Date.now();
886
+ } else if (msg.type === "title" && typeof msg.title === "string") {
887
+ onTitleChangeRef.current?.(msg.title);
888
+ }
889
+ } catch {
890
+ terminal.write(event.data);
810
891
  }
811
- } catch {
812
- terminal.write(event.data);
813
892
  }
893
+ };
894
+ ws.onclose = () => {
895
+ if (wsRef.current !== ws) return;
896
+ stopHeartbeat();
897
+ if (intentionalClose) return;
898
+ terminal.write("\r\n\x1B[90m[Reconnecting…]\x1B[0m\r\n");
899
+ scheduleReconnect();
900
+ };
901
+ }
902
+ const handleResume = () => {
903
+ if (intentionalClose) return;
904
+ const ws = wsRef.current;
905
+ if (!ws || ws.readyState === WebSocket.CLOSED || ws.readyState === WebSocket.CLOSING) {
906
+ reconnectAttempts = 0;
907
+ clearReconnectTimer();
908
+ connect();
909
+ } else if (ws.readyState === WebSocket.OPEN) {
910
+ probeConnection();
814
911
  }
815
912
  };
816
- ws.onclose = () => {
817
- terminal.write("\r\n\x1B[90m[Terminal disconnected]\x1B[0m\r\n");
913
+ const handleVisibility = () => {
914
+ if (!document.hidden) handleResume();
818
915
  };
916
+ window.addEventListener("online", handleResume);
917
+ document.addEventListener("visibilitychange", handleVisibility);
918
+ connect();
819
919
  terminal.onData((data) => {
820
- if (ws.readyState === WebSocket.OPEN) {
920
+ const ws = wsRef.current;
921
+ if (ws && ws.readyState === WebSocket.OPEN) {
821
922
  ws.send(data);
822
923
  }
823
924
  });
@@ -838,7 +939,8 @@ function TerminalPanel({
838
939
  const selectionResizeDisposable = terminal.onResize(reapplySelectionOnNextFrame);
839
940
  let lastDpr = window.devicePixelRatio;
840
941
  const sendPtyResize = () => {
841
- if (ws.readyState !== WebSocket.OPEN) return;
942
+ const ws = wsRef.current;
943
+ if (!ws || ws.readyState !== WebSocket.OPEN) return;
842
944
  if (terminal.cols <= 0 || terminal.rows <= 0) return;
843
945
  ws.send(
844
946
  JSON.stringify({
@@ -903,6 +1005,11 @@ function TerminalPanel({
903
1005
  };
904
1006
  bindDprListener();
905
1007
  cleanup = () => {
1008
+ intentionalClose = true;
1009
+ clearReconnectTimer();
1010
+ stopHeartbeat();
1011
+ window.removeEventListener("online", handleResume);
1012
+ document.removeEventListener("visibilitychange", handleVisibility);
906
1013
  themeObserver.disconnect();
907
1014
  resizeObserver.disconnect();
908
1015
  searchResultsDisposable.dispose();
@@ -923,7 +1030,7 @@ function TerminalPanel({
923
1030
  containerEl.removeEventListener("touchstart", onTapStart);
924
1031
  containerEl.removeEventListener("touchend", onTapEnd);
925
1032
  containerEl.removeEventListener("touchcancel", onTapCancel);
926
- ws.close();
1033
+ wsRef.current?.close();
927
1034
  terminal.dispose();
928
1035
  terminalRef.current = null;
929
1036
  fitAddonRef.current = null;
@@ -1,5 +1,5 @@
1
- import { e as isSymbol, c as baseFlatten, g as baseIteratee, k as keys, h as baseFindIndex, j as baseEach, l as arrayMap, m as hasPath, n as castPath, t as toKey, o as baseGet } from "./_baseUniq-BFd712qn.js";
2
- import { cY as isObject, bv as baseRest, cZ as isIterateeCall, c_ as keysIn, c$ as eq, d0 as isArrayLike, d1 as isArray, d2 as identity, d3 as isIndex, d4 as assignValue } from "./router-Cne-GWAI.js";
1
+ import { e as isSymbol, c as baseFlatten, g as baseIteratee, k as keys, h as baseFindIndex, j as baseEach, l as arrayMap, m as hasPath, n as castPath, t as toKey, o as baseGet } from "./_baseUniq-CevNURdU.js";
2
+ import { c_ as isObject, bv as baseRest, c$ as isIterateeCall, d0 as keysIn, d1 as eq, d2 as isArrayLike, d3 as isArray, d4 as identity, d5 as isIndex, d6 as assignValue } from "./router-V4X9DgJt.js";
3
3
  var reWhitespace = /\s/;
4
4
  function trimmedEndIndex(string) {
5
5
  var index = string.length;
@@ -1,4 +1,4 @@
1
- import { de as isObjectLike, df as baseGetTag, d1 as isArray, dg as Symbol$1, d0 as isArrayLike, dh as arrayLikeKeys, di as baseKeys, dj as memoize, dk as isArguments, dl as copyObject, c_ as keysIn, dm as getPrototype, dn as cloneArrayBuffer, dp as cloneTypedArray, dq as getTag, dc as baseUnary, dr as nodeUtil, cY as isObject, ds as copyArray, dt as isBuffer, du as cloneBuffer, dv as initCloneObject, dw as Stack, d4 as assignValue, dx as MapCache, c$ as eq, dy as Uint8Array, dz as isTypedArray, dA as isLength, d3 as isIndex, d2 as identity, da as baseFor, dB as Set } from "./router-Cne-GWAI.js";
1
+ import { dg as isObjectLike, dh as baseGetTag, d3 as isArray, di as Symbol$1, d2 as isArrayLike, dj as arrayLikeKeys, dk as baseKeys, dl as memoize, dm as isArguments, dn as copyObject, d0 as keysIn, dp as getPrototype, dq as cloneArrayBuffer, dr as cloneTypedArray, ds as getTag, de as baseUnary, dt as nodeUtil, c_ as isObject, du as copyArray, dv as isBuffer, dw as cloneBuffer, dx as initCloneObject, dy as Stack, d6 as assignValue, dz as MapCache, d1 as eq, dA as Uint8Array, dB as isTypedArray, dC as isLength, d5 as isIndex, d4 as identity, dc as baseFor, dD as Set } from "./router-V4X9DgJt.js";
2
2
  var symbolTag$3 = "[object Symbol]";
3
3
  function isSymbol(value) {
4
4
  return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag$3;
@@ -0,0 +1,4 @@
1
+ const tsrStartManifest = () => ({ "routes": { "__root__": { "filePath": "/Users/runner/work/band/band/apps/web/src/routes/__root.tsx", "children": ["/", "/workspace/$workspaceId"], "preloads": ["/assets/main-axhmccT5.js"], "assets": [{ "tag": "link", "attrs": { "rel": "stylesheet", "href": "/assets/main-BzKe6bG7.css", "type": "text/css" } }] }, "/": { "filePath": "/Users/runner/work/band/band/apps/web/src/routes/index.tsx", "assets": [{ "tag": "link", "attrs": { "rel": "stylesheet", "href": "/assets/main-BzKe6bG7.css", "type": "text/css" } }], "preloads": ["/assets/index-pr8WXb_L.js"] }, "/workspace/$workspaceId": { "filePath": "/Users/runner/work/band/band/apps/web/src/routes/workspace.$workspaceId.tsx", "assets": [{ "tag": "link", "attrs": { "rel": "stylesheet", "href": "/assets/main-BzKe6bG7.css", "type": "text/css" } }], "preloads": ["/assets/workspace._workspaceId-DorcrnsD.js", "/assets/square-terminal-BiJr_LVr.js"] } }, "clientEntry": "/assets/main-axhmccT5.js" });
2
+ export {
3
+ tsrStartManifest
4
+ };
@@ -1,4 +1,4 @@
1
- import { at as withPath, au as halfPi, av as epsilon, aw as tau, ax as cos, ay as sin, az as min, aA as abs, aB as pi, aC as sqrt, aD as atan2, aE as constant, aF as asin, aG as acos, aH as max } from "./router-Cne-GWAI.js";
1
+ import { at as withPath, au as halfPi, av as epsilon, aw as tau, ax as cos, ay as sin, az as min, aA as abs, aB as pi, aC as sqrt, aD as atan2, aE as constant, aF as asin, aG as acos, aH as max } from "./router-V4X9DgJt.js";
2
2
  function arcInnerRadius(d) {
3
3
  return d.innerRadius;
4
4
  }
@@ -1,6 +1,6 @@
1
- import { e as createArchitectureServices } from "./mermaid-parser.core-BktN7pRz.js";
2
- import { A } from "./mermaid-parser.core-BktN7pRz.js";
3
- import "./router-Cne-GWAI.js";
1
+ import { e as createArchitectureServices } from "./mermaid-parser.core-BLOfHo-D.js";
2
+ import { A } from "./mermaid-parser.core-BLOfHo-D.js";
3
+ import "./router-V4X9DgJt.js";
4
4
  import "../server.js";
5
5
  import "node:async_hooks";
6
6
  import "node:stream";
@@ -12,9 +12,9 @@ import "node:stream/web";
12
12
  import "node:process";
13
13
  import "node:path";
14
14
  import "node:url";
15
- import "./_baseUniq-BFd712qn.js";
16
- import "./_basePickBy-BYBSjWdr.js";
17
- import "./clone-BxCmpdXf.js";
15
+ import "./_baseUniq-CevNURdU.js";
16
+ import "./_basePickBy-Bgz-DXU9.js";
17
+ import "./clone-D2G5HtzD.js";
18
18
  import "path";
19
19
  import "os";
20
20
  import "net";
@@ -1,15 +1,15 @@
1
1
  var _a;
2
- import { _ as __name, ar as selectSvgElement, aW as setupGraphViewbox, W as log, S as setAccTitle, O as getAccTitle, aa as setDiagramTitle, ab as getDiagramTitle, M as getAccDescription, J as setAccDescription, ag as clear, an as cleanAndMerge, ao as defaultConfig_default, ap as getConfig, U as getConfig2, b4 as createText, cg as getIconSVG, a0 as sanitizeText, V as select, af as getEdgeId, ch as registerIconPacks, ci as unknownIcon } from "./router-Cne-GWAI.js";
3
- import { p as populateCommonDb } from "./chunk-4BX2VUAB-BddWsJMu.js";
4
- import { p as parse } from "./mermaid-parser.core-BktN7pRz.js";
2
+ import { _ as __name, ar as selectSvgElement, aW as setupGraphViewbox, W as log, S as setAccTitle, O as getAccTitle, aa as setDiagramTitle, ab as getDiagramTitle, M as getAccDescription, J as setAccDescription, ag as clear, an as cleanAndMerge, ao as defaultConfig_default, ap as getConfig, U as getConfig2, b4 as createText, c9 as getIconSVG, a0 as sanitizeText, V as select, af as getEdgeId, ca as registerIconPacks, cb as unknownIcon } from "./router-V4X9DgJt.js";
3
+ import { p as populateCommonDb } from "./chunk-4BX2VUAB-DHfsBptR.js";
4
+ import { p as parse } from "./mermaid-parser.core-BLOfHo-D.js";
5
5
  import { c as cytoscape$1 } from "./cytoscape.esm-Bm8DJGmZ.js";
6
6
  import { g as getDefaultExportFromCjs } from "../server.js";
7
7
  import "node:process";
8
8
  import "node:path";
9
9
  import "node:url";
10
- import "./_baseUniq-BFd712qn.js";
11
- import "./_basePickBy-BYBSjWdr.js";
12
- import "./clone-BxCmpdXf.js";
10
+ import "./_baseUniq-CevNURdU.js";
11
+ import "./_basePickBy-Bgz-DXU9.js";
12
+ import "./clone-D2G5HtzD.js";
13
13
  import "util";
14
14
  import "path";
15
15
  import "os";
@@ -1,8 +1,8 @@
1
- import { g as getIconStyles } from "./chunk-FMBD7UC4-BoFKStlk.js";
2
- import { _ as __name, ap as getConfig, V as select, Y as configureSvgSize, W as log, ag as clear, ai as rgba, b2 as getLineFunctionsWithOffset, aM as line, aU as curveBasis, U as getConfig2, aR as getUrl, b3 as evaluate, b4 as createText, b5 as getSubGraphTitleMargins, a9 as utils_default, a3 as common_default, b6 as replaceIconSubstring, b7 as decodeEntities, a0 as sanitizeText, b8 as getStylesFromArray } from "./router-Cne-GWAI.js";
3
- import { c as clone } from "./clone-BxCmpdXf.js";
4
- import { G as Graph } from "./graph-DDmq4O_B.js";
5
- import { c as channel } from "./channel-HTn7VGn7.js";
1
+ import { g as getIconStyles } from "./chunk-FMBD7UC4-CPlukapU.js";
2
+ import { _ as __name, ap as getConfig, V as select, Y as configureSvgSize, W as log, ag as clear, ai as rgba, b2 as getLineFunctionsWithOffset, aM as line, aU as curveBasis, U as getConfig2, aR as getUrl, b3 as evaluate, b4 as createText, b5 as getSubGraphTitleMargins, a9 as utils_default, a3 as common_default, b6 as replaceIconSubstring, b7 as decodeEntities, a0 as sanitizeText, b8 as getStylesFromArray } from "./router-V4X9DgJt.js";
3
+ import { c as clone } from "./clone-D2G5HtzD.js";
4
+ import { G as Graph } from "./graph-DdtTxequ.js";
5
+ import { c as channel } from "./channel-DFaIo-PG.js";
6
6
  import "../server.js";
7
7
  import "node:async_hooks";
8
8
  import "node:stream";
@@ -14,7 +14,7 @@ import "node:stream/web";
14
14
  import "node:process";
15
15
  import "node:path";
16
16
  import "node:url";
17
- import "./_baseUniq-BFd712qn.js";
17
+ import "./_baseUniq-CevNURdU.js";
18
18
  var parser = (function() {
19
19
  var o = /* @__PURE__ */ __name(function(k, v, o2, l) {
20
20
  for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;
@@ -1,6 +1,6 @@
1
1
  var _a, _b;
2
- import { g as getNoteRect, d as drawRect } from "./chunk-TZMSLE5B-jMi7C9xq.js";
3
- import { J as setAccDescription, M as getAccDescription, O as getAccTitle, S as setAccTitle, _ as __name, U as getConfig2, V as select, W as log, Y as configureSvgSize, Z as assignWithDepth_default, $ as calculateTextWidth, a0 as sanitizeText, a1 as distExports, a2 as wrapLabel, a3 as common_default, a4 as calculateTextHeight } from "./router-Cne-GWAI.js";
2
+ import { g as getNoteRect, d as drawRect } from "./chunk-TZMSLE5B-DXQ0720e.js";
3
+ import { J as setAccDescription, M as getAccDescription, O as getAccTitle, S as setAccTitle, _ as __name, U as getConfig2, V as select, W as log, Y as configureSvgSize, Z as assignWithDepth_default, $ as calculateTextWidth, a0 as sanitizeText, a1 as distExports, a2 as wrapLabel, a3 as common_default, a4 as calculateTextHeight } from "./router-V4X9DgJt.js";
4
4
  import "../server.js";
5
5
  import "node:async_hooks";
6
6
  import "node:stream";
@@ -1,4 +1,4 @@
1
- import { aj as Utils, ak as Color } from "./router-Cne-GWAI.js";
1
+ import { aj as Utils, ak as Color } from "./router-V4X9DgJt.js";
2
2
  const channel = (color, channel2) => {
3
3
  return Utils.lang.round(Color.parse(color)[channel2]);
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as __name } from "./router-Cne-GWAI.js";
1
+ import { _ as __name } from "./router-V4X9DgJt.js";
2
2
  function populateCommonDb(ast, db) {
3
3
  if (ast.accDescr) {
4
4
  db.setAccDescription?.(ast.accDescr);
@@ -1,4 +1,4 @@
1
- import { _ as __name, V as select } from "./router-Cne-GWAI.js";
1
+ import { _ as __name, V as select } from "./router-V4X9DgJt.js";
2
2
  var getDiagramElement = /* @__PURE__ */ __name((id, securityLevel) => {
3
3
  let sandboxElement;
4
4
  if (securityLevel === "sandbox") {