[{"data":1,"prerenderedAt":2448},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-eve":444,"-use-cases-eve-surround":2443},[4,30,80,245,358,413],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Start","\u002Fstart","1.start",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":25,"path":26,"stem":27,"icon":28},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Learn","\u002Flearn","2.learn",[35,40,45,50,55,60,65,70,75],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":46,"path":47,"stem":48,"icon":49},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":51,"path":52,"stem":53,"icon":54},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":56,"path":57,"stem":58,"icon":59},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":61,"path":62,"stem":63,"icon":64},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":66,"path":67,"stem":68,"icon":69},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":71,"path":72,"stem":73,"icon":74},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":76,"path":77,"stem":78,"icon":79},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":81,"path":82,"stem":83,"children":84,"page":29},"Integrate","\u002Fintegrate","3.integrate",[85,89,157],{"title":36,"path":86,"stem":87,"icon":88},"\u002Fintegrate\u002Foverview","3.integrate\u002F0.overview","i-lucide-plug",{"title":90,"path":91,"stem":92,"children":93,"page":29},"Adapters","\u002Fintegrate\u002Fadapters","3.integrate\u002Fadapters",[94,97,137],{"title":36,"path":95,"stem":96,"icon":39},"\u002Fintegrate\u002Fadapters\u002Foverview","3.integrate\u002Fadapters\u002F01.overview",{"title":98,"path":99,"stem":100,"children":101,"page":29},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","3.integrate\u002Fadapters\u002Fcloud",[102,107,112,117,122,127,132],{"title":103,"path":104,"stem":105,"icon":106},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","3.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":108,"path":109,"stem":110,"icon":111},"OTLP","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fotlp","3.integrate\u002Fadapters\u002Fcloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":113,"path":114,"stem":115,"icon":116},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","3.integrate\u002Fadapters\u002Fcloud\u002F03.posthog","i-simple-icons-posthog",{"title":118,"path":119,"stem":120,"icon":121},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","3.integrate\u002Fadapters\u002Fcloud\u002F04.sentry","i-simple-icons-sentry",{"title":123,"path":124,"stem":125,"icon":126},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","3.integrate\u002Fadapters\u002Fcloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":128,"path":129,"stem":130,"icon":131},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","3.integrate\u002Fadapters\u002Fcloud\u002F06.datadog","i-simple-icons-datadog",{"title":133,"path":134,"stem":135,"icon":136},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fhyperdx","3.integrate\u002Fadapters\u002Fcloud\u002F07.hyperdx","i-custom-hyperdx",{"title":138,"path":139,"stem":140,"children":141,"page":29},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","3.integrate\u002Fadapters\u002Fself-hosted",[142,147,152],{"title":143,"path":144,"stem":145,"icon":146},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","3.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":148,"path":149,"stem":150,"icon":151},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","3.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":153,"path":154,"stem":155,"icon":156},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","3.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":158,"path":159,"stem":160,"children":161,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","3.integrate\u002Fframeworks",[162,166,171,176,181,186,191,196,201,206,211,216,221,226,230,235,240],{"title":36,"path":163,"stem":164,"icon":165},"\u002Fintegrate\u002Fframeworks\u002Foverview","3.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":167,"path":168,"stem":169,"icon":170},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","3.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":172,"path":173,"stem":174,"icon":175},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","3.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":177,"path":178,"stem":179,"icon":180},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","3.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":182,"path":183,"stem":184,"icon":185},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","3.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":187,"path":188,"stem":189,"icon":190},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","3.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":192,"path":193,"stem":194,"icon":195},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","3.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":197,"path":198,"stem":199,"icon":200},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","3.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":202,"path":203,"stem":204,"icon":205},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","3.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":207,"path":208,"stem":209,"icon":210},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","3.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":212,"path":213,"stem":214,"icon":215},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","3.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":217,"path":218,"stem":219,"icon":220},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","3.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":222,"path":223,"stem":224,"icon":225},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","3.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":227,"path":228,"stem":229,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","3.integrate\u002Fframeworks\u002F13.standalone",{"title":231,"path":232,"stem":233,"icon":234},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","3.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":236,"path":237,"stem":238,"icon":239},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","3.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":241,"path":242,"stem":243,"icon":244},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","3.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":246,"path":247,"stem":248,"children":249,"page":29},"Use Cases","\u002Fuse-cases","4.use-cases",[250,254,259,288,316,348,353],{"title":36,"path":251,"stem":252,"icon":253},"\u002Fuse-cases\u002Foverview","4.use-cases\u002F0.overview","i-lucide-list-checks",{"title":255,"path":256,"stem":257,"icon":258},"Client Logging","\u002Fuse-cases\u002Fclient-logging","4.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":260,"icon":261,"path":262,"stem":263,"children":264,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","4.use-cases\u002F2.ai-sdk",[265,268,273,278,283],{"title":36,"path":266,"stem":267,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","4.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":269,"path":270,"stem":271,"icon":272},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","4.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":274,"path":275,"stem":276,"icon":277},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","4.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":279,"path":280,"stem":281,"icon":282},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","4.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":284,"path":285,"stem":286,"icon":287},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","4.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":289,"icon":290,"path":291,"stem":292,"children":293,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","4.use-cases\u002F3.better-auth",[294,297,302,307,311],{"title":36,"path":295,"stem":296,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","4.use-cases\u002F3.better-auth\u002F01.overview",{"title":298,"path":299,"stem":300,"icon":301},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","4.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":303,"path":304,"stem":305,"icon":306},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","4.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":308,"path":309,"stem":310,"icon":258},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","4.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":312,"path":313,"stem":314,"icon":315},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","4.use-cases\u002F3.better-auth\u002F05.performance","i-lucide-gauge",{"title":317,"icon":318,"path":319,"stem":320,"children":321,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","4.use-cases\u002F4.audit",[322,325,330,335,340,344],{"title":36,"path":323,"stem":324,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","4.use-cases\u002F4.audit\u002F01.overview",{"title":326,"path":327,"stem":328,"icon":329},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","4.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":331,"path":332,"stem":333,"icon":334},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","4.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":336,"path":337,"stem":338,"icon":339},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","4.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":341,"path":342,"stem":343,"icon":318},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","4.use-cases\u002F4.audit\u002F05.compliance",{"title":345,"path":346,"stem":347,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","4.use-cases\u002F4.audit\u002F06.recipes",{"title":349,"path":350,"stem":351,"icon":352},"Enrichers","\u002Fuse-cases\u002Fenrichers","4.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":354,"path":355,"stem":356,"icon":357},"eve","\u002Fuse-cases\u002Feve","4.use-cases\u002F5.eve","i-custom-eve",{"title":359,"path":360,"stem":361,"children":362,"page":29},"Extend","\u002Fextend","5.extend",[363,367,372,377,382,386,390,394,398,403,408],{"title":36,"path":364,"stem":365,"icon":366},"\u002Fextend\u002Foverview","5.extend\u002F0.overview","i-lucide-blocks",{"title":368,"path":369,"stem":370,"icon":371},"Stream","\u002Fextend\u002Fstream","5.extend\u002F1.stream","i-lucide-radio-tower",{"title":373,"path":374,"stem":375,"icon":376},"Custom framework","\u002Fextend\u002Fcustom-framework","5.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":378,"path":379,"stem":380,"icon":381},"FS reader","\u002Fextend\u002Ffs-reader","5.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":345,"path":383,"stem":384,"icon":385},"\u002Fextend\u002Fconsumer-recipes","5.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":387,"path":388,"stem":389,"icon":366},"Plugins","\u002Fextend\u002Fplugins","5.extend\u002F4.plugins",{"title":391,"path":392,"stem":393,"icon":352},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","5.extend\u002F5.custom-enrichers",{"title":395,"path":396,"stem":397,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","5.extend\u002F6.tail-sampling",{"title":399,"path":400,"stem":401,"icon":402},"Identity headers","\u002Fextend\u002Fidentity-headers","5.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":404,"path":405,"stem":406,"icon":407},"Custom drains","\u002Fextend\u002Fcustom-drains","5.extend\u002F8.custom-drains","i-lucide-share-2",{"title":409,"path":410,"stem":411,"icon":412},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","5.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":414,"path":415,"stem":416,"children":417,"page":29},"Reference","\u002Freference","6.reference",[418,423,426,431,435,440],{"title":419,"path":420,"stem":421,"icon":422},"Configuration","\u002Freference\u002Fconfiguration","6.reference\u002F1.configuration","i-lucide-settings",{"title":312,"path":424,"stem":425,"icon":315},"\u002Freference\u002Fperformance","6.reference\u002F2.performance",{"title":427,"path":428,"stem":429,"icon":430},"Vite Plugin","\u002Freference\u002Fvite-plugin","6.reference\u002F3.vite-plugin","i-custom-vite",{"title":432,"path":433,"stem":434,"icon":318},"Best Practices","\u002Freference\u002Fbest-practices","6.reference\u002F4.best-practices",{"title":436,"path":437,"stem":438,"icon":439},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","6.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":441,"path":442,"stem":443,"icon":352},"Agent Skills","\u002Freference\u002Fagent-skills","6.reference\u002F6.agent-skills",{"id":445,"title":354,"body":446,"description":2431,"extension":2432,"links":2433,"meta":2439,"navigation":2440,"path":355,"seo":2441,"stem":356,"__hash__":2442},"docs\u002F4.use-cases\u002F5.eve.md",{"type":447,"value":448,"toc":2416},"minimark",[449,481,493,535,540,594,597,602,682,686,693,899,910,914,923,1212,1216,1253,1257,1260,1964,1978,1981,2061,2064,2070,2284,2288,2311,2315,2356,2378,2382,2412],[450,451,452,458,459,463,464,467,468,472,473,476,477,480],"p",{},[453,454,354],"a",{"href":455,"rel":456},"https:\u002F\u002Feve.dev\u002Fdocs\u002Fintroduction",[457],"nofollow"," ships built-in observability: ",[460,461,462],"strong",{},"Agent Runs"," on Vercel and optional ",[460,465,466],{},"OpenTelemetry"," spans via ",[469,470,471],"code",{},"agent\u002Finstrumentation.ts",". ",[469,474,475],{},"evlog\u002Feve"," adds a third layer — ",[460,478,479],{},"exportable wide events"," per turn with your full evlog pipeline (drains, enrichers, tail sampling, audit).",[482,483,485,486,488,489,492],"callout",{"color":484,"icon":13},"info","eve is currently in beta; hook and stream event shapes may change before GA. Pin ",[469,487,354],{}," and ",[469,490,491],{},"evlog"," versions in production agents.",[494,495,498,501,523],"prompt",{":actions":496,"description":497,"icon":357},"[\"copy\",\"cursor\",\"windsurf\"]","Add evlog wide events to my eve agent",[450,499,500],{},"Add evlog wide events to my eve agent.",[502,503,504,508,511,514,517,520],"ul",{},[505,506,507],"li",{},"Install evlog: pnpm add evlog",[505,509,510],{},"Create agent\u002Fhooks\u002Fevlog.ts with defineEvlogHook from 'evlog\u002Feve'",[505,512,513],{},"Pass drain, enrich, and keep options (same as HTTP middleware integrations)",[505,515,516],{},"In tools, import useTurnLogger from 'evlog\u002Feve' and call useTurnLogger(ctx) inside execute()",[505,518,519],{},"User message content is redacted by default (redactMessage: true); set false only after reviewing PII policy",[505,521,522],{},"Keep eve Agent Runs \u002F OTel instrumentation — evlog\u002Feve is additive",[450,524,525,526,530,531],{},"Docs: ",[453,527,528],{"href":528,"rel":529},"https:\u002F\u002Fwww.evlog.dev\u002Fuse-cases\u002Feve",[457],"\nAdapters: ",[453,532,533],{"href":533,"rel":534},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Foverview",[457],[536,537,539],"h2",{"id":538},"when-to-use-what","When to use what",[541,542,543,556],"table",{},[544,545,546],"thead",{},[547,548,549,553],"tr",{},[550,551,552],"th",{},"Need",[550,554,555],{},"Use",[557,558,559,571,583],"tbody",{},[547,560,561,565],{},[562,563,564],"td",{},"Debug a session in Vercel",[562,566,567,568,570],{},"eve ",[460,569,462],{}," (automatic)",[547,572,573,576],{},[562,574,575],{},"Span-level traces in Datadog \u002F Honeycomb",[562,577,567,578,582],{},[460,579,580],{},[469,581,471],{}," + OTel exporter",[547,584,585,588],{},[562,586,587],{},"Wide events to Axiom \u002F Better Stack \u002F FS, billing, audit, tail sampling",[562,589,590],{},[460,591,592],{},[469,593,475],{},[536,595,25],{"id":596},"quick-start",[598,599,601],"h3",{"id":600},"_1-install","1. Install",[603,604,605,633,649,665],"code-group",{},[606,607,613],"pre",{"className":608,"code":609,"filename":610,"language":611,"meta":612,"style":612},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add evlog eve\n","pnpm","bash","",[469,614,615],{"__ignoreMap":612},[616,617,620,623,627,630],"span",{"class":618,"line":619},"line",1,[616,621,610],{"class":622},"sBMFI",[616,624,626],{"class":625},"sfazB"," add",[616,628,629],{"class":625}," evlog",[616,631,632],{"class":625}," eve\n",[606,634,637],{"className":608,"code":635,"filename":636,"language":611,"meta":612,"style":612},"bun add evlog eve\n","bun",[469,638,639],{"__ignoreMap":612},[616,640,641,643,645,647],{"class":618,"line":619},[616,642,636],{"class":622},[616,644,626],{"class":625},[616,646,629],{"class":625},[616,648,632],{"class":625},[606,650,653],{"className":608,"code":651,"filename":652,"language":611,"meta":612,"style":612},"yarn add evlog eve\n","yarn",[469,654,655],{"__ignoreMap":612},[616,656,657,659,661,663],{"class":618,"line":619},[616,658,652],{"class":622},[616,660,626],{"class":625},[616,662,629],{"class":625},[616,664,632],{"class":625},[606,666,669],{"className":608,"code":667,"filename":668,"language":611,"meta":612,"style":612},"npm install evlog eve\n","npm",[469,670,671],{"__ignoreMap":612},[616,672,673,675,678,680],{"class":618,"line":619},[616,674,668],{"class":622},[616,676,677],{"class":625}," install",[616,679,629],{"class":625},[616,681,632],{"class":625},[598,683,685],{"id":684},"_2-add-the-hook","2. Add the hook",[450,687,688,689,692],{},"Create ",[469,690,691],{},"agent\u002Fhooks\u002Fevlog.ts",":",[606,694,698],{"className":695,"code":696,"filename":691,"language":697,"meta":612,"style":612},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineEvlogHook } from 'evlog\u002Feve'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\nexport default defineEvlogHook({\n  init: { env: { service: 'my-agent' } },\n  drain: createAxiomDrain(),\n  enrich: (ctx) => {\n    ctx.event.region = process.env.VERCEL_REGION\n  },\n})\n","typescript",[469,699,700,728,749,756,774,810,826,851,884,890],{"__ignoreMap":612},[616,701,702,706,710,714,717,720,723,725],{"class":618,"line":619},[616,703,705],{"class":704},"s7zQu","import",[616,707,709],{"class":708},"sMK4o"," {",[616,711,713],{"class":712},"sTEyZ"," defineEvlogHook",[616,715,716],{"class":708}," }",[616,718,719],{"class":704}," from",[616,721,722],{"class":708}," '",[616,724,475],{"class":625},[616,726,727],{"class":708},"'\n",[616,729,731,733,735,738,740,742,744,747],{"class":618,"line":730},2,[616,732,705],{"class":704},[616,734,709],{"class":708},[616,736,737],{"class":712}," createAxiomDrain",[616,739,716],{"class":708},[616,741,719],{"class":704},[616,743,722],{"class":708},[616,745,746],{"class":625},"evlog\u002Faxiom",[616,748,727],{"class":708},[616,750,752],{"class":618,"line":751},3,[616,753,755],{"emptyLinePlaceholder":754},true,"\n",[616,757,759,762,765,768,771],{"class":618,"line":758},4,[616,760,761],{"class":704},"export",[616,763,764],{"class":704}," default",[616,766,713],{"class":767},"s2Zo4",[616,769,770],{"class":712},"(",[616,772,773],{"class":708},"{\n",[616,775,777,781,783,785,788,790,792,795,797,799,802,805,807],{"class":618,"line":776},5,[616,778,780],{"class":779},"swJcz","  init",[616,782,692],{"class":708},[616,784,709],{"class":708},[616,786,787],{"class":779}," env",[616,789,692],{"class":708},[616,791,709],{"class":708},[616,793,794],{"class":779}," service",[616,796,692],{"class":708},[616,798,722],{"class":708},[616,800,801],{"class":625},"my-agent",[616,803,804],{"class":708},"'",[616,806,716],{"class":708},[616,808,809],{"class":708}," },\n",[616,811,813,816,818,820,823],{"class":618,"line":812},6,[616,814,815],{"class":779},"  drain",[616,817,692],{"class":708},[616,819,737],{"class":767},[616,821,822],{"class":712},"()",[616,824,825],{"class":708},",\n",[616,827,829,832,834,837,841,844,848],{"class":618,"line":828},7,[616,830,831],{"class":767},"  enrich",[616,833,692],{"class":708},[616,835,836],{"class":708}," (",[616,838,840],{"class":839},"sHdIc","ctx",[616,842,843],{"class":708},")",[616,845,847],{"class":846},"spNyl"," =>",[616,849,850],{"class":708}," {\n",[616,852,854,857,860,863,865,868,871,874,876,879,881],{"class":618,"line":853},8,[616,855,856],{"class":712},"    ctx",[616,858,859],{"class":708},".",[616,861,862],{"class":712},"event",[616,864,859],{"class":708},[616,866,867],{"class":712},"region",[616,869,870],{"class":708}," =",[616,872,873],{"class":712}," process",[616,875,859],{"class":708},[616,877,878],{"class":712},"env",[616,880,859],{"class":708},[616,882,883],{"class":712},"VERCEL_REGION\n",[616,885,887],{"class":618,"line":886},9,[616,888,889],{"class":708},"  },\n",[616,891,893,896],{"class":618,"line":892},10,[616,894,895],{"class":708},"}",[616,897,898],{"class":712},")\n",[450,900,901,902,905,906,909],{},"eve auto-discovers hook files under ",[469,903,904],{},"agent\u002Fhooks\u002F",". No HTTP middleware — the unit of work is an agent ",[460,907,908],{},"turn",", not a request.",[598,911,913],{"id":912},"_3-log-business-context-from-tools","3. Log business context from tools",[450,915,916,917,922],{},"In the ",[453,918,921],{"href":919,"rel":920},"https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fevlog\u002Ftree\u002Fmain\u002Fexamples\u002Feve",[457],"example agent",", support tools attach customer and order context as the agent works a refund:",[606,924,927],{"className":695,"code":925,"filename":926,"language":697,"meta":612,"style":612},"import { defineTool } from 'eve\u002Ftools'\nimport { useTurnLogger } 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 }, ctx) {\n    const order = await fetchOrder(orderId)\n    const log = useTurnLogger(ctx)\n    log.set({ order: { id: order.id, amount: order.amount, status: order.status } })\n    return order\n  },\n})\n","agent\u002Ftools\u002Flookup_order.ts",[469,928,929,949,968,988,992,1004,1020,1060,1083,1106,1123,1191,1200,1205],{"__ignoreMap":612},[616,930,931,933,935,938,940,942,944,947],{"class":618,"line":619},[616,932,705],{"class":704},[616,934,709],{"class":708},[616,936,937],{"class":712}," defineTool",[616,939,716],{"class":708},[616,941,719],{"class":704},[616,943,722],{"class":708},[616,945,946],{"class":625},"eve\u002Ftools",[616,948,727],{"class":708},[616,950,951,953,955,958,960,962,964,966],{"class":618,"line":730},[616,952,705],{"class":704},[616,954,709],{"class":708},[616,956,957],{"class":712}," useTurnLogger",[616,959,716],{"class":708},[616,961,719],{"class":704},[616,963,722],{"class":708},[616,965,475],{"class":625},[616,967,727],{"class":708},[616,969,970,972,974,977,979,981,983,986],{"class":618,"line":751},[616,971,705],{"class":704},[616,973,709],{"class":708},[616,975,976],{"class":712}," z",[616,978,716],{"class":708},[616,980,719],{"class":704},[616,982,722],{"class":708},[616,984,985],{"class":625},"zod",[616,987,727],{"class":708},[616,989,990],{"class":618,"line":758},[616,991,755],{"emptyLinePlaceholder":754},[616,993,994,996,998,1000,1002],{"class":618,"line":776},[616,995,761],{"class":704},[616,997,764],{"class":704},[616,999,937],{"class":767},[616,1001,770],{"class":712},[616,1003,773],{"class":708},[616,1005,1006,1009,1011,1013,1016,1018],{"class":618,"line":812},[616,1007,1008],{"class":779},"  description",[616,1010,692],{"class":708},[616,1012,722],{"class":708},[616,1014,1015],{"class":625},"Look up an order by id.",[616,1017,804],{"class":708},[616,1019,825],{"class":708},[616,1021,1022,1025,1027,1029,1031,1034,1036,1039,1042,1044,1046,1048,1051,1054,1056,1058],{"class":618,"line":828},[616,1023,1024],{"class":779},"  inputSchema",[616,1026,692],{"class":708},[616,1028,976],{"class":712},[616,1030,859],{"class":708},[616,1032,1033],{"class":767},"object",[616,1035,770],{"class":712},[616,1037,1038],{"class":708},"{",[616,1040,1041],{"class":779}," orderId",[616,1043,692],{"class":708},[616,1045,976],{"class":712},[616,1047,859],{"class":708},[616,1049,1050],{"class":767},"string",[616,1052,1053],{"class":712},"() ",[616,1055,895],{"class":708},[616,1057,843],{"class":712},[616,1059,825],{"class":708},[616,1061,1062,1065,1068,1071,1073,1076,1079,1081],{"class":618,"line":853},[616,1063,1064],{"class":846},"  async",[616,1066,1067],{"class":779}," execute",[616,1069,1070],{"class":708},"({",[616,1072,1041],{"class":839},[616,1074,1075],{"class":708}," },",[616,1077,1078],{"class":839}," ctx",[616,1080,843],{"class":708},[616,1082,850],{"class":708},[616,1084,1085,1088,1091,1093,1096,1099,1101,1104],{"class":618,"line":886},[616,1086,1087],{"class":846},"    const",[616,1089,1090],{"class":712}," order",[616,1092,870],{"class":708},[616,1094,1095],{"class":704}," await",[616,1097,1098],{"class":767}," fetchOrder",[616,1100,770],{"class":779},[616,1102,1103],{"class":712},"orderId",[616,1105,898],{"class":779},[616,1107,1108,1110,1113,1115,1117,1119,1121],{"class":618,"line":892},[616,1109,1087],{"class":846},[616,1111,1112],{"class":712}," log",[616,1114,870],{"class":708},[616,1116,957],{"class":767},[616,1118,770],{"class":779},[616,1120,840],{"class":712},[616,1122,898],{"class":779},[616,1124,1126,1129,1131,1134,1136,1138,1140,1142,1144,1147,1149,1151,1153,1156,1159,1162,1164,1166,1168,1171,1173,1176,1178,1180,1182,1185,1187,1189],{"class":618,"line":1125},11,[616,1127,1128],{"class":712},"    log",[616,1130,859],{"class":708},[616,1132,1133],{"class":767},"set",[616,1135,770],{"class":779},[616,1137,1038],{"class":708},[616,1139,1090],{"class":779},[616,1141,692],{"class":708},[616,1143,709],{"class":708},[616,1145,1146],{"class":779}," id",[616,1148,692],{"class":708},[616,1150,1090],{"class":712},[616,1152,859],{"class":708},[616,1154,1155],{"class":712},"id",[616,1157,1158],{"class":708},",",[616,1160,1161],{"class":779}," amount",[616,1163,692],{"class":708},[616,1165,1090],{"class":712},[616,1167,859],{"class":708},[616,1169,1170],{"class":712},"amount",[616,1172,1158],{"class":708},[616,1174,1175],{"class":779}," status",[616,1177,692],{"class":708},[616,1179,1090],{"class":712},[616,1181,859],{"class":708},[616,1183,1184],{"class":712},"status",[616,1186,716],{"class":708},[616,1188,716],{"class":708},[616,1190,898],{"class":779},[616,1192,1194,1197],{"class":618,"line":1193},12,[616,1195,1196],{"class":704},"    return",[616,1198,1199],{"class":712}," order\n",[616,1201,1203],{"class":618,"line":1202},13,[616,1204,889],{"class":708},[616,1206,1208,1210],{"class":618,"line":1207},14,[616,1209,895],{"class":708},[616,1211,898],{"class":712},[598,1213,1215],{"id":1214},"_4-nextjs-web-chat-optional","4. Next.js web chat (optional)",[450,1217,1218,1219,1222,1223,1226,1227,1230,1231,1226,1234,1237,1238,1241,1242,1245,1246,1249,1250,859],{},"Wrap ",[469,1220,1221],{},"next.config.ts"," with ",[469,1224,1225],{},"withEve()"," from ",[469,1228,1229],{},"eve\u002Fnext"," and use ",[469,1232,1233],{},"useEveAgent()",[469,1235,1236],{},"eve\u002Freact"," in your app. eve starts alongside ",[469,1239,1240],{},"next dev"," and proxies ",[469,1243,1244],{},"\u002Feve\u002Fv1\u002F*"," on the same origin — tool calls, approvals, and ",[469,1247,1248],{},"ask_question"," work out of the box. See the ",[453,1251,921],{"href":919,"rel":1252},[457],[536,1254,1256],{"id":1255},"wide-event-shape","Wide event shape",[450,1258,1259],{},"Each completed turn emits one event:",[606,1261,1266],{"className":1262,"code":1263,"filename":1264,"language":1265,"meta":612,"style":612},"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\": \"4.2s\",\n  \"service\": \"clearbill-support-agent\",\n  \"eve\": {\n    \"sessionId\": \"sess_abc\",\n    \"turnId\": \"turn_0\",\n    \"turnSequence\": 0\n  },\n  \"customer\": { \"slug\": \"acme-corp\", \"plan\": \"enterprise\", \"mrr\": 2400 },\n  \"order\": { \"id\": \"4821\", \"amount\": 890, \"currency\": \"USD\" },\n  \"refund\": { \"orderId\": \"4821\", \"amount\": 890, \"requiresApproval\": true },\n  \"audit\": { \"action\": \"refund.issued\", \"actor\": { \"type\": \"agent\", \"id\": \"…\" }, \"target\": { \"type\": \"order\", \"id\": \"4821\" } },\n  \"ai\": {\n    \"calls\": 3,\n    \"steps\": 3,\n    \"inputTokens\": 3312,\n    \"outputTokens\": 814,\n    \"tools\": [\n      { \"name\": \"lookup_customer\", \"success\": true },\n      { \"name\": \"lookup_order\", \"success\": true },\n      { \"name\": \"issue_refund\", \"success\": true }\n    ]\n  }\n}\n","Wide Event — support refund turn","json",[469,1267,1268,1272,1295,1315,1331,1351,1371,1383,1404,1424,1438,1442,1505,1566,1621,1744,1758,1775,1791,1808,1825,1840,1877,1911,1946,1952,1958],{"__ignoreMap":612},[616,1269,1270],{"class":618,"line":619},[616,1271,773],{"class":708},[616,1273,1274,1277,1280,1283,1285,1288,1291,1293],{"class":618,"line":730},[616,1275,1276],{"class":708},"  \"",[616,1278,1279],{"class":846},"method",[616,1281,1282],{"class":708},"\"",[616,1284,692],{"class":708},[616,1286,1287],{"class":708}," \"",[616,1289,1290],{"class":625},"EVE",[616,1292,1282],{"class":708},[616,1294,825],{"class":708},[616,1296,1297,1299,1302,1304,1306,1308,1311,1313],{"class":618,"line":751},[616,1298,1276],{"class":708},[616,1300,1301],{"class":846},"path",[616,1303,1282],{"class":708},[616,1305,692],{"class":708},[616,1307,1287],{"class":708},[616,1309,1310],{"class":625},"\u002Fsessions\u002Fsess_abc\u002Fturns\u002Fturn_0",[616,1312,1282],{"class":708},[616,1314,825],{"class":708},[616,1316,1317,1319,1321,1323,1325,1329],{"class":618,"line":758},[616,1318,1276],{"class":708},[616,1320,1184],{"class":846},[616,1322,1282],{"class":708},[616,1324,692],{"class":708},[616,1326,1328],{"class":1327},"sbssI"," 200",[616,1330,825],{"class":708},[616,1332,1333,1335,1338,1340,1342,1344,1347,1349],{"class":618,"line":776},[616,1334,1276],{"class":708},[616,1336,1337],{"class":846},"duration",[616,1339,1282],{"class":708},[616,1341,692],{"class":708},[616,1343,1287],{"class":708},[616,1345,1346],{"class":625},"4.2s",[616,1348,1282],{"class":708},[616,1350,825],{"class":708},[616,1352,1353,1355,1358,1360,1362,1364,1367,1369],{"class":618,"line":812},[616,1354,1276],{"class":708},[616,1356,1357],{"class":846},"service",[616,1359,1282],{"class":708},[616,1361,692],{"class":708},[616,1363,1287],{"class":708},[616,1365,1366],{"class":625},"clearbill-support-agent",[616,1368,1282],{"class":708},[616,1370,825],{"class":708},[616,1372,1373,1375,1377,1379,1381],{"class":618,"line":828},[616,1374,1276],{"class":708},[616,1376,354],{"class":846},[616,1378,1282],{"class":708},[616,1380,692],{"class":708},[616,1382,850],{"class":708},[616,1384,1385,1388,1391,1393,1395,1397,1400,1402],{"class":618,"line":853},[616,1386,1387],{"class":708},"    \"",[616,1389,1390],{"class":622},"sessionId",[616,1392,1282],{"class":708},[616,1394,692],{"class":708},[616,1396,1287],{"class":708},[616,1398,1399],{"class":625},"sess_abc",[616,1401,1282],{"class":708},[616,1403,825],{"class":708},[616,1405,1406,1408,1411,1413,1415,1417,1420,1422],{"class":618,"line":886},[616,1407,1387],{"class":708},[616,1409,1410],{"class":622},"turnId",[616,1412,1282],{"class":708},[616,1414,692],{"class":708},[616,1416,1287],{"class":708},[616,1418,1419],{"class":625},"turn_0",[616,1421,1282],{"class":708},[616,1423,825],{"class":708},[616,1425,1426,1428,1431,1433,1435],{"class":618,"line":892},[616,1427,1387],{"class":708},[616,1429,1430],{"class":622},"turnSequence",[616,1432,1282],{"class":708},[616,1434,692],{"class":708},[616,1436,1437],{"class":1327}," 0\n",[616,1439,1440],{"class":618,"line":1125},[616,1441,889],{"class":708},[616,1443,1444,1446,1449,1451,1453,1455,1457,1460,1462,1464,1466,1469,1471,1473,1475,1478,1480,1482,1484,1487,1489,1491,1493,1496,1498,1500,1503],{"class":618,"line":1193},[616,1445,1276],{"class":708},[616,1447,1448],{"class":846},"customer",[616,1450,1282],{"class":708},[616,1452,692],{"class":708},[616,1454,709],{"class":708},[616,1456,1287],{"class":708},[616,1458,1459],{"class":622},"slug",[616,1461,1282],{"class":708},[616,1463,692],{"class":708},[616,1465,1287],{"class":708},[616,1467,1468],{"class":625},"acme-corp",[616,1470,1282],{"class":708},[616,1472,1158],{"class":708},[616,1474,1287],{"class":708},[616,1476,1477],{"class":622},"plan",[616,1479,1282],{"class":708},[616,1481,692],{"class":708},[616,1483,1287],{"class":708},[616,1485,1486],{"class":625},"enterprise",[616,1488,1282],{"class":708},[616,1490,1158],{"class":708},[616,1492,1287],{"class":708},[616,1494,1495],{"class":622},"mrr",[616,1497,1282],{"class":708},[616,1499,692],{"class":708},[616,1501,1502],{"class":1327}," 2400",[616,1504,809],{"class":708},[616,1506,1507,1509,1512,1514,1516,1518,1520,1522,1524,1526,1528,1531,1533,1535,1537,1539,1541,1543,1546,1548,1550,1553,1555,1557,1559,1562,1564],{"class":618,"line":1202},[616,1508,1276],{"class":708},[616,1510,1511],{"class":846},"order",[616,1513,1282],{"class":708},[616,1515,692],{"class":708},[616,1517,709],{"class":708},[616,1519,1287],{"class":708},[616,1521,1155],{"class":622},[616,1523,1282],{"class":708},[616,1525,692],{"class":708},[616,1527,1287],{"class":708},[616,1529,1530],{"class":625},"4821",[616,1532,1282],{"class":708},[616,1534,1158],{"class":708},[616,1536,1287],{"class":708},[616,1538,1170],{"class":622},[616,1540,1282],{"class":708},[616,1542,692],{"class":708},[616,1544,1545],{"class":1327}," 890",[616,1547,1158],{"class":708},[616,1549,1287],{"class":708},[616,1551,1552],{"class":622},"currency",[616,1554,1282],{"class":708},[616,1556,692],{"class":708},[616,1558,1287],{"class":708},[616,1560,1561],{"class":625},"USD",[616,1563,1282],{"class":708},[616,1565,809],{"class":708},[616,1567,1568,1570,1573,1575,1577,1579,1581,1583,1585,1587,1589,1591,1593,1595,1597,1599,1601,1603,1605,1607,1609,1612,1614,1616,1619],{"class":618,"line":1207},[616,1569,1276],{"class":708},[616,1571,1572],{"class":846},"refund",[616,1574,1282],{"class":708},[616,1576,692],{"class":708},[616,1578,709],{"class":708},[616,1580,1287],{"class":708},[616,1582,1103],{"class":622},[616,1584,1282],{"class":708},[616,1586,692],{"class":708},[616,1588,1287],{"class":708},[616,1590,1530],{"class":625},[616,1592,1282],{"class":708},[616,1594,1158],{"class":708},[616,1596,1287],{"class":708},[616,1598,1170],{"class":622},[616,1600,1282],{"class":708},[616,1602,692],{"class":708},[616,1604,1545],{"class":1327},[616,1606,1158],{"class":708},[616,1608,1287],{"class":708},[616,1610,1611],{"class":622},"requiresApproval",[616,1613,1282],{"class":708},[616,1615,692],{"class":708},[616,1617,1618],{"class":708}," true",[616,1620,809],{"class":708},[616,1622,1624,1626,1629,1631,1633,1635,1637,1640,1642,1644,1646,1649,1651,1653,1655,1658,1660,1662,1664,1666,1669,1671,1673,1675,1678,1680,1682,1684,1686,1688,1690,1692,1695,1697,1699,1701,1704,1706,1708,1710,1712,1714,1716,1718,1720,1722,1724,1726,1728,1730,1732,1734,1736,1738,1740,1742],{"class":618,"line":1623},15,[616,1625,1276],{"class":708},[616,1627,1628],{"class":846},"audit",[616,1630,1282],{"class":708},[616,1632,692],{"class":708},[616,1634,709],{"class":708},[616,1636,1287],{"class":708},[616,1638,1639],{"class":622},"action",[616,1641,1282],{"class":708},[616,1643,692],{"class":708},[616,1645,1287],{"class":708},[616,1647,1648],{"class":625},"refund.issued",[616,1650,1282],{"class":708},[616,1652,1158],{"class":708},[616,1654,1287],{"class":708},[616,1656,1657],{"class":622},"actor",[616,1659,1282],{"class":708},[616,1661,692],{"class":708},[616,1663,709],{"class":708},[616,1665,1287],{"class":708},[616,1667,1668],{"class":1327},"type",[616,1670,1282],{"class":708},[616,1672,692],{"class":708},[616,1674,1287],{"class":708},[616,1676,1677],{"class":625},"agent",[616,1679,1282],{"class":708},[616,1681,1158],{"class":708},[616,1683,1287],{"class":708},[616,1685,1155],{"class":1327},[616,1687,1282],{"class":708},[616,1689,692],{"class":708},[616,1691,1287],{"class":708},[616,1693,1694],{"class":625},"…",[616,1696,1282],{"class":708},[616,1698,1075],{"class":708},[616,1700,1287],{"class":708},[616,1702,1703],{"class":622},"target",[616,1705,1282],{"class":708},[616,1707,692],{"class":708},[616,1709,709],{"class":708},[616,1711,1287],{"class":708},[616,1713,1668],{"class":1327},[616,1715,1282],{"class":708},[616,1717,692],{"class":708},[616,1719,1287],{"class":708},[616,1721,1511],{"class":625},[616,1723,1282],{"class":708},[616,1725,1158],{"class":708},[616,1727,1287],{"class":708},[616,1729,1155],{"class":1327},[616,1731,1282],{"class":708},[616,1733,692],{"class":708},[616,1735,1287],{"class":708},[616,1737,1530],{"class":625},[616,1739,1282],{"class":708},[616,1741,716],{"class":708},[616,1743,809],{"class":708},[616,1745,1747,1749,1752,1754,1756],{"class":618,"line":1746},16,[616,1748,1276],{"class":708},[616,1750,1751],{"class":846},"ai",[616,1753,1282],{"class":708},[616,1755,692],{"class":708},[616,1757,850],{"class":708},[616,1759,1761,1763,1766,1768,1770,1773],{"class":618,"line":1760},17,[616,1762,1387],{"class":708},[616,1764,1765],{"class":622},"calls",[616,1767,1282],{"class":708},[616,1769,692],{"class":708},[616,1771,1772],{"class":1327}," 3",[616,1774,825],{"class":708},[616,1776,1778,1780,1783,1785,1787,1789],{"class":618,"line":1777},18,[616,1779,1387],{"class":708},[616,1781,1782],{"class":622},"steps",[616,1784,1282],{"class":708},[616,1786,692],{"class":708},[616,1788,1772],{"class":1327},[616,1790,825],{"class":708},[616,1792,1794,1796,1799,1801,1803,1806],{"class":618,"line":1793},19,[616,1795,1387],{"class":708},[616,1797,1798],{"class":622},"inputTokens",[616,1800,1282],{"class":708},[616,1802,692],{"class":708},[616,1804,1805],{"class":1327}," 3312",[616,1807,825],{"class":708},[616,1809,1811,1813,1816,1818,1820,1823],{"class":618,"line":1810},20,[616,1812,1387],{"class":708},[616,1814,1815],{"class":622},"outputTokens",[616,1817,1282],{"class":708},[616,1819,692],{"class":708},[616,1821,1822],{"class":1327}," 814",[616,1824,825],{"class":708},[616,1826,1828,1830,1833,1835,1837],{"class":618,"line":1827},21,[616,1829,1387],{"class":708},[616,1831,1832],{"class":622},"tools",[616,1834,1282],{"class":708},[616,1836,692],{"class":708},[616,1838,1839],{"class":708}," [\n",[616,1841,1843,1846,1848,1851,1853,1855,1857,1860,1862,1864,1866,1869,1871,1873,1875],{"class":618,"line":1842},22,[616,1844,1845],{"class":708},"      {",[616,1847,1287],{"class":708},[616,1849,1850],{"class":1327},"name",[616,1852,1282],{"class":708},[616,1854,692],{"class":708},[616,1856,1287],{"class":708},[616,1858,1859],{"class":625},"lookup_customer",[616,1861,1282],{"class":708},[616,1863,1158],{"class":708},[616,1865,1287],{"class":708},[616,1867,1868],{"class":1327},"success",[616,1870,1282],{"class":708},[616,1872,692],{"class":708},[616,1874,1618],{"class":708},[616,1876,809],{"class":708},[616,1878,1880,1882,1884,1886,1888,1890,1892,1895,1897,1899,1901,1903,1905,1907,1909],{"class":618,"line":1879},23,[616,1881,1845],{"class":708},[616,1883,1287],{"class":708},[616,1885,1850],{"class":1327},[616,1887,1282],{"class":708},[616,1889,692],{"class":708},[616,1891,1287],{"class":708},[616,1893,1894],{"class":625},"lookup_order",[616,1896,1282],{"class":708},[616,1898,1158],{"class":708},[616,1900,1287],{"class":708},[616,1902,1868],{"class":1327},[616,1904,1282],{"class":708},[616,1906,692],{"class":708},[616,1908,1618],{"class":708},[616,1910,809],{"class":708},[616,1912,1914,1916,1918,1920,1922,1924,1926,1929,1931,1933,1935,1937,1939,1941,1943],{"class":618,"line":1913},24,[616,1915,1845],{"class":708},[616,1917,1287],{"class":708},[616,1919,1850],{"class":1327},[616,1921,1282],{"class":708},[616,1923,692],{"class":708},[616,1925,1287],{"class":708},[616,1927,1928],{"class":625},"issue_refund",[616,1930,1282],{"class":708},[616,1932,1158],{"class":708},[616,1934,1287],{"class":708},[616,1936,1868],{"class":1327},[616,1938,1282],{"class":708},[616,1940,692],{"class":708},[616,1942,1618],{"class":708},[616,1944,1945],{"class":708}," }\n",[616,1947,1949],{"class":618,"line":1948},25,[616,1950,1951],{"class":708},"    ]\n",[616,1953,1955],{"class":618,"line":1954},26,[616,1956,1957],{"class":708},"  }\n",[616,1959,1961],{"class":618,"line":1960},27,[616,1962,1963],{"class":708},"}\n",[450,1965,1966,1967,1970,1971,1974,1975,859],{},"Token usage and tool executions are accumulated from eve stream events (",[469,1968,1969],{},"step.completed",", ",[469,1972,1973],{},"action.result","). eve owns the model loop — you do not wrap the model with ",[469,1976,1977],{},"evlog\u002Fai",[536,1979,274],{"id":1980},"options",[541,1982,1983,1993],{},[544,1984,1985],{},[547,1986,1987,1990],{},[550,1988,1989],{},"Option",[550,1991,1992],{},"Description",[557,1994,1995,2009,2031,2045],{},[547,1996,1997,2002],{},[562,1998,1999],{},[469,2000,2001],{},"init",[562,2003,2004,2005,2008],{},"Passed to ",[469,2006,2007],{},"initLogger()"," on first hook invocation",[547,2010,2011,2026],{},[562,2012,2013,2016,2017,2016,2020,2016,2023],{},[469,2014,2015],{},"drain"," \u002F ",[469,2018,2019],{},"enrich",[469,2021,2022],{},"keep",[469,2024,2025],{},"plugins",[562,2027,2028,2029,843],{},"Same as HTTP integrations (",[453,2030,2025],{"href":388},[547,2032,2033,2038],{},[562,2034,2035],{},[469,2036,2037],{},"redactMessage",[562,2039,2040,2041,2044],{},"Default ",[469,2042,2043],{},"true"," — omits user message text from the wide event",[547,2046,2047,2055],{},[562,2048,2049,2016,2052],{},[469,2050,2051],{},"include",[469,2053,2054],{},"exclude",[562,2056,2057,2058,843],{},"Route-style filters on turn paths (",[469,2059,2060],{},"\u002Fsessions\u002F*\u002Fturns\u002F*",[536,2062,395],{"id":2063},"tail-sampling",[450,2065,2066,2067,2069],{},"Use ",[469,2068,2022],{}," to force-keep turns with failed tools or high token usage:",[606,2071,2073],{"className":695,"code":2072,"filename":691,"language":697,"meta":612,"style":612},"export default defineEvlogHook({\n  drain: createAxiomDrain(),\n  keep: (ctx) => {\n    const ai = ctx.context.ai as { totalTokens?: number, tools?: Array\u003C{ success: boolean }> } | undefined\n    if ((ai?.totalTokens ?? 0) > 10_000) ctx.shouldKeep = true\n    if (ai?.tools?.some(t => !t.success)) ctx.shouldKeep = true\n  },\n})\n",[469,2074,2075,2087,2099,2116,2182,2228,2274,2278],{"__ignoreMap":612},[616,2076,2077,2079,2081,2083,2085],{"class":618,"line":619},[616,2078,761],{"class":704},[616,2080,764],{"class":704},[616,2082,713],{"class":767},[616,2084,770],{"class":712},[616,2086,773],{"class":708},[616,2088,2089,2091,2093,2095,2097],{"class":618,"line":730},[616,2090,815],{"class":779},[616,2092,692],{"class":708},[616,2094,737],{"class":767},[616,2096,822],{"class":712},[616,2098,825],{"class":708},[616,2100,2101,2104,2106,2108,2110,2112,2114],{"class":618,"line":751},[616,2102,2103],{"class":767},"  keep",[616,2105,692],{"class":708},[616,2107,836],{"class":708},[616,2109,840],{"class":839},[616,2111,843],{"class":708},[616,2113,847],{"class":846},[616,2115,850],{"class":708},[616,2117,2118,2120,2123,2125,2127,2129,2132,2134,2136,2139,2141,2144,2147,2150,2152,2155,2157,2160,2163,2166,2168,2171,2174,2176,2179],{"class":618,"line":758},[616,2119,1087],{"class":846},[616,2121,2122],{"class":712}," ai",[616,2124,870],{"class":708},[616,2126,1078],{"class":712},[616,2128,859],{"class":708},[616,2130,2131],{"class":712},"context",[616,2133,859],{"class":708},[616,2135,1751],{"class":712},[616,2137,2138],{"class":704}," as",[616,2140,709],{"class":708},[616,2142,2143],{"class":779}," totalTokens",[616,2145,2146],{"class":708},"?:",[616,2148,2149],{"class":622}," number",[616,2151,1158],{"class":708},[616,2153,2154],{"class":779}," tools",[616,2156,2146],{"class":708},[616,2158,2159],{"class":622}," Array",[616,2161,2162],{"class":708},"\u003C{",[616,2164,2165],{"class":779}," success",[616,2167,692],{"class":708},[616,2169,2170],{"class":622}," boolean",[616,2172,2173],{"class":708}," }>",[616,2175,716],{"class":708},[616,2177,2178],{"class":708}," |",[616,2180,2181],{"class":622}," undefined\n",[616,2183,2184,2187,2190,2192,2195,2198,2201,2204,2207,2210,2213,2215,2217,2219,2222,2224],{"class":618,"line":776},[616,2185,2186],{"class":704},"    if",[616,2188,2189],{"class":779}," ((",[616,2191,1751],{"class":712},[616,2193,2194],{"class":708},"?.",[616,2196,2197],{"class":712},"totalTokens",[616,2199,2200],{"class":708}," ??",[616,2202,2203],{"class":1327}," 0",[616,2205,2206],{"class":779},") ",[616,2208,2209],{"class":708},">",[616,2211,2212],{"class":1327}," 10_000",[616,2214,2206],{"class":779},[616,2216,840],{"class":712},[616,2218,859],{"class":708},[616,2220,2221],{"class":712},"shouldKeep",[616,2223,870],{"class":708},[616,2225,2227],{"class":2226},"sfNiH"," true\n",[616,2229,2230,2232,2234,2236,2238,2240,2242,2245,2247,2250,2252,2255,2257,2259,2261,2264,2266,2268,2270,2272],{"class":618,"line":812},[616,2231,2186],{"class":704},[616,2233,836],{"class":779},[616,2235,1751],{"class":712},[616,2237,2194],{"class":708},[616,2239,1832],{"class":712},[616,2241,2194],{"class":708},[616,2243,2244],{"class":767},"some",[616,2246,770],{"class":779},[616,2248,2249],{"class":839},"t",[616,2251,847],{"class":846},[616,2253,2254],{"class":708}," !",[616,2256,2249],{"class":712},[616,2258,859],{"class":708},[616,2260,1868],{"class":712},[616,2262,2263],{"class":779},")) ",[616,2265,840],{"class":712},[616,2267,859],{"class":708},[616,2269,2221],{"class":712},[616,2271,870],{"class":708},[616,2273,2227],{"class":2226},[616,2275,2276],{"class":618,"line":828},[616,2277,889],{"class":708},[616,2279,2280,2282],{"class":618,"line":853},[616,2281,895],{"class":708},[616,2283,898],{"class":712},[536,2285,2287],{"id":2286},"audit-logs","Audit logs",[450,2289,2290,2291,2293,2294,2297,2298,2301,2302,2305,2306,1222,2308,859],{},"Combine with ",[453,2292,317],{"href":323},": register ",[469,2295,2296],{},"auditEnricher()"," via ",[469,2299,2300],{},"init.plugins"," or a global plugin, and call ",[469,2303,2304],{},"log.audit()"," inside tools when a human approval gate fires. Tool rejections surface on ",[469,2307,1973],{},[469,2309,2310],{},"status: \"rejected\"",[536,2312,2314],{"id":2313},"run-locally","Run locally",[606,2316,2318],{"className":608,"code":2317,"language":611,"meta":612,"style":612},"git clone https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fevlog\ncd evlog\npnpm install\npnpm run example:eve\n",[469,2319,2320,2331,2339,2346],{"__ignoreMap":612},[616,2321,2322,2325,2328],{"class":618,"line":619},[616,2323,2324],{"class":622},"git",[616,2326,2327],{"class":625}," clone",[616,2329,2330],{"class":625}," https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fevlog\n",[616,2332,2333,2336],{"class":618,"line":730},[616,2334,2335],{"class":767},"cd",[616,2337,2338],{"class":625}," evlog\n",[616,2340,2341,2343],{"class":618,"line":751},[616,2342,610],{"class":622},[616,2344,2345],{"class":625}," install\n",[616,2347,2348,2350,2353],{"class":618,"line":758},[616,2349,610],{"class":622},[616,2351,2352],{"class":625}," run",[616,2354,2355],{"class":625}," example:eve\n",[450,2357,2358,2359,2362,2363,2366,2367,2370,2371,2377],{},"The ",[469,2360,2361],{},"examples\u002Feve"," project is a ",[460,2364,2365],{},"support refund copilot"," (Clearbill SaaS): lookup customer → lookup order → issue refund, with eve approvals when amount > $100. Run ",[469,2368,2369],{},"pnpm run example:eve",", open ",[460,2372,2373],{},[453,2374,2375],{"href":2375,"rel":2376},"http:\u002F\u002Flocalhost:3000",[457],", and click a starter prompt.",[536,2379,2381],{"id":2380},"what-to-read-next","What to read next",[502,2383,2384,2392,2400,2406],{},[505,2385,2386,2391],{},[453,2387,2390],{"href":2388,"rel":2389},"https:\u002F\u002Feve.dev\u002Fdocs\u002Fguides\u002Fhooks",[457],"eve hooks guide"," — stream event vocabulary",[505,2393,2394,2399],{},[453,2395,2398],{"href":2396,"rel":2397},"https:\u002F\u002Feve.dev\u002Fdocs\u002Fguides\u002Finstrumentation",[457],"eve instrumentation"," — OTel spans (complementary)",[505,2401,2402,2405],{},[453,2403,2404],{"href":266},"AI SDK use case"," — when you own the model loop directly",[505,2407,2408,2411],{},[453,2409,2410],{"href":95},"Adapters overview"," — drain destinations",[2413,2414,2415],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":612,"searchDepth":730,"depth":730,"links":2417},[2418,2419,2425,2426,2427,2428,2429,2430],{"id":538,"depth":730,"text":539},{"id":596,"depth":730,"text":25,"children":2420},[2421,2422,2423,2424],{"id":600,"depth":751,"text":601},{"id":684,"depth":751,"text":685},{"id":912,"depth":751,"text":913},{"id":1214,"depth":751,"text":1215},{"id":1255,"depth":730,"text":1256},{"id":1980,"depth":730,"text":274},{"id":2063,"depth":730,"text":395},{"id":2286,"depth":730,"text":2287},{"id":2313,"depth":730,"text":2314},{"id":2380,"depth":730,"text":2381},"Export one evlog wide event per eve agent turn — token usage, tool executions, business context, drains, enrichers, and tail sampling alongside Agent Runs and OpenTelemetry.","md",[2434],{"label":2435,"icon":2436,"to":919,"color":2437,"variant":2438},"Source Code","i-simple-icons-github","neutral","subtle",{},{"title":354,"icon":357},{"title":354,"description":2431},"u8x5UDXmnOV7lnsF1yBOfSi5jN3zEojGfpvzsHoDUPI",[2444,2446],{"title":349,"path":350,"stem":351,"description":2445,"icon":352,"children":-1},"Add derived context to every wide event automatically — user agent, geo, request size, and trace context. Built-in enrichers from evlog\u002Fenrichers, plus how to compose them with your own.",{"title":36,"path":364,"stem":365,"description":2447,"icon":366,"children":-1},"Observe what flows through the pipeline (stream, fs reader, consumer recipes), plug into the pipeline (plugins, enrichers, tail sampling, identity headers), or build your own bricks (custom drains, drain pipeline, custom framework integration).",1782925724598]