[{"data":1,"prerenderedAt":2284},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-ai-sdk-metadata":451,"-use-cases-ai-sdk-metadata-surround":2279},[4,30,80,245,365,420],{"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,358],{"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":284,"path":359,"stem":360,"children":361,"page":29},"\u002Fuse-cases\u002Ftelemetry","4.use-cases\u002F6.telemetry",[362],{"title":284,"path":363,"stem":364,"icon":315},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","4.use-cases\u002F6.telemetry\u002F01.overview",{"title":366,"path":367,"stem":368,"children":369,"page":29},"Extend","\u002Fextend","5.extend",[370,374,379,384,389,393,397,401,405,410,415],{"title":36,"path":371,"stem":372,"icon":373},"\u002Fextend\u002Foverview","5.extend\u002F0.overview","i-lucide-blocks",{"title":375,"path":376,"stem":377,"icon":378},"Stream","\u002Fextend\u002Fstream","5.extend\u002F1.stream","i-lucide-radio-tower",{"title":380,"path":381,"stem":382,"icon":383},"Custom framework","\u002Fextend\u002Fcustom-framework","5.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":385,"path":386,"stem":387,"icon":388},"FS reader","\u002Fextend\u002Ffs-reader","5.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":345,"path":390,"stem":391,"icon":392},"\u002Fextend\u002Fconsumer-recipes","5.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":394,"path":395,"stem":396,"icon":373},"Plugins","\u002Fextend\u002Fplugins","5.extend\u002F4.plugins",{"title":398,"path":399,"stem":400,"icon":352},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","5.extend\u002F5.custom-enrichers",{"title":402,"path":403,"stem":404,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","5.extend\u002F6.tail-sampling",{"title":406,"path":407,"stem":408,"icon":409},"Identity headers","\u002Fextend\u002Fidentity-headers","5.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":411,"path":412,"stem":413,"icon":414},"Custom drains","\u002Fextend\u002Fcustom-drains","5.extend\u002F8.custom-drains","i-lucide-share-2",{"title":416,"path":417,"stem":418,"icon":419},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","5.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":421,"path":422,"stem":423,"children":424,"page":29},"Reference","\u002Freference","6.reference",[425,430,433,438,442,447],{"title":426,"path":427,"stem":428,"icon":429},"Configuration","\u002Freference\u002Fconfiguration","6.reference\u002F1.configuration","i-lucide-settings",{"title":312,"path":431,"stem":432,"icon":315},"\u002Freference\u002Fperformance","6.reference\u002F2.performance",{"title":434,"path":435,"stem":436,"icon":437},"Vite Plugin","\u002Freference\u002Fvite-plugin","6.reference\u002F3.vite-plugin","i-custom-vite",{"title":439,"path":440,"stem":441,"icon":318},"Best Practices","\u002Freference\u002Fbest-practices","6.reference\u002F4.best-practices",{"title":443,"path":444,"stem":445,"icon":446},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","6.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":448,"path":449,"stem":450,"icon":352},"Agent Skills","\u002Freference\u002Fagent-skills","6.reference\u002F6.agent-skills",{"id":452,"title":453,"body":454,"description":2268,"extension":2269,"links":2270,"meta":2275,"navigation":2276,"path":280,"seo":2277,"stem":281,"__hash__":2278},"docs\u002F4.use-cases\u002F2.ai-sdk\u002F04.metadata.md","Access Metadata",{"type":455,"value":456,"toc":2257},"minimark",[457,466,472,480,494,1007,1010,1017,1032,1208,1215,1218,1249,1252,1646,1649,1701,1707,1721,1859,1863,1869,2253],[458,459,460,461,465],"p",{},"The wide event already contains the full ",[462,463,464],"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.",[458,467,468,471],{},[462,469,470],{},"AILogger"," exposes three methods for that, with no need to touch internal state.",[473,474,476,479],"h2",{"id":475},"getmetadata-final-snapshot",[462,477,478],{},"getMetadata()"," — final snapshot",[458,481,482,483,486,487,489,490,493],{},"Returns a structured ",[462,484,485],{},"AIMetadata"," object that mirrors the ",[462,488,464],{}," field on the wide event. Safe to call at any point, including after the run completes or inside the AI SDK's ",[462,491,492],{},"onFinish",":",[495,496,502],"pre",{"className":497,"code":498,"filename":499,"language":500,"meta":501,"style":501},"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","",[462,503,504,537,558,578,585,621,643,665,711,719,724,737,767,784,791,796,816,821,843,866,882,899,916,933,950,967,974,979,999],{"__ignoreMap":501},[505,506,509,513,517,521,524,527,530,534],"span",{"class":507,"line":508},"line",1,[505,510,512],{"class":511},"s7zQu","import",[505,514,516],{"class":515},"sMK4o"," {",[505,518,520],{"class":519},"sTEyZ"," useLogger",[505,522,523],{"class":515}," }",[505,525,526],{"class":511}," from",[505,528,529],{"class":515}," '",[505,531,533],{"class":532},"sfazB","evlog",[505,535,536],{"class":515},"'\n",[505,538,540,542,544,547,549,551,553,556],{"class":507,"line":539},2,[505,541,512],{"class":511},[505,543,516],{"class":515},[505,545,546],{"class":519}," createAILogger",[505,548,523],{"class":515},[505,550,526],{"class":511},[505,552,529],{"class":515},[505,554,555],{"class":532},"evlog\u002Fai",[505,557,536],{"class":515},[505,559,561,563,565,568,570,572,574,576],{"class":507,"line":560},3,[505,562,512],{"class":511},[505,564,516],{"class":515},[505,566,567],{"class":519}," generateText",[505,569,523],{"class":515},[505,571,526],{"class":511},[505,573,529],{"class":515},[505,575,464],{"class":532},[505,577,536],{"class":515},[505,579,581],{"class":507,"line":580},4,[505,582,584],{"emptyLinePlaceholder":583},true,"\n",[505,586,588,591,594,598,601,605,608,612,615,618],{"class":507,"line":587},5,[505,589,590],{"class":511},"export",[505,592,593],{"class":511}," default",[505,595,597],{"class":596},"s2Zo4"," defineEventHandler",[505,599,600],{"class":519},"(",[505,602,604],{"class":603},"spNyl","async",[505,606,607],{"class":515}," (",[505,609,611],{"class":610},"sHdIc","event",[505,613,614],{"class":515},")",[505,616,617],{"class":603}," =>",[505,619,620],{"class":515}," {\n",[505,622,624,627,630,633,635,638,640],{"class":507,"line":623},6,[505,625,626],{"class":603},"  const",[505,628,629],{"class":519}," log",[505,631,632],{"class":515}," =",[505,634,520],{"class":596},[505,636,600],{"class":637},"swJcz",[505,639,611],{"class":519},[505,641,642],{"class":637},")\n",[505,644,646,648,651,653,655,657,660,663],{"class":507,"line":645},7,[505,647,626],{"class":603},[505,649,650],{"class":519}," ai",[505,652,632],{"class":515},[505,654,546],{"class":596},[505,656,600],{"class":637},[505,658,659],{"class":519},"log",[505,661,662],{"class":515},",",[505,664,620],{"class":515},[505,666,668,671,673,675,677,680,683,685,687,690,692,696,698,701,703,706,708],{"class":507,"line":667},8,[505,669,670],{"class":637},"    cost",[505,672,493],{"class":515},[505,674,516],{"class":515},[505,676,529],{"class":515},[505,678,679],{"class":637},"claude-sonnet-4.6",[505,681,682],{"class":515},"'",[505,684,493],{"class":515},[505,686,516],{"class":515},[505,688,689],{"class":637}," input",[505,691,493],{"class":515},[505,693,695],{"class":694},"sbssI"," 3",[505,697,662],{"class":515},[505,699,700],{"class":637}," output",[505,702,493],{"class":515},[505,704,705],{"class":694}," 15",[505,707,523],{"class":515},[505,709,710],{"class":515}," },\n",[505,712,714,717],{"class":507,"line":713},9,[505,715,716],{"class":515},"  }",[505,718,642],{"class":637},[505,720,722],{"class":507,"line":721},10,[505,723,584],{"emptyLinePlaceholder":583},[505,725,727,730,732,734],{"class":507,"line":726},11,[505,728,729],{"class":511},"  await",[505,731,567],{"class":596},[505,733,600],{"class":637},[505,735,736],{"class":515},"{\n",[505,738,740,743,745,747,750,753,755,757,760,762,764],{"class":507,"line":739},12,[505,741,742],{"class":637},"    model",[505,744,493],{"class":515},[505,746,650],{"class":519},[505,748,749],{"class":515},".",[505,751,752],{"class":596},"wrap",[505,754,600],{"class":637},[505,756,682],{"class":515},[505,758,759],{"class":532},"anthropic\u002Fclaude-sonnet-4.6",[505,761,682],{"class":515},[505,763,614],{"class":637},[505,765,766],{"class":515},",\n",[505,768,770,773,775,777,780,782],{"class":507,"line":769},13,[505,771,772],{"class":637},"    prompt",[505,774,493],{"class":515},[505,776,529],{"class":515},[505,778,779],{"class":532},"Summarize this document",[505,781,682],{"class":515},[505,783,766],{"class":515},[505,785,787,789],{"class":507,"line":786},14,[505,788,716],{"class":515},[505,790,642],{"class":637},[505,792,794],{"class":507,"line":793},15,[505,795,584],{"emptyLinePlaceholder":583},[505,797,799,801,804,806,808,810,813],{"class":507,"line":798},16,[505,800,626],{"class":603},[505,802,803],{"class":519}," metadata",[505,805,632],{"class":515},[505,807,650],{"class":519},[505,809,749],{"class":515},[505,811,812],{"class":596},"getMetadata",[505,814,815],{"class":637},"()\n",[505,817,819],{"class":507,"line":818},17,[505,820,584],{"emptyLinePlaceholder":583},[505,822,824,826,829,831,834,836,839,841],{"class":507,"line":823},18,[505,825,729],{"class":511},[505,827,828],{"class":519}," db",[505,830,749],{"class":515},[505,832,833],{"class":519},"aiRuns",[505,835,749],{"class":515},[505,837,838],{"class":596},"insert",[505,840,600],{"class":637},[505,842,736],{"class":515},[505,844,846,849,851,854,856,859,861,864],{"class":507,"line":845},19,[505,847,848],{"class":637},"    userId",[505,850,493],{"class":515},[505,852,853],{"class":519}," event",[505,855,749],{"class":515},[505,857,858],{"class":519},"context",[505,860,749],{"class":515},[505,862,863],{"class":519},"userId",[505,865,766],{"class":515},[505,867,869,871,873,875,877,880],{"class":507,"line":868},20,[505,870,742],{"class":637},[505,872,493],{"class":515},[505,874,803],{"class":519},[505,876,749],{"class":515},[505,878,879],{"class":519},"model",[505,881,766],{"class":515},[505,883,885,888,890,892,894,897],{"class":507,"line":884},21,[505,886,887],{"class":637},"    inputTokens",[505,889,493],{"class":515},[505,891,803],{"class":519},[505,893,749],{"class":515},[505,895,896],{"class":519},"inputTokens",[505,898,766],{"class":515},[505,900,902,905,907,909,911,914],{"class":507,"line":901},22,[505,903,904],{"class":637},"    outputTokens",[505,906,493],{"class":515},[505,908,803],{"class":519},[505,910,749],{"class":515},[505,912,913],{"class":519},"outputTokens",[505,915,766],{"class":515},[505,917,919,922,924,926,928,931],{"class":507,"line":918},23,[505,920,921],{"class":637},"    estimatedCost",[505,923,493],{"class":515},[505,925,803],{"class":519},[505,927,749],{"class":515},[505,929,930],{"class":519},"estimatedCost",[505,932,766],{"class":515},[505,934,936,939,941,943,945,948],{"class":507,"line":935},24,[505,937,938],{"class":637},"    finishReason",[505,940,493],{"class":515},[505,942,803],{"class":519},[505,944,749],{"class":515},[505,946,947],{"class":519},"finishReason",[505,949,766],{"class":515},[505,951,953,956,958,960,962,965],{"class":507,"line":952},25,[505,954,955],{"class":637},"    responseId",[505,957,493],{"class":515},[505,959,803],{"class":519},[505,961,749],{"class":515},[505,963,964],{"class":519},"responseId",[505,966,766],{"class":515},[505,968,970,972],{"class":507,"line":969},26,[505,971,716],{"class":515},[505,973,642],{"class":637},[505,975,977],{"class":507,"line":976},27,[505,978,584],{"emptyLinePlaceholder":583},[505,980,982,985,987,990,992,996],{"class":507,"line":981},28,[505,983,984],{"class":511},"  return",[505,986,516],{"class":515},[505,988,989],{"class":637}," ok",[505,991,493],{"class":515},[505,993,995],{"class":994},"sfNiH"," true",[505,997,998],{"class":515}," }\n",[505,1000,1002,1005],{"class":507,"line":1001},29,[505,1003,1004],{"class":515},"}",[505,1006,642],{"class":519},[458,1008,1009],{},"The snapshot is a fresh copy: mutating it never affects the underlying state or subsequent calls.",[473,1011,1013,1016],{"id":1012},"getestimatedcost-quick-cost-check",[462,1014,1015],{},"getEstimatedCost()"," — quick cost check",[458,1018,1019,1020,1023,1024,1027,1028,1031],{},"Convenience for ",[462,1021,1022],{},"getMetadata().estimatedCost",". Returns the cost in dollars, or ",[462,1025,1026],{},"undefined"," if no ",[462,1029,1030],{},"cost"," map was provided or the model is not in the map.",[495,1033,1035],{"className":497,"code":1034,"language":500,"meta":501,"style":501},"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",[462,1036,1037,1057,1094,1100,1104,1146,1150,1168],{"__ignoreMap":501},[505,1038,1039,1042,1045,1048,1050,1053,1055],{"class":507,"line":508},[505,1040,1041],{"class":603},"const",[505,1043,1044],{"class":519}," ai ",[505,1046,1047],{"class":515},"=",[505,1049,546],{"class":596},[505,1051,1052],{"class":519},"(log",[505,1054,662],{"class":515},[505,1056,620],{"class":515},[505,1058,1059,1062,1064,1066,1068,1070,1072,1074,1076,1078,1080,1082,1084,1086,1088,1090,1092],{"class":507,"line":539},[505,1060,1061],{"class":637},"  cost",[505,1063,493],{"class":515},[505,1065,516],{"class":515},[505,1067,529],{"class":515},[505,1069,679],{"class":637},[505,1071,682],{"class":515},[505,1073,493],{"class":515},[505,1075,516],{"class":515},[505,1077,689],{"class":637},[505,1079,493],{"class":515},[505,1081,695],{"class":694},[505,1083,662],{"class":515},[505,1085,700],{"class":637},[505,1087,493],{"class":515},[505,1089,705],{"class":694},[505,1091,523],{"class":515},[505,1093,710],{"class":515},[505,1095,1096,1098],{"class":507,"line":560},[505,1097,1004],{"class":515},[505,1099,642],{"class":519},[505,1101,1102],{"class":507,"line":580},[505,1103,584],{"emptyLinePlaceholder":583},[505,1105,1106,1109,1111,1113,1116,1119,1121,1123,1125,1127,1129,1131,1133,1135,1137,1139,1142,1144],{"class":507,"line":587},[505,1107,1108],{"class":511},"await",[505,1110,567],{"class":596},[505,1112,600],{"class":519},[505,1114,1115],{"class":515},"{",[505,1117,1118],{"class":637}," model",[505,1120,493],{"class":515},[505,1122,650],{"class":519},[505,1124,749],{"class":515},[505,1126,752],{"class":596},[505,1128,600],{"class":519},[505,1130,682],{"class":515},[505,1132,759],{"class":532},[505,1134,682],{"class":515},[505,1136,614],{"class":519},[505,1138,662],{"class":515},[505,1140,1141],{"class":519}," prompt ",[505,1143,1004],{"class":515},[505,1145,642],{"class":519},[505,1147,1148],{"class":507,"line":623},[505,1149,584],{"emptyLinePlaceholder":583},[505,1151,1152,1154,1157,1159,1161,1163,1166],{"class":507,"line":645},[505,1153,1041],{"class":603},[505,1155,1156],{"class":519}," cost ",[505,1158,1047],{"class":515},[505,1160,650],{"class":519},[505,1162,749],{"class":515},[505,1164,1165],{"class":596},"getEstimatedCost",[505,1167,815],{"class":519},[505,1169,1170,1173,1175,1177,1179,1182,1185,1188,1190,1193,1196,1198,1201,1203,1206],{"class":507,"line":667},[505,1171,1172],{"class":519},"console",[505,1174,749],{"class":515},[505,1176,659],{"class":596},[505,1178,600],{"class":519},[505,1180,1181],{"class":515},"`",[505,1183,1184],{"class":532},"This call cost $",[505,1186,1187],{"class":515},"${",[505,1189,1030],{"class":519},[505,1191,1192],{"class":515},"?.",[505,1194,1195],{"class":596},"toFixed",[505,1197,600],{"class":519},[505,1199,1200],{"class":694},"4",[505,1202,614],{"class":519},[505,1204,1205],{"class":515},"}`",[505,1207,642],{"class":519},[473,1209,1211,1214],{"id":1210},"onupdatecallback-incremental-updates",[462,1212,1213],{},"onUpdate(callback)"," — incremental updates",[458,1216,1217],{},"Subscribe to metadata updates. The callback fires every time the underlying state flushes:",[1219,1220,1221,1225,1232,1235],"ul",{},[1222,1223,1224],"li",{},"Once per step in multi-step agent runs",[1222,1226,1227,1228,1231],{},"Once per ",[462,1229,1230],{},"captureEmbed"," call",[1222,1233,1234],{},"On model errors",[1222,1236,1237,1238,1241,1242,1245,1246,1248],{},"On ",[462,1239,1240],{},"createEvlogIntegration","'s ",[462,1243,1244],{},"onEnd"," (v7) or ",[462,1247,492],{}," (v6)",[458,1250,1251],{},"Each invocation receives a fresh snapshot. Returns an unsubscribe function. Subscriber errors are isolated and never break the AI flow.",[495,1253,1256],{"className":497,"code":1254,"filename":1255,"language":500,"meta":501,"style":501},"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",[462,1257,1258,1287,1305,1323,1327,1349,1365,1390,1406,1410,1433,1446,1462,1478,1494,1509,1516,1522,1526,1544,1568,1587,1605,1611,1615,1640],{"__ignoreMap":501},[505,1259,1260,1262,1264,1267,1269,1272,1274,1277,1279,1281,1283,1285],{"class":507,"line":508},[505,1261,512],{"class":511},[505,1263,516],{"class":515},[505,1265,1266],{"class":519}," ToolLoopAgent",[505,1268,662],{"class":515},[505,1270,1271],{"class":519}," createAgentUIStreamResponse",[505,1273,662],{"class":515},[505,1275,1276],{"class":519}," stepCountIs",[505,1278,523],{"class":515},[505,1280,526],{"class":511},[505,1282,529],{"class":515},[505,1284,464],{"class":532},[505,1286,536],{"class":515},[505,1288,1289,1291,1293,1295,1297,1299,1301,1303],{"class":507,"line":539},[505,1290,512],{"class":511},[505,1292,516],{"class":515},[505,1294,520],{"class":519},[505,1296,523],{"class":515},[505,1298,526],{"class":511},[505,1300,529],{"class":515},[505,1302,533],{"class":532},[505,1304,536],{"class":515},[505,1306,1307,1309,1311,1313,1315,1317,1319,1321],{"class":507,"line":560},[505,1308,512],{"class":511},[505,1310,516],{"class":515},[505,1312,546],{"class":519},[505,1314,523],{"class":515},[505,1316,526],{"class":511},[505,1318,529],{"class":515},[505,1320,555],{"class":532},[505,1322,536],{"class":515},[505,1324,1325],{"class":507,"line":580},[505,1326,584],{"emptyLinePlaceholder":583},[505,1328,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347],{"class":507,"line":587},[505,1330,590],{"class":511},[505,1332,593],{"class":511},[505,1334,597],{"class":596},[505,1336,600],{"class":519},[505,1338,604],{"class":603},[505,1340,607],{"class":515},[505,1342,611],{"class":610},[505,1344,614],{"class":515},[505,1346,617],{"class":603},[505,1348,620],{"class":515},[505,1350,1351,1353,1355,1357,1359,1361,1363],{"class":507,"line":623},[505,1352,626],{"class":603},[505,1354,629],{"class":519},[505,1356,632],{"class":515},[505,1358,520],{"class":596},[505,1360,600],{"class":637},[505,1362,611],{"class":519},[505,1364,642],{"class":637},[505,1366,1367,1369,1371,1374,1376,1378,1381,1384,1386,1388],{"class":507,"line":645},[505,1368,626],{"class":603},[505,1370,516],{"class":515},[505,1372,1373],{"class":519}," messages",[505,1375,523],{"class":515},[505,1377,632],{"class":515},[505,1379,1380],{"class":511}," await",[505,1382,1383],{"class":596}," readBody",[505,1385,600],{"class":637},[505,1387,611],{"class":519},[505,1389,642],{"class":637},[505,1391,1392,1394,1396,1398,1400,1402,1404],{"class":507,"line":667},[505,1393,626],{"class":603},[505,1395,650],{"class":519},[505,1397,632],{"class":515},[505,1399,546],{"class":596},[505,1401,600],{"class":637},[505,1403,659],{"class":519},[505,1405,642],{"class":637},[505,1407,1408],{"class":507,"line":713},[505,1409,584],{"emptyLinePlaceholder":583},[505,1411,1412,1415,1417,1420,1422,1424,1427,1429,1431],{"class":507,"line":721},[505,1413,1414],{"class":519},"  ai",[505,1416,749],{"class":515},[505,1418,1419],{"class":596},"onUpdate",[505,1421,600],{"class":637},[505,1423,600],{"class":515},[505,1425,1426],{"class":610},"metadata",[505,1428,614],{"class":515},[505,1430,617],{"class":603},[505,1432,620],{"class":515},[505,1434,1435,1438,1440,1442,1444],{"class":507,"line":726},[505,1436,1437],{"class":596},"    pushToClient",[505,1439,600],{"class":637},[505,1441,611],{"class":519},[505,1443,662],{"class":515},[505,1445,620],{"class":515},[505,1447,1448,1451,1453,1455,1458,1460],{"class":507,"line":739},[505,1449,1450],{"class":637},"      type",[505,1452,493],{"class":515},[505,1454,529],{"class":515},[505,1456,1457],{"class":532},"ai-progress",[505,1459,682],{"class":515},[505,1461,766],{"class":515},[505,1463,1464,1467,1469,1471,1473,1476],{"class":507,"line":769},[505,1465,1466],{"class":637},"      step",[505,1468,493],{"class":515},[505,1470,803],{"class":519},[505,1472,749],{"class":515},[505,1474,1475],{"class":519},"steps",[505,1477,766],{"class":515},[505,1479,1480,1483,1485,1487,1489,1492],{"class":507,"line":786},[505,1481,1482],{"class":637},"      tokens",[505,1484,493],{"class":515},[505,1486,803],{"class":519},[505,1488,749],{"class":515},[505,1490,1491],{"class":519},"totalTokens",[505,1493,766],{"class":515},[505,1495,1496,1499,1501,1503,1505,1507],{"class":507,"line":793},[505,1497,1498],{"class":637},"      cost",[505,1500,493],{"class":515},[505,1502,803],{"class":519},[505,1504,749],{"class":515},[505,1506,930],{"class":519},[505,1508,766],{"class":515},[505,1510,1511,1514],{"class":507,"line":798},[505,1512,1513],{"class":515},"    }",[505,1515,642],{"class":637},[505,1517,1518,1520],{"class":507,"line":818},[505,1519,716],{"class":515},[505,1521,642],{"class":637},[505,1523,1524],{"class":507,"line":823},[505,1525,584],{"emptyLinePlaceholder":583},[505,1527,1528,1530,1533,1535,1538,1540,1542],{"class":507,"line":845},[505,1529,626],{"class":603},[505,1531,1532],{"class":519}," agent",[505,1534,632],{"class":515},[505,1536,1537],{"class":515}," new",[505,1539,1266],{"class":596},[505,1541,600],{"class":637},[505,1543,736],{"class":515},[505,1545,1546,1548,1550,1552,1554,1556,1558,1560,1562,1564,1566],{"class":507,"line":868},[505,1547,742],{"class":637},[505,1549,493],{"class":515},[505,1551,650],{"class":519},[505,1553,749],{"class":515},[505,1555,752],{"class":596},[505,1557,600],{"class":637},[505,1559,682],{"class":515},[505,1561,759],{"class":532},[505,1563,682],{"class":515},[505,1565,614],{"class":637},[505,1567,766],{"class":515},[505,1569,1570,1573,1575,1577,1580,1582,1585],{"class":507,"line":884},[505,1571,1572],{"class":637},"    tools",[505,1574,493],{"class":515},[505,1576,516],{"class":515},[505,1578,1579],{"class":519}," searchWeb",[505,1581,662],{"class":515},[505,1583,1584],{"class":519}," queryDatabase",[505,1586,710],{"class":515},[505,1588,1589,1592,1594,1596,1598,1601,1603],{"class":507,"line":901},[505,1590,1591],{"class":637},"    stopWhen",[505,1593,493],{"class":515},[505,1595,1276],{"class":596},[505,1597,600],{"class":637},[505,1599,1600],{"class":694},"5",[505,1602,614],{"class":637},[505,1604,766],{"class":515},[505,1606,1607,1609],{"class":507,"line":918},[505,1608,716],{"class":515},[505,1610,642],{"class":637},[505,1612,1613],{"class":507,"line":935},[505,1614,584],{"emptyLinePlaceholder":583},[505,1616,1617,1619,1621,1623,1625,1627,1629,1632,1634,1636,1638],{"class":507,"line":952},[505,1618,984],{"class":511},[505,1620,1271],{"class":596},[505,1622,600],{"class":637},[505,1624,1115],{"class":515},[505,1626,1532],{"class":519},[505,1628,662],{"class":515},[505,1630,1631],{"class":637}," uiMessages",[505,1633,493],{"class":515},[505,1635,1373],{"class":519},[505,1637,523],{"class":515},[505,1639,642],{"class":637},[505,1641,1642,1644],{"class":507,"line":969},[505,1643,1004],{"class":515},[505,1645,642],{"class":519},[458,1647,1648],{},"For one-off cleanup:",[495,1650,1652],{"className":497,"code":1651,"language":500,"meta":501,"style":501},"const off = ai.onUpdate((metadata) => { \u002F* ... *\u002F })\n\u002F\u002F later\noff()\n",[462,1653,1654,1689,1694],{"__ignoreMap":501},[505,1655,1656,1658,1661,1663,1665,1667,1669,1671,1673,1675,1677,1679,1681,1685,1687],{"class":507,"line":508},[505,1657,1041],{"class":603},[505,1659,1660],{"class":519}," off ",[505,1662,1047],{"class":515},[505,1664,650],{"class":519},[505,1666,749],{"class":515},[505,1668,1419],{"class":596},[505,1670,600],{"class":519},[505,1672,600],{"class":515},[505,1674,1426],{"class":610},[505,1676,614],{"class":515},[505,1678,617],{"class":603},[505,1680,516],{"class":515},[505,1682,1684],{"class":1683},"sHwdD"," \u002F* ... *\u002F",[505,1686,523],{"class":515},[505,1688,642],{"class":519},[505,1690,1691],{"class":507,"line":539},[505,1692,1693],{"class":1683},"\u002F\u002F later\n",[505,1695,1696,1699],{"class":507,"line":560},[505,1697,1698],{"class":596},"off",[505,1700,815],{"class":519},[473,1702,1704,1706],{"id":1703},"aimetadata-shape",[462,1705,485],{}," shape",[458,1708,1709,1711,1712,1714,1715,1717,1718,1720],{},[462,1710,485],{}," is a public type alias for the snapshot returned by ",[462,1713,478],{}," and passed to ",[462,1716,1419],{}," listeners. It has the same shape as the ",[462,1719,464],{}," field on the wide event.",[495,1722,1724],{"className":497,"code":1723,"language":500,"meta":501,"style":501},"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",[462,1725,1726,1753,1757,1778,1823,1828,1832,1848],{"__ignoreMap":501},[505,1727,1728,1730,1733,1735,1738,1740,1743,1745,1747,1749,1751],{"class":507,"line":508},[505,1729,512],{"class":511},[505,1731,1732],{"class":511}," type",[505,1734,516],{"class":515},[505,1736,1737],{"class":519}," AIMetadata",[505,1739,662],{"class":515},[505,1741,1742],{"class":519}," AIMetadataListener",[505,1744,523],{"class":515},[505,1746,526],{"class":511},[505,1748,529],{"class":515},[505,1750,555],{"class":532},[505,1752,536],{"class":515},[505,1754,1755],{"class":507,"line":539},[505,1756,584],{"emptyLinePlaceholder":583},[505,1758,1759,1762,1765,1767,1769,1771,1774,1776],{"class":507,"line":560},[505,1760,1761],{"class":603},"function",[505,1763,1764],{"class":596}," handleProgress",[505,1766,600],{"class":515},[505,1768,1426],{"class":610},[505,1770,493],{"class":515},[505,1772,1737],{"class":1773},"sBMFI",[505,1775,614],{"class":515},[505,1777,620],{"class":515},[505,1779,1780,1783,1785,1787,1789,1792,1794,1796,1799,1801,1804,1806,1808,1810,1813,1816,1819,1821],{"class":507,"line":580},[505,1781,1782],{"class":519},"  console",[505,1784,749],{"class":515},[505,1786,659],{"class":596},[505,1788,600],{"class":637},[505,1790,1791],{"class":515},"`${",[505,1793,1426],{"class":519},[505,1795,749],{"class":515},[505,1797,1798],{"class":519},"calls",[505,1800,1004],{"class":515},[505,1802,1803],{"class":532}," calls, $",[505,1805,1187],{"class":515},[505,1807,1426],{"class":519},[505,1809,749],{"class":515},[505,1811,1812],{"class":519},"estimatedCost ",[505,1814,1815],{"class":515},"??",[505,1817,1818],{"class":694}," 0",[505,1820,1205],{"class":515},[505,1822,642],{"class":637},[505,1824,1825],{"class":507,"line":587},[505,1826,1827],{"class":515},"}\n",[505,1829,1830],{"class":507,"line":623},[505,1831,584],{"emptyLinePlaceholder":583},[505,1833,1834,1836,1839,1841,1843,1845],{"class":507,"line":645},[505,1835,1041],{"class":603},[505,1837,1838],{"class":519}," listener",[505,1840,493],{"class":515},[505,1842,1742],{"class":1773},[505,1844,632],{"class":515},[505,1846,1847],{"class":519}," handleProgress\n",[505,1849,1850,1852,1854,1856],{"class":507,"line":667},[505,1851,464],{"class":519},[505,1853,749],{"class":515},[505,1855,1419],{"class":596},[505,1857,1858],{"class":519},"(listener)\n",[473,1860,1862],{"id":1861},"captured-data-reference","Captured Data Reference",[458,1864,1865,1866,493],{},"Every field that may show up under ",[462,1867,1868],{},"ai.*",[1870,1871,1872,1888],"table",{},[1873,1874,1875],"thead",{},[1876,1877,1878,1882,1885],"tr",{},[1879,1880,1881],"th",{},"Wide event field",[1879,1883,1884],{},"Source",[1879,1886,1887],{},"Description",[1889,1890,1891,1905,1920,1933,1959,1974,1989,2004,2019,2034,2049,2070,2094,2112,2125,2138,2151,2163,2175,2188,2207,2221,2238],"tbody",{},[1876,1892,1893,1899,1902],{},[1894,1895,1896],"td",{},[462,1897,1898],{},"ai.calls",[1894,1900,1901],{},"Call count",[1894,1903,1904],{},"Number of AI calls in this request",[1876,1906,1907,1912,1917],{},[1894,1908,1909],{},[462,1910,1911],{},"ai.model",[1894,1913,1914],{},[462,1915,1916],{},"response.modelId",[1894,1918,1919],{},"Model that served the response",[1876,1921,1922,1927,1930],{},[1894,1923,1924],{},[462,1925,1926],{},"ai.models",[1894,1928,1929],{},"All model IDs",[1894,1931,1932],{},"Array of all models used (only when > 1)",[1876,1934,1935,1940,1945],{},[1894,1936,1937],{},[462,1938,1939],{},"ai.provider",[1894,1941,1942],{},[462,1943,1944],{},"model.provider",[1894,1946,1947,1948,1951,1952,1951,1955,1958],{},"Provider (",[462,1949,1950],{},"anthropic",", ",[462,1953,1954],{},"openai",[462,1956,1957],{},"google",", etc.)",[1876,1960,1961,1966,1971],{},[1894,1962,1963],{},[462,1964,1965],{},"ai.inputTokens",[1894,1967,1968],{},[462,1969,1970],{},"usage.inputTokens.total",[1894,1972,1973],{},"Total input tokens across all calls",[1876,1975,1976,1981,1986],{},[1894,1977,1978],{},[462,1979,1980],{},"ai.outputTokens",[1894,1982,1983],{},[462,1984,1985],{},"usage.outputTokens.total",[1894,1987,1988],{},"Total output tokens across all calls",[1876,1990,1991,1996,1999],{},[1894,1992,1993],{},[462,1994,1995],{},"ai.totalTokens",[1894,1997,1998],{},"Computed",[1894,2000,2001],{},[462,2002,2003],{},"inputTokens + outputTokens",[1876,2005,2006,2011,2016],{},[1894,2007,2008],{},[462,2009,2010],{},"ai.cacheReadTokens",[1894,2012,2013],{},[462,2014,2015],{},"usage.inputTokens.cacheRead",[1894,2017,2018],{},"Tokens served from prompt cache",[1876,2020,2021,2026,2031],{},[1894,2022,2023],{},[462,2024,2025],{},"ai.cacheWriteTokens",[1894,2027,2028],{},[462,2029,2030],{},"usage.inputTokens.cacheWrite",[1894,2032,2033],{},"Tokens written to prompt cache",[1876,2035,2036,2041,2046],{},[1894,2037,2038],{},[462,2039,2040],{},"ai.reasoningTokens",[1894,2042,2043],{},[462,2044,2045],{},"usage.outputTokens.reasoning",[1894,2047,2048],{},"Reasoning tokens (extended thinking)",[1876,2050,2051,2056,2061],{},[1894,2052,2053],{},[462,2054,2055],{},"ai.finishReason",[1894,2057,2058],{},[462,2059,2060],{},"finishReason.unified",[1894,2062,2063,2064,1951,2067,1958],{},"Why generation ended (",[462,2065,2066],{},"stop",[462,2068,2069],{},"tool-calls",[1876,2071,2072,2077,2080],{},[1894,2073,2074],{},[462,2075,2076],{},"ai.toolCalls",[1894,2078,2079],{},"Content \u002F stream chunks",[1894,2081,2082,2085,2086,2089,2090,2093],{},[462,2083,2084],{},"string[]"," of tool names by default, or ",[462,2087,2088],{},"Array\u003C{ name, input }>"," when ",[462,2091,2092],{},"toolInputs"," is enabled",[1876,2095,2096,2101,2106],{},[1894,2097,2098],{},[462,2099,2100],{},"ai.responseId",[1894,2102,2103],{},[462,2104,2105],{},"response.id",[1894,2107,2108,2109,614],{},"Provider-assigned response ID (e.g. Anthropic's ",[462,2110,2111],{},"msg_...",[1876,2113,2114,2119,2122],{},[1894,2115,2116],{},[462,2117,2118],{},"ai.steps",[1894,2120,2121],{},"Step count",[1894,2123,2124],{},"Number of LLM calls (only when > 1)",[1876,2126,2127,2132,2135],{},[1894,2128,2129],{},[462,2130,2131],{},"ai.stepsUsage",[1894,2133,2134],{},"Per-step accumulation",[1894,2136,2137],{},"Per-step token and tool call breakdown (only when > 1 step)",[1876,2139,2140,2145,2148],{},[1894,2141,2142],{},[462,2143,2144],{},"ai.msToFirstChunk",[1894,2146,2147],{},"Stream timing",[1894,2149,2150],{},"Time to first text chunk (streaming only)",[1876,2152,2153,2158,2160],{},[1894,2154,2155],{},[462,2156,2157],{},"ai.msToFinish",[1894,2159,2147],{},[1894,2161,2162],{},"Total stream duration (streaming only)",[1876,2164,2165,2170,2172],{},[1894,2166,2167],{},[462,2168,2169],{},"ai.tokensPerSecond",[1894,2171,1998],{},[1894,2173,2174],{},"Output tokens per second (streaming only)",[1876,2176,2177,2182,2185],{},[1894,2178,2179],{},[462,2180,2181],{},"ai.error",[1894,2183,2184],{},"Error capture",[1894,2186,2187],{},"Error message if a model call fails",[1876,2189,2190,2195,2198],{},[1894,2191,2192],{},[462,2193,2194],{},"ai.tools",[1894,2196,2197],{},"Telemetry integration",[1894,2199,2200,2201,2204,2205,614],{},"Per-tool ",[462,2202,2203],{},"{ name, durationMs, success, error? }"," (requires ",[462,2206,1240],{},[1876,2208,2209,2214,2216],{},[1894,2210,2211],{},[462,2212,2213],{},"ai.totalDurationMs",[1894,2215,2197],{},[1894,2217,2218,2219,614],{},"Total generation wall time (requires ",[462,2220,1240],{},[1876,2222,2223,2228,2232],{},[1894,2224,2225],{},[462,2226,2227],{},"ai.embedding",[1894,2229,2230],{},[462,2231,1230],{},[1894,2233,2234,2237],{},[462,2235,2236],{},"{ model?, tokens, dimensions?, count? }"," — embedding metadata",[1876,2239,2240,2245,2247],{},[1894,2241,2242],{},[462,2243,2244],{},"ai.estimatedCost",[1894,2246,1998],{},[1894,2248,2249,2250,2252],{},"Estimated cost in dollars (requires ",[462,2251,1030],{}," option)",[2254,2255,2256],"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":501,"searchDepth":539,"depth":539,"links":2258},[2259,2261,2263,2265,2267],{"id":475,"depth":539,"text":2260},"getMetadata() — final snapshot",{"id":1012,"depth":539,"text":2262},"getEstimatedCost() — quick cost check",{"id":1210,"depth":539,"text":2264},"onUpdate(callback) — incremental updates",{"id":1703,"depth":539,"text":2266},"AIMetadata shape",{"id":1861,"depth":539,"text":1862},"Read AI metadata from your handler — persist it, surface it to end-users, bill against it, or stream incremental progress to the client.","md",[2271,2274],{"label":36,"icon":39,"to":266,"color":2272,"variant":2273},"neutral","subtle",{"label":274,"icon":277,"to":275,"color":2272,"variant":2273},{},{"title":279,"icon":282},{"title":453,"description":2268},"srpMXsHCHfss-fZadslFPVdMIxfguucjXvUNoc1jYH0",[2280,2282],{"title":274,"path":275,"stem":276,"description":2281,"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":2283,"icon":287,"children":-1},"Add tool execution timing and total wall time with createEvlogIntegration. Compose with other middleware like supermemory or guardrails.",1784142035819]