[{"data":1,"prerenderedAt":2061},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-ai-sdk-overview":447,"-use-cases-ai-sdk-overview-surround":2056},[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,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,"icon":315},"\u002Fuse-cases\u002Ftelemetry","4.use-cases\u002F6.telemetry",{"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":2043,"extension":2044,"links":2045,"meta":2052,"navigation":2053,"path":266,"seo":2054,"stem":267,"__hash__":2055},"docs\u002F4.use-cases\u002F2.ai-sdk\u002F01.overview.md","AI SDK Integration",{"type":451,"value":452,"toc":2036},"minimark",[453,461,514,519,522,593,596,599,602,926,929,1237,1241,1251,1359,1362,1366,1395,1399,1404,2032],[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 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,1304,1322,1335,1349],"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,1300,1301,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"," \u002F ",[457,1290,1291],{},"LanguageModelV4"," object. Works with ",[457,1294,1295],{},"generateText",", ",[457,1298,1299],{},"streamText",", and ",[457,1302,1303],{},"ToolLoopAgent",[1258,1305,1306,1311],{},[1273,1307,1308],{},[457,1309,1310],{},"captureEmbed(result)",[1273,1312,1313,1314,1317,1318,1321],{},"Manually captures token usage, model info, and dimensions from ",[457,1315,1316],{},"embed()"," or ",[457,1319,1320],{},"embedMany()"," results.",[1258,1323,1324,1329],{},[1273,1325,1326],{},[457,1327,1328],{},"getMetadata()",[1273,1330,1331,1332,719],{},"Returns a snapshot of the current execution metadata. See ",[504,1333,1334],{"href":280},"Access Metadata",[1258,1336,1337,1342],{},[1273,1338,1339],{},[457,1340,1341],{},"getEstimatedCost()",[1273,1343,1344,1345,1348],{},"Returns the current estimated cost in dollars when a ",[457,1346,1347],{},"cost"," map is configured.",[1258,1350,1351,1356],{},[1273,1352,1353],{},[457,1354,1355],{},"onUpdate(callback)",[1273,1357,1358],{},"Subscribe to metadata updates. Fires on every step, embed, error, and integration finish.",[454,1360,1361],{},"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,1363,1365],{"id":1364},"where-to-next","Where to next",[1367,1368,1369,1378,1381,1387],"card-group",{},[1370,1371,1373,1296,1375,1377],"card",{"icon":272,"title":1372,"to":270},"Usage Patterns",[457,1374,1299],{},[457,1376,1295],{},", multi-step agents, RAG, multiple models — every common pattern, ready to copy.",[1370,1379,1380],{"icon":277,"title":274,"to":275},"Capture tool inputs (with redaction and truncation), enable cost estimation, and handle errors.",[1370,1382,1383,1384,1386],{"icon":282,"title":1334,"to":280},"Read the captured ",[457,1385,1027],{}," data inside your handler — persist it, bill against it, or stream it to the client.",[1370,1388,1390,1391,1394],{"icon":287,"title":1389,"to":285},"Deeper Telemetry","Add tool execution timing and total wall time with ",[457,1392,1393],{},"createEvlogIntegration",". Compose with other middlewares.",[515,1396,1398],{"id":1397},"works-with-all-frameworks","Works With All Frameworks",[454,1400,1401,1403],{},[457,1402,459],{}," works with any framework that evlog supports:",[523,1405,1406,1481,1598,1691,1787,1876,1946],{},[526,1407,1409],{"className":606,"code":1408,"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,1410,1411,1429,1447,1451,1467],{"__ignoreMap":532},[536,1412,1413,1415,1417,1419,1421,1423,1425,1427],{"class":538,"line":539},[536,1414,744],{"class":616},[536,1416,747],{"class":635},[536,1418,750],{"class":627},[536,1420,753],{"class":635},[536,1422,756],{"class":616},[536,1424,682],{"class":635},[536,1426,761],{"class":545},[536,1428,764],{"class":635},[536,1430,1431,1433,1435,1437,1439,1441,1443,1445],{"class":538,"line":652},[536,1432,744],{"class":616},[536,1434,747],{"class":635},[536,1436,773],{"class":627},[536,1438,753],{"class":635},[536,1440,756],{"class":616},[536,1442,682],{"class":635},[536,1444,459],{"class":545},[536,1446,764],{"class":635},[536,1448,1449],{"class":538,"line":673},[536,1450,789],{"emptyLinePlaceholder":788},[536,1452,1453,1456,1459,1462,1464],{"class":538,"line":694},[536,1454,1455],{"class":631},"const",[536,1457,1458],{"class":627}," log ",[536,1460,1461],{"class":635},"=",[536,1463,750],{"class":623},[536,1465,1466],{"class":627},"(event)\n",[536,1468,1469,1471,1474,1476,1478],{"class":538,"line":702},[536,1470,1455],{"class":631},[536,1472,1473],{"class":627}," ai ",[536,1475,1461],{"class":635},[536,1477,773],{"class":623},[536,1479,1480],{"class":627},"(log)\n",[526,1482,1484],{"className":606,"code":1483,"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,1485,1486,1511,1529,1533,1558,1570,1586,1592],{"__ignoreMap":532},[536,1487,1488,1490,1492,1495,1498,1500,1502,1504,1506,1509],{"class":538,"line":539},[536,1489,744],{"class":616},[536,1491,747],{"class":635},[536,1493,1494],{"class":627}," withEvlog",[536,1496,1497],{"class":635},",",[536,1499,750],{"class":627},[536,1501,753],{"class":635},[536,1503,756],{"class":616},[536,1505,682],{"class":635},[536,1507,1508],{"class":545},"@\u002Flib\u002Fevlog",[536,1510,764],{"class":635},[536,1512,1513,1515,1517,1519,1521,1523,1525,1527],{"class":538,"line":652},[536,1514,744],{"class":616},[536,1516,747],{"class":635},[536,1518,773],{"class":627},[536,1520,753],{"class":635},[536,1522,756],{"class":616},[536,1524,682],{"class":635},[536,1526,459],{"class":545},[536,1528,764],{"class":635},[536,1530,1531],{"class":538,"line":673},[536,1532,789],{"emptyLinePlaceholder":788},[536,1534,1535,1537,1540,1543,1545,1547,1549,1551,1554,1556],{"class":538,"line":694},[536,1536,617],{"class":616},[536,1538,1539],{"class":631}," const",[536,1541,1542],{"class":627}," POST ",[536,1544,1461],{"class":635},[536,1546,1494],{"class":623},[536,1548,628],{"class":627},[536,1550,632],{"class":631},[536,1552,1553],{"class":635}," ()",[536,1555,646],{"class":631},[536,1557,649],{"class":635},[536,1559,1560,1562,1564,1566,1568],{"class":538,"line":702},[536,1561,655],{"class":631},[536,1563,818],{"class":627},[536,1565,661],{"class":635},[536,1567,750],{"class":623},[536,1569,725],{"class":667},[536,1571,1572,1574,1576,1578,1580,1582,1584],{"class":538,"line":711},[536,1573,655],{"class":631},[536,1575,835],{"class":627},[536,1577,661],{"class":635},[536,1579,773],{"class":623},[536,1581,628],{"class":667},[536,1583,844],{"class":627},[536,1585,708],{"class":667},[536,1587,1588],{"class":538,"line":728},[536,1589,1591],{"class":1590},"sHwdD","  \u002F\u002F ...\n",[536,1593,1594,1596],{"class":538,"line":853},[536,1595,731],{"class":635},[536,1597,708],{"class":627},[526,1599,1601],{"className":606,"code":1600,"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,1602,1603,1621,1625,1661,1681,1685],{"__ignoreMap":532},[536,1604,1605,1607,1609,1611,1613,1615,1617,1619],{"class":538,"line":539},[536,1606,744],{"class":616},[536,1608,747],{"class":635},[536,1610,773],{"class":627},[536,1612,753],{"class":635},[536,1614,756],{"class":616},[536,1616,682],{"class":635},[536,1618,459],{"class":545},[536,1620,764],{"class":635},[536,1622,1623],{"class":538,"line":652},[536,1624,789],{"emptyLinePlaceholder":788},[536,1626,1627,1630,1632,1635,1637,1639,1641,1643,1645,1647,1650,1652,1655,1657,1659],{"class":538,"line":673},[536,1628,1629],{"class":627},"app",[536,1631,719],{"class":635},[536,1633,1634],{"class":623},"post",[536,1636,628],{"class":627},[536,1638,688],{"class":635},[536,1640,979],{"class":545},[536,1642,688],{"class":635},[536,1644,1497],{"class":635},[536,1646,636],{"class":635},[536,1648,1649],{"class":639},"req",[536,1651,1497],{"class":635},[536,1653,1654],{"class":639}," res",[536,1656,643],{"class":635},[536,1658,646],{"class":631},[536,1660,649],{"class":635},[536,1662,1663,1665,1667,1669,1671,1673,1675,1677,1679],{"class":538,"line":694},[536,1664,655],{"class":631},[536,1666,835],{"class":627},[536,1668,661],{"class":635},[536,1670,773],{"class":623},[536,1672,628],{"class":667},[536,1674,1649],{"class":627},[536,1676,719],{"class":635},[536,1678,844],{"class":627},[536,1680,708],{"class":667},[536,1682,1683],{"class":538,"line":702},[536,1684,1591],{"class":1590},[536,1686,1687,1689],{"class":538,"line":711},[536,1688,731],{"class":635},[536,1690,708],{"class":627},[526,1692,1694],{"className":606,"code":1693,"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,1695,1696,1714,1718,1747,1777,1781],{"__ignoreMap":532},[536,1697,1698,1700,1702,1704,1706,1708,1710,1712],{"class":538,"line":539},[536,1699,744],{"class":616},[536,1701,747],{"class":635},[536,1703,773],{"class":627},[536,1705,753],{"class":635},[536,1707,756],{"class":616},[536,1709,682],{"class":635},[536,1711,459],{"class":545},[536,1713,764],{"class":635},[536,1715,1716],{"class":538,"line":652},[536,1717,789],{"emptyLinePlaceholder":788},[536,1719,1720,1722,1724,1726,1728,1730,1732,1734,1736,1738,1741,1743,1745],{"class":538,"line":673},[536,1721,1629],{"class":627},[536,1723,719],{"class":635},[536,1725,1634],{"class":623},[536,1727,628],{"class":627},[536,1729,688],{"class":635},[536,1731,979],{"class":545},[536,1733,688],{"class":635},[536,1735,1497],{"class":635},[536,1737,636],{"class":635},[536,1739,1740],{"class":639},"c",[536,1742,643],{"class":635},[536,1744,646],{"class":631},[536,1746,649],{"class":635},[536,1748,1749,1751,1753,1755,1757,1759,1761,1763,1766,1768,1770,1772,1774],{"class":538,"line":694},[536,1750,655],{"class":631},[536,1752,835],{"class":627},[536,1754,661],{"class":635},[536,1756,773],{"class":623},[536,1758,628],{"class":667},[536,1760,1740],{"class":627},[536,1762,719],{"class":635},[536,1764,1765],{"class":623},"get",[536,1767,628],{"class":667},[536,1769,688],{"class":635},[536,1771,844],{"class":545},[536,1773,688],{"class":635},[536,1775,1776],{"class":667},"))\n",[536,1778,1779],{"class":538,"line":702},[536,1780,1591],{"class":1590},[536,1782,1783,1785],{"class":538,"line":711},[536,1784,731],{"class":635},[536,1786,708],{"class":627},[526,1788,1790],{"className":606,"code":1789,"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,1791,1792,1810,1814,1846,1866,1870],{"__ignoreMap":532},[536,1793,1794,1796,1798,1800,1802,1804,1806,1808],{"class":538,"line":539},[536,1795,744],{"class":616},[536,1797,747],{"class":635},[536,1799,773],{"class":627},[536,1801,753],{"class":635},[536,1803,756],{"class":616},[536,1805,682],{"class":635},[536,1807,459],{"class":545},[536,1809,764],{"class":635},[536,1811,1812],{"class":538,"line":652},[536,1813,789],{"emptyLinePlaceholder":788},[536,1815,1816,1818,1820,1822,1824,1826,1828,1830,1832,1835,1837,1840,1842,1844],{"class":538,"line":673},[536,1817,1629],{"class":627},[536,1819,719],{"class":635},[536,1821,1634],{"class":623},[536,1823,628],{"class":627},[536,1825,688],{"class":635},[536,1827,979],{"class":545},[536,1829,688],{"class":635},[536,1831,1497],{"class":635},[536,1833,1834],{"class":631}," async",[536,1836,636],{"class":635},[536,1838,1839],{"class":639},"request",[536,1841,643],{"class":635},[536,1843,646],{"class":631},[536,1845,649],{"class":635},[536,1847,1848,1850,1852,1854,1856,1858,1860,1862,1864],{"class":538,"line":694},[536,1849,655],{"class":631},[536,1851,835],{"class":627},[536,1853,661],{"class":635},[536,1855,773],{"class":623},[536,1857,628],{"class":667},[536,1859,1839],{"class":627},[536,1861,719],{"class":635},[536,1863,844],{"class":627},[536,1865,708],{"class":667},[536,1867,1868],{"class":538,"line":702},[536,1869,1591],{"class":1590},[536,1871,1872,1874],{"class":538,"line":711},[536,1873,731],{"class":635},[536,1875,708],{"class":627},[526,1877,1879],{"className":606,"code":1878,"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,1880,1881,1900,1918,1922,1934],{"__ignoreMap":532},[536,1882,1883,1885,1887,1889,1891,1893,1895,1898],{"class":538,"line":539},[536,1884,744],{"class":616},[536,1886,747],{"class":635},[536,1888,750],{"class":627},[536,1890,753],{"class":635},[536,1892,756],{"class":616},[536,1894,682],{"class":635},[536,1896,1897],{"class":545},"evlog\u002Fnestjs",[536,1899,764],{"class":635},[536,1901,1902,1904,1906,1908,1910,1912,1914,1916],{"class":538,"line":652},[536,1903,744],{"class":616},[536,1905,747],{"class":635},[536,1907,773],{"class":627},[536,1909,753],{"class":635},[536,1911,756],{"class":616},[536,1913,682],{"class":635},[536,1915,459],{"class":545},[536,1917,764],{"class":635},[536,1919,1920],{"class":538,"line":673},[536,1921,789],{"emptyLinePlaceholder":788},[536,1923,1924,1926,1928,1930,1932],{"class":538,"line":694},[536,1925,1455],{"class":631},[536,1927,1458],{"class":627},[536,1929,1461],{"class":635},[536,1931,750],{"class":623},[536,1933,725],{"class":627},[536,1935,1936,1938,1940,1942,1944],{"class":538,"line":702},[536,1937,1455],{"class":631},[536,1939,1473],{"class":627},[536,1941,1461],{"class":635},[536,1943,773],{"class":623},[536,1945,1480],{"class":627},[526,1947,1949],{"className":606,"code":1948,"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,1950,1951,1970,1988,1992,2004,2016,2021],{"__ignoreMap":532},[536,1952,1953,1955,1957,1960,1962,1964,1966,1968],{"class":538,"line":539},[536,1954,744],{"class":616},[536,1956,747],{"class":635},[536,1958,1959],{"class":627}," createLogger",[536,1961,753],{"class":635},[536,1963,756],{"class":616},[536,1965,682],{"class":635},[536,1967,761],{"class":545},[536,1969,764],{"class":635},[536,1971,1972,1974,1976,1978,1980,1982,1984,1986],{"class":538,"line":652},[536,1973,744],{"class":616},[536,1975,747],{"class":635},[536,1977,773],{"class":627},[536,1979,753],{"class":635},[536,1981,756],{"class":616},[536,1983,682],{"class":635},[536,1985,459],{"class":545},[536,1987,764],{"class":635},[536,1989,1990],{"class":538,"line":673},[536,1991,789],{"emptyLinePlaceholder":788},[536,1993,1994,1996,1998,2000,2002],{"class":538,"line":694},[536,1995,1455],{"class":631},[536,1997,1458],{"class":627},[536,1999,1461],{"class":635},[536,2001,1959],{"class":623},[536,2003,725],{"class":627},[536,2005,2006,2008,2010,2012,2014],{"class":538,"line":702},[536,2007,1455],{"class":631},[536,2009,1473],{"class":627},[536,2011,1461],{"class":635},[536,2013,773],{"class":623},[536,2015,1480],{"class":627},[536,2017,2018],{"class":538,"line":711},[536,2019,2020],{"class":1590},"\u002F\u002F ...\n",[536,2022,2023,2025,2027,2030],{"class":538,"line":728},[536,2024,844],{"class":627},[536,2026,719],{"class":635},[536,2028,2029],{"class":623},"emit",[536,2031,725],{"class":627},[2033,2034,2035],"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":2037},[2038,2039,2040,2041,2042],{"id":517,"depth":652,"text":518},{"id":595,"depth":652,"text":25},{"id":1239,"depth":652,"text":1240},{"id":1364,"depth":652,"text":1365},{"id":1397,"depth":652,"text":1398},"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",[2046,2049,2050,2051],{"label":1372,"icon":272,"to":270,"color":2047,"variant":2048},"neutral","subtle",{"label":274,"icon":277,"to":275,"color":2047,"variant":2048},{"label":1334,"icon":282,"to":280,"color":2047,"variant":2048},{"label":1389,"icon":287,"to":285,"color":2047,"variant":2048},{},{"title":36,"icon":39},{"title":449,"description":2043},"Y_i7iWaRrHzA7TpLdtooeqDQX40mgHQ3ExlhibCBVY0",[2057,2059],{"title":255,"path":256,"stem":257,"description":2058,"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":2060,"icon":272,"children":-1},"streamText, generateText, multi-step agents, RAG, and multiple models — every common AI SDK pattern wired into evlog.",1784202382190]