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