[{"data":1,"prerenderedAt":4823},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-eve":607,"-use-cases-eve-surround":4818},[4,35,85,143,323,484,543,582],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Start","\u002Fstart","1.start",[9,14,19,24,29],{"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",{"title":30,"path":31,"stem":32,"icon":33},"Choose your logger","\u002Fstart\u002Ftypescript-logging-library","1.start\u002F5.typescript-logging-library","i-lucide-file-code",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Learn","\u002Flearn","2.learn",[40,45,50,55,60,65,70,75,80],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":66,"path":67,"stem":68,"icon":69},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":71,"path":72,"stem":73,"icon":74},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":76,"path":77,"stem":78,"icon":79},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":81,"path":82,"stem":83,"icon":84},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":86,"path":87,"stem":88,"children":89,"page":34},"CLI","\u002Fcli","3.cli",[90,93,98,103,108,113,118,123,128,133,138],{"title":41,"path":91,"stem":92,"icon":49},"\u002Fcli\u002Foverview","3.cli\u002F0.overview",{"title":94,"path":95,"stem":96,"icon":97},"init","\u002Fcli\u002Finit","3.cli\u002F1.init","i-lucide-wand-sparkles",{"title":99,"path":100,"stem":101,"icon":102},"logs","\u002Fcli\u002Flogs","3.cli\u002F10.logs","i-lucide-scroll-text",{"title":104,"path":105,"stem":106,"icon":107},"map","\u002Fcli\u002Fmap","3.cli\u002F2.map","i-lucide-radar",{"title":109,"path":110,"stem":111,"icon":112},"Rules","\u002Fcli\u002Frules","3.cli\u002F3.rules","i-lucide-list-checks",{"title":114,"path":115,"stem":116,"icon":117},"Scoring","\u002Fcli\u002Fscoring","3.cli\u002F4.scoring","i-lucide-gauge",{"title":119,"path":120,"stem":121,"icon":122},"CI","\u002Fcli\u002Fci","3.cli\u002F5.ci","i-lucide-git-pull-request",{"title":124,"path":125,"stem":126,"icon":127},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F6.doctor","i-lucide-stethoscope",{"title":129,"path":130,"stem":131,"icon":132},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F7.telemetry","i-lucide-bar-chart-3",{"title":134,"path":135,"stem":136,"icon":137},"agents","\u002Fcli\u002Fagents","3.cli\u002F8.agents","i-lucide-bot",{"title":139,"path":140,"stem":141,"icon":142},"Observability Score","\u002Fcli\u002Fobservability-score","3.cli\u002F9.observability-score","i-lucide-activity",{"title":144,"path":145,"stem":146,"children":147,"page":34},"Integrate","\u002Fintegrate","4.integrate",[148,152,235],{"title":41,"path":149,"stem":150,"icon":151},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":153,"path":154,"stem":155,"children":156,"page":34},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[157,160,190,215],{"title":41,"path":158,"stem":159,"icon":44},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":161,"path":162,"stem":163,"children":164,"page":34},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[165,170,175,180,185],{"title":166,"path":167,"stem":168,"icon":169},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":171,"path":172,"stem":173,"icon":174},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F02.posthog","i-simple-icons-posthog",{"title":176,"path":177,"stem":178,"icon":179},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F03.sentry","i-simple-icons-sentry",{"title":181,"path":182,"stem":183,"icon":184},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F04.better-stack","i-simple-icons-betterstack",{"title":186,"path":187,"stem":188,"icon":189},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F05.datadog","i-simple-icons-datadog",{"title":191,"path":192,"stem":193,"children":194,"page":34},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[195,200,205,210],{"title":196,"path":197,"stem":198,"icon":199},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":201,"path":202,"stem":203,"icon":204},"ClickHouse","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fclickhouse","4.integrate\u002Fadapters\u002Fhybrid\u002F02.clickhouse","i-simple-icons-clickhouse",{"title":206,"path":207,"stem":208,"icon":209},"OTLP","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp","4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp","i-simple-icons-opentelemetry",{"title":211,"path":212,"stem":213,"icon":214},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx","4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx","i-custom-hyperdx",{"title":216,"path":217,"stem":218,"children":219,"page":34},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[220,225,230],{"title":221,"path":222,"stem":223,"icon":224},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":226,"path":227,"stem":228,"icon":229},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":231,"path":232,"stem":233,"icon":234},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":236,"path":237,"stem":238,"children":239,"page":34},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[240,244,249,254,259,264,269,274,279,284,289,294,299,304,308,313,318],{"title":41,"path":241,"stem":242,"icon":243},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":245,"path":246,"stem":247,"icon":248},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":250,"path":251,"stem":252,"icon":253},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":255,"path":256,"stem":257,"icon":258},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":260,"path":261,"stem":262,"icon":263},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":265,"path":266,"stem":267,"icon":268},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":270,"path":271,"stem":272,"icon":273},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":275,"path":276,"stem":277,"icon":278},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":280,"path":281,"stem":282,"icon":283},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":285,"path":286,"stem":287,"icon":288},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":290,"path":291,"stem":292,"icon":293},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":295,"path":296,"stem":297,"icon":298},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":300,"path":301,"stem":302,"icon":303},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":305,"path":306,"stem":307,"icon":79},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":309,"path":310,"stem":311,"icon":312},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":314,"path":315,"stem":316,"icon":317},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":319,"path":320,"stem":321,"icon":322},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":324,"path":325,"stem":326,"children":327,"page":34},"Use Cases","\u002Fuse-cases","5.use-cases",[328,331,336,364,391,423,444,449,454,458],{"title":41,"path":329,"stem":330,"icon":112},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":332,"path":333,"stem":334,"icon":335},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":337,"icon":338,"path":339,"stem":340,"children":341,"page":34},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[342,345,350,355,360],{"title":41,"path":343,"stem":344,"icon":44},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":346,"path":347,"stem":348,"icon":349},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":351,"path":352,"stem":353,"icon":354},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":356,"path":357,"stem":358,"icon":359},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":361,"path":362,"stem":363,"icon":142},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry",{"title":365,"icon":366,"path":367,"stem":368,"children":369,"page":34},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[370,373,378,383,387],{"title":41,"path":371,"stem":372,"icon":44},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":374,"path":375,"stem":376,"icon":377},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":379,"path":380,"stem":381,"icon":382},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":384,"path":385,"stem":386,"icon":335},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":388,"path":389,"stem":390,"icon":117},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":392,"icon":393,"path":394,"stem":395,"children":396,"page":34},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[397,400,405,410,415,419],{"title":41,"path":398,"stem":399,"icon":44},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":401,"path":402,"stem":403,"icon":404},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":406,"path":407,"stem":408,"icon":409},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":411,"path":412,"stem":413,"icon":414},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":416,"path":417,"stem":418,"icon":393},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":420,"path":421,"stem":422,"icon":84},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":361,"icon":117,"path":424,"stem":425,"children":426,"page":34},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[427,430,435,440],{"title":41,"path":428,"stem":429,"icon":44},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":431,"path":432,"stem":433,"icon":434},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":436,"path":437,"stem":438,"icon":439},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":441,"path":442,"stem":443,"icon":84},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":445,"path":446,"stem":447,"icon":448},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":450,"path":451,"stem":452,"icon":453},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":455,"path":456,"stem":457,"icon":439},"Node.js request logging","\u002Fuse-cases\u002Fstructured-logging-nodejs","5.use-cases\u002F6.structured-logging-nodejs",{"title":459,"icon":460,"path":461,"stem":462,"children":463,"page":34},"Signals","i-lucide-scan-search","\u002Fuse-cases\u002Fsignals","5.use-cases\u002F7.signals",[464,467,472,477,480],{"title":41,"path":465,"stem":466,"icon":44},"\u002Fuse-cases\u002Fsignals\u002Foverview","5.use-cases\u002F7.signals\u002F01.overview",{"title":468,"path":469,"stem":470,"icon":471},"What You Can Ask","\u002Fuse-cases\u002Fsignals\u002Fask","5.use-cases\u002F7.signals\u002F02.ask","i-lucide-message-circle-question",{"title":473,"path":474,"stem":475,"icon":476},"What It Costs","\u002Fuse-cases\u002Fsignals\u002Fcost","5.use-cases\u002F7.signals\u002F03.cost","i-lucide-coins",{"title":441,"path":478,"stem":479,"icon":84},"\u002Fuse-cases\u002Fsignals\u002Freference","5.use-cases\u002F7.signals\u002F04.reference",{"title":420,"path":481,"stem":482,"icon":483},"\u002Fuse-cases\u002Fsignals\u002Frecipes","5.use-cases\u002F7.signals\u002F05.recipes","i-lucide-lightbulb",{"title":485,"path":486,"stem":487,"children":488,"page":34},"Extend","\u002Fextend","6.extend",[489,493,498,503,507,512,516,520,524,528,533,538],{"title":41,"path":490,"stem":491,"icon":492},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":494,"path":495,"stem":496,"icon":497},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":499,"path":500,"stem":501,"icon":502},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":504,"path":505,"stem":506,"icon":497},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":508,"path":509,"stem":510,"icon":511},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":420,"path":513,"stem":514,"icon":515},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":517,"path":518,"stem":519,"icon":492},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":521,"path":522,"stem":523,"icon":448},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":525,"path":526,"stem":527,"icon":69},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":529,"path":530,"stem":531,"icon":532},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":534,"path":535,"stem":536,"icon":537},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":539,"path":540,"stem":541,"icon":542},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":441,"path":544,"stem":545,"children":546,"page":34},"\u002Freference","7.reference",[547,551,556,559,564,568,573,577],{"title":41,"path":548,"stem":549,"icon":550},"\u002Freference\u002Foverview","7.reference\u002F0.overview","i-lucide-book-marked",{"title":552,"path":553,"stem":554,"icon":555},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":388,"path":557,"stem":558,"icon":117},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":560,"path":561,"stem":562,"icon":563},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":565,"path":566,"stem":567,"icon":393},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":569,"path":570,"stem":571,"icon":572},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":574,"path":575,"stem":576,"icon":448},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":578,"path":579,"stem":580,"icon":581},"Cost","\u002Freference\u002Fcost","7.reference\u002F7.cost","i-lucide-receipt",{"title":583,"path":584,"stem":585,"children":586,"page":34},"Compare","\u002Fcompare","8.compare",[587,591,595,599,603],{"title":588,"path":589,"stem":590,"icon":572},"evlog vs Pino","\u002Fcompare\u002Fpino","8.compare\u002F1.pino",{"title":592,"path":593,"stem":594,"icon":209},"evlog vs OpenTelemetry","\u002Fcompare\u002Fopentelemetry","8.compare\u002F2.opentelemetry",{"title":596,"path":597,"stem":598,"icon":572},"evlog vs LogTape","\u002Fcompare\u002Flogtape","8.compare\u002F3.logtape",{"title":600,"path":601,"stem":602,"icon":572},"evlog vs Winston: formats and request events","\u002Fcompare\u002Fwinston","8.compare\u002F4.winston",{"title":604,"path":605,"stem":606,"icon":572},"evlog vs Consola: reporters and request context","\u002Fcompare\u002Fconsola","8.compare\u002F5.consola",{"id":608,"title":450,"body":609,"description":4807,"extension":4808,"links":4809,"meta":4814,"navigation":4815,"path":451,"seo":4816,"stem":452,"__hash__":4817},"docs\u002F5.use-cases\u002F5.eve.md",{"type":610,"value":611,"toc":4786},"minimark",[612,644,662,707,712,784,787,792,872,876,883,1087,1098,1112,1226,1242,1246,1272,1281,1562,1586,1590,1627,1631,1634,2317,2320,2703,2745,2749,2752,2981,2985,2991,3029,3045,3056,3158,3176,3180,3196,3206,3724,3737,3747,3780,3787,3790,3885,3892,3896,3899,4153,4219,4222,4392,4395,4401,4655,4659,4682,4686,4726,4748,4752,4782],[613,614,615,621,622,626,627,630,631,635,636,639,640,643],"p",{},[616,617,450],"a",{"href":618,"rel":619},"https:\u002F\u002Feve.dev\u002Fdocs\u002Fintroduction",[620],"nofollow"," ships built-in observability: ",[623,624,625],"strong",{},"Agent Runs"," on Vercel and optional ",[623,628,629],{},"OpenTelemetry"," spans via ",[632,633,634],"code",{},"agent\u002Finstrumentation.ts",". ",[632,637,638],{},"evlog\u002Feve"," adds a third layer: ",[623,641,642],{},"exportable wide events"," per turn with your full evlog pipeline (drains, enrichers, tail sampling, audit).",[645,646,648,650,651,654,655,657,658,661],"callout",{"color":647,"icon":13},"info",[632,649,638],{}," requires ",[623,652,653],{},"eve 0.30 or later",". eve is still in beta and stream event shapes may change before GA, so pin ",[632,656,450],{}," and ",[632,659,660],{},"evlog"," versions in production agents.",[663,664,667,670,695],"prompt",{":actions":665,"description":666,"icon":453},"[\"copy\",\"cursor\",\"claude\"]","Add evlog wide events to my eve agent",[613,668,669],{},"Add evlog wide events to my eve agent.",[671,672,673,677,680,683,686,689,692],"ul",{},[674,675,676],"li",{},"Install evlog: pnpm add evlog",[674,678,679],{},"Create agent\u002Fhooks\u002Fevlog.ts with defineEvlogHook from 'evlog\u002Feve'",[674,681,682],{},"Pass drain, enrich, and keep options (same as HTTP middleware integrations)",[674,684,685],{},"In tools, import useLogger from 'evlog\u002Feve' and call useLogger() inside execute(). The turn logger is bound via AsyncLocalStorage when defineEvlogHook() is registered; pass ctx only if ALS is unavailable in your runtime",[674,687,688],{},"User message content is omitted by default (message: 'omit'); use 'preview' or 'full' only after reviewing PII policy",[674,690,691],{},"Optionally add agent\u002Finstrumentation.ts with defineEvlogInstrumentation from 'evlog\u002Feve' to join OTel spans to the wide events",[674,693,694],{},"Keep eve Agent Runs. evlog\u002Feve is additive",[613,696,697,698,702,703],{},"Docs: ",[616,699,700],{"href":700,"rel":701},"https:\u002F\u002Fwww.evlog.dev\u002Fuse-cases\u002Feve",[620],"\nAdapters: ",[616,704,705],{"href":705,"rel":706},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Foverview",[620],[708,709,711],"h2",{"id":710},"when-to-use-what","When to use what",[713,714,715,728],"table",{},[716,717,718],"thead",{},[719,720,721,725],"tr",{},[722,723,724],"th",{},"Need",[722,726,727],{},"Use",[729,730,731,743,755,766],"tbody",{},[719,732,733,737],{},[734,735,736],"td",{},"Debug a session in Vercel",[734,738,739,740,742],{},"eve ",[623,741,625],{}," (automatic)",[719,744,745,748],{},[734,746,747],{},"Span-level traces in Datadog \u002F Honeycomb",[734,749,739,750,754],{},[623,751,752],{},[632,753,634],{}," + OTel exporter",[719,756,757,760],{},[734,758,759],{},"Wide events to Axiom \u002F Better Stack \u002F FS, billing, audit, tail sampling",[734,761,762],{},[623,763,764],{},[632,765,638],{},[719,767,768,771],{},[734,769,770],{},"Jumping from a span to its wide event, and back",[734,772,773,778,779,783],{},[623,774,775],{},[632,776,777],{},"defineEvlogInstrumentation()"," (",[616,780,782],{"href":781},"#correlate-traces-with-wide-events","below",")",[708,785,25],{"id":786},"quick-start",[788,789,791],"h3",{"id":790},"_1-install","1. Install",[793,794,795,823,839,855],"code-group",{},[796,797,803],"pre",{"className":798,"code":799,"filename":800,"language":801,"meta":802,"style":802},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add evlog eve\n","pnpm","bash","",[632,804,805],{"__ignoreMap":802},[806,807,810,813,817,820],"span",{"class":808,"line":809},"line",1,[806,811,800],{"class":812},"sBMFI",[806,814,816],{"class":815},"sfazB"," add",[806,818,819],{"class":815}," evlog",[806,821,822],{"class":815}," eve\n",[796,824,827],{"className":798,"code":825,"filename":826,"language":801,"meta":802,"style":802},"bun add evlog eve\n","bun",[632,828,829],{"__ignoreMap":802},[806,830,831,833,835,837],{"class":808,"line":809},[806,832,826],{"class":812},[806,834,816],{"class":815},[806,836,819],{"class":815},[806,838,822],{"class":815},[796,840,843],{"className":798,"code":841,"filename":842,"language":801,"meta":802,"style":802},"yarn add evlog eve\n","yarn",[632,844,845],{"__ignoreMap":802},[806,846,847,849,851,853],{"class":808,"line":809},[806,848,842],{"class":812},[806,850,816],{"class":815},[806,852,819],{"class":815},[806,854,822],{"class":815},[796,856,859],{"className":798,"code":857,"filename":858,"language":801,"meta":802,"style":802},"npm install evlog eve\n","npm",[632,860,861],{"__ignoreMap":802},[806,862,863,865,868,870],{"class":808,"line":809},[806,864,858],{"class":812},[806,866,867],{"class":815}," install",[806,869,819],{"class":815},[806,871,822],{"class":815},[788,873,875],{"id":874},"_2-add-the-hook","2. Add the hook",[613,877,878,879,882],{},"Create ",[632,880,881],{},"agent\u002Fhooks\u002Fevlog.ts",":",[796,884,888],{"className":885,"code":886,"filename":881,"language":887,"meta":802,"style":802},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineEvlogHook } from 'evlog\u002Feve'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\nexport default defineEvlogHook({\n  init: { env: { service: 'my-agent' } },\n  drain: createAxiomDrain(),\n  enrich: (ctx) => {\n    ctx.event.region = process.env.VERCEL_REGION\n  },\n})\n","typescript",[632,889,890,918,939,946,964,1000,1016,1039,1072,1078],{"__ignoreMap":802},[806,891,892,896,900,904,907,910,913,915],{"class":808,"line":809},[806,893,895],{"class":894},"s7zQu","import",[806,897,899],{"class":898},"sMK4o"," {",[806,901,903],{"class":902},"sTEyZ"," defineEvlogHook",[806,905,906],{"class":898}," }",[806,908,909],{"class":894}," from",[806,911,912],{"class":898}," '",[806,914,638],{"class":815},[806,916,917],{"class":898},"'\n",[806,919,921,923,925,928,930,932,934,937],{"class":808,"line":920},2,[806,922,895],{"class":894},[806,924,899],{"class":898},[806,926,927],{"class":902}," createAxiomDrain",[806,929,906],{"class":898},[806,931,909],{"class":894},[806,933,912],{"class":898},[806,935,936],{"class":815},"evlog\u002Faxiom",[806,938,917],{"class":898},[806,940,942],{"class":808,"line":941},3,[806,943,945],{"emptyLinePlaceholder":944},true,"\n",[806,947,949,952,955,958,961],{"class":808,"line":948},4,[806,950,951],{"class":894},"export",[806,953,954],{"class":894}," default",[806,956,903],{"class":957},"s2Zo4",[806,959,960],{"class":902},"(",[806,962,963],{"class":898},"{\n",[806,965,967,971,973,975,978,980,982,985,987,989,992,995,997],{"class":808,"line":966},5,[806,968,970],{"class":969},"swJcz","  init",[806,972,882],{"class":898},[806,974,899],{"class":898},[806,976,977],{"class":969}," env",[806,979,882],{"class":898},[806,981,899],{"class":898},[806,983,984],{"class":969}," service",[806,986,882],{"class":898},[806,988,912],{"class":898},[806,990,991],{"class":815},"my-agent",[806,993,994],{"class":898},"'",[806,996,906],{"class":898},[806,998,999],{"class":898}," },\n",[806,1001,1003,1006,1008,1010,1013],{"class":808,"line":1002},6,[806,1004,1005],{"class":969},"  drain",[806,1007,882],{"class":898},[806,1009,927],{"class":957},[806,1011,1012],{"class":902},"()",[806,1014,1015],{"class":898},",\n",[806,1017,1019,1022,1024,1026,1030,1032,1036],{"class":808,"line":1018},7,[806,1020,1021],{"class":957},"  enrich",[806,1023,882],{"class":898},[806,1025,778],{"class":898},[806,1027,1029],{"class":1028},"sHdIc","ctx",[806,1031,783],{"class":898},[806,1033,1035],{"class":1034},"spNyl"," =>",[806,1037,1038],{"class":898}," {\n",[806,1040,1042,1045,1048,1051,1053,1056,1059,1062,1064,1067,1069],{"class":808,"line":1041},8,[806,1043,1044],{"class":902},"    ctx",[806,1046,1047],{"class":898},".",[806,1049,1050],{"class":902},"event",[806,1052,1047],{"class":898},[806,1054,1055],{"class":902},"region",[806,1057,1058],{"class":898}," =",[806,1060,1061],{"class":902}," process",[806,1063,1047],{"class":898},[806,1065,1066],{"class":902},"env",[806,1068,1047],{"class":898},[806,1070,1071],{"class":902},"VERCEL_REGION\n",[806,1073,1075],{"class":808,"line":1074},9,[806,1076,1077],{"class":898},"  },\n",[806,1079,1081,1084],{"class":808,"line":1080},10,[806,1082,1083],{"class":898},"}",[806,1085,1086],{"class":902},")\n",[613,1088,1089,1090,1093,1094,1097],{},"eve auto-discovers hook files under ",[632,1091,1092],{},"agent\u002Fhooks\u002F",". No HTTP middleware, because the unit of work is an agent ",[623,1095,1096],{},"turn",", not a request.",[613,1099,1100,1103,1104,1107,1108,1111],{},[632,1101,1102],{},"enrich"," is HTTP-shaped: it sees the event, never the eve session. To stamp session context onto the turn event, such as a caller detail ",[632,1105,1106],{},"eve.caller"," does not carry, use ",[632,1109,1110],{},"enrichTurn",", which runs once per turn where the turn logger is created:",[796,1113,1115],{"className":885,"code":1114,"filename":881,"language":887,"meta":802,"style":802},"export default defineEvlogHook({\n  enrichTurn: (ctx) => ({\n    tier: ctx.session.auth.current?.principalId === 'github:1' ? 'pro' : 'free',\n  }),\n})\n",[632,1116,1117,1129,1148,1211,1220],{"__ignoreMap":802},[806,1118,1119,1121,1123,1125,1127],{"class":808,"line":809},[806,1120,951],{"class":894},[806,1122,954],{"class":894},[806,1124,903],{"class":957},[806,1126,960],{"class":902},[806,1128,963],{"class":898},[806,1130,1131,1134,1136,1138,1140,1142,1144,1146],{"class":808,"line":920},[806,1132,1133],{"class":957},"  enrichTurn",[806,1135,882],{"class":898},[806,1137,778],{"class":898},[806,1139,1029],{"class":1028},[806,1141,783],{"class":898},[806,1143,1035],{"class":1034},[806,1145,778],{"class":902},[806,1147,963],{"class":898},[806,1149,1150,1153,1155,1158,1160,1163,1165,1168,1170,1173,1176,1179,1182,1184,1187,1189,1192,1194,1197,1199,1202,1204,1207,1209],{"class":808,"line":941},[806,1151,1152],{"class":969},"    tier",[806,1154,882],{"class":898},[806,1156,1157],{"class":902}," ctx",[806,1159,1047],{"class":898},[806,1161,1162],{"class":902},"session",[806,1164,1047],{"class":898},[806,1166,1167],{"class":902},"auth",[806,1169,1047],{"class":898},[806,1171,1172],{"class":902},"current",[806,1174,1175],{"class":898},"?.",[806,1177,1178],{"class":902},"principalId ",[806,1180,1181],{"class":898},"===",[806,1183,912],{"class":898},[806,1185,1186],{"class":815},"github:1",[806,1188,994],{"class":898},[806,1190,1191],{"class":898}," ?",[806,1193,912],{"class":898},[806,1195,1196],{"class":815},"pro",[806,1198,994],{"class":898},[806,1200,1201],{"class":898}," :",[806,1203,912],{"class":898},[806,1205,1206],{"class":815},"free",[806,1208,994],{"class":898},[806,1210,1015],{"class":898},[806,1212,1213,1216,1218],{"class":808,"line":948},[806,1214,1215],{"class":898},"  }",[806,1217,783],{"class":902},[806,1219,1015],{"class":898},[806,1221,1222,1224],{"class":808,"line":966},[806,1223,1083],{"class":898},[806,1225,1086],{"class":902},[613,1227,1228,1229,1231,1232,657,1235,1238,1239,1241],{},"Returned fields merge onto the turn event, over the built-in ",[632,1230,450],{},", ",[632,1233,1234],{},"agent",[632,1236,1237],{},"channel"," fields, and stay turn-scoped: the next turn of the session does not inherit them. A throwing ",[632,1240,1110],{}," is logged and skipped, never fails the turn.",[788,1243,1245],{"id":1244},"_3-log-business-context-from-tools","3. Log business context from tools",[613,1247,1248,1251,1252,1255,1256,1259,1260,1263,1264,1267,1268,1271],{},[632,1249,1250],{},"defineEvlogHook()"," binds the turn logger via ",[623,1253,1254],{},"AsyncLocalStorage"," on ",[632,1257,1258],{},"turn.started",". Inside tool ",[632,1261,1262],{},"execute()"," handlers, call ",[632,1265,1266],{},"useLogger()"," with no arguments, the same ergonomics as ",[632,1269,1270],{},"useLogger(event)"," in Nuxt or Hono.",[613,1273,1274,1275,1280],{},"In the ",[616,1276,1279],{"href":1277,"rel":1278},"https:\u002F\u002Fgithub.com\u002Fevloghq\u002Fevlog\u002Ftree\u002Fmain\u002Fexamples\u002Feve",[620],"example agent",", support tools attach customer and order context as the agent works a refund:",[796,1282,1285],{"className":885,"code":1283,"filename":1284,"language":887,"meta":802,"style":802},"import { defineTool } from 'eve\u002Ftools'\nimport { useLogger } from 'evlog\u002Feve'\nimport { z } from 'zod'\n\nexport default defineTool({\n  description: 'Look up an order by id.',\n  inputSchema: z.object({ orderId: z.string() }),\n  async execute({ orderId }) {\n    const order = await fetchOrder(orderId)\n    const log = useLogger()\n    log.set({ order: { id: order.id, amount: order.amount, status: order.status } })\n    return order\n  },\n})\n","agent\u002Ftools\u002Flookup_order.ts",[632,1286,1287,1307,1326,1346,1350,1362,1378,1418,1436,1459,1473,1541,1550,1555],{"__ignoreMap":802},[806,1288,1289,1291,1293,1296,1298,1300,1302,1305],{"class":808,"line":809},[806,1290,895],{"class":894},[806,1292,899],{"class":898},[806,1294,1295],{"class":902}," defineTool",[806,1297,906],{"class":898},[806,1299,909],{"class":894},[806,1301,912],{"class":898},[806,1303,1304],{"class":815},"eve\u002Ftools",[806,1306,917],{"class":898},[806,1308,1309,1311,1313,1316,1318,1320,1322,1324],{"class":808,"line":920},[806,1310,895],{"class":894},[806,1312,899],{"class":898},[806,1314,1315],{"class":902}," useLogger",[806,1317,906],{"class":898},[806,1319,909],{"class":894},[806,1321,912],{"class":898},[806,1323,638],{"class":815},[806,1325,917],{"class":898},[806,1327,1328,1330,1332,1335,1337,1339,1341,1344],{"class":808,"line":941},[806,1329,895],{"class":894},[806,1331,899],{"class":898},[806,1333,1334],{"class":902}," z",[806,1336,906],{"class":898},[806,1338,909],{"class":894},[806,1340,912],{"class":898},[806,1342,1343],{"class":815},"zod",[806,1345,917],{"class":898},[806,1347,1348],{"class":808,"line":948},[806,1349,945],{"emptyLinePlaceholder":944},[806,1351,1352,1354,1356,1358,1360],{"class":808,"line":966},[806,1353,951],{"class":894},[806,1355,954],{"class":894},[806,1357,1295],{"class":957},[806,1359,960],{"class":902},[806,1361,963],{"class":898},[806,1363,1364,1367,1369,1371,1374,1376],{"class":808,"line":1002},[806,1365,1366],{"class":969},"  description",[806,1368,882],{"class":898},[806,1370,912],{"class":898},[806,1372,1373],{"class":815},"Look up an order by id.",[806,1375,994],{"class":898},[806,1377,1015],{"class":898},[806,1379,1380,1383,1385,1387,1389,1392,1394,1397,1400,1402,1404,1406,1409,1412,1414,1416],{"class":808,"line":1018},[806,1381,1382],{"class":969},"  inputSchema",[806,1384,882],{"class":898},[806,1386,1334],{"class":902},[806,1388,1047],{"class":898},[806,1390,1391],{"class":957},"object",[806,1393,960],{"class":902},[806,1395,1396],{"class":898},"{",[806,1398,1399],{"class":969}," orderId",[806,1401,882],{"class":898},[806,1403,1334],{"class":902},[806,1405,1047],{"class":898},[806,1407,1408],{"class":957},"string",[806,1410,1411],{"class":902},"() ",[806,1413,1083],{"class":898},[806,1415,783],{"class":902},[806,1417,1015],{"class":898},[806,1419,1420,1423,1426,1429,1431,1434],{"class":808,"line":1041},[806,1421,1422],{"class":1034},"  async",[806,1424,1425],{"class":969}," execute",[806,1427,1428],{"class":898},"({",[806,1430,1399],{"class":1028},[806,1432,1433],{"class":898}," })",[806,1435,1038],{"class":898},[806,1437,1438,1441,1444,1446,1449,1452,1454,1457],{"class":808,"line":1074},[806,1439,1440],{"class":1034},"    const",[806,1442,1443],{"class":902}," order",[806,1445,1058],{"class":898},[806,1447,1448],{"class":894}," await",[806,1450,1451],{"class":957}," fetchOrder",[806,1453,960],{"class":969},[806,1455,1456],{"class":902},"orderId",[806,1458,1086],{"class":969},[806,1460,1461,1463,1466,1468,1470],{"class":808,"line":1080},[806,1462,1440],{"class":1034},[806,1464,1465],{"class":902}," log",[806,1467,1058],{"class":898},[806,1469,1315],{"class":957},[806,1471,1472],{"class":969},"()\n",[806,1474,1476,1479,1481,1484,1486,1488,1490,1492,1494,1497,1499,1501,1503,1506,1509,1512,1514,1516,1518,1521,1523,1526,1528,1530,1532,1535,1537,1539],{"class":808,"line":1475},11,[806,1477,1478],{"class":902},"    log",[806,1480,1047],{"class":898},[806,1482,1483],{"class":957},"set",[806,1485,960],{"class":969},[806,1487,1396],{"class":898},[806,1489,1443],{"class":969},[806,1491,882],{"class":898},[806,1493,899],{"class":898},[806,1495,1496],{"class":969}," id",[806,1498,882],{"class":898},[806,1500,1443],{"class":902},[806,1502,1047],{"class":898},[806,1504,1505],{"class":902},"id",[806,1507,1508],{"class":898},",",[806,1510,1511],{"class":969}," amount",[806,1513,882],{"class":898},[806,1515,1443],{"class":902},[806,1517,1047],{"class":898},[806,1519,1520],{"class":902},"amount",[806,1522,1508],{"class":898},[806,1524,1525],{"class":969}," status",[806,1527,882],{"class":898},[806,1529,1443],{"class":902},[806,1531,1047],{"class":898},[806,1533,1534],{"class":902},"status",[806,1536,906],{"class":898},[806,1538,906],{"class":898},[806,1540,1086],{"class":969},[806,1542,1544,1547],{"class":808,"line":1543},12,[806,1545,1546],{"class":894},"    return",[806,1548,1549],{"class":902}," order\n",[806,1551,1553],{"class":808,"line":1552},13,[806,1554,1077],{"class":898},[806,1556,1558,1560],{"class":808,"line":1557},14,[806,1559,1083],{"class":898},[806,1561,1086],{"class":902},[645,1563,1565,1581],{"color":1564,"icon":151},"neutral",[613,1566,1567,1570,1571,1573,1574,1577,1578,1580],{},[623,1568,1569],{},"Resolution:"," pass the eve tool ",[632,1572,1029],{}," as ",[632,1575,1576],{},"useLogger(ctx)"," when AsyncLocalStorage does not propagate, such as separate hook and tool bundles. With a standard eve agent layout and ",[632,1579,881],{}," registered, you should not need it.",[613,1582,1583,1585],{},[632,1584,1266],{}," never throws: when it cannot reach the turn's logger it warns once and returns a logger that accepts every call and emits nothing. A turn resumed in another process after a step boundary is the common case, and losing enrichment must never fail the tool that was being enriched. The turn keeps running; only its extra fields are dropped.",[788,1587,1589],{"id":1588},"_4-nextjs-web-chat-optional","4. Next.js web chat (optional)",[613,1591,1592,1593,1596,1597,1600,1601,1604,1605,1600,1608,1611,1612,1615,1616,1619,1620,1623,1624,1047],{},"Wrap ",[632,1594,1595],{},"next.config.ts"," with ",[632,1598,1599],{},"withEve()"," from ",[632,1602,1603],{},"eve\u002Fnext"," and use ",[632,1606,1607],{},"useEveAgent()",[632,1609,1610],{},"eve\u002Freact"," in your app. eve starts alongside ",[632,1613,1614],{},"next dev"," and proxies ",[632,1617,1618],{},"\u002Feve\u002Fv1\u002F*"," on the same origin, so tool calls, approvals, and ",[632,1621,1622],{},"ask_question"," work out of the box. See the ",[616,1625,1279],{"href":1277,"rel":1626},[620],[708,1628,1630],{"id":1629},"wide-event-shape","Wide event shape",[613,1632,1633],{},"Each completed turn emits one event:",[796,1635,1640],{"className":1636,"code":1637,"filename":1638,"language":1639,"meta":802,"style":802},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"method\": \"EVE\",\n  \"path\": \"\u002Fsessions\u002Fsess_abc\u002Fturns\u002Fturn_0\",\n  \"status\": 200,\n  \"duration\": \"7.9s\",\n  \"durationMs\": 7903,\n  \"service\": \"clearbill-support-agent\",\n  \"eve\": {\n    \"sessionId\": \"sess_abc\",\n    \"turnId\": \"turn_0\",\n    \"turnSequence\": 0,\n    \"phase\": \"awaiting-approval\",\n    \"sessionTurns\": 1\n  },\n  \"customer\": { \"slug\": \"acme-corp\", \"plan\": \"enterprise\" },\n  \"order\": { \"id\": \"4821\", \"amount\": 890, \"currency\": \"USD\" },\n  \"approval\": { \"status\": \"pending\", \"tool\": \"issue_refund\" },\n  \"ai\": {\n    \"model\": \"deepseek\u002Fdeepseek-v4-flash\",\n    \"provider\": \"deepseek\",\n    \"calls\": 2,\n    \"steps\": 2,\n    \"inputTokens\": 11724,\n    \"outputTokens\": 282,\n    \"finishReason\": \"tool-calls\",\n    \"tools\": [\n      { \"name\": \"lookup_customer\", \"durationMs\": 26, \"success\": true, \"inputTokens\": 8900 },\n      { \"name\": \"lookup_order\", \"durationMs\": 13, \"success\": true }\n    ]\n  }\n}\n","Wide Event — turn awaiting approval","json",[632,1641,1642,1646,1669,1689,1705,1725,1741,1761,1773,1794,1814,1830,1850,1864,1868,1918,1980,2029,2043,2064,2085,2102,2118,2135,2152,2173,2188,2250,2299,2305,2311],{"__ignoreMap":802},[806,1643,1644],{"class":808,"line":809},[806,1645,963],{"class":898},[806,1647,1648,1651,1654,1657,1659,1662,1665,1667],{"class":808,"line":920},[806,1649,1650],{"class":898},"  \"",[806,1652,1653],{"class":1034},"method",[806,1655,1656],{"class":898},"\"",[806,1658,882],{"class":898},[806,1660,1661],{"class":898}," \"",[806,1663,1664],{"class":815},"EVE",[806,1666,1656],{"class":898},[806,1668,1015],{"class":898},[806,1670,1671,1673,1676,1678,1680,1682,1685,1687],{"class":808,"line":941},[806,1672,1650],{"class":898},[806,1674,1675],{"class":1034},"path",[806,1677,1656],{"class":898},[806,1679,882],{"class":898},[806,1681,1661],{"class":898},[806,1683,1684],{"class":815},"\u002Fsessions\u002Fsess_abc\u002Fturns\u002Fturn_0",[806,1686,1656],{"class":898},[806,1688,1015],{"class":898},[806,1690,1691,1693,1695,1697,1699,1703],{"class":808,"line":948},[806,1692,1650],{"class":898},[806,1694,1534],{"class":1034},[806,1696,1656],{"class":898},[806,1698,882],{"class":898},[806,1700,1702],{"class":1701},"sbssI"," 200",[806,1704,1015],{"class":898},[806,1706,1707,1709,1712,1714,1716,1718,1721,1723],{"class":808,"line":966},[806,1708,1650],{"class":898},[806,1710,1711],{"class":1034},"duration",[806,1713,1656],{"class":898},[806,1715,882],{"class":898},[806,1717,1661],{"class":898},[806,1719,1720],{"class":815},"7.9s",[806,1722,1656],{"class":898},[806,1724,1015],{"class":898},[806,1726,1727,1729,1732,1734,1736,1739],{"class":808,"line":1002},[806,1728,1650],{"class":898},[806,1730,1731],{"class":1034},"durationMs",[806,1733,1656],{"class":898},[806,1735,882],{"class":898},[806,1737,1738],{"class":1701}," 7903",[806,1740,1015],{"class":898},[806,1742,1743,1745,1748,1750,1752,1754,1757,1759],{"class":808,"line":1018},[806,1744,1650],{"class":898},[806,1746,1747],{"class":1034},"service",[806,1749,1656],{"class":898},[806,1751,882],{"class":898},[806,1753,1661],{"class":898},[806,1755,1756],{"class":815},"clearbill-support-agent",[806,1758,1656],{"class":898},[806,1760,1015],{"class":898},[806,1762,1763,1765,1767,1769,1771],{"class":808,"line":1041},[806,1764,1650],{"class":898},[806,1766,450],{"class":1034},[806,1768,1656],{"class":898},[806,1770,882],{"class":898},[806,1772,1038],{"class":898},[806,1774,1775,1778,1781,1783,1785,1787,1790,1792],{"class":808,"line":1074},[806,1776,1777],{"class":898},"    \"",[806,1779,1780],{"class":812},"sessionId",[806,1782,1656],{"class":898},[806,1784,882],{"class":898},[806,1786,1661],{"class":898},[806,1788,1789],{"class":815},"sess_abc",[806,1791,1656],{"class":898},[806,1793,1015],{"class":898},[806,1795,1796,1798,1801,1803,1805,1807,1810,1812],{"class":808,"line":1080},[806,1797,1777],{"class":898},[806,1799,1800],{"class":812},"turnId",[806,1802,1656],{"class":898},[806,1804,882],{"class":898},[806,1806,1661],{"class":898},[806,1808,1809],{"class":815},"turn_0",[806,1811,1656],{"class":898},[806,1813,1015],{"class":898},[806,1815,1816,1818,1821,1823,1825,1828],{"class":808,"line":1475},[806,1817,1777],{"class":898},[806,1819,1820],{"class":812},"turnSequence",[806,1822,1656],{"class":898},[806,1824,882],{"class":898},[806,1826,1827],{"class":1701}," 0",[806,1829,1015],{"class":898},[806,1831,1832,1834,1837,1839,1841,1843,1846,1848],{"class":808,"line":1543},[806,1833,1777],{"class":898},[806,1835,1836],{"class":812},"phase",[806,1838,1656],{"class":898},[806,1840,882],{"class":898},[806,1842,1661],{"class":898},[806,1844,1845],{"class":815},"awaiting-approval",[806,1847,1656],{"class":898},[806,1849,1015],{"class":898},[806,1851,1852,1854,1857,1859,1861],{"class":808,"line":1552},[806,1853,1777],{"class":898},[806,1855,1856],{"class":812},"sessionTurns",[806,1858,1656],{"class":898},[806,1860,882],{"class":898},[806,1862,1863],{"class":1701}," 1\n",[806,1865,1866],{"class":808,"line":1557},[806,1867,1077],{"class":898},[806,1869,1871,1873,1876,1878,1880,1882,1884,1887,1889,1891,1893,1896,1898,1900,1902,1905,1907,1909,1911,1914,1916],{"class":808,"line":1870},15,[806,1872,1650],{"class":898},[806,1874,1875],{"class":1034},"customer",[806,1877,1656],{"class":898},[806,1879,882],{"class":898},[806,1881,899],{"class":898},[806,1883,1661],{"class":898},[806,1885,1886],{"class":812},"slug",[806,1888,1656],{"class":898},[806,1890,882],{"class":898},[806,1892,1661],{"class":898},[806,1894,1895],{"class":815},"acme-corp",[806,1897,1656],{"class":898},[806,1899,1508],{"class":898},[806,1901,1661],{"class":898},[806,1903,1904],{"class":812},"plan",[806,1906,1656],{"class":898},[806,1908,882],{"class":898},[806,1910,1661],{"class":898},[806,1912,1913],{"class":815},"enterprise",[806,1915,1656],{"class":898},[806,1917,999],{"class":898},[806,1919,1921,1923,1926,1928,1930,1932,1934,1936,1938,1940,1942,1945,1947,1949,1951,1953,1955,1957,1960,1962,1964,1967,1969,1971,1973,1976,1978],{"class":808,"line":1920},16,[806,1922,1650],{"class":898},[806,1924,1925],{"class":1034},"order",[806,1927,1656],{"class":898},[806,1929,882],{"class":898},[806,1931,899],{"class":898},[806,1933,1661],{"class":898},[806,1935,1505],{"class":812},[806,1937,1656],{"class":898},[806,1939,882],{"class":898},[806,1941,1661],{"class":898},[806,1943,1944],{"class":815},"4821",[806,1946,1656],{"class":898},[806,1948,1508],{"class":898},[806,1950,1661],{"class":898},[806,1952,1520],{"class":812},[806,1954,1656],{"class":898},[806,1956,882],{"class":898},[806,1958,1959],{"class":1701}," 890",[806,1961,1508],{"class":898},[806,1963,1661],{"class":898},[806,1965,1966],{"class":812},"currency",[806,1968,1656],{"class":898},[806,1970,882],{"class":898},[806,1972,1661],{"class":898},[806,1974,1975],{"class":815},"USD",[806,1977,1656],{"class":898},[806,1979,999],{"class":898},[806,1981,1983,1985,1988,1990,1992,1994,1996,1998,2000,2002,2004,2007,2009,2011,2013,2016,2018,2020,2022,2025,2027],{"class":808,"line":1982},17,[806,1984,1650],{"class":898},[806,1986,1987],{"class":1034},"approval",[806,1989,1656],{"class":898},[806,1991,882],{"class":898},[806,1993,899],{"class":898},[806,1995,1661],{"class":898},[806,1997,1534],{"class":812},[806,1999,1656],{"class":898},[806,2001,882],{"class":898},[806,2003,1661],{"class":898},[806,2005,2006],{"class":815},"pending",[806,2008,1656],{"class":898},[806,2010,1508],{"class":898},[806,2012,1661],{"class":898},[806,2014,2015],{"class":812},"tool",[806,2017,1656],{"class":898},[806,2019,882],{"class":898},[806,2021,1661],{"class":898},[806,2023,2024],{"class":815},"issue_refund",[806,2026,1656],{"class":898},[806,2028,999],{"class":898},[806,2030,2032,2034,2037,2039,2041],{"class":808,"line":2031},18,[806,2033,1650],{"class":898},[806,2035,2036],{"class":1034},"ai",[806,2038,1656],{"class":898},[806,2040,882],{"class":898},[806,2042,1038],{"class":898},[806,2044,2046,2048,2051,2053,2055,2057,2060,2062],{"class":808,"line":2045},19,[806,2047,1777],{"class":898},[806,2049,2050],{"class":812},"model",[806,2052,1656],{"class":898},[806,2054,882],{"class":898},[806,2056,1661],{"class":898},[806,2058,2059],{"class":815},"deepseek\u002Fdeepseek-v4-flash",[806,2061,1656],{"class":898},[806,2063,1015],{"class":898},[806,2065,2067,2069,2072,2074,2076,2078,2081,2083],{"class":808,"line":2066},20,[806,2068,1777],{"class":898},[806,2070,2071],{"class":812},"provider",[806,2073,1656],{"class":898},[806,2075,882],{"class":898},[806,2077,1661],{"class":898},[806,2079,2080],{"class":815},"deepseek",[806,2082,1656],{"class":898},[806,2084,1015],{"class":898},[806,2086,2088,2090,2093,2095,2097,2100],{"class":808,"line":2087},21,[806,2089,1777],{"class":898},[806,2091,2092],{"class":812},"calls",[806,2094,1656],{"class":898},[806,2096,882],{"class":898},[806,2098,2099],{"class":1701}," 2",[806,2101,1015],{"class":898},[806,2103,2105,2107,2110,2112,2114,2116],{"class":808,"line":2104},22,[806,2106,1777],{"class":898},[806,2108,2109],{"class":812},"steps",[806,2111,1656],{"class":898},[806,2113,882],{"class":898},[806,2115,2099],{"class":1701},[806,2117,1015],{"class":898},[806,2119,2121,2123,2126,2128,2130,2133],{"class":808,"line":2120},23,[806,2122,1777],{"class":898},[806,2124,2125],{"class":812},"inputTokens",[806,2127,1656],{"class":898},[806,2129,882],{"class":898},[806,2131,2132],{"class":1701}," 11724",[806,2134,1015],{"class":898},[806,2136,2138,2140,2143,2145,2147,2150],{"class":808,"line":2137},24,[806,2139,1777],{"class":898},[806,2141,2142],{"class":812},"outputTokens",[806,2144,1656],{"class":898},[806,2146,882],{"class":898},[806,2148,2149],{"class":1701}," 282",[806,2151,1015],{"class":898},[806,2153,2155,2157,2160,2162,2164,2166,2169,2171],{"class":808,"line":2154},25,[806,2156,1777],{"class":898},[806,2158,2159],{"class":812},"finishReason",[806,2161,1656],{"class":898},[806,2163,882],{"class":898},[806,2165,1661],{"class":898},[806,2167,2168],{"class":815},"tool-calls",[806,2170,1656],{"class":898},[806,2172,1015],{"class":898},[806,2174,2176,2178,2181,2183,2185],{"class":808,"line":2175},26,[806,2177,1777],{"class":898},[806,2179,2180],{"class":812},"tools",[806,2182,1656],{"class":898},[806,2184,882],{"class":898},[806,2186,2187],{"class":898}," [\n",[806,2189,2191,2194,2196,2199,2201,2203,2205,2208,2210,2212,2214,2216,2218,2220,2223,2225,2227,2230,2232,2234,2237,2239,2241,2243,2245,2248],{"class":808,"line":2190},27,[806,2192,2193],{"class":898},"      {",[806,2195,1661],{"class":898},[806,2197,2198],{"class":1701},"name",[806,2200,1656],{"class":898},[806,2202,882],{"class":898},[806,2204,1661],{"class":898},[806,2206,2207],{"class":815},"lookup_customer",[806,2209,1656],{"class":898},[806,2211,1508],{"class":898},[806,2213,1661],{"class":898},[806,2215,1731],{"class":1701},[806,2217,1656],{"class":898},[806,2219,882],{"class":898},[806,2221,2222],{"class":1701}," 26",[806,2224,1508],{"class":898},[806,2226,1661],{"class":898},[806,2228,2229],{"class":1701},"success",[806,2231,1656],{"class":898},[806,2233,882],{"class":898},[806,2235,2236],{"class":898}," true,",[806,2238,1661],{"class":898},[806,2240,2125],{"class":1701},[806,2242,1656],{"class":898},[806,2244,882],{"class":898},[806,2246,2247],{"class":1701}," 8900",[806,2249,999],{"class":898},[806,2251,2253,2255,2257,2259,2261,2263,2265,2268,2270,2272,2274,2276,2278,2280,2283,2285,2287,2289,2291,2293,2296],{"class":808,"line":2252},28,[806,2254,2193],{"class":898},[806,2256,1661],{"class":898},[806,2258,2198],{"class":1701},[806,2260,1656],{"class":898},[806,2262,882],{"class":898},[806,2264,1661],{"class":898},[806,2266,2267],{"class":815},"lookup_order",[806,2269,1656],{"class":898},[806,2271,1508],{"class":898},[806,2273,1661],{"class":898},[806,2275,1731],{"class":1701},[806,2277,1656],{"class":898},[806,2279,882],{"class":898},[806,2281,2282],{"class":1701}," 13",[806,2284,1508],{"class":898},[806,2286,1661],{"class":898},[806,2288,2229],{"class":1701},[806,2290,1656],{"class":898},[806,2292,882],{"class":898},[806,2294,2295],{"class":898}," true",[806,2297,2298],{"class":898}," }\n",[806,2300,2302],{"class":808,"line":2301},29,[806,2303,2304],{"class":898},"    ]\n",[806,2306,2308],{"class":808,"line":2307},30,[806,2309,2310],{"class":898},"  }\n",[806,2312,2314],{"class":808,"line":2313},31,[806,2315,2316],{"class":898},"}\n",[613,2318,2319],{},"After approval, the next turn carries the outcome:",[796,2321,2324],{"className":1636,"code":2322,"filename":2323,"language":1639,"meta":802,"style":802},"{\n  \"path\": \"\u002Fsessions\u002Fsess_abc\u002Fturns\u002Fturn_1\",\n  \"eve\": {\n    \"sessionId\": \"sess_abc\",\n    \"turnId\": \"turn_1\",\n    \"turnSequence\": 1,\n    \"sessionTurns\": 2\n  },\n  \"refund\": { \"orderId\": \"4821\", \"amount\": 890, \"status\": \"refunded\" },\n  \"audit\": { \"action\": \"refund.issued\", \"target\": { \"type\": \"order\", \"id\": \"4821\" } },\n  \"approval\": { \"status\": \"approved\", \"tool\": \"issue_refund\" },\n  \"ai\": {\n    \"tools\": [{ \"name\": \"issue_refund\", \"durationMs\": 993, \"success\": true }],\n    \"finishReason\": \"stop\"\n  }\n}\n","Wide Event — refund completed",[632,2325,2326,2330,2349,2361,2379,2398,2413,2426,2430,2488,2565,2610,2622,2677,2695,2699],{"__ignoreMap":802},[806,2327,2328],{"class":808,"line":809},[806,2329,963],{"class":898},[806,2331,2332,2334,2336,2338,2340,2342,2345,2347],{"class":808,"line":920},[806,2333,1650],{"class":898},[806,2335,1675],{"class":1034},[806,2337,1656],{"class":898},[806,2339,882],{"class":898},[806,2341,1661],{"class":898},[806,2343,2344],{"class":815},"\u002Fsessions\u002Fsess_abc\u002Fturns\u002Fturn_1",[806,2346,1656],{"class":898},[806,2348,1015],{"class":898},[806,2350,2351,2353,2355,2357,2359],{"class":808,"line":941},[806,2352,1650],{"class":898},[806,2354,450],{"class":1034},[806,2356,1656],{"class":898},[806,2358,882],{"class":898},[806,2360,1038],{"class":898},[806,2362,2363,2365,2367,2369,2371,2373,2375,2377],{"class":808,"line":948},[806,2364,1777],{"class":898},[806,2366,1780],{"class":812},[806,2368,1656],{"class":898},[806,2370,882],{"class":898},[806,2372,1661],{"class":898},[806,2374,1789],{"class":815},[806,2376,1656],{"class":898},[806,2378,1015],{"class":898},[806,2380,2381,2383,2385,2387,2389,2391,2394,2396],{"class":808,"line":966},[806,2382,1777],{"class":898},[806,2384,1800],{"class":812},[806,2386,1656],{"class":898},[806,2388,882],{"class":898},[806,2390,1661],{"class":898},[806,2392,2393],{"class":815},"turn_1",[806,2395,1656],{"class":898},[806,2397,1015],{"class":898},[806,2399,2400,2402,2404,2406,2408,2411],{"class":808,"line":1002},[806,2401,1777],{"class":898},[806,2403,1820],{"class":812},[806,2405,1656],{"class":898},[806,2407,882],{"class":898},[806,2409,2410],{"class":1701}," 1",[806,2412,1015],{"class":898},[806,2414,2415,2417,2419,2421,2423],{"class":808,"line":1018},[806,2416,1777],{"class":898},[806,2418,1856],{"class":812},[806,2420,1656],{"class":898},[806,2422,882],{"class":898},[806,2424,2425],{"class":1701}," 2\n",[806,2427,2428],{"class":808,"line":1041},[806,2429,1077],{"class":898},[806,2431,2432,2434,2437,2439,2441,2443,2445,2447,2449,2451,2453,2455,2457,2459,2461,2463,2465,2467,2469,2471,2473,2475,2477,2479,2481,2484,2486],{"class":808,"line":1074},[806,2433,1650],{"class":898},[806,2435,2436],{"class":1034},"refund",[806,2438,1656],{"class":898},[806,2440,882],{"class":898},[806,2442,899],{"class":898},[806,2444,1661],{"class":898},[806,2446,1456],{"class":812},[806,2448,1656],{"class":898},[806,2450,882],{"class":898},[806,2452,1661],{"class":898},[806,2454,1944],{"class":815},[806,2456,1656],{"class":898},[806,2458,1508],{"class":898},[806,2460,1661],{"class":898},[806,2462,1520],{"class":812},[806,2464,1656],{"class":898},[806,2466,882],{"class":898},[806,2468,1959],{"class":1701},[806,2470,1508],{"class":898},[806,2472,1661],{"class":898},[806,2474,1534],{"class":812},[806,2476,1656],{"class":898},[806,2478,882],{"class":898},[806,2480,1661],{"class":898},[806,2482,2483],{"class":815},"refunded",[806,2485,1656],{"class":898},[806,2487,999],{"class":898},[806,2489,2490,2492,2495,2497,2499,2501,2503,2506,2508,2510,2512,2515,2517,2519,2521,2524,2526,2528,2530,2532,2535,2537,2539,2541,2543,2545,2547,2549,2551,2553,2555,2557,2559,2561,2563],{"class":808,"line":1080},[806,2491,1650],{"class":898},[806,2493,2494],{"class":1034},"audit",[806,2496,1656],{"class":898},[806,2498,882],{"class":898},[806,2500,899],{"class":898},[806,2502,1661],{"class":898},[806,2504,2505],{"class":812},"action",[806,2507,1656],{"class":898},[806,2509,882],{"class":898},[806,2511,1661],{"class":898},[806,2513,2514],{"class":815},"refund.issued",[806,2516,1656],{"class":898},[806,2518,1508],{"class":898},[806,2520,1661],{"class":898},[806,2522,2523],{"class":812},"target",[806,2525,1656],{"class":898},[806,2527,882],{"class":898},[806,2529,899],{"class":898},[806,2531,1661],{"class":898},[806,2533,2534],{"class":1701},"type",[806,2536,1656],{"class":898},[806,2538,882],{"class":898},[806,2540,1661],{"class":898},[806,2542,1925],{"class":815},[806,2544,1656],{"class":898},[806,2546,1508],{"class":898},[806,2548,1661],{"class":898},[806,2550,1505],{"class":1701},[806,2552,1656],{"class":898},[806,2554,882],{"class":898},[806,2556,1661],{"class":898},[806,2558,1944],{"class":815},[806,2560,1656],{"class":898},[806,2562,906],{"class":898},[806,2564,999],{"class":898},[806,2566,2567,2569,2571,2573,2575,2577,2579,2581,2583,2585,2587,2590,2592,2594,2596,2598,2600,2602,2604,2606,2608],{"class":808,"line":1475},[806,2568,1650],{"class":898},[806,2570,1987],{"class":1034},[806,2572,1656],{"class":898},[806,2574,882],{"class":898},[806,2576,899],{"class":898},[806,2578,1661],{"class":898},[806,2580,1534],{"class":812},[806,2582,1656],{"class":898},[806,2584,882],{"class":898},[806,2586,1661],{"class":898},[806,2588,2589],{"class":815},"approved",[806,2591,1656],{"class":898},[806,2593,1508],{"class":898},[806,2595,1661],{"class":898},[806,2597,2015],{"class":812},[806,2599,1656],{"class":898},[806,2601,882],{"class":898},[806,2603,1661],{"class":898},[806,2605,2024],{"class":815},[806,2607,1656],{"class":898},[806,2609,999],{"class":898},[806,2611,2612,2614,2616,2618,2620],{"class":808,"line":1543},[806,2613,1650],{"class":898},[806,2615,2036],{"class":1034},[806,2617,1656],{"class":898},[806,2619,882],{"class":898},[806,2621,1038],{"class":898},[806,2623,2624,2626,2628,2630,2632,2635,2637,2639,2641,2643,2645,2647,2649,2651,2653,2655,2657,2659,2662,2664,2666,2668,2670,2672,2674],{"class":808,"line":1552},[806,2625,1777],{"class":898},[806,2627,2180],{"class":812},[806,2629,1656],{"class":898},[806,2631,882],{"class":898},[806,2633,2634],{"class":898}," [{",[806,2636,1661],{"class":898},[806,2638,2198],{"class":1701},[806,2640,1656],{"class":898},[806,2642,882],{"class":898},[806,2644,1661],{"class":898},[806,2646,2024],{"class":815},[806,2648,1656],{"class":898},[806,2650,1508],{"class":898},[806,2652,1661],{"class":898},[806,2654,1731],{"class":1701},[806,2656,1656],{"class":898},[806,2658,882],{"class":898},[806,2660,2661],{"class":1701}," 993",[806,2663,1508],{"class":898},[806,2665,1661],{"class":898},[806,2667,2229],{"class":1701},[806,2669,1656],{"class":898},[806,2671,882],{"class":898},[806,2673,2295],{"class":898},[806,2675,2676],{"class":898}," }],\n",[806,2678,2679,2681,2683,2685,2687,2689,2692],{"class":808,"line":1557},[806,2680,1777],{"class":898},[806,2682,2159],{"class":812},[806,2684,1656],{"class":898},[806,2686,882],{"class":898},[806,2688,1661],{"class":898},[806,2690,2691],{"class":815},"stop",[806,2693,2694],{"class":898},"\"\n",[806,2696,2697],{"class":808,"line":1870},[806,2698,2310],{"class":898},[806,2700,2701],{"class":808,"line":1920},[806,2702,2316],{"class":898},[613,2704,2705,2706,1231,2709,1231,2712,2715,2716,2718,2719,2722,2723,2726,2727,2730,2731,1231,2733,1231,2736,1231,2739,1231,2742,1047],{},"Token usage and tool executions are accumulated from eve stream events (",[632,2707,2708],{},"step.completed",[632,2710,2711],{},"actions.requested",[632,2713,2714],{},"action.result","). Business fields set via ",[632,2717,1266],{}," carry across turns in the same session. Link turns in analytics with ",[632,2720,2721],{},"eve.sessionId"," + ",[632,2724,2725],{},"eve.turnSequence",", and each event stays self-contained. ",[632,2728,2729],{},"eve.phase"," is only set for non-routine endings: ",[632,2732,1845],{},[632,2734,2735],{},"awaiting-authorization",[632,2737,2738],{},"rejected",[632,2740,2741],{},"cancelled",[632,2743,2744],{},"failed",[788,2746,2748],{"id":2747},"everything-the-turn-can-report","Everything the turn can report",[613,2750,2751],{},"Beyond the identifiers above, a turn records what eve reports about it. Every field is optional and appears only when the turn produced it.",[713,2753,2754,2764],{},[716,2755,2756],{},[719,2757,2758,2761],{},[722,2759,2760],{},"Field",[722,2762,2763],{},"What it tells you",[729,2765,2766,2786,2812,2825,2842,2856,2869,2879,2895,2905,2915,2929,2946,2971],{},[719,2767,2768,2773],{},[734,2769,2770],{},[632,2771,2772],{},"eve.runtime",[734,2774,2775,2776,2779,2780,2779,2783],{},"eve version, agent id, model, and the deployed ",[632,2777,2778],{},"gitSha"," \u002F ",[632,2781,2782],{},"gitBranch",[632,2784,2785],{},"deployedAt",[719,2787,2788,2792],{},[734,2789,2790],{},[632,2791,1106],{},[734,2793,2794,2795,1231,2798,657,2801,2804,2805,657,2808,2811],{},"Who triggered the turn: ",[632,2796,2797],{},"principalId",[632,2799,2800],{},"principalType",[632,2802,2803],{},"authenticator",". On a multi-user channel this is what you group cost and volume by. ",[632,2806,2807],{},"subject",[632,2809,2810],{},"attributes"," are never recorded (a channel may put a name or an email in them)",[719,2813,2814,2819],{},[734,2815,2816],{},[632,2817,2818],{},"eve.parent",[734,2820,2821,2822],{},"Parent and root session ids for a subagent run: rebuild the delegation tree with ",[632,2823,2824],{},"rootSessionId",[719,2826,2827,2832],{},[734,2828,2829],{},[632,2830,2831],{},"eve.authorizations",[734,2833,2834,2835,1231,2838,2841],{},"Connection sign-ins with their ",[632,2836,2837],{},"outcome",[632,2839,2840],{},"reason"," and duration",[719,2843,2844,2849],{},[734,2845,2846],{},[632,2847,2848],{},"eve.compaction",[734,2850,2851,2852,2855],{},"How many compactions ran, on which model, and ",[632,2853,2854],{},"inputTokensAtTrigger"," (how full the context was when the first one fired)",[719,2857,2858,2866],{},[734,2859,2860,2779,2863],{},[632,2861,2862],{},"eve.stepFailures",[632,2864,2865],{},"eve.failedSteps",[734,2867,2868],{},"Model calls that failed, including on a turn that then succeeded on retry",[719,2870,2871,2876],{},[734,2872,2873],{},[632,2874,2875],{},"eve.subagents",[734,2877,2878],{},"Delegations with their status and duration",[719,2880,2881,2886],{},[734,2882,2883],{},[632,2884,2885],{},"eve.reasoning",[734,2887,2888,657,2891,2894],{},[632,2889,2890],{},"blocks",[632,2892,2893],{},"chars",", the size of the model's thinking, never its content",[719,2896,2897,2902],{},[734,2898,2899],{},[632,2900,2901],{},"eve.result",[734,2903,2904],{},"The structured result, for an agent with an output schema",[719,2906,2907,2912],{},[734,2908,2909],{},[632,2910,2911],{},"eve.contextCleared",[734,2913,2914],{},"The durable history was wiped during this turn",[719,2916,2917,2922],{},[734,2918,2919],{},[632,2920,2921],{},"message.responseChars",[734,2923,2924,2925,2928],{},"Length of the agent's response, recorded whatever the ",[632,2926,2927],{},"message"," mode",[719,2930,2931,2936],{},[734,2932,2933],{},[632,2934,2935],{},"ai.costUsd",[734,2937,2938,2939,2942,2943],{},"Cost as reported by eve. ",[632,2940,2941],{},"ai.estimatedCost"," is the fallback computed from ",[632,2944,2945],{},"cost",[719,2947,2948,2956],{},[734,2949,2950,2779,2953],{},[632,2951,2952],{},"ai.model",[632,2954,2955],{},"ai.provider",[734,2957,2958,2959,2961,2962,2964,2965,2967,2968],{},"The gateway slug (",[632,2960,2059],{},") and the resolved provider (",[632,2963,2080],{},") that served the turn. ",[632,2966,2955],{}," is split from the model id eve reports on ",[632,2969,2970],{},"session.started",[719,2972,2973,2978],{},[734,2974,2975],{},[632,2976,2977],{},"ai.tools[].inputTokens",[734,2979,2980],{},"The input tokens a tool result added to the next model call: the delta between the step that called the tool and the step that consumed its result. Parallel results in one step share the delta evenly; left unset when the turn ended before the result was consumed, or when a compaction reset the context",[708,2982,2984],{"id":2983},"correlate-traces-with-wide-events","Correlate traces with wide events",[613,2986,2987,2988,2990],{},"A wide event and an Agent Runs span describe the same turn, but nothing joins them on its own. ",[632,2989,777],{}," stamps evlog's turn identity onto eve's AI SDK spans:",[796,2992,2994],{"className":885,"code":2993,"filename":634,"language":887,"meta":802,"style":802},"import { defineEvlogInstrumentation } from 'evlog\u002Feve'\n\nexport default defineEvlogInstrumentation()\n",[632,2995,2996,3015,3019],{"__ignoreMap":802},[806,2997,2998,3000,3002,3005,3007,3009,3011,3013],{"class":808,"line":809},[806,2999,895],{"class":894},[806,3001,899],{"class":898},[806,3003,3004],{"class":902}," defineEvlogInstrumentation",[806,3006,906],{"class":898},[806,3008,909],{"class":894},[806,3010,912],{"class":898},[806,3012,638],{"class":815},[806,3014,917],{"class":898},[806,3016,3017],{"class":808,"line":920},[806,3018,945],{"emptyLinePlaceholder":944},[806,3020,3021,3023,3025,3027],{"class":808,"line":941},[806,3022,951],{"class":894},[806,3024,954],{"class":894},[806,3026,3004],{"class":957},[806,3028,1472],{"class":902},[613,3030,3031,3032,657,3035,3038,3039,657,3042,3044],{},"Every model-call span, and its children, then carries ",[632,3033,3034],{},"evlog.request_id",[632,3036,3037],{},"evlog.session_id",", the same values the wide event reports as ",[632,3040,3041],{},"requestId",[632,3043,2721],{},". Jump from a trace in Braintrust, Datadog or Agent Runs straight to the event in your drain, and back.",[613,3046,3047,3048,3051,3052,3055],{},"Without ",[632,3049,3050],{},"setup",", OpenTelemetry export is untouched: eve keeps writing its local traces, readable with ",[632,3053,3054],{},"eve traces",". Pass one to export elsewhere:",[796,3057,3059],{"className":885,"code":3058,"filename":634,"language":887,"meta":802,"style":802},"import { defineEvlogInstrumentation } from 'evlog\u002Feve'\nimport { registerOTel } from '@vercel\u002Fotel'\n\nexport default defineEvlogInstrumentation({\n  setup: ({ agentName }) => registerOTel({ serviceName: agentName }),\n})\n",[632,3060,3061,3079,3099,3103,3115,3152],{"__ignoreMap":802},[806,3062,3063,3065,3067,3069,3071,3073,3075,3077],{"class":808,"line":809},[806,3064,895],{"class":894},[806,3066,899],{"class":898},[806,3068,3004],{"class":902},[806,3070,906],{"class":898},[806,3072,909],{"class":894},[806,3074,912],{"class":898},[806,3076,638],{"class":815},[806,3078,917],{"class":898},[806,3080,3081,3083,3085,3088,3090,3092,3094,3097],{"class":808,"line":920},[806,3082,895],{"class":894},[806,3084,899],{"class":898},[806,3086,3087],{"class":902}," registerOTel",[806,3089,906],{"class":898},[806,3091,909],{"class":894},[806,3093,912],{"class":898},[806,3095,3096],{"class":815},"@vercel\u002Fotel",[806,3098,917],{"class":898},[806,3100,3101],{"class":808,"line":941},[806,3102,945],{"emptyLinePlaceholder":944},[806,3104,3105,3107,3109,3111,3113],{"class":808,"line":948},[806,3106,951],{"class":894},[806,3108,954],{"class":894},[806,3110,3004],{"class":957},[806,3112,960],{"class":902},[806,3114,963],{"class":898},[806,3116,3117,3120,3122,3125,3128,3130,3132,3134,3136,3138,3141,3143,3146,3148,3150],{"class":808,"line":966},[806,3118,3119],{"class":957},"  setup",[806,3121,882],{"class":898},[806,3123,3124],{"class":898}," ({",[806,3126,3127],{"class":1028}," agentName",[806,3129,1433],{"class":898},[806,3131,1035],{"class":1034},[806,3133,3087],{"class":957},[806,3135,960],{"class":902},[806,3137,1396],{"class":898},[806,3139,3140],{"class":969}," serviceName",[806,3142,882],{"class":898},[806,3144,3145],{"class":902}," agentName ",[806,3147,1083],{"class":898},[806,3149,783],{"class":902},[806,3151,1015],{"class":898},[806,3153,3154,3156],{"class":808,"line":1002},[806,3155,1083],{"class":898},[806,3157,1086],{"class":902},[613,3159,3160,1231,3163,1231,3166,657,3169,3172,3173,1047],{},[632,3161,3162],{},"functionId",[632,3164,3165],{},"recordInputs",[632,3167,3168],{},"recordOutputs",[632,3170,3171],{},"traceChannelRequests"," pass straight through to eve's ",[632,3174,3175],{},"defineInstrumentation",[788,3177,3179],{"id":3178},"alongside-another-observability-backend","Alongside another observability backend",[613,3181,3182,3184,3185,3187,3188,3191,3192,3195],{},[632,3183,777],{}," is the shortcut for an agent whose instrumentation is evlog's alone. It owns the file, and an agent has exactly one ",[632,3186,634],{},", so every observability item in eve's registry writes that same path, which is why ",[632,3189,3190],{},"eve add instrumentation\u002Fsentry"," after ",[632,3193,3194],{},"eve add instrumentation\u002Fposthog"," refuses rather than clobbering the first.",[613,3197,3198,3199,3201,3202,3205],{},"Once another backend is in play, write the file yourself with eve's own ",[632,3200,3175],{}," and spread ",[632,3203,3204],{},"evlogRuntimeContext"," into your runtime context. evlog contributes attributes to your instrumentation instead of wrapping it:",[796,3207,3209],{"className":885,"code":3208,"filename":634,"language":887,"meta":802,"style":802},"import { BatchSpanProcessor, SimpleSpanProcessor } from '@opentelemetry\u002Fsdk-trace-base'\nimport { PostHogTraceExporter } from '@posthog\u002Fai\u002Fotel'\nimport { OTLPHttpProtoTraceExporter, registerOTel } from '@vercel\u002Fotel'\nimport { defineInstrumentation } from 'eve\u002Finstrumentation'\nimport { evlogRuntimeContext } from 'evlog\u002Feve'\n\nexport default defineInstrumentation({\n  \u002F\u002F One provider, one span processor per backend. Items that generate\n  \u002F\u002F `traceExporter` (Sentry, Datadog, Arize, Jaeger, Braintrust, Honeycomb)\n  \u002F\u002F become an entry in this array. Call registerOTel once, not once per backend.\n  setup: ({ agentName }) => registerOTel({\n    serviceName: agentName,\n    spanProcessors: [\n      new SimpleSpanProcessor(new PostHogTraceExporter({\n        projectToken: process.env.POSTHOG_PROJECT_TOKEN!,\n      })),\n      new BatchSpanProcessor(new OTLPHttpProtoTraceExporter({\n        url: process.env.SENTRY_OTLP_TRACES_ENDPOINT!,\n        headers: { 'x-sentry-auth': `sentry sentry_key=${process.env.SENTRY_PUBLIC_KEY}` },\n      })),\n    ],\n  }),\n  events: {\n    'step.started': (input) => {\n      const principalId = input.session.auth.initiator?.principalId\n        ?? input.session.auth.current?.principalId\n      return {\n        runtimeContext: {\n          ...evlogRuntimeContext(input),\n          \u002F\u002F Omitted rather than blank: an empty attribute reads as an empty id.\n          ...(principalId ? { posthog_distinct_id: principalId } : {}),\n        },\n      }\n    },\n  },\n})\n",[632,3210,3211,3236,3256,3279,3299,3318,3322,3334,3340,3345,3350,3370,3381,3390,3408,3429,3439,3455,3475,3519,3527,3534,3542,3551,3574,3605,3628,3635,3644,3659,3664,3694,3700,3706,3712,3717],{"__ignoreMap":802},[806,3212,3213,3215,3217,3220,3222,3225,3227,3229,3231,3234],{"class":808,"line":809},[806,3214,895],{"class":894},[806,3216,899],{"class":898},[806,3218,3219],{"class":902}," BatchSpanProcessor",[806,3221,1508],{"class":898},[806,3223,3224],{"class":902}," SimpleSpanProcessor",[806,3226,906],{"class":898},[806,3228,909],{"class":894},[806,3230,912],{"class":898},[806,3232,3233],{"class":815},"@opentelemetry\u002Fsdk-trace-base",[806,3235,917],{"class":898},[806,3237,3238,3240,3242,3245,3247,3249,3251,3254],{"class":808,"line":920},[806,3239,895],{"class":894},[806,3241,899],{"class":898},[806,3243,3244],{"class":902}," PostHogTraceExporter",[806,3246,906],{"class":898},[806,3248,909],{"class":894},[806,3250,912],{"class":898},[806,3252,3253],{"class":815},"@posthog\u002Fai\u002Fotel",[806,3255,917],{"class":898},[806,3257,3258,3260,3262,3265,3267,3269,3271,3273,3275,3277],{"class":808,"line":941},[806,3259,895],{"class":894},[806,3261,899],{"class":898},[806,3263,3264],{"class":902}," OTLPHttpProtoTraceExporter",[806,3266,1508],{"class":898},[806,3268,3087],{"class":902},[806,3270,906],{"class":898},[806,3272,909],{"class":894},[806,3274,912],{"class":898},[806,3276,3096],{"class":815},[806,3278,917],{"class":898},[806,3280,3281,3283,3285,3288,3290,3292,3294,3297],{"class":808,"line":948},[806,3282,895],{"class":894},[806,3284,899],{"class":898},[806,3286,3287],{"class":902}," defineInstrumentation",[806,3289,906],{"class":898},[806,3291,909],{"class":894},[806,3293,912],{"class":898},[806,3295,3296],{"class":815},"eve\u002Finstrumentation",[806,3298,917],{"class":898},[806,3300,3301,3303,3305,3308,3310,3312,3314,3316],{"class":808,"line":966},[806,3302,895],{"class":894},[806,3304,899],{"class":898},[806,3306,3307],{"class":902}," evlogRuntimeContext",[806,3309,906],{"class":898},[806,3311,909],{"class":894},[806,3313,912],{"class":898},[806,3315,638],{"class":815},[806,3317,917],{"class":898},[806,3319,3320],{"class":808,"line":1002},[806,3321,945],{"emptyLinePlaceholder":944},[806,3323,3324,3326,3328,3330,3332],{"class":808,"line":1018},[806,3325,951],{"class":894},[806,3327,954],{"class":894},[806,3329,3287],{"class":957},[806,3331,960],{"class":902},[806,3333,963],{"class":898},[806,3335,3336],{"class":808,"line":1041},[806,3337,3339],{"class":3338},"sHwdD","  \u002F\u002F One provider, one span processor per backend. Items that generate\n",[806,3341,3342],{"class":808,"line":1074},[806,3343,3344],{"class":3338},"  \u002F\u002F `traceExporter` (Sentry, Datadog, Arize, Jaeger, Braintrust, Honeycomb)\n",[806,3346,3347],{"class":808,"line":1080},[806,3348,3349],{"class":3338},"  \u002F\u002F become an entry in this array. Call registerOTel once, not once per backend.\n",[806,3351,3352,3354,3356,3358,3360,3362,3364,3366,3368],{"class":808,"line":1475},[806,3353,3119],{"class":957},[806,3355,882],{"class":898},[806,3357,3124],{"class":898},[806,3359,3127],{"class":1028},[806,3361,1433],{"class":898},[806,3363,1035],{"class":1034},[806,3365,3087],{"class":957},[806,3367,960],{"class":902},[806,3369,963],{"class":898},[806,3371,3372,3375,3377,3379],{"class":808,"line":1543},[806,3373,3374],{"class":969},"    serviceName",[806,3376,882],{"class":898},[806,3378,3127],{"class":902},[806,3380,1015],{"class":898},[806,3382,3383,3386,3388],{"class":808,"line":1552},[806,3384,3385],{"class":969},"    spanProcessors",[806,3387,882],{"class":898},[806,3389,2187],{"class":902},[806,3391,3392,3395,3397,3399,3402,3404,3406],{"class":808,"line":1557},[806,3393,3394],{"class":898},"      new",[806,3396,3224],{"class":957},[806,3398,960],{"class":902},[806,3400,3401],{"class":898},"new",[806,3403,3244],{"class":957},[806,3405,960],{"class":902},[806,3407,963],{"class":898},[806,3409,3410,3413,3415,3417,3419,3421,3423,3426],{"class":808,"line":1870},[806,3411,3412],{"class":969},"        projectToken",[806,3414,882],{"class":898},[806,3416,1061],{"class":902},[806,3418,1047],{"class":898},[806,3420,1066],{"class":902},[806,3422,1047],{"class":898},[806,3424,3425],{"class":902},"POSTHOG_PROJECT_TOKEN",[806,3427,3428],{"class":898},"!,\n",[806,3430,3431,3434,3437],{"class":808,"line":1920},[806,3432,3433],{"class":898},"      }",[806,3435,3436],{"class":902},"))",[806,3438,1015],{"class":898},[806,3440,3441,3443,3445,3447,3449,3451,3453],{"class":808,"line":1982},[806,3442,3394],{"class":898},[806,3444,3219],{"class":957},[806,3446,960],{"class":902},[806,3448,3401],{"class":898},[806,3450,3264],{"class":957},[806,3452,960],{"class":902},[806,3454,963],{"class":898},[806,3456,3457,3460,3462,3464,3466,3468,3470,3473],{"class":808,"line":2031},[806,3458,3459],{"class":969},"        url",[806,3461,882],{"class":898},[806,3463,1061],{"class":902},[806,3465,1047],{"class":898},[806,3467,1066],{"class":902},[806,3469,1047],{"class":898},[806,3471,3472],{"class":902},"SENTRY_OTLP_TRACES_ENDPOINT",[806,3474,3428],{"class":898},[806,3476,3477,3480,3482,3484,3486,3489,3491,3493,3496,3499,3502,3505,3507,3509,3511,3514,3517],{"class":808,"line":2045},[806,3478,3479],{"class":969},"        headers",[806,3481,882],{"class":898},[806,3483,899],{"class":898},[806,3485,912],{"class":898},[806,3487,3488],{"class":969},"x-sentry-auth",[806,3490,994],{"class":898},[806,3492,882],{"class":898},[806,3494,3495],{"class":898}," `",[806,3497,3498],{"class":815},"sentry sentry_key=",[806,3500,3501],{"class":898},"${",[806,3503,3504],{"class":902},"process",[806,3506,1047],{"class":898},[806,3508,1066],{"class":902},[806,3510,1047],{"class":898},[806,3512,3513],{"class":902},"SENTRY_PUBLIC_KEY",[806,3515,3516],{"class":898},"}`",[806,3518,999],{"class":898},[806,3520,3521,3523,3525],{"class":808,"line":2066},[806,3522,3433],{"class":898},[806,3524,3436],{"class":902},[806,3526,1015],{"class":898},[806,3528,3529,3532],{"class":808,"line":2087},[806,3530,3531],{"class":902},"    ]",[806,3533,1015],{"class":898},[806,3535,3536,3538,3540],{"class":808,"line":2104},[806,3537,1215],{"class":898},[806,3539,783],{"class":902},[806,3541,1015],{"class":898},[806,3543,3544,3547,3549],{"class":808,"line":2120},[806,3545,3546],{"class":969},"  events",[806,3548,882],{"class":898},[806,3550,1038],{"class":898},[806,3552,3553,3556,3559,3561,3563,3565,3568,3570,3572],{"class":808,"line":2137},[806,3554,3555],{"class":898},"    '",[806,3557,3558],{"class":969},"step.started",[806,3560,994],{"class":898},[806,3562,882],{"class":898},[806,3564,778],{"class":898},[806,3566,3567],{"class":1028},"input",[806,3569,783],{"class":898},[806,3571,1035],{"class":1034},[806,3573,1038],{"class":898},[806,3575,3576,3579,3582,3584,3587,3589,3591,3593,3595,3597,3600,3602],{"class":808,"line":2154},[806,3577,3578],{"class":1034},"      const",[806,3580,3581],{"class":902}," principalId",[806,3583,1058],{"class":898},[806,3585,3586],{"class":902}," input",[806,3588,1047],{"class":898},[806,3590,1162],{"class":902},[806,3592,1047],{"class":898},[806,3594,1167],{"class":902},[806,3596,1047],{"class":898},[806,3598,3599],{"class":902},"initiator",[806,3601,1175],{"class":898},[806,3603,3604],{"class":902},"principalId\n",[806,3606,3607,3610,3612,3614,3616,3618,3620,3622,3624,3626],{"class":808,"line":2175},[806,3608,3609],{"class":898},"        ??",[806,3611,3586],{"class":902},[806,3613,1047],{"class":898},[806,3615,1162],{"class":902},[806,3617,1047],{"class":898},[806,3619,1167],{"class":902},[806,3621,1047],{"class":898},[806,3623,1172],{"class":902},[806,3625,1175],{"class":898},[806,3627,3604],{"class":902},[806,3629,3630,3633],{"class":808,"line":2190},[806,3631,3632],{"class":894},"      return",[806,3634,1038],{"class":898},[806,3636,3637,3640,3642],{"class":808,"line":2252},[806,3638,3639],{"class":969},"        runtimeContext",[806,3641,882],{"class":898},[806,3643,1038],{"class":898},[806,3645,3646,3649,3651,3653,3655,3657],{"class":808,"line":2301},[806,3647,3648],{"class":898},"          ...",[806,3650,3204],{"class":957},[806,3652,960],{"class":969},[806,3654,3567],{"class":902},[806,3656,783],{"class":969},[806,3658,1015],{"class":898},[806,3660,3661],{"class":808,"line":2307},[806,3662,3663],{"class":3338},"          \u002F\u002F Omitted rather than blank: an empty attribute reads as an empty id.\n",[806,3665,3666,3668,3670,3672,3674,3676,3679,3681,3683,3685,3687,3690,3692],{"class":808,"line":2313},[806,3667,3648],{"class":898},[806,3669,960],{"class":969},[806,3671,2797],{"class":902},[806,3673,1191],{"class":898},[806,3675,899],{"class":898},[806,3677,3678],{"class":969}," posthog_distinct_id",[806,3680,882],{"class":898},[806,3682,3581],{"class":902},[806,3684,906],{"class":898},[806,3686,1201],{"class":898},[806,3688,3689],{"class":898}," {}",[806,3691,783],{"class":969},[806,3693,1015],{"class":898},[806,3695,3697],{"class":808,"line":3696},32,[806,3698,3699],{"class":898},"        },\n",[806,3701,3703],{"class":808,"line":3702},33,[806,3704,3705],{"class":898},"      }\n",[806,3707,3709],{"class":808,"line":3708},34,[806,3710,3711],{"class":898},"    },\n",[806,3713,3715],{"class":808,"line":3714},35,[806,3716,1077],{"class":898},[806,3718,3720,3722],{"class":808,"line":3719},36,[806,3721,1083],{"class":898},[806,3723,1086],{"class":902},[613,3725,3726,3728,3729,3732,3733,3736],{},[632,3727,3204],{}," returns ",[632,3730,3731],{},"undefined"," outside a tracked turn, and spreading that adds nothing. PostHog is the only registry item that also uses ",[632,3734,3735],{},"events","; the rest only need their span processor. Keep each generated file open while you merge: the env vars and exporter options are the parts worth copying exactly.",[613,3738,3739,3740,3743,3744,3746],{},"Spans and wide events stay joined by attribute, not by trace id: an agent turn has no inbound ",[632,3741,3742],{},"traceparent"," to inherit, so ",[632,3745,3034],{}," is what carries across.",[645,3748,3751,3757,3758,2779,3761,3764,3765,3768,3769,3772,3773,3776,3777,3779],{"color":3749,"icon":3750},"warning","i-lucide-triangle-alert",[623,3752,3753,3754,1047],{},"PostHog drops ",[632,3755,3756],{},"evlog.*"," Its exporter forwards the whole span, but the server-side conversion into ",[632,3759,3760],{},"$ai_generation",[632,3762,3763],{},"$ai_span"," events keeps only attributes prefixed ",[632,3766,3767],{},"posthog_",", and strips that prefix. To join on PostHog, repeat the ids under names that survive, since ",[632,3770,3771],{},"posthog_evlog_request_id"," arrives as ",[632,3774,3775],{},"evlog_request_id",". Other OTLP backends receive ",[632,3778,3756],{}," unchanged.",[613,3781,3782,3783,3786],{},"eve applies the runtime context to the step span only, so the generation spans beneath it inherit nothing. On PostHog that means cost lands on events with no identity and no environment. A span processor that copies the turn's ",[632,3784,3785],{},"posthog_*"," attributes onto every child span is what closes the gap.",[613,3788,3789],{},"To close the loop the other way, send the agent's own wide events to PostHog Logs and point the drain at the same principal:",[796,3791,3793],{"className":885,"code":3792,"filename":881,"language":887,"meta":802,"style":802},"import { createPostHogDrain } from 'evlog\u002Fposthog'\nimport { defineEvlogHook } from 'evlog\u002Feve'\n\nexport default defineEvlogHook({\n  drain: createPostHogDrain({ distinctIdField: 'eve.caller.principalId' }),\n})\n",[632,3794,3795,3815,3833,3837,3849,3879],{"__ignoreMap":802},[806,3796,3797,3799,3801,3804,3806,3808,3810,3813],{"class":808,"line":809},[806,3798,895],{"class":894},[806,3800,899],{"class":898},[806,3802,3803],{"class":902}," createPostHogDrain",[806,3805,906],{"class":898},[806,3807,909],{"class":894},[806,3809,912],{"class":898},[806,3811,3812],{"class":815},"evlog\u002Fposthog",[806,3814,917],{"class":898},[806,3816,3817,3819,3821,3823,3825,3827,3829,3831],{"class":808,"line":920},[806,3818,895],{"class":894},[806,3820,899],{"class":898},[806,3822,903],{"class":902},[806,3824,906],{"class":898},[806,3826,909],{"class":894},[806,3828,912],{"class":898},[806,3830,638],{"class":815},[806,3832,917],{"class":898},[806,3834,3835],{"class":808,"line":941},[806,3836,945],{"emptyLinePlaceholder":944},[806,3838,3839,3841,3843,3845,3847],{"class":808,"line":948},[806,3840,951],{"class":894},[806,3842,954],{"class":894},[806,3844,903],{"class":957},[806,3846,960],{"class":902},[806,3848,963],{"class":898},[806,3850,3851,3853,3855,3857,3859,3861,3864,3866,3868,3871,3873,3875,3877],{"class":808,"line":966},[806,3852,1005],{"class":969},[806,3854,882],{"class":898},[806,3856,3803],{"class":957},[806,3858,960],{"class":902},[806,3860,1396],{"class":898},[806,3862,3863],{"class":969}," distinctIdField",[806,3865,882],{"class":898},[806,3867,912],{"class":898},[806,3869,3870],{"class":815},"eve.caller.principalId",[806,3872,994],{"class":898},[806,3874,906],{"class":898},[806,3876,783],{"class":902},[806,3878,1015],{"class":898},[806,3880,3881,3883],{"class":808,"line":1002},[806,3882,1083],{"class":898},[806,3884,1086],{"class":902},[613,3886,3887,3888,1047],{},"Turns then land on the same PostHog person as the LLM traces they produced. See the ",[616,3889,3891],{"href":3890},"\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog#link-a-log-to-a-person-and-a-session-replay","PostHog adapter",[708,3893,3895],{"id":3894},"production","Production",[613,3897,3898],{},"Long-running eve agents should disable terminal pretty-printing and use a non-blocking drain:",[796,3900,3902],{"className":885,"code":3901,"filename":881,"language":887,"meta":802,"style":802},"import { defineEvlogHook } from 'evlog\u002Feve'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\n\nconst drain = createDrainPipeline({ batch: { size: 50, intervalMs: 5000 } })(\n  createAxiomDrain(),\n)\n\nexport default defineEvlogHook({\n  init: {\n    env: { service: 'my-agent', environment: 'production' },\n    pretty: false,\n    sampling: { rates: { info: 10 } },\n  },\n  drain,\n  maxSessions: 256,\n})\n",[632,3903,3904,3922,3940,3960,3964,4013,4022,4026,4030,4042,4050,4084,4097,4125,4129,4135,4147],{"__ignoreMap":802},[806,3905,3906,3908,3910,3912,3914,3916,3918,3920],{"class":808,"line":809},[806,3907,895],{"class":894},[806,3909,899],{"class":898},[806,3911,903],{"class":902},[806,3913,906],{"class":898},[806,3915,909],{"class":894},[806,3917,912],{"class":898},[806,3919,638],{"class":815},[806,3921,917],{"class":898},[806,3923,3924,3926,3928,3930,3932,3934,3936,3938],{"class":808,"line":920},[806,3925,895],{"class":894},[806,3927,899],{"class":898},[806,3929,927],{"class":902},[806,3931,906],{"class":898},[806,3933,909],{"class":894},[806,3935,912],{"class":898},[806,3937,936],{"class":815},[806,3939,917],{"class":898},[806,3941,3942,3944,3946,3949,3951,3953,3955,3958],{"class":808,"line":941},[806,3943,895],{"class":894},[806,3945,899],{"class":898},[806,3947,3948],{"class":902}," createDrainPipeline",[806,3950,906],{"class":898},[806,3952,909],{"class":894},[806,3954,912],{"class":898},[806,3956,3957],{"class":815},"evlog\u002Fpipeline",[806,3959,917],{"class":898},[806,3961,3962],{"class":808,"line":948},[806,3963,945],{"emptyLinePlaceholder":944},[806,3965,3966,3969,3972,3975,3977,3979,3981,3984,3986,3988,3991,3993,3996,3998,4001,4003,4006,4008,4010],{"class":808,"line":966},[806,3967,3968],{"class":1034},"const",[806,3970,3971],{"class":902}," drain ",[806,3973,3974],{"class":898},"=",[806,3976,3948],{"class":957},[806,3978,960],{"class":902},[806,3980,1396],{"class":898},[806,3982,3983],{"class":969}," batch",[806,3985,882],{"class":898},[806,3987,899],{"class":898},[806,3989,3990],{"class":969}," size",[806,3992,882],{"class":898},[806,3994,3995],{"class":1701}," 50",[806,3997,1508],{"class":898},[806,3999,4000],{"class":969}," intervalMs",[806,4002,882],{"class":898},[806,4004,4005],{"class":1701}," 5000",[806,4007,906],{"class":898},[806,4009,906],{"class":898},[806,4011,4012],{"class":902},")(\n",[806,4014,4015,4018,4020],{"class":808,"line":1002},[806,4016,4017],{"class":957},"  createAxiomDrain",[806,4019,1012],{"class":902},[806,4021,1015],{"class":898},[806,4023,4024],{"class":808,"line":1018},[806,4025,1086],{"class":902},[806,4027,4028],{"class":808,"line":1041},[806,4029,945],{"emptyLinePlaceholder":944},[806,4031,4032,4034,4036,4038,4040],{"class":808,"line":1074},[806,4033,951],{"class":894},[806,4035,954],{"class":894},[806,4037,903],{"class":957},[806,4039,960],{"class":902},[806,4041,963],{"class":898},[806,4043,4044,4046,4048],{"class":808,"line":1080},[806,4045,970],{"class":969},[806,4047,882],{"class":898},[806,4049,1038],{"class":898},[806,4051,4052,4055,4057,4059,4061,4063,4065,4067,4069,4071,4074,4076,4078,4080,4082],{"class":808,"line":1475},[806,4053,4054],{"class":969},"    env",[806,4056,882],{"class":898},[806,4058,899],{"class":898},[806,4060,984],{"class":969},[806,4062,882],{"class":898},[806,4064,912],{"class":898},[806,4066,991],{"class":815},[806,4068,994],{"class":898},[806,4070,1508],{"class":898},[806,4072,4073],{"class":969}," environment",[806,4075,882],{"class":898},[806,4077,912],{"class":898},[806,4079,3894],{"class":815},[806,4081,994],{"class":898},[806,4083,999],{"class":898},[806,4085,4086,4089,4091,4095],{"class":808,"line":1543},[806,4087,4088],{"class":969},"    pretty",[806,4090,882],{"class":898},[806,4092,4094],{"class":4093},"sfNiH"," false",[806,4096,1015],{"class":898},[806,4098,4099,4102,4104,4106,4109,4111,4113,4116,4118,4121,4123],{"class":808,"line":1552},[806,4100,4101],{"class":969},"    sampling",[806,4103,882],{"class":898},[806,4105,899],{"class":898},[806,4107,4108],{"class":969}," rates",[806,4110,882],{"class":898},[806,4112,899],{"class":898},[806,4114,4115],{"class":969}," info",[806,4117,882],{"class":898},[806,4119,4120],{"class":1701}," 10",[806,4122,906],{"class":898},[806,4124,999],{"class":898},[806,4126,4127],{"class":808,"line":1557},[806,4128,1077],{"class":898},[806,4130,4131,4133],{"class":808,"line":1870},[806,4132,1005],{"class":902},[806,4134,1015],{"class":898},[806,4136,4137,4140,4142,4145],{"class":808,"line":1920},[806,4138,4139],{"class":969},"  maxSessions",[806,4141,882],{"class":898},[806,4143,4144],{"class":1701}," 256",[806,4146,1015],{"class":898},[806,4148,4149,4151],{"class":808,"line":1982},[806,4150,1083],{"class":898},[806,4152,1086],{"class":902},[713,4154,4155,4165],{},[716,4156,4157],{},[719,4158,4159,4162],{},[722,4160,4161],{},"Concern",[722,4163,4164],{},"Recommendation",[729,4166,4167,4178,4186,4197,4211],{},[719,4168,4169,4172],{},[734,4170,4171],{},"Terminal output",[734,4173,4174,4177],{},[632,4175,4176],{},"init.pretty: false",", since pretty-print is for local dev only",[719,4179,4180,4183],{},[734,4181,4182],{},"Drain latency",[734,4184,4185],{},"Batch or async HTTP drains; never block the turn on I\u002FO",[719,4187,4188,4191],{},[734,4189,4190],{},"Head sampling",[734,4192,4193,4196],{},[632,4194,4195],{},"init.sampling.rates",", since eve emits one event per turn, not per token",[719,4198,4199,4201],{},[734,4200,231],{},[734,4202,4203,4206,4207,4210],{},[632,4204,4205],{},"maxSessions"," (default ",[632,4208,4209],{},"256",") evicts oldest idle session state",[719,4212,4213,4216],{},[734,4214,4215],{},"Load",[734,4217,4218],{},"Hook handlers are O(1) per stream event; cost is dominated by your drain",[708,4220,351],{"id":4221},"options",[713,4223,4224,4234],{},[716,4225,4226],{},[719,4227,4228,4231],{},[722,4229,4230],{},"Option",[722,4232,4233],{},"Description",[729,4235,4236,4249,4269,4282,4302,4318,4331,4344,4365,4376],{},[719,4237,4238,4242],{},[734,4239,4240],{},[632,4241,94],{},[734,4243,4244,4245,4248],{},"Passed to ",[632,4246,4247],{},"initLogger()"," on first hook invocation",[719,4250,4251,4264],{},[734,4252,4253,2779,4256,2779,4258,2779,4261],{},[632,4254,4255],{},"drain",[632,4257,1102],{},[632,4259,4260],{},"keep",[632,4262,4263],{},"plugins",[734,4265,4266,4267,783],{},"Same as HTTP integrations (",[616,4268,4263],{"href":518},[719,4270,4271,4275],{},[734,4272,4273],{},[632,4274,1110],{},[734,4276,4277,4278,4281],{},"Turn-scoped enrichment with the eve session in scope (",[632,4279,4280],{},"ctx.session.auth","); runs once per turn, returned fields merge onto the turn event",[719,4283,4284,4288],{},[734,4285,4286],{},[632,4287,2927],{},[734,4289,4290,4293,4294,4297,4298,4301],{},[632,4291,4292],{},"'omit'"," (default), ",[632,4295,4296],{},"'preview'"," or ",[632,4299,4300],{},"'full'"," (how much of the user message and the agent response to record)",[719,4303,4304,4309],{},[734,4305,4306],{},[632,4307,4308],{},"messagePreviewLength",[734,4310,4311,4312,4314,4315,783],{},"Characters kept in ",[632,4313,4296],{}," mode (default ",[632,4316,4317],{},"500",[719,4319,4320,4325],{},[734,4321,4322],{},[632,4323,4324],{},"sessionEvent",[734,4326,4327,4330],{},[632,4328,4329],{},"true"," emits one extra event per session, rolling up its turns",[719,4332,4333,4338],{},[734,4334,4335],{},[632,4336,4337],{},"subagentEvents",[734,4339,4340,4343],{},[632,4341,4342],{},"false"," skips subagent lifecycle subscriptions when their event source has no hook session context",[719,4345,4346,4352],{},[734,4347,4348,2779,4350],{},[632,4349,2945],{},[632,4351,2050],{},[734,4353,4354,4355,1600,4358,4361,4362,4364],{},"Fallback token pricing (",[632,4356,4357],{},"ModelCost",[632,4359,4360],{},"evlog\u002Fai",") → ",[632,4363,2941],{},", used only when eve reports no cost",[719,4366,4367,4371],{},[734,4368,4369],{},[632,4370,4205],{},[734,4372,4373,4374,783],{},"In-memory session cap for context carry-over (default ",[632,4375,4209],{},[719,4377,4378,4386],{},[734,4379,4380,2779,4383],{},[632,4381,4382],{},"include",[632,4384,4385],{},"exclude",[734,4387,4388,4389,783],{},"Route-style filters on turn paths (",[632,4390,4391],{},"\u002Fsessions\u002F*\u002Fturns\u002F*",[708,4393,525],{"id":4394},"tail-sampling",[613,4396,4397,4398,4400],{},"Use ",[632,4399,4260],{}," to force-keep turns with failed tools or high token usage:",[796,4402,4404],{"className":885,"code":4403,"filename":881,"language":887,"meta":802,"style":802},"export default defineEvlogHook({\n  drain: createAxiomDrain(),\n  keep: (ctx) => {\n    const ai = ctx.context.ai as {\n      inputTokens?: number\n      outputTokens?: number\n      tools?: Array\u003C{ success: boolean }>\n    } | undefined\n    const totalTokens = (ai?.inputTokens ?? 0) + (ai?.outputTokens ?? 0)\n    if (totalTokens > 10_000) ctx.shouldKeep = true\n    if (ai?.tools?.some(t => !t.success)) ctx.shouldKeep = true\n  },\n})\n",[632,4405,4406,4418,4430,4447,4472,4483,4492,4516,4527,4569,4599,4645,4649],{"__ignoreMap":802},[806,4407,4408,4410,4412,4414,4416],{"class":808,"line":809},[806,4409,951],{"class":894},[806,4411,954],{"class":894},[806,4413,903],{"class":957},[806,4415,960],{"class":902},[806,4417,963],{"class":898},[806,4419,4420,4422,4424,4426,4428],{"class":808,"line":920},[806,4421,1005],{"class":969},[806,4423,882],{"class":898},[806,4425,927],{"class":957},[806,4427,1012],{"class":902},[806,4429,1015],{"class":898},[806,4431,4432,4435,4437,4439,4441,4443,4445],{"class":808,"line":941},[806,4433,4434],{"class":957},"  keep",[806,4436,882],{"class":898},[806,4438,778],{"class":898},[806,4440,1029],{"class":1028},[806,4442,783],{"class":898},[806,4444,1035],{"class":1034},[806,4446,1038],{"class":898},[806,4448,4449,4451,4454,4456,4458,4460,4463,4465,4467,4470],{"class":808,"line":948},[806,4450,1440],{"class":1034},[806,4452,4453],{"class":902}," ai",[806,4455,1058],{"class":898},[806,4457,1157],{"class":902},[806,4459,1047],{"class":898},[806,4461,4462],{"class":902},"context",[806,4464,1047],{"class":898},[806,4466,2036],{"class":902},[806,4468,4469],{"class":894}," as",[806,4471,1038],{"class":898},[806,4473,4474,4477,4480],{"class":808,"line":966},[806,4475,4476],{"class":969},"      inputTokens",[806,4478,4479],{"class":898},"?:",[806,4481,4482],{"class":812}," number\n",[806,4484,4485,4488,4490],{"class":808,"line":1002},[806,4486,4487],{"class":969},"      outputTokens",[806,4489,4479],{"class":898},[806,4491,4482],{"class":812},[806,4493,4494,4497,4499,4502,4505,4508,4510,4513],{"class":808,"line":1018},[806,4495,4496],{"class":969},"      tools",[806,4498,4479],{"class":898},[806,4500,4501],{"class":812}," Array",[806,4503,4504],{"class":898},"\u003C{",[806,4506,4507],{"class":969}," success",[806,4509,882],{"class":898},[806,4511,4512],{"class":812}," boolean",[806,4514,4515],{"class":898}," }>\n",[806,4517,4518,4521,4524],{"class":808,"line":1041},[806,4519,4520],{"class":898},"    }",[806,4522,4523],{"class":898}," |",[806,4525,4526],{"class":812}," undefined\n",[806,4528,4529,4531,4534,4536,4538,4540,4542,4544,4547,4549,4552,4555,4557,4559,4561,4563,4565,4567],{"class":808,"line":1074},[806,4530,1440],{"class":1034},[806,4532,4533],{"class":902}," totalTokens",[806,4535,1058],{"class":898},[806,4537,778],{"class":969},[806,4539,2036],{"class":902},[806,4541,1175],{"class":898},[806,4543,2125],{"class":902},[806,4545,4546],{"class":898}," ??",[806,4548,1827],{"class":1701},[806,4550,4551],{"class":969},") ",[806,4553,4554],{"class":898},"+",[806,4556,778],{"class":969},[806,4558,2036],{"class":902},[806,4560,1175],{"class":898},[806,4562,2142],{"class":902},[806,4564,4546],{"class":898},[806,4566,1827],{"class":1701},[806,4568,1086],{"class":969},[806,4570,4571,4574,4576,4579,4582,4585,4587,4589,4591,4594,4596],{"class":808,"line":1080},[806,4572,4573],{"class":894},"    if",[806,4575,778],{"class":969},[806,4577,4578],{"class":902},"totalTokens",[806,4580,4581],{"class":898}," >",[806,4583,4584],{"class":1701}," 10_000",[806,4586,4551],{"class":969},[806,4588,1029],{"class":902},[806,4590,1047],{"class":898},[806,4592,4593],{"class":902},"shouldKeep",[806,4595,1058],{"class":898},[806,4597,4598],{"class":4093}," true\n",[806,4600,4601,4603,4605,4607,4609,4611,4613,4616,4618,4621,4623,4626,4628,4630,4632,4635,4637,4639,4641,4643],{"class":808,"line":1475},[806,4602,4573],{"class":894},[806,4604,778],{"class":969},[806,4606,2036],{"class":902},[806,4608,1175],{"class":898},[806,4610,2180],{"class":902},[806,4612,1175],{"class":898},[806,4614,4615],{"class":957},"some",[806,4617,960],{"class":969},[806,4619,4620],{"class":1028},"t",[806,4622,1035],{"class":1034},[806,4624,4625],{"class":898}," !",[806,4627,4620],{"class":902},[806,4629,1047],{"class":898},[806,4631,2229],{"class":902},[806,4633,4634],{"class":969},")) ",[806,4636,1029],{"class":902},[806,4638,1047],{"class":898},[806,4640,4593],{"class":902},[806,4642,1058],{"class":898},[806,4644,4598],{"class":4093},[806,4646,4647],{"class":808,"line":1543},[806,4648,1077],{"class":898},[806,4650,4651,4653],{"class":808,"line":1552},[806,4652,1083],{"class":898},[806,4654,1086],{"class":902},[708,4656,4658],{"id":4657},"audit-logs","Audit logs",[613,4660,4661,4662,4664,4665,4668,4669,4672,4673,4676,4677,1596,4679,1047],{},"Combine with ",[616,4663,392],{"href":398},": register ",[632,4666,4667],{},"auditEnricher()"," via ",[632,4670,4671],{},"init.plugins"," or a global plugin, and call ",[632,4674,4675],{},"log.audit()"," inside tools when a human approval gate fires. Tool rejections surface on ",[632,4678,2714],{},[632,4680,4681],{},"status: \"rejected\"",[708,4683,4685],{"id":4684},"run-locally","Run locally",[796,4687,4689],{"className":798,"code":4688,"language":801,"meta":802,"style":802},"git clone https:\u002F\u002Fgithub.com\u002Fevloghq\u002Fevlog\ncd evlog\npnpm install\npnpm example eve\n",[632,4690,4691,4702,4710,4717],{"__ignoreMap":802},[806,4692,4693,4696,4699],{"class":808,"line":809},[806,4694,4695],{"class":812},"git",[806,4697,4698],{"class":815}," clone",[806,4700,4701],{"class":815}," https:\u002F\u002Fgithub.com\u002Fevloghq\u002Fevlog\n",[806,4703,4704,4707],{"class":808,"line":920},[806,4705,4706],{"class":957},"cd",[806,4708,4709],{"class":815}," evlog\n",[806,4711,4712,4714],{"class":808,"line":941},[806,4713,800],{"class":812},[806,4715,4716],{"class":815}," install\n",[806,4718,4719,4721,4724],{"class":808,"line":948},[806,4720,800],{"class":812},[806,4722,4723],{"class":815}," example",[806,4725,822],{"class":815},[613,4727,4728,4729,4732,4733,4736,4737,4740,4741,4747],{},"The ",[632,4730,4731],{},"examples\u002Feve"," project is a ",[623,4734,4735],{},"support refund copilot"," (Clearbill SaaS): lookup customer → lookup order → issue refund, with eve approvals when amount > $100. Run ",[632,4738,4739],{},"pnpm example eve",", open ",[623,4742,4743],{},[616,4744,4745],{"href":4745,"rel":4746},"http:\u002F\u002Flocalhost:3000",[620],", and click a starter prompt.",[708,4749,4751],{"id":4750},"what-to-read-next","What to read next",[671,4753,4754,4762,4770,4776],{},[674,4755,4756,4761],{},[616,4757,4760],{"href":4758,"rel":4759},"https:\u002F\u002Feve.dev\u002Fdocs\u002Fguides\u002Fhooks",[620],"eve hooks guide",": stream event vocabulary",[674,4763,4764,4769],{},[616,4765,4768],{"href":4766,"rel":4767},"https:\u002F\u002Feve.dev\u002Fdocs\u002Fguides\u002Finstrumentation",[620],"eve instrumentation",": OTel spans (complementary)",[674,4771,4772,4775],{},[616,4773,4774],{"href":343},"AI SDK use case",": when you own the model loop directly",[674,4777,4778,4781],{},[616,4779,4780],{"href":158},"Adapters overview",": drain destinations",[4783,4784,4785],"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 .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 .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 .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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":802,"searchDepth":920,"depth":920,"links":4787},[4788,4789,4795,4798,4801,4802,4803,4804,4805,4806],{"id":710,"depth":920,"text":711},{"id":786,"depth":920,"text":25,"children":4790},[4791,4792,4793,4794],{"id":790,"depth":941,"text":791},{"id":874,"depth":941,"text":875},{"id":1244,"depth":941,"text":1245},{"id":1588,"depth":941,"text":1589},{"id":1629,"depth":920,"text":1630,"children":4796},[4797],{"id":2747,"depth":941,"text":2748},{"id":2983,"depth":920,"text":2984,"children":4799},[4800],{"id":3178,"depth":941,"text":3179},{"id":3894,"depth":920,"text":3895},{"id":4221,"depth":920,"text":351},{"id":4394,"depth":920,"text":525},{"id":4657,"depth":920,"text":4658},{"id":4684,"depth":920,"text":4685},{"id":4750,"depth":920,"text":4751},"One evlog wide event per eve agent turn: token usage, tool executions, and business context, through your own drains and tail sampling.","md",[4810],{"label":4811,"icon":4812,"to":1277,"color":1564,"variant":4813},"Source Code","i-simple-icons-github","subtle",{},{"title":450,"icon":453},{"title":450,"description":4807},"TW4YISYtbmdiAnYN_KySMeeRr3ecw_H0RWlDL-ea1Zk",[4819,4821],{"title":445,"path":446,"stem":447,"description":4820,"icon":448,"children":-1},"Add derived context to every wide event, from user agent and geo to your own computed fields.",{"title":455,"path":456,"stem":457,"description":4822,"icon":439,"children":-1},"Build a Node.js HTTP handler with structured request logs, explicit outcomes, error context, and a JSON event you can query.",1791240206795]