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