@stim-cli/server 1.20.1 → 1.21.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.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "title": "Stim server protocol",
4
- "description": "Messages exchanged over the stim-server WebSocket, protocol version 1.",
5
- "x-stim-protocol": 1,
4
+ "description": "Messages exchanged over the stim-server WebSocket, protocol version 2.",
5
+ "x-stim-protocol": 2,
6
6
  "$defs": {
7
7
  "ProtocolError": {
8
8
  "type": "object",
@@ -17,8 +17,7 @@
17
17
  "unauthorized",
18
18
  "pairing-expired",
19
19
  "protocol-unsupported",
20
- "approval-pending",
21
- "identity-unavailable",
20
+ "unknown-secret",
22
21
  "bad-request",
23
22
  "unknown-method",
24
23
  "already-authenticated",
@@ -1124,16 +1123,12 @@
1124
1123
  },
1125
1124
  "HelloParams": {
1126
1125
  "type": "object",
1126
+ "description": "The first request, sent encrypted after the Noise handshake on a network connection, or in the clear on the local Unix socket.",
1127
1127
  "required": [
1128
- "protocol",
1129
- "client",
1130
- "auth"
1128
+ "client"
1131
1129
  ],
1132
1130
  "additionalProperties": false,
1133
1131
  "properties": {
1134
- "protocol": {
1135
- "type": "integer"
1136
- },
1137
1132
  "client": {
1138
1133
  "type": "object",
1139
1134
  "required": [
@@ -1153,64 +1148,14 @@
1153
1148
  }
1154
1149
  }
1155
1150
  },
1156
- "auth": {
1157
- "oneOf": [
1158
- {
1159
- "type": "object",
1160
- "required": [
1161
- "pairingToken",
1162
- "deviceName"
1163
- ],
1164
- "additionalProperties": false,
1165
- "properties": {
1166
- "pairingToken": {
1167
- "type": "string"
1168
- },
1169
- "deviceName": {
1170
- "type": "string",
1171
- "minLength": 1
1172
- }
1173
- }
1174
- },
1175
- {
1176
- "type": "object",
1177
- "required": [
1178
- "deviceToken"
1179
- ],
1180
- "additionalProperties": false,
1181
- "properties": {
1182
- "deviceToken": {
1183
- "type": "string"
1184
- }
1185
- }
1186
- },
1187
- {
1188
- "type": "object",
1189
- "required": [
1190
- "request",
1191
- "deviceName"
1192
- ],
1193
- "additionalProperties": false,
1194
- "properties": {
1195
- "request": {
1196
- "enum": [
1197
- "build",
1198
- "device-host"
1199
- ]
1200
- },
1201
- "deviceName": {
1202
- "type": "string",
1203
- "minLength": 1
1204
- },
1205
- "setupTicket": {
1206
- "type": "string",
1207
- "minLength": 43,
1208
- "maxLength": 43,
1209
- "pattern": "^[A-Za-z0-9_-]{43}$"
1210
- }
1211
- }
1212
- }
1151
+ "access": {
1152
+ "enum": [
1153
+ "build",
1154
+ "device-host"
1213
1155
  ]
1156
+ },
1157
+ "desktopBootstrap": {
1158
+ "const": true
1214
1159
  }
1215
1160
  }
1216
1161
  },
@@ -1276,6 +1221,12 @@
1276
1221
  },
1277
1222
  "home": {
1278
1223
  "type": "string"
1224
+ },
1225
+ "id": {
1226
+ "type": "string"
1227
+ },
1228
+ "port": {
1229
+ "type": "integer"
1279
1230
  }
1280
1231
  }
1281
1232
  },
@@ -1315,10 +1266,20 @@
1315
1266
  "hosted-ios-process",
1316
1267
  "native-xcode-build",
1317
1268
  "native-xcode-toolchain",
1269
+ "build-artifact-cache",
1318
1270
  "native-gradle-build",
1319
1271
  "hosted-android-data",
1320
1272
  "hosted-android-process",
1321
- "server-update"
1273
+ "server-update",
1274
+ "status-views",
1275
+ "desktop-reports",
1276
+ "desktop-report-platform",
1277
+ "desktop-settings",
1278
+ "desktop-settings-write",
1279
+ "desktop-full-logs",
1280
+ "desktop-doctor-run",
1281
+ "desktop-stop",
1282
+ "desktop-reload"
1322
1283
  ]
1323
1284
  }
1324
1285
  },
@@ -1347,27 +1308,38 @@
1347
1308
  }
1348
1309
  }
1349
1310
  },
1350
- "deviceToken": {
1351
- "type": "string"
1352
- },
1353
- "approval": {
1311
+ "desktopBootstrap": {
1354
1312
  "type": "object",
1355
1313
  "required": [
1356
- "state",
1357
- "expiresAt"
1314
+ "nonce",
1315
+ "proof"
1358
1316
  ],
1359
1317
  "additionalProperties": false,
1360
1318
  "properties": {
1361
- "state": {
1362
- "const": "pending"
1319
+ "nonce": {
1320
+ "type": "string",
1321
+ "pattern": "^[A-Za-z0-9_-]{43}$"
1363
1322
  },
1364
- "expiresAt": {
1365
- "type": "string"
1323
+ "proof": {
1324
+ "type": "string",
1325
+ "pattern": "^[A-Za-z0-9_-]{43}$"
1366
1326
  }
1367
1327
  }
1368
1328
  }
1369
1329
  }
1370
1330
  },
1331
+ "DesktopAuthenticateResult": {
1332
+ "type": "object",
1333
+ "required": [
1334
+ "authorized"
1335
+ ],
1336
+ "additionalProperties": false,
1337
+ "properties": {
1338
+ "authorized": {
1339
+ "const": true
1340
+ }
1341
+ }
1342
+ },
1371
1343
  "LogRecord": {
1372
1344
  "type": "object",
1373
1345
  "description": "One record as `stim logs --json` prints it.",
@@ -1393,6 +1365,49 @@
1393
1365
  }
1394
1366
  }
1395
1367
  },
1368
+ "DesktopLogFilter": {
1369
+ "type": "object",
1370
+ "required": [
1371
+ "workspace"
1372
+ ],
1373
+ "additionalProperties": false,
1374
+ "properties": {
1375
+ "workspace": {
1376
+ "type": "string"
1377
+ },
1378
+ "sources": {
1379
+ "type": "array",
1380
+ "minItems": 1,
1381
+ "items": {
1382
+ "enum": [
1383
+ "metro",
1384
+ "client",
1385
+ "device",
1386
+ "build",
1387
+ "agent",
1388
+ "maintenance",
1389
+ "placement"
1390
+ ]
1391
+ }
1392
+ },
1393
+ "level": {
1394
+ "enum": [
1395
+ "debug",
1396
+ "info",
1397
+ "warn",
1398
+ "error",
1399
+ "fatal"
1400
+ ]
1401
+ },
1402
+ "grep": {
1403
+ "type": "string",
1404
+ "pattern": "^[^\\u0000]*$"
1405
+ },
1406
+ "errors": {
1407
+ "type": "boolean"
1408
+ }
1409
+ }
1410
+ },
1396
1411
  "LogFilter": {
1397
1412
  "type": "object",
1398
1413
  "oneOf": [
@@ -2094,6 +2109,71 @@
2094
2109
  }
2095
2110
  }
2096
2111
  },
2112
+ "DesktopReportTarget": {
2113
+ "oneOf": [
2114
+ {
2115
+ "type": "object",
2116
+ "required": [
2117
+ "report"
2118
+ ],
2119
+ "additionalProperties": false,
2120
+ "properties": {
2121
+ "report": {
2122
+ "const": "gc"
2123
+ }
2124
+ }
2125
+ },
2126
+ {
2127
+ "type": "object",
2128
+ "required": [
2129
+ "report",
2130
+ "cwd"
2131
+ ],
2132
+ "additionalProperties": false,
2133
+ "properties": {
2134
+ "report": {
2135
+ "const": "doctor"
2136
+ },
2137
+ "cwd": {
2138
+ "type": "string",
2139
+ "minLength": 1,
2140
+ "maxLength": 4096
2141
+ },
2142
+ "platform": {
2143
+ "enum": [
2144
+ "ios",
2145
+ "android"
2146
+ ]
2147
+ }
2148
+ }
2149
+ }
2150
+ ]
2151
+ },
2152
+ "DesktopReportSnapshot": {
2153
+ "type": "object",
2154
+ "required": [
2155
+ "pending",
2156
+ "value"
2157
+ ],
2158
+ "additionalProperties": false,
2159
+ "properties": {
2160
+ "pending": {
2161
+ "type": "boolean"
2162
+ },
2163
+ "value": {
2164
+ "type": [
2165
+ "object",
2166
+ "null"
2167
+ ]
2168
+ },
2169
+ "error": {
2170
+ "type": "string"
2171
+ },
2172
+ "measuredAt": {
2173
+ "type": "string"
2174
+ }
2175
+ }
2176
+ },
2097
2177
  "MachineDetails": {
2098
2178
  "type": "object",
2099
2179
  "required": [
@@ -2129,7 +2209,7 @@
2129
2209
  "array",
2130
2210
  "null"
2131
2211
  ],
2132
- "description": "`remoteMachines` from `stim doctor --json --platform ios`.",
2212
+ "description": "`remoteMachines` from `stim doctor --json`.",
2133
2213
  "items": {
2134
2214
  "type": "object"
2135
2215
  }
@@ -2145,7 +2225,7 @@
2145
2225
  },
2146
2226
  "buildClients": {
2147
2227
  "type": "array",
2148
- "description": "The builds this Mac ran for each client, from the audit log.",
2228
+ "description": "The builds this machine ran for each client, from the audit log.",
2149
2229
  "items": {
2150
2230
  "type": "object",
2151
2231
  "required": [
@@ -3777,7 +3857,8 @@
3777
3857
  "type": "object",
3778
3858
  "required": [
3779
3859
  "id",
3780
- "method"
3860
+ "method",
3861
+ "params"
3781
3862
  ],
3782
3863
  "additionalProperties": false,
3783
3864
  "properties": {
@@ -3788,11 +3869,20 @@
3788
3869
  ]
3789
3870
  },
3790
3871
  "method": {
3791
- "const": "route.setup"
3872
+ "const": "desktop.authenticate"
3792
3873
  },
3793
3874
  "params": {
3794
3875
  "type": "object",
3795
- "maxProperties": 0
3876
+ "required": [
3877
+ "proof"
3878
+ ],
3879
+ "additionalProperties": false,
3880
+ "properties": {
3881
+ "proof": {
3882
+ "type": "string",
3883
+ "pattern": "^[A-Za-z0-9_-]{43}$"
3884
+ }
3885
+ }
3796
3886
  }
3797
3887
  }
3798
3888
  },
@@ -3811,7 +3901,7 @@
3811
3901
  ]
3812
3902
  },
3813
3903
  "method": {
3814
- "const": "status.subscribe"
3904
+ "const": "route.setup"
3815
3905
  },
3816
3906
  "params": {
3817
3907
  "type": "object",
@@ -3835,10 +3925,10 @@
3835
3925
  ]
3836
3926
  },
3837
3927
  "method": {
3838
- "const": "logs.query"
3928
+ "const": "desktop.reports.get"
3839
3929
  },
3840
3930
  "params": {
3841
- "$ref": "#/$defs/LogFilter"
3931
+ "$ref": "#/$defs/DesktopReportTarget"
3842
3932
  }
3843
3933
  }
3844
3934
  },
@@ -3858,10 +3948,10 @@
3858
3948
  ]
3859
3949
  },
3860
3950
  "method": {
3861
- "const": "logs.subscribe"
3951
+ "const": "desktop.reports.subscribe"
3862
3952
  },
3863
3953
  "params": {
3864
- "$ref": "#/$defs/LogFilter"
3954
+ "$ref": "#/$defs/DesktopReportTarget"
3865
3955
  }
3866
3956
  }
3867
3957
  },
@@ -3869,8 +3959,7 @@
3869
3959
  "type": "object",
3870
3960
  "required": [
3871
3961
  "id",
3872
- "method",
3873
- "params"
3962
+ "method"
3874
3963
  ],
3875
3964
  "additionalProperties": false,
3876
3965
  "properties": {
@@ -3881,10 +3970,11 @@
3881
3970
  ]
3882
3971
  },
3883
3972
  "method": {
3884
- "const": "frames.subscribe"
3973
+ "const": "desktop.reports.invalidate"
3885
3974
  },
3886
3975
  "params": {
3887
- "$ref": "#/$defs/FrameTarget"
3976
+ "type": "object",
3977
+ "maxProperties": 0
3888
3978
  }
3889
3979
  }
3890
3980
  },
@@ -3904,17 +3994,19 @@
3904
3994
  ]
3905
3995
  },
3906
3996
  "method": {
3907
- "const": "frames.keyframe"
3997
+ "const": "desktop.settings.get"
3908
3998
  },
3909
3999
  "params": {
3910
4000
  "type": "object",
3911
4001
  "required": [
3912
- "subscription"
4002
+ "cwd"
3913
4003
  ],
3914
4004
  "additionalProperties": false,
3915
4005
  "properties": {
3916
- "subscription": {
3917
- "type": "string"
4006
+ "cwd": {
4007
+ "type": "string",
4008
+ "minLength": 1,
4009
+ "maxLength": 4096
3918
4010
  }
3919
4011
  }
3920
4012
  }
@@ -3936,32 +4028,79 @@
3936
4028
  ]
3937
4029
  },
3938
4030
  "method": {
3939
- "const": "frames.seek"
4031
+ "const": "desktop.settings.write"
3940
4032
  },
3941
4033
  "params": {
3942
- "type": "object",
3943
- "required": [
3944
- "subscription",
3945
- "at",
3946
- "rate"
3947
- ],
3948
- "additionalProperties": false,
3949
- "properties": {
3950
- "subscription": {
3951
- "type": "string"
3952
- },
3953
- "at": {
3954
- "type": "number",
3955
- "description": "Epoch milliseconds on the Mac clock."
4034
+ "oneOf": [
4035
+ {
4036
+ "type": "object",
4037
+ "required": [
4038
+ "cwd",
4039
+ "action",
4040
+ "key",
4041
+ "value"
4042
+ ],
4043
+ "additionalProperties": false,
4044
+ "properties": {
4045
+ "cwd": {
4046
+ "type": "string",
4047
+ "minLength": 1,
4048
+ "maxLength": 4096
4049
+ },
4050
+ "action": {
4051
+ "const": "set"
4052
+ },
4053
+ "key": {
4054
+ "type": "string",
4055
+ "minLength": 1,
4056
+ "maxLength": 256
4057
+ },
4058
+ "scope": {
4059
+ "enum": [
4060
+ "machine",
4061
+ "workspace",
4062
+ "repo",
4063
+ "committed"
4064
+ ]
4065
+ },
4066
+ "value": {
4067
+ "type": "string"
4068
+ }
4069
+ }
3956
4070
  },
3957
- "rate": {
3958
- "enum": [
3959
- 0,
3960
- 1,
3961
- 2
3962
- ]
4071
+ {
4072
+ "type": "object",
4073
+ "required": [
4074
+ "cwd",
4075
+ "action",
4076
+ "key"
4077
+ ],
4078
+ "additionalProperties": false,
4079
+ "properties": {
4080
+ "cwd": {
4081
+ "type": "string",
4082
+ "minLength": 1,
4083
+ "maxLength": 4096
4084
+ },
4085
+ "action": {
4086
+ "const": "unset"
4087
+ },
4088
+ "key": {
4089
+ "type": "string",
4090
+ "minLength": 1,
4091
+ "maxLength": 256
4092
+ },
4093
+ "scope": {
4094
+ "enum": [
4095
+ "machine",
4096
+ "workspace",
4097
+ "repo",
4098
+ "committed"
4099
+ ]
4100
+ }
4101
+ }
3963
4102
  }
3964
- }
4103
+ ]
3965
4104
  }
3966
4105
  }
3967
4106
  },
@@ -3981,12 +4120,522 @@
3981
4120
  ]
3982
4121
  },
3983
4122
  "method": {
3984
- "const": "frames.live"
4123
+ "const": "desktop.logs.subscribe"
3985
4124
  },
3986
4125
  "params": {
3987
- "type": "object",
3988
- "required": [
3989
- "subscription"
4126
+ "$ref": "#/$defs/DesktopLogFilter"
4127
+ }
4128
+ }
4129
+ },
4130
+ {
4131
+ "type": "object",
4132
+ "required": [
4133
+ "id",
4134
+ "method",
4135
+ "params"
4136
+ ],
4137
+ "additionalProperties": false,
4138
+ "properties": {
4139
+ "id": {
4140
+ "type": [
4141
+ "integer",
4142
+ "string"
4143
+ ]
4144
+ },
4145
+ "method": {
4146
+ "const": "desktop.doctor.run"
4147
+ },
4148
+ "params": {
4149
+ "type": "object",
4150
+ "required": [
4151
+ "cwd"
4152
+ ],
4153
+ "additionalProperties": false,
4154
+ "properties": {
4155
+ "cwd": {
4156
+ "type": "string",
4157
+ "minLength": 1,
4158
+ "maxLength": 4096
4159
+ },
4160
+ "platform": {
4161
+ "enum": [
4162
+ "ios",
4163
+ "android"
4164
+ ]
4165
+ }
4166
+ }
4167
+ }
4168
+ }
4169
+ },
4170
+ {
4171
+ "type": "object",
4172
+ "required": [
4173
+ "id",
4174
+ "method",
4175
+ "params"
4176
+ ],
4177
+ "additionalProperties": false,
4178
+ "properties": {
4179
+ "id": {
4180
+ "type": [
4181
+ "integer",
4182
+ "string"
4183
+ ]
4184
+ },
4185
+ "method": {
4186
+ "const": "desktop.stop.subscribe"
4187
+ },
4188
+ "params": {
4189
+ "type": "object",
4190
+ "required": [
4191
+ "cwd"
4192
+ ],
4193
+ "additionalProperties": false,
4194
+ "properties": {
4195
+ "cwd": {
4196
+ "type": "string",
4197
+ "minLength": 1,
4198
+ "maxLength": 4096
4199
+ },
4200
+ "slot": {
4201
+ "type": "string",
4202
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$",
4203
+ "not": {
4204
+ "enum": [
4205
+ "constructor",
4206
+ "prototype",
4207
+ "__proto__"
4208
+ ]
4209
+ }
4210
+ }
4211
+ }
4212
+ }
4213
+ }
4214
+ },
4215
+ {
4216
+ "type": "object",
4217
+ "required": [
4218
+ "id",
4219
+ "method",
4220
+ "params"
4221
+ ],
4222
+ "additionalProperties": false,
4223
+ "properties": {
4224
+ "id": {
4225
+ "type": [
4226
+ "integer",
4227
+ "string"
4228
+ ]
4229
+ },
4230
+ "method": {
4231
+ "const": "desktop.reload.subscribe"
4232
+ },
4233
+ "params": {
4234
+ "type": "object",
4235
+ "required": [
4236
+ "cwd"
4237
+ ],
4238
+ "additionalProperties": false,
4239
+ "properties": {
4240
+ "cwd": {
4241
+ "type": "string",
4242
+ "minLength": 1,
4243
+ "maxLength": 4096
4244
+ },
4245
+ "platform": {
4246
+ "enum": [
4247
+ "ios",
4248
+ "android",
4249
+ "web"
4250
+ ]
4251
+ }
4252
+ }
4253
+ }
4254
+ }
4255
+ },
4256
+ {
4257
+ "type": "object",
4258
+ "required": [
4259
+ "id",
4260
+ "method"
4261
+ ],
4262
+ "additionalProperties": false,
4263
+ "properties": {
4264
+ "id": {
4265
+ "type": [
4266
+ "integer",
4267
+ "string"
4268
+ ]
4269
+ },
4270
+ "method": {
4271
+ "const": "status.subscribe"
4272
+ },
4273
+ "params": {
4274
+ "type": "object",
4275
+ "maxProperties": 0
4276
+ }
4277
+ }
4278
+ },
4279
+ {
4280
+ "type": "object",
4281
+ "required": [
4282
+ "id",
4283
+ "method"
4284
+ ],
4285
+ "additionalProperties": false,
4286
+ "properties": {
4287
+ "id": {
4288
+ "type": [
4289
+ "integer",
4290
+ "string"
4291
+ ]
4292
+ },
4293
+ "method": {
4294
+ "const": "workspaces.subscribe"
4295
+ },
4296
+ "params": {
4297
+ "type": "object",
4298
+ "maxProperties": 0
4299
+ }
4300
+ }
4301
+ },
4302
+ {
4303
+ "type": "object",
4304
+ "required": [
4305
+ "id",
4306
+ "method",
4307
+ "params"
4308
+ ],
4309
+ "additionalProperties": false,
4310
+ "properties": {
4311
+ "id": {
4312
+ "type": [
4313
+ "integer",
4314
+ "string"
4315
+ ]
4316
+ },
4317
+ "method": {
4318
+ "const": "workspace.subscribe"
4319
+ },
4320
+ "params": {
4321
+ "type": "object",
4322
+ "required": [
4323
+ "workspace"
4324
+ ],
4325
+ "additionalProperties": false,
4326
+ "properties": {
4327
+ "workspace": {
4328
+ "type": "string",
4329
+ "minLength": 1
4330
+ }
4331
+ }
4332
+ }
4333
+ }
4334
+ },
4335
+ {
4336
+ "type": "object",
4337
+ "required": [
4338
+ "id",
4339
+ "method"
4340
+ ],
4341
+ "additionalProperties": false,
4342
+ "properties": {
4343
+ "id": {
4344
+ "type": [
4345
+ "integer",
4346
+ "string"
4347
+ ]
4348
+ },
4349
+ "method": {
4350
+ "const": "machine.subscribe"
4351
+ },
4352
+ "params": {
4353
+ "type": "object",
4354
+ "maxProperties": 0
4355
+ }
4356
+ }
4357
+ },
4358
+ {
4359
+ "type": "object",
4360
+ "required": [
4361
+ "id",
4362
+ "method",
4363
+ "params"
4364
+ ],
4365
+ "additionalProperties": false,
4366
+ "properties": {
4367
+ "id": {
4368
+ "type": [
4369
+ "integer",
4370
+ "string"
4371
+ ]
4372
+ },
4373
+ "method": {
4374
+ "const": "builds.history"
4375
+ },
4376
+ "params": {
4377
+ "type": "object",
4378
+ "required": [
4379
+ "workspace"
4380
+ ],
4381
+ "additionalProperties": false,
4382
+ "properties": {
4383
+ "workspace": {
4384
+ "type": "string",
4385
+ "minLength": 1
4386
+ }
4387
+ }
4388
+ }
4389
+ }
4390
+ },
4391
+ {
4392
+ "type": "object",
4393
+ "required": [
4394
+ "id",
4395
+ "method"
4396
+ ],
4397
+ "additionalProperties": false,
4398
+ "properties": {
4399
+ "id": {
4400
+ "type": [
4401
+ "integer",
4402
+ "string"
4403
+ ]
4404
+ },
4405
+ "method": {
4406
+ "const": "archived.list"
4407
+ },
4408
+ "params": {
4409
+ "type": "object",
4410
+ "additionalProperties": false,
4411
+ "properties": {
4412
+ "before": {
4413
+ "type": "string",
4414
+ "minLength": 1
4415
+ },
4416
+ "limit": {
4417
+ "type": "integer",
4418
+ "minimum": 1,
4419
+ "maximum": 50
4420
+ }
4421
+ }
4422
+ }
4423
+ }
4424
+ },
4425
+ {
4426
+ "type": "object",
4427
+ "required": [
4428
+ "id",
4429
+ "method"
4430
+ ],
4431
+ "additionalProperties": false,
4432
+ "properties": {
4433
+ "id": {
4434
+ "type": [
4435
+ "integer",
4436
+ "string"
4437
+ ]
4438
+ },
4439
+ "method": {
4440
+ "const": "worktrees.list"
4441
+ },
4442
+ "params": {
4443
+ "type": "object",
4444
+ "maxProperties": 0
4445
+ }
4446
+ }
4447
+ },
4448
+ {
4449
+ "type": "object",
4450
+ "required": [
4451
+ "id",
4452
+ "method"
4453
+ ],
4454
+ "additionalProperties": false,
4455
+ "properties": {
4456
+ "id": {
4457
+ "type": [
4458
+ "integer",
4459
+ "string"
4460
+ ]
4461
+ },
4462
+ "method": {
4463
+ "const": "maintenance.get"
4464
+ },
4465
+ "params": {
4466
+ "type": "object",
4467
+ "maxProperties": 0
4468
+ }
4469
+ }
4470
+ },
4471
+ {
4472
+ "type": "object",
4473
+ "required": [
4474
+ "id",
4475
+ "method",
4476
+ "params"
4477
+ ],
4478
+ "additionalProperties": false,
4479
+ "properties": {
4480
+ "id": {
4481
+ "type": [
4482
+ "integer",
4483
+ "string"
4484
+ ]
4485
+ },
4486
+ "method": {
4487
+ "const": "logs.query"
4488
+ },
4489
+ "params": {
4490
+ "$ref": "#/$defs/LogFilter"
4491
+ }
4492
+ }
4493
+ },
4494
+ {
4495
+ "type": "object",
4496
+ "required": [
4497
+ "id",
4498
+ "method",
4499
+ "params"
4500
+ ],
4501
+ "additionalProperties": false,
4502
+ "properties": {
4503
+ "id": {
4504
+ "type": [
4505
+ "integer",
4506
+ "string"
4507
+ ]
4508
+ },
4509
+ "method": {
4510
+ "const": "logs.subscribe"
4511
+ },
4512
+ "params": {
4513
+ "$ref": "#/$defs/LogFilter"
4514
+ }
4515
+ }
4516
+ },
4517
+ {
4518
+ "type": "object",
4519
+ "required": [
4520
+ "id",
4521
+ "method",
4522
+ "params"
4523
+ ],
4524
+ "additionalProperties": false,
4525
+ "properties": {
4526
+ "id": {
4527
+ "type": [
4528
+ "integer",
4529
+ "string"
4530
+ ]
4531
+ },
4532
+ "method": {
4533
+ "const": "frames.subscribe"
4534
+ },
4535
+ "params": {
4536
+ "$ref": "#/$defs/FrameTarget"
4537
+ }
4538
+ }
4539
+ },
4540
+ {
4541
+ "type": "object",
4542
+ "required": [
4543
+ "id",
4544
+ "method",
4545
+ "params"
4546
+ ],
4547
+ "additionalProperties": false,
4548
+ "properties": {
4549
+ "id": {
4550
+ "type": [
4551
+ "integer",
4552
+ "string"
4553
+ ]
4554
+ },
4555
+ "method": {
4556
+ "const": "frames.keyframe"
4557
+ },
4558
+ "params": {
4559
+ "type": "object",
4560
+ "required": [
4561
+ "subscription"
4562
+ ],
4563
+ "additionalProperties": false,
4564
+ "properties": {
4565
+ "subscription": {
4566
+ "type": "string"
4567
+ }
4568
+ }
4569
+ }
4570
+ }
4571
+ },
4572
+ {
4573
+ "type": "object",
4574
+ "required": [
4575
+ "id",
4576
+ "method",
4577
+ "params"
4578
+ ],
4579
+ "additionalProperties": false,
4580
+ "properties": {
4581
+ "id": {
4582
+ "type": [
4583
+ "integer",
4584
+ "string"
4585
+ ]
4586
+ },
4587
+ "method": {
4588
+ "const": "frames.seek"
4589
+ },
4590
+ "params": {
4591
+ "type": "object",
4592
+ "required": [
4593
+ "subscription",
4594
+ "at",
4595
+ "rate"
4596
+ ],
4597
+ "additionalProperties": false,
4598
+ "properties": {
4599
+ "subscription": {
4600
+ "type": "string"
4601
+ },
4602
+ "at": {
4603
+ "type": "number",
4604
+ "description": "Epoch milliseconds on the machine clock."
4605
+ },
4606
+ "rate": {
4607
+ "enum": [
4608
+ 0,
4609
+ 1,
4610
+ 2
4611
+ ]
4612
+ }
4613
+ }
4614
+ }
4615
+ }
4616
+ },
4617
+ {
4618
+ "type": "object",
4619
+ "required": [
4620
+ "id",
4621
+ "method",
4622
+ "params"
4623
+ ],
4624
+ "additionalProperties": false,
4625
+ "properties": {
4626
+ "id": {
4627
+ "type": [
4628
+ "integer",
4629
+ "string"
4630
+ ]
4631
+ },
4632
+ "method": {
4633
+ "const": "frames.live"
4634
+ },
4635
+ "params": {
4636
+ "type": "object",
4637
+ "required": [
4638
+ "subscription"
3990
4639
  ],
3991
4640
  "additionalProperties": false,
3992
4641
  "properties": {
@@ -4150,7 +4799,7 @@
4150
4799
  },
4151
4800
  "at": {
4152
4801
  "type": "number",
4153
- "description": "Epoch milliseconds on the Mac clock."
4802
+ "description": "Epoch milliseconds on the machine clock."
4154
4803
  }
4155
4804
  }
4156
4805
  }
@@ -5236,6 +5885,26 @@
5236
5885
  "xcode",
5237
5886
  "gradle"
5238
5887
  ]
5888
+ },
5889
+ "artifact": {
5890
+ "type": "object",
5891
+ "required": [
5892
+ "fingerprint",
5893
+ "cacheKey"
5894
+ ],
5895
+ "additionalProperties": false,
5896
+ "properties": {
5897
+ "fingerprint": {
5898
+ "type": "string",
5899
+ "minLength": 1,
5900
+ "maxLength": 256
5901
+ },
5902
+ "cacheKey": {
5903
+ "type": "string",
5904
+ "minLength": 1,
5905
+ "maxLength": 1024
5906
+ }
5907
+ }
5239
5908
  }
5240
5909
  }
5241
5910
  }
@@ -5705,6 +6374,60 @@
5705
6374
  }
5706
6375
  }
5707
6376
  },
6377
+ {
6378
+ "type": "object",
6379
+ "required": [
6380
+ "id",
6381
+ "method",
6382
+ "params"
6383
+ ],
6384
+ "additionalProperties": false,
6385
+ "properties": {
6386
+ "id": {
6387
+ "type": [
6388
+ "integer",
6389
+ "string"
6390
+ ]
6391
+ },
6392
+ "method": {
6393
+ "const": "build.cached-artifact"
6394
+ },
6395
+ "params": {
6396
+ "type": "object",
6397
+ "required": [
6398
+ "repo",
6399
+ "artifact"
6400
+ ],
6401
+ "additionalProperties": false,
6402
+ "properties": {
6403
+ "repo": {
6404
+ "type": "string",
6405
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,79}$"
6406
+ },
6407
+ "artifact": {
6408
+ "type": "object",
6409
+ "required": [
6410
+ "fingerprint",
6411
+ "cacheKey"
6412
+ ],
6413
+ "additionalProperties": false,
6414
+ "properties": {
6415
+ "fingerprint": {
6416
+ "type": "string",
6417
+ "minLength": 1,
6418
+ "maxLength": 256
6419
+ },
6420
+ "cacheKey": {
6421
+ "type": "string",
6422
+ "minLength": 1,
6423
+ "maxLength": 1024
6424
+ }
6425
+ }
6426
+ }
6427
+ }
6428
+ }
6429
+ }
6430
+ },
5708
6431
  {
5709
6432
  "type": "object",
5710
6433
  "required": [
@@ -6061,6 +6784,9 @@
6061
6784
  {
6062
6785
  "$ref": "#/$defs/HelloResult"
6063
6786
  },
6787
+ {
6788
+ "$ref": "#/$defs/DesktopAuthenticateResult"
6789
+ },
6064
6790
  {
6065
6791
  "$ref": "#/$defs/ControlBeginResult"
6066
6792
  },
@@ -6304,6 +7030,94 @@
6304
7030
  },
6305
7031
  "ServerEvent": {
6306
7032
  "oneOf": [
7033
+ {
7034
+ "type": "object",
7035
+ "required": [
7036
+ "event",
7037
+ "subscription",
7038
+ "stream",
7039
+ "message"
7040
+ ],
7041
+ "additionalProperties": false,
7042
+ "properties": {
7043
+ "event": {
7044
+ "enum": [
7045
+ "desktop-stop-progress",
7046
+ "desktop-reload-progress"
7047
+ ]
7048
+ },
7049
+ "subscription": {
7050
+ "type": "string"
7051
+ },
7052
+ "stream": {
7053
+ "enum": [
7054
+ "stdout",
7055
+ "stderr"
7056
+ ]
7057
+ },
7058
+ "message": {
7059
+ "type": "string"
7060
+ }
7061
+ }
7062
+ },
7063
+ {
7064
+ "type": "object",
7065
+ "required": [
7066
+ "event",
7067
+ "subscription",
7068
+ "exitCode",
7069
+ "stdout",
7070
+ "message"
7071
+ ],
7072
+ "additionalProperties": false,
7073
+ "properties": {
7074
+ "event": {
7075
+ "enum": [
7076
+ "desktop-stop-ended",
7077
+ "desktop-reload-ended"
7078
+ ]
7079
+ },
7080
+ "subscription": {
7081
+ "type": "string"
7082
+ },
7083
+ "exitCode": {
7084
+ "enum": [
7085
+ 0,
7086
+ 1
7087
+ ]
7088
+ },
7089
+ "stdout": {
7090
+ "type": "string"
7091
+ },
7092
+ "message": {
7093
+ "type": "string"
7094
+ }
7095
+ }
7096
+ },
7097
+ {
7098
+ "type": "object",
7099
+ "required": [
7100
+ "event",
7101
+ "subscription",
7102
+ "target",
7103
+ "snapshot"
7104
+ ],
7105
+ "additionalProperties": false,
7106
+ "properties": {
7107
+ "event": {
7108
+ "const": "desktop-report"
7109
+ },
7110
+ "subscription": {
7111
+ "type": "string"
7112
+ },
7113
+ "target": {
7114
+ "$ref": "#/$defs/DesktopReportTarget"
7115
+ },
7116
+ "snapshot": {
7117
+ "$ref": "#/$defs/DesktopReportSnapshot"
7118
+ }
7119
+ }
7120
+ },
6307
7121
  {
6308
7122
  "type": "object",
6309
7123
  "required": [
@@ -6466,6 +7280,172 @@
6466
7280
  }
6467
7281
  }
6468
7282
  },
7283
+ {
7284
+ "type": "object",
7285
+ "required": [
7286
+ "event",
7287
+ "subscription",
7288
+ "seq"
7289
+ ],
7290
+ "additionalProperties": false,
7291
+ "properties": {
7292
+ "event": {
7293
+ "const": "workspaces"
7294
+ },
7295
+ "subscription": {
7296
+ "type": "string"
7297
+ },
7298
+ "seq": {
7299
+ "type": "integer",
7300
+ "minimum": 0
7301
+ },
7302
+ "snapshot": {
7303
+ "type": "object",
7304
+ "required": [
7305
+ "workspaces",
7306
+ "worktrees",
7307
+ "archived"
7308
+ ],
7309
+ "additionalProperties": false,
7310
+ "properties": {
7311
+ "workspaces": {
7312
+ "type": "array",
7313
+ "items": {
7314
+ "type": "object"
7315
+ }
7316
+ },
7317
+ "worktrees": {
7318
+ "type": "array",
7319
+ "items": {
7320
+ "type": "object"
7321
+ }
7322
+ },
7323
+ "archived": {
7324
+ "type": "object"
7325
+ }
7326
+ }
7327
+ },
7328
+ "workspaces": {
7329
+ "type": "object",
7330
+ "required": [
7331
+ "upsert",
7332
+ "remove"
7333
+ ],
7334
+ "additionalProperties": false,
7335
+ "properties": {
7336
+ "upsert": {
7337
+ "type": "array",
7338
+ "items": {
7339
+ "type": "object"
7340
+ },
7341
+ "description": "Workspace summaries to insert or replace by path."
7342
+ },
7343
+ "remove": {
7344
+ "type": "array",
7345
+ "items": {
7346
+ "type": "string"
7347
+ },
7348
+ "description": "The paths that are gone."
7349
+ }
7350
+ }
7351
+ },
7352
+ "worktrees": {
7353
+ "type": "object",
7354
+ "required": [
7355
+ "upsert",
7356
+ "remove"
7357
+ ],
7358
+ "additionalProperties": false,
7359
+ "properties": {
7360
+ "upsert": {
7361
+ "type": "array",
7362
+ "items": {
7363
+ "type": "object"
7364
+ },
7365
+ "description": "Unprovisioned worktree rows to insert or replace by path."
7366
+ },
7367
+ "remove": {
7368
+ "type": "array",
7369
+ "items": {
7370
+ "type": "string"
7371
+ },
7372
+ "description": "The paths that are gone."
7373
+ }
7374
+ }
7375
+ },
7376
+ "archived": {
7377
+ "type": "object",
7378
+ "description": "The archives summary, when it changed."
7379
+ }
7380
+ }
7381
+ },
7382
+ {
7383
+ "type": "object",
7384
+ "required": [
7385
+ "event",
7386
+ "subscription",
7387
+ "seq",
7388
+ "environment"
7389
+ ],
7390
+ "additionalProperties": false,
7391
+ "properties": {
7392
+ "event": {
7393
+ "const": "workspace"
7394
+ },
7395
+ "subscription": {
7396
+ "type": "string"
7397
+ },
7398
+ "seq": {
7399
+ "type": "integer",
7400
+ "minimum": 0
7401
+ },
7402
+ "environment": {
7403
+ "oneOf": [
7404
+ {
7405
+ "type": "null"
7406
+ },
7407
+ {
7408
+ "type": "object"
7409
+ }
7410
+ ],
7411
+ "description": "The environment, as `stim status --json` prints it."
7412
+ }
7413
+ }
7414
+ },
7415
+ {
7416
+ "type": "object",
7417
+ "required": [
7418
+ "event",
7419
+ "subscription",
7420
+ "seq",
7421
+ "machine"
7422
+ ],
7423
+ "additionalProperties": false,
7424
+ "properties": {
7425
+ "event": {
7426
+ "const": "machine"
7427
+ },
7428
+ "subscription": {
7429
+ "type": "string"
7430
+ },
7431
+ "seq": {
7432
+ "type": "integer",
7433
+ "minimum": 0
7434
+ },
7435
+ "machine": {
7436
+ "type": "object"
7437
+ },
7438
+ "usage": {
7439
+ "$ref": "#/$defs/UsageHistory"
7440
+ },
7441
+ "ownLeases": {
7442
+ "type": "array",
7443
+ "items": {
7444
+ "type": "string"
7445
+ }
7446
+ }
7447
+ }
7448
+ },
6469
7449
  {
6470
7450
  "type": "object",
6471
7451
  "required": [