@band-app/server 0.33.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 (158) hide show
  1. package/dist/client/assets/{TerminalPanel-CyltRZLD.js → TerminalPanel-BlzUBzmR.js} +1 -1
  2. package/dist/client/assets/{_basePickBy-Dl99bUuK.js → _basePickBy-78hIlKHL.js} +1 -1
  3. package/dist/client/assets/{_baseUniq-xYPKjKRI.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-L0FqLNvl.js → arc-DHUj8i-C.js} +1 -1
  8. package/dist/client/assets/{architectureDiagram-VXUJARFQ-sxFQR6t8.js → architectureDiagram-VXUJARFQ-D4Gtstny.js} +1 -1
  9. package/dist/client/assets/{blockDiagram-VD42YOAC-CKyryScy.js → blockDiagram-VD42YOAC-BnvoqD8n.js} +1 -1
  10. package/dist/client/assets/{c4Diagram-YG6GDRKO-CKkLibM6.js → c4Diagram-YG6GDRKO-B3kFa8rY.js} +1 -1
  11. package/dist/client/assets/channel-C2tC7nD9.js +1 -0
  12. package/dist/client/assets/{chunk-4BX2VUAB-B2Q5eiyh.js → chunk-4BX2VUAB-Cry6RdNE.js} +1 -1
  13. package/dist/client/assets/{chunk-55IACEB6-Bx7ppH1E.js → chunk-55IACEB6-B2Hcf4yS.js} +1 -1
  14. package/dist/client/assets/{chunk-B4BG7PRW-z63abbDt.js → chunk-B4BG7PRW-BqTOv_Q4.js} +1 -1
  15. package/dist/client/assets/{chunk-DI55MBZ5-CVuxJX-G.js → chunk-DI55MBZ5-BHJn8-Rw.js} +1 -1
  16. package/dist/client/assets/{chunk-FMBD7UC4-C4mR-Kqh.js → chunk-FMBD7UC4-D2HIyXOe.js} +1 -1
  17. package/dist/client/assets/{chunk-QN33PNHL-DC9EuvVO.js → chunk-QN33PNHL-BSLNMHFq.js} +1 -1
  18. package/dist/client/assets/{chunk-QZHKN3VN-BVfYPmR6.js → chunk-QZHKN3VN-BuBnSFe-.js} +1 -1
  19. package/dist/client/assets/{chunk-TZMSLE5B-BERfyjOQ.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-CKYh86Nn.js → cose-bilkent-S5V4N54A-Db5PXk3I.js} +1 -1
  24. package/dist/client/assets/{dagre-6UL2VRFP-CHXYsbsT.js → dagre-6UL2VRFP-COrq1-o3.js} +1 -1
  25. package/dist/client/assets/{diagram-PSM6KHXK-BgTabbUt.js → diagram-PSM6KHXK-BEFxHLpj.js} +1 -1
  26. package/dist/client/assets/{diagram-QEK2KX5R-DGko5nSx.js → diagram-QEK2KX5R-K9i-foPa.js} +1 -1
  27. package/dist/client/assets/{diagram-S2PKOQOG-CE06Gb7p.js → diagram-S2PKOQOG-5WsQ8w0M.js} +1 -1
  28. package/dist/client/assets/{erDiagram-Q2GNP2WA-DRAdXF3c.js → erDiagram-Q2GNP2WA-CzYts47e.js} +1 -1
  29. package/dist/client/assets/{flowDiagram-NV44I4VS-DMdYos4M.js → flowDiagram-NV44I4VS-BHSMXKBN.js} +1 -1
  30. package/dist/client/assets/{ganttDiagram-JELNMOA3-B1hq9zyH.js → ganttDiagram-JELNMOA3-lrI55nIi.js} +1 -1
  31. package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-BX_eqyqV.js → gitGraphDiagram-V2S2FVAM-BR9i1nFI.js} +1 -1
  32. package/dist/client/assets/{graph-B1pXNJmu.js → graph-CHzn7hGd.js} +1 -1
  33. package/dist/client/assets/{highlighted-body-B3W2YXNL-xpTIV5H4.js → highlighted-body-B3W2YXNL-pf8CG4LE.js} +1 -1
  34. package/dist/client/assets/{index-BAlyKPeT.js → index-B1M1Nr1U.js} +1 -1
  35. package/dist/client/assets/{index-Mpl66MhJ.js → index-B3_tKObw.js} +1 -1
  36. package/dist/client/assets/{index-CoSFZPv4.js → index-BFvt5Udm.js} +1 -1
  37. package/dist/client/assets/{index-BYm6dlG5.js → index-BZejpLSO.js} +1 -1
  38. package/dist/client/assets/{index-CWczZ7eS.js → index-C4WPBk8W.js} +1 -1
  39. package/dist/client/assets/{index-BHygUCeT.js → index-CAapUiFF.js} +1 -1
  40. package/dist/client/assets/{index-Dm9xRcT9.js → index-C_k8X250.js} +1 -1
  41. package/dist/client/assets/{index-Do4DO4E-.js → index-Cg2goL7s.js} +1 -1
  42. package/dist/client/assets/{index-61SgNErm.js → index-CprTy2ja.js} +1 -1
  43. package/dist/client/assets/{index-DNX82GPp.js → index-DOz7KiMS.js} +1 -1
  44. package/dist/client/assets/{index-67ml7mn1.js → index-DRbvI3mJ.js} +1 -1
  45. package/dist/client/assets/{index-BD37kyMP.js → index-iDhzXhLS.js} +1 -1
  46. package/dist/client/assets/{index-DUaIvPpT.js → index-sjjEn2vn.js} +1 -1
  47. package/dist/client/assets/{infoDiagram-HS3SLOUP-DHAIDbZu.js → infoDiagram-HS3SLOUP-CPWEaaXS.js} +1 -1
  48. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-BJHZIWhu.js → journeyDiagram-XKPGCS4Q-IpZXRX_B.js} +1 -1
  49. package/dist/client/assets/{kanban-definition-3W4ZIXB7-_qzn6_ii.js → kanban-definition-3W4ZIXB7-BcAUFQlt.js} +1 -1
  50. package/dist/client/assets/{layout-CksxJldr.js → layout-CIxVWn8u.js} +1 -1
  51. package/dist/client/assets/main-Bx2dZBHM.css +1 -0
  52. package/dist/client/assets/{main-FnYu011V.js → main-D13cBYQG.js} +280 -277
  53. package/dist/client/assets/{mindmap-definition-VGOIOE7T-Deop3o-V.js → mindmap-definition-VGOIOE7T-CX1T1sUN.js} +1 -1
  54. package/dist/client/assets/{pieDiagram-ADFJNKIX-d4k56ZYA.js → pieDiagram-ADFJNKIX-DyLrkF8x.js} +2 -2
  55. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-CBA2J09q.js → quadrantDiagram-AYHSOK5B-B_-kuE5u.js} +1 -1
  56. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-C6Nnujg6.js → requirementDiagram-UZGBJVZJ-CW2Pkh0d.js} +1 -1
  57. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-CPfLLuk9.js → sankeyDiagram-TZEHDZUN-SH3i00se.js} +1 -1
  58. package/dist/client/assets/{sequenceDiagram-WL72ISMW-C_OY-5TF.js → sequenceDiagram-WL72ISMW-reJi3BTh.js} +1 -1
  59. package/dist/client/assets/{stateDiagram-FKZM4ZOC-CeuP4CjM.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-CL_Rmapn.js → timeline-definition-IT6M3QCI-B96AUWWH.js} +1 -1
  62. package/dist/client/assets/{treemap-GDKQZRPO-2uvsx2LQ.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-DF3JNMRG.js → workspace._workspaceId-ftjuXabJ.js} +1 -1
  65. package/dist/client/assets/xterm-EbFzQDSP.js +10 -0
  66. package/dist/client/assets/{xychartDiagram-PRI3JC2R-5Pzm62mv.js → xychartDiagram-PRI3JC2R-v-oqC6We.js} +1 -1
  67. package/dist/migrations/20260927210840_client_state/migration.sql +11 -0
  68. package/dist/migrations/20260927210840_client_state/snapshot.json +1763 -0
  69. package/dist/openapi.json +931 -35
  70. package/dist/server/assets/{TerminalPanel-DMTU2FMX.js → TerminalPanel-DJnQglDZ.js} +1 -1
  71. package/dist/server/assets/{_basePickBy-CMTHAoTW.js → _basePickBy-RSzPH-5U.js} +2 -2
  72. package/dist/server/assets/{_baseUniq-DkG_FLLk.js → _baseUniq-Cp_Qm3uS.js} +1 -1
  73. package/dist/server/assets/_tanstack-start-manifest_v-GQWxvAsR.js +4 -0
  74. package/dist/server/assets/{addon-search-WCacnXal.js → addon-search-BUjn-C-R.js} +190 -176
  75. package/dist/server/assets/{addon-unicode11-BhCmKRb7.js → addon-unicode11-BQz-Cn6z.js} +14 -20
  76. package/dist/server/assets/{addon-webgl-hypMW_go.js → addon-webgl-CgJYuUAA.js} +47 -48
  77. package/dist/server/assets/{arc-CSj375cS.js → arc-BAImyMJ-.js} +1 -1
  78. package/dist/server/assets/{architecture-7HQA4BMR-MwhJw22a.js → architecture-7HQA4BMR-BldYj4EA.js} +6 -6
  79. package/dist/server/assets/{architectureDiagram-VXUJARFQ-DyVVxp88.js → architectureDiagram-VXUJARFQ-iEEYNhTp.js} +6 -6
  80. package/dist/server/assets/{blockDiagram-VD42YOAC-aGbi3Kv_.js → blockDiagram-VD42YOAC-CpXPlM5p.js} +6 -6
  81. package/dist/server/assets/{c4Diagram-YG6GDRKO-DhyUvqPs.js → c4Diagram-YG6GDRKO-C0jPSgch.js} +2 -2
  82. package/dist/server/assets/{channel-CJthnbp1.js → channel-BXmVLq-u.js} +1 -1
  83. package/dist/server/assets/{chunk-4BX2VUAB-Ch7bkquC.js → chunk-4BX2VUAB-BRh-MKqM.js} +1 -1
  84. package/dist/server/assets/{chunk-55IACEB6-CLKopZj8.js → chunk-55IACEB6-D-II5Uvr.js} +1 -1
  85. package/dist/server/assets/{chunk-B4BG7PRW-BVv_KeWC.js → chunk-B4BG7PRW-CLc3MoS-.js} +4 -4
  86. package/dist/server/assets/{chunk-DI55MBZ5-C0_HSk1s.js → chunk-DI55MBZ5-rIuRlmCw.js} +3 -3
  87. package/dist/server/assets/{chunk-FMBD7UC4-3fy4TSVt.js → chunk-FMBD7UC4-CwpJS1jy.js} +1 -1
  88. package/dist/server/assets/{chunk-QN33PNHL-QdSQZPQz.js → chunk-QN33PNHL-DDjZ9iRW.js} +1 -1
  89. package/dist/server/assets/{chunk-QZHKN3VN-Dak-YXr5.js → chunk-QZHKN3VN-CqXxabdj.js} +1 -1
  90. package/dist/server/assets/{chunk-TZMSLE5B-ThSW8afd.js → chunk-TZMSLE5B-YmXbykHL.js} +1 -1
  91. package/dist/server/assets/{classDiagram-v2-WZHVMYZB-Cmkciu-2.js → classDiagram-2ON5EDUG-B5goRv2J.js} +5 -5
  92. package/dist/server/assets/{classDiagram-2ON5EDUG-Cmkciu-2.js → classDiagram-v2-WZHVMYZB-B5goRv2J.js} +5 -5
  93. package/dist/server/assets/{clone-ciZ96ZK2.js → clone-8krOB2fX.js} +1 -1
  94. package/dist/server/assets/{cose-bilkent-S5V4N54A-CP20--8W.js → cose-bilkent-S5V4N54A-CT0fXZG5.js} +1 -1
  95. package/dist/server/assets/{dagre-6UL2VRFP-D9LrmNJH.js → dagre-6UL2VRFP-BKnoyRYf.js} +6 -6
  96. package/dist/server/assets/{diagram-PSM6KHXK-l3xztHYH.js → diagram-PSM6KHXK-3yiYIfYG.js} +7 -7
  97. package/dist/server/assets/{diagram-QEK2KX5R-i9twZ5aj.js → diagram-QEK2KX5R-BZS0Hd_d.js} +6 -6
  98. package/dist/server/assets/{diagram-S2PKOQOG-DIHmhvbo.js → diagram-S2PKOQOG-BkGWooM_.js} +6 -6
  99. package/dist/server/assets/{erDiagram-Q2GNP2WA-fMWrL8ta.js → erDiagram-Q2GNP2WA-BlJW8Tz3.js} +4 -4
  100. package/dist/server/assets/{flowDiagram-NV44I4VS-BqKFb2gL.js → flowDiagram-NV44I4VS-BGWlA0EG.js} +5 -5
  101. package/dist/server/assets/{ganttDiagram-JELNMOA3-XwScweUm.js → ganttDiagram-JELNMOA3-Cf3LALG6.js} +1 -1
  102. package/dist/server/assets/{gitGraph-G5XIXVHT-DDO_mRkl.js → gitGraph-G5XIXVHT-B9S3heYN.js} +6 -6
  103. package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-B2e2LaZt.js → gitGraphDiagram-V2S2FVAM-C4_f3rx4.js} +7 -7
  104. package/dist/server/assets/{graph-DqF0fiyC.js → graph-DYj8A2bp.js} +2 -2
  105. package/dist/server/assets/{highlighted-body-B3W2YXNL-B9lH9lqG.js → highlighted-body-B3W2YXNL-Df68BBlw.js} +1 -1
  106. package/dist/server/assets/{index-ihiIN7Vo.js → index-7UlzI_dK.js} +1 -1
  107. package/dist/server/assets/{index-BZSpvQ87.js → index-B5gG6MB7.js} +1 -1
  108. package/dist/server/assets/{index-Oepbj3Cu.js → index-BDEhO1ya.js} +1 -1
  109. package/dist/server/assets/{index-BRPRiIzs.js → index-BYKwSvPL.js} +1 -1
  110. package/dist/server/assets/{index-C4LlK8zq.js → index-BiwgNHMQ.js} +1 -1
  111. package/dist/server/assets/{index-C0T5sHCj.js → index-CISg2hqm.js} +1 -1
  112. package/dist/server/assets/{index-iLqcyvvo.js → index-CMq_WJJ7.js} +1 -1
  113. package/dist/server/assets/{index-dOV5Jyvk.js → index-ChV05j8R.js} +1 -1
  114. package/dist/server/assets/{index-Cz3ed2GU.js → index-CopZNvBd.js} +1 -1
  115. package/dist/server/assets/{index-C35Eg9Oe.js → index-CxMB5JY7.js} +1 -1
  116. package/dist/server/assets/{index-QY-ciJ02.js → index-DIuiSZSj.js} +1 -1
  117. package/dist/server/assets/{index-BuxMoI9R.js → index-DqsmbFGQ.js} +1 -1
  118. package/dist/server/assets/{index-BFzH6uNZ.js → index-DyUjxC3i.js} +1 -1
  119. package/dist/server/assets/{info-VBDWY6EO-BSfwYSKN.js → info-VBDWY6EO-BmkTQbMv.js} +6 -6
  120. package/dist/server/assets/{infoDiagram-HS3SLOUP-BcPNSucE.js → infoDiagram-HS3SLOUP-CKR2MY9e.js} +5 -5
  121. package/dist/server/assets/{journeyDiagram-XKPGCS4Q-B_JljIi2.js → journeyDiagram-XKPGCS4Q-DPsUHcaJ.js} +4 -4
  122. package/dist/server/assets/{kanban-definition-3W4ZIXB7-B5aPUZvg.js → kanban-definition-3W4ZIXB7-C5QIVVhD.js} +2 -2
  123. package/dist/server/assets/{layout-Cv2BYqNX.js → layout-R-e4wg8W.js} +4 -4
  124. package/dist/server/assets/{mermaid-3ZIDBTTL-D_akVRms.js → mermaid-3ZIDBTTL-ByDi8HnK.js} +1 -1
  125. package/dist/server/assets/{mermaid-parser.core-uDeqwrPN.js → mermaid-parser.core-C9wm222O.js} +11 -11
  126. package/dist/server/assets/{mindmap-definition-VGOIOE7T-C9LF9XTT.js → mindmap-definition-VGOIOE7T-1gh-bXjE.js} +3 -3
  127. package/dist/server/assets/{packet-DYOGHKS2-lRBX1T35.js → packet-DYOGHKS2-Bxy3z0_p.js} +6 -6
  128. package/dist/server/assets/{pie-VRWISCQL-BCZ9vmsj.js → pie-VRWISCQL-BlDk8RiA.js} +6 -6
  129. package/dist/server/assets/{pieDiagram-ADFJNKIX-HYsm0km8.js → pieDiagram-ADFJNKIX-CwnESx-9.js} +7 -7
  130. package/dist/server/assets/{quadrantDiagram-AYHSOK5B-Fdzz2j2T.js → quadrantDiagram-AYHSOK5B-B-US3olm.js} +1 -1
  131. package/dist/server/assets/{radar-ZZBFDIW7-iZ-6xOx9.js → radar-ZZBFDIW7-Dy71dV8F.js} +6 -6
  132. package/dist/server/assets/{requirementDiagram-UZGBJVZJ-CeHGAs1A.js → requirementDiagram-UZGBJVZJ-DZZQz_qm.js} +3 -3
  133. package/dist/server/assets/{router-A58OKuIG.js → router-C6awDsR6.js} +3417 -731
  134. package/dist/server/assets/{sankeyDiagram-TZEHDZUN-DXgjoM9B.js → sankeyDiagram-TZEHDZUN-DMIqo7mj.js} +1 -1
  135. package/dist/server/assets/{sequenceDiagram-WL72ISMW-BK24aHRm.js → sequenceDiagram-WL72ISMW-B8koBIGl.js} +3 -3
  136. package/dist/server/assets/{stateDiagram-FKZM4ZOC-uW8qduwY.js → stateDiagram-FKZM4ZOC-BHze-gTI.js} +8 -8
  137. package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-O0D8F8J2.js → stateDiagram-v2-4FDKWEC3-DRFmfjyi.js} +4 -4
  138. package/dist/server/assets/{timeline-definition-IT6M3QCI-BaSl1O8h.js → timeline-definition-IT6M3QCI-CEkzxLSR.js} +2 -2
  139. package/dist/server/assets/{treemap-GDKQZRPO-DqxwR6w-.js → treemap-GDKQZRPO-0VBmxaAW.js} +6 -6
  140. package/dist/server/assets/{workspace._workspaceId-CZZSeH-P.js → workspace._workspaceId-BtMBxm9H.js} +6 -1
  141. package/dist/server/assets/{workspace._workspaceId-B09dwAP5.js → workspace._workspaceId-C7ra183B.js} +1 -1
  142. package/dist/server/assets/{xterm-DnMRSOdQ.js → xterm-CsaVCelU.js} +517 -579
  143. package/dist/server/assets/{xychartDiagram-PRI3JC2R-Du3l-FcL.js → xychartDiagram-PRI3JC2R-BQCIxu2L.js} +1 -1
  144. package/dist/server/server.js +2 -2
  145. package/dist/start-server.mjs +9114 -7387
  146. package/dist/terminal-daemon.mjs +229 -233
  147. package/package.json +14 -12
  148. package/dist/client/assets/addon-search-DBOYg5r3.js +0 -1
  149. package/dist/client/assets/addon-unicode11-LsnDChsR.js +0 -1
  150. package/dist/client/assets/channel-CnUqAM2K.js +0 -1
  151. package/dist/client/assets/classDiagram-2ON5EDUG-Bl2ARqSW.js +0 -1
  152. package/dist/client/assets/classDiagram-v2-WZHVMYZB-Bl2ARqSW.js +0 -1
  153. package/dist/client/assets/clone-DoC0Yowh.js +0 -1
  154. package/dist/client/assets/main-D4u0xEOA.css +0 -1
  155. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-B9BH2TF6.js +0 -1
  156. package/dist/client/assets/workspace._workspaceId-D3mRY9_6.js +0 -1
  157. package/dist/client/assets/xterm-CPJFL3h0.js +0 -10
  158. package/dist/server/assets/_tanstack-start-manifest_v-cBOqdEgL.js +0 -4
package/dist/openapi.json CHANGED
@@ -2326,10 +2326,10 @@
2326
2326
  "range": {
2327
2327
  "type": "string",
2328
2328
  "enum": [
2329
+ "all",
2329
2330
  "hour",
2330
2331
  "day",
2331
- "week",
2332
- "all"
2332
+ "week"
2333
2333
  ]
2334
2334
  }
2335
2335
  },
@@ -3042,6 +3042,297 @@
3042
3042
  ]
3043
3043
  }
3044
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
+ ]
3298
+ }
3299
+ }
3300
+ }
3301
+ },
3302
+ "default": {
3303
+ "$ref": "#/components/responses/Error"
3304
+ }
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
+ }
3334
+ }
3335
+ },
3045
3336
  "/services.health": {
3046
3337
  "get": {
3047
3338
  "operationId": "services.health",
@@ -10517,11 +10808,11 @@
10517
10808
  }
10518
10809
  }
10519
10810
  },
10520
- "/tasks.list": {
10811
+ "/clientState.list": {
10521
10812
  "get": {
10522
- "operationId": "tasks.list",
10813
+ "operationId": "clientState.list",
10523
10814
  "tags": [
10524
- "tasks"
10815
+ "clientState"
10525
10816
  ],
10526
10817
  "responses": {
10527
10818
  "200": {
@@ -10537,38 +10828,351 @@
10537
10828
  "data": {
10538
10829
  "type": "object",
10539
10830
  "properties": {
10540
- "tasks": {
10831
+ "entries": {
10541
10832
  "type": "array",
10542
10833
  "items": {
10543
- "type": "object",
10544
- "properties": {
10545
- "workspaceExists": {
10546
- "type": "boolean"
10547
- },
10548
- "id": {
10549
- "type": "string"
10550
- },
10551
- "workspaceId": {
10552
- "type": "string"
10553
- },
10554
- "project": {
10555
- "type": "string"
10556
- },
10557
- "branch": {
10558
- "type": "string"
10559
- },
10560
- "prompt": {
10561
- "type": "string"
10562
- },
10563
- "status": {
10564
- "type": "string",
10565
- "enum": [
10566
- "running",
10567
- "completed",
10568
- "failed"
10569
- ],
10570
- "description": "Persisted-task status. Mirrors the `tasks.status` enum in `schema.ts`.\n\nKept distinct from the in-memory `TaskInfo.status` (declared in the\nservice tier) because the service tier may add transient states (e.g.\n`pending` for queued tasks) without touching the persisted column."
10571
- },
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"
10981
+ },
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
11005
+ }
11006
+ }
11007
+ }
11008
+ }
11009
+ }
11010
+ },
11011
+ "/clientState.delete": {
11012
+ "post": {
11013
+ "operationId": "clientState.delete",
11014
+ "tags": [
11015
+ "clientState"
11016
+ ],
11017
+ "responses": {
11018
+ "200": {
11019
+ "description": "Successful response",
11020
+ "content": {
11021
+ "application/json": {
11022
+ "schema": {
11023
+ "type": "object",
11024
+ "properties": {
11025
+ "result": {
11026
+ "type": "object",
11027
+ "properties": {
11028
+ "data": {
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
11063
+ }
11064
+ ],
11065
+ "discriminator": {
11066
+ "propertyName": "ok"
11067
+ }
11068
+ }
11069
+ },
11070
+ "required": [
11071
+ "data"
11072
+ ]
11073
+ }
11074
+ },
11075
+ "required": [
11076
+ "result"
11077
+ ]
11078
+ }
11079
+ }
11080
+ }
11081
+ },
11082
+ "default": {
11083
+ "$ref": "#/components/responses/Error"
11084
+ }
11085
+ },
11086
+ "requestBody": {
11087
+ "required": true,
11088
+ "content": {
11089
+ "application/json": {
11090
+ "schema": {
11091
+ "type": "object",
11092
+ "properties": {
11093
+ "key": {
11094
+ "type": "string"
11095
+ },
11096
+ "scope": {
11097
+ "type": "string",
11098
+ "enum": [
11099
+ "desktop",
11100
+ "mobile",
11101
+ "all"
11102
+ ]
11103
+ },
11104
+ "baseVersion": {
11105
+ "type": "number"
11106
+ },
11107
+ "clientId": {
11108
+ "type": "string"
11109
+ }
11110
+ },
11111
+ "required": [
11112
+ "key",
11113
+ "scope",
11114
+ "baseVersion",
11115
+ "clientId"
11116
+ ],
11117
+ "additionalProperties": false
11118
+ }
11119
+ }
11120
+ }
11121
+ }
11122
+ }
11123
+ },
11124
+ "/tasks.list": {
11125
+ "get": {
11126
+ "operationId": "tasks.list",
11127
+ "tags": [
11128
+ "tasks"
11129
+ ],
11130
+ "responses": {
11131
+ "200": {
11132
+ "description": "Successful response",
11133
+ "content": {
11134
+ "application/json": {
11135
+ "schema": {
11136
+ "type": "object",
11137
+ "properties": {
11138
+ "result": {
11139
+ "type": "object",
11140
+ "properties": {
11141
+ "data": {
11142
+ "type": "object",
11143
+ "properties": {
11144
+ "tasks": {
11145
+ "type": "array",
11146
+ "items": {
11147
+ "type": "object",
11148
+ "properties": {
11149
+ "workspaceExists": {
11150
+ "type": "boolean"
11151
+ },
11152
+ "id": {
11153
+ "type": "string"
11154
+ },
11155
+ "workspaceId": {
11156
+ "type": "string"
11157
+ },
11158
+ "project": {
11159
+ "type": "string"
11160
+ },
11161
+ "branch": {
11162
+ "type": "string"
11163
+ },
11164
+ "prompt": {
11165
+ "type": "string"
11166
+ },
11167
+ "status": {
11168
+ "type": "string",
11169
+ "enum": [
11170
+ "running",
11171
+ "completed",
11172
+ "failed"
11173
+ ],
11174
+ "description": "Persisted-task status. Mirrors the `tasks.status` enum in `schema.ts`.\n\nKept distinct from the in-memory `TaskInfo.status` (declared in the\nservice tier) because the service tier may add transient states (e.g.\n`pending` for queued tasks) without touching the persisted column."
11175
+ },
10572
11176
  "sessionId": {
10573
11177
  "type": "string"
10574
11178
  },
@@ -11518,6 +12122,242 @@
11518
12122
  ],
11519
12123
  "additionalProperties": false
11520
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."
12308
+ },
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."
12321
+ },
12322
+ "url": {
12323
+ "type": [
12324
+ "string",
12325
+ "null"
12326
+ ],
12327
+ "description": "The job's page on the forge."
12328
+ },
12329
+ "startedAt": {
12330
+ "type": [
12331
+ "string",
12332
+ "null"
12333
+ ]
12334
+ },
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."
12347
+ }
12348
+ },
12349
+ "required": [
12350
+ "id",
12351
+ "name",
12352
+ "workflowName",
12353
+ "state",
12354
+ "url",
12355
+ "startedAt",
12356
+ "completedAt",
12357
+ "description"
12358
+ ],
12359
+ "additionalProperties": false
12360
+ },
11521
12361
  "TerminalListEntry": {
11522
12362
  "type": "object",
11523
12363
  "properties": {
@@ -11652,6 +12492,19 @@
11652
12492
  },
11653
12493
  "additionalProperties": {},
11654
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."
11655
12508
  }
11656
12509
  },
11657
12510
  "additionalProperties": {}
@@ -13201,6 +14054,49 @@
13201
14054
  },
13202
14055
  "additionalProperties": false
13203
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
+ },
13204
14100
  "SubmitResult": {
13205
14101
  "type": "object",
13206
14102
  "properties": {