@band-app/server 0.31.1 → 0.32.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 (175) hide show
  1. package/dist/client/assets/{TerminalPanel-DdoEObnF.js → TerminalPanel-CSIo5ni0.js} +1 -1
  2. package/dist/client/assets/_basePickBy-CdaZY6mI.js +1 -0
  3. package/dist/client/assets/{_baseUniq-BZZjCl_a.js → _baseUniq-Cbf2JylA.js} +1 -1
  4. package/dist/client/assets/addon-unicode11-LsnDChsR.js +1 -0
  5. package/dist/client/assets/{arc-CHfgBvn_.js → arc-93kXHiVA.js} +1 -1
  6. package/dist/client/assets/{architectureDiagram-VXUJARFQ-DQA19xNg.js → architectureDiagram-VXUJARFQ-mXd7ilfO.js} +1 -1
  7. package/dist/client/assets/{blockDiagram-VD42YOAC-F8PTxmQ_.js → blockDiagram-VD42YOAC-DpjfCZDe.js} +4 -4
  8. package/dist/client/assets/{c4Diagram-YG6GDRKO-BJUm36SI.js → c4Diagram-YG6GDRKO-D17zktyo.js} +1 -1
  9. package/dist/client/assets/channel-C4GiEGw4.js +1 -0
  10. package/dist/client/assets/{chunk-4BX2VUAB-C1wjI1w7.js → chunk-4BX2VUAB-UK3Q89L4.js} +1 -1
  11. package/dist/client/assets/{chunk-55IACEB6-CGfcCH6v.js → chunk-55IACEB6-DOnNiKCE.js} +1 -1
  12. package/dist/client/assets/{chunk-B4BG7PRW-DmVN_q5R.js → chunk-B4BG7PRW-RuY3pvrs.js} +3 -3
  13. package/dist/client/assets/{chunk-DI55MBZ5-Cp0-lUyt.js → chunk-DI55MBZ5-CLkaHQD0.js} +3 -3
  14. package/dist/client/assets/{chunk-FMBD7UC4-BE3Cu6Ut.js → chunk-FMBD7UC4-B2_FpfY1.js} +1 -1
  15. package/dist/client/assets/{chunk-QN33PNHL-CPVRy0ja.js → chunk-QN33PNHL-BJ5cRImN.js} +1 -1
  16. package/dist/client/assets/{chunk-QZHKN3VN-C7Y7bhq5.js → chunk-QZHKN3VN-DWhBc9Ty.js} +1 -1
  17. package/dist/client/assets/{chunk-TZMSLE5B-Bi_vlgox.js → chunk-TZMSLE5B-C6dn9jrV.js} +1 -1
  18. package/dist/client/assets/classDiagram-2ON5EDUG-y6v_VfOs.js +1 -0
  19. package/dist/client/assets/classDiagram-v2-WZHVMYZB-y6v_VfOs.js +1 -0
  20. package/dist/client/assets/clone-B_3XeJsO.js +1 -0
  21. package/dist/client/assets/{cose-bilkent-S5V4N54A-CoCMLv_6.js → cose-bilkent-S5V4N54A-CApk1lUu.js} +1 -1
  22. package/dist/client/assets/{dagre-6UL2VRFP-EnAkiIUe.js → dagre-6UL2VRFP-BmLALXZu.js} +2 -2
  23. package/dist/client/assets/{diagram-PSM6KHXK-C2Y89USX.js → diagram-PSM6KHXK-C2cPLLkQ.js} +1 -1
  24. package/dist/client/assets/{diagram-QEK2KX5R-B-lmAMSj.js → diagram-QEK2KX5R-vmbBSzsB.js} +2 -2
  25. package/dist/client/assets/diagram-S2PKOQOG-RgcJYL9S.js +24 -0
  26. package/dist/client/assets/{erDiagram-Q2GNP2WA-PNRr4PfI.js → erDiagram-Q2GNP2WA-CpoxBAoy.js} +3 -3
  27. package/dist/client/assets/{flowDiagram-NV44I4VS-DMJLrOve.js → flowDiagram-NV44I4VS-DxnlkHRY.js} +3 -3
  28. package/dist/client/assets/{ganttDiagram-JELNMOA3-B8xTGdhz.js → ganttDiagram-JELNMOA3-DsnoA6Bi.js} +5 -5
  29. package/dist/client/assets/gitGraphDiagram-V2S2FVAM-CRGiaUIP.js +65 -0
  30. package/dist/client/assets/{graph-DtlkBWdT.js → graph-B0pjD7JO.js} +1 -1
  31. package/dist/client/assets/highlighted-body-B3W2YXNL-B-sBG2bX.js +1 -0
  32. package/dist/client/assets/index-2xKJ9Khi.js +1 -0
  33. package/dist/client/assets/index-BuhLC7zE.js +1 -0
  34. package/dist/client/assets/index-C08rV2E6.js +3 -0
  35. package/dist/client/assets/index-C5lac708.js +7 -0
  36. package/dist/client/assets/index-CrCMXmx8.js +1 -0
  37. package/dist/client/assets/index-Ct8NuxSL.js +1 -0
  38. package/dist/client/assets/{index-DzmcYgsK.js → index-DHizjwkP.js} +1 -1
  39. package/dist/client/assets/index-DoBYcXmW.js +1 -0
  40. package/dist/client/assets/index-THSuS9sd.js +1 -0
  41. package/dist/client/assets/index-TNsDOp6e.js +1 -0
  42. package/dist/client/assets/index-U5JB6u6d.js +1 -0
  43. package/dist/client/assets/{index-DwIIxwyA.js → index-ftqQmu5s.js} +2 -2
  44. package/dist/client/assets/index-sHvOWbSE.js +1 -0
  45. package/dist/client/assets/{infoDiagram-HS3SLOUP-DekD9pOv.js → infoDiagram-HS3SLOUP-CRp6iT8d.js} +1 -1
  46. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-Fzs0FbeM.js → journeyDiagram-XKPGCS4Q-BQ2WA6b4.js} +1 -1
  47. package/dist/client/assets/{kanban-definition-3W4ZIXB7-6B7ehAZt.js → kanban-definition-3W4ZIXB7-D-VXNhIi.js} +6 -6
  48. package/dist/client/assets/{layout-CcUD7gHw.js → layout-DqRyDMTL.js} +1 -1
  49. package/dist/client/assets/main-CmUn6n9o.css +1 -0
  50. package/dist/client/assets/main-CsKfm_iE.js +999 -0
  51. package/dist/client/assets/{mindmap-definition-VGOIOE7T-CfY1kt2W.js → mindmap-definition-VGOIOE7T-DF_KVmYJ.js} +4 -4
  52. package/dist/client/assets/{pieDiagram-ADFJNKIX-C-ZZw4jN.js → pieDiagram-ADFJNKIX-X9Gpsupa.js} +2 -2
  53. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-Cn4pxyBH.js → quadrantDiagram-AYHSOK5B-Dv43A6Kl.js} +1 -1
  54. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-B0UYN1Sq.js → requirementDiagram-UZGBJVZJ-Bsm1ID8v.js} +1 -1
  55. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-DegmNHvK.js → sankeyDiagram-TZEHDZUN-C89ZzNUa.js} +6 -6
  56. package/dist/client/assets/{sequenceDiagram-WL72ISMW-B8BlHF2c.js → sequenceDiagram-WL72ISMW-DCEzHjMR.js} +6 -6
  57. package/dist/client/assets/{stateDiagram-FKZM4ZOC-3FR63a_N.js → stateDiagram-FKZM4ZOC-DL_-FpOq.js} +1 -1
  58. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-D5laPTLF.js +1 -0
  59. package/dist/client/assets/{timeline-definition-IT6M3QCI-F2yYpGjm.js → timeline-definition-IT6M3QCI-BklAlKxM.js} +4 -4
  60. package/dist/client/assets/{treemap-GDKQZRPO-Br0ExAYs.js → treemap-GDKQZRPO-DugwR-ad.js} +1 -1
  61. package/dist/client/assets/workspace._workspaceId-CdoxJFsY.js +1 -0
  62. package/dist/client/assets/{workspace._workspaceId-DxBPbkq5.js → workspace._workspaceId-CvpowXC8.js} +1 -1
  63. package/dist/client/assets/{xychartDiagram-PRI3JC2R-CnbekSuG.js → xychartDiagram-PRI3JC2R-DEyS0s6m.js} +1 -1
  64. package/dist/migrations/20260926162113_browser_profiles/migration.sql +12 -0
  65. package/dist/migrations/20260926162113_browser_profiles/snapshot.json +1520 -0
  66. package/dist/openapi.json +1358 -360
  67. package/dist/server/assets/{TerminalPanel-CThgG3BY.js → TerminalPanel-BVyQf1VK.js} +1 -1
  68. package/dist/server/assets/{_basePickBy-DMEcDwoD.js → _basePickBy-DRh75DZA.js} +2 -2
  69. package/dist/server/assets/{_baseUniq-C6YEem8Y.js → _baseUniq-DxwDPh9u.js} +1 -1
  70. package/dist/server/assets/_tanstack-start-manifest_v-CfuLu7F9.js +4 -0
  71. package/dist/server/assets/addon-unicode11-BhCmKRb7.js +181 -0
  72. package/dist/server/assets/{arc-CcEw1rIf.js → arc-d221pGej.js} +1 -1
  73. package/dist/server/assets/{architecture-7HQA4BMR-BXvzNToj.js → architecture-7HQA4BMR-CDuqFHS1.js} +6 -6
  74. package/dist/server/assets/{architectureDiagram-VXUJARFQ-BliQCKdG.js → architectureDiagram-VXUJARFQ-LivVdR2U.js} +6 -6
  75. package/dist/server/assets/{blockDiagram-VD42YOAC-CjmYP_Tq.js → blockDiagram-VD42YOAC-Cpsga8jz.js} +6 -6
  76. package/dist/server/assets/{c4Diagram-YG6GDRKO-BfRolLuL.js → c4Diagram-YG6GDRKO-CR3dewU0.js} +2 -2
  77. package/dist/server/assets/{channel-CmYmU2fF.js → channel-CznEvUJx.js} +1 -1
  78. package/dist/server/assets/{chunk-4BX2VUAB-DnWdxOy5.js → chunk-4BX2VUAB-2XGKksov.js} +1 -1
  79. package/dist/server/assets/{chunk-55IACEB6-BTmbTQIk.js → chunk-55IACEB6-D_sfF6RU.js} +1 -1
  80. package/dist/server/assets/{chunk-B4BG7PRW-Dd8U8eRH.js → chunk-B4BG7PRW-DE9YZpuI.js} +4 -4
  81. package/dist/server/assets/{chunk-DI55MBZ5-DOSx8ES_.js → chunk-DI55MBZ5-1WmBcjv0.js} +3 -3
  82. package/dist/server/assets/{chunk-FMBD7UC4-DoS4CUAI.js → chunk-FMBD7UC4-0hzwdviV.js} +1 -1
  83. package/dist/server/assets/{chunk-QN33PNHL-81e5hpqA.js → chunk-QN33PNHL-sglY-9R6.js} +1 -1
  84. package/dist/server/assets/{chunk-QZHKN3VN-Cruwx7ml.js → chunk-QZHKN3VN-BL0yO15_.js} +1 -1
  85. package/dist/server/assets/{chunk-TZMSLE5B-CVdCnVV1.js → chunk-TZMSLE5B-CRCOAzqG.js} +1 -1
  86. package/dist/server/assets/{classDiagram-v2-WZHVMYZB-CI4dbXAN.js → classDiagram-2ON5EDUG-GVVGcmAY.js} +5 -5
  87. package/dist/server/assets/{classDiagram-2ON5EDUG-CI4dbXAN.js → classDiagram-v2-WZHVMYZB-GVVGcmAY.js} +5 -5
  88. package/dist/server/assets/{clone-DCf3XlPY.js → clone-Cw9PiOA8.js} +1 -1
  89. package/dist/server/assets/{cose-bilkent-S5V4N54A-MuUXxVtC.js → cose-bilkent-S5V4N54A-xdF6iXS1.js} +1 -1
  90. package/dist/server/assets/{dagre-6UL2VRFP-C7ckn20c.js → dagre-6UL2VRFP-ZMimZN6M.js} +6 -6
  91. package/dist/server/assets/{diagram-PSM6KHXK-CMxqFNNc.js → diagram-PSM6KHXK-AtdXKese.js} +7 -7
  92. package/dist/server/assets/{diagram-QEK2KX5R-DGn7Wc3l.js → diagram-QEK2KX5R-to1VE7Ky.js} +6 -6
  93. package/dist/server/assets/{diagram-S2PKOQOG-DCkkbBLl.js → diagram-S2PKOQOG-lJFLwEPR.js} +6 -6
  94. package/dist/server/assets/{erDiagram-Q2GNP2WA-CKPFaAp2.js → erDiagram-Q2GNP2WA-CbevyytQ.js} +4 -4
  95. package/dist/server/assets/{flowDiagram-NV44I4VS-DFf8L08F.js → flowDiagram-NV44I4VS-DTd0gkkY.js} +5 -5
  96. package/dist/server/assets/{ganttDiagram-JELNMOA3-1-t_r6jX.js → ganttDiagram-JELNMOA3-YwmrEI5N.js} +1 -1
  97. package/dist/server/assets/{gitGraph-G5XIXVHT-CXVQFRFs.js → gitGraph-G5XIXVHT-BArDd0OC.js} +6 -6
  98. package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-DVqN7ZP0.js → gitGraphDiagram-V2S2FVAM-BTThcyM8.js} +7 -7
  99. package/dist/server/assets/{graph-Dot7YH89.js → graph-BOO01qmU.js} +2 -2
  100. package/dist/server/assets/{highlighted-body-B3W2YXNL-8cjZuRJ2.js → highlighted-body-B3W2YXNL-Cym8kCCk.js} +1 -1
  101. package/dist/server/assets/{index-Bi1NreVG.js → index-3bt1s3HG.js} +1 -5
  102. package/dist/server/assets/{index-p6O_x_qN.js → index-7I7gBKIT.js} +1 -2
  103. package/dist/server/assets/{index-Ba8AA28e.js → index-BQaiSrqT.js} +1 -2
  104. package/dist/server/assets/{index-AmUVRRsa.js → index-CBT9vLeO.js} +1 -2
  105. package/dist/server/assets/{index-BDgBWXBD.js → index-CQd5Q7Kt.js} +1 -2
  106. package/dist/server/assets/{index-D6Vm7E_i.js → index-CaFux-EA.js} +1 -2
  107. package/dist/server/assets/{index-D3AFKy3U.js → index-Ckc3EtXO.js} +1 -3
  108. package/dist/server/assets/{index-C1hQNNzU.js → index-CsHpsK-4.js} +1 -2
  109. package/dist/server/assets/{index-CxlXrP3m.js → index-DVBTKosE.js} +1 -1
  110. package/dist/server/assets/{index-BcZgkaNS.js → index-DX1Ugorr.js} +1 -2
  111. package/dist/server/assets/{index-nzUHfYBx.js → index-DZfyQWn7.js} +1 -2
  112. package/dist/server/assets/{index-GgrvHhHi.js → index-Z7BJHwYS.js} +1 -3
  113. package/dist/server/assets/{index-B2x1DfYc.js → index-caXQk3Nh.js} +1 -2
  114. package/dist/server/assets/{info-VBDWY6EO-BXRDzzOP.js → info-VBDWY6EO-D4lcUmb_.js} +6 -6
  115. package/dist/server/assets/{infoDiagram-HS3SLOUP-D2jQYgOa.js → infoDiagram-HS3SLOUP-C1ai--xt.js} +5 -5
  116. package/dist/server/assets/{journeyDiagram-XKPGCS4Q-bf_S8co7.js → journeyDiagram-XKPGCS4Q-qel6lxPz.js} +4 -4
  117. package/dist/server/assets/{kanban-definition-3W4ZIXB7-eje5lYLG.js → kanban-definition-3W4ZIXB7-BQPKgoP_.js} +2 -2
  118. package/dist/server/assets/{layout-D3AhBFqI.js → layout-D_wAQ9pE.js} +4 -4
  119. package/dist/server/assets/{mermaid-3ZIDBTTL-C-00O3F0.js → mermaid-3ZIDBTTL-CtNgetEO.js} +1 -1
  120. package/dist/server/assets/{mermaid-parser.core-CyX4B1l5.js → mermaid-parser.core-BwjOeEsU.js} +11 -11
  121. package/dist/server/assets/{mindmap-definition-VGOIOE7T-D51F_plo.js → mindmap-definition-VGOIOE7T-DYdatMwP.js} +3 -3
  122. package/dist/server/assets/{packet-DYOGHKS2-CCJkkNTh.js → packet-DYOGHKS2-_TbN3RWI.js} +6 -6
  123. package/dist/server/assets/{pie-VRWISCQL-7Tei6lnA.js → pie-VRWISCQL-D9Z5k3qi.js} +6 -6
  124. package/dist/server/assets/{pieDiagram-ADFJNKIX-BclaT-41.js → pieDiagram-ADFJNKIX-COmj-G7F.js} +7 -7
  125. package/dist/server/assets/{quadrantDiagram-AYHSOK5B-CnerVMbZ.js → quadrantDiagram-AYHSOK5B-BajsyCAd.js} +1 -1
  126. package/dist/server/assets/{radar-ZZBFDIW7-QLmbgAT7.js → radar-ZZBFDIW7-DLipfn_u.js} +6 -6
  127. package/dist/server/assets/{requirementDiagram-UZGBJVZJ-a2FIYlfE.js → requirementDiagram-UZGBJVZJ-BGEkpdbY.js} +3 -3
  128. package/dist/server/assets/{router-DDnNUwTm.js → router-Dpb0Z442.js} +60068 -39061
  129. package/dist/server/assets/{sankeyDiagram-TZEHDZUN-B3I-S6CG.js → sankeyDiagram-TZEHDZUN-CWd3AEju.js} +1 -1
  130. package/dist/server/assets/{sequenceDiagram-WL72ISMW-kgJrgJ9r.js → sequenceDiagram-WL72ISMW-BMTkK0JQ.js} +3 -3
  131. package/dist/server/assets/{stateDiagram-FKZM4ZOC-C6UTf0ag.js → stateDiagram-FKZM4ZOC-CpBXq11c.js} +8 -8
  132. package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-Dj0SlbA4.js → stateDiagram-v2-4FDKWEC3-DNuppjf9.js} +4 -4
  133. package/dist/server/assets/{timeline-definition-IT6M3QCI-DGPtqtJD.js → timeline-definition-IT6M3QCI-YTyqSIDt.js} +2 -2
  134. package/dist/server/assets/{treemap-GDKQZRPO-B-wn0rT7.js → treemap-GDKQZRPO-BeWiYXRR.js} +6 -6
  135. package/dist/server/assets/{workspace._workspaceId-CG5NG8aZ.js → workspace._workspaceId-Ce_eap6T.js} +1 -1
  136. package/dist/server/assets/{workspace._workspaceId-Dd-upXb6.js → workspace._workspaceId-t0HaEyN5.js} +2 -12
  137. package/dist/server/assets/{xychartDiagram-PRI3JC2R-BTb4nc1D.js → xychartDiagram-PRI3JC2R-Dlgz7zKK.js} +1 -1
  138. package/dist/server/server.js +2 -2
  139. package/dist/start-server.mjs +25456 -6063
  140. package/dist/terminal-daemon.mjs +341 -11
  141. package/package.json +6 -4
  142. package/dist/client/assets/_basePickBy-B3BFyLWC.js +0 -1
  143. package/dist/client/assets/channel-RulspXoY.js +0 -1
  144. package/dist/client/assets/classDiagram-2ON5EDUG-Db0XAgV5.js +0 -1
  145. package/dist/client/assets/classDiagram-v2-WZHVMYZB-Db0XAgV5.js +0 -1
  146. package/dist/client/assets/clone-OMk_JTVX.js +0 -1
  147. package/dist/client/assets/diagram-S2PKOQOG-D3nbDuM4.js +0 -24
  148. package/dist/client/assets/gitGraphDiagram-V2S2FVAM-1W-3cgTi.js +0 -65
  149. package/dist/client/assets/highlighted-body-B3W2YXNL-By10eQ93.js +0 -1
  150. package/dist/client/assets/index-3OKF_8Is.js +0 -1
  151. package/dist/client/assets/index-Bgy7cu0a.js +0 -1
  152. package/dist/client/assets/index-BzNAZ5FA.js +0 -1
  153. package/dist/client/assets/index-Bzw80mva.js +0 -1
  154. package/dist/client/assets/index-C0hp-RSv.js +0 -7
  155. package/dist/client/assets/index-CEIbmBrz.js +0 -1
  156. package/dist/client/assets/index-D0-MMrtE.js +0 -13
  157. package/dist/client/assets/index-D1tzUCeW.js +0 -1
  158. package/dist/client/assets/index-DS648c4_.js +0 -1
  159. package/dist/client/assets/index-DV4-ZPTy.js +0 -1
  160. package/dist/client/assets/index-DkJyKKg0.js +0 -1
  161. package/dist/client/assets/index-Do8FqasK.js +0 -1
  162. package/dist/client/assets/index-DtgD3j-s.js +0 -6
  163. package/dist/client/assets/index-UlnCpzJG.js +0 -1
  164. package/dist/client/assets/index-bqUQQY5s.js +0 -3
  165. package/dist/client/assets/index-os2U5ZBq.js +0 -1
  166. package/dist/client/assets/main-B-TE9tSM.js +0 -979
  167. package/dist/client/assets/main-mRE1Fhv7.css +0 -1
  168. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-BrxlUWYt.js +0 -1
  169. package/dist/client/assets/workspace._workspaceId-C0VOYb-1.js +0 -1
  170. package/dist/server/assets/_tanstack-start-manifest_v-D-Rf7MMa.js +0 -4
  171. package/dist/server/assets/index-Bt0zkb77.js +0 -1052
  172. package/dist/server/assets/index-CImaqmmh.js +0 -1764
  173. package/dist/server/assets/index-CXGBWoOB.js +0 -2499
  174. package/dist/server/assets/index-CyFAdMlV.js +0 -1030
  175. package/dist/server/assets/index-DoE2xDo2.js +0 -653
@@ -8596,6 +8596,250 @@ var require_addon_serialize = __commonJS({
8596
8596
  }
8597
8597
  });
8598
8598
 
8599
+ // ../../node_modules/.pnpm/@xterm+addon-unicode11@0.10.0-beta.291_@xterm+xterm@6.1.0-beta.291/node_modules/@xterm/addon-unicode11/lib/addon-unicode11.js
8600
+ var require_addon_unicode11 = __commonJS({
8601
+ "../../node_modules/.pnpm/@xterm+addon-unicode11@0.10.0-beta.291_@xterm+xterm@6.1.0-beta.291/node_modules/@xterm/addon-unicode11/lib/addon-unicode11.js"(exports, module) {
8602
+ !(function(e, s) {
8603
+ "object" == typeof exports && "object" == typeof module ? module.exports = s() : "function" == typeof define && define.amd ? define([], s) : "object" == typeof exports ? exports.Unicode11Addon = s() : e.Unicode11Addon = s();
8604
+ })(globalThis, () => (() => {
8605
+ "use strict";
8606
+ var e = { 414(e2, s2, t2) {
8607
+ Object.defineProperty(s2, "__esModule", { value: true }), s2.EventUtils = s2.Emitter = void 0;
8608
+ const i2 = t2(426);
8609
+ var r;
8610
+ s2.Emitter = class {
8611
+ constructor() {
8612
+ this._listeners = [], this._disposed = false;
8613
+ }
8614
+ get event() {
8615
+ return this._event || (this._event = (e3, s3, t3) => {
8616
+ if (this._disposed) return (0, i2.toDisposable)(() => {
8617
+ });
8618
+ const r2 = { fn: e3, thisArgs: s3 };
8619
+ this._listeners.push(r2);
8620
+ const o = (0, i2.toDisposable)(() => {
8621
+ const e4 = this._listeners.indexOf(r2);
8622
+ -1 !== e4 && this._listeners.splice(e4, 1);
8623
+ });
8624
+ return t3 && (Array.isArray(t3) ? t3.push(o) : t3.add(o)), o;
8625
+ }), this._event;
8626
+ }
8627
+ fire(e3) {
8628
+ if (!this._disposed) switch (this._listeners.length) {
8629
+ case 0:
8630
+ return;
8631
+ case 1: {
8632
+ const { fn: s3, thisArgs: t3 } = this._listeners[0];
8633
+ return void s3.call(t3, e3);
8634
+ }
8635
+ default: {
8636
+ const s3 = this._listeners.slice();
8637
+ for (const { fn: t3, thisArgs: i3 } of s3) t3.call(i3, e3);
8638
+ }
8639
+ }
8640
+ }
8641
+ dispose() {
8642
+ this._disposed || (this._disposed = true, this._listeners.length = 0);
8643
+ }
8644
+ }, (function(e3) {
8645
+ e3.forward = function(e4, s3) {
8646
+ return e4((e5) => s3.fire(e5));
8647
+ }, e3.map = function(e4, s3) {
8648
+ return (t3, i3, r2) => e4((e5) => t3.call(i3, s3(e5)), void 0, r2);
8649
+ }, e3.any = function(...e4) {
8650
+ return (s3, t3, r2) => {
8651
+ const o = new i2.DisposableStore();
8652
+ for (const i3 of e4) o.add(i3((e5) => s3.call(t3, e5)));
8653
+ return r2 && (Array.isArray(r2) ? r2.push(o) : r2.add(o)), o;
8654
+ };
8655
+ }, e3.runAndSubscribe = function(e4, s3, t3) {
8656
+ return s3(t3), e4((e5) => s3(e5));
8657
+ };
8658
+ })(r || (s2.EventUtils = r = {}));
8659
+ }, 426(e2, s2) {
8660
+ function t2(e3) {
8661
+ return { dispose: e3 };
8662
+ }
8663
+ function i2(e3) {
8664
+ if (!e3) return e3;
8665
+ if (Array.isArray(e3)) {
8666
+ for (const s3 of e3) s3.dispose();
8667
+ return [];
8668
+ }
8669
+ return e3.dispose(), e3;
8670
+ }
8671
+ Object.defineProperty(s2, "__esModule", { value: true }), s2.MutableDisposable = s2.Disposable = s2.DisposableStore = void 0, s2.toDisposable = t2, s2.dispose = i2, s2.combinedDisposable = function(...e3) {
8672
+ return t2(() => i2(e3));
8673
+ };
8674
+ class r {
8675
+ constructor() {
8676
+ this._disposables = /* @__PURE__ */ new Set(), this._isDisposed = false;
8677
+ }
8678
+ get isDisposed() {
8679
+ return this._isDisposed;
8680
+ }
8681
+ add(e3) {
8682
+ return this._isDisposed ? e3.dispose() : this._disposables.add(e3), e3;
8683
+ }
8684
+ dispose() {
8685
+ if (!this._isDisposed) {
8686
+ this._isDisposed = true;
8687
+ for (const e3 of this._disposables) e3.dispose();
8688
+ this._disposables.clear();
8689
+ }
8690
+ }
8691
+ clear() {
8692
+ for (const e3 of this._disposables) e3.dispose();
8693
+ this._disposables.clear();
8694
+ }
8695
+ }
8696
+ s2.DisposableStore = r;
8697
+ class o {
8698
+ constructor() {
8699
+ this._store = new r();
8700
+ }
8701
+ dispose() {
8702
+ this._store.dispose();
8703
+ }
8704
+ _register(e3) {
8705
+ return this._store.add(e3);
8706
+ }
8707
+ }
8708
+ s2.Disposable = o, o.None = Object.freeze({ dispose() {
8709
+ } }), s2.MutableDisposable = class {
8710
+ constructor() {
8711
+ this._isDisposed = false;
8712
+ }
8713
+ get value() {
8714
+ return this._isDisposed ? void 0 : this._value;
8715
+ }
8716
+ set value(e3) {
8717
+ this._isDisposed || e3 === this._value || (this._value?.dispose(), this._value = e3);
8718
+ }
8719
+ clear() {
8720
+ this.value = void 0;
8721
+ }
8722
+ dispose() {
8723
+ this._isDisposed = true, this._value?.dispose(), this._value = void 0;
8724
+ }
8725
+ };
8726
+ }, 765(e2, s2, t2) {
8727
+ Object.defineProperty(s2, "__esModule", { value: true }), s2.UnicodeService = void 0;
8728
+ const i2 = t2(414);
8729
+ class r {
8730
+ constructor() {
8731
+ this._providers = /* @__PURE__ */ Object.create(null), this._active = "", this._onChange = new i2.Emitter(), this.onChange = this._onChange.event;
8732
+ }
8733
+ static extractShouldJoin(e3) {
8734
+ return !!(1 & e3);
8735
+ }
8736
+ static extractWidth(e3) {
8737
+ return e3 >> 1 & 3;
8738
+ }
8739
+ static extractCharKind(e3) {
8740
+ return e3 >> 3;
8741
+ }
8742
+ static createPropertyValue(e3, s3, t3 = false) {
8743
+ return (16777215 & e3) << 3 | (3 & s3) << 1 | (t3 ? 1 : 0);
8744
+ }
8745
+ dispose() {
8746
+ this._onChange.dispose();
8747
+ }
8748
+ get versions() {
8749
+ return Object.keys(this._providers);
8750
+ }
8751
+ get activeVersion() {
8752
+ return this._active;
8753
+ }
8754
+ set activeVersion(e3) {
8755
+ if (!this._providers[e3]) throw new Error(`unknown Unicode version "${e3}"`);
8756
+ this._active = e3, this._activeProvider = this._providers[e3], this._onChange.fire(e3);
8757
+ }
8758
+ register(e3) {
8759
+ this._providers[e3.version] = e3, this._active || (this.activeVersion = e3.version);
8760
+ }
8761
+ wcwidth(e3) {
8762
+ return this._activeProvider.wcwidth(e3);
8763
+ }
8764
+ getStringCellWidth(e3) {
8765
+ let s3 = 0, t3 = 0;
8766
+ const i3 = e3.length;
8767
+ for (let o = 0; o < i3; ++o) {
8768
+ let n = e3.charCodeAt(o);
8769
+ if (55296 <= n && n <= 56319) {
8770
+ if (++o >= i3) return s3 + this.wcwidth(n);
8771
+ const t4 = e3.charCodeAt(o);
8772
+ 56320 <= t4 && t4 <= 57343 ? n = 1024 * (n - 55296) + t4 - 56320 + 65536 : s3 += this.wcwidth(t4);
8773
+ }
8774
+ const d = this.charProperties(n, t3);
8775
+ let c = r.extractWidth(d);
8776
+ r.extractShouldJoin(d) && (c -= r.extractWidth(t3)), s3 += c, t3 = d;
8777
+ }
8778
+ return s3;
8779
+ }
8780
+ charProperties(e3, s3) {
8781
+ return this._activeProvider.charProperties(e3, s3);
8782
+ }
8783
+ }
8784
+ s2.UnicodeService = r;
8785
+ }, 384(e2, s2, t2) {
8786
+ Object.defineProperty(s2, "__esModule", { value: true }), s2.UnicodeV11 = void 0;
8787
+ const i2 = t2(765), r = [[768, 879], [1155, 1161], [1425, 1469], [1471, 1471], [1473, 1474], [1476, 1477], [1479, 1479], [1536, 1541], [1552, 1562], [1564, 1564], [1611, 1631], [1648, 1648], [1750, 1757], [1759, 1764], [1767, 1768], [1770, 1773], [1807, 1807], [1809, 1809], [1840, 1866], [1958, 1968], [2027, 2035], [2045, 2045], [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2093], [2137, 2139], [2259, 2306], [2362, 2362], [2364, 2364], [2369, 2376], [2381, 2381], [2385, 2391], [2402, 2403], [2433, 2433], [2492, 2492], [2497, 2500], [2509, 2509], [2530, 2531], [2558, 2558], [2561, 2562], [2620, 2620], [2625, 2626], [2631, 2632], [2635, 2637], [2641, 2641], [2672, 2673], [2677, 2677], [2689, 2690], [2748, 2748], [2753, 2757], [2759, 2760], [2765, 2765], [2786, 2787], [2810, 2815], [2817, 2817], [2876, 2876], [2879, 2879], [2881, 2884], [2893, 2893], [2902, 2902], [2914, 2915], [2946, 2946], [3008, 3008], [3021, 3021], [3072, 3072], [3076, 3076], [3134, 3136], [3142, 3144], [3146, 3149], [3157, 3158], [3170, 3171], [3201, 3201], [3260, 3260], [3263, 3263], [3270, 3270], [3276, 3277], [3298, 3299], [3328, 3329], [3387, 3388], [3393, 3396], [3405, 3405], [3426, 3427], [3530, 3530], [3538, 3540], [3542, 3542], [3633, 3633], [3636, 3642], [3655, 3662], [3761, 3761], [3764, 3772], [3784, 3789], [3864, 3865], [3893, 3893], [3895, 3895], [3897, 3897], [3953, 3966], [3968, 3972], [3974, 3975], [3981, 3991], [3993, 4028], [4038, 4038], [4141, 4144], [4146, 4151], [4153, 4154], [4157, 4158], [4184, 4185], [4190, 4192], [4209, 4212], [4226, 4226], [4229, 4230], [4237, 4237], [4253, 4253], [4448, 4607], [4957, 4959], [5906, 5908], [5938, 5940], [5970, 5971], [6002, 6003], [6068, 6069], [6071, 6077], [6086, 6086], [6089, 6099], [6109, 6109], [6155, 6158], [6277, 6278], [6313, 6313], [6432, 6434], [6439, 6440], [6450, 6450], [6457, 6459], [6679, 6680], [6683, 6683], [6742, 6742], [6744, 6750], [6752, 6752], [6754, 6754], [6757, 6764], [6771, 6780], [6783, 6783], [6832, 6846], [6912, 6915], [6964, 6964], [6966, 6970], [6972, 6972], [6978, 6978], [7019, 7027], [7040, 7041], [7074, 7077], [7080, 7081], [7083, 7085], [7142, 7142], [7144, 7145], [7149, 7149], [7151, 7153], [7212, 7219], [7222, 7223], [7376, 7378], [7380, 7392], [7394, 7400], [7405, 7405], [7412, 7412], [7416, 7417], [7616, 7673], [7675, 7679], [8203, 8207], [8234, 8238], [8288, 8292], [8294, 8303], [8400, 8432], [11503, 11505], [11647, 11647], [11744, 11775], [12330, 12333], [12441, 12442], [42607, 42610], [42612, 42621], [42654, 42655], [42736, 42737], [43010, 43010], [43014, 43014], [43019, 43019], [43045, 43046], [43204, 43205], [43232, 43249], [43263, 43263], [43302, 43309], [43335, 43345], [43392, 43394], [43443, 43443], [43446, 43449], [43452, 43453], [43493, 43493], [43561, 43566], [43569, 43570], [43573, 43574], [43587, 43587], [43596, 43596], [43644, 43644], [43696, 43696], [43698, 43700], [43703, 43704], [43710, 43711], [43713, 43713], [43756, 43757], [43766, 43766], [44005, 44005], [44008, 44008], [44013, 44013], [64286, 64286], [65024, 65039], [65056, 65071], [65279, 65279], [65529, 65531]], o = [[66045, 66045], [66272, 66272], [66422, 66426], [68097, 68099], [68101, 68102], [68108, 68111], [68152, 68154], [68159, 68159], [68325, 68326], [68900, 68903], [69446, 69456], [69633, 69633], [69688, 69702], [69759, 69761], [69811, 69814], [69817, 69818], [69821, 69821], [69837, 69837], [69888, 69890], [69927, 69931], [69933, 69940], [70003, 70003], [70016, 70017], [70070, 70078], [70089, 70092], [70191, 70193], [70196, 70196], [70198, 70199], [70206, 70206], [70367, 70367], [70371, 70378], [70400, 70401], [70459, 70460], [70464, 70464], [70502, 70508], [70512, 70516], [70712, 70719], [70722, 70724], [70726, 70726], [70750, 70750], [70835, 70840], [70842, 70842], [70847, 70848], [70850, 70851], [71090, 71093], [71100, 71101], [71103, 71104], [71132, 71133], [71219, 71226], [71229, 71229], [71231, 71232], [71339, 71339], [71341, 71341], [71344, 71349], [71351, 71351], [71453, 71455], [71458, 71461], [71463, 71467], [71727, 71735], [71737, 71738], [72148, 72151], [72154, 72155], [72160, 72160], [72193, 72202], [72243, 72248], [72251, 72254], [72263, 72263], [72273, 72278], [72281, 72283], [72330, 72342], [72344, 72345], [72752, 72758], [72760, 72765], [72767, 72767], [72850, 72871], [72874, 72880], [72882, 72883], [72885, 72886], [73009, 73014], [73018, 73018], [73020, 73021], [73023, 73029], [73031, 73031], [73104, 73105], [73109, 73109], [73111, 73111], [73459, 73460], [78896, 78904], [92912, 92916], [92976, 92982], [94031, 94031], [94095, 94098], [113821, 113822], [113824, 113827], [119143, 119145], [119155, 119170], [119173, 119179], [119210, 119213], [119362, 119364], [121344, 121398], [121403, 121452], [121461, 121461], [121476, 121476], [121499, 121503], [121505, 121519], [122880, 122886], [122888, 122904], [122907, 122913], [122915, 122916], [122918, 122922], [123184, 123190], [123628, 123631], [125136, 125142], [125252, 125258], [917505, 917505], [917536, 917631], [917760, 917999]], n = [[4352, 4447], [8986, 8987], [9001, 9002], [9193, 9196], [9200, 9200], [9203, 9203], [9725, 9726], [9748, 9749], [9800, 9811], [9855, 9855], [9875, 9875], [9889, 9889], [9898, 9899], [9917, 9918], [9924, 9925], [9934, 9934], [9940, 9940], [9962, 9962], [9970, 9971], [9973, 9973], [9978, 9978], [9981, 9981], [9989, 9989], [9994, 9995], [10024, 10024], [10060, 10060], [10062, 10062], [10067, 10069], [10071, 10071], [10133, 10135], [10160, 10160], [10175, 10175], [11035, 11036], [11088, 11088], [11093, 11093], [11904, 11929], [11931, 12019], [12032, 12245], [12272, 12283], [12288, 12329], [12334, 12350], [12353, 12438], [12443, 12543], [12549, 12591], [12593, 12686], [12688, 12730], [12736, 12771], [12784, 12830], [12832, 12871], [12880, 19903], [19968, 42124], [42128, 42182], [43360, 43388], [44032, 55203], [63744, 64255], [65040, 65049], [65072, 65106], [65108, 65126], [65128, 65131], [65281, 65376], [65504, 65510]], d = [[94176, 94179], [94208, 100343], [100352, 101106], [110592, 110878], [110928, 110930], [110948, 110951], [110960, 111355], [126980, 126980], [127183, 127183], [127374, 127374], [127377, 127386], [127488, 127490], [127504, 127547], [127552, 127560], [127568, 127569], [127584, 127589], [127744, 127776], [127789, 127797], [127799, 127868], [127870, 127891], [127904, 127946], [127951, 127955], [127968, 127984], [127988, 127988], [127992, 128062], [128064, 128064], [128066, 128252], [128255, 128317], [128331, 128334], [128336, 128359], [128378, 128378], [128405, 128406], [128420, 128420], [128507, 128591], [128640, 128709], [128716, 128716], [128720, 128722], [128725, 128725], [128747, 128748], [128756, 128762], [128992, 129003], [129293, 129393], [129395, 129398], [129402, 129442], [129445, 129450], [129454, 129482], [129485, 129535], [129648, 129651], [129656, 129658], [129664, 129666], [129680, 129685], [131072, 196605], [196608, 262141]];
8788
+ let c;
8789
+ function a(e3, s3) {
8790
+ let t3, i3 = 0, r2 = s3.length - 1;
8791
+ if (e3 < s3[0][0] || e3 > s3[r2][1]) return false;
8792
+ for (; r2 >= i3; ) if (t3 = i3 + r2 >> 1, e3 > s3[t3][1]) i3 = t3 + 1;
8793
+ else {
8794
+ if (!(e3 < s3[t3][0])) return true;
8795
+ r2 = t3 - 1;
8796
+ }
8797
+ return false;
8798
+ }
8799
+ s2.UnicodeV11 = class {
8800
+ constructor() {
8801
+ if (this.version = "11", !c) {
8802
+ c = new Uint8Array(65536), c.fill(1), c[0] = 0, c.fill(0, 1, 32), c.fill(0, 127, 160);
8803
+ for (let e3 = 0; e3 < r.length; ++e3) c.fill(0, r[e3][0], r[e3][1] + 1);
8804
+ for (let e3 = 0; e3 < n.length; ++e3) c.fill(2, n[e3][0], n[e3][1] + 1);
8805
+ }
8806
+ }
8807
+ wcwidth(e3) {
8808
+ return e3 < 32 ? 0 : e3 < 127 ? 1 : e3 < 65536 ? c[e3] : a(e3, o) ? 0 : a(e3, d) ? 2 : 1;
8809
+ }
8810
+ charProperties(e3, s3) {
8811
+ let t3 = this.wcwidth(e3), r2 = 0 === t3 && 0 !== s3;
8812
+ if (r2) {
8813
+ const e4 = i2.UnicodeService.extractWidth(s3);
8814
+ 0 === e4 ? r2 = false : e4 > t3 && (t3 = e4);
8815
+ }
8816
+ return i2.UnicodeService.createPropertyValue(0, t3, r2);
8817
+ }
8818
+ };
8819
+ } }, s = {};
8820
+ function t(i2) {
8821
+ var r = s[i2];
8822
+ if (void 0 !== r) return r.exports;
8823
+ var o = s[i2] = { exports: {} };
8824
+ return e[i2](o, o.exports, t), o.exports;
8825
+ }
8826
+ var i = {};
8827
+ return (() => {
8828
+ var e2 = i;
8829
+ Object.defineProperty(e2, "__esModule", { value: true }), e2.Unicode11Addon = void 0;
8830
+ const s2 = t(384);
8831
+ e2.Unicode11Addon = class {
8832
+ activate(e3) {
8833
+ e3.unicode.register(new s2.UnicodeV11());
8834
+ }
8835
+ dispose() {
8836
+ }
8837
+ };
8838
+ })(), i;
8839
+ })());
8840
+ }
8841
+ });
8842
+
8599
8843
  // terminal-daemon.ts
8600
8844
  import { fileURLToPath } from "node:url";
8601
8845
  import { parseArgs } from "node:util";
@@ -8687,6 +8931,38 @@ var MAX_SCROLLBACK_SIZE = 1e5;
8687
8931
  var HEADLESS_SCROLLBACK_LINES = 1e4;
8688
8932
  var MAX_COLS = 1e3;
8689
8933
  var MAX_ROWS = 1e3;
8934
+ var OutputTail = class {
8935
+ constructor(max) {
8936
+ this.max = max;
8937
+ }
8938
+ chunks = [];
8939
+ /** Index of the oldest chunk still held; earlier slots are dropped. */
8940
+ head = 0;
8941
+ /** Total characters in `chunks[head..]`. */
8942
+ size = 0;
8943
+ get length() {
8944
+ return Math.min(this.size, this.max);
8945
+ }
8946
+ append(data) {
8947
+ if (data.length === 0) return;
8948
+ this.chunks.push(data);
8949
+ this.size += data.length;
8950
+ while (this.size - this.chunks[this.head].length >= this.max) {
8951
+ this.size -= this.chunks[this.head].length;
8952
+ this.head += 1;
8953
+ }
8954
+ if (this.head > 64 && this.head * 2 > this.chunks.length) {
8955
+ this.chunks = this.chunks.slice(this.head);
8956
+ this.head = 0;
8957
+ }
8958
+ }
8959
+ toString() {
8960
+ const joined = this.chunks.slice(this.head).join("");
8961
+ this.chunks = [joined];
8962
+ this.head = 0;
8963
+ return joined.length > this.max ? joined.slice(-this.max) : joined;
8964
+ }
8965
+ };
8690
8966
  var TerminalPool = class {
8691
8967
  /** terminalId -> session */
8692
8968
  terminals = /* @__PURE__ */ new Map();
@@ -8806,6 +9082,8 @@ var TerminalPool = class {
8806
9082
  const { Terminal } = "Terminal" in headlessNs ? headlessNs : headlessNs.default;
8807
9083
  const serializeNs = await Promise.resolve().then(() => __toESM(require_addon_serialize(), 1));
8808
9084
  const { SerializeAddon } = "SerializeAddon" in serializeNs ? serializeNs : serializeNs.default;
9085
+ const unicode11Ns = await Promise.resolve().then(() => __toESM(require_addon_unicode11(), 1));
9086
+ const { Unicode11Addon } = "Unicode11Addon" in unicode11Ns ? unicode11Ns : unicode11Ns.default;
8809
9087
  headless = new Terminal({
8810
9088
  cols: 80,
8811
9089
  rows: 24,
@@ -8814,6 +9092,10 @@ var TerminalPool = class {
8814
9092
  });
8815
9093
  serializeAddon = new SerializeAddon();
8816
9094
  headless.loadAddon(serializeAddon);
9095
+ headless.loadAddon(
9096
+ new Unicode11Addon()
9097
+ );
9098
+ headless.unicode.activeVersion = "11";
8817
9099
  } catch (err) {
8818
9100
  ptyProcess.kill();
8819
9101
  const msg = err instanceof Error ? err.message : String(err);
@@ -8822,11 +9104,12 @@ var TerminalPool = class {
8822
9104
  }
8823
9105
  const session = {
8824
9106
  pty: ptyProcess,
8825
- scrollback: "",
9107
+ scrollback: new OutputTail(MAX_SCROLLBACK_SIZE),
8826
9108
  headless,
8827
9109
  serializeAddon,
8828
9110
  workspaceId,
8829
9111
  seq: 0,
9112
+ holds: 0,
8830
9113
  cleanupOnExit: extras?.cleanupOnExit ?? false
8831
9114
  };
8832
9115
  this.terminals.set(terminalId, session);
@@ -8840,10 +9123,7 @@ var TerminalPool = class {
8840
9123
  }
8841
9124
  ids.add(terminalId);
8842
9125
  ptyProcess.onData((data) => {
8843
- session.scrollback += data;
8844
- if (session.scrollback.length > MAX_SCROLLBACK_SIZE) {
8845
- session.scrollback = session.scrollback.slice(-MAX_SCROLLBACK_SIZE);
8846
- }
9126
+ session.scrollback.append(data);
8847
9127
  session.headless.write(data);
8848
9128
  session.seq += 1;
8849
9129
  const seq = session.seq;
@@ -9085,8 +9365,9 @@ var TerminalPool = class {
9085
9365
  getScrollback(terminalId, lines) {
9086
9366
  const session = this.terminals.get(terminalId);
9087
9367
  if (!session) return null;
9088
- if (lines == null) return session.scrollback;
9089
- const allLines = session.scrollback.split("\n");
9368
+ const scrollback = session.scrollback.toString();
9369
+ if (lines == null) return scrollback;
9370
+ const allLines = scrollback.split("\n");
9090
9371
  return allLines.slice(-lines).join("\n");
9091
9372
  }
9092
9373
  /**
@@ -9129,7 +9410,7 @@ var TerminalPool = class {
9129
9410
  const session = this.terminals.get(terminalId);
9130
9411
  if (!session) return null;
9131
9412
  if (session.scrollback.length === 0) return { data: "", seq: session.seq };
9132
- session.pty.pause();
9413
+ this.holdOutput(terminalId);
9133
9414
  let deathWatch;
9134
9415
  let drainCap;
9135
9416
  try {
@@ -9147,9 +9428,27 @@ var TerminalPool = class {
9147
9428
  } finally {
9148
9429
  if (deathWatch) clearInterval(deathWatch);
9149
9430
  if (drainCap) clearTimeout(drainCap);
9150
- if (this.terminals.get(terminalId) === session) session.pty.resume();
9431
+ if (this.terminals.get(terminalId) === session) this.releaseOutput(terminalId);
9151
9432
  }
9152
9433
  }
9434
+ /**
9435
+ * Stop reading the terminal's PTY until a matching {@link releaseOutput}.
9436
+ * The shell blocks once the kernel's PTY buffer fills, so a flood stops at
9437
+ * its source instead of piling up in memory. Holds nest.
9438
+ */
9439
+ holdOutput(terminalId) {
9440
+ const session = this.terminals.get(terminalId);
9441
+ if (!session) return;
9442
+ session.holds += 1;
9443
+ if (session.holds === 1) session.pty.pause();
9444
+ }
9445
+ /** Undo one {@link holdOutput}; the PTY resumes when the last is released. */
9446
+ releaseOutput(terminalId) {
9447
+ const session = this.terminals.get(terminalId);
9448
+ if (!session || session.holds === 0) return;
9449
+ session.holds -= 1;
9450
+ if (session.holds === 0) session.pty.resume();
9451
+ }
9153
9452
  /**
9154
9453
  * Writes data to a terminal's PTY stdin.
9155
9454
  * Returns false if the terminal is not found.
@@ -9489,6 +9788,8 @@ var WATCHDOG_INTERVAL_MS = 2e3;
9489
9788
  var SHUTDOWN_GRACE_MS = 2e3;
9490
9789
  var INITIAL_ADOPTION_MS = 2 * 6e4;
9491
9790
  var MAX_STREAM_BACKLOG_BYTES = 64 * 1024 * 1024;
9791
+ var STREAM_HOLD_BYTES = 128 * 1024;
9792
+ var SMALL_SESSION_CHARS = 4 * 1024;
9492
9793
  async function runDaemon(options) {
9493
9794
  const { paths, buildId, supersede: supersede2 } = options;
9494
9795
  ensurePrivateDir(paths.runDir);
@@ -9549,6 +9850,7 @@ async function runDaemon(options) {
9549
9850
  pool.onExit((event) => {
9550
9851
  for (const client of clients.values()) {
9551
9852
  client.attached.delete(event.terminalId);
9853
+ client.held.delete(event.terminalId);
9552
9854
  send(client, "stream", { t: "exit", ...event });
9553
9855
  }
9554
9856
  reevaluateIdle();
@@ -9681,7 +9983,14 @@ async function runDaemon(options) {
9681
9983
  function registerClient(clientId, role, socket) {
9682
9984
  let client = clients.get(clientId);
9683
9985
  if (!client) {
9684
- client = { id: clientId, control: null, stream: null, attached: /* @__PURE__ */ new Map() };
9986
+ client = {
9987
+ id: clientId,
9988
+ control: null,
9989
+ stream: null,
9990
+ attached: /* @__PURE__ */ new Map(),
9991
+ held: /* @__PURE__ */ new Set(),
9992
+ sentSinceEmpty: /* @__PURE__ */ new Map()
9993
+ };
9685
9994
  clients.set(clientId, client);
9686
9995
  }
9687
9996
  if (client[role]) return null;
@@ -9698,6 +10007,7 @@ async function runDaemon(options) {
9698
10007
  clients.delete(client.id);
9699
10008
  for (const unsubscribe of client.attached.values()) unsubscribe();
9700
10009
  client.attached.clear();
10010
+ releaseHolds(client);
9701
10011
  client.control?.destroy();
9702
10012
  client.stream?.destroy();
9703
10013
  if (clients.size === 0) retirementRequested = true;
@@ -9713,6 +10023,25 @@ async function runDaemon(options) {
9713
10023
  }
9714
10024
  writeFrame(socket, message);
9715
10025
  }
10026
+ function sendOutput(client, terminalId, seq, d) {
10027
+ const socket = client.stream;
10028
+ if (socket && socket.writableLength === 0) client.sentSinceEmpty.clear();
10029
+ send(client, "stream", { t: "data", id: terminalId, seq, d });
10030
+ if (!socket || socket.destroyed || clients.get(client.id) !== client) return;
10031
+ const sent = (client.sentSinceEmpty.get(terminalId) ?? 0) + d.length;
10032
+ client.sentSinceEmpty.set(terminalId, sent);
10033
+ if (socket.writableLength < STREAM_HOLD_BYTES || sent <= SMALL_SESSION_CHARS || client.held.has(terminalId)) {
10034
+ return;
10035
+ }
10036
+ client.held.add(terminalId);
10037
+ pool.holdOutput(terminalId);
10038
+ if (client.held.size === 1) socket.once("drain", () => releaseHolds(client));
10039
+ }
10040
+ function releaseHolds(client) {
10041
+ for (const terminalId of client.held) pool.releaseOutput(terminalId);
10042
+ client.held.clear();
10043
+ client.sentSinceEmpty.clear();
10044
+ }
9716
10045
  function handleControl(client, frame) {
9717
10046
  const message = frame;
9718
10047
  if (!hasValidIds(frame)) {
@@ -9750,6 +10079,7 @@ async function runDaemon(options) {
9750
10079
  const unsubscribe = client.attached.get(message.terminalId);
9751
10080
  client.attached.delete(message.terminalId);
9752
10081
  unsubscribe?.();
10082
+ if (client.held.delete(message.terminalId)) pool.releaseOutput(message.terminalId);
9753
10083
  return;
9754
10084
  }
9755
10085
  case "shutdown":
@@ -9807,7 +10137,7 @@ async function runDaemon(options) {
9807
10137
  const attached = await pool.attach(
9808
10138
  terminalId,
9809
10139
  dims,
9810
- (d, seq) => send(client, "stream", { t: "data", id: terminalId, seq, d })
10140
+ (d, seq) => sendOutput(client, terminalId, seq, d)
9811
10141
  );
9812
10142
  if (!attached) return null;
9813
10143
  if (client.attached.has(terminalId) || clients.get(client.id) !== client) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@band-app/server",
3
- "version": "0.31.1",
3
+ "version": "0.32.0",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "band-server": "./bin/band-server.mjs"
@@ -29,6 +29,7 @@
29
29
  "@vscode/ripgrep": "^1.18.0",
30
30
  "@xterm/addon-search": "0.17.0-beta.291",
31
31
  "@xterm/addon-serialize": "0.15.0-beta.291",
32
+ "@xterm/addon-unicode11": "0.10.0-beta.291",
32
33
  "@xterm/addon-webgl": "0.20.0-beta.290",
33
34
  "@xterm/headless": "6.1.0-beta.291",
34
35
  "fzf": "0.5.2",
@@ -69,6 +70,7 @@
69
70
  "@dnd-kit/core": "^6.3.1",
70
71
  "@dnd-kit/sortable": "^10.0.0",
71
72
  "@dnd-kit/utilities": "^3.2.2",
73
+ "@lezer/highlight": "^1.2.3",
72
74
  "@modelcontextprotocol/sdk": "^1.29.0",
73
75
  "@playwright/test": "^1.58.2",
74
76
  "@streamdown/cjk": "^1.0.2",
@@ -125,9 +127,9 @@
125
127
  "ws": "^8.18.0",
126
128
  "zod": "^3.25.67",
127
129
  "zustand": "^5.0.0",
128
- "@band-app/coding-agent": "^0.31.1",
129
- "@band-app/ui": "^0.31.1",
130
- "@band-app/logger": "^0.31.1"
130
+ "@band-app/logger": "^0.32.0",
131
+ "@band-app/coding-agent": "^0.32.0",
132
+ "@band-app/ui": "^0.32.0"
131
133
  },
132
134
  "scripts": {
133
135
  "dev": "NODE_ENV=development tsx watch start-server.ts",
@@ -1 +0,0 @@
1
- import{e as x,c as b,g as m,k as O,h as P,j as p,l as w,m as N,n as I,t as A,o as M}from"./_baseUniq-BZZjCl_a.js";import{cL as g,bd as E,cM as F,cN as T,cO as _,cP as c,cQ as $,cR as B,cS as S,cT as y}from"./main-B-TE9tSM.js";var L=/\s/;function R(n){for(var r=n.length;r--&&L.test(n.charAt(r)););return r}var G=/^\s+/;function H(n){return n&&n.slice(0,R(n)+1).replace(G,"")}var o=NaN,q=/^[-+]0x[0-9a-f]+$/i,z=/^0b[01]+$/i,C=/^0o[0-7]+$/i,K=parseInt;function Q(n){if(typeof n=="number")return n;if(x(n))return o;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=H(n);var t=z.test(n);return t||C.test(n)?K(n.slice(2),t?2:8):q.test(n)?o:+n}var v=1/0,W=17976931348623157e292;function X(n){if(!n)return n===0?n:0;if(n=Q(n),n===v||n===-v){var r=n<0?-1:1;return r*W}return n===n?n:0}function Y(n){var r=X(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?b(n):[]}var l=Object.prototype,D=l.hasOwnProperty,dn=E(function(n,r){n=Object(n);var t=-1,a=r.length,e=a>2?r[2]:void 0;for(e&&F(r[0],r[1],e)&&(a=1);++t<a;)for(var f=r[t],i=T(f),s=-1,d=i.length;++s<d;){var u=i[s],h=n[u];(h===void 0||_(h,l[u])&&!D.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function J(n){return function(r,t,a){var e=Object(r);if(!c(r)){var f=m(t);r=O(r),t=function(s){return f(e[s],s,e)}}var i=n(r,t,a);return i>-1?e[f?r[i]:i]:void 0}}var U=Math.max;function Z(n,r,t){var a=n==null?0:n.length;if(!a)return-1;var e=t==null?0:Y(t);return e<0&&(e=U(a+e,0)),P(n,m(r),e)}var hn=J(Z);function V(n,r){var t=-1,a=c(n)?Array(n.length):[];return p(n,function(e,f,i){a[++t]=r(e,f,i)}),a}function gn(n,r){var t=$(n)?w:V;return t(n,m(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function mn(n,r){return n!=null&&N(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var a=-1,e=n.length;++a<e;){var f=n[a],i=r(f);if(i!=null&&(s===void 0?i===i&&!x(i):t(i,s)))var s=i,d=f}return d}function on(n){return n&&n.length?tn(n,B,rn):void 0}function en(n,r,t,a){if(!g(n))return n;r=I(r,n);for(var e=-1,f=r.length,i=f-1,s=n;s!=null&&++e<f;){var d=A(r[e]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(e!=i){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:S(r[e+1])?[]:{})}y(s,d,u),s=s[d]}return n}function vn(n,r,t){for(var a=-1,e=r.length,f={};++a<e;){var i=r[a],s=M(n,i);t(s,i)&&en(f,I(i,n),s)}return f}export{rn as a,tn as b,V as c,vn as d,on as e,fn as f,hn as g,mn as h,dn as i,Y as j,un as l,gn as m,X as t};
@@ -1 +0,0 @@
1
- import{a1 as o,a2 as n}from"./main-B-TE9tSM.js";const t=(a,r)=>o.lang.round(n.parse(a)[r]);export{t as c};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-B4BG7PRW-DmVN_q5R.js";import{_ as i}from"./main-B-TE9tSM.js";import"./chunk-FMBD7UC4-BE3Cu6Ut.js";import"./chunk-55IACEB6-CGfcCH6v.js";import"./chunk-QN33PNHL-CPVRy0ja.js";var p={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{p as diagram};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-B4BG7PRW-DmVN_q5R.js";import{_ as i}from"./main-B-TE9tSM.js";import"./chunk-FMBD7UC4-BE3Cu6Ut.js";import"./chunk-55IACEB6-CGfcCH6v.js";import"./chunk-QN33PNHL-CPVRy0ja.js";var p={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{p as diagram};
@@ -1 +0,0 @@
1
- import{b as r}from"./_baseUniq-BZZjCl_a.js";var e=4;function a(o){return r(o,e)}export{a as c};
@@ -1,24 +0,0 @@
1
- import{_ as b,a5 as m,a9 as B,x as C,w,q as S,p as D,S as T,U as P,o as z,n as E,a6 as F,a7 as A,Z as W}from"./main-B-TE9tSM.js";import{p as _}from"./chunk-4BX2VUAB-C1wjI1w7.js";import{p as N}from"./treemap-GDKQZRPO-Br0ExAYs.js";import"./_baseUniq-BZZjCl_a.js";import"./_basePickBy-B3BFyLWC.js";import"./clone-OMk_JTVX.js";var L=F.packet,u,v=(u=class{constructor(){this.packet=[],this.setAccTitle=S,this.getAccTitle=D,this.setDiagramTitle=T,this.getDiagramTitle=P,this.getAccDescription=z,this.setAccDescription=E}getConfig(){const t=m({...L,...A().packet});return t.showBits&&(t.paddingY+=10),t}getPacket(){return this.packet}pushWord(t){t.length>0&&this.packet.push(t)}clear(){W(),this.packet=[]}},b(u,"PacketDB"),u),M=1e4,Y=b((e,t)=>{_(e,t);let r=-1,o=[],n=1;const{bitsPerRow:l}=t.getConfig();for(let{start:a,end:i,bits:d,label:c}of e.blocks){if(a!==void 0&&i!==void 0&&i<a)throw new Error(`Packet block ${a} - ${i} is invalid. End must be greater than start.`);if(a??=r+1,a!==r+1)throw new Error(`Packet block ${a} - ${i??a} is not contiguous. It should start from ${r+1}.`);if(d===0)throw new Error(`Packet block ${a} is invalid. Cannot have a zero bit field.`);for(i??=a+(d??1)-1,d??=i-a+1,r=i,w.debug(`Packet block ${a} - ${r} with label ${c}`);o.length<=l+1&&t.getPacket().length<M;){const[p,s]=I({start:a,end:i,bits:d,label:c},n,l);if(o.push(p),p.end+1===n*l&&(t.pushWord(o),o=[],n++),!s)break;({start:a,end:i,bits:d,label:c}=s)}}t.pushWord(o)},"populate"),I=b((e,t,r)=>{if(e.start===void 0)throw new Error("start should have been set during first phase");if(e.end===void 0)throw new Error("end should have been set during first phase");if(e.start>e.end)throw new Error(`Block start ${e.start} is greater than block end ${e.end}.`);if(e.end+1<=t*r)return[e,void 0];const o=t*r-1,n=t*r;return[{start:e.start,end:o,label:e.label,bits:o-e.start},{start:n,end:e.end,label:e.label,bits:e.end-n}]},"getNextFittingBlock"),x={parser:{yy:void 0},parse:b(async e=>{const t=await N("packet",e),r=x.parser?.yy;if(!(r instanceof v))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");w.debug(t),Y(t,r)},"parse")},O=b((e,t,r,o)=>{const n=o.db,l=n.getConfig(),{rowHeight:a,paddingY:i,bitWidth:d,bitsPerRow:c}=l,p=n.getPacket(),s=n.getDiagramTitle(),h=a+i,g=h*(p.length+1)-(s?0:a),k=d*c+2,f=B(t);f.attr("viewbox",`0 0 ${k} ${g}`),C(f,g,k,l.useMaxWidth);for(const[y,$]of p.entries())U(f,$,y,l);f.append("text").text(s).attr("x",k/2).attr("y",g-h/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),U=b((e,t,r,{rowHeight:o,paddingX:n,paddingY:l,bitWidth:a,bitsPerRow:i,showBits:d})=>{const c=e.append("g"),p=r*(o+l)+l;for(const s of t){const h=s.start%i*a+1,g=(s.end-s.start+1)*a-n;if(c.append("rect").attr("x",h).attr("y",p).attr("width",g).attr("height",o).attr("class","packetBlock"),c.append("text").attr("x",h+g/2).attr("y",p+o/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(s.label),!d)continue;const k=s.end===s.start,f=p-2;c.append("text").attr("x",h+(k?g/2:0)).attr("y",f).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",k?"middle":"start").text(s.start),k||c.append("text").attr("x",h+g).attr("y",f).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(s.end)}},"drawWord"),j={draw:O},q={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},G=b(({packet:e}={})=>{const t=m(q,e);return`
2
- .packetByte {
3
- font-size: ${t.byteFontSize};
4
- }
5
- .packetByte.start {
6
- fill: ${t.startByteColor};
7
- }
8
- .packetByte.end {
9
- fill: ${t.endByteColor};
10
- }
11
- .packetLabel {
12
- fill: ${t.labelColor};
13
- font-size: ${t.labelFontSize};
14
- }
15
- .packetTitle {
16
- fill: ${t.titleColor};
17
- font-size: ${t.titleFontSize};
18
- }
19
- .packetBlock {
20
- stroke: ${t.blockStrokeColor};
21
- stroke-width: ${t.blockStrokeWidth};
22
- fill: ${t.blockFillColor};
23
- }
24
- `},"styles"),Q={parser:x,get db(){return new v},renderer:j,styles:G};export{Q as diagram};