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