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