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