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