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