Package-level declarations
Types
Process-local handoff from the full runtime to the SDK-owned Activity.
Grouped callbacks for the read-only-by-default app file browser. Delete and share are both capability-gated -- share hands the caller a real, unredacted file, the same reasoning that gates the browser's download route behind the files capability.
User intents dispatched from the Observe and Control surfaces to InspectorViewModel.
Shape of a captured body preview, mirroring io.devconsole.network.BodyPreview without a sdk:network dependency.
One lead-up event captured in a crash/ANR's bounded breadcrumb ring buffer. Already-redacted event summaries only -- no payload bodies -- mirroring the "breadcrumbs" array io.devconsole.CrashCapture serializes into the crash/ANR payload.
One authenticated browser, as shown (and revocable) on the dashboard's Session view and this More surface.
Read-only display of the host's current browser policy; changing access is out of scope here.
An uncaught-exception or ANR capture, flattened for the Crashes surface. kind is "UNCAUGHT" or "ANR" -- mirroring the internal CrashKind.name the full runtime tags the event with -- so it reuses logLevelShortLabel/logLevelTint exactly like the Logs tab's crash rows already do. stackTrace is the bounded, explicitly-truncation-marked all-thread dump; an ANR carries every thread, main first, an uncaught exception carries the throwing thread's trace.
Mirrors io.devconsole.server.api.SdkHealthSnapshot's counter types (all Long, plus state).
One Remote Config key on the Observe surface's Config tab. Mirrors remoteconfig.RemoteConfigEntry without a :sdk:remote-config dependency, the same way InspectorBodyKind mirrors network.BodyPreview. source carries the wire name (remote/default/static/override/unknown) rather than an enum, so this module never has to track the producer's type.
One Remote Config provider and its fetch state, as shown on the Observe surface's Config tab.
Mirrors io.devconsole.api.RetentionPolicy's configured caps, for display next to actual usage.
Presentation state for the Observe and Control surfaces. Both surfaces read the same InspectorViewModel since they are two views over one polled snapshot.
Mirrors io.devconsole.network.NetworkTimingPhases without a sdk:network dependency. Every phase is legitimately null in normal operation -- a pooled connection does no DNS/connect, a plaintext request has no TLS, a cached response does no network work -- so a null phase must never be rendered as a zero-length bar; it must be omitted. All-null means no per-phase timing was captured for this transaction (an adapter that predates this field, or a transport that never wires up phase timing), in which case a caller should fall back to the total duration.
Caller-supplied filter for the network-transaction page in InspectorDataSource.snapshot. Owned by the UI layer (not io.devconsole.network.NetworkTransactionQuery) so this module never takes a dependency on sdk:network; adapters translate it into their own engine query type.
Presentation-layer MVI store for the Observe and Control surfaces. Reads go through dispatcher so the polled InspectorDataSource snapshot never blocks the main thread; the capability gate for InspectorAction.ExecuteComposer and InspectorAction.SetMocksEnabled is checked synchronously against the last-loaded InspectorState.capabilities before a coroutine is even launched, so a disabled tool never reaches dataSource.
Sub-surfaces of the Observe workspace: live traffic plus the other captured signal sources. REMOTE_CONFIG is last because it is the one tab that is not a stream of captures arriving over time -- it is the current resolved snapshot of the app's config.
Coarse status bucket for the Observe traffic tab's status filter chips.
Functions
Optional Compose launcher. Callbacks keep server lifecycle ownership in the host application. endpoint is not derived from state -- DevConsoleState.Running carries no payload -- so the host must capture it from the StartResult.Started its own onStart receives (and clear it back to null once it calls onStop) for the running address to be displayed here.