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