[{"data":1,"prerenderedAt":2721},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-telemetry-setup":607,"-use-cases-telemetry-setup-surround":2716},[4,35,85,143,323,484,543,582],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Start","\u002Fstart","1.start",[9,14,19,24,29],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":25,"path":26,"stem":27,"icon":28},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",{"title":30,"path":31,"stem":32,"icon":33},"Choose your logger","\u002Fstart\u002Ftypescript-logging-library","1.start\u002F5.typescript-logging-library","i-lucide-file-code",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Learn","\u002Flearn","2.learn",[40,45,50,55,60,65,70,75,80],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":66,"path":67,"stem":68,"icon":69},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":71,"path":72,"stem":73,"icon":74},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":76,"path":77,"stem":78,"icon":79},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":81,"path":82,"stem":83,"icon":84},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":86,"path":87,"stem":88,"children":89,"page":34},"CLI","\u002Fcli","3.cli",[90,93,98,103,108,113,118,123,128,133,138],{"title":41,"path":91,"stem":92,"icon":49},"\u002Fcli\u002Foverview","3.cli\u002F0.overview",{"title":94,"path":95,"stem":96,"icon":97},"init","\u002Fcli\u002Finit","3.cli\u002F1.init","i-lucide-wand-sparkles",{"title":99,"path":100,"stem":101,"icon":102},"logs","\u002Fcli\u002Flogs","3.cli\u002F10.logs","i-lucide-scroll-text",{"title":104,"path":105,"stem":106,"icon":107},"map","\u002Fcli\u002Fmap","3.cli\u002F2.map","i-lucide-radar",{"title":109,"path":110,"stem":111,"icon":112},"Rules","\u002Fcli\u002Frules","3.cli\u002F3.rules","i-lucide-list-checks",{"title":114,"path":115,"stem":116,"icon":117},"Scoring","\u002Fcli\u002Fscoring","3.cli\u002F4.scoring","i-lucide-gauge",{"title":119,"path":120,"stem":121,"icon":122},"CI","\u002Fcli\u002Fci","3.cli\u002F5.ci","i-lucide-git-pull-request",{"title":124,"path":125,"stem":126,"icon":127},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F6.doctor","i-lucide-stethoscope",{"title":129,"path":130,"stem":131,"icon":132},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F7.telemetry","i-lucide-bar-chart-3",{"title":134,"path":135,"stem":136,"icon":137},"agents","\u002Fcli\u002Fagents","3.cli\u002F8.agents","i-lucide-bot",{"title":139,"path":140,"stem":141,"icon":142},"Observability Score","\u002Fcli\u002Fobservability-score","3.cli\u002F9.observability-score","i-lucide-activity",{"title":144,"path":145,"stem":146,"children":147,"page":34},"Integrate","\u002Fintegrate","4.integrate",[148,152,235],{"title":41,"path":149,"stem":150,"icon":151},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":153,"path":154,"stem":155,"children":156,"page":34},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[157,160,190,215],{"title":41,"path":158,"stem":159,"icon":44},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":161,"path":162,"stem":163,"children":164,"page":34},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[165,170,175,180,185],{"title":166,"path":167,"stem":168,"icon":169},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":171,"path":172,"stem":173,"icon":174},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F02.posthog","i-simple-icons-posthog",{"title":176,"path":177,"stem":178,"icon":179},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F03.sentry","i-simple-icons-sentry",{"title":181,"path":182,"stem":183,"icon":184},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F04.better-stack","i-simple-icons-betterstack",{"title":186,"path":187,"stem":188,"icon":189},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F05.datadog","i-simple-icons-datadog",{"title":191,"path":192,"stem":193,"children":194,"page":34},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[195,200,205,210],{"title":196,"path":197,"stem":198,"icon":199},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":201,"path":202,"stem":203,"icon":204},"ClickHouse","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fclickhouse","4.integrate\u002Fadapters\u002Fhybrid\u002F02.clickhouse","i-simple-icons-clickhouse",{"title":206,"path":207,"stem":208,"icon":209},"OTLP","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp","4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp","i-simple-icons-opentelemetry",{"title":211,"path":212,"stem":213,"icon":214},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx","4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx","i-custom-hyperdx",{"title":216,"path":217,"stem":218,"children":219,"page":34},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[220,225,230],{"title":221,"path":222,"stem":223,"icon":224},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":226,"path":227,"stem":228,"icon":229},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":231,"path":232,"stem":233,"icon":234},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":236,"path":237,"stem":238,"children":239,"page":34},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[240,244,249,254,259,264,269,274,279,284,289,294,299,304,308,313,318],{"title":41,"path":241,"stem":242,"icon":243},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":245,"path":246,"stem":247,"icon":248},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":250,"path":251,"stem":252,"icon":253},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":255,"path":256,"stem":257,"icon":258},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":260,"path":261,"stem":262,"icon":263},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":265,"path":266,"stem":267,"icon":268},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":270,"path":271,"stem":272,"icon":273},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":275,"path":276,"stem":277,"icon":278},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":280,"path":281,"stem":282,"icon":283},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":285,"path":286,"stem":287,"icon":288},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":290,"path":291,"stem":292,"icon":293},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":295,"path":296,"stem":297,"icon":298},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":300,"path":301,"stem":302,"icon":303},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":305,"path":306,"stem":307,"icon":79},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":309,"path":310,"stem":311,"icon":312},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":314,"path":315,"stem":316,"icon":317},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":319,"path":320,"stem":321,"icon":322},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":324,"path":325,"stem":326,"children":327,"page":34},"Use Cases","\u002Fuse-cases","5.use-cases",[328,331,336,364,391,423,444,449,454,458],{"title":41,"path":329,"stem":330,"icon":112},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":332,"path":333,"stem":334,"icon":335},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":337,"icon":338,"path":339,"stem":340,"children":341,"page":34},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[342,345,350,355,360],{"title":41,"path":343,"stem":344,"icon":44},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":346,"path":347,"stem":348,"icon":349},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":351,"path":352,"stem":353,"icon":354},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":356,"path":357,"stem":358,"icon":359},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":361,"path":362,"stem":363,"icon":142},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry",{"title":365,"icon":366,"path":367,"stem":368,"children":369,"page":34},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[370,373,378,383,387],{"title":41,"path":371,"stem":372,"icon":44},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":374,"path":375,"stem":376,"icon":377},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":379,"path":380,"stem":381,"icon":382},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":384,"path":385,"stem":386,"icon":335},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":388,"path":389,"stem":390,"icon":117},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":392,"icon":393,"path":394,"stem":395,"children":396,"page":34},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[397,400,405,410,415,419],{"title":41,"path":398,"stem":399,"icon":44},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":401,"path":402,"stem":403,"icon":404},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":406,"path":407,"stem":408,"icon":409},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":411,"path":412,"stem":413,"icon":414},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":416,"path":417,"stem":418,"icon":393},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":420,"path":421,"stem":422,"icon":84},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":361,"icon":117,"path":424,"stem":425,"children":426,"page":34},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[427,430,435,440],{"title":41,"path":428,"stem":429,"icon":44},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":431,"path":432,"stem":433,"icon":434},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":436,"path":437,"stem":438,"icon":439},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":441,"path":442,"stem":443,"icon":84},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":445,"path":446,"stem":447,"icon":448},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":450,"path":451,"stem":452,"icon":453},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":455,"path":456,"stem":457,"icon":439},"Node.js request logging","\u002Fuse-cases\u002Fstructured-logging-nodejs","5.use-cases\u002F6.structured-logging-nodejs",{"title":459,"icon":460,"path":461,"stem":462,"children":463,"page":34},"Signals","i-lucide-scan-search","\u002Fuse-cases\u002Fsignals","5.use-cases\u002F7.signals",[464,467,472,477,480],{"title":41,"path":465,"stem":466,"icon":44},"\u002Fuse-cases\u002Fsignals\u002Foverview","5.use-cases\u002F7.signals\u002F01.overview",{"title":468,"path":469,"stem":470,"icon":471},"What You Can Ask","\u002Fuse-cases\u002Fsignals\u002Fask","5.use-cases\u002F7.signals\u002F02.ask","i-lucide-message-circle-question",{"title":473,"path":474,"stem":475,"icon":476},"What It Costs","\u002Fuse-cases\u002Fsignals\u002Fcost","5.use-cases\u002F7.signals\u002F03.cost","i-lucide-coins",{"title":441,"path":478,"stem":479,"icon":84},"\u002Fuse-cases\u002Fsignals\u002Freference","5.use-cases\u002F7.signals\u002F04.reference",{"title":420,"path":481,"stem":482,"icon":483},"\u002Fuse-cases\u002Fsignals\u002Frecipes","5.use-cases\u002F7.signals\u002F05.recipes","i-lucide-lightbulb",{"title":485,"path":486,"stem":487,"children":488,"page":34},"Extend","\u002Fextend","6.extend",[489,493,498,503,507,512,516,520,524,528,533,538],{"title":41,"path":490,"stem":491,"icon":492},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":494,"path":495,"stem":496,"icon":497},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":499,"path":500,"stem":501,"icon":502},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":504,"path":505,"stem":506,"icon":497},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":508,"path":509,"stem":510,"icon":511},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":420,"path":513,"stem":514,"icon":515},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":517,"path":518,"stem":519,"icon":492},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":521,"path":522,"stem":523,"icon":448},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":525,"path":526,"stem":527,"icon":69},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":529,"path":530,"stem":531,"icon":532},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":534,"path":535,"stem":536,"icon":537},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":539,"path":540,"stem":541,"icon":542},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":441,"path":544,"stem":545,"children":546,"page":34},"\u002Freference","7.reference",[547,551,556,559,564,568,573,577],{"title":41,"path":548,"stem":549,"icon":550},"\u002Freference\u002Foverview","7.reference\u002F0.overview","i-lucide-book-marked",{"title":552,"path":553,"stem":554,"icon":555},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":388,"path":557,"stem":558,"icon":117},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":560,"path":561,"stem":562,"icon":563},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":565,"path":566,"stem":567,"icon":393},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":569,"path":570,"stem":571,"icon":572},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":574,"path":575,"stem":576,"icon":448},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":578,"path":579,"stem":580,"icon":581},"Cost","\u002Freference\u002Fcost","7.reference\u002F7.cost","i-lucide-receipt",{"title":583,"path":584,"stem":585,"children":586,"page":34},"Compare","\u002Fcompare","8.compare",[587,591,595,599,603],{"title":588,"path":589,"stem":590,"icon":572},"evlog vs Pino","\u002Fcompare\u002Fpino","8.compare\u002F1.pino",{"title":592,"path":593,"stem":594,"icon":209},"evlog vs OpenTelemetry","\u002Fcompare\u002Fopentelemetry","8.compare\u002F2.opentelemetry",{"title":596,"path":597,"stem":598,"icon":572},"evlog vs LogTape","\u002Fcompare\u002Flogtape","8.compare\u002F3.logtape",{"title":600,"path":601,"stem":602,"icon":572},"evlog vs Winston: formats and request events","\u002Fcompare\u002Fwinston","8.compare\u002F4.winston",{"title":604,"path":605,"stem":606,"icon":572},"evlog vs Consola: reporters and request context","\u002Fcompare\u002Fconsola","8.compare\u002F5.consola",{"id":608,"title":609,"body":610,"description":2704,"extension":2705,"links":2706,"meta":2712,"navigation":2713,"path":432,"seo":2714,"stem":433,"__hash__":2715},"docs\u002F5.use-cases\u002F4.telemetry\u002F02.setup.md","Telemetry Setup",{"type":611,"value":612,"toc":2695},"minimark",[613,618,622,711,765,784,788,806,1273,1278,1287,1395,1406,1410,1417,1983,1997,2049,2056,2251,2255,2265,2460,2490,2646,2650,2688,2691],[614,615,617],"h2",{"id":616},"configure-delivery","Configure delivery",[619,620,621],"p",{},"Point the CLI at your ingestion URL when you ship it, baked into the binary and overridable per environment:",[623,624,630],"pre",{"className":625,"code":626,"filename":627,"language":628,"meta":629,"style":629},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","withTelemetry(command, {\n  name: TOOL,\n  version: VERSION,\n  endpoint: 'https:\u002F\u002Ftelemetry.my-tool.dev\u002Fapi\u002Ftelemetry\u002Fingest',\n})\n","src\u002Findex.ts","ts","",[631,632,633,653,669,682,702],"code",{"__ignoreMap":629},[634,635,638,642,646,650],"span",{"class":636,"line":637},"line",1,[634,639,641],{"class":640},"s2Zo4","withTelemetry",[634,643,645],{"class":644},"sTEyZ","(command",[634,647,649],{"class":648},"sMK4o",",",[634,651,652],{"class":648}," {\n",[634,654,656,660,663,666],{"class":636,"line":655},2,[634,657,659],{"class":658},"swJcz","  name",[634,661,662],{"class":648},":",[634,664,665],{"class":644}," TOOL",[634,667,668],{"class":648},",\n",[634,670,672,675,677,680],{"class":636,"line":671},3,[634,673,674],{"class":658},"  version",[634,676,662],{"class":648},[634,678,679],{"class":644}," VERSION",[634,681,668],{"class":648},[634,683,685,688,690,693,697,700],{"class":636,"line":684},4,[634,686,687],{"class":658},"  endpoint",[634,689,662],{"class":648},[634,691,692],{"class":648}," '",[634,694,696],{"class":695},"sfazB","https:\u002F\u002Ftelemetry.my-tool.dev\u002Fapi\u002Ftelemetry\u002Fingest",[634,698,699],{"class":648},"'",[634,701,668],{"class":648},[634,703,705,708],{"class":636,"line":704},5,[634,706,707],{"class":648},"}",[634,709,710],{"class":644},")\n",[712,713,714,727],"table",{},[715,716,717],"thead",{},[718,719,720,724],"tr",{},[721,722,723],"th",{},"Override",[721,725,726],{},"Effect",[728,729,730,741,755],"tbody",{},[718,731,732,738],{},[733,734,735],"td",{},[631,736,737],{},"EVLOG_TELEMETRY_ENDPOINT",[733,739,740],{},"Replaces the baked-in URL (staging, self-hosted)",[718,742,743,752],{},[733,744,745,748,749],{},[631,746,747],{},"EVLOG_TELEMETRY=0"," \u002F ",[631,750,751],{},"DO_NOT_TRACK=1",[733,753,754],{},"No recording, no send",[718,756,757,762],{},[733,758,759],{},[631,760,761],{},"EVLOG_TELEMETRY_DEBUG=1",[733,763,764],{},"Print payloads to stderr without sending",[619,766,767,768,771,772,775,776,779,780,783],{},"The built-in HTTP drain POSTs ",[631,769,770],{},"Content-Type: application\u002Fjson"," with body ",[631,773,774],{},"{ events: RunEvent[] }"," and a 400ms timeout. On success (",[631,777,778],{},"res.ok","), delivered keys are removed from the outbox. ",[631,781,782],{},"flush()"," is capped at 500ms and never throws.",[614,785,787],{"id":786},"setup-with-citty","Setup with citty",[619,789,790,791,794,795,797,798,801,802,805],{},"Wrap your root command in ",[631,792,793],{},"withTelemetry()",", typically in ",[631,796,627],{},", the file that calls ",[631,799,800],{},"runMain()",". Subcommands can live in the same file or in ",[631,803,804],{},"src\u002Fcommands\u002F*.ts","; only the entrypoint needs the wrapper.",[623,807,809],{"className":625,"code":808,"filename":627,"language":628,"meta":629,"style":629},"import { defineCommand, runMain } from 'citty'\nimport { withTelemetry, defineTelemetryCommands } from '@evlog\u002Ftelemetry'\nimport { doctorCommand } from '.\u002Fcommands\u002Fdoctor'\nimport { syncCommand } from '.\u002Fcommands\u002Fsync'\n\nconst TOOL = 'my-tool'\nconst VERSION = '1.0.0'\n\nexport const main = withTelemetry(\n  defineCommand({\n    meta: { name: 'my-tool', description: '…', version: VERSION },\n    subCommands: {\n      doctor: doctorCommand,\n      sync: syncCommand,\n      telemetry: defineTelemetryCommands({ name: TOOL }),\n    },\n  }),\n  {\n    name: TOOL,\n    version: VERSION,\n    endpoint: 'https:\u002F\u002Ftelemetry.my-tool.dev\u002Fapi\u002Ftelemetry\u002Fingest',\n    collect: {\n      flags: { format: ['json', 'csv'] },\n      fields: { framework: ['nuxt', 'next'] },\n    },\n  },\n)\n\nrunMain(main)\n",[631,810,811,842,867,887,907,913,933,950,955,974,986,1033,1043,1055,1067,1095,1101,1111,1117,1129,1141,1157,1167,1206,1243,1248,1254,1259,1264],{"__ignoreMap":629},[634,812,813,817,820,823,825,828,831,834,836,839],{"class":636,"line":637},[634,814,816],{"class":815},"s7zQu","import",[634,818,819],{"class":648}," {",[634,821,822],{"class":644}," defineCommand",[634,824,649],{"class":648},[634,826,827],{"class":644}," runMain",[634,829,830],{"class":648}," }",[634,832,833],{"class":815}," from",[634,835,692],{"class":648},[634,837,838],{"class":695},"citty",[634,840,841],{"class":648},"'\n",[634,843,844,846,848,851,853,856,858,860,862,865],{"class":636,"line":655},[634,845,816],{"class":815},[634,847,819],{"class":648},[634,849,850],{"class":644}," withTelemetry",[634,852,649],{"class":648},[634,854,855],{"class":644}," defineTelemetryCommands",[634,857,830],{"class":648},[634,859,833],{"class":815},[634,861,692],{"class":648},[634,863,864],{"class":695},"@evlog\u002Ftelemetry",[634,866,841],{"class":648},[634,868,869,871,873,876,878,880,882,885],{"class":636,"line":671},[634,870,816],{"class":815},[634,872,819],{"class":648},[634,874,875],{"class":644}," doctorCommand",[634,877,830],{"class":648},[634,879,833],{"class":815},[634,881,692],{"class":648},[634,883,884],{"class":695},".\u002Fcommands\u002Fdoctor",[634,886,841],{"class":648},[634,888,889,891,893,896,898,900,902,905],{"class":636,"line":684},[634,890,816],{"class":815},[634,892,819],{"class":648},[634,894,895],{"class":644}," syncCommand",[634,897,830],{"class":648},[634,899,833],{"class":815},[634,901,692],{"class":648},[634,903,904],{"class":695},".\u002Fcommands\u002Fsync",[634,906,841],{"class":648},[634,908,909],{"class":636,"line":704},[634,910,912],{"emptyLinePlaceholder":911},true,"\n",[634,914,916,920,923,926,928,931],{"class":636,"line":915},6,[634,917,919],{"class":918},"spNyl","const",[634,921,922],{"class":644}," TOOL ",[634,924,925],{"class":648},"=",[634,927,692],{"class":648},[634,929,930],{"class":695},"my-tool",[634,932,841],{"class":648},[634,934,936,938,941,943,945,948],{"class":636,"line":935},7,[634,937,919],{"class":918},[634,939,940],{"class":644}," VERSION ",[634,942,925],{"class":648},[634,944,692],{"class":648},[634,946,947],{"class":695},"1.0.0",[634,949,841],{"class":648},[634,951,953],{"class":636,"line":952},8,[634,954,912],{"emptyLinePlaceholder":911},[634,956,958,961,964,967,969,971],{"class":636,"line":957},9,[634,959,960],{"class":815},"export",[634,962,963],{"class":918}," const",[634,965,966],{"class":644}," main ",[634,968,925],{"class":648},[634,970,850],{"class":640},[634,972,973],{"class":644},"(\n",[634,975,977,980,983],{"class":636,"line":976},10,[634,978,979],{"class":640},"  defineCommand",[634,981,982],{"class":644},"(",[634,984,985],{"class":648},"{\n",[634,987,989,992,994,996,999,1001,1003,1005,1007,1009,1012,1014,1016,1019,1021,1023,1026,1028,1030],{"class":636,"line":988},11,[634,990,991],{"class":658},"    meta",[634,993,662],{"class":648},[634,995,819],{"class":648},[634,997,998],{"class":658}," name",[634,1000,662],{"class":648},[634,1002,692],{"class":648},[634,1004,930],{"class":695},[634,1006,699],{"class":648},[634,1008,649],{"class":648},[634,1010,1011],{"class":658}," description",[634,1013,662],{"class":648},[634,1015,692],{"class":648},[634,1017,1018],{"class":695},"…",[634,1020,699],{"class":648},[634,1022,649],{"class":648},[634,1024,1025],{"class":658}," version",[634,1027,662],{"class":648},[634,1029,940],{"class":644},[634,1031,1032],{"class":648},"},\n",[634,1034,1036,1039,1041],{"class":636,"line":1035},12,[634,1037,1038],{"class":658},"    subCommands",[634,1040,662],{"class":648},[634,1042,652],{"class":648},[634,1044,1046,1049,1051,1053],{"class":636,"line":1045},13,[634,1047,1048],{"class":658},"      doctor",[634,1050,662],{"class":648},[634,1052,875],{"class":644},[634,1054,668],{"class":648},[634,1056,1058,1061,1063,1065],{"class":636,"line":1057},14,[634,1059,1060],{"class":658},"      sync",[634,1062,662],{"class":648},[634,1064,895],{"class":644},[634,1066,668],{"class":648},[634,1068,1070,1073,1075,1077,1079,1082,1084,1086,1088,1090,1093],{"class":636,"line":1069},15,[634,1071,1072],{"class":658},"      telemetry",[634,1074,662],{"class":648},[634,1076,855],{"class":640},[634,1078,982],{"class":644},[634,1080,1081],{"class":648},"{",[634,1083,998],{"class":658},[634,1085,662],{"class":648},[634,1087,922],{"class":644},[634,1089,707],{"class":648},[634,1091,1092],{"class":644},")",[634,1094,668],{"class":648},[634,1096,1098],{"class":636,"line":1097},16,[634,1099,1100],{"class":648},"    },\n",[634,1102,1104,1107,1109],{"class":636,"line":1103},17,[634,1105,1106],{"class":648},"  }",[634,1108,1092],{"class":644},[634,1110,668],{"class":648},[634,1112,1114],{"class":636,"line":1113},18,[634,1115,1116],{"class":648},"  {\n",[634,1118,1120,1123,1125,1127],{"class":636,"line":1119},19,[634,1121,1122],{"class":658},"    name",[634,1124,662],{"class":648},[634,1126,665],{"class":644},[634,1128,668],{"class":648},[634,1130,1132,1135,1137,1139],{"class":636,"line":1131},20,[634,1133,1134],{"class":658},"    version",[634,1136,662],{"class":648},[634,1138,679],{"class":644},[634,1140,668],{"class":648},[634,1142,1144,1147,1149,1151,1153,1155],{"class":636,"line":1143},21,[634,1145,1146],{"class":658},"    endpoint",[634,1148,662],{"class":648},[634,1150,692],{"class":648},[634,1152,696],{"class":695},[634,1154,699],{"class":648},[634,1156,668],{"class":648},[634,1158,1160,1163,1165],{"class":636,"line":1159},22,[634,1161,1162],{"class":658},"    collect",[634,1164,662],{"class":648},[634,1166,652],{"class":648},[634,1168,1170,1173,1175,1177,1180,1182,1185,1187,1190,1192,1194,1196,1199,1201,1204],{"class":636,"line":1169},23,[634,1171,1172],{"class":658},"      flags",[634,1174,662],{"class":648},[634,1176,819],{"class":648},[634,1178,1179],{"class":658}," format",[634,1181,662],{"class":648},[634,1183,1184],{"class":644}," [",[634,1186,699],{"class":648},[634,1188,1189],{"class":695},"json",[634,1191,699],{"class":648},[634,1193,649],{"class":648},[634,1195,692],{"class":648},[634,1197,1198],{"class":695},"csv",[634,1200,699],{"class":648},[634,1202,1203],{"class":644},"] ",[634,1205,1032],{"class":648},[634,1207,1209,1212,1214,1216,1219,1221,1223,1225,1228,1230,1232,1234,1237,1239,1241],{"class":636,"line":1208},24,[634,1210,1211],{"class":658},"      fields",[634,1213,662],{"class":648},[634,1215,819],{"class":648},[634,1217,1218],{"class":658}," framework",[634,1220,662],{"class":648},[634,1222,1184],{"class":644},[634,1224,699],{"class":648},[634,1226,1227],{"class":695},"nuxt",[634,1229,699],{"class":648},[634,1231,649],{"class":648},[634,1233,692],{"class":648},[634,1235,1236],{"class":695},"next",[634,1238,699],{"class":648},[634,1240,1203],{"class":644},[634,1242,1032],{"class":648},[634,1244,1246],{"class":636,"line":1245},25,[634,1247,1100],{"class":648},[634,1249,1251],{"class":636,"line":1250},26,[634,1252,1253],{"class":648},"  },\n",[634,1255,1257],{"class":636,"line":1256},27,[634,1258,710],{"class":644},[634,1260,1262],{"class":636,"line":1261},28,[634,1263,912],{"emptyLinePlaceholder":911},[634,1265,1267,1270],{"class":636,"line":1266},29,[634,1268,1269],{"class":640},"runMain",[634,1271,1272],{"class":644},"(main)\n",[1274,1275,1277],"h3",{"id":1276},"what-gets-recorded-automatically","What gets recorded automatically",[619,1279,1280,1282,1283,1286],{},[631,1281,641],{}," walks your citty tree. Each ",[631,1284,1285],{},"run"," handler produces one event, with no per-command telemetry boilerplate.",[712,1288,1289,1307],{},[715,1290,1291],{},[718,1292,1293,1296,1301],{},[721,1294,1295],{},"Invocation",[721,1297,1298],{},[631,1299,1300],{},"event.command",[721,1302,1303,1304],{},"Notes on ",[631,1305,1306],{},"flags",[728,1308,1309,1326,1342,1360,1380],{},[718,1310,1311,1316,1320],{},[733,1312,1313],{},[631,1314,1315],{},"my-tool doctor",[733,1317,1318],{},[631,1319,124],{},[733,1321,1322,1325],{},[631,1323,1324],{},"{}"," — nothing was passed, and defaults are not choices",[718,1327,1328,1333,1337],{},[733,1329,1330],{},[631,1331,1332],{},"my-tool doctor --json",[733,1334,1335],{},[631,1336,124],{},[733,1338,1339],{},[631,1340,1341],{},"{ json: true }",[718,1343,1344,1349,1354],{},[733,1345,1346],{},[631,1347,1348],{},"my-tool sync --dry-run --output .\u002Fout",[733,1350,1351],{},[631,1352,1353],{},"sync",[733,1355,1356,1359],{},[631,1357,1358],{},"{ dryRun: true, output: \"\u003Cset>\" }"," — the path itself is never sent",[718,1361,1362,1367,1371],{},[733,1363,1364],{},[631,1365,1366],{},"my-tool sync --format json",[733,1368,1369],{},[631,1370,1353],{},[733,1372,1373,1376,1377],{},[631,1374,1375],{},"{ format: \"json\" }"," only if allowlisted in ",[631,1378,1379],{},"collect.flags",[718,1381,1382,1387,1392],{},[733,1383,1384],{},[631,1385,1386],{},"my-tool telemetry status",[733,1388,1389],{},[631,1390,1391],{},"telemetry status",[733,1393,1394],{},"nested subcommands join with a space",[619,1396,1397,1398,1401,1402,1405],{},"The root ",[631,1399,1400],{},"meta.name"," is not prefixed when the root only delegates to ",[631,1403,1404],{},"subCommands",".",[1274,1407,1409],{"id":1408},"enriching-a-run","Enriching a run",[619,1411,1412,1413,1416],{},"Call ",[631,1414,1415],{},"telemetry.set()"," anywhere inside a command handler, or in helpers that run on the same async stack (the run context is preserved via AsyncLocalStorage).",[1418,1419,1420],"code-collapse",{},[623,1421,1424],{"className":625,"code":1422,"filename":1423,"language":628,"meta":629,"style":629},"import { telemetry } from '@evlog\u002Ftelemetry'\nimport { existsSync } from 'node:fs'\nimport { resolveConfigPath } from '..\u002Flib\u002Fconfig'\n\nasync function runHealthChecks() {\n  let checksFailed = 0\n  let checksWarn = 0\n\n  const configPath = resolveConfigPath()\n  if (!existsSync(configPath)) {\n    checksFailed++\n  }\n\n  try {\n    await fetch('https:\u002F\u002Fregistry.npmjs.org\u002Fmy-tool')\n  } catch {\n    checksWarn++\n  }\n\n  \u002F\u002F Counters land in event.custom on the wide event for this run\n  telemetry.set({ checksFailed, checksWarn })\n  return checksFailed === 0\n}\n\nexport const doctorCommand = {\n  meta: { name: 'doctor', description: 'Check environment' },\n  args: {\n    json: { type: 'boolean', alias: 'j' },\n  },\n  async run({ args }: { args: { json?: boolean } }) {\n    const ok = await runHealthChecks()\n    if (!ok) {\n      throw Object.assign(new Error('Health checks failed'), { code: 'DOCTOR_FAILED' })\n    }\n    if (!args.json) process.stdout.write('ok\\n')\n  },\n}\n","src\u002Fcommands\u002Fdoctor.ts",[631,1425,1426,1445,1465,1485,1489,1505,1520,1531,1535,1550,1574,1582,1587,1591,1598,1617,1626,1633,1637,1641,1647,1671,1683,1688,1692,1705,1740,1749,1786,1790,1834,1852,1870,1923,1929,1973,1978],{"__ignoreMap":629},[634,1427,1428,1430,1432,1435,1437,1439,1441,1443],{"class":636,"line":637},[634,1429,816],{"class":815},[634,1431,819],{"class":648},[634,1433,1434],{"class":644}," telemetry",[634,1436,830],{"class":648},[634,1438,833],{"class":815},[634,1440,692],{"class":648},[634,1442,864],{"class":695},[634,1444,841],{"class":648},[634,1446,1447,1449,1451,1454,1456,1458,1460,1463],{"class":636,"line":655},[634,1448,816],{"class":815},[634,1450,819],{"class":648},[634,1452,1453],{"class":644}," existsSync",[634,1455,830],{"class":648},[634,1457,833],{"class":815},[634,1459,692],{"class":648},[634,1461,1462],{"class":695},"node:fs",[634,1464,841],{"class":648},[634,1466,1467,1469,1471,1474,1476,1478,1480,1483],{"class":636,"line":671},[634,1468,816],{"class":815},[634,1470,819],{"class":648},[634,1472,1473],{"class":644}," resolveConfigPath",[634,1475,830],{"class":648},[634,1477,833],{"class":815},[634,1479,692],{"class":648},[634,1481,1482],{"class":695},"..\u002Flib\u002Fconfig",[634,1484,841],{"class":648},[634,1486,1487],{"class":636,"line":684},[634,1488,912],{"emptyLinePlaceholder":911},[634,1490,1491,1494,1497,1500,1503],{"class":636,"line":704},[634,1492,1493],{"class":918},"async",[634,1495,1496],{"class":918}," function",[634,1498,1499],{"class":640}," runHealthChecks",[634,1501,1502],{"class":648},"()",[634,1504,652],{"class":648},[634,1506,1507,1510,1513,1516],{"class":636,"line":915},[634,1508,1509],{"class":918},"  let",[634,1511,1512],{"class":644}," checksFailed",[634,1514,1515],{"class":648}," =",[634,1517,1519],{"class":1518},"sbssI"," 0\n",[634,1521,1522,1524,1527,1529],{"class":636,"line":935},[634,1523,1509],{"class":918},[634,1525,1526],{"class":644}," checksWarn",[634,1528,1515],{"class":648},[634,1530,1519],{"class":1518},[634,1532,1533],{"class":636,"line":952},[634,1534,912],{"emptyLinePlaceholder":911},[634,1536,1537,1540,1543,1545,1547],{"class":636,"line":957},[634,1538,1539],{"class":918},"  const",[634,1541,1542],{"class":644}," configPath",[634,1544,1515],{"class":648},[634,1546,1473],{"class":640},[634,1548,1549],{"class":658},"()\n",[634,1551,1552,1555,1558,1561,1564,1566,1569,1572],{"class":636,"line":976},[634,1553,1554],{"class":815},"  if",[634,1556,1557],{"class":658}," (",[634,1559,1560],{"class":648},"!",[634,1562,1563],{"class":640},"existsSync",[634,1565,982],{"class":658},[634,1567,1568],{"class":644},"configPath",[634,1570,1571],{"class":658},")) ",[634,1573,985],{"class":648},[634,1575,1576,1579],{"class":636,"line":988},[634,1577,1578],{"class":644},"    checksFailed",[634,1580,1581],{"class":648},"++\n",[634,1583,1584],{"class":636,"line":1035},[634,1585,1586],{"class":648},"  }\n",[634,1588,1589],{"class":636,"line":1045},[634,1590,912],{"emptyLinePlaceholder":911},[634,1592,1593,1596],{"class":636,"line":1057},[634,1594,1595],{"class":815},"  try",[634,1597,652],{"class":648},[634,1599,1600,1603,1606,1608,1610,1613,1615],{"class":636,"line":1069},[634,1601,1602],{"class":815},"    await",[634,1604,1605],{"class":640}," fetch",[634,1607,982],{"class":658},[634,1609,699],{"class":648},[634,1611,1612],{"class":695},"https:\u002F\u002Fregistry.npmjs.org\u002Fmy-tool",[634,1614,699],{"class":648},[634,1616,710],{"class":658},[634,1618,1619,1621,1624],{"class":636,"line":1097},[634,1620,1106],{"class":648},[634,1622,1623],{"class":815}," catch",[634,1625,652],{"class":648},[634,1627,1628,1631],{"class":636,"line":1103},[634,1629,1630],{"class":644},"    checksWarn",[634,1632,1581],{"class":648},[634,1634,1635],{"class":636,"line":1113},[634,1636,1586],{"class":648},[634,1638,1639],{"class":636,"line":1119},[634,1640,912],{"emptyLinePlaceholder":911},[634,1642,1643],{"class":636,"line":1131},[634,1644,1646],{"class":1645},"sHwdD","  \u002F\u002F Counters land in event.custom on the wide event for this run\n",[634,1648,1649,1652,1654,1657,1659,1661,1663,1665,1667,1669],{"class":636,"line":1143},[634,1650,1651],{"class":644},"  telemetry",[634,1653,1405],{"class":648},[634,1655,1656],{"class":640},"set",[634,1658,982],{"class":658},[634,1660,1081],{"class":648},[634,1662,1512],{"class":644},[634,1664,649],{"class":648},[634,1666,1526],{"class":644},[634,1668,830],{"class":648},[634,1670,710],{"class":658},[634,1672,1673,1676,1678,1681],{"class":636,"line":1159},[634,1674,1675],{"class":815},"  return",[634,1677,1512],{"class":644},[634,1679,1680],{"class":648}," ===",[634,1682,1519],{"class":1518},[634,1684,1685],{"class":636,"line":1169},[634,1686,1687],{"class":648},"}\n",[634,1689,1690],{"class":636,"line":1208},[634,1691,912],{"emptyLinePlaceholder":911},[634,1693,1694,1696,1698,1701,1703],{"class":636,"line":1245},[634,1695,960],{"class":815},[634,1697,963],{"class":918},[634,1699,1700],{"class":644}," doctorCommand ",[634,1702,925],{"class":648},[634,1704,652],{"class":648},[634,1706,1707,1710,1712,1714,1716,1718,1720,1722,1724,1726,1728,1730,1732,1735,1737],{"class":636,"line":1250},[634,1708,1709],{"class":658},"  meta",[634,1711,662],{"class":648},[634,1713,819],{"class":648},[634,1715,998],{"class":658},[634,1717,662],{"class":648},[634,1719,692],{"class":648},[634,1721,124],{"class":695},[634,1723,699],{"class":648},[634,1725,649],{"class":648},[634,1727,1011],{"class":658},[634,1729,662],{"class":648},[634,1731,692],{"class":648},[634,1733,1734],{"class":695},"Check environment",[634,1736,699],{"class":648},[634,1738,1739],{"class":648}," },\n",[634,1741,1742,1745,1747],{"class":636,"line":1256},[634,1743,1744],{"class":658},"  args",[634,1746,662],{"class":648},[634,1748,652],{"class":648},[634,1750,1751,1754,1756,1758,1761,1763,1765,1768,1770,1772,1775,1777,1779,1782,1784],{"class":636,"line":1261},[634,1752,1753],{"class":658},"    json",[634,1755,662],{"class":648},[634,1757,819],{"class":648},[634,1759,1760],{"class":658}," type",[634,1762,662],{"class":648},[634,1764,692],{"class":648},[634,1766,1767],{"class":695},"boolean",[634,1769,699],{"class":648},[634,1771,649],{"class":648},[634,1773,1774],{"class":658}," alias",[634,1776,662],{"class":648},[634,1778,692],{"class":648},[634,1780,1781],{"class":695},"j",[634,1783,699],{"class":648},[634,1785,1739],{"class":648},[634,1787,1788],{"class":636,"line":1266},[634,1789,1253],{"class":648},[634,1791,1793,1796,1799,1802,1806,1809,1811,1813,1815,1817,1820,1823,1827,1829,1832],{"class":636,"line":1792},30,[634,1794,1795],{"class":918},"  async",[634,1797,1798],{"class":658}," run",[634,1800,1801],{"class":648},"({",[634,1803,1805],{"class":1804},"sHdIc"," args",[634,1807,1808],{"class":648}," }:",[634,1810,819],{"class":648},[634,1812,1805],{"class":658},[634,1814,662],{"class":648},[634,1816,819],{"class":648},[634,1818,1819],{"class":658}," json",[634,1821,1822],{"class":648},"?:",[634,1824,1826],{"class":1825},"sBMFI"," boolean",[634,1828,830],{"class":648},[634,1830,1831],{"class":648}," })",[634,1833,652],{"class":648},[634,1835,1837,1840,1843,1845,1848,1850],{"class":636,"line":1836},31,[634,1838,1839],{"class":918},"    const",[634,1841,1842],{"class":644}," ok",[634,1844,1515],{"class":648},[634,1846,1847],{"class":815}," await",[634,1849,1499],{"class":640},[634,1851,1549],{"class":658},[634,1853,1855,1858,1860,1862,1865,1868],{"class":636,"line":1854},32,[634,1856,1857],{"class":815},"    if",[634,1859,1557],{"class":658},[634,1861,1560],{"class":648},[634,1863,1864],{"class":644},"ok",[634,1866,1867],{"class":658},") ",[634,1869,985],{"class":648},[634,1871,1873,1876,1879,1881,1884,1886,1889,1892,1894,1896,1899,1901,1903,1905,1907,1910,1912,1914,1917,1919,1921],{"class":636,"line":1872},33,[634,1874,1875],{"class":815},"      throw",[634,1877,1878],{"class":644}," Object",[634,1880,1405],{"class":648},[634,1882,1883],{"class":640},"assign",[634,1885,982],{"class":658},[634,1887,1888],{"class":648},"new",[634,1890,1891],{"class":640}," Error",[634,1893,982],{"class":658},[634,1895,699],{"class":648},[634,1897,1898],{"class":695},"Health checks failed",[634,1900,699],{"class":648},[634,1902,1092],{"class":658},[634,1904,649],{"class":648},[634,1906,819],{"class":648},[634,1908,1909],{"class":658}," code",[634,1911,662],{"class":648},[634,1913,692],{"class":648},[634,1915,1916],{"class":695},"DOCTOR_FAILED",[634,1918,699],{"class":648},[634,1920,830],{"class":648},[634,1922,710],{"class":658},[634,1924,1926],{"class":636,"line":1925},34,[634,1927,1928],{"class":648},"    }\n",[634,1930,1932,1934,1936,1938,1941,1943,1945,1947,1950,1952,1955,1957,1960,1962,1964,1966,1969,1971],{"class":636,"line":1931},35,[634,1933,1857],{"class":815},[634,1935,1557],{"class":658},[634,1937,1560],{"class":648},[634,1939,1940],{"class":644},"args",[634,1942,1405],{"class":648},[634,1944,1189],{"class":644},[634,1946,1867],{"class":658},[634,1948,1949],{"class":644},"process",[634,1951,1405],{"class":648},[634,1953,1954],{"class":644},"stdout",[634,1956,1405],{"class":648},[634,1958,1959],{"class":640},"write",[634,1961,982],{"class":658},[634,1963,699],{"class":648},[634,1965,1864],{"class":695},[634,1967,1968],{"class":644},"\\n",[634,1970,699],{"class":648},[634,1972,710],{"class":658},[634,1974,1976],{"class":636,"line":1975},36,[634,1977,1253],{"class":648},[634,1979,1981],{"class":636,"line":1980},37,[634,1982,1687],{"class":648},[619,1984,1985,1986,1988,1989,1992,1993,1996],{},"Throw an error with a ",[631,1987,631],{}," property and ",[631,1990,1991],{},"outcome: \"error\""," plus ",[631,1994,1995],{},"errorCode"," are recorded automatically:",[623,1998,2000],{"className":625,"code":1999,"filename":1423,"language":628,"meta":629,"style":629},"throw Object.assign(new Error('Config missing'), { code: 'CONFIG_NOT_FOUND' })\n",[631,2001,2002],{"__ignoreMap":629},[634,2003,2004,2007,2009,2011,2013,2015,2017,2019,2021,2023,2026,2028,2030,2032,2034,2036,2038,2040,2043,2045,2047],{"class":636,"line":637},[634,2005,2006],{"class":815},"throw",[634,2008,1878],{"class":644},[634,2010,1405],{"class":648},[634,2012,1883],{"class":640},[634,2014,982],{"class":644},[634,2016,1888],{"class":648},[634,2018,1891],{"class":640},[634,2020,982],{"class":644},[634,2022,699],{"class":648},[634,2024,2025],{"class":695},"Config missing",[634,2027,699],{"class":648},[634,2029,1092],{"class":644},[634,2031,649],{"class":648},[634,2033,819],{"class":648},[634,2035,1909],{"class":658},[634,2037,662],{"class":648},[634,2039,692],{"class":648},[634,2041,2042],{"class":695},"CONFIG_NOT_FOUND",[634,2044,699],{"class":648},[634,2046,830],{"class":648},[634,2048,710],{"class":644},[619,2050,2051,2052,2055],{},"A minimal sync handler for comparison. Flags are auto-captured, you only ",[631,2053,2054],{},"set()"," business counters:",[623,2057,2060],{"className":625,"code":2058,"filename":2059,"language":628,"meta":629,"style":629},"import { telemetry } from '@evlog\u002Ftelemetry'\n\nexport const syncCommand = {\n  meta: { name: 'sync', description: 'Pull remote state' },\n  args: {\n    dryRun: { type: 'boolean' },\n    output: { type: 'string', description: 'Output path' },\n  },\n  async run() {\n    const itemsSynced = await pullRemoteState()\n    telemetry.set({ itemsSynced })\n  },\n}\n","src\u002Fcommands\u002Fsync.ts",[631,2061,2062,2080,2084,2097,2130,2138,2159,2194,2198,2208,2224,2243,2247],{"__ignoreMap":629},[634,2063,2064,2066,2068,2070,2072,2074,2076,2078],{"class":636,"line":637},[634,2065,816],{"class":815},[634,2067,819],{"class":648},[634,2069,1434],{"class":644},[634,2071,830],{"class":648},[634,2073,833],{"class":815},[634,2075,692],{"class":648},[634,2077,864],{"class":695},[634,2079,841],{"class":648},[634,2081,2082],{"class":636,"line":655},[634,2083,912],{"emptyLinePlaceholder":911},[634,2085,2086,2088,2090,2093,2095],{"class":636,"line":671},[634,2087,960],{"class":815},[634,2089,963],{"class":918},[634,2091,2092],{"class":644}," syncCommand ",[634,2094,925],{"class":648},[634,2096,652],{"class":648},[634,2098,2099,2101,2103,2105,2107,2109,2111,2113,2115,2117,2119,2121,2123,2126,2128],{"class":636,"line":684},[634,2100,1709],{"class":658},[634,2102,662],{"class":648},[634,2104,819],{"class":648},[634,2106,998],{"class":658},[634,2108,662],{"class":648},[634,2110,692],{"class":648},[634,2112,1353],{"class":695},[634,2114,699],{"class":648},[634,2116,649],{"class":648},[634,2118,1011],{"class":658},[634,2120,662],{"class":648},[634,2122,692],{"class":648},[634,2124,2125],{"class":695},"Pull remote state",[634,2127,699],{"class":648},[634,2129,1739],{"class":648},[634,2131,2132,2134,2136],{"class":636,"line":704},[634,2133,1744],{"class":658},[634,2135,662],{"class":648},[634,2137,652],{"class":648},[634,2139,2140,2143,2145,2147,2149,2151,2153,2155,2157],{"class":636,"line":915},[634,2141,2142],{"class":658},"    dryRun",[634,2144,662],{"class":648},[634,2146,819],{"class":648},[634,2148,1760],{"class":658},[634,2150,662],{"class":648},[634,2152,692],{"class":648},[634,2154,1767],{"class":695},[634,2156,699],{"class":648},[634,2158,1739],{"class":648},[634,2160,2161,2164,2166,2168,2170,2172,2174,2177,2179,2181,2183,2185,2187,2190,2192],{"class":636,"line":935},[634,2162,2163],{"class":658},"    output",[634,2165,662],{"class":648},[634,2167,819],{"class":648},[634,2169,1760],{"class":658},[634,2171,662],{"class":648},[634,2173,692],{"class":648},[634,2175,2176],{"class":695},"string",[634,2178,699],{"class":648},[634,2180,649],{"class":648},[634,2182,1011],{"class":658},[634,2184,662],{"class":648},[634,2186,692],{"class":648},[634,2188,2189],{"class":695},"Output path",[634,2191,699],{"class":648},[634,2193,1739],{"class":648},[634,2195,2196],{"class":636,"line":952},[634,2197,1253],{"class":648},[634,2199,2200,2202,2204,2206],{"class":636,"line":957},[634,2201,1795],{"class":918},[634,2203,1798],{"class":658},[634,2205,1502],{"class":648},[634,2207,652],{"class":648},[634,2209,2210,2212,2215,2217,2219,2222],{"class":636,"line":976},[634,2211,1839],{"class":918},[634,2213,2214],{"class":644}," itemsSynced",[634,2216,1515],{"class":648},[634,2218,1847],{"class":815},[634,2220,2221],{"class":640}," pullRemoteState",[634,2223,1549],{"class":658},[634,2225,2226,2229,2231,2233,2235,2237,2239,2241],{"class":636,"line":988},[634,2227,2228],{"class":644},"    telemetry",[634,2230,1405],{"class":648},[634,2232,1656],{"class":640},[634,2234,982],{"class":658},[634,2236,1081],{"class":648},[634,2238,2214],{"class":644},[634,2240,830],{"class":648},[634,2242,710],{"class":658},[634,2244,2245],{"class":636,"line":1035},[634,2246,1253],{"class":648},[634,2248,2249],{"class":636,"line":1045},[634,2250,1687],{"class":648},[614,2252,2254],{"id":2253},"setup-without-citty","Setup without citty",[619,2256,2257,2258,2261,2262,662],{},"For scripts, migrators, or custom CLIs, use ",[631,2259,2260],{},"createTelemetry()"," and wrap each logical run with ",[631,2263,2264],{},"t.run()",[623,2266,2269],{"className":625,"code":2267,"filename":2268,"language":628,"meta":629,"style":629},"import { createTelemetry, telemetry } from '@evlog\u002Ftelemetry'\n\nconst t = createTelemetry({ name: 'my-migrator', version: '2.0.0' })\n\nawait t.run('migrate', async () => {\n  const rows = await migrateBatch()\n  telemetry.set({ rowsMigrated: rows.length, batchSize: 500 })\n})\n\nawait t.flush() \u002F\u002F optional — also runs at end of each t.run()\n","scripts\u002Fmigrate.ts",[631,2270,2271,2294,2298,2341,2345,2379,2395,2433,2439,2443],{"__ignoreMap":629},[634,2272,2273,2275,2277,2280,2282,2284,2286,2288,2290,2292],{"class":636,"line":637},[634,2274,816],{"class":815},[634,2276,819],{"class":648},[634,2278,2279],{"class":644}," createTelemetry",[634,2281,649],{"class":648},[634,2283,1434],{"class":644},[634,2285,830],{"class":648},[634,2287,833],{"class":815},[634,2289,692],{"class":648},[634,2291,864],{"class":695},[634,2293,841],{"class":648},[634,2295,2296],{"class":636,"line":655},[634,2297,912],{"emptyLinePlaceholder":911},[634,2299,2300,2302,2305,2307,2309,2311,2313,2315,2317,2319,2322,2324,2326,2328,2330,2332,2335,2337,2339],{"class":636,"line":671},[634,2301,919],{"class":918},[634,2303,2304],{"class":644}," t ",[634,2306,925],{"class":648},[634,2308,2279],{"class":640},[634,2310,982],{"class":644},[634,2312,1081],{"class":648},[634,2314,998],{"class":658},[634,2316,662],{"class":648},[634,2318,692],{"class":648},[634,2320,2321],{"class":695},"my-migrator",[634,2323,699],{"class":648},[634,2325,649],{"class":648},[634,2327,1025],{"class":658},[634,2329,662],{"class":648},[634,2331,692],{"class":648},[634,2333,2334],{"class":695},"2.0.0",[634,2336,699],{"class":648},[634,2338,830],{"class":648},[634,2340,710],{"class":644},[634,2342,2343],{"class":636,"line":684},[634,2344,912],{"emptyLinePlaceholder":911},[634,2346,2347,2350,2353,2355,2357,2359,2361,2364,2366,2368,2371,2374,2377],{"class":636,"line":704},[634,2348,2349],{"class":815},"await",[634,2351,2352],{"class":644}," t",[634,2354,1405],{"class":648},[634,2356,1285],{"class":640},[634,2358,982],{"class":644},[634,2360,699],{"class":648},[634,2362,2363],{"class":695},"migrate",[634,2365,699],{"class":648},[634,2367,649],{"class":648},[634,2369,2370],{"class":918}," async",[634,2372,2373],{"class":648}," ()",[634,2375,2376],{"class":918}," =>",[634,2378,652],{"class":648},[634,2380,2381,2383,2386,2388,2390,2393],{"class":636,"line":915},[634,2382,1539],{"class":918},[634,2384,2385],{"class":644}," rows",[634,2387,1515],{"class":648},[634,2389,1847],{"class":815},[634,2391,2392],{"class":640}," migrateBatch",[634,2394,1549],{"class":658},[634,2396,2397,2399,2401,2403,2405,2407,2410,2412,2414,2416,2419,2421,2424,2426,2429,2431],{"class":636,"line":935},[634,2398,1651],{"class":644},[634,2400,1405],{"class":648},[634,2402,1656],{"class":640},[634,2404,982],{"class":658},[634,2406,1081],{"class":648},[634,2408,2409],{"class":658}," rowsMigrated",[634,2411,662],{"class":648},[634,2413,2385],{"class":644},[634,2415,1405],{"class":648},[634,2417,2418],{"class":644},"length",[634,2420,649],{"class":648},[634,2422,2423],{"class":658}," batchSize",[634,2425,662],{"class":648},[634,2427,2428],{"class":1518}," 500",[634,2430,830],{"class":648},[634,2432,710],{"class":658},[634,2434,2435,2437],{"class":636,"line":952},[634,2436,707],{"class":648},[634,2438,710],{"class":644},[634,2440,2441],{"class":636,"line":957},[634,2442,912],{"emptyLinePlaceholder":911},[634,2444,2445,2447,2449,2451,2454,2457],{"class":636,"line":976},[634,2446,2349],{"class":815},[634,2448,2352],{"class":644},[634,2450,1405],{"class":648},[634,2452,2453],{"class":640},"flush",[634,2455,2456],{"class":644},"() ",[634,2458,2459],{"class":1645},"\u002F\u002F optional — also runs at end of each t.run()\n",[619,2461,2462,2463,2466,2467,2470,2471,2474,2475,2478,2479,2482,2483,748,2486,2489],{},"GitHub Actions: swap ",[631,2464,2465],{},"createTelemetry"," for ",[631,2468,2469],{},"createGitHubActionsTelemetry()"," in the same file, which adds ",[631,2472,2473],{},"ghaAction"," and ",[631,2476,2477],{},"ghaEvent"," to ",[631,2480,2481],{},"custom"," from ",[631,2484,2485],{},"GITHUB_ACTION",[631,2487,2488],{},"GITHUB_EVENT_NAME"," only (never repo content).",[623,2491,2494],{"className":625,"code":2492,"filename":2493,"language":628,"meta":629,"style":629},"import { createGitHubActionsTelemetry, telemetry } from '@evlog\u002Ftelemetry'\n\nconst t = createGitHubActionsTelemetry({ name: 'my-action', version: '1.0.0' })\n\nawait t.run('report', async () => {\n  const artifacts = await collectArtifacts()\n  telemetry.set({ artifactCount: artifacts.length })\n})\n","scripts\u002Fci-report.ts",[631,2495,2496,2519,2523,2564,2568,2597,2613,2640],{"__ignoreMap":629},[634,2497,2498,2500,2502,2505,2507,2509,2511,2513,2515,2517],{"class":636,"line":637},[634,2499,816],{"class":815},[634,2501,819],{"class":648},[634,2503,2504],{"class":644}," createGitHubActionsTelemetry",[634,2506,649],{"class":648},[634,2508,1434],{"class":644},[634,2510,830],{"class":648},[634,2512,833],{"class":815},[634,2514,692],{"class":648},[634,2516,864],{"class":695},[634,2518,841],{"class":648},[634,2520,2521],{"class":636,"line":655},[634,2522,912],{"emptyLinePlaceholder":911},[634,2524,2525,2527,2529,2531,2533,2535,2537,2539,2541,2543,2546,2548,2550,2552,2554,2556,2558,2560,2562],{"class":636,"line":671},[634,2526,919],{"class":918},[634,2528,2304],{"class":644},[634,2530,925],{"class":648},[634,2532,2504],{"class":640},[634,2534,982],{"class":644},[634,2536,1081],{"class":648},[634,2538,998],{"class":658},[634,2540,662],{"class":648},[634,2542,692],{"class":648},[634,2544,2545],{"class":695},"my-action",[634,2547,699],{"class":648},[634,2549,649],{"class":648},[634,2551,1025],{"class":658},[634,2553,662],{"class":648},[634,2555,692],{"class":648},[634,2557,947],{"class":695},[634,2559,699],{"class":648},[634,2561,830],{"class":648},[634,2563,710],{"class":644},[634,2565,2566],{"class":636,"line":684},[634,2567,912],{"emptyLinePlaceholder":911},[634,2569,2570,2572,2574,2576,2578,2580,2582,2585,2587,2589,2591,2593,2595],{"class":636,"line":704},[634,2571,2349],{"class":815},[634,2573,2352],{"class":644},[634,2575,1405],{"class":648},[634,2577,1285],{"class":640},[634,2579,982],{"class":644},[634,2581,699],{"class":648},[634,2583,2584],{"class":695},"report",[634,2586,699],{"class":648},[634,2588,649],{"class":648},[634,2590,2370],{"class":918},[634,2592,2373],{"class":648},[634,2594,2376],{"class":918},[634,2596,652],{"class":648},[634,2598,2599,2601,2604,2606,2608,2611],{"class":636,"line":915},[634,2600,1539],{"class":918},[634,2602,2603],{"class":644}," artifacts",[634,2605,1515],{"class":648},[634,2607,1847],{"class":815},[634,2609,2610],{"class":640}," collectArtifacts",[634,2612,1549],{"class":658},[634,2614,2615,2617,2619,2621,2623,2625,2628,2630,2632,2634,2636,2638],{"class":636,"line":935},[634,2616,1651],{"class":644},[634,2618,1405],{"class":648},[634,2620,1656],{"class":640},[634,2622,982],{"class":658},[634,2624,1081],{"class":648},[634,2626,2627],{"class":658}," artifactCount",[634,2629,662],{"class":648},[634,2631,2603],{"class":644},[634,2633,1405],{"class":648},[634,2635,2418],{"class":644},[634,2637,830],{"class":648},[634,2639,710],{"class":658},[634,2641,2642,2644],{"class":636,"line":952},[634,2643,707],{"class":648},[634,2645,710],{"class":644},[614,2647,2649],{"id":2648},"debug","Debug",[623,2651,2655],{"className":2652,"code":2653,"language":2654,"meta":629,"style":629},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","EVLOG_TELEMETRY_DEBUG=1 my-tool doctor\nEVLOG_TELEMETRY=0 my-tool sync\n","bash",[631,2656,2657,2673],{"__ignoreMap":629},[634,2658,2659,2662,2664,2667,2670],{"class":636,"line":637},[634,2660,2661],{"class":644},"EVLOG_TELEMETRY_DEBUG",[634,2663,925],{"class":648},[634,2665,2666],{"class":695},"1",[634,2668,2669],{"class":1825}," my-tool",[634,2671,2672],{"class":695}," doctor\n",[634,2674,2675,2678,2680,2683,2685],{"class":636,"line":655},[634,2676,2677],{"class":644},"EVLOG_TELEMETRY",[634,2679,925],{"class":648},[634,2681,2682],{"class":695},"0",[634,2684,2669],{"class":1825},[634,2686,2687],{"class":695}," sync\n",[619,2689,2690],{},"Debug mode prints would-be payloads to stderr. Nothing is sent unless an endpoint is configured and delivery succeeds.",[2692,2693,2694],"style",{},"html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":629,"searchDepth":655,"depth":655,"links":2696},[2697,2698,2702,2703],{"id":616,"depth":655,"text":617},{"id":786,"depth":655,"text":787,"children":2699},[2700,2701],{"id":1276,"depth":671,"text":1277},{"id":1408,"depth":671,"text":1409},{"id":2253,"depth":655,"text":2254},{"id":2648,"depth":655,"text":2649},"Wire @evlog\u002Ftelemetry into citty CLIs, standalone scripts, and GitHub Actions — delivery config, automatic flag capture, telemetry.set(), and debug mode.","md",[2707,2710,2711],{"label":41,"icon":44,"to":428,"color":2708,"variant":2709},"neutral","subtle",{"label":436,"icon":439,"to":437,"color":2708,"variant":2709},{"label":441,"icon":84,"to":442,"color":2708,"variant":2709},{},{"title":431,"icon":434},{"title":609,"description":2704},"KKak2-7n7zemQszQmxd2H0h6Qwe4WN5fJT_RdYk2gs0",[2717,2719],{"title":41,"path":428,"stem":429,"description":2718,"icon":44,"children":-1},"One event per run for CLIs and automation, with privacy-safe flags, consent, an outbox, and disclosure generated from the same config.",{"title":436,"path":437,"stem":438,"description":2720,"icon":439,"children":-1},"Build the ingestion endpoint for @evlog\u002Ftelemetry: the threat model, parseIngestBody validation, framework routes, storage, and rate limiting.",1791240210179]