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