@@ -11,6 +11,10 @@ const epochTopicSchema = z.object({
1111 topic : z . literal ( "epoch" ) ,
1212} ) ;
1313
14+ const gossipTopicSchema = z . object ( {
15+ topic : z . literal ( "gossip" ) ,
16+ } ) ;
17+
1418const peersTopicSchema = z . object ( {
1519 topic : z . literal ( "peers" ) ,
1620} ) ;
@@ -26,6 +30,7 @@ const blockEngineTopicSchema = z.object({
2630export const topicSchema = z . discriminatedUnion ( "topic" , [
2731 summaryTopicSchema ,
2832 epochTopicSchema ,
33+ gossipTopicSchema ,
2934 peersTopicSchema ,
3035 slotTopicSchema ,
3136 blockEngineTopicSchema ,
@@ -71,6 +76,9 @@ export const tileTypeSchema = z.enum([
7176 "plugin" ,
7277 "gui" ,
7378 "cswtch" ,
79+ "snaprd" ,
80+ "snapdc" ,
81+ "snapin" ,
7482] ) ;
7583
7684export const tileSchema = z . object ( {
@@ -198,17 +206,17 @@ export const startupProgressSchema = z.object({
198206 downloading_full_snapshot_elapsed_secs : z . number ( ) . nullable ( ) ,
199207 downloading_full_snapshot_remaining_secs : z . number ( ) . nullable ( ) ,
200208 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 ( ) ,
203211
204212 // downloading incremental snapshot
205213 downloading_incremental_snapshot_slot : z . number ( ) . nullable ( ) ,
206214 downloading_incremental_snapshot_peer : z . string ( ) . nullable ( ) ,
207215 downloading_incremental_snapshot_elapsed_secs : z . number ( ) . nullable ( ) ,
208216 downloading_incremental_snapshot_remaining_secs : z . number ( ) . nullable ( ) ,
209217 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 ( ) ,
212220
213221 // processing ledger
214222 ledger_slot : z . number ( ) . nullable ( ) ,
@@ -219,6 +227,148 @@ export const startupProgressSchema = z.object({
219227 waiting_for_supermajority_stake_percent : z . number ( ) . nullable ( ) ,
220228} ) ;
221229
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+
222372export const slotTransactionsSchema = z . object ( {
223373 start_timestamp_nanos : z . coerce . bigint ( ) ,
224374 target_end_timestamp_nanos : z . coerce . bigint ( ) ,
@@ -373,6 +523,10 @@ export const summarySchema = z.discriminatedUnion("key", [
373523 key : z . literal ( "startup_progress" ) ,
374524 value : startupProgressSchema ,
375525 } ) ,
526+ summaryTopicSchema . extend ( {
527+ key : z . literal ( "boot_progress" ) ,
528+ value : bootProgressSchema ,
529+ } ) ,
376530 summaryTopicSchema . extend ( {
377531 key : z . literal ( "tps_history" ) ,
378532 value : tpsHistorySchema ,
@@ -410,6 +564,43 @@ export const epochSchema = z.discriminatedUnion("key", [
410564 } ) ,
411565] ) ;
412566
567+ const gossipNetworkHealthSchema = z . object ( {
568+ rx_push_pct : z . number ( ) . optional ( ) ,
569+ duplicate_pct : z . number ( ) . optional ( ) ,
570+ bad_pct : z . number ( ) . optional ( ) ,
571+ pull_already_known_pct : z . number ( ) . optional ( ) ,
572+ total_stake : z . coerce . bigint ( ) ,
573+ total_peers : z . coerce . bigint ( ) ,
574+ connected_stake : z . coerce . bigint ( ) ,
575+ connected_peers : z . number ( ) ,
576+ } ) ;
577+
578+ const gossipNetworkTrafficSchema = z . object ( {
579+ total_throughput : z . number ( ) . optional ( ) ,
580+ peer_names : z . string ( ) . array ( ) ,
581+ peer_throughputs : z . number ( ) . array ( ) . optional ( ) ,
582+ } ) ;
583+
584+ const gossipStorageUtilSchema = z . object ( {
585+ total_bytes : z . coerce . number ( ) ,
586+ peer_names : z . string ( ) . array ( ) ,
587+ peer_bytes : z . number ( ) . array ( ) ,
588+ } ) ;
589+
590+ export const gossipNetworkStatsSchema = z . object ( {
591+ health : gossipNetworkHealthSchema ,
592+ ingress : gossipNetworkTrafficSchema ,
593+ egress : gossipNetworkTrafficSchema ,
594+ storage : gossipStorageUtilSchema ,
595+ } ) ;
596+
597+ export const gossipSchema = z . discriminatedUnion ( "key" , [
598+ gossipTopicSchema . extend ( {
599+ key : z . literal ( "network_stats" ) ,
600+ value : gossipNetworkStatsSchema ,
601+ } ) ,
602+ ] ) ;
603+
413604const peerUpdateGossipSchema = z . object ( {
414605 wallclock : z . number ( ) ,
415606 shred_version : z . number ( ) ,
0 commit comments