[{"data":1,"prerenderedAt":1892},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-ai-sdk-telemetry":533,"-use-cases-ai-sdk-telemetry-surround":1887},[4,29,76,122,304,436,495],{"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,432],{"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,"icon":431},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":433,"path":434,"stem":435},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve",{"title":437,"path":438,"stem":439,"children":440,"page":28},"Extend","\u002Fextend","6.extend",[441,445,450,455,459,464,468,472,476,481,486,491],{"title":128,"path":442,"stem":443,"icon":444},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":446,"path":447,"stem":448,"icon":449},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":451,"path":452,"stem":453,"icon":454},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":456,"path":457,"stem":458,"icon":449},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":460,"path":461,"stem":462,"icon":463},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":403,"path":465,"stem":466,"icon":467},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":469,"path":470,"stem":471},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":473,"path":474,"stem":475,"icon":431},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"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},"Drain Pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline",{"title":424,"path":496,"stem":497,"children":498,"page":28},"\u002Freference","7.reference",[499,503,508,511,516,520,525,529],{"title":128,"path":500,"stem":501,"icon":502},"\u002Freference\u002Foverview","7.reference\u002F0.overview","i-lucide-book-marked",{"title":504,"path":505,"stem":506,"icon":507},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":370,"path":509,"stem":510,"icon":373},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":512,"path":513,"stem":514,"icon":515},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":517,"path":518,"stem":519,"icon":376},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":521,"path":522,"stem":523,"icon":524},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":526,"path":527,"stem":528,"icon":431},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":530,"path":531,"stem":532},"Log cost","\u002Freference\u002Fcost","7.reference\u002F7.cost",{"id":534,"title":535,"body":536,"description":1875,"extension":1876,"links":1877,"meta":1883,"navigation":1884,"path":343,"seo":1885,"stem":344,"__hash__":1886},"docs\u002F5.use-cases\u002F2.ai-sdk\u002F05.telemetry.md","Deeper Telemetry",{"type":537,"value":538,"toc":1869},"minimark",[539,558,573,578,589,904,907,1277,1281,1284,1393,1397,1527,1530,1534,1542,1719,1729,1844,1865],[540,541,542,546,547,550,551,554,555,557],"p",{},[543,544,545],"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 ",[543,548,549],{},"createEvlogIntegration()"," on top. It implements the AI SDK telemetry interface (v6 ",[543,552,553],{},"TelemetryIntegration",", v7 ",[543,556,342],{},") and captures data middleware alone cannot see.",[540,559,560,561,564,565,568,569,572],{},"On AI SDK v7, the integration also auto-captures embeddings via ",[543,562,563],{},"onEmbedEnd",", records stream aborts via ",[543,566,567],{},"onAbort",", and surfaces unrecoverable errors via ",[543,570,571],{},"onError",".",[574,575,577],"h2",{"id":576},"combined-with-middleware-recommended","Combined with middleware (recommended)",[540,579,580,581,584,585,588],{},"When passed an ",[543,582,583],{},"AILogger",", the integration shares its accumulator. Both paths write to the same ",[543,586,587],{},"ai.*"," field:",[590,591,597],"pre",{"className":592,"code":593,"filename":594,"language":595,"meta":596,"style":596},"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","",[543,598,599,632,659,666,702,725,744,749,769,800,821,831,854,860,868,873,896],{"__ignoreMap":596},[600,601,604,608,612,616,619,622,625,629],"span",{"class":602,"line":603},"line",1,[600,605,607],{"class":606},"s7zQu","import",[600,609,611],{"class":610},"sMK4o"," {",[600,613,615],{"class":614},"sTEyZ"," generateText",[600,617,618],{"class":610}," }",[600,620,621],{"class":606}," from",[600,623,624],{"class":610}," '",[600,626,628],{"class":627},"sfazB","ai",[600,630,631],{"class":610},"'\n",[600,633,635,637,639,642,645,648,650,652,654,657],{"class":602,"line":634},2,[600,636,607],{"class":606},[600,638,611],{"class":610},[600,640,641],{"class":614}," createAILogger",[600,643,644],{"class":610},",",[600,646,647],{"class":614}," createEvlogIntegration",[600,649,618],{"class":610},[600,651,621],{"class":606},[600,653,624],{"class":610},[600,655,656],{"class":627},"evlog\u002Fai",[600,658,631],{"class":610},[600,660,662],{"class":602,"line":661},3,[600,663,665],{"emptyLinePlaceholder":664},true,"\n",[600,667,669,672,675,679,682,686,689,693,696,699],{"class":602,"line":668},4,[600,670,671],{"class":606},"export",[600,673,674],{"class":606}," default",[600,676,678],{"class":677},"s2Zo4"," defineEventHandler",[600,680,681],{"class":614},"(",[600,683,685],{"class":684},"spNyl","async",[600,687,688],{"class":610}," (",[600,690,692],{"class":691},"sHdIc","event",[600,694,695],{"class":610},")",[600,697,698],{"class":684}," =>",[600,700,701],{"class":610}," {\n",[600,703,705,708,711,714,717,720,722],{"class":602,"line":704},5,[600,706,707],{"class":684},"  const",[600,709,710],{"class":614}," log",[600,712,713],{"class":610}," =",[600,715,716],{"class":677}," useLogger",[600,718,681],{"class":719},"swJcz",[600,721,692],{"class":614},[600,723,724],{"class":719},")\n",[600,726,728,730,733,735,737,739,742],{"class":602,"line":727},6,[600,729,707],{"class":684},[600,731,732],{"class":614}," ai",[600,734,713],{"class":610},[600,736,641],{"class":677},[600,738,681],{"class":719},[600,740,741],{"class":614},"log",[600,743,724],{"class":719},[600,745,747],{"class":602,"line":746},7,[600,748,665],{"emptyLinePlaceholder":664},[600,750,752,754,757,759,762,764,766],{"class":602,"line":751},8,[600,753,707],{"class":684},[600,755,756],{"class":614}," result",[600,758,713],{"class":610},[600,760,761],{"class":606}," await",[600,763,615],{"class":677},[600,765,681],{"class":719},[600,767,768],{"class":610},"{\n",[600,770,772,775,778,780,782,785,787,790,793,795,797],{"class":602,"line":771},9,[600,773,774],{"class":719},"    model",[600,776,777],{"class":610},":",[600,779,732],{"class":614},[600,781,572],{"class":610},[600,783,784],{"class":677},"wrap",[600,786,681],{"class":719},[600,788,789],{"class":610},"'",[600,791,792],{"class":627},"anthropic\u002Fclaude-sonnet-4.6",[600,794,789],{"class":610},[600,796,695],{"class":719},[600,798,799],{"class":610},",\n",[600,801,803,806,808,810,813,815,818],{"class":602,"line":802},10,[600,804,805],{"class":719},"    tools",[600,807,777],{"class":610},[600,809,611],{"class":610},[600,811,812],{"class":614}," getWeather",[600,814,644],{"class":610},[600,816,817],{"class":614}," searchDB",[600,819,820],{"class":610}," },\n",[600,822,824,827,829],{"class":602,"line":823},11,[600,825,826],{"class":719},"    telemetry",[600,828,777],{"class":610},[600,830,701],{"class":610},[600,832,834,837,839,842,845,847,849,852],{"class":602,"line":833},12,[600,835,836],{"class":719},"      integrations",[600,838,777],{"class":610},[600,840,841],{"class":719}," [",[600,843,844],{"class":677},"createEvlogIntegration",[600,846,681],{"class":719},[600,848,628],{"class":614},[600,850,851],{"class":719},")]",[600,853,799],{"class":610},[600,855,857],{"class":602,"line":856},13,[600,858,859],{"class":610},"    },\n",[600,861,863,866],{"class":602,"line":862},14,[600,864,865],{"class":610},"  }",[600,867,724],{"class":719},[600,869,871],{"class":602,"line":870},15,[600,872,665],{"emptyLinePlaceholder":664},[600,874,876,879,881,884,886,888,890,893],{"class":602,"line":875},16,[600,877,878],{"class":606},"  return",[600,880,611],{"class":610},[600,882,883],{"class":719}," text",[600,885,777],{"class":610},[600,887,756],{"class":614},[600,889,572],{"class":610},[600,891,892],{"class":614},"text",[600,894,895],{"class":610}," }\n",[600,897,899,902],{"class":602,"line":898},17,[600,900,901],{"class":610},"}",[600,903,724],{"class":614},[540,905,906],{},"Your wide event now includes per-tool timing:",[590,908,913],{"className":909,"code":910,"filename":911,"language":912,"meta":596,"style":596},"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",[543,914,915,919,933,952,967,988,1008,1024,1040,1056,1088,1102,1152,1197,1202,1218,1234,1250,1265,1271],{"__ignoreMap":596},[600,916,917],{"class":602,"line":603},[600,918,768],{"class":610},[600,920,921,924,926,929,931],{"class":602,"line":634},[600,922,923],{"class":610},"  \"",[600,925,628],{"class":684},[600,927,928],{"class":610},"\"",[600,930,777],{"class":610},[600,932,701],{"class":610},[600,934,935,938,942,944,946,950],{"class":602,"line":661},[600,936,937],{"class":610},"    \"",[600,939,941],{"class":940},"sBMFI","calls",[600,943,928],{"class":610},[600,945,777],{"class":610},[600,947,949],{"class":948},"sbssI"," 2",[600,951,799],{"class":610},[600,953,954,956,959,961,963,965],{"class":602,"line":668},[600,955,937],{"class":610},[600,957,958],{"class":940},"steps",[600,960,928],{"class":610},[600,962,777],{"class":610},[600,964,949],{"class":948},[600,966,799],{"class":610},[600,968,969,971,974,976,978,981,984,986],{"class":602,"line":704},[600,970,937],{"class":610},[600,972,973],{"class":940},"model",[600,975,928],{"class":610},[600,977,777],{"class":610},[600,979,980],{"class":610}," \"",[600,982,983],{"class":627},"claude-sonnet-4.6",[600,985,928],{"class":610},[600,987,799],{"class":610},[600,989,990,992,995,997,999,1001,1004,1006],{"class":602,"line":727},[600,991,937],{"class":610},[600,993,994],{"class":940},"provider",[600,996,928],{"class":610},[600,998,777],{"class":610},[600,1000,980],{"class":610},[600,1002,1003],{"class":627},"anthropic",[600,1005,928],{"class":610},[600,1007,799],{"class":610},[600,1009,1010,1012,1015,1017,1019,1022],{"class":602,"line":746},[600,1011,937],{"class":610},[600,1013,1014],{"class":940},"inputTokens",[600,1016,928],{"class":610},[600,1018,777],{"class":610},[600,1020,1021],{"class":948}," 3500",[600,1023,799],{"class":610},[600,1025,1026,1028,1031,1033,1035,1038],{"class":602,"line":751},[600,1027,937],{"class":610},[600,1029,1030],{"class":940},"outputTokens",[600,1032,928],{"class":610},[600,1034,777],{"class":610},[600,1036,1037],{"class":948}," 800",[600,1039,799],{"class":610},[600,1041,1042,1044,1047,1049,1051,1054],{"class":602,"line":771},[600,1043,937],{"class":610},[600,1045,1046],{"class":940},"totalTokens",[600,1048,928],{"class":610},[600,1050,777],{"class":610},[600,1052,1053],{"class":948}," 4300",[600,1055,799],{"class":610},[600,1057,1058,1060,1063,1065,1067,1069,1071,1074,1076,1078,1080,1083,1085],{"class":602,"line":802},[600,1059,937],{"class":610},[600,1061,1062],{"class":940},"toolCalls",[600,1064,928],{"class":610},[600,1066,777],{"class":610},[600,1068,841],{"class":610},[600,1070,928],{"class":610},[600,1072,1073],{"class":627},"getWeather",[600,1075,928],{"class":610},[600,1077,644],{"class":610},[600,1079,980],{"class":610},[600,1081,1082],{"class":627},"searchDB",[600,1084,928],{"class":610},[600,1086,1087],{"class":610},"],\n",[600,1089,1090,1092,1095,1097,1099],{"class":602,"line":823},[600,1091,937],{"class":610},[600,1093,1094],{"class":940},"tools",[600,1096,928],{"class":610},[600,1098,777],{"class":610},[600,1100,1101],{"class":610}," [\n",[600,1103,1104,1107,1109,1112,1114,1116,1118,1120,1122,1124,1126,1129,1131,1133,1136,1138,1140,1143,1145,1147,1150],{"class":602,"line":833},[600,1105,1106],{"class":610},"      {",[600,1108,980],{"class":610},[600,1110,1111],{"class":948},"name",[600,1113,928],{"class":610},[600,1115,777],{"class":610},[600,1117,980],{"class":610},[600,1119,1073],{"class":627},[600,1121,928],{"class":610},[600,1123,644],{"class":610},[600,1125,980],{"class":610},[600,1127,1128],{"class":948},"durationMs",[600,1130,928],{"class":610},[600,1132,777],{"class":610},[600,1134,1135],{"class":948}," 150",[600,1137,644],{"class":610},[600,1139,980],{"class":610},[600,1141,1142],{"class":948},"success",[600,1144,928],{"class":610},[600,1146,777],{"class":610},[600,1148,1149],{"class":610}," true",[600,1151,820],{"class":610},[600,1153,1154,1156,1158,1160,1162,1164,1166,1168,1170,1172,1174,1176,1178,1180,1183,1185,1187,1189,1191,1193,1195],{"class":602,"line":856},[600,1155,1106],{"class":610},[600,1157,980],{"class":610},[600,1159,1111],{"class":948},[600,1161,928],{"class":610},[600,1163,777],{"class":610},[600,1165,980],{"class":610},[600,1167,1082],{"class":627},[600,1169,928],{"class":610},[600,1171,644],{"class":610},[600,1173,980],{"class":610},[600,1175,1128],{"class":948},[600,1177,928],{"class":610},[600,1179,777],{"class":610},[600,1181,1182],{"class":948}," 45",[600,1184,644],{"class":610},[600,1186,980],{"class":610},[600,1188,1142],{"class":948},[600,1190,928],{"class":610},[600,1192,777],{"class":610},[600,1194,1149],{"class":610},[600,1196,895],{"class":610},[600,1198,1199],{"class":602,"line":862},[600,1200,1201],{"class":610},"    ],\n",[600,1203,1204,1206,1209,1211,1213,1216],{"class":602,"line":870},[600,1205,937],{"class":610},[600,1207,1208],{"class":940},"totalDurationMs",[600,1210,928],{"class":610},[600,1212,777],{"class":610},[600,1214,1215],{"class":948}," 2340",[600,1217,799],{"class":610},[600,1219,1220,1222,1225,1227,1229,1232],{"class":602,"line":875},[600,1221,937],{"class":610},[600,1223,1224],{"class":940},"msToFirstChunk",[600,1226,928],{"class":610},[600,1228,777],{"class":610},[600,1230,1231],{"class":948}," 180",[600,1233,799],{"class":610},[600,1235,1236,1238,1241,1243,1245,1248],{"class":602,"line":898},[600,1237,937],{"class":610},[600,1239,1240],{"class":940},"msToFinish",[600,1242,928],{"class":610},[600,1244,777],{"class":610},[600,1246,1247],{"class":948}," 2100",[600,1249,799],{"class":610},[600,1251,1253,1255,1258,1260,1262],{"class":602,"line":1252},18,[600,1254,937],{"class":610},[600,1256,1257],{"class":940},"tokensPerSecond",[600,1259,928],{"class":610},[600,1261,777],{"class":610},[600,1263,1264],{"class":948}," 380\n",[600,1266,1268],{"class":602,"line":1267},19,[600,1269,1270],{"class":610},"  }\n",[600,1272,1274],{"class":602,"line":1273},20,[600,1275,1276],{"class":610},"}\n",[574,1278,1280],{"id":1279},"standalone-without-middleware","Standalone (without middleware)",[540,1282,1283],{},"If your model is already wrapped (e.g. by another middleware), pass the request logger directly:",[590,1285,1288],{"className":592,"code":1286,"filename":1287,"language":595,"meta":596,"style":596},"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",[543,1289,1290,1308,1312,1328,1332,1349,1361,1370,1382,1387],{"__ignoreMap":596},[600,1291,1292,1294,1296,1298,1300,1302,1304,1306],{"class":602,"line":603},[600,1293,607],{"class":606},[600,1295,611],{"class":610},[600,1297,647],{"class":614},[600,1299,618],{"class":610},[600,1301,621],{"class":606},[600,1303,624],{"class":610},[600,1305,656],{"class":627},[600,1307,631],{"class":610},[600,1309,1310],{"class":602,"line":634},[600,1311,665],{"emptyLinePlaceholder":664},[600,1313,1314,1317,1320,1323,1325],{"class":602,"line":661},[600,1315,1316],{"class":684},"const",[600,1318,1319],{"class":614}," integration ",[600,1321,1322],{"class":610},"=",[600,1324,647],{"class":677},[600,1326,1327],{"class":614},"(log)\n",[600,1329,1330],{"class":602,"line":668},[600,1331,665],{"emptyLinePlaceholder":664},[600,1333,1334,1336,1339,1341,1343,1345,1347],{"class":602,"line":704},[600,1335,1316],{"class":684},[600,1337,1338],{"class":614}," result ",[600,1340,1322],{"class":610},[600,1342,761],{"class":606},[600,1344,615],{"class":677},[600,1346,681],{"class":614},[600,1348,768],{"class":610},[600,1350,1351,1354,1356,1359],{"class":602,"line":727},[600,1352,1353],{"class":719},"  model",[600,1355,777],{"class":610},[600,1357,1358],{"class":614}," somePreWrappedModel",[600,1360,799],{"class":610},[600,1362,1363,1366,1368],{"class":602,"line":746},[600,1364,1365],{"class":719},"  telemetry",[600,1367,777],{"class":610},[600,1369,701],{"class":610},[600,1371,1372,1375,1377,1380],{"class":602,"line":751},[600,1373,1374],{"class":719},"    integrations",[600,1376,777],{"class":610},[600,1378,1379],{"class":614}," [integration]",[600,1381,799],{"class":610},[600,1383,1384],{"class":602,"line":771},[600,1385,1386],{"class":610},"  },\n",[600,1388,1389,1391],{"class":602,"line":802},[600,1390,901],{"class":610},[600,1392,724],{"class":614},[574,1394,1396],{"id":1395},"what-lands-on-the-wide-event","What lands on the wide event",[1398,1399,1400,1416],"table",{},[1401,1402,1403],"thead",{},[1404,1405,1406,1410,1413],"tr",{},[1407,1408,1409],"th",{},"Data",[1407,1411,1412],{},"Source",[1407,1414,1415],{},"Description",[1417,1418,1419,1452,1474,1497,1511],"tbody",{},[1404,1420,1421,1427,1437],{},[1422,1423,1424],"td",{},[543,1425,1426],{},"ai.tools[]",[1422,1428,1429,1432,1433,1436],{},[543,1430,1431],{},"onToolExecutionEnd"," (v7) \u002F ",[543,1434,1435],{},"onToolCallFinish"," (v6)",[1422,1438,1439,1440,1442,1443,1442,1445,1447,1448,1451],{},"Per-tool ",[543,1441,1111],{},", ",[543,1444,1128],{},[543,1446,1142],{},", and ",[543,1449,1450],{},"error"," (if failed)",[1404,1453,1454,1459,1471],{},[1422,1455,1456],{},[543,1457,1458],{},"ai.totalDurationMs",[1422,1460,1461,1464,1465,1432,1468,1436],{},[543,1462,1463],{},"onStart"," → ",[543,1466,1467],{},"onEnd",[543,1469,1470],{},"onFinish",[1422,1472,1473],{},"Total wall time from generation start to completion",[1404,1475,1476,1481,1486],{},[1422,1477,1478],{},[543,1479,1480],{},"ai.embedding",[1422,1482,1483,1485],{},[543,1484,563],{}," (v7)",[1422,1487,1488,1489,1492,1493,1496],{},"Auto-captured from ",[543,1490,1491],{},"embed()"," \u002F ",[543,1494,1495],{},"embedMany()"," when telemetry is enabled",[1404,1498,1499,1504,1508],{},[1422,1500,1501],{},[543,1502,1503],{},"ai.finishReason: 'abort'",[1422,1505,1506,1485],{},[543,1507,567],{},[1422,1509,1510],{},"Set when a streaming generation is aborted",[1404,1512,1513,1518,1524],{},[1422,1514,1515],{},[543,1516,1517],{},"ai.error",[1422,1519,1520,1492,1522,1485],{},[543,1521,567],{},[543,1523,571],{},[1422,1525,1526],{},"Abort reason or unrecoverable generation error",[540,1528,1529],{},"The middleware captures tokens, model info, and streaming metrics. The integration captures tool execution timing. Together, they give you complete AI observability.",[574,1531,1533],{"id":1532},"compose-it-with-the-rest","Compose it with the rest",[540,1535,1536,1539,1540,777],{},[543,1537,1538],{},"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 ",[543,1541,1538],{},[590,1543,1545],{"className":592,"code":1544,"filename":1287,"language":595,"meta":596,"style":596},"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",[543,1546,1547,1565,1585,1604,1608,1631,1644,1666],{"__ignoreMap":596},[600,1548,1549,1551,1553,1555,1557,1559,1561,1563],{"class":602,"line":603},[600,1550,607],{"class":606},[600,1552,611],{"class":610},[600,1554,641],{"class":614},[600,1556,618],{"class":610},[600,1558,621],{"class":606},[600,1560,624],{"class":610},[600,1562,656],{"class":627},[600,1564,631],{"class":610},[600,1566,1567,1569,1571,1574,1576,1578,1580,1583],{"class":602,"line":634},[600,1568,607],{"class":606},[600,1570,611],{"class":610},[600,1572,1573],{"class":614}," withSupermemory",[600,1575,618],{"class":610},[600,1577,621],{"class":606},[600,1579,624],{"class":610},[600,1581,1582],{"class":627},"@supermemory\u002Ftools\u002Fai-sdk",[600,1584,631],{"class":610},[600,1586,1587,1589,1591,1594,1596,1598,1600,1602],{"class":602,"line":661},[600,1588,607],{"class":606},[600,1590,611],{"class":610},[600,1592,1593],{"class":614}," createGateway",[600,1595,618],{"class":610},[600,1597,621],{"class":606},[600,1599,624],{"class":610},[600,1601,628],{"class":627},[600,1603,631],{"class":610},[600,1605,1606],{"class":602,"line":668},[600,1607,665],{"emptyLinePlaceholder":664},[600,1609,1610,1612,1615,1617,1619,1621,1624,1627,1629],{"class":602,"line":704},[600,1611,1316],{"class":684},[600,1613,1614],{"class":614}," gateway ",[600,1616,1322],{"class":610},[600,1618,1593],{"class":677},[600,1620,681],{"class":614},[600,1622,1623],{"class":610},"{",[600,1625,1626],{"class":610}," ...",[600,1628,618],{"class":610},[600,1630,724],{"class":614},[600,1632,1633,1635,1638,1640,1642],{"class":602,"line":727},[600,1634,1316],{"class":684},[600,1636,1637],{"class":614}," ai ",[600,1639,1322],{"class":610},[600,1641,641],{"class":677},[600,1643,1327],{"class":614},[600,1645,1646,1648,1651,1653,1656,1658,1660,1662,1664],{"class":602,"line":746},[600,1647,1316],{"class":684},[600,1649,1650],{"class":614}," base ",[600,1652,1322],{"class":610},[600,1654,1655],{"class":677}," gateway",[600,1657,681],{"class":614},[600,1659,789],{"class":610},[600,1661,792],{"class":627},[600,1663,789],{"class":610},[600,1665,724],{"class":614},[600,1667,1668,1670,1673,1675,1677,1679,1681,1683,1686,1689,1691,1693,1696,1698,1700,1702,1705,1707,1709,1712,1714,1716],{"class":602,"line":751},[600,1669,1316],{"class":684},[600,1671,1672],{"class":614}," model ",[600,1674,1322],{"class":610},[600,1676,732],{"class":614},[600,1678,572],{"class":610},[600,1680,784],{"class":677},[600,1682,681],{"class":614},[600,1684,1685],{"class":677},"withSupermemory",[600,1687,1688],{"class":614},"(base",[600,1690,644],{"class":610},[600,1692,624],{"class":610},[600,1694,1695],{"class":627},"your-org-id",[600,1697,789],{"class":610},[600,1699,644],{"class":610},[600,1701,611],{"class":610},[600,1703,1704],{"class":719}," mode",[600,1706,777],{"class":610},[600,1708,624],{"class":610},[600,1710,1711],{"class":627},"full",[600,1713,789],{"class":610},[600,1715,618],{"class":610},[600,1717,1718],{"class":614},"))\n",[540,1720,1721,1722,1725,1726,777],{},"For explicit middleware composition, use ",[543,1723,1724],{},"createAIMiddleware"," to get the raw middleware and compose it yourself via ",[543,1727,1728],{},"wrapLanguageModel",[590,1730,1732],{"className":592,"code":1731,"filename":1287,"language":595,"meta":596,"style":596},"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",[543,1733,1734,1753,1772,1776,1790,1801,1838],{"__ignoreMap":596},[600,1735,1736,1738,1740,1743,1745,1747,1749,1751],{"class":602,"line":603},[600,1737,607],{"class":606},[600,1739,611],{"class":610},[600,1741,1742],{"class":614}," createAIMiddleware",[600,1744,618],{"class":610},[600,1746,621],{"class":606},[600,1748,624],{"class":610},[600,1750,656],{"class":627},[600,1752,631],{"class":610},[600,1754,1755,1757,1759,1762,1764,1766,1768,1770],{"class":602,"line":634},[600,1756,607],{"class":606},[600,1758,611],{"class":610},[600,1760,1761],{"class":614}," wrapLanguageModel",[600,1763,618],{"class":610},[600,1765,621],{"class":606},[600,1767,624],{"class":610},[600,1769,628],{"class":627},[600,1771,631],{"class":610},[600,1773,1774],{"class":602,"line":661},[600,1775,665],{"emptyLinePlaceholder":664},[600,1777,1778,1780,1782,1784,1786,1788],{"class":602,"line":668},[600,1779,1316],{"class":684},[600,1781,1672],{"class":614},[600,1783,1322],{"class":610},[600,1785,1761],{"class":677},[600,1787,681],{"class":614},[600,1789,768],{"class":610},[600,1791,1792,1794,1796,1799],{"class":602,"line":704},[600,1793,1353],{"class":719},[600,1795,777],{"class":610},[600,1797,1798],{"class":614}," base",[600,1800,799],{"class":610},[600,1802,1803,1806,1808,1810,1812,1815,1817,1819,1822,1824,1827,1829,1831,1833,1836],{"class":602,"line":727},[600,1804,1805],{"class":719},"  middleware",[600,1807,777],{"class":610},[600,1809,841],{"class":614},[600,1811,1724],{"class":677},[600,1813,1814],{"class":614},"(log",[600,1816,644],{"class":610},[600,1818,611],{"class":610},[600,1820,1821],{"class":719}," toolInputs",[600,1823,777],{"class":610},[600,1825,1149],{"class":1826},"sfNiH",[600,1828,618],{"class":610},[600,1830,695],{"class":614},[600,1832,644],{"class":610},[600,1834,1835],{"class":614}," otherMiddleware]",[600,1837,799],{"class":610},[600,1839,1840,1842],{"class":602,"line":746},[600,1841,901],{"class":610},[600,1843,724],{"class":614},[540,1845,1846,1848,1849,1851,1852,1854,1855,1858,1859,1861,1862,1864],{},[543,1847,1724],{}," returns the same middleware that ",[543,1850,545],{}," uses internally. The difference: ",[543,1853,1724],{}," does not include ",[543,1856,1857],{},"captureEmbed"," (embedding models don't use middleware). Use ",[543,1860,545],{}," for the full API, ",[543,1863,1724],{}," when you need explicit middleware ordering.",[1866,1867,1868],"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":596,"searchDepth":634,"depth":634,"links":1870},[1871,1872,1873,1874],{"id":576,"depth":634,"text":577},{"id":1279,"depth":634,"text":1280},{"id":1395,"depth":634,"text":1396},{"id":1532,"depth":634,"text":1533},"Add tool execution timing and total wall time with createEvlogIntegration. Compose with other middleware like supermemory or guardrails.","md",[1878,1881],{"label":128,"icon":140,"to":324,"color":1879,"variant":1880},"neutral","subtle",{"label":1882,"icon":330,"to":328,"color":1879,"variant":1880},"Usage Patterns",{},{"title":342,"icon":345},{"title":535,"description":1875},"A_8F7x-irAhP-nYueAGxsAel5WaqZ66Yiz9DymPSEY4",[1888,1890],{"title":337,"path":338,"stem":339,"description":1889,"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":1891,"icon":140,"children":-1},"Identify the user on authenticated requests, so each wide event carries who made it without a manual log.set call.",1786806597517]