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