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