@band-app/server 0.45.0 → 0.46.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 (74) hide show
  1. package/dist/client/_shell.html +0 -0
  2. package/dist/client/assets/{TerminalPanel-BSgLxcBa.js → TerminalPanel-pkSSHqjB.js} +1 -1
  3. package/dist/client/assets/{_basePickBy-B2D0UP39.js → _basePickBy-30wa-B3K.js} +1 -1
  4. package/dist/client/assets/{_baseUniq-DI8ZgEoy.js → _baseUniq-DYFc8VYN.js} +1 -1
  5. package/dist/client/assets/{arc-CusSSOnB.js → arc-aFj-W69O.js} +1 -1
  6. package/dist/client/assets/{architectureDiagram-VXUJARFQ--yeCQZBi.js → architectureDiagram-VXUJARFQ-CUH4fJYm.js} +1 -1
  7. package/dist/client/assets/{blockDiagram-VD42YOAC-CFm1Wl9h.js → blockDiagram-VD42YOAC-CRkquXXQ.js} +1 -1
  8. package/dist/client/assets/{c4Diagram-YG6GDRKO-D_etQru9.js → c4Diagram-YG6GDRKO-CD-EJ5GA.js} +1 -1
  9. package/dist/client/assets/channel-i7vnUKiG.js +1 -0
  10. package/dist/client/assets/{chunk-4BX2VUAB-DKxCZlmV.js → chunk-4BX2VUAB-VhYl9M0k.js} +1 -1
  11. package/dist/client/assets/{chunk-55IACEB6-D_2NrIuc.js → chunk-55IACEB6-BQC_5pzd.js} +1 -1
  12. package/dist/client/assets/{chunk-B4BG7PRW-MyWT4c02.js → chunk-B4BG7PRW-C1FqesKA.js} +1 -1
  13. package/dist/client/assets/{chunk-DI55MBZ5-CCGrM_BO.js → chunk-DI55MBZ5-DYC7fpTc.js} +1 -1
  14. package/dist/client/assets/{chunk-FMBD7UC4-DW8XMS2B.js → chunk-FMBD7UC4-DwHYZG2m.js} +1 -1
  15. package/dist/client/assets/{chunk-QN33PNHL-DE6Flnfx.js → chunk-QN33PNHL-QrOgqJ2x.js} +1 -1
  16. package/dist/client/assets/{chunk-QZHKN3VN-DT-AC-2s.js → chunk-QZHKN3VN-BfeDvyyD.js} +1 -1
  17. package/dist/client/assets/{chunk-TZMSLE5B-1CRV9zhr.js → chunk-TZMSLE5B-DqbFla-p.js} +1 -1
  18. package/dist/client/assets/classDiagram-2ON5EDUG-QKheXL6H.js +1 -0
  19. package/dist/client/assets/classDiagram-v2-WZHVMYZB-QKheXL6H.js +1 -0
  20. package/dist/client/assets/clone-C6EEluIC.js +1 -0
  21. package/dist/client/assets/{cose-bilkent-S5V4N54A-CylrPDlJ.js → cose-bilkent-S5V4N54A-Dtr68WKY.js} +1 -1
  22. package/dist/client/assets/{dagre-6UL2VRFP-DIiGfSPE.js → dagre-6UL2VRFP-DeO-jAE4.js} +1 -1
  23. package/dist/client/assets/{diagram-PSM6KHXK-Dhg2Anht.js → diagram-PSM6KHXK-DIoKKrik.js} +1 -1
  24. package/dist/client/assets/{diagram-QEK2KX5R-CHtAFtYr.js → diagram-QEK2KX5R-YSmrv8Ap.js} +1 -1
  25. package/dist/client/assets/{diagram-S2PKOQOG-BhV5j-TR.js → diagram-S2PKOQOG-Bkn85uc6.js} +1 -1
  26. package/dist/client/assets/{erDiagram-Q2GNP2WA-BRnWDRFF.js → erDiagram-Q2GNP2WA-BwNSRuDm.js} +1 -1
  27. package/dist/client/assets/{flowDiagram-NV44I4VS-C3t3xUts.js → flowDiagram-NV44I4VS-Bi4yldps.js} +1 -1
  28. package/dist/client/assets/{ganttDiagram-JELNMOA3-Dhi4RuL2.js → ganttDiagram-JELNMOA3-BArJltql.js} +1 -1
  29. package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-DoapAKa4.js → gitGraphDiagram-V2S2FVAM-DL2anp1a.js} +1 -1
  30. package/dist/client/assets/{graph-zHrJcjIn.js → graph-CA6szdeU.js} +1 -1
  31. package/dist/client/assets/{highlighted-body-B3W2YXNL-C0nDS5Bw.js → highlighted-body-B3W2YXNL-Ce8JER1R.js} +1 -1
  32. package/dist/client/assets/{index-CXJmiMyB.js → index-4MpV9Rhm.js} +1 -1
  33. package/dist/client/assets/{index-DFQ-JoWY.js → index-8yx33Rgn.js} +1 -1
  34. package/dist/client/assets/{index-BSzLU2AZ.js → index-BeG__tJz.js} +1 -1
  35. package/dist/client/assets/{index-Dvedoadn.js → index-BhEFhSvO.js} +1 -1
  36. package/dist/client/assets/{index-J7dKORCr.js → index-C5m9KGZf.js} +1 -1
  37. package/dist/client/assets/{index-BvocwYRD.js → index-CSQuqpCk.js} +1 -1
  38. package/dist/client/assets/{index-CQNzNkU1.js → index-Cro4_Zyl.js} +1 -1
  39. package/dist/client/assets/{index-AovJALw-.js → index-Czi_pJOK.js} +1 -1
  40. package/dist/client/assets/{index-j32sI8jH.js → index-D-zrg5eL.js} +1 -1
  41. package/dist/client/assets/{index-CIUDRPfZ.js → index-D757VVMZ.js} +1 -1
  42. package/dist/client/assets/{index-DZVQFIvA.js → index-DDvAHSPZ.js} +1 -1
  43. package/dist/client/assets/{index-DEjeNKIN.js → index-DeSewZzo.js} +1 -1
  44. package/dist/client/assets/{index-CmSk8DaX.js → index-DpxJvU7W.js} +1 -1
  45. package/dist/client/assets/{infoDiagram-HS3SLOUP-BQcGr7vK.js → infoDiagram-HS3SLOUP-opriBuJD.js} +1 -1
  46. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-BZoNgguo.js → journeyDiagram-XKPGCS4Q-t3TBG9zd.js} +1 -1
  47. package/dist/client/assets/{kanban-definition-3W4ZIXB7-BAd3onZI.js → kanban-definition-3W4ZIXB7-D1KUbYAi.js} +1 -1
  48. package/dist/client/assets/{layout-xQCnjWzr.js → layout-BaSYphI5.js} +1 -1
  49. package/dist/client/assets/main-BXb3TLCw.css +1 -0
  50. package/dist/client/assets/{main-P6rS56AX.js → main-Bqsm7w7O.js} +254 -254
  51. package/dist/client/assets/{mindmap-definition-VGOIOE7T-CKfAWxeg.js → mindmap-definition-VGOIOE7T-ChEtbA0z.js} +1 -1
  52. package/dist/client/assets/{pieDiagram-ADFJNKIX-DnpXzjrU.js → pieDiagram-ADFJNKIX-D-2g15uY.js} +1 -1
  53. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-CHa47eqO.js → quadrantDiagram-AYHSOK5B-3I1XUOAj.js} +1 -1
  54. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-ClcGO6HD.js → requirementDiagram-UZGBJVZJ-rSbxWkaA.js} +1 -1
  55. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-C9r89KBR.js → sankeyDiagram-TZEHDZUN-C4ZbxfZu.js} +1 -1
  56. package/dist/client/assets/{sequenceDiagram-WL72ISMW-DXTeMOQe.js → sequenceDiagram-WL72ISMW-Bjrx7GQ9.js} +1 -1
  57. package/dist/client/assets/{stateDiagram-FKZM4ZOC-BWenJpMn.js → stateDiagram-FKZM4ZOC-DmItUmdi.js} +1 -1
  58. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-CABlMyog.js +1 -0
  59. package/dist/client/assets/{timeline-definition-IT6M3QCI-mAlOxnDq.js → timeline-definition-IT6M3QCI-C0WtBwwx.js} +1 -1
  60. package/dist/client/assets/{treemap-GDKQZRPO-D9zuivHV.js → treemap-GDKQZRPO-B_sR8-qR.js} +1 -1
  61. package/dist/client/assets/{worktree._worktreeId-CRJzjLWS.js → worktree._worktreeId-Dx83Amei.js} +1 -1
  62. package/dist/client/assets/{worktree._worktreeId-CrfhluSv.js → worktree._worktreeId-XB6R8O1k.js} +1 -1
  63. package/dist/client/assets/{xychartDiagram-PRI3JC2R-B_ixi0uG.js → xychartDiagram-PRI3JC2R-BgnyoF2_.js} +1 -1
  64. package/dist/migrations/20261011133526_worktree_checkpoints/migration.sql +21 -0
  65. package/dist/migrations/20261011133526_worktree_checkpoints/snapshot.json +4379 -0
  66. package/dist/openapi.json +1055 -2
  67. package/dist/start-server.mjs +3973 -2701
  68. package/package.json +5 -5
  69. package/dist/client/assets/channel-cIJkhe3e.js +0 -1
  70. package/dist/client/assets/classDiagram-2ON5EDUG-HY3lvxou.js +0 -1
  71. package/dist/client/assets/classDiagram-v2-WZHVMYZB-HY3lvxou.js +0 -1
  72. package/dist/client/assets/clone-Ce-j_cG_.js +0 -1
  73. package/dist/client/assets/main-D0zhYKVY.css +0 -1
  74. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-DKVIf8UV.js +0 -1
package/dist/openapi.json CHANGED
@@ -2105,6 +2105,840 @@
2105
2105
  }
2106
2106
  }
2107
2107
  },
2108
+ "/checkpoints.list": {
2109
+ "get": {
2110
+ "operationId": "checkpoints.list",
2111
+ "tags": [
2112
+ "checkpoints"
2113
+ ],
2114
+ "responses": {
2115
+ "200": {
2116
+ "description": "Successful response",
2117
+ "content": {
2118
+ "application/json": {
2119
+ "schema": {
2120
+ "type": "object",
2121
+ "properties": {
2122
+ "result": {
2123
+ "type": "object",
2124
+ "properties": {
2125
+ "data": {
2126
+ "type": "object",
2127
+ "properties": {
2128
+ "checkpoints": {
2129
+ "type": "array",
2130
+ "items": {
2131
+ "$ref": "#/components/schemas/CheckpointView"
2132
+ }
2133
+ },
2134
+ "warning": {
2135
+ "type": [
2136
+ "string",
2137
+ "null"
2138
+ ]
2139
+ }
2140
+ },
2141
+ "required": [
2142
+ "checkpoints",
2143
+ "warning"
2144
+ ],
2145
+ "additionalProperties": false
2146
+ }
2147
+ },
2148
+ "required": [
2149
+ "data"
2150
+ ]
2151
+ }
2152
+ },
2153
+ "required": [
2154
+ "result"
2155
+ ]
2156
+ }
2157
+ }
2158
+ }
2159
+ },
2160
+ "default": {
2161
+ "$ref": "#/components/responses/Error"
2162
+ }
2163
+ },
2164
+ "parameters": [
2165
+ {
2166
+ "name": "input",
2167
+ "in": "query",
2168
+ "required": true,
2169
+ "style": "deepObject",
2170
+ "content": {
2171
+ "application/json": {
2172
+ "schema": {
2173
+ "type": "object",
2174
+ "properties": {
2175
+ "worktreeId": {
2176
+ "type": "string"
2177
+ }
2178
+ },
2179
+ "required": [
2180
+ "worktreeId"
2181
+ ],
2182
+ "additionalProperties": false
2183
+ }
2184
+ }
2185
+ }
2186
+ }
2187
+ ]
2188
+ }
2189
+ },
2190
+ "/checkpoints.take": {
2191
+ "post": {
2192
+ "operationId": "checkpoints.take",
2193
+ "description": "Takes a checkpoint now. Answers `unchanged` when nothing differs from the newest one.",
2194
+ "tags": [
2195
+ "checkpoints"
2196
+ ],
2197
+ "responses": {
2198
+ "200": {
2199
+ "description": "Successful response",
2200
+ "content": {
2201
+ "application/json": {
2202
+ "schema": {
2203
+ "type": "object",
2204
+ "properties": {
2205
+ "result": {
2206
+ "type": "object",
2207
+ "properties": {
2208
+ "data": {
2209
+ "oneOf": [
2210
+ {
2211
+ "type": "object",
2212
+ "properties": {
2213
+ "status": {
2214
+ "type": "string",
2215
+ "const": "created"
2216
+ },
2217
+ "checkpoint": {
2218
+ "$ref": "#/components/schemas/CheckpointView"
2219
+ }
2220
+ },
2221
+ "required": [
2222
+ "status",
2223
+ "checkpoint"
2224
+ ],
2225
+ "additionalProperties": false
2226
+ },
2227
+ {
2228
+ "type": "object",
2229
+ "properties": {
2230
+ "status": {
2231
+ "type": "string",
2232
+ "const": "unchanged"
2233
+ },
2234
+ "checkpoint": {
2235
+ "$ref": "#/components/schemas/CheckpointView"
2236
+ }
2237
+ },
2238
+ "required": [
2239
+ "status",
2240
+ "checkpoint"
2241
+ ],
2242
+ "additionalProperties": false
2243
+ },
2244
+ {
2245
+ "type": "object",
2246
+ "properties": {
2247
+ "status": {
2248
+ "type": "string",
2249
+ "const": "skipped"
2250
+ },
2251
+ "reason": {
2252
+ "type": "string"
2253
+ }
2254
+ },
2255
+ "required": [
2256
+ "status",
2257
+ "reason"
2258
+ ],
2259
+ "additionalProperties": false
2260
+ }
2261
+ ],
2262
+ "discriminator": {
2263
+ "propertyName": "status"
2264
+ }
2265
+ }
2266
+ },
2267
+ "required": [
2268
+ "data"
2269
+ ]
2270
+ }
2271
+ },
2272
+ "required": [
2273
+ "result"
2274
+ ]
2275
+ }
2276
+ }
2277
+ }
2278
+ },
2279
+ "default": {
2280
+ "$ref": "#/components/responses/Error"
2281
+ }
2282
+ },
2283
+ "requestBody": {
2284
+ "required": true,
2285
+ "content": {
2286
+ "application/json": {
2287
+ "schema": {
2288
+ "type": "object",
2289
+ "properties": {
2290
+ "worktreeId": {
2291
+ "type": "string"
2292
+ }
2293
+ },
2294
+ "required": [
2295
+ "worktreeId"
2296
+ ],
2297
+ "additionalProperties": false
2298
+ }
2299
+ }
2300
+ }
2301
+ }
2302
+ }
2303
+ },
2304
+ "/checkpoints.changes": {
2305
+ "get": {
2306
+ "operationId": "checkpoints.changes",
2307
+ "tags": [
2308
+ "checkpoints"
2309
+ ],
2310
+ "responses": {
2311
+ "200": {
2312
+ "description": "Successful response",
2313
+ "content": {
2314
+ "application/json": {
2315
+ "schema": {
2316
+ "type": "object",
2317
+ "properties": {
2318
+ "result": {
2319
+ "type": "object",
2320
+ "properties": {
2321
+ "data": {
2322
+ "type": "object",
2323
+ "properties": {
2324
+ "checkpoint": {
2325
+ "$ref": "#/components/schemas/CheckpointView"
2326
+ },
2327
+ "files": {
2328
+ "type": "array",
2329
+ "items": {
2330
+ "$ref": "#/components/schemas/ChangedFile"
2331
+ }
2332
+ }
2333
+ },
2334
+ "required": [
2335
+ "checkpoint",
2336
+ "files"
2337
+ ],
2338
+ "additionalProperties": false
2339
+ }
2340
+ },
2341
+ "required": [
2342
+ "data"
2343
+ ]
2344
+ }
2345
+ },
2346
+ "required": [
2347
+ "result"
2348
+ ]
2349
+ }
2350
+ }
2351
+ }
2352
+ },
2353
+ "default": {
2354
+ "$ref": "#/components/responses/Error"
2355
+ }
2356
+ },
2357
+ "parameters": [
2358
+ {
2359
+ "name": "input",
2360
+ "in": "query",
2361
+ "required": true,
2362
+ "style": "deepObject",
2363
+ "content": {
2364
+ "application/json": {
2365
+ "schema": {
2366
+ "type": "object",
2367
+ "properties": {
2368
+ "worktreeId": {
2369
+ "type": "string"
2370
+ },
2371
+ "checkpointId": {
2372
+ "type": "string"
2373
+ }
2374
+ },
2375
+ "required": [
2376
+ "worktreeId"
2377
+ ],
2378
+ "additionalProperties": false
2379
+ }
2380
+ }
2381
+ }
2382
+ }
2383
+ ]
2384
+ }
2385
+ },
2386
+ "/checkpoints.diff": {
2387
+ "get": {
2388
+ "operationId": "checkpoints.diff",
2389
+ "tags": [
2390
+ "checkpoints"
2391
+ ],
2392
+ "responses": {
2393
+ "200": {
2394
+ "description": "Successful response",
2395
+ "content": {
2396
+ "application/json": {
2397
+ "schema": {
2398
+ "type": "object",
2399
+ "properties": {
2400
+ "result": {
2401
+ "type": "object",
2402
+ "properties": {
2403
+ "data": {
2404
+ "type": "object",
2405
+ "properties": {
2406
+ "diff": {
2407
+ "type": "string"
2408
+ }
2409
+ },
2410
+ "required": [
2411
+ "diff"
2412
+ ],
2413
+ "additionalProperties": false
2414
+ }
2415
+ },
2416
+ "required": [
2417
+ "data"
2418
+ ]
2419
+ }
2420
+ },
2421
+ "required": [
2422
+ "result"
2423
+ ]
2424
+ }
2425
+ }
2426
+ }
2427
+ },
2428
+ "default": {
2429
+ "$ref": "#/components/responses/Error"
2430
+ }
2431
+ },
2432
+ "parameters": [
2433
+ {
2434
+ "name": "input",
2435
+ "in": "query",
2436
+ "required": true,
2437
+ "style": "deepObject",
2438
+ "content": {
2439
+ "application/json": {
2440
+ "schema": {
2441
+ "type": "object",
2442
+ "properties": {
2443
+ "path": {
2444
+ "type": "string"
2445
+ },
2446
+ "worktreeId": {
2447
+ "type": "string"
2448
+ },
2449
+ "checkpointId": {
2450
+ "type": "string"
2451
+ }
2452
+ },
2453
+ "required": [
2454
+ "path",
2455
+ "worktreeId"
2456
+ ],
2457
+ "additionalProperties": false
2458
+ }
2459
+ }
2460
+ }
2461
+ }
2462
+ ]
2463
+ }
2464
+ },
2465
+ "/checkpoints.files": {
2466
+ "get": {
2467
+ "operationId": "checkpoints.files",
2468
+ "tags": [
2469
+ "checkpoints"
2470
+ ],
2471
+ "responses": {
2472
+ "200": {
2473
+ "description": "Successful response",
2474
+ "content": {
2475
+ "application/json": {
2476
+ "schema": {
2477
+ "type": "object",
2478
+ "properties": {
2479
+ "result": {
2480
+ "type": "object",
2481
+ "properties": {
2482
+ "data": {
2483
+ "type": "object",
2484
+ "properties": {
2485
+ "checkpoint": {
2486
+ "$ref": "#/components/schemas/CheckpointView"
2487
+ },
2488
+ "paths": {
2489
+ "type": "array",
2490
+ "items": {
2491
+ "type": "string"
2492
+ }
2493
+ }
2494
+ },
2495
+ "required": [
2496
+ "checkpoint",
2497
+ "paths"
2498
+ ],
2499
+ "additionalProperties": false
2500
+ }
2501
+ },
2502
+ "required": [
2503
+ "data"
2504
+ ]
2505
+ }
2506
+ },
2507
+ "required": [
2508
+ "result"
2509
+ ]
2510
+ }
2511
+ }
2512
+ }
2513
+ },
2514
+ "default": {
2515
+ "$ref": "#/components/responses/Error"
2516
+ }
2517
+ },
2518
+ "parameters": [
2519
+ {
2520
+ "name": "input",
2521
+ "in": "query",
2522
+ "required": true,
2523
+ "style": "deepObject",
2524
+ "content": {
2525
+ "application/json": {
2526
+ "schema": {
2527
+ "type": "object",
2528
+ "properties": {
2529
+ "worktreeId": {
2530
+ "type": "string"
2531
+ },
2532
+ "checkpointId": {
2533
+ "type": "string"
2534
+ }
2535
+ },
2536
+ "required": [
2537
+ "worktreeId"
2538
+ ],
2539
+ "additionalProperties": false
2540
+ }
2541
+ }
2542
+ }
2543
+ }
2544
+ ]
2545
+ }
2546
+ },
2547
+ "/checkpoints.file": {
2548
+ "get": {
2549
+ "operationId": "checkpoints.file",
2550
+ "tags": [
2551
+ "checkpoints"
2552
+ ],
2553
+ "responses": {
2554
+ "200": {
2555
+ "description": "Successful response",
2556
+ "content": {
2557
+ "application/json": {
2558
+ "schema": {
2559
+ "type": "object",
2560
+ "properties": {
2561
+ "result": {
2562
+ "type": "object",
2563
+ "properties": {
2564
+ "data": {
2565
+ "type": "object",
2566
+ "properties": {
2567
+ "path": {
2568
+ "type": "string"
2569
+ },
2570
+ "size": {
2571
+ "type": "number"
2572
+ },
2573
+ "binary": {
2574
+ "type": "boolean"
2575
+ },
2576
+ "truncated": {
2577
+ "type": "boolean"
2578
+ },
2579
+ "content": {
2580
+ "type": "string"
2581
+ }
2582
+ },
2583
+ "required": [
2584
+ "path",
2585
+ "size",
2586
+ "binary",
2587
+ "truncated",
2588
+ "content"
2589
+ ],
2590
+ "additionalProperties": false
2591
+ }
2592
+ },
2593
+ "required": [
2594
+ "data"
2595
+ ]
2596
+ }
2597
+ },
2598
+ "required": [
2599
+ "result"
2600
+ ]
2601
+ }
2602
+ }
2603
+ }
2604
+ },
2605
+ "default": {
2606
+ "$ref": "#/components/responses/Error"
2607
+ }
2608
+ },
2609
+ "parameters": [
2610
+ {
2611
+ "name": "input",
2612
+ "in": "query",
2613
+ "required": true,
2614
+ "style": "deepObject",
2615
+ "content": {
2616
+ "application/json": {
2617
+ "schema": {
2618
+ "type": "object",
2619
+ "properties": {
2620
+ "path": {
2621
+ "type": "string"
2622
+ },
2623
+ "worktreeId": {
2624
+ "type": "string"
2625
+ },
2626
+ "checkpointId": {
2627
+ "type": "string"
2628
+ }
2629
+ },
2630
+ "required": [
2631
+ "path",
2632
+ "worktreeId"
2633
+ ],
2634
+ "additionalProperties": false
2635
+ }
2636
+ }
2637
+ }
2638
+ }
2639
+ ]
2640
+ }
2641
+ },
2642
+ "/checkpoints.restore": {
2643
+ "post": {
2644
+ "operationId": "checkpoints.restore",
2645
+ "description": "Restores a worktree on another host from a checkpoint. The old copy is left alone, superseded.",
2646
+ "tags": [
2647
+ "checkpoints"
2648
+ ],
2649
+ "responses": {
2650
+ "200": {
2651
+ "description": "Successful response",
2652
+ "content": {
2653
+ "application/json": {
2654
+ "schema": {
2655
+ "type": "object",
2656
+ "properties": {
2657
+ "result": {
2658
+ "type": "object",
2659
+ "properties": {
2660
+ "data": {
2661
+ "$ref": "#/components/schemas/RestoreResult"
2662
+ }
2663
+ },
2664
+ "required": [
2665
+ "data"
2666
+ ]
2667
+ }
2668
+ },
2669
+ "required": [
2670
+ "result"
2671
+ ]
2672
+ }
2673
+ }
2674
+ }
2675
+ },
2676
+ "default": {
2677
+ "$ref": "#/components/responses/Error"
2678
+ }
2679
+ },
2680
+ "requestBody": {
2681
+ "required": true,
2682
+ "content": {
2683
+ "application/json": {
2684
+ "schema": {
2685
+ "type": "object",
2686
+ "properties": {
2687
+ "worktreeId": {
2688
+ "type": "string"
2689
+ },
2690
+ "toHostId": {
2691
+ "type": "string"
2692
+ },
2693
+ "hostRepoPath": {
2694
+ "type": "string"
2695
+ },
2696
+ "checkpointId": {
2697
+ "type": "string"
2698
+ },
2699
+ "addHost": {
2700
+ "type": "boolean"
2701
+ }
2702
+ },
2703
+ "required": [
2704
+ "worktreeId",
2705
+ "toHostId"
2706
+ ],
2707
+ "additionalProperties": false
2708
+ }
2709
+ }
2710
+ }
2711
+ }
2712
+ }
2713
+ },
2714
+ "/checkpoints.move": {
2715
+ "post": {
2716
+ "operationId": "checkpoints.move",
2717
+ "description": "Moves a worktree whose host is online, and removes the source once the target has it.",
2718
+ "tags": [
2719
+ "checkpoints"
2720
+ ],
2721
+ "responses": {
2722
+ "200": {
2723
+ "description": "Successful response",
2724
+ "content": {
2725
+ "application/json": {
2726
+ "schema": {
2727
+ "type": "object",
2728
+ "properties": {
2729
+ "result": {
2730
+ "type": "object",
2731
+ "properties": {
2732
+ "data": {
2733
+ "$ref": "#/components/schemas/RestoreResult"
2734
+ }
2735
+ },
2736
+ "required": [
2737
+ "data"
2738
+ ]
2739
+ }
2740
+ },
2741
+ "required": [
2742
+ "result"
2743
+ ]
2744
+ }
2745
+ }
2746
+ }
2747
+ },
2748
+ "default": {
2749
+ "$ref": "#/components/responses/Error"
2750
+ }
2751
+ },
2752
+ "requestBody": {
2753
+ "required": true,
2754
+ "content": {
2755
+ "application/json": {
2756
+ "schema": {
2757
+ "type": "object",
2758
+ "properties": {
2759
+ "worktreeId": {
2760
+ "type": "string"
2761
+ },
2762
+ "toHostId": {
2763
+ "type": "string"
2764
+ },
2765
+ "hostRepoPath": {
2766
+ "type": "string"
2767
+ },
2768
+ "addHost": {
2769
+ "type": "boolean"
2770
+ }
2771
+ },
2772
+ "required": [
2773
+ "worktreeId",
2774
+ "toHostId"
2775
+ ],
2776
+ "additionalProperties": false
2777
+ }
2778
+ }
2779
+ }
2780
+ }
2781
+ }
2782
+ },
2783
+ "/checkpoints.evacuate": {
2784
+ "post": {
2785
+ "operationId": "checkpoints.evacuate",
2786
+ "description": "Moves every worktree on a host to another, one after the other.",
2787
+ "tags": [
2788
+ "checkpoints"
2789
+ ],
2790
+ "responses": {
2791
+ "200": {
2792
+ "description": "Successful response",
2793
+ "content": {
2794
+ "application/json": {
2795
+ "schema": {
2796
+ "type": "object",
2797
+ "properties": {
2798
+ "result": {
2799
+ "type": "object",
2800
+ "properties": {
2801
+ "data": {
2802
+ "$ref": "#/components/schemas/EvacuateResult"
2803
+ }
2804
+ },
2805
+ "required": [
2806
+ "data"
2807
+ ]
2808
+ }
2809
+ },
2810
+ "required": [
2811
+ "result"
2812
+ ]
2813
+ }
2814
+ }
2815
+ }
2816
+ },
2817
+ "default": {
2818
+ "$ref": "#/components/responses/Error"
2819
+ }
2820
+ },
2821
+ "requestBody": {
2822
+ "required": true,
2823
+ "content": {
2824
+ "application/json": {
2825
+ "schema": {
2826
+ "type": "object",
2827
+ "properties": {
2828
+ "toHostId": {
2829
+ "type": "string"
2830
+ },
2831
+ "fromHostId": {
2832
+ "type": "string"
2833
+ },
2834
+ "addHost": {
2835
+ "type": "boolean"
2836
+ }
2837
+ },
2838
+ "required": [
2839
+ "toHostId",
2840
+ "fromHostId"
2841
+ ],
2842
+ "additionalProperties": false
2843
+ }
2844
+ }
2845
+ }
2846
+ }
2847
+ }
2848
+ },
2849
+ "/checkpoints.evacuable": {
2850
+ "get": {
2851
+ "operationId": "checkpoints.evacuable",
2852
+ "description": "The worktrees on a host that an evacuation would take.",
2853
+ "tags": [
2854
+ "checkpoints"
2855
+ ],
2856
+ "responses": {
2857
+ "200": {
2858
+ "description": "Successful response",
2859
+ "content": {
2860
+ "application/json": {
2861
+ "schema": {
2862
+ "type": "object",
2863
+ "properties": {
2864
+ "result": {
2865
+ "type": "object",
2866
+ "properties": {
2867
+ "data": {
2868
+ "type": "object",
2869
+ "properties": {
2870
+ "worktrees": {
2871
+ "type": "array",
2872
+ "items": {
2873
+ "type": "object",
2874
+ "properties": {
2875
+ "repo": {
2876
+ "type": "string"
2877
+ },
2878
+ "name": {
2879
+ "type": "string"
2880
+ },
2881
+ "worktreeId": {
2882
+ "type": "string"
2883
+ }
2884
+ },
2885
+ "required": [
2886
+ "repo",
2887
+ "name",
2888
+ "worktreeId"
2889
+ ],
2890
+ "additionalProperties": false
2891
+ }
2892
+ }
2893
+ },
2894
+ "required": [
2895
+ "worktrees"
2896
+ ],
2897
+ "additionalProperties": false
2898
+ }
2899
+ },
2900
+ "required": [
2901
+ "data"
2902
+ ]
2903
+ }
2904
+ },
2905
+ "required": [
2906
+ "result"
2907
+ ]
2908
+ }
2909
+ }
2910
+ }
2911
+ },
2912
+ "default": {
2913
+ "$ref": "#/components/responses/Error"
2914
+ }
2915
+ },
2916
+ "parameters": [
2917
+ {
2918
+ "name": "input",
2919
+ "in": "query",
2920
+ "required": true,
2921
+ "style": "deepObject",
2922
+ "content": {
2923
+ "application/json": {
2924
+ "schema": {
2925
+ "type": "object",
2926
+ "properties": {
2927
+ "hostId": {
2928
+ "type": "string"
2929
+ }
2930
+ },
2931
+ "required": [
2932
+ "hostId"
2933
+ ],
2934
+ "additionalProperties": false
2935
+ }
2936
+ }
2937
+ }
2938
+ }
2939
+ ]
2940
+ }
2941
+ },
2108
2942
  "/runners.list": {
2109
2943
  "get": {
2110
2944
  "operationId": "runners.list",
@@ -8764,6 +9598,17 @@
8764
9598
  ],
8765
9599
  "description": "The host whose default-branch checkout is listed as a worktree, once one is known."
8766
9600
  },
9601
+ "checkpointsEnabled": {
9602
+ "type": "boolean",
9603
+ "description": "Whether the hub keeps checkpoints of this repo's worktrees (the stored choice, else the default)."
9604
+ },
9605
+ "checkpointsSetting": {
9606
+ "type": [
9607
+ "boolean",
9608
+ "null"
9609
+ ],
9610
+ "description": "The stored choice, or null when the repo follows the default."
9611
+ },
8767
9612
  "avatar": {
8768
9613
  "oneOf": [
8769
9614
  {
@@ -8811,6 +9656,17 @@
8811
9656
  ],
8812
9657
  "description": "Set while the worktree's ephemeral worker has exited (`sleeping`) or is coming back (`waking`)."
8813
9658
  },
9659
+ "supersededBy": {
9660
+ "type": "string",
9661
+ "description": "Set when this copy was restored on another host. The value is the replacement's worktree id."
9662
+ },
9663
+ "lastCheckpointAt": {
9664
+ "type": [
9665
+ "number",
9666
+ "null"
9667
+ ],
9668
+ "description": "When the hub took the newest checkpoint of this worktree, or null when it has none."
9669
+ },
8814
9670
  "worktreeId": {
8815
9671
  "type": "string"
8816
9672
  },
@@ -8848,6 +9704,7 @@
8848
9704
  "branch",
8849
9705
  "path",
8850
9706
  "pinned",
9707
+ "lastCheckpointAt",
8851
9708
  "worktreeId",
8852
9709
  "agent",
8853
9710
  "origin",
@@ -8868,6 +9725,8 @@
8868
9725
  "meta",
8869
9726
  "allowedHostIds",
8870
9727
  "primaryHostId",
9728
+ "checkpointsEnabled",
9729
+ "checkpointsSetting",
8871
9730
  "avatar",
8872
9731
  "worktrees"
8873
9732
  ],
@@ -9614,7 +10473,7 @@
9614
10473
  "/repos.update": {
9615
10474
  "post": {
9616
10475
  "operationId": "repos.update",
9617
- "description": "Changes a repo's settings: `meta` (whether it is a meta repo), `allowedHostIds` (the hosts it\nmay run on, `null` for all) and `primaryHostId` (the host that lists its default branch,\n`null` to let the hub pick). Changing the host policy is an admin call.",
10476
+ "description": "Changes a repo's settings: `meta` (whether it is a meta repo), `allowedHostIds` (the hosts it\nmay run on, `null` for all) and `primaryHostId` (the host that lists its default branch,\n`null` to let the hub pick) and `checkpointsEnabled` (whether the hub keeps checkpoints, `null` for the default). Changing the host policy or the checkpoint setting is an admin call.",
9618
10477
  "tags": [
9619
10478
  "repos"
9620
10479
  ],
@@ -9689,6 +10548,12 @@
9689
10548
  "string",
9690
10549
  "null"
9691
10550
  ]
10551
+ },
10552
+ "checkpointsEnabled": {
10553
+ "type": [
10554
+ "boolean",
10555
+ "null"
10556
+ ]
9692
10557
  }
9693
10558
  },
9694
10559
  "required": [
@@ -17978,6 +18843,186 @@
17978
18843
  ],
17979
18844
  "additionalProperties": false
17980
18845
  },
18846
+ "CheckpointView": {
18847
+ "type": "object",
18848
+ "properties": {
18849
+ "id": {
18850
+ "type": "string"
18851
+ },
18852
+ "worktreeId": {
18853
+ "type": "string"
18854
+ },
18855
+ "hostId": {
18856
+ "type": "string"
18857
+ },
18858
+ "branch": {
18859
+ "type": "string"
18860
+ },
18861
+ "baseSha": {
18862
+ "type": "string"
18863
+ },
18864
+ "snapshotSha": {
18865
+ "type": "string"
18866
+ },
18867
+ "dirty": {
18868
+ "type": "boolean",
18869
+ "description": "Whether the working tree differed from the branch head."
18870
+ },
18871
+ "sizeBytes": {
18872
+ "type": "number"
18873
+ },
18874
+ "trigger": {
18875
+ "type": "string",
18876
+ "enum": [
18877
+ "move",
18878
+ "turn",
18879
+ "quiet",
18880
+ "shutdown",
18881
+ "manual"
18882
+ ]
18883
+ },
18884
+ "createdAt": {
18885
+ "type": "number"
18886
+ },
18887
+ "sessions": {
18888
+ "type": "number"
18889
+ }
18890
+ },
18891
+ "required": [
18892
+ "id",
18893
+ "worktreeId",
18894
+ "hostId",
18895
+ "branch",
18896
+ "baseSha",
18897
+ "snapshotSha",
18898
+ "dirty",
18899
+ "sizeBytes",
18900
+ "trigger",
18901
+ "createdAt",
18902
+ "sessions"
18903
+ ],
18904
+ "additionalProperties": false
18905
+ },
18906
+ "ChangedFile": {
18907
+ "type": "object",
18908
+ "properties": {
18909
+ "path": {
18910
+ "type": "string"
18911
+ },
18912
+ "status": {
18913
+ "type": "string"
18914
+ },
18915
+ "additions": {
18916
+ "type": [
18917
+ "number",
18918
+ "null"
18919
+ ]
18920
+ },
18921
+ "deletions": {
18922
+ "type": [
18923
+ "number",
18924
+ "null"
18925
+ ]
18926
+ }
18927
+ },
18928
+ "required": [
18929
+ "path",
18930
+ "status",
18931
+ "additions",
18932
+ "deletions"
18933
+ ],
18934
+ "additionalProperties": false
18935
+ },
18936
+ "RestoreResult": {
18937
+ "type": "object",
18938
+ "properties": {
18939
+ "worktreeId": {
18940
+ "type": "string",
18941
+ "description": "The worktree on the target host."
18942
+ },
18943
+ "hostId": {
18944
+ "type": "string"
18945
+ },
18946
+ "supersededId": {
18947
+ "type": "string",
18948
+ "description": "The worktree it replaced, marked superseded. Absent when a move removed it."
18949
+ },
18950
+ "sourceRemoved": {
18951
+ "type": "boolean",
18952
+ "description": "For a move: whether the source worktree was removed."
18953
+ },
18954
+ "warning": {
18955
+ "type": "string",
18956
+ "description": "For a move whose source could not be removed."
18957
+ },
18958
+ "checkpointId": {
18959
+ "type": "string"
18960
+ },
18961
+ "chatIds": {
18962
+ "type": "array",
18963
+ "items": {
18964
+ "type": "string"
18965
+ },
18966
+ "description": "The chats that now belong to the new worktree."
18967
+ }
18968
+ },
18969
+ "required": [
18970
+ "worktreeId",
18971
+ "hostId",
18972
+ "checkpointId",
18973
+ "chatIds"
18974
+ ],
18975
+ "additionalProperties": false
18976
+ },
18977
+ "EvacuateResult": {
18978
+ "type": "object",
18979
+ "properties": {
18980
+ "fromHostId": {
18981
+ "type": "string"
18982
+ },
18983
+ "toHostId": {
18984
+ "type": "string"
18985
+ },
18986
+ "results": {
18987
+ "type": "array",
18988
+ "items": {
18989
+ "type": "object",
18990
+ "properties": {
18991
+ "worktreeId": {
18992
+ "type": "string"
18993
+ },
18994
+ "ok": {
18995
+ "type": "boolean"
18996
+ },
18997
+ "newWorktreeId": {
18998
+ "type": "string"
18999
+ },
19000
+ "mode": {
19001
+ "type": "string",
19002
+ "enum": [
19003
+ "restore",
19004
+ "move"
19005
+ ]
19006
+ },
19007
+ "error": {
19008
+ "type": "string"
19009
+ }
19010
+ },
19011
+ "required": [
19012
+ "worktreeId",
19013
+ "ok"
19014
+ ],
19015
+ "additionalProperties": false
19016
+ }
19017
+ }
19018
+ },
19019
+ "required": [
19020
+ "fromHostId",
19021
+ "toHostId",
19022
+ "results"
19023
+ ],
19024
+ "additionalProperties": false
19025
+ },
17981
19026
  "RunnerRun": {
17982
19027
  "type": "object",
17983
19028
  "properties": {
@@ -19162,9 +20207,9 @@
19162
20207
  "running",
19163
20208
  "cancelled",
19164
20209
  "pending",
20210
+ "skipped",
19165
20211
  "success",
19166
20212
  "failure",
19167
- "skipped",
19168
20213
  "neutral"
19169
20214
  ],
19170
20215
  "description": "The state of one check or CI job."
@@ -19660,6 +20705,10 @@
19660
20705
  "primaryHostId": {
19661
20706
  "type": "string",
19662
20707
  "description": "The host whose default-branch checkout is listed as a worktree. Read-only here: `setHostPolicy` writes it."
20708
+ },
20709
+ "checkpointsEnabled": {
20710
+ "type": "boolean",
20711
+ "description": "Whether the hub keeps checkpoints of the repo's worktrees; absent means the default. Read-only here: `setCheckpointsEnabled` writes it."
19663
20712
  }
19664
20713
  },
19665
20714
  "required": [
@@ -19702,6 +20751,10 @@
19702
20751
  },
19703
20752
  "origin": {
19704
20753
  "$ref": "#/components/schemas/WorktreeOrigin"
20754
+ },
20755
+ "supersededBy": {
20756
+ "type": "string",
20757
+ "description": "The id of the worktree that replaced this one when it was restored on another host. The copy\nstays on its host untouched. Read-only here: `saveAll` keeps what the database holds, and\n`RepoQueries.setSupersededBy` writes it."
19705
20758
  }
19706
20759
  },
19707
20760
  "required": [