/** * log10x_explain_mode — L2 surface. * * Explains ONE enforcement mode to the user in service-level plain * language before any action is taken. Called after the user picks a * mode from log10x_cost_options (or directly when the agent has already * determined the mode from context). * * Three compliance levers (same shape as log10x_start / log10x_cost_options): * must_render_verbatim — plain-text (NOT markdown) three-section card * with no pattern_hash references. * must_ask_user — "Apply" or "Preview" choice. * forbidden_next_actions — locks apply tools and preview_filter until the * user explicitly picks one. * * routes_to: * Apply → configure_engine (compact / offload / tier_down / sample / drop) * null (observe_only — no apply step) * Preview → log10x_preview_filter */ import { z } from 'zod'; import { type StructuredOutput } from '../lib/output-types.js'; import type { MustAskUser } from './log10x-start.js'; export declare const EXPLAIN_MODES: readonly ["compact", "offload", "tier_down", "sample", "drop", "observe_only"]; export type ExplainMode = typeof EXPLAIN_MODES[number]; export declare const explainModeSchema: { service: z.ZodString; mode: z.ZodEnum<["compact", "offload", "tier_down", "sample", "drop", "observe_only"]>; destination: z.ZodOptional; effective_ingest_per_gb: z.ZodOptional; }; export interface ExplainModeEnvelope { service: string; mode: ExplainMode; destination: string | null; /** Monthly bytes this service emits — null if metrics unavailable. */ service_bytes_per_month: number | null; /** Monthly cost estimate — null if no rate is set. */ service_cost_per_month_usd: number | null; must_render_verbatim: string; must_ask_user: MustAskUser; forbidden_next_actions: string[]; routes_to: { apply: { tool: string; args: Record; } | null; preview: { tool: string; args: Record; }; }; } export declare function executeExplainMode(args: { service: string; mode: ExplainMode; destination?: string; effective_ingest_per_gb?: number; }): Promise;