[{"data":1,"prerenderedAt":2276},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-ai-sdk-metadata":444,"-use-cases-ai-sdk-metadata-surround":2271},[4,30,80,245,358,413],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Start","\u002Fstart","1.start",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":25,"path":26,"stem":27,"icon":28},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Learn","\u002Flearn","2.learn",[35,40,45,50,55,60,65,70,75],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":46,"path":47,"stem":48,"icon":49},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":51,"path":52,"stem":53,"icon":54},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":56,"path":57,"stem":58,"icon":59},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":61,"path":62,"stem":63,"icon":64},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":66,"path":67,"stem":68,"icon":69},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":71,"path":72,"stem":73,"icon":74},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":76,"path":77,"stem":78,"icon":79},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":81,"path":82,"stem":83,"children":84,"page":29},"Integrate","\u002Fintegrate","3.integrate",[85,89,157],{"title":36,"path":86,"stem":87,"icon":88},"\u002Fintegrate\u002Foverview","3.integrate\u002F0.overview","i-lucide-plug",{"title":90,"path":91,"stem":92,"children":93,"page":29},"Adapters","\u002Fintegrate\u002Fadapters","3.integrate\u002Fadapters",[94,97,137],{"title":36,"path":95,"stem":96,"icon":39},"\u002Fintegrate\u002Fadapters\u002Foverview","3.integrate\u002Fadapters\u002F01.overview",{"title":98,"path":99,"stem":100,"children":101,"page":29},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","3.integrate\u002Fadapters\u002Fcloud",[102,107,112,117,122,127,132],{"title":103,"path":104,"stem":105,"icon":106},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","3.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":108,"path":109,"stem":110,"icon":111},"OTLP","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fotlp","3.integrate\u002Fadapters\u002Fcloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":113,"path":114,"stem":115,"icon":116},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","3.integrate\u002Fadapters\u002Fcloud\u002F03.posthog","i-simple-icons-posthog",{"title":118,"path":119,"stem":120,"icon":121},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","3.integrate\u002Fadapters\u002Fcloud\u002F04.sentry","i-simple-icons-sentry",{"title":123,"path":124,"stem":125,"icon":126},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","3.integrate\u002Fadapters\u002Fcloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":128,"path":129,"stem":130,"icon":131},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","3.integrate\u002Fadapters\u002Fcloud\u002F06.datadog","i-simple-icons-datadog",{"title":133,"path":134,"stem":135,"icon":136},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fhyperdx","3.integrate\u002Fadapters\u002Fcloud\u002F07.hyperdx","i-custom-hyperdx",{"title":138,"path":139,"stem":140,"children":141,"page":29},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","3.integrate\u002Fadapters\u002Fself-hosted",[142,147,152],{"title":143,"path":144,"stem":145,"icon":146},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","3.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":148,"path":149,"stem":150,"icon":151},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","3.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":153,"path":154,"stem":155,"icon":156},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","3.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":158,"path":159,"stem":160,"children":161,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","3.integrate\u002Fframeworks",[162,166,171,176,181,186,191,196,201,206,211,216,221,226,230,235,240],{"title":36,"path":163,"stem":164,"icon":165},"\u002Fintegrate\u002Fframeworks\u002Foverview","3.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":167,"path":168,"stem":169,"icon":170},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","3.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":172,"path":173,"stem":174,"icon":175},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","3.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":177,"path":178,"stem":179,"icon":180},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","3.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":182,"path":183,"stem":184,"icon":185},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","3.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":187,"path":188,"stem":189,"icon":190},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","3.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":192,"path":193,"stem":194,"icon":195},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","3.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":197,"path":198,"stem":199,"icon":200},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","3.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":202,"path":203,"stem":204,"icon":205},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","3.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":207,"path":208,"stem":209,"icon":210},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","3.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":212,"path":213,"stem":214,"icon":215},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","3.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":217,"path":218,"stem":219,"icon":220},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","3.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":222,"path":223,"stem":224,"icon":225},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","3.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":227,"path":228,"stem":229,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","3.integrate\u002Fframeworks\u002F13.standalone",{"title":231,"path":232,"stem":233,"icon":234},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","3.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":236,"path":237,"stem":238,"icon":239},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","3.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":241,"path":242,"stem":243,"icon":244},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","3.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":246,"path":247,"stem":248,"children":249,"page":29},"Use Cases","\u002Fuse-cases","4.use-cases",[250,254,259,288,316,348,353],{"title":36,"path":251,"stem":252,"icon":253},"\u002Fuse-cases\u002Foverview","4.use-cases\u002F0.overview","i-lucide-list-checks",{"title":255,"path":256,"stem":257,"icon":258},"Client Logging","\u002Fuse-cases\u002Fclient-logging","4.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":260,"icon":261,"path":262,"stem":263,"children":264,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","4.use-cases\u002F2.ai-sdk",[265,268,273,278,283],{"title":36,"path":266,"stem":267,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","4.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":269,"path":270,"stem":271,"icon":272},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","4.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":274,"path":275,"stem":276,"icon":277},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","4.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":279,"path":280,"stem":281,"icon":282},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","4.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":284,"path":285,"stem":286,"icon":287},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","4.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":289,"icon":290,"path":291,"stem":292,"children":293,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","4.use-cases\u002F3.better-auth",[294,297,302,307,311],{"title":36,"path":295,"stem":296,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","4.use-cases\u002F3.better-auth\u002F01.overview",{"title":298,"path":299,"stem":300,"icon":301},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","4.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":303,"path":304,"stem":305,"icon":306},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","4.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":308,"path":309,"stem":310,"icon":258},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","4.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":312,"path":313,"stem":314,"icon":315},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","4.use-cases\u002F3.better-auth\u002F05.performance","i-lucide-gauge",{"title":317,"icon":318,"path":319,"stem":320,"children":321,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","4.use-cases\u002F4.audit",[322,325,330,335,340,344],{"title":36,"path":323,"stem":324,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","4.use-cases\u002F4.audit\u002F01.overview",{"title":326,"path":327,"stem":328,"icon":329},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","4.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":331,"path":332,"stem":333,"icon":334},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","4.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":336,"path":337,"stem":338,"icon":339},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","4.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":341,"path":342,"stem":343,"icon":318},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","4.use-cases\u002F4.audit\u002F05.compliance",{"title":345,"path":346,"stem":347,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","4.use-cases\u002F4.audit\u002F06.recipes",{"title":349,"path":350,"stem":351,"icon":352},"Enrichers","\u002Fuse-cases\u002Fenrichers","4.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":354,"path":355,"stem":356,"icon":357},"eve","\u002Fuse-cases\u002Feve","4.use-cases\u002F5.eve","i-custom-eve",{"title":359,"path":360,"stem":361,"children":362,"page":29},"Extend","\u002Fextend","5.extend",[363,367,372,377,382,386,390,394,398,403,408],{"title":36,"path":364,"stem":365,"icon":366},"\u002Fextend\u002Foverview","5.extend\u002F0.overview","i-lucide-blocks",{"title":368,"path":369,"stem":370,"icon":371},"Stream","\u002Fextend\u002Fstream","5.extend\u002F1.stream","i-lucide-radio-tower",{"title":373,"path":374,"stem":375,"icon":376},"Custom framework","\u002Fextend\u002Fcustom-framework","5.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":378,"path":379,"stem":380,"icon":381},"FS reader","\u002Fextend\u002Ffs-reader","5.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":345,"path":383,"stem":384,"icon":385},"\u002Fextend\u002Fconsumer-recipes","5.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":387,"path":388,"stem":389,"icon":366},"Plugins","\u002Fextend\u002Fplugins","5.extend\u002F4.plugins",{"title":391,"path":392,"stem":393,"icon":352},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","5.extend\u002F5.custom-enrichers",{"title":395,"path":396,"stem":397,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","5.extend\u002F6.tail-sampling",{"title":399,"path":400,"stem":401,"icon":402},"Identity headers","\u002Fextend\u002Fidentity-headers","5.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":404,"path":405,"stem":406,"icon":407},"Custom drains","\u002Fextend\u002Fcustom-drains","5.extend\u002F8.custom-drains","i-lucide-share-2",{"title":409,"path":410,"stem":411,"icon":412},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","5.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":414,"path":415,"stem":416,"children":417,"page":29},"Reference","\u002Freference","6.reference",[418,423,426,431,435,440],{"title":419,"path":420,"stem":421,"icon":422},"Configuration","\u002Freference\u002Fconfiguration","6.reference\u002F1.configuration","i-lucide-settings",{"title":312,"path":424,"stem":425,"icon":315},"\u002Freference\u002Fperformance","6.reference\u002F2.performance",{"title":427,"path":428,"stem":429,"icon":430},"Vite Plugin","\u002Freference\u002Fvite-plugin","6.reference\u002F3.vite-plugin","i-custom-vite",{"title":432,"path":433,"stem":434,"icon":318},"Best Practices","\u002Freference\u002Fbest-practices","6.reference\u002F4.best-practices",{"title":436,"path":437,"stem":438,"icon":439},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","6.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":441,"path":442,"stem":443,"icon":352},"Agent Skills","\u002Freference\u002Fagent-skills","6.reference\u002F6.agent-skills",{"id":445,"title":446,"body":447,"description":2260,"extension":2261,"links":2262,"meta":2267,"navigation":2268,"path":280,"seo":2269,"stem":281,"__hash__":2270},"docs\u002F4.use-cases\u002F2.ai-sdk\u002F04.metadata.md","Access Metadata",{"type":448,"value":449,"toc":2249},"minimark",[450,459,465,473,487,1000,1003,1010,1025,1201,1208,1211,1237,1240,1634,1637,1689,1695,1709,1847,1851,1857,2245],[451,452,453,454,458],"p",{},"The wide event already contains the full ",[455,456,457],"code",{},"ai"," metadata, but you often want the same data inside your handler — to persist it, surface it to end-users, bill against it, or stream incremental progress to the client.",[451,460,461,464],{},[455,462,463],{},"AILogger"," exposes three methods for that, with no need to touch internal state.",[466,467,469,472],"h2",{"id":468},"getmetadata-final-snapshot",[455,470,471],{},"getMetadata()"," — final snapshot",[451,474,475,476,479,480,482,483,486],{},"Returns a structured ",[455,477,478],{},"AIMetadata"," object that mirrors the ",[455,481,457],{}," field on the wide event. Safe to call at any point, including after the run completes or inside the AI SDK's ",[455,484,485],{},"onFinish",":",[488,489,495],"pre",{"className":490,"code":491,"filename":492,"language":493,"meta":494,"style":494},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { useLogger } from 'evlog'\nimport { createAILogger } from 'evlog\u002Fai'\nimport { generateText } from 'ai'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n  const ai = createAILogger(log, {\n    cost: { 'claude-sonnet-4.6': { input: 3, output: 15 } },\n  })\n\n  await generateText({\n    model: ai.wrap('anthropic\u002Fclaude-sonnet-4.6'),\n    prompt: 'Summarize this document',\n  })\n\n  const metadata = ai.getMetadata()\n\n  await db.aiRuns.insert({\n    userId: event.context.userId,\n    model: metadata.model,\n    inputTokens: metadata.inputTokens,\n    outputTokens: metadata.outputTokens,\n    estimatedCost: metadata.estimatedCost,\n    finishReason: metadata.finishReason,\n    responseId: metadata.responseId,\n  })\n\n  return { ok: true }\n})\n","server\u002Fapi\u002Fchat.post.ts","typescript","",[455,496,497,530,551,571,578,614,636,658,704,712,717,730,760,777,784,789,809,814,836,859,875,892,909,926,943,960,967,972,992],{"__ignoreMap":494},[498,499,502,506,510,514,517,520,523,527],"span",{"class":500,"line":501},"line",1,[498,503,505],{"class":504},"s7zQu","import",[498,507,509],{"class":508},"sMK4o"," {",[498,511,513],{"class":512},"sTEyZ"," useLogger",[498,515,516],{"class":508}," }",[498,518,519],{"class":504}," from",[498,521,522],{"class":508}," '",[498,524,526],{"class":525},"sfazB","evlog",[498,528,529],{"class":508},"'\n",[498,531,533,535,537,540,542,544,546,549],{"class":500,"line":532},2,[498,534,505],{"class":504},[498,536,509],{"class":508},[498,538,539],{"class":512}," createAILogger",[498,541,516],{"class":508},[498,543,519],{"class":504},[498,545,522],{"class":508},[498,547,548],{"class":525},"evlog\u002Fai",[498,550,529],{"class":508},[498,552,554,556,558,561,563,565,567,569],{"class":500,"line":553},3,[498,555,505],{"class":504},[498,557,509],{"class":508},[498,559,560],{"class":512}," generateText",[498,562,516],{"class":508},[498,564,519],{"class":504},[498,566,522],{"class":508},[498,568,457],{"class":525},[498,570,529],{"class":508},[498,572,574],{"class":500,"line":573},4,[498,575,577],{"emptyLinePlaceholder":576},true,"\n",[498,579,581,584,587,591,594,598,601,605,608,611],{"class":500,"line":580},5,[498,582,583],{"class":504},"export",[498,585,586],{"class":504}," default",[498,588,590],{"class":589},"s2Zo4"," defineEventHandler",[498,592,593],{"class":512},"(",[498,595,597],{"class":596},"spNyl","async",[498,599,600],{"class":508}," (",[498,602,604],{"class":603},"sHdIc","event",[498,606,607],{"class":508},")",[498,609,610],{"class":596}," =>",[498,612,613],{"class":508}," {\n",[498,615,617,620,623,626,628,631,633],{"class":500,"line":616},6,[498,618,619],{"class":596},"  const",[498,621,622],{"class":512}," log",[498,624,625],{"class":508}," =",[498,627,513],{"class":589},[498,629,593],{"class":630},"swJcz",[498,632,604],{"class":512},[498,634,635],{"class":630},")\n",[498,637,639,641,644,646,648,650,653,656],{"class":500,"line":638},7,[498,640,619],{"class":596},[498,642,643],{"class":512}," ai",[498,645,625],{"class":508},[498,647,539],{"class":589},[498,649,593],{"class":630},[498,651,652],{"class":512},"log",[498,654,655],{"class":508},",",[498,657,613],{"class":508},[498,659,661,664,666,668,670,673,676,678,680,683,685,689,691,694,696,699,701],{"class":500,"line":660},8,[498,662,663],{"class":630},"    cost",[498,665,486],{"class":508},[498,667,509],{"class":508},[498,669,522],{"class":508},[498,671,672],{"class":630},"claude-sonnet-4.6",[498,674,675],{"class":508},"'",[498,677,486],{"class":508},[498,679,509],{"class":508},[498,681,682],{"class":630}," input",[498,684,486],{"class":508},[498,686,688],{"class":687},"sbssI"," 3",[498,690,655],{"class":508},[498,692,693],{"class":630}," output",[498,695,486],{"class":508},[498,697,698],{"class":687}," 15",[498,700,516],{"class":508},[498,702,703],{"class":508}," },\n",[498,705,707,710],{"class":500,"line":706},9,[498,708,709],{"class":508},"  }",[498,711,635],{"class":630},[498,713,715],{"class":500,"line":714},10,[498,716,577],{"emptyLinePlaceholder":576},[498,718,720,723,725,727],{"class":500,"line":719},11,[498,721,722],{"class":504},"  await",[498,724,560],{"class":589},[498,726,593],{"class":630},[498,728,729],{"class":508},"{\n",[498,731,733,736,738,740,743,746,748,750,753,755,757],{"class":500,"line":732},12,[498,734,735],{"class":630},"    model",[498,737,486],{"class":508},[498,739,643],{"class":512},[498,741,742],{"class":508},".",[498,744,745],{"class":589},"wrap",[498,747,593],{"class":630},[498,749,675],{"class":508},[498,751,752],{"class":525},"anthropic\u002Fclaude-sonnet-4.6",[498,754,675],{"class":508},[498,756,607],{"class":630},[498,758,759],{"class":508},",\n",[498,761,763,766,768,770,773,775],{"class":500,"line":762},13,[498,764,765],{"class":630},"    prompt",[498,767,486],{"class":508},[498,769,522],{"class":508},[498,771,772],{"class":525},"Summarize this document",[498,774,675],{"class":508},[498,776,759],{"class":508},[498,778,780,782],{"class":500,"line":779},14,[498,781,709],{"class":508},[498,783,635],{"class":630},[498,785,787],{"class":500,"line":786},15,[498,788,577],{"emptyLinePlaceholder":576},[498,790,792,794,797,799,801,803,806],{"class":500,"line":791},16,[498,793,619],{"class":596},[498,795,796],{"class":512}," metadata",[498,798,625],{"class":508},[498,800,643],{"class":512},[498,802,742],{"class":508},[498,804,805],{"class":589},"getMetadata",[498,807,808],{"class":630},"()\n",[498,810,812],{"class":500,"line":811},17,[498,813,577],{"emptyLinePlaceholder":576},[498,815,817,819,822,824,827,829,832,834],{"class":500,"line":816},18,[498,818,722],{"class":504},[498,820,821],{"class":512}," db",[498,823,742],{"class":508},[498,825,826],{"class":512},"aiRuns",[498,828,742],{"class":508},[498,830,831],{"class":589},"insert",[498,833,593],{"class":630},[498,835,729],{"class":508},[498,837,839,842,844,847,849,852,854,857],{"class":500,"line":838},19,[498,840,841],{"class":630},"    userId",[498,843,486],{"class":508},[498,845,846],{"class":512}," event",[498,848,742],{"class":508},[498,850,851],{"class":512},"context",[498,853,742],{"class":508},[498,855,856],{"class":512},"userId",[498,858,759],{"class":508},[498,860,862,864,866,868,870,873],{"class":500,"line":861},20,[498,863,735],{"class":630},[498,865,486],{"class":508},[498,867,796],{"class":512},[498,869,742],{"class":508},[498,871,872],{"class":512},"model",[498,874,759],{"class":508},[498,876,878,881,883,885,887,890],{"class":500,"line":877},21,[498,879,880],{"class":630},"    inputTokens",[498,882,486],{"class":508},[498,884,796],{"class":512},[498,886,742],{"class":508},[498,888,889],{"class":512},"inputTokens",[498,891,759],{"class":508},[498,893,895,898,900,902,904,907],{"class":500,"line":894},22,[498,896,897],{"class":630},"    outputTokens",[498,899,486],{"class":508},[498,901,796],{"class":512},[498,903,742],{"class":508},[498,905,906],{"class":512},"outputTokens",[498,908,759],{"class":508},[498,910,912,915,917,919,921,924],{"class":500,"line":911},23,[498,913,914],{"class":630},"    estimatedCost",[498,916,486],{"class":508},[498,918,796],{"class":512},[498,920,742],{"class":508},[498,922,923],{"class":512},"estimatedCost",[498,925,759],{"class":508},[498,927,929,932,934,936,938,941],{"class":500,"line":928},24,[498,930,931],{"class":630},"    finishReason",[498,933,486],{"class":508},[498,935,796],{"class":512},[498,937,742],{"class":508},[498,939,940],{"class":512},"finishReason",[498,942,759],{"class":508},[498,944,946,949,951,953,955,958],{"class":500,"line":945},25,[498,947,948],{"class":630},"    responseId",[498,950,486],{"class":508},[498,952,796],{"class":512},[498,954,742],{"class":508},[498,956,957],{"class":512},"responseId",[498,959,759],{"class":508},[498,961,963,965],{"class":500,"line":962},26,[498,964,709],{"class":508},[498,966,635],{"class":630},[498,968,970],{"class":500,"line":969},27,[498,971,577],{"emptyLinePlaceholder":576},[498,973,975,978,980,983,985,989],{"class":500,"line":974},28,[498,976,977],{"class":504},"  return",[498,979,509],{"class":508},[498,981,982],{"class":630}," ok",[498,984,486],{"class":508},[498,986,988],{"class":987},"sfNiH"," true",[498,990,991],{"class":508}," }\n",[498,993,995,998],{"class":500,"line":994},29,[498,996,997],{"class":508},"}",[498,999,635],{"class":512},[451,1001,1002],{},"The snapshot is a fresh copy: mutating it never affects the underlying state or subsequent calls.",[466,1004,1006,1009],{"id":1005},"getestimatedcost-quick-cost-check",[455,1007,1008],{},"getEstimatedCost()"," — quick cost check",[451,1011,1012,1013,1016,1017,1020,1021,1024],{},"Convenience for ",[455,1014,1015],{},"getMetadata().estimatedCost",". Returns the cost in dollars, or ",[455,1018,1019],{},"undefined"," if no ",[455,1022,1023],{},"cost"," map was provided or the model is not in the map.",[488,1026,1028],{"className":490,"code":1027,"language":493,"meta":494,"style":494},"const ai = createAILogger(log, {\n  cost: { 'claude-sonnet-4.6': { input: 3, output: 15 } },\n})\n\nawait generateText({ model: ai.wrap('anthropic\u002Fclaude-sonnet-4.6'), prompt })\n\nconst cost = ai.getEstimatedCost()\nconsole.log(`This call cost $${cost?.toFixed(4)}`)\n",[455,1029,1030,1050,1087,1093,1097,1139,1143,1161],{"__ignoreMap":494},[498,1031,1032,1035,1038,1041,1043,1046,1048],{"class":500,"line":501},[498,1033,1034],{"class":596},"const",[498,1036,1037],{"class":512}," ai ",[498,1039,1040],{"class":508},"=",[498,1042,539],{"class":589},[498,1044,1045],{"class":512},"(log",[498,1047,655],{"class":508},[498,1049,613],{"class":508},[498,1051,1052,1055,1057,1059,1061,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1083,1085],{"class":500,"line":532},[498,1053,1054],{"class":630},"  cost",[498,1056,486],{"class":508},[498,1058,509],{"class":508},[498,1060,522],{"class":508},[498,1062,672],{"class":630},[498,1064,675],{"class":508},[498,1066,486],{"class":508},[498,1068,509],{"class":508},[498,1070,682],{"class":630},[498,1072,486],{"class":508},[498,1074,688],{"class":687},[498,1076,655],{"class":508},[498,1078,693],{"class":630},[498,1080,486],{"class":508},[498,1082,698],{"class":687},[498,1084,516],{"class":508},[498,1086,703],{"class":508},[498,1088,1089,1091],{"class":500,"line":553},[498,1090,997],{"class":508},[498,1092,635],{"class":512},[498,1094,1095],{"class":500,"line":573},[498,1096,577],{"emptyLinePlaceholder":576},[498,1098,1099,1102,1104,1106,1109,1112,1114,1116,1118,1120,1122,1124,1126,1128,1130,1132,1135,1137],{"class":500,"line":580},[498,1100,1101],{"class":504},"await",[498,1103,560],{"class":589},[498,1105,593],{"class":512},[498,1107,1108],{"class":508},"{",[498,1110,1111],{"class":630}," model",[498,1113,486],{"class":508},[498,1115,643],{"class":512},[498,1117,742],{"class":508},[498,1119,745],{"class":589},[498,1121,593],{"class":512},[498,1123,675],{"class":508},[498,1125,752],{"class":525},[498,1127,675],{"class":508},[498,1129,607],{"class":512},[498,1131,655],{"class":508},[498,1133,1134],{"class":512}," prompt ",[498,1136,997],{"class":508},[498,1138,635],{"class":512},[498,1140,1141],{"class":500,"line":616},[498,1142,577],{"emptyLinePlaceholder":576},[498,1144,1145,1147,1150,1152,1154,1156,1159],{"class":500,"line":638},[498,1146,1034],{"class":596},[498,1148,1149],{"class":512}," cost ",[498,1151,1040],{"class":508},[498,1153,643],{"class":512},[498,1155,742],{"class":508},[498,1157,1158],{"class":589},"getEstimatedCost",[498,1160,808],{"class":512},[498,1162,1163,1166,1168,1170,1172,1175,1178,1181,1183,1186,1189,1191,1194,1196,1199],{"class":500,"line":660},[498,1164,1165],{"class":512},"console",[498,1167,742],{"class":508},[498,1169,652],{"class":589},[498,1171,593],{"class":512},[498,1173,1174],{"class":508},"`",[498,1176,1177],{"class":525},"This call cost $",[498,1179,1180],{"class":508},"${",[498,1182,1023],{"class":512},[498,1184,1185],{"class":508},"?.",[498,1187,1188],{"class":589},"toFixed",[498,1190,593],{"class":512},[498,1192,1193],{"class":687},"4",[498,1195,607],{"class":512},[498,1197,1198],{"class":508},"}`",[498,1200,635],{"class":512},[466,1202,1204,1207],{"id":1203},"onupdatecallback-incremental-updates",[455,1205,1206],{},"onUpdate(callback)"," — incremental updates",[451,1209,1210],{},"Subscribe to metadata updates. The callback fires every time the underlying state flushes:",[1212,1213,1214,1218,1225,1228],"ul",{},[1215,1216,1217],"li",{},"Once per step in multi-step agent runs",[1215,1219,1220,1221,1224],{},"Once per ",[455,1222,1223],{},"captureEmbed"," call",[1215,1226,1227],{},"On model errors",[1215,1229,1230,1231,1234,1235],{},"On ",[455,1232,1233],{},"createEvlogIntegration","'s ",[455,1236,485],{},[451,1238,1239],{},"Each invocation receives a fresh snapshot. Returns an unsubscribe function. Subscriber errors are isolated and never break the AI flow.",[488,1241,1244],{"className":490,"code":1242,"filename":1243,"language":493,"meta":494,"style":494},"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\n  ai.onUpdate((metadata) => {\n    pushToClient(event, {\n      type: 'ai-progress',\n      step: metadata.steps,\n      tokens: metadata.totalTokens,\n      cost: metadata.estimatedCost,\n    })\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({ agent, uiMessages: messages })\n})\n","server\u002Fapi\u002Fagent.post.ts",[455,1245,1246,1275,1293,1311,1315,1337,1353,1378,1394,1398,1421,1434,1450,1466,1482,1497,1504,1510,1514,1532,1556,1575,1593,1599,1603,1628],{"__ignoreMap":494},[498,1247,1248,1250,1252,1255,1257,1260,1262,1265,1267,1269,1271,1273],{"class":500,"line":501},[498,1249,505],{"class":504},[498,1251,509],{"class":508},[498,1253,1254],{"class":512}," ToolLoopAgent",[498,1256,655],{"class":508},[498,1258,1259],{"class":512}," createAgentUIStreamResponse",[498,1261,655],{"class":508},[498,1263,1264],{"class":512}," stepCountIs",[498,1266,516],{"class":508},[498,1268,519],{"class":504},[498,1270,522],{"class":508},[498,1272,457],{"class":525},[498,1274,529],{"class":508},[498,1276,1277,1279,1281,1283,1285,1287,1289,1291],{"class":500,"line":532},[498,1278,505],{"class":504},[498,1280,509],{"class":508},[498,1282,513],{"class":512},[498,1284,516],{"class":508},[498,1286,519],{"class":504},[498,1288,522],{"class":508},[498,1290,526],{"class":525},[498,1292,529],{"class":508},[498,1294,1295,1297,1299,1301,1303,1305,1307,1309],{"class":500,"line":553},[498,1296,505],{"class":504},[498,1298,509],{"class":508},[498,1300,539],{"class":512},[498,1302,516],{"class":508},[498,1304,519],{"class":504},[498,1306,522],{"class":508},[498,1308,548],{"class":525},[498,1310,529],{"class":508},[498,1312,1313],{"class":500,"line":573},[498,1314,577],{"emptyLinePlaceholder":576},[498,1316,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335],{"class":500,"line":580},[498,1318,583],{"class":504},[498,1320,586],{"class":504},[498,1322,590],{"class":589},[498,1324,593],{"class":512},[498,1326,597],{"class":596},[498,1328,600],{"class":508},[498,1330,604],{"class":603},[498,1332,607],{"class":508},[498,1334,610],{"class":596},[498,1336,613],{"class":508},[498,1338,1339,1341,1343,1345,1347,1349,1351],{"class":500,"line":616},[498,1340,619],{"class":596},[498,1342,622],{"class":512},[498,1344,625],{"class":508},[498,1346,513],{"class":589},[498,1348,593],{"class":630},[498,1350,604],{"class":512},[498,1352,635],{"class":630},[498,1354,1355,1357,1359,1362,1364,1366,1369,1372,1374,1376],{"class":500,"line":638},[498,1356,619],{"class":596},[498,1358,509],{"class":508},[498,1360,1361],{"class":512}," messages",[498,1363,516],{"class":508},[498,1365,625],{"class":508},[498,1367,1368],{"class":504}," await",[498,1370,1371],{"class":589}," readBody",[498,1373,593],{"class":630},[498,1375,604],{"class":512},[498,1377,635],{"class":630},[498,1379,1380,1382,1384,1386,1388,1390,1392],{"class":500,"line":660},[498,1381,619],{"class":596},[498,1383,643],{"class":512},[498,1385,625],{"class":508},[498,1387,539],{"class":589},[498,1389,593],{"class":630},[498,1391,652],{"class":512},[498,1393,635],{"class":630},[498,1395,1396],{"class":500,"line":706},[498,1397,577],{"emptyLinePlaceholder":576},[498,1399,1400,1403,1405,1408,1410,1412,1415,1417,1419],{"class":500,"line":714},[498,1401,1402],{"class":512},"  ai",[498,1404,742],{"class":508},[498,1406,1407],{"class":589},"onUpdate",[498,1409,593],{"class":630},[498,1411,593],{"class":508},[498,1413,1414],{"class":603},"metadata",[498,1416,607],{"class":508},[498,1418,610],{"class":596},[498,1420,613],{"class":508},[498,1422,1423,1426,1428,1430,1432],{"class":500,"line":719},[498,1424,1425],{"class":589},"    pushToClient",[498,1427,593],{"class":630},[498,1429,604],{"class":512},[498,1431,655],{"class":508},[498,1433,613],{"class":508},[498,1435,1436,1439,1441,1443,1446,1448],{"class":500,"line":732},[498,1437,1438],{"class":630},"      type",[498,1440,486],{"class":508},[498,1442,522],{"class":508},[498,1444,1445],{"class":525},"ai-progress",[498,1447,675],{"class":508},[498,1449,759],{"class":508},[498,1451,1452,1455,1457,1459,1461,1464],{"class":500,"line":762},[498,1453,1454],{"class":630},"      step",[498,1456,486],{"class":508},[498,1458,796],{"class":512},[498,1460,742],{"class":508},[498,1462,1463],{"class":512},"steps",[498,1465,759],{"class":508},[498,1467,1468,1471,1473,1475,1477,1480],{"class":500,"line":779},[498,1469,1470],{"class":630},"      tokens",[498,1472,486],{"class":508},[498,1474,796],{"class":512},[498,1476,742],{"class":508},[498,1478,1479],{"class":512},"totalTokens",[498,1481,759],{"class":508},[498,1483,1484,1487,1489,1491,1493,1495],{"class":500,"line":786},[498,1485,1486],{"class":630},"      cost",[498,1488,486],{"class":508},[498,1490,796],{"class":512},[498,1492,742],{"class":508},[498,1494,923],{"class":512},[498,1496,759],{"class":508},[498,1498,1499,1502],{"class":500,"line":791},[498,1500,1501],{"class":508},"    }",[498,1503,635],{"class":630},[498,1505,1506,1508],{"class":500,"line":811},[498,1507,709],{"class":508},[498,1509,635],{"class":630},[498,1511,1512],{"class":500,"line":816},[498,1513,577],{"emptyLinePlaceholder":576},[498,1515,1516,1518,1521,1523,1526,1528,1530],{"class":500,"line":838},[498,1517,619],{"class":596},[498,1519,1520],{"class":512}," agent",[498,1522,625],{"class":508},[498,1524,1525],{"class":508}," new",[498,1527,1254],{"class":589},[498,1529,593],{"class":630},[498,1531,729],{"class":508},[498,1533,1534,1536,1538,1540,1542,1544,1546,1548,1550,1552,1554],{"class":500,"line":861},[498,1535,735],{"class":630},[498,1537,486],{"class":508},[498,1539,643],{"class":512},[498,1541,742],{"class":508},[498,1543,745],{"class":589},[498,1545,593],{"class":630},[498,1547,675],{"class":508},[498,1549,752],{"class":525},[498,1551,675],{"class":508},[498,1553,607],{"class":630},[498,1555,759],{"class":508},[498,1557,1558,1561,1563,1565,1568,1570,1573],{"class":500,"line":877},[498,1559,1560],{"class":630},"    tools",[498,1562,486],{"class":508},[498,1564,509],{"class":508},[498,1566,1567],{"class":512}," searchWeb",[498,1569,655],{"class":508},[498,1571,1572],{"class":512}," queryDatabase",[498,1574,703],{"class":508},[498,1576,1577,1580,1582,1584,1586,1589,1591],{"class":500,"line":894},[498,1578,1579],{"class":630},"    stopWhen",[498,1581,486],{"class":508},[498,1583,1264],{"class":589},[498,1585,593],{"class":630},[498,1587,1588],{"class":687},"5",[498,1590,607],{"class":630},[498,1592,759],{"class":508},[498,1594,1595,1597],{"class":500,"line":911},[498,1596,709],{"class":508},[498,1598,635],{"class":630},[498,1600,1601],{"class":500,"line":928},[498,1602,577],{"emptyLinePlaceholder":576},[498,1604,1605,1607,1609,1611,1613,1615,1617,1620,1622,1624,1626],{"class":500,"line":945},[498,1606,977],{"class":504},[498,1608,1259],{"class":589},[498,1610,593],{"class":630},[498,1612,1108],{"class":508},[498,1614,1520],{"class":512},[498,1616,655],{"class":508},[498,1618,1619],{"class":630}," uiMessages",[498,1621,486],{"class":508},[498,1623,1361],{"class":512},[498,1625,516],{"class":508},[498,1627,635],{"class":630},[498,1629,1630,1632],{"class":500,"line":962},[498,1631,997],{"class":508},[498,1633,635],{"class":512},[451,1635,1636],{},"For one-off cleanup:",[488,1638,1640],{"className":490,"code":1639,"language":493,"meta":494,"style":494},"const off = ai.onUpdate((metadata) => { \u002F* ... *\u002F })\n\u002F\u002F later\noff()\n",[455,1641,1642,1677,1682],{"__ignoreMap":494},[498,1643,1644,1646,1649,1651,1653,1655,1657,1659,1661,1663,1665,1667,1669,1673,1675],{"class":500,"line":501},[498,1645,1034],{"class":596},[498,1647,1648],{"class":512}," off ",[498,1650,1040],{"class":508},[498,1652,643],{"class":512},[498,1654,742],{"class":508},[498,1656,1407],{"class":589},[498,1658,593],{"class":512},[498,1660,593],{"class":508},[498,1662,1414],{"class":603},[498,1664,607],{"class":508},[498,1666,610],{"class":596},[498,1668,509],{"class":508},[498,1670,1672],{"class":1671},"sHwdD"," \u002F* ... *\u002F",[498,1674,516],{"class":508},[498,1676,635],{"class":512},[498,1678,1679],{"class":500,"line":532},[498,1680,1681],{"class":1671},"\u002F\u002F later\n",[498,1683,1684,1687],{"class":500,"line":553},[498,1685,1686],{"class":589},"off",[498,1688,808],{"class":512},[466,1690,1692,1694],{"id":1691},"aimetadata-shape",[455,1693,478],{}," shape",[451,1696,1697,1699,1700,1702,1703,1705,1706,1708],{},[455,1698,478],{}," is a public type alias for the snapshot returned by ",[455,1701,471],{}," and passed to ",[455,1704,1407],{}," listeners. It has the same shape as the ",[455,1707,457],{}," field on the wide event.",[488,1710,1712],{"className":490,"code":1711,"language":493,"meta":494,"style":494},"import type { AIMetadata, AIMetadataListener } from 'evlog\u002Fai'\n\nfunction handleProgress(metadata: AIMetadata) {\n  console.log(`${metadata.calls} calls, $${metadata.estimatedCost ?? 0}`)\n}\n\nconst listener: AIMetadataListener = handleProgress\nai.onUpdate(listener)\n",[455,1713,1714,1741,1745,1766,1811,1816,1820,1836],{"__ignoreMap":494},[498,1715,1716,1718,1721,1723,1726,1728,1731,1733,1735,1737,1739],{"class":500,"line":501},[498,1717,505],{"class":504},[498,1719,1720],{"class":504}," type",[498,1722,509],{"class":508},[498,1724,1725],{"class":512}," AIMetadata",[498,1727,655],{"class":508},[498,1729,1730],{"class":512}," AIMetadataListener",[498,1732,516],{"class":508},[498,1734,519],{"class":504},[498,1736,522],{"class":508},[498,1738,548],{"class":525},[498,1740,529],{"class":508},[498,1742,1743],{"class":500,"line":532},[498,1744,577],{"emptyLinePlaceholder":576},[498,1746,1747,1750,1753,1755,1757,1759,1762,1764],{"class":500,"line":553},[498,1748,1749],{"class":596},"function",[498,1751,1752],{"class":589}," handleProgress",[498,1754,593],{"class":508},[498,1756,1414],{"class":603},[498,1758,486],{"class":508},[498,1760,1725],{"class":1761},"sBMFI",[498,1763,607],{"class":508},[498,1765,613],{"class":508},[498,1767,1768,1771,1773,1775,1777,1780,1782,1784,1787,1789,1792,1794,1796,1798,1801,1804,1807,1809],{"class":500,"line":573},[498,1769,1770],{"class":512},"  console",[498,1772,742],{"class":508},[498,1774,652],{"class":589},[498,1776,593],{"class":630},[498,1778,1779],{"class":508},"`${",[498,1781,1414],{"class":512},[498,1783,742],{"class":508},[498,1785,1786],{"class":512},"calls",[498,1788,997],{"class":508},[498,1790,1791],{"class":525}," calls, $",[498,1793,1180],{"class":508},[498,1795,1414],{"class":512},[498,1797,742],{"class":508},[498,1799,1800],{"class":512},"estimatedCost ",[498,1802,1803],{"class":508},"??",[498,1805,1806],{"class":687}," 0",[498,1808,1198],{"class":508},[498,1810,635],{"class":630},[498,1812,1813],{"class":500,"line":580},[498,1814,1815],{"class":508},"}\n",[498,1817,1818],{"class":500,"line":616},[498,1819,577],{"emptyLinePlaceholder":576},[498,1821,1822,1824,1827,1829,1831,1833],{"class":500,"line":638},[498,1823,1034],{"class":596},[498,1825,1826],{"class":512}," listener",[498,1828,486],{"class":508},[498,1830,1730],{"class":1761},[498,1832,625],{"class":508},[498,1834,1835],{"class":512}," handleProgress\n",[498,1837,1838,1840,1842,1844],{"class":500,"line":660},[498,1839,457],{"class":512},[498,1841,742],{"class":508},[498,1843,1407],{"class":589},[498,1845,1846],{"class":512},"(listener)\n",[466,1848,1850],{"id":1849},"captured-data-reference","Captured Data Reference",[451,1852,1853,1854,486],{},"Every field that may show up under ",[455,1855,1856],{},"ai.*",[1858,1859,1860,1876],"table",{},[1861,1862,1863],"thead",{},[1864,1865,1866,1870,1873],"tr",{},[1867,1868,1869],"th",{},"Wide event field",[1867,1871,1872],{},"Source",[1867,1874,1875],{},"Description",[1877,1878,1879,1893,1908,1921,1947,1962,1977,1992,2007,2022,2037,2058,2082,2100,2113,2126,2139,2151,2163,2176,2197,2213,2230],"tbody",{},[1864,1880,1881,1887,1890],{},[1882,1883,1884],"td",{},[455,1885,1886],{},"ai.calls",[1882,1888,1889],{},"Call count",[1882,1891,1892],{},"Number of AI calls in this request",[1864,1894,1895,1900,1905],{},[1882,1896,1897],{},[455,1898,1899],{},"ai.model",[1882,1901,1902],{},[455,1903,1904],{},"response.modelId",[1882,1906,1907],{},"Model that served the response",[1864,1909,1910,1915,1918],{},[1882,1911,1912],{},[455,1913,1914],{},"ai.models",[1882,1916,1917],{},"All model IDs",[1882,1919,1920],{},"Array of all models used (only when > 1)",[1864,1922,1923,1928,1933],{},[1882,1924,1925],{},[455,1926,1927],{},"ai.provider",[1882,1929,1930],{},[455,1931,1932],{},"model.provider",[1882,1934,1935,1936,1939,1940,1939,1943,1946],{},"Provider (",[455,1937,1938],{},"anthropic",", ",[455,1941,1942],{},"openai",[455,1944,1945],{},"google",", etc.)",[1864,1948,1949,1954,1959],{},[1882,1950,1951],{},[455,1952,1953],{},"ai.inputTokens",[1882,1955,1956],{},[455,1957,1958],{},"usage.inputTokens.total",[1882,1960,1961],{},"Total input tokens across all calls",[1864,1963,1964,1969,1974],{},[1882,1965,1966],{},[455,1967,1968],{},"ai.outputTokens",[1882,1970,1971],{},[455,1972,1973],{},"usage.outputTokens.total",[1882,1975,1976],{},"Total output tokens across all calls",[1864,1978,1979,1984,1987],{},[1882,1980,1981],{},[455,1982,1983],{},"ai.totalTokens",[1882,1985,1986],{},"Computed",[1882,1988,1989],{},[455,1990,1991],{},"inputTokens + outputTokens",[1864,1993,1994,1999,2004],{},[1882,1995,1996],{},[455,1997,1998],{},"ai.cacheReadTokens",[1882,2000,2001],{},[455,2002,2003],{},"usage.inputTokens.cacheRead",[1882,2005,2006],{},"Tokens served from prompt cache",[1864,2008,2009,2014,2019],{},[1882,2010,2011],{},[455,2012,2013],{},"ai.cacheWriteTokens",[1882,2015,2016],{},[455,2017,2018],{},"usage.inputTokens.cacheWrite",[1882,2020,2021],{},"Tokens written to prompt cache",[1864,2023,2024,2029,2034],{},[1882,2025,2026],{},[455,2027,2028],{},"ai.reasoningTokens",[1882,2030,2031],{},[455,2032,2033],{},"usage.outputTokens.reasoning",[1882,2035,2036],{},"Reasoning tokens (extended thinking)",[1864,2038,2039,2044,2049],{},[1882,2040,2041],{},[455,2042,2043],{},"ai.finishReason",[1882,2045,2046],{},[455,2047,2048],{},"finishReason.unified",[1882,2050,2051,2052,1939,2055,1946],{},"Why generation ended (",[455,2053,2054],{},"stop",[455,2056,2057],{},"tool-calls",[1864,2059,2060,2065,2068],{},[1882,2061,2062],{},[455,2063,2064],{},"ai.toolCalls",[1882,2066,2067],{},"Content \u002F stream chunks",[1882,2069,2070,2073,2074,2077,2078,2081],{},[455,2071,2072],{},"string[]"," of tool names by default, or ",[455,2075,2076],{},"Array\u003C{ name, input }>"," when ",[455,2079,2080],{},"toolInputs"," is enabled",[1864,2083,2084,2089,2094],{},[1882,2085,2086],{},[455,2087,2088],{},"ai.responseId",[1882,2090,2091],{},[455,2092,2093],{},"response.id",[1882,2095,2096,2097,607],{},"Provider-assigned response ID (e.g. Anthropic's ",[455,2098,2099],{},"msg_...",[1864,2101,2102,2107,2110],{},[1882,2103,2104],{},[455,2105,2106],{},"ai.steps",[1882,2108,2109],{},"Step count",[1882,2111,2112],{},"Number of LLM calls (only when > 1)",[1864,2114,2115,2120,2123],{},[1882,2116,2117],{},[455,2118,2119],{},"ai.stepsUsage",[1882,2121,2122],{},"Per-step accumulation",[1882,2124,2125],{},"Per-step token and tool call breakdown (only when > 1 step)",[1864,2127,2128,2133,2136],{},[1882,2129,2130],{},[455,2131,2132],{},"ai.msToFirstChunk",[1882,2134,2135],{},"Stream timing",[1882,2137,2138],{},"Time to first text chunk (streaming only)",[1864,2140,2141,2146,2148],{},[1882,2142,2143],{},[455,2144,2145],{},"ai.msToFinish",[1882,2147,2135],{},[1882,2149,2150],{},"Total stream duration (streaming only)",[1864,2152,2153,2158,2160],{},[1882,2154,2155],{},[455,2156,2157],{},"ai.tokensPerSecond",[1882,2159,1986],{},[1882,2161,2162],{},"Output tokens per second (streaming only)",[1864,2164,2165,2170,2173],{},[1882,2166,2167],{},[455,2168,2169],{},"ai.error",[1882,2171,2172],{},"Error capture",[1882,2174,2175],{},"Error message if a model call fails",[1864,2177,2178,2183,2188],{},[1882,2179,2180],{},[455,2181,2182],{},"ai.tools",[1882,2184,2185],{},[455,2186,2187],{},"TelemetryIntegration",[1882,2189,2190,2191,2194,2195,607],{},"Per-tool ",[455,2192,2193],{},"{ name, durationMs, success, error? }"," (requires ",[455,2196,1233],{},[1864,2198,2199,2204,2208],{},[1882,2200,2201],{},[455,2202,2203],{},"ai.totalDurationMs",[1882,2205,2206],{},[455,2207,2187],{},[1882,2209,2210,2211,607],{},"Total generation wall time (requires ",[455,2212,1233],{},[1864,2214,2215,2220,2224],{},[1882,2216,2217],{},[455,2218,2219],{},"ai.embedding",[1882,2221,2222],{},[455,2223,1223],{},[1882,2225,2226,2229],{},[455,2227,2228],{},"{ model?, tokens, dimensions?, count? }"," — embedding metadata",[1864,2231,2232,2237,2239],{},[1882,2233,2234],{},[455,2235,2236],{},"ai.estimatedCost",[1882,2238,1986],{},[1882,2240,2241,2242,2244],{},"Estimated cost in dollars (requires ",[455,2243,1023],{}," option)",[2246,2247,2248],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":494,"searchDepth":532,"depth":532,"links":2250},[2251,2253,2255,2257,2259],{"id":468,"depth":532,"text":2252},"getMetadata() — final snapshot",{"id":1005,"depth":532,"text":2254},"getEstimatedCost() — quick cost check",{"id":1203,"depth":532,"text":2256},"onUpdate(callback) — incremental updates",{"id":1691,"depth":532,"text":2258},"AIMetadata shape",{"id":1849,"depth":532,"text":1850},"Read AI metadata from your handler — persist it, surface it to end-users, bill against it, or stream incremental progress to the client.","md",[2263,2266],{"label":36,"icon":39,"to":266,"color":2264,"variant":2265},"neutral","subtle",{"label":274,"icon":277,"to":275,"color":2264,"variant":2265},{},{"title":279,"icon":282},{"title":446,"description":2260},"vsgjkcyAuO57PlthgjCS_YZW9d1kw14Tpun9WeXOIP8",[2272,2274],{"title":274,"path":275,"stem":276,"description":2273,"icon":277,"children":-1},"Configure tool input capture (with redaction and truncation), enable cost estimation per model, and handle errors during AI calls.",{"title":284,"path":285,"stem":286,"description":2275,"icon":287,"children":-1},"Add tool execution timing and total wall time with createEvlogIntegration. Compose with other middleware like supermemory or guardrails.",1782925725118]