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