@band-app/server 0.32.0 → 0.34.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 (160) hide show
  1. package/dist/client/assets/{TerminalPanel-CSIo5ni0.js → TerminalPanel-BlzUBzmR.js} +1 -1
  2. package/dist/client/assets/{_basePickBy-CdaZY6mI.js → _basePickBy-78hIlKHL.js} +1 -1
  3. package/dist/client/assets/{_baseUniq-Cbf2JylA.js → _baseUniq-C_y7bQp7.js} +1 -1
  4. package/dist/client/assets/addon-search-BvnuewQv.js +1 -0
  5. package/dist/client/assets/addon-unicode11-C7S6GMMR.js +1 -0
  6. package/dist/client/assets/{addon-webgl-q3t2iERs.js → addon-webgl-D9URxm_b.js} +5 -5
  7. package/dist/client/assets/{arc-93kXHiVA.js → arc-DHUj8i-C.js} +1 -1
  8. package/dist/client/assets/{architectureDiagram-VXUJARFQ-mXd7ilfO.js → architectureDiagram-VXUJARFQ-D4Gtstny.js} +1 -1
  9. package/dist/client/assets/{blockDiagram-VD42YOAC-DpjfCZDe.js → blockDiagram-VD42YOAC-BnvoqD8n.js} +1 -1
  10. package/dist/client/assets/{c4Diagram-YG6GDRKO-D17zktyo.js → c4Diagram-YG6GDRKO-B3kFa8rY.js} +1 -1
  11. package/dist/client/assets/channel-C2tC7nD9.js +1 -0
  12. package/dist/client/assets/{chunk-4BX2VUAB-UK3Q89L4.js → chunk-4BX2VUAB-Cry6RdNE.js} +1 -1
  13. package/dist/client/assets/{chunk-55IACEB6-DOnNiKCE.js → chunk-55IACEB6-B2Hcf4yS.js} +1 -1
  14. package/dist/client/assets/{chunk-B4BG7PRW-RuY3pvrs.js → chunk-B4BG7PRW-BqTOv_Q4.js} +1 -1
  15. package/dist/client/assets/{chunk-DI55MBZ5-CLkaHQD0.js → chunk-DI55MBZ5-BHJn8-Rw.js} +1 -1
  16. package/dist/client/assets/{chunk-FMBD7UC4-B2_FpfY1.js → chunk-FMBD7UC4-D2HIyXOe.js} +1 -1
  17. package/dist/client/assets/{chunk-QN33PNHL-BJ5cRImN.js → chunk-QN33PNHL-BSLNMHFq.js} +1 -1
  18. package/dist/client/assets/{chunk-QZHKN3VN-DWhBc9Ty.js → chunk-QZHKN3VN-BuBnSFe-.js} +1 -1
  19. package/dist/client/assets/{chunk-TZMSLE5B-C6dn9jrV.js → chunk-TZMSLE5B-DiQMwPjF.js} +1 -1
  20. package/dist/client/assets/classDiagram-2ON5EDUG-BWbZZspv.js +1 -0
  21. package/dist/client/assets/classDiagram-v2-WZHVMYZB-BWbZZspv.js +1 -0
  22. package/dist/client/assets/clone-BxWL4DUp.js +1 -0
  23. package/dist/client/assets/{cose-bilkent-S5V4N54A-CApk1lUu.js → cose-bilkent-S5V4N54A-Db5PXk3I.js} +1 -1
  24. package/dist/client/assets/{dagre-6UL2VRFP-BmLALXZu.js → dagre-6UL2VRFP-COrq1-o3.js} +1 -1
  25. package/dist/client/assets/{diagram-PSM6KHXK-C2cPLLkQ.js → diagram-PSM6KHXK-BEFxHLpj.js} +1 -1
  26. package/dist/client/assets/{diagram-QEK2KX5R-vmbBSzsB.js → diagram-QEK2KX5R-K9i-foPa.js} +1 -1
  27. package/dist/client/assets/{diagram-S2PKOQOG-RgcJYL9S.js → diagram-S2PKOQOG-5WsQ8w0M.js} +1 -1
  28. package/dist/client/assets/{erDiagram-Q2GNP2WA-CpoxBAoy.js → erDiagram-Q2GNP2WA-CzYts47e.js} +1 -1
  29. package/dist/client/assets/{flowDiagram-NV44I4VS-DxnlkHRY.js → flowDiagram-NV44I4VS-BHSMXKBN.js} +1 -1
  30. package/dist/client/assets/{ganttDiagram-JELNMOA3-DsnoA6Bi.js → ganttDiagram-JELNMOA3-lrI55nIi.js} +1 -1
  31. package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-CRGiaUIP.js → gitGraphDiagram-V2S2FVAM-BR9i1nFI.js} +1 -1
  32. package/dist/client/assets/{graph-B0pjD7JO.js → graph-CHzn7hGd.js} +1 -1
  33. package/dist/client/assets/{highlighted-body-B3W2YXNL-B-sBG2bX.js → highlighted-body-B3W2YXNL-pf8CG4LE.js} +1 -1
  34. package/dist/client/assets/{index-DoBYcXmW.js → index-B1M1Nr1U.js} +1 -1
  35. package/dist/client/assets/{index-Ct8NuxSL.js → index-B3_tKObw.js} +1 -1
  36. package/dist/client/assets/{index-DHizjwkP.js → index-BFvt5Udm.js} +1 -1
  37. package/dist/client/assets/{index-ftqQmu5s.js → index-BZejpLSO.js} +1 -1
  38. package/dist/client/assets/{index-U5JB6u6d.js → index-C4WPBk8W.js} +1 -1
  39. package/dist/client/assets/{index-CrCMXmx8.js → index-CAapUiFF.js} +1 -1
  40. package/dist/client/assets/{index-THSuS9sd.js → index-C_k8X250.js} +1 -1
  41. package/dist/client/assets/{index-sHvOWbSE.js → index-Cg2goL7s.js} +1 -1
  42. package/dist/client/assets/{index-C08rV2E6.js → index-CprTy2ja.js} +1 -1
  43. package/dist/client/assets/{index-2xKJ9Khi.js → index-DOz7KiMS.js} +1 -1
  44. package/dist/client/assets/{index-TNsDOp6e.js → index-DRbvI3mJ.js} +1 -1
  45. package/dist/client/assets/{index-BuhLC7zE.js → index-iDhzXhLS.js} +1 -1
  46. package/dist/client/assets/{index-C5lac708.js → index-sjjEn2vn.js} +1 -1
  47. package/dist/client/assets/{infoDiagram-HS3SLOUP-CRp6iT8d.js → infoDiagram-HS3SLOUP-CPWEaaXS.js} +1 -1
  48. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-BQ2WA6b4.js → journeyDiagram-XKPGCS4Q-IpZXRX_B.js} +1 -1
  49. package/dist/client/assets/{kanban-definition-3W4ZIXB7-D-VXNhIi.js → kanban-definition-3W4ZIXB7-BcAUFQlt.js} +1 -1
  50. package/dist/client/assets/{layout-DqRyDMTL.js → layout-CIxVWn8u.js} +1 -1
  51. package/dist/client/assets/main-Bx2dZBHM.css +1 -0
  52. package/dist/client/assets/{main-CsKfm_iE.js → main-D13cBYQG.js} +280 -274
  53. package/dist/client/assets/{mindmap-definition-VGOIOE7T-DF_KVmYJ.js → mindmap-definition-VGOIOE7T-CX1T1sUN.js} +1 -1
  54. package/dist/client/assets/{pieDiagram-ADFJNKIX-X9Gpsupa.js → pieDiagram-ADFJNKIX-DyLrkF8x.js} +2 -2
  55. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-Dv43A6Kl.js → quadrantDiagram-AYHSOK5B-B_-kuE5u.js} +1 -1
  56. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-Bsm1ID8v.js → requirementDiagram-UZGBJVZJ-CW2Pkh0d.js} +1 -1
  57. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-C89ZzNUa.js → sankeyDiagram-TZEHDZUN-SH3i00se.js} +1 -1
  58. package/dist/client/assets/{sequenceDiagram-WL72ISMW-DCEzHjMR.js → sequenceDiagram-WL72ISMW-reJi3BTh.js} +1 -1
  59. package/dist/client/assets/{stateDiagram-FKZM4ZOC-DL_-FpOq.js → stateDiagram-FKZM4ZOC-CjXJfQgu.js} +1 -1
  60. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-XtJwX8Ka.js +1 -0
  61. package/dist/client/assets/{timeline-definition-IT6M3QCI-BklAlKxM.js → timeline-definition-IT6M3QCI-B96AUWWH.js} +1 -1
  62. package/dist/client/assets/{treemap-GDKQZRPO-DugwR-ad.js → treemap-GDKQZRPO-DoFQQo5a.js} +1 -1
  63. package/dist/client/assets/workspace._workspaceId-XsdwFk5t.js +1 -0
  64. package/dist/client/assets/{workspace._workspaceId-CvpowXC8.js → workspace._workspaceId-ftjuXabJ.js} +1 -1
  65. package/dist/client/assets/xterm-EbFzQDSP.js +10 -0
  66. package/dist/client/assets/{xychartDiagram-PRI3JC2R-DEyS0s6m.js → xychartDiagram-PRI3JC2R-v-oqC6We.js} +1 -1
  67. package/dist/migrations/20260927123820_agent_sessions/migration.sql +16 -0
  68. package/dist/migrations/20260927123820_agent_sessions/snapshot.json +1675 -0
  69. package/dist/migrations/20260927210840_client_state/migration.sql +11 -0
  70. package/dist/migrations/20260927210840_client_state/snapshot.json +1763 -0
  71. package/dist/openapi.json +1724 -218
  72. package/dist/server/assets/{TerminalPanel-BVyQf1VK.js → TerminalPanel-DJnQglDZ.js} +1 -1
  73. package/dist/server/assets/{_basePickBy-DRh75DZA.js → _basePickBy-RSzPH-5U.js} +2 -2
  74. package/dist/server/assets/{_baseUniq-DxwDPh9u.js → _baseUniq-Cp_Qm3uS.js} +1 -1
  75. package/dist/server/assets/_tanstack-start-manifest_v-GQWxvAsR.js +4 -0
  76. package/dist/server/assets/{addon-search-WCacnXal.js → addon-search-BUjn-C-R.js} +190 -176
  77. package/dist/server/assets/{addon-unicode11-BhCmKRb7.js → addon-unicode11-BQz-Cn6z.js} +14 -20
  78. package/dist/server/assets/{addon-webgl-hypMW_go.js → addon-webgl-CgJYuUAA.js} +47 -48
  79. package/dist/server/assets/{arc-d221pGej.js → arc-BAImyMJ-.js} +1 -1
  80. package/dist/server/assets/{architecture-7HQA4BMR-CDuqFHS1.js → architecture-7HQA4BMR-BldYj4EA.js} +6 -6
  81. package/dist/server/assets/{architectureDiagram-VXUJARFQ-LivVdR2U.js → architectureDiagram-VXUJARFQ-iEEYNhTp.js} +6 -6
  82. package/dist/server/assets/{blockDiagram-VD42YOAC-Cpsga8jz.js → blockDiagram-VD42YOAC-CpXPlM5p.js} +6 -6
  83. package/dist/server/assets/{c4Diagram-YG6GDRKO-CR3dewU0.js → c4Diagram-YG6GDRKO-C0jPSgch.js} +2 -2
  84. package/dist/server/assets/{channel-CznEvUJx.js → channel-BXmVLq-u.js} +1 -1
  85. package/dist/server/assets/{chunk-4BX2VUAB-2XGKksov.js → chunk-4BX2VUAB-BRh-MKqM.js} +1 -1
  86. package/dist/server/assets/{chunk-55IACEB6-D_sfF6RU.js → chunk-55IACEB6-D-II5Uvr.js} +1 -1
  87. package/dist/server/assets/{chunk-B4BG7PRW-DE9YZpuI.js → chunk-B4BG7PRW-CLc3MoS-.js} +4 -4
  88. package/dist/server/assets/{chunk-DI55MBZ5-1WmBcjv0.js → chunk-DI55MBZ5-rIuRlmCw.js} +3 -3
  89. package/dist/server/assets/{chunk-FMBD7UC4-0hzwdviV.js → chunk-FMBD7UC4-CwpJS1jy.js} +1 -1
  90. package/dist/server/assets/{chunk-QN33PNHL-sglY-9R6.js → chunk-QN33PNHL-DDjZ9iRW.js} +1 -1
  91. package/dist/server/assets/{chunk-QZHKN3VN-BL0yO15_.js → chunk-QZHKN3VN-CqXxabdj.js} +1 -1
  92. package/dist/server/assets/{chunk-TZMSLE5B-CRCOAzqG.js → chunk-TZMSLE5B-YmXbykHL.js} +1 -1
  93. package/dist/server/assets/{classDiagram-v2-WZHVMYZB-GVVGcmAY.js → classDiagram-2ON5EDUG-B5goRv2J.js} +5 -5
  94. package/dist/server/assets/{classDiagram-2ON5EDUG-GVVGcmAY.js → classDiagram-v2-WZHVMYZB-B5goRv2J.js} +5 -5
  95. package/dist/server/assets/{clone-Cw9PiOA8.js → clone-8krOB2fX.js} +1 -1
  96. package/dist/server/assets/{cose-bilkent-S5V4N54A-xdF6iXS1.js → cose-bilkent-S5V4N54A-CT0fXZG5.js} +1 -1
  97. package/dist/server/assets/{dagre-6UL2VRFP-ZMimZN6M.js → dagre-6UL2VRFP-BKnoyRYf.js} +6 -6
  98. package/dist/server/assets/{diagram-PSM6KHXK-AtdXKese.js → diagram-PSM6KHXK-3yiYIfYG.js} +7 -7
  99. package/dist/server/assets/{diagram-QEK2KX5R-to1VE7Ky.js → diagram-QEK2KX5R-BZS0Hd_d.js} +6 -6
  100. package/dist/server/assets/{diagram-S2PKOQOG-lJFLwEPR.js → diagram-S2PKOQOG-BkGWooM_.js} +6 -6
  101. package/dist/server/assets/{erDiagram-Q2GNP2WA-CbevyytQ.js → erDiagram-Q2GNP2WA-BlJW8Tz3.js} +4 -4
  102. package/dist/server/assets/{flowDiagram-NV44I4VS-DTd0gkkY.js → flowDiagram-NV44I4VS-BGWlA0EG.js} +5 -5
  103. package/dist/server/assets/{ganttDiagram-JELNMOA3-YwmrEI5N.js → ganttDiagram-JELNMOA3-Cf3LALG6.js} +1 -1
  104. package/dist/server/assets/{gitGraph-G5XIXVHT-BArDd0OC.js → gitGraph-G5XIXVHT-B9S3heYN.js} +6 -6
  105. package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-BTThcyM8.js → gitGraphDiagram-V2S2FVAM-C4_f3rx4.js} +7 -7
  106. package/dist/server/assets/{graph-BOO01qmU.js → graph-DYj8A2bp.js} +2 -2
  107. package/dist/server/assets/{highlighted-body-B3W2YXNL-Cym8kCCk.js → highlighted-body-B3W2YXNL-Df68BBlw.js} +1 -1
  108. package/dist/server/assets/{index-CBT9vLeO.js → index-7UlzI_dK.js} +1 -1
  109. package/dist/server/assets/{index-CaFux-EA.js → index-B5gG6MB7.js} +1 -1
  110. package/dist/server/assets/{index-CQd5Q7Kt.js → index-BDEhO1ya.js} +1 -1
  111. package/dist/server/assets/{index-3bt1s3HG.js → index-BYKwSvPL.js} +1 -1
  112. package/dist/server/assets/{index-DVBTKosE.js → index-BiwgNHMQ.js} +1 -1
  113. package/dist/server/assets/{index-Z7BJHwYS.js → index-CISg2hqm.js} +1 -1
  114. package/dist/server/assets/{index-7I7gBKIT.js → index-CMq_WJJ7.js} +1 -1
  115. package/dist/server/assets/{index-Ckc3EtXO.js → index-ChV05j8R.js} +1 -1
  116. package/dist/server/assets/{index-caXQk3Nh.js → index-CopZNvBd.js} +1 -1
  117. package/dist/server/assets/{index-DZfyQWn7.js → index-CxMB5JY7.js} +1 -1
  118. package/dist/server/assets/{index-BQaiSrqT.js → index-DIuiSZSj.js} +1 -1
  119. package/dist/server/assets/{index-DX1Ugorr.js → index-DqsmbFGQ.js} +1 -1
  120. package/dist/server/assets/{index-CsHpsK-4.js → index-DyUjxC3i.js} +1 -1
  121. package/dist/server/assets/{info-VBDWY6EO-D4lcUmb_.js → info-VBDWY6EO-BmkTQbMv.js} +6 -6
  122. package/dist/server/assets/{infoDiagram-HS3SLOUP-C1ai--xt.js → infoDiagram-HS3SLOUP-CKR2MY9e.js} +5 -5
  123. package/dist/server/assets/{journeyDiagram-XKPGCS4Q-qel6lxPz.js → journeyDiagram-XKPGCS4Q-DPsUHcaJ.js} +4 -4
  124. package/dist/server/assets/{kanban-definition-3W4ZIXB7-BQPKgoP_.js → kanban-definition-3W4ZIXB7-C5QIVVhD.js} +2 -2
  125. package/dist/server/assets/{layout-D_wAQ9pE.js → layout-R-e4wg8W.js} +4 -4
  126. package/dist/server/assets/{mermaid-3ZIDBTTL-CtNgetEO.js → mermaid-3ZIDBTTL-ByDi8HnK.js} +1 -1
  127. package/dist/server/assets/{mermaid-parser.core-BwjOeEsU.js → mermaid-parser.core-C9wm222O.js} +11 -11
  128. package/dist/server/assets/{mindmap-definition-VGOIOE7T-DYdatMwP.js → mindmap-definition-VGOIOE7T-1gh-bXjE.js} +3 -3
  129. package/dist/server/assets/{packet-DYOGHKS2-_TbN3RWI.js → packet-DYOGHKS2-Bxy3z0_p.js} +6 -6
  130. package/dist/server/assets/{pie-VRWISCQL-D9Z5k3qi.js → pie-VRWISCQL-BlDk8RiA.js} +6 -6
  131. package/dist/server/assets/{pieDiagram-ADFJNKIX-COmj-G7F.js → pieDiagram-ADFJNKIX-CwnESx-9.js} +7 -7
  132. package/dist/server/assets/{quadrantDiagram-AYHSOK5B-BajsyCAd.js → quadrantDiagram-AYHSOK5B-B-US3olm.js} +1 -1
  133. package/dist/server/assets/{radar-ZZBFDIW7-DLipfn_u.js → radar-ZZBFDIW7-Dy71dV8F.js} +6 -6
  134. package/dist/server/assets/{requirementDiagram-UZGBJVZJ-BGEkpdbY.js → requirementDiagram-UZGBJVZJ-DZZQz_qm.js} +3 -3
  135. package/dist/server/assets/{router-Dpb0Z442.js → router-C6awDsR6.js} +16463 -11602
  136. package/dist/server/assets/{sankeyDiagram-TZEHDZUN-CWd3AEju.js → sankeyDiagram-TZEHDZUN-DMIqo7mj.js} +1 -1
  137. package/dist/server/assets/{sequenceDiagram-WL72ISMW-BMTkK0JQ.js → sequenceDiagram-WL72ISMW-B8koBIGl.js} +3 -3
  138. package/dist/server/assets/{stateDiagram-FKZM4ZOC-CpBXq11c.js → stateDiagram-FKZM4ZOC-BHze-gTI.js} +8 -8
  139. package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-DNuppjf9.js → stateDiagram-v2-4FDKWEC3-DRFmfjyi.js} +4 -4
  140. package/dist/server/assets/{timeline-definition-IT6M3QCI-YTyqSIDt.js → timeline-definition-IT6M3QCI-CEkzxLSR.js} +2 -2
  141. package/dist/server/assets/{treemap-GDKQZRPO-BeWiYXRR.js → treemap-GDKQZRPO-0VBmxaAW.js} +6 -6
  142. package/dist/server/assets/{workspace._workspaceId-t0HaEyN5.js → workspace._workspaceId-BtMBxm9H.js} +93 -71
  143. package/dist/server/assets/{workspace._workspaceId-Ce_eap6T.js → workspace._workspaceId-C7ra183B.js} +1 -1
  144. package/dist/server/assets/{xterm-DnMRSOdQ.js → xterm-CsaVCelU.js} +517 -579
  145. package/dist/server/assets/{xychartDiagram-PRI3JC2R-Dlgz7zKK.js → xychartDiagram-PRI3JC2R-BQCIxu2L.js} +1 -1
  146. package/dist/server/server.js +2 -2
  147. package/dist/start-server.mjs +34624 -30192
  148. package/dist/terminal-daemon.mjs +635 -335
  149. package/package.json +14 -12
  150. package/dist/client/assets/addon-search-DBOYg5r3.js +0 -1
  151. package/dist/client/assets/addon-unicode11-LsnDChsR.js +0 -1
  152. package/dist/client/assets/channel-C4GiEGw4.js +0 -1
  153. package/dist/client/assets/classDiagram-2ON5EDUG-y6v_VfOs.js +0 -1
  154. package/dist/client/assets/classDiagram-v2-WZHVMYZB-y6v_VfOs.js +0 -1
  155. package/dist/client/assets/clone-B_3XeJsO.js +0 -1
  156. package/dist/client/assets/main-CmUn6n9o.css +0 -1
  157. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-D5laPTLF.js +0 -1
  158. package/dist/client/assets/workspace._workspaceId-CdoxJFsY.js +0 -1
  159. package/dist/client/assets/xterm-CPJFL3h0.js +0 -10
  160. package/dist/server/assets/_tanstack-start-manifest_v-CfuLu7F9.js +0 -4
package/dist/openapi.json CHANGED
@@ -2169,6 +2169,104 @@
2169
2169
  }
2170
2170
  }
2171
2171
  },
2172
+ "/history.import": {
2173
+ "post": {
2174
+ "operationId": "history.import",
2175
+ "tags": [
2176
+ "history"
2177
+ ],
2178
+ "responses": {
2179
+ "200": {
2180
+ "description": "Successful response",
2181
+ "content": {
2182
+ "application/json": {
2183
+ "schema": {
2184
+ "type": "object",
2185
+ "properties": {
2186
+ "result": {
2187
+ "type": "object",
2188
+ "properties": {
2189
+ "data": {
2190
+ "type": "object",
2191
+ "properties": {
2192
+ "imported": {
2193
+ "type": "number"
2194
+ }
2195
+ },
2196
+ "required": [
2197
+ "imported"
2198
+ ],
2199
+ "additionalProperties": false
2200
+ }
2201
+ },
2202
+ "required": [
2203
+ "data"
2204
+ ]
2205
+ }
2206
+ },
2207
+ "required": [
2208
+ "result"
2209
+ ]
2210
+ }
2211
+ }
2212
+ }
2213
+ },
2214
+ "default": {
2215
+ "$ref": "#/components/responses/Error"
2216
+ }
2217
+ },
2218
+ "requestBody": {
2219
+ "required": true,
2220
+ "content": {
2221
+ "application/json": {
2222
+ "schema": {
2223
+ "type": "object",
2224
+ "properties": {
2225
+ "entries": {
2226
+ "type": "array",
2227
+ "items": {
2228
+ "type": "object",
2229
+ "properties": {
2230
+ "url": {
2231
+ "type": "string"
2232
+ },
2233
+ "title": {
2234
+ "type": [
2235
+ "string",
2236
+ "null"
2237
+ ]
2238
+ },
2239
+ "visitCount": {
2240
+ "type": "number"
2241
+ },
2242
+ "lastVisitedAt": {
2243
+ "type": "number"
2244
+ }
2245
+ },
2246
+ "required": [
2247
+ "url",
2248
+ "title",
2249
+ "visitCount",
2250
+ "lastVisitedAt"
2251
+ ],
2252
+ "additionalProperties": false
2253
+ }
2254
+ },
2255
+ "workspaceId": {
2256
+ "type": "string"
2257
+ }
2258
+ },
2259
+ "required": [
2260
+ "entries",
2261
+ "workspaceId"
2262
+ ],
2263
+ "additionalProperties": false
2264
+ }
2265
+ }
2266
+ }
2267
+ }
2268
+ }
2269
+ },
2172
2270
  "/history.clear": {
2173
2271
  "post": {
2174
2272
  "operationId": "history.clear",
@@ -2228,10 +2326,10 @@
2228
2326
  "range": {
2229
2327
  "type": "string",
2230
2328
  "enum": [
2329
+ "all",
2231
2330
  "hour",
2232
2331
  "day",
2233
- "week",
2234
- "all"
2332
+ "week"
2235
2333
  ]
2236
2334
  }
2237
2335
  },
@@ -2933,15 +3031,306 @@
2933
3031
  }
2934
3032
  },
2935
3033
  "required": [
2936
- "fromMs",
2937
- "toMs"
2938
- ],
2939
- "additionalProperties": false
3034
+ "fromMs",
3035
+ "toMs"
3036
+ ],
3037
+ "additionalProperties": false
3038
+ }
3039
+ }
3040
+ }
3041
+ }
3042
+ ]
3043
+ }
3044
+ },
3045
+ "/plugins.list": {
3046
+ "get": {
3047
+ "operationId": "plugins.list",
3048
+ "description": "The bundled plugins and their state. The dashboard hides the UI of disabled ones.",
3049
+ "tags": [
3050
+ "plugins"
3051
+ ],
3052
+ "responses": {
3053
+ "200": {
3054
+ "description": "Successful response",
3055
+ "content": {
3056
+ "application/json": {
3057
+ "schema": {
3058
+ "type": "object",
3059
+ "properties": {
3060
+ "result": {
3061
+ "type": "object",
3062
+ "properties": {
3063
+ "data": {
3064
+ "type": "array",
3065
+ "items": {
3066
+ "$ref": "#/components/schemas/PluginInfo"
3067
+ }
3068
+ }
3069
+ },
3070
+ "required": [
3071
+ "data"
3072
+ ]
3073
+ }
3074
+ },
3075
+ "required": [
3076
+ "result"
3077
+ ]
3078
+ }
3079
+ }
3080
+ }
3081
+ },
3082
+ "default": {
3083
+ "$ref": "#/components/responses/Error"
3084
+ }
3085
+ }
3086
+ }
3087
+ },
3088
+ "/reviews.forWorkspace": {
3089
+ "get": {
3090
+ "operationId": "reviews.forWorkspace",
3091
+ "description": "The review for the workspace's branch with its checks, or the branch's\nCI jobs when there is no review. Provider failures come back as\n`status: \"error\"` rather than a thrown error, so the panel can show them.",
3092
+ "tags": [
3093
+ "reviews"
3094
+ ],
3095
+ "responses": {
3096
+ "200": {
3097
+ "description": "Successful response",
3098
+ "content": {
3099
+ "application/json": {
3100
+ "schema": {
3101
+ "type": "object",
3102
+ "properties": {
3103
+ "result": {
3104
+ "type": "object",
3105
+ "properties": {
3106
+ "data": {
3107
+ "oneOf": [
3108
+ {
3109
+ "type": "object",
3110
+ "properties": {
3111
+ "status": {
3112
+ "type": "string",
3113
+ "const": "ok"
3114
+ },
3115
+ "provider": {
3116
+ "type": "object",
3117
+ "properties": {
3118
+ "id": {
3119
+ "type": "string"
3120
+ },
3121
+ "name": {
3122
+ "type": "string"
3123
+ }
3124
+ },
3125
+ "required": [
3126
+ "id",
3127
+ "name"
3128
+ ],
3129
+ "additionalProperties": false
3130
+ },
3131
+ "repo": {
3132
+ "$ref": "#/components/schemas/RepoInfo"
3133
+ },
3134
+ "branch": {
3135
+ "type": "string"
3136
+ },
3137
+ "review": {
3138
+ "oneOf": [
3139
+ {
3140
+ "$ref": "#/components/schemas/ReviewInfo"
3141
+ },
3142
+ {
3143
+ "type": "null"
3144
+ }
3145
+ ]
3146
+ },
3147
+ "checks": {
3148
+ "$ref": "#/components/schemas/ChecksReport"
3149
+ },
3150
+ "fetchedAt": {
3151
+ "type": "string"
3152
+ }
3153
+ },
3154
+ "required": [
3155
+ "status",
3156
+ "provider",
3157
+ "repo",
3158
+ "branch",
3159
+ "review",
3160
+ "checks",
3161
+ "fetchedAt"
3162
+ ],
3163
+ "additionalProperties": false
3164
+ },
3165
+ {
3166
+ "type": "object",
3167
+ "properties": {
3168
+ "status": {
3169
+ "type": "string",
3170
+ "const": "unavailable"
3171
+ },
3172
+ "reason": {
3173
+ "type": "string",
3174
+ "enum": [
3175
+ "plain-project",
3176
+ "detached-head",
3177
+ "no-remote",
3178
+ "no-provider"
3179
+ ]
3180
+ },
3181
+ "message": {
3182
+ "type": "string"
3183
+ }
3184
+ },
3185
+ "required": [
3186
+ "status",
3187
+ "reason",
3188
+ "message"
3189
+ ],
3190
+ "additionalProperties": false
3191
+ },
3192
+ {
3193
+ "type": "object",
3194
+ "properties": {
3195
+ "status": {
3196
+ "type": "string",
3197
+ "const": "error"
3198
+ },
3199
+ "message": {
3200
+ "type": "string"
3201
+ }
3202
+ },
3203
+ "required": [
3204
+ "status",
3205
+ "message"
3206
+ ],
3207
+ "additionalProperties": false
3208
+ }
3209
+ ],
3210
+ "discriminator": {
3211
+ "propertyName": "status"
3212
+ },
3213
+ "description": "What the core returns for a workspace's review panel: the review for the\nworkspace's branch, or when there is none, the checks on the branch."
3214
+ }
3215
+ },
3216
+ "required": [
3217
+ "data"
3218
+ ]
3219
+ }
3220
+ },
3221
+ "required": [
3222
+ "result"
3223
+ ]
3224
+ }
3225
+ }
3226
+ }
3227
+ },
3228
+ "default": {
3229
+ "$ref": "#/components/responses/Error"
3230
+ }
3231
+ },
3232
+ "parameters": [
3233
+ {
3234
+ "name": "input",
3235
+ "in": "query",
3236
+ "required": true,
3237
+ "style": "deepObject",
3238
+ "content": {
3239
+ "application/json": {
3240
+ "schema": {
3241
+ "type": "object",
3242
+ "properties": {
3243
+ "workspaceId": {
3244
+ "type": "string"
3245
+ }
3246
+ },
3247
+ "required": [
3248
+ "workspaceId"
3249
+ ],
3250
+ "additionalProperties": false
3251
+ }
3252
+ }
3253
+ }
3254
+ }
3255
+ ]
3256
+ }
3257
+ },
3258
+ "/reviews.merge": {
3259
+ "post": {
3260
+ "operationId": "reviews.merge",
3261
+ "description": "Merge the workspace branch's open review.",
3262
+ "tags": [
3263
+ "reviews"
3264
+ ],
3265
+ "responses": {
3266
+ "200": {
3267
+ "description": "Successful response",
3268
+ "content": {
3269
+ "application/json": {
3270
+ "schema": {
3271
+ "type": "object",
3272
+ "properties": {
3273
+ "result": {
3274
+ "type": "object",
3275
+ "properties": {
3276
+ "data": {
3277
+ "type": "object",
3278
+ "properties": {
3279
+ "ok": {
3280
+ "type": "boolean",
3281
+ "const": true
3282
+ }
3283
+ },
3284
+ "required": [
3285
+ "ok"
3286
+ ],
3287
+ "additionalProperties": false
3288
+ }
3289
+ },
3290
+ "required": [
3291
+ "data"
3292
+ ]
3293
+ }
3294
+ },
3295
+ "required": [
3296
+ "result"
3297
+ ]
2940
3298
  }
2941
3299
  }
2942
3300
  }
3301
+ },
3302
+ "default": {
3303
+ "$ref": "#/components/responses/Error"
2943
3304
  }
2944
- ]
3305
+ },
3306
+ "requestBody": {
3307
+ "required": true,
3308
+ "content": {
3309
+ "application/json": {
3310
+ "schema": {
3311
+ "type": "object",
3312
+ "properties": {
3313
+ "workspaceId": {
3314
+ "type": "string"
3315
+ },
3316
+ "method": {
3317
+ "type": "string",
3318
+ "enum": [
3319
+ "merge",
3320
+ "squash",
3321
+ "rebase"
3322
+ ]
3323
+ }
3324
+ },
3325
+ "required": [
3326
+ "workspaceId",
3327
+ "method"
3328
+ ],
3329
+ "additionalProperties": false
3330
+ }
3331
+ }
3332
+ }
3333
+ }
2945
3334
  }
2946
3335
  },
2947
3336
  "/services.health": {
@@ -3919,6 +4308,54 @@
3919
4308
  }
3920
4309
  }
3921
4310
  },
4311
+ "/terminal.restartDaemon": {
4312
+ "post": {
4313
+ "operationId": "terminal.restartDaemon",
4314
+ "tags": [
4315
+ "terminal"
4316
+ ],
4317
+ "responses": {
4318
+ "200": {
4319
+ "description": "Successful response",
4320
+ "content": {
4321
+ "application/json": {
4322
+ "schema": {
4323
+ "type": "object",
4324
+ "properties": {
4325
+ "result": {
4326
+ "type": "object",
4327
+ "properties": {
4328
+ "data": {
4329
+ "type": "object",
4330
+ "properties": {
4331
+ "killedCount": {
4332
+ "type": "number"
4333
+ }
4334
+ },
4335
+ "required": [
4336
+ "killedCount"
4337
+ ],
4338
+ "additionalProperties": false
4339
+ }
4340
+ },
4341
+ "required": [
4342
+ "data"
4343
+ ]
4344
+ }
4345
+ },
4346
+ "required": [
4347
+ "result"
4348
+ ]
4349
+ }
4350
+ }
4351
+ }
4352
+ },
4353
+ "default": {
4354
+ "$ref": "#/components/responses/Error"
4355
+ }
4356
+ }
4357
+ }
4358
+ },
3922
4359
  "/settings.get": {
3923
4360
  "get": {
3924
4361
  "operationId": "settings.get",
@@ -4134,6 +4571,19 @@
4134
4571
  }
4135
4572
  },
4136
4573
  "additionalProperties": {}
4574
+ },
4575
+ "agents": {
4576
+ "type": "object",
4577
+ "properties": {
4578
+ "defaultMode": {
4579
+ "type": "string",
4580
+ "enum": [
4581
+ "gui",
4582
+ "tui"
4583
+ ]
4584
+ }
4585
+ },
4586
+ "additionalProperties": {}
4137
4587
  }
4138
4588
  },
4139
4589
  "additionalProperties": {}
@@ -4855,6 +5305,13 @@
4855
5305
  "codingAgentId": {
4856
5306
  "type": "string"
4857
5307
  },
5308
+ "agentMode": {
5309
+ "type": "string",
5310
+ "enum": [
5311
+ "gui",
5312
+ "tui"
5313
+ ]
5314
+ },
4858
5315
  "via": {
4859
5316
  "type": "string",
4860
5317
  "enum": [
@@ -5873,9 +6330,9 @@
5873
6330
  ]
5874
6331
  }
5875
6332
  },
5876
- "/workspace.getDiffSummary": {
6333
+ "/workspace.getChanges": {
5877
6334
  "get": {
5878
- "operationId": "workspace.getDiffSummary",
6335
+ "operationId": "workspace.getChanges",
5879
6336
  "tags": [
5880
6337
  "workspace"
5881
6338
  ],
@@ -5891,7 +6348,7 @@
5891
6348
  "type": "object",
5892
6349
  "properties": {
5893
6350
  "data": {
5894
- "$ref": "#/components/schemas/DiffSummaryResult"
6351
+ "$ref": "#/components/schemas/ChangesResult"
5895
6352
  }
5896
6353
  },
5897
6354
  "required": [
@@ -5924,31 +6381,197 @@
5924
6381
  "workspaceId": {
5925
6382
  "type": "string"
5926
6383
  },
5927
- "diffMode": {
6384
+ "compareBranch": {
6385
+ "type": "string"
6386
+ }
6387
+ },
6388
+ "required": [
6389
+ "workspaceId"
6390
+ ],
6391
+ "additionalProperties": false
6392
+ }
6393
+ }
6394
+ }
6395
+ }
6396
+ ]
6397
+ }
6398
+ },
6399
+ "/workspace.getFileDiff": {
6400
+ "get": {
6401
+ "operationId": "workspace.getFileDiff",
6402
+ "tags": [
6403
+ "workspace"
6404
+ ],
6405
+ "responses": {
6406
+ "200": {
6407
+ "description": "Successful response",
6408
+ "content": {
6409
+ "application/json": {
6410
+ "schema": {
6411
+ "type": "object",
6412
+ "properties": {
6413
+ "result": {
6414
+ "type": "object",
6415
+ "properties": {
6416
+ "data": {
6417
+ "type": "object",
6418
+ "properties": {
6419
+ "diff": {
6420
+ "type": "string"
6421
+ }
6422
+ },
6423
+ "required": [
6424
+ "diff"
6425
+ ],
6426
+ "additionalProperties": false
6427
+ }
6428
+ },
6429
+ "required": [
6430
+ "data"
6431
+ ]
6432
+ }
6433
+ },
6434
+ "required": [
6435
+ "result"
6436
+ ]
6437
+ }
6438
+ }
6439
+ }
6440
+ },
6441
+ "default": {
6442
+ "$ref": "#/components/responses/Error"
6443
+ }
6444
+ },
6445
+ "parameters": [
6446
+ {
6447
+ "name": "input",
6448
+ "in": "query",
6449
+ "required": true,
6450
+ "style": "deepObject",
6451
+ "content": {
6452
+ "application/json": {
6453
+ "schema": {
6454
+ "type": "object",
6455
+ "properties": {
6456
+ "workspaceId": {
6457
+ "type": "string"
6458
+ },
6459
+ "filePath": {
6460
+ "type": "string"
6461
+ },
6462
+ "section": {
5928
6463
  "type": "string",
5929
6464
  "enum": [
5930
6465
  "branch",
5931
- "uncommitted"
6466
+ "conflicts",
6467
+ "unstaged",
6468
+ "staged",
6469
+ "untracked"
5932
6470
  ]
5933
6471
  },
5934
- "compareBranch": {
5935
- "type": "string"
6472
+ "contextLines": {
6473
+ "type": "number"
6474
+ },
6475
+ "mergeBase": {
6476
+ "type": "string",
6477
+ "description": "Required for the `branch` section."
6478
+ },
6479
+ "oldPath": {
6480
+ "type": "string",
6481
+ "description": "The path before a rename, so git pairs the two sides."
5936
6482
  }
5937
6483
  },
5938
6484
  "required": [
5939
- "workspaceId"
6485
+ "workspaceId",
6486
+ "filePath",
6487
+ "section"
5940
6488
  ],
5941
6489
  "additionalProperties": false
5942
6490
  }
5943
6491
  }
5944
6492
  }
5945
6493
  }
5946
- ]
6494
+ ]
6495
+ }
6496
+ },
6497
+ "/workspace.stageFiles": {
6498
+ "post": {
6499
+ "operationId": "workspace.stageFiles",
6500
+ "tags": [
6501
+ "workspace"
6502
+ ],
6503
+ "responses": {
6504
+ "200": {
6505
+ "description": "Successful response",
6506
+ "content": {
6507
+ "application/json": {
6508
+ "schema": {
6509
+ "type": "object",
6510
+ "properties": {
6511
+ "result": {
6512
+ "type": "object",
6513
+ "properties": {
6514
+ "data": {
6515
+ "type": "object",
6516
+ "properties": {
6517
+ "ok": {
6518
+ "type": "boolean",
6519
+ "const": true
6520
+ }
6521
+ },
6522
+ "required": [
6523
+ "ok"
6524
+ ],
6525
+ "additionalProperties": false
6526
+ }
6527
+ },
6528
+ "required": [
6529
+ "data"
6530
+ ]
6531
+ }
6532
+ },
6533
+ "required": [
6534
+ "result"
6535
+ ]
6536
+ }
6537
+ }
6538
+ }
6539
+ },
6540
+ "default": {
6541
+ "$ref": "#/components/responses/Error"
6542
+ }
6543
+ },
6544
+ "requestBody": {
6545
+ "required": true,
6546
+ "content": {
6547
+ "application/json": {
6548
+ "schema": {
6549
+ "type": "object",
6550
+ "properties": {
6551
+ "workspaceId": {
6552
+ "type": "string"
6553
+ },
6554
+ "paths": {
6555
+ "type": "array",
6556
+ "items": {
6557
+ "type": "string"
6558
+ }
6559
+ }
6560
+ },
6561
+ "required": [
6562
+ "workspaceId",
6563
+ "paths"
6564
+ ],
6565
+ "additionalProperties": false
6566
+ }
6567
+ }
6568
+ }
6569
+ }
5947
6570
  }
5948
6571
  },
5949
- "/workspace.getFileDiff": {
5950
- "get": {
5951
- "operationId": "workspace.getFileDiff",
6572
+ "/workspace.unstageFiles": {
6573
+ "post": {
6574
+ "operationId": "workspace.unstageFiles",
5952
6575
  "tags": [
5953
6576
  "workspace"
5954
6577
  ],
@@ -5966,12 +6589,13 @@
5966
6589
  "data": {
5967
6590
  "type": "object",
5968
6591
  "properties": {
5969
- "diff": {
5970
- "type": "string"
6592
+ "ok": {
6593
+ "type": "boolean",
6594
+ "const": true
5971
6595
  }
5972
6596
  },
5973
6597
  "required": [
5974
- "diff"
6598
+ "ok"
5975
6599
  ],
5976
6600
  "additionalProperties": false
5977
6601
  }
@@ -5992,46 +6616,37 @@
5992
6616
  "$ref": "#/components/responses/Error"
5993
6617
  }
5994
6618
  },
5995
- "parameters": [
5996
- {
5997
- "name": "input",
5998
- "in": "query",
5999
- "required": true,
6000
- "style": "deepObject",
6001
- "content": {
6002
- "application/json": {
6003
- "schema": {
6004
- "type": "object",
6005
- "properties": {
6006
- "workspaceId": {
6007
- "type": "string"
6008
- },
6009
- "filePath": {
6010
- "type": "string"
6011
- },
6012
- "mergeBase": {
6619
+ "requestBody": {
6620
+ "required": true,
6621
+ "content": {
6622
+ "application/json": {
6623
+ "schema": {
6624
+ "type": "object",
6625
+ "properties": {
6626
+ "workspaceId": {
6627
+ "type": "string"
6628
+ },
6629
+ "paths": {
6630
+ "type": "array",
6631
+ "items": {
6013
6632
  "type": "string"
6014
- },
6015
- "contextLines": {
6016
- "type": "number"
6017
6633
  }
6018
- },
6019
- "required": [
6020
- "workspaceId",
6021
- "filePath",
6022
- "mergeBase"
6023
- ],
6024
- "additionalProperties": false
6025
- }
6634
+ }
6635
+ },
6636
+ "required": [
6637
+ "workspaceId",
6638
+ "paths"
6639
+ ],
6640
+ "additionalProperties": false
6026
6641
  }
6027
6642
  }
6028
6643
  }
6029
- ]
6644
+ }
6030
6645
  }
6031
6646
  },
6032
- "/workspace.revertFile": {
6647
+ "/workspace.discardChanges": {
6033
6648
  "post": {
6034
- "operationId": "workspace.revertFile",
6649
+ "operationId": "workspace.discardChanges",
6035
6650
  "tags": [
6036
6651
  "workspace"
6037
6652
  ],
@@ -6086,24 +6701,25 @@
6086
6701
  "workspaceId": {
6087
6702
  "type": "string"
6088
6703
  },
6089
- "filePath": {
6090
- "type": "string"
6091
- },
6092
- "diffMode": {
6704
+ "section": {
6093
6705
  "type": "string",
6094
6706
  "enum": [
6095
- "branch",
6096
- "uncommitted"
6707
+ "unstaged",
6708
+ "staged",
6709
+ "untracked"
6097
6710
  ]
6098
6711
  },
6099
- "compareBranch": {
6100
- "type": "string"
6712
+ "paths": {
6713
+ "type": "array",
6714
+ "items": {
6715
+ "type": "string"
6716
+ }
6101
6717
  }
6102
6718
  },
6103
6719
  "required": [
6104
6720
  "workspaceId",
6105
- "filePath",
6106
- "diffMode"
6721
+ "section",
6722
+ "paths"
6107
6723
  ],
6108
6724
  "additionalProperties": false
6109
6725
  }
@@ -7321,81 +7937,6 @@
7321
7937
  ]
7322
7938
  }
7323
7939
  },
7324
- "/workspace.switchAgent": {
7325
- "post": {
7326
- "operationId": "workspace.switchAgent",
7327
- "tags": [
7328
- "workspace"
7329
- ],
7330
- "responses": {
7331
- "200": {
7332
- "description": "Successful response",
7333
- "content": {
7334
- "application/json": {
7335
- "schema": {
7336
- "type": "object",
7337
- "properties": {
7338
- "result": {
7339
- "type": "object",
7340
- "properties": {
7341
- "data": {
7342
- "type": "object",
7343
- "properties": {
7344
- "ok": {
7345
- "type": "boolean",
7346
- "const": true
7347
- }
7348
- },
7349
- "required": [
7350
- "ok"
7351
- ],
7352
- "additionalProperties": false
7353
- }
7354
- },
7355
- "required": [
7356
- "data"
7357
- ]
7358
- }
7359
- },
7360
- "required": [
7361
- "result"
7362
- ]
7363
- }
7364
- }
7365
- }
7366
- },
7367
- "default": {
7368
- "$ref": "#/components/responses/Error"
7369
- }
7370
- },
7371
- "requestBody": {
7372
- "required": true,
7373
- "content": {
7374
- "application/json": {
7375
- "schema": {
7376
- "type": "object",
7377
- "properties": {
7378
- "workspaceId": {
7379
- "type": "string"
7380
- },
7381
- "agentId": {
7382
- "type": "string"
7383
- },
7384
- "chatId": {
7385
- "type": "string"
7386
- }
7387
- },
7388
- "required": [
7389
- "workspaceId",
7390
- "agentId"
7391
- ],
7392
- "additionalProperties": false
7393
- }
7394
- }
7395
- }
7396
- }
7397
- }
7398
- },
7399
7940
  "/cronjobs.list": {
7400
7941
  "get": {
7401
7942
  "operationId": "cronjobs.list",
@@ -8308,6 +8849,9 @@
8308
8849
  },
8309
8850
  "configId": {
8310
8851
  "type": "string"
8852
+ },
8853
+ "workspaceId": {
8854
+ "type": "string"
8311
8855
  }
8312
8856
  },
8313
8857
  "required": [
@@ -8841,7 +9385,160 @@
8841
9385
  }
8842
9386
  },
8843
9387
  "required": [
8844
- "chatId"
9388
+ "chatId"
9389
+ ],
9390
+ "additionalProperties": false
9391
+ }
9392
+ }
9393
+ }
9394
+ }
9395
+ }
9396
+ },
9397
+ "/agentSessions.list": {
9398
+ "get": {
9399
+ "operationId": "agentSessions.list",
9400
+ "tags": [
9401
+ "agentSessions"
9402
+ ],
9403
+ "responses": {
9404
+ "200": {
9405
+ "description": "Successful response",
9406
+ "content": {
9407
+ "application/json": {
9408
+ "schema": {
9409
+ "type": "object",
9410
+ "properties": {
9411
+ "result": {
9412
+ "type": "object",
9413
+ "properties": {
9414
+ "data": {
9415
+ "type": "object",
9416
+ "properties": {
9417
+ "agentSessions": {
9418
+ "type": "array",
9419
+ "items": {
9420
+ "$ref": "#/components/schemas/AgentSessionRecord"
9421
+ }
9422
+ }
9423
+ },
9424
+ "required": [
9425
+ "agentSessions"
9426
+ ],
9427
+ "additionalProperties": false
9428
+ }
9429
+ },
9430
+ "required": [
9431
+ "data"
9432
+ ]
9433
+ }
9434
+ },
9435
+ "required": [
9436
+ "result"
9437
+ ]
9438
+ }
9439
+ }
9440
+ }
9441
+ },
9442
+ "default": {
9443
+ "$ref": "#/components/responses/Error"
9444
+ }
9445
+ },
9446
+ "parameters": [
9447
+ {
9448
+ "name": "input",
9449
+ "in": "query",
9450
+ "required": true,
9451
+ "style": "deepObject",
9452
+ "content": {
9453
+ "application/json": {
9454
+ "schema": {
9455
+ "type": "object",
9456
+ "properties": {
9457
+ "workspaceId": {
9458
+ "type": "string"
9459
+ }
9460
+ },
9461
+ "required": [
9462
+ "workspaceId"
9463
+ ],
9464
+ "additionalProperties": false
9465
+ }
9466
+ }
9467
+ }
9468
+ }
9469
+ ]
9470
+ }
9471
+ },
9472
+ "/agentSessions.launch": {
9473
+ "post": {
9474
+ "operationId": "agentSessions.launch",
9475
+ "description": "Start an agent. `mode` is the calling device's choice; without it the\nserver's `agents.defaultMode` applies. The response carries the mode\nactually used, which is `gui` when the agent has no TUI invocation.",
9476
+ "tags": [
9477
+ "agentSessions"
9478
+ ],
9479
+ "responses": {
9480
+ "200": {
9481
+ "description": "Successful response",
9482
+ "content": {
9483
+ "application/json": {
9484
+ "schema": {
9485
+ "type": "object",
9486
+ "properties": {
9487
+ "result": {
9488
+ "type": "object",
9489
+ "properties": {
9490
+ "data": {
9491
+ "$ref": "#/components/schemas/result"
9492
+ }
9493
+ },
9494
+ "required": [
9495
+ "data"
9496
+ ]
9497
+ }
9498
+ },
9499
+ "required": [
9500
+ "result"
9501
+ ]
9502
+ }
9503
+ }
9504
+ }
9505
+ },
9506
+ "default": {
9507
+ "$ref": "#/components/responses/Error"
9508
+ }
9509
+ },
9510
+ "requestBody": {
9511
+ "required": true,
9512
+ "content": {
9513
+ "application/json": {
9514
+ "schema": {
9515
+ "type": "object",
9516
+ "properties": {
9517
+ "workspaceId": {
9518
+ "type": "string"
9519
+ },
9520
+ "prompt": {
9521
+ "type": "string"
9522
+ },
9523
+ "mode": {
9524
+ "type": "string",
9525
+ "enum": [
9526
+ "gui",
9527
+ "tui"
9528
+ ]
9529
+ },
9530
+ "chatId": {
9531
+ "type": "string"
9532
+ },
9533
+ "terminalId": {
9534
+ "type": "string"
9535
+ },
9536
+ "agentId": {
9537
+ "type": "string"
9538
+ }
9539
+ },
9540
+ "required": [
9541
+ "workspaceId"
8845
9542
  ],
8846
9543
  "additionalProperties": false
8847
9544
  }
@@ -10005,37 +10702,317 @@
10005
10702
  "$ref": "#/components/responses/Error"
10006
10703
  }
10007
10704
  },
10008
- "parameters": [
10009
- {
10010
- "name": "input",
10011
- "in": "query",
10012
- "required": true,
10013
- "style": "deepObject",
10014
- "content": {
10015
- "application/json": {
10016
- "schema": {
10017
- "type": "object",
10018
- "properties": {
10019
- "workspaceId": {
10020
- "type": "string"
10021
- }
10705
+ "parameters": [
10706
+ {
10707
+ "name": "input",
10708
+ "in": "query",
10709
+ "required": true,
10710
+ "style": "deepObject",
10711
+ "content": {
10712
+ "application/json": {
10713
+ "schema": {
10714
+ "type": "object",
10715
+ "properties": {
10716
+ "workspaceId": {
10717
+ "type": "string"
10718
+ }
10719
+ },
10720
+ "required": [
10721
+ "workspaceId"
10722
+ ],
10723
+ "additionalProperties": false
10724
+ }
10725
+ }
10726
+ }
10727
+ }
10728
+ ]
10729
+ }
10730
+ },
10731
+ "/panelFocus.set": {
10732
+ "post": {
10733
+ "operationId": "panelFocus.set",
10734
+ "tags": [
10735
+ "panelFocus"
10736
+ ],
10737
+ "responses": {
10738
+ "200": {
10739
+ "description": "Successful response",
10740
+ "content": {
10741
+ "application/json": {
10742
+ "schema": {
10743
+ "type": "object",
10744
+ "properties": {
10745
+ "result": {
10746
+ "type": "object",
10747
+ "properties": {
10748
+ "data": {
10749
+ "type": "object",
10750
+ "properties": {
10751
+ "ok": {
10752
+ "type": "boolean"
10753
+ }
10754
+ },
10755
+ "required": [
10756
+ "ok"
10757
+ ],
10758
+ "additionalProperties": false
10759
+ }
10760
+ },
10761
+ "required": [
10762
+ "data"
10763
+ ]
10764
+ }
10765
+ },
10766
+ "required": [
10767
+ "result"
10768
+ ]
10769
+ }
10770
+ }
10771
+ }
10772
+ },
10773
+ "default": {
10774
+ "$ref": "#/components/responses/Error"
10775
+ }
10776
+ },
10777
+ "requestBody": {
10778
+ "required": true,
10779
+ "content": {
10780
+ "application/json": {
10781
+ "schema": {
10782
+ "type": "object",
10783
+ "properties": {
10784
+ "workspaceId": {
10785
+ "type": "string"
10786
+ },
10787
+ "panelType": {
10788
+ "type": "string",
10789
+ "enum": [
10790
+ "chat",
10791
+ "terminal",
10792
+ "browser"
10793
+ ]
10794
+ },
10795
+ "panelId": {
10796
+ "type": "string"
10797
+ }
10798
+ },
10799
+ "required": [
10800
+ "workspaceId",
10801
+ "panelType",
10802
+ "panelId"
10803
+ ],
10804
+ "additionalProperties": false
10805
+ }
10806
+ }
10807
+ }
10808
+ }
10809
+ }
10810
+ },
10811
+ "/clientState.list": {
10812
+ "get": {
10813
+ "operationId": "clientState.list",
10814
+ "tags": [
10815
+ "clientState"
10816
+ ],
10817
+ "responses": {
10818
+ "200": {
10819
+ "description": "Successful response",
10820
+ "content": {
10821
+ "application/json": {
10822
+ "schema": {
10823
+ "type": "object",
10824
+ "properties": {
10825
+ "result": {
10826
+ "type": "object",
10827
+ "properties": {
10828
+ "data": {
10829
+ "type": "object",
10830
+ "properties": {
10831
+ "entries": {
10832
+ "type": "array",
10833
+ "items": {
10834
+ "$ref": "#/components/schemas/ClientStateEntry"
10835
+ }
10836
+ }
10837
+ },
10838
+ "required": [
10839
+ "entries"
10840
+ ],
10841
+ "additionalProperties": false
10842
+ }
10843
+ },
10844
+ "required": [
10845
+ "data"
10846
+ ]
10847
+ }
10848
+ },
10849
+ "required": [
10850
+ "result"
10851
+ ]
10852
+ }
10853
+ }
10854
+ }
10855
+ },
10856
+ "default": {
10857
+ "$ref": "#/components/responses/Error"
10858
+ }
10859
+ },
10860
+ "parameters": [
10861
+ {
10862
+ "name": "input",
10863
+ "in": "query",
10864
+ "required": true,
10865
+ "style": "deepObject",
10866
+ "content": {
10867
+ "application/json": {
10868
+ "schema": {
10869
+ "type": "object",
10870
+ "properties": {
10871
+ "workspaceId": {
10872
+ "type": [
10873
+ "string",
10874
+ "null"
10875
+ ]
10876
+ },
10877
+ "deviceType": {
10878
+ "type": "string",
10879
+ "enum": [
10880
+ "desktop",
10881
+ "mobile"
10882
+ ]
10883
+ }
10884
+ },
10885
+ "required": [
10886
+ "workspaceId",
10887
+ "deviceType"
10888
+ ],
10889
+ "additionalProperties": false
10890
+ }
10891
+ }
10892
+ }
10893
+ }
10894
+ ]
10895
+ }
10896
+ },
10897
+ "/clientState.set": {
10898
+ "post": {
10899
+ "operationId": "clientState.set",
10900
+ "tags": [
10901
+ "clientState"
10902
+ ],
10903
+ "responses": {
10904
+ "200": {
10905
+ "description": "Successful response",
10906
+ "content": {
10907
+ "application/json": {
10908
+ "schema": {
10909
+ "type": "object",
10910
+ "properties": {
10911
+ "result": {
10912
+ "type": "object",
10913
+ "properties": {
10914
+ "data": {
10915
+ "oneOf": [
10916
+ {
10917
+ "type": "object",
10918
+ "properties": {
10919
+ "ok": {
10920
+ "type": "boolean",
10921
+ "const": true
10922
+ },
10923
+ "entry": {
10924
+ "$ref": "#/components/schemas/ClientStateEntry"
10925
+ }
10926
+ },
10927
+ "required": [
10928
+ "ok",
10929
+ "entry"
10930
+ ],
10931
+ "additionalProperties": false
10932
+ },
10933
+ {
10934
+ "type": "object",
10935
+ "properties": {
10936
+ "ok": {
10937
+ "type": "boolean",
10938
+ "const": false
10939
+ },
10940
+ "entry": {
10941
+ "$ref": "#/components/schemas/ClientStateEntry"
10942
+ }
10943
+ },
10944
+ "required": [
10945
+ "ok",
10946
+ "entry"
10947
+ ],
10948
+ "additionalProperties": false
10949
+ }
10950
+ ],
10951
+ "discriminator": {
10952
+ "propertyName": "ok"
10953
+ }
10954
+ }
10955
+ },
10956
+ "required": [
10957
+ "data"
10958
+ ]
10959
+ }
10960
+ },
10961
+ "required": [
10962
+ "result"
10963
+ ]
10964
+ }
10965
+ }
10966
+ }
10967
+ },
10968
+ "default": {
10969
+ "$ref": "#/components/responses/Error"
10970
+ }
10971
+ },
10972
+ "requestBody": {
10973
+ "required": true,
10974
+ "content": {
10975
+ "application/json": {
10976
+ "schema": {
10977
+ "type": "object",
10978
+ "properties": {
10979
+ "key": {
10980
+ "type": "string"
10022
10981
  },
10023
- "required": [
10024
- "workspaceId"
10025
- ],
10026
- "additionalProperties": false
10027
- }
10982
+ "scope": {
10983
+ "type": "string",
10984
+ "enum": [
10985
+ "desktop",
10986
+ "mobile",
10987
+ "all"
10988
+ ]
10989
+ },
10990
+ "baseVersion": {
10991
+ "type": "number"
10992
+ },
10993
+ "clientId": {
10994
+ "type": "string"
10995
+ },
10996
+ "value": {}
10997
+ },
10998
+ "required": [
10999
+ "key",
11000
+ "scope",
11001
+ "baseVersion",
11002
+ "clientId"
11003
+ ],
11004
+ "additionalProperties": false
10028
11005
  }
10029
11006
  }
10030
11007
  }
10031
- ]
11008
+ }
10032
11009
  }
10033
11010
  },
10034
- "/panelFocus.set": {
11011
+ "/clientState.delete": {
10035
11012
  "post": {
10036
- "operationId": "panelFocus.set",
11013
+ "operationId": "clientState.delete",
10037
11014
  "tags": [
10038
- "panelFocus"
11015
+ "clientState"
10039
11016
  ],
10040
11017
  "responses": {
10041
11018
  "200": {
@@ -10049,16 +11026,45 @@
10049
11026
  "type": "object",
10050
11027
  "properties": {
10051
11028
  "data": {
10052
- "type": "object",
10053
- "properties": {
10054
- "ok": {
10055
- "type": "boolean"
11029
+ "oneOf": [
11030
+ {
11031
+ "type": "object",
11032
+ "properties": {
11033
+ "ok": {
11034
+ "type": "boolean",
11035
+ "const": true
11036
+ },
11037
+ "entry": {
11038
+ "$ref": "#/components/schemas/ClientStateEntry"
11039
+ }
11040
+ },
11041
+ "required": [
11042
+ "ok",
11043
+ "entry"
11044
+ ],
11045
+ "additionalProperties": false
11046
+ },
11047
+ {
11048
+ "type": "object",
11049
+ "properties": {
11050
+ "ok": {
11051
+ "type": "boolean",
11052
+ "const": false
11053
+ },
11054
+ "entry": {
11055
+ "$ref": "#/components/schemas/ClientStateEntry"
11056
+ }
11057
+ },
11058
+ "required": [
11059
+ "ok",
11060
+ "entry"
11061
+ ],
11062
+ "additionalProperties": false
10056
11063
  }
10057
- },
10058
- "required": [
10059
- "ok"
10060
11064
  ],
10061
- "additionalProperties": false
11065
+ "discriminator": {
11066
+ "propertyName": "ok"
11067
+ }
10062
11068
  }
10063
11069
  },
10064
11070
  "required": [
@@ -10084,25 +11090,29 @@
10084
11090
  "schema": {
10085
11091
  "type": "object",
10086
11092
  "properties": {
10087
- "workspaceId": {
11093
+ "key": {
10088
11094
  "type": "string"
10089
11095
  },
10090
- "panelType": {
11096
+ "scope": {
10091
11097
  "type": "string",
10092
11098
  "enum": [
10093
- "chat",
10094
- "terminal",
10095
- "browser"
11099
+ "desktop",
11100
+ "mobile",
11101
+ "all"
10096
11102
  ]
10097
11103
  },
10098
- "panelId": {
11104
+ "baseVersion": {
11105
+ "type": "number"
11106
+ },
11107
+ "clientId": {
10099
11108
  "type": "string"
10100
11109
  }
10101
11110
  },
10102
11111
  "required": [
10103
- "workspaceId",
10104
- "panelType",
10105
- "panelId"
11112
+ "key",
11113
+ "scope",
11114
+ "baseVersion",
11115
+ "clientId"
10106
11116
  ],
10107
11117
  "additionalProperties": false
10108
11118
  }
@@ -11082,33 +12092,269 @@
11082
12092
  "cacheReadTokens": {
11083
12093
  "type": "number"
11084
12094
  },
11085
- "cacheCreationTokens": {
11086
- "type": "number"
12095
+ "cacheCreationTokens": {
12096
+ "type": "number"
12097
+ },
12098
+ "reasoningOutputTokens": {
12099
+ "type": "number"
12100
+ },
12101
+ "totalTokens": {
12102
+ "type": "number"
12103
+ },
12104
+ "costUsd": {
12105
+ "type": "number"
12106
+ },
12107
+ "sessionCount": {
12108
+ "type": "number",
12109
+ "description": "Distinct sessions contributing to this row. Sessions are the\nprovider-native unit (one chat thread per Claude/Codex/OpenCode\nsession id) — meaningful for both Band-driven turns and\nscanner-backfilled CLI sessions. The earlier \"taskCount\" using\n`task_id` was meaningless for disk-scanned rows because the\nscanner writes them with an empty task_id (no Band task), so\nCOUNT DISTINCT would just count `\"\"` as 1."
12110
+ }
12111
+ },
12112
+ "required": [
12113
+ "bucket",
12114
+ "inputTokens",
12115
+ "outputTokens",
12116
+ "cacheReadTokens",
12117
+ "cacheCreationTokens",
12118
+ "reasoningOutputTokens",
12119
+ "totalTokens",
12120
+ "costUsd",
12121
+ "sessionCount"
12122
+ ],
12123
+ "additionalProperties": false
12124
+ },
12125
+ "PluginInfo": {
12126
+ "type": "object",
12127
+ "properties": {
12128
+ "id": {
12129
+ "type": "string"
12130
+ },
12131
+ "name": {
12132
+ "type": "string"
12133
+ },
12134
+ "version": {
12135
+ "type": "string"
12136
+ },
12137
+ "status": {
12138
+ "type": "string",
12139
+ "enum": [
12140
+ "active",
12141
+ "inactive",
12142
+ "disabled",
12143
+ "errored"
12144
+ ]
12145
+ },
12146
+ "error": {
12147
+ "type": [
12148
+ "string",
12149
+ "null"
12150
+ ],
12151
+ "description": "The last activation error, when `status` is `errored`."
12152
+ },
12153
+ "slots": {
12154
+ "type": "array",
12155
+ "items": {
12156
+ "type": "string",
12157
+ "const": "workspace.sideTabs"
12158
+ }
12159
+ }
12160
+ },
12161
+ "required": [
12162
+ "id",
12163
+ "name",
12164
+ "version",
12165
+ "status",
12166
+ "error",
12167
+ "slots"
12168
+ ],
12169
+ "additionalProperties": false
12170
+ },
12171
+ "RepoInfo": {
12172
+ "type": "object",
12173
+ "properties": {
12174
+ "host": {
12175
+ "type": "string"
12176
+ },
12177
+ "owner": {
12178
+ "type": "string"
12179
+ },
12180
+ "repo": {
12181
+ "type": "string"
12182
+ }
12183
+ },
12184
+ "required": [
12185
+ "host",
12186
+ "owner",
12187
+ "repo"
12188
+ ],
12189
+ "additionalProperties": false
12190
+ },
12191
+ "ReviewInfo": {
12192
+ "type": "object",
12193
+ "properties": {
12194
+ "number": {
12195
+ "type": "number"
12196
+ },
12197
+ "url": {
12198
+ "type": "string"
12199
+ },
12200
+ "title": {
12201
+ "type": "string"
12202
+ },
12203
+ "state": {
12204
+ "type": "string",
12205
+ "enum": [
12206
+ "open",
12207
+ "draft",
12208
+ "merged",
12209
+ "closed"
12210
+ ]
12211
+ },
12212
+ "updatedAt": {
12213
+ "type": "string"
12214
+ },
12215
+ "reviewDecision": {
12216
+ "type": [
12217
+ "string",
12218
+ "null"
12219
+ ],
12220
+ "enum": [
12221
+ "approved",
12222
+ "changes_requested",
12223
+ "review_required"
12224
+ ]
12225
+ },
12226
+ "mergeState": {
12227
+ "type": "string",
12228
+ "enum": [
12229
+ "dirty",
12230
+ "unknown",
12231
+ "draft",
12232
+ "clean",
12233
+ "unstable",
12234
+ "has_hooks",
12235
+ "blocked",
12236
+ "behind"
12237
+ ],
12238
+ "description": "Whether the review can merge now, and if not, why."
12239
+ },
12240
+ "checks": {
12241
+ "$ref": "#/components/schemas/ChecksReport"
12242
+ }
12243
+ },
12244
+ "required": [
12245
+ "number",
12246
+ "url",
12247
+ "title",
12248
+ "state",
12249
+ "updatedAt",
12250
+ "reviewDecision",
12251
+ "mergeState",
12252
+ "checks"
12253
+ ],
12254
+ "additionalProperties": false
12255
+ },
12256
+ "ChecksReport": {
12257
+ "type": "object",
12258
+ "properties": {
12259
+ "state": {
12260
+ "type": "string",
12261
+ "enum": [
12262
+ "running",
12263
+ "cancelled",
12264
+ "success",
12265
+ "failure",
12266
+ "pending",
12267
+ "none"
12268
+ ],
12269
+ "description": "The overall state of a set of checks. `none` means there are no checks."
12270
+ },
12271
+ "headSha": {
12272
+ "type": [
12273
+ "string",
12274
+ "null"
12275
+ ],
12276
+ "description": "The commit the checks ran on."
12277
+ },
12278
+ "checks": {
12279
+ "type": "array",
12280
+ "items": {
12281
+ "$ref": "#/components/schemas/CheckRun"
12282
+ }
12283
+ }
12284
+ },
12285
+ "required": [
12286
+ "state",
12287
+ "headSha",
12288
+ "checks"
12289
+ ],
12290
+ "additionalProperties": false
12291
+ },
12292
+ "CheckRun": {
12293
+ "type": "object",
12294
+ "properties": {
12295
+ "id": {
12296
+ "type": "string",
12297
+ "description": "Stable within one report, for list keys."
12298
+ },
12299
+ "name": {
12300
+ "type": "string"
12301
+ },
12302
+ "workflowName": {
12303
+ "type": [
12304
+ "string",
12305
+ "null"
12306
+ ],
12307
+ "description": "The CI workflow that ran the job, when the check came from one."
11087
12308
  },
11088
- "reasoningOutputTokens": {
11089
- "type": "number"
12309
+ "state": {
12310
+ "type": "string",
12311
+ "enum": [
12312
+ "running",
12313
+ "cancelled",
12314
+ "success",
12315
+ "failure",
12316
+ "pending",
12317
+ "skipped",
12318
+ "neutral"
12319
+ ],
12320
+ "description": "The state of one check or CI job."
11090
12321
  },
11091
- "totalTokens": {
11092
- "type": "number"
12322
+ "url": {
12323
+ "type": [
12324
+ "string",
12325
+ "null"
12326
+ ],
12327
+ "description": "The job's page on the forge."
11093
12328
  },
11094
- "costUsd": {
11095
- "type": "number"
12329
+ "startedAt": {
12330
+ "type": [
12331
+ "string",
12332
+ "null"
12333
+ ]
11096
12334
  },
11097
- "sessionCount": {
11098
- "type": "number",
11099
- "description": "Distinct sessions contributing to this row. Sessions are the\nprovider-native unit (one chat thread per Claude/Codex/OpenCode\nsession id) — meaningful for both Band-driven turns and\nscanner-backfilled CLI sessions. The earlier \"taskCount\" using\n`task_id` was meaningless for disk-scanned rows because the\nscanner writes them with an empty task_id (no Band task), so\nCOUNT DISTINCT would just count `\"\"` as 1."
12335
+ "completedAt": {
12336
+ "type": [
12337
+ "string",
12338
+ "null"
12339
+ ]
12340
+ },
12341
+ "description": {
12342
+ "type": [
12343
+ "string",
12344
+ "null"
12345
+ ],
12346
+ "description": "A one-line result, e.g. a check run's title or a commit status description."
11100
12347
  }
11101
12348
  },
11102
12349
  "required": [
11103
- "bucket",
11104
- "inputTokens",
11105
- "outputTokens",
11106
- "cacheReadTokens",
11107
- "cacheCreationTokens",
11108
- "reasoningOutputTokens",
11109
- "totalTokens",
11110
- "costUsd",
11111
- "sessionCount"
12350
+ "id",
12351
+ "name",
12352
+ "workflowName",
12353
+ "state",
12354
+ "url",
12355
+ "startedAt",
12356
+ "completedAt",
12357
+ "description"
11112
12358
  ],
11113
12359
  "additionalProperties": false
11114
12360
  },
@@ -11232,6 +12478,33 @@
11232
12478
  },
11233
12479
  "additionalProperties": {},
11234
12480
  "description": "CLI-scoped preferences (issue #551). Today only `defaultVia` is\nrecognized — the user-level fallback for `band workspaces create\n--prompt` dispatch when no `--via` flag, `BAND_DISPATCH` env var,\nor repo `.band/config.json` value is set."
12481
+ },
12482
+ "agents": {
12483
+ "type": "object",
12484
+ "properties": {
12485
+ "defaultMode": {
12486
+ "type": "string",
12487
+ "enum": [
12488
+ "gui",
12489
+ "tui"
12490
+ ]
12491
+ }
12492
+ },
12493
+ "additionalProperties": {},
12494
+ "description": "Agent preferences (issue #682). `defaultMode` is how an agent session\nstarts when the caller sends no mode: `gui` in a chat pane, `tui` as the\nagent's CLI in a terminal. Browsers keep their own per-device mode and\nalways send it, so this applies to the CLI, cronjobs and MCP. Replaces\n`cli.defaultVia`, which boot migrates once."
12495
+ },
12496
+ "plugins": {
12497
+ "type": "object",
12498
+ "properties": {
12499
+ "disabled": {
12500
+ "type": "array",
12501
+ "items": {
12502
+ "type": "string"
12503
+ }
12504
+ }
12505
+ },
12506
+ "additionalProperties": {},
12507
+ "description": "Bundled plugins (`plugins/<id>/`). A plugin whose id is in `disabled`\nnever activates and its UI is hidden. Read once at boot."
11235
12508
  }
11236
12509
  },
11237
12510
  "additionalProperties": {}
@@ -11740,38 +13013,127 @@
11740
13013
  ],
11741
13014
  "additionalProperties": false
11742
13015
  },
11743
- "DiffSummaryResult": {
13016
+ "ChangesResult": {
11744
13017
  "type": "object",
11745
13018
  "properties": {
11746
- "stats": {
11747
- "$ref": "#/components/schemas/DiffStats"
11748
- },
11749
- "compareBranch": {
13019
+ "headBranch": {
11750
13020
  "type": "string"
11751
13021
  },
11752
13022
  "defaultBranch": {
11753
13023
  "type": "string"
11754
13024
  },
11755
- "headBranch": {
11756
- "type": "string"
13025
+ "compareBranch": {
13026
+ "type": "string",
13027
+ "description": "The branch the `branch` section compares against."
11757
13028
  },
11758
- "fileStatuses": {
11759
- "type": "object",
11760
- "additionalProperties": {
11761
- "type": "string"
13029
+ "mergeBase": {
13030
+ "type": [
13031
+ "string",
13032
+ "null"
13033
+ ],
13034
+ "description": "Where HEAD forked from `compareBranch`; null unless `branchStatus` is ready."
13035
+ },
13036
+ "branchStatus": {
13037
+ "type": "string",
13038
+ "enum": [
13039
+ "ready",
13040
+ "invalid-base",
13041
+ "no-merge-base",
13042
+ "unborn-head"
13043
+ ],
13044
+ "description": "Why the `branch` section is empty when it isn't `ready`: the compare\nbranch doesn't resolve (`invalid-base`), it shares no history with HEAD\n(`no-merge-base`), or there are no commits yet (`unborn-head`)."
13045
+ },
13046
+ "conflicts": {
13047
+ "type": "array",
13048
+ "items": {
13049
+ "$ref": "#/components/schemas/ChangeEntry"
11762
13050
  }
11763
13051
  },
11764
- "mergeBase": {
11765
- "type": "string"
13052
+ "unstaged": {
13053
+ "type": "array",
13054
+ "items": {
13055
+ "$ref": "#/components/schemas/ChangeEntry"
13056
+ }
13057
+ },
13058
+ "staged": {
13059
+ "type": "array",
13060
+ "items": {
13061
+ "$ref": "#/components/schemas/ChangeEntry"
13062
+ }
13063
+ },
13064
+ "untracked": {
13065
+ "type": "array",
13066
+ "items": {
13067
+ "$ref": "#/components/schemas/ChangeEntry"
13068
+ }
13069
+ },
13070
+ "branch": {
13071
+ "type": "array",
13072
+ "items": {
13073
+ "$ref": "#/components/schemas/ChangeEntry"
13074
+ }
11766
13075
  }
11767
13076
  },
11768
13077
  "required": [
11769
- "stats",
11770
- "compareBranch",
11771
- "defaultBranch",
11772
13078
  "headBranch",
11773
- "fileStatuses",
11774
- "mergeBase"
13079
+ "defaultBranch",
13080
+ "compareBranch",
13081
+ "mergeBase",
13082
+ "branchStatus",
13083
+ "conflicts",
13084
+ "unstaged",
13085
+ "staged",
13086
+ "untracked",
13087
+ "branch"
13088
+ ],
13089
+ "additionalProperties": false
13090
+ },
13091
+ "ChangeEntry": {
13092
+ "type": "object",
13093
+ "properties": {
13094
+ "path": {
13095
+ "type": "string"
13096
+ },
13097
+ "oldPath": {
13098
+ "type": "string",
13099
+ "description": "The path before a rename or copy."
13100
+ },
13101
+ "status": {
13102
+ "type": "string",
13103
+ "enum": [
13104
+ "A",
13105
+ "M",
13106
+ "D",
13107
+ "R",
13108
+ "C",
13109
+ "U"
13110
+ ],
13111
+ "description": "`A`dded, `M`odified, `D`eleted, `R`enamed, `C`opied, `U`ntracked."
13112
+ },
13113
+ "additions": {
13114
+ "type": "number",
13115
+ "description": "Lines added / deleted; unset for binary files."
13116
+ },
13117
+ "deletions": {
13118
+ "type": "number"
13119
+ },
13120
+ "conflict": {
13121
+ "type": "string",
13122
+ "enum": [
13123
+ "both_modified",
13124
+ "both_added",
13125
+ "both_deleted",
13126
+ "added_by_us",
13127
+ "added_by_them",
13128
+ "deleted_by_us",
13129
+ "deleted_by_them"
13130
+ ],
13131
+ "description": "Set on `conflicts` entries only."
13132
+ }
13133
+ },
13134
+ "required": [
13135
+ "path",
13136
+ "status"
11775
13137
  ],
11776
13138
  "additionalProperties": false
11777
13139
  },
@@ -12507,6 +13869,107 @@
12507
13869
  ],
12508
13870
  "additionalProperties": false
12509
13871
  },
13872
+ "AgentSessionRecord": {
13873
+ "type": "object",
13874
+ "properties": {
13875
+ "id": {
13876
+ "type": "string"
13877
+ },
13878
+ "workspaceId": {
13879
+ "type": "string"
13880
+ },
13881
+ "agentDefinitionId": {
13882
+ "type": "string"
13883
+ },
13884
+ "providerSessionId": {
13885
+ "type": [
13886
+ "string",
13887
+ "null"
13888
+ ],
13889
+ "description": "The agent's own session id (e.g. Claude's `session_id`), null until known."
13890
+ },
13891
+ "mode": {
13892
+ "type": "string",
13893
+ "enum": [
13894
+ "gui",
13895
+ "tui"
13896
+ ],
13897
+ "description": "Agent session types shared by the server and the dashboard (issue #682).\n\nAn agent session is one run of a coding agent. Its `mode` says how it is\ndisplayed: `gui` in a chat pane, `tui` as the agent's CLI in a terminal.\nThe mode is fixed for the life of the session."
13898
+ },
13899
+ "chatId": {
13900
+ "type": [
13901
+ "string",
13902
+ "null"
13903
+ ],
13904
+ "description": "Set for `gui` sessions."
13905
+ },
13906
+ "terminalId": {
13907
+ "type": [
13908
+ "string",
13909
+ "null"
13910
+ ],
13911
+ "description": "Set for `tui` sessions."
13912
+ },
13913
+ "state": {
13914
+ "type": "string",
13915
+ "enum": [
13916
+ "running",
13917
+ "starting",
13918
+ "ended"
13919
+ ]
13920
+ },
13921
+ "createdAt": {
13922
+ "type": "number"
13923
+ },
13924
+ "updatedAt": {
13925
+ "type": "number"
13926
+ }
13927
+ },
13928
+ "required": [
13929
+ "id",
13930
+ "workspaceId",
13931
+ "agentDefinitionId",
13932
+ "providerSessionId",
13933
+ "mode",
13934
+ "chatId",
13935
+ "terminalId",
13936
+ "state",
13937
+ "createdAt",
13938
+ "updatedAt"
13939
+ ],
13940
+ "additionalProperties": false
13941
+ },
13942
+ "result": {
13943
+ "type": "object",
13944
+ "properties": {
13945
+ "agentSession": {
13946
+ "$ref": "#/components/schemas/AgentSessionRecord"
13947
+ },
13948
+ "mode": {
13949
+ "type": "string",
13950
+ "enum": [
13951
+ "gui",
13952
+ "tui"
13953
+ ],
13954
+ "description": "Agent session types shared by the server and the dashboard (issue #682).\n\nAn agent session is one run of a coding agent. Its `mode` says how it is\ndisplayed: `gui` in a chat pane, `tui` as the agent's CLI in a terminal.\nThe mode is fixed for the life of the session."
13955
+ },
13956
+ "chatId": {
13957
+ "type": "string"
13958
+ },
13959
+ "terminalId": {
13960
+ "type": "string"
13961
+ },
13962
+ "notice": {
13963
+ "type": "string",
13964
+ "description": "Why the requested mode wasn't used, e.g. an agent without a TUI invocation."
13965
+ }
13966
+ },
13967
+ "required": [
13968
+ "agentSession",
13969
+ "mode"
13970
+ ],
13971
+ "additionalProperties": false
13972
+ },
12510
13973
  "BrowserRow": {
12511
13974
  "type": "object",
12512
13975
  "properties": {
@@ -12591,6 +14054,49 @@
12591
14054
  },
12592
14055
  "additionalProperties": false
12593
14056
  },
14057
+ "ClientStateEntry": {
14058
+ "type": "object",
14059
+ "properties": {
14060
+ "key": {
14061
+ "type": "string"
14062
+ },
14063
+ "scope": {
14064
+ "type": "string",
14065
+ "enum": [
14066
+ "desktop",
14067
+ "mobile",
14068
+ "all"
14069
+ ],
14070
+ "description": "Client-state types shared by the server and the dashboard.\n\nClient state is small UI state (open center tabs, panel widths, drafts, …)\nthat the dashboard keeps on the Band server so every device shows the same\nthing. Each entry has a scope: `all` is one value for every device, and\n`desktop` / `mobile` hold a separate value per device type.\n\nEvery write names the version it was based on. The server refuses a write\nwhose base is not the current version, so a client that missed another\ndevice's change (offline, reconnecting) can never overwrite it."
14071
+ },
14072
+ "workspaceId": {
14073
+ "type": [
14074
+ "string",
14075
+ "null"
14076
+ ],
14077
+ "description": "The workspace the key belongs to, or null for a global key."
14078
+ },
14079
+ "value": {
14080
+ "description": "The stored JSON value, or null once the key has been deleted."
14081
+ },
14082
+ "version": {
14083
+ "type": "number",
14084
+ "description": "Starts at 1 and goes up by one on every write, including a delete."
14085
+ },
14086
+ "updatedAt": {
14087
+ "type": "number"
14088
+ }
14089
+ },
14090
+ "required": [
14091
+ "key",
14092
+ "scope",
14093
+ "workspaceId",
14094
+ "value",
14095
+ "version",
14096
+ "updatedAt"
14097
+ ],
14098
+ "additionalProperties": false
14099
+ },
12594
14100
  "SubmitResult": {
12595
14101
  "type": "object",
12596
14102
  "properties": {