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