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