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