[{"data":1,"prerenderedAt":2955},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-telemetry":447,"-use-cases-telemetry-surround":2950},[4,30,80,245,361,416],{"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,353,358],{"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":349,"path":350,"stem":351,"icon":352},"Enrichers","\u002Fuse-cases\u002Fenrichers","4.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":354,"path":355,"stem":356,"icon":357},"eve","\u002Fuse-cases\u002Feve","4.use-cases\u002F5.eve","i-custom-eve",{"title":284,"path":359,"stem":360,"icon":315},"\u002Fuse-cases\u002Ftelemetry","4.use-cases\u002F6.telemetry",{"title":362,"path":363,"stem":364,"children":365,"page":29},"Extend","\u002Fextend","5.extend",[366,370,375,380,385,389,393,397,401,406,411],{"title":36,"path":367,"stem":368,"icon":369},"\u002Fextend\u002Foverview","5.extend\u002F0.overview","i-lucide-blocks",{"title":371,"path":372,"stem":373,"icon":374},"Stream","\u002Fextend\u002Fstream","5.extend\u002F1.stream","i-lucide-radio-tower",{"title":376,"path":377,"stem":378,"icon":379},"Custom framework","\u002Fextend\u002Fcustom-framework","5.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":381,"path":382,"stem":383,"icon":384},"FS reader","\u002Fextend\u002Ffs-reader","5.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":345,"path":386,"stem":387,"icon":388},"\u002Fextend\u002Fconsumer-recipes","5.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":390,"path":391,"stem":392,"icon":369},"Plugins","\u002Fextend\u002Fplugins","5.extend\u002F4.plugins",{"title":394,"path":395,"stem":396,"icon":352},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","5.extend\u002F5.custom-enrichers",{"title":398,"path":399,"stem":400,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","5.extend\u002F6.tail-sampling",{"title":402,"path":403,"stem":404,"icon":405},"Identity headers","\u002Fextend\u002Fidentity-headers","5.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":407,"path":408,"stem":409,"icon":410},"Custom drains","\u002Fextend\u002Fcustom-drains","5.extend\u002F8.custom-drains","i-lucide-share-2",{"title":412,"path":413,"stem":414,"icon":415},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","5.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":417,"path":418,"stem":419,"children":420,"page":29},"Reference","\u002Freference","6.reference",[421,426,429,434,438,443],{"title":422,"path":423,"stem":424,"icon":425},"Configuration","\u002Freference\u002Fconfiguration","6.reference\u002F1.configuration","i-lucide-settings",{"title":312,"path":427,"stem":428,"icon":315},"\u002Freference\u002Fperformance","6.reference\u002F2.performance",{"title":430,"path":431,"stem":432,"icon":433},"Vite Plugin","\u002Freference\u002Fvite-plugin","6.reference\u002F3.vite-plugin","i-custom-vite",{"title":435,"path":436,"stem":437,"icon":318},"Best Practices","\u002Freference\u002Fbest-practices","6.reference\u002F4.best-practices",{"title":439,"path":440,"stem":441,"icon":442},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","6.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":444,"path":445,"stem":446,"icon":352},"Agent Skills","\u002Freference\u002Fagent-skills","6.reference\u002F6.agent-skills",{"id":448,"title":449,"body":450,"description":2940,"extension":2941,"links":2942,"meta":2946,"navigation":2947,"path":359,"seo":2948,"stem":360,"__hash__":2949},"docs\u002F4.use-cases\u002F6.telemetry.md","Tool telemetry",{"type":451,"value":452,"toc":2927},"minimark",[453,474,499,510,515,534,1011,1016,1026,1143,1154,1158,1164,1725,1739,1791,1798,1993,1997,2007,2202,2233,2389,2393,2396,2491,2495,2505,2545,2636,2647,2651,2664,2801,2810,2814,2835,2845,2855,2868,2872,2908,2911,2915,2923],[454,455,456,460,461,468,469,473],"p",{},[457,458,459],"code",{},"@evlog\u002Ftelemetry"," brings ",[462,463,467],"a",{"href":464,"rel":465},"https:\u002F\u002Fevlog.dev",[466],"nofollow","evlog","'s wide-event model to tools that run on other people's machines — CLIs, GitHub Actions, dev scripts, and CI jobs. Same philosophy as HTTP logging: ",[470,471,472],"strong",{},"one command execution → one structured event",", not a stream of analytics calls.",[475,476,481],"pre",{"className":477,"code":478,"language":479,"meta":480,"style":480},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add @evlog\u002Ftelemetry\n","bash","",[457,482,483],{"__ignoreMap":480},[484,485,488,492,496],"span",{"class":486,"line":487},"line",1,[484,489,491],{"class":490},"sBMFI","pnpm",[484,493,495],{"class":494},"sfazB"," add",[484,497,498],{"class":494}," @evlog\u002Ftelemetry\n",[454,500,501,502,505,506,509],{},"You get command name, sanitized flags, duration, and outcome automatically. Call ",[457,503,504],{},"telemetry.set()"," only when you have extra counters — numbers and booleans by default. Raw ",[457,507,508],{},"argv"," is never read; disclosure is generated from your runtime config so it cannot drift from what you actually collect.",[511,512,514],"h2",{"id":513},"setup-with-citty","Setup with citty",[454,516,517,518,521,522,525,526,529,530,533],{},"Wrap your root command in ",[457,519,520],{},"withTelemetry()"," — typically in ",[457,523,524],{},"src\u002Findex.ts",", the file that calls ",[457,527,528],{},"runMain()",". Subcommands can live in the same file or in ",[457,531,532],{},"src\u002Fcommands\u002F*.ts","; only the entrypoint needs the wrapper.",[475,535,539],{"className":536,"code":537,"filename":524,"language":538,"meta":480,"style":480},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","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    \u002F\u002F endpoint optional — omit for outbox-only until you ship ingestion\n    collect: {\n      flags: { format: ['json', 'csv'] },\n      fields: { framework: ['nuxt', 'next'] },\n    },\n  },\n)\n\nrunMain(main)\n","ts",[457,540,541,576,601,622,643,650,670,687,692,712,724,774,785,798,810,839,845,855,861,874,887,894,904,943,980,985,991,997,1002],{"__ignoreMap":480},[484,542,543,547,551,555,558,561,564,567,570,573],{"class":486,"line":487},[484,544,546],{"class":545},"s7zQu","import",[484,548,550],{"class":549},"sMK4o"," {",[484,552,554],{"class":553},"sTEyZ"," defineCommand",[484,556,557],{"class":549},",",[484,559,560],{"class":553}," runMain",[484,562,563],{"class":549}," }",[484,565,566],{"class":545}," from",[484,568,569],{"class":549}," '",[484,571,572],{"class":494},"citty",[484,574,575],{"class":549},"'\n",[484,577,579,581,583,586,588,591,593,595,597,599],{"class":486,"line":578},2,[484,580,546],{"class":545},[484,582,550],{"class":549},[484,584,585],{"class":553}," withTelemetry",[484,587,557],{"class":549},[484,589,590],{"class":553}," defineTelemetryCommands",[484,592,563],{"class":549},[484,594,566],{"class":545},[484,596,569],{"class":549},[484,598,459],{"class":494},[484,600,575],{"class":549},[484,602,604,606,608,611,613,615,617,620],{"class":486,"line":603},3,[484,605,546],{"class":545},[484,607,550],{"class":549},[484,609,610],{"class":553}," doctorCommand",[484,612,563],{"class":549},[484,614,566],{"class":545},[484,616,569],{"class":549},[484,618,619],{"class":494},".\u002Fcommands\u002Fdoctor",[484,621,575],{"class":549},[484,623,625,627,629,632,634,636,638,641],{"class":486,"line":624},4,[484,626,546],{"class":545},[484,628,550],{"class":549},[484,630,631],{"class":553}," syncCommand",[484,633,563],{"class":549},[484,635,566],{"class":545},[484,637,569],{"class":549},[484,639,640],{"class":494},".\u002Fcommands\u002Fsync",[484,642,575],{"class":549},[484,644,646],{"class":486,"line":645},5,[484,647,649],{"emptyLinePlaceholder":648},true,"\n",[484,651,653,657,660,663,665,668],{"class":486,"line":652},6,[484,654,656],{"class":655},"spNyl","const",[484,658,659],{"class":553}," TOOL ",[484,661,662],{"class":549},"=",[484,664,569],{"class":549},[484,666,667],{"class":494},"my-tool",[484,669,575],{"class":549},[484,671,673,675,678,680,682,685],{"class":486,"line":672},7,[484,674,656],{"class":655},[484,676,677],{"class":553}," VERSION ",[484,679,662],{"class":549},[484,681,569],{"class":549},[484,683,684],{"class":494},"1.0.0",[484,686,575],{"class":549},[484,688,690],{"class":486,"line":689},8,[484,691,649],{"emptyLinePlaceholder":648},[484,693,695,698,701,704,706,709],{"class":486,"line":694},9,[484,696,697],{"class":545},"export",[484,699,700],{"class":655}," const",[484,702,703],{"class":553}," main ",[484,705,662],{"class":549},[484,707,585],{"class":708},"s2Zo4",[484,710,711],{"class":553},"(\n",[484,713,715,718,721],{"class":486,"line":714},10,[484,716,717],{"class":708},"  defineCommand",[484,719,720],{"class":553},"(",[484,722,723],{"class":549},"{\n",[484,725,727,731,734,736,739,741,743,745,748,750,753,755,757,760,762,764,767,769,771],{"class":486,"line":726},11,[484,728,730],{"class":729},"swJcz","    meta",[484,732,733],{"class":549},":",[484,735,550],{"class":549},[484,737,738],{"class":729}," name",[484,740,733],{"class":549},[484,742,569],{"class":549},[484,744,667],{"class":494},[484,746,747],{"class":549},"'",[484,749,557],{"class":549},[484,751,752],{"class":729}," description",[484,754,733],{"class":549},[484,756,569],{"class":549},[484,758,759],{"class":494},"…",[484,761,747],{"class":549},[484,763,557],{"class":549},[484,765,766],{"class":729}," version",[484,768,733],{"class":549},[484,770,677],{"class":553},[484,772,773],{"class":549},"},\n",[484,775,777,780,782],{"class":486,"line":776},12,[484,778,779],{"class":729},"    subCommands",[484,781,733],{"class":549},[484,783,784],{"class":549}," {\n",[484,786,788,791,793,795],{"class":486,"line":787},13,[484,789,790],{"class":729},"      doctor",[484,792,733],{"class":549},[484,794,610],{"class":553},[484,796,797],{"class":549},",\n",[484,799,801,804,806,808],{"class":486,"line":800},14,[484,802,803],{"class":729},"      sync",[484,805,733],{"class":549},[484,807,631],{"class":553},[484,809,797],{"class":549},[484,811,813,816,818,820,822,825,827,829,831,834,837],{"class":486,"line":812},15,[484,814,815],{"class":729},"      telemetry",[484,817,733],{"class":549},[484,819,590],{"class":708},[484,821,720],{"class":553},[484,823,824],{"class":549},"{",[484,826,738],{"class":729},[484,828,733],{"class":549},[484,830,659],{"class":553},[484,832,833],{"class":549},"}",[484,835,836],{"class":553},")",[484,838,797],{"class":549},[484,840,842],{"class":486,"line":841},16,[484,843,844],{"class":549},"    },\n",[484,846,848,851,853],{"class":486,"line":847},17,[484,849,850],{"class":549},"  }",[484,852,836],{"class":553},[484,854,797],{"class":549},[484,856,858],{"class":486,"line":857},18,[484,859,860],{"class":549},"  {\n",[484,862,864,867,869,872],{"class":486,"line":863},19,[484,865,866],{"class":729},"    name",[484,868,733],{"class":549},[484,870,871],{"class":553}," TOOL",[484,873,797],{"class":549},[484,875,877,880,882,885],{"class":486,"line":876},20,[484,878,879],{"class":729},"    version",[484,881,733],{"class":549},[484,883,884],{"class":553}," VERSION",[484,886,797],{"class":549},[484,888,890],{"class":486,"line":889},21,[484,891,893],{"class":892},"sHwdD","    \u002F\u002F endpoint optional — omit for outbox-only until you ship ingestion\n",[484,895,897,900,902],{"class":486,"line":896},22,[484,898,899],{"class":729},"    collect",[484,901,733],{"class":549},[484,903,784],{"class":549},[484,905,907,910,912,914,917,919,922,924,927,929,931,933,936,938,941],{"class":486,"line":906},23,[484,908,909],{"class":729},"      flags",[484,911,733],{"class":549},[484,913,550],{"class":549},[484,915,916],{"class":729}," format",[484,918,733],{"class":549},[484,920,921],{"class":553}," [",[484,923,747],{"class":549},[484,925,926],{"class":494},"json",[484,928,747],{"class":549},[484,930,557],{"class":549},[484,932,569],{"class":549},[484,934,935],{"class":494},"csv",[484,937,747],{"class":549},[484,939,940],{"class":553},"] ",[484,942,773],{"class":549},[484,944,946,949,951,953,956,958,960,962,965,967,969,971,974,976,978],{"class":486,"line":945},24,[484,947,948],{"class":729},"      fields",[484,950,733],{"class":549},[484,952,550],{"class":549},[484,954,955],{"class":729}," framework",[484,957,733],{"class":549},[484,959,921],{"class":553},[484,961,747],{"class":549},[484,963,964],{"class":494},"nuxt",[484,966,747],{"class":549},[484,968,557],{"class":549},[484,970,569],{"class":549},[484,972,973],{"class":494},"next",[484,975,747],{"class":549},[484,977,940],{"class":553},[484,979,773],{"class":549},[484,981,983],{"class":486,"line":982},25,[484,984,844],{"class":549},[484,986,988],{"class":486,"line":987},26,[484,989,990],{"class":549},"  },\n",[484,992,994],{"class":486,"line":993},27,[484,995,996],{"class":553},")\n",[484,998,1000],{"class":486,"line":999},28,[484,1001,649],{"emptyLinePlaceholder":648},[484,1003,1005,1008],{"class":486,"line":1004},29,[484,1006,1007],{"class":708},"runMain",[484,1009,1010],{"class":553},"(main)\n",[1012,1013,1015],"h3",{"id":1014},"what-gets-recorded-automatically","What gets recorded automatically",[454,1017,1018,1021,1022,1025],{},[457,1019,1020],{},"withTelemetry"," walks your citty tree. Each ",[457,1023,1024],{},"run"," handler produces one event — no per-command telemetry boilerplate.",[1027,1028,1029,1050],"table",{},[1030,1031,1032],"thead",{},[1033,1034,1035,1039,1044],"tr",{},[1036,1037,1038],"th",{},"Invocation",[1036,1040,1041],{},[457,1042,1043],{},"event.command",[1036,1045,1046,1047],{},"Notes on ",[457,1048,1049],{},"flags",[1051,1052,1053,1072,1087,1108,1128],"tbody",{},[1033,1054,1055,1061,1066],{},[1056,1057,1058],"td",{},[457,1059,1060],{},"my-tool doctor",[1056,1062,1063],{},[457,1064,1065],{},"doctor",[1056,1067,1068,1071],{},[457,1069,1070],{},"{ json: true }"," — booleans captured as values",[1033,1073,1074,1079,1083],{},[1056,1075,1076],{},[457,1077,1078],{},"my-tool doctor --json",[1056,1080,1081],{},[457,1082,1065],{},[1056,1084,1085],{},[457,1086,1070],{},[1033,1088,1089,1094,1099],{},[1056,1090,1091],{},[457,1092,1093],{},"my-tool sync --dry-run --output .\u002Fout",[1056,1095,1096],{},[457,1097,1098],{},"sync",[1056,1100,1101,1104,1105],{},[457,1102,1103],{},"{ dryRun: true, output: true }"," — string path is ",[470,1106,1107],{},"presence only",[1033,1109,1110,1115,1119],{},[1056,1111,1112],{},[457,1113,1114],{},"my-tool sync --format json",[1056,1116,1117],{},[457,1118,1098],{},[1056,1120,1121,1124,1125],{},[457,1122,1123],{},"{ format: \"json\" }"," only if allowlisted in ",[457,1126,1127],{},"collect.flags",[1033,1129,1130,1135,1140],{},[1056,1131,1132],{},[457,1133,1134],{},"my-tool telemetry status",[1056,1136,1137],{},[457,1138,1139],{},"telemetry status",[1056,1141,1142],{},"nested subcommands join with a space",[454,1144,1145,1146,1149,1150,1153],{},"The root ",[457,1147,1148],{},"meta.name"," is not prefixed when the root only delegates to ",[457,1151,1152],{},"subCommands",".",[1012,1155,1157],{"id":1156},"enriching-a-run","Enriching a run",[454,1159,1160,1161,1163],{},"Call ",[457,1162,504],{}," anywhere inside a command handler — or in helpers that run on the same async stack (the run context is preserved via AsyncLocalStorage).",[475,1165,1168],{"className":536,"code":1166,"filename":1167,"language":538,"meta":480,"style":480},"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",[457,1169,1170,1189,1209,1229,1233,1249,1264,1275,1279,1294,1318,1326,1331,1335,1342,1361,1370,1377,1381,1385,1390,1414,1426,1431,1435,1448,1483,1492,1529,1533,1576,1594,1612,1665,1671,1715,1720],{"__ignoreMap":480},[484,1171,1172,1174,1176,1179,1181,1183,1185,1187],{"class":486,"line":487},[484,1173,546],{"class":545},[484,1175,550],{"class":549},[484,1177,1178],{"class":553}," telemetry",[484,1180,563],{"class":549},[484,1182,566],{"class":545},[484,1184,569],{"class":549},[484,1186,459],{"class":494},[484,1188,575],{"class":549},[484,1190,1191,1193,1195,1198,1200,1202,1204,1207],{"class":486,"line":578},[484,1192,546],{"class":545},[484,1194,550],{"class":549},[484,1196,1197],{"class":553}," existsSync",[484,1199,563],{"class":549},[484,1201,566],{"class":545},[484,1203,569],{"class":549},[484,1205,1206],{"class":494},"node:fs",[484,1208,575],{"class":549},[484,1210,1211,1213,1215,1218,1220,1222,1224,1227],{"class":486,"line":603},[484,1212,546],{"class":545},[484,1214,550],{"class":549},[484,1216,1217],{"class":553}," resolveConfigPath",[484,1219,563],{"class":549},[484,1221,566],{"class":545},[484,1223,569],{"class":549},[484,1225,1226],{"class":494},"..\u002Flib\u002Fconfig",[484,1228,575],{"class":549},[484,1230,1231],{"class":486,"line":624},[484,1232,649],{"emptyLinePlaceholder":648},[484,1234,1235,1238,1241,1244,1247],{"class":486,"line":645},[484,1236,1237],{"class":655},"async",[484,1239,1240],{"class":655}," function",[484,1242,1243],{"class":708}," runHealthChecks",[484,1245,1246],{"class":549},"()",[484,1248,784],{"class":549},[484,1250,1251,1254,1257,1260],{"class":486,"line":652},[484,1252,1253],{"class":655},"  let",[484,1255,1256],{"class":553}," checksFailed",[484,1258,1259],{"class":549}," =",[484,1261,1263],{"class":1262},"sbssI"," 0\n",[484,1265,1266,1268,1271,1273],{"class":486,"line":672},[484,1267,1253],{"class":655},[484,1269,1270],{"class":553}," checksWarn",[484,1272,1259],{"class":549},[484,1274,1263],{"class":1262},[484,1276,1277],{"class":486,"line":689},[484,1278,649],{"emptyLinePlaceholder":648},[484,1280,1281,1284,1287,1289,1291],{"class":486,"line":694},[484,1282,1283],{"class":655},"  const",[484,1285,1286],{"class":553}," configPath",[484,1288,1259],{"class":549},[484,1290,1217],{"class":708},[484,1292,1293],{"class":729},"()\n",[484,1295,1296,1299,1302,1305,1308,1310,1313,1316],{"class":486,"line":714},[484,1297,1298],{"class":545},"  if",[484,1300,1301],{"class":729}," (",[484,1303,1304],{"class":549},"!",[484,1306,1307],{"class":708},"existsSync",[484,1309,720],{"class":729},[484,1311,1312],{"class":553},"configPath",[484,1314,1315],{"class":729},")) ",[484,1317,723],{"class":549},[484,1319,1320,1323],{"class":486,"line":726},[484,1321,1322],{"class":553},"    checksFailed",[484,1324,1325],{"class":549},"++\n",[484,1327,1328],{"class":486,"line":776},[484,1329,1330],{"class":549},"  }\n",[484,1332,1333],{"class":486,"line":787},[484,1334,649],{"emptyLinePlaceholder":648},[484,1336,1337,1340],{"class":486,"line":800},[484,1338,1339],{"class":545},"  try",[484,1341,784],{"class":549},[484,1343,1344,1347,1350,1352,1354,1357,1359],{"class":486,"line":812},[484,1345,1346],{"class":545},"    await",[484,1348,1349],{"class":708}," fetch",[484,1351,720],{"class":729},[484,1353,747],{"class":549},[484,1355,1356],{"class":494},"https:\u002F\u002Fregistry.npmjs.org\u002Fmy-tool",[484,1358,747],{"class":549},[484,1360,996],{"class":729},[484,1362,1363,1365,1368],{"class":486,"line":841},[484,1364,850],{"class":549},[484,1366,1367],{"class":545}," catch",[484,1369,784],{"class":549},[484,1371,1372,1375],{"class":486,"line":847},[484,1373,1374],{"class":553},"    checksWarn",[484,1376,1325],{"class":549},[484,1378,1379],{"class":486,"line":857},[484,1380,1330],{"class":549},[484,1382,1383],{"class":486,"line":863},[484,1384,649],{"emptyLinePlaceholder":648},[484,1386,1387],{"class":486,"line":876},[484,1388,1389],{"class":892},"  \u002F\u002F Counters land in event.custom on the wide event for this run\n",[484,1391,1392,1395,1397,1400,1402,1404,1406,1408,1410,1412],{"class":486,"line":889},[484,1393,1394],{"class":553},"  telemetry",[484,1396,1153],{"class":549},[484,1398,1399],{"class":708},"set",[484,1401,720],{"class":729},[484,1403,824],{"class":549},[484,1405,1256],{"class":553},[484,1407,557],{"class":549},[484,1409,1270],{"class":553},[484,1411,563],{"class":549},[484,1413,996],{"class":729},[484,1415,1416,1419,1421,1424],{"class":486,"line":896},[484,1417,1418],{"class":545},"  return",[484,1420,1256],{"class":553},[484,1422,1423],{"class":549}," ===",[484,1425,1263],{"class":1262},[484,1427,1428],{"class":486,"line":906},[484,1429,1430],{"class":549},"}\n",[484,1432,1433],{"class":486,"line":945},[484,1434,649],{"emptyLinePlaceholder":648},[484,1436,1437,1439,1441,1444,1446],{"class":486,"line":982},[484,1438,697],{"class":545},[484,1440,700],{"class":655},[484,1442,1443],{"class":553}," doctorCommand ",[484,1445,662],{"class":549},[484,1447,784],{"class":549},[484,1449,1450,1453,1455,1457,1459,1461,1463,1465,1467,1469,1471,1473,1475,1478,1480],{"class":486,"line":987},[484,1451,1452],{"class":729},"  meta",[484,1454,733],{"class":549},[484,1456,550],{"class":549},[484,1458,738],{"class":729},[484,1460,733],{"class":549},[484,1462,569],{"class":549},[484,1464,1065],{"class":494},[484,1466,747],{"class":549},[484,1468,557],{"class":549},[484,1470,752],{"class":729},[484,1472,733],{"class":549},[484,1474,569],{"class":549},[484,1476,1477],{"class":494},"Check environment",[484,1479,747],{"class":549},[484,1481,1482],{"class":549}," },\n",[484,1484,1485,1488,1490],{"class":486,"line":993},[484,1486,1487],{"class":729},"  args",[484,1489,733],{"class":549},[484,1491,784],{"class":549},[484,1493,1494,1497,1499,1501,1504,1506,1508,1511,1513,1515,1518,1520,1522,1525,1527],{"class":486,"line":999},[484,1495,1496],{"class":729},"    json",[484,1498,733],{"class":549},[484,1500,550],{"class":549},[484,1502,1503],{"class":729}," type",[484,1505,733],{"class":549},[484,1507,569],{"class":549},[484,1509,1510],{"class":494},"boolean",[484,1512,747],{"class":549},[484,1514,557],{"class":549},[484,1516,1517],{"class":729}," alias",[484,1519,733],{"class":549},[484,1521,569],{"class":549},[484,1523,1524],{"class":494},"j",[484,1526,747],{"class":549},[484,1528,1482],{"class":549},[484,1530,1531],{"class":486,"line":1004},[484,1532,990],{"class":549},[484,1534,1536,1539,1542,1545,1549,1552,1554,1556,1558,1560,1563,1566,1569,1571,1574],{"class":486,"line":1535},30,[484,1537,1538],{"class":655},"  async",[484,1540,1541],{"class":729}," run",[484,1543,1544],{"class":549},"({",[484,1546,1548],{"class":1547},"sHdIc"," args",[484,1550,1551],{"class":549}," }:",[484,1553,550],{"class":549},[484,1555,1548],{"class":729},[484,1557,733],{"class":549},[484,1559,550],{"class":549},[484,1561,1562],{"class":729}," json",[484,1564,1565],{"class":549},"?:",[484,1567,1568],{"class":490}," boolean",[484,1570,563],{"class":549},[484,1572,1573],{"class":549}," })",[484,1575,784],{"class":549},[484,1577,1579,1582,1585,1587,1590,1592],{"class":486,"line":1578},31,[484,1580,1581],{"class":655},"    const",[484,1583,1584],{"class":553}," ok",[484,1586,1259],{"class":549},[484,1588,1589],{"class":545}," await",[484,1591,1243],{"class":708},[484,1593,1293],{"class":729},[484,1595,1597,1600,1602,1604,1607,1610],{"class":486,"line":1596},32,[484,1598,1599],{"class":545},"    if",[484,1601,1301],{"class":729},[484,1603,1304],{"class":549},[484,1605,1606],{"class":553},"ok",[484,1608,1609],{"class":729},") ",[484,1611,723],{"class":549},[484,1613,1615,1618,1621,1623,1626,1628,1631,1634,1636,1638,1641,1643,1645,1647,1649,1652,1654,1656,1659,1661,1663],{"class":486,"line":1614},33,[484,1616,1617],{"class":545},"      throw",[484,1619,1620],{"class":553}," Object",[484,1622,1153],{"class":549},[484,1624,1625],{"class":708},"assign",[484,1627,720],{"class":729},[484,1629,1630],{"class":549},"new",[484,1632,1633],{"class":708}," Error",[484,1635,720],{"class":729},[484,1637,747],{"class":549},[484,1639,1640],{"class":494},"Health checks failed",[484,1642,747],{"class":549},[484,1644,836],{"class":729},[484,1646,557],{"class":549},[484,1648,550],{"class":549},[484,1650,1651],{"class":729}," code",[484,1653,733],{"class":549},[484,1655,569],{"class":549},[484,1657,1658],{"class":494},"DOCTOR_FAILED",[484,1660,747],{"class":549},[484,1662,563],{"class":549},[484,1664,996],{"class":729},[484,1666,1668],{"class":486,"line":1667},34,[484,1669,1670],{"class":549},"    }\n",[484,1672,1674,1676,1678,1680,1683,1685,1687,1689,1692,1694,1697,1699,1702,1704,1706,1708,1711,1713],{"class":486,"line":1673},35,[484,1675,1599],{"class":545},[484,1677,1301],{"class":729},[484,1679,1304],{"class":549},[484,1681,1682],{"class":553},"args",[484,1684,1153],{"class":549},[484,1686,926],{"class":553},[484,1688,1609],{"class":729},[484,1690,1691],{"class":553},"process",[484,1693,1153],{"class":549},[484,1695,1696],{"class":553},"stdout",[484,1698,1153],{"class":549},[484,1700,1701],{"class":708},"write",[484,1703,720],{"class":729},[484,1705,747],{"class":549},[484,1707,1606],{"class":494},[484,1709,1710],{"class":553},"\\n",[484,1712,747],{"class":549},[484,1714,996],{"class":729},[484,1716,1718],{"class":486,"line":1717},36,[484,1719,990],{"class":549},[484,1721,1723],{"class":486,"line":1722},37,[484,1724,1430],{"class":549},[454,1726,1727,1728,1730,1731,1734,1735,1738],{},"Throw an error with a ",[457,1729,457],{}," property and ",[457,1732,1733],{},"outcome: \"error\""," plus ",[457,1736,1737],{},"errorCode"," are recorded automatically:",[475,1740,1742],{"className":536,"code":1741,"filename":1167,"language":538,"meta":480,"style":480},"throw Object.assign(new Error('Config missing'), { code: 'CONFIG_NOT_FOUND' })\n",[457,1743,1744],{"__ignoreMap":480},[484,1745,1746,1749,1751,1753,1755,1757,1759,1761,1763,1765,1768,1770,1772,1774,1776,1778,1780,1782,1785,1787,1789],{"class":486,"line":487},[484,1747,1748],{"class":545},"throw",[484,1750,1620],{"class":553},[484,1752,1153],{"class":549},[484,1754,1625],{"class":708},[484,1756,720],{"class":553},[484,1758,1630],{"class":549},[484,1760,1633],{"class":708},[484,1762,720],{"class":553},[484,1764,747],{"class":549},[484,1766,1767],{"class":494},"Config missing",[484,1769,747],{"class":549},[484,1771,836],{"class":553},[484,1773,557],{"class":549},[484,1775,550],{"class":549},[484,1777,1651],{"class":729},[484,1779,733],{"class":549},[484,1781,569],{"class":549},[484,1783,1784],{"class":494},"CONFIG_NOT_FOUND",[484,1786,747],{"class":549},[484,1788,563],{"class":549},[484,1790,996],{"class":553},[454,1792,1793,1794,1797],{},"A minimal sync handler for comparison — flags are auto-captured, you only ",[457,1795,1796],{},"set()"," business counters:",[475,1799,1802],{"className":536,"code":1800,"filename":1801,"language":538,"meta":480,"style":480},"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",[457,1803,1804,1822,1826,1839,1872,1880,1901,1936,1940,1950,1966,1985,1989],{"__ignoreMap":480},[484,1805,1806,1808,1810,1812,1814,1816,1818,1820],{"class":486,"line":487},[484,1807,546],{"class":545},[484,1809,550],{"class":549},[484,1811,1178],{"class":553},[484,1813,563],{"class":549},[484,1815,566],{"class":545},[484,1817,569],{"class":549},[484,1819,459],{"class":494},[484,1821,575],{"class":549},[484,1823,1824],{"class":486,"line":578},[484,1825,649],{"emptyLinePlaceholder":648},[484,1827,1828,1830,1832,1835,1837],{"class":486,"line":603},[484,1829,697],{"class":545},[484,1831,700],{"class":655},[484,1833,1834],{"class":553}," syncCommand ",[484,1836,662],{"class":549},[484,1838,784],{"class":549},[484,1840,1841,1843,1845,1847,1849,1851,1853,1855,1857,1859,1861,1863,1865,1868,1870],{"class":486,"line":624},[484,1842,1452],{"class":729},[484,1844,733],{"class":549},[484,1846,550],{"class":549},[484,1848,738],{"class":729},[484,1850,733],{"class":549},[484,1852,569],{"class":549},[484,1854,1098],{"class":494},[484,1856,747],{"class":549},[484,1858,557],{"class":549},[484,1860,752],{"class":729},[484,1862,733],{"class":549},[484,1864,569],{"class":549},[484,1866,1867],{"class":494},"Pull remote state",[484,1869,747],{"class":549},[484,1871,1482],{"class":549},[484,1873,1874,1876,1878],{"class":486,"line":645},[484,1875,1487],{"class":729},[484,1877,733],{"class":549},[484,1879,784],{"class":549},[484,1881,1882,1885,1887,1889,1891,1893,1895,1897,1899],{"class":486,"line":652},[484,1883,1884],{"class":729},"    dryRun",[484,1886,733],{"class":549},[484,1888,550],{"class":549},[484,1890,1503],{"class":729},[484,1892,733],{"class":549},[484,1894,569],{"class":549},[484,1896,1510],{"class":494},[484,1898,747],{"class":549},[484,1900,1482],{"class":549},[484,1902,1903,1906,1908,1910,1912,1914,1916,1919,1921,1923,1925,1927,1929,1932,1934],{"class":486,"line":672},[484,1904,1905],{"class":729},"    output",[484,1907,733],{"class":549},[484,1909,550],{"class":549},[484,1911,1503],{"class":729},[484,1913,733],{"class":549},[484,1915,569],{"class":549},[484,1917,1918],{"class":494},"string",[484,1920,747],{"class":549},[484,1922,557],{"class":549},[484,1924,752],{"class":729},[484,1926,733],{"class":549},[484,1928,569],{"class":549},[484,1930,1931],{"class":494},"Output path",[484,1933,747],{"class":549},[484,1935,1482],{"class":549},[484,1937,1938],{"class":486,"line":689},[484,1939,990],{"class":549},[484,1941,1942,1944,1946,1948],{"class":486,"line":694},[484,1943,1538],{"class":655},[484,1945,1541],{"class":729},[484,1947,1246],{"class":549},[484,1949,784],{"class":549},[484,1951,1952,1954,1957,1959,1961,1964],{"class":486,"line":714},[484,1953,1581],{"class":655},[484,1955,1956],{"class":553}," itemsSynced",[484,1958,1259],{"class":549},[484,1960,1589],{"class":545},[484,1962,1963],{"class":708}," pullRemoteState",[484,1965,1293],{"class":729},[484,1967,1968,1971,1973,1975,1977,1979,1981,1983],{"class":486,"line":726},[484,1969,1970],{"class":553},"    telemetry",[484,1972,1153],{"class":549},[484,1974,1399],{"class":708},[484,1976,720],{"class":729},[484,1978,824],{"class":549},[484,1980,1956],{"class":553},[484,1982,563],{"class":549},[484,1984,996],{"class":729},[484,1986,1987],{"class":486,"line":776},[484,1988,990],{"class":549},[484,1990,1991],{"class":486,"line":787},[484,1992,1430],{"class":549},[511,1994,1996],{"id":1995},"setup-without-citty","Setup without citty",[454,1998,1999,2000,2003,2004,733],{},"For scripts, migrators, or custom CLIs, use ",[457,2001,2002],{},"createTelemetry()"," and wrap each logical run with ",[457,2005,2006],{},"t.run()",[475,2008,2011],{"className":536,"code":2009,"filename":2010,"language":538,"meta":480,"style":480},"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",[457,2012,2013,2036,2040,2083,2087,2121,2137,2175,2181,2185],{"__ignoreMap":480},[484,2014,2015,2017,2019,2022,2024,2026,2028,2030,2032,2034],{"class":486,"line":487},[484,2016,546],{"class":545},[484,2018,550],{"class":549},[484,2020,2021],{"class":553}," createTelemetry",[484,2023,557],{"class":549},[484,2025,1178],{"class":553},[484,2027,563],{"class":549},[484,2029,566],{"class":545},[484,2031,569],{"class":549},[484,2033,459],{"class":494},[484,2035,575],{"class":549},[484,2037,2038],{"class":486,"line":578},[484,2039,649],{"emptyLinePlaceholder":648},[484,2041,2042,2044,2047,2049,2051,2053,2055,2057,2059,2061,2064,2066,2068,2070,2072,2074,2077,2079,2081],{"class":486,"line":603},[484,2043,656],{"class":655},[484,2045,2046],{"class":553}," t ",[484,2048,662],{"class":549},[484,2050,2021],{"class":708},[484,2052,720],{"class":553},[484,2054,824],{"class":549},[484,2056,738],{"class":729},[484,2058,733],{"class":549},[484,2060,569],{"class":549},[484,2062,2063],{"class":494},"my-migrator",[484,2065,747],{"class":549},[484,2067,557],{"class":549},[484,2069,766],{"class":729},[484,2071,733],{"class":549},[484,2073,569],{"class":549},[484,2075,2076],{"class":494},"2.0.0",[484,2078,747],{"class":549},[484,2080,563],{"class":549},[484,2082,996],{"class":553},[484,2084,2085],{"class":486,"line":624},[484,2086,649],{"emptyLinePlaceholder":648},[484,2088,2089,2092,2095,2097,2099,2101,2103,2106,2108,2110,2113,2116,2119],{"class":486,"line":645},[484,2090,2091],{"class":545},"await",[484,2093,2094],{"class":553}," t",[484,2096,1153],{"class":549},[484,2098,1024],{"class":708},[484,2100,720],{"class":553},[484,2102,747],{"class":549},[484,2104,2105],{"class":494},"migrate",[484,2107,747],{"class":549},[484,2109,557],{"class":549},[484,2111,2112],{"class":655}," async",[484,2114,2115],{"class":549}," ()",[484,2117,2118],{"class":655}," =>",[484,2120,784],{"class":549},[484,2122,2123,2125,2128,2130,2132,2135],{"class":486,"line":652},[484,2124,1283],{"class":655},[484,2126,2127],{"class":553}," rows",[484,2129,1259],{"class":549},[484,2131,1589],{"class":545},[484,2133,2134],{"class":708}," migrateBatch",[484,2136,1293],{"class":729},[484,2138,2139,2141,2143,2145,2147,2149,2152,2154,2156,2158,2161,2163,2166,2168,2171,2173],{"class":486,"line":672},[484,2140,1394],{"class":553},[484,2142,1153],{"class":549},[484,2144,1399],{"class":708},[484,2146,720],{"class":729},[484,2148,824],{"class":549},[484,2150,2151],{"class":729}," rowsMigrated",[484,2153,733],{"class":549},[484,2155,2127],{"class":553},[484,2157,1153],{"class":549},[484,2159,2160],{"class":553},"length",[484,2162,557],{"class":549},[484,2164,2165],{"class":729}," batchSize",[484,2167,733],{"class":549},[484,2169,2170],{"class":1262}," 500",[484,2172,563],{"class":549},[484,2174,996],{"class":729},[484,2176,2177,2179],{"class":486,"line":689},[484,2178,833],{"class":549},[484,2180,996],{"class":553},[484,2182,2183],{"class":486,"line":694},[484,2184,649],{"emptyLinePlaceholder":648},[484,2186,2187,2189,2191,2193,2196,2199],{"class":486,"line":714},[484,2188,2091],{"class":545},[484,2190,2094],{"class":553},[484,2192,1153],{"class":549},[484,2194,2195],{"class":708},"flush",[484,2197,2198],{"class":553},"() ",[484,2200,2201],{"class":892},"\u002F\u002F optional — also runs at end of each t.run()\n",[454,2203,2204,2205,2208,2209,2212,2213,2216,2217,2220,2221,2224,2225,2228,2229,2232],{},"GitHub Actions: swap ",[457,2206,2207],{},"createTelemetry"," for ",[457,2210,2211],{},"createGitHubActionsTelemetry()"," in the same file — it adds ",[457,2214,2215],{},"ghaAction"," and ",[457,2218,2219],{},"ghaEvent"," to ",[457,2222,2223],{},"custom"," from ",[457,2226,2227],{},"GITHUB_ACTION"," \u002F ",[457,2230,2231],{},"GITHUB_EVENT_NAME"," only (never repo content).",[475,2234,2237],{"className":536,"code":2235,"filename":2236,"language":538,"meta":480,"style":480},"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",[457,2238,2239,2262,2266,2307,2311,2340,2356,2383],{"__ignoreMap":480},[484,2240,2241,2243,2245,2248,2250,2252,2254,2256,2258,2260],{"class":486,"line":487},[484,2242,546],{"class":545},[484,2244,550],{"class":549},[484,2246,2247],{"class":553}," createGitHubActionsTelemetry",[484,2249,557],{"class":549},[484,2251,1178],{"class":553},[484,2253,563],{"class":549},[484,2255,566],{"class":545},[484,2257,569],{"class":549},[484,2259,459],{"class":494},[484,2261,575],{"class":549},[484,2263,2264],{"class":486,"line":578},[484,2265,649],{"emptyLinePlaceholder":648},[484,2267,2268,2270,2272,2274,2276,2278,2280,2282,2284,2286,2289,2291,2293,2295,2297,2299,2301,2303,2305],{"class":486,"line":603},[484,2269,656],{"class":655},[484,2271,2046],{"class":553},[484,2273,662],{"class":549},[484,2275,2247],{"class":708},[484,2277,720],{"class":553},[484,2279,824],{"class":549},[484,2281,738],{"class":729},[484,2283,733],{"class":549},[484,2285,569],{"class":549},[484,2287,2288],{"class":494},"my-action",[484,2290,747],{"class":549},[484,2292,557],{"class":549},[484,2294,766],{"class":729},[484,2296,733],{"class":549},[484,2298,569],{"class":549},[484,2300,684],{"class":494},[484,2302,747],{"class":549},[484,2304,563],{"class":549},[484,2306,996],{"class":553},[484,2308,2309],{"class":486,"line":624},[484,2310,649],{"emptyLinePlaceholder":648},[484,2312,2313,2315,2317,2319,2321,2323,2325,2328,2330,2332,2334,2336,2338],{"class":486,"line":645},[484,2314,2091],{"class":545},[484,2316,2094],{"class":553},[484,2318,1153],{"class":549},[484,2320,1024],{"class":708},[484,2322,720],{"class":553},[484,2324,747],{"class":549},[484,2326,2327],{"class":494},"report",[484,2329,747],{"class":549},[484,2331,557],{"class":549},[484,2333,2112],{"class":655},[484,2335,2115],{"class":549},[484,2337,2118],{"class":655},[484,2339,784],{"class":549},[484,2341,2342,2344,2347,2349,2351,2354],{"class":486,"line":652},[484,2343,1283],{"class":655},[484,2345,2346],{"class":553}," artifacts",[484,2348,1259],{"class":549},[484,2350,1589],{"class":545},[484,2352,2353],{"class":708}," collectArtifacts",[484,2355,1293],{"class":729},[484,2357,2358,2360,2362,2364,2366,2368,2371,2373,2375,2377,2379,2381],{"class":486,"line":672},[484,2359,1394],{"class":553},[484,2361,1153],{"class":549},[484,2363,1399],{"class":708},[484,2365,720],{"class":729},[484,2367,824],{"class":549},[484,2369,2370],{"class":729}," artifactCount",[484,2372,733],{"class":549},[484,2374,2346],{"class":553},[484,2376,1153],{"class":549},[484,2378,2160],{"class":553},[484,2380,563],{"class":549},[484,2382,996],{"class":729},[484,2384,2385,2387],{"class":486,"line":689},[484,2386,833],{"class":549},[484,2388,996],{"class":553},[511,2390,2392],{"id":2391},"standard-envelope","Standard envelope",[454,2394,2395],{},"Every run shares the same shape. You do not declare per-command schemas.",[475,2397,2401],{"className":2398,"code":2399,"language":2400,"meta":480,"style":480},"language-jsonc shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"event\": \"run\",\n  \"command\": \"sync\",\n  \"durationMs\": 412,\n  \"outcome\": \"success\",\n  \"flags\": { \"dryRun\": true, \"output\": true },\n  \"tool\": { \"name\": \"my-tool\", \"version\": \"1.0.0\" },\n  \"env\": {\n    \"node\": \"20.11\",\n    \"ci\": false,\n    \"provider\": null,\n    \"tty\": true,\n    \"agent\": \"cursor\"   \u002F\u002F std-env: cursor, claude, codex, … or null\n  },\n  \"machineId\": \"ab3f…\", \u002F\u002F hashed; omitted in ephemeral CI\n  \"custom\": { \"itemsSynced\": 42 }\n}\n","jsonc",[457,2402,2403,2407,2412,2417,2422,2427,2432,2437,2442,2447,2452,2457,2462,2470,2474,2482,2487],{"__ignoreMap":480},[484,2404,2405],{"class":486,"line":487},[484,2406,723],{},[484,2408,2409],{"class":486,"line":578},[484,2410,2411],{},"  \"event\": \"run\",\n",[484,2413,2414],{"class":486,"line":603},[484,2415,2416],{},"  \"command\": \"sync\",\n",[484,2418,2419],{"class":486,"line":624},[484,2420,2421],{},"  \"durationMs\": 412,\n",[484,2423,2424],{"class":486,"line":645},[484,2425,2426],{},"  \"outcome\": \"success\",\n",[484,2428,2429],{"class":486,"line":652},[484,2430,2431],{},"  \"flags\": { \"dryRun\": true, \"output\": true },\n",[484,2433,2434],{"class":486,"line":672},[484,2435,2436],{},"  \"tool\": { \"name\": \"my-tool\", \"version\": \"1.0.0\" },\n",[484,2438,2439],{"class":486,"line":689},[484,2440,2441],{},"  \"env\": {\n",[484,2443,2444],{"class":486,"line":694},[484,2445,2446],{},"    \"node\": \"20.11\",\n",[484,2448,2449],{"class":486,"line":714},[484,2450,2451],{},"    \"ci\": false,\n",[484,2453,2454],{"class":486,"line":726},[484,2455,2456],{},"    \"provider\": null,\n",[484,2458,2459],{"class":486,"line":776},[484,2460,2461],{},"    \"tty\": true,\n",[484,2463,2464,2467],{"class":486,"line":787},[484,2465,2466],{},"    \"agent\": \"cursor\"",[484,2468,2469],{},"   \u002F\u002F std-env: cursor, claude, codex, … or null\n",[484,2471,2472],{"class":486,"line":800},[484,2473,990],{},[484,2475,2476,2479],{"class":486,"line":812},[484,2477,2478],{},"  \"machineId\": \"ab3f…\",",[484,2480,2481],{}," \u002F\u002F hashed; omitted in ephemeral CI\n",[484,2483,2484],{"class":486,"line":841},[484,2485,2486],{},"  \"custom\": { \"itemsSynced\": 42 }\n",[484,2488,2489],{"class":486,"line":847},[484,2490,1430],{},[511,2492,2494],{"id":2493},"privacy","Privacy",[454,2496,2497,2498,2500,2501,2504],{},"Raw ",[457,2499,508],{}," is never read. Sanitization applies to ",[470,2502,2503],{},"citty-parsed"," flags only:",[2506,2507,2508,2522,2534],"ul",{},[2509,2510,2511,2514,2515,2518,2519,836],"li",{},[470,2512,2513],{},"Booleans \u002F numbers"," → value stored (",[457,2516,2517],{},"json: true",", ",[457,2520,2521],{},"limit: 50",[2509,2523,2524,2527,2528,2531,2532],{},[470,2525,2526],{},"Strings"," → presence only (",[457,2529,2530],{},"output: true",") unless allowlisted in ",[457,2533,1127],{},[2509,2535,2536,2540,2541,2544],{},[470,2537,2538],{},[457,2539,504],{}," → numbers and booleans always; strings only via ",[457,2542,2543],{},"collect.fields"," (undeclared values are dropped at runtime, never thrown)",[475,2546,2548],{"className":536,"code":2547,"filename":524,"language":538,"meta":480,"style":480},"collect: {\n  flags: { format: ['json', 'csv'] },           \u002F\u002F --format json → \"json\"; --format yaml → true\n  fields: { framework: ['nuxt', 'next'] },      \u002F\u002F telemetry.set({ framework: 'nuxt' }) ok\n}\n",[457,2549,2550,2559,2596,2632],{"__ignoreMap":480},[484,2551,2552,2555,2557],{"class":486,"line":487},[484,2553,2554],{"class":490},"collect",[484,2556,733],{"class":549},[484,2558,784],{"class":549},[484,2560,2561,2564,2566,2568,2570,2572,2574,2576,2578,2580,2582,2584,2586,2588,2590,2593],{"class":486,"line":578},[484,2562,2563],{"class":490},"  flags",[484,2565,733],{"class":549},[484,2567,550],{"class":549},[484,2569,916],{"class":490},[484,2571,733],{"class":549},[484,2573,921],{"class":729},[484,2575,747],{"class":549},[484,2577,926],{"class":494},[484,2579,747],{"class":549},[484,2581,557],{"class":549},[484,2583,569],{"class":549},[484,2585,935],{"class":494},[484,2587,747],{"class":549},[484,2589,940],{"class":729},[484,2591,2592],{"class":549},"},",[484,2594,2595],{"class":892},"           \u002F\u002F --format json → \"json\"; --format yaml → true\n",[484,2597,2598,2601,2603,2605,2607,2609,2611,2613,2615,2617,2619,2621,2623,2625,2627,2629],{"class":486,"line":603},[484,2599,2600],{"class":490},"  fields",[484,2602,733],{"class":549},[484,2604,550],{"class":549},[484,2606,955],{"class":490},[484,2608,733],{"class":549},[484,2610,921],{"class":729},[484,2612,747],{"class":549},[484,2614,964],{"class":494},[484,2616,747],{"class":549},[484,2618,557],{"class":549},[484,2620,569],{"class":549},[484,2622,973],{"class":494},[484,2624,747],{"class":549},[484,2626,940],{"class":729},[484,2628,2592],{"class":549},[484,2630,2631],{"class":892},"      \u002F\u002F telemetry.set({ framework: 'nuxt' }) ok\n",[484,2633,2634],{"class":486,"line":624},[484,2635,1430],{"class":549},[454,2637,2638,2639,2228,2641,2643,2644,2646],{},"Declare allowlists in the same ",[457,2640,520],{},[457,2642,2002],{}," call as ",[457,2645,2554],{}," — no separate config file.",[511,2648,2650],{"id":2649},"disclosure","Disclosure",[454,2652,2653,2656,2657,2659,2660,2663],{},[457,2654,2655],{},"generateDisclosure()"," produces markdown + JSON from the standard envelope plus your ",[457,2658,2554],{}," extensions. Commit the output (e.g. ",[457,2661,2662],{},"TELEMETRY.md",") so it stays in sync with releases:",[475,2665,2668],{"className":536,"code":2666,"filename":2667,"language":538,"meta":480,"style":480},"import { writeFile } from 'node:fs\u002Fpromises'\nimport { generateDisclosure } from '@evlog\u002Ftelemetry'\n\nconst { markdown } = generateDisclosure('my-tool', {\n  flags: { format: ['json', 'csv'] },\n})\n\nawait writeFile('TELEMETRY.md', markdown)\n","scripts\u002Fgenerate-disclosure.ts",[457,2669,2670,2690,2709,2713,2740,2772,2778,2782],{"__ignoreMap":480},[484,2671,2672,2674,2676,2679,2681,2683,2685,2688],{"class":486,"line":487},[484,2673,546],{"class":545},[484,2675,550],{"class":549},[484,2677,2678],{"class":553}," writeFile",[484,2680,563],{"class":549},[484,2682,566],{"class":545},[484,2684,569],{"class":549},[484,2686,2687],{"class":494},"node:fs\u002Fpromises",[484,2689,575],{"class":549},[484,2691,2692,2694,2696,2699,2701,2703,2705,2707],{"class":486,"line":578},[484,2693,546],{"class":545},[484,2695,550],{"class":549},[484,2697,2698],{"class":553}," generateDisclosure",[484,2700,563],{"class":549},[484,2702,566],{"class":545},[484,2704,569],{"class":549},[484,2706,459],{"class":494},[484,2708,575],{"class":549},[484,2710,2711],{"class":486,"line":603},[484,2712,649],{"emptyLinePlaceholder":648},[484,2714,2715,2717,2719,2722,2724,2726,2728,2730,2732,2734,2736,2738],{"class":486,"line":624},[484,2716,656],{"class":655},[484,2718,550],{"class":549},[484,2720,2721],{"class":553}," markdown ",[484,2723,833],{"class":549},[484,2725,1259],{"class":549},[484,2727,2698],{"class":708},[484,2729,720],{"class":553},[484,2731,747],{"class":549},[484,2733,667],{"class":494},[484,2735,747],{"class":549},[484,2737,557],{"class":549},[484,2739,784],{"class":549},[484,2741,2742,2744,2746,2748,2750,2752,2754,2756,2758,2760,2762,2764,2766,2768,2770],{"class":486,"line":645},[484,2743,2563],{"class":729},[484,2745,733],{"class":549},[484,2747,550],{"class":549},[484,2749,916],{"class":729},[484,2751,733],{"class":549},[484,2753,921],{"class":553},[484,2755,747],{"class":549},[484,2757,926],{"class":494},[484,2759,747],{"class":549},[484,2761,557],{"class":549},[484,2763,569],{"class":549},[484,2765,935],{"class":494},[484,2767,747],{"class":549},[484,2769,940],{"class":553},[484,2771,773],{"class":549},[484,2773,2774,2776],{"class":486,"line":652},[484,2775,833],{"class":549},[484,2777,996],{"class":553},[484,2779,2780],{"class":486,"line":672},[484,2781,649],{"emptyLinePlaceholder":648},[484,2783,2784,2786,2788,2790,2792,2794,2796,2798],{"class":486,"line":689},[484,2785,2091],{"class":545},[484,2787,2678],{"class":708},[484,2789,720],{"class":553},[484,2791,747],{"class":549},[484,2793,2662],{"class":494},[484,2795,747],{"class":549},[484,2797,557],{"class":549},[484,2799,2800],{"class":553}," markdown)\n",[454,2802,2803,2804,2806,2807,1153],{},"Users can also read it at runtime via ",[457,2805,1134],{}," when you wire ",[457,2808,2809],{},"defineTelemetryCommands()",[511,2811,2813],{"id":2812},"consent-and-reliability","Consent and reliability",[454,2815,2816,2819,2820,2823,2824,2827,2828,2228,2831,2834],{},[470,2817,2818],{},"Opt-out priority:"," ",[457,2821,2822],{},"DO_NOT_TRACK=1"," → ",[457,2825,2826],{},"EVLOG_TELEMETRY=0"," → persisted preference (",[457,2829,2830],{},"disableTelemetry()",[457,2832,2833],{},"telemetry disable","). Opt-out purges the undelivered outbox.",[454,2836,2837,2840,2841,2844],{},[470,2838,2839],{},"Never harms the host:"," telemetry never throws, never blocks exit; ",[457,2842,2843],{},"flush()"," has a 500ms hard cap.",[454,2846,2847,2850,2851,2854],{},[470,2848,2849],{},"Outbox:"," events append to ",[457,2852,2853],{},"~\u002F.config\u002F{toolName}\u002Ftelemetry\u002Foutbox.ndjson"," before any network send. Short-lived runs and offline machines drain the backlog on the next invocation.",[454,2856,2857,2819,2860,2863,2864,2867],{},[470,2858,2859],{},"Endpoint:",[457,2861,2862],{},"EVLOG_TELEMETRY_ENDPOINT"," env → ",[457,2865,2866],{},"endpoint"," option → outbox-only (default until you ship ingestion).",[511,2869,2871],{"id":2870},"debug","Debug",[475,2873,2875],{"className":477,"code":2874,"language":479,"meta":480,"style":480},"EVLOG_TELEMETRY_DEBUG=1 my-tool doctor\nEVLOG_TELEMETRY=0 my-tool sync\n",[457,2876,2877,2893],{"__ignoreMap":480},[484,2878,2879,2882,2884,2887,2890],{"class":486,"line":487},[484,2880,2881],{"class":553},"EVLOG_TELEMETRY_DEBUG",[484,2883,662],{"class":549},[484,2885,2886],{"class":494},"1",[484,2888,2889],{"class":490}," my-tool",[484,2891,2892],{"class":494}," doctor\n",[484,2894,2895,2898,2900,2903,2905],{"class":486,"line":578},[484,2896,2897],{"class":553},"EVLOG_TELEMETRY",[484,2899,662],{"class":549},[484,2901,2902],{"class":494},"0",[484,2904,2889],{"class":490},[484,2906,2907],{"class":494}," sync\n",[454,2909,2910],{},"Debug mode prints would-be payloads to stderr. Nothing is sent unless an endpoint is configured and delivery succeeds.",[511,2912,2914],{"id":2913},"see-also","See also",[2506,2916,2917],{},[2509,2918,2919,2922],{},[462,2920,2921],{"href":323},"Audit"," — wide events for security-sensitive actions",[2924,2925,2926],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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}",{"title":480,"searchDepth":578,"depth":578,"links":2928},[2929,2933,2934,2935,2936,2937,2938,2939],{"id":513,"depth":578,"text":514,"children":2930},[2931,2932],{"id":1014,"depth":603,"text":1015},{"id":1156,"depth":603,"text":1157},{"id":1995,"depth":578,"text":1996},{"id":2391,"depth":578,"text":2392},{"id":2493,"depth":578,"text":2494},{"id":2649,"depth":578,"text":2650},{"id":2812,"depth":578,"text":2813},{"id":2870,"depth":578,"text":2871},{"id":2913,"depth":578,"text":2914},"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.","md",[2943],{"label":2921,"icon":318,"to":323,"color":2944,"variant":2945},"neutral","subtle",{},{"title":284,"icon":315},{"title":449,"description":2940},"g-uC4VfLL7M8jH6V9Eu0tKcwUNVmMPzu-hu9c_l_Lmg",[2951,2953],{"title":354,"path":355,"stem":356,"description":2952,"icon":357,"children":-1},"Export one evlog wide event per eve agent turn — token usage, tool executions, business context, drains, enrichers, and tail sampling alongside Agent Runs and OpenTelemetry.",{"title":36,"path":367,"stem":368,"description":2954,"icon":369,"children":-1},"Observe what flows through the pipeline (stream, fs reader, consumer recipes), plug into the pipeline (plugins, enrichers, tail sampling, identity headers), or build your own bricks (custom drains, drain pipeline, custom framework integration).",1784144825260]