[{"data":1,"prerenderedAt":2951},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-ai-sdk-usage":447,"-use-cases-ai-sdk-usage-surround":2946},[4,30,80,245,361,416],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Start","\u002Fstart","1.start",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":25,"path":26,"stem":27,"icon":28},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Learn","\u002Flearn","2.learn",[35,40,45,50,55,60,65,70,75],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":46,"path":47,"stem":48,"icon":49},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":51,"path":52,"stem":53,"icon":54},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":56,"path":57,"stem":58,"icon":59},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":61,"path":62,"stem":63,"icon":64},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":66,"path":67,"stem":68,"icon":69},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":71,"path":72,"stem":73,"icon":74},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":76,"path":77,"stem":78,"icon":79},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":81,"path":82,"stem":83,"children":84,"page":29},"Integrate","\u002Fintegrate","3.integrate",[85,89,157],{"title":36,"path":86,"stem":87,"icon":88},"\u002Fintegrate\u002Foverview","3.integrate\u002F0.overview","i-lucide-plug",{"title":90,"path":91,"stem":92,"children":93,"page":29},"Adapters","\u002Fintegrate\u002Fadapters","3.integrate\u002Fadapters",[94,97,137],{"title":36,"path":95,"stem":96,"icon":39},"\u002Fintegrate\u002Fadapters\u002Foverview","3.integrate\u002Fadapters\u002F01.overview",{"title":98,"path":99,"stem":100,"children":101,"page":29},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","3.integrate\u002Fadapters\u002Fcloud",[102,107,112,117,122,127,132],{"title":103,"path":104,"stem":105,"icon":106},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","3.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":108,"path":109,"stem":110,"icon":111},"OTLP","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fotlp","3.integrate\u002Fadapters\u002Fcloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":113,"path":114,"stem":115,"icon":116},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","3.integrate\u002Fadapters\u002Fcloud\u002F03.posthog","i-simple-icons-posthog",{"title":118,"path":119,"stem":120,"icon":121},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","3.integrate\u002Fadapters\u002Fcloud\u002F04.sentry","i-simple-icons-sentry",{"title":123,"path":124,"stem":125,"icon":126},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","3.integrate\u002Fadapters\u002Fcloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":128,"path":129,"stem":130,"icon":131},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","3.integrate\u002Fadapters\u002Fcloud\u002F06.datadog","i-simple-icons-datadog",{"title":133,"path":134,"stem":135,"icon":136},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fhyperdx","3.integrate\u002Fadapters\u002Fcloud\u002F07.hyperdx","i-custom-hyperdx",{"title":138,"path":139,"stem":140,"children":141,"page":29},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","3.integrate\u002Fadapters\u002Fself-hosted",[142,147,152],{"title":143,"path":144,"stem":145,"icon":146},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","3.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":148,"path":149,"stem":150,"icon":151},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","3.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":153,"path":154,"stem":155,"icon":156},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","3.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":158,"path":159,"stem":160,"children":161,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","3.integrate\u002Fframeworks",[162,166,171,176,181,186,191,196,201,206,211,216,221,226,230,235,240],{"title":36,"path":163,"stem":164,"icon":165},"\u002Fintegrate\u002Fframeworks\u002Foverview","3.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":167,"path":168,"stem":169,"icon":170},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","3.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":172,"path":173,"stem":174,"icon":175},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","3.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":177,"path":178,"stem":179,"icon":180},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","3.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":182,"path":183,"stem":184,"icon":185},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","3.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":187,"path":188,"stem":189,"icon":190},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","3.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":192,"path":193,"stem":194,"icon":195},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","3.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":197,"path":198,"stem":199,"icon":200},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","3.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":202,"path":203,"stem":204,"icon":205},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","3.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":207,"path":208,"stem":209,"icon":210},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","3.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":212,"path":213,"stem":214,"icon":215},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","3.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":217,"path":218,"stem":219,"icon":220},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","3.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":222,"path":223,"stem":224,"icon":225},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","3.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":227,"path":228,"stem":229,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","3.integrate\u002Fframeworks\u002F13.standalone",{"title":231,"path":232,"stem":233,"icon":234},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","3.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":236,"path":237,"stem":238,"icon":239},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","3.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":241,"path":242,"stem":243,"icon":244},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","3.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":246,"path":247,"stem":248,"children":249,"page":29},"Use Cases","\u002Fuse-cases","4.use-cases",[250,254,259,288,316,348,353],{"title":36,"path":251,"stem":252,"icon":253},"\u002Fuse-cases\u002Foverview","4.use-cases\u002F0.overview","i-lucide-list-checks",{"title":255,"path":256,"stem":257,"icon":258},"Client Logging","\u002Fuse-cases\u002Fclient-logging","4.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":260,"icon":261,"path":262,"stem":263,"children":264,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","4.use-cases\u002F2.ai-sdk",[265,268,273,278,283],{"title":36,"path":266,"stem":267,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","4.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":269,"path":270,"stem":271,"icon":272},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","4.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":274,"path":275,"stem":276,"icon":277},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","4.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":279,"path":280,"stem":281,"icon":282},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","4.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":284,"path":285,"stem":286,"icon":287},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","4.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":289,"icon":290,"path":291,"stem":292,"children":293,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","4.use-cases\u002F3.better-auth",[294,297,302,307,311],{"title":36,"path":295,"stem":296,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","4.use-cases\u002F3.better-auth\u002F01.overview",{"title":298,"path":299,"stem":300,"icon":301},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","4.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":303,"path":304,"stem":305,"icon":306},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","4.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":308,"path":309,"stem":310,"icon":258},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","4.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":312,"path":313,"stem":314,"icon":315},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","4.use-cases\u002F3.better-auth\u002F05.performance","i-lucide-gauge",{"title":317,"icon":318,"path":319,"stem":320,"children":321,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","4.use-cases\u002F4.audit",[322,325,330,335,340,344],{"title":36,"path":323,"stem":324,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","4.use-cases\u002F4.audit\u002F01.overview",{"title":326,"path":327,"stem":328,"icon":329},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","4.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":331,"path":332,"stem":333,"icon":334},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","4.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":336,"path":337,"stem":338,"icon":339},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","4.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":341,"path":342,"stem":343,"icon":318},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","4.use-cases\u002F4.audit\u002F05.compliance",{"title":345,"path":346,"stem":347,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","4.use-cases\u002F4.audit\u002F06.recipes",{"title":349,"path":350,"stem":351,"icon":352},"Enrichers","\u002Fuse-cases\u002Fenrichers","4.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":354,"icon":261,"path":355,"stem":356,"children":357,"page":29},"Eve","\u002Fuse-cases\u002Feve","4.use-cases\u002F5.eve",[358],{"title":36,"path":359,"stem":360,"icon":261},"\u002Fuse-cases\u002Feve\u002Foverview","4.use-cases\u002F5.eve\u002F01.overview",{"title":362,"path":363,"stem":364,"children":365,"page":29},"Extend","\u002Fextend","5.extend",[366,370,375,380,385,389,393,397,401,406,411],{"title":36,"path":367,"stem":368,"icon":369},"\u002Fextend\u002Foverview","5.extend\u002F0.overview","i-lucide-blocks",{"title":371,"path":372,"stem":373,"icon":374},"Stream","\u002Fextend\u002Fstream","5.extend\u002F1.stream","i-lucide-radio-tower",{"title":376,"path":377,"stem":378,"icon":379},"Custom framework","\u002Fextend\u002Fcustom-framework","5.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":381,"path":382,"stem":383,"icon":384},"FS reader","\u002Fextend\u002Ffs-reader","5.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":345,"path":386,"stem":387,"icon":388},"\u002Fextend\u002Fconsumer-recipes","5.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":390,"path":391,"stem":392,"icon":369},"Plugins","\u002Fextend\u002Fplugins","5.extend\u002F4.plugins",{"title":394,"path":395,"stem":396,"icon":352},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","5.extend\u002F5.custom-enrichers",{"title":398,"path":399,"stem":400,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","5.extend\u002F6.tail-sampling",{"title":402,"path":403,"stem":404,"icon":405},"Identity headers","\u002Fextend\u002Fidentity-headers","5.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":407,"path":408,"stem":409,"icon":410},"Custom drains","\u002Fextend\u002Fcustom-drains","5.extend\u002F8.custom-drains","i-lucide-share-2",{"title":412,"path":413,"stem":414,"icon":415},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","5.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":417,"path":418,"stem":419,"children":420,"page":29},"Reference","\u002Freference","6.reference",[421,426,429,434,438,443],{"title":422,"path":423,"stem":424,"icon":425},"Configuration","\u002Freference\u002Fconfiguration","6.reference\u002F1.configuration","i-lucide-settings",{"title":312,"path":427,"stem":428,"icon":315},"\u002Freference\u002Fperformance","6.reference\u002F2.performance",{"title":430,"path":431,"stem":432,"icon":433},"Vite Plugin","\u002Freference\u002Fvite-plugin","6.reference\u002F3.vite-plugin","i-custom-vite",{"title":435,"path":436,"stem":437,"icon":318},"Best Practices","\u002Freference\u002Fbest-practices","6.reference\u002F4.best-practices",{"title":439,"path":440,"stem":441,"icon":442},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","6.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":444,"path":445,"stem":446,"icon":352},"Agent Skills","\u002Freference\u002Fagent-skills","6.reference\u002F6.agent-skills",{"id":448,"title":449,"body":450,"description":2935,"extension":2936,"links":2937,"meta":2942,"navigation":2943,"path":270,"seo":2944,"stem":271,"__hash__":2945},"docs\u002F4.use-cases\u002F2.ai-sdk\u002F02.usage.md","Usage Patterns",{"type":451,"value":452,"toc":2927},"minimark",[453,466,477,482,485,850,857,861,864,1060,1064,1067,1383,1386,2010,2021,2025,2032,2403,2410,2531,2535,2545,2854,2858,2864,2923],[454,455,456,457,461,462,465],"p",{},"Every pattern below uses the same ",[458,459,460],"code",{},"createAILogger(log)"," setup. Wrap the model with ",[458,463,464],{},"ai.wrap()"," and the middleware accumulates tokens, tools, and timing on the wide event automatically.",[454,467,468,469,472,473,476],{},"On Next.js, Nuxt\u002FNitro, SvelteKit, Hono, React Router, and oRPC, evlog defers wide-event emit for streaming responses (for example ",[458,470,471],{},"text\u002Fevent-stream"," and AI SDK UI streams) until the body finishes, so late ",[458,474,475],{},"ai"," metadata stays on the same request event.",[478,479,481],"h2",{"id":480},"streamtext","streamText",[454,483,484],{},"The most common pattern — streaming chat with full observability:",[486,487,493],"pre",{"className":488,"code":489,"filename":490,"language":491,"meta":492,"style":492},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { streamText } from 'ai'\nimport { createAILogger } from 'evlog\u002Fai'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n  const ai = createAILogger(log)\n  const { messages } = await readBody(event)\n\n  log.set({ action: 'chat', messagesCount: messages.length })\n\n  const result = streamText({\n    model: ai.wrap('anthropic\u002Fclaude-sonnet-4.6'),\n    messages,\n    onFinish: ({ text }) => {\n      saveConversation(text)\n    },\n  })\n\n  return result.toTextStreamResponse()\n})\n","server\u002Fapi\u002Fchat.post.ts","typescript","",[458,494,495,527,548,555,591,614,633,659,664,714,719,736,765,773,794,807,813,821,826,842],{"__ignoreMap":492},[496,497,500,504,508,512,515,518,521,524],"span",{"class":498,"line":499},"line",1,[496,501,503],{"class":502},"s7zQu","import",[496,505,507],{"class":506},"sMK4o"," {",[496,509,511],{"class":510},"sTEyZ"," streamText",[496,513,514],{"class":506}," }",[496,516,517],{"class":502}," from",[496,519,520],{"class":506}," '",[496,522,475],{"class":523},"sfazB",[496,525,526],{"class":506},"'\n",[496,528,530,532,534,537,539,541,543,546],{"class":498,"line":529},2,[496,531,503],{"class":502},[496,533,507],{"class":506},[496,535,536],{"class":510}," createAILogger",[496,538,514],{"class":506},[496,540,517],{"class":502},[496,542,520],{"class":506},[496,544,545],{"class":523},"evlog\u002Fai",[496,547,526],{"class":506},[496,549,551],{"class":498,"line":550},3,[496,552,554],{"emptyLinePlaceholder":553},true,"\n",[496,556,558,561,564,568,571,575,578,582,585,588],{"class":498,"line":557},4,[496,559,560],{"class":502},"export",[496,562,563],{"class":502}," default",[496,565,567],{"class":566},"s2Zo4"," defineEventHandler",[496,569,570],{"class":510},"(",[496,572,574],{"class":573},"spNyl","async",[496,576,577],{"class":506}," (",[496,579,581],{"class":580},"sHdIc","event",[496,583,584],{"class":506},")",[496,586,587],{"class":573}," =>",[496,589,590],{"class":506}," {\n",[496,592,594,597,600,603,606,609,611],{"class":498,"line":593},5,[496,595,596],{"class":573},"  const",[496,598,599],{"class":510}," log",[496,601,602],{"class":506}," =",[496,604,605],{"class":566}," useLogger",[496,607,570],{"class":608},"swJcz",[496,610,581],{"class":510},[496,612,613],{"class":608},")\n",[496,615,617,619,622,624,626,628,631],{"class":498,"line":616},6,[496,618,596],{"class":573},[496,620,621],{"class":510}," ai",[496,623,602],{"class":506},[496,625,536],{"class":566},[496,627,570],{"class":608},[496,629,630],{"class":510},"log",[496,632,613],{"class":608},[496,634,636,638,640,643,645,647,650,653,655,657],{"class":498,"line":635},7,[496,637,596],{"class":573},[496,639,507],{"class":506},[496,641,642],{"class":510}," messages",[496,644,514],{"class":506},[496,646,602],{"class":506},[496,648,649],{"class":502}," await",[496,651,652],{"class":566}," readBody",[496,654,570],{"class":608},[496,656,581],{"class":510},[496,658,613],{"class":608},[496,660,662],{"class":498,"line":661},8,[496,663,554],{"emptyLinePlaceholder":553},[496,665,667,670,673,676,678,681,684,687,689,692,695,698,701,703,705,707,710,712],{"class":498,"line":666},9,[496,668,669],{"class":510},"  log",[496,671,672],{"class":506},".",[496,674,675],{"class":566},"set",[496,677,570],{"class":608},[496,679,680],{"class":506},"{",[496,682,683],{"class":608}," action",[496,685,686],{"class":506},":",[496,688,520],{"class":506},[496,690,691],{"class":523},"chat",[496,693,694],{"class":506},"'",[496,696,697],{"class":506},",",[496,699,700],{"class":608}," messagesCount",[496,702,686],{"class":506},[496,704,642],{"class":510},[496,706,672],{"class":506},[496,708,709],{"class":510},"length",[496,711,514],{"class":506},[496,713,613],{"class":608},[496,715,717],{"class":498,"line":716},10,[496,718,554],{"emptyLinePlaceholder":553},[496,720,722,724,727,729,731,733],{"class":498,"line":721},11,[496,723,596],{"class":573},[496,725,726],{"class":510}," result",[496,728,602],{"class":506},[496,730,511],{"class":566},[496,732,570],{"class":608},[496,734,735],{"class":506},"{\n",[496,737,739,742,744,746,748,751,753,755,758,760,762],{"class":498,"line":738},12,[496,740,741],{"class":608},"    model",[496,743,686],{"class":506},[496,745,621],{"class":510},[496,747,672],{"class":506},[496,749,750],{"class":566},"wrap",[496,752,570],{"class":608},[496,754,694],{"class":506},[496,756,757],{"class":523},"anthropic\u002Fclaude-sonnet-4.6",[496,759,694],{"class":506},[496,761,584],{"class":608},[496,763,764],{"class":506},",\n",[496,766,768,771],{"class":498,"line":767},13,[496,769,770],{"class":510},"    messages",[496,772,764],{"class":506},[496,774,776,779,781,784,787,790,792],{"class":498,"line":775},14,[496,777,778],{"class":566},"    onFinish",[496,780,686],{"class":506},[496,782,783],{"class":506}," ({",[496,785,786],{"class":580}," text",[496,788,789],{"class":506}," })",[496,791,587],{"class":573},[496,793,590],{"class":506},[496,795,797,800,802,805],{"class":498,"line":796},15,[496,798,799],{"class":566},"      saveConversation",[496,801,570],{"class":608},[496,803,804],{"class":510},"text",[496,806,613],{"class":608},[496,808,810],{"class":498,"line":809},16,[496,811,812],{"class":506},"    },\n",[496,814,816,819],{"class":498,"line":815},17,[496,817,818],{"class":506},"  }",[496,820,613],{"class":608},[496,822,824],{"class":498,"line":823},18,[496,825,554],{"emptyLinePlaceholder":553},[496,827,829,832,834,836,839],{"class":498,"line":828},19,[496,830,831],{"class":502},"  return",[496,833,726],{"class":510},[496,835,672],{"class":506},[496,837,838],{"class":566},"toTextStreamResponse",[496,840,841],{"class":608},"()\n",[496,843,845,848],{"class":498,"line":844},20,[496,846,847],{"class":506},"}",[496,849,613],{"class":510},[454,851,852,853,856],{},"The middleware never touches your ",[458,854,855],{},"onFinish"," callback — your code runs as usual.",[478,858,860],{"id":859},"generatetext","generateText",[454,862,863],{},"Synchronous generation. The middleware captures the result automatically:",[486,865,868],{"className":488,"code":866,"filename":867,"language":491,"meta":492,"style":492},"import { generateText } from 'ai'\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 = await generateText({\n    model: ai.wrap('anthropic\u002Fclaude-sonnet-4.6'),\n    prompt: 'Summarize this document',\n  })\n\n  return { text: result.text }\n})\n","server\u002Fapi\u002Fsummarize.post.ts",[458,869,870,889,907,911,933,949,965,969,985,1009,1025,1031,1035,1054],{"__ignoreMap":492},[496,871,872,874,876,879,881,883,885,887],{"class":498,"line":499},[496,873,503],{"class":502},[496,875,507],{"class":506},[496,877,878],{"class":510}," generateText",[496,880,514],{"class":506},[496,882,517],{"class":502},[496,884,520],{"class":506},[496,886,475],{"class":523},[496,888,526],{"class":506},[496,890,891,893,895,897,899,901,903,905],{"class":498,"line":529},[496,892,503],{"class":502},[496,894,507],{"class":506},[496,896,536],{"class":510},[496,898,514],{"class":506},[496,900,517],{"class":502},[496,902,520],{"class":506},[496,904,545],{"class":523},[496,906,526],{"class":506},[496,908,909],{"class":498,"line":550},[496,910,554],{"emptyLinePlaceholder":553},[496,912,913,915,917,919,921,923,925,927,929,931],{"class":498,"line":557},[496,914,560],{"class":502},[496,916,563],{"class":502},[496,918,567],{"class":566},[496,920,570],{"class":510},[496,922,574],{"class":573},[496,924,577],{"class":506},[496,926,581],{"class":580},[496,928,584],{"class":506},[496,930,587],{"class":573},[496,932,590],{"class":506},[496,934,935,937,939,941,943,945,947],{"class":498,"line":593},[496,936,596],{"class":573},[496,938,599],{"class":510},[496,940,602],{"class":506},[496,942,605],{"class":566},[496,944,570],{"class":608},[496,946,581],{"class":510},[496,948,613],{"class":608},[496,950,951,953,955,957,959,961,963],{"class":498,"line":616},[496,952,596],{"class":573},[496,954,621],{"class":510},[496,956,602],{"class":506},[496,958,536],{"class":566},[496,960,570],{"class":608},[496,962,630],{"class":510},[496,964,613],{"class":608},[496,966,967],{"class":498,"line":635},[496,968,554],{"emptyLinePlaceholder":553},[496,970,971,973,975,977,979,981,983],{"class":498,"line":661},[496,972,596],{"class":573},[496,974,726],{"class":510},[496,976,602],{"class":506},[496,978,649],{"class":502},[496,980,878],{"class":566},[496,982,570],{"class":608},[496,984,735],{"class":506},[496,986,987,989,991,993,995,997,999,1001,1003,1005,1007],{"class":498,"line":666},[496,988,741],{"class":608},[496,990,686],{"class":506},[496,992,621],{"class":510},[496,994,672],{"class":506},[496,996,750],{"class":566},[496,998,570],{"class":608},[496,1000,694],{"class":506},[496,1002,757],{"class":523},[496,1004,694],{"class":506},[496,1006,584],{"class":608},[496,1008,764],{"class":506},[496,1010,1011,1014,1016,1018,1021,1023],{"class":498,"line":716},[496,1012,1013],{"class":608},"    prompt",[496,1015,686],{"class":506},[496,1017,520],{"class":506},[496,1019,1020],{"class":523},"Summarize this document",[496,1022,694],{"class":506},[496,1024,764],{"class":506},[496,1026,1027,1029],{"class":498,"line":721},[496,1028,818],{"class":506},[496,1030,613],{"class":608},[496,1032,1033],{"class":498,"line":738},[496,1034,554],{"emptyLinePlaceholder":553},[496,1036,1037,1039,1041,1043,1045,1047,1049,1051],{"class":498,"line":767},[496,1038,831],{"class":502},[496,1040,507],{"class":506},[496,1042,786],{"class":608},[496,1044,686],{"class":506},[496,1046,726],{"class":510},[496,1048,672],{"class":506},[496,1050,804],{"class":510},[496,1052,1053],{"class":506}," }\n",[496,1055,1056,1058],{"class":498,"line":775},[496,1057,847],{"class":506},[496,1059,613],{"class":510},[478,1061,1063],{"id":1062},"multi-step-agents","Multi-step Agents",[454,1065,1066],{},"The middleware fires for each step automatically. Steps, tool calls, and tokens are accumulated across the agent loop:",[486,1068,1071],{"className":488,"code":1069,"filename":1070,"language":491,"meta":492,"style":492},"import { ToolLoopAgent, createAgentUIStreamResponse, stepCountIs } from 'ai'\nimport { useLogger } from 'evlog'\nimport { createAILogger } from 'evlog\u002Fai'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n  const { messages } = await readBody(event)\n  const ai = createAILogger(log, {\n    toolInputs: { maxLength: 500 },\n  })\n\n  const agent = new ToolLoopAgent({\n    model: ai.wrap('anthropic\u002Fclaude-sonnet-4.6'),\n    tools: { searchWeb, queryDatabase },\n    stopWhen: stepCountIs(5),\n  })\n\n  return createAgentUIStreamResponse({\n    agent,\n    uiMessages: messages,\n  })\n})\n","server\u002Fapi\u002Fagent.post.ts",[458,1072,1073,1102,1121,1139,1143,1165,1181,1203,1221,1242,1248,1252,1270,1294,1313,1331,1337,1341,1351,1358,1369,1376],{"__ignoreMap":492},[496,1074,1075,1077,1079,1082,1084,1087,1089,1092,1094,1096,1098,1100],{"class":498,"line":499},[496,1076,503],{"class":502},[496,1078,507],{"class":506},[496,1080,1081],{"class":510}," ToolLoopAgent",[496,1083,697],{"class":506},[496,1085,1086],{"class":510}," createAgentUIStreamResponse",[496,1088,697],{"class":506},[496,1090,1091],{"class":510}," stepCountIs",[496,1093,514],{"class":506},[496,1095,517],{"class":502},[496,1097,520],{"class":506},[496,1099,475],{"class":523},[496,1101,526],{"class":506},[496,1103,1104,1106,1108,1110,1112,1114,1116,1119],{"class":498,"line":529},[496,1105,503],{"class":502},[496,1107,507],{"class":506},[496,1109,605],{"class":510},[496,1111,514],{"class":506},[496,1113,517],{"class":502},[496,1115,520],{"class":506},[496,1117,1118],{"class":523},"evlog",[496,1120,526],{"class":506},[496,1122,1123,1125,1127,1129,1131,1133,1135,1137],{"class":498,"line":550},[496,1124,503],{"class":502},[496,1126,507],{"class":506},[496,1128,536],{"class":510},[496,1130,514],{"class":506},[496,1132,517],{"class":502},[496,1134,520],{"class":506},[496,1136,545],{"class":523},[496,1138,526],{"class":506},[496,1140,1141],{"class":498,"line":557},[496,1142,554],{"emptyLinePlaceholder":553},[496,1144,1145,1147,1149,1151,1153,1155,1157,1159,1161,1163],{"class":498,"line":593},[496,1146,560],{"class":502},[496,1148,563],{"class":502},[496,1150,567],{"class":566},[496,1152,570],{"class":510},[496,1154,574],{"class":573},[496,1156,577],{"class":506},[496,1158,581],{"class":580},[496,1160,584],{"class":506},[496,1162,587],{"class":573},[496,1164,590],{"class":506},[496,1166,1167,1169,1171,1173,1175,1177,1179],{"class":498,"line":616},[496,1168,596],{"class":573},[496,1170,599],{"class":510},[496,1172,602],{"class":506},[496,1174,605],{"class":566},[496,1176,570],{"class":608},[496,1178,581],{"class":510},[496,1180,613],{"class":608},[496,1182,1183,1185,1187,1189,1191,1193,1195,1197,1199,1201],{"class":498,"line":635},[496,1184,596],{"class":573},[496,1186,507],{"class":506},[496,1188,642],{"class":510},[496,1190,514],{"class":506},[496,1192,602],{"class":506},[496,1194,649],{"class":502},[496,1196,652],{"class":566},[496,1198,570],{"class":608},[496,1200,581],{"class":510},[496,1202,613],{"class":608},[496,1204,1205,1207,1209,1211,1213,1215,1217,1219],{"class":498,"line":661},[496,1206,596],{"class":573},[496,1208,621],{"class":510},[496,1210,602],{"class":506},[496,1212,536],{"class":566},[496,1214,570],{"class":608},[496,1216,630],{"class":510},[496,1218,697],{"class":506},[496,1220,590],{"class":506},[496,1222,1223,1226,1228,1230,1233,1235,1239],{"class":498,"line":666},[496,1224,1225],{"class":608},"    toolInputs",[496,1227,686],{"class":506},[496,1229,507],{"class":506},[496,1231,1232],{"class":608}," maxLength",[496,1234,686],{"class":506},[496,1236,1238],{"class":1237},"sbssI"," 500",[496,1240,1241],{"class":506}," },\n",[496,1243,1244,1246],{"class":498,"line":716},[496,1245,818],{"class":506},[496,1247,613],{"class":608},[496,1249,1250],{"class":498,"line":721},[496,1251,554],{"emptyLinePlaceholder":553},[496,1253,1254,1256,1259,1261,1264,1266,1268],{"class":498,"line":738},[496,1255,596],{"class":573},[496,1257,1258],{"class":510}," agent",[496,1260,602],{"class":506},[496,1262,1263],{"class":506}," new",[496,1265,1081],{"class":566},[496,1267,570],{"class":608},[496,1269,735],{"class":506},[496,1271,1272,1274,1276,1278,1280,1282,1284,1286,1288,1290,1292],{"class":498,"line":767},[496,1273,741],{"class":608},[496,1275,686],{"class":506},[496,1277,621],{"class":510},[496,1279,672],{"class":506},[496,1281,750],{"class":566},[496,1283,570],{"class":608},[496,1285,694],{"class":506},[496,1287,757],{"class":523},[496,1289,694],{"class":506},[496,1291,584],{"class":608},[496,1293,764],{"class":506},[496,1295,1296,1299,1301,1303,1306,1308,1311],{"class":498,"line":775},[496,1297,1298],{"class":608},"    tools",[496,1300,686],{"class":506},[496,1302,507],{"class":506},[496,1304,1305],{"class":510}," searchWeb",[496,1307,697],{"class":506},[496,1309,1310],{"class":510}," queryDatabase",[496,1312,1241],{"class":506},[496,1314,1315,1318,1320,1322,1324,1327,1329],{"class":498,"line":796},[496,1316,1317],{"class":608},"    stopWhen",[496,1319,686],{"class":506},[496,1321,1091],{"class":566},[496,1323,570],{"class":608},[496,1325,1326],{"class":1237},"5",[496,1328,584],{"class":608},[496,1330,764],{"class":506},[496,1332,1333,1335],{"class":498,"line":809},[496,1334,818],{"class":506},[496,1336,613],{"class":608},[496,1338,1339],{"class":498,"line":815},[496,1340,554],{"emptyLinePlaceholder":553},[496,1342,1343,1345,1347,1349],{"class":498,"line":823},[496,1344,831],{"class":502},[496,1346,1086],{"class":566},[496,1348,570],{"class":608},[496,1350,735],{"class":506},[496,1352,1353,1356],{"class":498,"line":828},[496,1354,1355],{"class":510},"    agent",[496,1357,764],{"class":506},[496,1359,1360,1363,1365,1367],{"class":498,"line":844},[496,1361,1362],{"class":608},"    uiMessages",[496,1364,686],{"class":506},[496,1366,642],{"class":510},[496,1368,764],{"class":506},[496,1370,1372,1374],{"class":498,"line":1371},21,[496,1373,818],{"class":506},[496,1375,613],{"class":608},[496,1377,1379,1381],{"class":498,"line":1378},22,[496,1380,847],{"class":506},[496,1382,613],{"class":510},[454,1384,1385],{},"Wide event after a 3-step agent run:",[486,1387,1392],{"className":1388,"code":1389,"filename":1390,"language":1391,"meta":492,"style":492},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"ai\": {\n    \"calls\": 3,\n    \"steps\": 3,\n    \"model\": \"claude-sonnet-4.6\",\n    \"provider\": \"anthropic\",\n    \"inputTokens\": 4500,\n    \"outputTokens\": 1200,\n    \"totalTokens\": 5700,\n    \"finishReason\": \"stop\",\n    \"toolCalls\": [\n      { \"name\": \"searchWeb\", \"input\": { \"query\": \"TypeScript 6.0 features\" } },\n      { \"name\": \"queryDatabase\", \"input\": { \"sql\": \"SELECT * FROM docs WHERE topic = 'typescript'\" } },\n      { \"name\": \"searchWeb\", \"input\": { \"query\": \"TypeScript 6.0 release date\" } }\n    ],\n    \"responseId\": \"msg_01XFDUDYJgAACzvnptvVoYEL\",\n    \"stepsUsage\": [\n      { \"model\": \"claude-sonnet-4.6\", \"inputTokens\": 1200, \"outputTokens\": 300, \"toolCalls\": [\"searchWeb\"] },\n      { \"model\": \"claude-sonnet-4.6\", \"inputTokens\": 1500, \"outputTokens\": 400, \"toolCalls\": [\"queryDatabase\", \"searchWeb\"] },\n      { \"model\": \"claude-sonnet-4.6\", \"inputTokens\": 1800, \"outputTokens\": 500 }\n    ],\n    \"msToFirstChunk\": 312,\n    \"msToFinish\": 8200,\n    \"tokensPerSecond\": 146\n  }\n}\n","Wide Event","json",[458,1393,1394,1398,1412,1430,1445,1466,1486,1502,1518,1534,1554,1568,1622,1673,1722,1727,1747,1760,1827,1901,1946,1950,1966,1983,1998,2004],{"__ignoreMap":492},[496,1395,1396],{"class":498,"line":499},[496,1397,735],{"class":506},[496,1399,1400,1403,1405,1408,1410],{"class":498,"line":529},[496,1401,1402],{"class":506},"  \"",[496,1404,475],{"class":573},[496,1406,1407],{"class":506},"\"",[496,1409,686],{"class":506},[496,1411,590],{"class":506},[496,1413,1414,1417,1421,1423,1425,1428],{"class":498,"line":550},[496,1415,1416],{"class":506},"    \"",[496,1418,1420],{"class":1419},"sBMFI","calls",[496,1422,1407],{"class":506},[496,1424,686],{"class":506},[496,1426,1427],{"class":1237}," 3",[496,1429,764],{"class":506},[496,1431,1432,1434,1437,1439,1441,1443],{"class":498,"line":557},[496,1433,1416],{"class":506},[496,1435,1436],{"class":1419},"steps",[496,1438,1407],{"class":506},[496,1440,686],{"class":506},[496,1442,1427],{"class":1237},[496,1444,764],{"class":506},[496,1446,1447,1449,1452,1454,1456,1459,1462,1464],{"class":498,"line":593},[496,1448,1416],{"class":506},[496,1450,1451],{"class":1419},"model",[496,1453,1407],{"class":506},[496,1455,686],{"class":506},[496,1457,1458],{"class":506}," \"",[496,1460,1461],{"class":523},"claude-sonnet-4.6",[496,1463,1407],{"class":506},[496,1465,764],{"class":506},[496,1467,1468,1470,1473,1475,1477,1479,1482,1484],{"class":498,"line":616},[496,1469,1416],{"class":506},[496,1471,1472],{"class":1419},"provider",[496,1474,1407],{"class":506},[496,1476,686],{"class":506},[496,1478,1458],{"class":506},[496,1480,1481],{"class":523},"anthropic",[496,1483,1407],{"class":506},[496,1485,764],{"class":506},[496,1487,1488,1490,1493,1495,1497,1500],{"class":498,"line":635},[496,1489,1416],{"class":506},[496,1491,1492],{"class":1419},"inputTokens",[496,1494,1407],{"class":506},[496,1496,686],{"class":506},[496,1498,1499],{"class":1237}," 4500",[496,1501,764],{"class":506},[496,1503,1504,1506,1509,1511,1513,1516],{"class":498,"line":661},[496,1505,1416],{"class":506},[496,1507,1508],{"class":1419},"outputTokens",[496,1510,1407],{"class":506},[496,1512,686],{"class":506},[496,1514,1515],{"class":1237}," 1200",[496,1517,764],{"class":506},[496,1519,1520,1522,1525,1527,1529,1532],{"class":498,"line":666},[496,1521,1416],{"class":506},[496,1523,1524],{"class":1419},"totalTokens",[496,1526,1407],{"class":506},[496,1528,686],{"class":506},[496,1530,1531],{"class":1237}," 5700",[496,1533,764],{"class":506},[496,1535,1536,1538,1541,1543,1545,1547,1550,1552],{"class":498,"line":716},[496,1537,1416],{"class":506},[496,1539,1540],{"class":1419},"finishReason",[496,1542,1407],{"class":506},[496,1544,686],{"class":506},[496,1546,1458],{"class":506},[496,1548,1549],{"class":523},"stop",[496,1551,1407],{"class":506},[496,1553,764],{"class":506},[496,1555,1556,1558,1561,1563,1565],{"class":498,"line":721},[496,1557,1416],{"class":506},[496,1559,1560],{"class":1419},"toolCalls",[496,1562,1407],{"class":506},[496,1564,686],{"class":506},[496,1566,1567],{"class":506}," [\n",[496,1569,1570,1573,1575,1578,1580,1582,1584,1587,1589,1591,1593,1596,1598,1600,1602,1604,1607,1609,1611,1613,1616,1618,1620],{"class":498,"line":738},[496,1571,1572],{"class":506},"      {",[496,1574,1458],{"class":506},[496,1576,1577],{"class":1237},"name",[496,1579,1407],{"class":506},[496,1581,686],{"class":506},[496,1583,1458],{"class":506},[496,1585,1586],{"class":523},"searchWeb",[496,1588,1407],{"class":506},[496,1590,697],{"class":506},[496,1592,1458],{"class":506},[496,1594,1595],{"class":1237},"input",[496,1597,1407],{"class":506},[496,1599,686],{"class":506},[496,1601,507],{"class":506},[496,1603,1458],{"class":506},[496,1605,1606],{"class":608},"query",[496,1608,1407],{"class":506},[496,1610,686],{"class":506},[496,1612,1458],{"class":506},[496,1614,1615],{"class":523},"TypeScript 6.0 features",[496,1617,1407],{"class":506},[496,1619,514],{"class":506},[496,1621,1241],{"class":506},[496,1623,1624,1626,1628,1630,1632,1634,1636,1639,1641,1643,1645,1647,1649,1651,1653,1655,1658,1660,1662,1664,1667,1669,1671],{"class":498,"line":767},[496,1625,1572],{"class":506},[496,1627,1458],{"class":506},[496,1629,1577],{"class":1237},[496,1631,1407],{"class":506},[496,1633,686],{"class":506},[496,1635,1458],{"class":506},[496,1637,1638],{"class":523},"queryDatabase",[496,1640,1407],{"class":506},[496,1642,697],{"class":506},[496,1644,1458],{"class":506},[496,1646,1595],{"class":1237},[496,1648,1407],{"class":506},[496,1650,686],{"class":506},[496,1652,507],{"class":506},[496,1654,1458],{"class":506},[496,1656,1657],{"class":608},"sql",[496,1659,1407],{"class":506},[496,1661,686],{"class":506},[496,1663,1458],{"class":506},[496,1665,1666],{"class":523},"SELECT * FROM docs WHERE topic = 'typescript'",[496,1668,1407],{"class":506},[496,1670,514],{"class":506},[496,1672,1241],{"class":506},[496,1674,1675,1677,1679,1681,1683,1685,1687,1689,1691,1693,1695,1697,1699,1701,1703,1705,1707,1709,1711,1713,1716,1718,1720],{"class":498,"line":775},[496,1676,1572],{"class":506},[496,1678,1458],{"class":506},[496,1680,1577],{"class":1237},[496,1682,1407],{"class":506},[496,1684,686],{"class":506},[496,1686,1458],{"class":506},[496,1688,1586],{"class":523},[496,1690,1407],{"class":506},[496,1692,697],{"class":506},[496,1694,1458],{"class":506},[496,1696,1595],{"class":1237},[496,1698,1407],{"class":506},[496,1700,686],{"class":506},[496,1702,507],{"class":506},[496,1704,1458],{"class":506},[496,1706,1606],{"class":608},[496,1708,1407],{"class":506},[496,1710,686],{"class":506},[496,1712,1458],{"class":506},[496,1714,1715],{"class":523},"TypeScript 6.0 release date",[496,1717,1407],{"class":506},[496,1719,514],{"class":506},[496,1721,1053],{"class":506},[496,1723,1724],{"class":498,"line":796},[496,1725,1726],{"class":506},"    ],\n",[496,1728,1729,1731,1734,1736,1738,1740,1743,1745],{"class":498,"line":809},[496,1730,1416],{"class":506},[496,1732,1733],{"class":1419},"responseId",[496,1735,1407],{"class":506},[496,1737,686],{"class":506},[496,1739,1458],{"class":506},[496,1741,1742],{"class":523},"msg_01XFDUDYJgAACzvnptvVoYEL",[496,1744,1407],{"class":506},[496,1746,764],{"class":506},[496,1748,1749,1751,1754,1756,1758],{"class":498,"line":815},[496,1750,1416],{"class":506},[496,1752,1753],{"class":1419},"stepsUsage",[496,1755,1407],{"class":506},[496,1757,686],{"class":506},[496,1759,1567],{"class":506},[496,1761,1762,1764,1766,1768,1770,1772,1774,1776,1778,1780,1782,1784,1786,1788,1790,1792,1794,1796,1798,1800,1803,1805,1807,1809,1811,1813,1816,1818,1820,1822,1825],{"class":498,"line":823},[496,1763,1572],{"class":506},[496,1765,1458],{"class":506},[496,1767,1451],{"class":1237},[496,1769,1407],{"class":506},[496,1771,686],{"class":506},[496,1773,1458],{"class":506},[496,1775,1461],{"class":523},[496,1777,1407],{"class":506},[496,1779,697],{"class":506},[496,1781,1458],{"class":506},[496,1783,1492],{"class":1237},[496,1785,1407],{"class":506},[496,1787,686],{"class":506},[496,1789,1515],{"class":1237},[496,1791,697],{"class":506},[496,1793,1458],{"class":506},[496,1795,1508],{"class":1237},[496,1797,1407],{"class":506},[496,1799,686],{"class":506},[496,1801,1802],{"class":1237}," 300",[496,1804,697],{"class":506},[496,1806,1458],{"class":506},[496,1808,1560],{"class":1237},[496,1810,1407],{"class":506},[496,1812,686],{"class":506},[496,1814,1815],{"class":506}," [",[496,1817,1407],{"class":506},[496,1819,1586],{"class":523},[496,1821,1407],{"class":506},[496,1823,1824],{"class":506},"]",[496,1826,1241],{"class":506},[496,1828,1829,1831,1833,1835,1837,1839,1841,1843,1845,1847,1849,1851,1853,1855,1858,1860,1862,1864,1866,1868,1871,1873,1875,1877,1879,1881,1883,1885,1887,1889,1891,1893,1895,1897,1899],{"class":498,"line":828},[496,1830,1572],{"class":506},[496,1832,1458],{"class":506},[496,1834,1451],{"class":1237},[496,1836,1407],{"class":506},[496,1838,686],{"class":506},[496,1840,1458],{"class":506},[496,1842,1461],{"class":523},[496,1844,1407],{"class":506},[496,1846,697],{"class":506},[496,1848,1458],{"class":506},[496,1850,1492],{"class":1237},[496,1852,1407],{"class":506},[496,1854,686],{"class":506},[496,1856,1857],{"class":1237}," 1500",[496,1859,697],{"class":506},[496,1861,1458],{"class":506},[496,1863,1508],{"class":1237},[496,1865,1407],{"class":506},[496,1867,686],{"class":506},[496,1869,1870],{"class":1237}," 400",[496,1872,697],{"class":506},[496,1874,1458],{"class":506},[496,1876,1560],{"class":1237},[496,1878,1407],{"class":506},[496,1880,686],{"class":506},[496,1882,1815],{"class":506},[496,1884,1407],{"class":506},[496,1886,1638],{"class":523},[496,1888,1407],{"class":506},[496,1890,697],{"class":506},[496,1892,1458],{"class":506},[496,1894,1586],{"class":523},[496,1896,1407],{"class":506},[496,1898,1824],{"class":506},[496,1900,1241],{"class":506},[496,1902,1903,1905,1907,1909,1911,1913,1915,1917,1919,1921,1923,1925,1927,1929,1932,1934,1936,1938,1940,1942,1944],{"class":498,"line":844},[496,1904,1572],{"class":506},[496,1906,1458],{"class":506},[496,1908,1451],{"class":1237},[496,1910,1407],{"class":506},[496,1912,686],{"class":506},[496,1914,1458],{"class":506},[496,1916,1461],{"class":523},[496,1918,1407],{"class":506},[496,1920,697],{"class":506},[496,1922,1458],{"class":506},[496,1924,1492],{"class":1237},[496,1926,1407],{"class":506},[496,1928,686],{"class":506},[496,1930,1931],{"class":1237}," 1800",[496,1933,697],{"class":506},[496,1935,1458],{"class":506},[496,1937,1508],{"class":1237},[496,1939,1407],{"class":506},[496,1941,686],{"class":506},[496,1943,1238],{"class":1237},[496,1945,1053],{"class":506},[496,1947,1948],{"class":498,"line":1371},[496,1949,1726],{"class":506},[496,1951,1952,1954,1957,1959,1961,1964],{"class":498,"line":1378},[496,1953,1416],{"class":506},[496,1955,1956],{"class":1419},"msToFirstChunk",[496,1958,1407],{"class":506},[496,1960,686],{"class":506},[496,1962,1963],{"class":1237}," 312",[496,1965,764],{"class":506},[496,1967,1969,1971,1974,1976,1978,1981],{"class":498,"line":1968},23,[496,1970,1416],{"class":506},[496,1972,1973],{"class":1419},"msToFinish",[496,1975,1407],{"class":506},[496,1977,686],{"class":506},[496,1979,1980],{"class":1237}," 8200",[496,1982,764],{"class":506},[496,1984,1986,1988,1991,1993,1995],{"class":498,"line":1985},24,[496,1987,1416],{"class":506},[496,1989,1990],{"class":1419},"tokensPerSecond",[496,1992,1407],{"class":506},[496,1994,686],{"class":506},[496,1996,1997],{"class":1237}," 146\n",[496,1999,2001],{"class":498,"line":2000},25,[496,2002,2003],{"class":506},"  }\n",[496,2005,2007],{"class":498,"line":2006},26,[496,2008,2009],{"class":506},"}\n",[2011,2012,2013,2014,2020],"tip",{},"Pair this with ",[2015,2016,2017],"a",{"href":285},[458,2018,2019],{},"createEvlogIntegration"," to also capture per-tool execution timing and the agent's total wall time.",[478,2022,2024],{"id":2023},"rag-embed-generate","RAG (embed + generate)",[454,2026,2027,2028,2031],{},"Embedding models use a different type that cannot be wrapped with middleware. Use ",[458,2029,2030],{},"captureEmbed"," instead:",[486,2033,2036],{"className":488,"code":2034,"filename":2035,"language":491,"meta":492,"style":492},"import { embed, generateText } from 'ai'\nimport { 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 { embedding, usage } = await embed({\n    model: openai.embedding('text-embedding-3-small'),\n    value: query,\n  })\n  ai.captureEmbed({\n    usage,\n    model: 'text-embedding-3-small',\n    dimensions: 1536,\n  })\n\n  const docs = await findSimilar(embedding)\n\n  const result = await generateText({\n    model: ai.wrap('anthropic\u002Fclaude-sonnet-4.6'),\n    prompt: buildPrompt(docs),\n  })\n\n  return { text: result.text }\n})\n","server\u002Fapi\u002Frag.post.ts",[458,2037,2038,2061,2079,2097,2101,2123,2139,2155,2159,2185,2212,2224,2230,2243,2250,2264,2276,2282,2286,2306,2310,2326,2350,2368,2374,2378,2396],{"__ignoreMap":492},[496,2039,2040,2042,2044,2047,2049,2051,2053,2055,2057,2059],{"class":498,"line":499},[496,2041,503],{"class":502},[496,2043,507],{"class":506},[496,2045,2046],{"class":510}," embed",[496,2048,697],{"class":506},[496,2050,878],{"class":510},[496,2052,514],{"class":506},[496,2054,517],{"class":502},[496,2056,520],{"class":506},[496,2058,475],{"class":523},[496,2060,526],{"class":506},[496,2062,2063,2065,2067,2069,2071,2073,2075,2077],{"class":498,"line":529},[496,2064,503],{"class":502},[496,2066,507],{"class":506},[496,2068,605],{"class":510},[496,2070,514],{"class":506},[496,2072,517],{"class":502},[496,2074,520],{"class":506},[496,2076,1118],{"class":523},[496,2078,526],{"class":506},[496,2080,2081,2083,2085,2087,2089,2091,2093,2095],{"class":498,"line":550},[496,2082,503],{"class":502},[496,2084,507],{"class":506},[496,2086,536],{"class":510},[496,2088,514],{"class":506},[496,2090,517],{"class":502},[496,2092,520],{"class":506},[496,2094,545],{"class":523},[496,2096,526],{"class":506},[496,2098,2099],{"class":498,"line":557},[496,2100,554],{"emptyLinePlaceholder":553},[496,2102,2103,2105,2107,2109,2111,2113,2115,2117,2119,2121],{"class":498,"line":593},[496,2104,560],{"class":502},[496,2106,563],{"class":502},[496,2108,567],{"class":566},[496,2110,570],{"class":510},[496,2112,574],{"class":573},[496,2114,577],{"class":506},[496,2116,581],{"class":580},[496,2118,584],{"class":506},[496,2120,587],{"class":573},[496,2122,590],{"class":506},[496,2124,2125,2127,2129,2131,2133,2135,2137],{"class":498,"line":616},[496,2126,596],{"class":573},[496,2128,599],{"class":510},[496,2130,602],{"class":506},[496,2132,605],{"class":566},[496,2134,570],{"class":608},[496,2136,581],{"class":510},[496,2138,613],{"class":608},[496,2140,2141,2143,2145,2147,2149,2151,2153],{"class":498,"line":635},[496,2142,596],{"class":573},[496,2144,621],{"class":510},[496,2146,602],{"class":506},[496,2148,536],{"class":566},[496,2150,570],{"class":608},[496,2152,630],{"class":510},[496,2154,613],{"class":608},[496,2156,2157],{"class":498,"line":661},[496,2158,554],{"emptyLinePlaceholder":553},[496,2160,2161,2163,2165,2168,2170,2173,2175,2177,2179,2181,2183],{"class":498,"line":666},[496,2162,596],{"class":573},[496,2164,507],{"class":506},[496,2166,2167],{"class":510}," embedding",[496,2169,697],{"class":506},[496,2171,2172],{"class":510}," usage",[496,2174,514],{"class":506},[496,2176,602],{"class":506},[496,2178,649],{"class":502},[496,2180,2046],{"class":566},[496,2182,570],{"class":608},[496,2184,735],{"class":506},[496,2186,2187,2189,2191,2194,2196,2199,2201,2203,2206,2208,2210],{"class":498,"line":716},[496,2188,741],{"class":608},[496,2190,686],{"class":506},[496,2192,2193],{"class":510}," openai",[496,2195,672],{"class":506},[496,2197,2198],{"class":566},"embedding",[496,2200,570],{"class":608},[496,2202,694],{"class":506},[496,2204,2205],{"class":523},"text-embedding-3-small",[496,2207,694],{"class":506},[496,2209,584],{"class":608},[496,2211,764],{"class":506},[496,2213,2214,2217,2219,2222],{"class":498,"line":721},[496,2215,2216],{"class":608},"    value",[496,2218,686],{"class":506},[496,2220,2221],{"class":510}," query",[496,2223,764],{"class":506},[496,2225,2226,2228],{"class":498,"line":738},[496,2227,818],{"class":506},[496,2229,613],{"class":608},[496,2231,2232,2235,2237,2239,2241],{"class":498,"line":767},[496,2233,2234],{"class":510},"  ai",[496,2236,672],{"class":506},[496,2238,2030],{"class":566},[496,2240,570],{"class":608},[496,2242,735],{"class":506},[496,2244,2245,2248],{"class":498,"line":775},[496,2246,2247],{"class":510},"    usage",[496,2249,764],{"class":506},[496,2251,2252,2254,2256,2258,2260,2262],{"class":498,"line":796},[496,2253,741],{"class":608},[496,2255,686],{"class":506},[496,2257,520],{"class":506},[496,2259,2205],{"class":523},[496,2261,694],{"class":506},[496,2263,764],{"class":506},[496,2265,2266,2269,2271,2274],{"class":498,"line":809},[496,2267,2268],{"class":608},"    dimensions",[496,2270,686],{"class":506},[496,2272,2273],{"class":1237}," 1536",[496,2275,764],{"class":506},[496,2277,2278,2280],{"class":498,"line":815},[496,2279,818],{"class":506},[496,2281,613],{"class":608},[496,2283,2284],{"class":498,"line":823},[496,2285,554],{"emptyLinePlaceholder":553},[496,2287,2288,2290,2293,2295,2297,2300,2302,2304],{"class":498,"line":828},[496,2289,596],{"class":573},[496,2291,2292],{"class":510}," docs",[496,2294,602],{"class":506},[496,2296,649],{"class":502},[496,2298,2299],{"class":566}," findSimilar",[496,2301,570],{"class":608},[496,2303,2198],{"class":510},[496,2305,613],{"class":608},[496,2307,2308],{"class":498,"line":844},[496,2309,554],{"emptyLinePlaceholder":553},[496,2311,2312,2314,2316,2318,2320,2322,2324],{"class":498,"line":1371},[496,2313,596],{"class":573},[496,2315,726],{"class":510},[496,2317,602],{"class":506},[496,2319,649],{"class":502},[496,2321,878],{"class":566},[496,2323,570],{"class":608},[496,2325,735],{"class":506},[496,2327,2328,2330,2332,2334,2336,2338,2340,2342,2344,2346,2348],{"class":498,"line":1378},[496,2329,741],{"class":608},[496,2331,686],{"class":506},[496,2333,621],{"class":510},[496,2335,672],{"class":506},[496,2337,750],{"class":566},[496,2339,570],{"class":608},[496,2341,694],{"class":506},[496,2343,757],{"class":523},[496,2345,694],{"class":506},[496,2347,584],{"class":608},[496,2349,764],{"class":506},[496,2351,2352,2354,2356,2359,2361,2364,2366],{"class":498,"line":1968},[496,2353,1013],{"class":608},[496,2355,686],{"class":506},[496,2357,2358],{"class":566}," buildPrompt",[496,2360,570],{"class":608},[496,2362,2363],{"class":510},"docs",[496,2365,584],{"class":608},[496,2367,764],{"class":506},[496,2369,2370,2372],{"class":498,"line":1985},[496,2371,818],{"class":506},[496,2373,613],{"class":608},[496,2375,2376],{"class":498,"line":2000},[496,2377,554],{"emptyLinePlaceholder":553},[496,2379,2380,2382,2384,2386,2388,2390,2392,2394],{"class":498,"line":2006},[496,2381,831],{"class":502},[496,2383,507],{"class":506},[496,2385,786],{"class":608},[496,2387,686],{"class":506},[496,2389,726],{"class":510},[496,2391,672],{"class":506},[496,2393,804],{"class":510},[496,2395,1053],{"class":506},[496,2397,2399,2401],{"class":498,"line":2398},27,[496,2400,847],{"class":506},[496,2402,613],{"class":510},[454,2404,2405,2406,2409],{},"For ",[458,2407,2408],{},"embedMany",", pass the batch count:",[486,2411,2413],{"className":488,"code":2412,"language":491,"meta":492,"style":492},"const { embeddings, usage } = await embedMany({\n  model: openai.embedding('text-embedding-3-small'),\n  values: documents,\n})\nai.captureEmbed({ usage, model: 'text-embedding-3-small', count: documents.length })\n",[458,2414,2415,2443,2468,2480,2486],{"__ignoreMap":492},[496,2416,2417,2420,2422,2425,2427,2430,2432,2434,2436,2439,2441],{"class":498,"line":499},[496,2418,2419],{"class":573},"const",[496,2421,507],{"class":506},[496,2423,2424],{"class":510}," embeddings",[496,2426,697],{"class":506},[496,2428,2429],{"class":510}," usage ",[496,2431,847],{"class":506},[496,2433,602],{"class":506},[496,2435,649],{"class":502},[496,2437,2438],{"class":566}," embedMany",[496,2440,570],{"class":510},[496,2442,735],{"class":506},[496,2444,2445,2448,2450,2452,2454,2456,2458,2460,2462,2464,2466],{"class":498,"line":529},[496,2446,2447],{"class":608},"  model",[496,2449,686],{"class":506},[496,2451,2193],{"class":510},[496,2453,672],{"class":506},[496,2455,2198],{"class":566},[496,2457,570],{"class":510},[496,2459,694],{"class":506},[496,2461,2205],{"class":523},[496,2463,694],{"class":506},[496,2465,584],{"class":510},[496,2467,764],{"class":506},[496,2469,2470,2473,2475,2478],{"class":498,"line":550},[496,2471,2472],{"class":608},"  values",[496,2474,686],{"class":506},[496,2476,2477],{"class":510}," documents",[496,2479,764],{"class":506},[496,2481,2482,2484],{"class":498,"line":557},[496,2483,847],{"class":506},[496,2485,613],{"class":510},[496,2487,2488,2490,2492,2494,2496,2498,2500,2502,2505,2507,2509,2511,2513,2515,2518,2520,2522,2524,2527,2529],{"class":498,"line":593},[496,2489,475],{"class":510},[496,2491,672],{"class":506},[496,2493,2030],{"class":566},[496,2495,570],{"class":510},[496,2497,680],{"class":506},[496,2499,2172],{"class":510},[496,2501,697],{"class":506},[496,2503,2504],{"class":608}," model",[496,2506,686],{"class":506},[496,2508,520],{"class":506},[496,2510,2205],{"class":523},[496,2512,694],{"class":506},[496,2514,697],{"class":506},[496,2516,2517],{"class":608}," count",[496,2519,686],{"class":506},[496,2521,2477],{"class":510},[496,2523,672],{"class":506},[496,2525,2526],{"class":510},"length ",[496,2528,847],{"class":506},[496,2530,613],{"class":510},[478,2532,2534],{"id":2533},"multiple-models","Multiple Models",[454,2536,2537,2538,2540,2541,2544],{},"Wrap each model separately — they share the same accumulator. When more than one model is used, the wide event includes both ",[458,2539,1451],{}," (last model) and ",[458,2542,2543],{},"models"," (all unique models):",[2546,2547,2548,2702],"code-group",{},[486,2549,2551],{"className":488,"code":2550,"filename":490,"language":491,"meta":492,"style":492},"const ai = createAILogger(log)\n\nconst fast = ai.wrap('anthropic\u002Fclaude-haiku-4.5')\nconst smart = ai.wrap('anthropic\u002Fclaude-sonnet-4.6')\n\nconst classification = await generateText({ model: fast, prompt: classifyPrompt })\nconst response = await generateText({ model: smart, prompt: detailedPrompt })\n",[458,2552,2553,2568,2572,2598,2623,2627,2665],{"__ignoreMap":492},[496,2554,2555,2557,2560,2563,2565],{"class":498,"line":499},[496,2556,2419],{"class":573},[496,2558,2559],{"class":510}," ai ",[496,2561,2562],{"class":506},"=",[496,2564,536],{"class":566},[496,2566,2567],{"class":510},"(log)\n",[496,2569,2570],{"class":498,"line":529},[496,2571,554],{"emptyLinePlaceholder":553},[496,2573,2574,2576,2579,2581,2583,2585,2587,2589,2591,2594,2596],{"class":498,"line":550},[496,2575,2419],{"class":573},[496,2577,2578],{"class":510}," fast ",[496,2580,2562],{"class":506},[496,2582,621],{"class":510},[496,2584,672],{"class":506},[496,2586,750],{"class":566},[496,2588,570],{"class":510},[496,2590,694],{"class":506},[496,2592,2593],{"class":523},"anthropic\u002Fclaude-haiku-4.5",[496,2595,694],{"class":506},[496,2597,613],{"class":510},[496,2599,2600,2602,2605,2607,2609,2611,2613,2615,2617,2619,2621],{"class":498,"line":557},[496,2601,2419],{"class":573},[496,2603,2604],{"class":510}," smart ",[496,2606,2562],{"class":506},[496,2608,621],{"class":510},[496,2610,672],{"class":506},[496,2612,750],{"class":566},[496,2614,570],{"class":510},[496,2616,694],{"class":506},[496,2618,757],{"class":523},[496,2620,694],{"class":506},[496,2622,613],{"class":510},[496,2624,2625],{"class":498,"line":593},[496,2626,554],{"emptyLinePlaceholder":553},[496,2628,2629,2631,2634,2636,2638,2640,2642,2644,2646,2648,2651,2653,2656,2658,2661,2663],{"class":498,"line":616},[496,2630,2419],{"class":573},[496,2632,2633],{"class":510}," classification ",[496,2635,2562],{"class":506},[496,2637,649],{"class":502},[496,2639,878],{"class":566},[496,2641,570],{"class":510},[496,2643,680],{"class":506},[496,2645,2504],{"class":608},[496,2647,686],{"class":506},[496,2649,2650],{"class":510}," fast",[496,2652,697],{"class":506},[496,2654,2655],{"class":608}," prompt",[496,2657,686],{"class":506},[496,2659,2660],{"class":510}," classifyPrompt ",[496,2662,847],{"class":506},[496,2664,613],{"class":510},[496,2666,2667,2669,2672,2674,2676,2678,2680,2682,2684,2686,2689,2691,2693,2695,2698,2700],{"class":498,"line":635},[496,2668,2419],{"class":573},[496,2670,2671],{"class":510}," response ",[496,2673,2562],{"class":506},[496,2675,649],{"class":502},[496,2677,878],{"class":566},[496,2679,570],{"class":510},[496,2681,680],{"class":506},[496,2683,2504],{"class":608},[496,2685,686],{"class":506},[496,2687,2688],{"class":510}," smart",[496,2690,697],{"class":506},[496,2692,2655],{"class":608},[496,2694,686],{"class":506},[496,2696,2697],{"class":510}," detailedPrompt ",[496,2699,847],{"class":506},[496,2701,613],{"class":510},[486,2703,2705],{"className":1388,"code":2704,"filename":1390,"language":1391,"meta":492,"style":492},"{\n  \"ai\": {\n    \"calls\": 2,\n    \"model\": \"claude-sonnet-4.6\",\n    \"models\": [\"claude-haiku-4.5\", \"claude-sonnet-4.6\"],\n    \"provider\": \"anthropic\",\n    \"inputTokens\": 450,\n    \"outputTokens\": 300,\n    \"totalTokens\": 750\n  }\n}\n",[458,2706,2707,2711,2723,2738,2756,2786,2804,2819,2833,2846,2850],{"__ignoreMap":492},[496,2708,2709],{"class":498,"line":499},[496,2710,735],{"class":506},[496,2712,2713,2715,2717,2719,2721],{"class":498,"line":529},[496,2714,1402],{"class":506},[496,2716,475],{"class":573},[496,2718,1407],{"class":506},[496,2720,686],{"class":506},[496,2722,590],{"class":506},[496,2724,2725,2727,2729,2731,2733,2736],{"class":498,"line":550},[496,2726,1416],{"class":506},[496,2728,1420],{"class":1419},[496,2730,1407],{"class":506},[496,2732,686],{"class":506},[496,2734,2735],{"class":1237}," 2",[496,2737,764],{"class":506},[496,2739,2740,2742,2744,2746,2748,2750,2752,2754],{"class":498,"line":557},[496,2741,1416],{"class":506},[496,2743,1451],{"class":1419},[496,2745,1407],{"class":506},[496,2747,686],{"class":506},[496,2749,1458],{"class":506},[496,2751,1461],{"class":523},[496,2753,1407],{"class":506},[496,2755,764],{"class":506},[496,2757,2758,2760,2762,2764,2766,2768,2770,2773,2775,2777,2779,2781,2783],{"class":498,"line":593},[496,2759,1416],{"class":506},[496,2761,2543],{"class":1419},[496,2763,1407],{"class":506},[496,2765,686],{"class":506},[496,2767,1815],{"class":506},[496,2769,1407],{"class":506},[496,2771,2772],{"class":523},"claude-haiku-4.5",[496,2774,1407],{"class":506},[496,2776,697],{"class":506},[496,2778,1458],{"class":506},[496,2780,1461],{"class":523},[496,2782,1407],{"class":506},[496,2784,2785],{"class":506},"],\n",[496,2787,2788,2790,2792,2794,2796,2798,2800,2802],{"class":498,"line":616},[496,2789,1416],{"class":506},[496,2791,1472],{"class":1419},[496,2793,1407],{"class":506},[496,2795,686],{"class":506},[496,2797,1458],{"class":506},[496,2799,1481],{"class":523},[496,2801,1407],{"class":506},[496,2803,764],{"class":506},[496,2805,2806,2808,2810,2812,2814,2817],{"class":498,"line":635},[496,2807,1416],{"class":506},[496,2809,1492],{"class":1419},[496,2811,1407],{"class":506},[496,2813,686],{"class":506},[496,2815,2816],{"class":1237}," 450",[496,2818,764],{"class":506},[496,2820,2821,2823,2825,2827,2829,2831],{"class":498,"line":661},[496,2822,1416],{"class":506},[496,2824,1508],{"class":1419},[496,2826,1407],{"class":506},[496,2828,686],{"class":506},[496,2830,1802],{"class":1237},[496,2832,764],{"class":506},[496,2834,2835,2837,2839,2841,2843],{"class":498,"line":666},[496,2836,1416],{"class":506},[496,2838,1524],{"class":1419},[496,2840,1407],{"class":506},[496,2842,686],{"class":506},[496,2844,2845],{"class":1237}," 750\n",[496,2847,2848],{"class":498,"line":716},[496,2849,2003],{"class":506},[496,2851,2852],{"class":498,"line":721},[496,2853,2009],{"class":506},[478,2855,2857],{"id":2856},"model-object-support","Model Object Support",[454,2859,2860,2863],{},[458,2861,2862],{},"wrap()"," also accepts model objects from provider SDKs if you prefer explicit imports:",[486,2865,2867],{"className":488,"code":2866,"filename":490,"language":491,"meta":492,"style":492},"import { anthropic } from '@ai-sdk\u002Fanthropic'\n\nconst model = ai.wrap(anthropic('claude-sonnet-4.6'))\n",[458,2868,2869,2889,2893],{"__ignoreMap":492},[496,2870,2871,2873,2875,2878,2880,2882,2884,2887],{"class":498,"line":499},[496,2872,503],{"class":502},[496,2874,507],{"class":506},[496,2876,2877],{"class":510}," anthropic",[496,2879,514],{"class":506},[496,2881,517],{"class":502},[496,2883,520],{"class":506},[496,2885,2886],{"class":523},"@ai-sdk\u002Fanthropic",[496,2888,526],{"class":506},[496,2890,2891],{"class":498,"line":529},[496,2892,554],{"emptyLinePlaceholder":553},[496,2894,2895,2897,2900,2902,2904,2906,2908,2910,2912,2914,2916,2918,2920],{"class":498,"line":550},[496,2896,2419],{"class":573},[496,2898,2899],{"class":510}," model ",[496,2901,2562],{"class":506},[496,2903,621],{"class":510},[496,2905,672],{"class":506},[496,2907,750],{"class":566},[496,2909,570],{"class":510},[496,2911,1481],{"class":566},[496,2913,570],{"class":510},[496,2915,694],{"class":506},[496,2917,1461],{"class":523},[496,2919,694],{"class":506},[496,2921,2922],{"class":510},"))\n",[2924,2925,2926],"style",{},"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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":492,"searchDepth":529,"depth":529,"links":2928},[2929,2930,2931,2932,2933,2934],{"id":480,"depth":529,"text":481},{"id":859,"depth":529,"text":860},{"id":1062,"depth":529,"text":1063},{"id":2023,"depth":529,"text":2024},{"id":2533,"depth":529,"text":2534},{"id":2856,"depth":529,"text":2857},"streamText, generateText, multi-step agents, RAG, and multiple models — every common AI SDK pattern wired into evlog.","md",[2938,2941],{"label":36,"icon":39,"to":266,"color":2939,"variant":2940},"neutral","subtle",{"label":274,"icon":277,"to":275,"color":2939,"variant":2940},{},{"title":269,"icon":272},{"title":449,"description":2935},"LOJIM-EuoCRr-llCOwN3f9WEZido03aUTe23PAEbOkU",[2947,2949],{"title":36,"path":266,"stem":267,"description":2948,"icon":39,"children":-1},"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.",{"title":274,"path":275,"stem":276,"description":2950,"icon":277,"children":-1},"Configure tool input capture (with redaction and truncation), enable cost estimation per model, and handle errors during AI calls.",1782924663314]