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