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