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