[{"data":1,"prerenderedAt":2280},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-ai-sdk-metadata":447,"-use-cases-ai-sdk-metadata-surround":2275},[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,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,"icon":315},"\u002Fuse-cases\u002Ftelemetry","4.use-cases\u002F6.telemetry",{"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":2264,"extension":2265,"links":2266,"meta":2271,"navigation":2272,"path":280,"seo":2273,"stem":281,"__hash__":2274},"docs\u002F4.use-cases\u002F2.ai-sdk\u002F04.metadata.md","Access Metadata",{"type":451,"value":452,"toc":2253},"minimark",[453,462,468,476,490,1003,1006,1013,1028,1204,1211,1214,1245,1248,1642,1645,1697,1703,1717,1855,1859,1865,2249],[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,1241,1242,1244],{},"On ",[458,1235,1236],{},"createEvlogIntegration","'s ",[458,1239,1240],{},"onEnd"," (v7) or ",[458,1243,488],{}," (v6)",[454,1246,1247],{},"Each invocation receives a fresh snapshot. Returns an unsubscribe function. Subscriber errors are isolated and never break the AI flow.",[491,1249,1252],{"className":493,"code":1250,"filename":1251,"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,1253,1254,1283,1301,1319,1323,1345,1361,1386,1402,1406,1429,1442,1458,1474,1490,1505,1512,1518,1522,1540,1564,1583,1601,1607,1611,1636],{"__ignoreMap":497},[501,1255,1256,1258,1260,1263,1265,1268,1270,1273,1275,1277,1279,1281],{"class":503,"line":504},[501,1257,508],{"class":507},[501,1259,512],{"class":511},[501,1261,1262],{"class":515}," ToolLoopAgent",[501,1264,658],{"class":511},[501,1266,1267],{"class":515}," createAgentUIStreamResponse",[501,1269,658],{"class":511},[501,1271,1272],{"class":515}," stepCountIs",[501,1274,519],{"class":511},[501,1276,522],{"class":507},[501,1278,525],{"class":511},[501,1280,460],{"class":528},[501,1282,532],{"class":511},[501,1284,1285,1287,1289,1291,1293,1295,1297,1299],{"class":503,"line":535},[501,1286,508],{"class":507},[501,1288,512],{"class":511},[501,1290,516],{"class":515},[501,1292,519],{"class":511},[501,1294,522],{"class":507},[501,1296,525],{"class":511},[501,1298,529],{"class":528},[501,1300,532],{"class":511},[501,1302,1303,1305,1307,1309,1311,1313,1315,1317],{"class":503,"line":556},[501,1304,508],{"class":507},[501,1306,512],{"class":511},[501,1308,542],{"class":515},[501,1310,519],{"class":511},[501,1312,522],{"class":507},[501,1314,525],{"class":511},[501,1316,551],{"class":528},[501,1318,532],{"class":511},[501,1320,1321],{"class":503,"line":576},[501,1322,580],{"emptyLinePlaceholder":579},[501,1324,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343],{"class":503,"line":583},[501,1326,586],{"class":507},[501,1328,589],{"class":507},[501,1330,593],{"class":592},[501,1332,596],{"class":515},[501,1334,600],{"class":599},[501,1336,603],{"class":511},[501,1338,607],{"class":606},[501,1340,610],{"class":511},[501,1342,613],{"class":599},[501,1344,616],{"class":511},[501,1346,1347,1349,1351,1353,1355,1357,1359],{"class":503,"line":619},[501,1348,622],{"class":599},[501,1350,625],{"class":515},[501,1352,628],{"class":511},[501,1354,516],{"class":592},[501,1356,596],{"class":633},[501,1358,607],{"class":515},[501,1360,638],{"class":633},[501,1362,1363,1365,1367,1370,1372,1374,1377,1380,1382,1384],{"class":503,"line":641},[501,1364,622],{"class":599},[501,1366,512],{"class":511},[501,1368,1369],{"class":515}," messages",[501,1371,519],{"class":511},[501,1373,628],{"class":511},[501,1375,1376],{"class":507}," await",[501,1378,1379],{"class":592}," readBody",[501,1381,596],{"class":633},[501,1383,607],{"class":515},[501,1385,638],{"class":633},[501,1387,1388,1390,1392,1394,1396,1398,1400],{"class":503,"line":663},[501,1389,622],{"class":599},[501,1391,646],{"class":515},[501,1393,628],{"class":511},[501,1395,542],{"class":592},[501,1397,596],{"class":633},[501,1399,655],{"class":515},[501,1401,638],{"class":633},[501,1403,1404],{"class":503,"line":709},[501,1405,580],{"emptyLinePlaceholder":579},[501,1407,1408,1411,1413,1416,1418,1420,1423,1425,1427],{"class":503,"line":717},[501,1409,1410],{"class":515},"  ai",[501,1412,745],{"class":511},[501,1414,1415],{"class":592},"onUpdate",[501,1417,596],{"class":633},[501,1419,596],{"class":511},[501,1421,1422],{"class":606},"metadata",[501,1424,610],{"class":511},[501,1426,613],{"class":599},[501,1428,616],{"class":511},[501,1430,1431,1434,1436,1438,1440],{"class":503,"line":722},[501,1432,1433],{"class":592},"    pushToClient",[501,1435,596],{"class":633},[501,1437,607],{"class":515},[501,1439,658],{"class":511},[501,1441,616],{"class":511},[501,1443,1444,1447,1449,1451,1454,1456],{"class":503,"line":735},[501,1445,1446],{"class":633},"      type",[501,1448,489],{"class":511},[501,1450,525],{"class":511},[501,1452,1453],{"class":528},"ai-progress",[501,1455,678],{"class":511},[501,1457,762],{"class":511},[501,1459,1460,1463,1465,1467,1469,1472],{"class":503,"line":765},[501,1461,1462],{"class":633},"      step",[501,1464,489],{"class":511},[501,1466,799],{"class":515},[501,1468,745],{"class":511},[501,1470,1471],{"class":515},"steps",[501,1473,762],{"class":511},[501,1475,1476,1479,1481,1483,1485,1488],{"class":503,"line":782},[501,1477,1478],{"class":633},"      tokens",[501,1480,489],{"class":511},[501,1482,799],{"class":515},[501,1484,745],{"class":511},[501,1486,1487],{"class":515},"totalTokens",[501,1489,762],{"class":511},[501,1491,1492,1495,1497,1499,1501,1503],{"class":503,"line":789},[501,1493,1494],{"class":633},"      cost",[501,1496,489],{"class":511},[501,1498,799],{"class":515},[501,1500,745],{"class":511},[501,1502,926],{"class":515},[501,1504,762],{"class":511},[501,1506,1507,1510],{"class":503,"line":794},[501,1508,1509],{"class":511},"    }",[501,1511,638],{"class":633},[501,1513,1514,1516],{"class":503,"line":814},[501,1515,712],{"class":511},[501,1517,638],{"class":633},[501,1519,1520],{"class":503,"line":819},[501,1521,580],{"emptyLinePlaceholder":579},[501,1523,1524,1526,1529,1531,1534,1536,1538],{"class":503,"line":841},[501,1525,622],{"class":599},[501,1527,1528],{"class":515}," agent",[501,1530,628],{"class":511},[501,1532,1533],{"class":511}," new",[501,1535,1262],{"class":592},[501,1537,596],{"class":633},[501,1539,732],{"class":511},[501,1541,1542,1544,1546,1548,1550,1552,1554,1556,1558,1560,1562],{"class":503,"line":864},[501,1543,738],{"class":633},[501,1545,489],{"class":511},[501,1547,646],{"class":515},[501,1549,745],{"class":511},[501,1551,748],{"class":592},[501,1553,596],{"class":633},[501,1555,678],{"class":511},[501,1557,755],{"class":528},[501,1559,678],{"class":511},[501,1561,610],{"class":633},[501,1563,762],{"class":511},[501,1565,1566,1569,1571,1573,1576,1578,1581],{"class":503,"line":880},[501,1567,1568],{"class":633},"    tools",[501,1570,489],{"class":511},[501,1572,512],{"class":511},[501,1574,1575],{"class":515}," searchWeb",[501,1577,658],{"class":511},[501,1579,1580],{"class":515}," queryDatabase",[501,1582,706],{"class":511},[501,1584,1585,1588,1590,1592,1594,1597,1599],{"class":503,"line":897},[501,1586,1587],{"class":633},"    stopWhen",[501,1589,489],{"class":511},[501,1591,1272],{"class":592},[501,1593,596],{"class":633},[501,1595,1596],{"class":690},"5",[501,1598,610],{"class":633},[501,1600,762],{"class":511},[501,1602,1603,1605],{"class":503,"line":914},[501,1604,712],{"class":511},[501,1606,638],{"class":633},[501,1608,1609],{"class":503,"line":931},[501,1610,580],{"emptyLinePlaceholder":579},[501,1612,1613,1615,1617,1619,1621,1623,1625,1628,1630,1632,1634],{"class":503,"line":948},[501,1614,980],{"class":507},[501,1616,1267],{"class":592},[501,1618,596],{"class":633},[501,1620,1111],{"class":511},[501,1622,1528],{"class":515},[501,1624,658],{"class":511},[501,1626,1627],{"class":633}," uiMessages",[501,1629,489],{"class":511},[501,1631,1369],{"class":515},[501,1633,519],{"class":511},[501,1635,638],{"class":633},[501,1637,1638,1640],{"class":503,"line":965},[501,1639,1000],{"class":511},[501,1641,638],{"class":515},[454,1643,1644],{},"For one-off cleanup:",[491,1646,1648],{"className":493,"code":1647,"language":496,"meta":497,"style":497},"const off = ai.onUpdate((metadata) => { \u002F* ... *\u002F })\n\u002F\u002F later\noff()\n",[458,1649,1650,1685,1690],{"__ignoreMap":497},[501,1651,1652,1654,1657,1659,1661,1663,1665,1667,1669,1671,1673,1675,1677,1681,1683],{"class":503,"line":504},[501,1653,1037],{"class":599},[501,1655,1656],{"class":515}," off ",[501,1658,1043],{"class":511},[501,1660,646],{"class":515},[501,1662,745],{"class":511},[501,1664,1415],{"class":592},[501,1666,596],{"class":515},[501,1668,596],{"class":511},[501,1670,1422],{"class":606},[501,1672,610],{"class":511},[501,1674,613],{"class":599},[501,1676,512],{"class":511},[501,1678,1680],{"class":1679},"sHwdD"," \u002F* ... *\u002F",[501,1682,519],{"class":511},[501,1684,638],{"class":515},[501,1686,1687],{"class":503,"line":535},[501,1688,1689],{"class":1679},"\u002F\u002F later\n",[501,1691,1692,1695],{"class":503,"line":556},[501,1693,1694],{"class":592},"off",[501,1696,811],{"class":515},[469,1698,1700,1702],{"id":1699},"aimetadata-shape",[458,1701,481],{}," shape",[454,1704,1705,1707,1708,1710,1711,1713,1714,1716],{},[458,1706,481],{}," is a public type alias for the snapshot returned by ",[458,1709,474],{}," and passed to ",[458,1712,1415],{}," listeners. It has the same shape as the ",[458,1715,460],{}," field on the wide event.",[491,1718,1720],{"className":493,"code":1719,"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,1721,1722,1749,1753,1774,1819,1824,1828,1844],{"__ignoreMap":497},[501,1723,1724,1726,1729,1731,1734,1736,1739,1741,1743,1745,1747],{"class":503,"line":504},[501,1725,508],{"class":507},[501,1727,1728],{"class":507}," type",[501,1730,512],{"class":511},[501,1732,1733],{"class":515}," AIMetadata",[501,1735,658],{"class":511},[501,1737,1738],{"class":515}," AIMetadataListener",[501,1740,519],{"class":511},[501,1742,522],{"class":507},[501,1744,525],{"class":511},[501,1746,551],{"class":528},[501,1748,532],{"class":511},[501,1750,1751],{"class":503,"line":535},[501,1752,580],{"emptyLinePlaceholder":579},[501,1754,1755,1758,1761,1763,1765,1767,1770,1772],{"class":503,"line":556},[501,1756,1757],{"class":599},"function",[501,1759,1760],{"class":592}," handleProgress",[501,1762,596],{"class":511},[501,1764,1422],{"class":606},[501,1766,489],{"class":511},[501,1768,1733],{"class":1769},"sBMFI",[501,1771,610],{"class":511},[501,1773,616],{"class":511},[501,1775,1776,1779,1781,1783,1785,1788,1790,1792,1795,1797,1800,1802,1804,1806,1809,1812,1815,1817],{"class":503,"line":576},[501,1777,1778],{"class":515},"  console",[501,1780,745],{"class":511},[501,1782,655],{"class":592},[501,1784,596],{"class":633},[501,1786,1787],{"class":511},"`${",[501,1789,1422],{"class":515},[501,1791,745],{"class":511},[501,1793,1794],{"class":515},"calls",[501,1796,1000],{"class":511},[501,1798,1799],{"class":528}," calls, $",[501,1801,1183],{"class":511},[501,1803,1422],{"class":515},[501,1805,745],{"class":511},[501,1807,1808],{"class":515},"estimatedCost ",[501,1810,1811],{"class":511},"??",[501,1813,1814],{"class":690}," 0",[501,1816,1201],{"class":511},[501,1818,638],{"class":633},[501,1820,1821],{"class":503,"line":583},[501,1822,1823],{"class":511},"}\n",[501,1825,1826],{"class":503,"line":619},[501,1827,580],{"emptyLinePlaceholder":579},[501,1829,1830,1832,1835,1837,1839,1841],{"class":503,"line":641},[501,1831,1037],{"class":599},[501,1833,1834],{"class":515}," listener",[501,1836,489],{"class":511},[501,1838,1738],{"class":1769},[501,1840,628],{"class":511},[501,1842,1843],{"class":515}," handleProgress\n",[501,1845,1846,1848,1850,1852],{"class":503,"line":663},[501,1847,460],{"class":515},[501,1849,745],{"class":511},[501,1851,1415],{"class":592},[501,1853,1854],{"class":515},"(listener)\n",[469,1856,1858],{"id":1857},"captured-data-reference","Captured Data Reference",[454,1860,1861,1862,489],{},"Every field that may show up under ",[458,1863,1864],{},"ai.*",[1866,1867,1868,1884],"table",{},[1869,1870,1871],"thead",{},[1872,1873,1874,1878,1881],"tr",{},[1875,1876,1877],"th",{},"Wide event field",[1875,1879,1880],{},"Source",[1875,1882,1883],{},"Description",[1885,1886,1887,1901,1916,1929,1955,1970,1985,2000,2015,2030,2045,2066,2090,2108,2121,2134,2147,2159,2171,2184,2203,2217,2234],"tbody",{},[1872,1888,1889,1895,1898],{},[1890,1891,1892],"td",{},[458,1893,1894],{},"ai.calls",[1890,1896,1897],{},"Call count",[1890,1899,1900],{},"Number of AI calls in this request",[1872,1902,1903,1908,1913],{},[1890,1904,1905],{},[458,1906,1907],{},"ai.model",[1890,1909,1910],{},[458,1911,1912],{},"response.modelId",[1890,1914,1915],{},"Model that served the response",[1872,1917,1918,1923,1926],{},[1890,1919,1920],{},[458,1921,1922],{},"ai.models",[1890,1924,1925],{},"All model IDs",[1890,1927,1928],{},"Array of all models used (only when > 1)",[1872,1930,1931,1936,1941],{},[1890,1932,1933],{},[458,1934,1935],{},"ai.provider",[1890,1937,1938],{},[458,1939,1940],{},"model.provider",[1890,1942,1943,1944,1947,1948,1947,1951,1954],{},"Provider (",[458,1945,1946],{},"anthropic",", ",[458,1949,1950],{},"openai",[458,1952,1953],{},"google",", etc.)",[1872,1956,1957,1962,1967],{},[1890,1958,1959],{},[458,1960,1961],{},"ai.inputTokens",[1890,1963,1964],{},[458,1965,1966],{},"usage.inputTokens.total",[1890,1968,1969],{},"Total input tokens across all calls",[1872,1971,1972,1977,1982],{},[1890,1973,1974],{},[458,1975,1976],{},"ai.outputTokens",[1890,1978,1979],{},[458,1980,1981],{},"usage.outputTokens.total",[1890,1983,1984],{},"Total output tokens across all calls",[1872,1986,1987,1992,1995],{},[1890,1988,1989],{},[458,1990,1991],{},"ai.totalTokens",[1890,1993,1994],{},"Computed",[1890,1996,1997],{},[458,1998,1999],{},"inputTokens + outputTokens",[1872,2001,2002,2007,2012],{},[1890,2003,2004],{},[458,2005,2006],{},"ai.cacheReadTokens",[1890,2008,2009],{},[458,2010,2011],{},"usage.inputTokens.cacheRead",[1890,2013,2014],{},"Tokens served from prompt cache",[1872,2016,2017,2022,2027],{},[1890,2018,2019],{},[458,2020,2021],{},"ai.cacheWriteTokens",[1890,2023,2024],{},[458,2025,2026],{},"usage.inputTokens.cacheWrite",[1890,2028,2029],{},"Tokens written to prompt cache",[1872,2031,2032,2037,2042],{},[1890,2033,2034],{},[458,2035,2036],{},"ai.reasoningTokens",[1890,2038,2039],{},[458,2040,2041],{},"usage.outputTokens.reasoning",[1890,2043,2044],{},"Reasoning tokens (extended thinking)",[1872,2046,2047,2052,2057],{},[1890,2048,2049],{},[458,2050,2051],{},"ai.finishReason",[1890,2053,2054],{},[458,2055,2056],{},"finishReason.unified",[1890,2058,2059,2060,1947,2063,1954],{},"Why generation ended (",[458,2061,2062],{},"stop",[458,2064,2065],{},"tool-calls",[1872,2067,2068,2073,2076],{},[1890,2069,2070],{},[458,2071,2072],{},"ai.toolCalls",[1890,2074,2075],{},"Content \u002F stream chunks",[1890,2077,2078,2081,2082,2085,2086,2089],{},[458,2079,2080],{},"string[]"," of tool names by default, or ",[458,2083,2084],{},"Array\u003C{ name, input }>"," when ",[458,2087,2088],{},"toolInputs"," is enabled",[1872,2091,2092,2097,2102],{},[1890,2093,2094],{},[458,2095,2096],{},"ai.responseId",[1890,2098,2099],{},[458,2100,2101],{},"response.id",[1890,2103,2104,2105,610],{},"Provider-assigned response ID (e.g. Anthropic's ",[458,2106,2107],{},"msg_...",[1872,2109,2110,2115,2118],{},[1890,2111,2112],{},[458,2113,2114],{},"ai.steps",[1890,2116,2117],{},"Step count",[1890,2119,2120],{},"Number of LLM calls (only when > 1)",[1872,2122,2123,2128,2131],{},[1890,2124,2125],{},[458,2126,2127],{},"ai.stepsUsage",[1890,2129,2130],{},"Per-step accumulation",[1890,2132,2133],{},"Per-step token and tool call breakdown (only when > 1 step)",[1872,2135,2136,2141,2144],{},[1890,2137,2138],{},[458,2139,2140],{},"ai.msToFirstChunk",[1890,2142,2143],{},"Stream timing",[1890,2145,2146],{},"Time to first text chunk (streaming only)",[1872,2148,2149,2154,2156],{},[1890,2150,2151],{},[458,2152,2153],{},"ai.msToFinish",[1890,2155,2143],{},[1890,2157,2158],{},"Total stream duration (streaming only)",[1872,2160,2161,2166,2168],{},[1890,2162,2163],{},[458,2164,2165],{},"ai.tokensPerSecond",[1890,2167,1994],{},[1890,2169,2170],{},"Output tokens per second (streaming only)",[1872,2172,2173,2178,2181],{},[1890,2174,2175],{},[458,2176,2177],{},"ai.error",[1890,2179,2180],{},"Error capture",[1890,2182,2183],{},"Error message if a model call fails",[1872,2185,2186,2191,2194],{},[1890,2187,2188],{},[458,2189,2190],{},"ai.tools",[1890,2192,2193],{},"Telemetry integration",[1890,2195,2196,2197,2200,2201,610],{},"Per-tool ",[458,2198,2199],{},"{ name, durationMs, success, error? }"," (requires ",[458,2202,1236],{},[1872,2204,2205,2210,2212],{},[1890,2206,2207],{},[458,2208,2209],{},"ai.totalDurationMs",[1890,2211,2193],{},[1890,2213,2214,2215,610],{},"Total generation wall time (requires ",[458,2216,1236],{},[1872,2218,2219,2224,2228],{},[1890,2220,2221],{},[458,2222,2223],{},"ai.embedding",[1890,2225,2226],{},[458,2227,1226],{},[1890,2229,2230,2233],{},[458,2231,2232],{},"{ model?, tokens, dimensions?, count? }"," — embedding metadata",[1872,2235,2236,2241,2243],{},[1890,2237,2238],{},[458,2239,2240],{},"ai.estimatedCost",[1890,2242,1994],{},[1890,2244,2245,2246,2248],{},"Estimated cost in dollars (requires ",[458,2247,1026],{}," option)",[2250,2251,2252],"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":2254},[2255,2257,2259,2261,2263],{"id":471,"depth":535,"text":2256},"getMetadata() — final snapshot",{"id":1008,"depth":535,"text":2258},"getEstimatedCost() — quick cost check",{"id":1206,"depth":535,"text":2260},"onUpdate(callback) — incremental updates",{"id":1699,"depth":535,"text":2262},"AIMetadata shape",{"id":1857,"depth":535,"text":1858},"Read AI metadata from your handler — persist it, surface it to end-users, bill against it, or stream incremental progress to the client.","md",[2267,2270],{"label":36,"icon":39,"to":266,"color":2268,"variant":2269},"neutral","subtle",{"label":274,"icon":277,"to":275,"color":2268,"variant":2269},{},{"title":279,"icon":282},{"title":449,"description":2264},"srpMXsHCHfss-fZadslFPVdMIxfguucjXvUNoc1jYH0",[2276,2278],{"title":274,"path":275,"stem":276,"description":2277,"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":2279,"icon":287,"children":-1},"Add tool execution timing and total wall time with createEvlogIntegration. Compose with other middleware like supermemory or guardrails.",1784202387247]