···1313use super::permissions::Permission;
1414use super::types::{LexiconSummary, UploadLexiconBody};
15151616-/// Send the current record collection list to the Tap task so it
1717-/// syncs the updated filter.
1616+/// Broadcast the current record collection list so the Jetstream
1717+/// subscription syncs its filter.
1818async fn notify_collections(state: &AppState) {
1919 let collections = state.lexicons.get_record_collections().await;
2020 let _ = state.collections_tx.send(collections);
+2-2
src/admin/network_lexicons.rs
···1313use super::permissions::Permission;
1414use super::types::{AddNetworkLexiconBody, NetworkLexiconSummary};
15151616-/// Send the current record collection list to the Tap task so it
1717-/// syncs the updated filter.
1616+/// Broadcast the current record collection list so the Jetstream
1717+/// subscription syncs its filter.
1818async fn notify_collections(state: &AppState) {
1919 let collections = state.lexicons.get_record_collections().await;
2020 let _ = state.collections_tx.send(collections);
+1-1
src/jetstream.rs
···106106// Public API
107107// ---------------------------------------------------------------------------
108108109109-/// Spawn a background task that connects to Jetstream's WebSocket firehose and
109109+/// Spawn a background task that connects to Jetstream's WebSocket stream and
110110/// processes record + identity events. Uses exponential backoff on disconnects.
111111pub fn spawn(state: AppState, mut collections_rx: watch::Receiver<Vec<String>>) {
112112 tokio::spawn(async move {
···22import type { StatsResponse } from "@/types/stats"
33import type { LexiconSummary, LexiconDetail } from "@/types/lexicons"
44import type { NetworkLexiconSummary } from "@/types/network-lexicons"
55-import type { TapStatsResponse } from "@/types/tap"
65import type { BackfillJob } from "@/types/backfill"
76import type { UserSummary } from "@/types/users"
87import type { AdminListRecordsResponse } from "@/types/records"
···2423export type { CollectionStat, StatsResponse } from "@/types/stats"
2524export type { LexiconSummary, LexiconDetail } from "@/types/lexicons"
2625export type { NetworkLexiconSummary } from "@/types/network-lexicons"
2727-export type { TapStatsResponse } from "@/types/tap"
2826export type { BackfillJob } from "@/types/backfill"
2927export type { UserSummary } from "@/types/users"
3028export type { AdminRecord, AdminListRecordsResponse } from "@/types/records"
···143141 `/admin/network-lexicons/${encodeURIComponent(nsid)}`,
144142 { method: "DELETE" }
145143 )
146146-}
147147-148148-// Tap Stats
149149-export function getTapStats() {
150150- return apiFetch<TapStatsResponse>("/admin/tap/stats")
151144}
152145153146// Backfill
-5
web/src/types/tap.ts
···11-export interface TapStatsResponse {
22- repo_count: number
33- record_count: number
44- outbox_buffer: number
55-}