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