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