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