[{"data":1,"prerenderedAt":6159},["ShallowReactive",2],{"navigation_docs":3,"-logging-ai-sdk":297,"-logging-ai-sdk-surround":6154},[4,30,70,115,203,267,283],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Logging","\u002Flogging","2.logging",[35,40,45,50,55,60,65],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Flogging\u002Foverview","2.logging\u002F0.overview","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Simple Logging","\u002Flogging\u002Fsimple-logging","2.logging\u002F1.simple-logging","i-lucide-terminal",{"title":46,"path":47,"stem":48,"icon":49},"Wide Events","\u002Flogging\u002Fwide-events","2.logging\u002F2.wide-events","i-lucide-layers",{"title":51,"path":52,"stem":53,"icon":54},"Structured Errors","\u002Flogging\u002Fstructured-errors","2.logging\u002F3.structured-errors","i-lucide-shield-alert",{"title":56,"path":57,"stem":58,"icon":59},"Client Logging","\u002Flogging\u002Fclient-logging","2.logging\u002F4.client-logging","i-lucide-monitor",{"title":61,"path":62,"stem":63,"icon":64},"AI SDK Integration","\u002Flogging\u002Fai-sdk","2.logging\u002F5.ai-sdk","i-simple-icons-vercel",{"title":66,"path":67,"stem":68,"icon":69},"Better Auth Integration","\u002Flogging\u002Fbetter-auth","2.logging\u002F6.better-auth","i-simple-icons-betterauth",{"title":71,"path":72,"stem":73,"children":74,"page":29},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[75,80,85,90,95,100,105,110],{"title":76,"path":77,"stem":78,"icon":79},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":81,"path":82,"stem":83,"icon":84},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":86,"path":87,"stem":88,"icon":89},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":91,"path":92,"stem":93,"icon":94},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":96,"path":97,"stem":98,"icon":99},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices","i-lucide-shield-check",{"title":101,"path":102,"stem":103,"icon":104},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance","i-lucide-gauge",{"title":106,"path":107,"stem":108,"icon":109},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":111,"path":112,"stem":113,"icon":114},"Auto-Redaction","\u002Fcore-concepts\u002Fredaction","3.core-concepts\u002F7.redaction","i-lucide-eye-off",{"title":116,"path":117,"stem":118,"children":119,"page":29},"Frameworks","\u002Fframeworks","4.frameworks",[120,124,129,134,139,144,149,154,159,164,169,174,179,184,188,193,198],{"title":36,"path":121,"stem":122,"icon":123},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":125,"path":126,"stem":127,"icon":128},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":130,"path":131,"stem":132,"icon":133},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":135,"path":136,"stem":137,"icon":138},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":140,"path":141,"stem":142,"icon":143},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":145,"path":146,"stem":147,"icon":148},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":150,"path":151,"stem":152,"icon":153},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":155,"path":156,"stem":157,"icon":158},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":160,"path":161,"stem":162,"icon":163},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":165,"path":166,"stem":167,"icon":168},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":170,"path":171,"stem":172,"icon":173},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":175,"path":176,"stem":177,"icon":178},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":180,"path":181,"stem":182,"icon":183},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":185,"path":186,"stem":187,"icon":94},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":189,"path":190,"stem":191,"icon":192},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":194,"path":195,"stem":196,"icon":197},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F15.custom-integration","i-lucide-puzzle",{"title":199,"path":200,"stem":201,"icon":202},"AWS Lambda","\u002Fframeworks\u002Faws-lambda","4.frameworks\u002F16.aws-lambda","i-custom-lambda",{"title":204,"path":205,"stem":206,"children":207,"page":29},"Adapters","\u002Fadapters","5.adapters",[208,212,217,222,227,232,237,242,247,252,257,262],{"title":36,"path":209,"stem":210,"icon":211},"\u002Fadapters\u002Foverview","5.adapters\u002F1.overview","i-custom-plug",{"title":213,"path":214,"stem":215,"icon":216},"Custom Adapters","\u002Fadapters\u002Fcustom","5.adapters\u002F10.custom","i-lucide-code",{"title":218,"path":219,"stem":220,"icon":221},"Pipeline","\u002Fadapters\u002Fpipeline","5.adapters\u002F11.pipeline","i-lucide-workflow",{"title":223,"path":224,"stem":225,"icon":226},"HTTP","\u002Fadapters\u002Fhttp","5.adapters\u002F12.http","i-lucide-globe",{"title":228,"path":229,"stem":230,"icon":231},"Axiom","\u002Fadapters\u002Faxiom","5.adapters\u002F2.axiom","i-custom-axiom",{"title":233,"path":234,"stem":235,"icon":236},"OTLP","\u002Fadapters\u002Fotlp","5.adapters\u002F3.otlp","i-simple-icons-opentelemetry",{"title":238,"path":239,"stem":240,"icon":241},"PostHog","\u002Fadapters\u002Fposthog","5.adapters\u002F4.posthog","i-simple-icons-posthog",{"title":243,"path":244,"stem":245,"icon":246},"Sentry","\u002Fadapters\u002Fsentry","5.adapters\u002F5.sentry","i-simple-icons-sentry",{"title":248,"path":249,"stem":250,"icon":251},"Better Stack","\u002Fadapters\u002Fbetter-stack","5.adapters\u002F6.better-stack","i-simple-icons-betterstack",{"title":253,"path":254,"stem":255,"icon":256},"File System","\u002Fadapters\u002Ffs","5.adapters\u002F7.fs","i-lucide-hard-drive",{"title":258,"path":259,"stem":260,"icon":261},"Datadog","\u002Fadapters\u002Fdatadog","5.adapters\u002F8.datadog","i-simple-icons-datadog",{"title":263,"path":264,"stem":265,"icon":266},"HyperDX","\u002Fadapters\u002Fhyperdx","5.adapters\u002F9.hyperdx","i-custom-hyperdx",{"title":268,"path":269,"stem":270,"children":271,"page":29},"Enrichers","\u002Fenrichers","6.enrichers",[272,275,279],{"title":36,"path":273,"stem":274,"icon":28},"\u002Fenrichers\u002Foverview","6.enrichers\u002F1.overview",{"title":276,"path":277,"stem":278,"icon":197},"Built-in","\u002Fenrichers\u002Fbuilt-in","6.enrichers\u002F2.built-in",{"title":280,"path":281,"stem":282,"icon":216},"Custom","\u002Fenrichers\u002Fcustom","6.enrichers\u002F3.custom",{"title":284,"path":285,"stem":286,"children":287,"page":29},"NuxtHub","\u002Fnuxthub","7.nuxthub",[288,292],{"title":36,"path":289,"stem":290,"icon":291},"\u002Fnuxthub\u002Foverview","7.nuxthub\u002F1.overview","i-lucide-database",{"title":293,"path":294,"stem":295,"icon":296},"Retention","\u002Fnuxthub\u002Fretention","7.nuxthub\u002F2.retention","i-lucide-clock",{"id":298,"title":61,"body":299,"description":6142,"extension":6143,"links":6144,"meta":6150,"navigation":6151,"path":62,"seo":6152,"stem":63,"__hash__":6153},"docs\u002F2.logging\u002F5.ai-sdk.md",{"type":300,"value":301,"toc":6118},"minimark",[302,310,409,414,417,469,472,475,785,788,1095,1099,1109,1177,1180,1185,1256,1263,1314,1654,1658,1661,1664,1954,1957,1960,2155,2159,2162,2471,2474,3069,3073,3080,3451,3458,3578,3582,3592,3898,3902,3908,3967,3971,3982,3986,3996,4241,4244,4580,4584,4587,4701,4705,4765,4768,4772,5145,5149,5157,5330,5340,5452,5473,5477,5480,5595,5598,5602,5607,6114],[303,304,305,309],"p",{},[306,307,308],"code",{},"evlog\u002Fai"," gives you full AI observability by wrapping your model with middleware and an optional telemetry integration. Token usage, tool calls, tool execution timing, streaming performance, cache hits, reasoning tokens, cost estimation — all captured into the wide event automatically.",[311,312,313],"code-collapse",{},[314,315,321],"pre",{"className":316,"code":317,"filename":318,"language":319,"meta":320,"style":320},"language-txt shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Add AI observability to my app with evlog.\n\n- Install the AI SDK: pnpm add ai\n- Import createAILogger and createEvlogIntegration from 'evlog\u002Fai'\n- Create an AI logger with createAILogger(log) where log is your request logger\n- Wrap your model with ai.wrap('anthropic\u002Fclaude-sonnet-4.6') and pass it to generateText, streamText, etc.\n- Token usage, tool calls, streaming metrics, and errors are captured automatically into the wide event\n- For deeper observability (tool execution timing, total generation wall time), add createEvlogIntegration(ai) to experimental_telemetry.integrations\n- For embedding calls, use ai.captureEmbed({ usage, model, dimensions, count }) after embed() or embedMany()\n- For cost estimation, pass a cost map: createAILogger(log, { cost: { 'claude-sonnet-4.6': { input: 3, output: 15 } } })\n- Works with all frameworks: Nuxt, Express, Hono, Fastify, NestJS, Elysia, standalone\n\nDocs: https:\u002F\u002Fwww.evlog.dev\u002Flogging\u002Fai-sdk\nAdapters: https:\u002F\u002Fwww.evlog.dev\u002Fadapters\n","Prompt","txt","",[306,322,323,331,338,344,350,356,362,368,374,380,386,392,397,403],{"__ignoreMap":320},[324,325,328],"span",{"class":326,"line":327},"line",1,[324,329,330],{},"Add AI observability to my app with evlog.\n",[324,332,334],{"class":326,"line":333},2,[324,335,337],{"emptyLinePlaceholder":336},true,"\n",[324,339,341],{"class":326,"line":340},3,[324,342,343],{},"- Install the AI SDK: pnpm add ai\n",[324,345,347],{"class":326,"line":346},4,[324,348,349],{},"- Import createAILogger and createEvlogIntegration from 'evlog\u002Fai'\n",[324,351,353],{"class":326,"line":352},5,[324,354,355],{},"- Create an AI logger with createAILogger(log) where log is your request logger\n",[324,357,359],{"class":326,"line":358},6,[324,360,361],{},"- Wrap your model with ai.wrap('anthropic\u002Fclaude-sonnet-4.6') and pass it to generateText, streamText, etc.\n",[324,363,365],{"class":326,"line":364},7,[324,366,367],{},"- Token usage, tool calls, streaming metrics, and errors are captured automatically into the wide event\n",[324,369,371],{"class":326,"line":370},8,[324,372,373],{},"- For deeper observability (tool execution timing, total generation wall time), add createEvlogIntegration(ai) to experimental_telemetry.integrations\n",[324,375,377],{"class":326,"line":376},9,[324,378,379],{},"- For embedding calls, use ai.captureEmbed({ usage, model, dimensions, count }) after embed() or embedMany()\n",[324,381,383],{"class":326,"line":382},10,[324,384,385],{},"- For cost estimation, pass a cost map: createAILogger(log, { cost: { 'claude-sonnet-4.6': { input: 3, output: 15 } } })\n",[324,387,389],{"class":326,"line":388},11,[324,390,391],{},"- Works with all frameworks: Nuxt, Express, Hono, Fastify, NestJS, Elysia, standalone\n",[324,393,395],{"class":326,"line":394},12,[324,396,337],{"emptyLinePlaceholder":336},[324,398,400],{"class":326,"line":399},13,[324,401,402],{},"Docs: https:\u002F\u002Fwww.evlog.dev\u002Flogging\u002Fai-sdk\n",[324,404,406],{"class":326,"line":405},14,[324,407,408],{},"Adapters: https:\u002F\u002Fwww.evlog.dev\u002Fadapters\n",[410,411,413],"h2",{"id":412},"install","Install",[303,415,416],{},"Add the AI SDK as a dependency:",[418,419,420,440,455],"code-group",{},[314,421,426],{"className":422,"code":423,"filename":424,"language":425,"meta":320,"style":320},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm install ai\n","npm","bash",[306,427,428],{"__ignoreMap":320},[324,429,430,433,437],{"class":326,"line":327},[324,431,424],{"class":432},"sBMFI",[324,434,436],{"class":435},"sfazB"," install",[324,438,439],{"class":435}," ai\n",[314,441,444],{"className":422,"code":442,"filename":443,"language":425,"meta":320,"style":320},"bun add ai\n","bun",[306,445,446],{"__ignoreMap":320},[324,447,448,450,453],{"class":326,"line":327},[324,449,443],{"class":432},[324,451,452],{"class":435}," add",[324,454,439],{"class":435},[314,456,459],{"className":422,"code":457,"filename":458,"language":425,"meta":320,"style":320},"pnpm add ai\n","pnpm",[306,460,461],{"__ignoreMap":320},[324,462,463,465,467],{"class":326,"line":327},[324,464,458],{"class":432},[324,466,452],{"class":435},[324,468,439],{"class":435},[410,470,20],{"id":471},"quick-start",[303,473,474],{},"Two lines to add, one param to change:",[418,476,477,601],{},[314,478,483],{"className":479,"code":480,"filename":481,"language":482,"meta":320,"style":320},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineEventHandler(async (event) => {\n  const result = streamText({\n    model: 'anthropic\u002Fclaude-sonnet-4.6',\n    messages,\n  })\n  return result.toTextStreamResponse()\n})\n","Before","typescript",[306,484,485,523,543,563,570,578,594],{"__ignoreMap":320},[324,486,487,491,494,498,502,506,510,514,517,520],{"class":326,"line":327},[324,488,490],{"class":489},"s7zQu","export",[324,492,493],{"class":489}," default",[324,495,497],{"class":496},"s2Zo4"," defineEventHandler",[324,499,501],{"class":500},"sTEyZ","(",[324,503,505],{"class":504},"spNyl","async",[324,507,509],{"class":508},"sMK4o"," (",[324,511,513],{"class":512},"sHdIc","event",[324,515,516],{"class":508},")",[324,518,519],{"class":504}," =>",[324,521,522],{"class":508}," {\n",[324,524,525,528,531,534,537,540],{"class":326,"line":333},[324,526,527],{"class":504},"  const",[324,529,530],{"class":500}," result",[324,532,533],{"class":508}," =",[324,535,536],{"class":496}," streamText",[324,538,501],{"class":539},"swJcz",[324,541,542],{"class":508},"{\n",[324,544,545,548,551,554,557,560],{"class":326,"line":340},[324,546,547],{"class":539},"    model",[324,549,550],{"class":508},":",[324,552,553],{"class":508}," '",[324,555,556],{"class":435},"anthropic\u002Fclaude-sonnet-4.6",[324,558,559],{"class":508},"'",[324,561,562],{"class":508},",\n",[324,564,565,568],{"class":326,"line":346},[324,566,567],{"class":500},"    messages",[324,569,562],{"class":508},[324,571,572,575],{"class":326,"line":352},[324,573,574],{"class":508},"  }",[324,576,577],{"class":539},")\n",[324,579,580,583,585,588,591],{"class":326,"line":358},[324,581,582],{"class":489},"  return",[324,584,530],{"class":500},[324,586,587],{"class":508},".",[324,589,590],{"class":496},"toTextStreamResponse",[324,592,593],{"class":539},"()\n",[324,595,596,599],{"class":326,"line":364},[324,597,598],{"class":508},"}",[324,600,577],{"class":500},[314,602,605],{"className":479,"code":603,"filename":604,"language":482,"meta":320,"style":320},"import { useLogger } from 'evlog'\nimport { createAILogger } from 'evlog\u002Fai'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n  const ai = createAILogger(log)\n\n  const result = streamText({\n    model: ai.wrap('anthropic\u002Fclaude-sonnet-4.6'),\n    messages,\n  })\n  return result.toTextStreamResponse()\n})\n","After",[306,606,607,632,651,655,677,694,712,716,730,755,761,767,779],{"__ignoreMap":320},[324,608,609,612,615,618,621,624,626,629],{"class":326,"line":327},[324,610,611],{"class":489},"import",[324,613,614],{"class":508}," {",[324,616,617],{"class":500}," useLogger",[324,619,620],{"class":508}," }",[324,622,623],{"class":489}," from",[324,625,553],{"class":508},[324,627,628],{"class":435},"evlog",[324,630,631],{"class":508},"'\n",[324,633,634,636,638,641,643,645,647,649],{"class":326,"line":333},[324,635,611],{"class":489},[324,637,614],{"class":508},[324,639,640],{"class":500}," createAILogger",[324,642,620],{"class":508},[324,644,623],{"class":489},[324,646,553],{"class":508},[324,648,308],{"class":435},[324,650,631],{"class":508},[324,652,653],{"class":326,"line":340},[324,654,337],{"emptyLinePlaceholder":336},[324,656,657,659,661,663,665,667,669,671,673,675],{"class":326,"line":346},[324,658,490],{"class":489},[324,660,493],{"class":489},[324,662,497],{"class":496},[324,664,501],{"class":500},[324,666,505],{"class":504},[324,668,509],{"class":508},[324,670,513],{"class":512},[324,672,516],{"class":508},[324,674,519],{"class":504},[324,676,522],{"class":508},[324,678,679,681,684,686,688,690,692],{"class":326,"line":352},[324,680,527],{"class":504},[324,682,683],{"class":500}," log",[324,685,533],{"class":508},[324,687,617],{"class":496},[324,689,501],{"class":539},[324,691,513],{"class":500},[324,693,577],{"class":539},[324,695,696,698,701,703,705,707,710],{"class":326,"line":358},[324,697,527],{"class":504},[324,699,700],{"class":500}," ai",[324,702,533],{"class":508},[324,704,640],{"class":496},[324,706,501],{"class":539},[324,708,709],{"class":500},"log",[324,711,577],{"class":539},[324,713,714],{"class":326,"line":364},[324,715,337],{"emptyLinePlaceholder":336},[324,717,718,720,722,724,726,728],{"class":326,"line":370},[324,719,527],{"class":504},[324,721,530],{"class":500},[324,723,533],{"class":508},[324,725,536],{"class":496},[324,727,501],{"class":539},[324,729,542],{"class":508},[324,731,732,734,736,738,740,743,745,747,749,751,753],{"class":326,"line":376},[324,733,547],{"class":539},[324,735,550],{"class":508},[324,737,700],{"class":500},[324,739,587],{"class":508},[324,741,742],{"class":496},"wrap",[324,744,501],{"class":539},[324,746,559],{"class":508},[324,748,556],{"class":435},[324,750,559],{"class":508},[324,752,516],{"class":539},[324,754,562],{"class":508},[324,756,757,759],{"class":326,"line":382},[324,758,567],{"class":500},[324,760,562],{"class":508},[324,762,763,765],{"class":326,"line":388},[324,764,574],{"class":508},[324,766,577],{"class":539},[324,768,769,771,773,775,777],{"class":326,"line":394},[324,770,582],{"class":489},[324,772,530],{"class":500},[324,774,587],{"class":508},[324,776,590],{"class":496},[324,778,593],{"class":539},[324,780,781,783],{"class":326,"line":399},[324,782,598],{"class":508},[324,784,577],{"class":500},[303,786,787],{},"Your wide event now includes:",[314,789,794],{"className":790,"code":791,"filename":792,"language":793,"meta":320,"style":320},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"method\": \"POST\",\n  \"path\": \"\u002Fapi\u002Fchat\",\n  \"status\": 200,\n  \"duration\": \"4.5s\",\n  \"ai\": {\n    \"calls\": 1,\n    \"model\": \"claude-sonnet-4.6\",\n    \"provider\": \"anthropic\",\n    \"inputTokens\": 3312,\n    \"outputTokens\": 814,\n    \"totalTokens\": 4126,\n    \"reasoningTokens\": 225,\n    \"finishReason\": \"stop\",\n    \"msToFirstChunk\": 234,\n    \"msToFinish\": 4500,\n    \"tokensPerSecond\": 180\n  }\n}\n","Wide Event","json",[306,795,796,800,823,843,860,880,893,910,930,950,966,982,998,1014,1034,1051,1068,1083,1089],{"__ignoreMap":320},[324,797,798],{"class":326,"line":327},[324,799,542],{"class":508},[324,801,802,805,808,811,813,816,819,821],{"class":326,"line":333},[324,803,804],{"class":508},"  \"",[324,806,807],{"class":504},"method",[324,809,810],{"class":508},"\"",[324,812,550],{"class":508},[324,814,815],{"class":508}," \"",[324,817,818],{"class":435},"POST",[324,820,810],{"class":508},[324,822,562],{"class":508},[324,824,825,827,830,832,834,836,839,841],{"class":326,"line":340},[324,826,804],{"class":508},[324,828,829],{"class":504},"path",[324,831,810],{"class":508},[324,833,550],{"class":508},[324,835,815],{"class":508},[324,837,838],{"class":435},"\u002Fapi\u002Fchat",[324,840,810],{"class":508},[324,842,562],{"class":508},[324,844,845,847,850,852,854,858],{"class":326,"line":346},[324,846,804],{"class":508},[324,848,849],{"class":504},"status",[324,851,810],{"class":508},[324,853,550],{"class":508},[324,855,857],{"class":856},"sbssI"," 200",[324,859,562],{"class":508},[324,861,862,864,867,869,871,873,876,878],{"class":326,"line":352},[324,863,804],{"class":508},[324,865,866],{"class":504},"duration",[324,868,810],{"class":508},[324,870,550],{"class":508},[324,872,815],{"class":508},[324,874,875],{"class":435},"4.5s",[324,877,810],{"class":508},[324,879,562],{"class":508},[324,881,882,884,887,889,891],{"class":326,"line":358},[324,883,804],{"class":508},[324,885,886],{"class":504},"ai",[324,888,810],{"class":508},[324,890,550],{"class":508},[324,892,522],{"class":508},[324,894,895,898,901,903,905,908],{"class":326,"line":364},[324,896,897],{"class":508},"    \"",[324,899,900],{"class":432},"calls",[324,902,810],{"class":508},[324,904,550],{"class":508},[324,906,907],{"class":856}," 1",[324,909,562],{"class":508},[324,911,912,914,917,919,921,923,926,928],{"class":326,"line":370},[324,913,897],{"class":508},[324,915,916],{"class":432},"model",[324,918,810],{"class":508},[324,920,550],{"class":508},[324,922,815],{"class":508},[324,924,925],{"class":435},"claude-sonnet-4.6",[324,927,810],{"class":508},[324,929,562],{"class":508},[324,931,932,934,937,939,941,943,946,948],{"class":326,"line":376},[324,933,897],{"class":508},[324,935,936],{"class":432},"provider",[324,938,810],{"class":508},[324,940,550],{"class":508},[324,942,815],{"class":508},[324,944,945],{"class":435},"anthropic",[324,947,810],{"class":508},[324,949,562],{"class":508},[324,951,952,954,957,959,961,964],{"class":326,"line":382},[324,953,897],{"class":508},[324,955,956],{"class":432},"inputTokens",[324,958,810],{"class":508},[324,960,550],{"class":508},[324,962,963],{"class":856}," 3312",[324,965,562],{"class":508},[324,967,968,970,973,975,977,980],{"class":326,"line":388},[324,969,897],{"class":508},[324,971,972],{"class":432},"outputTokens",[324,974,810],{"class":508},[324,976,550],{"class":508},[324,978,979],{"class":856}," 814",[324,981,562],{"class":508},[324,983,984,986,989,991,993,996],{"class":326,"line":394},[324,985,897],{"class":508},[324,987,988],{"class":432},"totalTokens",[324,990,810],{"class":508},[324,992,550],{"class":508},[324,994,995],{"class":856}," 4126",[324,997,562],{"class":508},[324,999,1000,1002,1005,1007,1009,1012],{"class":326,"line":399},[324,1001,897],{"class":508},[324,1003,1004],{"class":432},"reasoningTokens",[324,1006,810],{"class":508},[324,1008,550],{"class":508},[324,1010,1011],{"class":856}," 225",[324,1013,562],{"class":508},[324,1015,1016,1018,1021,1023,1025,1027,1030,1032],{"class":326,"line":405},[324,1017,897],{"class":508},[324,1019,1020],{"class":432},"finishReason",[324,1022,810],{"class":508},[324,1024,550],{"class":508},[324,1026,815],{"class":508},[324,1028,1029],{"class":435},"stop",[324,1031,810],{"class":508},[324,1033,562],{"class":508},[324,1035,1037,1039,1042,1044,1046,1049],{"class":326,"line":1036},15,[324,1038,897],{"class":508},[324,1040,1041],{"class":432},"msToFirstChunk",[324,1043,810],{"class":508},[324,1045,550],{"class":508},[324,1047,1048],{"class":856}," 234",[324,1050,562],{"class":508},[324,1052,1054,1056,1059,1061,1063,1066],{"class":326,"line":1053},16,[324,1055,897],{"class":508},[324,1057,1058],{"class":432},"msToFinish",[324,1060,810],{"class":508},[324,1062,550],{"class":508},[324,1064,1065],{"class":856}," 4500",[324,1067,562],{"class":508},[324,1069,1071,1073,1076,1078,1080],{"class":326,"line":1070},17,[324,1072,897],{"class":508},[324,1074,1075],{"class":432},"tokensPerSecond",[324,1077,810],{"class":508},[324,1079,550],{"class":508},[324,1081,1082],{"class":856}," 180\n",[324,1084,1086],{"class":326,"line":1085},18,[324,1087,1088],{"class":508},"  }\n",[324,1090,1092],{"class":326,"line":1091},19,[324,1093,1094],{"class":508},"}\n",[410,1096,1098],{"id":1097},"how-it-works","How It Works",[303,1100,1101,1104,1105,1108],{},[306,1102,1103],{},"createAILogger(log, options?)"," returns an ",[306,1106,1107],{},"AILogger"," with two methods:",[1110,1111,1112,1125],"table",{},[1113,1114,1115],"thead",{},[1116,1117,1118,1122],"tr",{},[1119,1120,1121],"th",{},"Method",[1119,1123,1124],{},"Description",[1126,1127,1128,1159],"tbody",{},[1116,1129,1130,1136],{},[1131,1132,1133],"td",{},[306,1134,1135],{},"wrap(model)",[1131,1137,1138,1139,1142,1143,1146,1147,1150,1151,1154,1155,1158],{},"Wraps a language model with middleware. Accepts a model string (e.g. ",[306,1140,1141],{},"'anthropic\u002Fclaude-sonnet-4.6'",") or a ",[306,1144,1145],{},"LanguageModelV3"," object. Works with ",[306,1148,1149],{},"generateText",", ",[306,1152,1153],{},"streamText",", and ",[306,1156,1157],{},"ToolLoopAgent",". Also works with pre-wrapped models (e.g. from supermemory).",[1116,1160,1161,1166],{},[1131,1162,1163],{},[306,1164,1165],{},"captureEmbed(result)",[1131,1167,1168,1169,1172,1173,1176],{},"Manually captures token usage, model info, and dimensions from ",[306,1170,1171],{},"embed()"," or ",[306,1174,1175],{},"embedMany()"," results (embedding models use a different type).",[303,1178,1179],{},"The middleware intercepts calls at the provider level. It does not touch your callbacks, prompts, or responses. Captured data flows through the normal evlog pipeline (sampling, enrichers, drains) and ends up in Axiom, Better Stack, or wherever you drain to.",[1181,1182,1184],"h3",{"id":1183},"options","Options",[1110,1186,1187,1202],{},[1113,1188,1189],{},[1116,1190,1191,1194,1197,1200],{},[1119,1192,1193],{},"Option",[1119,1195,1196],{},"Type",[1119,1198,1199],{},"Default",[1119,1201,1124],{},[1126,1203,1204,1232],{},[1116,1205,1206,1211,1216,1221],{},[1131,1207,1208],{},[306,1209,1210],{},"toolInputs",[1131,1212,1213],{},[306,1214,1215],{},"boolean | ToolInputsOptions",[1131,1217,1218],{},[306,1219,1220],{},"false",[1131,1222,1223,1224,1227,1228,1231],{},"When enabled, ",[306,1225,1226],{},"toolCalls"," contains ",[306,1229,1230],{},"{ name, input }"," objects instead of plain strings. Opt-in because inputs can be large and may contain sensitive data.",[1116,1233,1234,1239,1244,1249],{},[1131,1235,1236],{},[306,1237,1238],{},"cost",[1131,1240,1241],{},[306,1242,1243],{},"Record\u003Cstring, ModelCost>",[1131,1245,1246],{},[306,1247,1248],{},"undefined",[1131,1250,1251,1252,1255],{},"Pricing map for cost estimation. Keys are model IDs, values are ",[306,1253,1254],{},"{ input, output }"," in dollars per 1M tokens.",[303,1257,1258,1259,1262],{},"Pass ",[306,1260,1261],{},"true"," to capture all inputs as-is, or an options object for fine-grained control:",[1110,1264,1265,1276],{},[1113,1266,1267],{},[1116,1268,1269,1272,1274],{},[1119,1270,1271],{},"Sub-option",[1119,1273,1196],{},[1119,1275,1124],{},[1126,1277,1278,1296],{},[1116,1279,1280,1285,1290],{},[1131,1281,1282],{},[306,1283,1284],{},"maxLength",[1131,1286,1287],{},[306,1288,1289],{},"number",[1131,1291,1292,1293,516],{},"Truncate stringified inputs exceeding this character length (appends ",[306,1294,1295],{},"…",[1116,1297,1298,1303,1308],{},[1131,1299,1300],{},[306,1301,1302],{},"transform",[1131,1304,1305],{},[306,1306,1307],{},"(input, toolName) => unknown",[1131,1309,1310,1311,1313],{},"Custom transform applied before ",[306,1312,1284],{},". Use to redact fields or reshape data.",[314,1315,1318],{"className":479,"code":1316,"filename":1317,"language":482,"meta":320,"style":320},"\u002F\u002F Capture everything\nconst ai = createAILogger(log, { toolInputs: true })\n\n\u002F\u002F Truncate long inputs (e.g. SQL queries)\nconst ai = createAILogger(log, { toolInputs: { maxLength: 200 } })\n\n\u002F\u002F Redact sensitive tool inputs\nconst ai = createAILogger(log, {\n  toolInputs: {\n    maxLength: 500,\n    transform: (input, toolName) => {\n      if (toolName === 'queryDB') return { sql: '***' }\n      return input\n    },\n  },\n})\n\n\u002F\u002F Cost estimation\nconst ai = createAILogger(log, {\n  cost: {\n    'claude-sonnet-4.6': { input: 3, output: 15 },\n    'gpt-4o': { input: 2.5, output: 10 },\n  },\n})\n","server\u002Fapi\u002Fchat.post.ts",[306,1319,1320,1326,1360,1364,1369,1404,1408,1413,1429,1438,1450,1473,1516,1524,1529,1534,1540,1544,1549,1565,1575,1610,1642,1647],{"__ignoreMap":320},[324,1321,1322],{"class":326,"line":327},[324,1323,1325],{"class":1324},"sHwdD","\u002F\u002F Capture everything\n",[324,1327,1328,1331,1334,1337,1339,1342,1345,1347,1350,1352,1356,1358],{"class":326,"line":333},[324,1329,1330],{"class":504},"const",[324,1332,1333],{"class":500}," ai ",[324,1335,1336],{"class":508},"=",[324,1338,640],{"class":496},[324,1340,1341],{"class":500},"(log",[324,1343,1344],{"class":508},",",[324,1346,614],{"class":508},[324,1348,1349],{"class":539}," toolInputs",[324,1351,550],{"class":508},[324,1353,1355],{"class":1354},"sfNiH"," true",[324,1357,620],{"class":508},[324,1359,577],{"class":500},[324,1361,1362],{"class":326,"line":340},[324,1363,337],{"emptyLinePlaceholder":336},[324,1365,1366],{"class":326,"line":346},[324,1367,1368],{"class":1324},"\u002F\u002F Truncate long inputs (e.g. SQL queries)\n",[324,1370,1371,1373,1375,1377,1379,1381,1383,1385,1387,1389,1391,1394,1396,1398,1400,1402],{"class":326,"line":352},[324,1372,1330],{"class":504},[324,1374,1333],{"class":500},[324,1376,1336],{"class":508},[324,1378,640],{"class":496},[324,1380,1341],{"class":500},[324,1382,1344],{"class":508},[324,1384,614],{"class":508},[324,1386,1349],{"class":539},[324,1388,550],{"class":508},[324,1390,614],{"class":508},[324,1392,1393],{"class":539}," maxLength",[324,1395,550],{"class":508},[324,1397,857],{"class":856},[324,1399,620],{"class":508},[324,1401,620],{"class":508},[324,1403,577],{"class":500},[324,1405,1406],{"class":326,"line":358},[324,1407,337],{"emptyLinePlaceholder":336},[324,1409,1410],{"class":326,"line":364},[324,1411,1412],{"class":1324},"\u002F\u002F Redact sensitive tool inputs\n",[324,1414,1415,1417,1419,1421,1423,1425,1427],{"class":326,"line":370},[324,1416,1330],{"class":504},[324,1418,1333],{"class":500},[324,1420,1336],{"class":508},[324,1422,640],{"class":496},[324,1424,1341],{"class":500},[324,1426,1344],{"class":508},[324,1428,522],{"class":508},[324,1430,1431,1434,1436],{"class":326,"line":376},[324,1432,1433],{"class":539},"  toolInputs",[324,1435,550],{"class":508},[324,1437,522],{"class":508},[324,1439,1440,1443,1445,1448],{"class":326,"line":382},[324,1441,1442],{"class":539},"    maxLength",[324,1444,550],{"class":508},[324,1446,1447],{"class":856}," 500",[324,1449,562],{"class":508},[324,1451,1452,1455,1457,1459,1462,1464,1467,1469,1471],{"class":326,"line":388},[324,1453,1454],{"class":496},"    transform",[324,1456,550],{"class":508},[324,1458,509],{"class":508},[324,1460,1461],{"class":512},"input",[324,1463,1344],{"class":508},[324,1465,1466],{"class":512}," toolName",[324,1468,516],{"class":508},[324,1470,519],{"class":504},[324,1472,522],{"class":508},[324,1474,1475,1478,1480,1483,1486,1488,1491,1493,1496,1499,1501,1504,1506,1508,1511,1513],{"class":326,"line":394},[324,1476,1477],{"class":489},"      if",[324,1479,509],{"class":539},[324,1481,1482],{"class":500},"toolName",[324,1484,1485],{"class":508}," ===",[324,1487,553],{"class":508},[324,1489,1490],{"class":435},"queryDB",[324,1492,559],{"class":508},[324,1494,1495],{"class":539},") ",[324,1497,1498],{"class":489},"return",[324,1500,614],{"class":508},[324,1502,1503],{"class":539}," sql",[324,1505,550],{"class":508},[324,1507,553],{"class":508},[324,1509,1510],{"class":435},"***",[324,1512,559],{"class":508},[324,1514,1515],{"class":508}," }\n",[324,1517,1518,1521],{"class":326,"line":399},[324,1519,1520],{"class":489},"      return",[324,1522,1523],{"class":500}," input\n",[324,1525,1526],{"class":326,"line":405},[324,1527,1528],{"class":508},"    },\n",[324,1530,1531],{"class":326,"line":1036},[324,1532,1533],{"class":508},"  },\n",[324,1535,1536,1538],{"class":326,"line":1053},[324,1537,598],{"class":508},[324,1539,577],{"class":500},[324,1541,1542],{"class":326,"line":1070},[324,1543,337],{"emptyLinePlaceholder":336},[324,1545,1546],{"class":326,"line":1085},[324,1547,1548],{"class":1324},"\u002F\u002F Cost estimation\n",[324,1550,1551,1553,1555,1557,1559,1561,1563],{"class":326,"line":1091},[324,1552,1330],{"class":504},[324,1554,1333],{"class":500},[324,1556,1336],{"class":508},[324,1558,640],{"class":496},[324,1560,1341],{"class":500},[324,1562,1344],{"class":508},[324,1564,522],{"class":508},[324,1566,1568,1571,1573],{"class":326,"line":1567},20,[324,1569,1570],{"class":539},"  cost",[324,1572,550],{"class":508},[324,1574,522],{"class":508},[324,1576,1578,1581,1583,1585,1587,1589,1592,1594,1597,1599,1602,1604,1607],{"class":326,"line":1577},21,[324,1579,1580],{"class":508},"    '",[324,1582,925],{"class":539},[324,1584,559],{"class":508},[324,1586,550],{"class":508},[324,1588,614],{"class":508},[324,1590,1591],{"class":539}," input",[324,1593,550],{"class":508},[324,1595,1596],{"class":856}," 3",[324,1598,1344],{"class":508},[324,1600,1601],{"class":539}," output",[324,1603,550],{"class":508},[324,1605,1606],{"class":856}," 15",[324,1608,1609],{"class":508}," },\n",[324,1611,1613,1615,1618,1620,1622,1624,1626,1628,1631,1633,1635,1637,1640],{"class":326,"line":1612},22,[324,1614,1580],{"class":508},[324,1616,1617],{"class":539},"gpt-4o",[324,1619,559],{"class":508},[324,1621,550],{"class":508},[324,1623,614],{"class":508},[324,1625,1591],{"class":539},[324,1627,550],{"class":508},[324,1629,1630],{"class":856}," 2.5",[324,1632,1344],{"class":508},[324,1634,1601],{"class":539},[324,1636,550],{"class":508},[324,1638,1639],{"class":856}," 10",[324,1641,1609],{"class":508},[324,1643,1645],{"class":326,"line":1644},23,[324,1646,1533],{"class":508},[324,1648,1650,1652],{"class":326,"line":1649},24,[324,1651,598],{"class":508},[324,1653,577],{"class":500},[410,1655,1657],{"id":1656},"usage-patterns","Usage Patterns",[1181,1659,1153],{"id":1660},"streamtext",[303,1662,1663],{},"The most common pattern, streaming chat with full observability:",[314,1665,1667],{"className":479,"code":1666,"filename":1317,"language":482,"meta":320,"style":320},"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      \u002F\u002F Your code, no conflict with evlog\n      saveConversation(text)\n    },\n  })\n\n  return result.toTextStreamResponse()\n})\n",[306,1668,1669,1687,1705,1709,1731,1747,1763,1788,1792,1837,1841,1855,1879,1885,1905,1910,1922,1926,1932,1936,1948],{"__ignoreMap":320},[324,1670,1671,1673,1675,1677,1679,1681,1683,1685],{"class":326,"line":327},[324,1672,611],{"class":489},[324,1674,614],{"class":508},[324,1676,536],{"class":500},[324,1678,620],{"class":508},[324,1680,623],{"class":489},[324,1682,553],{"class":508},[324,1684,886],{"class":435},[324,1686,631],{"class":508},[324,1688,1689,1691,1693,1695,1697,1699,1701,1703],{"class":326,"line":333},[324,1690,611],{"class":489},[324,1692,614],{"class":508},[324,1694,640],{"class":500},[324,1696,620],{"class":508},[324,1698,623],{"class":489},[324,1700,553],{"class":508},[324,1702,308],{"class":435},[324,1704,631],{"class":508},[324,1706,1707],{"class":326,"line":340},[324,1708,337],{"emptyLinePlaceholder":336},[324,1710,1711,1713,1715,1717,1719,1721,1723,1725,1727,1729],{"class":326,"line":346},[324,1712,490],{"class":489},[324,1714,493],{"class":489},[324,1716,497],{"class":496},[324,1718,501],{"class":500},[324,1720,505],{"class":504},[324,1722,509],{"class":508},[324,1724,513],{"class":512},[324,1726,516],{"class":508},[324,1728,519],{"class":504},[324,1730,522],{"class":508},[324,1732,1733,1735,1737,1739,1741,1743,1745],{"class":326,"line":352},[324,1734,527],{"class":504},[324,1736,683],{"class":500},[324,1738,533],{"class":508},[324,1740,617],{"class":496},[324,1742,501],{"class":539},[324,1744,513],{"class":500},[324,1746,577],{"class":539},[324,1748,1749,1751,1753,1755,1757,1759,1761],{"class":326,"line":358},[324,1750,527],{"class":504},[324,1752,700],{"class":500},[324,1754,533],{"class":508},[324,1756,640],{"class":496},[324,1758,501],{"class":539},[324,1760,709],{"class":500},[324,1762,577],{"class":539},[324,1764,1765,1767,1769,1772,1774,1776,1779,1782,1784,1786],{"class":326,"line":364},[324,1766,527],{"class":504},[324,1768,614],{"class":508},[324,1770,1771],{"class":500}," messages",[324,1773,620],{"class":508},[324,1775,533],{"class":508},[324,1777,1778],{"class":489}," await",[324,1780,1781],{"class":496}," readBody",[324,1783,501],{"class":539},[324,1785,513],{"class":500},[324,1787,577],{"class":539},[324,1789,1790],{"class":326,"line":370},[324,1791,337],{"emptyLinePlaceholder":336},[324,1793,1794,1797,1799,1802,1804,1807,1810,1812,1814,1817,1819,1821,1824,1826,1828,1830,1833,1835],{"class":326,"line":376},[324,1795,1796],{"class":500},"  log",[324,1798,587],{"class":508},[324,1800,1801],{"class":496},"set",[324,1803,501],{"class":539},[324,1805,1806],{"class":508},"{",[324,1808,1809],{"class":539}," action",[324,1811,550],{"class":508},[324,1813,553],{"class":508},[324,1815,1816],{"class":435},"chat",[324,1818,559],{"class":508},[324,1820,1344],{"class":508},[324,1822,1823],{"class":539}," messagesCount",[324,1825,550],{"class":508},[324,1827,1771],{"class":500},[324,1829,587],{"class":508},[324,1831,1832],{"class":500},"length",[324,1834,620],{"class":508},[324,1836,577],{"class":539},[324,1838,1839],{"class":326,"line":382},[324,1840,337],{"emptyLinePlaceholder":336},[324,1842,1843,1845,1847,1849,1851,1853],{"class":326,"line":388},[324,1844,527],{"class":504},[324,1846,530],{"class":500},[324,1848,533],{"class":508},[324,1850,536],{"class":496},[324,1852,501],{"class":539},[324,1854,542],{"class":508},[324,1856,1857,1859,1861,1863,1865,1867,1869,1871,1873,1875,1877],{"class":326,"line":394},[324,1858,547],{"class":539},[324,1860,550],{"class":508},[324,1862,700],{"class":500},[324,1864,587],{"class":508},[324,1866,742],{"class":496},[324,1868,501],{"class":539},[324,1870,559],{"class":508},[324,1872,556],{"class":435},[324,1874,559],{"class":508},[324,1876,516],{"class":539},[324,1878,562],{"class":508},[324,1880,1881,1883],{"class":326,"line":399},[324,1882,567],{"class":500},[324,1884,562],{"class":508},[324,1886,1887,1890,1892,1895,1898,1901,1903],{"class":326,"line":405},[324,1888,1889],{"class":496},"    onFinish",[324,1891,550],{"class":508},[324,1893,1894],{"class":508}," ({",[324,1896,1897],{"class":512}," text",[324,1899,1900],{"class":508}," })",[324,1902,519],{"class":504},[324,1904,522],{"class":508},[324,1906,1907],{"class":326,"line":1036},[324,1908,1909],{"class":1324},"      \u002F\u002F Your code, no conflict with evlog\n",[324,1911,1912,1915,1917,1920],{"class":326,"line":1053},[324,1913,1914],{"class":496},"      saveConversation",[324,1916,501],{"class":539},[324,1918,1919],{"class":500},"text",[324,1921,577],{"class":539},[324,1923,1924],{"class":326,"line":1070},[324,1925,1528],{"class":508},[324,1927,1928,1930],{"class":326,"line":1085},[324,1929,574],{"class":508},[324,1931,577],{"class":539},[324,1933,1934],{"class":326,"line":1091},[324,1935,337],{"emptyLinePlaceholder":336},[324,1937,1938,1940,1942,1944,1946],{"class":326,"line":1567},[324,1939,582],{"class":489},[324,1941,530],{"class":500},[324,1943,587],{"class":508},[324,1945,590],{"class":496},[324,1947,593],{"class":539},[324,1949,1950,1952],{"class":326,"line":1577},[324,1951,598],{"class":508},[324,1953,577],{"class":500},[1181,1955,1149],{"id":1956},"generatetext",[303,1958,1959],{},"Synchronous generation, the middleware captures the result automatically:",[314,1961,1964],{"className":479,"code":1962,"filename":1963,"language":482,"meta":320,"style":320},"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",[306,1965,1966,1985,2003,2007,2029,2045,2061,2065,2081,2105,2121,2127,2131,2149],{"__ignoreMap":320},[324,1967,1968,1970,1972,1975,1977,1979,1981,1983],{"class":326,"line":327},[324,1969,611],{"class":489},[324,1971,614],{"class":508},[324,1973,1974],{"class":500}," generateText",[324,1976,620],{"class":508},[324,1978,623],{"class":489},[324,1980,553],{"class":508},[324,1982,886],{"class":435},[324,1984,631],{"class":508},[324,1986,1987,1989,1991,1993,1995,1997,1999,2001],{"class":326,"line":333},[324,1988,611],{"class":489},[324,1990,614],{"class":508},[324,1992,640],{"class":500},[324,1994,620],{"class":508},[324,1996,623],{"class":489},[324,1998,553],{"class":508},[324,2000,308],{"class":435},[324,2002,631],{"class":508},[324,2004,2005],{"class":326,"line":340},[324,2006,337],{"emptyLinePlaceholder":336},[324,2008,2009,2011,2013,2015,2017,2019,2021,2023,2025,2027],{"class":326,"line":346},[324,2010,490],{"class":489},[324,2012,493],{"class":489},[324,2014,497],{"class":496},[324,2016,501],{"class":500},[324,2018,505],{"class":504},[324,2020,509],{"class":508},[324,2022,513],{"class":512},[324,2024,516],{"class":508},[324,2026,519],{"class":504},[324,2028,522],{"class":508},[324,2030,2031,2033,2035,2037,2039,2041,2043],{"class":326,"line":352},[324,2032,527],{"class":504},[324,2034,683],{"class":500},[324,2036,533],{"class":508},[324,2038,617],{"class":496},[324,2040,501],{"class":539},[324,2042,513],{"class":500},[324,2044,577],{"class":539},[324,2046,2047,2049,2051,2053,2055,2057,2059],{"class":326,"line":358},[324,2048,527],{"class":504},[324,2050,700],{"class":500},[324,2052,533],{"class":508},[324,2054,640],{"class":496},[324,2056,501],{"class":539},[324,2058,709],{"class":500},[324,2060,577],{"class":539},[324,2062,2063],{"class":326,"line":364},[324,2064,337],{"emptyLinePlaceholder":336},[324,2066,2067,2069,2071,2073,2075,2077,2079],{"class":326,"line":370},[324,2068,527],{"class":504},[324,2070,530],{"class":500},[324,2072,533],{"class":508},[324,2074,1778],{"class":489},[324,2076,1974],{"class":496},[324,2078,501],{"class":539},[324,2080,542],{"class":508},[324,2082,2083,2085,2087,2089,2091,2093,2095,2097,2099,2101,2103],{"class":326,"line":376},[324,2084,547],{"class":539},[324,2086,550],{"class":508},[324,2088,700],{"class":500},[324,2090,587],{"class":508},[324,2092,742],{"class":496},[324,2094,501],{"class":539},[324,2096,559],{"class":508},[324,2098,556],{"class":435},[324,2100,559],{"class":508},[324,2102,516],{"class":539},[324,2104,562],{"class":508},[324,2106,2107,2110,2112,2114,2117,2119],{"class":326,"line":382},[324,2108,2109],{"class":539},"    prompt",[324,2111,550],{"class":508},[324,2113,553],{"class":508},[324,2115,2116],{"class":435},"Summarize this document",[324,2118,559],{"class":508},[324,2120,562],{"class":508},[324,2122,2123,2125],{"class":326,"line":388},[324,2124,574],{"class":508},[324,2126,577],{"class":539},[324,2128,2129],{"class":326,"line":394},[324,2130,337],{"emptyLinePlaceholder":336},[324,2132,2133,2135,2137,2139,2141,2143,2145,2147],{"class":326,"line":399},[324,2134,582],{"class":489},[324,2136,614],{"class":508},[324,2138,1897],{"class":539},[324,2140,550],{"class":508},[324,2142,530],{"class":500},[324,2144,587],{"class":508},[324,2146,1919],{"class":500},[324,2148,1515],{"class":508},[324,2150,2151,2153],{"class":326,"line":405},[324,2152,598],{"class":508},[324,2154,577],{"class":500},[1181,2156,2158],{"id":2157},"multi-step-agents","Multi-step agents",[303,2160,2161],{},"The middleware fires for each step automatically. Steps, tool calls, and tokens are all accumulated across the agent loop:",[314,2163,2166],{"className":479,"code":2164,"filename":2165,"language":482,"meta":320,"style":320},"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",[306,2167,2168,2197,2215,2233,2237,2259,2275,2297,2315,2332,2338,2342,2360,2384,2403,2421,2427,2431,2441,2448,2459,2465],{"__ignoreMap":320},[324,2169,2170,2172,2174,2177,2179,2182,2184,2187,2189,2191,2193,2195],{"class":326,"line":327},[324,2171,611],{"class":489},[324,2173,614],{"class":508},[324,2175,2176],{"class":500}," ToolLoopAgent",[324,2178,1344],{"class":508},[324,2180,2181],{"class":500}," createAgentUIStreamResponse",[324,2183,1344],{"class":508},[324,2185,2186],{"class":500}," stepCountIs",[324,2188,620],{"class":508},[324,2190,623],{"class":489},[324,2192,553],{"class":508},[324,2194,886],{"class":435},[324,2196,631],{"class":508},[324,2198,2199,2201,2203,2205,2207,2209,2211,2213],{"class":326,"line":333},[324,2200,611],{"class":489},[324,2202,614],{"class":508},[324,2204,617],{"class":500},[324,2206,620],{"class":508},[324,2208,623],{"class":489},[324,2210,553],{"class":508},[324,2212,628],{"class":435},[324,2214,631],{"class":508},[324,2216,2217,2219,2221,2223,2225,2227,2229,2231],{"class":326,"line":340},[324,2218,611],{"class":489},[324,2220,614],{"class":508},[324,2222,640],{"class":500},[324,2224,620],{"class":508},[324,2226,623],{"class":489},[324,2228,553],{"class":508},[324,2230,308],{"class":435},[324,2232,631],{"class":508},[324,2234,2235],{"class":326,"line":346},[324,2236,337],{"emptyLinePlaceholder":336},[324,2238,2239,2241,2243,2245,2247,2249,2251,2253,2255,2257],{"class":326,"line":352},[324,2240,490],{"class":489},[324,2242,493],{"class":489},[324,2244,497],{"class":496},[324,2246,501],{"class":500},[324,2248,505],{"class":504},[324,2250,509],{"class":508},[324,2252,513],{"class":512},[324,2254,516],{"class":508},[324,2256,519],{"class":504},[324,2258,522],{"class":508},[324,2260,2261,2263,2265,2267,2269,2271,2273],{"class":326,"line":358},[324,2262,527],{"class":504},[324,2264,683],{"class":500},[324,2266,533],{"class":508},[324,2268,617],{"class":496},[324,2270,501],{"class":539},[324,2272,513],{"class":500},[324,2274,577],{"class":539},[324,2276,2277,2279,2281,2283,2285,2287,2289,2291,2293,2295],{"class":326,"line":364},[324,2278,527],{"class":504},[324,2280,614],{"class":508},[324,2282,1771],{"class":500},[324,2284,620],{"class":508},[324,2286,533],{"class":508},[324,2288,1778],{"class":489},[324,2290,1781],{"class":496},[324,2292,501],{"class":539},[324,2294,513],{"class":500},[324,2296,577],{"class":539},[324,2298,2299,2301,2303,2305,2307,2309,2311,2313],{"class":326,"line":370},[324,2300,527],{"class":504},[324,2302,700],{"class":500},[324,2304,533],{"class":508},[324,2306,640],{"class":496},[324,2308,501],{"class":539},[324,2310,709],{"class":500},[324,2312,1344],{"class":508},[324,2314,522],{"class":508},[324,2316,2317,2320,2322,2324,2326,2328,2330],{"class":326,"line":376},[324,2318,2319],{"class":539},"    toolInputs",[324,2321,550],{"class":508},[324,2323,614],{"class":508},[324,2325,1393],{"class":539},[324,2327,550],{"class":508},[324,2329,1447],{"class":856},[324,2331,1609],{"class":508},[324,2333,2334,2336],{"class":326,"line":382},[324,2335,574],{"class":508},[324,2337,577],{"class":539},[324,2339,2340],{"class":326,"line":388},[324,2341,337],{"emptyLinePlaceholder":336},[324,2343,2344,2346,2349,2351,2354,2356,2358],{"class":326,"line":394},[324,2345,527],{"class":504},[324,2347,2348],{"class":500}," agent",[324,2350,533],{"class":508},[324,2352,2353],{"class":508}," new",[324,2355,2176],{"class":496},[324,2357,501],{"class":539},[324,2359,542],{"class":508},[324,2361,2362,2364,2366,2368,2370,2372,2374,2376,2378,2380,2382],{"class":326,"line":399},[324,2363,547],{"class":539},[324,2365,550],{"class":508},[324,2367,700],{"class":500},[324,2369,587],{"class":508},[324,2371,742],{"class":496},[324,2373,501],{"class":539},[324,2375,559],{"class":508},[324,2377,556],{"class":435},[324,2379,559],{"class":508},[324,2381,516],{"class":539},[324,2383,562],{"class":508},[324,2385,2386,2389,2391,2393,2396,2398,2401],{"class":326,"line":405},[324,2387,2388],{"class":539},"    tools",[324,2390,550],{"class":508},[324,2392,614],{"class":508},[324,2394,2395],{"class":500}," searchWeb",[324,2397,1344],{"class":508},[324,2399,2400],{"class":500}," queryDatabase",[324,2402,1609],{"class":508},[324,2404,2405,2408,2410,2412,2414,2417,2419],{"class":326,"line":1036},[324,2406,2407],{"class":539},"    stopWhen",[324,2409,550],{"class":508},[324,2411,2186],{"class":496},[324,2413,501],{"class":539},[324,2415,2416],{"class":856},"5",[324,2418,516],{"class":539},[324,2420,562],{"class":508},[324,2422,2423,2425],{"class":326,"line":1053},[324,2424,574],{"class":508},[324,2426,577],{"class":539},[324,2428,2429],{"class":326,"line":1070},[324,2430,337],{"emptyLinePlaceholder":336},[324,2432,2433,2435,2437,2439],{"class":326,"line":1085},[324,2434,582],{"class":489},[324,2436,2181],{"class":496},[324,2438,501],{"class":539},[324,2440,542],{"class":508},[324,2442,2443,2446],{"class":326,"line":1091},[324,2444,2445],{"class":500},"    agent",[324,2447,562],{"class":508},[324,2449,2450,2453,2455,2457],{"class":326,"line":1567},[324,2451,2452],{"class":539},"    uiMessages",[324,2454,550],{"class":508},[324,2456,1771],{"class":500},[324,2458,562],{"class":508},[324,2460,2461,2463],{"class":326,"line":1577},[324,2462,574],{"class":508},[324,2464,577],{"class":539},[324,2466,2467,2469],{"class":326,"line":1612},[324,2468,598],{"class":508},[324,2470,577],{"class":500},[303,2472,2473],{},"Wide event after a 3-step agent run:",[314,2475,2477],{"className":790,"code":2476,"filename":792,"language":793,"meta":320,"style":320},"{\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",[306,2478,2479,2483,2495,2509,2524,2542,2560,2574,2589,2604,2622,2635,2688,2739,2788,2793,2813,2826,2893,2967,3012,3016,3031,3046,3059,3064],{"__ignoreMap":320},[324,2480,2481],{"class":326,"line":327},[324,2482,542],{"class":508},[324,2484,2485,2487,2489,2491,2493],{"class":326,"line":333},[324,2486,804],{"class":508},[324,2488,886],{"class":504},[324,2490,810],{"class":508},[324,2492,550],{"class":508},[324,2494,522],{"class":508},[324,2496,2497,2499,2501,2503,2505,2507],{"class":326,"line":340},[324,2498,897],{"class":508},[324,2500,900],{"class":432},[324,2502,810],{"class":508},[324,2504,550],{"class":508},[324,2506,1596],{"class":856},[324,2508,562],{"class":508},[324,2510,2511,2513,2516,2518,2520,2522],{"class":326,"line":346},[324,2512,897],{"class":508},[324,2514,2515],{"class":432},"steps",[324,2517,810],{"class":508},[324,2519,550],{"class":508},[324,2521,1596],{"class":856},[324,2523,562],{"class":508},[324,2525,2526,2528,2530,2532,2534,2536,2538,2540],{"class":326,"line":352},[324,2527,897],{"class":508},[324,2529,916],{"class":432},[324,2531,810],{"class":508},[324,2533,550],{"class":508},[324,2535,815],{"class":508},[324,2537,925],{"class":435},[324,2539,810],{"class":508},[324,2541,562],{"class":508},[324,2543,2544,2546,2548,2550,2552,2554,2556,2558],{"class":326,"line":358},[324,2545,897],{"class":508},[324,2547,936],{"class":432},[324,2549,810],{"class":508},[324,2551,550],{"class":508},[324,2553,815],{"class":508},[324,2555,945],{"class":435},[324,2557,810],{"class":508},[324,2559,562],{"class":508},[324,2561,2562,2564,2566,2568,2570,2572],{"class":326,"line":364},[324,2563,897],{"class":508},[324,2565,956],{"class":432},[324,2567,810],{"class":508},[324,2569,550],{"class":508},[324,2571,1065],{"class":856},[324,2573,562],{"class":508},[324,2575,2576,2578,2580,2582,2584,2587],{"class":326,"line":370},[324,2577,897],{"class":508},[324,2579,972],{"class":432},[324,2581,810],{"class":508},[324,2583,550],{"class":508},[324,2585,2586],{"class":856}," 1200",[324,2588,562],{"class":508},[324,2590,2591,2593,2595,2597,2599,2602],{"class":326,"line":376},[324,2592,897],{"class":508},[324,2594,988],{"class":432},[324,2596,810],{"class":508},[324,2598,550],{"class":508},[324,2600,2601],{"class":856}," 5700",[324,2603,562],{"class":508},[324,2605,2606,2608,2610,2612,2614,2616,2618,2620],{"class":326,"line":382},[324,2607,897],{"class":508},[324,2609,1020],{"class":432},[324,2611,810],{"class":508},[324,2613,550],{"class":508},[324,2615,815],{"class":508},[324,2617,1029],{"class":435},[324,2619,810],{"class":508},[324,2621,562],{"class":508},[324,2623,2624,2626,2628,2630,2632],{"class":326,"line":388},[324,2625,897],{"class":508},[324,2627,1226],{"class":432},[324,2629,810],{"class":508},[324,2631,550],{"class":508},[324,2633,2634],{"class":508}," [\n",[324,2636,2637,2640,2642,2645,2647,2649,2651,2654,2656,2658,2660,2662,2664,2666,2668,2670,2673,2675,2677,2679,2682,2684,2686],{"class":326,"line":394},[324,2638,2639],{"class":508},"      {",[324,2641,815],{"class":508},[324,2643,2644],{"class":856},"name",[324,2646,810],{"class":508},[324,2648,550],{"class":508},[324,2650,815],{"class":508},[324,2652,2653],{"class":435},"searchWeb",[324,2655,810],{"class":508},[324,2657,1344],{"class":508},[324,2659,815],{"class":508},[324,2661,1461],{"class":856},[324,2663,810],{"class":508},[324,2665,550],{"class":508},[324,2667,614],{"class":508},[324,2669,815],{"class":508},[324,2671,2672],{"class":539},"query",[324,2674,810],{"class":508},[324,2676,550],{"class":508},[324,2678,815],{"class":508},[324,2680,2681],{"class":435},"TypeScript 6.0 features",[324,2683,810],{"class":508},[324,2685,620],{"class":508},[324,2687,1609],{"class":508},[324,2689,2690,2692,2694,2696,2698,2700,2702,2705,2707,2709,2711,2713,2715,2717,2719,2721,2724,2726,2728,2730,2733,2735,2737],{"class":326,"line":399},[324,2691,2639],{"class":508},[324,2693,815],{"class":508},[324,2695,2644],{"class":856},[324,2697,810],{"class":508},[324,2699,550],{"class":508},[324,2701,815],{"class":508},[324,2703,2704],{"class":435},"queryDatabase",[324,2706,810],{"class":508},[324,2708,1344],{"class":508},[324,2710,815],{"class":508},[324,2712,1461],{"class":856},[324,2714,810],{"class":508},[324,2716,550],{"class":508},[324,2718,614],{"class":508},[324,2720,815],{"class":508},[324,2722,2723],{"class":539},"sql",[324,2725,810],{"class":508},[324,2727,550],{"class":508},[324,2729,815],{"class":508},[324,2731,2732],{"class":435},"SELECT * FROM docs WHERE topic = 'typescript'",[324,2734,810],{"class":508},[324,2736,620],{"class":508},[324,2738,1609],{"class":508},[324,2740,2741,2743,2745,2747,2749,2751,2753,2755,2757,2759,2761,2763,2765,2767,2769,2771,2773,2775,2777,2779,2782,2784,2786],{"class":326,"line":405},[324,2742,2639],{"class":508},[324,2744,815],{"class":508},[324,2746,2644],{"class":856},[324,2748,810],{"class":508},[324,2750,550],{"class":508},[324,2752,815],{"class":508},[324,2754,2653],{"class":435},[324,2756,810],{"class":508},[324,2758,1344],{"class":508},[324,2760,815],{"class":508},[324,2762,1461],{"class":856},[324,2764,810],{"class":508},[324,2766,550],{"class":508},[324,2768,614],{"class":508},[324,2770,815],{"class":508},[324,2772,2672],{"class":539},[324,2774,810],{"class":508},[324,2776,550],{"class":508},[324,2778,815],{"class":508},[324,2780,2781],{"class":435},"TypeScript 6.0 release date",[324,2783,810],{"class":508},[324,2785,620],{"class":508},[324,2787,1515],{"class":508},[324,2789,2790],{"class":326,"line":1036},[324,2791,2792],{"class":508},"    ],\n",[324,2794,2795,2797,2800,2802,2804,2806,2809,2811],{"class":326,"line":1053},[324,2796,897],{"class":508},[324,2798,2799],{"class":432},"responseId",[324,2801,810],{"class":508},[324,2803,550],{"class":508},[324,2805,815],{"class":508},[324,2807,2808],{"class":435},"msg_01XFDUDYJgAACzvnptvVoYEL",[324,2810,810],{"class":508},[324,2812,562],{"class":508},[324,2814,2815,2817,2820,2822,2824],{"class":326,"line":1070},[324,2816,897],{"class":508},[324,2818,2819],{"class":432},"stepsUsage",[324,2821,810],{"class":508},[324,2823,550],{"class":508},[324,2825,2634],{"class":508},[324,2827,2828,2830,2832,2834,2836,2838,2840,2842,2844,2846,2848,2850,2852,2854,2856,2858,2860,2862,2864,2866,2869,2871,2873,2875,2877,2879,2882,2884,2886,2888,2891],{"class":326,"line":1085},[324,2829,2639],{"class":508},[324,2831,815],{"class":508},[324,2833,916],{"class":856},[324,2835,810],{"class":508},[324,2837,550],{"class":508},[324,2839,815],{"class":508},[324,2841,925],{"class":435},[324,2843,810],{"class":508},[324,2845,1344],{"class":508},[324,2847,815],{"class":508},[324,2849,956],{"class":856},[324,2851,810],{"class":508},[324,2853,550],{"class":508},[324,2855,2586],{"class":856},[324,2857,1344],{"class":508},[324,2859,815],{"class":508},[324,2861,972],{"class":856},[324,2863,810],{"class":508},[324,2865,550],{"class":508},[324,2867,2868],{"class":856}," 300",[324,2870,1344],{"class":508},[324,2872,815],{"class":508},[324,2874,1226],{"class":856},[324,2876,810],{"class":508},[324,2878,550],{"class":508},[324,2880,2881],{"class":508}," [",[324,2883,810],{"class":508},[324,2885,2653],{"class":435},[324,2887,810],{"class":508},[324,2889,2890],{"class":508},"]",[324,2892,1609],{"class":508},[324,2894,2895,2897,2899,2901,2903,2905,2907,2909,2911,2913,2915,2917,2919,2921,2924,2926,2928,2930,2932,2934,2937,2939,2941,2943,2945,2947,2949,2951,2953,2955,2957,2959,2961,2963,2965],{"class":326,"line":1091},[324,2896,2639],{"class":508},[324,2898,815],{"class":508},[324,2900,916],{"class":856},[324,2902,810],{"class":508},[324,2904,550],{"class":508},[324,2906,815],{"class":508},[324,2908,925],{"class":435},[324,2910,810],{"class":508},[324,2912,1344],{"class":508},[324,2914,815],{"class":508},[324,2916,956],{"class":856},[324,2918,810],{"class":508},[324,2920,550],{"class":508},[324,2922,2923],{"class":856}," 1500",[324,2925,1344],{"class":508},[324,2927,815],{"class":508},[324,2929,972],{"class":856},[324,2931,810],{"class":508},[324,2933,550],{"class":508},[324,2935,2936],{"class":856}," 400",[324,2938,1344],{"class":508},[324,2940,815],{"class":508},[324,2942,1226],{"class":856},[324,2944,810],{"class":508},[324,2946,550],{"class":508},[324,2948,2881],{"class":508},[324,2950,810],{"class":508},[324,2952,2704],{"class":435},[324,2954,810],{"class":508},[324,2956,1344],{"class":508},[324,2958,815],{"class":508},[324,2960,2653],{"class":435},[324,2962,810],{"class":508},[324,2964,2890],{"class":508},[324,2966,1609],{"class":508},[324,2968,2969,2971,2973,2975,2977,2979,2981,2983,2985,2987,2989,2991,2993,2995,2998,3000,3002,3004,3006,3008,3010],{"class":326,"line":1567},[324,2970,2639],{"class":508},[324,2972,815],{"class":508},[324,2974,916],{"class":856},[324,2976,810],{"class":508},[324,2978,550],{"class":508},[324,2980,815],{"class":508},[324,2982,925],{"class":435},[324,2984,810],{"class":508},[324,2986,1344],{"class":508},[324,2988,815],{"class":508},[324,2990,956],{"class":856},[324,2992,810],{"class":508},[324,2994,550],{"class":508},[324,2996,2997],{"class":856}," 1800",[324,2999,1344],{"class":508},[324,3001,815],{"class":508},[324,3003,972],{"class":856},[324,3005,810],{"class":508},[324,3007,550],{"class":508},[324,3009,1447],{"class":856},[324,3011,1515],{"class":508},[324,3013,3014],{"class":326,"line":1577},[324,3015,2792],{"class":508},[324,3017,3018,3020,3022,3024,3026,3029],{"class":326,"line":1612},[324,3019,897],{"class":508},[324,3021,1041],{"class":432},[324,3023,810],{"class":508},[324,3025,550],{"class":508},[324,3027,3028],{"class":856}," 312",[324,3030,562],{"class":508},[324,3032,3033,3035,3037,3039,3041,3044],{"class":326,"line":1644},[324,3034,897],{"class":508},[324,3036,1058],{"class":432},[324,3038,810],{"class":508},[324,3040,550],{"class":508},[324,3042,3043],{"class":856}," 8200",[324,3045,562],{"class":508},[324,3047,3048,3050,3052,3054,3056],{"class":326,"line":1649},[324,3049,897],{"class":508},[324,3051,1075],{"class":432},[324,3053,810],{"class":508},[324,3055,550],{"class":508},[324,3057,3058],{"class":856}," 146\n",[324,3060,3062],{"class":326,"line":3061},25,[324,3063,1088],{"class":508},[324,3065,3067],{"class":326,"line":3066},26,[324,3068,1094],{"class":508},[1181,3070,3072],{"id":3071},"rag-embed-generate","RAG (embed + generate)",[303,3074,3075,3076,3079],{},"Use ",[306,3077,3078],{},"captureEmbed"," for embedding calls. They use a different model type that cannot be wrapped with middleware:",[314,3081,3084],{"className":479,"code":3082,"filename":3083,"language":482,"meta":320,"style":320},"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",[306,3085,3086,3109,3127,3145,3149,3171,3187,3203,3207,3233,3260,3272,3278,3291,3298,3312,3324,3330,3334,3354,3358,3374,3398,3416,3422,3426,3444],{"__ignoreMap":320},[324,3087,3088,3090,3092,3095,3097,3099,3101,3103,3105,3107],{"class":326,"line":327},[324,3089,611],{"class":489},[324,3091,614],{"class":508},[324,3093,3094],{"class":500}," embed",[324,3096,1344],{"class":508},[324,3098,1974],{"class":500},[324,3100,620],{"class":508},[324,3102,623],{"class":489},[324,3104,553],{"class":508},[324,3106,886],{"class":435},[324,3108,631],{"class":508},[324,3110,3111,3113,3115,3117,3119,3121,3123,3125],{"class":326,"line":333},[324,3112,611],{"class":489},[324,3114,614],{"class":508},[324,3116,617],{"class":500},[324,3118,620],{"class":508},[324,3120,623],{"class":489},[324,3122,553],{"class":508},[324,3124,628],{"class":435},[324,3126,631],{"class":508},[324,3128,3129,3131,3133,3135,3137,3139,3141,3143],{"class":326,"line":340},[324,3130,611],{"class":489},[324,3132,614],{"class":508},[324,3134,640],{"class":500},[324,3136,620],{"class":508},[324,3138,623],{"class":489},[324,3140,553],{"class":508},[324,3142,308],{"class":435},[324,3144,631],{"class":508},[324,3146,3147],{"class":326,"line":346},[324,3148,337],{"emptyLinePlaceholder":336},[324,3150,3151,3153,3155,3157,3159,3161,3163,3165,3167,3169],{"class":326,"line":352},[324,3152,490],{"class":489},[324,3154,493],{"class":489},[324,3156,497],{"class":496},[324,3158,501],{"class":500},[324,3160,505],{"class":504},[324,3162,509],{"class":508},[324,3164,513],{"class":512},[324,3166,516],{"class":508},[324,3168,519],{"class":504},[324,3170,522],{"class":508},[324,3172,3173,3175,3177,3179,3181,3183,3185],{"class":326,"line":358},[324,3174,527],{"class":504},[324,3176,683],{"class":500},[324,3178,533],{"class":508},[324,3180,617],{"class":496},[324,3182,501],{"class":539},[324,3184,513],{"class":500},[324,3186,577],{"class":539},[324,3188,3189,3191,3193,3195,3197,3199,3201],{"class":326,"line":364},[324,3190,527],{"class":504},[324,3192,700],{"class":500},[324,3194,533],{"class":508},[324,3196,640],{"class":496},[324,3198,501],{"class":539},[324,3200,709],{"class":500},[324,3202,577],{"class":539},[324,3204,3205],{"class":326,"line":370},[324,3206,337],{"emptyLinePlaceholder":336},[324,3208,3209,3211,3213,3216,3218,3221,3223,3225,3227,3229,3231],{"class":326,"line":376},[324,3210,527],{"class":504},[324,3212,614],{"class":508},[324,3214,3215],{"class":500}," embedding",[324,3217,1344],{"class":508},[324,3219,3220],{"class":500}," usage",[324,3222,620],{"class":508},[324,3224,533],{"class":508},[324,3226,1778],{"class":489},[324,3228,3094],{"class":496},[324,3230,501],{"class":539},[324,3232,542],{"class":508},[324,3234,3235,3237,3239,3242,3244,3247,3249,3251,3254,3256,3258],{"class":326,"line":382},[324,3236,547],{"class":539},[324,3238,550],{"class":508},[324,3240,3241],{"class":500}," openai",[324,3243,587],{"class":508},[324,3245,3246],{"class":496},"embedding",[324,3248,501],{"class":539},[324,3250,559],{"class":508},[324,3252,3253],{"class":435},"text-embedding-3-small",[324,3255,559],{"class":508},[324,3257,516],{"class":539},[324,3259,562],{"class":508},[324,3261,3262,3265,3267,3270],{"class":326,"line":388},[324,3263,3264],{"class":539},"    value",[324,3266,550],{"class":508},[324,3268,3269],{"class":500}," query",[324,3271,562],{"class":508},[324,3273,3274,3276],{"class":326,"line":394},[324,3275,574],{"class":508},[324,3277,577],{"class":539},[324,3279,3280,3283,3285,3287,3289],{"class":326,"line":399},[324,3281,3282],{"class":500},"  ai",[324,3284,587],{"class":508},[324,3286,3078],{"class":496},[324,3288,501],{"class":539},[324,3290,542],{"class":508},[324,3292,3293,3296],{"class":326,"line":405},[324,3294,3295],{"class":500},"    usage",[324,3297,562],{"class":508},[324,3299,3300,3302,3304,3306,3308,3310],{"class":326,"line":1036},[324,3301,547],{"class":539},[324,3303,550],{"class":508},[324,3305,553],{"class":508},[324,3307,3253],{"class":435},[324,3309,559],{"class":508},[324,3311,562],{"class":508},[324,3313,3314,3317,3319,3322],{"class":326,"line":1053},[324,3315,3316],{"class":539},"    dimensions",[324,3318,550],{"class":508},[324,3320,3321],{"class":856}," 1536",[324,3323,562],{"class":508},[324,3325,3326,3328],{"class":326,"line":1070},[324,3327,574],{"class":508},[324,3329,577],{"class":539},[324,3331,3332],{"class":326,"line":1085},[324,3333,337],{"emptyLinePlaceholder":336},[324,3335,3336,3338,3341,3343,3345,3348,3350,3352],{"class":326,"line":1091},[324,3337,527],{"class":504},[324,3339,3340],{"class":500}," docs",[324,3342,533],{"class":508},[324,3344,1778],{"class":489},[324,3346,3347],{"class":496}," findSimilar",[324,3349,501],{"class":539},[324,3351,3246],{"class":500},[324,3353,577],{"class":539},[324,3355,3356],{"class":326,"line":1567},[324,3357,337],{"emptyLinePlaceholder":336},[324,3359,3360,3362,3364,3366,3368,3370,3372],{"class":326,"line":1577},[324,3361,527],{"class":504},[324,3363,530],{"class":500},[324,3365,533],{"class":508},[324,3367,1778],{"class":489},[324,3369,1974],{"class":496},[324,3371,501],{"class":539},[324,3373,542],{"class":508},[324,3375,3376,3378,3380,3382,3384,3386,3388,3390,3392,3394,3396],{"class":326,"line":1612},[324,3377,547],{"class":539},[324,3379,550],{"class":508},[324,3381,700],{"class":500},[324,3383,587],{"class":508},[324,3385,742],{"class":496},[324,3387,501],{"class":539},[324,3389,559],{"class":508},[324,3391,556],{"class":435},[324,3393,559],{"class":508},[324,3395,516],{"class":539},[324,3397,562],{"class":508},[324,3399,3400,3402,3404,3407,3409,3412,3414],{"class":326,"line":1644},[324,3401,2109],{"class":539},[324,3403,550],{"class":508},[324,3405,3406],{"class":496}," buildPrompt",[324,3408,501],{"class":539},[324,3410,3411],{"class":500},"docs",[324,3413,516],{"class":539},[324,3415,562],{"class":508},[324,3417,3418,3420],{"class":326,"line":1649},[324,3419,574],{"class":508},[324,3421,577],{"class":539},[324,3423,3424],{"class":326,"line":3061},[324,3425,337],{"emptyLinePlaceholder":336},[324,3427,3428,3430,3432,3434,3436,3438,3440,3442],{"class":326,"line":3066},[324,3429,582],{"class":489},[324,3431,614],{"class":508},[324,3433,1897],{"class":539},[324,3435,550],{"class":508},[324,3437,530],{"class":500},[324,3439,587],{"class":508},[324,3441,1919],{"class":500},[324,3443,1515],{"class":508},[324,3445,3447,3449],{"class":326,"line":3446},27,[324,3448,598],{"class":508},[324,3450,577],{"class":500},[303,3452,3453,3454,3457],{},"For ",[306,3455,3456],{},"embedMany",", pass the batch count:",[314,3459,3461],{"className":479,"code":3460,"language":482,"meta":320,"style":320},"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",[306,3462,3463,3490,3515,3527,3533],{"__ignoreMap":320},[324,3464,3465,3467,3469,3472,3474,3477,3479,3481,3483,3486,3488],{"class":326,"line":327},[324,3466,1330],{"class":504},[324,3468,614],{"class":508},[324,3470,3471],{"class":500}," embeddings",[324,3473,1344],{"class":508},[324,3475,3476],{"class":500}," usage ",[324,3478,598],{"class":508},[324,3480,533],{"class":508},[324,3482,1778],{"class":489},[324,3484,3485],{"class":496}," embedMany",[324,3487,501],{"class":500},[324,3489,542],{"class":508},[324,3491,3492,3495,3497,3499,3501,3503,3505,3507,3509,3511,3513],{"class":326,"line":333},[324,3493,3494],{"class":539},"  model",[324,3496,550],{"class":508},[324,3498,3241],{"class":500},[324,3500,587],{"class":508},[324,3502,3246],{"class":496},[324,3504,501],{"class":500},[324,3506,559],{"class":508},[324,3508,3253],{"class":435},[324,3510,559],{"class":508},[324,3512,516],{"class":500},[324,3514,562],{"class":508},[324,3516,3517,3520,3522,3525],{"class":326,"line":340},[324,3518,3519],{"class":539},"  values",[324,3521,550],{"class":508},[324,3523,3524],{"class":500}," documents",[324,3526,562],{"class":508},[324,3528,3529,3531],{"class":326,"line":346},[324,3530,598],{"class":508},[324,3532,577],{"class":500},[324,3534,3535,3537,3539,3541,3543,3545,3547,3549,3552,3554,3556,3558,3560,3562,3565,3567,3569,3571,3574,3576],{"class":326,"line":352},[324,3536,886],{"class":500},[324,3538,587],{"class":508},[324,3540,3078],{"class":496},[324,3542,501],{"class":500},[324,3544,1806],{"class":508},[324,3546,3220],{"class":500},[324,3548,1344],{"class":508},[324,3550,3551],{"class":539}," model",[324,3553,550],{"class":508},[324,3555,553],{"class":508},[324,3557,3253],{"class":435},[324,3559,559],{"class":508},[324,3561,1344],{"class":508},[324,3563,3564],{"class":539}," count",[324,3566,550],{"class":508},[324,3568,3524],{"class":500},[324,3570,587],{"class":508},[324,3572,3573],{"class":500},"length ",[324,3575,598],{"class":508},[324,3577,577],{"class":500},[1181,3579,3581],{"id":3580},"multiple-models","Multiple models",[303,3583,3584,3585,3587,3588,3591],{},"Wrap each model separately, they share the same accumulator. When multiple models are used, the wide event includes both ",[306,3586,916],{}," (last model) and ",[306,3589,3590],{},"models"," (all unique models):",[418,3593,3594,3746],{},[314,3595,3597],{"className":479,"code":3596,"filename":1317,"language":482,"meta":320,"style":320},"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",[306,3598,3599,3612,3616,3642,3667,3671,3709],{"__ignoreMap":320},[324,3600,3601,3603,3605,3607,3609],{"class":326,"line":327},[324,3602,1330],{"class":504},[324,3604,1333],{"class":500},[324,3606,1336],{"class":508},[324,3608,640],{"class":496},[324,3610,3611],{"class":500},"(log)\n",[324,3613,3614],{"class":326,"line":333},[324,3615,337],{"emptyLinePlaceholder":336},[324,3617,3618,3620,3623,3625,3627,3629,3631,3633,3635,3638,3640],{"class":326,"line":340},[324,3619,1330],{"class":504},[324,3621,3622],{"class":500}," fast ",[324,3624,1336],{"class":508},[324,3626,700],{"class":500},[324,3628,587],{"class":508},[324,3630,742],{"class":496},[324,3632,501],{"class":500},[324,3634,559],{"class":508},[324,3636,3637],{"class":435},"anthropic\u002Fclaude-haiku-4.5",[324,3639,559],{"class":508},[324,3641,577],{"class":500},[324,3643,3644,3646,3649,3651,3653,3655,3657,3659,3661,3663,3665],{"class":326,"line":346},[324,3645,1330],{"class":504},[324,3647,3648],{"class":500}," smart ",[324,3650,1336],{"class":508},[324,3652,700],{"class":500},[324,3654,587],{"class":508},[324,3656,742],{"class":496},[324,3658,501],{"class":500},[324,3660,559],{"class":508},[324,3662,556],{"class":435},[324,3664,559],{"class":508},[324,3666,577],{"class":500},[324,3668,3669],{"class":326,"line":352},[324,3670,337],{"emptyLinePlaceholder":336},[324,3672,3673,3675,3678,3680,3682,3684,3686,3688,3690,3692,3695,3697,3700,3702,3705,3707],{"class":326,"line":358},[324,3674,1330],{"class":504},[324,3676,3677],{"class":500}," classification ",[324,3679,1336],{"class":508},[324,3681,1778],{"class":489},[324,3683,1974],{"class":496},[324,3685,501],{"class":500},[324,3687,1806],{"class":508},[324,3689,3551],{"class":539},[324,3691,550],{"class":508},[324,3693,3694],{"class":500}," fast",[324,3696,1344],{"class":508},[324,3698,3699],{"class":539}," prompt",[324,3701,550],{"class":508},[324,3703,3704],{"class":500}," classifyPrompt ",[324,3706,598],{"class":508},[324,3708,577],{"class":500},[324,3710,3711,3713,3716,3718,3720,3722,3724,3726,3728,3730,3733,3735,3737,3739,3742,3744],{"class":326,"line":364},[324,3712,1330],{"class":504},[324,3714,3715],{"class":500}," response ",[324,3717,1336],{"class":508},[324,3719,1778],{"class":489},[324,3721,1974],{"class":496},[324,3723,501],{"class":500},[324,3725,1806],{"class":508},[324,3727,3551],{"class":539},[324,3729,550],{"class":508},[324,3731,3732],{"class":500}," smart",[324,3734,1344],{"class":508},[324,3736,3699],{"class":539},[324,3738,550],{"class":508},[324,3740,3741],{"class":500}," detailedPrompt ",[324,3743,598],{"class":508},[324,3745,577],{"class":500},[314,3747,3749],{"className":790,"code":3748,"filename":792,"language":793,"meta":320,"style":320},"{\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",[306,3750,3751,3755,3767,3782,3800,3830,3848,3863,3877,3890,3894],{"__ignoreMap":320},[324,3752,3753],{"class":326,"line":327},[324,3754,542],{"class":508},[324,3756,3757,3759,3761,3763,3765],{"class":326,"line":333},[324,3758,804],{"class":508},[324,3760,886],{"class":504},[324,3762,810],{"class":508},[324,3764,550],{"class":508},[324,3766,522],{"class":508},[324,3768,3769,3771,3773,3775,3777,3780],{"class":326,"line":340},[324,3770,897],{"class":508},[324,3772,900],{"class":432},[324,3774,810],{"class":508},[324,3776,550],{"class":508},[324,3778,3779],{"class":856}," 2",[324,3781,562],{"class":508},[324,3783,3784,3786,3788,3790,3792,3794,3796,3798],{"class":326,"line":346},[324,3785,897],{"class":508},[324,3787,916],{"class":432},[324,3789,810],{"class":508},[324,3791,550],{"class":508},[324,3793,815],{"class":508},[324,3795,925],{"class":435},[324,3797,810],{"class":508},[324,3799,562],{"class":508},[324,3801,3802,3804,3806,3808,3810,3812,3814,3817,3819,3821,3823,3825,3827],{"class":326,"line":352},[324,3803,897],{"class":508},[324,3805,3590],{"class":432},[324,3807,810],{"class":508},[324,3809,550],{"class":508},[324,3811,2881],{"class":508},[324,3813,810],{"class":508},[324,3815,3816],{"class":435},"claude-haiku-4.5",[324,3818,810],{"class":508},[324,3820,1344],{"class":508},[324,3822,815],{"class":508},[324,3824,925],{"class":435},[324,3826,810],{"class":508},[324,3828,3829],{"class":508},"],\n",[324,3831,3832,3834,3836,3838,3840,3842,3844,3846],{"class":326,"line":358},[324,3833,897],{"class":508},[324,3835,936],{"class":432},[324,3837,810],{"class":508},[324,3839,550],{"class":508},[324,3841,815],{"class":508},[324,3843,945],{"class":435},[324,3845,810],{"class":508},[324,3847,562],{"class":508},[324,3849,3850,3852,3854,3856,3858,3861],{"class":326,"line":364},[324,3851,897],{"class":508},[324,3853,956],{"class":432},[324,3855,810],{"class":508},[324,3857,550],{"class":508},[324,3859,3860],{"class":856}," 450",[324,3862,562],{"class":508},[324,3864,3865,3867,3869,3871,3873,3875],{"class":326,"line":370},[324,3866,897],{"class":508},[324,3868,972],{"class":432},[324,3870,810],{"class":508},[324,3872,550],{"class":508},[324,3874,2868],{"class":856},[324,3876,562],{"class":508},[324,3878,3879,3881,3883,3885,3887],{"class":326,"line":376},[324,3880,897],{"class":508},[324,3882,988],{"class":432},[324,3884,810],{"class":508},[324,3886,550],{"class":508},[324,3888,3889],{"class":856}," 750\n",[324,3891,3892],{"class":326,"line":382},[324,3893,1088],{"class":508},[324,3895,3896],{"class":326,"line":388},[324,3897,1094],{"class":508},[1181,3899,3901],{"id":3900},"model-object-support","Model object support",[303,3903,3904,3907],{},[306,3905,3906],{},"wrap()"," also accepts model objects from provider SDKs if you prefer explicit imports:",[314,3909,3911],{"className":479,"code":3910,"filename":1317,"language":482,"meta":320,"style":320},"import { anthropic } from '@ai-sdk\u002Fanthropic'\n\nconst model = ai.wrap(anthropic('claude-sonnet-4.6'))\n",[306,3912,3913,3933,3937],{"__ignoreMap":320},[324,3914,3915,3917,3919,3922,3924,3926,3928,3931],{"class":326,"line":327},[324,3916,611],{"class":489},[324,3918,614],{"class":508},[324,3920,3921],{"class":500}," anthropic",[324,3923,620],{"class":508},[324,3925,623],{"class":489},[324,3927,553],{"class":508},[324,3929,3930],{"class":435},"@ai-sdk\u002Fanthropic",[324,3932,631],{"class":508},[324,3934,3935],{"class":326,"line":333},[324,3936,337],{"emptyLinePlaceholder":336},[324,3938,3939,3941,3944,3946,3948,3950,3952,3954,3956,3958,3960,3962,3964],{"class":326,"line":340},[324,3940,1330],{"class":504},[324,3942,3943],{"class":500}," model ",[324,3945,1336],{"class":508},[324,3947,700],{"class":500},[324,3949,587],{"class":508},[324,3951,742],{"class":496},[324,3953,501],{"class":500},[324,3955,945],{"class":496},[324,3957,501],{"class":500},[324,3959,559],{"class":508},[324,3961,925],{"class":435},[324,3963,559],{"class":508},[324,3965,3966],{"class":500},"))\n",[410,3968,3970],{"id":3969},"telemetry-integration","Telemetry Integration",[303,3972,3973,3974,3977,3978,3981],{},"For deeper observability — tool execution timing, success\u002Ffailure tracking, and total generation wall time — use ",[306,3975,3976],{},"createEvlogIntegration()",". It implements the AI SDK's ",[306,3979,3980],{},"TelemetryIntegration"," interface and captures data that middleware alone cannot see.",[1181,3983,3985],{"id":3984},"combined-with-middleware-recommended","Combined with middleware (recommended)",[303,3987,3988,3989,3991,3992,3995],{},"When passed an ",[306,3990,1107],{},", the integration shares its accumulator. Both paths write to the same ",[306,3993,3994],{},"ai.*"," field:",[314,3997,3999],{"className":479,"code":3998,"filename":2165,"language":482,"meta":320,"style":320},"import { generateText } from 'ai'\nimport { createAILogger, createEvlogIntegration } 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    tools: { getWeather, searchDB },\n    experimental_telemetry: {\n      isEnabled: true,\n      integrations: [createEvlogIntegration(ai)],\n    },\n  })\n\n  return { text: result.text }\n})\n",[306,4000,4001,4019,4042,4046,4068,4084,4100,4104,4120,4144,4162,4171,4182,4203,4207,4213,4217,4235],{"__ignoreMap":320},[324,4002,4003,4005,4007,4009,4011,4013,4015,4017],{"class":326,"line":327},[324,4004,611],{"class":489},[324,4006,614],{"class":508},[324,4008,1974],{"class":500},[324,4010,620],{"class":508},[324,4012,623],{"class":489},[324,4014,553],{"class":508},[324,4016,886],{"class":435},[324,4018,631],{"class":508},[324,4020,4021,4023,4025,4027,4029,4032,4034,4036,4038,4040],{"class":326,"line":333},[324,4022,611],{"class":489},[324,4024,614],{"class":508},[324,4026,640],{"class":500},[324,4028,1344],{"class":508},[324,4030,4031],{"class":500}," createEvlogIntegration",[324,4033,620],{"class":508},[324,4035,623],{"class":489},[324,4037,553],{"class":508},[324,4039,308],{"class":435},[324,4041,631],{"class":508},[324,4043,4044],{"class":326,"line":340},[324,4045,337],{"emptyLinePlaceholder":336},[324,4047,4048,4050,4052,4054,4056,4058,4060,4062,4064,4066],{"class":326,"line":346},[324,4049,490],{"class":489},[324,4051,493],{"class":489},[324,4053,497],{"class":496},[324,4055,501],{"class":500},[324,4057,505],{"class":504},[324,4059,509],{"class":508},[324,4061,513],{"class":512},[324,4063,516],{"class":508},[324,4065,519],{"class":504},[324,4067,522],{"class":508},[324,4069,4070,4072,4074,4076,4078,4080,4082],{"class":326,"line":352},[324,4071,527],{"class":504},[324,4073,683],{"class":500},[324,4075,533],{"class":508},[324,4077,617],{"class":496},[324,4079,501],{"class":539},[324,4081,513],{"class":500},[324,4083,577],{"class":539},[324,4085,4086,4088,4090,4092,4094,4096,4098],{"class":326,"line":358},[324,4087,527],{"class":504},[324,4089,700],{"class":500},[324,4091,533],{"class":508},[324,4093,640],{"class":496},[324,4095,501],{"class":539},[324,4097,709],{"class":500},[324,4099,577],{"class":539},[324,4101,4102],{"class":326,"line":364},[324,4103,337],{"emptyLinePlaceholder":336},[324,4105,4106,4108,4110,4112,4114,4116,4118],{"class":326,"line":370},[324,4107,527],{"class":504},[324,4109,530],{"class":500},[324,4111,533],{"class":508},[324,4113,1778],{"class":489},[324,4115,1974],{"class":496},[324,4117,501],{"class":539},[324,4119,542],{"class":508},[324,4121,4122,4124,4126,4128,4130,4132,4134,4136,4138,4140,4142],{"class":326,"line":376},[324,4123,547],{"class":539},[324,4125,550],{"class":508},[324,4127,700],{"class":500},[324,4129,587],{"class":508},[324,4131,742],{"class":496},[324,4133,501],{"class":539},[324,4135,559],{"class":508},[324,4137,556],{"class":435},[324,4139,559],{"class":508},[324,4141,516],{"class":539},[324,4143,562],{"class":508},[324,4145,4146,4148,4150,4152,4155,4157,4160],{"class":326,"line":382},[324,4147,2388],{"class":539},[324,4149,550],{"class":508},[324,4151,614],{"class":508},[324,4153,4154],{"class":500}," getWeather",[324,4156,1344],{"class":508},[324,4158,4159],{"class":500}," searchDB",[324,4161,1609],{"class":508},[324,4163,4164,4167,4169],{"class":326,"line":388},[324,4165,4166],{"class":539},"    experimental_telemetry",[324,4168,550],{"class":508},[324,4170,522],{"class":508},[324,4172,4173,4176,4178,4180],{"class":326,"line":394},[324,4174,4175],{"class":539},"      isEnabled",[324,4177,550],{"class":508},[324,4179,1355],{"class":1354},[324,4181,562],{"class":508},[324,4183,4184,4187,4189,4191,4194,4196,4198,4201],{"class":326,"line":399},[324,4185,4186],{"class":539},"      integrations",[324,4188,550],{"class":508},[324,4190,2881],{"class":539},[324,4192,4193],{"class":496},"createEvlogIntegration",[324,4195,501],{"class":539},[324,4197,886],{"class":500},[324,4199,4200],{"class":539},")]",[324,4202,562],{"class":508},[324,4204,4205],{"class":326,"line":405},[324,4206,1528],{"class":508},[324,4208,4209,4211],{"class":326,"line":1036},[324,4210,574],{"class":508},[324,4212,577],{"class":539},[324,4214,4215],{"class":326,"line":1053},[324,4216,337],{"emptyLinePlaceholder":336},[324,4218,4219,4221,4223,4225,4227,4229,4231,4233],{"class":326,"line":1070},[324,4220,582],{"class":489},[324,4222,614],{"class":508},[324,4224,1897],{"class":539},[324,4226,550],{"class":508},[324,4228,530],{"class":500},[324,4230,587],{"class":508},[324,4232,1919],{"class":500},[324,4234,1515],{"class":508},[324,4236,4237,4239],{"class":326,"line":1085},[324,4238,598],{"class":508},[324,4240,577],{"class":500},[303,4242,4243],{},"Your wide event now includes tool execution details:",[314,4245,4247],{"className":790,"code":4246,"filename":792,"language":793,"meta":320,"style":320},"{\n  \"ai\": {\n    \"calls\": 2,\n    \"steps\": 2,\n    \"model\": \"claude-sonnet-4.6\",\n    \"provider\": \"anthropic\",\n    \"inputTokens\": 3500,\n    \"outputTokens\": 800,\n    \"totalTokens\": 4300,\n    \"toolCalls\": [\"getWeather\", \"searchDB\"],\n    \"tools\": [\n      { \"name\": \"getWeather\", \"durationMs\": 150, \"success\": true },\n      { \"name\": \"searchDB\", \"durationMs\": 45, \"success\": true }\n    ],\n    \"totalDurationMs\": 2340,\n    \"msToFirstChunk\": 180,\n    \"msToFinish\": 2100,\n    \"tokensPerSecond\": 380\n  }\n}\n",[306,4248,4249,4253,4265,4279,4293,4311,4329,4344,4359,4374,4404,4417,4464,4509,4513,4529,4544,4559,4572,4576],{"__ignoreMap":320},[324,4250,4251],{"class":326,"line":327},[324,4252,542],{"class":508},[324,4254,4255,4257,4259,4261,4263],{"class":326,"line":333},[324,4256,804],{"class":508},[324,4258,886],{"class":504},[324,4260,810],{"class":508},[324,4262,550],{"class":508},[324,4264,522],{"class":508},[324,4266,4267,4269,4271,4273,4275,4277],{"class":326,"line":340},[324,4268,897],{"class":508},[324,4270,900],{"class":432},[324,4272,810],{"class":508},[324,4274,550],{"class":508},[324,4276,3779],{"class":856},[324,4278,562],{"class":508},[324,4280,4281,4283,4285,4287,4289,4291],{"class":326,"line":346},[324,4282,897],{"class":508},[324,4284,2515],{"class":432},[324,4286,810],{"class":508},[324,4288,550],{"class":508},[324,4290,3779],{"class":856},[324,4292,562],{"class":508},[324,4294,4295,4297,4299,4301,4303,4305,4307,4309],{"class":326,"line":352},[324,4296,897],{"class":508},[324,4298,916],{"class":432},[324,4300,810],{"class":508},[324,4302,550],{"class":508},[324,4304,815],{"class":508},[324,4306,925],{"class":435},[324,4308,810],{"class":508},[324,4310,562],{"class":508},[324,4312,4313,4315,4317,4319,4321,4323,4325,4327],{"class":326,"line":358},[324,4314,897],{"class":508},[324,4316,936],{"class":432},[324,4318,810],{"class":508},[324,4320,550],{"class":508},[324,4322,815],{"class":508},[324,4324,945],{"class":435},[324,4326,810],{"class":508},[324,4328,562],{"class":508},[324,4330,4331,4333,4335,4337,4339,4342],{"class":326,"line":364},[324,4332,897],{"class":508},[324,4334,956],{"class":432},[324,4336,810],{"class":508},[324,4338,550],{"class":508},[324,4340,4341],{"class":856}," 3500",[324,4343,562],{"class":508},[324,4345,4346,4348,4350,4352,4354,4357],{"class":326,"line":370},[324,4347,897],{"class":508},[324,4349,972],{"class":432},[324,4351,810],{"class":508},[324,4353,550],{"class":508},[324,4355,4356],{"class":856}," 800",[324,4358,562],{"class":508},[324,4360,4361,4363,4365,4367,4369,4372],{"class":326,"line":376},[324,4362,897],{"class":508},[324,4364,988],{"class":432},[324,4366,810],{"class":508},[324,4368,550],{"class":508},[324,4370,4371],{"class":856}," 4300",[324,4373,562],{"class":508},[324,4375,4376,4378,4380,4382,4384,4386,4388,4391,4393,4395,4397,4400,4402],{"class":326,"line":382},[324,4377,897],{"class":508},[324,4379,1226],{"class":432},[324,4381,810],{"class":508},[324,4383,550],{"class":508},[324,4385,2881],{"class":508},[324,4387,810],{"class":508},[324,4389,4390],{"class":435},"getWeather",[324,4392,810],{"class":508},[324,4394,1344],{"class":508},[324,4396,815],{"class":508},[324,4398,4399],{"class":435},"searchDB",[324,4401,810],{"class":508},[324,4403,3829],{"class":508},[324,4405,4406,4408,4411,4413,4415],{"class":326,"line":388},[324,4407,897],{"class":508},[324,4409,4410],{"class":432},"tools",[324,4412,810],{"class":508},[324,4414,550],{"class":508},[324,4416,2634],{"class":508},[324,4418,4419,4421,4423,4425,4427,4429,4431,4433,4435,4437,4439,4442,4444,4446,4449,4451,4453,4456,4458,4460,4462],{"class":326,"line":394},[324,4420,2639],{"class":508},[324,4422,815],{"class":508},[324,4424,2644],{"class":856},[324,4426,810],{"class":508},[324,4428,550],{"class":508},[324,4430,815],{"class":508},[324,4432,4390],{"class":435},[324,4434,810],{"class":508},[324,4436,1344],{"class":508},[324,4438,815],{"class":508},[324,4440,4441],{"class":856},"durationMs",[324,4443,810],{"class":508},[324,4445,550],{"class":508},[324,4447,4448],{"class":856}," 150",[324,4450,1344],{"class":508},[324,4452,815],{"class":508},[324,4454,4455],{"class":856},"success",[324,4457,810],{"class":508},[324,4459,550],{"class":508},[324,4461,1355],{"class":508},[324,4463,1609],{"class":508},[324,4465,4466,4468,4470,4472,4474,4476,4478,4480,4482,4484,4486,4488,4490,4492,4495,4497,4499,4501,4503,4505,4507],{"class":326,"line":399},[324,4467,2639],{"class":508},[324,4469,815],{"class":508},[324,4471,2644],{"class":856},[324,4473,810],{"class":508},[324,4475,550],{"class":508},[324,4477,815],{"class":508},[324,4479,4399],{"class":435},[324,4481,810],{"class":508},[324,4483,1344],{"class":508},[324,4485,815],{"class":508},[324,4487,4441],{"class":856},[324,4489,810],{"class":508},[324,4491,550],{"class":508},[324,4493,4494],{"class":856}," 45",[324,4496,1344],{"class":508},[324,4498,815],{"class":508},[324,4500,4455],{"class":856},[324,4502,810],{"class":508},[324,4504,550],{"class":508},[324,4506,1355],{"class":508},[324,4508,1515],{"class":508},[324,4510,4511],{"class":326,"line":405},[324,4512,2792],{"class":508},[324,4514,4515,4517,4520,4522,4524,4527],{"class":326,"line":1036},[324,4516,897],{"class":508},[324,4518,4519],{"class":432},"totalDurationMs",[324,4521,810],{"class":508},[324,4523,550],{"class":508},[324,4525,4526],{"class":856}," 2340",[324,4528,562],{"class":508},[324,4530,4531,4533,4535,4537,4539,4542],{"class":326,"line":1053},[324,4532,897],{"class":508},[324,4534,1041],{"class":432},[324,4536,810],{"class":508},[324,4538,550],{"class":508},[324,4540,4541],{"class":856}," 180",[324,4543,562],{"class":508},[324,4545,4546,4548,4550,4552,4554,4557],{"class":326,"line":1070},[324,4547,897],{"class":508},[324,4549,1058],{"class":432},[324,4551,810],{"class":508},[324,4553,550],{"class":508},[324,4555,4556],{"class":856}," 2100",[324,4558,562],{"class":508},[324,4560,4561,4563,4565,4567,4569],{"class":326,"line":1085},[324,4562,897],{"class":508},[324,4564,1075],{"class":432},[324,4566,810],{"class":508},[324,4568,550],{"class":508},[324,4570,4571],{"class":856}," 380\n",[324,4573,4574],{"class":326,"line":1091},[324,4575,1088],{"class":508},[324,4577,4578],{"class":326,"line":1567},[324,4579,1094],{"class":508},[1181,4581,4583],{"id":4582},"standalone-without-middleware","Standalone (without middleware)",[303,4585,4586],{},"If your model is already wrapped (e.g. by another middleware), pass the request logger directly:",[314,4588,4590],{"className":479,"code":4589,"filename":1317,"language":482,"meta":320,"style":320},"import { createEvlogIntegration } from 'evlog\u002Fai'\n\nconst integration = createEvlogIntegration(log)\n\nconst result = await generateText({\n  model: somePreWrappedModel,\n  experimental_telemetry: {\n    isEnabled: true,\n    integrations: [integration],\n  },\n})\n",[306,4591,4592,4610,4614,4627,4631,4648,4659,4668,4679,4691,4695],{"__ignoreMap":320},[324,4593,4594,4596,4598,4600,4602,4604,4606,4608],{"class":326,"line":327},[324,4595,611],{"class":489},[324,4597,614],{"class":508},[324,4599,4031],{"class":500},[324,4601,620],{"class":508},[324,4603,623],{"class":489},[324,4605,553],{"class":508},[324,4607,308],{"class":435},[324,4609,631],{"class":508},[324,4611,4612],{"class":326,"line":333},[324,4613,337],{"emptyLinePlaceholder":336},[324,4615,4616,4618,4621,4623,4625],{"class":326,"line":340},[324,4617,1330],{"class":504},[324,4619,4620],{"class":500}," integration ",[324,4622,1336],{"class":508},[324,4624,4031],{"class":496},[324,4626,3611],{"class":500},[324,4628,4629],{"class":326,"line":346},[324,4630,337],{"emptyLinePlaceholder":336},[324,4632,4633,4635,4638,4640,4642,4644,4646],{"class":326,"line":352},[324,4634,1330],{"class":504},[324,4636,4637],{"class":500}," result ",[324,4639,1336],{"class":508},[324,4641,1778],{"class":489},[324,4643,1974],{"class":496},[324,4645,501],{"class":500},[324,4647,542],{"class":508},[324,4649,4650,4652,4654,4657],{"class":326,"line":358},[324,4651,3494],{"class":539},[324,4653,550],{"class":508},[324,4655,4656],{"class":500}," somePreWrappedModel",[324,4658,562],{"class":508},[324,4660,4661,4664,4666],{"class":326,"line":364},[324,4662,4663],{"class":539},"  experimental_telemetry",[324,4665,550],{"class":508},[324,4667,522],{"class":508},[324,4669,4670,4673,4675,4677],{"class":326,"line":370},[324,4671,4672],{"class":539},"    isEnabled",[324,4674,550],{"class":508},[324,4676,1355],{"class":1354},[324,4678,562],{"class":508},[324,4680,4681,4684,4686,4689],{"class":326,"line":376},[324,4682,4683],{"class":539},"    integrations",[324,4685,550],{"class":508},[324,4687,4688],{"class":500}," [integration]",[324,4690,562],{"class":508},[324,4692,4693],{"class":326,"line":382},[324,4694,1533],{"class":508},[324,4696,4697,4699],{"class":326,"line":388},[324,4698,598],{"class":508},[324,4700,577],{"class":500},[1181,4702,4704],{"id":4703},"what-the-integration-captures","What the integration captures",[1110,4706,4707,4719],{},[1113,4708,4709],{},[1116,4710,4711,4714,4717],{},[1119,4712,4713],{},"Data",[1119,4715,4716],{},"Source",[1119,4718,1124],{},[1126,4720,4721,4746],{},[1116,4722,4723,4728,4733],{},[1131,4724,4725],{},[306,4726,4727],{},"ai.tools[]",[1131,4729,4730],{},[306,4731,4732],{},"onToolCallFinish",[1131,4734,4735,4736,1150,4738,1150,4740,1154,4742,4745],{},"Per-tool ",[306,4737,2644],{},[306,4739,4441],{},[306,4741,4455],{},[306,4743,4744],{},"error"," (if failed)",[1116,4747,4748,4753,4762],{},[1131,4749,4750],{},[306,4751,4752],{},"ai.totalDurationMs",[1131,4754,4755,4758,4759],{},[306,4756,4757],{},"onStart"," → ",[306,4760,4761],{},"onFinish",[1131,4763,4764],{},"Total wall time from generation start to completion",[303,4766,4767],{},"The middleware captures tokens, model info, and streaming metrics. The integration captures tool execution timing. Together, they give you complete AI observability.",[410,4769,4771],{"id":4770},"captured-data","Captured Data",[1110,4773,4774,4785],{},[1113,4775,4776],{},[1116,4777,4778,4781,4783],{},[1119,4779,4780],{},"Wide event field",[1119,4782,4716],{},[1119,4784,1124],{},[1126,4786,4787,4800,4815,4828,4852,4867,4882,4897,4912,4927,4942,4962,4985,5003,5016,5029,5042,5054,5066,5079,5098,5113,5130],{},[1116,4788,4789,4794,4797],{},[1131,4790,4791],{},[306,4792,4793],{},"ai.calls",[1131,4795,4796],{},"Call count",[1131,4798,4799],{},"Number of AI calls in this request",[1116,4801,4802,4807,4812],{},[1131,4803,4804],{},[306,4805,4806],{},"ai.model",[1131,4808,4809],{},[306,4810,4811],{},"response.modelId",[1131,4813,4814],{},"Model that served the response",[1116,4816,4817,4822,4825],{},[1131,4818,4819],{},[306,4820,4821],{},"ai.models",[1131,4823,4824],{},"All model IDs",[1131,4826,4827],{},"Array of all models used (only when > 1)",[1116,4829,4830,4835,4840],{},[1131,4831,4832],{},[306,4833,4834],{},"ai.provider",[1131,4836,4837],{},[306,4838,4839],{},"model.provider",[1131,4841,4842,4843,1150,4845,1150,4848,4851],{},"Provider (",[306,4844,945],{},[306,4846,4847],{},"openai",[306,4849,4850],{},"google",", etc.)",[1116,4853,4854,4859,4864],{},[1131,4855,4856],{},[306,4857,4858],{},"ai.inputTokens",[1131,4860,4861],{},[306,4862,4863],{},"usage.inputTokens.total",[1131,4865,4866],{},"Total input tokens across all calls",[1116,4868,4869,4874,4879],{},[1131,4870,4871],{},[306,4872,4873],{},"ai.outputTokens",[1131,4875,4876],{},[306,4877,4878],{},"usage.outputTokens.total",[1131,4880,4881],{},"Total output tokens across all calls",[1116,4883,4884,4889,4892],{},[1131,4885,4886],{},[306,4887,4888],{},"ai.totalTokens",[1131,4890,4891],{},"Computed",[1131,4893,4894],{},[306,4895,4896],{},"inputTokens + outputTokens",[1116,4898,4899,4904,4909],{},[1131,4900,4901],{},[306,4902,4903],{},"ai.cacheReadTokens",[1131,4905,4906],{},[306,4907,4908],{},"usage.inputTokens.cacheRead",[1131,4910,4911],{},"Tokens served from prompt cache",[1116,4913,4914,4919,4924],{},[1131,4915,4916],{},[306,4917,4918],{},"ai.cacheWriteTokens",[1131,4920,4921],{},[306,4922,4923],{},"usage.inputTokens.cacheWrite",[1131,4925,4926],{},"Tokens written to prompt cache",[1116,4928,4929,4934,4939],{},[1131,4930,4931],{},[306,4932,4933],{},"ai.reasoningTokens",[1131,4935,4936],{},[306,4937,4938],{},"usage.outputTokens.reasoning",[1131,4940,4941],{},"Reasoning tokens (extended thinking)",[1116,4943,4944,4949,4954],{},[1131,4945,4946],{},[306,4947,4948],{},"ai.finishReason",[1131,4950,4951],{},[306,4952,4953],{},"finishReason.unified",[1131,4955,4956,4957,1150,4959,4851],{},"Why generation ended (",[306,4958,1029],{},[306,4960,4961],{},"tool-calls",[1116,4963,4964,4969,4972],{},[1131,4965,4966],{},[306,4967,4968],{},"ai.toolCalls",[1131,4970,4971],{},"Content \u002F stream chunks",[1131,4973,4974,4977,4978,4981,4982,4984],{},[306,4975,4976],{},"string[]"," of tool names by default, or ",[306,4979,4980],{},"Array\u003C{ name, input }>"," when ",[306,4983,1210],{}," is enabled",[1116,4986,4987,4992,4997],{},[1131,4988,4989],{},[306,4990,4991],{},"ai.responseId",[1131,4993,4994],{},[306,4995,4996],{},"response.id",[1131,4998,4999,5000,516],{},"Provider-assigned response ID (e.g. Anthropic's ",[306,5001,5002],{},"msg_...",[1116,5004,5005,5010,5013],{},[1131,5006,5007],{},[306,5008,5009],{},"ai.steps",[1131,5011,5012],{},"Step count",[1131,5014,5015],{},"Number of LLM calls (only when > 1)",[1116,5017,5018,5023,5026],{},[1131,5019,5020],{},[306,5021,5022],{},"ai.stepsUsage",[1131,5024,5025],{},"Per-step accumulation",[1131,5027,5028],{},"Per-step token and tool call breakdown (only when > 1 step)",[1116,5030,5031,5036,5039],{},[1131,5032,5033],{},[306,5034,5035],{},"ai.msToFirstChunk",[1131,5037,5038],{},"Stream timing",[1131,5040,5041],{},"Time to first text chunk (streaming only)",[1116,5043,5044,5049,5051],{},[1131,5045,5046],{},[306,5047,5048],{},"ai.msToFinish",[1131,5050,5038],{},[1131,5052,5053],{},"Total stream duration (streaming only)",[1116,5055,5056,5061,5063],{},[1131,5057,5058],{},[306,5059,5060],{},"ai.tokensPerSecond",[1131,5062,4891],{},[1131,5064,5065],{},"Output tokens per second (streaming only)",[1116,5067,5068,5073,5076],{},[1131,5069,5070],{},[306,5071,5072],{},"ai.error",[1131,5074,5075],{},"Error capture",[1131,5077,5078],{},"Error message if a model call fails",[1116,5080,5081,5086,5090],{},[1131,5082,5083],{},[306,5084,5085],{},"ai.tools",[1131,5087,5088],{},[306,5089,3980],{},[1131,5091,4735,5092,5095,5096,516],{},[306,5093,5094],{},"{ name, durationMs, success, error? }"," (requires ",[306,5097,4193],{},[1116,5099,5100,5104,5108],{},[1131,5101,5102],{},[306,5103,4752],{},[1131,5105,5106],{},[306,5107,3980],{},[1131,5109,5110,5111,516],{},"Total generation wall time (requires ",[306,5112,4193],{},[1116,5114,5115,5120,5124],{},[1131,5116,5117],{},[306,5118,5119],{},"ai.embedding",[1131,5121,5122],{},[306,5123,3078],{},[1131,5125,5126,5129],{},[306,5127,5128],{},"{ model?, tokens, dimensions?, count? }"," — embedding metadata",[1116,5131,5132,5137,5139],{},[1131,5133,5134],{},[306,5135,5136],{},"ai.estimatedCost",[1131,5138,4891],{},[1131,5140,5141,5142,5144],{},"Estimated cost in dollars (requires ",[306,5143,1238],{}," option)",[410,5146,5148],{"id":5147},"composability","Composability",[303,5150,5151,5154,5155,550],{},[306,5152,5153],{},"ai.wrap()"," works with models that are already wrapped by other tools. If you use supermemory, guardrails middleware, or any other model wrapper, pass the wrapped model to ",[306,5156,5153],{},[314,5158,5160],{"className":479,"code":5159,"filename":1317,"language":482,"meta":320,"style":320},"import { createAILogger } from 'evlog\u002Fai'\nimport { withSupermemory } from '@supermemory\u002Ftools\u002Fai-sdk'\nimport { createGateway } from 'ai'\n\nconst gateway = createGateway({ ... })\nconst ai = createAILogger(log)\nconst base = gateway('anthropic\u002Fclaude-sonnet-4.6')\nconst model = ai.wrap(withSupermemory(base, 'your-org-id', { mode: 'full' }))\n",[306,5161,5162,5180,5200,5219,5223,5245,5257,5279],{"__ignoreMap":320},[324,5163,5164,5166,5168,5170,5172,5174,5176,5178],{"class":326,"line":327},[324,5165,611],{"class":489},[324,5167,614],{"class":508},[324,5169,640],{"class":500},[324,5171,620],{"class":508},[324,5173,623],{"class":489},[324,5175,553],{"class":508},[324,5177,308],{"class":435},[324,5179,631],{"class":508},[324,5181,5182,5184,5186,5189,5191,5193,5195,5198],{"class":326,"line":333},[324,5183,611],{"class":489},[324,5185,614],{"class":508},[324,5187,5188],{"class":500}," withSupermemory",[324,5190,620],{"class":508},[324,5192,623],{"class":489},[324,5194,553],{"class":508},[324,5196,5197],{"class":435},"@supermemory\u002Ftools\u002Fai-sdk",[324,5199,631],{"class":508},[324,5201,5202,5204,5206,5209,5211,5213,5215,5217],{"class":326,"line":340},[324,5203,611],{"class":489},[324,5205,614],{"class":508},[324,5207,5208],{"class":500}," createGateway",[324,5210,620],{"class":508},[324,5212,623],{"class":489},[324,5214,553],{"class":508},[324,5216,886],{"class":435},[324,5218,631],{"class":508},[324,5220,5221],{"class":326,"line":346},[324,5222,337],{"emptyLinePlaceholder":336},[324,5224,5225,5227,5230,5232,5234,5236,5238,5241,5243],{"class":326,"line":352},[324,5226,1330],{"class":504},[324,5228,5229],{"class":500}," gateway ",[324,5231,1336],{"class":508},[324,5233,5208],{"class":496},[324,5235,501],{"class":500},[324,5237,1806],{"class":508},[324,5239,5240],{"class":508}," ...",[324,5242,620],{"class":508},[324,5244,577],{"class":500},[324,5246,5247,5249,5251,5253,5255],{"class":326,"line":358},[324,5248,1330],{"class":504},[324,5250,1333],{"class":500},[324,5252,1336],{"class":508},[324,5254,640],{"class":496},[324,5256,3611],{"class":500},[324,5258,5259,5261,5264,5266,5269,5271,5273,5275,5277],{"class":326,"line":364},[324,5260,1330],{"class":504},[324,5262,5263],{"class":500}," base ",[324,5265,1336],{"class":508},[324,5267,5268],{"class":496}," gateway",[324,5270,501],{"class":500},[324,5272,559],{"class":508},[324,5274,556],{"class":435},[324,5276,559],{"class":508},[324,5278,577],{"class":500},[324,5280,5281,5283,5285,5287,5289,5291,5293,5295,5298,5301,5303,5305,5308,5310,5312,5314,5317,5319,5321,5324,5326,5328],{"class":326,"line":370},[324,5282,1330],{"class":504},[324,5284,3943],{"class":500},[324,5286,1336],{"class":508},[324,5288,700],{"class":500},[324,5290,587],{"class":508},[324,5292,742],{"class":496},[324,5294,501],{"class":500},[324,5296,5297],{"class":496},"withSupermemory",[324,5299,5300],{"class":500},"(base",[324,5302,1344],{"class":508},[324,5304,553],{"class":508},[324,5306,5307],{"class":435},"your-org-id",[324,5309,559],{"class":508},[324,5311,1344],{"class":508},[324,5313,614],{"class":508},[324,5315,5316],{"class":539}," mode",[324,5318,550],{"class":508},[324,5320,553],{"class":508},[324,5322,5323],{"class":435},"full",[324,5325,559],{"class":508},[324,5327,620],{"class":508},[324,5329,3966],{"class":500},[303,5331,5332,5333,5336,5337,550],{},"For explicit middleware composition, use ",[306,5334,5335],{},"createAIMiddleware"," to get the raw middleware and compose it yourself via ",[306,5338,5339],{},"wrapLanguageModel",[314,5341,5343],{"className":479,"code":5342,"filename":1317,"language":482,"meta":320,"style":320},"import { createAIMiddleware } from 'evlog\u002Fai'\nimport { wrapLanguageModel } from 'ai'\n\nconst model = wrapLanguageModel({\n  model: base,\n  middleware: [createAIMiddleware(log, { toolInputs: true }), otherMiddleware],\n})\n",[306,5344,5345,5364,5383,5387,5401,5412,5446],{"__ignoreMap":320},[324,5346,5347,5349,5351,5354,5356,5358,5360,5362],{"class":326,"line":327},[324,5348,611],{"class":489},[324,5350,614],{"class":508},[324,5352,5353],{"class":500}," createAIMiddleware",[324,5355,620],{"class":508},[324,5357,623],{"class":489},[324,5359,553],{"class":508},[324,5361,308],{"class":435},[324,5363,631],{"class":508},[324,5365,5366,5368,5370,5373,5375,5377,5379,5381],{"class":326,"line":333},[324,5367,611],{"class":489},[324,5369,614],{"class":508},[324,5371,5372],{"class":500}," wrapLanguageModel",[324,5374,620],{"class":508},[324,5376,623],{"class":489},[324,5378,553],{"class":508},[324,5380,886],{"class":435},[324,5382,631],{"class":508},[324,5384,5385],{"class":326,"line":340},[324,5386,337],{"emptyLinePlaceholder":336},[324,5388,5389,5391,5393,5395,5397,5399],{"class":326,"line":346},[324,5390,1330],{"class":504},[324,5392,3943],{"class":500},[324,5394,1336],{"class":508},[324,5396,5372],{"class":496},[324,5398,501],{"class":500},[324,5400,542],{"class":508},[324,5402,5403,5405,5407,5410],{"class":326,"line":352},[324,5404,3494],{"class":539},[324,5406,550],{"class":508},[324,5408,5409],{"class":500}," base",[324,5411,562],{"class":508},[324,5413,5414,5417,5419,5421,5423,5425,5427,5429,5431,5433,5435,5437,5439,5441,5444],{"class":326,"line":358},[324,5415,5416],{"class":539},"  middleware",[324,5418,550],{"class":508},[324,5420,2881],{"class":500},[324,5422,5335],{"class":496},[324,5424,1341],{"class":500},[324,5426,1344],{"class":508},[324,5428,614],{"class":508},[324,5430,1349],{"class":539},[324,5432,550],{"class":508},[324,5434,1355],{"class":1354},[324,5436,620],{"class":508},[324,5438,516],{"class":500},[324,5440,1344],{"class":508},[324,5442,5443],{"class":500}," otherMiddleware]",[324,5445,562],{"class":508},[324,5447,5448,5450],{"class":326,"line":364},[324,5449,598],{"class":508},[324,5451,577],{"class":500},[303,5453,5454,5456,5457,5460,5461,5463,5464,5466,5467,5469,5470,5472],{},[306,5455,5335],{}," returns the same middleware that ",[306,5458,5459],{},"createAILogger"," uses internally. The difference: ",[306,5462,5335],{}," does not include ",[306,5465,3078],{}," (embedding models don't use middleware). Use ",[306,5468,5459],{}," for the full API, ",[306,5471,5335],{}," when you need explicit middleware ordering.",[410,5474,5476],{"id":5475},"error-handling","Error Handling",[303,5478,5479],{},"If a model call fails, the middleware captures the error into the wide event before re-throwing:",[314,5481,5483],{"className":790,"code":5482,"filename":792,"language":793,"meta":320,"style":320},"{\n  \"ai\": {\n    \"calls\": 1,\n    \"model\": \"claude-sonnet-4.6\",\n    \"provider\": \"anthropic\",\n    \"finishReason\": \"error\",\n    \"error\": \"API rate limit exceeded\"\n  }\n}\n",[306,5484,5485,5489,5501,5515,5533,5551,5569,5587,5591],{"__ignoreMap":320},[324,5486,5487],{"class":326,"line":327},[324,5488,542],{"class":508},[324,5490,5491,5493,5495,5497,5499],{"class":326,"line":333},[324,5492,804],{"class":508},[324,5494,886],{"class":504},[324,5496,810],{"class":508},[324,5498,550],{"class":508},[324,5500,522],{"class":508},[324,5502,5503,5505,5507,5509,5511,5513],{"class":326,"line":340},[324,5504,897],{"class":508},[324,5506,900],{"class":432},[324,5508,810],{"class":508},[324,5510,550],{"class":508},[324,5512,907],{"class":856},[324,5514,562],{"class":508},[324,5516,5517,5519,5521,5523,5525,5527,5529,5531],{"class":326,"line":346},[324,5518,897],{"class":508},[324,5520,916],{"class":432},[324,5522,810],{"class":508},[324,5524,550],{"class":508},[324,5526,815],{"class":508},[324,5528,925],{"class":435},[324,5530,810],{"class":508},[324,5532,562],{"class":508},[324,5534,5535,5537,5539,5541,5543,5545,5547,5549],{"class":326,"line":352},[324,5536,897],{"class":508},[324,5538,936],{"class":432},[324,5540,810],{"class":508},[324,5542,550],{"class":508},[324,5544,815],{"class":508},[324,5546,945],{"class":435},[324,5548,810],{"class":508},[324,5550,562],{"class":508},[324,5552,5553,5555,5557,5559,5561,5563,5565,5567],{"class":326,"line":358},[324,5554,897],{"class":508},[324,5556,1020],{"class":432},[324,5558,810],{"class":508},[324,5560,550],{"class":508},[324,5562,815],{"class":508},[324,5564,4744],{"class":435},[324,5566,810],{"class":508},[324,5568,562],{"class":508},[324,5570,5571,5573,5575,5577,5579,5581,5584],{"class":326,"line":364},[324,5572,897],{"class":508},[324,5574,4744],{"class":432},[324,5576,810],{"class":508},[324,5578,550],{"class":508},[324,5580,815],{"class":508},[324,5582,5583],{"class":435},"API rate limit exceeded",[324,5585,5586],{"class":508},"\"\n",[324,5588,5589],{"class":326,"line":370},[324,5590,1088],{"class":508},[324,5592,5593],{"class":326,"line":376},[324,5594,1094],{"class":508},[303,5596,5597],{},"Stream errors (e.g. content filter) are also captured from the stream's error chunks.",[410,5599,5601],{"id":5600},"works-with-all-frameworks","Works With All Frameworks",[303,5603,5604,5606],{},[306,5605,308],{}," works with any framework that evlog supports:",[418,5608,5609,5680,5774,5869,5958,6028],{},[314,5610,5612],{"className":479,"code":5611,"filename":125,"language":482,"meta":320,"style":320},"import { useLogger } from 'evlog'\nimport { createAILogger } from 'evlog\u002Fai'\n\nconst log = useLogger(event)\nconst ai = createAILogger(log)\n",[306,5613,5614,5632,5650,5654,5668],{"__ignoreMap":320},[324,5615,5616,5618,5620,5622,5624,5626,5628,5630],{"class":326,"line":327},[324,5617,611],{"class":489},[324,5619,614],{"class":508},[324,5621,617],{"class":500},[324,5623,620],{"class":508},[324,5625,623],{"class":489},[324,5627,553],{"class":508},[324,5629,628],{"class":435},[324,5631,631],{"class":508},[324,5633,5634,5636,5638,5640,5642,5644,5646,5648],{"class":326,"line":333},[324,5635,611],{"class":489},[324,5637,614],{"class":508},[324,5639,640],{"class":500},[324,5641,620],{"class":508},[324,5643,623],{"class":489},[324,5645,553],{"class":508},[324,5647,308],{"class":435},[324,5649,631],{"class":508},[324,5651,5652],{"class":326,"line":340},[324,5653,337],{"emptyLinePlaceholder":336},[324,5655,5656,5658,5661,5663,5665],{"class":326,"line":346},[324,5657,1330],{"class":504},[324,5659,5660],{"class":500}," log ",[324,5662,1336],{"class":508},[324,5664,617],{"class":496},[324,5666,5667],{"class":500},"(event)\n",[324,5669,5670,5672,5674,5676,5678],{"class":326,"line":352},[324,5671,1330],{"class":504},[324,5673,1333],{"class":500},[324,5675,1336],{"class":508},[324,5677,640],{"class":496},[324,5679,3611],{"class":500},[314,5681,5683],{"className":479,"code":5682,"filename":155,"language":482,"meta":320,"style":320},"import { createAILogger } from 'evlog\u002Fai'\n\napp.post('\u002Fapi\u002Fchat', (req, res) => {\n  const ai = createAILogger(req.log)\n  \u002F\u002F ...\n})\n",[306,5684,5685,5703,5707,5743,5763,5768],{"__ignoreMap":320},[324,5686,5687,5689,5691,5693,5695,5697,5699,5701],{"class":326,"line":327},[324,5688,611],{"class":489},[324,5690,614],{"class":508},[324,5692,640],{"class":500},[324,5694,620],{"class":508},[324,5696,623],{"class":489},[324,5698,553],{"class":508},[324,5700,308],{"class":435},[324,5702,631],{"class":508},[324,5704,5705],{"class":326,"line":333},[324,5706,337],{"emptyLinePlaceholder":336},[324,5708,5709,5712,5714,5717,5719,5721,5723,5725,5727,5729,5732,5734,5737,5739,5741],{"class":326,"line":340},[324,5710,5711],{"class":500},"app",[324,5713,587],{"class":508},[324,5715,5716],{"class":496},"post",[324,5718,501],{"class":500},[324,5720,559],{"class":508},[324,5722,838],{"class":435},[324,5724,559],{"class":508},[324,5726,1344],{"class":508},[324,5728,509],{"class":508},[324,5730,5731],{"class":512},"req",[324,5733,1344],{"class":508},[324,5735,5736],{"class":512}," res",[324,5738,516],{"class":508},[324,5740,519],{"class":504},[324,5742,522],{"class":508},[324,5744,5745,5747,5749,5751,5753,5755,5757,5759,5761],{"class":326,"line":346},[324,5746,527],{"class":504},[324,5748,700],{"class":500},[324,5750,533],{"class":508},[324,5752,640],{"class":496},[324,5754,501],{"class":539},[324,5756,5731],{"class":500},[324,5758,587],{"class":508},[324,5760,709],{"class":500},[324,5762,577],{"class":539},[324,5764,5765],{"class":326,"line":352},[324,5766,5767],{"class":1324},"  \u002F\u002F ...\n",[324,5769,5770,5772],{"class":326,"line":358},[324,5771,598],{"class":508},[324,5773,577],{"class":500},[314,5775,5777],{"className":479,"code":5776,"filename":160,"language":482,"meta":320,"style":320},"import { createAILogger } from 'evlog\u002Fai'\n\napp.post('\u002Fapi\u002Fchat', (c) => {\n  const ai = createAILogger(c.get('log'))\n  \u002F\u002F ...\n})\n",[306,5778,5779,5797,5801,5830,5859,5863],{"__ignoreMap":320},[324,5780,5781,5783,5785,5787,5789,5791,5793,5795],{"class":326,"line":327},[324,5782,611],{"class":489},[324,5784,614],{"class":508},[324,5786,640],{"class":500},[324,5788,620],{"class":508},[324,5790,623],{"class":489},[324,5792,553],{"class":508},[324,5794,308],{"class":435},[324,5796,631],{"class":508},[324,5798,5799],{"class":326,"line":333},[324,5800,337],{"emptyLinePlaceholder":336},[324,5802,5803,5805,5807,5809,5811,5813,5815,5817,5819,5821,5824,5826,5828],{"class":326,"line":340},[324,5804,5711],{"class":500},[324,5806,587],{"class":508},[324,5808,5716],{"class":496},[324,5810,501],{"class":500},[324,5812,559],{"class":508},[324,5814,838],{"class":435},[324,5816,559],{"class":508},[324,5818,1344],{"class":508},[324,5820,509],{"class":508},[324,5822,5823],{"class":512},"c",[324,5825,516],{"class":508},[324,5827,519],{"class":504},[324,5829,522],{"class":508},[324,5831,5832,5834,5836,5838,5840,5842,5844,5846,5849,5851,5853,5855,5857],{"class":326,"line":346},[324,5833,527],{"class":504},[324,5835,700],{"class":500},[324,5837,533],{"class":508},[324,5839,640],{"class":496},[324,5841,501],{"class":539},[324,5843,5823],{"class":500},[324,5845,587],{"class":508},[324,5847,5848],{"class":496},"get",[324,5850,501],{"class":539},[324,5852,559],{"class":508},[324,5854,709],{"class":435},[324,5856,559],{"class":508},[324,5858,3966],{"class":539},[324,5860,5861],{"class":326,"line":352},[324,5862,5767],{"class":1324},[324,5864,5865,5867],{"class":326,"line":358},[324,5866,598],{"class":508},[324,5868,577],{"class":500},[314,5870,5872],{"className":479,"code":5871,"filename":165,"language":482,"meta":320,"style":320},"import { createAILogger } from 'evlog\u002Fai'\n\napp.post('\u002Fapi\u002Fchat', async (request) => {\n  const ai = createAILogger(request.log)\n  \u002F\u002F ...\n})\n",[306,5873,5874,5892,5896,5928,5948,5952],{"__ignoreMap":320},[324,5875,5876,5878,5880,5882,5884,5886,5888,5890],{"class":326,"line":327},[324,5877,611],{"class":489},[324,5879,614],{"class":508},[324,5881,640],{"class":500},[324,5883,620],{"class":508},[324,5885,623],{"class":489},[324,5887,553],{"class":508},[324,5889,308],{"class":435},[324,5891,631],{"class":508},[324,5893,5894],{"class":326,"line":333},[324,5895,337],{"emptyLinePlaceholder":336},[324,5897,5898,5900,5902,5904,5906,5908,5910,5912,5914,5917,5919,5922,5924,5926],{"class":326,"line":340},[324,5899,5711],{"class":500},[324,5901,587],{"class":508},[324,5903,5716],{"class":496},[324,5905,501],{"class":500},[324,5907,559],{"class":508},[324,5909,838],{"class":435},[324,5911,559],{"class":508},[324,5913,1344],{"class":508},[324,5915,5916],{"class":504}," async",[324,5918,509],{"class":508},[324,5920,5921],{"class":512},"request",[324,5923,516],{"class":508},[324,5925,519],{"class":504},[324,5927,522],{"class":508},[324,5929,5930,5932,5934,5936,5938,5940,5942,5944,5946],{"class":326,"line":346},[324,5931,527],{"class":504},[324,5933,700],{"class":500},[324,5935,533],{"class":508},[324,5937,640],{"class":496},[324,5939,501],{"class":539},[324,5941,5921],{"class":500},[324,5943,587],{"class":508},[324,5945,709],{"class":500},[324,5947,577],{"class":539},[324,5949,5950],{"class":326,"line":352},[324,5951,5767],{"class":1324},[324,5953,5954,5956],{"class":326,"line":358},[324,5955,598],{"class":508},[324,5957,577],{"class":500},[314,5959,5961],{"className":479,"code":5960,"filename":150,"language":482,"meta":320,"style":320},"import { useLogger } from 'evlog\u002Fnestjs'\nimport { createAILogger } from 'evlog\u002Fai'\n\nconst log = useLogger()\nconst ai = createAILogger(log)\n",[306,5962,5963,5982,6000,6004,6016],{"__ignoreMap":320},[324,5964,5965,5967,5969,5971,5973,5975,5977,5980],{"class":326,"line":327},[324,5966,611],{"class":489},[324,5968,614],{"class":508},[324,5970,617],{"class":500},[324,5972,620],{"class":508},[324,5974,623],{"class":489},[324,5976,553],{"class":508},[324,5978,5979],{"class":435},"evlog\u002Fnestjs",[324,5981,631],{"class":508},[324,5983,5984,5986,5988,5990,5992,5994,5996,5998],{"class":326,"line":333},[324,5985,611],{"class":489},[324,5987,614],{"class":508},[324,5989,640],{"class":500},[324,5991,620],{"class":508},[324,5993,623],{"class":489},[324,5995,553],{"class":508},[324,5997,308],{"class":435},[324,5999,631],{"class":508},[324,6001,6002],{"class":326,"line":340},[324,6003,337],{"emptyLinePlaceholder":336},[324,6005,6006,6008,6010,6012,6014],{"class":326,"line":346},[324,6007,1330],{"class":504},[324,6009,5660],{"class":500},[324,6011,1336],{"class":508},[324,6013,617],{"class":496},[324,6015,593],{"class":500},[324,6017,6018,6020,6022,6024,6026],{"class":326,"line":352},[324,6019,1330],{"class":504},[324,6021,1333],{"class":500},[324,6023,1336],{"class":508},[324,6025,640],{"class":496},[324,6027,3611],{"class":500},[314,6029,6031],{"className":479,"code":6030,"filename":185,"language":482,"meta":320,"style":320},"import { createLogger } from 'evlog'\nimport { createAILogger } from 'evlog\u002Fai'\n\nconst log = createLogger()\nconst ai = createAILogger(log)\n\u002F\u002F ...\nlog.emit()\n",[306,6032,6033,6052,6070,6074,6086,6098,6103],{"__ignoreMap":320},[324,6034,6035,6037,6039,6042,6044,6046,6048,6050],{"class":326,"line":327},[324,6036,611],{"class":489},[324,6038,614],{"class":508},[324,6040,6041],{"class":500}," createLogger",[324,6043,620],{"class":508},[324,6045,623],{"class":489},[324,6047,553],{"class":508},[324,6049,628],{"class":435},[324,6051,631],{"class":508},[324,6053,6054,6056,6058,6060,6062,6064,6066,6068],{"class":326,"line":333},[324,6055,611],{"class":489},[324,6057,614],{"class":508},[324,6059,640],{"class":500},[324,6061,620],{"class":508},[324,6063,623],{"class":489},[324,6065,553],{"class":508},[324,6067,308],{"class":435},[324,6069,631],{"class":508},[324,6071,6072],{"class":326,"line":340},[324,6073,337],{"emptyLinePlaceholder":336},[324,6075,6076,6078,6080,6082,6084],{"class":326,"line":346},[324,6077,1330],{"class":504},[324,6079,5660],{"class":500},[324,6081,1336],{"class":508},[324,6083,6041],{"class":496},[324,6085,593],{"class":500},[324,6087,6088,6090,6092,6094,6096],{"class":326,"line":352},[324,6089,1330],{"class":504},[324,6091,1333],{"class":500},[324,6093,1336],{"class":508},[324,6095,640],{"class":496},[324,6097,3611],{"class":500},[324,6099,6100],{"class":326,"line":358},[324,6101,6102],{"class":1324},"\u002F\u002F ...\n",[324,6104,6105,6107,6109,6112],{"class":326,"line":364},[324,6106,709],{"class":500},[324,6108,587],{"class":508},[324,6110,6111],{"class":496},"emit",[324,6113,593],{"class":500},[6115,6116,6117],"style",{},"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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":320,"searchDepth":333,"depth":333,"links":6119},[6120,6121,6122,6125,6133,6138,6139,6140,6141],{"id":412,"depth":333,"text":413},{"id":471,"depth":333,"text":20},{"id":1097,"depth":333,"text":1098,"children":6123},[6124],{"id":1183,"depth":340,"text":1184},{"id":1656,"depth":333,"text":1657,"children":6126},[6127,6128,6129,6130,6131,6132],{"id":1660,"depth":340,"text":1153},{"id":1956,"depth":340,"text":1149},{"id":2157,"depth":340,"text":2158},{"id":3071,"depth":340,"text":3072},{"id":3580,"depth":340,"text":3581},{"id":3900,"depth":340,"text":3901},{"id":3969,"depth":333,"text":3970,"children":6134},[6135,6136,6137],{"id":3984,"depth":340,"text":3985},{"id":4582,"depth":340,"text":4583},{"id":4703,"depth":340,"text":4704},{"id":4770,"depth":333,"text":4771},{"id":5147,"depth":333,"text":5148},{"id":5475,"depth":333,"text":5476},{"id":5600,"depth":333,"text":5601},"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.","md",[6145,6148],{"label":46,"icon":49,"to":47,"color":6146,"variant":6147},"neutral","subtle",{"label":204,"icon":6149,"to":209,"color":6146,"variant":6147},"i-lucide-plug",{},{"icon":64},{"title":61,"description":6142},"nlG4sJpfU4JF5zjlNHmy3nn0S_umBOFavGdVKYGzqiU",[6155,6157],{"title":56,"path":57,"stem":58,"description":6156,"icon":59,"children":-1},"Capture browser events with structured logging. Same API as the server, with automatic console styling, user identity context, and optional server transport.",{"title":66,"path":67,"stem":68,"description":6158,"icon":69,"children":-1},"Automatically identify users on every request. Every wide event includes who made the request — userId, user profile, and session metadata — with zero manual work.",1776287857064]