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