@band-app/server 0.32.0 → 0.33.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 (147) hide show
  1. package/dist/client/assets/{TerminalPanel-CSIo5ni0.js → TerminalPanel-CyltRZLD.js} +1 -1
  2. package/dist/client/assets/{_basePickBy-CdaZY6mI.js → _basePickBy-Dl99bUuK.js} +1 -1
  3. package/dist/client/assets/{_baseUniq-Cbf2JylA.js → _baseUniq-xYPKjKRI.js} +1 -1
  4. package/dist/client/assets/{arc-93kXHiVA.js → arc-L0FqLNvl.js} +1 -1
  5. package/dist/client/assets/{architectureDiagram-VXUJARFQ-mXd7ilfO.js → architectureDiagram-VXUJARFQ-sxFQR6t8.js} +1 -1
  6. package/dist/client/assets/{blockDiagram-VD42YOAC-DpjfCZDe.js → blockDiagram-VD42YOAC-CKyryScy.js} +1 -1
  7. package/dist/client/assets/{c4Diagram-YG6GDRKO-D17zktyo.js → c4Diagram-YG6GDRKO-CKkLibM6.js} +1 -1
  8. package/dist/client/assets/channel-CnUqAM2K.js +1 -0
  9. package/dist/client/assets/{chunk-4BX2VUAB-UK3Q89L4.js → chunk-4BX2VUAB-B2Q5eiyh.js} +1 -1
  10. package/dist/client/assets/{chunk-55IACEB6-DOnNiKCE.js → chunk-55IACEB6-Bx7ppH1E.js} +1 -1
  11. package/dist/client/assets/{chunk-B4BG7PRW-RuY3pvrs.js → chunk-B4BG7PRW-z63abbDt.js} +1 -1
  12. package/dist/client/assets/{chunk-DI55MBZ5-CLkaHQD0.js → chunk-DI55MBZ5-CVuxJX-G.js} +1 -1
  13. package/dist/client/assets/{chunk-FMBD7UC4-B2_FpfY1.js → chunk-FMBD7UC4-C4mR-Kqh.js} +1 -1
  14. package/dist/client/assets/{chunk-QN33PNHL-BJ5cRImN.js → chunk-QN33PNHL-DC9EuvVO.js} +1 -1
  15. package/dist/client/assets/{chunk-QZHKN3VN-DWhBc9Ty.js → chunk-QZHKN3VN-BVfYPmR6.js} +1 -1
  16. package/dist/client/assets/{chunk-TZMSLE5B-C6dn9jrV.js → chunk-TZMSLE5B-BERfyjOQ.js} +1 -1
  17. package/dist/client/assets/classDiagram-2ON5EDUG-Bl2ARqSW.js +1 -0
  18. package/dist/client/assets/classDiagram-v2-WZHVMYZB-Bl2ARqSW.js +1 -0
  19. package/dist/client/assets/clone-DoC0Yowh.js +1 -0
  20. package/dist/client/assets/{cose-bilkent-S5V4N54A-CApk1lUu.js → cose-bilkent-S5V4N54A-CKYh86Nn.js} +1 -1
  21. package/dist/client/assets/{dagre-6UL2VRFP-BmLALXZu.js → dagre-6UL2VRFP-CHXYsbsT.js} +1 -1
  22. package/dist/client/assets/{diagram-PSM6KHXK-C2cPLLkQ.js → diagram-PSM6KHXK-BgTabbUt.js} +1 -1
  23. package/dist/client/assets/{diagram-QEK2KX5R-vmbBSzsB.js → diagram-QEK2KX5R-DGko5nSx.js} +1 -1
  24. package/dist/client/assets/{diagram-S2PKOQOG-RgcJYL9S.js → diagram-S2PKOQOG-CE06Gb7p.js} +1 -1
  25. package/dist/client/assets/{erDiagram-Q2GNP2WA-CpoxBAoy.js → erDiagram-Q2GNP2WA-DRAdXF3c.js} +1 -1
  26. package/dist/client/assets/{flowDiagram-NV44I4VS-DxnlkHRY.js → flowDiagram-NV44I4VS-DMdYos4M.js} +1 -1
  27. package/dist/client/assets/{ganttDiagram-JELNMOA3-DsnoA6Bi.js → ganttDiagram-JELNMOA3-B1hq9zyH.js} +1 -1
  28. package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-CRGiaUIP.js → gitGraphDiagram-V2S2FVAM-BX_eqyqV.js} +1 -1
  29. package/dist/client/assets/{graph-B0pjD7JO.js → graph-B1pXNJmu.js} +1 -1
  30. package/dist/client/assets/{highlighted-body-B3W2YXNL-B-sBG2bX.js → highlighted-body-B3W2YXNL-xpTIV5H4.js} +1 -1
  31. package/dist/client/assets/{index-C08rV2E6.js → index-61SgNErm.js} +1 -1
  32. package/dist/client/assets/{index-TNsDOp6e.js → index-67ml7mn1.js} +1 -1
  33. package/dist/client/assets/{index-DoBYcXmW.js → index-BAlyKPeT.js} +1 -1
  34. package/dist/client/assets/{index-BuhLC7zE.js → index-BD37kyMP.js} +1 -1
  35. package/dist/client/assets/{index-CrCMXmx8.js → index-BHygUCeT.js} +1 -1
  36. package/dist/client/assets/{index-ftqQmu5s.js → index-BYm6dlG5.js} +1 -1
  37. package/dist/client/assets/{index-U5JB6u6d.js → index-CWczZ7eS.js} +1 -1
  38. package/dist/client/assets/{index-DHizjwkP.js → index-CoSFZPv4.js} +1 -1
  39. package/dist/client/assets/{index-2xKJ9Khi.js → index-DNX82GPp.js} +1 -1
  40. package/dist/client/assets/{index-C5lac708.js → index-DUaIvPpT.js} +1 -1
  41. package/dist/client/assets/{index-THSuS9sd.js → index-Dm9xRcT9.js} +1 -1
  42. package/dist/client/assets/{index-sHvOWbSE.js → index-Do4DO4E-.js} +1 -1
  43. package/dist/client/assets/{index-Ct8NuxSL.js → index-Mpl66MhJ.js} +1 -1
  44. package/dist/client/assets/{infoDiagram-HS3SLOUP-CRp6iT8d.js → infoDiagram-HS3SLOUP-DHAIDbZu.js} +1 -1
  45. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-BQ2WA6b4.js → journeyDiagram-XKPGCS4Q-BJHZIWhu.js} +1 -1
  46. package/dist/client/assets/{kanban-definition-3W4ZIXB7-D-VXNhIi.js → kanban-definition-3W4ZIXB7-_qzn6_ii.js} +1 -1
  47. package/dist/client/assets/{layout-DqRyDMTL.js → layout-CksxJldr.js} +1 -1
  48. package/dist/client/assets/main-D4u0xEOA.css +1 -0
  49. package/dist/client/assets/{main-CsKfm_iE.js → main-FnYu011V.js} +239 -236
  50. package/dist/client/assets/{mindmap-definition-VGOIOE7T-DF_KVmYJ.js → mindmap-definition-VGOIOE7T-Deop3o-V.js} +1 -1
  51. package/dist/client/assets/{pieDiagram-ADFJNKIX-X9Gpsupa.js → pieDiagram-ADFJNKIX-d4k56ZYA.js} +1 -1
  52. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-Dv43A6Kl.js → quadrantDiagram-AYHSOK5B-CBA2J09q.js} +1 -1
  53. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-Bsm1ID8v.js → requirementDiagram-UZGBJVZJ-C6Nnujg6.js} +1 -1
  54. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-C89ZzNUa.js → sankeyDiagram-TZEHDZUN-CPfLLuk9.js} +1 -1
  55. package/dist/client/assets/{sequenceDiagram-WL72ISMW-DCEzHjMR.js → sequenceDiagram-WL72ISMW-C_OY-5TF.js} +1 -1
  56. package/dist/client/assets/{stateDiagram-FKZM4ZOC-DL_-FpOq.js → stateDiagram-FKZM4ZOC-CeuP4CjM.js} +1 -1
  57. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-B9BH2TF6.js +1 -0
  58. package/dist/client/assets/{timeline-definition-IT6M3QCI-BklAlKxM.js → timeline-definition-IT6M3QCI-CL_Rmapn.js} +1 -1
  59. package/dist/client/assets/{treemap-GDKQZRPO-DugwR-ad.js → treemap-GDKQZRPO-2uvsx2LQ.js} +1 -1
  60. package/dist/client/assets/workspace._workspaceId-D3mRY9_6.js +1 -0
  61. package/dist/client/assets/{workspace._workspaceId-CvpowXC8.js → workspace._workspaceId-DF3JNMRG.js} +1 -1
  62. package/dist/client/assets/{xychartDiagram-PRI3JC2R-DEyS0s6m.js → xychartDiagram-PRI3JC2R-5Pzm62mv.js} +1 -1
  63. package/dist/migrations/20260927123820_agent_sessions/migration.sql +16 -0
  64. package/dist/migrations/20260927123820_agent_sessions/snapshot.json +1675 -0
  65. package/dist/openapi.json +823 -213
  66. package/dist/server/assets/{TerminalPanel-BVyQf1VK.js → TerminalPanel-DMTU2FMX.js} +1 -1
  67. package/dist/server/assets/{_basePickBy-DRh75DZA.js → _basePickBy-CMTHAoTW.js} +2 -2
  68. package/dist/server/assets/{_baseUniq-DxwDPh9u.js → _baseUniq-DkG_FLLk.js} +1 -1
  69. package/dist/server/assets/_tanstack-start-manifest_v-cBOqdEgL.js +4 -0
  70. package/dist/server/assets/{arc-d221pGej.js → arc-CSj375cS.js} +1 -1
  71. package/dist/server/assets/{architecture-7HQA4BMR-CDuqFHS1.js → architecture-7HQA4BMR-MwhJw22a.js} +6 -6
  72. package/dist/server/assets/{architectureDiagram-VXUJARFQ-LivVdR2U.js → architectureDiagram-VXUJARFQ-DyVVxp88.js} +6 -6
  73. package/dist/server/assets/{blockDiagram-VD42YOAC-Cpsga8jz.js → blockDiagram-VD42YOAC-aGbi3Kv_.js} +6 -6
  74. package/dist/server/assets/{c4Diagram-YG6GDRKO-CR3dewU0.js → c4Diagram-YG6GDRKO-DhyUvqPs.js} +2 -2
  75. package/dist/server/assets/{channel-CznEvUJx.js → channel-CJthnbp1.js} +1 -1
  76. package/dist/server/assets/{chunk-4BX2VUAB-2XGKksov.js → chunk-4BX2VUAB-Ch7bkquC.js} +1 -1
  77. package/dist/server/assets/{chunk-55IACEB6-D_sfF6RU.js → chunk-55IACEB6-CLKopZj8.js} +1 -1
  78. package/dist/server/assets/{chunk-B4BG7PRW-DE9YZpuI.js → chunk-B4BG7PRW-BVv_KeWC.js} +4 -4
  79. package/dist/server/assets/{chunk-DI55MBZ5-1WmBcjv0.js → chunk-DI55MBZ5-C0_HSk1s.js} +3 -3
  80. package/dist/server/assets/{chunk-FMBD7UC4-0hzwdviV.js → chunk-FMBD7UC4-3fy4TSVt.js} +1 -1
  81. package/dist/server/assets/{chunk-QN33PNHL-sglY-9R6.js → chunk-QN33PNHL-QdSQZPQz.js} +1 -1
  82. package/dist/server/assets/{chunk-QZHKN3VN-BL0yO15_.js → chunk-QZHKN3VN-Dak-YXr5.js} +1 -1
  83. package/dist/server/assets/{chunk-TZMSLE5B-CRCOAzqG.js → chunk-TZMSLE5B-ThSW8afd.js} +1 -1
  84. package/dist/server/assets/{classDiagram-v2-WZHVMYZB-GVVGcmAY.js → classDiagram-2ON5EDUG-Cmkciu-2.js} +5 -5
  85. package/dist/server/assets/{classDiagram-2ON5EDUG-GVVGcmAY.js → classDiagram-v2-WZHVMYZB-Cmkciu-2.js} +5 -5
  86. package/dist/server/assets/{clone-Cw9PiOA8.js → clone-ciZ96ZK2.js} +1 -1
  87. package/dist/server/assets/{cose-bilkent-S5V4N54A-xdF6iXS1.js → cose-bilkent-S5V4N54A-CP20--8W.js} +1 -1
  88. package/dist/server/assets/{dagre-6UL2VRFP-ZMimZN6M.js → dagre-6UL2VRFP-D9LrmNJH.js} +6 -6
  89. package/dist/server/assets/{diagram-PSM6KHXK-AtdXKese.js → diagram-PSM6KHXK-l3xztHYH.js} +7 -7
  90. package/dist/server/assets/{diagram-QEK2KX5R-to1VE7Ky.js → diagram-QEK2KX5R-i9twZ5aj.js} +6 -6
  91. package/dist/server/assets/{diagram-S2PKOQOG-lJFLwEPR.js → diagram-S2PKOQOG-DIHmhvbo.js} +6 -6
  92. package/dist/server/assets/{erDiagram-Q2GNP2WA-CbevyytQ.js → erDiagram-Q2GNP2WA-fMWrL8ta.js} +4 -4
  93. package/dist/server/assets/{flowDiagram-NV44I4VS-DTd0gkkY.js → flowDiagram-NV44I4VS-BqKFb2gL.js} +5 -5
  94. package/dist/server/assets/{ganttDiagram-JELNMOA3-YwmrEI5N.js → ganttDiagram-JELNMOA3-XwScweUm.js} +1 -1
  95. package/dist/server/assets/{gitGraph-G5XIXVHT-BArDd0OC.js → gitGraph-G5XIXVHT-DDO_mRkl.js} +6 -6
  96. package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-BTThcyM8.js → gitGraphDiagram-V2S2FVAM-B2e2LaZt.js} +7 -7
  97. package/dist/server/assets/{graph-BOO01qmU.js → graph-DqF0fiyC.js} +2 -2
  98. package/dist/server/assets/{highlighted-body-B3W2YXNL-Cym8kCCk.js → highlighted-body-B3W2YXNL-B9lH9lqG.js} +1 -1
  99. package/dist/server/assets/{index-CsHpsK-4.js → index-BFzH6uNZ.js} +1 -1
  100. package/dist/server/assets/{index-3bt1s3HG.js → index-BRPRiIzs.js} +1 -1
  101. package/dist/server/assets/{index-CaFux-EA.js → index-BZSpvQ87.js} +1 -1
  102. package/dist/server/assets/{index-DX1Ugorr.js → index-BuxMoI9R.js} +1 -1
  103. package/dist/server/assets/{index-Z7BJHwYS.js → index-C0T5sHCj.js} +1 -1
  104. package/dist/server/assets/{index-DZfyQWn7.js → index-C35Eg9Oe.js} +1 -1
  105. package/dist/server/assets/{index-DVBTKosE.js → index-C4LlK8zq.js} +1 -1
  106. package/dist/server/assets/{index-caXQk3Nh.js → index-Cz3ed2GU.js} +1 -1
  107. package/dist/server/assets/{index-CQd5Q7Kt.js → index-Oepbj3Cu.js} +1 -1
  108. package/dist/server/assets/{index-BQaiSrqT.js → index-QY-ciJ02.js} +1 -1
  109. package/dist/server/assets/{index-Ckc3EtXO.js → index-dOV5Jyvk.js} +1 -1
  110. package/dist/server/assets/{index-7I7gBKIT.js → index-iLqcyvvo.js} +1 -1
  111. package/dist/server/assets/{index-CBT9vLeO.js → index-ihiIN7Vo.js} +1 -1
  112. package/dist/server/assets/{info-VBDWY6EO-D4lcUmb_.js → info-VBDWY6EO-BSfwYSKN.js} +6 -6
  113. package/dist/server/assets/{infoDiagram-HS3SLOUP-C1ai--xt.js → infoDiagram-HS3SLOUP-BcPNSucE.js} +5 -5
  114. package/dist/server/assets/{journeyDiagram-XKPGCS4Q-qel6lxPz.js → journeyDiagram-XKPGCS4Q-B_JljIi2.js} +4 -4
  115. package/dist/server/assets/{kanban-definition-3W4ZIXB7-BQPKgoP_.js → kanban-definition-3W4ZIXB7-B5aPUZvg.js} +2 -2
  116. package/dist/server/assets/{layout-D_wAQ9pE.js → layout-Cv2BYqNX.js} +4 -4
  117. package/dist/server/assets/{mermaid-3ZIDBTTL-CtNgetEO.js → mermaid-3ZIDBTTL-D_akVRms.js} +1 -1
  118. package/dist/server/assets/{mermaid-parser.core-BwjOeEsU.js → mermaid-parser.core-uDeqwrPN.js} +11 -11
  119. package/dist/server/assets/{mindmap-definition-VGOIOE7T-DYdatMwP.js → mindmap-definition-VGOIOE7T-C9LF9XTT.js} +3 -3
  120. package/dist/server/assets/{packet-DYOGHKS2-_TbN3RWI.js → packet-DYOGHKS2-lRBX1T35.js} +6 -6
  121. package/dist/server/assets/{pie-VRWISCQL-D9Z5k3qi.js → pie-VRWISCQL-BCZ9vmsj.js} +6 -6
  122. package/dist/server/assets/{pieDiagram-ADFJNKIX-COmj-G7F.js → pieDiagram-ADFJNKIX-HYsm0km8.js} +7 -7
  123. package/dist/server/assets/{quadrantDiagram-AYHSOK5B-BajsyCAd.js → quadrantDiagram-AYHSOK5B-Fdzz2j2T.js} +1 -1
  124. package/dist/server/assets/{radar-ZZBFDIW7-DLipfn_u.js → radar-ZZBFDIW7-iZ-6xOx9.js} +6 -6
  125. package/dist/server/assets/{requirementDiagram-UZGBJVZJ-BGEkpdbY.js → requirementDiagram-UZGBJVZJ-CeHGAs1A.js} +3 -3
  126. package/dist/server/assets/{router-Dpb0Z442.js → router-A58OKuIG.js} +16058 -13883
  127. package/dist/server/assets/{sankeyDiagram-TZEHDZUN-CWd3AEju.js → sankeyDiagram-TZEHDZUN-DXgjoM9B.js} +1 -1
  128. package/dist/server/assets/{sequenceDiagram-WL72ISMW-BMTkK0JQ.js → sequenceDiagram-WL72ISMW-BK24aHRm.js} +3 -3
  129. package/dist/server/assets/{stateDiagram-FKZM4ZOC-CpBXq11c.js → stateDiagram-FKZM4ZOC-uW8qduwY.js} +8 -8
  130. package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-DNuppjf9.js → stateDiagram-v2-4FDKWEC3-O0D8F8J2.js} +4 -4
  131. package/dist/server/assets/{timeline-definition-IT6M3QCI-YTyqSIDt.js → timeline-definition-IT6M3QCI-BaSl1O8h.js} +2 -2
  132. package/dist/server/assets/{treemap-GDKQZRPO-BeWiYXRR.js → treemap-GDKQZRPO-DqxwR6w-.js} +6 -6
  133. package/dist/server/assets/{workspace._workspaceId-Ce_eap6T.js → workspace._workspaceId-B09dwAP5.js} +1 -1
  134. package/dist/server/assets/{workspace._workspaceId-t0HaEyN5.js → workspace._workspaceId-CZZSeH-P.js} +88 -71
  135. package/dist/server/assets/{xychartDiagram-PRI3JC2R-Dlgz7zKK.js → xychartDiagram-PRI3JC2R-Du3l-FcL.js} +1 -1
  136. package/dist/server/server.js +2 -2
  137. package/dist/start-server.mjs +23238 -20533
  138. package/dist/terminal-daemon.mjs +406 -102
  139. package/package.json +4 -4
  140. package/dist/client/assets/channel-C4GiEGw4.js +0 -1
  141. package/dist/client/assets/classDiagram-2ON5EDUG-y6v_VfOs.js +0 -1
  142. package/dist/client/assets/classDiagram-v2-WZHVMYZB-y6v_VfOs.js +0 -1
  143. package/dist/client/assets/clone-B_3XeJsO.js +0 -1
  144. package/dist/client/assets/main-CmUn6n9o.css +0 -1
  145. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-D5laPTLF.js +0 -1
  146. package/dist/client/assets/workspace._workspaceId-CdoxJFsY.js +0 -1
  147. 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",
@@ -3919,6 +4017,54 @@
3919
4017
  }
3920
4018
  }
3921
4019
  },
4020
+ "/terminal.restartDaemon": {
4021
+ "post": {
4022
+ "operationId": "terminal.restartDaemon",
4023
+ "tags": [
4024
+ "terminal"
4025
+ ],
4026
+ "responses": {
4027
+ "200": {
4028
+ "description": "Successful response",
4029
+ "content": {
4030
+ "application/json": {
4031
+ "schema": {
4032
+ "type": "object",
4033
+ "properties": {
4034
+ "result": {
4035
+ "type": "object",
4036
+ "properties": {
4037
+ "data": {
4038
+ "type": "object",
4039
+ "properties": {
4040
+ "killedCount": {
4041
+ "type": "number"
4042
+ }
4043
+ },
4044
+ "required": [
4045
+ "killedCount"
4046
+ ],
4047
+ "additionalProperties": false
4048
+ }
4049
+ },
4050
+ "required": [
4051
+ "data"
4052
+ ]
4053
+ }
4054
+ },
4055
+ "required": [
4056
+ "result"
4057
+ ]
4058
+ }
4059
+ }
4060
+ }
4061
+ },
4062
+ "default": {
4063
+ "$ref": "#/components/responses/Error"
4064
+ }
4065
+ }
4066
+ }
4067
+ },
3922
4068
  "/settings.get": {
3923
4069
  "get": {
3924
4070
  "operationId": "settings.get",
@@ -4134,6 +4280,19 @@
4134
4280
  }
4135
4281
  },
4136
4282
  "additionalProperties": {}
4283
+ },
4284
+ "agents": {
4285
+ "type": "object",
4286
+ "properties": {
4287
+ "defaultMode": {
4288
+ "type": "string",
4289
+ "enum": [
4290
+ "gui",
4291
+ "tui"
4292
+ ]
4293
+ }
4294
+ },
4295
+ "additionalProperties": {}
4137
4296
  }
4138
4297
  },
4139
4298
  "additionalProperties": {}
@@ -4855,6 +5014,13 @@
4855
5014
  "codingAgentId": {
4856
5015
  "type": "string"
4857
5016
  },
5017
+ "agentMode": {
5018
+ "type": "string",
5019
+ "enum": [
5020
+ "gui",
5021
+ "tui"
5022
+ ]
5023
+ },
4858
5024
  "via": {
4859
5025
  "type": "string",
4860
5026
  "enum": [
@@ -5873,9 +6039,9 @@
5873
6039
  ]
5874
6040
  }
5875
6041
  },
5876
- "/workspace.getDiffSummary": {
6042
+ "/workspace.getChanges": {
5877
6043
  "get": {
5878
- "operationId": "workspace.getDiffSummary",
6044
+ "operationId": "workspace.getChanges",
5879
6045
  "tags": [
5880
6046
  "workspace"
5881
6047
  ],
@@ -5891,7 +6057,7 @@
5891
6057
  "type": "object",
5892
6058
  "properties": {
5893
6059
  "data": {
5894
- "$ref": "#/components/schemas/DiffSummaryResult"
6060
+ "$ref": "#/components/schemas/ChangesResult"
5895
6061
  }
5896
6062
  },
5897
6063
  "required": [
@@ -5924,13 +6090,6 @@
5924
6090
  "workspaceId": {
5925
6091
  "type": "string"
5926
6092
  },
5927
- "diffMode": {
5928
- "type": "string",
5929
- "enum": [
5930
- "branch",
5931
- "uncommitted"
5932
- ]
5933
- },
5934
6093
  "compareBranch": {
5935
6094
  "type": "string"
5936
6095
  }
@@ -6009,17 +6168,32 @@
6009
6168
  "filePath": {
6010
6169
  "type": "string"
6011
6170
  },
6012
- "mergeBase": {
6013
- "type": "string"
6171
+ "section": {
6172
+ "type": "string",
6173
+ "enum": [
6174
+ "branch",
6175
+ "conflicts",
6176
+ "unstaged",
6177
+ "staged",
6178
+ "untracked"
6179
+ ]
6014
6180
  },
6015
6181
  "contextLines": {
6016
6182
  "type": "number"
6183
+ },
6184
+ "mergeBase": {
6185
+ "type": "string",
6186
+ "description": "Required for the `branch` section."
6187
+ },
6188
+ "oldPath": {
6189
+ "type": "string",
6190
+ "description": "The path before a rename, so git pairs the two sides."
6017
6191
  }
6018
6192
  },
6019
6193
  "required": [
6020
6194
  "workspaceId",
6021
6195
  "filePath",
6022
- "mergeBase"
6196
+ "section"
6023
6197
  ],
6024
6198
  "additionalProperties": false
6025
6199
  }
@@ -6029,9 +6203,9 @@
6029
6203
  ]
6030
6204
  }
6031
6205
  },
6032
- "/workspace.revertFile": {
6206
+ "/workspace.stageFiles": {
6033
6207
  "post": {
6034
- "operationId": "workspace.revertFile",
6208
+ "operationId": "workspace.stageFiles",
6035
6209
  "tags": [
6036
6210
  "workspace"
6037
6211
  ],
@@ -6086,24 +6260,16 @@
6086
6260
  "workspaceId": {
6087
6261
  "type": "string"
6088
6262
  },
6089
- "filePath": {
6090
- "type": "string"
6091
- },
6092
- "diffMode": {
6093
- "type": "string",
6094
- "enum": [
6095
- "branch",
6096
- "uncommitted"
6097
- ]
6098
- },
6099
- "compareBranch": {
6100
- "type": "string"
6263
+ "paths": {
6264
+ "type": "array",
6265
+ "items": {
6266
+ "type": "string"
6267
+ }
6101
6268
  }
6102
6269
  },
6103
6270
  "required": [
6104
6271
  "workspaceId",
6105
- "filePath",
6106
- "diffMode"
6272
+ "paths"
6107
6273
  ],
6108
6274
  "additionalProperties": false
6109
6275
  }
@@ -6112,9 +6278,9 @@
6112
6278
  }
6113
6279
  }
6114
6280
  },
6115
- "/workspace.gitPull": {
6281
+ "/workspace.unstageFiles": {
6116
6282
  "post": {
6117
- "operationId": "workspace.gitPull",
6283
+ "operationId": "workspace.unstageFiles",
6118
6284
  "tags": [
6119
6285
  "workspace"
6120
6286
  ],
@@ -6168,10 +6334,17 @@
6168
6334
  "properties": {
6169
6335
  "workspaceId": {
6170
6336
  "type": "string"
6337
+ },
6338
+ "paths": {
6339
+ "type": "array",
6340
+ "items": {
6341
+ "type": "string"
6342
+ }
6171
6343
  }
6172
6344
  },
6173
6345
  "required": [
6174
- "workspaceId"
6346
+ "workspaceId",
6347
+ "paths"
6175
6348
  ],
6176
6349
  "additionalProperties": false
6177
6350
  }
@@ -6180,9 +6353,9 @@
6180
6353
  }
6181
6354
  }
6182
6355
  },
6183
- "/workspace.gitPush": {
6356
+ "/workspace.discardChanges": {
6184
6357
  "post": {
6185
- "operationId": "workspace.gitPush",
6358
+ "operationId": "workspace.discardChanges",
6186
6359
  "tags": [
6187
6360
  "workspace"
6188
6361
  ],
@@ -6236,10 +6409,26 @@
6236
6409
  "properties": {
6237
6410
  "workspaceId": {
6238
6411
  "type": "string"
6412
+ },
6413
+ "section": {
6414
+ "type": "string",
6415
+ "enum": [
6416
+ "unstaged",
6417
+ "staged",
6418
+ "untracked"
6419
+ ]
6420
+ },
6421
+ "paths": {
6422
+ "type": "array",
6423
+ "items": {
6424
+ "type": "string"
6425
+ }
6239
6426
  }
6240
6427
  },
6241
6428
  "required": [
6242
- "workspaceId"
6429
+ "workspaceId",
6430
+ "section",
6431
+ "paths"
6243
6432
  ],
6244
6433
  "additionalProperties": false
6245
6434
  }
@@ -6248,9 +6437,9 @@
6248
6437
  }
6249
6438
  }
6250
6439
  },
6251
- "/workspace.gitCommit": {
6440
+ "/workspace.gitPull": {
6252
6441
  "post": {
6253
- "operationId": "workspace.gitCommit",
6442
+ "operationId": "workspace.gitPull",
6254
6443
  "tags": [
6255
6444
  "workspace"
6256
6445
  ],
@@ -6302,18 +6491,11 @@
6302
6491
  "schema": {
6303
6492
  "type": "object",
6304
6493
  "properties": {
6305
- "message": {
6306
- "type": "string"
6307
- },
6308
6494
  "workspaceId": {
6309
6495
  "type": "string"
6310
- },
6311
- "body": {
6312
- "type": "string"
6313
6496
  }
6314
6497
  },
6315
6498
  "required": [
6316
- "message",
6317
6499
  "workspaceId"
6318
6500
  ],
6319
6501
  "additionalProperties": false
@@ -6323,9 +6505,9 @@
6323
6505
  }
6324
6506
  }
6325
6507
  },
6326
- "/workspace.generateCommitMessage": {
6508
+ "/workspace.gitPush": {
6327
6509
  "post": {
6328
- "operationId": "workspace.generateCommitMessage",
6510
+ "operationId": "workspace.gitPush",
6329
6511
  "tags": [
6330
6512
  "workspace"
6331
6513
  ],
@@ -6343,20 +6525,13 @@
6343
6525
  "data": {
6344
6526
  "type": "object",
6345
6527
  "properties": {
6346
- "message": {
6347
- "type": "string"
6348
- },
6349
- "body": {
6350
- "type": "string"
6351
- },
6352
- "agentLabel": {
6353
- "type": "string"
6528
+ "ok": {
6529
+ "type": "boolean",
6530
+ "const": true
6354
6531
  }
6355
6532
  },
6356
6533
  "required": [
6357
- "message",
6358
- "body",
6359
- "agentLabel"
6534
+ "ok"
6360
6535
  ],
6361
6536
  "additionalProperties": false
6362
6537
  }
@@ -6398,9 +6573,9 @@
6398
6573
  }
6399
6574
  }
6400
6575
  },
6401
- "/workspace.listFiles": {
6402
- "get": {
6403
- "operationId": "workspace.listFiles",
6576
+ "/workspace.gitCommit": {
6577
+ "post": {
6578
+ "operationId": "workspace.gitCommit",
6404
6579
  "tags": [
6405
6580
  "workspace"
6406
6581
  ],
@@ -6416,7 +6591,17 @@
6416
6591
  "type": "object",
6417
6592
  "properties": {
6418
6593
  "data": {
6419
- "$ref": "#/components/schemas/ListFilesResult"
6594
+ "type": "object",
6595
+ "properties": {
6596
+ "ok": {
6597
+ "type": "boolean",
6598
+ "const": true
6599
+ }
6600
+ },
6601
+ "required": [
6602
+ "ok"
6603
+ ],
6604
+ "additionalProperties": false
6420
6605
  }
6421
6606
  },
6422
6607
  "required": [
@@ -6435,18 +6620,158 @@
6435
6620
  "$ref": "#/components/responses/Error"
6436
6621
  }
6437
6622
  },
6438
- "parameters": [
6439
- {
6440
- "name": "input",
6441
- "in": "query",
6442
- "required": true,
6443
- "style": "deepObject",
6444
- "content": {
6445
- "application/json": {
6446
- "schema": {
6447
- "type": "object",
6448
- "properties": {
6449
- "workspaceId": {
6623
+ "requestBody": {
6624
+ "required": true,
6625
+ "content": {
6626
+ "application/json": {
6627
+ "schema": {
6628
+ "type": "object",
6629
+ "properties": {
6630
+ "message": {
6631
+ "type": "string"
6632
+ },
6633
+ "workspaceId": {
6634
+ "type": "string"
6635
+ },
6636
+ "body": {
6637
+ "type": "string"
6638
+ }
6639
+ },
6640
+ "required": [
6641
+ "message",
6642
+ "workspaceId"
6643
+ ],
6644
+ "additionalProperties": false
6645
+ }
6646
+ }
6647
+ }
6648
+ }
6649
+ }
6650
+ },
6651
+ "/workspace.generateCommitMessage": {
6652
+ "post": {
6653
+ "operationId": "workspace.generateCommitMessage",
6654
+ "tags": [
6655
+ "workspace"
6656
+ ],
6657
+ "responses": {
6658
+ "200": {
6659
+ "description": "Successful response",
6660
+ "content": {
6661
+ "application/json": {
6662
+ "schema": {
6663
+ "type": "object",
6664
+ "properties": {
6665
+ "result": {
6666
+ "type": "object",
6667
+ "properties": {
6668
+ "data": {
6669
+ "type": "object",
6670
+ "properties": {
6671
+ "message": {
6672
+ "type": "string"
6673
+ },
6674
+ "body": {
6675
+ "type": "string"
6676
+ },
6677
+ "agentLabel": {
6678
+ "type": "string"
6679
+ }
6680
+ },
6681
+ "required": [
6682
+ "message",
6683
+ "body",
6684
+ "agentLabel"
6685
+ ],
6686
+ "additionalProperties": false
6687
+ }
6688
+ },
6689
+ "required": [
6690
+ "data"
6691
+ ]
6692
+ }
6693
+ },
6694
+ "required": [
6695
+ "result"
6696
+ ]
6697
+ }
6698
+ }
6699
+ }
6700
+ },
6701
+ "default": {
6702
+ "$ref": "#/components/responses/Error"
6703
+ }
6704
+ },
6705
+ "requestBody": {
6706
+ "required": true,
6707
+ "content": {
6708
+ "application/json": {
6709
+ "schema": {
6710
+ "type": "object",
6711
+ "properties": {
6712
+ "workspaceId": {
6713
+ "type": "string"
6714
+ }
6715
+ },
6716
+ "required": [
6717
+ "workspaceId"
6718
+ ],
6719
+ "additionalProperties": false
6720
+ }
6721
+ }
6722
+ }
6723
+ }
6724
+ }
6725
+ },
6726
+ "/workspace.listFiles": {
6727
+ "get": {
6728
+ "operationId": "workspace.listFiles",
6729
+ "tags": [
6730
+ "workspace"
6731
+ ],
6732
+ "responses": {
6733
+ "200": {
6734
+ "description": "Successful response",
6735
+ "content": {
6736
+ "application/json": {
6737
+ "schema": {
6738
+ "type": "object",
6739
+ "properties": {
6740
+ "result": {
6741
+ "type": "object",
6742
+ "properties": {
6743
+ "data": {
6744
+ "$ref": "#/components/schemas/ListFilesResult"
6745
+ }
6746
+ },
6747
+ "required": [
6748
+ "data"
6749
+ ]
6750
+ }
6751
+ },
6752
+ "required": [
6753
+ "result"
6754
+ ]
6755
+ }
6756
+ }
6757
+ }
6758
+ },
6759
+ "default": {
6760
+ "$ref": "#/components/responses/Error"
6761
+ }
6762
+ },
6763
+ "parameters": [
6764
+ {
6765
+ "name": "input",
6766
+ "in": "query",
6767
+ "required": true,
6768
+ "style": "deepObject",
6769
+ "content": {
6770
+ "application/json": {
6771
+ "schema": {
6772
+ "type": "object",
6773
+ "properties": {
6774
+ "workspaceId": {
6450
6775
  "type": "string"
6451
6776
  },
6452
6777
  "path": {
@@ -7321,81 +7646,6 @@
7321
7646
  ]
7322
7647
  }
7323
7648
  },
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
7649
  "/cronjobs.list": {
7400
7650
  "get": {
7401
7651
  "operationId": "cronjobs.list",
@@ -8308,6 +8558,9 @@
8308
8558
  },
8309
8559
  "configId": {
8310
8560
  "type": "string"
8561
+ },
8562
+ "workspaceId": {
8563
+ "type": "string"
8311
8564
  }
8312
8565
  },
8313
8566
  "required": [
@@ -8665,7 +8918,150 @@
8665
8918
  }
8666
8919
  },
8667
8920
  "required": [
8668
- "ok"
8921
+ "ok"
8922
+ ],
8923
+ "additionalProperties": false
8924
+ }
8925
+ },
8926
+ "required": [
8927
+ "data"
8928
+ ]
8929
+ }
8930
+ },
8931
+ "required": [
8932
+ "result"
8933
+ ]
8934
+ }
8935
+ }
8936
+ }
8937
+ },
8938
+ "default": {
8939
+ "$ref": "#/components/responses/Error"
8940
+ }
8941
+ },
8942
+ "requestBody": {
8943
+ "required": true,
8944
+ "content": {
8945
+ "application/json": {
8946
+ "schema": {
8947
+ "type": "object",
8948
+ "properties": {
8949
+ "chatId": {
8950
+ "type": "string"
8951
+ }
8952
+ },
8953
+ "required": [
8954
+ "chatId"
8955
+ ],
8956
+ "additionalProperties": false
8957
+ }
8958
+ }
8959
+ }
8960
+ }
8961
+ }
8962
+ },
8963
+ "/chats.resume": {
8964
+ "post": {
8965
+ "operationId": "chats.resume",
8966
+ "tags": [
8967
+ "chats"
8968
+ ],
8969
+ "responses": {
8970
+ "200": {
8971
+ "description": "Successful response",
8972
+ "content": {
8973
+ "application/json": {
8974
+ "schema": {
8975
+ "type": "object",
8976
+ "properties": {
8977
+ "result": {
8978
+ "type": "object",
8979
+ "properties": {
8980
+ "data": {
8981
+ "type": "object",
8982
+ "properties": {
8983
+ "ok": {
8984
+ "type": "boolean"
8985
+ }
8986
+ },
8987
+ "required": [
8988
+ "ok"
8989
+ ],
8990
+ "additionalProperties": false
8991
+ }
8992
+ },
8993
+ "required": [
8994
+ "data"
8995
+ ]
8996
+ }
8997
+ },
8998
+ "required": [
8999
+ "result"
9000
+ ]
9001
+ }
9002
+ }
9003
+ }
9004
+ },
9005
+ "default": {
9006
+ "$ref": "#/components/responses/Error"
9007
+ }
9008
+ },
9009
+ "requestBody": {
9010
+ "required": true,
9011
+ "content": {
9012
+ "application/json": {
9013
+ "schema": {
9014
+ "type": "object",
9015
+ "properties": {
9016
+ "chatId": {
9017
+ "type": "string"
9018
+ }
9019
+ },
9020
+ "required": [
9021
+ "chatId"
9022
+ ],
9023
+ "additionalProperties": false
9024
+ }
9025
+ }
9026
+ }
9027
+ }
9028
+ }
9029
+ },
9030
+ "/chats.continueInTerminal": {
9031
+ "post": {
9032
+ "operationId": "chats.continueInTerminal",
9033
+ "description": "Continue this chat's coding-agent session in a terminal pane.\n\nResolves the chat's underlying agent session ID (`activeSessionId`) and\nthe adapter for whichever coding agent it ran, asks the adapter for the\nvendor CLI's *resume* invocation (`claude --resume <id>`,\n`codex resume <id>`, `opencode --session <id>`), composes it into a\nshell-safe command, and spawns a fresh terminal pane running it — so the\nuser keeps working in the very session the web chat was running.\n\nMirrors the spawn+emit pair in `WorkspaceService.create`'s\n`via=terminal` branch (issue #551), and resolves the agent inline the\nsame way `setActiveSession` above does. Errors surface to the client so\nthe UI can keep the menu item disabled for agents that can't resume\n(Gemini CLI / Cursor CLI) or chats with no session yet.",
9034
+ "tags": [
9035
+ "chats"
9036
+ ],
9037
+ "responses": {
9038
+ "200": {
9039
+ "description": "Successful response",
9040
+ "content": {
9041
+ "application/json": {
9042
+ "schema": {
9043
+ "type": "object",
9044
+ "properties": {
9045
+ "result": {
9046
+ "type": "object",
9047
+ "properties": {
9048
+ "data": {
9049
+ "type": "object",
9050
+ "properties": {
9051
+ "terminalId": {
9052
+ "type": "string"
9053
+ },
9054
+ "workspaceId": {
9055
+ "type": "string"
9056
+ },
9057
+ "sessionId": {
9058
+ "type": "string"
9059
+ }
9060
+ },
9061
+ "required": [
9062
+ "terminalId",
9063
+ "workspaceId",
9064
+ "sessionId"
8669
9065
  ],
8670
9066
  "additionalProperties": false
8671
9067
  }
@@ -8707,11 +9103,11 @@
8707
9103
  }
8708
9104
  }
8709
9105
  },
8710
- "/chats.resume": {
8711
- "post": {
8712
- "operationId": "chats.resume",
9106
+ "/agentSessions.list": {
9107
+ "get": {
9108
+ "operationId": "agentSessions.list",
8713
9109
  "tags": [
8714
- "chats"
9110
+ "agentSessions"
8715
9111
  ],
8716
9112
  "responses": {
8717
9113
  "200": {
@@ -8727,12 +9123,15 @@
8727
9123
  "data": {
8728
9124
  "type": "object",
8729
9125
  "properties": {
8730
- "ok": {
8731
- "type": "boolean"
9126
+ "agentSessions": {
9127
+ "type": "array",
9128
+ "items": {
9129
+ "$ref": "#/components/schemas/AgentSessionRecord"
9130
+ }
8732
9131
  }
8733
9132
  },
8734
9133
  "required": [
8735
- "ok"
9134
+ "agentSessions"
8736
9135
  ],
8737
9136
  "additionalProperties": false
8738
9137
  }
@@ -8753,33 +9152,38 @@
8753
9152
  "$ref": "#/components/responses/Error"
8754
9153
  }
8755
9154
  },
8756
- "requestBody": {
8757
- "required": true,
8758
- "content": {
8759
- "application/json": {
8760
- "schema": {
8761
- "type": "object",
8762
- "properties": {
8763
- "chatId": {
8764
- "type": "string"
8765
- }
8766
- },
8767
- "required": [
8768
- "chatId"
8769
- ],
8770
- "additionalProperties": false
9155
+ "parameters": [
9156
+ {
9157
+ "name": "input",
9158
+ "in": "query",
9159
+ "required": true,
9160
+ "style": "deepObject",
9161
+ "content": {
9162
+ "application/json": {
9163
+ "schema": {
9164
+ "type": "object",
9165
+ "properties": {
9166
+ "workspaceId": {
9167
+ "type": "string"
9168
+ }
9169
+ },
9170
+ "required": [
9171
+ "workspaceId"
9172
+ ],
9173
+ "additionalProperties": false
9174
+ }
8771
9175
  }
8772
9176
  }
8773
9177
  }
8774
- }
9178
+ ]
8775
9179
  }
8776
9180
  },
8777
- "/chats.continueInTerminal": {
9181
+ "/agentSessions.launch": {
8778
9182
  "post": {
8779
- "operationId": "chats.continueInTerminal",
8780
- "description": "Continue this chat's coding-agent session in a terminal pane.\n\nResolves the chat's underlying agent session ID (`activeSessionId`) and\nthe adapter for whichever coding agent it ran, asks the adapter for the\nvendor CLI's *resume* invocation (`claude --resume <id>`,\n`codex resume <id>`, `opencode --session <id>`), composes it into a\nshell-safe command, and spawns a fresh terminal pane running it — so the\nuser keeps working in the very session the web chat was running.\n\nMirrors the spawn+emit pair in `WorkspaceService.create`'s\n`via=terminal` branch (issue #551), and resolves the agent inline the\nsame way `setActiveSession` above does. Errors surface to the client so\nthe UI can keep the menu item disabled for agents that can't resume\n(Gemini CLI / Cursor CLI) or chats with no session yet.",
9183
+ "operationId": "agentSessions.launch",
9184
+ "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.",
8781
9185
  "tags": [
8782
- "chats"
9186
+ "agentSessions"
8783
9187
  ],
8784
9188
  "responses": {
8785
9189
  "200": {
@@ -8793,24 +9197,7 @@
8793
9197
  "type": "object",
8794
9198
  "properties": {
8795
9199
  "data": {
8796
- "type": "object",
8797
- "properties": {
8798
- "terminalId": {
8799
- "type": "string"
8800
- },
8801
- "workspaceId": {
8802
- "type": "string"
8803
- },
8804
- "sessionId": {
8805
- "type": "string"
8806
- }
8807
- },
8808
- "required": [
8809
- "terminalId",
8810
- "workspaceId",
8811
- "sessionId"
8812
- ],
8813
- "additionalProperties": false
9200
+ "$ref": "#/components/schemas/result"
8814
9201
  }
8815
9202
  },
8816
9203
  "required": [
@@ -8836,12 +9223,31 @@
8836
9223
  "schema": {
8837
9224
  "type": "object",
8838
9225
  "properties": {
9226
+ "workspaceId": {
9227
+ "type": "string"
9228
+ },
9229
+ "prompt": {
9230
+ "type": "string"
9231
+ },
9232
+ "mode": {
9233
+ "type": "string",
9234
+ "enum": [
9235
+ "gui",
9236
+ "tui"
9237
+ ]
9238
+ },
8839
9239
  "chatId": {
8840
9240
  "type": "string"
9241
+ },
9242
+ "terminalId": {
9243
+ "type": "string"
9244
+ },
9245
+ "agentId": {
9246
+ "type": "string"
8841
9247
  }
8842
9248
  },
8843
9249
  "required": [
8844
- "chatId"
9250
+ "workspaceId"
8845
9251
  ],
8846
9252
  "additionalProperties": false
8847
9253
  }
@@ -11232,6 +11638,20 @@
11232
11638
  },
11233
11639
  "additionalProperties": {},
11234
11640
  "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."
11641
+ },
11642
+ "agents": {
11643
+ "type": "object",
11644
+ "properties": {
11645
+ "defaultMode": {
11646
+ "type": "string",
11647
+ "enum": [
11648
+ "gui",
11649
+ "tui"
11650
+ ]
11651
+ }
11652
+ },
11653
+ "additionalProperties": {},
11654
+ "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."
11235
11655
  }
11236
11656
  },
11237
11657
  "additionalProperties": {}
@@ -11740,38 +12160,127 @@
11740
12160
  ],
11741
12161
  "additionalProperties": false
11742
12162
  },
11743
- "DiffSummaryResult": {
12163
+ "ChangesResult": {
11744
12164
  "type": "object",
11745
12165
  "properties": {
11746
- "stats": {
11747
- "$ref": "#/components/schemas/DiffStats"
11748
- },
11749
- "compareBranch": {
12166
+ "headBranch": {
11750
12167
  "type": "string"
11751
12168
  },
11752
12169
  "defaultBranch": {
11753
12170
  "type": "string"
11754
12171
  },
11755
- "headBranch": {
11756
- "type": "string"
12172
+ "compareBranch": {
12173
+ "type": "string",
12174
+ "description": "The branch the `branch` section compares against."
11757
12175
  },
11758
- "fileStatuses": {
11759
- "type": "object",
11760
- "additionalProperties": {
11761
- "type": "string"
12176
+ "mergeBase": {
12177
+ "type": [
12178
+ "string",
12179
+ "null"
12180
+ ],
12181
+ "description": "Where HEAD forked from `compareBranch`; null unless `branchStatus` is ready."
12182
+ },
12183
+ "branchStatus": {
12184
+ "type": "string",
12185
+ "enum": [
12186
+ "ready",
12187
+ "invalid-base",
12188
+ "no-merge-base",
12189
+ "unborn-head"
12190
+ ],
12191
+ "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`)."
12192
+ },
12193
+ "conflicts": {
12194
+ "type": "array",
12195
+ "items": {
12196
+ "$ref": "#/components/schemas/ChangeEntry"
11762
12197
  }
11763
12198
  },
11764
- "mergeBase": {
11765
- "type": "string"
12199
+ "unstaged": {
12200
+ "type": "array",
12201
+ "items": {
12202
+ "$ref": "#/components/schemas/ChangeEntry"
12203
+ }
12204
+ },
12205
+ "staged": {
12206
+ "type": "array",
12207
+ "items": {
12208
+ "$ref": "#/components/schemas/ChangeEntry"
12209
+ }
12210
+ },
12211
+ "untracked": {
12212
+ "type": "array",
12213
+ "items": {
12214
+ "$ref": "#/components/schemas/ChangeEntry"
12215
+ }
12216
+ },
12217
+ "branch": {
12218
+ "type": "array",
12219
+ "items": {
12220
+ "$ref": "#/components/schemas/ChangeEntry"
12221
+ }
11766
12222
  }
11767
12223
  },
11768
12224
  "required": [
11769
- "stats",
11770
- "compareBranch",
11771
- "defaultBranch",
11772
12225
  "headBranch",
11773
- "fileStatuses",
11774
- "mergeBase"
12226
+ "defaultBranch",
12227
+ "compareBranch",
12228
+ "mergeBase",
12229
+ "branchStatus",
12230
+ "conflicts",
12231
+ "unstaged",
12232
+ "staged",
12233
+ "untracked",
12234
+ "branch"
12235
+ ],
12236
+ "additionalProperties": false
12237
+ },
12238
+ "ChangeEntry": {
12239
+ "type": "object",
12240
+ "properties": {
12241
+ "path": {
12242
+ "type": "string"
12243
+ },
12244
+ "oldPath": {
12245
+ "type": "string",
12246
+ "description": "The path before a rename or copy."
12247
+ },
12248
+ "status": {
12249
+ "type": "string",
12250
+ "enum": [
12251
+ "A",
12252
+ "M",
12253
+ "D",
12254
+ "R",
12255
+ "C",
12256
+ "U"
12257
+ ],
12258
+ "description": "`A`dded, `M`odified, `D`eleted, `R`enamed, `C`opied, `U`ntracked."
12259
+ },
12260
+ "additions": {
12261
+ "type": "number",
12262
+ "description": "Lines added / deleted; unset for binary files."
12263
+ },
12264
+ "deletions": {
12265
+ "type": "number"
12266
+ },
12267
+ "conflict": {
12268
+ "type": "string",
12269
+ "enum": [
12270
+ "both_modified",
12271
+ "both_added",
12272
+ "both_deleted",
12273
+ "added_by_us",
12274
+ "added_by_them",
12275
+ "deleted_by_us",
12276
+ "deleted_by_them"
12277
+ ],
12278
+ "description": "Set on `conflicts` entries only."
12279
+ }
12280
+ },
12281
+ "required": [
12282
+ "path",
12283
+ "status"
11775
12284
  ],
11776
12285
  "additionalProperties": false
11777
12286
  },
@@ -12507,6 +13016,107 @@
12507
13016
  ],
12508
13017
  "additionalProperties": false
12509
13018
  },
13019
+ "AgentSessionRecord": {
13020
+ "type": "object",
13021
+ "properties": {
13022
+ "id": {
13023
+ "type": "string"
13024
+ },
13025
+ "workspaceId": {
13026
+ "type": "string"
13027
+ },
13028
+ "agentDefinitionId": {
13029
+ "type": "string"
13030
+ },
13031
+ "providerSessionId": {
13032
+ "type": [
13033
+ "string",
13034
+ "null"
13035
+ ],
13036
+ "description": "The agent's own session id (e.g. Claude's `session_id`), null until known."
13037
+ },
13038
+ "mode": {
13039
+ "type": "string",
13040
+ "enum": [
13041
+ "gui",
13042
+ "tui"
13043
+ ],
13044
+ "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."
13045
+ },
13046
+ "chatId": {
13047
+ "type": [
13048
+ "string",
13049
+ "null"
13050
+ ],
13051
+ "description": "Set for `gui` sessions."
13052
+ },
13053
+ "terminalId": {
13054
+ "type": [
13055
+ "string",
13056
+ "null"
13057
+ ],
13058
+ "description": "Set for `tui` sessions."
13059
+ },
13060
+ "state": {
13061
+ "type": "string",
13062
+ "enum": [
13063
+ "running",
13064
+ "starting",
13065
+ "ended"
13066
+ ]
13067
+ },
13068
+ "createdAt": {
13069
+ "type": "number"
13070
+ },
13071
+ "updatedAt": {
13072
+ "type": "number"
13073
+ }
13074
+ },
13075
+ "required": [
13076
+ "id",
13077
+ "workspaceId",
13078
+ "agentDefinitionId",
13079
+ "providerSessionId",
13080
+ "mode",
13081
+ "chatId",
13082
+ "terminalId",
13083
+ "state",
13084
+ "createdAt",
13085
+ "updatedAt"
13086
+ ],
13087
+ "additionalProperties": false
13088
+ },
13089
+ "result": {
13090
+ "type": "object",
13091
+ "properties": {
13092
+ "agentSession": {
13093
+ "$ref": "#/components/schemas/AgentSessionRecord"
13094
+ },
13095
+ "mode": {
13096
+ "type": "string",
13097
+ "enum": [
13098
+ "gui",
13099
+ "tui"
13100
+ ],
13101
+ "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."
13102
+ },
13103
+ "chatId": {
13104
+ "type": "string"
13105
+ },
13106
+ "terminalId": {
13107
+ "type": "string"
13108
+ },
13109
+ "notice": {
13110
+ "type": "string",
13111
+ "description": "Why the requested mode wasn't used, e.g. an agent without a TUI invocation."
13112
+ }
13113
+ },
13114
+ "required": [
13115
+ "agentSession",
13116
+ "mode"
13117
+ ],
13118
+ "additionalProperties": false
13119
+ },
12510
13120
  "BrowserRow": {
12511
13121
  "type": "object",
12512
13122
  "properties": {