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