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