@@ -11,6 +11,10 @@ const epochTopicSchema = z.object({
11
11
topic : z . literal ( "epoch" ) ,
12
12
} ) ;
13
13
14
+ const gossipTopicSchema = z . object ( {
15
+ topic : z . literal ( "gossip" ) ,
16
+ } ) ;
17
+
14
18
const peersTopicSchema = z . object ( {
15
19
topic : z . literal ( "peers" ) ,
16
20
} ) ;
@@ -26,6 +30,7 @@ const blockEngineTopicSchema = z.object({
26
30
export const topicSchema = z . discriminatedUnion ( "topic" , [
27
31
summaryTopicSchema ,
28
32
epochTopicSchema ,
33
+ gossipTopicSchema ,
29
34
peersTopicSchema ,
30
35
slotTopicSchema ,
31
36
blockEngineTopicSchema ,
@@ -71,6 +76,9 @@ export const tileTypeSchema = z.enum([
71
76
"plugin" ,
72
77
"gui" ,
73
78
"cswtch" ,
79
+ "snaprd" ,
80
+ "snapdc" ,
81
+ "snapin" ,
74
82
] ) ;
75
83
76
84
export const tileSchema = z . object ( {
@@ -198,17 +206,17 @@ export const startupProgressSchema = z.object({
198
206
downloading_full_snapshot_elapsed_secs : z . number ( ) . nullable ( ) ,
199
207
downloading_full_snapshot_remaining_secs : z . number ( ) . nullable ( ) ,
200
208
downloading_full_snapshot_throughput : z . number ( ) . nullable ( ) ,
201
- downloading_full_snapshot_total_bytes : z . number ( ) . nullable ( ) ,
202
- downloading_full_snapshot_current_bytes : z . number ( ) . nullable ( ) ,
209
+ downloading_full_snapshot_total_bytes : z . coerce . number ( ) . nullable ( ) ,
210
+ downloading_full_snapshot_current_bytes : z . coerce . number ( ) . nullable ( ) ,
203
211
204
212
// downloading incremental snapshot
205
213
downloading_incremental_snapshot_slot : z . number ( ) . nullable ( ) ,
206
214
downloading_incremental_snapshot_peer : z . string ( ) . nullable ( ) ,
207
215
downloading_incremental_snapshot_elapsed_secs : z . number ( ) . nullable ( ) ,
208
216
downloading_incremental_snapshot_remaining_secs : z . number ( ) . nullable ( ) ,
209
217
downloading_incremental_snapshot_throughput : z . number ( ) . nullable ( ) ,
210
- downloading_incremental_snapshot_total_bytes : z . number ( ) . nullable ( ) ,
211
- downloading_incremental_snapshot_current_bytes : z . number ( ) . nullable ( ) ,
218
+ downloading_incremental_snapshot_total_bytes : z . coerce . number ( ) . nullable ( ) ,
219
+ downloading_incremental_snapshot_current_bytes : z . coerce . number ( ) . nullable ( ) ,
212
220
213
221
// processing ledger
214
222
ledger_slot : z . number ( ) . nullable ( ) ,
@@ -219,6 +227,148 @@ export const startupProgressSchema = z.object({
219
227
waiting_for_supermajority_stake_percent : z . number ( ) . nullable ( ) ,
220
228
} ) ;
221
229
230
+ export const bootPhaseSchema = z . enum ( [
231
+ "joining_gossip" ,
232
+ "loading_full_snapshot" ,
233
+ "loading_incr_snapshot" ,
234
+ "catching_up" ,
235
+ "running" ,
236
+ ] ) ;
237
+
238
+ export const BootPhaseEnum = bootPhaseSchema . enum ;
239
+
240
+ export const bootProgressSchema = z . object ( {
241
+ phase : bootPhaseSchema ,
242
+ total_elapsed : z . number ( ) ,
243
+
244
+ // joining_gossip
245
+ joining_gossip_elapsed : z . number ( ) . nullable ( ) ,
246
+
247
+ // loading_full_snapshot
248
+ loading_full_snapshot_reset_cnt : z . number ( ) . nullable ( ) . optional ( ) ,
249
+ loading_full_snapshot_slot : z . number ( ) . nullable ( ) . optional ( ) ,
250
+ loading_full_snapshot_peer : z . string ( ) . nullable ( ) . optional ( ) ,
251
+ loading_full_snapshot_peer_identity : z . string ( ) . nullable ( ) . optional ( ) ,
252
+ loading_full_snapshot_total_bytes : z . coerce . number ( ) . nullable ( ) . optional ( ) ,
253
+ loading_full_snapshot_elapsed : z . number ( ) . nullable ( ) . optional ( ) ,
254
+ loading_full_snapshot_read_bytes : z . coerce . number ( ) . nullable ( ) . optional ( ) ,
255
+ loading_full_snapshot_read_throughput : z . number ( ) . nullable ( ) . optional ( ) ,
256
+ loading_full_snapshot_current_bytes : z . coerce . number ( ) . nullable ( ) . optional ( ) ,
257
+ loading_full_snapshot_read_remaining : z . number ( ) . nullable ( ) . optional ( ) ,
258
+ loading_full_snapshot_read_elapsed : z . number ( ) . nullable ( ) . optional ( ) ,
259
+ loading_full_snapshot_read_path : z . string ( ) . nullable ( ) . optional ( ) ,
260
+ loading_full_snapshot_decompress_bytes : z . number ( ) . nullable ( ) . optional ( ) ,
261
+ loading_full_snapshot_decompress_elapsed : z . number ( ) . nullable ( ) . optional ( ) ,
262
+ loading_full_snapshot_decompress_throughput : z . number ( ) . nullable ( ) . optional ( ) ,
263
+ loading_full_snapshot_decompress_compressed_bytes : z . coerce
264
+ . number ( )
265
+ . nullable ( )
266
+ . optional ( ) ,
267
+ loading_full_snapshot_decompress_decompressed_bytes : z . coerce
268
+ . number ( )
269
+ . nullable ( )
270
+ . optional ( ) ,
271
+ loading_full_snapshot_decompress_remaining : z . number ( ) . nullable ( ) . optional ( ) ,
272
+ loading_full_snapshot_insert_bytes : z . coerce . number ( ) . nullable ( ) . optional ( ) ,
273
+ loading_full_snapshot_insert_throughput : z . number ( ) . nullable ( ) . optional ( ) ,
274
+ loading_full_snapshot_insert_remaining : z . number ( ) . nullable ( ) . optional ( ) ,
275
+ loading_full_snapshot_insert_path : z . string ( ) . nullable ( ) . optional ( ) ,
276
+ loading_full_snapshot_insert_elapsed : z . number ( ) . nullable ( ) . optional ( ) ,
277
+ loading_full_snapshot_insert_accounts_throughput : z
278
+ . number ( )
279
+ . nullable ( )
280
+ . optional ( ) ,
281
+ loading_full_snapshot_insert_accounts_current : z
282
+ . number ( )
283
+ . nullable ( )
284
+ . optional ( ) ,
285
+
286
+ // loading_incremental_snapshot
287
+ loading_incremental_snapshot_reset_cnt : z . number ( ) . nullable ( ) . optional ( ) ,
288
+ loading_incremental_snapshot_peer_identity : z . string ( ) . nullable ( ) . optional ( ) ,
289
+ loading_incremental_snapshot_slot : z . number ( ) . nullable ( ) . optional ( ) ,
290
+ loading_incremental_snapshot_peer : z . string ( ) . nullable ( ) . optional ( ) ,
291
+ loading_incremental_snapshot_total_bytes : z . coerce
292
+ . number ( )
293
+ . nullable ( )
294
+ . optional ( ) ,
295
+ loading_incremental_snapshot_elapsed : z . number ( ) . nullable ( ) . optional ( ) ,
296
+ loading_incremental_snapshot_read_bytes : z . coerce
297
+ . number ( )
298
+ . nullable ( )
299
+ . optional ( ) ,
300
+ loading_incremental_snapshot_read_elapsed : z . number ( ) . nullable ( ) . optional ( ) ,
301
+ loading_incremental_snapshot_read_throughput : z
302
+ . number ( )
303
+ . nullable ( )
304
+ . optional ( ) ,
305
+ loading_incremental_snapshot_read_remaining : z . number ( ) . nullable ( ) . optional ( ) ,
306
+ loading_incremental_snapshot_read_path : z . string ( ) . nullable ( ) . optional ( ) ,
307
+ loading_incremental_snapshot_current_bytes : z . coerce
308
+ . number ( )
309
+ . nullable ( )
310
+ . optional ( ) ,
311
+ loading_incremental_snapshot_decompress_bytes : z . coerce
312
+ . number ( )
313
+ . nullable ( )
314
+ . optional ( ) ,
315
+
316
+ loading_incremental_snapshot_decompress_elapsed : z
317
+ . number ( )
318
+ . nullable ( )
319
+ . optional ( ) ,
320
+ loading_incremental_snapshot_decompress_throughput : z
321
+ . number ( )
322
+ . nullable ( )
323
+ . optional ( ) ,
324
+ loading_incremental_snapshot_decompress_compressed_bytes : z . coerce
325
+ . number ( )
326
+ . nullable ( )
327
+ . optional ( ) ,
328
+ loading_incremental_snapshot_decompress_decompressed_bytes : z . coerce
329
+ . number ( )
330
+ . nullable ( )
331
+ . optional ( ) ,
332
+ loading_incremental_snapshot_decompress_remaining : z
333
+ . number ( )
334
+ . nullable ( )
335
+ . optional ( ) ,
336
+ loading_incremental_snapshot_insert_bytes : z . coerce
337
+ . number ( )
338
+ . nullable ( )
339
+ . optional ( ) ,
340
+ loading_incremental_snapshot_insert_elapsed : z . number ( ) . nullable ( ) . optional ( ) ,
341
+ loading_incremental_snapshot_insert_throughput : z
342
+ . number ( )
343
+ . nullable ( )
344
+ . optional ( ) ,
345
+ loading_incremental_snapshot_insert_remaining : z
346
+ . number ( )
347
+ . nullable ( )
348
+ . optional ( ) ,
349
+ loading_incremental_snapshot_insert_path : z . string ( ) . nullable ( ) . optional ( ) ,
350
+ loading_incremental_snapshot_insert_accounts_throughput : z
351
+ . number ( )
352
+ . nullable ( )
353
+ . optional ( ) ,
354
+ loading_incremental_snapshot_insert_accounts_current : z
355
+ . number ( )
356
+ . nullable ( )
357
+ . optional ( ) ,
358
+
359
+ // catching_up
360
+ catching_up_elapsed : z . number ( ) . nullable ( ) . optional ( ) ,
361
+ catching_up_min_turbine_slot : z . number ( ) . nullable ( ) . optional ( ) ,
362
+ catching_up_max_turbine_slot : z . number ( ) . nullable ( ) . optional ( ) ,
363
+ catching_up_min_repair_slot : z . number ( ) . nullable ( ) . optional ( ) ,
364
+ catching_up_max_repair_slot : z . number ( ) . nullable ( ) . optional ( ) ,
365
+ catching_up_max_replay_slot : z . number ( ) . nullable ( ) . optional ( ) ,
366
+ catching_up_first_turbine_slot : z . number ( ) . nullable ( ) . optional ( ) ,
367
+ catching_up_latest_turbine_slot : z . number ( ) . nullable ( ) . optional ( ) ,
368
+ catching_up_latest_repair_slot : z . number ( ) . nullable ( ) . optional ( ) ,
369
+ catching_up_latest_replay_slot : z . number ( ) . nullable ( ) . optional ( ) ,
370
+ } ) ;
371
+
222
372
export const slotTransactionsSchema = z . object ( {
223
373
start_timestamp_nanos : z . coerce . bigint ( ) ,
224
374
target_end_timestamp_nanos : z . coerce . bigint ( ) ,
@@ -371,6 +521,10 @@ export const summarySchema = z.discriminatedUnion("key", [
371
521
key : z . literal ( "startup_progress" ) ,
372
522
value : startupProgressSchema ,
373
523
} ) ,
524
+ summaryTopicSchema . extend ( {
525
+ key : z . literal ( "boot_progress" ) ,
526
+ value : bootProgressSchema ,
527
+ } ) ,
374
528
summaryTopicSchema . extend ( {
375
529
key : z . literal ( "tps_history" ) ,
376
530
value : tpsHistorySchema ,
@@ -408,6 +562,43 @@ export const epochSchema = z.discriminatedUnion("key", [
408
562
} ) ,
409
563
] ) ;
410
564
565
+ const gossipNetworkHealthSchema = z . object ( {
566
+ rx_push_pct : z . number ( ) . optional ( ) ,
567
+ duplicate_pct : z . number ( ) . optional ( ) ,
568
+ bad_pct : z . number ( ) . optional ( ) ,
569
+ pull_already_known_pct : z . number ( ) . optional ( ) ,
570
+ total_stake : z . coerce . bigint ( ) ,
571
+ total_peers : z . coerce . bigint ( ) ,
572
+ connected_stake : z . coerce . bigint ( ) ,
573
+ connected_peers : z . number ( ) ,
574
+ } ) ;
575
+
576
+ const gossipNetworkTrafficSchema = z . object ( {
577
+ total_throughput : z . number ( ) . optional ( ) ,
578
+ peer_names : z . string ( ) . array ( ) ,
579
+ peer_throughputs : z . number ( ) . array ( ) . optional ( ) ,
580
+ } ) ;
581
+
582
+ const gossipStorageUtilSchema = z . object ( {
583
+ total_bytes : z . coerce . number ( ) ,
584
+ peer_names : z . string ( ) . array ( ) ,
585
+ peer_bytes : z . number ( ) . array ( ) ,
586
+ } ) ;
587
+
588
+ export const gossipNetworkStatsSchema = z . object ( {
589
+ health : gossipNetworkHealthSchema ,
590
+ ingress : gossipNetworkTrafficSchema ,
591
+ egress : gossipNetworkTrafficSchema ,
592
+ storage : gossipStorageUtilSchema ,
593
+ } ) ;
594
+
595
+ export const gossipSchema = z . discriminatedUnion ( "key" , [
596
+ gossipTopicSchema . extend ( {
597
+ key : z . literal ( "network_stats" ) ,
598
+ value : gossipNetworkStatsSchema ,
599
+ } ) ,
600
+ ] ) ;
601
+
411
602
const peerUpdateGossipSchema = z . object ( {
412
603
wallclock : z . number ( ) ,
413
604
shred_version : z . number ( ) ,
0 commit comments