[{"data":1,"prerenderedAt":1750},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-ai-sdk-telemetry":447,"-use-cases-ai-sdk-telemetry-surround":1745},[4,30,80,245,361,416],{"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,"icon":261,"path":355,"stem":356,"children":357,"page":29},"Eve","\u002Fuse-cases\u002Feve","4.use-cases\u002F5.eve",[358],{"title":36,"path":359,"stem":360,"icon":261},"\u002Fuse-cases\u002Feve\u002Foverview","4.use-cases\u002F5.eve\u002F01.overview",{"title":362,"path":363,"stem":364,"children":365,"page":29},"Extend","\u002Fextend","5.extend",[366,370,375,380,385,389,393,397,401,406,411],{"title":36,"path":367,"stem":368,"icon":369},"\u002Fextend\u002Foverview","5.extend\u002F0.overview","i-lucide-blocks",{"title":371,"path":372,"stem":373,"icon":374},"Stream","\u002Fextend\u002Fstream","5.extend\u002F1.stream","i-lucide-radio-tower",{"title":376,"path":377,"stem":378,"icon":379},"Custom framework","\u002Fextend\u002Fcustom-framework","5.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":381,"path":382,"stem":383,"icon":384},"FS reader","\u002Fextend\u002Ffs-reader","5.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":345,"path":386,"stem":387,"icon":388},"\u002Fextend\u002Fconsumer-recipes","5.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":390,"path":391,"stem":392,"icon":369},"Plugins","\u002Fextend\u002Fplugins","5.extend\u002F4.plugins",{"title":394,"path":395,"stem":396,"icon":352},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","5.extend\u002F5.custom-enrichers",{"title":398,"path":399,"stem":400,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","5.extend\u002F6.tail-sampling",{"title":402,"path":403,"stem":404,"icon":405},"Identity headers","\u002Fextend\u002Fidentity-headers","5.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":407,"path":408,"stem":409,"icon":410},"Custom drains","\u002Fextend\u002Fcustom-drains","5.extend\u002F8.custom-drains","i-lucide-share-2",{"title":412,"path":413,"stem":414,"icon":415},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","5.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":417,"path":418,"stem":419,"children":420,"page":29},"Reference","\u002Freference","6.reference",[421,426,429,434,438,443],{"title":422,"path":423,"stem":424,"icon":425},"Configuration","\u002Freference\u002Fconfiguration","6.reference\u002F1.configuration","i-lucide-settings",{"title":312,"path":427,"stem":428,"icon":315},"\u002Freference\u002Fperformance","6.reference\u002F2.performance",{"title":430,"path":431,"stem":432,"icon":433},"Vite Plugin","\u002Freference\u002Fvite-plugin","6.reference\u002F3.vite-plugin","i-custom-vite",{"title":435,"path":436,"stem":437,"icon":318},"Best Practices","\u002Freference\u002Fbest-practices","6.reference\u002F4.best-practices",{"title":439,"path":440,"stem":441,"icon":442},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","6.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":444,"path":445,"stem":446,"icon":352},"Agent Skills","\u002Freference\u002Fagent-skills","6.reference\u002F6.agent-skills",{"id":448,"title":449,"body":450,"description":1733,"extension":1734,"links":1735,"meta":1741,"navigation":1742,"path":285,"seo":1743,"stem":286,"__hash__":1744},"docs\u002F4.use-cases\u002F2.ai-sdk\u002F05.telemetry.md","Deeper Telemetry",{"type":451,"value":452,"toc":1727},"minimark",[453,469,474,485,815,818,1186,1190,1193,1313,1317,1386,1389,1393,1401,1578,1588,1702,1723],[454,455,456,460,461,464,465,468],"p",{},[457,458,459],"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 ",[457,462,463],{},"createEvlogIntegration()"," on top. It implements the AI SDK's ",[457,466,467],{},"TelemetryIntegration"," interface and captures data middleware alone cannot see.",[470,471,473],"h2",{"id":472},"combined-with-middleware-recommended","Combined with middleware (recommended)",[454,475,476,477,480,481,484],{},"When passed an ",[457,478,479],{},"AILogger",", the integration shares its accumulator. Both paths write to the same ",[457,482,483],{},"ai.*"," field:",[486,487,493],"pre",{"className":488,"code":489,"filename":490,"language":491,"meta":492,"style":492},"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    experimental_telemetry: {\n      isEnabled: true,\n      integrations: [createEvlogIntegration(ai)],\n    },\n  })\n\n  return { text: result.text }\n})\n","server\u002Fapi\u002Fagent.post.ts","typescript","",[457,494,495,528,555,562,598,621,640,645,665,697,718,728,742,765,771,779,784,807],{"__ignoreMap":492},[496,497,500,504,508,512,515,518,521,525],"span",{"class":498,"line":499},"line",1,[496,501,503],{"class":502},"s7zQu","import",[496,505,507],{"class":506},"sMK4o"," {",[496,509,511],{"class":510},"sTEyZ"," generateText",[496,513,514],{"class":506}," }",[496,516,517],{"class":502}," from",[496,519,520],{"class":506}," '",[496,522,524],{"class":523},"sfazB","ai",[496,526,527],{"class":506},"'\n",[496,529,531,533,535,538,541,544,546,548,550,553],{"class":498,"line":530},2,[496,532,503],{"class":502},[496,534,507],{"class":506},[496,536,537],{"class":510}," createAILogger",[496,539,540],{"class":506},",",[496,542,543],{"class":510}," createEvlogIntegration",[496,545,514],{"class":506},[496,547,517],{"class":502},[496,549,520],{"class":506},[496,551,552],{"class":523},"evlog\u002Fai",[496,554,527],{"class":506},[496,556,558],{"class":498,"line":557},3,[496,559,561],{"emptyLinePlaceholder":560},true,"\n",[496,563,565,568,571,575,578,582,585,589,592,595],{"class":498,"line":564},4,[496,566,567],{"class":502},"export",[496,569,570],{"class":502}," default",[496,572,574],{"class":573},"s2Zo4"," defineEventHandler",[496,576,577],{"class":510},"(",[496,579,581],{"class":580},"spNyl","async",[496,583,584],{"class":506}," (",[496,586,588],{"class":587},"sHdIc","event",[496,590,591],{"class":506},")",[496,593,594],{"class":580}," =>",[496,596,597],{"class":506}," {\n",[496,599,601,604,607,610,613,616,618],{"class":498,"line":600},5,[496,602,603],{"class":580},"  const",[496,605,606],{"class":510}," log",[496,608,609],{"class":506}," =",[496,611,612],{"class":573}," useLogger",[496,614,577],{"class":615},"swJcz",[496,617,588],{"class":510},[496,619,620],{"class":615},")\n",[496,622,624,626,629,631,633,635,638],{"class":498,"line":623},6,[496,625,603],{"class":580},[496,627,628],{"class":510}," ai",[496,630,609],{"class":506},[496,632,537],{"class":573},[496,634,577],{"class":615},[496,636,637],{"class":510},"log",[496,639,620],{"class":615},[496,641,643],{"class":498,"line":642},7,[496,644,561],{"emptyLinePlaceholder":560},[496,646,648,650,653,655,658,660,662],{"class":498,"line":647},8,[496,649,603],{"class":580},[496,651,652],{"class":510}," result",[496,654,609],{"class":506},[496,656,657],{"class":502}," await",[496,659,511],{"class":573},[496,661,577],{"class":615},[496,663,664],{"class":506},"{\n",[496,666,668,671,674,676,679,682,684,687,690,692,694],{"class":498,"line":667},9,[496,669,670],{"class":615},"    model",[496,672,673],{"class":506},":",[496,675,628],{"class":510},[496,677,678],{"class":506},".",[496,680,681],{"class":573},"wrap",[496,683,577],{"class":615},[496,685,686],{"class":506},"'",[496,688,689],{"class":523},"anthropic\u002Fclaude-sonnet-4.6",[496,691,686],{"class":506},[496,693,591],{"class":615},[496,695,696],{"class":506},",\n",[496,698,700,703,705,707,710,712,715],{"class":498,"line":699},10,[496,701,702],{"class":615},"    tools",[496,704,673],{"class":506},[496,706,507],{"class":506},[496,708,709],{"class":510}," getWeather",[496,711,540],{"class":506},[496,713,714],{"class":510}," searchDB",[496,716,717],{"class":506}," },\n",[496,719,721,724,726],{"class":498,"line":720},11,[496,722,723],{"class":615},"    experimental_telemetry",[496,725,673],{"class":506},[496,727,597],{"class":506},[496,729,731,734,736,740],{"class":498,"line":730},12,[496,732,733],{"class":615},"      isEnabled",[496,735,673],{"class":506},[496,737,739],{"class":738},"sfNiH"," true",[496,741,696],{"class":506},[496,743,745,748,750,753,756,758,760,763],{"class":498,"line":744},13,[496,746,747],{"class":615},"      integrations",[496,749,673],{"class":506},[496,751,752],{"class":615}," [",[496,754,755],{"class":573},"createEvlogIntegration",[496,757,577],{"class":615},[496,759,524],{"class":510},[496,761,762],{"class":615},")]",[496,764,696],{"class":506},[496,766,768],{"class":498,"line":767},14,[496,769,770],{"class":506},"    },\n",[496,772,774,777],{"class":498,"line":773},15,[496,775,776],{"class":506},"  }",[496,778,620],{"class":615},[496,780,782],{"class":498,"line":781},16,[496,783,561],{"emptyLinePlaceholder":560},[496,785,787,790,792,795,797,799,801,804],{"class":498,"line":786},17,[496,788,789],{"class":502},"  return",[496,791,507],{"class":506},[496,793,794],{"class":615}," text",[496,796,673],{"class":506},[496,798,652],{"class":510},[496,800,678],{"class":506},[496,802,803],{"class":510},"text",[496,805,806],{"class":506}," }\n",[496,808,810,813],{"class":498,"line":809},18,[496,811,812],{"class":506},"}",[496,814,620],{"class":510},[454,816,817],{},"Your wide event now includes per-tool timing:",[486,819,824],{"className":820,"code":821,"filename":822,"language":823,"meta":492,"style":492},"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",[457,825,826,830,844,863,878,899,919,935,951,967,999,1013,1062,1107,1112,1128,1144,1160,1174,1180],{"__ignoreMap":492},[496,827,828],{"class":498,"line":499},[496,829,664],{"class":506},[496,831,832,835,837,840,842],{"class":498,"line":530},[496,833,834],{"class":506},"  \"",[496,836,524],{"class":580},[496,838,839],{"class":506},"\"",[496,841,673],{"class":506},[496,843,597],{"class":506},[496,845,846,849,853,855,857,861],{"class":498,"line":557},[496,847,848],{"class":506},"    \"",[496,850,852],{"class":851},"sBMFI","calls",[496,854,839],{"class":506},[496,856,673],{"class":506},[496,858,860],{"class":859},"sbssI"," 2",[496,862,696],{"class":506},[496,864,865,867,870,872,874,876],{"class":498,"line":564},[496,866,848],{"class":506},[496,868,869],{"class":851},"steps",[496,871,839],{"class":506},[496,873,673],{"class":506},[496,875,860],{"class":859},[496,877,696],{"class":506},[496,879,880,882,885,887,889,892,895,897],{"class":498,"line":600},[496,881,848],{"class":506},[496,883,884],{"class":851},"model",[496,886,839],{"class":506},[496,888,673],{"class":506},[496,890,891],{"class":506}," \"",[496,893,894],{"class":523},"claude-sonnet-4.6",[496,896,839],{"class":506},[496,898,696],{"class":506},[496,900,901,903,906,908,910,912,915,917],{"class":498,"line":623},[496,902,848],{"class":506},[496,904,905],{"class":851},"provider",[496,907,839],{"class":506},[496,909,673],{"class":506},[496,911,891],{"class":506},[496,913,914],{"class":523},"anthropic",[496,916,839],{"class":506},[496,918,696],{"class":506},[496,920,921,923,926,928,930,933],{"class":498,"line":642},[496,922,848],{"class":506},[496,924,925],{"class":851},"inputTokens",[496,927,839],{"class":506},[496,929,673],{"class":506},[496,931,932],{"class":859}," 3500",[496,934,696],{"class":506},[496,936,937,939,942,944,946,949],{"class":498,"line":647},[496,938,848],{"class":506},[496,940,941],{"class":851},"outputTokens",[496,943,839],{"class":506},[496,945,673],{"class":506},[496,947,948],{"class":859}," 800",[496,950,696],{"class":506},[496,952,953,955,958,960,962,965],{"class":498,"line":667},[496,954,848],{"class":506},[496,956,957],{"class":851},"totalTokens",[496,959,839],{"class":506},[496,961,673],{"class":506},[496,963,964],{"class":859}," 4300",[496,966,696],{"class":506},[496,968,969,971,974,976,978,980,982,985,987,989,991,994,996],{"class":498,"line":699},[496,970,848],{"class":506},[496,972,973],{"class":851},"toolCalls",[496,975,839],{"class":506},[496,977,673],{"class":506},[496,979,752],{"class":506},[496,981,839],{"class":506},[496,983,984],{"class":523},"getWeather",[496,986,839],{"class":506},[496,988,540],{"class":506},[496,990,891],{"class":506},[496,992,993],{"class":523},"searchDB",[496,995,839],{"class":506},[496,997,998],{"class":506},"],\n",[496,1000,1001,1003,1006,1008,1010],{"class":498,"line":720},[496,1002,848],{"class":506},[496,1004,1005],{"class":851},"tools",[496,1007,839],{"class":506},[496,1009,673],{"class":506},[496,1011,1012],{"class":506}," [\n",[496,1014,1015,1018,1020,1023,1025,1027,1029,1031,1033,1035,1037,1040,1042,1044,1047,1049,1051,1054,1056,1058,1060],{"class":498,"line":730},[496,1016,1017],{"class":506},"      {",[496,1019,891],{"class":506},[496,1021,1022],{"class":859},"name",[496,1024,839],{"class":506},[496,1026,673],{"class":506},[496,1028,891],{"class":506},[496,1030,984],{"class":523},[496,1032,839],{"class":506},[496,1034,540],{"class":506},[496,1036,891],{"class":506},[496,1038,1039],{"class":859},"durationMs",[496,1041,839],{"class":506},[496,1043,673],{"class":506},[496,1045,1046],{"class":859}," 150",[496,1048,540],{"class":506},[496,1050,891],{"class":506},[496,1052,1053],{"class":859},"success",[496,1055,839],{"class":506},[496,1057,673],{"class":506},[496,1059,739],{"class":506},[496,1061,717],{"class":506},[496,1063,1064,1066,1068,1070,1072,1074,1076,1078,1080,1082,1084,1086,1088,1090,1093,1095,1097,1099,1101,1103,1105],{"class":498,"line":744},[496,1065,1017],{"class":506},[496,1067,891],{"class":506},[496,1069,1022],{"class":859},[496,1071,839],{"class":506},[496,1073,673],{"class":506},[496,1075,891],{"class":506},[496,1077,993],{"class":523},[496,1079,839],{"class":506},[496,1081,540],{"class":506},[496,1083,891],{"class":506},[496,1085,1039],{"class":859},[496,1087,839],{"class":506},[496,1089,673],{"class":506},[496,1091,1092],{"class":859}," 45",[496,1094,540],{"class":506},[496,1096,891],{"class":506},[496,1098,1053],{"class":859},[496,1100,839],{"class":506},[496,1102,673],{"class":506},[496,1104,739],{"class":506},[496,1106,806],{"class":506},[496,1108,1109],{"class":498,"line":767},[496,1110,1111],{"class":506},"    ],\n",[496,1113,1114,1116,1119,1121,1123,1126],{"class":498,"line":773},[496,1115,848],{"class":506},[496,1117,1118],{"class":851},"totalDurationMs",[496,1120,839],{"class":506},[496,1122,673],{"class":506},[496,1124,1125],{"class":859}," 2340",[496,1127,696],{"class":506},[496,1129,1130,1132,1135,1137,1139,1142],{"class":498,"line":781},[496,1131,848],{"class":506},[496,1133,1134],{"class":851},"msToFirstChunk",[496,1136,839],{"class":506},[496,1138,673],{"class":506},[496,1140,1141],{"class":859}," 180",[496,1143,696],{"class":506},[496,1145,1146,1148,1151,1153,1155,1158],{"class":498,"line":786},[496,1147,848],{"class":506},[496,1149,1150],{"class":851},"msToFinish",[496,1152,839],{"class":506},[496,1154,673],{"class":506},[496,1156,1157],{"class":859}," 2100",[496,1159,696],{"class":506},[496,1161,1162,1164,1167,1169,1171],{"class":498,"line":809},[496,1163,848],{"class":506},[496,1165,1166],{"class":851},"tokensPerSecond",[496,1168,839],{"class":506},[496,1170,673],{"class":506},[496,1172,1173],{"class":859}," 380\n",[496,1175,1177],{"class":498,"line":1176},19,[496,1178,1179],{"class":506},"  }\n",[496,1181,1183],{"class":498,"line":1182},20,[496,1184,1185],{"class":506},"}\n",[470,1187,1189],{"id":1188},"standalone-without-middleware","Standalone (without middleware)",[454,1191,1192],{},"If your model is already wrapped (e.g. by another middleware), pass the request logger directly:",[486,1194,1197],{"className":488,"code":1195,"filename":1196,"language":491,"meta":492,"style":492},"import { createEvlogIntegration } from 'evlog\u002Fai'\n\nconst integration = createEvlogIntegration(log)\n\nconst result = await generateText({\n  model: somePreWrappedModel,\n  experimental_telemetry: {\n    isEnabled: true,\n    integrations: [integration],\n  },\n})\n","server\u002Fapi\u002Fchat.post.ts",[457,1198,1199,1217,1221,1237,1241,1258,1270,1279,1290,1302,1307],{"__ignoreMap":492},[496,1200,1201,1203,1205,1207,1209,1211,1213,1215],{"class":498,"line":499},[496,1202,503],{"class":502},[496,1204,507],{"class":506},[496,1206,543],{"class":510},[496,1208,514],{"class":506},[496,1210,517],{"class":502},[496,1212,520],{"class":506},[496,1214,552],{"class":523},[496,1216,527],{"class":506},[496,1218,1219],{"class":498,"line":530},[496,1220,561],{"emptyLinePlaceholder":560},[496,1222,1223,1226,1229,1232,1234],{"class":498,"line":557},[496,1224,1225],{"class":580},"const",[496,1227,1228],{"class":510}," integration ",[496,1230,1231],{"class":506},"=",[496,1233,543],{"class":573},[496,1235,1236],{"class":510},"(log)\n",[496,1238,1239],{"class":498,"line":564},[496,1240,561],{"emptyLinePlaceholder":560},[496,1242,1243,1245,1248,1250,1252,1254,1256],{"class":498,"line":600},[496,1244,1225],{"class":580},[496,1246,1247],{"class":510}," result ",[496,1249,1231],{"class":506},[496,1251,657],{"class":502},[496,1253,511],{"class":573},[496,1255,577],{"class":510},[496,1257,664],{"class":506},[496,1259,1260,1263,1265,1268],{"class":498,"line":623},[496,1261,1262],{"class":615},"  model",[496,1264,673],{"class":506},[496,1266,1267],{"class":510}," somePreWrappedModel",[496,1269,696],{"class":506},[496,1271,1272,1275,1277],{"class":498,"line":642},[496,1273,1274],{"class":615},"  experimental_telemetry",[496,1276,673],{"class":506},[496,1278,597],{"class":506},[496,1280,1281,1284,1286,1288],{"class":498,"line":647},[496,1282,1283],{"class":615},"    isEnabled",[496,1285,673],{"class":506},[496,1287,739],{"class":738},[496,1289,696],{"class":506},[496,1291,1292,1295,1297,1300],{"class":498,"line":667},[496,1293,1294],{"class":615},"    integrations",[496,1296,673],{"class":506},[496,1298,1299],{"class":510}," [integration]",[496,1301,696],{"class":506},[496,1303,1304],{"class":498,"line":699},[496,1305,1306],{"class":506},"  },\n",[496,1308,1309,1311],{"class":498,"line":720},[496,1310,812],{"class":506},[496,1312,620],{"class":510},[470,1314,1316],{"id":1315},"what-the-integration-captures","What the integration captures",[1318,1319,1320,1336],"table",{},[1321,1322,1323],"thead",{},[1324,1325,1326,1330,1333],"tr",{},[1327,1328,1329],"th",{},"Data",[1327,1331,1332],{},"Source",[1327,1334,1335],{},"Description",[1337,1338,1339,1367],"tbody",{},[1324,1340,1341,1347,1352],{},[1342,1343,1344],"td",{},[457,1345,1346],{},"ai.tools[]",[1342,1348,1349],{},[457,1350,1351],{},"onToolCallFinish",[1342,1353,1354,1355,1357,1358,1357,1360,1362,1363,1366],{},"Per-tool ",[457,1356,1022],{},", ",[457,1359,1039],{},[457,1361,1053],{},", and ",[457,1364,1365],{},"error"," (if failed)",[1324,1368,1369,1374,1383],{},[1342,1370,1371],{},[457,1372,1373],{},"ai.totalDurationMs",[1342,1375,1376,1379,1380],{},[457,1377,1378],{},"onStart"," → ",[457,1381,1382],{},"onFinish",[1342,1384,1385],{},"Total wall time from generation start to completion",[454,1387,1388],{},"The middleware captures tokens, model info, and streaming metrics. The integration captures tool execution timing. Together, they give you complete AI observability.",[470,1390,1392],{"id":1391},"composability","Composability",[454,1394,1395,1398,1399,673],{},[457,1396,1397],{},"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 ",[457,1400,1397],{},[486,1402,1404],{"className":488,"code":1403,"filename":1196,"language":491,"meta":492,"style":492},"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",[457,1405,1406,1424,1444,1463,1467,1490,1503,1525],{"__ignoreMap":492},[496,1407,1408,1410,1412,1414,1416,1418,1420,1422],{"class":498,"line":499},[496,1409,503],{"class":502},[496,1411,507],{"class":506},[496,1413,537],{"class":510},[496,1415,514],{"class":506},[496,1417,517],{"class":502},[496,1419,520],{"class":506},[496,1421,552],{"class":523},[496,1423,527],{"class":506},[496,1425,1426,1428,1430,1433,1435,1437,1439,1442],{"class":498,"line":530},[496,1427,503],{"class":502},[496,1429,507],{"class":506},[496,1431,1432],{"class":510}," withSupermemory",[496,1434,514],{"class":506},[496,1436,517],{"class":502},[496,1438,520],{"class":506},[496,1440,1441],{"class":523},"@supermemory\u002Ftools\u002Fai-sdk",[496,1443,527],{"class":506},[496,1445,1446,1448,1450,1453,1455,1457,1459,1461],{"class":498,"line":557},[496,1447,503],{"class":502},[496,1449,507],{"class":506},[496,1451,1452],{"class":510}," createGateway",[496,1454,514],{"class":506},[496,1456,517],{"class":502},[496,1458,520],{"class":506},[496,1460,524],{"class":523},[496,1462,527],{"class":506},[496,1464,1465],{"class":498,"line":564},[496,1466,561],{"emptyLinePlaceholder":560},[496,1468,1469,1471,1474,1476,1478,1480,1483,1486,1488],{"class":498,"line":600},[496,1470,1225],{"class":580},[496,1472,1473],{"class":510}," gateway ",[496,1475,1231],{"class":506},[496,1477,1452],{"class":573},[496,1479,577],{"class":510},[496,1481,1482],{"class":506},"{",[496,1484,1485],{"class":506}," ...",[496,1487,514],{"class":506},[496,1489,620],{"class":510},[496,1491,1492,1494,1497,1499,1501],{"class":498,"line":623},[496,1493,1225],{"class":580},[496,1495,1496],{"class":510}," ai ",[496,1498,1231],{"class":506},[496,1500,537],{"class":573},[496,1502,1236],{"class":510},[496,1504,1505,1507,1510,1512,1515,1517,1519,1521,1523],{"class":498,"line":642},[496,1506,1225],{"class":580},[496,1508,1509],{"class":510}," base ",[496,1511,1231],{"class":506},[496,1513,1514],{"class":573}," gateway",[496,1516,577],{"class":510},[496,1518,686],{"class":506},[496,1520,689],{"class":523},[496,1522,686],{"class":506},[496,1524,620],{"class":510},[496,1526,1527,1529,1532,1534,1536,1538,1540,1542,1545,1548,1550,1552,1555,1557,1559,1561,1564,1566,1568,1571,1573,1575],{"class":498,"line":647},[496,1528,1225],{"class":580},[496,1530,1531],{"class":510}," model ",[496,1533,1231],{"class":506},[496,1535,628],{"class":510},[496,1537,678],{"class":506},[496,1539,681],{"class":573},[496,1541,577],{"class":510},[496,1543,1544],{"class":573},"withSupermemory",[496,1546,1547],{"class":510},"(base",[496,1549,540],{"class":506},[496,1551,520],{"class":506},[496,1553,1554],{"class":523},"your-org-id",[496,1556,686],{"class":506},[496,1558,540],{"class":506},[496,1560,507],{"class":506},[496,1562,1563],{"class":615}," mode",[496,1565,673],{"class":506},[496,1567,520],{"class":506},[496,1569,1570],{"class":523},"full",[496,1572,686],{"class":506},[496,1574,514],{"class":506},[496,1576,1577],{"class":510},"))\n",[454,1579,1580,1581,1584,1585,673],{},"For explicit middleware composition, use ",[457,1582,1583],{},"createAIMiddleware"," to get the raw middleware and compose it yourself via ",[457,1586,1587],{},"wrapLanguageModel",[486,1589,1591],{"className":488,"code":1590,"filename":1196,"language":491,"meta":492,"style":492},"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",[457,1592,1593,1612,1631,1635,1649,1660,1696],{"__ignoreMap":492},[496,1594,1595,1597,1599,1602,1604,1606,1608,1610],{"class":498,"line":499},[496,1596,503],{"class":502},[496,1598,507],{"class":506},[496,1600,1601],{"class":510}," createAIMiddleware",[496,1603,514],{"class":506},[496,1605,517],{"class":502},[496,1607,520],{"class":506},[496,1609,552],{"class":523},[496,1611,527],{"class":506},[496,1613,1614,1616,1618,1621,1623,1625,1627,1629],{"class":498,"line":530},[496,1615,503],{"class":502},[496,1617,507],{"class":506},[496,1619,1620],{"class":510}," wrapLanguageModel",[496,1622,514],{"class":506},[496,1624,517],{"class":502},[496,1626,520],{"class":506},[496,1628,524],{"class":523},[496,1630,527],{"class":506},[496,1632,1633],{"class":498,"line":557},[496,1634,561],{"emptyLinePlaceholder":560},[496,1636,1637,1639,1641,1643,1645,1647],{"class":498,"line":564},[496,1638,1225],{"class":580},[496,1640,1531],{"class":510},[496,1642,1231],{"class":506},[496,1644,1620],{"class":573},[496,1646,577],{"class":510},[496,1648,664],{"class":506},[496,1650,1651,1653,1655,1658],{"class":498,"line":600},[496,1652,1262],{"class":615},[496,1654,673],{"class":506},[496,1656,1657],{"class":510}," base",[496,1659,696],{"class":506},[496,1661,1662,1665,1667,1669,1671,1674,1676,1678,1681,1683,1685,1687,1689,1691,1694],{"class":498,"line":623},[496,1663,1664],{"class":615},"  middleware",[496,1666,673],{"class":506},[496,1668,752],{"class":510},[496,1670,1583],{"class":573},[496,1672,1673],{"class":510},"(log",[496,1675,540],{"class":506},[496,1677,507],{"class":506},[496,1679,1680],{"class":615}," toolInputs",[496,1682,673],{"class":506},[496,1684,739],{"class":738},[496,1686,514],{"class":506},[496,1688,591],{"class":510},[496,1690,540],{"class":506},[496,1692,1693],{"class":510}," otherMiddleware]",[496,1695,696],{"class":506},[496,1697,1698,1700],{"class":498,"line":642},[496,1699,812],{"class":506},[496,1701,620],{"class":510},[454,1703,1704,1706,1707,1709,1710,1712,1713,1716,1717,1719,1720,1722],{},[457,1705,1583],{}," returns the same middleware that ",[457,1708,459],{}," uses internally. The difference: ",[457,1711,1583],{}," does not include ",[457,1714,1715],{},"captureEmbed"," (embedding models don't use middleware). Use ",[457,1718,459],{}," for the full API, ",[457,1721,1583],{}," when you need explicit middleware ordering.",[1724,1725,1726],"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 pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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}",{"title":492,"searchDepth":530,"depth":530,"links":1728},[1729,1730,1731,1732],{"id":472,"depth":530,"text":473},{"id":1188,"depth":530,"text":1189},{"id":1315,"depth":530,"text":1316},{"id":1391,"depth":530,"text":1392},"Add tool execution timing and total wall time with createEvlogIntegration. Compose with other middleware like supermemory or guardrails.","md",[1736,1739],{"label":36,"icon":39,"to":266,"color":1737,"variant":1738},"neutral","subtle",{"label":1740,"icon":272,"to":270,"color":1737,"variant":1738},"Usage Patterns",{},{"title":284,"icon":287},{"title":449,"description":1733},"6InUBQXtGsOOX89a2nHLcicluLWiERO3jx8_3vFJMrI",[1746,1748],{"title":279,"path":280,"stem":281,"description":1747,"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":1749,"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.",1782924663738]