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