[{"data":1,"prerenderedAt":2057},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-ai-sdk-overview":447,"-use-cases-ai-sdk-overview-surround":2052},[4,30,80,245,361,416],{"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],{"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,"icon":261,"path":355,"stem":356,"children":357,"page":29},"Eve","\u002Fuse-cases\u002Feve","4.use-cases\u002F5.eve",[358],{"title":36,"path":359,"stem":360,"icon":261},"\u002Fuse-cases\u002Feve\u002Foverview","4.use-cases\u002F5.eve\u002F01.overview",{"title":362,"path":363,"stem":364,"children":365,"page":29},"Extend","\u002Fextend","5.extend",[366,370,375,380,385,389,393,397,401,406,411],{"title":36,"path":367,"stem":368,"icon":369},"\u002Fextend\u002Foverview","5.extend\u002F0.overview","i-lucide-blocks",{"title":371,"path":372,"stem":373,"icon":374},"Stream","\u002Fextend\u002Fstream","5.extend\u002F1.stream","i-lucide-radio-tower",{"title":376,"path":377,"stem":378,"icon":379},"Custom framework","\u002Fextend\u002Fcustom-framework","5.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":381,"path":382,"stem":383,"icon":384},"FS reader","\u002Fextend\u002Ffs-reader","5.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":345,"path":386,"stem":387,"icon":388},"\u002Fextend\u002Fconsumer-recipes","5.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":390,"path":391,"stem":392,"icon":369},"Plugins","\u002Fextend\u002Fplugins","5.extend\u002F4.plugins",{"title":394,"path":395,"stem":396,"icon":352},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","5.extend\u002F5.custom-enrichers",{"title":398,"path":399,"stem":400,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","5.extend\u002F6.tail-sampling",{"title":402,"path":403,"stem":404,"icon":405},"Identity headers","\u002Fextend\u002Fidentity-headers","5.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":407,"path":408,"stem":409,"icon":410},"Custom drains","\u002Fextend\u002Fcustom-drains","5.extend\u002F8.custom-drains","i-lucide-share-2",{"title":412,"path":413,"stem":414,"icon":415},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","5.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":417,"path":418,"stem":419,"children":420,"page":29},"Reference","\u002Freference","6.reference",[421,426,429,434,438,443],{"title":422,"path":423,"stem":424,"icon":425},"Configuration","\u002Freference\u002Fconfiguration","6.reference\u002F1.configuration","i-lucide-settings",{"title":312,"path":427,"stem":428,"icon":315},"\u002Freference\u002Fperformance","6.reference\u002F2.performance",{"title":430,"path":431,"stem":432,"icon":433},"Vite Plugin","\u002Freference\u002Fvite-plugin","6.reference\u002F3.vite-plugin","i-custom-vite",{"title":435,"path":436,"stem":437,"icon":318},"Best Practices","\u002Freference\u002Fbest-practices","6.reference\u002F4.best-practices",{"title":439,"path":440,"stem":441,"icon":442},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","6.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":444,"path":445,"stem":446,"icon":352},"Agent Skills","\u002Freference\u002Fagent-skills","6.reference\u002F6.agent-skills",{"id":448,"title":449,"body":450,"description":2039,"extension":2040,"links":2041,"meta":2048,"navigation":2049,"path":266,"seo":2050,"stem":267,"__hash__":2051},"docs\u002F4.use-cases\u002F2.ai-sdk\u002F01.overview.md","AI SDK Integration",{"type":451,"value":452,"toc":2032},"minimark",[453,461,514,519,522,593,596,599,602,926,929,1237,1241,1251,1355,1358,1362,1391,1395,1400,2028],[454,455,456,460],"p",{},[457,458,459],"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.",[462,463,466,469,500],"prompt",{":actions":464,"description":465,"icon":261},"[\"copy\",\"cursor\",\"windsurf\"]","Add AI observability with evlog",[454,467,468],{},"Add AI observability to my app with evlog.",[470,471,472,476,479,482,485,488,491,494,497],"ul",{},[473,474,475],"li",{},"Install the AI SDK: pnpm add ai",[473,477,478],{},"Import createAILogger from 'evlog\u002Fai'",[473,480,481],{},"Create an AI logger with createAILogger(log) where log is your request logger",[473,483,484],{},"Wrap your model with ai.wrap('anthropic\u002Fclaude-sonnet-4.6') and pass it to generateText, streamText, etc.",[473,486,487],{},"Token usage, tool calls, streaming metrics, and errors are captured automatically into the wide event",[473,489,490],{},"For deeper observability (tool execution timing, total generation wall time), add createEvlogIntegration(ai) to experimental_telemetry.integrations",[473,492,493],{},"For embedding calls, use ai.captureEmbed({ usage, model, dimensions, count }) after embed() or embedMany()",[473,495,496],{},"For cost estimation, pass a cost map: createAILogger(log, { cost: { 'claude-sonnet-4.6': { input: 3, output: 15 } } })",[473,498,499],{},"Works with all frameworks: Nuxt, Express, Hono, Fastify, NestJS, Elysia, standalone",[454,501,502,503,509,510],{},"Docs: ",[504,505,506],"a",{"href":506,"rel":507},"https:\u002F\u002Fwww.evlog.dev\u002Fuse-cases\u002Fai-sdk\u002Foverview",[508],"nofollow","\nAdapters: ",[504,511,512],{"href":512,"rel":513},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Foverview",[508],[515,516,518],"h2",{"id":517},"install","Install",[454,520,521],{},"Add the AI SDK as a dependency:",[523,524,525,550,564,578],"code-group",{},[526,527,533],"pre",{"className":528,"code":529,"filename":530,"language":531,"meta":532,"style":532},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add ai\n","pnpm","bash","",[457,534,535],{"__ignoreMap":532},[536,537,540,543,547],"span",{"class":538,"line":539},"line",1,[536,541,530],{"class":542},"sBMFI",[536,544,546],{"class":545},"sfazB"," add",[536,548,549],{"class":545}," ai\n",[526,551,554],{"className":528,"code":552,"filename":553,"language":531,"meta":532,"style":532},"bun add ai\n","bun",[457,555,556],{"__ignoreMap":532},[536,557,558,560,562],{"class":538,"line":539},[536,559,553],{"class":542},[536,561,546],{"class":545},[536,563,549],{"class":545},[526,565,568],{"className":528,"code":566,"filename":567,"language":531,"meta":532,"style":532},"yarn add ai\n","yarn",[457,569,570],{"__ignoreMap":532},[536,571,572,574,576],{"class":538,"line":539},[536,573,567],{"class":542},[536,575,546],{"class":545},[536,577,549],{"class":545},[526,579,582],{"className":528,"code":580,"filename":581,"language":531,"meta":532,"style":532},"npm install ai\n","npm",[457,583,584],{"__ignoreMap":532},[536,585,586,588,591],{"class":538,"line":539},[536,587,581],{"class":542},[536,589,590],{"class":545}," install",[536,592,549],{"class":545},[515,594,25],{"id":595},"quick-start",[597,598],"ai-sdk-wide-event",{},[454,600,601],{},"Two lines to add, one param to change:",[523,603,604,734],{},[526,605,610],{"className":606,"code":607,"filename":608,"language":609,"meta":532,"style":532},"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",[457,611,612,650,671,692,700,709,726],{"__ignoreMap":532},[536,613,614,618,621,625,629,633,637,641,644,647],{"class":538,"line":539},[536,615,617],{"class":616},"s7zQu","export",[536,619,620],{"class":616}," default",[536,622,624],{"class":623},"s2Zo4"," defineEventHandler",[536,626,628],{"class":627},"sTEyZ","(",[536,630,632],{"class":631},"spNyl","async",[536,634,636],{"class":635},"sMK4o"," (",[536,638,640],{"class":639},"sHdIc","event",[536,642,643],{"class":635},")",[536,645,646],{"class":631}," =>",[536,648,649],{"class":635}," {\n",[536,651,653,656,659,662,665,668],{"class":538,"line":652},2,[536,654,655],{"class":631},"  const",[536,657,658],{"class":627}," result",[536,660,661],{"class":635}," =",[536,663,664],{"class":623}," streamText",[536,666,628],{"class":667},"swJcz",[536,669,670],{"class":635},"{\n",[536,672,674,677,680,683,686,689],{"class":538,"line":673},3,[536,675,676],{"class":667},"    model",[536,678,679],{"class":635},":",[536,681,682],{"class":635}," '",[536,684,685],{"class":545},"anthropic\u002Fclaude-sonnet-4.6",[536,687,688],{"class":635},"'",[536,690,691],{"class":635},",\n",[536,693,695,698],{"class":538,"line":694},4,[536,696,697],{"class":627},"    messages",[536,699,691],{"class":635},[536,701,703,706],{"class":538,"line":702},5,[536,704,705],{"class":635},"  }",[536,707,708],{"class":667},")\n",[536,710,712,715,717,720,723],{"class":538,"line":711},6,[536,713,714],{"class":616},"  return",[536,716,658],{"class":627},[536,718,719],{"class":635},".",[536,721,722],{"class":623},"toTextStreamResponse",[536,724,725],{"class":667},"()\n",[536,727,729,732],{"class":538,"line":728},7,[536,730,731],{"class":635},"}",[536,733,708],{"class":627},[526,735,738],{"className":606,"code":736,"filename":737,"language":609,"meta":532,"style":532},"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",[457,739,740,765,784,790,812,829,847,851,866,892,899,906,919],{"__ignoreMap":532},[536,741,742,745,748,751,754,757,759,762],{"class":538,"line":539},[536,743,744],{"class":616},"import",[536,746,747],{"class":635}," {",[536,749,750],{"class":627}," useLogger",[536,752,753],{"class":635}," }",[536,755,756],{"class":616}," from",[536,758,682],{"class":635},[536,760,761],{"class":545},"evlog",[536,763,764],{"class":635},"'\n",[536,766,767,769,771,774,776,778,780,782],{"class":538,"line":652},[536,768,744],{"class":616},[536,770,747],{"class":635},[536,772,773],{"class":627}," createAILogger",[536,775,753],{"class":635},[536,777,756],{"class":616},[536,779,682],{"class":635},[536,781,459],{"class":545},[536,783,764],{"class":635},[536,785,786],{"class":538,"line":673},[536,787,789],{"emptyLinePlaceholder":788},true,"\n",[536,791,792,794,796,798,800,802,804,806,808,810],{"class":538,"line":694},[536,793,617],{"class":616},[536,795,620],{"class":616},[536,797,624],{"class":623},[536,799,628],{"class":627},[536,801,632],{"class":631},[536,803,636],{"class":635},[536,805,640],{"class":639},[536,807,643],{"class":635},[536,809,646],{"class":631},[536,811,649],{"class":635},[536,813,814,816,819,821,823,825,827],{"class":538,"line":702},[536,815,655],{"class":631},[536,817,818],{"class":627}," log",[536,820,661],{"class":635},[536,822,750],{"class":623},[536,824,628],{"class":667},[536,826,640],{"class":627},[536,828,708],{"class":667},[536,830,831,833,836,838,840,842,845],{"class":538,"line":711},[536,832,655],{"class":631},[536,834,835],{"class":627}," ai",[536,837,661],{"class":635},[536,839,773],{"class":623},[536,841,628],{"class":667},[536,843,844],{"class":627},"log",[536,846,708],{"class":667},[536,848,849],{"class":538,"line":728},[536,850,789],{"emptyLinePlaceholder":788},[536,852,854,856,858,860,862,864],{"class":538,"line":853},8,[536,855,655],{"class":631},[536,857,658],{"class":627},[536,859,661],{"class":635},[536,861,664],{"class":623},[536,863,628],{"class":667},[536,865,670],{"class":635},[536,867,869,871,873,875,877,880,882,884,886,888,890],{"class":538,"line":868},9,[536,870,676],{"class":667},[536,872,679],{"class":635},[536,874,835],{"class":627},[536,876,719],{"class":635},[536,878,879],{"class":623},"wrap",[536,881,628],{"class":667},[536,883,688],{"class":635},[536,885,685],{"class":545},[536,887,688],{"class":635},[536,889,643],{"class":667},[536,891,691],{"class":635},[536,893,895,897],{"class":538,"line":894},10,[536,896,697],{"class":627},[536,898,691],{"class":635},[536,900,902,904],{"class":538,"line":901},11,[536,903,705],{"class":635},[536,905,708],{"class":667},[536,907,909,911,913,915,917],{"class":538,"line":908},12,[536,910,714],{"class":616},[536,912,658],{"class":627},[536,914,719],{"class":635},[536,916,722],{"class":623},[536,918,725],{"class":667},[536,920,922,924],{"class":538,"line":921},13,[536,923,731],{"class":635},[536,925,708],{"class":627},[454,927,928],{},"Your wide event now includes:",[526,930,935],{"className":931,"code":932,"filename":933,"language":934,"meta":532,"style":532},"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",[457,936,937,941,964,984,1001,1021,1034,1051,1071,1091,1107,1123,1139,1155,1176,1193,1210,1225,1231],{"__ignoreMap":532},[536,938,939],{"class":538,"line":539},[536,940,670],{"class":635},[536,942,943,946,949,952,954,957,960,962],{"class":538,"line":652},[536,944,945],{"class":635},"  \"",[536,947,948],{"class":631},"method",[536,950,951],{"class":635},"\"",[536,953,679],{"class":635},[536,955,956],{"class":635}," \"",[536,958,959],{"class":545},"POST",[536,961,951],{"class":635},[536,963,691],{"class":635},[536,965,966,968,971,973,975,977,980,982],{"class":538,"line":673},[536,967,945],{"class":635},[536,969,970],{"class":631},"path",[536,972,951],{"class":635},[536,974,679],{"class":635},[536,976,956],{"class":635},[536,978,979],{"class":545},"\u002Fapi\u002Fchat",[536,981,951],{"class":635},[536,983,691],{"class":635},[536,985,986,988,991,993,995,999],{"class":538,"line":694},[536,987,945],{"class":635},[536,989,990],{"class":631},"status",[536,992,951],{"class":635},[536,994,679],{"class":635},[536,996,998],{"class":997},"sbssI"," 200",[536,1000,691],{"class":635},[536,1002,1003,1005,1008,1010,1012,1014,1017,1019],{"class":538,"line":702},[536,1004,945],{"class":635},[536,1006,1007],{"class":631},"duration",[536,1009,951],{"class":635},[536,1011,679],{"class":635},[536,1013,956],{"class":635},[536,1015,1016],{"class":545},"4.5s",[536,1018,951],{"class":635},[536,1020,691],{"class":635},[536,1022,1023,1025,1028,1030,1032],{"class":538,"line":711},[536,1024,945],{"class":635},[536,1026,1027],{"class":631},"ai",[536,1029,951],{"class":635},[536,1031,679],{"class":635},[536,1033,649],{"class":635},[536,1035,1036,1039,1042,1044,1046,1049],{"class":538,"line":728},[536,1037,1038],{"class":635},"    \"",[536,1040,1041],{"class":542},"calls",[536,1043,951],{"class":635},[536,1045,679],{"class":635},[536,1047,1048],{"class":997}," 1",[536,1050,691],{"class":635},[536,1052,1053,1055,1058,1060,1062,1064,1067,1069],{"class":538,"line":853},[536,1054,1038],{"class":635},[536,1056,1057],{"class":542},"model",[536,1059,951],{"class":635},[536,1061,679],{"class":635},[536,1063,956],{"class":635},[536,1065,1066],{"class":545},"claude-sonnet-4.6",[536,1068,951],{"class":635},[536,1070,691],{"class":635},[536,1072,1073,1075,1078,1080,1082,1084,1087,1089],{"class":538,"line":868},[536,1074,1038],{"class":635},[536,1076,1077],{"class":542},"provider",[536,1079,951],{"class":635},[536,1081,679],{"class":635},[536,1083,956],{"class":635},[536,1085,1086],{"class":545},"anthropic",[536,1088,951],{"class":635},[536,1090,691],{"class":635},[536,1092,1093,1095,1098,1100,1102,1105],{"class":538,"line":894},[536,1094,1038],{"class":635},[536,1096,1097],{"class":542},"inputTokens",[536,1099,951],{"class":635},[536,1101,679],{"class":635},[536,1103,1104],{"class":997}," 3312",[536,1106,691],{"class":635},[536,1108,1109,1111,1114,1116,1118,1121],{"class":538,"line":901},[536,1110,1038],{"class":635},[536,1112,1113],{"class":542},"outputTokens",[536,1115,951],{"class":635},[536,1117,679],{"class":635},[536,1119,1120],{"class":997}," 814",[536,1122,691],{"class":635},[536,1124,1125,1127,1130,1132,1134,1137],{"class":538,"line":908},[536,1126,1038],{"class":635},[536,1128,1129],{"class":542},"totalTokens",[536,1131,951],{"class":635},[536,1133,679],{"class":635},[536,1135,1136],{"class":997}," 4126",[536,1138,691],{"class":635},[536,1140,1141,1143,1146,1148,1150,1153],{"class":538,"line":921},[536,1142,1038],{"class":635},[536,1144,1145],{"class":542},"reasoningTokens",[536,1147,951],{"class":635},[536,1149,679],{"class":635},[536,1151,1152],{"class":997}," 225",[536,1154,691],{"class":635},[536,1156,1158,1160,1163,1165,1167,1169,1172,1174],{"class":538,"line":1157},14,[536,1159,1038],{"class":635},[536,1161,1162],{"class":542},"finishReason",[536,1164,951],{"class":635},[536,1166,679],{"class":635},[536,1168,956],{"class":635},[536,1170,1171],{"class":545},"stop",[536,1173,951],{"class":635},[536,1175,691],{"class":635},[536,1177,1179,1181,1184,1186,1188,1191],{"class":538,"line":1178},15,[536,1180,1038],{"class":635},[536,1182,1183],{"class":542},"msToFirstChunk",[536,1185,951],{"class":635},[536,1187,679],{"class":635},[536,1189,1190],{"class":997}," 234",[536,1192,691],{"class":635},[536,1194,1196,1198,1201,1203,1205,1208],{"class":538,"line":1195},16,[536,1197,1038],{"class":635},[536,1199,1200],{"class":542},"msToFinish",[536,1202,951],{"class":635},[536,1204,679],{"class":635},[536,1206,1207],{"class":997}," 4500",[536,1209,691],{"class":635},[536,1211,1213,1215,1218,1220,1222],{"class":538,"line":1212},17,[536,1214,1038],{"class":635},[536,1216,1217],{"class":542},"tokensPerSecond",[536,1219,951],{"class":635},[536,1221,679],{"class":635},[536,1223,1224],{"class":997}," 180\n",[536,1226,1228],{"class":538,"line":1227},18,[536,1229,1230],{"class":635},"  }\n",[536,1232,1234],{"class":538,"line":1233},19,[536,1235,1236],{"class":635},"}\n",[515,1238,1240],{"id":1239},"how-it-works","How It Works",[454,1242,1243,1246,1247,1250],{},[457,1244,1245],{},"createAILogger(log, options?)"," returns an ",[457,1248,1249],{},"AILogger"," with the following methods:",[1252,1253,1254,1267],"table",{},[1255,1256,1257],"thead",{},[1258,1259,1260,1264],"tr",{},[1261,1262,1263],"th",{},"Method",[1261,1265,1266],{},"Description",[1268,1269,1270,1300,1318,1331,1345],"tbody",{},[1258,1271,1272,1278],{},[1273,1274,1275],"td",{},[457,1276,1277],{},"wrap(model)",[1273,1279,1280,1281,1284,1285,1288,1289,1292,1293,1296,1297,719],{},"Wraps a language model with middleware. Accepts a model string (e.g. ",[457,1282,1283],{},"'anthropic\u002Fclaude-sonnet-4.6'",") or a ",[457,1286,1287],{},"LanguageModelV3"," object. Works with ",[457,1290,1291],{},"generateText",", ",[457,1294,1295],{},"streamText",", and ",[457,1298,1299],{},"ToolLoopAgent",[1258,1301,1302,1307],{},[1273,1303,1304],{},[457,1305,1306],{},"captureEmbed(result)",[1273,1308,1309,1310,1313,1314,1317],{},"Manually captures token usage, model info, and dimensions from ",[457,1311,1312],{},"embed()"," or ",[457,1315,1316],{},"embedMany()"," results.",[1258,1319,1320,1325],{},[1273,1321,1322],{},[457,1323,1324],{},"getMetadata()",[1273,1326,1327,1328,719],{},"Returns a snapshot of the current execution metadata. See ",[504,1329,1330],{"href":280},"Access Metadata",[1258,1332,1333,1338],{},[1273,1334,1335],{},[457,1336,1337],{},"getEstimatedCost()",[1273,1339,1340,1341,1344],{},"Returns the current estimated cost in dollars when a ",[457,1342,1343],{},"cost"," map is configured.",[1258,1346,1347,1352],{},[1273,1348,1349],{},[457,1350,1351],{},"onUpdate(callback)",[1273,1353,1354],{},"Subscribe to metadata updates. Fires on every step, embed, error, and integration finish.",[454,1356,1357],{},"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.",[515,1359,1361],{"id":1360},"where-to-next","Where to next",[1363,1364,1365,1374,1377,1383],"card-group",{},[1366,1367,1369,1292,1371,1373],"card",{"icon":272,"title":1368,"to":270},"Usage Patterns",[457,1370,1295],{},[457,1372,1291],{},", multi-step agents, RAG, multiple models — every common pattern, ready to copy.",[1366,1375,1376],{"icon":277,"title":274,"to":275},"Capture tool inputs (with redaction and truncation), enable cost estimation, and handle errors.",[1366,1378,1379,1380,1382],{"icon":282,"title":1330,"to":280},"Read the captured ",[457,1381,1027],{}," data inside your handler — persist it, bill against it, or stream it to the client.",[1366,1384,1386,1387,1390],{"icon":287,"title":1385,"to":285},"Deeper Telemetry","Add tool execution timing and total wall time with ",[457,1388,1389],{},"createEvlogIntegration",". Compose with other middlewares.",[515,1392,1394],{"id":1393},"works-with-all-frameworks","Works With All Frameworks",[454,1396,1397,1399],{},[457,1398,459],{}," works with any framework that evlog supports:",[523,1401,1402,1477,1594,1687,1783,1872,1942],{},[526,1403,1405],{"className":606,"code":1404,"filename":167,"language":609,"meta":532,"style":532},"import { useLogger } from 'evlog'\nimport { createAILogger } from 'evlog\u002Fai'\n\nconst log = useLogger(event)\nconst ai = createAILogger(log)\n",[457,1406,1407,1425,1443,1447,1463],{"__ignoreMap":532},[536,1408,1409,1411,1413,1415,1417,1419,1421,1423],{"class":538,"line":539},[536,1410,744],{"class":616},[536,1412,747],{"class":635},[536,1414,750],{"class":627},[536,1416,753],{"class":635},[536,1418,756],{"class":616},[536,1420,682],{"class":635},[536,1422,761],{"class":545},[536,1424,764],{"class":635},[536,1426,1427,1429,1431,1433,1435,1437,1439,1441],{"class":538,"line":652},[536,1428,744],{"class":616},[536,1430,747],{"class":635},[536,1432,773],{"class":627},[536,1434,753],{"class":635},[536,1436,756],{"class":616},[536,1438,682],{"class":635},[536,1440,459],{"class":545},[536,1442,764],{"class":635},[536,1444,1445],{"class":538,"line":673},[536,1446,789],{"emptyLinePlaceholder":788},[536,1448,1449,1452,1455,1458,1460],{"class":538,"line":694},[536,1450,1451],{"class":631},"const",[536,1453,1454],{"class":627}," log ",[536,1456,1457],{"class":635},"=",[536,1459,750],{"class":623},[536,1461,1462],{"class":627},"(event)\n",[536,1464,1465,1467,1470,1472,1474],{"class":538,"line":702},[536,1466,1451],{"class":631},[536,1468,1469],{"class":627}," ai ",[536,1471,1457],{"class":635},[536,1473,773],{"class":623},[536,1475,1476],{"class":627},"(log)\n",[526,1478,1480],{"className":606,"code":1479,"filename":172,"language":609,"meta":532,"style":532},"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",[457,1481,1482,1507,1525,1529,1554,1566,1582,1588],{"__ignoreMap":532},[536,1483,1484,1486,1488,1491,1494,1496,1498,1500,1502,1505],{"class":538,"line":539},[536,1485,744],{"class":616},[536,1487,747],{"class":635},[536,1489,1490],{"class":627}," withEvlog",[536,1492,1493],{"class":635},",",[536,1495,750],{"class":627},[536,1497,753],{"class":635},[536,1499,756],{"class":616},[536,1501,682],{"class":635},[536,1503,1504],{"class":545},"@\u002Flib\u002Fevlog",[536,1506,764],{"class":635},[536,1508,1509,1511,1513,1515,1517,1519,1521,1523],{"class":538,"line":652},[536,1510,744],{"class":616},[536,1512,747],{"class":635},[536,1514,773],{"class":627},[536,1516,753],{"class":635},[536,1518,756],{"class":616},[536,1520,682],{"class":635},[536,1522,459],{"class":545},[536,1524,764],{"class":635},[536,1526,1527],{"class":538,"line":673},[536,1528,789],{"emptyLinePlaceholder":788},[536,1530,1531,1533,1536,1539,1541,1543,1545,1547,1550,1552],{"class":538,"line":694},[536,1532,617],{"class":616},[536,1534,1535],{"class":631}," const",[536,1537,1538],{"class":627}," POST ",[536,1540,1457],{"class":635},[536,1542,1490],{"class":623},[536,1544,628],{"class":627},[536,1546,632],{"class":631},[536,1548,1549],{"class":635}," ()",[536,1551,646],{"class":631},[536,1553,649],{"class":635},[536,1555,1556,1558,1560,1562,1564],{"class":538,"line":702},[536,1557,655],{"class":631},[536,1559,818],{"class":627},[536,1561,661],{"class":635},[536,1563,750],{"class":623},[536,1565,725],{"class":667},[536,1567,1568,1570,1572,1574,1576,1578,1580],{"class":538,"line":711},[536,1569,655],{"class":631},[536,1571,835],{"class":627},[536,1573,661],{"class":635},[536,1575,773],{"class":623},[536,1577,628],{"class":667},[536,1579,844],{"class":627},[536,1581,708],{"class":667},[536,1583,1584],{"class":538,"line":728},[536,1585,1587],{"class":1586},"sHwdD","  \u002F\u002F ...\n",[536,1589,1590,1592],{"class":538,"line":853},[536,1591,731],{"class":635},[536,1593,708],{"class":627},[526,1595,1597],{"className":606,"code":1596,"filename":197,"language":609,"meta":532,"style":532},"import { createAILogger } from 'evlog\u002Fai'\n\napp.post('\u002Fapi\u002Fchat', (req, res) => {\n  const ai = createAILogger(req.log)\n  \u002F\u002F ...\n})\n",[457,1598,1599,1617,1621,1657,1677,1681],{"__ignoreMap":532},[536,1600,1601,1603,1605,1607,1609,1611,1613,1615],{"class":538,"line":539},[536,1602,744],{"class":616},[536,1604,747],{"class":635},[536,1606,773],{"class":627},[536,1608,753],{"class":635},[536,1610,756],{"class":616},[536,1612,682],{"class":635},[536,1614,459],{"class":545},[536,1616,764],{"class":635},[536,1618,1619],{"class":538,"line":652},[536,1620,789],{"emptyLinePlaceholder":788},[536,1622,1623,1626,1628,1631,1633,1635,1637,1639,1641,1643,1646,1648,1651,1653,1655],{"class":538,"line":673},[536,1624,1625],{"class":627},"app",[536,1627,719],{"class":635},[536,1629,1630],{"class":623},"post",[536,1632,628],{"class":627},[536,1634,688],{"class":635},[536,1636,979],{"class":545},[536,1638,688],{"class":635},[536,1640,1493],{"class":635},[536,1642,636],{"class":635},[536,1644,1645],{"class":639},"req",[536,1647,1493],{"class":635},[536,1649,1650],{"class":639}," res",[536,1652,643],{"class":635},[536,1654,646],{"class":631},[536,1656,649],{"class":635},[536,1658,1659,1661,1663,1665,1667,1669,1671,1673,1675],{"class":538,"line":694},[536,1660,655],{"class":631},[536,1662,835],{"class":627},[536,1664,661],{"class":635},[536,1666,773],{"class":623},[536,1668,628],{"class":667},[536,1670,1645],{"class":627},[536,1672,719],{"class":635},[536,1674,844],{"class":627},[536,1676,708],{"class":667},[536,1678,1679],{"class":538,"line":702},[536,1680,1587],{"class":1586},[536,1682,1683,1685],{"class":538,"line":711},[536,1684,731],{"class":635},[536,1686,708],{"class":627},[526,1688,1690],{"className":606,"code":1689,"filename":202,"language":609,"meta":532,"style":532},"import { createAILogger } from 'evlog\u002Fai'\n\napp.post('\u002Fapi\u002Fchat', (c) => {\n  const ai = createAILogger(c.get('log'))\n  \u002F\u002F ...\n})\n",[457,1691,1692,1710,1714,1743,1773,1777],{"__ignoreMap":532},[536,1693,1694,1696,1698,1700,1702,1704,1706,1708],{"class":538,"line":539},[536,1695,744],{"class":616},[536,1697,747],{"class":635},[536,1699,773],{"class":627},[536,1701,753],{"class":635},[536,1703,756],{"class":616},[536,1705,682],{"class":635},[536,1707,459],{"class":545},[536,1709,764],{"class":635},[536,1711,1712],{"class":538,"line":652},[536,1713,789],{"emptyLinePlaceholder":788},[536,1715,1716,1718,1720,1722,1724,1726,1728,1730,1732,1734,1737,1739,1741],{"class":538,"line":673},[536,1717,1625],{"class":627},[536,1719,719],{"class":635},[536,1721,1630],{"class":623},[536,1723,628],{"class":627},[536,1725,688],{"class":635},[536,1727,979],{"class":545},[536,1729,688],{"class":635},[536,1731,1493],{"class":635},[536,1733,636],{"class":635},[536,1735,1736],{"class":639},"c",[536,1738,643],{"class":635},[536,1740,646],{"class":631},[536,1742,649],{"class":635},[536,1744,1745,1747,1749,1751,1753,1755,1757,1759,1762,1764,1766,1768,1770],{"class":538,"line":694},[536,1746,655],{"class":631},[536,1748,835],{"class":627},[536,1750,661],{"class":635},[536,1752,773],{"class":623},[536,1754,628],{"class":667},[536,1756,1736],{"class":627},[536,1758,719],{"class":635},[536,1760,1761],{"class":623},"get",[536,1763,628],{"class":667},[536,1765,688],{"class":635},[536,1767,844],{"class":545},[536,1769,688],{"class":635},[536,1771,1772],{"class":667},"))\n",[536,1774,1775],{"class":538,"line":702},[536,1776,1587],{"class":1586},[536,1778,1779,1781],{"class":538,"line":711},[536,1780,731],{"class":635},[536,1782,708],{"class":627},[526,1784,1786],{"className":606,"code":1785,"filename":207,"language":609,"meta":532,"style":532},"import { createAILogger } from 'evlog\u002Fai'\n\napp.post('\u002Fapi\u002Fchat', async (request) => {\n  const ai = createAILogger(request.log)\n  \u002F\u002F ...\n})\n",[457,1787,1788,1806,1810,1842,1862,1866],{"__ignoreMap":532},[536,1789,1790,1792,1794,1796,1798,1800,1802,1804],{"class":538,"line":539},[536,1791,744],{"class":616},[536,1793,747],{"class":635},[536,1795,773],{"class":627},[536,1797,753],{"class":635},[536,1799,756],{"class":616},[536,1801,682],{"class":635},[536,1803,459],{"class":545},[536,1805,764],{"class":635},[536,1807,1808],{"class":538,"line":652},[536,1809,789],{"emptyLinePlaceholder":788},[536,1811,1812,1814,1816,1818,1820,1822,1824,1826,1828,1831,1833,1836,1838,1840],{"class":538,"line":673},[536,1813,1625],{"class":627},[536,1815,719],{"class":635},[536,1817,1630],{"class":623},[536,1819,628],{"class":627},[536,1821,688],{"class":635},[536,1823,979],{"class":545},[536,1825,688],{"class":635},[536,1827,1493],{"class":635},[536,1829,1830],{"class":631}," async",[536,1832,636],{"class":635},[536,1834,1835],{"class":639},"request",[536,1837,643],{"class":635},[536,1839,646],{"class":631},[536,1841,649],{"class":635},[536,1843,1844,1846,1848,1850,1852,1854,1856,1858,1860],{"class":538,"line":694},[536,1845,655],{"class":631},[536,1847,835],{"class":627},[536,1849,661],{"class":635},[536,1851,773],{"class":623},[536,1853,628],{"class":667},[536,1855,1835],{"class":627},[536,1857,719],{"class":635},[536,1859,844],{"class":627},[536,1861,708],{"class":667},[536,1863,1864],{"class":538,"line":702},[536,1865,1587],{"class":1586},[536,1867,1868,1870],{"class":538,"line":711},[536,1869,731],{"class":635},[536,1871,708],{"class":627},[526,1873,1875],{"className":606,"code":1874,"filename":192,"language":609,"meta":532,"style":532},"import { useLogger } from 'evlog\u002Fnestjs'\nimport { createAILogger } from 'evlog\u002Fai'\n\nconst log = useLogger()\nconst ai = createAILogger(log)\n",[457,1876,1877,1896,1914,1918,1930],{"__ignoreMap":532},[536,1878,1879,1881,1883,1885,1887,1889,1891,1894],{"class":538,"line":539},[536,1880,744],{"class":616},[536,1882,747],{"class":635},[536,1884,750],{"class":627},[536,1886,753],{"class":635},[536,1888,756],{"class":616},[536,1890,682],{"class":635},[536,1892,1893],{"class":545},"evlog\u002Fnestjs",[536,1895,764],{"class":635},[536,1897,1898,1900,1902,1904,1906,1908,1910,1912],{"class":538,"line":652},[536,1899,744],{"class":616},[536,1901,747],{"class":635},[536,1903,773],{"class":627},[536,1905,753],{"class":635},[536,1907,756],{"class":616},[536,1909,682],{"class":635},[536,1911,459],{"class":545},[536,1913,764],{"class":635},[536,1915,1916],{"class":538,"line":673},[536,1917,789],{"emptyLinePlaceholder":788},[536,1919,1920,1922,1924,1926,1928],{"class":538,"line":694},[536,1921,1451],{"class":631},[536,1923,1454],{"class":627},[536,1925,1457],{"class":635},[536,1927,750],{"class":623},[536,1929,725],{"class":627},[536,1931,1932,1934,1936,1938,1940],{"class":538,"line":702},[536,1933,1451],{"class":631},[536,1935,1469],{"class":627},[536,1937,1457],{"class":635},[536,1939,773],{"class":623},[536,1941,1476],{"class":627},[526,1943,1945],{"className":606,"code":1944,"filename":227,"language":609,"meta":532,"style":532},"import { createLogger } from 'evlog'\nimport { createAILogger } from 'evlog\u002Fai'\n\nconst log = createLogger()\nconst ai = createAILogger(log)\n\u002F\u002F ...\nlog.emit()\n",[457,1946,1947,1966,1984,1988,2000,2012,2017],{"__ignoreMap":532},[536,1948,1949,1951,1953,1956,1958,1960,1962,1964],{"class":538,"line":539},[536,1950,744],{"class":616},[536,1952,747],{"class":635},[536,1954,1955],{"class":627}," createLogger",[536,1957,753],{"class":635},[536,1959,756],{"class":616},[536,1961,682],{"class":635},[536,1963,761],{"class":545},[536,1965,764],{"class":635},[536,1967,1968,1970,1972,1974,1976,1978,1980,1982],{"class":538,"line":652},[536,1969,744],{"class":616},[536,1971,747],{"class":635},[536,1973,773],{"class":627},[536,1975,753],{"class":635},[536,1977,756],{"class":616},[536,1979,682],{"class":635},[536,1981,459],{"class":545},[536,1983,764],{"class":635},[536,1985,1986],{"class":538,"line":673},[536,1987,789],{"emptyLinePlaceholder":788},[536,1989,1990,1992,1994,1996,1998],{"class":538,"line":694},[536,1991,1451],{"class":631},[536,1993,1454],{"class":627},[536,1995,1457],{"class":635},[536,1997,1955],{"class":623},[536,1999,725],{"class":627},[536,2001,2002,2004,2006,2008,2010],{"class":538,"line":702},[536,2003,1451],{"class":631},[536,2005,1469],{"class":627},[536,2007,1457],{"class":635},[536,2009,773],{"class":623},[536,2011,1476],{"class":627},[536,2013,2014],{"class":538,"line":711},[536,2015,2016],{"class":1586},"\u002F\u002F ...\n",[536,2018,2019,2021,2023,2026],{"class":538,"line":728},[536,2020,844],{"class":627},[536,2022,719],{"class":635},[536,2024,2025],{"class":623},"emit",[536,2027,725],{"class":627},[2029,2030,2031],"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":532,"searchDepth":652,"depth":652,"links":2033},[2034,2035,2036,2037,2038],{"id":517,"depth":652,"text":518},{"id":595,"depth":652,"text":25},{"id":1239,"depth":652,"text":1240},{"id":1360,"depth":652,"text":1361},{"id":1393,"depth":652,"text":1394},"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",[2042,2045,2046,2047],{"label":1368,"icon":272,"to":270,"color":2043,"variant":2044},"neutral","subtle",{"label":274,"icon":277,"to":275,"color":2043,"variant":2044},{"label":1330,"icon":282,"to":280,"color":2043,"variant":2044},{"label":1385,"icon":287,"to":285,"color":2043,"variant":2044},{},{"title":36,"icon":39},{"title":449,"description":2039},"GQTKTrIQf4ZBfNvAsmFcoyP2_SpJplTUjdUSAOSHDis",[2053,2055],{"title":255,"path":256,"stem":257,"description":2054,"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":2056,"icon":272,"children":-1},"streamText, generateText, multi-step agents, RAG, and multiple models — every common AI SDK pattern wired into evlog.",1782924655737]