/** * Nexus DevRadar — introspection sink for the Studio WebSocket (dev only). * * The CLI registers a sink (`registerDevRadarSink`) that forwards to `broadcast()`. * When no sink is registered, all emits are no-ops (production / `nexus start`). */ /** v1 wire protocol — keep in sync with `packages/cli/src/studio.ts` `StudioEvent` (incl. security:report). */ export type DevRadarEvent = { type: 'action:call'; payload: ActionCallPayload; } | { type: 'action:result'; payload: ActionResultPayload; } | { type: 'action:redirect'; payload: ActionRedirectPayload; } | { type: 'action:error'; payload: ActionErrorPayload; } | { type: 'devtools:pretext'; payload: PretextProfilePayload; } | { type: 'security:audit'; payload: SecurityAuditPayload; } | { type: 'security:report'; payload: SecurityReportPayload; } | { type: 'rune:telemetry'; payload: RuneTelemetryPayload; }; export interface ActionCallPayload { id: string; name: string; islandId?: string; input: unknown; timestamp: number; idempotencyKey?: string; } export interface ActionResultPayload { id: string; name: string; output: unknown; duration: number; cached: boolean; } export interface ActionRedirectPayload { id: string; name: string; location: string; status: number; duration: number; } export interface ActionErrorPayload { id: string; name: string; error: string; code?: string; duration: number; } export interface PretextProfilePayload { /** Route pattern, e.g. `/news/[slug]` */ pattern: string; durationMs: number; /** Layout + page modules that ran nxPretext in parallel */ parallelCount: number; } export interface SecurityAuditPayload { kind: 'csrf_blocked' | 'rate_limited' | 'replay' | 'ghost_wall' | 'shield_action' | 'vault_updated' | 'build_mismatch' | 'custom'; message: string; action?: string; } /** Studio "Security Report" checklist (snapshot when `nexus dev` connects DevRadar). */ export interface SecurityReportCheck { id: string; label: string; status: 'pass' | 'warn' | 'info'; } export interface SecurityReportPayload { hardened: boolean; checks: SecurityReportCheck[]; } /** Placeholder for client-originated rune stats (future: bridge from runtime). */ export interface RuneTelemetryPayload { runeId: string; updatesPerSecond: number; label?: string; } /** Register the Studio broadcast function (called once from `nexus dev`). */ export declare function registerDevRadarSink(fn: (event: DevRadarEvent) => void): () => void; export declare function emitDevRadar(event: DevRadarEvent): void; /** Deep-clone-ish sanitizer for telemetry (arguments / results). */ export declare function sanitizeTelemetryValue(value: unknown, depth?: number): unknown; export declare function newTraceId(): string; //# sourceMappingURL=devradar.d.ts.map