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