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