Inspector State
Presentation state for the Observe and Control surfaces. Both surfaces read the same InspectorViewModel since they are two views over one polled snapshot.
Constructors
Properties
Mirrors InspectorSnapshot.captureCategories -- the set of capture categories the host enabled at DevConsole.initialize(). InspectorDataSource already empties out the lists a disabled category would otherwise populate (e.g. an empty sockets when neither SOCKET nor MQTT is enabled), but that alone only produces an empty state, not a hidden surface -- the helpers below (captures, visibleObserveTabs, visibleDestinations) are the one place that turns "this category is off" into "this tab/destination does not exist right now", so every caller (tab row, bottom nav, section gating) reads the same gate instead of re-deriving it.
Evidence-tray flag state read through InspectorDataSource.flaggedCrashIds; see its own doc.
Evidence-tray flag state read through InspectorDataSource.flaggedTransactionIds; see its own doc.
Mirrors InspectorSnapshot.keepAlivePromptNeeded; consumed by the Control surface's snackbar.
One-shot: the More screen's last screenshot capture attempt, consumed into a flash message.
One-shot: a resolved path awaiting the Share sheet; consumed by InspectorAction.ConsumeShareFile.
Remote Config providers, already redacted and STATE-gated by the data source.