[{"data":1,"prerenderedAt":4975},["ShallowReactive",2],{"navigation_docs":3,"-logging-ai-sdk":277,"-logging-ai-sdk-surround":4970},[4,30,65,105,188,247,263],{"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],{"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,"children":69,"page":29},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[70,75,80,85,90,95,100],{"title":71,"path":72,"stem":73,"icon":74},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":76,"path":77,"stem":78,"icon":79},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":81,"path":82,"stem":83,"icon":84},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":86,"path":87,"stem":88,"icon":89},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":91,"path":92,"stem":93,"icon":94},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices","i-lucide-shield-check",{"title":96,"path":97,"stem":98,"icon":99},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance","i-lucide-gauge",{"title":101,"path":102,"stem":103,"icon":104},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":106,"path":107,"stem":108,"children":109,"page":29},"Frameworks","\u002Fframeworks","4.frameworks",[110,114,119,124,129,134,139,144,149,154,159,164,169,174,178,183],{"title":36,"path":111,"stem":112,"icon":113},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":115,"path":116,"stem":117,"icon":118},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":120,"path":121,"stem":122,"icon":123},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":125,"path":126,"stem":127,"icon":128},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":130,"path":131,"stem":132,"icon":133},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":135,"path":136,"stem":137,"icon":138},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":140,"path":141,"stem":142,"icon":143},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":145,"path":146,"stem":147,"icon":148},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":150,"path":151,"stem":152,"icon":153},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":155,"path":156,"stem":157,"icon":158},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":160,"path":161,"stem":162,"icon":163},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":165,"path":166,"stem":167,"icon":168},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":170,"path":171,"stem":172,"icon":173},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":175,"path":176,"stem":177,"icon":89},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":179,"path":180,"stem":181,"icon":182},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":184,"path":185,"stem":186,"icon":187},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F15.custom-integration","i-lucide-puzzle",{"title":189,"path":190,"stem":191,"children":192,"page":29},"Adapters","\u002Fadapters","5.adapters",[193,197,202,207,212,217,222,227,232,237,242],{"title":36,"path":194,"stem":195,"icon":196},"\u002Fadapters\u002Foverview","5.adapters\u002F1.overview","i-custom-plug",{"title":198,"path":199,"stem":200,"icon":201},"Pipeline","\u002Fadapters\u002Fpipeline","5.adapters\u002F10.pipeline","i-lucide-workflow",{"title":203,"path":204,"stem":205,"icon":206},"Browser","\u002Fadapters\u002Fbrowser","5.adapters\u002F11.browser","i-lucide-globe",{"title":208,"path":209,"stem":210,"icon":211},"Axiom","\u002Fadapters\u002Faxiom","5.adapters\u002F2.axiom","i-custom-axiom",{"title":213,"path":214,"stem":215,"icon":216},"OTLP","\u002Fadapters\u002Fotlp","5.adapters\u002F3.otlp","i-simple-icons-opentelemetry",{"title":218,"path":219,"stem":220,"icon":221},"PostHog","\u002Fadapters\u002Fposthog","5.adapters\u002F4.posthog","i-simple-icons-posthog",{"title":223,"path":224,"stem":225,"icon":226},"Sentry","\u002Fadapters\u002Fsentry","5.adapters\u002F5.sentry","i-simple-icons-sentry",{"title":228,"path":229,"stem":230,"icon":231},"Better Stack","\u002Fadapters\u002Fbetter-stack","5.adapters\u002F6.better-stack","i-simple-icons-betterstack",{"title":233,"path":234,"stem":235,"icon":236},"File System","\u002Fadapters\u002Ffs","5.adapters\u002F7.fs","i-lucide-hard-drive",{"title":238,"path":239,"stem":240,"icon":241},"HyperDX","\u002Fadapters\u002Fhyperdx","5.adapters\u002F8.hyperdx","i-custom-hyperdx",{"title":243,"path":244,"stem":245,"icon":246},"Custom Adapters","\u002Fadapters\u002Fcustom","5.adapters\u002F9.custom","i-lucide-code",{"title":248,"path":249,"stem":250,"children":251,"page":29},"Enrichers","\u002Fenrichers","6.enrichers",[252,255,259],{"title":36,"path":253,"stem":254,"icon":28},"\u002Fenrichers\u002Foverview","6.enrichers\u002F1.overview",{"title":256,"path":257,"stem":258,"icon":187},"Built-in","\u002Fenrichers\u002Fbuilt-in","6.enrichers\u002F2.built-in",{"title":260,"path":261,"stem":262,"icon":246},"Custom","\u002Fenrichers\u002Fcustom","6.enrichers\u002F3.custom",{"title":264,"path":265,"stem":266,"children":267,"page":29},"NuxtHub","\u002Fnuxthub","7.nuxthub",[268,272],{"title":36,"path":269,"stem":270,"icon":271},"\u002Fnuxthub\u002Foverview","7.nuxthub\u002F1.overview","i-lucide-database",{"title":273,"path":274,"stem":275,"icon":276},"Retention","\u002Fnuxthub\u002Fretention","7.nuxthub\u002F2.retention","i-lucide-clock",{"id":278,"title":61,"body":279,"description":4958,"extension":4959,"links":4960,"meta":4966,"navigation":4967,"path":62,"seo":4968,"stem":63,"__hash__":4969},"docs\u002F2.logging\u002F5.ai-sdk.md",{"type":280,"value":281,"toc":4939},"minimark",[282,290,377,382,385,437,440,443,754,757,1065,1069,1079,1153,1156,1161,1208,1215,1266,1492,1496,1499,1502,1794,1797,1800,1995,1999,2002,2313,2316,2914,2918,2925,3262,3266,3276,3583,3587,3593,3652,3656,3964,3968,3976,4149,4159,4272,4293,4297,4300,4416,4419,4423,4428,4935],[283,284,285,289],"p",{},[286,287,288],"code",{},"evlog\u002Fai"," gives you full AI observability by wrapping your model with middleware. Token usage, tool calls, streaming performance, cache hits, reasoning tokens, all captured into the wide event automatically.",[291,292,293],"code-collapse",{},[294,295,301],"pre",{"className":296,"code":297,"filename":298,"language":299,"meta":300,"style":300},"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 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 embedding calls, use ai.captureEmbed({ usage }) after embed() or embedMany()\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","",[286,302,303,311,318,324,330,336,342,348,354,360,365,371],{"__ignoreMap":300},[304,305,308],"span",{"class":306,"line":307},"line",1,[304,309,310],{},"Add AI observability to my app with evlog.\n",[304,312,314],{"class":306,"line":313},2,[304,315,317],{"emptyLinePlaceholder":316},true,"\n",[304,319,321],{"class":306,"line":320},3,[304,322,323],{},"- Install the AI SDK: pnpm add ai\n",[304,325,327],{"class":306,"line":326},4,[304,328,329],{},"- Import createAILogger from 'evlog\u002Fai'\n",[304,331,333],{"class":306,"line":332},5,[304,334,335],{},"- Create an AI logger with createAILogger(log) where log is your request logger\n",[304,337,339],{"class":306,"line":338},6,[304,340,341],{},"- Wrap your model with ai.wrap('anthropic\u002Fclaude-sonnet-4.6') and pass it to generateText, streamText, etc.\n",[304,343,345],{"class":306,"line":344},7,[304,346,347],{},"- Token usage, tool calls, streaming metrics, and errors are captured automatically into the wide event\n",[304,349,351],{"class":306,"line":350},8,[304,352,353],{},"- For embedding calls, use ai.captureEmbed({ usage }) after embed() or embedMany()\n",[304,355,357],{"class":306,"line":356},9,[304,358,359],{},"- Works with all frameworks: Nuxt, Express, Hono, Fastify, NestJS, Elysia, standalone\n",[304,361,363],{"class":306,"line":362},10,[304,364,317],{"emptyLinePlaceholder":316},[304,366,368],{"class":306,"line":367},11,[304,369,370],{},"Docs: https:\u002F\u002Fwww.evlog.dev\u002Flogging\u002Fai-sdk\n",[304,372,374],{"class":306,"line":373},12,[304,375,376],{},"Adapters: https:\u002F\u002Fwww.evlog.dev\u002Fadapters\n",[378,379,381],"h2",{"id":380},"install","Install",[283,383,384],{},"Add the AI SDK as a dependency:",[386,387,388,408,423],"code-group",{},[294,389,394],{"className":390,"code":391,"filename":392,"language":393,"meta":300,"style":300},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm install ai\n","npm","bash",[286,395,396],{"__ignoreMap":300},[304,397,398,401,405],{"class":306,"line":307},[304,399,392],{"class":400},"sBMFI",[304,402,404],{"class":403},"sfazB"," install",[304,406,407],{"class":403}," ai\n",[294,409,412],{"className":390,"code":410,"filename":411,"language":393,"meta":300,"style":300},"bun add ai\n","bun",[286,413,414],{"__ignoreMap":300},[304,415,416,418,421],{"class":306,"line":307},[304,417,411],{"class":400},[304,419,420],{"class":403}," add",[304,422,407],{"class":403},[294,424,427],{"className":390,"code":425,"filename":426,"language":393,"meta":300,"style":300},"pnpm add ai\n","pnpm",[286,428,429],{"__ignoreMap":300},[304,430,431,433,435],{"class":306,"line":307},[304,432,426],{"class":400},[304,434,420],{"class":403},[304,436,407],{"class":403},[378,438,20],{"id":439},"quick-start",[283,441,442],{},"Two lines to add, one param to change:",[386,444,445,569],{},[294,446,451],{"className":447,"code":448,"filename":449,"language":450,"meta":300,"style":300},"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",[286,452,453,491,511,531,538,546,562],{"__ignoreMap":300},[304,454,455,459,462,466,470,474,478,482,485,488],{"class":306,"line":307},[304,456,458],{"class":457},"s7zQu","export",[304,460,461],{"class":457}," default",[304,463,465],{"class":464},"s2Zo4"," defineEventHandler",[304,467,469],{"class":468},"sTEyZ","(",[304,471,473],{"class":472},"spNyl","async",[304,475,477],{"class":476},"sMK4o"," (",[304,479,481],{"class":480},"sHdIc","event",[304,483,484],{"class":476},")",[304,486,487],{"class":472}," =>",[304,489,490],{"class":476}," {\n",[304,492,493,496,499,502,505,508],{"class":306,"line":313},[304,494,495],{"class":472},"  const",[304,497,498],{"class":468}," result",[304,500,501],{"class":476}," =",[304,503,504],{"class":464}," streamText",[304,506,469],{"class":507},"swJcz",[304,509,510],{"class":476},"{\n",[304,512,513,516,519,522,525,528],{"class":306,"line":320},[304,514,515],{"class":507},"    model",[304,517,518],{"class":476},":",[304,520,521],{"class":476}," '",[304,523,524],{"class":403},"anthropic\u002Fclaude-sonnet-4.6",[304,526,527],{"class":476},"'",[304,529,530],{"class":476},",\n",[304,532,533,536],{"class":306,"line":326},[304,534,535],{"class":468},"    messages",[304,537,530],{"class":476},[304,539,540,543],{"class":306,"line":332},[304,541,542],{"class":476},"  }",[304,544,545],{"class":507},")\n",[304,547,548,551,553,556,559],{"class":306,"line":338},[304,549,550],{"class":457},"  return",[304,552,498],{"class":468},[304,554,555],{"class":476},".",[304,557,558],{"class":464},"toTextStreamResponse",[304,560,561],{"class":507},"()\n",[304,563,564,567],{"class":306,"line":344},[304,565,566],{"class":476},"}",[304,568,545],{"class":468},[294,570,573],{"className":447,"code":571,"filename":572,"language":450,"meta":300,"style":300},"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",[286,574,575,600,619,623,645,662,680,684,698,723,729,735,747],{"__ignoreMap":300},[304,576,577,580,583,586,589,592,594,597],{"class":306,"line":307},[304,578,579],{"class":457},"import",[304,581,582],{"class":476}," {",[304,584,585],{"class":468}," useLogger",[304,587,588],{"class":476}," }",[304,590,591],{"class":457}," from",[304,593,521],{"class":476},[304,595,596],{"class":403},"evlog",[304,598,599],{"class":476},"'\n",[304,601,602,604,606,609,611,613,615,617],{"class":306,"line":313},[304,603,579],{"class":457},[304,605,582],{"class":476},[304,607,608],{"class":468}," createAILogger",[304,610,588],{"class":476},[304,612,591],{"class":457},[304,614,521],{"class":476},[304,616,288],{"class":403},[304,618,599],{"class":476},[304,620,621],{"class":306,"line":320},[304,622,317],{"emptyLinePlaceholder":316},[304,624,625,627,629,631,633,635,637,639,641,643],{"class":306,"line":326},[304,626,458],{"class":457},[304,628,461],{"class":457},[304,630,465],{"class":464},[304,632,469],{"class":468},[304,634,473],{"class":472},[304,636,477],{"class":476},[304,638,481],{"class":480},[304,640,484],{"class":476},[304,642,487],{"class":472},[304,644,490],{"class":476},[304,646,647,649,652,654,656,658,660],{"class":306,"line":332},[304,648,495],{"class":472},[304,650,651],{"class":468}," log",[304,653,501],{"class":476},[304,655,585],{"class":464},[304,657,469],{"class":507},[304,659,481],{"class":468},[304,661,545],{"class":507},[304,663,664,666,669,671,673,675,678],{"class":306,"line":338},[304,665,495],{"class":472},[304,667,668],{"class":468}," ai",[304,670,501],{"class":476},[304,672,608],{"class":464},[304,674,469],{"class":507},[304,676,677],{"class":468},"log",[304,679,545],{"class":507},[304,681,682],{"class":306,"line":344},[304,683,317],{"emptyLinePlaceholder":316},[304,685,686,688,690,692,694,696],{"class":306,"line":350},[304,687,495],{"class":472},[304,689,498],{"class":468},[304,691,501],{"class":476},[304,693,504],{"class":464},[304,695,469],{"class":507},[304,697,510],{"class":476},[304,699,700,702,704,706,708,711,713,715,717,719,721],{"class":306,"line":356},[304,701,515],{"class":507},[304,703,518],{"class":476},[304,705,668],{"class":468},[304,707,555],{"class":476},[304,709,710],{"class":464},"wrap",[304,712,469],{"class":507},[304,714,527],{"class":476},[304,716,524],{"class":403},[304,718,527],{"class":476},[304,720,484],{"class":507},[304,722,530],{"class":476},[304,724,725,727],{"class":306,"line":362},[304,726,535],{"class":468},[304,728,530],{"class":476},[304,730,731,733],{"class":306,"line":367},[304,732,542],{"class":476},[304,734,545],{"class":507},[304,736,737,739,741,743,745],{"class":306,"line":373},[304,738,550],{"class":457},[304,740,498],{"class":468},[304,742,555],{"class":476},[304,744,558],{"class":464},[304,746,561],{"class":507},[304,748,750,752],{"class":306,"line":749},13,[304,751,566],{"class":476},[304,753,545],{"class":468},[283,755,756],{},"Your wide event now includes:",[294,758,763],{"className":759,"code":760,"filename":761,"language":762,"meta":300,"style":300},"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",[286,764,765,769,792,812,829,849,862,879,899,919,935,951,967,983,1004,1021,1038,1053,1059],{"__ignoreMap":300},[304,766,767],{"class":306,"line":307},[304,768,510],{"class":476},[304,770,771,774,777,780,782,785,788,790],{"class":306,"line":313},[304,772,773],{"class":476},"  \"",[304,775,776],{"class":472},"method",[304,778,779],{"class":476},"\"",[304,781,518],{"class":476},[304,783,784],{"class":476}," \"",[304,786,787],{"class":403},"POST",[304,789,779],{"class":476},[304,791,530],{"class":476},[304,793,794,796,799,801,803,805,808,810],{"class":306,"line":320},[304,795,773],{"class":476},[304,797,798],{"class":472},"path",[304,800,779],{"class":476},[304,802,518],{"class":476},[304,804,784],{"class":476},[304,806,807],{"class":403},"\u002Fapi\u002Fchat",[304,809,779],{"class":476},[304,811,530],{"class":476},[304,813,814,816,819,821,823,827],{"class":306,"line":326},[304,815,773],{"class":476},[304,817,818],{"class":472},"status",[304,820,779],{"class":476},[304,822,518],{"class":476},[304,824,826],{"class":825},"sbssI"," 200",[304,828,530],{"class":476},[304,830,831,833,836,838,840,842,845,847],{"class":306,"line":332},[304,832,773],{"class":476},[304,834,835],{"class":472},"duration",[304,837,779],{"class":476},[304,839,518],{"class":476},[304,841,784],{"class":476},[304,843,844],{"class":403},"4.5s",[304,846,779],{"class":476},[304,848,530],{"class":476},[304,850,851,853,856,858,860],{"class":306,"line":338},[304,852,773],{"class":476},[304,854,855],{"class":472},"ai",[304,857,779],{"class":476},[304,859,518],{"class":476},[304,861,490],{"class":476},[304,863,864,867,870,872,874,877],{"class":306,"line":344},[304,865,866],{"class":476},"    \"",[304,868,869],{"class":400},"calls",[304,871,779],{"class":476},[304,873,518],{"class":476},[304,875,876],{"class":825}," 1",[304,878,530],{"class":476},[304,880,881,883,886,888,890,892,895,897],{"class":306,"line":350},[304,882,866],{"class":476},[304,884,885],{"class":400},"model",[304,887,779],{"class":476},[304,889,518],{"class":476},[304,891,784],{"class":476},[304,893,894],{"class":403},"claude-sonnet-4.6",[304,896,779],{"class":476},[304,898,530],{"class":476},[304,900,901,903,906,908,910,912,915,917],{"class":306,"line":356},[304,902,866],{"class":476},[304,904,905],{"class":400},"provider",[304,907,779],{"class":476},[304,909,518],{"class":476},[304,911,784],{"class":476},[304,913,914],{"class":403},"anthropic",[304,916,779],{"class":476},[304,918,530],{"class":476},[304,920,921,923,926,928,930,933],{"class":306,"line":362},[304,922,866],{"class":476},[304,924,925],{"class":400},"inputTokens",[304,927,779],{"class":476},[304,929,518],{"class":476},[304,931,932],{"class":825}," 3312",[304,934,530],{"class":476},[304,936,937,939,942,944,946,949],{"class":306,"line":367},[304,938,866],{"class":476},[304,940,941],{"class":400},"outputTokens",[304,943,779],{"class":476},[304,945,518],{"class":476},[304,947,948],{"class":825}," 814",[304,950,530],{"class":476},[304,952,953,955,958,960,962,965],{"class":306,"line":373},[304,954,866],{"class":476},[304,956,957],{"class":400},"totalTokens",[304,959,779],{"class":476},[304,961,518],{"class":476},[304,963,964],{"class":825}," 4126",[304,966,530],{"class":476},[304,968,969,971,974,976,978,981],{"class":306,"line":749},[304,970,866],{"class":476},[304,972,973],{"class":400},"reasoningTokens",[304,975,779],{"class":476},[304,977,518],{"class":476},[304,979,980],{"class":825}," 225",[304,982,530],{"class":476},[304,984,986,988,991,993,995,997,1000,1002],{"class":306,"line":985},14,[304,987,866],{"class":476},[304,989,990],{"class":400},"finishReason",[304,992,779],{"class":476},[304,994,518],{"class":476},[304,996,784],{"class":476},[304,998,999],{"class":403},"stop",[304,1001,779],{"class":476},[304,1003,530],{"class":476},[304,1005,1007,1009,1012,1014,1016,1019],{"class":306,"line":1006},15,[304,1008,866],{"class":476},[304,1010,1011],{"class":400},"msToFirstChunk",[304,1013,779],{"class":476},[304,1015,518],{"class":476},[304,1017,1018],{"class":825}," 234",[304,1020,530],{"class":476},[304,1022,1024,1026,1029,1031,1033,1036],{"class":306,"line":1023},16,[304,1025,866],{"class":476},[304,1027,1028],{"class":400},"msToFinish",[304,1030,779],{"class":476},[304,1032,518],{"class":476},[304,1034,1035],{"class":825}," 4500",[304,1037,530],{"class":476},[304,1039,1041,1043,1046,1048,1050],{"class":306,"line":1040},17,[304,1042,866],{"class":476},[304,1044,1045],{"class":400},"tokensPerSecond",[304,1047,779],{"class":476},[304,1049,518],{"class":476},[304,1051,1052],{"class":825}," 180\n",[304,1054,1056],{"class":306,"line":1055},18,[304,1057,1058],{"class":476},"  }\n",[304,1060,1062],{"class":306,"line":1061},19,[304,1063,1064],{"class":476},"}\n",[378,1066,1068],{"id":1067},"how-it-works","How It Works",[283,1070,1071,1074,1075,1078],{},[286,1072,1073],{},"createAILogger(log, options?)"," returns an ",[286,1076,1077],{},"AILogger"," with two methods:",[1080,1081,1082,1095],"table",{},[1083,1084,1085],"thead",{},[1086,1087,1088,1092],"tr",{},[1089,1090,1091],"th",{},"Method",[1089,1093,1094],{},"Description",[1096,1097,1098,1135],"tbody",{},[1086,1099,1100,1106],{},[1101,1102,1103],"td",{},[286,1104,1105],{},"wrap(model)",[1101,1107,1108,1109,1112,1113,1116,1117,1120,1121,1120,1124,1120,1127,1130,1131,1134],{},"Wraps a language model with middleware. Accepts a model string (e.g. ",[286,1110,1111],{},"'anthropic\u002Fclaude-sonnet-4.6'",") or a ",[286,1114,1115],{},"LanguageModelV3"," object. Works with ",[286,1118,1119],{},"generateText",", ",[286,1122,1123],{},"streamText",[286,1125,1126],{},"generateObject",[286,1128,1129],{},"streamObject",", and ",[286,1132,1133],{},"ToolLoopAgent",". Also works with pre-wrapped models (e.g. from supermemory).",[1086,1136,1137,1142],{},[1101,1138,1139],{},[286,1140,1141],{},"captureEmbed(result)",[1101,1143,1144,1145,1148,1149,1152],{},"Manually captures token usage from ",[286,1146,1147],{},"embed()"," or ",[286,1150,1151],{},"embedMany()"," results (embedding models use a different type).",[283,1154,1155],{},"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.",[1157,1158,1160],"h3",{"id":1159},"options","Options",[1080,1162,1163,1178],{},[1083,1164,1165],{},[1086,1166,1167,1170,1173,1176],{},[1089,1168,1169],{},"Option",[1089,1171,1172],{},"Type",[1089,1174,1175],{},"Default",[1089,1177,1094],{},[1096,1179,1180],{},[1086,1181,1182,1187,1192,1197],{},[1101,1183,1184],{},[286,1185,1186],{},"toolInputs",[1101,1188,1189],{},[286,1190,1191],{},"boolean | ToolInputsOptions",[1101,1193,1194],{},[286,1195,1196],{},"false",[1101,1198,1199,1200,1203,1204,1207],{},"When enabled, ",[286,1201,1202],{},"toolCalls"," contains ",[286,1205,1206],{},"{ name, input }"," objects instead of plain strings. Opt-in because inputs can be large and may contain sensitive data.",[283,1209,1210,1211,1214],{},"Pass ",[286,1212,1213],{},"true"," to capture all inputs as-is, or an options object for fine-grained control:",[1080,1216,1217,1228],{},[1083,1218,1219],{},[1086,1220,1221,1224,1226],{},[1089,1222,1223],{},"Sub-option",[1089,1225,1172],{},[1089,1227,1094],{},[1096,1229,1230,1248],{},[1086,1231,1232,1237,1242],{},[1101,1233,1234],{},[286,1235,1236],{},"maxLength",[1101,1238,1239],{},[286,1240,1241],{},"number",[1101,1243,1244,1245,484],{},"Truncate stringified inputs exceeding this character length (appends ",[286,1246,1247],{},"…",[1086,1249,1250,1255,1260],{},[1101,1251,1252],{},[286,1253,1254],{},"transform",[1101,1256,1257],{},[286,1258,1259],{},"(input, toolName) => unknown",[1101,1261,1262,1263,1265],{},"Custom transform applied before ",[286,1264,1236],{},". Use to redact fields or reshape data.",[294,1267,1270],{"className":447,"code":1268,"filename":1269,"language":450,"meta":300,"style":300},"\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","server\u002Fapi\u002Fchat.post.ts",[286,1271,1272,1278,1312,1316,1321,1356,1360,1365,1381,1390,1402,1425,1468,1476,1481,1486],{"__ignoreMap":300},[304,1273,1274],{"class":306,"line":307},[304,1275,1277],{"class":1276},"sHwdD","\u002F\u002F Capture everything\n",[304,1279,1280,1283,1286,1289,1291,1294,1297,1299,1302,1304,1308,1310],{"class":306,"line":313},[304,1281,1282],{"class":472},"const",[304,1284,1285],{"class":468}," ai ",[304,1287,1288],{"class":476},"=",[304,1290,608],{"class":464},[304,1292,1293],{"class":468},"(log",[304,1295,1296],{"class":476},",",[304,1298,582],{"class":476},[304,1300,1301],{"class":507}," toolInputs",[304,1303,518],{"class":476},[304,1305,1307],{"class":1306},"sfNiH"," true",[304,1309,588],{"class":476},[304,1311,545],{"class":468},[304,1313,1314],{"class":306,"line":320},[304,1315,317],{"emptyLinePlaceholder":316},[304,1317,1318],{"class":306,"line":326},[304,1319,1320],{"class":1276},"\u002F\u002F Truncate long inputs (e.g. SQL queries)\n",[304,1322,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1346,1348,1350,1352,1354],{"class":306,"line":332},[304,1324,1282],{"class":472},[304,1326,1285],{"class":468},[304,1328,1288],{"class":476},[304,1330,608],{"class":464},[304,1332,1293],{"class":468},[304,1334,1296],{"class":476},[304,1336,582],{"class":476},[304,1338,1301],{"class":507},[304,1340,518],{"class":476},[304,1342,582],{"class":476},[304,1344,1345],{"class":507}," maxLength",[304,1347,518],{"class":476},[304,1349,826],{"class":825},[304,1351,588],{"class":476},[304,1353,588],{"class":476},[304,1355,545],{"class":468},[304,1357,1358],{"class":306,"line":338},[304,1359,317],{"emptyLinePlaceholder":316},[304,1361,1362],{"class":306,"line":344},[304,1363,1364],{"class":1276},"\u002F\u002F Redact sensitive tool inputs\n",[304,1366,1367,1369,1371,1373,1375,1377,1379],{"class":306,"line":350},[304,1368,1282],{"class":472},[304,1370,1285],{"class":468},[304,1372,1288],{"class":476},[304,1374,608],{"class":464},[304,1376,1293],{"class":468},[304,1378,1296],{"class":476},[304,1380,490],{"class":476},[304,1382,1383,1386,1388],{"class":306,"line":356},[304,1384,1385],{"class":507},"  toolInputs",[304,1387,518],{"class":476},[304,1389,490],{"class":476},[304,1391,1392,1395,1397,1400],{"class":306,"line":362},[304,1393,1394],{"class":507},"    maxLength",[304,1396,518],{"class":476},[304,1398,1399],{"class":825}," 500",[304,1401,530],{"class":476},[304,1403,1404,1407,1409,1411,1414,1416,1419,1421,1423],{"class":306,"line":367},[304,1405,1406],{"class":464},"    transform",[304,1408,518],{"class":476},[304,1410,477],{"class":476},[304,1412,1413],{"class":480},"input",[304,1415,1296],{"class":476},[304,1417,1418],{"class":480}," toolName",[304,1420,484],{"class":476},[304,1422,487],{"class":472},[304,1424,490],{"class":476},[304,1426,1427,1430,1432,1435,1438,1440,1443,1445,1448,1451,1453,1456,1458,1460,1463,1465],{"class":306,"line":373},[304,1428,1429],{"class":457},"      if",[304,1431,477],{"class":507},[304,1433,1434],{"class":468},"toolName",[304,1436,1437],{"class":476}," ===",[304,1439,521],{"class":476},[304,1441,1442],{"class":403},"queryDB",[304,1444,527],{"class":476},[304,1446,1447],{"class":507},") ",[304,1449,1450],{"class":457},"return",[304,1452,582],{"class":476},[304,1454,1455],{"class":507}," sql",[304,1457,518],{"class":476},[304,1459,521],{"class":476},[304,1461,1462],{"class":403},"***",[304,1464,527],{"class":476},[304,1466,1467],{"class":476}," }\n",[304,1469,1470,1473],{"class":306,"line":749},[304,1471,1472],{"class":457},"      return",[304,1474,1475],{"class":468}," input\n",[304,1477,1478],{"class":306,"line":985},[304,1479,1480],{"class":476},"    },\n",[304,1482,1483],{"class":306,"line":1006},[304,1484,1485],{"class":476},"  },\n",[304,1487,1488,1490],{"class":306,"line":1023},[304,1489,566],{"class":476},[304,1491,545],{"class":468},[378,1493,1495],{"id":1494},"usage-patterns","Usage Patterns",[1157,1497,1123],{"id":1498},"streamtext",[283,1500,1501],{},"The most common pattern, streaming chat with full observability:",[294,1503,1505],{"className":447,"code":1504,"filename":1269,"language":450,"meta":300,"style":300},"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",[286,1506,1507,1525,1543,1547,1569,1585,1601,1626,1630,1675,1679,1693,1717,1723,1743,1748,1760,1764,1770,1774,1787],{"__ignoreMap":300},[304,1508,1509,1511,1513,1515,1517,1519,1521,1523],{"class":306,"line":307},[304,1510,579],{"class":457},[304,1512,582],{"class":476},[304,1514,504],{"class":468},[304,1516,588],{"class":476},[304,1518,591],{"class":457},[304,1520,521],{"class":476},[304,1522,855],{"class":403},[304,1524,599],{"class":476},[304,1526,1527,1529,1531,1533,1535,1537,1539,1541],{"class":306,"line":313},[304,1528,579],{"class":457},[304,1530,582],{"class":476},[304,1532,608],{"class":468},[304,1534,588],{"class":476},[304,1536,591],{"class":457},[304,1538,521],{"class":476},[304,1540,288],{"class":403},[304,1542,599],{"class":476},[304,1544,1545],{"class":306,"line":320},[304,1546,317],{"emptyLinePlaceholder":316},[304,1548,1549,1551,1553,1555,1557,1559,1561,1563,1565,1567],{"class":306,"line":326},[304,1550,458],{"class":457},[304,1552,461],{"class":457},[304,1554,465],{"class":464},[304,1556,469],{"class":468},[304,1558,473],{"class":472},[304,1560,477],{"class":476},[304,1562,481],{"class":480},[304,1564,484],{"class":476},[304,1566,487],{"class":472},[304,1568,490],{"class":476},[304,1570,1571,1573,1575,1577,1579,1581,1583],{"class":306,"line":332},[304,1572,495],{"class":472},[304,1574,651],{"class":468},[304,1576,501],{"class":476},[304,1578,585],{"class":464},[304,1580,469],{"class":507},[304,1582,481],{"class":468},[304,1584,545],{"class":507},[304,1586,1587,1589,1591,1593,1595,1597,1599],{"class":306,"line":338},[304,1588,495],{"class":472},[304,1590,668],{"class":468},[304,1592,501],{"class":476},[304,1594,608],{"class":464},[304,1596,469],{"class":507},[304,1598,677],{"class":468},[304,1600,545],{"class":507},[304,1602,1603,1605,1607,1610,1612,1614,1617,1620,1622,1624],{"class":306,"line":344},[304,1604,495],{"class":472},[304,1606,582],{"class":476},[304,1608,1609],{"class":468}," messages",[304,1611,588],{"class":476},[304,1613,501],{"class":476},[304,1615,1616],{"class":457}," await",[304,1618,1619],{"class":464}," readBody",[304,1621,469],{"class":507},[304,1623,481],{"class":468},[304,1625,545],{"class":507},[304,1627,1628],{"class":306,"line":350},[304,1629,317],{"emptyLinePlaceholder":316},[304,1631,1632,1635,1637,1640,1642,1645,1648,1650,1652,1655,1657,1659,1662,1664,1666,1668,1671,1673],{"class":306,"line":356},[304,1633,1634],{"class":468},"  log",[304,1636,555],{"class":476},[304,1638,1639],{"class":464},"set",[304,1641,469],{"class":507},[304,1643,1644],{"class":476},"{",[304,1646,1647],{"class":507}," action",[304,1649,518],{"class":476},[304,1651,521],{"class":476},[304,1653,1654],{"class":403},"chat",[304,1656,527],{"class":476},[304,1658,1296],{"class":476},[304,1660,1661],{"class":507}," messagesCount",[304,1663,518],{"class":476},[304,1665,1609],{"class":468},[304,1667,555],{"class":476},[304,1669,1670],{"class":468},"length",[304,1672,588],{"class":476},[304,1674,545],{"class":507},[304,1676,1677],{"class":306,"line":362},[304,1678,317],{"emptyLinePlaceholder":316},[304,1680,1681,1683,1685,1687,1689,1691],{"class":306,"line":367},[304,1682,495],{"class":472},[304,1684,498],{"class":468},[304,1686,501],{"class":476},[304,1688,504],{"class":464},[304,1690,469],{"class":507},[304,1692,510],{"class":476},[304,1694,1695,1697,1699,1701,1703,1705,1707,1709,1711,1713,1715],{"class":306,"line":373},[304,1696,515],{"class":507},[304,1698,518],{"class":476},[304,1700,668],{"class":468},[304,1702,555],{"class":476},[304,1704,710],{"class":464},[304,1706,469],{"class":507},[304,1708,527],{"class":476},[304,1710,524],{"class":403},[304,1712,527],{"class":476},[304,1714,484],{"class":507},[304,1716,530],{"class":476},[304,1718,1719,1721],{"class":306,"line":749},[304,1720,535],{"class":468},[304,1722,530],{"class":476},[304,1724,1725,1728,1730,1733,1736,1739,1741],{"class":306,"line":985},[304,1726,1727],{"class":464},"    onFinish",[304,1729,518],{"class":476},[304,1731,1732],{"class":476}," ({",[304,1734,1735],{"class":480}," text",[304,1737,1738],{"class":476}," })",[304,1740,487],{"class":472},[304,1742,490],{"class":476},[304,1744,1745],{"class":306,"line":1006},[304,1746,1747],{"class":1276},"      \u002F\u002F Your code, no conflict with evlog\n",[304,1749,1750,1753,1755,1758],{"class":306,"line":1023},[304,1751,1752],{"class":464},"      saveConversation",[304,1754,469],{"class":507},[304,1756,1757],{"class":468},"text",[304,1759,545],{"class":507},[304,1761,1762],{"class":306,"line":1040},[304,1763,1480],{"class":476},[304,1765,1766,1768],{"class":306,"line":1055},[304,1767,542],{"class":476},[304,1769,545],{"class":507},[304,1771,1772],{"class":306,"line":1061},[304,1773,317],{"emptyLinePlaceholder":316},[304,1775,1777,1779,1781,1783,1785],{"class":306,"line":1776},20,[304,1778,550],{"class":457},[304,1780,498],{"class":468},[304,1782,555],{"class":476},[304,1784,558],{"class":464},[304,1786,561],{"class":507},[304,1788,1790,1792],{"class":306,"line":1789},21,[304,1791,566],{"class":476},[304,1793,545],{"class":468},[1157,1795,1119],{"id":1796},"generatetext",[283,1798,1799],{},"Synchronous generation, the middleware captures the result automatically:",[294,1801,1804],{"className":447,"code":1802,"filename":1803,"language":450,"meta":300,"style":300},"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",[286,1805,1806,1825,1843,1847,1869,1885,1901,1905,1921,1945,1961,1967,1971,1989],{"__ignoreMap":300},[304,1807,1808,1810,1812,1815,1817,1819,1821,1823],{"class":306,"line":307},[304,1809,579],{"class":457},[304,1811,582],{"class":476},[304,1813,1814],{"class":468}," generateText",[304,1816,588],{"class":476},[304,1818,591],{"class":457},[304,1820,521],{"class":476},[304,1822,855],{"class":403},[304,1824,599],{"class":476},[304,1826,1827,1829,1831,1833,1835,1837,1839,1841],{"class":306,"line":313},[304,1828,579],{"class":457},[304,1830,582],{"class":476},[304,1832,608],{"class":468},[304,1834,588],{"class":476},[304,1836,591],{"class":457},[304,1838,521],{"class":476},[304,1840,288],{"class":403},[304,1842,599],{"class":476},[304,1844,1845],{"class":306,"line":320},[304,1846,317],{"emptyLinePlaceholder":316},[304,1848,1849,1851,1853,1855,1857,1859,1861,1863,1865,1867],{"class":306,"line":326},[304,1850,458],{"class":457},[304,1852,461],{"class":457},[304,1854,465],{"class":464},[304,1856,469],{"class":468},[304,1858,473],{"class":472},[304,1860,477],{"class":476},[304,1862,481],{"class":480},[304,1864,484],{"class":476},[304,1866,487],{"class":472},[304,1868,490],{"class":476},[304,1870,1871,1873,1875,1877,1879,1881,1883],{"class":306,"line":332},[304,1872,495],{"class":472},[304,1874,651],{"class":468},[304,1876,501],{"class":476},[304,1878,585],{"class":464},[304,1880,469],{"class":507},[304,1882,481],{"class":468},[304,1884,545],{"class":507},[304,1886,1887,1889,1891,1893,1895,1897,1899],{"class":306,"line":338},[304,1888,495],{"class":472},[304,1890,668],{"class":468},[304,1892,501],{"class":476},[304,1894,608],{"class":464},[304,1896,469],{"class":507},[304,1898,677],{"class":468},[304,1900,545],{"class":507},[304,1902,1903],{"class":306,"line":344},[304,1904,317],{"emptyLinePlaceholder":316},[304,1906,1907,1909,1911,1913,1915,1917,1919],{"class":306,"line":350},[304,1908,495],{"class":472},[304,1910,498],{"class":468},[304,1912,501],{"class":476},[304,1914,1616],{"class":457},[304,1916,1814],{"class":464},[304,1918,469],{"class":507},[304,1920,510],{"class":476},[304,1922,1923,1925,1927,1929,1931,1933,1935,1937,1939,1941,1943],{"class":306,"line":356},[304,1924,515],{"class":507},[304,1926,518],{"class":476},[304,1928,668],{"class":468},[304,1930,555],{"class":476},[304,1932,710],{"class":464},[304,1934,469],{"class":507},[304,1936,527],{"class":476},[304,1938,524],{"class":403},[304,1940,527],{"class":476},[304,1942,484],{"class":507},[304,1944,530],{"class":476},[304,1946,1947,1950,1952,1954,1957,1959],{"class":306,"line":362},[304,1948,1949],{"class":507},"    prompt",[304,1951,518],{"class":476},[304,1953,521],{"class":476},[304,1955,1956],{"class":403},"Summarize this document",[304,1958,527],{"class":476},[304,1960,530],{"class":476},[304,1962,1963,1965],{"class":306,"line":367},[304,1964,542],{"class":476},[304,1966,545],{"class":507},[304,1968,1969],{"class":306,"line":373},[304,1970,317],{"emptyLinePlaceholder":316},[304,1972,1973,1975,1977,1979,1981,1983,1985,1987],{"class":306,"line":749},[304,1974,550],{"class":457},[304,1976,582],{"class":476},[304,1978,1735],{"class":507},[304,1980,518],{"class":476},[304,1982,498],{"class":468},[304,1984,555],{"class":476},[304,1986,1757],{"class":468},[304,1988,1467],{"class":476},[304,1990,1991,1993],{"class":306,"line":985},[304,1992,566],{"class":476},[304,1994,545],{"class":468},[1157,1996,1998],{"id":1997},"multi-step-agents","Multi-step agents",[283,2000,2001],{},"The middleware fires for each step automatically. Steps, tool calls, and tokens are all accumulated across the agent loop:",[294,2003,2006],{"className":447,"code":2004,"filename":2005,"language":450,"meta":300,"style":300},"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",[286,2007,2008,2037,2055,2073,2077,2099,2115,2137,2155,2173,2179,2183,2201,2225,2244,2262,2268,2272,2282,2289,2300,2306],{"__ignoreMap":300},[304,2009,2010,2012,2014,2017,2019,2022,2024,2027,2029,2031,2033,2035],{"class":306,"line":307},[304,2011,579],{"class":457},[304,2013,582],{"class":476},[304,2015,2016],{"class":468}," ToolLoopAgent",[304,2018,1296],{"class":476},[304,2020,2021],{"class":468}," createAgentUIStreamResponse",[304,2023,1296],{"class":476},[304,2025,2026],{"class":468}," stepCountIs",[304,2028,588],{"class":476},[304,2030,591],{"class":457},[304,2032,521],{"class":476},[304,2034,855],{"class":403},[304,2036,599],{"class":476},[304,2038,2039,2041,2043,2045,2047,2049,2051,2053],{"class":306,"line":313},[304,2040,579],{"class":457},[304,2042,582],{"class":476},[304,2044,585],{"class":468},[304,2046,588],{"class":476},[304,2048,591],{"class":457},[304,2050,521],{"class":476},[304,2052,596],{"class":403},[304,2054,599],{"class":476},[304,2056,2057,2059,2061,2063,2065,2067,2069,2071],{"class":306,"line":320},[304,2058,579],{"class":457},[304,2060,582],{"class":476},[304,2062,608],{"class":468},[304,2064,588],{"class":476},[304,2066,591],{"class":457},[304,2068,521],{"class":476},[304,2070,288],{"class":403},[304,2072,599],{"class":476},[304,2074,2075],{"class":306,"line":326},[304,2076,317],{"emptyLinePlaceholder":316},[304,2078,2079,2081,2083,2085,2087,2089,2091,2093,2095,2097],{"class":306,"line":332},[304,2080,458],{"class":457},[304,2082,461],{"class":457},[304,2084,465],{"class":464},[304,2086,469],{"class":468},[304,2088,473],{"class":472},[304,2090,477],{"class":476},[304,2092,481],{"class":480},[304,2094,484],{"class":476},[304,2096,487],{"class":472},[304,2098,490],{"class":476},[304,2100,2101,2103,2105,2107,2109,2111,2113],{"class":306,"line":338},[304,2102,495],{"class":472},[304,2104,651],{"class":468},[304,2106,501],{"class":476},[304,2108,585],{"class":464},[304,2110,469],{"class":507},[304,2112,481],{"class":468},[304,2114,545],{"class":507},[304,2116,2117,2119,2121,2123,2125,2127,2129,2131,2133,2135],{"class":306,"line":344},[304,2118,495],{"class":472},[304,2120,582],{"class":476},[304,2122,1609],{"class":468},[304,2124,588],{"class":476},[304,2126,501],{"class":476},[304,2128,1616],{"class":457},[304,2130,1619],{"class":464},[304,2132,469],{"class":507},[304,2134,481],{"class":468},[304,2136,545],{"class":507},[304,2138,2139,2141,2143,2145,2147,2149,2151,2153],{"class":306,"line":350},[304,2140,495],{"class":472},[304,2142,668],{"class":468},[304,2144,501],{"class":476},[304,2146,608],{"class":464},[304,2148,469],{"class":507},[304,2150,677],{"class":468},[304,2152,1296],{"class":476},[304,2154,490],{"class":476},[304,2156,2157,2160,2162,2164,2166,2168,2170],{"class":306,"line":356},[304,2158,2159],{"class":507},"    toolInputs",[304,2161,518],{"class":476},[304,2163,582],{"class":476},[304,2165,1345],{"class":507},[304,2167,518],{"class":476},[304,2169,1399],{"class":825},[304,2171,2172],{"class":476}," },\n",[304,2174,2175,2177],{"class":306,"line":362},[304,2176,542],{"class":476},[304,2178,545],{"class":507},[304,2180,2181],{"class":306,"line":367},[304,2182,317],{"emptyLinePlaceholder":316},[304,2184,2185,2187,2190,2192,2195,2197,2199],{"class":306,"line":373},[304,2186,495],{"class":472},[304,2188,2189],{"class":468}," agent",[304,2191,501],{"class":476},[304,2193,2194],{"class":476}," new",[304,2196,2016],{"class":464},[304,2198,469],{"class":507},[304,2200,510],{"class":476},[304,2202,2203,2205,2207,2209,2211,2213,2215,2217,2219,2221,2223],{"class":306,"line":749},[304,2204,515],{"class":507},[304,2206,518],{"class":476},[304,2208,668],{"class":468},[304,2210,555],{"class":476},[304,2212,710],{"class":464},[304,2214,469],{"class":507},[304,2216,527],{"class":476},[304,2218,524],{"class":403},[304,2220,527],{"class":476},[304,2222,484],{"class":507},[304,2224,530],{"class":476},[304,2226,2227,2230,2232,2234,2237,2239,2242],{"class":306,"line":985},[304,2228,2229],{"class":507},"    tools",[304,2231,518],{"class":476},[304,2233,582],{"class":476},[304,2235,2236],{"class":468}," searchWeb",[304,2238,1296],{"class":476},[304,2240,2241],{"class":468}," queryDatabase",[304,2243,2172],{"class":476},[304,2245,2246,2249,2251,2253,2255,2258,2260],{"class":306,"line":1006},[304,2247,2248],{"class":507},"    stopWhen",[304,2250,518],{"class":476},[304,2252,2026],{"class":464},[304,2254,469],{"class":507},[304,2256,2257],{"class":825},"5",[304,2259,484],{"class":507},[304,2261,530],{"class":476},[304,2263,2264,2266],{"class":306,"line":1023},[304,2265,542],{"class":476},[304,2267,545],{"class":507},[304,2269,2270],{"class":306,"line":1040},[304,2271,317],{"emptyLinePlaceholder":316},[304,2273,2274,2276,2278,2280],{"class":306,"line":1055},[304,2275,550],{"class":457},[304,2277,2021],{"class":464},[304,2279,469],{"class":507},[304,2281,510],{"class":476},[304,2283,2284,2287],{"class":306,"line":1061},[304,2285,2286],{"class":468},"    agent",[304,2288,530],{"class":476},[304,2290,2291,2294,2296,2298],{"class":306,"line":1776},[304,2292,2293],{"class":507},"    uiMessages",[304,2295,518],{"class":476},[304,2297,1609],{"class":468},[304,2299,530],{"class":476},[304,2301,2302,2304],{"class":306,"line":1789},[304,2303,542],{"class":476},[304,2305,545],{"class":507},[304,2307,2309,2311],{"class":306,"line":2308},22,[304,2310,566],{"class":476},[304,2312,545],{"class":468},[283,2314,2315],{},"Wide event after a 3-step agent run:",[294,2317,2319],{"className":759,"code":2318,"filename":761,"language":762,"meta":300,"style":300},"{\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",[286,2320,2321,2325,2337,2352,2367,2385,2403,2417,2432,2447,2465,2478,2531,2582,2631,2636,2656,2669,2736,2810,2855,2859,2874,2890,2904,2909],{"__ignoreMap":300},[304,2322,2323],{"class":306,"line":307},[304,2324,510],{"class":476},[304,2326,2327,2329,2331,2333,2335],{"class":306,"line":313},[304,2328,773],{"class":476},[304,2330,855],{"class":472},[304,2332,779],{"class":476},[304,2334,518],{"class":476},[304,2336,490],{"class":476},[304,2338,2339,2341,2343,2345,2347,2350],{"class":306,"line":320},[304,2340,866],{"class":476},[304,2342,869],{"class":400},[304,2344,779],{"class":476},[304,2346,518],{"class":476},[304,2348,2349],{"class":825}," 3",[304,2351,530],{"class":476},[304,2353,2354,2356,2359,2361,2363,2365],{"class":306,"line":326},[304,2355,866],{"class":476},[304,2357,2358],{"class":400},"steps",[304,2360,779],{"class":476},[304,2362,518],{"class":476},[304,2364,2349],{"class":825},[304,2366,530],{"class":476},[304,2368,2369,2371,2373,2375,2377,2379,2381,2383],{"class":306,"line":332},[304,2370,866],{"class":476},[304,2372,885],{"class":400},[304,2374,779],{"class":476},[304,2376,518],{"class":476},[304,2378,784],{"class":476},[304,2380,894],{"class":403},[304,2382,779],{"class":476},[304,2384,530],{"class":476},[304,2386,2387,2389,2391,2393,2395,2397,2399,2401],{"class":306,"line":338},[304,2388,866],{"class":476},[304,2390,905],{"class":400},[304,2392,779],{"class":476},[304,2394,518],{"class":476},[304,2396,784],{"class":476},[304,2398,914],{"class":403},[304,2400,779],{"class":476},[304,2402,530],{"class":476},[304,2404,2405,2407,2409,2411,2413,2415],{"class":306,"line":344},[304,2406,866],{"class":476},[304,2408,925],{"class":400},[304,2410,779],{"class":476},[304,2412,518],{"class":476},[304,2414,1035],{"class":825},[304,2416,530],{"class":476},[304,2418,2419,2421,2423,2425,2427,2430],{"class":306,"line":350},[304,2420,866],{"class":476},[304,2422,941],{"class":400},[304,2424,779],{"class":476},[304,2426,518],{"class":476},[304,2428,2429],{"class":825}," 1200",[304,2431,530],{"class":476},[304,2433,2434,2436,2438,2440,2442,2445],{"class":306,"line":356},[304,2435,866],{"class":476},[304,2437,957],{"class":400},[304,2439,779],{"class":476},[304,2441,518],{"class":476},[304,2443,2444],{"class":825}," 5700",[304,2446,530],{"class":476},[304,2448,2449,2451,2453,2455,2457,2459,2461,2463],{"class":306,"line":362},[304,2450,866],{"class":476},[304,2452,990],{"class":400},[304,2454,779],{"class":476},[304,2456,518],{"class":476},[304,2458,784],{"class":476},[304,2460,999],{"class":403},[304,2462,779],{"class":476},[304,2464,530],{"class":476},[304,2466,2467,2469,2471,2473,2475],{"class":306,"line":367},[304,2468,866],{"class":476},[304,2470,1202],{"class":400},[304,2472,779],{"class":476},[304,2474,518],{"class":476},[304,2476,2477],{"class":476}," [\n",[304,2479,2480,2483,2485,2488,2490,2492,2494,2497,2499,2501,2503,2505,2507,2509,2511,2513,2516,2518,2520,2522,2525,2527,2529],{"class":306,"line":373},[304,2481,2482],{"class":476},"      {",[304,2484,784],{"class":476},[304,2486,2487],{"class":825},"name",[304,2489,779],{"class":476},[304,2491,518],{"class":476},[304,2493,784],{"class":476},[304,2495,2496],{"class":403},"searchWeb",[304,2498,779],{"class":476},[304,2500,1296],{"class":476},[304,2502,784],{"class":476},[304,2504,1413],{"class":825},[304,2506,779],{"class":476},[304,2508,518],{"class":476},[304,2510,582],{"class":476},[304,2512,784],{"class":476},[304,2514,2515],{"class":507},"query",[304,2517,779],{"class":476},[304,2519,518],{"class":476},[304,2521,784],{"class":476},[304,2523,2524],{"class":403},"TypeScript 6.0 features",[304,2526,779],{"class":476},[304,2528,588],{"class":476},[304,2530,2172],{"class":476},[304,2532,2533,2535,2537,2539,2541,2543,2545,2548,2550,2552,2554,2556,2558,2560,2562,2564,2567,2569,2571,2573,2576,2578,2580],{"class":306,"line":749},[304,2534,2482],{"class":476},[304,2536,784],{"class":476},[304,2538,2487],{"class":825},[304,2540,779],{"class":476},[304,2542,518],{"class":476},[304,2544,784],{"class":476},[304,2546,2547],{"class":403},"queryDatabase",[304,2549,779],{"class":476},[304,2551,1296],{"class":476},[304,2553,784],{"class":476},[304,2555,1413],{"class":825},[304,2557,779],{"class":476},[304,2559,518],{"class":476},[304,2561,582],{"class":476},[304,2563,784],{"class":476},[304,2565,2566],{"class":507},"sql",[304,2568,779],{"class":476},[304,2570,518],{"class":476},[304,2572,784],{"class":476},[304,2574,2575],{"class":403},"SELECT * FROM docs WHERE topic = 'typescript'",[304,2577,779],{"class":476},[304,2579,588],{"class":476},[304,2581,2172],{"class":476},[304,2583,2584,2586,2588,2590,2592,2594,2596,2598,2600,2602,2604,2606,2608,2610,2612,2614,2616,2618,2620,2622,2625,2627,2629],{"class":306,"line":985},[304,2585,2482],{"class":476},[304,2587,784],{"class":476},[304,2589,2487],{"class":825},[304,2591,779],{"class":476},[304,2593,518],{"class":476},[304,2595,784],{"class":476},[304,2597,2496],{"class":403},[304,2599,779],{"class":476},[304,2601,1296],{"class":476},[304,2603,784],{"class":476},[304,2605,1413],{"class":825},[304,2607,779],{"class":476},[304,2609,518],{"class":476},[304,2611,582],{"class":476},[304,2613,784],{"class":476},[304,2615,2515],{"class":507},[304,2617,779],{"class":476},[304,2619,518],{"class":476},[304,2621,784],{"class":476},[304,2623,2624],{"class":403},"TypeScript 6.0 release date",[304,2626,779],{"class":476},[304,2628,588],{"class":476},[304,2630,1467],{"class":476},[304,2632,2633],{"class":306,"line":1006},[304,2634,2635],{"class":476},"    ],\n",[304,2637,2638,2640,2643,2645,2647,2649,2652,2654],{"class":306,"line":1023},[304,2639,866],{"class":476},[304,2641,2642],{"class":400},"responseId",[304,2644,779],{"class":476},[304,2646,518],{"class":476},[304,2648,784],{"class":476},[304,2650,2651],{"class":403},"msg_01XFDUDYJgAACzvnptvVoYEL",[304,2653,779],{"class":476},[304,2655,530],{"class":476},[304,2657,2658,2660,2663,2665,2667],{"class":306,"line":1040},[304,2659,866],{"class":476},[304,2661,2662],{"class":400},"stepsUsage",[304,2664,779],{"class":476},[304,2666,518],{"class":476},[304,2668,2477],{"class":476},[304,2670,2671,2673,2675,2677,2679,2681,2683,2685,2687,2689,2691,2693,2695,2697,2699,2701,2703,2705,2707,2709,2712,2714,2716,2718,2720,2722,2725,2727,2729,2731,2734],{"class":306,"line":1055},[304,2672,2482],{"class":476},[304,2674,784],{"class":476},[304,2676,885],{"class":825},[304,2678,779],{"class":476},[304,2680,518],{"class":476},[304,2682,784],{"class":476},[304,2684,894],{"class":403},[304,2686,779],{"class":476},[304,2688,1296],{"class":476},[304,2690,784],{"class":476},[304,2692,925],{"class":825},[304,2694,779],{"class":476},[304,2696,518],{"class":476},[304,2698,2429],{"class":825},[304,2700,1296],{"class":476},[304,2702,784],{"class":476},[304,2704,941],{"class":825},[304,2706,779],{"class":476},[304,2708,518],{"class":476},[304,2710,2711],{"class":825}," 300",[304,2713,1296],{"class":476},[304,2715,784],{"class":476},[304,2717,1202],{"class":825},[304,2719,779],{"class":476},[304,2721,518],{"class":476},[304,2723,2724],{"class":476}," [",[304,2726,779],{"class":476},[304,2728,2496],{"class":403},[304,2730,779],{"class":476},[304,2732,2733],{"class":476},"]",[304,2735,2172],{"class":476},[304,2737,2738,2740,2742,2744,2746,2748,2750,2752,2754,2756,2758,2760,2762,2764,2767,2769,2771,2773,2775,2777,2780,2782,2784,2786,2788,2790,2792,2794,2796,2798,2800,2802,2804,2806,2808],{"class":306,"line":1061},[304,2739,2482],{"class":476},[304,2741,784],{"class":476},[304,2743,885],{"class":825},[304,2745,779],{"class":476},[304,2747,518],{"class":476},[304,2749,784],{"class":476},[304,2751,894],{"class":403},[304,2753,779],{"class":476},[304,2755,1296],{"class":476},[304,2757,784],{"class":476},[304,2759,925],{"class":825},[304,2761,779],{"class":476},[304,2763,518],{"class":476},[304,2765,2766],{"class":825}," 1500",[304,2768,1296],{"class":476},[304,2770,784],{"class":476},[304,2772,941],{"class":825},[304,2774,779],{"class":476},[304,2776,518],{"class":476},[304,2778,2779],{"class":825}," 400",[304,2781,1296],{"class":476},[304,2783,784],{"class":476},[304,2785,1202],{"class":825},[304,2787,779],{"class":476},[304,2789,518],{"class":476},[304,2791,2724],{"class":476},[304,2793,779],{"class":476},[304,2795,2547],{"class":403},[304,2797,779],{"class":476},[304,2799,1296],{"class":476},[304,2801,784],{"class":476},[304,2803,2496],{"class":403},[304,2805,779],{"class":476},[304,2807,2733],{"class":476},[304,2809,2172],{"class":476},[304,2811,2812,2814,2816,2818,2820,2822,2824,2826,2828,2830,2832,2834,2836,2838,2841,2843,2845,2847,2849,2851,2853],{"class":306,"line":1776},[304,2813,2482],{"class":476},[304,2815,784],{"class":476},[304,2817,885],{"class":825},[304,2819,779],{"class":476},[304,2821,518],{"class":476},[304,2823,784],{"class":476},[304,2825,894],{"class":403},[304,2827,779],{"class":476},[304,2829,1296],{"class":476},[304,2831,784],{"class":476},[304,2833,925],{"class":825},[304,2835,779],{"class":476},[304,2837,518],{"class":476},[304,2839,2840],{"class":825}," 1800",[304,2842,1296],{"class":476},[304,2844,784],{"class":476},[304,2846,941],{"class":825},[304,2848,779],{"class":476},[304,2850,518],{"class":476},[304,2852,1399],{"class":825},[304,2854,1467],{"class":476},[304,2856,2857],{"class":306,"line":1789},[304,2858,2635],{"class":476},[304,2860,2861,2863,2865,2867,2869,2872],{"class":306,"line":2308},[304,2862,866],{"class":476},[304,2864,1011],{"class":400},[304,2866,779],{"class":476},[304,2868,518],{"class":476},[304,2870,2871],{"class":825}," 312",[304,2873,530],{"class":476},[304,2875,2877,2879,2881,2883,2885,2888],{"class":306,"line":2876},23,[304,2878,866],{"class":476},[304,2880,1028],{"class":400},[304,2882,779],{"class":476},[304,2884,518],{"class":476},[304,2886,2887],{"class":825}," 8200",[304,2889,530],{"class":476},[304,2891,2893,2895,2897,2899,2901],{"class":306,"line":2892},24,[304,2894,866],{"class":476},[304,2896,1045],{"class":400},[304,2898,779],{"class":476},[304,2900,518],{"class":476},[304,2902,2903],{"class":825}," 146\n",[304,2905,2907],{"class":306,"line":2906},25,[304,2908,1058],{"class":476},[304,2910,2912],{"class":306,"line":2911},26,[304,2913,1064],{"class":476},[1157,2915,2917],{"id":2916},"rag-embed-generate","RAG (embed + generate)",[283,2919,2920,2921,2924],{},"Use ",[286,2922,2923],{},"captureEmbed"," for embedding calls. They use a different model type that cannot be wrapped with middleware:",[294,2926,2929],{"className":447,"code":2927,"filename":2928,"language":450,"meta":300,"style":300},"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({ usage })\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",[286,2930,2931,2954,2972,2990,2994,3016,3032,3048,3052,3078,3105,3117,3123,3142,3146,3166,3170,3186,3210,3228,3234,3238,3256],{"__ignoreMap":300},[304,2932,2933,2935,2937,2940,2942,2944,2946,2948,2950,2952],{"class":306,"line":307},[304,2934,579],{"class":457},[304,2936,582],{"class":476},[304,2938,2939],{"class":468}," embed",[304,2941,1296],{"class":476},[304,2943,1814],{"class":468},[304,2945,588],{"class":476},[304,2947,591],{"class":457},[304,2949,521],{"class":476},[304,2951,855],{"class":403},[304,2953,599],{"class":476},[304,2955,2956,2958,2960,2962,2964,2966,2968,2970],{"class":306,"line":313},[304,2957,579],{"class":457},[304,2959,582],{"class":476},[304,2961,585],{"class":468},[304,2963,588],{"class":476},[304,2965,591],{"class":457},[304,2967,521],{"class":476},[304,2969,596],{"class":403},[304,2971,599],{"class":476},[304,2973,2974,2976,2978,2980,2982,2984,2986,2988],{"class":306,"line":320},[304,2975,579],{"class":457},[304,2977,582],{"class":476},[304,2979,608],{"class":468},[304,2981,588],{"class":476},[304,2983,591],{"class":457},[304,2985,521],{"class":476},[304,2987,288],{"class":403},[304,2989,599],{"class":476},[304,2991,2992],{"class":306,"line":326},[304,2993,317],{"emptyLinePlaceholder":316},[304,2995,2996,2998,3000,3002,3004,3006,3008,3010,3012,3014],{"class":306,"line":332},[304,2997,458],{"class":457},[304,2999,461],{"class":457},[304,3001,465],{"class":464},[304,3003,469],{"class":468},[304,3005,473],{"class":472},[304,3007,477],{"class":476},[304,3009,481],{"class":480},[304,3011,484],{"class":476},[304,3013,487],{"class":472},[304,3015,490],{"class":476},[304,3017,3018,3020,3022,3024,3026,3028,3030],{"class":306,"line":338},[304,3019,495],{"class":472},[304,3021,651],{"class":468},[304,3023,501],{"class":476},[304,3025,585],{"class":464},[304,3027,469],{"class":507},[304,3029,481],{"class":468},[304,3031,545],{"class":507},[304,3033,3034,3036,3038,3040,3042,3044,3046],{"class":306,"line":344},[304,3035,495],{"class":472},[304,3037,668],{"class":468},[304,3039,501],{"class":476},[304,3041,608],{"class":464},[304,3043,469],{"class":507},[304,3045,677],{"class":468},[304,3047,545],{"class":507},[304,3049,3050],{"class":306,"line":350},[304,3051,317],{"emptyLinePlaceholder":316},[304,3053,3054,3056,3058,3061,3063,3066,3068,3070,3072,3074,3076],{"class":306,"line":356},[304,3055,495],{"class":472},[304,3057,582],{"class":476},[304,3059,3060],{"class":468}," embedding",[304,3062,1296],{"class":476},[304,3064,3065],{"class":468}," usage",[304,3067,588],{"class":476},[304,3069,501],{"class":476},[304,3071,1616],{"class":457},[304,3073,2939],{"class":464},[304,3075,469],{"class":507},[304,3077,510],{"class":476},[304,3079,3080,3082,3084,3087,3089,3092,3094,3096,3099,3101,3103],{"class":306,"line":362},[304,3081,515],{"class":507},[304,3083,518],{"class":476},[304,3085,3086],{"class":468}," openai",[304,3088,555],{"class":476},[304,3090,3091],{"class":464},"embedding",[304,3093,469],{"class":507},[304,3095,527],{"class":476},[304,3097,3098],{"class":403},"text-embedding-3-small",[304,3100,527],{"class":476},[304,3102,484],{"class":507},[304,3104,530],{"class":476},[304,3106,3107,3110,3112,3115],{"class":306,"line":367},[304,3108,3109],{"class":507},"    value",[304,3111,518],{"class":476},[304,3113,3114],{"class":468}," query",[304,3116,530],{"class":476},[304,3118,3119,3121],{"class":306,"line":373},[304,3120,542],{"class":476},[304,3122,545],{"class":507},[304,3124,3125,3128,3130,3132,3134,3136,3138,3140],{"class":306,"line":749},[304,3126,3127],{"class":468},"  ai",[304,3129,555],{"class":476},[304,3131,2923],{"class":464},[304,3133,469],{"class":507},[304,3135,1644],{"class":476},[304,3137,3065],{"class":468},[304,3139,588],{"class":476},[304,3141,545],{"class":507},[304,3143,3144],{"class":306,"line":985},[304,3145,317],{"emptyLinePlaceholder":316},[304,3147,3148,3150,3153,3155,3157,3160,3162,3164],{"class":306,"line":1006},[304,3149,495],{"class":472},[304,3151,3152],{"class":468}," docs",[304,3154,501],{"class":476},[304,3156,1616],{"class":457},[304,3158,3159],{"class":464}," findSimilar",[304,3161,469],{"class":507},[304,3163,3091],{"class":468},[304,3165,545],{"class":507},[304,3167,3168],{"class":306,"line":1023},[304,3169,317],{"emptyLinePlaceholder":316},[304,3171,3172,3174,3176,3178,3180,3182,3184],{"class":306,"line":1040},[304,3173,495],{"class":472},[304,3175,498],{"class":468},[304,3177,501],{"class":476},[304,3179,1616],{"class":457},[304,3181,1814],{"class":464},[304,3183,469],{"class":507},[304,3185,510],{"class":476},[304,3187,3188,3190,3192,3194,3196,3198,3200,3202,3204,3206,3208],{"class":306,"line":1055},[304,3189,515],{"class":507},[304,3191,518],{"class":476},[304,3193,668],{"class":468},[304,3195,555],{"class":476},[304,3197,710],{"class":464},[304,3199,469],{"class":507},[304,3201,527],{"class":476},[304,3203,524],{"class":403},[304,3205,527],{"class":476},[304,3207,484],{"class":507},[304,3209,530],{"class":476},[304,3211,3212,3214,3216,3219,3221,3224,3226],{"class":306,"line":1061},[304,3213,1949],{"class":507},[304,3215,518],{"class":476},[304,3217,3218],{"class":464}," buildPrompt",[304,3220,469],{"class":507},[304,3222,3223],{"class":468},"docs",[304,3225,484],{"class":507},[304,3227,530],{"class":476},[304,3229,3230,3232],{"class":306,"line":1776},[304,3231,542],{"class":476},[304,3233,545],{"class":507},[304,3235,3236],{"class":306,"line":1789},[304,3237,317],{"emptyLinePlaceholder":316},[304,3239,3240,3242,3244,3246,3248,3250,3252,3254],{"class":306,"line":2308},[304,3241,550],{"class":457},[304,3243,582],{"class":476},[304,3245,1735],{"class":507},[304,3247,518],{"class":476},[304,3249,498],{"class":468},[304,3251,555],{"class":476},[304,3253,1757],{"class":468},[304,3255,1467],{"class":476},[304,3257,3258,3260],{"class":306,"line":2876},[304,3259,566],{"class":476},[304,3261,545],{"class":468},[1157,3263,3265],{"id":3264},"multiple-models","Multiple models",[283,3267,3268,3269,3271,3272,3275],{},"Wrap each model separately, they share the same accumulator. When multiple models are used, the wide event includes both ",[286,3270,885],{}," (last model) and ",[286,3273,3274],{},"models"," (all unique models):",[386,3277,3278,3431],{},[294,3279,3281],{"className":447,"code":3280,"filename":1269,"language":450,"meta":300,"style":300},"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",[286,3282,3283,3296,3300,3326,3351,3355,3394],{"__ignoreMap":300},[304,3284,3285,3287,3289,3291,3293],{"class":306,"line":307},[304,3286,1282],{"class":472},[304,3288,1285],{"class":468},[304,3290,1288],{"class":476},[304,3292,608],{"class":464},[304,3294,3295],{"class":468},"(log)\n",[304,3297,3298],{"class":306,"line":313},[304,3299,317],{"emptyLinePlaceholder":316},[304,3301,3302,3304,3307,3309,3311,3313,3315,3317,3319,3322,3324],{"class":306,"line":320},[304,3303,1282],{"class":472},[304,3305,3306],{"class":468}," fast ",[304,3308,1288],{"class":476},[304,3310,668],{"class":468},[304,3312,555],{"class":476},[304,3314,710],{"class":464},[304,3316,469],{"class":468},[304,3318,527],{"class":476},[304,3320,3321],{"class":403},"anthropic\u002Fclaude-haiku-4.5",[304,3323,527],{"class":476},[304,3325,545],{"class":468},[304,3327,3328,3330,3333,3335,3337,3339,3341,3343,3345,3347,3349],{"class":306,"line":326},[304,3329,1282],{"class":472},[304,3331,3332],{"class":468}," smart ",[304,3334,1288],{"class":476},[304,3336,668],{"class":468},[304,3338,555],{"class":476},[304,3340,710],{"class":464},[304,3342,469],{"class":468},[304,3344,527],{"class":476},[304,3346,524],{"class":403},[304,3348,527],{"class":476},[304,3350,545],{"class":468},[304,3352,3353],{"class":306,"line":332},[304,3354,317],{"emptyLinePlaceholder":316},[304,3356,3357,3359,3362,3364,3366,3368,3370,3372,3375,3377,3380,3382,3385,3387,3390,3392],{"class":306,"line":338},[304,3358,1282],{"class":472},[304,3360,3361],{"class":468}," classification ",[304,3363,1288],{"class":476},[304,3365,1616],{"class":457},[304,3367,1814],{"class":464},[304,3369,469],{"class":468},[304,3371,1644],{"class":476},[304,3373,3374],{"class":507}," model",[304,3376,518],{"class":476},[304,3378,3379],{"class":468}," fast",[304,3381,1296],{"class":476},[304,3383,3384],{"class":507}," prompt",[304,3386,518],{"class":476},[304,3388,3389],{"class":468}," classifyPrompt ",[304,3391,566],{"class":476},[304,3393,545],{"class":468},[304,3395,3396,3398,3401,3403,3405,3407,3409,3411,3413,3415,3418,3420,3422,3424,3427,3429],{"class":306,"line":344},[304,3397,1282],{"class":472},[304,3399,3400],{"class":468}," response ",[304,3402,1288],{"class":476},[304,3404,1616],{"class":457},[304,3406,1814],{"class":464},[304,3408,469],{"class":468},[304,3410,1644],{"class":476},[304,3412,3374],{"class":507},[304,3414,518],{"class":476},[304,3416,3417],{"class":468}," smart",[304,3419,1296],{"class":476},[304,3421,3384],{"class":507},[304,3423,518],{"class":476},[304,3425,3426],{"class":468}," detailedPrompt ",[304,3428,566],{"class":476},[304,3430,545],{"class":468},[294,3432,3434],{"className":759,"code":3433,"filename":761,"language":762,"meta":300,"style":300},"{\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",[286,3435,3436,3440,3452,3467,3485,3515,3533,3548,3562,3575,3579],{"__ignoreMap":300},[304,3437,3438],{"class":306,"line":307},[304,3439,510],{"class":476},[304,3441,3442,3444,3446,3448,3450],{"class":306,"line":313},[304,3443,773],{"class":476},[304,3445,855],{"class":472},[304,3447,779],{"class":476},[304,3449,518],{"class":476},[304,3451,490],{"class":476},[304,3453,3454,3456,3458,3460,3462,3465],{"class":306,"line":320},[304,3455,866],{"class":476},[304,3457,869],{"class":400},[304,3459,779],{"class":476},[304,3461,518],{"class":476},[304,3463,3464],{"class":825}," 2",[304,3466,530],{"class":476},[304,3468,3469,3471,3473,3475,3477,3479,3481,3483],{"class":306,"line":326},[304,3470,866],{"class":476},[304,3472,885],{"class":400},[304,3474,779],{"class":476},[304,3476,518],{"class":476},[304,3478,784],{"class":476},[304,3480,894],{"class":403},[304,3482,779],{"class":476},[304,3484,530],{"class":476},[304,3486,3487,3489,3491,3493,3495,3497,3499,3502,3504,3506,3508,3510,3512],{"class":306,"line":332},[304,3488,866],{"class":476},[304,3490,3274],{"class":400},[304,3492,779],{"class":476},[304,3494,518],{"class":476},[304,3496,2724],{"class":476},[304,3498,779],{"class":476},[304,3500,3501],{"class":403},"claude-haiku-4.5",[304,3503,779],{"class":476},[304,3505,1296],{"class":476},[304,3507,784],{"class":476},[304,3509,894],{"class":403},[304,3511,779],{"class":476},[304,3513,3514],{"class":476},"],\n",[304,3516,3517,3519,3521,3523,3525,3527,3529,3531],{"class":306,"line":338},[304,3518,866],{"class":476},[304,3520,905],{"class":400},[304,3522,779],{"class":476},[304,3524,518],{"class":476},[304,3526,784],{"class":476},[304,3528,914],{"class":403},[304,3530,779],{"class":476},[304,3532,530],{"class":476},[304,3534,3535,3537,3539,3541,3543,3546],{"class":306,"line":344},[304,3536,866],{"class":476},[304,3538,925],{"class":400},[304,3540,779],{"class":476},[304,3542,518],{"class":476},[304,3544,3545],{"class":825}," 450",[304,3547,530],{"class":476},[304,3549,3550,3552,3554,3556,3558,3560],{"class":306,"line":350},[304,3551,866],{"class":476},[304,3553,941],{"class":400},[304,3555,779],{"class":476},[304,3557,518],{"class":476},[304,3559,2711],{"class":825},[304,3561,530],{"class":476},[304,3563,3564,3566,3568,3570,3572],{"class":306,"line":356},[304,3565,866],{"class":476},[304,3567,957],{"class":400},[304,3569,779],{"class":476},[304,3571,518],{"class":476},[304,3573,3574],{"class":825}," 750\n",[304,3576,3577],{"class":306,"line":362},[304,3578,1058],{"class":476},[304,3580,3581],{"class":306,"line":367},[304,3582,1064],{"class":476},[1157,3584,3586],{"id":3585},"model-object-support","Model object support",[283,3588,3589,3592],{},[286,3590,3591],{},"wrap()"," also accepts model objects from provider SDKs if you prefer explicit imports:",[294,3594,3596],{"className":447,"code":3595,"filename":1269,"language":450,"meta":300,"style":300},"import { anthropic } from '@ai-sdk\u002Fanthropic'\n\nconst model = ai.wrap(anthropic('claude-sonnet-4.6'))\n",[286,3597,3598,3618,3622],{"__ignoreMap":300},[304,3599,3600,3602,3604,3607,3609,3611,3613,3616],{"class":306,"line":307},[304,3601,579],{"class":457},[304,3603,582],{"class":476},[304,3605,3606],{"class":468}," anthropic",[304,3608,588],{"class":476},[304,3610,591],{"class":457},[304,3612,521],{"class":476},[304,3614,3615],{"class":403},"@ai-sdk\u002Fanthropic",[304,3617,599],{"class":476},[304,3619,3620],{"class":306,"line":313},[304,3621,317],{"emptyLinePlaceholder":316},[304,3623,3624,3626,3629,3631,3633,3635,3637,3639,3641,3643,3645,3647,3649],{"class":306,"line":320},[304,3625,1282],{"class":472},[304,3627,3628],{"class":468}," model ",[304,3630,1288],{"class":476},[304,3632,668],{"class":468},[304,3634,555],{"class":476},[304,3636,710],{"class":464},[304,3638,469],{"class":468},[304,3640,914],{"class":464},[304,3642,469],{"class":468},[304,3644,527],{"class":476},[304,3646,894],{"class":403},[304,3648,527],{"class":476},[304,3650,3651],{"class":468},"))\n",[378,3653,3655],{"id":3654},"captured-data","Captured Data",[1080,3657,3658,3670],{},[1083,3659,3660],{},[1086,3661,3662,3665,3668],{},[1089,3663,3664],{},"Wide event field",[1089,3666,3667],{},"Source",[1089,3669,1094],{},[1096,3671,3672,3685,3700,3713,3737,3752,3767,3782,3797,3812,3827,3847,3870,3888,3901,3914,3927,3939,3951],{},[1086,3673,3674,3679,3682],{},[1101,3675,3676],{},[286,3677,3678],{},"ai.calls",[1101,3680,3681],{},"Call count",[1101,3683,3684],{},"Number of AI calls in this request",[1086,3686,3687,3692,3697],{},[1101,3688,3689],{},[286,3690,3691],{},"ai.model",[1101,3693,3694],{},[286,3695,3696],{},"response.modelId",[1101,3698,3699],{},"Model that served the response",[1086,3701,3702,3707,3710],{},[1101,3703,3704],{},[286,3705,3706],{},"ai.models",[1101,3708,3709],{},"All model IDs",[1101,3711,3712],{},"Array of all models used (only when > 1)",[1086,3714,3715,3720,3725],{},[1101,3716,3717],{},[286,3718,3719],{},"ai.provider",[1101,3721,3722],{},[286,3723,3724],{},"model.provider",[1101,3726,3727,3728,1120,3730,1120,3733,3736],{},"Provider (",[286,3729,914],{},[286,3731,3732],{},"openai",[286,3734,3735],{},"google",", etc.)",[1086,3738,3739,3744,3749],{},[1101,3740,3741],{},[286,3742,3743],{},"ai.inputTokens",[1101,3745,3746],{},[286,3747,3748],{},"usage.inputTokens.total",[1101,3750,3751],{},"Total input tokens across all calls",[1086,3753,3754,3759,3764],{},[1101,3755,3756],{},[286,3757,3758],{},"ai.outputTokens",[1101,3760,3761],{},[286,3762,3763],{},"usage.outputTokens.total",[1101,3765,3766],{},"Total output tokens across all calls",[1086,3768,3769,3774,3777],{},[1101,3770,3771],{},[286,3772,3773],{},"ai.totalTokens",[1101,3775,3776],{},"Computed",[1101,3778,3779],{},[286,3780,3781],{},"inputTokens + outputTokens",[1086,3783,3784,3789,3794],{},[1101,3785,3786],{},[286,3787,3788],{},"ai.cacheReadTokens",[1101,3790,3791],{},[286,3792,3793],{},"usage.inputTokens.cacheRead",[1101,3795,3796],{},"Tokens served from prompt cache",[1086,3798,3799,3804,3809],{},[1101,3800,3801],{},[286,3802,3803],{},"ai.cacheWriteTokens",[1101,3805,3806],{},[286,3807,3808],{},"usage.inputTokens.cacheWrite",[1101,3810,3811],{},"Tokens written to prompt cache",[1086,3813,3814,3819,3824],{},[1101,3815,3816],{},[286,3817,3818],{},"ai.reasoningTokens",[1101,3820,3821],{},[286,3822,3823],{},"usage.outputTokens.reasoning",[1101,3825,3826],{},"Reasoning tokens (extended thinking)",[1086,3828,3829,3834,3839],{},[1101,3830,3831],{},[286,3832,3833],{},"ai.finishReason",[1101,3835,3836],{},[286,3837,3838],{},"finishReason.unified",[1101,3840,3841,3842,1120,3844,3736],{},"Why generation ended (",[286,3843,999],{},[286,3845,3846],{},"tool-calls",[1086,3848,3849,3854,3857],{},[1101,3850,3851],{},[286,3852,3853],{},"ai.toolCalls",[1101,3855,3856],{},"Content \u002F stream chunks",[1101,3858,3859,3862,3863,3866,3867,3869],{},[286,3860,3861],{},"string[]"," of tool names by default, or ",[286,3864,3865],{},"Array\u003C{ name, input }>"," when ",[286,3868,1186],{}," is enabled",[1086,3871,3872,3877,3882],{},[1101,3873,3874],{},[286,3875,3876],{},"ai.responseId",[1101,3878,3879],{},[286,3880,3881],{},"response.id",[1101,3883,3884,3885,484],{},"Provider-assigned response ID (e.g. Anthropic's ",[286,3886,3887],{},"msg_...",[1086,3889,3890,3895,3898],{},[1101,3891,3892],{},[286,3893,3894],{},"ai.steps",[1101,3896,3897],{},"Step count",[1101,3899,3900],{},"Number of LLM calls (only when > 1)",[1086,3902,3903,3908,3911],{},[1101,3904,3905],{},[286,3906,3907],{},"ai.stepsUsage",[1101,3909,3910],{},"Per-step accumulation",[1101,3912,3913],{},"Per-step token and tool call breakdown (only when > 1 step)",[1086,3915,3916,3921,3924],{},[1101,3917,3918],{},[286,3919,3920],{},"ai.msToFirstChunk",[1101,3922,3923],{},"Stream timing",[1101,3925,3926],{},"Time to first text chunk (streaming only)",[1086,3928,3929,3934,3936],{},[1101,3930,3931],{},[286,3932,3933],{},"ai.msToFinish",[1101,3935,3923],{},[1101,3937,3938],{},"Total stream duration (streaming only)",[1086,3940,3941,3946,3948],{},[1101,3942,3943],{},[286,3944,3945],{},"ai.tokensPerSecond",[1101,3947,3776],{},[1101,3949,3950],{},"Output tokens per second (streaming only)",[1086,3952,3953,3958,3961],{},[1101,3954,3955],{},[286,3956,3957],{},"ai.error",[1101,3959,3960],{},"Error capture",[1101,3962,3963],{},"Error message if a model call fails",[378,3965,3967],{"id":3966},"composability","Composability",[283,3969,3970,3973,3974,518],{},[286,3971,3972],{},"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 ",[286,3975,3972],{},[294,3977,3979],{"className":447,"code":3978,"filename":1269,"language":450,"meta":300,"style":300},"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",[286,3980,3981,3999,4019,4038,4042,4064,4076,4098],{"__ignoreMap":300},[304,3982,3983,3985,3987,3989,3991,3993,3995,3997],{"class":306,"line":307},[304,3984,579],{"class":457},[304,3986,582],{"class":476},[304,3988,608],{"class":468},[304,3990,588],{"class":476},[304,3992,591],{"class":457},[304,3994,521],{"class":476},[304,3996,288],{"class":403},[304,3998,599],{"class":476},[304,4000,4001,4003,4005,4008,4010,4012,4014,4017],{"class":306,"line":313},[304,4002,579],{"class":457},[304,4004,582],{"class":476},[304,4006,4007],{"class":468}," withSupermemory",[304,4009,588],{"class":476},[304,4011,591],{"class":457},[304,4013,521],{"class":476},[304,4015,4016],{"class":403},"@supermemory\u002Ftools\u002Fai-sdk",[304,4018,599],{"class":476},[304,4020,4021,4023,4025,4028,4030,4032,4034,4036],{"class":306,"line":320},[304,4022,579],{"class":457},[304,4024,582],{"class":476},[304,4026,4027],{"class":468}," createGateway",[304,4029,588],{"class":476},[304,4031,591],{"class":457},[304,4033,521],{"class":476},[304,4035,855],{"class":403},[304,4037,599],{"class":476},[304,4039,4040],{"class":306,"line":326},[304,4041,317],{"emptyLinePlaceholder":316},[304,4043,4044,4046,4049,4051,4053,4055,4057,4060,4062],{"class":306,"line":332},[304,4045,1282],{"class":472},[304,4047,4048],{"class":468}," gateway ",[304,4050,1288],{"class":476},[304,4052,4027],{"class":464},[304,4054,469],{"class":468},[304,4056,1644],{"class":476},[304,4058,4059],{"class":476}," ...",[304,4061,588],{"class":476},[304,4063,545],{"class":468},[304,4065,4066,4068,4070,4072,4074],{"class":306,"line":338},[304,4067,1282],{"class":472},[304,4069,1285],{"class":468},[304,4071,1288],{"class":476},[304,4073,608],{"class":464},[304,4075,3295],{"class":468},[304,4077,4078,4080,4083,4085,4088,4090,4092,4094,4096],{"class":306,"line":344},[304,4079,1282],{"class":472},[304,4081,4082],{"class":468}," base ",[304,4084,1288],{"class":476},[304,4086,4087],{"class":464}," gateway",[304,4089,469],{"class":468},[304,4091,527],{"class":476},[304,4093,524],{"class":403},[304,4095,527],{"class":476},[304,4097,545],{"class":468},[304,4099,4100,4102,4104,4106,4108,4110,4112,4114,4117,4120,4122,4124,4127,4129,4131,4133,4136,4138,4140,4143,4145,4147],{"class":306,"line":350},[304,4101,1282],{"class":472},[304,4103,3628],{"class":468},[304,4105,1288],{"class":476},[304,4107,668],{"class":468},[304,4109,555],{"class":476},[304,4111,710],{"class":464},[304,4113,469],{"class":468},[304,4115,4116],{"class":464},"withSupermemory",[304,4118,4119],{"class":468},"(base",[304,4121,1296],{"class":476},[304,4123,521],{"class":476},[304,4125,4126],{"class":403},"your-org-id",[304,4128,527],{"class":476},[304,4130,1296],{"class":476},[304,4132,582],{"class":476},[304,4134,4135],{"class":507}," mode",[304,4137,518],{"class":476},[304,4139,521],{"class":476},[304,4141,4142],{"class":403},"full",[304,4144,527],{"class":476},[304,4146,588],{"class":476},[304,4148,3651],{"class":468},[283,4150,4151,4152,4155,4156,518],{},"For explicit middleware composition, use ",[286,4153,4154],{},"createAIMiddleware"," to get the raw middleware and compose it yourself via ",[286,4157,4158],{},"wrapLanguageModel",[294,4160,4162],{"className":447,"code":4161,"filename":1269,"language":450,"meta":300,"style":300},"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",[286,4163,4164,4183,4202,4206,4220,4232,4266],{"__ignoreMap":300},[304,4165,4166,4168,4170,4173,4175,4177,4179,4181],{"class":306,"line":307},[304,4167,579],{"class":457},[304,4169,582],{"class":476},[304,4171,4172],{"class":468}," createAIMiddleware",[304,4174,588],{"class":476},[304,4176,591],{"class":457},[304,4178,521],{"class":476},[304,4180,288],{"class":403},[304,4182,599],{"class":476},[304,4184,4185,4187,4189,4192,4194,4196,4198,4200],{"class":306,"line":313},[304,4186,579],{"class":457},[304,4188,582],{"class":476},[304,4190,4191],{"class":468}," wrapLanguageModel",[304,4193,588],{"class":476},[304,4195,591],{"class":457},[304,4197,521],{"class":476},[304,4199,855],{"class":403},[304,4201,599],{"class":476},[304,4203,4204],{"class":306,"line":320},[304,4205,317],{"emptyLinePlaceholder":316},[304,4207,4208,4210,4212,4214,4216,4218],{"class":306,"line":326},[304,4209,1282],{"class":472},[304,4211,3628],{"class":468},[304,4213,1288],{"class":476},[304,4215,4191],{"class":464},[304,4217,469],{"class":468},[304,4219,510],{"class":476},[304,4221,4222,4225,4227,4230],{"class":306,"line":332},[304,4223,4224],{"class":507},"  model",[304,4226,518],{"class":476},[304,4228,4229],{"class":468}," base",[304,4231,530],{"class":476},[304,4233,4234,4237,4239,4241,4243,4245,4247,4249,4251,4253,4255,4257,4259,4261,4264],{"class":306,"line":338},[304,4235,4236],{"class":507},"  middleware",[304,4238,518],{"class":476},[304,4240,2724],{"class":468},[304,4242,4154],{"class":464},[304,4244,1293],{"class":468},[304,4246,1296],{"class":476},[304,4248,582],{"class":476},[304,4250,1301],{"class":507},[304,4252,518],{"class":476},[304,4254,1307],{"class":1306},[304,4256,588],{"class":476},[304,4258,484],{"class":468},[304,4260,1296],{"class":476},[304,4262,4263],{"class":468}," otherMiddleware]",[304,4265,530],{"class":476},[304,4267,4268,4270],{"class":306,"line":344},[304,4269,566],{"class":476},[304,4271,545],{"class":468},[283,4273,4274,4276,4277,4280,4281,4283,4284,4286,4287,4289,4290,4292],{},[286,4275,4154],{}," returns the same middleware that ",[286,4278,4279],{},"createAILogger"," uses internally. The difference: ",[286,4282,4154],{}," does not include ",[286,4285,2923],{}," (embedding models don't use middleware). Use ",[286,4288,4279],{}," for the full API, ",[286,4291,4154],{}," when you need explicit middleware ordering.",[378,4294,4296],{"id":4295},"error-handling","Error Handling",[283,4298,4299],{},"If a model call fails, the middleware captures the error into the wide event before re-throwing:",[294,4301,4303],{"className":759,"code":4302,"filename":761,"language":762,"meta":300,"style":300},"{\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",[286,4304,4305,4309,4321,4335,4353,4371,4390,4408,4412],{"__ignoreMap":300},[304,4306,4307],{"class":306,"line":307},[304,4308,510],{"class":476},[304,4310,4311,4313,4315,4317,4319],{"class":306,"line":313},[304,4312,773],{"class":476},[304,4314,855],{"class":472},[304,4316,779],{"class":476},[304,4318,518],{"class":476},[304,4320,490],{"class":476},[304,4322,4323,4325,4327,4329,4331,4333],{"class":306,"line":320},[304,4324,866],{"class":476},[304,4326,869],{"class":400},[304,4328,779],{"class":476},[304,4330,518],{"class":476},[304,4332,876],{"class":825},[304,4334,530],{"class":476},[304,4336,4337,4339,4341,4343,4345,4347,4349,4351],{"class":306,"line":326},[304,4338,866],{"class":476},[304,4340,885],{"class":400},[304,4342,779],{"class":476},[304,4344,518],{"class":476},[304,4346,784],{"class":476},[304,4348,894],{"class":403},[304,4350,779],{"class":476},[304,4352,530],{"class":476},[304,4354,4355,4357,4359,4361,4363,4365,4367,4369],{"class":306,"line":332},[304,4356,866],{"class":476},[304,4358,905],{"class":400},[304,4360,779],{"class":476},[304,4362,518],{"class":476},[304,4364,784],{"class":476},[304,4366,914],{"class":403},[304,4368,779],{"class":476},[304,4370,530],{"class":476},[304,4372,4373,4375,4377,4379,4381,4383,4386,4388],{"class":306,"line":338},[304,4374,866],{"class":476},[304,4376,990],{"class":400},[304,4378,779],{"class":476},[304,4380,518],{"class":476},[304,4382,784],{"class":476},[304,4384,4385],{"class":403},"error",[304,4387,779],{"class":476},[304,4389,530],{"class":476},[304,4391,4392,4394,4396,4398,4400,4402,4405],{"class":306,"line":344},[304,4393,866],{"class":476},[304,4395,4385],{"class":400},[304,4397,779],{"class":476},[304,4399,518],{"class":476},[304,4401,784],{"class":476},[304,4403,4404],{"class":403},"API rate limit exceeded",[304,4406,4407],{"class":476},"\"\n",[304,4409,4410],{"class":306,"line":350},[304,4411,1058],{"class":476},[304,4413,4414],{"class":306,"line":356},[304,4415,1064],{"class":476},[283,4417,4418],{},"Stream errors (e.g. content filter) are also captured from the stream's error chunks.",[378,4420,4422],{"id":4421},"works-with-all-frameworks","Works With All Frameworks",[283,4424,4425,4427],{},[286,4426,288],{}," works with any framework that evlog supports:",[386,4429,4430,4501,4595,4690,4779,4849],{},[294,4431,4433],{"className":447,"code":4432,"filename":115,"language":450,"meta":300,"style":300},"import { useLogger } from 'evlog'\nimport { createAILogger } from 'evlog\u002Fai'\n\nconst log = useLogger(event)\nconst ai = createAILogger(log)\n",[286,4434,4435,4453,4471,4475,4489],{"__ignoreMap":300},[304,4436,4437,4439,4441,4443,4445,4447,4449,4451],{"class":306,"line":307},[304,4438,579],{"class":457},[304,4440,582],{"class":476},[304,4442,585],{"class":468},[304,4444,588],{"class":476},[304,4446,591],{"class":457},[304,4448,521],{"class":476},[304,4450,596],{"class":403},[304,4452,599],{"class":476},[304,4454,4455,4457,4459,4461,4463,4465,4467,4469],{"class":306,"line":313},[304,4456,579],{"class":457},[304,4458,582],{"class":476},[304,4460,608],{"class":468},[304,4462,588],{"class":476},[304,4464,591],{"class":457},[304,4466,521],{"class":476},[304,4468,288],{"class":403},[304,4470,599],{"class":476},[304,4472,4473],{"class":306,"line":320},[304,4474,317],{"emptyLinePlaceholder":316},[304,4476,4477,4479,4482,4484,4486],{"class":306,"line":326},[304,4478,1282],{"class":472},[304,4480,4481],{"class":468}," log ",[304,4483,1288],{"class":476},[304,4485,585],{"class":464},[304,4487,4488],{"class":468},"(event)\n",[304,4490,4491,4493,4495,4497,4499],{"class":306,"line":332},[304,4492,1282],{"class":472},[304,4494,1285],{"class":468},[304,4496,1288],{"class":476},[304,4498,608],{"class":464},[304,4500,3295],{"class":468},[294,4502,4504],{"className":447,"code":4503,"filename":145,"language":450,"meta":300,"style":300},"import { createAILogger } from 'evlog\u002Fai'\n\napp.post('\u002Fapi\u002Fchat', (req, res) => {\n  const ai = createAILogger(req.log)\n  \u002F\u002F ...\n})\n",[286,4505,4506,4524,4528,4564,4584,4589],{"__ignoreMap":300},[304,4507,4508,4510,4512,4514,4516,4518,4520,4522],{"class":306,"line":307},[304,4509,579],{"class":457},[304,4511,582],{"class":476},[304,4513,608],{"class":468},[304,4515,588],{"class":476},[304,4517,591],{"class":457},[304,4519,521],{"class":476},[304,4521,288],{"class":403},[304,4523,599],{"class":476},[304,4525,4526],{"class":306,"line":313},[304,4527,317],{"emptyLinePlaceholder":316},[304,4529,4530,4533,4535,4538,4540,4542,4544,4546,4548,4550,4553,4555,4558,4560,4562],{"class":306,"line":320},[304,4531,4532],{"class":468},"app",[304,4534,555],{"class":476},[304,4536,4537],{"class":464},"post",[304,4539,469],{"class":468},[304,4541,527],{"class":476},[304,4543,807],{"class":403},[304,4545,527],{"class":476},[304,4547,1296],{"class":476},[304,4549,477],{"class":476},[304,4551,4552],{"class":480},"req",[304,4554,1296],{"class":476},[304,4556,4557],{"class":480}," res",[304,4559,484],{"class":476},[304,4561,487],{"class":472},[304,4563,490],{"class":476},[304,4565,4566,4568,4570,4572,4574,4576,4578,4580,4582],{"class":306,"line":326},[304,4567,495],{"class":472},[304,4569,668],{"class":468},[304,4571,501],{"class":476},[304,4573,608],{"class":464},[304,4575,469],{"class":507},[304,4577,4552],{"class":468},[304,4579,555],{"class":476},[304,4581,677],{"class":468},[304,4583,545],{"class":507},[304,4585,4586],{"class":306,"line":332},[304,4587,4588],{"class":1276},"  \u002F\u002F ...\n",[304,4590,4591,4593],{"class":306,"line":338},[304,4592,566],{"class":476},[304,4594,545],{"class":468},[294,4596,4598],{"className":447,"code":4597,"filename":150,"language":450,"meta":300,"style":300},"import { createAILogger } from 'evlog\u002Fai'\n\napp.post('\u002Fapi\u002Fchat', (c) => {\n  const ai = createAILogger(c.get('log'))\n  \u002F\u002F ...\n})\n",[286,4599,4600,4618,4622,4651,4680,4684],{"__ignoreMap":300},[304,4601,4602,4604,4606,4608,4610,4612,4614,4616],{"class":306,"line":307},[304,4603,579],{"class":457},[304,4605,582],{"class":476},[304,4607,608],{"class":468},[304,4609,588],{"class":476},[304,4611,591],{"class":457},[304,4613,521],{"class":476},[304,4615,288],{"class":403},[304,4617,599],{"class":476},[304,4619,4620],{"class":306,"line":313},[304,4621,317],{"emptyLinePlaceholder":316},[304,4623,4624,4626,4628,4630,4632,4634,4636,4638,4640,4642,4645,4647,4649],{"class":306,"line":320},[304,4625,4532],{"class":468},[304,4627,555],{"class":476},[304,4629,4537],{"class":464},[304,4631,469],{"class":468},[304,4633,527],{"class":476},[304,4635,807],{"class":403},[304,4637,527],{"class":476},[304,4639,1296],{"class":476},[304,4641,477],{"class":476},[304,4643,4644],{"class":480},"c",[304,4646,484],{"class":476},[304,4648,487],{"class":472},[304,4650,490],{"class":476},[304,4652,4653,4655,4657,4659,4661,4663,4665,4667,4670,4672,4674,4676,4678],{"class":306,"line":326},[304,4654,495],{"class":472},[304,4656,668],{"class":468},[304,4658,501],{"class":476},[304,4660,608],{"class":464},[304,4662,469],{"class":507},[304,4664,4644],{"class":468},[304,4666,555],{"class":476},[304,4668,4669],{"class":464},"get",[304,4671,469],{"class":507},[304,4673,527],{"class":476},[304,4675,677],{"class":403},[304,4677,527],{"class":476},[304,4679,3651],{"class":507},[304,4681,4682],{"class":306,"line":332},[304,4683,4588],{"class":1276},[304,4685,4686,4688],{"class":306,"line":338},[304,4687,566],{"class":476},[304,4689,545],{"class":468},[294,4691,4693],{"className":447,"code":4692,"filename":155,"language":450,"meta":300,"style":300},"import { createAILogger } from 'evlog\u002Fai'\n\napp.post('\u002Fapi\u002Fchat', async (request) => {\n  const ai = createAILogger(request.log)\n  \u002F\u002F ...\n})\n",[286,4694,4695,4713,4717,4749,4769,4773],{"__ignoreMap":300},[304,4696,4697,4699,4701,4703,4705,4707,4709,4711],{"class":306,"line":307},[304,4698,579],{"class":457},[304,4700,582],{"class":476},[304,4702,608],{"class":468},[304,4704,588],{"class":476},[304,4706,591],{"class":457},[304,4708,521],{"class":476},[304,4710,288],{"class":403},[304,4712,599],{"class":476},[304,4714,4715],{"class":306,"line":313},[304,4716,317],{"emptyLinePlaceholder":316},[304,4718,4719,4721,4723,4725,4727,4729,4731,4733,4735,4738,4740,4743,4745,4747],{"class":306,"line":320},[304,4720,4532],{"class":468},[304,4722,555],{"class":476},[304,4724,4537],{"class":464},[304,4726,469],{"class":468},[304,4728,527],{"class":476},[304,4730,807],{"class":403},[304,4732,527],{"class":476},[304,4734,1296],{"class":476},[304,4736,4737],{"class":472}," async",[304,4739,477],{"class":476},[304,4741,4742],{"class":480},"request",[304,4744,484],{"class":476},[304,4746,487],{"class":472},[304,4748,490],{"class":476},[304,4750,4751,4753,4755,4757,4759,4761,4763,4765,4767],{"class":306,"line":326},[304,4752,495],{"class":472},[304,4754,668],{"class":468},[304,4756,501],{"class":476},[304,4758,608],{"class":464},[304,4760,469],{"class":507},[304,4762,4742],{"class":468},[304,4764,555],{"class":476},[304,4766,677],{"class":468},[304,4768,545],{"class":507},[304,4770,4771],{"class":306,"line":332},[304,4772,4588],{"class":1276},[304,4774,4775,4777],{"class":306,"line":338},[304,4776,566],{"class":476},[304,4778,545],{"class":468},[294,4780,4782],{"className":447,"code":4781,"filename":140,"language":450,"meta":300,"style":300},"import { useLogger } from 'evlog\u002Fnestjs'\nimport { createAILogger } from 'evlog\u002Fai'\n\nconst log = useLogger()\nconst ai = createAILogger(log)\n",[286,4783,4784,4803,4821,4825,4837],{"__ignoreMap":300},[304,4785,4786,4788,4790,4792,4794,4796,4798,4801],{"class":306,"line":307},[304,4787,579],{"class":457},[304,4789,582],{"class":476},[304,4791,585],{"class":468},[304,4793,588],{"class":476},[304,4795,591],{"class":457},[304,4797,521],{"class":476},[304,4799,4800],{"class":403},"evlog\u002Fnestjs",[304,4802,599],{"class":476},[304,4804,4805,4807,4809,4811,4813,4815,4817,4819],{"class":306,"line":313},[304,4806,579],{"class":457},[304,4808,582],{"class":476},[304,4810,608],{"class":468},[304,4812,588],{"class":476},[304,4814,591],{"class":457},[304,4816,521],{"class":476},[304,4818,288],{"class":403},[304,4820,599],{"class":476},[304,4822,4823],{"class":306,"line":320},[304,4824,317],{"emptyLinePlaceholder":316},[304,4826,4827,4829,4831,4833,4835],{"class":306,"line":326},[304,4828,1282],{"class":472},[304,4830,4481],{"class":468},[304,4832,1288],{"class":476},[304,4834,585],{"class":464},[304,4836,561],{"class":468},[304,4838,4839,4841,4843,4845,4847],{"class":306,"line":332},[304,4840,1282],{"class":472},[304,4842,1285],{"class":468},[304,4844,1288],{"class":476},[304,4846,608],{"class":464},[304,4848,3295],{"class":468},[294,4850,4852],{"className":447,"code":4851,"filename":175,"language":450,"meta":300,"style":300},"import { createLogger } from 'evlog'\nimport { createAILogger } from 'evlog\u002Fai'\n\nconst log = createLogger()\nconst ai = createAILogger(log)\n\u002F\u002F ...\nlog.emit()\n",[286,4853,4854,4873,4891,4895,4907,4919,4924],{"__ignoreMap":300},[304,4855,4856,4858,4860,4863,4865,4867,4869,4871],{"class":306,"line":307},[304,4857,579],{"class":457},[304,4859,582],{"class":476},[304,4861,4862],{"class":468}," createLogger",[304,4864,588],{"class":476},[304,4866,591],{"class":457},[304,4868,521],{"class":476},[304,4870,596],{"class":403},[304,4872,599],{"class":476},[304,4874,4875,4877,4879,4881,4883,4885,4887,4889],{"class":306,"line":313},[304,4876,579],{"class":457},[304,4878,582],{"class":476},[304,4880,608],{"class":468},[304,4882,588],{"class":476},[304,4884,591],{"class":457},[304,4886,521],{"class":476},[304,4888,288],{"class":403},[304,4890,599],{"class":476},[304,4892,4893],{"class":306,"line":320},[304,4894,317],{"emptyLinePlaceholder":316},[304,4896,4897,4899,4901,4903,4905],{"class":306,"line":326},[304,4898,1282],{"class":472},[304,4900,4481],{"class":468},[304,4902,1288],{"class":476},[304,4904,4862],{"class":464},[304,4906,561],{"class":468},[304,4908,4909,4911,4913,4915,4917],{"class":306,"line":332},[304,4910,1282],{"class":472},[304,4912,1285],{"class":468},[304,4914,1288],{"class":476},[304,4916,608],{"class":464},[304,4918,3295],{"class":468},[304,4920,4921],{"class":306,"line":338},[304,4922,4923],{"class":1276},"\u002F\u002F ...\n",[304,4925,4926,4928,4930,4933],{"class":306,"line":344},[304,4927,677],{"class":468},[304,4929,555],{"class":476},[304,4931,4932],{"class":464},"emit",[304,4934,561],{"class":468},[4936,4937,4938],"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":300,"searchDepth":313,"depth":313,"links":4940},[4941,4942,4943,4946,4954,4955,4956,4957],{"id":380,"depth":313,"text":381},{"id":439,"depth":313,"text":20},{"id":1067,"depth":313,"text":1068,"children":4944},[4945],{"id":1159,"depth":320,"text":1160},{"id":1494,"depth":313,"text":1495,"children":4947},[4948,4949,4950,4951,4952,4953],{"id":1498,"depth":320,"text":1123},{"id":1796,"depth":320,"text":1119},{"id":1997,"depth":320,"text":1998},{"id":2916,"depth":320,"text":2917},{"id":3264,"depth":320,"text":3265},{"id":3585,"depth":320,"text":3586},{"id":3654,"depth":313,"text":3655},{"id":3966,"depth":313,"text":3967},{"id":4295,"depth":313,"text":4296},{"id":4421,"depth":313,"text":4422},"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",[4961,4964],{"label":46,"icon":49,"to":47,"color":4962,"variant":4963},"neutral","subtle",{"label":189,"icon":4965,"to":194,"color":4962,"variant":4963},"i-lucide-plug",{},{"icon":64},{"title":61,"description":4958},"NmuvXC_sp-MwFjjU7QAtRX80ozfUTd3YaMldSXE5-3Y",[4971,4973],{"title":56,"path":57,"stem":58,"description":4972,"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":71,"path":72,"stem":73,"description":4974,"icon":74,"children":-1},"Understand the full lifecycle of an evlog event, from creation to drain. Covers all three modes (simple logging, wide events, request logging), sampling, enrichment, and delivery.",1775289477915]