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