[{"data":1,"prerenderedAt":1197},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-ai-sdk-options":443,"-use-cases-ai-sdk-options-surround":1192},[4,30,80,249,357,412],{"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,245],{"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,"icon":44},"CLI","\u002Fintegrate\u002Fframeworks\u002Fcli","3.integrate\u002Fframeworks\u002F17.cli",{"title":250,"path":251,"stem":252,"children":253,"page":29},"Use Cases","\u002Fuse-cases","4.use-cases",[254,258,263,292,320,352],{"title":36,"path":255,"stem":256,"icon":257},"\u002Fuse-cases\u002Foverview","4.use-cases\u002F0.overview","i-lucide-list-checks",{"title":259,"path":260,"stem":261,"icon":262},"Client Logging","\u002Fuse-cases\u002Fclient-logging","4.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":264,"icon":265,"path":266,"stem":267,"children":268,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","4.use-cases\u002F2.ai-sdk",[269,272,277,282,287],{"title":36,"path":270,"stem":271,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","4.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":273,"path":274,"stem":275,"icon":276},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","4.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":278,"path":279,"stem":280,"icon":281},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","4.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":283,"path":284,"stem":285,"icon":286},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","4.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":288,"path":289,"stem":290,"icon":291},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","4.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":293,"icon":294,"path":295,"stem":296,"children":297,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","4.use-cases\u002F3.better-auth",[298,301,306,311,315],{"title":36,"path":299,"stem":300,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","4.use-cases\u002F3.better-auth\u002F01.overview",{"title":302,"path":303,"stem":304,"icon":305},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","4.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":307,"path":308,"stem":309,"icon":310},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","4.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":312,"path":313,"stem":314,"icon":262},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","4.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":316,"path":317,"stem":318,"icon":319},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","4.use-cases\u002F3.better-auth\u002F05.performance","i-lucide-gauge",{"title":321,"icon":322,"path":323,"stem":324,"children":325,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","4.use-cases\u002F4.audit",[326,329,334,339,344,348],{"title":36,"path":327,"stem":328,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","4.use-cases\u002F4.audit\u002F01.overview",{"title":330,"path":331,"stem":332,"icon":333},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","4.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":335,"path":336,"stem":337,"icon":338},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","4.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":340,"path":341,"stem":342,"icon":343},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","4.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":345,"path":346,"stem":347,"icon":322},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","4.use-cases\u002F4.audit\u002F05.compliance",{"title":349,"path":350,"stem":351,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","4.use-cases\u002F4.audit\u002F06.recipes",{"title":353,"path":354,"stem":355,"icon":356},"Enrichers","\u002Fuse-cases\u002Fenrichers","4.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":358,"path":359,"stem":360,"children":361,"page":29},"Extend","\u002Fextend","5.extend",[362,366,371,376,381,385,389,393,397,402,407],{"title":36,"path":363,"stem":364,"icon":365},"\u002Fextend\u002Foverview","5.extend\u002F0.overview","i-lucide-blocks",{"title":367,"path":368,"stem":369,"icon":370},"Stream","\u002Fextend\u002Fstream","5.extend\u002F1.stream","i-lucide-radio-tower",{"title":372,"path":373,"stem":374,"icon":375},"Custom framework","\u002Fextend\u002Fcustom-framework","5.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":377,"path":378,"stem":379,"icon":380},"FS reader","\u002Fextend\u002Ffs-reader","5.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":349,"path":382,"stem":383,"icon":384},"\u002Fextend\u002Fconsumer-recipes","5.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":386,"path":387,"stem":388,"icon":365},"Plugins","\u002Fextend\u002Fplugins","5.extend\u002F4.plugins",{"title":390,"path":391,"stem":392,"icon":356},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","5.extend\u002F5.custom-enrichers",{"title":394,"path":395,"stem":396,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","5.extend\u002F6.tail-sampling",{"title":398,"path":399,"stem":400,"icon":401},"Identity headers","\u002Fextend\u002Fidentity-headers","5.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":403,"path":404,"stem":405,"icon":406},"Custom drains","\u002Fextend\u002Fcustom-drains","5.extend\u002F8.custom-drains","i-lucide-share-2",{"title":408,"path":409,"stem":410,"icon":411},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","5.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":413,"path":414,"stem":415,"children":416,"page":29},"Reference","\u002Freference","6.reference",[417,422,425,430,434,439],{"title":418,"path":419,"stem":420,"icon":421},"Configuration","\u002Freference\u002Fconfiguration","6.reference\u002F1.configuration","i-lucide-settings",{"title":316,"path":423,"stem":424,"icon":319},"\u002Freference\u002Fperformance","6.reference\u002F2.performance",{"title":426,"path":427,"stem":428,"icon":429},"Vite Plugin","\u002Freference\u002Fvite-plugin","6.reference\u002F3.vite-plugin","i-custom-vite",{"title":431,"path":432,"stem":433,"icon":322},"Best Practices","\u002Freference\u002Fbest-practices","6.reference\u002F4.best-practices",{"title":435,"path":436,"stem":437,"icon":438},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","6.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":440,"path":441,"stem":442,"icon":356},"Agent Skills","\u002Freference\u002Fagent-skills","6.reference\u002F6.agent-skills",{"id":444,"title":278,"body":445,"description":1180,"extension":1181,"links":1182,"meta":1188,"navigation":1189,"path":279,"seo":1190,"stem":280,"__hash__":1191},"docs\u002F4.use-cases\u002F2.ai-sdk\u002F03.options.md",{"type":446,"value":447,"toc":1171},"minimark",[448,456,526,531,545,557,562,618,622,664,668,819,869,882,886,896,1002,1012,1019,1023,1026,1160,1167],[449,450,451,455],"p",{},[452,453,454],"code",{},"createAILogger(log, options?)"," accepts a single options bag. Every option is opt-in — defaults stay safe and quiet.",[457,458,459,478],"table",{},[460,461,462],"thead",{},[463,464,465,469,472,475],"tr",{},[466,467,468],"th",{},"Option",[466,470,471],{},"Type",[466,473,474],{},"Default",[466,476,477],{},"Description",[479,480,481,502],"tbody",{},[463,482,483,489,494,499],{},[484,485,486],"td",{},[452,487,488],{},"toolInputs",[484,490,491],{},[452,492,493],{},"boolean | ToolInputsOptions",[484,495,496],{},[452,497,498],{},"false",[484,500,501],{},"Capture tool call inputs alongside their names (off by default to avoid leaking sensitive data).",[463,503,504,509,514,519],{},[484,505,506],{},[452,507,508],{},"cost",[484,510,511],{},[452,512,513],{},"Record\u003Cstring, ModelCost>",[484,515,516],{},[452,517,518],{},"undefined",[484,520,521,522,525],{},"Pricing map. Keys are model IDs, values are ",[452,523,524],{},"{ input, output }"," in dollars per 1M tokens.",[527,528,530],"h2",{"id":529},"tool-inputs","Tool Inputs",[449,532,533,534,537,538,541,542,544],{},"By default, ",[452,535,536],{},"ai.toolCalls"," is a ",[452,539,540],{},"string[]"," of tool names. Enable ",[452,543,488],{}," to capture inputs too — useful for debugging agent behaviour or auditing what data the model reached for.",[546,547,548,549,552,553,556],"warning",{},"Tool inputs can be large and may contain sensitive data (SQL, API keys, customer PII). Use ",[452,550,551],{},"maxLength"," and ",[452,554,555],{},"transform"," rather than enabling raw capture in production.",[558,559,561],"h3",{"id":560},"capture-everything","Capture everything",[563,564,569],"pre",{"className":565,"code":566,"language":567,"meta":568,"style":568},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const ai = createAILogger(log, { toolInputs: true })\n","typescript","",[452,570,571],{"__ignoreMap":568},[572,573,576,580,584,588,592,595,598,601,605,608,612,615],"span",{"class":574,"line":575},"line",1,[572,577,579],{"class":578},"spNyl","const",[572,581,583],{"class":582},"sTEyZ"," ai ",[572,585,587],{"class":586},"sMK4o","=",[572,589,591],{"class":590},"s2Zo4"," createAILogger",[572,593,594],{"class":582},"(log",[572,596,597],{"class":586},",",[572,599,600],{"class":586}," {",[572,602,604],{"class":603},"swJcz"," toolInputs",[572,606,607],{"class":586},":",[572,609,611],{"class":610},"sfNiH"," true",[572,613,614],{"class":586}," }",[572,616,617],{"class":582},")\n",[558,619,621],{"id":620},"truncate-long-inputs","Truncate long inputs",[563,623,625],{"className":565,"code":624,"language":567,"meta":568,"style":568},"const ai = createAILogger(log, { toolInputs: { maxLength: 200 } })\n",[452,626,627],{"__ignoreMap":568},[572,628,629,631,633,635,637,639,641,643,645,647,649,652,654,658,660,662],{"class":574,"line":575},[572,630,579],{"class":578},[572,632,583],{"class":582},[572,634,587],{"class":586},[572,636,591],{"class":590},[572,638,594],{"class":582},[572,640,597],{"class":586},[572,642,600],{"class":586},[572,644,604],{"class":603},[572,646,607],{"class":586},[572,648,600],{"class":586},[572,650,651],{"class":603}," maxLength",[572,653,607],{"class":586},[572,655,657],{"class":656},"sbssI"," 200",[572,659,614],{"class":586},[572,661,614],{"class":586},[572,663,617],{"class":582},[558,665,667],{"id":666},"redact-sensitive-fields","Redact sensitive fields",[563,669,671],{"className":565,"code":670,"language":567,"meta":568,"style":568},"const ai = createAILogger(log, {\n  toolInputs: {\n    maxLength: 500,\n    transform: (input, toolName) => {\n      if (toolName === 'queryDB') return { sql: '***' }\n      return input\n    },\n  },\n})\n",[452,672,673,690,700,714,742,790,799,805,811],{"__ignoreMap":568},[572,674,675,677,679,681,683,685,687],{"class":574,"line":575},[572,676,579],{"class":578},[572,678,583],{"class":582},[572,680,587],{"class":586},[572,682,591],{"class":590},[572,684,594],{"class":582},[572,686,597],{"class":586},[572,688,689],{"class":586}," {\n",[572,691,693,696,698],{"class":574,"line":692},2,[572,694,695],{"class":603},"  toolInputs",[572,697,607],{"class":586},[572,699,689],{"class":586},[572,701,703,706,708,711],{"class":574,"line":702},3,[572,704,705],{"class":603},"    maxLength",[572,707,607],{"class":586},[572,709,710],{"class":656}," 500",[572,712,713],{"class":586},",\n",[572,715,717,720,722,725,729,731,734,737,740],{"class":574,"line":716},4,[572,718,719],{"class":590},"    transform",[572,721,607],{"class":586},[572,723,724],{"class":586}," (",[572,726,728],{"class":727},"sHdIc","input",[572,730,597],{"class":586},[572,732,733],{"class":727}," toolName",[572,735,736],{"class":586},")",[572,738,739],{"class":578}," =>",[572,741,689],{"class":586},[572,743,745,749,751,754,757,760,764,767,770,773,775,778,780,782,785,787],{"class":574,"line":744},5,[572,746,748],{"class":747},"s7zQu","      if",[572,750,724],{"class":603},[572,752,753],{"class":582},"toolName",[572,755,756],{"class":586}," ===",[572,758,759],{"class":586}," '",[572,761,763],{"class":762},"sfazB","queryDB",[572,765,766],{"class":586},"'",[572,768,769],{"class":603},") ",[572,771,772],{"class":747},"return",[572,774,600],{"class":586},[572,776,777],{"class":603}," sql",[572,779,607],{"class":586},[572,781,759],{"class":586},[572,783,784],{"class":762},"***",[572,786,766],{"class":586},[572,788,789],{"class":586}," }\n",[572,791,793,796],{"class":574,"line":792},6,[572,794,795],{"class":747},"      return",[572,797,798],{"class":582}," input\n",[572,800,802],{"class":574,"line":801},7,[572,803,804],{"class":586},"    },\n",[572,806,808],{"class":574,"line":807},8,[572,809,810],{"class":586},"  },\n",[572,812,814,817],{"class":574,"line":813},9,[572,815,816],{"class":586},"}",[572,818,617],{"class":582},[457,820,821,832],{},[460,822,823],{},[463,824,825,828,830],{},[466,826,827],{},"Sub-option",[466,829,471],{},[466,831,477],{},[479,833,834,852],{},[463,835,836,840,845],{},[484,837,838],{},[452,839,551],{},[484,841,842],{},[452,843,844],{},"number",[484,846,847,848,851],{},"Truncate stringified inputs exceeding this character length (appends ",[452,849,850],{},"…",").",[463,853,854,858,863],{},[484,855,856],{},[452,857,555],{},[484,859,860],{},[452,861,862],{},"(input, toolName) => unknown",[484,864,865,866,868],{},"Custom transform applied before ",[452,867,551],{},". Use to redact fields or reshape data.",[449,870,871,872,874,875,877,878,881],{},"When ",[452,873,488],{}," is enabled, ",[452,876,536],{}," becomes an ",[452,879,880],{},"Array\u003C{ name, input }>"," instead of a plain string array.",[527,883,885],{"id":884},"cost-estimation","Cost Estimation",[449,887,888,889,891,892,895],{},"Pass a ",[452,890,508],{}," map to compute estimated dollar cost per call. The middleware multiplies token usage by the per-million rates and sets ",[452,893,894],{},"ai.estimatedCost"," on the wide event.",[563,897,899],{"className":565,"code":898,"language":567,"meta":568,"style":568},"const ai = createAILogger(log, {\n  cost: {\n    'claude-sonnet-4.6': { input: 3, output: 15 },\n    'gpt-4o': { input: 2.5, output: 10 },\n  },\n})\n",[452,900,901,917,926,961,992,996],{"__ignoreMap":568},[572,902,903,905,907,909,911,913,915],{"class":574,"line":575},[572,904,579],{"class":578},[572,906,583],{"class":582},[572,908,587],{"class":586},[572,910,591],{"class":590},[572,912,594],{"class":582},[572,914,597],{"class":586},[572,916,689],{"class":586},[572,918,919,922,924],{"class":574,"line":692},[572,920,921],{"class":603},"  cost",[572,923,607],{"class":586},[572,925,689],{"class":586},[572,927,928,931,934,936,938,940,943,945,948,950,953,955,958],{"class":574,"line":702},[572,929,930],{"class":586},"    '",[572,932,933],{"class":603},"claude-sonnet-4.6",[572,935,766],{"class":586},[572,937,607],{"class":586},[572,939,600],{"class":586},[572,941,942],{"class":603}," input",[572,944,607],{"class":586},[572,946,947],{"class":656}," 3",[572,949,597],{"class":586},[572,951,952],{"class":603}," output",[572,954,607],{"class":586},[572,956,957],{"class":656}," 15",[572,959,960],{"class":586}," },\n",[572,962,963,965,968,970,972,974,976,978,981,983,985,987,990],{"class":574,"line":716},[572,964,930],{"class":586},[572,966,967],{"class":603},"gpt-4o",[572,969,766],{"class":586},[572,971,607],{"class":586},[572,973,600],{"class":586},[572,975,942],{"class":603},[572,977,607],{"class":586},[572,979,980],{"class":656}," 2.5",[572,982,597],{"class":586},[572,984,952],{"class":603},[572,986,607],{"class":586},[572,988,989],{"class":656}," 10",[572,991,960],{"class":586},[572,993,994],{"class":574,"line":744},[572,995,810],{"class":586},[572,997,998,1000],{"class":574,"line":792},[572,999,816],{"class":586},[572,1001,617],{"class":582},[449,1003,1004,1005,1011],{},"Read the result from your handler with ",[1006,1007,1008],"a",{"href":284},[452,1009,1010],{},"ai.getEstimatedCost()"," — useful for billing dashboards or warning users before expensive calls.",[1013,1014,1015,1016,1018],"tip",{},"Keep your ",[452,1017,508],{}," map in one file alongside model selection so renaming a model in production also updates pricing. Avoid hardcoding per-route maps.",[527,1020,1022],{"id":1021},"error-handling","Error Handling",[449,1024,1025],{},"If a model call fails, the middleware captures the error into the wide event before re-throwing:",[563,1027,1032],{"className":1028,"code":1029,"filename":1030,"language":1031,"meta":568,"style":568},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"ai\": {\n    \"calls\": 1,\n    \"model\": \"claude-sonnet-4.6\",\n    \"provider\": \"anthropic\",\n    \"finishReason\": \"error\",\n    \"error\": \"API rate limit exceeded\"\n  }\n}\n","Wide Event","json",[452,1033,1034,1039,1054,1072,1092,1112,1132,1150,1155],{"__ignoreMap":568},[572,1035,1036],{"class":574,"line":575},[572,1037,1038],{"class":586},"{\n",[572,1040,1041,1044,1047,1050,1052],{"class":574,"line":692},[572,1042,1043],{"class":586},"  \"",[572,1045,1046],{"class":578},"ai",[572,1048,1049],{"class":586},"\"",[572,1051,607],{"class":586},[572,1053,689],{"class":586},[572,1055,1056,1059,1063,1065,1067,1070],{"class":574,"line":702},[572,1057,1058],{"class":586},"    \"",[572,1060,1062],{"class":1061},"sBMFI","calls",[572,1064,1049],{"class":586},[572,1066,607],{"class":586},[572,1068,1069],{"class":656}," 1",[572,1071,713],{"class":586},[572,1073,1074,1076,1079,1081,1083,1086,1088,1090],{"class":574,"line":716},[572,1075,1058],{"class":586},[572,1077,1078],{"class":1061},"model",[572,1080,1049],{"class":586},[572,1082,607],{"class":586},[572,1084,1085],{"class":586}," \"",[572,1087,933],{"class":762},[572,1089,1049],{"class":586},[572,1091,713],{"class":586},[572,1093,1094,1096,1099,1101,1103,1105,1108,1110],{"class":574,"line":744},[572,1095,1058],{"class":586},[572,1097,1098],{"class":1061},"provider",[572,1100,1049],{"class":586},[572,1102,607],{"class":586},[572,1104,1085],{"class":586},[572,1106,1107],{"class":762},"anthropic",[572,1109,1049],{"class":586},[572,1111,713],{"class":586},[572,1113,1114,1116,1119,1121,1123,1125,1128,1130],{"class":574,"line":792},[572,1115,1058],{"class":586},[572,1117,1118],{"class":1061},"finishReason",[572,1120,1049],{"class":586},[572,1122,607],{"class":586},[572,1124,1085],{"class":586},[572,1126,1127],{"class":762},"error",[572,1129,1049],{"class":586},[572,1131,713],{"class":586},[572,1133,1134,1136,1138,1140,1142,1144,1147],{"class":574,"line":801},[572,1135,1058],{"class":586},[572,1137,1127],{"class":1061},[572,1139,1049],{"class":586},[572,1141,607],{"class":586},[572,1143,1085],{"class":586},[572,1145,1146],{"class":762},"API rate limit exceeded",[572,1148,1149],{"class":586},"\"\n",[572,1151,1152],{"class":574,"line":807},[572,1153,1154],{"class":586},"  }\n",[572,1156,1157],{"class":574,"line":813},[572,1158,1159],{"class":586},"}\n",[449,1161,1162,1163,1166],{},"Stream errors (e.g. content filter) are also captured from the stream's error chunks. Your error-handling code (",[452,1164,1165],{},"try\u002Fcatch",", route-level error handlers) keeps working as usual — the middleware only observes.",[1168,1169,1170],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":568,"searchDepth":692,"depth":692,"links":1172},[1173,1178,1179],{"id":529,"depth":692,"text":530,"children":1174},[1175,1176,1177],{"id":560,"depth":702,"text":561},{"id":620,"depth":702,"text":621},{"id":666,"depth":702,"text":667},{"id":884,"depth":692,"text":885},{"id":1021,"depth":692,"text":1022},"Configure tool input capture (with redaction and truncation), enable cost estimation per model, and handle errors during AI calls.","md",[1183,1186],{"label":36,"icon":39,"to":270,"color":1184,"variant":1185},"neutral","subtle",{"label":1187,"icon":276,"to":274,"color":1184,"variant":1185},"Usage Patterns",{},{"title":278,"icon":281},{"title":278,"description":1180},"xoxicNRn-mxuaHTHGhoZYwtQS8UV5jdv8PnqlqWAgjc",[1193,1195],{"title":273,"path":274,"stem":275,"description":1194,"icon":276,"children":-1},"streamText, generateText, multi-step agents, RAG, and multiple models — every common AI SDK pattern wired into evlog.",{"title":283,"path":284,"stem":285,"description":1196,"icon":286,"children":-1},"Read AI metadata from your handler — persist it, surface it to end-users, bill against it, or stream incremental progress to the client.",1780167572493]