@band-app/server 0.12.0 → 0.13.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 (171) hide show
  1. package/dist/client/assets/{DockviewTerminalContainer-B6ls12RP.js → DockviewTerminalContainer-CLlvqDbZ.js} +2 -2
  2. package/dist/client/assets/TerminalPanel-BE9r8rEY.js +4 -0
  3. package/dist/client/assets/{_basePickBy-D4ggI4i0.js → _basePickBy-Dh2WFRMd.js} +1 -1
  4. package/dist/client/assets/{_baseUniq-E0-L58sh.js → _baseUniq-2BIwN7J1.js} +1 -1
  5. package/dist/client/assets/{arc-Cd0JgGvM.js → arc-Wsw6SggN.js} +1 -1
  6. package/dist/client/assets/{architectureDiagram-VXUJARFQ-BngJQDkI.js → architectureDiagram-VXUJARFQ-XSuarAoX.js} +1 -1
  7. package/dist/client/assets/{blockDiagram-VD42YOAC-dcYRXfph.js → blockDiagram-VD42YOAC-DSc5TOI1.js} +1 -1
  8. package/dist/client/assets/{c4Diagram-YG6GDRKO-B_8XfvfL.js → c4Diagram-YG6GDRKO-DLlwzfnX.js} +1 -1
  9. package/dist/client/assets/channel-C5uboiOE.js +1 -0
  10. package/dist/client/assets/{chunk-4BX2VUAB-CFd2iELe.js → chunk-4BX2VUAB-CWduv96U.js} +1 -1
  11. package/dist/client/assets/{chunk-55IACEB6-ZI-o1tfy.js → chunk-55IACEB6-D9A39zkK.js} +1 -1
  12. package/dist/client/assets/{chunk-B4BG7PRW-GcKh0u0t.js → chunk-B4BG7PRW-CUMptYWA.js} +1 -1
  13. package/dist/client/assets/{chunk-DI55MBZ5-asFoohq8.js → chunk-DI55MBZ5-DIwkyxaQ.js} +1 -1
  14. package/dist/client/assets/{chunk-FMBD7UC4-GmvgLSQe.js → chunk-FMBD7UC4-D8F2lei-.js} +1 -1
  15. package/dist/client/assets/{chunk-QN33PNHL-CbSPviK8.js → chunk-QN33PNHL-C83_AULb.js} +1 -1
  16. package/dist/client/assets/{chunk-QZHKN3VN-C5_8IhWQ.js → chunk-QZHKN3VN-Dtw-3_KI.js} +1 -1
  17. package/dist/client/assets/{chunk-TZMSLE5B-CvwKA6rf.js → chunk-TZMSLE5B-Cg9TlQ9E.js} +1 -1
  18. package/dist/client/assets/classDiagram-2ON5EDUG-CbG2RU7R.js +1 -0
  19. package/dist/client/assets/classDiagram-v2-WZHVMYZB-CbG2RU7R.js +1 -0
  20. package/dist/client/assets/clone-vDxxg1dv.js +1 -0
  21. package/dist/client/assets/{cose-bilkent-S5V4N54A-CFOKjm00.js → cose-bilkent-S5V4N54A-Drnoe6yO.js} +1 -1
  22. package/dist/client/assets/{dagre-6UL2VRFP-XkiKAfAP.js → dagre-6UL2VRFP-BgY7fnyf.js} +2 -2
  23. package/dist/client/assets/{diagram-PSM6KHXK-D7OJGDF1.js → diagram-PSM6KHXK-bmxBt_Q-.js} +1 -1
  24. package/dist/client/assets/{diagram-QEK2KX5R-CNDqB5ur.js → diagram-QEK2KX5R-DGUqlb8j.js} +1 -1
  25. package/dist/client/assets/{diagram-S2PKOQOG-DHWhfYWy.js → diagram-S2PKOQOG-DxXpOhvW.js} +1 -1
  26. package/dist/client/assets/{erDiagram-Q2GNP2WA-DlhzEgw7.js → erDiagram-Q2GNP2WA-eZBtaSzD.js} +1 -1
  27. package/dist/client/assets/{flowDiagram-NV44I4VS-BabYr6zd.js → flowDiagram-NV44I4VS-Dfwd3PGB.js} +1 -1
  28. package/dist/client/assets/{ganttDiagram-JELNMOA3-CUHxh1TA.js → ganttDiagram-JELNMOA3-BAMeSthd.js} +1 -1
  29. package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-DSDd-EJ_.js → gitGraphDiagram-V2S2FVAM-Dts_Yrpu.js} +1 -1
  30. package/dist/client/assets/{graph-DXNVnA6H.js → graph-BuNOEI6L.js} +1 -1
  31. package/dist/client/assets/{highlighted-body-B3W2YXNL-B79dTSwx.js → highlighted-body-B3W2YXNL-Btj0UZe1.js} +1 -1
  32. package/dist/client/assets/{index-_J9aGl-d.js → index-B4xvdE9X.js} +1 -1
  33. package/dist/client/assets/{index-BqDdB0tU.js → index-BFyseSVV.js} +1 -1
  34. package/dist/client/assets/{index-CjixM2mV.js → index-Bmhh2EB_.js} +1 -1
  35. package/dist/client/assets/{index-DutxFSic.js → index-CF7iJtA6.js} +1 -1
  36. package/dist/client/assets/{index-D-7FXjIA.js → index-D7TqJ9RF.js} +1 -1
  37. package/dist/client/assets/{index-EdY6fqdn.js → index-DOb48mtv.js} +2 -2
  38. package/dist/client/assets/{index-DRS8jN52.js → index-DR-TpUg3.js} +1 -1
  39. package/dist/client/assets/{index-CTR_yHqa.js → index-DaorCZSP.js} +1 -1
  40. package/dist/client/assets/{index-DktZbpGM.js → index-JytYW91Z.js} +1 -1
  41. package/dist/client/assets/{index-Cu2rqq8f.js → index-Ktl6P-nc.js} +1 -1
  42. package/dist/client/assets/{index-Bvony7H7.js → index-Qm_HbX1-.js} +1 -1
  43. package/dist/client/assets/{index-4srNURyv.js → index-Vaa1H_pP.js} +1 -1
  44. package/dist/client/assets/{index-okqFBuO9.js → index-cErwJT25.js} +1 -1
  45. package/dist/client/assets/{index-5jOljAlc.js → index-g5xXrehm.js} +1 -1
  46. package/dist/client/assets/{index-BNkxX-BD.js → index-gv6bT0S4.js} +1 -1
  47. package/dist/client/assets/{index-BQU-JREs.js → index-sMR7WunY.js} +1 -1
  48. package/dist/client/assets/{index-BVLYlk0y.js → index-tIReXko0.js} +1 -1
  49. package/dist/client/assets/{index-CPo0kKmX.js → index-xEL9mxnj.js} +1 -1
  50. package/dist/client/assets/{infoDiagram-HS3SLOUP-tDVIKvh1.js → infoDiagram-HS3SLOUP-ygUopIDr.js} +1 -1
  51. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-cFY68TOP.js → journeyDiagram-XKPGCS4Q-C7fCACOj.js} +1 -1
  52. package/dist/client/assets/{kanban-definition-3W4ZIXB7-CTQ8WBzj.js → kanban-definition-3W4ZIXB7-4jf7Ztsb.js} +1 -1
  53. package/dist/client/assets/{layout-BDsby01A.js → layout-DBEGDIe2.js} +1 -1
  54. package/dist/client/assets/{linear-B321DwjU.js → linear-2Gp1gLY9.js} +1 -1
  55. package/dist/client/assets/main-4FaYQ5DQ.css +1 -0
  56. package/dist/client/assets/{main-gKX_m5Ko.js → main-CzHZzsmJ.js} +206 -206
  57. package/dist/client/assets/{mindmap-definition-VGOIOE7T-CMbXBgve.js → mindmap-definition-VGOIOE7T-CiziEudd.js} +1 -1
  58. package/dist/client/assets/{pieDiagram-ADFJNKIX-pTHsfneI.js → pieDiagram-ADFJNKIX-DTFtaGug.js} +1 -1
  59. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-DNGhzaPi.js → quadrantDiagram-AYHSOK5B-fbALF3fd.js} +1 -1
  60. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-E5dChVU-.js → requirementDiagram-UZGBJVZJ-CRl9BPyr.js} +1 -1
  61. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-B858cwBV.js → sankeyDiagram-TZEHDZUN-RgshY6u-.js} +1 -1
  62. package/dist/client/assets/{sequenceDiagram-WL72ISMW-Clbop1Lh.js → sequenceDiagram-WL72ISMW-BbgPIX0Q.js} +1 -1
  63. package/dist/client/assets/{square-terminal-zBRLwN9m.js → square-terminal-DCU0c-OS.js} +1 -1
  64. package/dist/client/assets/{stateDiagram-FKZM4ZOC-BRIoi38Z.js → stateDiagram-FKZM4ZOC-feRu8oRh.js} +1 -1
  65. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-By7mP9TH.js +1 -0
  66. package/dist/client/assets/{timeline-definition-IT6M3QCI-C26dPldo.js → timeline-definition-IT6M3QCI-BqWKbKID.js} +1 -1
  67. package/dist/client/assets/{treemap-GDKQZRPO-l9jcKCpW.js → treemap-GDKQZRPO-D0xFOnga.js} +1 -1
  68. package/dist/client/assets/{useSessionListContext-MLsp0tQx.js → useSessionListContext-PZqsgbdH.js} +1 -1
  69. package/dist/client/assets/workspace._workspaceId-djkhDM0B.js +1 -0
  70. package/dist/client/assets/{workspace._workspaceId.changes-sSj8FhGC.js → workspace._workspaceId.changes-InUdTCW0.js} +1 -1
  71. package/dist/client/assets/workspace._workspaceId.code-B2HMVWnI.js +1 -0
  72. package/dist/client/assets/{workspace._workspaceId.code._-BVzwjj6w.js → workspace._workspaceId.code._-iCOKNXeZ.js} +1 -1
  73. package/dist/client/assets/{workspace._workspaceId.code.index-V90FWX2z.js → workspace._workspaceId.code.index-DMKkXryF.js} +1 -1
  74. package/dist/client/assets/{workspace._workspaceId.index-Cczg6N56.js → workspace._workspaceId.index-BZyamHNS.js} +1 -1
  75. package/dist/client/assets/{workspace._workspaceId.terminal-CFJVgZLo.js → workspace._workspaceId.terminal-4F7quTy3.js} +2 -2
  76. package/dist/client/assets/{xychartDiagram-PRI3JC2R-Cwsp2BWQ.js → xychartDiagram-PRI3JC2R-DicPcjot.js} +1 -1
  77. package/dist/server/assets/{DockviewTerminalContainer-B5lZSZ8Y.js → DockviewTerminalContainer-BBQnIZa3.js} +3 -3
  78. package/dist/server/assets/TerminalPanel-B1dKqOMK.js +1016 -0
  79. package/dist/server/assets/{_basePickBy-CD1u5dYZ.js → _basePickBy-BoCJVKe_.js} +2 -2
  80. package/dist/server/assets/{_baseUniq-BdmRs4hY.js → _baseUniq-DCXNOsnI.js} +1 -1
  81. package/dist/server/assets/{_tanstack-start-manifest_v-D4xipytj.js → _tanstack-start-manifest_v-2CeISY5W.js} +1 -1
  82. package/dist/server/assets/{arc-CbjxAGh2.js → arc-BFMEbbxV.js} +1 -1
  83. package/dist/server/assets/{architecture-7HQA4BMR-PvoHywyl.js → architecture-7HQA4BMR-4b2GJppC.js} +6 -6
  84. package/dist/server/assets/{architectureDiagram-VXUJARFQ-CYVR-HeO.js → architectureDiagram-VXUJARFQ-iVW_FQ4S.js} +6 -6
  85. package/dist/server/assets/{blockDiagram-VD42YOAC-oFwYjSKc.js → blockDiagram-VD42YOAC-D1iPUb9l.js} +6 -6
  86. package/dist/server/assets/{c4Diagram-YG6GDRKO-BRcTuK4Y.js → c4Diagram-YG6GDRKO-DI4Ztwr3.js} +2 -2
  87. package/dist/server/assets/{channel-DkpUIvTk.js → channel-VwPrL84U.js} +1 -1
  88. package/dist/server/assets/{chunk-4BX2VUAB-Db1P5ZKT.js → chunk-4BX2VUAB-B9WFGVXO.js} +1 -1
  89. package/dist/server/assets/{chunk-55IACEB6-CgF3c_s9.js → chunk-55IACEB6-cnFKsxmn.js} +1 -1
  90. package/dist/server/assets/{chunk-B4BG7PRW-C4lPp_gR.js → chunk-B4BG7PRW-DVIhTopX.js} +4 -4
  91. package/dist/server/assets/{chunk-DI55MBZ5-DBc5FE0O.js → chunk-DI55MBZ5-a2cj65b-.js} +3 -3
  92. package/dist/server/assets/{chunk-FMBD7UC4-BmyVhHTD.js → chunk-FMBD7UC4-D79uNYe4.js} +1 -1
  93. package/dist/server/assets/{chunk-QN33PNHL-MEMc-HV1.js → chunk-QN33PNHL-BDbkmWdo.js} +1 -1
  94. package/dist/server/assets/{chunk-QZHKN3VN-D0s55-ob.js → chunk-QZHKN3VN-CIC4C0nk.js} +1 -1
  95. package/dist/server/assets/{chunk-TZMSLE5B-CHLAtcyP.js → chunk-TZMSLE5B-BQBr1RGS.js} +1 -1
  96. package/dist/server/assets/{classDiagram-v2-WZHVMYZB-D_KqC8CP.js → classDiagram-2ON5EDUG-CtbqESgu.js} +5 -5
  97. package/dist/server/assets/{classDiagram-2ON5EDUG-D_KqC8CP.js → classDiagram-v2-WZHVMYZB-CtbqESgu.js} +5 -5
  98. package/dist/server/assets/{clone-pAcegSV_.js → clone-Bnbf9Iqg.js} +1 -1
  99. package/dist/server/assets/{cose-bilkent-S5V4N54A-I5bimXZO.js → cose-bilkent-S5V4N54A-DQl5SFk6.js} +1 -1
  100. package/dist/server/assets/{dagre-6UL2VRFP-BFEXHp44.js → dagre-6UL2VRFP-DWcFImvS.js} +6 -6
  101. package/dist/server/assets/{diagram-PSM6KHXK-B4UG8ra3.js → diagram-PSM6KHXK-CAIVqsc3.js} +7 -7
  102. package/dist/server/assets/{diagram-QEK2KX5R-B65vkBbU.js → diagram-QEK2KX5R-Dc8wo9c1.js} +6 -6
  103. package/dist/server/assets/{diagram-S2PKOQOG-DUV65VxH.js → diagram-S2PKOQOG-ZNcpDFrx.js} +6 -6
  104. package/dist/server/assets/{erDiagram-Q2GNP2WA-eEKIOvT3.js → erDiagram-Q2GNP2WA-BYLAWy_j.js} +4 -4
  105. package/dist/server/assets/{flowDiagram-NV44I4VS-B0GxfKRu.js → flowDiagram-NV44I4VS-CzcX8svk.js} +5 -5
  106. package/dist/server/assets/{ganttDiagram-JELNMOA3-etJ_j_I0.js → ganttDiagram-JELNMOA3-Dxwzox2R.js} +2 -2
  107. package/dist/server/assets/{gitGraph-G5XIXVHT-DE59sCs-.js → gitGraph-G5XIXVHT-LK8-a2sz.js} +6 -6
  108. package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-BZuXPjR3.js → gitGraphDiagram-V2S2FVAM-DlgLrJB0.js} +7 -7
  109. package/dist/server/assets/{graph-HlbQNgKh.js → graph-BXmxFNFp.js} +2 -2
  110. package/dist/server/assets/{highlighted-body-B3W2YXNL-CGZmJ48I.js → highlighted-body-B3W2YXNL-DsSe47sR.js} +1 -1
  111. package/dist/server/assets/{index-B_gLaw5q.js → index-4YgzFKOD.js} +5 -5
  112. package/dist/server/assets/{index-kEUC1eer.js → index-5upQdcP2.js} +2 -2
  113. package/dist/server/assets/{index-DfuZ1SKx.js → index-B-LK0PYZ.js} +2 -2
  114. package/dist/server/assets/{index-CReShbyg.js → index-BSojqZdf.js} +2 -2
  115. package/dist/server/assets/{index-DVIqYu1B.js → index-BbjwIyTa.js} +5 -5
  116. package/dist/server/assets/{index-B2NbB5n_.js → index-BdNVOcCL.js} +2 -2
  117. package/dist/server/assets/{index-DoEmUqp6.js → index-BrkgyCV3.js} +2 -2
  118. package/dist/server/assets/{index-BggD7xEz.js → index-BsoOL_wq.js} +2 -2
  119. package/dist/server/assets/{index-BquoD96E.js → index-CVjIVbLj.js} +2 -2
  120. package/dist/server/assets/{index-0Vp2EuiF.js → index-CWtvbkAQ.js} +3 -3
  121. package/dist/server/assets/{index-CqJMMgyN.js → index-CXycOokw.js} +2 -2
  122. package/dist/server/assets/{index-CcRwhNJ0.js → index-CaaOSPL7.js} +3 -3
  123. package/dist/server/assets/{index-Cq-S8ocb.js → index-CnLND4um.js} +1 -1
  124. package/dist/server/assets/{index-CozxyE6F.js → index-DM2r-vGW.js} +2 -2
  125. package/dist/server/assets/{index-KO85K6gg.js → index-DdVNSMNY.js} +2 -2
  126. package/dist/server/assets/{index-BYATJkV0.js → index-Do1Nx4aA.js} +1 -1
  127. package/dist/server/assets/{index-oAvn7Kbw.js → index-nKutdysv.js} +2 -2
  128. package/dist/server/assets/{index-DsW29Azb.js → index-oC76KgvT.js} +4 -4
  129. package/dist/server/assets/{info-VBDWY6EO-DFb5bmEE.js → info-VBDWY6EO-CM7NSJD8.js} +6 -6
  130. package/dist/server/assets/{infoDiagram-HS3SLOUP-DUDXdFYe.js → infoDiagram-HS3SLOUP-QMxyRHM5.js} +5 -5
  131. package/dist/server/assets/{journeyDiagram-XKPGCS4Q-BnEH3kK2.js → journeyDiagram-XKPGCS4Q-BoA6PlCZ.js} +4 -4
  132. package/dist/server/assets/{kanban-definition-3W4ZIXB7-BPnM08KT.js → kanban-definition-3W4ZIXB7-r6KtKaEH.js} +2 -2
  133. package/dist/server/assets/{layout-CnirhobE.js → layout-D3Do3Tbk.js} +4 -4
  134. package/dist/server/assets/{linear-CLJDiqhJ.js → linear-CC2CX22M.js} +1 -1
  135. package/dist/server/assets/{mermaid-3ZIDBTTL-Dyndt6u2.js → mermaid-3ZIDBTTL-De3B4GT2.js} +1 -1
  136. package/dist/server/assets/{mermaid-parser.core-DxDjr9RA.js → mermaid-parser.core-BNbfHMQU.js} +11 -11
  137. package/dist/server/assets/{mindmap-definition-VGOIOE7T-CPnGCXl9.js → mindmap-definition-VGOIOE7T-BZA0jx43.js} +3 -3
  138. package/dist/server/assets/{packet-DYOGHKS2-Bt7VjiqG.js → packet-DYOGHKS2-FVoQy92R.js} +6 -6
  139. package/dist/server/assets/{pie-VRWISCQL-CpD4BgbA.js → pie-VRWISCQL-BGUPFoed.js} +6 -6
  140. package/dist/server/assets/{pieDiagram-ADFJNKIX-BSx8zl8i.js → pieDiagram-ADFJNKIX-6xe9bPcx.js} +7 -7
  141. package/dist/server/assets/{quadrantDiagram-AYHSOK5B-B08pRdHD.js → quadrantDiagram-AYHSOK5B-DrjB4XQc.js} +2 -2
  142. package/dist/server/assets/{radar-ZZBFDIW7-BeHVWQbv.js → radar-ZZBFDIW7-BioEa_Uy.js} +6 -6
  143. package/dist/server/assets/{requirementDiagram-UZGBJVZJ-BtjVtNFU.js → requirementDiagram-UZGBJVZJ-BQUraj5G.js} +3 -3
  144. package/dist/server/assets/{router-VlIt4cC5.js → router-Ch9bBOlF.js} +312 -236
  145. package/dist/server/assets/{sankeyDiagram-TZEHDZUN-CG6DECc6.js → sankeyDiagram-TZEHDZUN-qdkVPLba.js} +1 -1
  146. package/dist/server/assets/{sequenceDiagram-WL72ISMW-DEfVJQli.js → sequenceDiagram-WL72ISMW-Bh5Gu2_v.js} +3 -3
  147. package/dist/server/assets/{square-terminal-DTO02O7S.js → square-terminal-DVnlJfcM.js} +1 -1
  148. package/dist/server/assets/{stateDiagram-FKZM4ZOC-DblYyAIC.js → stateDiagram-FKZM4ZOC-BUasl40g.js} +8 -8
  149. package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-YhMCeOsH.js → stateDiagram-v2-4FDKWEC3-BL56MbOT.js} +4 -4
  150. package/dist/server/assets/{timeline-definition-IT6M3QCI-CDEJSclA.js → timeline-definition-IT6M3QCI-oGfd7fF8.js} +2 -2
  151. package/dist/server/assets/{treemap-GDKQZRPO-Tg2S6NSt.js → treemap-GDKQZRPO-CELUCxyO.js} +6 -6
  152. package/dist/server/assets/{workspace._workspaceId-CVnwrhnX.js → workspace._workspaceId-DhJMpGAq.js} +10 -4
  153. package/dist/server/assets/{workspace._workspaceId.changes-CsJMr9Ve.js → workspace._workspaceId.changes-5-0MP0m5.js} +1 -1
  154. package/dist/server/assets/{workspace._workspaceId.code._-CjSLVs7D.js → workspace._workspaceId.code._-BFbAz_ei.js} +1 -1
  155. package/dist/server/assets/{workspace._workspaceId.code.index-BhUZuUX-.js → workspace._workspaceId.code.index-BepZ481b.js} +1 -1
  156. package/dist/server/assets/{workspace._workspaceId.index-CmBIxfCl.js → workspace._workspaceId.index-Cp3_jFDn.js} +1 -1
  157. package/dist/server/assets/{workspace._workspaceId.terminal-BehWU5SY.js → workspace._workspaceId.terminal-B5beQDh_.js} +2 -2
  158. package/dist/server/assets/{xychartDiagram-PRI3JC2R-DAT7FXvH.js → xychartDiagram-PRI3JC2R-qDOKCR8M.js} +2 -2
  159. package/dist/server/server.js +2 -2
  160. package/dist/start-server.mjs +438 -246
  161. package/package.json +5 -5
  162. package/dist/client/assets/TerminalPanel-CTjPLr1l.js +0 -4
  163. package/dist/client/assets/channel-BN9rr7kd.js +0 -1
  164. package/dist/client/assets/classDiagram-2ON5EDUG-f-3sWSXi.js +0 -1
  165. package/dist/client/assets/classDiagram-v2-WZHVMYZB-f-3sWSXi.js +0 -1
  166. package/dist/client/assets/clone-DyjKoDMl.js +0 -1
  167. package/dist/client/assets/main-7lUOPiu0.css +0 -1
  168. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-BXdrXPzW.js +0 -1
  169. package/dist/client/assets/workspace._workspaceId-CKxw1xn1.js +0 -1
  170. package/dist/client/assets/workspace._workspaceId.code-CTG7u893.js +0 -1
  171. package/dist/server/assets/TerminalPanel-_8vdN94i.js +0 -442
@@ -1,442 +0,0 @@
1
- import { r as reactExports, j as jsxRuntimeExports } from "../server.js";
2
- import { b as useSettingsQuery, bb as openExternalUrl, bc as SearchBar } from "./router-VlIt4cC5.js";
3
- import "node:async_hooks";
4
- import "node:stream";
5
- import "util";
6
- import "crypto";
7
- import "async_hooks";
8
- import "stream";
9
- import "node:stream/web";
10
- import "node:process";
11
- import "node:path";
12
- import "node:url";
13
- const SEARCH_DECORATIONS = {
14
- matchBackground: "#515c6a",
15
- activeMatchBackground: "#a9913680",
16
- matchOverviewRuler: "#a9913680",
17
- activeMatchColorOverviewRuler: "#a99136"
18
- };
19
- const DEFAULT_SEARCH_OPTIONS = {
20
- caseSensitive: false,
21
- wholeWord: false,
22
- regex: false
23
- };
24
- function toXtermSearchOptions(opts) {
25
- return {
26
- caseSensitive: opts.caseSensitive,
27
- wholeWord: opts.wholeWord,
28
- regex: opts.regex,
29
- decorations: SEARCH_DECORATIONS
30
- };
31
- }
32
- const DARK_TERMINAL_THEME = {
33
- background: "#1e1e1e",
34
- foreground: "#e8e8e8",
35
- cursor: "#e8e8e8",
36
- selectionBackground: "rgba(255, 255, 255, 0.2)"
37
- };
38
- const LIGHT_TERMINAL_THEME = {
39
- background: "#ffffff",
40
- foreground: "#1e1e1e",
41
- cursor: "#1e1e1e",
42
- cursorAccent: "#ffffff",
43
- selectionBackground: "rgba(0, 0, 0, 0.15)",
44
- // Tweak ANSI colors so they remain readable on a white background. The default
45
- // bright-yellow / bright-green xterm palette washes out badly in light mode.
46
- black: "#000000",
47
- red: "#cd3131",
48
- green: "#0a8043",
49
- yellow: "#946800",
50
- blue: "#0451a5",
51
- magenta: "#bc05bc",
52
- cyan: "#0598bc",
53
- white: "#555555",
54
- brightBlack: "#666666",
55
- brightRed: "#cd3131",
56
- brightGreen: "#0a8043",
57
- brightYellow: "#946800",
58
- brightBlue: "#0451a5",
59
- brightMagenta: "#bc05bc",
60
- brightCyan: "#0598bc",
61
- brightWhite: "#1e1e1e"
62
- };
63
- function isDarkMode() {
64
- return document.documentElement.classList.contains("dark");
65
- }
66
- function getTerminalTheme() {
67
- return isDarkMode() ? DARK_TERMINAL_THEME : LIGHT_TERMINAL_THEME;
68
- }
69
- function TerminalPanel({
70
- workspaceId,
71
- terminalId,
72
- visible,
73
- paneMetadata,
74
- autoFocus,
75
- onTitleChange
76
- }) {
77
- const containerRef = reactExports.useRef(null);
78
- const terminalRef = reactExports.useRef(null);
79
- const fitAddonRef = reactExports.useRef(null);
80
- const searchAddonRef = reactExports.useRef(null);
81
- const webglAddonRef = reactExports.useRef(null);
82
- const wsRef = reactExports.useRef(null);
83
- const onTitleChangeRef = reactExports.useRef(onTitleChange);
84
- onTitleChangeRef.current = onTitleChange;
85
- const { settings } = useSettingsQuery();
86
- const useWebGLRenderer = settings.useWebGLTerminalRenderer ?? true;
87
- const useWebGLRendererRef = reactExports.useRef(useWebGLRenderer);
88
- useWebGLRendererRef.current = useWebGLRenderer;
89
- const [searchOpen, setSearchOpen] = reactExports.useState(false);
90
- const [searchQuery, setSearchQuery] = reactExports.useState("");
91
- const [searchOptions, setSearchOptions] = reactExports.useState(DEFAULT_SEARCH_OPTIONS);
92
- const [matchInfo, setMatchInfo] = reactExports.useState({
93
- total: 0,
94
- current: 0
95
- });
96
- const searchBarRef = reactExports.useRef(null);
97
- const openSearchRef = reactExports.useRef(() => {
98
- });
99
- reactExports.useEffect(() => {
100
- if (!containerRef.current) return;
101
- let cancelled = false;
102
- let cleanup;
103
- Promise.all([
104
- import("./xterm-CkV9CBvP.js"),
105
- import("./addon-fit-D89xfLfG.js"),
106
- import("./addon-web-links-CzLDtFWc.js"),
107
- import("./addon-search-BS53_-cp.js"),
108
- import("./addon-webgl-BeO2q2vc.js")
109
- ]).then(([xtermMod, fitMod, webLinksMod, searchMod, webglMod]) => {
110
- const { Terminal: XTerm } = xtermMod;
111
- const { FitAddon: XFitAddon } = fitMod;
112
- const { WebLinksAddon: XWebLinksAddon } = webLinksMod;
113
- const { SearchAddon: XSearchAddon } = searchMod;
114
- const { WebglAddon: XWebglAddon } = webglMod;
115
- if (cancelled || !containerRef.current) return;
116
- const wantsWebGL = useWebGLRendererRef.current;
117
- Promise.resolve({ });
118
- const terminal = new XTerm({
119
- // Opt in to addon-only APIs (decorations, markers, etc.) that
120
- // xterm.js 6.1-beta gates behind this flag. Without it, the search
121
- // addon's `findNext` throws "You must set the allowProposedApi
122
- // option to true to use proposed API" the first time the user
123
- // types in the find bar. The addons we ship (search, webgl) are
124
- // first-party xterm.js addons that depend on these APIs.
125
- allowProposedApi: true,
126
- cursorBlink: true,
127
- fontSize: 13,
128
- fontFamily: "'SF Mono', Menlo, Monaco, 'Courier New', monospace",
129
- // iTerm-style row spacing — only safe with the WebGL renderer.
130
- // The WebGL addon redraws box-drawing (U+2500-U+257F), block
131
- // elements (U+2580-U+259F), powerline separators, and other
132
- // continuous glyphs at the full cell rect (via its `customGlyphs`
133
- // option, default true) so a 1.2 lineHeight doesn't slice horizontal
134
- // gaps through the opencode banner, claude-code's powerline
135
- // statusline, or other ASCII art. xterm.js's DOM renderer does
136
- // NOT do this — falling back to it means we have to revert to
137
- // lineHeight: 1.0 to keep block art continuous.
138
- // See https://github.com/band-app/band/issues/391 for history.
139
- lineHeight: wantsWebGL ? 1.2 : 1,
140
- macOptionIsMeta: true,
141
- // Alt+Left/Right → word navigation on macOS
142
- scrollback: 1e4,
143
- theme: getTerminalTheme()
144
- });
145
- const themeObserver = new MutationObserver(() => {
146
- terminal.options.theme = getTerminalTheme();
147
- });
148
- themeObserver.observe(document.documentElement, {
149
- attributes: true,
150
- attributeFilter: ["class"]
151
- });
152
- const fitAddon = new XFitAddon();
153
- terminal.loadAddon(fitAddon);
154
- terminal.loadAddon(new XWebLinksAddon((_event, uri) => openExternalUrl(uri)));
155
- terminal.open(containerRef.current);
156
- let webglContextLossDisposable;
157
- const attachWebGL = () => {
158
- try {
159
- const addon = new XWebglAddon({ customGlyphs: true });
160
- terminal.loadAddon(addon);
161
- const screenEl = containerRef.current?.querySelector(
162
- ".xterm-screen"
163
- );
164
- const webglCanvas = screenEl?.querySelector(
165
- ":scope > canvas:last-of-type"
166
- );
167
- if (webglCanvas) {
168
- webglCanvas.style.pointerEvents = "none";
169
- webglCanvas.style.touchAction = "none";
170
- }
171
- webglAddonRef.current = addon;
172
- webglContextLossDisposable?.dispose();
173
- webglContextLossDisposable = addon.onContextLoss(() => {
174
- console.warn("[TerminalPanel] WebGL context lost, reattaching addon");
175
- addon.dispose();
176
- webglAddonRef.current = null;
177
- attachWebGL();
178
- });
179
- return true;
180
- } catch (err) {
181
- console.warn("[TerminalPanel] WebGL renderer unavailable, falling back to DOM", err);
182
- return false;
183
- }
184
- };
185
- if (wantsWebGL) attachWebGL();
186
- const searchAddon = new XSearchAddon();
187
- terminal.loadAddon(searchAddon);
188
- const searchResultsDisposable = searchAddon.onDidChangeResults((event) => {
189
- setMatchInfo({
190
- total: event.resultCount,
191
- current: event.resultIndex >= 0 ? event.resultIndex + 1 : 0
192
- });
193
- });
194
- terminal.attachCustomKeyEventHandler((e) => {
195
- if (e.type === "keydown") {
196
- if ((e.metaKey || e.ctrlKey) && !e.shiftKey && !e.altKey && e.key.toLowerCase() === "f") {
197
- e.preventDefault();
198
- openSearchRef.current();
199
- return false;
200
- }
201
- if (e.key === "Enter" && e.shiftKey && !e.altKey && !e.metaKey && !e.ctrlKey) {
202
- terminal.input("\x1B[13;2u");
203
- return false;
204
- }
205
- if (e.altKey && !e.metaKey && !e.ctrlKey) {
206
- if (e.key === "ArrowLeft") {
207
- terminal.input("\x1Bb");
208
- return false;
209
- }
210
- if (e.key === "ArrowRight") {
211
- terminal.input("\x1Bf");
212
- return false;
213
- }
214
- }
215
- }
216
- return true;
217
- });
218
- terminalRef.current = terminal;
219
- fitAddonRef.current = fitAddon;
220
- searchAddonRef.current = searchAddon;
221
- const containerEl = containerRef.current;
222
- let lastTouchY = null;
223
- const onTouchStart = (e) => {
224
- lastTouchY = e.touches.length === 1 ? e.touches[0].clientY : null;
225
- };
226
- const onTouchMove = (e) => {
227
- if (e.touches.length !== 1 || lastTouchY === null) return;
228
- const currentY = e.touches[0].clientY;
229
- const deltaY = lastTouchY - currentY;
230
- const viewport = containerEl.querySelector(".xterm-viewport");
231
- const cellHeight = viewport && terminal.rows > 0 ? viewport.clientHeight / terminal.rows : 17;
232
- const lineDelta = Math.trunc(deltaY / cellHeight);
233
- if (lineDelta !== 0) {
234
- terminal.scrollLines(lineDelta);
235
- lastTouchY = currentY + (deltaY - lineDelta * cellHeight);
236
- e.preventDefault();
237
- }
238
- };
239
- const onTouchEnd = () => {
240
- lastTouchY = null;
241
- };
242
- containerEl.addEventListener("touchstart", onTouchStart, { passive: true });
243
- containerEl.addEventListener("touchmove", onTouchMove, { passive: false });
244
- containerEl.addEventListener("touchend", onTouchEnd, { passive: true });
245
- containerEl.addEventListener("touchcancel", onTouchEnd, { passive: true });
246
- let tapStartX = null;
247
- let tapStartY = null;
248
- const onTapStart = (e) => {
249
- if (e.touches.length === 1) {
250
- tapStartX = e.touches[0].clientX;
251
- tapStartY = e.touches[0].clientY;
252
- } else {
253
- tapStartX = null;
254
- tapStartY = null;
255
- }
256
- };
257
- const onTapEnd = (e) => {
258
- const startX = tapStartX;
259
- const startY = tapStartY;
260
- tapStartX = null;
261
- tapStartY = null;
262
- if (startX === null || startY === null || e.changedTouches.length !== 1) return;
263
- const dx = Math.abs(e.changedTouches[0].clientX - startX);
264
- const dy = Math.abs(e.changedTouches[0].clientY - startY);
265
- if (dx < 10 && dy < 10) {
266
- terminal.focus();
267
- }
268
- };
269
- const onTapCancel = () => {
270
- tapStartX = null;
271
- tapStartY = null;
272
- };
273
- containerEl.addEventListener("touchstart", onTapStart, { passive: true });
274
- containerEl.addEventListener("touchend", onTapEnd, { passive: true });
275
- containerEl.addEventListener("touchcancel", onTapCancel, { passive: true });
276
- const proto = location.protocol === "https:" ? "wss:" : "ws:";
277
- const ws = new WebSocket(
278
- `${proto}//${location.host}/terminal?workspaceId=${encodeURIComponent(workspaceId)}&terminalId=${encodeURIComponent(terminalId)}`
279
- );
280
- wsRef.current = ws;
281
- ws.binaryType = "arraybuffer";
282
- ws.onopen = () => {
283
- if (paneMetadata && (paneMetadata.command || paneMetadata.cwd || paneMetadata.env)) {
284
- const initMsg = { type: "init" };
285
- if (paneMetadata.command) initMsg.command = paneMetadata.command;
286
- if (paneMetadata.cwd) initMsg.cwd = paneMetadata.cwd;
287
- if (paneMetadata.env) initMsg.env = paneMetadata.env;
288
- ws.send(JSON.stringify(initMsg));
289
- }
290
- fitAddon.fit();
291
- ws.send(
292
- JSON.stringify({
293
- type: "resize",
294
- cols: terminal.cols,
295
- rows: terminal.rows
296
- })
297
- );
298
- if (autoFocus) {
299
- terminal.focus();
300
- }
301
- };
302
- ws.onmessage = (event) => {
303
- if (event.data instanceof ArrayBuffer) {
304
- terminal.write(new Uint8Array(event.data));
305
- } else {
306
- try {
307
- const msg = JSON.parse(event.data);
308
- if (msg.type === "title" && typeof msg.title === "string") {
309
- onTitleChangeRef.current?.(msg.title);
310
- }
311
- } catch {
312
- terminal.write(event.data);
313
- }
314
- }
315
- };
316
- ws.onclose = () => {
317
- terminal.write("\r\n\x1B[90m[Terminal disconnected]\x1B[0m\r\n");
318
- };
319
- terminal.onData((data) => {
320
- if (ws.readyState === WebSocket.OPEN) {
321
- ws.send(data);
322
- }
323
- });
324
- terminal.onTitleChange((title) => {
325
- onTitleChangeRef.current?.(title);
326
- });
327
- const resizeObserver = new ResizeObserver((entries) => {
328
- const entry = entries[0];
329
- if (!entry || entry.contentRect.width === 0 || entry.contentRect.height === 0) return;
330
- fitAddon.fit();
331
- if (ws.readyState === WebSocket.OPEN && terminal.cols > 0 && terminal.rows > 0) {
332
- ws.send(
333
- JSON.stringify({
334
- type: "resize",
335
- cols: terminal.cols,
336
- rows: terminal.rows
337
- })
338
- );
339
- }
340
- });
341
- resizeObserver.observe(containerRef.current);
342
- cleanup = () => {
343
- themeObserver.disconnect();
344
- resizeObserver.disconnect();
345
- searchResultsDisposable.dispose();
346
- webglContextLossDisposable?.dispose();
347
- containerEl.removeEventListener("touchstart", onTouchStart);
348
- containerEl.removeEventListener("touchmove", onTouchMove);
349
- containerEl.removeEventListener("touchend", onTouchEnd);
350
- containerEl.removeEventListener("touchcancel", onTouchEnd);
351
- containerEl.removeEventListener("touchstart", onTapStart);
352
- containerEl.removeEventListener("touchend", onTapEnd);
353
- containerEl.removeEventListener("touchcancel", onTapCancel);
354
- ws.close();
355
- terminal.dispose();
356
- terminalRef.current = null;
357
- fitAddonRef.current = null;
358
- searchAddonRef.current = null;
359
- webglAddonRef.current = null;
360
- wsRef.current = null;
361
- };
362
- });
363
- return () => {
364
- cancelled = true;
365
- cleanup?.();
366
- };
367
- }, [terminalId, workspaceId, paneMetadata, autoFocus]);
368
- reactExports.useEffect(() => {
369
- if (visible && fitAddonRef.current) {
370
- requestAnimationFrame(() => {
371
- fitAddonRef.current?.fit();
372
- const term = terminalRef.current;
373
- const ws = wsRef.current;
374
- if (term && ws?.readyState === WebSocket.OPEN && term.cols > 0 && term.rows > 0) {
375
- ws.send(JSON.stringify({ type: "resize", cols: term.cols, rows: term.rows }));
376
- }
377
- });
378
- }
379
- }, [visible]);
380
- reactExports.useEffect(() => {
381
- const handler = () => {
382
- if (!visible) return;
383
- terminalRef.current?.focus();
384
- };
385
- window.addEventListener("band:focus-terminal", handler);
386
- return () => window.removeEventListener("band:focus-terminal", handler);
387
- }, [visible]);
388
- const handleOpenSearch = reactExports.useCallback(() => {
389
- setSearchOpen(true);
390
- requestAnimationFrame(() => {
391
- searchBarRef.current?.focus();
392
- searchBarRef.current?.select();
393
- });
394
- }, []);
395
- openSearchRef.current = handleOpenSearch;
396
- const handleCloseSearch = reactExports.useCallback(() => {
397
- searchAddonRef.current?.clearDecorations();
398
- setSearchOpen(false);
399
- setSearchQuery("");
400
- setMatchInfo({ total: 0, current: 0 });
401
- terminalRef.current?.focus();
402
- }, []);
403
- const handleNext = reactExports.useCallback(() => {
404
- if (!searchQuery) return;
405
- searchAddonRef.current?.findNext(searchQuery, toXtermSearchOptions(searchOptions));
406
- }, [searchQuery, searchOptions]);
407
- const handlePrevious = reactExports.useCallback(() => {
408
- if (!searchQuery) return;
409
- searchAddonRef.current?.findPrevious(searchQuery, toXtermSearchOptions(searchOptions));
410
- }, [searchQuery, searchOptions]);
411
- reactExports.useEffect(() => {
412
- const addon = searchAddonRef.current;
413
- if (!addon) return;
414
- if (!searchQuery) {
415
- addon.clearDecorations();
416
- setMatchInfo({ total: 0, current: 0 });
417
- return;
418
- }
419
- addon.findNext(searchQuery, toXtermSearchOptions(searchOptions));
420
- }, [searchQuery, searchOptions]);
421
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative flex h-full w-full flex-col", children: [
422
- searchOpen && /* @__PURE__ */ jsxRuntimeExports.jsx(
423
- SearchBar,
424
- {
425
- ref: searchBarRef,
426
- query: searchQuery,
427
- onQueryChange: setSearchQuery,
428
- options: searchOptions,
429
- onOptionsChange: setSearchOptions,
430
- placeholder: "Find in terminal...",
431
- matchInfo,
432
- onNext: handleNext,
433
- onPrevious: handlePrevious,
434
- onClose: handleCloseSearch
435
- }
436
- ),
437
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative min-h-0 flex-1", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: containerRef, className: "absolute inset-2 overflow-hidden" }) })
438
- ] });
439
- }
440
- export {
441
- TerminalPanel
442
- };