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