@band-app/server 0.7.0 → 0.9.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 (193) hide show
  1. package/dist/client/assets/DockviewTerminalContainer-DTMR0Pwz.js +2 -0
  2. package/dist/client/assets/TerminalPanel-P0Ue9bhc.js +4 -0
  3. package/dist/client/assets/{_basePickBy-BziZv3q9.js → _basePickBy-DJWAkaF0.js} +1 -1
  4. package/dist/client/assets/{_baseUniq-GojtfIPH.js → _baseUniq-FEm9-P2D.js} +1 -1
  5. package/dist/client/assets/arc-CPPy8LJ7.js +1 -0
  6. package/dist/client/assets/architectureDiagram-VXUJARFQ-CnVtE-oS.js +36 -0
  7. package/dist/client/assets/{blockDiagram-VD42YOAC-BPk_-z7Q.js → blockDiagram-VD42YOAC-B-RhgMhe.js} +4 -4
  8. package/dist/client/assets/{c4Diagram-YG6GDRKO-rNvGlTMC.js → c4Diagram-YG6GDRKO-B8VrSS8f.js} +1 -1
  9. package/dist/client/assets/channel-B1eOC6X0.js +1 -0
  10. package/dist/client/assets/chunk-4BX2VUAB-_tB3SRRs.js +1 -0
  11. package/dist/client/assets/chunk-55IACEB6-v_BTOAps.js +1 -0
  12. package/dist/client/assets/{chunk-B4BG7PRW-BNbHxfCm.js → chunk-B4BG7PRW-5Px4nD1U.js} +3 -3
  13. package/dist/client/assets/{chunk-DI55MBZ5-DMhMapdV.js → chunk-DI55MBZ5-DD7BAjfI.js} +3 -3
  14. package/dist/client/assets/{chunk-FMBD7UC4-CTPuBKXM.js → chunk-FMBD7UC4-DwxW4g8y.js} +1 -1
  15. package/dist/client/assets/chunk-QN33PNHL-Cp7Y9ku0.js +1 -0
  16. package/dist/client/assets/chunk-QZHKN3VN-ByfjbCRs.js +1 -0
  17. package/dist/client/assets/chunk-TZMSLE5B-Cty3yzGm.js +1 -0
  18. package/dist/client/assets/classDiagram-2ON5EDUG-U7rVez2A.js +1 -0
  19. package/dist/client/assets/classDiagram-v2-WZHVMYZB-U7rVez2A.js +1 -0
  20. package/dist/client/assets/clone-BPRzYwkw.js +1 -0
  21. package/dist/client/assets/cose-bilkent-S5V4N54A-CuZNFcRJ.js +1 -0
  22. package/dist/client/assets/dagre-6UL2VRFP-ChhVONtn.js +4 -0
  23. package/dist/client/assets/diagram-PSM6KHXK-AKiiqmtg.js +24 -0
  24. package/dist/client/assets/diagram-QEK2KX5R-DKFD2YXL.js +43 -0
  25. package/dist/client/assets/diagram-S2PKOQOG-kKPeG7jX.js +24 -0
  26. package/dist/client/assets/{erDiagram-Q2GNP2WA-CdFxFJL2.js → erDiagram-Q2GNP2WA-ZnoAiEdS.js} +4 -4
  27. package/dist/client/assets/{flowDiagram-NV44I4VS-Cx_Py0Y6.js → flowDiagram-NV44I4VS-Baxcbjc5.js} +5 -5
  28. package/dist/client/assets/ganttDiagram-JELNMOA3-CBb3nHo0.js +267 -0
  29. package/dist/client/assets/gitGraphDiagram-V2S2FVAM-BTFZnSDI.js +65 -0
  30. package/dist/client/assets/{graph-CNVRXmMC.js → graph-MrEC2xKX.js} +1 -1
  31. package/dist/client/assets/{highlighted-body-B3W2YXNL-BtGVJGbm.js → highlighted-body-B3W2YXNL-BS2hJfWh.js} +1 -1
  32. package/dist/client/assets/{index-CJw9xTFD.js → index-7DARDVRb.js} +1 -1
  33. package/dist/client/assets/{index-BgWr8ZLw.js → index-BDN9e11q.js} +1 -1
  34. package/dist/client/assets/{index-DJJSB6kr.js → index-B_GvXb7m.js} +1 -1
  35. package/dist/client/assets/{index-BYQ5aCti.js → index-BdJiXI-P.js} +1 -1
  36. package/dist/client/assets/{index-CCO3k6ms.js → index-CBisgMx2.js} +1 -1
  37. package/dist/client/assets/{index-kPQu0v_r.js → index-CIdqPvjZ.js} +1 -1
  38. package/dist/client/assets/{index-BgM7IKgV.js → index-CVRHdbPK.js} +5 -5
  39. package/dist/client/assets/{index-ClqNiqIT.js → index-CVeoY9iI.js} +1 -1
  40. package/dist/client/assets/index-CfEE8a0_.js +1 -0
  41. package/dist/client/assets/{index-D559Z80V.js → index-Ch0l8OjM.js} +1 -1
  42. package/dist/client/assets/{index-TLij_dqY.js → index-CuQunDRR.js} +1 -1
  43. package/dist/client/assets/{index-B193FOic.js → index-D4NhPj-o.js} +2 -2
  44. package/dist/client/assets/{index-HP2pymIn.js → index-DDMeeyZ8.js} +1 -1
  45. package/dist/client/assets/{index-Bc-azzme.js → index-DJQTsQGO.js} +1 -1
  46. package/dist/client/assets/{index-eUzKORIX.js → index-DOXhz9pD.js} +1 -1
  47. package/dist/client/assets/{index-pW_vp4Sz.js → index-VXPLEG91.js} +1 -1
  48. package/dist/client/assets/{index-BPIJMneu.js → index-aPJvCOPb.js} +1 -1
  49. package/dist/client/assets/{index-Bh5VGFBs.js → index-rV38Cr7z.js} +1 -1
  50. package/dist/client/assets/infoDiagram-HS3SLOUP-oFwyD78x.js +2 -0
  51. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-CXn3mxfD.js → journeyDiagram-XKPGCS4Q-lo9DdnCu.js} +3 -3
  52. package/dist/client/assets/{kanban-definition-3W4ZIXB7-CcSZuyDt.js → kanban-definition-3W4ZIXB7-4rwLVKZW.js} +8 -8
  53. package/dist/client/assets/{layout-2wgfgK0z.js → layout-1mxSpUNJ.js} +1 -1
  54. package/dist/client/assets/{linear-QIcNPfxd.js → linear-Dkz4-xmm.js} +1 -1
  55. package/dist/client/assets/main-3mnrWI33.js +974 -0
  56. package/dist/client/assets/main-CFEKOhg6.css +1 -0
  57. package/dist/client/assets/{mindmap-definition-VGOIOE7T-DpStnB2O.js → mindmap-definition-VGOIOE7T-C9DGZ2wo.js} +3 -3
  58. package/dist/client/assets/pieDiagram-ADFJNKIX-CIJsYcr_.js +30 -0
  59. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-3xBYeAWj.js → quadrantDiagram-AYHSOK5B-LYETacVk.js} +4 -4
  60. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-BJ7G5rvH.js → requirementDiagram-UZGBJVZJ-QMgoQzIc.js} +2 -2
  61. package/dist/client/assets/sankeyDiagram-TZEHDZUN-BR64MzNX.js +10 -0
  62. package/dist/client/assets/{sequenceDiagram-WL72ISMW-CpHr7-Ie.js → sequenceDiagram-WL72ISMW-B1Wc3LIZ.js} +1 -1
  63. package/dist/client/assets/square-terminal-VVrCccPf.js +1 -0
  64. package/dist/client/assets/stateDiagram-FKZM4ZOC-Bimijufb.js +1 -0
  65. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-CWzs2bwO.js +1 -0
  66. package/dist/client/assets/{timeline-definition-IT6M3QCI-DfZZ7ocE.js → timeline-definition-IT6M3QCI-CaCnBJch.js} +4 -4
  67. package/dist/client/assets/{treemap-GDKQZRPO-BstahH9t.js → treemap-GDKQZRPO-CeDCW21U.js} +1 -1
  68. package/dist/client/assets/{useSessionListContext-BrRFiQ2U.js → useSessionListContext-DsCz19Pd.js} +1 -1
  69. package/dist/client/assets/workspace._workspaceId-C8WDf9jx.js +1 -0
  70. package/dist/client/assets/{workspace._workspaceId.changes-Bny5FowN.js → workspace._workspaceId.changes-upws5-8z.js} +1 -1
  71. package/dist/client/assets/workspace._workspaceId.code-Lxdwg6nV.js +1 -0
  72. package/dist/client/assets/{workspace._workspaceId.code._-BkkagAVv.js → workspace._workspaceId.code._-Ceg9Aq5G.js} +1 -1
  73. package/dist/client/assets/{workspace._workspaceId.code.index-yWgRm_ie.js → workspace._workspaceId.code.index-ClXlPUEL.js} +1 -1
  74. package/dist/client/assets/{workspace._workspaceId.index-LYKG8Zjm.js → workspace._workspaceId.index-e__7t5a1.js} +1 -1
  75. package/dist/client/assets/workspace._workspaceId.terminal-DHlQ0uu7.js +2 -0
  76. package/dist/client/assets/{xychartDiagram-PRI3JC2R-DbiHDzrr.js → xychartDiagram-PRI3JC2R-U_1LNIry.js} +4 -4
  77. package/dist/server/assets/{DockviewTerminalContainer-Db_wkLqm.js → DockviewTerminalContainer-BCSFPnwD.js} +3 -8
  78. package/dist/server/assets/{TerminalPanel-ClczaJzh.js → TerminalPanel-Da-2bxgG.js} +38 -1
  79. package/dist/server/assets/{_basePickBy-DJvmB1bR.js → _basePickBy-SBHiqTXX.js} +2 -2
  80. package/dist/server/assets/{_baseUniq-CUkuvdrd.js → _baseUniq-DPIyDr4x.js} +1 -1
  81. package/dist/server/assets/_tanstack-start-manifest_v-C_DVF4Z3.js +4 -0
  82. package/dist/server/assets/{arc-D7tpRkEi.js → arc-ZDC2L6mg.js} +1 -1
  83. package/dist/server/assets/{architecture-7HQA4BMR-B4QVCJf2.js → architecture-7HQA4BMR-CB5Azb5t.js} +6 -6
  84. package/dist/server/assets/{architectureDiagram-VXUJARFQ-D9kGXK5k.js → architectureDiagram-VXUJARFQ-Qsrsg-uI.js} +6 -6
  85. package/dist/server/assets/{blockDiagram-VD42YOAC-D4qioj7T.js → blockDiagram-VD42YOAC-CP4tRTmG.js} +6 -6
  86. package/dist/server/assets/{c4Diagram-YG6GDRKO-BPZ4vpZS.js → c4Diagram-YG6GDRKO-B6OsjqeL.js} +2 -2
  87. package/dist/server/assets/{channel-g17XXuP8.js → channel-BJqsX8gK.js} +1 -1
  88. package/dist/server/assets/{chunk-4BX2VUAB-KOOKfARG.js → chunk-4BX2VUAB-DzxL-Vlj.js} +1 -1
  89. package/dist/server/assets/{chunk-55IACEB6-Nx5TLULR.js → chunk-55IACEB6-BznKDRi0.js} +1 -1
  90. package/dist/server/assets/{chunk-B4BG7PRW-DLoBFDoW.js → chunk-B4BG7PRW-c8DbjAi7.js} +4 -4
  91. package/dist/server/assets/{chunk-DI55MBZ5-Di0RSJbS.js → chunk-DI55MBZ5-DYkuYgNP.js} +3 -3
  92. package/dist/server/assets/{chunk-FMBD7UC4-B772z4UT.js → chunk-FMBD7UC4-D3Myc1HK.js} +1 -1
  93. package/dist/server/assets/{chunk-QN33PNHL-DrPmTiI4.js → chunk-QN33PNHL-DdNxAwkp.js} +1 -1
  94. package/dist/server/assets/{chunk-QZHKN3VN-Cg5-DxrE.js → chunk-QZHKN3VN-TJbRnd9f.js} +1 -1
  95. package/dist/server/assets/{chunk-TZMSLE5B-C-BexoZY.js → chunk-TZMSLE5B-CxQdoi6h.js} +1 -1
  96. package/dist/server/assets/{classDiagram-v2-WZHVMYZB-DCAJOcrY.js → classDiagram-2ON5EDUG-IOVBIWh6.js} +5 -5
  97. package/dist/server/assets/{classDiagram-2ON5EDUG-DCAJOcrY.js → classDiagram-v2-WZHVMYZB-IOVBIWh6.js} +5 -5
  98. package/dist/server/assets/{clone-MoYPVXz9.js → clone-A7GSbvNR.js} +1 -1
  99. package/dist/server/assets/{cose-bilkent-S5V4N54A-CLRnyAoe.js → cose-bilkent-S5V4N54A-BbaFLHYm.js} +1 -1
  100. package/dist/server/assets/{dagre-6UL2VRFP-h35DYUhj.js → dagre-6UL2VRFP-Bp8x8Mkv.js} +6 -6
  101. package/dist/server/assets/{diagram-PSM6KHXK-Dl-1wWBO.js → diagram-PSM6KHXK-ZKIV5gl5.js} +7 -7
  102. package/dist/server/assets/{diagram-QEK2KX5R-CT_9GKHb.js → diagram-QEK2KX5R-ENECOyQd.js} +6 -6
  103. package/dist/server/assets/{diagram-S2PKOQOG-C-Wz6wgo.js → diagram-S2PKOQOG-7SMgq4LB.js} +6 -6
  104. package/dist/server/assets/{erDiagram-Q2GNP2WA-CK577Mto.js → erDiagram-Q2GNP2WA-mHeHQZph.js} +4 -4
  105. package/dist/server/assets/{flowDiagram-NV44I4VS-FGtxEFhp.js → flowDiagram-NV44I4VS-pTU34caI.js} +5 -5
  106. package/dist/server/assets/{ganttDiagram-JELNMOA3-DAUHIdRM.js → ganttDiagram-JELNMOA3-B9-9mkf4.js} +2 -2
  107. package/dist/server/assets/{gitGraph-G5XIXVHT-D-ECs7Lv.js → gitGraph-G5XIXVHT-68r2EbJb.js} +6 -6
  108. package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-BoBut3cj.js → gitGraphDiagram-V2S2FVAM-CXj_hNTZ.js} +7 -7
  109. package/dist/server/assets/{graph-Dyxu_4DG.js → graph--fuCvixs.js} +2 -2
  110. package/dist/server/assets/{highlighted-body-B3W2YXNL-CQiQABMj.js → highlighted-body-B3W2YXNL-DJufNUHF.js} +1 -1
  111. package/dist/server/assets/{index-BVBNSmFm.js → index-AsjLe9eZ.js} +2 -2
  112. package/dist/server/assets/{index-BOB72PF1.js → index-B4cboZEK.js} +2 -2
  113. package/dist/server/assets/{index-xhWv6ALB.js → index-B6HcpJov.js} +5 -5
  114. package/dist/server/assets/{index-CcXBjIgw.js → index-BMhls_mP.js} +3 -3
  115. package/dist/server/assets/{index-z5OKgRXY.js → index-BSPyhc2t.js} +2 -2
  116. package/dist/server/assets/{index-C6elbWmN.js → index-BY__qPtY.js} +1 -1
  117. package/dist/server/assets/{index-DYKc3CTl.js → index-BolAqCkn.js} +2 -2
  118. package/dist/server/assets/{index-BEXzKtXX.js → index-CQ3_WP_c.js} +2 -2
  119. package/dist/server/assets/{index-C_g8VSbE.js → index-C_FHzNiq.js} +2 -2
  120. package/dist/server/assets/{index-j7NzRTu6.js → index-CfPJkLrt.js} +2 -2
  121. package/dist/server/assets/{index-CYDdV_jY.js → index-ChucNhe1.js} +5 -5
  122. package/dist/server/assets/{index-yeAPCrVk.js → index-Ctq8nouX.js} +2 -2
  123. package/dist/server/assets/{index-CXKXKZfF.js → index-D9dAcVgg.js} +24 -5
  124. package/dist/server/assets/{index-BewnJmdp.js → index-DA-nC30D.js} +2 -2
  125. package/dist/server/assets/{index-THiRUHDP.js → index-DgRltpic.js} +4 -4
  126. package/dist/server/assets/{index-BEMoQBv1.js → index-FBfgxNp1.js} +3 -3
  127. package/dist/server/assets/{index-B81vrGna.js → index-JauattMS.js} +2 -2
  128. package/dist/server/assets/{index-Bdg-nkIi.js → index-thBo3ZQF.js} +2 -2
  129. package/dist/server/assets/{info-VBDWY6EO-xfLiLDin.js → info-VBDWY6EO-DY1jJr3X.js} +6 -6
  130. package/dist/server/assets/{infoDiagram-HS3SLOUP-BUHq7o0p.js → infoDiagram-HS3SLOUP-B6M5J7al.js} +5 -5
  131. package/dist/server/assets/{journeyDiagram-XKPGCS4Q-ueRNPiAY.js → journeyDiagram-XKPGCS4Q-DlXB8U9o.js} +4 -4
  132. package/dist/server/assets/{kanban-definition-3W4ZIXB7-BaoHjyB8.js → kanban-definition-3W4ZIXB7-C17kXkGE.js} +2 -2
  133. package/dist/server/assets/{layout-DTRCkx2y.js → layout-DtjOA0vY.js} +4 -4
  134. package/dist/server/assets/{linear-CEd9jvaW.js → linear-m15QQpKT.js} +1 -1
  135. package/dist/server/assets/{mermaid-3ZIDBTTL-Bocx3zr_.js → mermaid-3ZIDBTTL-DshSJqMO.js} +1 -1
  136. package/dist/server/assets/{mermaid-parser.core-CnuB2ez_.js → mermaid-parser.core-LDgr4CW-.js} +11 -11
  137. package/dist/server/assets/{mindmap-definition-VGOIOE7T-ARN2t0ze.js → mindmap-definition-VGOIOE7T-mtvWltnU.js} +3 -3
  138. package/dist/server/assets/{packet-DYOGHKS2-Cfvmxib_.js → packet-DYOGHKS2-CYYSXK1h.js} +6 -6
  139. package/dist/server/assets/{pie-VRWISCQL-DLhUIQek.js → pie-VRWISCQL-CWqjVMl3.js} +6 -6
  140. package/dist/server/assets/{pieDiagram-ADFJNKIX-DbZhADgA.js → pieDiagram-ADFJNKIX-Dp5PMO-9.js} +7 -7
  141. package/dist/server/assets/{quadrantDiagram-AYHSOK5B-DKkuOf1X.js → quadrantDiagram-AYHSOK5B-Emk5w_FF.js} +2 -2
  142. package/dist/server/assets/{radar-ZZBFDIW7-DDKCbnI9.js → radar-ZZBFDIW7-C4fGyCNG.js} +6 -6
  143. package/dist/server/assets/{requirementDiagram-UZGBJVZJ-l0bNxwXy.js → requirementDiagram-UZGBJVZJ-BFx3mPBU.js} +3 -3
  144. package/dist/server/assets/{router-BsFHVXz9.js → router-B9HVgTRx.js} +10299 -5911
  145. package/dist/server/assets/{sankeyDiagram-TZEHDZUN-Czmu-ri0.js → sankeyDiagram-TZEHDZUN-CdhDQVra.js} +1 -1
  146. package/dist/server/assets/{sequenceDiagram-WL72ISMW-TIqdB3wK.js → sequenceDiagram-WL72ISMW-D5nqoNmF.js} +3 -3
  147. package/dist/server/assets/square-terminal-D-98qeQh.js +10 -0
  148. package/dist/server/assets/{stateDiagram-FKZM4ZOC-DJf6ARFZ.js → stateDiagram-FKZM4ZOC-DegPKhzE.js} +8 -8
  149. package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-BCWbXNlV.js → stateDiagram-v2-4FDKWEC3-CyBVK9Nd.js} +4 -4
  150. package/dist/server/assets/{timeline-definition-IT6M3QCI-Dsbsa9tI.js → timeline-definition-IT6M3QCI-tvTSRDgB.js} +2 -2
  151. package/dist/server/assets/{treemap-GDKQZRPO-DQd5eI_l.js → treemap-GDKQZRPO-5-jKUpIN.js} +6 -6
  152. package/dist/server/assets/{workspace._workspaceId-BzntZkG8.js → workspace._workspaceId-CePk4lAs.js} +25 -9
  153. package/dist/server/assets/{workspace._workspaceId.changes-DlHr6JjN.js → workspace._workspaceId.changes-Cu_-SRPF.js} +1 -1
  154. package/dist/server/assets/{workspace._workspaceId.code._-C0plkbYn.js → workspace._workspaceId.code._-C5FPkpSY.js} +1 -1
  155. package/dist/server/assets/{workspace._workspaceId.code.index-BEOcVHwT.js → workspace._workspaceId.code.index-Crmc16LI.js} +1 -1
  156. package/dist/server/assets/{workspace._workspaceId.index-BZTlk3td.js → workspace._workspaceId.index-xl9QlCX1.js} +1 -1
  157. package/dist/server/assets/{workspace._workspaceId.terminal-DrOsp1dy.js → workspace._workspaceId.terminal-wcBXHH_7.js} +2 -2
  158. package/dist/server/assets/{xychartDiagram-PRI3JC2R-Di_FnHiX.js → xychartDiagram-PRI3JC2R-CniJ7uun.js} +2 -2
  159. package/dist/server/server.js +2 -2
  160. package/dist/start-server.mjs +300 -123
  161. package/package.json +6 -6
  162. package/dist/client/assets/DockviewTerminalContainer-D5LSr-9J.js +0 -2
  163. package/dist/client/assets/TerminalPanel-BbdfGSW4.js +0 -4
  164. package/dist/client/assets/arc-igGjjsLf.js +0 -1
  165. package/dist/client/assets/architectureDiagram-VXUJARFQ-B5bcMjKF.js +0 -36
  166. package/dist/client/assets/channel-Ck8E_oOc.js +0 -1
  167. package/dist/client/assets/chunk-4BX2VUAB-DfJHc-Yj.js +0 -1
  168. package/dist/client/assets/chunk-55IACEB6-lcxPT111.js +0 -1
  169. package/dist/client/assets/chunk-QN33PNHL-DWCLrzVK.js +0 -1
  170. package/dist/client/assets/chunk-QZHKN3VN-B-2muY12.js +0 -1
  171. package/dist/client/assets/chunk-TZMSLE5B-CYwHRJAm.js +0 -1
  172. package/dist/client/assets/classDiagram-2ON5EDUG-C6Q6Gof1.js +0 -1
  173. package/dist/client/assets/classDiagram-v2-WZHVMYZB-C6Q6Gof1.js +0 -1
  174. package/dist/client/assets/clone-eBd5Zk6t.js +0 -1
  175. package/dist/client/assets/cose-bilkent-S5V4N54A-BhG4Bwqg.js +0 -1
  176. package/dist/client/assets/dagre-6UL2VRFP-BNwV9AQU.js +0 -4
  177. package/dist/client/assets/diagram-PSM6KHXK-BECLhoiz.js +0 -24
  178. package/dist/client/assets/diagram-QEK2KX5R-DKeTOb2O.js +0 -43
  179. package/dist/client/assets/diagram-S2PKOQOG-MlQ3aWgO.js +0 -24
  180. package/dist/client/assets/ganttDiagram-JELNMOA3-Ibl6Ok1u.js +0 -267
  181. package/dist/client/assets/gitGraphDiagram-V2S2FVAM-CCOKgIVW.js +0 -65
  182. package/dist/client/assets/index-B6ba6lp-.js +0 -1
  183. package/dist/client/assets/infoDiagram-HS3SLOUP-D08GDLLW.js +0 -2
  184. package/dist/client/assets/main-BHzKkPch.js +0 -3590
  185. package/dist/client/assets/main-DJFWkBOi.css +0 -1
  186. package/dist/client/assets/pieDiagram-ADFJNKIX-rzFZOwDj.js +0 -30
  187. package/dist/client/assets/sankeyDiagram-TZEHDZUN-wW85Osfk.js +0 -10
  188. package/dist/client/assets/stateDiagram-FKZM4ZOC-EPEfW1fW.js +0 -1
  189. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-D7pTZGXc.js +0 -1
  190. package/dist/client/assets/workspace._workspaceId-Dtznmnt6.js +0 -1
  191. package/dist/client/assets/workspace._workspaceId.code-C4UWUUUj.js +0 -1
  192. package/dist/client/assets/workspace._workspaceId.terminal-mv3brILY.js +0 -2
  193. package/dist/server/assets/_tanstack-start-manifest_v-BrA63W9v.js +0 -4
@@ -79376,7 +79376,7 @@ var require_core_cjs_development = __commonJS({
79376
79376
  name: "pointerup"
79377
79377
  }
79378
79378
  };
79379
- var PointerSensor2 = class extends AbstractPointerSensor {
79379
+ var PointerSensor = class extends AbstractPointerSensor {
79380
79380
  constructor(props) {
79381
79381
  const {
79382
79382
  event
@@ -79385,7 +79385,7 @@ var require_core_cjs_development = __commonJS({
79385
79385
  super(props, events, listenerTarget);
79386
79386
  }
79387
79387
  };
79388
- PointerSensor2.activators = [{
79388
+ PointerSensor.activators = [{
79389
79389
  eventName: "onPointerDown",
79390
79390
  handler: (_ref, _ref2) => {
79391
79391
  let {
@@ -79415,12 +79415,12 @@ var require_core_cjs_development = __commonJS({
79415
79415
  (function(MouseButton2) {
79416
79416
  MouseButton2[MouseButton2["RightClick"] = 2] = "RightClick";
79417
79417
  })(MouseButton || (MouseButton = {}));
79418
- var MouseSensor = class extends AbstractPointerSensor {
79418
+ var MouseSensor2 = class extends AbstractPointerSensor {
79419
79419
  constructor(props) {
79420
79420
  super(props, events$1, utilities.getOwnerDocument(props.event.target));
79421
79421
  }
79422
79422
  };
79423
- MouseSensor.activators = [{
79423
+ MouseSensor2.activators = [{
79424
79424
  eventName: "onMouseDown",
79425
79425
  handler: (_ref, _ref2) => {
79426
79426
  let {
@@ -79449,7 +79449,7 @@ var require_core_cjs_development = __commonJS({
79449
79449
  name: "touchend"
79450
79450
  }
79451
79451
  };
79452
- var TouchSensor = class extends AbstractPointerSensor {
79452
+ var TouchSensor2 = class extends AbstractPointerSensor {
79453
79453
  constructor(props) {
79454
79454
  super(props, events$2);
79455
79455
  }
@@ -79465,7 +79465,7 @@ var require_core_cjs_development = __commonJS({
79465
79465
  }
79466
79466
  }
79467
79467
  };
79468
- TouchSensor.activators = [{
79468
+ TouchSensor2.activators = [{
79469
79469
  eventName: "onTouchStart",
79470
79470
  handler: (_ref, _ref2) => {
79471
79471
  let {
@@ -80119,7 +80119,7 @@ var require_core_cjs_development = __commonJS({
80119
80119
  }), [rect, nodeRef, setRef2]);
80120
80120
  }
80121
80121
  var defaultSensors = [{
80122
- sensor: PointerSensor2,
80122
+ sensor: PointerSensor,
80123
80123
  options: {}
80124
80124
  }, {
80125
80125
  sensor: KeyboardSensor,
@@ -81036,7 +81036,7 @@ var require_core_cjs_development = __commonJS({
81036
81036
  transform: transform2
81037
81037
  };
81038
81038
  }
81039
- function useDndContext() {
81039
+ function useDndContext2() {
81040
81040
  return React32.useContext(PublicContext);
81041
81041
  }
81042
81042
  var ID_PREFIX$1 = "Droppable";
@@ -81464,7 +81464,7 @@ var require_core_cjs_development = __commonJS({
81464
81464
  scrollableAncestors,
81465
81465
  scrollableAncestorRects,
81466
81466
  windowRect: windowRect2
81467
- } = useDndContext();
81467
+ } = useDndContext2();
81468
81468
  const transform2 = React32.useContext(ActiveDraggableContext);
81469
81469
  const key2 = useKey(active == null ? void 0 : active.id);
81470
81470
  const modifiedTransform = applyModifiers(modifiers, {
@@ -81510,9 +81510,9 @@ var require_core_cjs_development = __commonJS({
81510
81510
  exports.DndContext = DndContext2;
81511
81511
  exports.DragOverlay = DragOverlay2;
81512
81512
  exports.KeyboardSensor = KeyboardSensor;
81513
- exports.MouseSensor = MouseSensor;
81514
- exports.PointerSensor = PointerSensor2;
81515
- exports.TouchSensor = TouchSensor;
81513
+ exports.MouseSensor = MouseSensor2;
81514
+ exports.PointerSensor = PointerSensor;
81515
+ exports.TouchSensor = TouchSensor2;
81516
81516
  exports.applyModifiers = applyModifiers;
81517
81517
  exports.closestCenter = closestCenter2;
81518
81518
  exports.closestCorners = closestCorners;
@@ -81527,7 +81527,7 @@ var require_core_cjs_development = __commonJS({
81527
81527
  exports.getScrollableAncestors = getScrollableAncestors;
81528
81528
  exports.pointerWithin = pointerWithin;
81529
81529
  exports.rectIntersection = rectIntersection;
81530
- exports.useDndContext = useDndContext;
81530
+ exports.useDndContext = useDndContext2;
81531
81531
  exports.useDndMonitor = useDndMonitor;
81532
81532
  exports.useDraggable = useDraggable;
81533
81533
  exports.useDroppable = useDroppable2;
@@ -119800,37 +119800,44 @@ var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1);
119800
119800
  var import_react10 = __toESM(require_react(), 1);
119801
119801
  var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1);
119802
119802
 
119803
+ // ../../packages/dashboard-core/src/components/CommitDialog.tsx
119804
+ var import_react11 = __toESM(require_react(), 1);
119805
+ var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1);
119806
+
119803
119807
  // ../../packages/dashboard-core/src/components/DashboardShell.tsx
119804
- var import_react19 = __toESM(require_react(), 1);
119808
+ var import_react21 = __toESM(require_react(), 1);
119805
119809
 
119806
119810
  // ../../packages/dashboard-core/src/hooks/use-cli-setup.ts
119807
- var import_react11 = __toESM(require_react(), 1);
119811
+ var import_react12 = __toESM(require_react(), 1);
119812
+
119813
+ // ../../packages/dashboard-core/src/hooks/use-collapse-state.ts
119814
+ var import_react13 = __toESM(require_react(), 1);
119808
119815
 
119809
119816
  // ../../packages/dashboard-core/src/hooks/use-hooks-setup.ts
119810
- var import_react12 = __toESM(require_react(), 1);
119817
+ var import_react14 = __toESM(require_react(), 1);
119811
119818
 
119812
119819
  // ../../packages/dashboard-core/src/hooks/use-status.ts
119813
- var import_react13 = __toESM(require_react(), 1);
119820
+ var import_react15 = __toESM(require_react(), 1);
119814
119821
 
119815
119822
  // ../../packages/dashboard-core/src/components/ProjectList.tsx
119816
119823
  var import_core8 = __toESM(require_dist3(), 1);
119817
119824
  var import_sortable = __toESM(require_dist4(), 1);
119818
119825
  var import_utilities = __toESM(require_dist(), 1);
119819
- var import_react16 = __toESM(require_react(), 1);
119826
+ var import_react18 = __toESM(require_react(), 1);
119820
119827
 
119821
119828
  // ../../packages/dashboard-core/src/components/DeleteWorkspaceDialog.tsx
119822
- var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1);
119829
+ var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1);
119823
119830
 
119824
119831
  // ../../packages/dashboard-core/src/components/NewWorkspaceForm.tsx
119825
- var import_react14 = __toESM(require_react(), 1);
119826
- var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1);
119832
+ var import_react16 = __toESM(require_react(), 1);
119833
+ var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1);
119827
119834
 
119828
119835
  // ../../packages/dashboard-core/src/components/WorkspaceCard.tsx
119829
119836
  var import_lucide_react4 = __toESM(require_lucide_react(), 1);
119830
- var import_react15 = __toESM(require_react(), 1);
119837
+ var import_react17 = __toESM(require_react(), 1);
119831
119838
 
119832
119839
  // ../../packages/dashboard-core/src/components/GitStatusIndicator.tsx
119833
- var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1);
119840
+ var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1);
119834
119841
  function GitStatusIndicator({ git }) {
119835
119842
  const parts = [];
119836
119843
  if (git.conflict) {
@@ -119862,27 +119869,27 @@ function GitStatusIndicator({ git }) {
119862
119869
  });
119863
119870
  }
119864
119871
  if (parts.length === 0) return null;
119865
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(Tooltip2, { children: [
119866
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "inline-flex items-center gap-0.5 font-mono text-[11px] leading-none shrink-0", children: parts.map((p6) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: p6.color, children: p6.text }, p6.text)) }) }),
119867
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(TooltipContent2, { children: parts.map((p6) => p6.tooltip).join(", ") })
119872
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(Tooltip2, { children: [
119873
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "inline-flex items-center gap-0.5 font-mono text-[11px] leading-none shrink-0 pr-0.5", children: parts.map((p6) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: p6.color, children: p6.text }, p6.text)) }) }),
119874
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(TooltipContent2, { children: parts.map((p6) => p6.tooltip).join(", ") })
119868
119875
  ] });
119869
119876
  }
119870
119877
 
119871
119878
  // ../../packages/dashboard-core/src/components/SetupStatusIndicator.tsx
119872
119879
  var import_lucide_react3 = __toESM(require_lucide_react(), 1);
119873
- var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1);
119880
+ var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1);
119874
119881
  function SetupStatusIndicator({ setup }) {
119875
119882
  if (!setup) return null;
119876
119883
  if (setup.state === "running") {
119877
- return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(Tooltip2, { children: [
119878
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react3.Loader, { className: "size-3.5 shrink-0 text-blue-600 dark:text-blue-400 animate-spin" }) }),
119879
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(TooltipContent2, { side: "top", children: "Setting up workspace..." })
119884
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip2, { children: [
119885
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react3.Loader, { className: "size-3.5 shrink-0 text-blue-600 dark:text-blue-400 animate-spin" }) }),
119886
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent2, { side: "top", children: "Setting up workspace..." })
119880
119887
  ] });
119881
119888
  }
119882
119889
  if (setup.state === "failed") {
119883
- return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(Tooltip2, { children: [
119884
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react3.CircleAlert, { className: "size-3.5 shrink-0 text-red-600 dark:text-red-400" }) }),
119885
- /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(TooltipContent2, { side: "top", children: [
119890
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip2, { children: [
119891
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react3.CircleAlert, { className: "size-3.5 shrink-0 text-red-600 dark:text-red-400" }) }),
119892
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(TooltipContent2, { side: "top", children: [
119886
119893
  "Setup failed",
119887
119894
  setup.error ? `: ${setup.error}` : ""
119888
119895
  ] })
@@ -119892,8 +119899,8 @@ function SetupStatusIndicator({ setup }) {
119892
119899
  }
119893
119900
 
119894
119901
  // ../../packages/dashboard-core/src/components/WorkspaceCard.tsx
119895
- var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1);
119896
- var WorkspaceCard = (0, import_react15.memo)(function WorkspaceCard2({
119902
+ var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1);
119903
+ var WorkspaceCard = (0, import_react17.memo)(function WorkspaceCard2({
119897
119904
  worktree,
119898
119905
  projectName,
119899
119906
  defaultBranch,
@@ -119901,12 +119908,11 @@ var WorkspaceCard = (0, import_react15.memo)(function WorkspaceCard2({
119901
119908
  branchStatus,
119902
119909
  setupStatus,
119903
119910
  isFocused,
119904
- onShowDeleteDialog,
119905
- editMode
119911
+ onShowDeleteDialog
119906
119912
  }) {
119907
- const cardRef = (0, import_react15.useRef)(null);
119913
+ const cardRef = (0, import_react17.useRef)(null);
119908
119914
  const capabilities = useCapabilities();
119909
- (0, import_react15.useEffect)(() => {
119915
+ (0, import_react17.useEffect)(() => {
119910
119916
  if (isFocused) {
119911
119917
  cardRef.current?.scrollIntoView({ block: "nearest" });
119912
119918
  }
@@ -119928,7 +119934,7 @@ var WorkspaceCard = (0, import_react15.memo)(function WorkspaceCard2({
119928
119934
  openWorkspace(workspaceId);
119929
119935
  }
119930
119936
  };
119931
- const className = `@container group flex flex-row items-center justify-between px-3 py-1 min-w-0 overflow-hidden cursor-pointer select-none transition-colors hover:bg-accent/50 ${isActive ? "bg-accent/50 border-l-2 border-l-primary" : ""} ${isFocused ? "ring-2 ring-inset ring-ring" : ""} ${href ? "no-underline text-inherit" : ""}`;
119937
+ const className = `@container group flex flex-row items-center justify-between pl-3 pr-2 py-1 min-w-0 overflow-hidden cursor-pointer select-none transition-colors hover:bg-accent/50 ${isActive ? "bg-accent/50 border-l-2 border-l-primary" : ""} ${isFocused ? "ring-2 ring-inset ring-ring" : ""} ${href ? "no-underline text-inherit" : ""}`;
119932
119938
  const containerProps = {
119933
119939
  ref: cardRef,
119934
119940
  className,
@@ -119961,12 +119967,12 @@ var WorkspaceCard = (0, import_react15.memo)(function WorkspaceCard2({
119961
119967
  });
119962
119968
  }
119963
119969
  };
119964
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(ContextMenu2, { children: [
119965
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(ContextMenuTrigger2, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { ...containerProps, children: [
119966
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip2, { children: [
119967
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-2 min-w-0 overflow-hidden", children: [
119968
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(AgentStatusIndicator, { agent: status?.agent, isActive }),
119969
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
119970
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(ContextMenu2, { children: [
119971
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(ContextMenuTrigger2, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { ...containerProps, children: [
119972
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(Tooltip2, { children: [
119973
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex items-center gap-2 min-w-0 overflow-hidden", children: [
119974
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(AgentStatusIndicator, { agent: status?.agent, isActive }),
119975
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
119970
119976
  "span",
119971
119977
  {
119972
119978
  className: `text-sm truncate ${isActive ? "font-semibold text-foreground" : "font-medium text-muted-foreground"}`,
@@ -119974,41 +119980,41 @@ var WorkspaceCard = (0, import_react15.memo)(function WorkspaceCard2({
119974
119980
  }
119975
119981
  )
119976
119982
  ] }) }),
119977
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent2, { side: "top", children: worktree.branch })
119983
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(TooltipContent2, { side: "top", children: worktree.branch })
119978
119984
  ] }),
119979
- !editMode && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "hidden @[10rem]:flex group-hover:flex items-center gap-2 shrink-0 ml-auto pl-2", children: [
119980
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(SetupStatusIndicator, { setup: setupStatus }),
119981
- branchStatus && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(GitStatusIndicator, { git: branchStatus.git }),
119982
- branchStatus && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(CIStatusIndicator, { ci: branchStatus.ci })
119985
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "hidden @[10rem]:flex group-hover:flex items-center gap-2 shrink-0 ml-auto pl-2", children: [
119986
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(SetupStatusIndicator, { setup: setupStatus }),
119987
+ branchStatus && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(GitStatusIndicator, { git: branchStatus.git }),
119988
+ branchStatus && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(CIStatusIndicator, { ci: branchStatus.ci })
119983
119989
  ] })
119984
119990
  ] }) }),
119985
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(ContextMenuContent2, { children: [
119986
- capabilities.copyPath && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(ContextMenuItem2, { onClick: () => navigator.clipboard.writeText(worktree.path), children: [
119987
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react4.Clipboard, {}),
119991
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(ContextMenuContent2, { children: [
119992
+ capabilities.copyPath && /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(ContextMenuItem2, { onClick: () => navigator.clipboard.writeText(worktree.path), children: [
119993
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react4.Clipboard, {}),
119988
119994
  "Copy path"
119989
119995
  ] }),
119990
- capabilities.revealInFinder && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(ContextMenuItem2, { onClick: () => capabilities.revealInFinder(worktree.path), children: [
119991
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react4.FolderOpen, {}),
119996
+ capabilities.revealInFinder && /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(ContextMenuItem2, { onClick: () => capabilities.revealInFinder(worktree.path), children: [
119997
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react4.FolderOpen, {}),
119992
119998
  "Open in Finder"
119993
119999
  ] }),
119994
- worktree.hasSetup && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(ContextMenuItem2, { onClick: () => runScript(worktree.path, "setup"), children: [
119995
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react4.Play, {}),
120000
+ worktree.hasSetup && /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(ContextMenuItem2, { onClick: () => runScript(worktree.path, "setup"), children: [
120001
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react4.Play, {}),
119996
120002
  "Run setup"
119997
120003
  ] }),
119998
- worktree.hasTeardown && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(ContextMenuItem2, { onClick: () => runScript(worktree.path, "teardown"), children: [
119999
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react4.Square, {}),
120004
+ worktree.hasTeardown && /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(ContextMenuItem2, { onClick: () => runScript(worktree.path, "teardown"), children: [
120005
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react4.Square, {}),
120000
120006
  "Run teardown"
120001
120007
  ] }),
120002
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(ContextMenuItem2, { onClick: () => gitPull(projectName, worktree.branch), children: [
120003
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react4.ArrowDownToLine, {}),
120008
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(ContextMenuItem2, { onClick: () => gitPull(projectName, worktree.branch), children: [
120009
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react4.ArrowDownToLine, {}),
120004
120010
  "Git pull"
120005
120011
  ] }),
120006
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(ContextMenuItem2, { onClick: () => gitPush(projectName, worktree.branch), children: [
120007
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react4.ArrowUpFromLine, {}),
120012
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(ContextMenuItem2, { onClick: () => gitPush(projectName, worktree.branch), children: [
120013
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react4.ArrowUpFromLine, {}),
120008
120014
  "Git push"
120009
120015
  ] }),
120010
- worktree.branch !== defaultBranch && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(ContextMenuItem2, { variant: "destructive", onClick: handleDelete, children: [
120011
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react4.Trash2, {}),
120016
+ worktree.branch !== defaultBranch && /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(ContextMenuItem2, { variant: "destructive", onClick: handleDelete, children: [
120017
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react4.Trash2, {}),
120012
120018
  "Delete workspace"
120013
120019
  ] })
120014
120020
  ] })
@@ -120016,57 +120022,57 @@ var WorkspaceCard = (0, import_react15.memo)(function WorkspaceCard2({
120016
120022
  });
120017
120023
 
120018
120024
  // ../../packages/dashboard-core/src/components/ProjectList.tsx
120019
- var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1);
120025
+ var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1);
120020
120026
 
120021
120027
  // ../../packages/dashboard-core/src/components/SettingsPage.tsx
120022
- var import_react18 = __toESM(require_react(), 1);
120028
+ var import_react20 = __toESM(require_react(), 1);
120023
120029
 
120024
120030
  // ../../packages/dashboard-core/src/lib/experimental-flags.ts
120025
- var import_react17 = __toESM(require_react(), 1);
120031
+ var import_react19 = __toESM(require_react(), 1);
120026
120032
 
120027
120033
  // ../../packages/dashboard-core/src/components/settings/SettingsRow.tsx
120028
- var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1);
120034
+ var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1);
120029
120035
 
120030
120036
  // ../../packages/dashboard-core/src/components/settings/SettingsSection.tsx
120031
- var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1);
120037
+ var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1);
120032
120038
 
120033
120039
  // ../../packages/dashboard-core/src/components/SettingsPage.tsx
120034
- var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1);
120040
+ var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1);
120035
120041
 
120036
120042
  // ../../packages/dashboard-core/src/components/DashboardShell.tsx
120037
- var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1);
120043
+ var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1);
120038
120044
  var isElectron = typeof window !== "undefined" && "__BAND_DESKTOP__" in window;
120039
120045
 
120040
120046
  // ../../packages/dashboard-core/src/components/DiffView.tsx
120041
120047
  init_dist4();
120042
- var import_react23 = __toESM(require_react(), 1);
120048
+ var import_react25 = __toESM(require_react(), 1);
120043
120049
 
120044
120050
  // ../../packages/dashboard-core/src/hooks/use-search.ts
120045
- var import_react20 = __toESM(require_react(), 1);
120051
+ var import_react22 = __toESM(require_react(), 1);
120046
120052
 
120047
120053
  // ../../packages/dashboard-core/src/components/ChangesFileTree.tsx
120048
- var import_react21 = __toESM(require_react(), 1);
120054
+ var import_react23 = __toESM(require_react(), 1);
120049
120055
 
120050
120056
  // ../../packages/dashboard-core/src/components/FileStatusBadge.tsx
120051
- var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1);
120057
+ var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1);
120052
120058
 
120053
120059
  // ../../packages/dashboard-core/src/components/ChangesFileTree.tsx
120054
- var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1);
120060
+ var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1);
120055
120061
 
120056
120062
  // ../../packages/dashboard-core/src/components/RevertFileDialog.tsx
120057
- var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1);
120063
+ var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1);
120058
120064
 
120059
120065
  // ../../packages/dashboard-core/src/components/SearchBar.tsx
120060
120066
  var import_lucide_react5 = __toESM(require_lucide_react(), 1);
120061
- var import_react22 = __toESM(require_react(), 1);
120062
- var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1);
120067
+ var import_react24 = __toESM(require_react(), 1);
120068
+ var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1);
120063
120069
  function ToggleButton({
120064
120070
  active,
120065
120071
  onClick,
120066
120072
  title,
120067
120073
  children
120068
120074
  }) {
120069
- return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
120075
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
120070
120076
  "button",
120071
120077
  {
120072
120078
  type: "button",
@@ -120077,7 +120083,7 @@ function ToggleButton({
120077
120083
  }
120078
120084
  );
120079
120085
  }
120080
- var SearchBar = (0, import_react22.forwardRef)(function SearchBar2({
120086
+ var SearchBar = (0, import_react24.forwardRef)(function SearchBar2({
120081
120087
  query,
120082
120088
  onQueryChange,
120083
120089
  options: options2,
@@ -120089,27 +120095,27 @@ var SearchBar = (0, import_react22.forwardRef)(function SearchBar2({
120089
120095
  onClose,
120090
120096
  className
120091
120097
  }, ref) {
120092
- const inputRef = (0, import_react22.useRef)(null);
120093
- (0, import_react22.useImperativeHandle)(ref, () => ({
120098
+ const inputRef = (0, import_react24.useRef)(null);
120099
+ (0, import_react24.useImperativeHandle)(ref, () => ({
120094
120100
  focus: () => inputRef.current?.focus(),
120095
120101
  select: () => inputRef.current?.select()
120096
120102
  }));
120097
- const toggleCase = (0, import_react22.useCallback)(() => {
120103
+ const toggleCase = (0, import_react24.useCallback)(() => {
120098
120104
  onOptionsChange({ ...options2, caseSensitive: !options2.caseSensitive });
120099
120105
  }, [options2, onOptionsChange]);
120100
- const toggleWholeWord = (0, import_react22.useCallback)(() => {
120106
+ const toggleWholeWord = (0, import_react24.useCallback)(() => {
120101
120107
  onOptionsChange({ ...options2, wholeWord: !options2.wholeWord });
120102
120108
  }, [options2, onOptionsChange]);
120103
- const toggleRegex = (0, import_react22.useCallback)(() => {
120109
+ const toggleRegex = (0, import_react24.useCallback)(() => {
120104
120110
  onOptionsChange({ ...options2, regex: !options2.regex });
120105
120111
  }, [options2, onOptionsChange]);
120106
- return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
120112
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
120107
120113
  "div",
120108
120114
  {
120109
120115
  className: `flex shrink-0 items-center gap-1.5 border-b border-border bg-muted/30 px-3 py-1.5 ${className ?? ""}`,
120110
120116
  children: [
120111
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react5.Search, { className: "size-3.5 shrink-0 text-muted-foreground" }),
120112
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
120117
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react5.Search, { className: "size-3.5 shrink-0 text-muted-foreground" }),
120118
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
120113
120119
  "input",
120114
120120
  {
120115
120121
  ref: inputRef,
@@ -120130,11 +120136,11 @@ var SearchBar = (0, import_react22.forwardRef)(function SearchBar2({
120130
120136
  }
120131
120137
  }
120132
120138
  ),
120133
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(ToggleButton, { active: options2.caseSensitive, onClick: toggleCase, title: "Match Case", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react5.CaseSensitive, { className: "size-4" }) }),
120134
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(ToggleButton, { active: options2.wholeWord, onClick: toggleWholeWord, title: "Match Whole Word", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react5.WholeWord, { className: "size-4" }) }),
120135
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(ToggleButton, { active: options2.regex, onClick: toggleRegex, title: "Use Regular Expression", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react5.Regex, { className: "size-4" }) }),
120136
- matchInfo && query && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "shrink-0 text-xs text-muted-foreground tabular-nums", children: matchInfo.total > 0 ? `${matchInfo.current} of ${matchInfo.total}` : "No results" }),
120137
- onPrevious && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
120139
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(ToggleButton, { active: options2.caseSensitive, onClick: toggleCase, title: "Match Case", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react5.CaseSensitive, { className: "size-4" }) }),
120140
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(ToggleButton, { active: options2.wholeWord, onClick: toggleWholeWord, title: "Match Whole Word", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react5.WholeWord, { className: "size-4" }) }),
120141
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(ToggleButton, { active: options2.regex, onClick: toggleRegex, title: "Use Regular Expression", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react5.Regex, { className: "size-4" }) }),
120142
+ matchInfo && query && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "shrink-0 text-xs text-muted-foreground tabular-nums", children: matchInfo.total > 0 ? `${matchInfo.current} of ${matchInfo.total}` : "No results" }),
120143
+ onPrevious && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
120138
120144
  "button",
120139
120145
  {
120140
120146
  type: "button",
@@ -120142,10 +120148,10 @@ var SearchBar = (0, import_react22.forwardRef)(function SearchBar2({
120142
120148
  disabled: !matchInfo || matchInfo.total === 0,
120143
120149
  className: "inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:text-foreground disabled:opacity-30",
120144
120150
  title: "Previous match (Shift+Enter)",
120145
- children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react5.ChevronUp, { className: "size-3.5" })
120151
+ children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react5.ChevronUp, { className: "size-3.5" })
120146
120152
  }
120147
120153
  ),
120148
- onNext && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
120154
+ onNext && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
120149
120155
  "button",
120150
120156
  {
120151
120157
  type: "button",
@@ -120153,17 +120159,17 @@ var SearchBar = (0, import_react22.forwardRef)(function SearchBar2({
120153
120159
  disabled: !matchInfo || matchInfo.total === 0,
120154
120160
  className: "inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:text-foreground disabled:opacity-30",
120155
120161
  title: "Next match (Enter)",
120156
- children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react5.ChevronDown, { className: "size-3.5" })
120162
+ children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react5.ChevronDown, { className: "size-3.5" })
120157
120163
  }
120158
120164
  ),
120159
- onClose && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
120165
+ onClose && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
120160
120166
  "button",
120161
120167
  {
120162
120168
  type: "button",
120163
120169
  onClick: onClose,
120164
120170
  className: "inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:text-foreground",
120165
120171
  title: "Close (Escape)",
120166
- children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react5.X, { className: "size-3.5" })
120172
+ children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react5.X, { className: "size-3.5" })
120167
120173
  }
120168
120174
  )
120169
120175
  ]
@@ -120172,7 +120178,7 @@ var SearchBar = (0, import_react22.forwardRef)(function SearchBar2({
120172
120178
  });
120173
120179
 
120174
120180
  // ../../packages/dashboard-core/src/components/DiffView.tsx
120175
- var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1);
120181
+ var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1);
120176
120182
  var diffTheme = EditorView.theme({
120177
120183
  ".cm-insertedLine": { backgroundColor: "rgba(34, 197, 94, 0.1)" },
120178
120184
  ".cm-deletedLine": { backgroundColor: "rgba(239, 68, 68, 0.1)" },
@@ -120222,39 +120228,39 @@ var diffTheme = EditorView.theme({
120222
120228
  });
120223
120229
 
120224
120230
  // ../../packages/dashboard-core/src/components/FileBrowser.tsx
120225
- var import_react24 = __toESM(require_react(), 1);
120226
- var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1);
120231
+ var import_react26 = __toESM(require_react(), 1);
120232
+ var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1);
120227
120233
 
120228
120234
  // ../../packages/dashboard-core/src/components/FileViewer.tsx
120229
- var import_react26 = __toESM(require_react(), 1);
120235
+ var import_react28 = __toESM(require_react(), 1);
120230
120236
 
120231
120237
  // ../../packages/dashboard-core/src/components/ImagePreview.tsx
120232
- var import_react25 = __toESM(require_react(), 1);
120233
- var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1);
120238
+ var import_react27 = __toESM(require_react(), 1);
120239
+ var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1);
120234
120240
 
120235
120241
  // ../../packages/dashboard-core/src/components/PdfPreview.tsx
120236
- var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1);
120242
+ var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1);
120237
120243
 
120238
120244
  // ../../packages/dashboard-core/src/components/FileViewer.tsx
120239
- var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1);
120245
+ var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1);
120240
120246
 
120241
120247
  // ../../packages/dashboard-core/src/components/QuickOpenDialog.tsx
120242
- var import_react27 = __toESM(require_react(), 1);
120243
- var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1);
120248
+ var import_react29 = __toESM(require_react(), 1);
120249
+ var import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1);
120244
120250
 
120245
120251
  // ../../packages/dashboard-core/src/components/SearchFilesDialog.tsx
120246
- var import_react28 = __toESM(require_react(), 1);
120247
- var import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1);
120252
+ var import_react30 = __toESM(require_react(), 1);
120253
+ var import_jsx_runtime71 = __toESM(require_jsx_runtime(), 1);
120248
120254
 
120249
120255
  // ../../packages/dashboard-core/src/components/WorkspacePickerDialog.tsx
120250
- var import_react29 = __toESM(require_react(), 1);
120251
- var import_jsx_runtime71 = __toESM(require_jsx_runtime(), 1);
120256
+ var import_react31 = __toESM(require_react(), 1);
120257
+ var import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1);
120252
120258
 
120253
120259
  // ../../packages/dashboard-core/src/components/WorkspaceTabNav.tsx
120254
- var import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1);
120260
+ var import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1);
120255
120261
 
120256
120262
  // ../../packages/dashboard-core/src/hooks/use-editor-history.ts
120257
- var import_react30 = __toESM(require_react(), 1);
120263
+ var import_react32 = __toESM(require_react(), 1);
120258
120264
 
120259
120265
  // ../../node_modules/.pnpm/marked@15.0.12/node_modules/marked/lib/marked.esm.js
120260
120266
  function _getDefaults() {
@@ -130386,6 +130392,10 @@ async function createMetadataAgent(agentId) {
130386
130392
  const config2 = getAgentConfig(bandHome(), agentId);
130387
130393
  return createCodingAgent(config2);
130388
130394
  }
130395
+ async function createWorkspaceAgent(worktreePath, agentId) {
130396
+ const config2 = getAgentConfig(worktreePath, agentId);
130397
+ return createCodingAgent(config2);
130398
+ }
130389
130399
  async function replaceAgent(chatId, worktreePath, agentId) {
130390
130400
  const existing = pool.get(chatId);
130391
130401
  if (existing?.agent.abort) {
@@ -130945,10 +130955,17 @@ async function syncWorktrees() {
130945
130955
  }
130946
130956
 
130947
130957
  // src/lib/branch-status-poller.ts
130948
- var POLL_INTERVAL_MS = 5e3;
130949
- var CI_POLL_TICKS = 6;
130958
+ var INTERVALS = {
130959
+ // 5 s git / 30 s CI — the original cadence, used when the user is actively looking at the UI on AC power.
130960
+ active: { pollMs: 5e3, ciTicks: 6 },
130961
+ // 30 s git / 3 min CI — window unfocused OR on battery (but not both).
130962
+ idle: { pollMs: 3e4, ciTicks: 6 },
130963
+ // 60 s git / 10 min CI — window unfocused AND on battery.
130964
+ background: { pollMs: 6e4, ciTicks: 10 }
130965
+ };
130950
130966
  var pollerTimer = null;
130951
130967
  var tickCount = 0;
130968
+ var currentActivity = "active";
130952
130969
  var repoInfoCache = /* @__PURE__ */ new Map();
130953
130970
  function getWorkspaces() {
130954
130971
  const state2 = loadState();
@@ -131099,7 +131116,7 @@ async function getBatchedCIStatuses(workspaces) {
131099
131116
  }
131100
131117
  async function pollTick() {
131101
131118
  tickCount++;
131102
- const isCITick = tickCount % CI_POLL_TICKS === 0;
131119
+ const isCITick = tickCount % INTERVALS[currentActivity].ciTicks === 0;
131103
131120
  if (tickCount === 1 || isCITick) {
131104
131121
  await syncWorktrees().catch((err) => console.error("syncWorktrees error:", err));
131105
131122
  }
@@ -131170,7 +131187,7 @@ function startBranchStatusPoller() {
131170
131187
  pollTick().catch((err) => console.error("Branch status poll error:", err));
131171
131188
  pollerTimer = setInterval(() => {
131172
131189
  pollTick().catch((err) => console.error("Branch status poll error:", err));
131173
- }, POLL_INTERVAL_MS);
131190
+ }, INTERVALS[currentActivity].pollMs);
131174
131191
  }
131175
131192
  function stopBranchStatusPoller() {
131176
131193
  if (pollerTimer) {
@@ -131178,6 +131195,20 @@ function stopBranchStatusPoller() {
131178
131195
  pollerTimer = null;
131179
131196
  }
131180
131197
  }
131198
+ function setPollerActivity(activity) {
131199
+ if (activity === currentActivity) return;
131200
+ currentActivity = activity;
131201
+ if (pollerTimer) {
131202
+ clearInterval(pollerTimer);
131203
+ tickCount = 0;
131204
+ pollerTimer = setInterval(() => {
131205
+ pollTick().catch((err) => console.error("Branch status poll error:", err));
131206
+ }, INTERVALS[activity].pollMs);
131207
+ }
131208
+ }
131209
+ function getPollerActivity() {
131210
+ return currentActivity;
131211
+ }
131181
131212
 
131182
131213
  // src/lib/setup-runner.ts
131183
131214
  import { spawn as spawn5 } from "node:child_process";
@@ -134580,7 +134611,7 @@ function attachSession(ws, terminalId, workspaceId, session, isNew) {
134580
134611
  }
134581
134612
  } catch {
134582
134613
  }
134583
- }, 1e3);
134614
+ }, 3e3);
134584
134615
  const exitDisposable = session.pty.onExit(({ exitCode }) => {
134585
134616
  clearInterval(processInterval);
134586
134617
  log18.debug("PTY exited with code %d for terminal %s", exitCode, terminalId);
@@ -142954,6 +142985,144 @@ var workspaceRouter = t2.router({
142954
142985
  }
142955
142986
  return { ok: true };
142956
142987
  }),
142988
+ gitPull: publicProcedure.input(external_exports2.object({ workspaceId: external_exports2.string() })).mutation(async ({ input }) => {
142989
+ const workspace = resolveWorkspace(input.workspaceId);
142990
+ if (!workspace) {
142991
+ throw new Error("Workspace not found");
142992
+ }
142993
+ const cwd = workspace.worktree.path;
142994
+ try {
142995
+ await execGit(["pull", "--rebase"], cwd);
142996
+ } catch (e2) {
142997
+ const msg = String(e2);
142998
+ if (msg.includes("Cannot rebase onto multiple branches")) {
142999
+ return { ok: true };
143000
+ }
143001
+ throw new Error(e2 instanceof Error ? e2.message : msg);
143002
+ }
143003
+ return { ok: true };
143004
+ }),
143005
+ gitPush: publicProcedure.input(external_exports2.object({ workspaceId: external_exports2.string() })).mutation(async ({ input }) => {
143006
+ const workspace = resolveWorkspace(input.workspaceId);
143007
+ if (!workspace) {
143008
+ throw new Error("Workspace not found");
143009
+ }
143010
+ const cwd = workspace.worktree.path;
143011
+ try {
143012
+ await execGit(["push"], cwd);
143013
+ } catch {
143014
+ let headBranch;
143015
+ try {
143016
+ headBranch = (await execGit(["rev-parse", "--abbrev-ref", "HEAD"], cwd)).trim();
143017
+ } catch {
143018
+ headBranch = workspace.worktree.branch;
143019
+ }
143020
+ try {
143021
+ await execGit(["push", "--set-upstream", "origin", headBranch], cwd);
143022
+ } catch (e2) {
143023
+ throw new Error(e2 instanceof Error ? e2.message : String(e2));
143024
+ }
143025
+ }
143026
+ return { ok: true };
143027
+ }),
143028
+ gitCommit: publicProcedure.input(
143029
+ external_exports2.object({
143030
+ workspaceId: external_exports2.string(),
143031
+ message: external_exports2.string().min(1, "commit message is required"),
143032
+ body: external_exports2.string().optional()
143033
+ })
143034
+ ).mutation(async ({ input }) => {
143035
+ const workspace = resolveWorkspace(input.workspaceId);
143036
+ if (!workspace) {
143037
+ throw new Error("Workspace not found");
143038
+ }
143039
+ const cwd = workspace.worktree.path;
143040
+ await execGit(["add", "-A"], cwd);
143041
+ const args = ["commit", "-m", input.message];
143042
+ const body = input.body?.trim();
143043
+ if (body) {
143044
+ args.push("-m", body);
143045
+ }
143046
+ try {
143047
+ await execGit(args, cwd);
143048
+ } catch (e2) {
143049
+ throw new Error(e2 instanceof Error ? e2.message : String(e2));
143050
+ }
143051
+ return { ok: true };
143052
+ }),
143053
+ generateCommitMessage: publicProcedure.input(external_exports2.object({ workspaceId: external_exports2.string() })).mutation(async ({ input }) => {
143054
+ const workspace = resolveWorkspace(input.workspaceId);
143055
+ if (!workspace) {
143056
+ throw new Error("Workspace not found");
143057
+ }
143058
+ const cwd = workspace.worktree.path;
143059
+ try {
143060
+ const status = await execGit(["status", "--porcelain"], cwd);
143061
+ if (!status.trim()) {
143062
+ throw new Error("No changes to summarise");
143063
+ }
143064
+ } catch (e2) {
143065
+ if (e2 instanceof Error && e2.message === "No changes to summarise") {
143066
+ throw e2;
143067
+ }
143068
+ }
143069
+ const settings = loadSettings();
143070
+ const agentDef = getAgentDefinition(settings);
143071
+ const prompt = [
143072
+ "You are running inside a git workspace. Write a commit message for the changes that are pending in this workspace right now.",
143073
+ "",
143074
+ "Steps:",
143075
+ " 1. Run `git status` and `git diff HEAD` (and `git diff --stat` if the diff is large) to understand what changed.",
143076
+ " 2. If helpful, read a few of the changed files or recent commits (`git log -5 --oneline`) to match the project's commit style.",
143077
+ " 3. Write a single commit message.",
143078
+ "",
143079
+ "Format:",
143080
+ " - First line: a concise subject (\u2264 72 chars), imperative mood, no trailing period.",
143081
+ " - Then a blank line.",
143082
+ " - Then a body that explains *why* the change is being made and any notable details.",
143083
+ "",
143084
+ "Output ONLY the final commit message as plain text \u2014 no markdown fences, no preamble, no commentary, no tool-call summaries. Do not modify any files."
143085
+ ].join("\n");
143086
+ let agent;
143087
+ try {
143088
+ agent = await createWorkspaceAgent(cwd, agentDef.id);
143089
+ } catch (e2) {
143090
+ throw new Error(
143091
+ `Failed to start coding agent "${agentDef.label}": ${e2 instanceof Error ? e2.message : String(e2)}`
143092
+ );
143093
+ }
143094
+ let lastTurnText = "";
143095
+ try {
143096
+ for await (const event of agent.runSession(prompt, void 0, {
143097
+ maxTurns: 8
143098
+ })) {
143099
+ if (event.type === "text-delta") {
143100
+ lastTurnText += event.text;
143101
+ } else if (event.type === "tool-result") {
143102
+ lastTurnText = "";
143103
+ } else if (event.type === "error") {
143104
+ throw new Error(event.message);
143105
+ }
143106
+ }
143107
+ } finally {
143108
+ agent.abort?.();
143109
+ }
143110
+ const cleaned = lastTurnText.trim();
143111
+ if (!cleaned) {
143112
+ throw new Error("Agent returned an empty response");
143113
+ }
143114
+ const lines = cleaned.split("\n");
143115
+ const subject = (lines.shift() ?? "").trim();
143116
+ while (lines.length > 0 && lines[0].trim() === "") {
143117
+ lines.shift();
143118
+ }
143119
+ const body = lines.join("\n").trim();
143120
+ return {
143121
+ message: subject,
143122
+ body,
143123
+ agentLabel: agentDef.label
143124
+ };
143125
+ }),
142957
143126
  listFiles: publicProcedure.input(external_exports2.object({ workspaceId: external_exports2.string(), path: external_exports2.string().default("") })).query(async ({ input }) => {
142958
143127
  const workspace = resolveWorkspace(input.workspaceId);
142959
143128
  if (!workspace) {
@@ -143479,7 +143648,15 @@ var servicesRouter = t2.router({
143479
143648
  };
143480
143649
  log23.debug({ result }, "services.health result");
143481
143650
  return result;
143482
- })
143651
+ }),
143652
+ // Activity level controls how often the branch-status poller fires.
143653
+ // Driven by the Electron main process based on window focus + power state.
143654
+ // See `apps/desktop/src/main/services/activity-monitor.ts`.
143655
+ setActivity: publicProcedure.input(external_exports2.object({ activity: external_exports2.enum(["active", "idle", "background"]) })).mutation(({ input }) => {
143656
+ setPollerActivity(input.activity);
143657
+ return { activity: input.activity };
143658
+ }),
143659
+ getActivity: publicProcedure.query(() => ({ activity: getPollerActivity() }))
143483
143660
  });
143484
143661
  var chatRouter = t2.router({
143485
143662
  answer: publicProcedure.input(external_exports2.object({ approvalId: external_exports2.string(), answers: external_exports2.record(external_exports2.string(), external_exports2.string()) })).mutation(({ input }) => {