[{"data":1,"prerenderedAt":1859},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-ai-sdk-telemetry":500,"-use-cases-ai-sdk-telemetry-surround":1854},[4,30,80,118,283,415,470],{"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},"CLI","\u002Fcli","3.cli",[85,88,93,98,103,108,113],{"title":36,"path":86,"stem":87,"icon":44},"\u002Fcli\u002Foverview","3.cli\u002F0.overview",{"title":89,"path":90,"stem":91,"icon":92},"map","\u002Fcli\u002Fmap","3.cli\u002F1.map","i-lucide-radar",{"title":94,"path":95,"stem":96,"icon":97},"Rules","\u002Fcli\u002Frules","3.cli\u002F2.rules","i-lucide-list-checks",{"title":99,"path":100,"stem":101,"icon":102},"Scoring","\u002Fcli\u002Fscoring","3.cli\u002F3.scoring","i-lucide-gauge",{"title":104,"path":105,"stem":106,"icon":107},"CI","\u002Fcli\u002Fci","3.cli\u002F4.ci","i-lucide-git-pull-request",{"title":109,"path":110,"stem":111,"icon":112},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F5.doctor","i-lucide-stethoscope",{"title":114,"path":115,"stem":116,"icon":117},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F6.telemetry","i-lucide-bar-chart-3",{"title":119,"path":120,"stem":121,"children":122,"page":29},"Integrate","\u002Fintegrate","4.integrate",[123,127,195],{"title":36,"path":124,"stem":125,"icon":126},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":128,"path":129,"stem":130,"children":131,"page":29},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[132,135,175],{"title":36,"path":133,"stem":134,"icon":39},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":136,"path":137,"stem":138,"children":139,"page":29},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[140,145,150,155,160,165,170],{"title":141,"path":142,"stem":143,"icon":144},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":146,"path":147,"stem":148,"icon":149},"OTLP","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fotlp","4.integrate\u002Fadapters\u002Fcloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":151,"path":152,"stem":153,"icon":154},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F03.posthog","i-simple-icons-posthog",{"title":156,"path":157,"stem":158,"icon":159},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F04.sentry","i-simple-icons-sentry",{"title":161,"path":162,"stem":163,"icon":164},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":166,"path":167,"stem":168,"icon":169},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F06.datadog","i-simple-icons-datadog",{"title":171,"path":172,"stem":173,"icon":174},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fhyperdx","4.integrate\u002Fadapters\u002Fcloud\u002F07.hyperdx","i-custom-hyperdx",{"title":176,"path":177,"stem":178,"children":179,"page":29},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[180,185,190],{"title":181,"path":182,"stem":183,"icon":184},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":186,"path":187,"stem":188,"icon":189},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":191,"path":192,"stem":193,"icon":194},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":196,"path":197,"stem":198,"children":199,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[200,204,209,214,219,224,229,234,239,244,249,254,259,264,268,273,278],{"title":36,"path":201,"stem":202,"icon":203},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":205,"path":206,"stem":207,"icon":208},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":210,"path":211,"stem":212,"icon":213},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":215,"path":216,"stem":217,"icon":218},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":220,"path":221,"stem":222,"icon":223},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":225,"path":226,"stem":227,"icon":228},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":230,"path":231,"stem":232,"icon":233},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":235,"path":236,"stem":237,"icon":238},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":240,"path":241,"stem":242,"icon":243},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":245,"path":246,"stem":247,"icon":248},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":250,"path":251,"stem":252,"icon":253},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":255,"path":256,"stem":257,"icon":258},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":260,"path":261,"stem":262,"icon":263},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":265,"path":266,"stem":267,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":269,"path":270,"stem":271,"icon":272},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":274,"path":275,"stem":276,"icon":277},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":279,"path":280,"stem":281,"icon":282},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":284,"path":285,"stem":286,"children":287,"page":29},"Use Cases","\u002Fuse-cases","5.use-cases",[288,291,296,325,352,384,405,410],{"title":36,"path":289,"stem":290,"icon":97},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":292,"path":293,"stem":294,"icon":295},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":297,"icon":298,"path":299,"stem":300,"children":301,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[302,305,310,315,320],{"title":36,"path":303,"stem":304,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":306,"path":307,"stem":308,"icon":309},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":311,"path":312,"stem":313,"icon":314},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":316,"path":317,"stem":318,"icon":319},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":321,"path":322,"stem":323,"icon":324},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":326,"icon":327,"path":328,"stem":329,"children":330,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[331,334,339,344,348],{"title":36,"path":332,"stem":333,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":335,"path":336,"stem":337,"icon":338},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":340,"path":341,"stem":342,"icon":343},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":345,"path":346,"stem":347,"icon":295},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":349,"path":350,"stem":351,"icon":102},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":353,"icon":354,"path":355,"stem":356,"children":357,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[358,361,366,371,376,380],{"title":36,"path":359,"stem":360,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":362,"path":363,"stem":364,"icon":365},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":367,"path":368,"stem":369,"icon":370},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":372,"path":373,"stem":374,"icon":375},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":377,"path":378,"stem":379,"icon":354},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":381,"path":382,"stem":383,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":321,"icon":102,"path":385,"stem":386,"children":387,"page":29},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[388,391,396,401],{"title":36,"path":389,"stem":390,"icon":39},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":392,"path":393,"stem":394,"icon":395},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":397,"path":398,"stem":399,"icon":400},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":402,"path":403,"stem":404,"icon":79},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":406,"path":407,"stem":408,"icon":409},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":411,"path":412,"stem":413,"icon":414},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":416,"path":417,"stem":418,"children":419,"page":29},"Extend","\u002Fextend","6.extend",[420,424,429,434,439,443,447,451,455,460,465],{"title":36,"path":421,"stem":422,"icon":423},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":425,"path":426,"stem":427,"icon":428},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":430,"path":431,"stem":432,"icon":433},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":435,"path":436,"stem":437,"icon":438},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":381,"path":440,"stem":441,"icon":442},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":444,"path":445,"stem":446,"icon":423},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":448,"path":449,"stem":450,"icon":409},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":452,"path":453,"stem":454,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":456,"path":457,"stem":458,"icon":459},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":461,"path":462,"stem":463,"icon":464},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":466,"path":467,"stem":468,"icon":469},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":402,"path":471,"stem":472,"children":473,"page":29},"\u002Freference","7.reference",[474,479,482,487,491,496],{"title":475,"path":476,"stem":477,"icon":478},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":349,"path":480,"stem":481,"icon":102},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":483,"path":484,"stem":485,"icon":486},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":488,"path":489,"stem":490,"icon":354},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":492,"path":493,"stem":494,"icon":495},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":497,"path":498,"stem":499,"icon":409},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"id":501,"title":502,"body":503,"description":1842,"extension":1843,"links":1844,"meta":1850,"navigation":1851,"path":322,"seo":1852,"stem":323,"__hash__":1853},"docs\u002F5.use-cases\u002F2.ai-sdk\u002F05.telemetry.md","Deeper Telemetry",{"type":504,"value":505,"toc":1836},"minimark",[506,525,540,545,556,871,874,1244,1248,1251,1360,1364,1494,1497,1501,1509,1686,1696,1811,1832],[507,508,509,513,514,517,518,521,522,524],"p",{},[510,511,512],"code",{},"createAILogger"," covers tokens, model info, and streaming metrics. For deeper observability — per-tool execution timing, success\u002Ffailure tracking, and total generation wall time — add ",[510,515,516],{},"createEvlogIntegration()"," on top. It implements the AI SDK telemetry interface (v6 ",[510,519,520],{},"TelemetryIntegration",", v7 ",[510,523,321],{},") and captures data middleware alone cannot see.",[507,526,527,528,531,532,535,536,539],{},"On AI SDK v7, the integration also auto-captures embeddings via ",[510,529,530],{},"onEmbedEnd",", records stream aborts via ",[510,533,534],{},"onAbort",", and surfaces unrecoverable errors via ",[510,537,538],{},"onError",".",[541,542,544],"h2",{"id":543},"combined-with-middleware-recommended","Combined with middleware (recommended)",[507,546,547,548,551,552,555],{},"When passed an ",[510,549,550],{},"AILogger",", the integration shares its accumulator. Both paths write to the same ",[510,553,554],{},"ai.*"," field:",[557,558,564],"pre",{"className":559,"code":560,"filename":561,"language":562,"meta":563,"style":563},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { generateText } from 'ai'\nimport { createAILogger, createEvlogIntegration } from 'evlog\u002Fai'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n  const ai = createAILogger(log)\n\n  const result = await generateText({\n    model: ai.wrap('anthropic\u002Fclaude-sonnet-4.6'),\n    tools: { getWeather, searchDB },\n    telemetry: {\n      integrations: [createEvlogIntegration(ai)],\n    },\n  })\n\n  return { text: result.text }\n})\n","server\u002Fapi\u002Fagent.post.ts","typescript","",[510,565,566,599,626,633,669,692,711,716,736,767,788,798,821,827,835,840,863],{"__ignoreMap":563},[567,568,571,575,579,583,586,589,592,596],"span",{"class":569,"line":570},"line",1,[567,572,574],{"class":573},"s7zQu","import",[567,576,578],{"class":577},"sMK4o"," {",[567,580,582],{"class":581},"sTEyZ"," generateText",[567,584,585],{"class":577}," }",[567,587,588],{"class":573}," from",[567,590,591],{"class":577}," '",[567,593,595],{"class":594},"sfazB","ai",[567,597,598],{"class":577},"'\n",[567,600,602,604,606,609,612,615,617,619,621,624],{"class":569,"line":601},2,[567,603,574],{"class":573},[567,605,578],{"class":577},[567,607,608],{"class":581}," createAILogger",[567,610,611],{"class":577},",",[567,613,614],{"class":581}," createEvlogIntegration",[567,616,585],{"class":577},[567,618,588],{"class":573},[567,620,591],{"class":577},[567,622,623],{"class":594},"evlog\u002Fai",[567,625,598],{"class":577},[567,627,629],{"class":569,"line":628},3,[567,630,632],{"emptyLinePlaceholder":631},true,"\n",[567,634,636,639,642,646,649,653,656,660,663,666],{"class":569,"line":635},4,[567,637,638],{"class":573},"export",[567,640,641],{"class":573}," default",[567,643,645],{"class":644},"s2Zo4"," defineEventHandler",[567,647,648],{"class":581},"(",[567,650,652],{"class":651},"spNyl","async",[567,654,655],{"class":577}," (",[567,657,659],{"class":658},"sHdIc","event",[567,661,662],{"class":577},")",[567,664,665],{"class":651}," =>",[567,667,668],{"class":577}," {\n",[567,670,672,675,678,681,684,687,689],{"class":569,"line":671},5,[567,673,674],{"class":651},"  const",[567,676,677],{"class":581}," log",[567,679,680],{"class":577}," =",[567,682,683],{"class":644}," useLogger",[567,685,648],{"class":686},"swJcz",[567,688,659],{"class":581},[567,690,691],{"class":686},")\n",[567,693,695,697,700,702,704,706,709],{"class":569,"line":694},6,[567,696,674],{"class":651},[567,698,699],{"class":581}," ai",[567,701,680],{"class":577},[567,703,608],{"class":644},[567,705,648],{"class":686},[567,707,708],{"class":581},"log",[567,710,691],{"class":686},[567,712,714],{"class":569,"line":713},7,[567,715,632],{"emptyLinePlaceholder":631},[567,717,719,721,724,726,729,731,733],{"class":569,"line":718},8,[567,720,674],{"class":651},[567,722,723],{"class":581}," result",[567,725,680],{"class":577},[567,727,728],{"class":573}," await",[567,730,582],{"class":644},[567,732,648],{"class":686},[567,734,735],{"class":577},"{\n",[567,737,739,742,745,747,749,752,754,757,760,762,764],{"class":569,"line":738},9,[567,740,741],{"class":686},"    model",[567,743,744],{"class":577},":",[567,746,699],{"class":581},[567,748,539],{"class":577},[567,750,751],{"class":644},"wrap",[567,753,648],{"class":686},[567,755,756],{"class":577},"'",[567,758,759],{"class":594},"anthropic\u002Fclaude-sonnet-4.6",[567,761,756],{"class":577},[567,763,662],{"class":686},[567,765,766],{"class":577},",\n",[567,768,770,773,775,777,780,782,785],{"class":569,"line":769},10,[567,771,772],{"class":686},"    tools",[567,774,744],{"class":577},[567,776,578],{"class":577},[567,778,779],{"class":581}," getWeather",[567,781,611],{"class":577},[567,783,784],{"class":581}," searchDB",[567,786,787],{"class":577}," },\n",[567,789,791,794,796],{"class":569,"line":790},11,[567,792,793],{"class":686},"    telemetry",[567,795,744],{"class":577},[567,797,668],{"class":577},[567,799,801,804,806,809,812,814,816,819],{"class":569,"line":800},12,[567,802,803],{"class":686},"      integrations",[567,805,744],{"class":577},[567,807,808],{"class":686}," [",[567,810,811],{"class":644},"createEvlogIntegration",[567,813,648],{"class":686},[567,815,595],{"class":581},[567,817,818],{"class":686},")]",[567,820,766],{"class":577},[567,822,824],{"class":569,"line":823},13,[567,825,826],{"class":577},"    },\n",[567,828,830,833],{"class":569,"line":829},14,[567,831,832],{"class":577},"  }",[567,834,691],{"class":686},[567,836,838],{"class":569,"line":837},15,[567,839,632],{"emptyLinePlaceholder":631},[567,841,843,846,848,851,853,855,857,860],{"class":569,"line":842},16,[567,844,845],{"class":573},"  return",[567,847,578],{"class":577},[567,849,850],{"class":686}," text",[567,852,744],{"class":577},[567,854,723],{"class":581},[567,856,539],{"class":577},[567,858,859],{"class":581},"text",[567,861,862],{"class":577}," }\n",[567,864,866,869],{"class":569,"line":865},17,[567,867,868],{"class":577},"}",[567,870,691],{"class":581},[507,872,873],{},"Your wide event now includes per-tool timing:",[557,875,880],{"className":876,"code":877,"filename":878,"language":879,"meta":563,"style":563},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"ai\": {\n    \"calls\": 2,\n    \"steps\": 2,\n    \"model\": \"claude-sonnet-4.6\",\n    \"provider\": \"anthropic\",\n    \"inputTokens\": 3500,\n    \"outputTokens\": 800,\n    \"totalTokens\": 4300,\n    \"toolCalls\": [\"getWeather\", \"searchDB\"],\n    \"tools\": [\n      { \"name\": \"getWeather\", \"durationMs\": 150, \"success\": true },\n      { \"name\": \"searchDB\", \"durationMs\": 45, \"success\": true }\n    ],\n    \"totalDurationMs\": 2340,\n    \"msToFirstChunk\": 180,\n    \"msToFinish\": 2100,\n    \"tokensPerSecond\": 380\n  }\n}\n","Wide Event","json",[510,881,882,886,900,919,934,955,975,991,1007,1023,1055,1069,1119,1164,1169,1185,1201,1217,1232,1238],{"__ignoreMap":563},[567,883,884],{"class":569,"line":570},[567,885,735],{"class":577},[567,887,888,891,893,896,898],{"class":569,"line":601},[567,889,890],{"class":577},"  \"",[567,892,595],{"class":651},[567,894,895],{"class":577},"\"",[567,897,744],{"class":577},[567,899,668],{"class":577},[567,901,902,905,909,911,913,917],{"class":569,"line":628},[567,903,904],{"class":577},"    \"",[567,906,908],{"class":907},"sBMFI","calls",[567,910,895],{"class":577},[567,912,744],{"class":577},[567,914,916],{"class":915},"sbssI"," 2",[567,918,766],{"class":577},[567,920,921,923,926,928,930,932],{"class":569,"line":635},[567,922,904],{"class":577},[567,924,925],{"class":907},"steps",[567,927,895],{"class":577},[567,929,744],{"class":577},[567,931,916],{"class":915},[567,933,766],{"class":577},[567,935,936,938,941,943,945,948,951,953],{"class":569,"line":671},[567,937,904],{"class":577},[567,939,940],{"class":907},"model",[567,942,895],{"class":577},[567,944,744],{"class":577},[567,946,947],{"class":577}," \"",[567,949,950],{"class":594},"claude-sonnet-4.6",[567,952,895],{"class":577},[567,954,766],{"class":577},[567,956,957,959,962,964,966,968,971,973],{"class":569,"line":694},[567,958,904],{"class":577},[567,960,961],{"class":907},"provider",[567,963,895],{"class":577},[567,965,744],{"class":577},[567,967,947],{"class":577},[567,969,970],{"class":594},"anthropic",[567,972,895],{"class":577},[567,974,766],{"class":577},[567,976,977,979,982,984,986,989],{"class":569,"line":713},[567,978,904],{"class":577},[567,980,981],{"class":907},"inputTokens",[567,983,895],{"class":577},[567,985,744],{"class":577},[567,987,988],{"class":915}," 3500",[567,990,766],{"class":577},[567,992,993,995,998,1000,1002,1005],{"class":569,"line":718},[567,994,904],{"class":577},[567,996,997],{"class":907},"outputTokens",[567,999,895],{"class":577},[567,1001,744],{"class":577},[567,1003,1004],{"class":915}," 800",[567,1006,766],{"class":577},[567,1008,1009,1011,1014,1016,1018,1021],{"class":569,"line":738},[567,1010,904],{"class":577},[567,1012,1013],{"class":907},"totalTokens",[567,1015,895],{"class":577},[567,1017,744],{"class":577},[567,1019,1020],{"class":915}," 4300",[567,1022,766],{"class":577},[567,1024,1025,1027,1030,1032,1034,1036,1038,1041,1043,1045,1047,1050,1052],{"class":569,"line":769},[567,1026,904],{"class":577},[567,1028,1029],{"class":907},"toolCalls",[567,1031,895],{"class":577},[567,1033,744],{"class":577},[567,1035,808],{"class":577},[567,1037,895],{"class":577},[567,1039,1040],{"class":594},"getWeather",[567,1042,895],{"class":577},[567,1044,611],{"class":577},[567,1046,947],{"class":577},[567,1048,1049],{"class":594},"searchDB",[567,1051,895],{"class":577},[567,1053,1054],{"class":577},"],\n",[567,1056,1057,1059,1062,1064,1066],{"class":569,"line":790},[567,1058,904],{"class":577},[567,1060,1061],{"class":907},"tools",[567,1063,895],{"class":577},[567,1065,744],{"class":577},[567,1067,1068],{"class":577}," [\n",[567,1070,1071,1074,1076,1079,1081,1083,1085,1087,1089,1091,1093,1096,1098,1100,1103,1105,1107,1110,1112,1114,1117],{"class":569,"line":800},[567,1072,1073],{"class":577},"      {",[567,1075,947],{"class":577},[567,1077,1078],{"class":915},"name",[567,1080,895],{"class":577},[567,1082,744],{"class":577},[567,1084,947],{"class":577},[567,1086,1040],{"class":594},[567,1088,895],{"class":577},[567,1090,611],{"class":577},[567,1092,947],{"class":577},[567,1094,1095],{"class":915},"durationMs",[567,1097,895],{"class":577},[567,1099,744],{"class":577},[567,1101,1102],{"class":915}," 150",[567,1104,611],{"class":577},[567,1106,947],{"class":577},[567,1108,1109],{"class":915},"success",[567,1111,895],{"class":577},[567,1113,744],{"class":577},[567,1115,1116],{"class":577}," true",[567,1118,787],{"class":577},[567,1120,1121,1123,1125,1127,1129,1131,1133,1135,1137,1139,1141,1143,1145,1147,1150,1152,1154,1156,1158,1160,1162],{"class":569,"line":823},[567,1122,1073],{"class":577},[567,1124,947],{"class":577},[567,1126,1078],{"class":915},[567,1128,895],{"class":577},[567,1130,744],{"class":577},[567,1132,947],{"class":577},[567,1134,1049],{"class":594},[567,1136,895],{"class":577},[567,1138,611],{"class":577},[567,1140,947],{"class":577},[567,1142,1095],{"class":915},[567,1144,895],{"class":577},[567,1146,744],{"class":577},[567,1148,1149],{"class":915}," 45",[567,1151,611],{"class":577},[567,1153,947],{"class":577},[567,1155,1109],{"class":915},[567,1157,895],{"class":577},[567,1159,744],{"class":577},[567,1161,1116],{"class":577},[567,1163,862],{"class":577},[567,1165,1166],{"class":569,"line":829},[567,1167,1168],{"class":577},"    ],\n",[567,1170,1171,1173,1176,1178,1180,1183],{"class":569,"line":837},[567,1172,904],{"class":577},[567,1174,1175],{"class":907},"totalDurationMs",[567,1177,895],{"class":577},[567,1179,744],{"class":577},[567,1181,1182],{"class":915}," 2340",[567,1184,766],{"class":577},[567,1186,1187,1189,1192,1194,1196,1199],{"class":569,"line":842},[567,1188,904],{"class":577},[567,1190,1191],{"class":907},"msToFirstChunk",[567,1193,895],{"class":577},[567,1195,744],{"class":577},[567,1197,1198],{"class":915}," 180",[567,1200,766],{"class":577},[567,1202,1203,1205,1208,1210,1212,1215],{"class":569,"line":865},[567,1204,904],{"class":577},[567,1206,1207],{"class":907},"msToFinish",[567,1209,895],{"class":577},[567,1211,744],{"class":577},[567,1213,1214],{"class":915}," 2100",[567,1216,766],{"class":577},[567,1218,1220,1222,1225,1227,1229],{"class":569,"line":1219},18,[567,1221,904],{"class":577},[567,1223,1224],{"class":907},"tokensPerSecond",[567,1226,895],{"class":577},[567,1228,744],{"class":577},[567,1230,1231],{"class":915}," 380\n",[567,1233,1235],{"class":569,"line":1234},19,[567,1236,1237],{"class":577},"  }\n",[567,1239,1241],{"class":569,"line":1240},20,[567,1242,1243],{"class":577},"}\n",[541,1245,1247],{"id":1246},"standalone-without-middleware","Standalone (without middleware)",[507,1249,1250],{},"If your model is already wrapped (e.g. by another middleware), pass the request logger directly:",[557,1252,1255],{"className":559,"code":1253,"filename":1254,"language":562,"meta":563,"style":563},"import { createEvlogIntegration } from 'evlog\u002Fai'\n\nconst integration = createEvlogIntegration(log)\n\nconst result = await generateText({\n  model: somePreWrappedModel,\n  telemetry: {\n    integrations: [integration],\n  },\n})\n","server\u002Fapi\u002Fchat.post.ts",[510,1256,1257,1275,1279,1295,1299,1316,1328,1337,1349,1354],{"__ignoreMap":563},[567,1258,1259,1261,1263,1265,1267,1269,1271,1273],{"class":569,"line":570},[567,1260,574],{"class":573},[567,1262,578],{"class":577},[567,1264,614],{"class":581},[567,1266,585],{"class":577},[567,1268,588],{"class":573},[567,1270,591],{"class":577},[567,1272,623],{"class":594},[567,1274,598],{"class":577},[567,1276,1277],{"class":569,"line":601},[567,1278,632],{"emptyLinePlaceholder":631},[567,1280,1281,1284,1287,1290,1292],{"class":569,"line":628},[567,1282,1283],{"class":651},"const",[567,1285,1286],{"class":581}," integration ",[567,1288,1289],{"class":577},"=",[567,1291,614],{"class":644},[567,1293,1294],{"class":581},"(log)\n",[567,1296,1297],{"class":569,"line":635},[567,1298,632],{"emptyLinePlaceholder":631},[567,1300,1301,1303,1306,1308,1310,1312,1314],{"class":569,"line":671},[567,1302,1283],{"class":651},[567,1304,1305],{"class":581}," result ",[567,1307,1289],{"class":577},[567,1309,728],{"class":573},[567,1311,582],{"class":644},[567,1313,648],{"class":581},[567,1315,735],{"class":577},[567,1317,1318,1321,1323,1326],{"class":569,"line":694},[567,1319,1320],{"class":686},"  model",[567,1322,744],{"class":577},[567,1324,1325],{"class":581}," somePreWrappedModel",[567,1327,766],{"class":577},[567,1329,1330,1333,1335],{"class":569,"line":713},[567,1331,1332],{"class":686},"  telemetry",[567,1334,744],{"class":577},[567,1336,668],{"class":577},[567,1338,1339,1342,1344,1347],{"class":569,"line":718},[567,1340,1341],{"class":686},"    integrations",[567,1343,744],{"class":577},[567,1345,1346],{"class":581}," [integration]",[567,1348,766],{"class":577},[567,1350,1351],{"class":569,"line":738},[567,1352,1353],{"class":577},"  },\n",[567,1355,1356,1358],{"class":569,"line":769},[567,1357,868],{"class":577},[567,1359,691],{"class":581},[541,1361,1363],{"id":1362},"what-the-integration-captures","What the integration captures",[1365,1366,1367,1383],"table",{},[1368,1369,1370],"thead",{},[1371,1372,1373,1377,1380],"tr",{},[1374,1375,1376],"th",{},"Data",[1374,1378,1379],{},"Source",[1374,1381,1382],{},"Description",[1384,1385,1386,1419,1441,1464,1478],"tbody",{},[1371,1387,1388,1394,1404],{},[1389,1390,1391],"td",{},[510,1392,1393],{},"ai.tools[]",[1389,1395,1396,1399,1400,1403],{},[510,1397,1398],{},"onToolExecutionEnd"," (v7) \u002F ",[510,1401,1402],{},"onToolCallFinish"," (v6)",[1389,1405,1406,1407,1409,1410,1409,1412,1414,1415,1418],{},"Per-tool ",[510,1408,1078],{},", ",[510,1411,1095],{},[510,1413,1109],{},", and ",[510,1416,1417],{},"error"," (if failed)",[1371,1420,1421,1426,1438],{},[1389,1422,1423],{},[510,1424,1425],{},"ai.totalDurationMs",[1389,1427,1428,1431,1432,1399,1435,1403],{},[510,1429,1430],{},"onStart"," → ",[510,1433,1434],{},"onEnd",[510,1436,1437],{},"onFinish",[1389,1439,1440],{},"Total wall time from generation start to completion",[1371,1442,1443,1448,1453],{},[1389,1444,1445],{},[510,1446,1447],{},"ai.embedding",[1389,1449,1450,1452],{},[510,1451,530],{}," (v7)",[1389,1454,1455,1456,1459,1460,1463],{},"Auto-captured from ",[510,1457,1458],{},"embed()"," \u002F ",[510,1461,1462],{},"embedMany()"," when telemetry is enabled",[1371,1465,1466,1471,1475],{},[1389,1467,1468],{},[510,1469,1470],{},"ai.finishReason: 'abort'",[1389,1472,1473,1452],{},[510,1474,534],{},[1389,1476,1477],{},"Set when a streaming generation is aborted",[1371,1479,1480,1485,1491],{},[1389,1481,1482],{},[510,1483,1484],{},"ai.error",[1389,1486,1487,1459,1489,1452],{},[510,1488,534],{},[510,1490,538],{},[1389,1492,1493],{},"Abort reason or unrecoverable generation error",[507,1495,1496],{},"The middleware captures tokens, model info, and streaming metrics. The integration captures tool execution timing. Together, they give you complete AI observability.",[541,1498,1500],{"id":1499},"composability","Composability",[507,1502,1503,1506,1507,744],{},[510,1504,1505],{},"ai.wrap()"," works with models that are already wrapped by other tools. If you use supermemory, guardrails middleware, or any other model wrapper, pass the wrapped model to ",[510,1508,1505],{},[557,1510,1512],{"className":559,"code":1511,"filename":1254,"language":562,"meta":563,"style":563},"import { createAILogger } from 'evlog\u002Fai'\nimport { withSupermemory } from '@supermemory\u002Ftools\u002Fai-sdk'\nimport { createGateway } from 'ai'\n\nconst gateway = createGateway({ ... })\nconst ai = createAILogger(log)\nconst base = gateway('anthropic\u002Fclaude-sonnet-4.6')\nconst model = ai.wrap(withSupermemory(base, 'your-org-id', { mode: 'full' }))\n",[510,1513,1514,1532,1552,1571,1575,1598,1611,1633],{"__ignoreMap":563},[567,1515,1516,1518,1520,1522,1524,1526,1528,1530],{"class":569,"line":570},[567,1517,574],{"class":573},[567,1519,578],{"class":577},[567,1521,608],{"class":581},[567,1523,585],{"class":577},[567,1525,588],{"class":573},[567,1527,591],{"class":577},[567,1529,623],{"class":594},[567,1531,598],{"class":577},[567,1533,1534,1536,1538,1541,1543,1545,1547,1550],{"class":569,"line":601},[567,1535,574],{"class":573},[567,1537,578],{"class":577},[567,1539,1540],{"class":581}," withSupermemory",[567,1542,585],{"class":577},[567,1544,588],{"class":573},[567,1546,591],{"class":577},[567,1548,1549],{"class":594},"@supermemory\u002Ftools\u002Fai-sdk",[567,1551,598],{"class":577},[567,1553,1554,1556,1558,1561,1563,1565,1567,1569],{"class":569,"line":628},[567,1555,574],{"class":573},[567,1557,578],{"class":577},[567,1559,1560],{"class":581}," createGateway",[567,1562,585],{"class":577},[567,1564,588],{"class":573},[567,1566,591],{"class":577},[567,1568,595],{"class":594},[567,1570,598],{"class":577},[567,1572,1573],{"class":569,"line":635},[567,1574,632],{"emptyLinePlaceholder":631},[567,1576,1577,1579,1582,1584,1586,1588,1591,1594,1596],{"class":569,"line":671},[567,1578,1283],{"class":651},[567,1580,1581],{"class":581}," gateway ",[567,1583,1289],{"class":577},[567,1585,1560],{"class":644},[567,1587,648],{"class":581},[567,1589,1590],{"class":577},"{",[567,1592,1593],{"class":577}," ...",[567,1595,585],{"class":577},[567,1597,691],{"class":581},[567,1599,1600,1602,1605,1607,1609],{"class":569,"line":694},[567,1601,1283],{"class":651},[567,1603,1604],{"class":581}," ai ",[567,1606,1289],{"class":577},[567,1608,608],{"class":644},[567,1610,1294],{"class":581},[567,1612,1613,1615,1618,1620,1623,1625,1627,1629,1631],{"class":569,"line":713},[567,1614,1283],{"class":651},[567,1616,1617],{"class":581}," base ",[567,1619,1289],{"class":577},[567,1621,1622],{"class":644}," gateway",[567,1624,648],{"class":581},[567,1626,756],{"class":577},[567,1628,759],{"class":594},[567,1630,756],{"class":577},[567,1632,691],{"class":581},[567,1634,1635,1637,1640,1642,1644,1646,1648,1650,1653,1656,1658,1660,1663,1665,1667,1669,1672,1674,1676,1679,1681,1683],{"class":569,"line":718},[567,1636,1283],{"class":651},[567,1638,1639],{"class":581}," model ",[567,1641,1289],{"class":577},[567,1643,699],{"class":581},[567,1645,539],{"class":577},[567,1647,751],{"class":644},[567,1649,648],{"class":581},[567,1651,1652],{"class":644},"withSupermemory",[567,1654,1655],{"class":581},"(base",[567,1657,611],{"class":577},[567,1659,591],{"class":577},[567,1661,1662],{"class":594},"your-org-id",[567,1664,756],{"class":577},[567,1666,611],{"class":577},[567,1668,578],{"class":577},[567,1670,1671],{"class":686}," mode",[567,1673,744],{"class":577},[567,1675,591],{"class":577},[567,1677,1678],{"class":594},"full",[567,1680,756],{"class":577},[567,1682,585],{"class":577},[567,1684,1685],{"class":581},"))\n",[507,1687,1688,1689,1692,1693,744],{},"For explicit middleware composition, use ",[510,1690,1691],{},"createAIMiddleware"," to get the raw middleware and compose it yourself via ",[510,1694,1695],{},"wrapLanguageModel",[557,1697,1699],{"className":559,"code":1698,"filename":1254,"language":562,"meta":563,"style":563},"import { createAIMiddleware } from 'evlog\u002Fai'\nimport { wrapLanguageModel } from 'ai'\n\nconst model = wrapLanguageModel({\n  model: base,\n  middleware: [createAIMiddleware(log, { toolInputs: true }), otherMiddleware],\n})\n",[510,1700,1701,1720,1739,1743,1757,1768,1805],{"__ignoreMap":563},[567,1702,1703,1705,1707,1710,1712,1714,1716,1718],{"class":569,"line":570},[567,1704,574],{"class":573},[567,1706,578],{"class":577},[567,1708,1709],{"class":581}," createAIMiddleware",[567,1711,585],{"class":577},[567,1713,588],{"class":573},[567,1715,591],{"class":577},[567,1717,623],{"class":594},[567,1719,598],{"class":577},[567,1721,1722,1724,1726,1729,1731,1733,1735,1737],{"class":569,"line":601},[567,1723,574],{"class":573},[567,1725,578],{"class":577},[567,1727,1728],{"class":581}," wrapLanguageModel",[567,1730,585],{"class":577},[567,1732,588],{"class":573},[567,1734,591],{"class":577},[567,1736,595],{"class":594},[567,1738,598],{"class":577},[567,1740,1741],{"class":569,"line":628},[567,1742,632],{"emptyLinePlaceholder":631},[567,1744,1745,1747,1749,1751,1753,1755],{"class":569,"line":635},[567,1746,1283],{"class":651},[567,1748,1639],{"class":581},[567,1750,1289],{"class":577},[567,1752,1728],{"class":644},[567,1754,648],{"class":581},[567,1756,735],{"class":577},[567,1758,1759,1761,1763,1766],{"class":569,"line":671},[567,1760,1320],{"class":686},[567,1762,744],{"class":577},[567,1764,1765],{"class":581}," base",[567,1767,766],{"class":577},[567,1769,1770,1773,1775,1777,1779,1782,1784,1786,1789,1791,1794,1796,1798,1800,1803],{"class":569,"line":694},[567,1771,1772],{"class":686},"  middleware",[567,1774,744],{"class":577},[567,1776,808],{"class":581},[567,1778,1691],{"class":644},[567,1780,1781],{"class":581},"(log",[567,1783,611],{"class":577},[567,1785,578],{"class":577},[567,1787,1788],{"class":686}," toolInputs",[567,1790,744],{"class":577},[567,1792,1116],{"class":1793},"sfNiH",[567,1795,585],{"class":577},[567,1797,662],{"class":581},[567,1799,611],{"class":577},[567,1801,1802],{"class":581}," otherMiddleware]",[567,1804,766],{"class":577},[567,1806,1807,1809],{"class":569,"line":713},[567,1808,868],{"class":577},[567,1810,691],{"class":581},[507,1812,1813,1815,1816,1818,1819,1821,1822,1825,1826,1828,1829,1831],{},[510,1814,1691],{}," returns the same middleware that ",[510,1817,512],{}," uses internally. The difference: ",[510,1820,1691],{}," does not include ",[510,1823,1824],{},"captureEmbed"," (embedding models don't use middleware). Use ",[510,1827,512],{}," for the full API, ",[510,1830,1691],{}," when you need explicit middleware ordering.",[1833,1834,1835],"style",{},"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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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":563,"searchDepth":601,"depth":601,"links":1837},[1838,1839,1840,1841],{"id":543,"depth":601,"text":544},{"id":1246,"depth":601,"text":1247},{"id":1362,"depth":601,"text":1363},{"id":1499,"depth":601,"text":1500},"Add tool execution timing and total wall time with createEvlogIntegration. Compose with other middleware like supermemory or guardrails.","md",[1845,1848],{"label":36,"icon":39,"to":303,"color":1846,"variant":1847},"neutral","subtle",{"label":1849,"icon":309,"to":307,"color":1846,"variant":1847},"Usage Patterns",{},{"title":321,"icon":324},{"title":502,"description":1842},"ljndFprj3-OIEQ_L4eF7jVQc3kYReBFcANknnWBSVgM",[1855,1857],{"title":316,"path":317,"stem":318,"description":1856,"icon":319,"children":-1},"Read AI metadata from your handler — persist it, surface it to end-users, bill against it, or stream incremental progress to the client.",{"title":36,"path":332,"stem":333,"description":1858,"icon":39,"children":-1},"Automatically identify users on every request. Every wide event includes who made the request — userId, user profile, and session metadata — with zero manual work.",1785016743790]