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