/** * @catalog_tier A * @guardrail pattern_id_stability * @routes_to log10x_pattern_examples, log10x_pattern_trend * @_audit_rationale Pairs current-window byte presence with 30d first-seen probe (fetchFirstSeenBatch) keyed on locally-derived tenx_hash so pattern_hash is snapshot-independent, then filters patterns whose first-seen age is inside the recency window. Identity-stable separation of new-vs-changing stories an agent cannot recompose from raw PromQL. * * log10x_whats_new — patterns whose first-seen timestamp falls inside a * recency window. * * Answers "what showed up recently?" — distinct from `top_volume` (current * cost ranking) and `whats_changing` (delta vs baseline). New patterns * have no baseline, so any "delta math" would be meaningless; this tool * exists so they get a clean home and don't pollute the changing-vs-baseline * surface. * * Implementation: query bytes_per_pattern in the current window to find * candidate hashes, then for each hash query the 30-day history to find * the earliest non-zero datapoint (`fetchFirstSeenBatch`). A pattern is * "new" when its first-seen timestamp is inside `first_seen_within`. * * Default sort: by `first_seen` recency descending (most recent first). */ import { z } from 'zod'; import type { EnvConfig } from '../lib/environments.js'; import { type StructuredOutput } from '../lib/output-types.js'; export declare const whatsNewSchema: { timeRange: z.ZodDefault; first_seen_within: z.ZodDefault>; service: z.ZodOptional; severity: z.ZodOptional; limit: z.ZodDefault; analyzerCost: z.ZodOptional; environment: z.ZodOptional; view: z.ZodDefault>; }; export declare function executeWhatsNew(args: { timeRange?: string; first_seen_within?: string; service?: string; severity?: string; limit?: number; analyzerCost?: number; view?: 'summary' | 'markdown'; }, env: EnvConfig): Promise;