@band-app/server 0.19.0 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/dist/client/assets/{DockviewBrowserContainer-DZtIWqpD.js → DockviewBrowserContainer-4SeBGy5m.js} +2 -2
  2. package/dist/client/assets/{DockviewTerminalContainer-CuCLFf9Q.js → DockviewTerminalContainer-DWva1wNl.js} +2 -2
  3. package/dist/client/assets/TerminalPanel-CEmBYkjb.js +5 -0
  4. package/dist/client/assets/{_basePickBy-CO9jQnZa.js → _basePickBy-CV44VSwA.js} +1 -1
  5. package/dist/client/assets/{_baseUniq-DGqwnf8z.js → _baseUniq-Bqa44Er5.js} +1 -1
  6. package/dist/client/assets/{arc-BMkYdJIp.js → arc-4rU3SEWf.js} +1 -1
  7. package/dist/client/assets/{architectureDiagram-VXUJARFQ-CQCPK2yK.js → architectureDiagram-VXUJARFQ-CapSrTlr.js} +1 -1
  8. package/dist/client/assets/{blockDiagram-VD42YOAC-DdR7KelQ.js → blockDiagram-VD42YOAC-DnapbSnI.js} +1 -1
  9. package/dist/client/assets/{c4Diagram-YG6GDRKO-R9AqKMUN.js → c4Diagram-YG6GDRKO-9mZ9PPiM.js} +1 -1
  10. package/dist/client/assets/channel-NIcS3uxn.js +1 -0
  11. package/dist/client/assets/{chunk-4BX2VUAB-BnKGVCzE.js → chunk-4BX2VUAB--rr32b4E.js} +1 -1
  12. package/dist/client/assets/{chunk-55IACEB6-By56kV4y.js → chunk-55IACEB6-DfxuD1M3.js} +1 -1
  13. package/dist/client/assets/{chunk-B4BG7PRW-Mdspuz8t.js → chunk-B4BG7PRW-CxvnNatf.js} +1 -1
  14. package/dist/client/assets/{chunk-DI55MBZ5-iyZEN5hA.js → chunk-DI55MBZ5-F51NTwRL.js} +1 -1
  15. package/dist/client/assets/{chunk-FMBD7UC4-DMP1kj21.js → chunk-FMBD7UC4-S03fYfOP.js} +1 -1
  16. package/dist/client/assets/{chunk-QN33PNHL-DcPxVAYl.js → chunk-QN33PNHL-BQWA4OqL.js} +1 -1
  17. package/dist/client/assets/{chunk-QZHKN3VN-Bp7cG1_B.js → chunk-QZHKN3VN-DuLFP0og.js} +1 -1
  18. package/dist/client/assets/{chunk-TZMSLE5B-pNRrcxP_.js → chunk-TZMSLE5B-BXGn_e4G.js} +1 -1
  19. package/dist/client/assets/classDiagram-2ON5EDUG-8p3oACYV.js +1 -0
  20. package/dist/client/assets/classDiagram-v2-WZHVMYZB-8p3oACYV.js +1 -0
  21. package/dist/client/assets/clike-B9uivgTg.js +1 -0
  22. package/dist/client/assets/clone-Be31g1pc.js +1 -0
  23. package/dist/client/assets/{cose-bilkent-S5V4N54A-CSNWhuW5.js → cose-bilkent-S5V4N54A-BD5JLmQ6.js} +1 -1
  24. package/dist/client/assets/{dagre-6UL2VRFP-2AP9Vpxl.js → dagre-6UL2VRFP-jd9MqFa1.js} +1 -1
  25. package/dist/client/assets/{diagram-PSM6KHXK-HtGU4kRc.js → diagram-PSM6KHXK-Bv0WGkj7.js} +1 -1
  26. package/dist/client/assets/{diagram-QEK2KX5R-K2WsknJk.js → diagram-QEK2KX5R-oszH6q3s.js} +1 -1
  27. package/dist/client/assets/{diagram-S2PKOQOG-BDEONaZX.js → diagram-S2PKOQOG-D7rVDuLY.js} +1 -1
  28. package/dist/client/assets/{erDiagram-Q2GNP2WA-CPBjK29N.js → erDiagram-Q2GNP2WA-BL9gntWo.js} +1 -1
  29. package/dist/client/assets/{flowDiagram-NV44I4VS-Bxg-lsJi.js → flowDiagram-NV44I4VS-1FCz1fgN.js} +1 -1
  30. package/dist/client/assets/{ganttDiagram-JELNMOA3-CfsLGU7a.js → ganttDiagram-JELNMOA3-DggjOINy.js} +3 -3
  31. package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-DSZ8yygB.js → gitGraphDiagram-V2S2FVAM-uoayvKXp.js} +1 -1
  32. package/dist/client/assets/{graph-CrcNy0Ae.js → graph-CKeOhxc0.js} +1 -1
  33. package/dist/client/assets/{highlighted-body-B3W2YXNL-CPmygcyP.js → highlighted-body-B3W2YXNL-BfaZeU0X.js} +1 -1
  34. package/dist/client/assets/{index-CQixBiQh.js → index-BOdO7r_p.js} +1 -1
  35. package/dist/client/assets/{index-CUf8QFIy.js → index-BVhi8EPL.js} +1 -1
  36. package/dist/client/assets/{index-CNLX1boT.js → index-BZW8u43a.js} +1 -1
  37. package/dist/client/assets/{index-DPbyu5Yx.js → index-Be24TlVT.js} +1 -1
  38. package/dist/client/assets/{index-BCP4tBa7.js → index-BhrvrUs_.js} +1 -1
  39. package/dist/client/assets/{index-J9vyzIxg.js → index-BmEmzTZO.js} +1 -1
  40. package/dist/client/assets/{index-BILlMvI9.js → index-CdwShVnF.js} +1 -1
  41. package/dist/client/assets/{index-BsrQ2eX6.js → index-ChvBXbK8.js} +1 -1
  42. package/dist/client/assets/{index-DiDm-B1D.js → index-Cx9QoFI1.js} +1 -1
  43. package/dist/client/assets/{index-ByaEwL4Q.js → index-DTOEFzQN.js} +1 -1
  44. package/dist/client/assets/{index-Dw0-IJHh.js → index-Ddvrjwlp.js} +1 -1
  45. package/dist/client/assets/{index-uRf2_zL0.js → index-Doe-oMI1.js} +1 -1
  46. package/dist/client/assets/{index-CPlAHhxv.js → index-DsvlvI8i.js} +1 -1
  47. package/dist/client/assets/{index-CsHJ2Ff0.js → index-DtoczokG.js} +1 -1
  48. package/dist/client/assets/{index-BLRI8YiL.js → index-SC22AP5M.js} +1 -1
  49. package/dist/client/assets/{index-DxYfeZ2E.js → index-bY8CiPGQ.js} +1 -1
  50. package/dist/client/assets/{index-Crm271Ii.js → index-kGHlsI7U.js} +1 -1
  51. package/dist/client/assets/{index-CLRzbnfI.js → index-ro4XgOVe.js} +1 -1
  52. package/dist/client/assets/{infoDiagram-HS3SLOUP-DznSvSTI.js → infoDiagram-HS3SLOUP-9HRNM_Iq.js} +1 -1
  53. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-CZi4YujP.js → journeyDiagram-XKPGCS4Q-BYEjH_SV.js} +1 -1
  54. package/dist/client/assets/{kanban-definition-3W4ZIXB7-X0OvmcRW.js → kanban-definition-3W4ZIXB7-s6ZYKbvm.js} +1 -1
  55. package/dist/client/assets/{layout-BvRrjwqG.js → layout-DlcfRJkl.js} +1 -1
  56. package/dist/client/assets/{main-jiI3VEaS.js → main-Ct1o5WmJ.js} +100 -100
  57. package/dist/client/assets/main-DsoPLGrb.css +1 -0
  58. package/dist/client/assets/{mindmap-definition-VGOIOE7T-CQESwmPy.js → mindmap-definition-VGOIOE7T-CDeQcF1U.js} +1 -1
  59. package/dist/client/assets/{pieDiagram-ADFJNKIX-B28DXcFe.js → pieDiagram-ADFJNKIX-CWdMTKnD.js} +1 -1
  60. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-BFzNIbiV.js → quadrantDiagram-AYHSOK5B-C-Zcxmv2.js} +1 -1
  61. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-DYMElT8I.js → requirementDiagram-UZGBJVZJ-B3JunJUh.js} +1 -1
  62. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-BWTESPW7.js → sankeyDiagram-TZEHDZUN-BRUxMlQD.js} +1 -1
  63. package/dist/client/assets/{sequenceDiagram-WL72ISMW-PLqAiKkw.js → sequenceDiagram-WL72ISMW--nulyPWN.js} +1 -1
  64. package/dist/client/assets/{square-terminal-DqD2bbPR.js → square-terminal-xTmJg69x.js} +1 -1
  65. package/dist/client/assets/{stateDiagram-FKZM4ZOC-BuoBLww9.js → stateDiagram-FKZM4ZOC-DUZeZHou.js} +1 -1
  66. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-nq3cGsuB.js +1 -0
  67. package/dist/client/assets/{timeline-definition-IT6M3QCI-gHz-ibEM.js → timeline-definition-IT6M3QCI-DgsIAJxu.js} +1 -1
  68. package/dist/client/assets/{treemap-GDKQZRPO-Df_3w7Ws.js → treemap-GDKQZRPO-DzbbBVNz.js} +1 -1
  69. package/dist/client/assets/{workspace._workspaceId-rXFF_FK_.js → workspace._workspaceId-C2eftsxg.js} +1 -1
  70. package/dist/client/assets/workspace._workspaceId-CX0zbe5I.js +2 -0
  71. package/dist/client/assets/{xychartDiagram-PRI3JC2R-Dtkqhnxi.js → xychartDiagram-PRI3JC2R-B11oaEXR.js} +1 -1
  72. package/dist/server/assets/{DockviewBrowserContainer-MBbRqrFN.js → DockviewBrowserContainer-BcfLe0jL.js} +1 -1
  73. package/dist/server/assets/{DockviewTerminalContainer-CbiPuY7W.js → DockviewTerminalContainer-zVckKR1x.js} +3 -3
  74. package/dist/server/assets/{TerminalPanel-r3EgkGO2.js → TerminalPanel-7JfdUecD.js} +250 -143
  75. package/dist/server/assets/{_basePickBy-BYBSjWdr.js → _basePickBy-3tZLkfZU.js} +2 -2
  76. package/dist/server/assets/{_baseUniq-BFd712qn.js → _baseUniq-Dz_kdarY.js} +1 -1
  77. package/dist/server/assets/_tanstack-start-manifest_v-BBzH3QaA.js +4 -0
  78. package/dist/server/assets/{arc-BgLIk2km.js → arc-B7a2pVpn.js} +1 -1
  79. package/dist/server/assets/{architecture-7HQA4BMR-CNuGd6ji.js → architecture-7HQA4BMR-9XWqJEVf.js} +6 -6
  80. package/dist/server/assets/{architectureDiagram-VXUJARFQ-CUWYpRdN.js → architectureDiagram-VXUJARFQ-Vt3dNClh.js} +6 -6
  81. package/dist/server/assets/{blockDiagram-VD42YOAC-LC7jFY0y.js → blockDiagram-VD42YOAC-DR7gt_eL.js} +6 -6
  82. package/dist/server/assets/{c4Diagram-YG6GDRKO-xiCvsYEV.js → c4Diagram-YG6GDRKO-DYC3sqOW.js} +2 -2
  83. package/dist/server/assets/{channel-HTn7VGn7.js → channel-DzI1wGYl.js} +1 -1
  84. package/dist/server/assets/{chunk-4BX2VUAB-BddWsJMu.js → chunk-4BX2VUAB-DVHBGPAd.js} +1 -1
  85. package/dist/server/assets/{chunk-55IACEB6-gS8ucPXk.js → chunk-55IACEB6-BXeWT-V1.js} +1 -1
  86. package/dist/server/assets/{chunk-B4BG7PRW-CjE0PrHm.js → chunk-B4BG7PRW-BngOdF6s.js} +4 -4
  87. package/dist/server/assets/{chunk-DI55MBZ5-D4otQuhU.js → chunk-DI55MBZ5-Co1ugmE2.js} +3 -3
  88. package/dist/server/assets/{chunk-FMBD7UC4-BoFKStlk.js → chunk-FMBD7UC4-BSvY40K1.js} +1 -1
  89. package/dist/server/assets/{chunk-QN33PNHL-9tTIFZTB.js → chunk-QN33PNHL-Bld2F-bV.js} +1 -1
  90. package/dist/server/assets/{chunk-QZHKN3VN-CQD5IUAL.js → chunk-QZHKN3VN-CbcRrDQ5.js} +1 -1
  91. package/dist/server/assets/{chunk-TZMSLE5B-jMi7C9xq.js → chunk-TZMSLE5B-FZqT6NRx.js} +1 -1
  92. package/dist/server/assets/{classDiagram-v2-WZHVMYZB-BA0nXDYs.js → classDiagram-2ON5EDUG-CqTf3oAt.js} +5 -5
  93. package/dist/server/assets/{classDiagram-2ON5EDUG-BA0nXDYs.js → classDiagram-v2-WZHVMYZB-CqTf3oAt.js} +5 -5
  94. package/dist/server/assets/clike-xqXYL6ge.js +805 -0
  95. package/dist/server/assets/{clone-BxCmpdXf.js → clone-DFaP-n7G.js} +1 -1
  96. package/dist/server/assets/{cose-bilkent-S5V4N54A-CkINSUhh.js → cose-bilkent-S5V4N54A-Cm4DnyNk.js} +1 -1
  97. package/dist/server/assets/{dagre-6UL2VRFP-BqzGOyEx.js → dagre-6UL2VRFP-DWtR7ypz.js} +6 -6
  98. package/dist/server/assets/{diagram-PSM6KHXK-VebVrDpW.js → diagram-PSM6KHXK-3K0tKsmi.js} +7 -7
  99. package/dist/server/assets/{diagram-QEK2KX5R-BvyHvb1q.js → diagram-QEK2KX5R-C_GABXU2.js} +6 -6
  100. package/dist/server/assets/{diagram-S2PKOQOG-B8goNnsj.js → diagram-S2PKOQOG-x_2H2okG.js} +6 -6
  101. package/dist/server/assets/{erDiagram-Q2GNP2WA-BcjilkRw.js → erDiagram-Q2GNP2WA-DYAuTF-e.js} +4 -4
  102. package/dist/server/assets/{flowDiagram-NV44I4VS-DHAz3SxN.js → flowDiagram-NV44I4VS-CMgKpatm.js} +5 -5
  103. package/dist/server/assets/{ganttDiagram-JELNMOA3-52f5bTC2.js → ganttDiagram-JELNMOA3-BqUjIeN-.js} +1 -1
  104. package/dist/server/assets/{gitGraph-G5XIXVHT-Bgqr7JP3.js → gitGraph-G5XIXVHT-BOFl30qK.js} +6 -6
  105. package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-FbdmGq-M.js → gitGraphDiagram-V2S2FVAM-CSFtzM0S.js} +7 -7
  106. package/dist/server/assets/{graph-DDmq4O_B.js → graph-Da9wNyd4.js} +2 -2
  107. package/dist/server/assets/{highlighted-body-B3W2YXNL-CYHh4OgM.js → highlighted-body-B3W2YXNL-CSDiX8tu.js} +1 -1
  108. package/dist/server/assets/{index-BJ-zYyy7.js → index-Av31QpwJ.js} +2 -2
  109. package/dist/server/assets/{index-CbrgO9Py.js → index-B9YQ_ief.js} +5 -5
  110. package/dist/server/assets/{index-b-ToRK86.js → index-BXCk5sug.js} +1 -1
  111. package/dist/server/assets/{index-BqgyveYS.js → index-BZPQn4AB.js} +3 -3
  112. package/dist/server/assets/{index-yImIxy9C.js → index-C-7KLTyL.js} +2 -2
  113. package/dist/server/assets/{index-Dh2e2-op.js → index-CFVkYUnG.js} +2 -2
  114. package/dist/server/assets/{index-ByjtLqv-.js → index-CFt-wi4p.js} +2 -2
  115. package/dist/server/assets/{index-DV0oV1aJ.js → index-CS2NcwnS.js} +2 -2
  116. package/dist/server/assets/{index-C7DnXrUx.js → index-CjJe7VSH.js} +4 -4
  117. package/dist/server/assets/{index-BpqPCP54.js → index-CqNkm5pZ.js} +2 -2
  118. package/dist/server/assets/{index-B-aV-zvo.js → index-CrGR0Fcd.js} +2 -2
  119. package/dist/server/assets/{index-CNXUBnWF.js → index-D9Pfuy6s.js} +2 -2
  120. package/dist/server/assets/{index-BLYKLsr8.js → index-DC0ng9YX.js} +2 -2
  121. package/dist/server/assets/{index-BPkfrfUo.js → index-DkCUbYql.js} +2 -2
  122. package/dist/server/assets/{index-DIM8z75Y.js → index-DwBbgNmR.js} +5 -5
  123. package/dist/server/assets/{index-C1uM7oUj.js → index-ZFp3vFxe.js} +3 -3
  124. package/dist/server/assets/{index-B9Uf27go.js → index-iQ9auLjI.js} +2 -2
  125. package/dist/server/assets/{index-CN6Wkz5N.js → index-ki-c1Gyj.js} +1 -1
  126. package/dist/server/assets/{info-VBDWY6EO-niG3bn42.js → info-VBDWY6EO-mGUaI27c.js} +6 -6
  127. package/dist/server/assets/{infoDiagram-HS3SLOUP-C0ZcYc2V.js → infoDiagram-HS3SLOUP-CMic1Hhh.js} +5 -5
  128. package/dist/server/assets/{journeyDiagram-XKPGCS4Q-DlzIOQ2Q.js → journeyDiagram-XKPGCS4Q-CravZq_h.js} +4 -4
  129. package/dist/server/assets/{kanban-definition-3W4ZIXB7-DVR-_Oli.js → kanban-definition-3W4ZIXB7-Ik9j3Xny.js} +2 -2
  130. package/dist/server/assets/{layout-DrEsLnWz.js → layout-DNctAx-v.js} +4 -4
  131. package/dist/server/assets/{mermaid-3ZIDBTTL-DSjx-3jg.js → mermaid-3ZIDBTTL-Bo2_mtnV.js} +1 -1
  132. package/dist/server/assets/{mermaid-parser.core-BktN7pRz.js → mermaid-parser.core-oaV6PZnA.js} +11 -11
  133. package/dist/server/assets/{mindmap-definition-VGOIOE7T-C3p_lEUY.js → mindmap-definition-VGOIOE7T-DNTQXwUn.js} +3 -3
  134. package/dist/server/assets/{packet-DYOGHKS2-BUqJsUFr.js → packet-DYOGHKS2-Bm5PEDRe.js} +6 -6
  135. package/dist/server/assets/{pie-VRWISCQL-jcPaeZCL.js → pie-VRWISCQL-BOs-4VKW.js} +6 -6
  136. package/dist/server/assets/{pieDiagram-ADFJNKIX-BroIyG3N.js → pieDiagram-ADFJNKIX-CEDLfCSy.js} +7 -7
  137. package/dist/server/assets/{quadrantDiagram-AYHSOK5B-DMH-yS8Y.js → quadrantDiagram-AYHSOK5B-CWfJcZnB.js} +1 -1
  138. package/dist/server/assets/{radar-ZZBFDIW7-C3KENTEn.js → radar-ZZBFDIW7-CMUO9a2O.js} +6 -6
  139. package/dist/server/assets/{requirementDiagram-UZGBJVZJ-BmwXQjqZ.js → requirementDiagram-UZGBJVZJ-0SINZ3cV.js} +3 -3
  140. package/dist/server/assets/{router-Cne-GWAI.js → router-PewB2VMR.js} +298 -249
  141. package/dist/server/assets/{sankeyDiagram-TZEHDZUN-BgYyRe28.js → sankeyDiagram-TZEHDZUN-U0rb6LX8.js} +1 -1
  142. package/dist/server/assets/{sequenceDiagram-WL72ISMW-DKSZXEOM.js → sequenceDiagram-WL72ISMW-BV5_vSVf.js} +3 -3
  143. package/dist/server/assets/{square-terminal-Dq10fSle.js → square-terminal-DdT3sDE4.js} +1 -1
  144. package/dist/server/assets/{stateDiagram-FKZM4ZOC-ByoaVX2u.js → stateDiagram-FKZM4ZOC-C3wAlRbY.js} +8 -8
  145. package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-BgkMjukC.js → stateDiagram-v2-4FDKWEC3-BvzsTmR_.js} +4 -4
  146. package/dist/server/assets/{timeline-definition-IT6M3QCI-ByMKy2X3.js → timeline-definition-IT6M3QCI-BwVTrWyj.js} +2 -2
  147. package/dist/server/assets/{treemap-GDKQZRPO-QFA03rde.js → treemap-GDKQZRPO-Bohb153V.js} +6 -6
  148. package/dist/server/assets/{workspace._workspaceId-LFuKLA8U.js → workspace._workspaceId-BWs5oKO5.js} +11 -9
  149. package/dist/server/assets/{workspace._workspaceId-DfI3AStI.js → workspace._workspaceId-DkyiAy0e.js} +1 -1
  150. package/dist/server/assets/{xychartDiagram-PRI3JC2R-DBO0yxoy.js → xychartDiagram-PRI3JC2R-XlYGoU4Z.js} +1 -1
  151. package/dist/server/server.js +2 -2
  152. package/dist/start-server.mjs +35 -4
  153. package/package.json +4 -4
  154. package/dist/client/assets/TerminalPanel-CDDGecbZ.js +0 -5
  155. package/dist/client/assets/channel-8nL7_R0T.js +0 -1
  156. package/dist/client/assets/classDiagram-2ON5EDUG-DC6mHowO.js +0 -1
  157. package/dist/client/assets/classDiagram-v2-WZHVMYZB-DC6mHowO.js +0 -1
  158. package/dist/client/assets/clone-DI4tbye2.js +0 -1
  159. package/dist/client/assets/main-DZa742Ns.css +0 -1
  160. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-Dtt72DXR.js +0 -1
  161. package/dist/client/assets/workspace._workspaceId-B4tmTDq0.js +0 -2
  162. package/dist/server/assets/_tanstack-start-manifest_v-DnlOZCmi.js +0 -4
@@ -1,4 +1,4 @@
1
- import{O as gi,S as xi,ae as Xt,ad as di,U as pi,V as fi,W as n,$ as Nt,au as yi,a0 as mi,aj as bi,as as Ct,a3 as Ai,aq as Yt,ar as wi,aM as Ci,aN as Bt,aO as Si,aL as Wt,aP as zt}from"./main-jiI3VEaS.js";var mt=(function(){var s=n(function(W,r,u,g){for(u=u||{},g=W.length;g--;u[W[g]]=r);return u},"o"),t=[1,10,12,14,16,18,19,21,23],i=[2,6],e=[1,3],a=[1,5],c=[1,6],d=[1,7],m=[1,5,10,12,14,16,18,19,21,23,34,35,36],b=[1,25],P=[1,26],I=[1,28],R=[1,29],L=[1,30],z=[1,31],F=[1,32],D=[1,33],V=[1,34],f=[1,35],C=[1,36],l=[1,37],M=[1,43],B=[1,42],U=[1,47],X=[1,50],h=[1,10,12,14,16,18,19,21,23,34,35,36],k=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],w=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],S=[1,64],$={trace:n(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:n(function(r,u,g,x,A,o,nt){var p=o.length-1;switch(A){case 5:x.setOrientation(o[p]);break;case 9:x.setDiagramTitle(o[p].text.trim());break;case 12:x.setLineData({text:"",type:"text"},o[p]);break;case 13:x.setLineData(o[p-1],o[p]);break;case 14:x.setBarData({text:"",type:"text"},o[p]);break;case 15:x.setBarData(o[p-1],o[p]);break;case 16:this.$=o[p].trim(),x.setAccTitle(this.$);break;case 17:case 18:this.$=o[p].trim(),x.setAccDescription(this.$);break;case 19:this.$=o[p-1];break;case 20:this.$=[Number(o[p-2]),...o[p]];break;case 21:this.$=[Number(o[p])];break;case 22:x.setXAxisTitle(o[p]);break;case 23:x.setXAxisTitle(o[p-1]);break;case 24:x.setXAxisTitle({type:"text",text:""});break;case 25:x.setXAxisBand(o[p]);break;case 26:x.setXAxisRangeData(Number(o[p-2]),Number(o[p]));break;case 27:this.$=o[p-1];break;case 28:this.$=[o[p-2],...o[p]];break;case 29:this.$=[o[p]];break;case 30:x.setYAxisTitle(o[p]);break;case 31:x.setYAxisTitle(o[p-1]);break;case 32:x.setYAxisTitle({type:"text",text:""});break;case 33:x.setYAxisRangeData(Number(o[p-2]),Number(o[p]));break;case 37:this.$={text:o[p],type:"text"};break;case 38:this.$={text:o[p],type:"text"};break;case 39:this.$={text:o[p],type:"markdown"};break;case 40:this.$=o[p];break;case 41:this.$=o[p-1]+""+o[p];break}},"anonymous"),table:[s(t,i,{3:1,4:2,7:4,5:e,34:a,35:c,36:d}),{1:[3]},s(t,i,{4:2,7:4,3:8,5:e,34:a,35:c,36:d}),s(t,i,{4:2,7:4,6:9,3:10,5:e,8:[1,11],34:a,35:c,36:d}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},s(m,[2,34]),s(m,[2,35]),s(m,[2,36]),{1:[2,1]},s(t,i,{4:2,7:4,3:21,5:e,34:a,35:c,36:d}),{1:[2,3]},s(m,[2,5]),s(t,[2,7],{4:22,34:a,35:c,36:d}),{11:23,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{11:39,13:38,24:M,27:B,29:40,30:41,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{11:45,15:44,27:U,33:46,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{11:49,17:48,24:X,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{11:52,17:51,24:X,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{20:[1,53]},{22:[1,54]},s(h,[2,18]),{1:[2,2]},s(h,[2,8]),s(h,[2,9]),s(k,[2,37],{40:55,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l}),s(k,[2,38]),s(k,[2,39]),s(w,[2,40]),s(w,[2,42]),s(w,[2,43]),s(w,[2,44]),s(w,[2,45]),s(w,[2,46]),s(w,[2,47]),s(w,[2,48]),s(w,[2,49]),s(w,[2,50]),s(w,[2,51]),s(h,[2,10]),s(h,[2,22],{30:41,29:56,24:M,27:B}),s(h,[2,24]),s(h,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},s(h,[2,11]),s(h,[2,30],{33:60,27:U}),s(h,[2,32]),{31:[1,61]},s(h,[2,12]),{17:62,24:X},{25:63,27:S},s(h,[2,14]),{17:65,24:X},s(h,[2,16]),s(h,[2,17]),s(w,[2,41]),s(h,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},s(h,[2,31]),{27:[1,69]},s(h,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},s(h,[2,15]),s(h,[2,26]),s(h,[2,27]),{11:59,32:72,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},s(h,[2,33]),s(h,[2,19]),{25:73,27:S},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:n(function(r,u){if(u.recoverable)this.trace(r);else{var g=new Error(r);throw g.hash=u,g}},"parseError"),parse:n(function(r){var u=this,g=[0],x=[],A=[null],o=[],nt=this.table,p="",lt=0,Et=0,hi=2,It=1,li=o.slice.call(arguments,1),_=Object.create(this.lexer),Y={yy:{}};for(var dt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,dt)&&(Y.yy[dt]=this.yy[dt]);_.setInput(r,Y.yy),Y.yy.lexer=_,Y.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var pt=_.yylloc;o.push(pt);var ci=_.options&&_.options.ranges;typeof Y.yy.parseError=="function"?this.parseError=Y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ui(v){g.length=g.length-2*v,A.length=A.length-v,o.length=o.length-v}n(ui,"popStack");function Vt(){var v;return v=x.pop()||_.lex()||It,typeof v!="number"&&(v instanceof Array&&(x=v,v=x.pop()),v=u.symbols_[v]||v),v}n(Vt,"lex");for(var T,H,E,ft,q={},ct,O,Mt,ut;;){if(H=g[g.length-1],this.defaultActions[H]?E=this.defaultActions[H]:((T===null||typeof T>"u")&&(T=Vt()),E=nt[H]&&nt[H][T]),typeof E>"u"||!E.length||!E[0]){var yt="";ut=[];for(ct in nt[H])this.terminals_[ct]&&ct>hi&&ut.push("'"+this.terminals_[ct]+"'");_.showPosition?yt="Parse error on line "+(lt+1)+`:
1
+ import{O as gi,S as xi,ae as Xt,ad as di,U as pi,V as fi,W as n,$ as Nt,au as yi,a0 as mi,aj as bi,as as Ct,a3 as Ai,aq as Yt,ar as wi,aM as Ci,aN as Bt,aO as Si,aL as Wt,aP as zt}from"./main-Ct1o5WmJ.js";var mt=(function(){var s=n(function(W,r,u,g){for(u=u||{},g=W.length;g--;u[W[g]]=r);return u},"o"),t=[1,10,12,14,16,18,19,21,23],i=[2,6],e=[1,3],a=[1,5],c=[1,6],d=[1,7],m=[1,5,10,12,14,16,18,19,21,23,34,35,36],b=[1,25],P=[1,26],I=[1,28],R=[1,29],L=[1,30],z=[1,31],F=[1,32],D=[1,33],V=[1,34],f=[1,35],C=[1,36],l=[1,37],M=[1,43],B=[1,42],U=[1,47],X=[1,50],h=[1,10,12,14,16,18,19,21,23,34,35,36],k=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],w=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],S=[1,64],$={trace:n(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:n(function(r,u,g,x,A,o,nt){var p=o.length-1;switch(A){case 5:x.setOrientation(o[p]);break;case 9:x.setDiagramTitle(o[p].text.trim());break;case 12:x.setLineData({text:"",type:"text"},o[p]);break;case 13:x.setLineData(o[p-1],o[p]);break;case 14:x.setBarData({text:"",type:"text"},o[p]);break;case 15:x.setBarData(o[p-1],o[p]);break;case 16:this.$=o[p].trim(),x.setAccTitle(this.$);break;case 17:case 18:this.$=o[p].trim(),x.setAccDescription(this.$);break;case 19:this.$=o[p-1];break;case 20:this.$=[Number(o[p-2]),...o[p]];break;case 21:this.$=[Number(o[p])];break;case 22:x.setXAxisTitle(o[p]);break;case 23:x.setXAxisTitle(o[p-1]);break;case 24:x.setXAxisTitle({type:"text",text:""});break;case 25:x.setXAxisBand(o[p]);break;case 26:x.setXAxisRangeData(Number(o[p-2]),Number(o[p]));break;case 27:this.$=o[p-1];break;case 28:this.$=[o[p-2],...o[p]];break;case 29:this.$=[o[p]];break;case 30:x.setYAxisTitle(o[p]);break;case 31:x.setYAxisTitle(o[p-1]);break;case 32:x.setYAxisTitle({type:"text",text:""});break;case 33:x.setYAxisRangeData(Number(o[p-2]),Number(o[p]));break;case 37:this.$={text:o[p],type:"text"};break;case 38:this.$={text:o[p],type:"text"};break;case 39:this.$={text:o[p],type:"markdown"};break;case 40:this.$=o[p];break;case 41:this.$=o[p-1]+""+o[p];break}},"anonymous"),table:[s(t,i,{3:1,4:2,7:4,5:e,34:a,35:c,36:d}),{1:[3]},s(t,i,{4:2,7:4,3:8,5:e,34:a,35:c,36:d}),s(t,i,{4:2,7:4,6:9,3:10,5:e,8:[1,11],34:a,35:c,36:d}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},s(m,[2,34]),s(m,[2,35]),s(m,[2,36]),{1:[2,1]},s(t,i,{4:2,7:4,3:21,5:e,34:a,35:c,36:d}),{1:[2,3]},s(m,[2,5]),s(t,[2,7],{4:22,34:a,35:c,36:d}),{11:23,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{11:39,13:38,24:M,27:B,29:40,30:41,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{11:45,15:44,27:U,33:46,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{11:49,17:48,24:X,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{11:52,17:51,24:X,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{20:[1,53]},{22:[1,54]},s(h,[2,18]),{1:[2,2]},s(h,[2,8]),s(h,[2,9]),s(k,[2,37],{40:55,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l}),s(k,[2,38]),s(k,[2,39]),s(w,[2,40]),s(w,[2,42]),s(w,[2,43]),s(w,[2,44]),s(w,[2,45]),s(w,[2,46]),s(w,[2,47]),s(w,[2,48]),s(w,[2,49]),s(w,[2,50]),s(w,[2,51]),s(h,[2,10]),s(h,[2,22],{30:41,29:56,24:M,27:B}),s(h,[2,24]),s(h,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},s(h,[2,11]),s(h,[2,30],{33:60,27:U}),s(h,[2,32]),{31:[1,61]},s(h,[2,12]),{17:62,24:X},{25:63,27:S},s(h,[2,14]),{17:65,24:X},s(h,[2,16]),s(h,[2,17]),s(w,[2,41]),s(h,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},s(h,[2,31]),{27:[1,69]},s(h,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},s(h,[2,15]),s(h,[2,26]),s(h,[2,27]),{11:59,32:72,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},s(h,[2,33]),s(h,[2,19]),{25:73,27:S},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:n(function(r,u){if(u.recoverable)this.trace(r);else{var g=new Error(r);throw g.hash=u,g}},"parseError"),parse:n(function(r){var u=this,g=[0],x=[],A=[null],o=[],nt=this.table,p="",lt=0,Et=0,hi=2,It=1,li=o.slice.call(arguments,1),_=Object.create(this.lexer),Y={yy:{}};for(var dt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,dt)&&(Y.yy[dt]=this.yy[dt]);_.setInput(r,Y.yy),Y.yy.lexer=_,Y.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var pt=_.yylloc;o.push(pt);var ci=_.options&&_.options.ranges;typeof Y.yy.parseError=="function"?this.parseError=Y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ui(v){g.length=g.length-2*v,A.length=A.length-v,o.length=o.length-v}n(ui,"popStack");function Vt(){var v;return v=x.pop()||_.lex()||It,typeof v!="number"&&(v instanceof Array&&(x=v,v=x.pop()),v=u.symbols_[v]||v),v}n(Vt,"lex");for(var T,H,E,ft,q={},ct,O,Mt,ut;;){if(H=g[g.length-1],this.defaultActions[H]?E=this.defaultActions[H]:((T===null||typeof T>"u")&&(T=Vt()),E=nt[H]&&nt[H][T]),typeof E>"u"||!E.length||!E[0]){var yt="";ut=[];for(ct in nt[H])this.terminals_[ct]&&ct>hi&&ut.push("'"+this.terminals_[ct]+"'");_.showPosition?yt="Parse error on line "+(lt+1)+`:
2
2
  `+_.showPosition()+`
3
3
  Expecting `+ut.join(", ")+", got '"+(this.terminals_[T]||T)+"'":yt="Parse error on line "+(lt+1)+": Unexpected "+(T==It?"end of input":"'"+(this.terminals_[T]||T)+"'"),this.parseError(yt,{text:_.match,token:this.terminals_[T]||T,line:_.yylineno,loc:pt,expected:ut})}if(E[0]instanceof Array&&E.length>1)throw new Error("Parse Error: multiple actions possible at state: "+H+", token: "+T);switch(E[0]){case 1:g.push(T),A.push(_.yytext),o.push(_.yylloc),g.push(E[1]),T=null,Et=_.yyleng,p=_.yytext,lt=_.yylineno,pt=_.yylloc;break;case 2:if(O=this.productions_[E[1]][1],q.$=A[A.length-O],q._$={first_line:o[o.length-(O||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(O||1)].first_column,last_column:o[o.length-1].last_column},ci&&(q._$.range=[o[o.length-(O||1)].range[0],o[o.length-1].range[1]]),ft=this.performAction.apply(q,[p,Et,lt,Y.yy,E[1],A,o].concat(li)),typeof ft<"u")return ft;O&&(g=g.slice(0,-1*O*2),A=A.slice(0,-1*O),o=o.slice(0,-1*O)),g.push(this.productions_[E[1]][0]),A.push(q.$),o.push(q._$),Mt=nt[g[g.length-2]][g[g.length-1]],g.push(Mt);break;case 3:return!0}}return!0},"parse")},Lt=(function(){var W={EOF:1,parseError:n(function(u,g){if(this.yy.parser)this.yy.parser.parseError(u,g);else throw new Error(u)},"parseError"),setInput:n(function(r,u){return this.yy=u||this.yy||{},this._input=r,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:n(function(){var r=this._input[0];this.yytext+=r,this.yyleng++,this.offset++,this.match+=r,this.matched+=r;var u=r.match(/(?:\r\n?|\n).*/g);return u?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),r},"input"),unput:n(function(r){var u=r.length,g=r.split(/(?:\r\n?|\n)/g);this._input=r+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-u),this.offset-=u;var x=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),g.length-1&&(this.yylineno-=g.length-1);var A=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:g?(g.length===x.length?this.yylloc.first_column:0)+x[x.length-g.length].length-g[0].length:this.yylloc.first_column-u},this.options.ranges&&(this.yylloc.range=[A[0],A[0]+this.yyleng-u]),this.yyleng=this.yytext.length,this},"unput"),more:n(function(){return this._more=!0,this},"more"),reject:n(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
4
4
  `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:n(function(r){this.unput(this.match.slice(r))},"less"),pastInput:n(function(){var r=this.matched.substr(0,this.matched.length-this.match.length);return(r.length>20?"...":"")+r.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:n(function(){var r=this.match;return r.length<20&&(r+=this._input.substr(0,20-r.length)),(r.substr(0,20)+(r.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:n(function(){var r=this.pastInput(),u=new Array(r.length+1).join("-");return r+this.upcomingInput()+`
@@ -1,5 +1,5 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports, R as React } from "../server.js";
2
- import { m as createLucideIcon, bR as isDesktop, cj as invoke, ck as listen, p as trpc, cl as reactDomExports, cm as Globe, ce as SearchBar, cn as Popover, co as PopoverTrigger, cp as PopoverContent, cq as Search, cr as Trash2, cs as DropdownMenu, ct as DropdownMenuTrigger, cu as ChevronDown, cv as DropdownMenuContent, cw as DropdownMenuItem, cx as TriangleAlert, bX as ArrowLeft, c7 as ArrowRight, X, cy as RotateCw, u as useAdapter, n as useQueryClient, o as useQuery, q as selectNeighbourBeforeRemove, r as centralPanelPosition, v as ensureEdgeGroups, w as attachEdgeGroupDragVisibility, x as registerInnerDockview, y as PanelVisibilityContext, z as DockviewReact, F as cycleTabsInActiveGroup, G as cycleGridGroups, C as Columns2, A as Rows2, B as Plus, E as usePanelVisibility } from "./router-Cne-GWAI.js";
2
+ import { m as createLucideIcon, bR as isDesktop, cl as invoke, cm as listen, p as trpc, cn as reactDomExports, co as Globe, cj as SearchBar, cp as Popover, cq as PopoverTrigger, cr as PopoverContent, cs as Search, ct as Trash2, cu as DropdownMenu, cv as DropdownMenuTrigger, cw as ChevronDown, cx as DropdownMenuContent, cy as DropdownMenuItem, cz as TriangleAlert, bX as ArrowLeft, ce as ArrowRight, X, cA as RotateCw, u as useAdapter, n as useQueryClient, o as useQuery, q as selectNeighbourBeforeRemove, r as centralPanelPosition, v as ensureEdgeGroups, w as attachEdgeGroupDragVisibility, x as registerInnerDockview, y as PanelVisibilityContext, z as DockviewReact, F as cycleTabsInActiveGroup, G as cycleGridGroups, C as Columns2, A as Rows2, B as Plus, E as usePanelVisibility } from "./router-PewB2VMR.js";
3
3
  import "node:async_hooks";
4
4
  import "node:stream";
5
5
  import "util";
@@ -1,6 +1,6 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports, R as React } from "../server.js";
2
- import { u as useAdapter, n as useQueryClient, o as useQuery, p as trpc, q as selectNeighbourBeforeRemove, r as centralPanelPosition, v as ensureEdgeGroups, w as attachEdgeGroupDragVisibility, x as registerInnerDockview, y as PanelVisibilityContext, z as DockviewReact, C as Columns2, A as Rows2, B as Plus, X, E as usePanelVisibility, F as cycleTabsInActiveGroup, G as cycleGridGroups } from "./router-Cne-GWAI.js";
3
- import { S as SquareTerminal } from "./square-terminal-Dq10fSle.js";
2
+ import { u as useAdapter, n as useQueryClient, o as useQuery, p as trpc, q as selectNeighbourBeforeRemove, r as centralPanelPosition, v as ensureEdgeGroups, w as attachEdgeGroupDragVisibility, x as registerInnerDockview, y as PanelVisibilityContext, z as DockviewReact, C as Columns2, A as Rows2, B as Plus, X, E as usePanelVisibility, F as cycleTabsInActiveGroup, G as cycleGridGroups } from "./router-PewB2VMR.js";
3
+ import { S as SquareTerminal } from "./square-terminal-DdT3sDE4.js";
4
4
  import "node:async_hooks";
5
5
  import "node:stream";
6
6
  import "util";
@@ -12,7 +12,7 @@ import "node:process";
12
12
  import "node:path";
13
13
  import "node:url";
14
14
  const TerminalPanel = reactExports.lazy(
15
- () => import("./TerminalPanel-r3EgkGO2.js").then((m) => ({ default: m.TerminalPanel }))
15
+ () => import("./TerminalPanel-7JfdUecD.js").then((m) => ({ default: m.TerminalPanel }))
16
16
  );
17
17
  function uuid() {
18
18
  if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") {
@@ -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-PewB2VMR.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-Dz_kdarY.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-PewB2VMR.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-PewB2VMR.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-Ct1o5WmJ.js"], "assets": [{ "tag": "link", "attrs": { "rel": "stylesheet", "href": "/assets/main-DsoPLGrb.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-DsoPLGrb.css", "type": "text/css" } }], "preloads": ["/assets/index-Cx9QoFI1.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-DsoPLGrb.css", "type": "text/css" } }], "preloads": ["/assets/workspace._workspaceId-CX0zbe5I.js", "/assets/square-terminal-xTmJg69x.js"] } }, "clientEntry": "/assets/main-Ct1o5WmJ.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-PewB2VMR.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-oaV6PZnA.js";
2
+ import { A } from "./mermaid-parser.core-oaV6PZnA.js";
3
+ import "./router-PewB2VMR.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-Dz_kdarY.js";
16
+ import "./_basePickBy-3tZLkfZU.js";
17
+ import "./clone-DFaP-n7G.js";
18
18
  import "path";
19
19
  import "os";
20
20
  import "net";