[{"data":1,"prerenderedAt":1727},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-ai-sdk-telemetry":424,"-use-cases-ai-sdk-telemetry-surround":1722},[4,25,75,230,338,393],{"title":5,"path":6,"stem":7,"children":8,"page":24},"Start","\u002Fstart","1.start",[9,14,19],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fstart\u002Finstallation","1.start\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F3.quick-start","i-lucide-zap",false,{"title":26,"path":27,"stem":28,"children":29,"page":24},"Learn","\u002Flearn","2.learn",[30,35,40,45,50,55,60,65,70],{"title":31,"path":32,"stem":33,"icon":34},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":36,"path":37,"stem":38,"icon":39},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":41,"path":42,"stem":43,"icon":44},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":46,"path":47,"stem":48,"icon":49},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":51,"path":52,"stem":53,"icon":54},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":56,"path":57,"stem":58,"icon":59},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":61,"path":62,"stem":63,"icon":64},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":66,"path":67,"stem":68,"icon":69},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":71,"path":72,"stem":73,"icon":74},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":76,"path":77,"stem":78,"children":79,"page":24},"Integrate","\u002Fintegrate","3.integrate",[80,84,147],{"title":31,"path":81,"stem":82,"icon":83},"\u002Fintegrate\u002Foverview","3.integrate\u002F0.overview","i-lucide-plug",{"title":85,"path":86,"stem":87,"children":88,"page":24},"Adapters","\u002Fintegrate\u002Fadapters","3.integrate\u002Fadapters",[89,92,132],{"title":31,"path":90,"stem":91,"icon":34},"\u002Fintegrate\u002Fadapters\u002Foverview","3.integrate\u002Fadapters\u002F01.overview",{"title":93,"path":94,"stem":95,"children":96,"page":24},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","3.integrate\u002Fadapters\u002Fcloud",[97,102,107,112,117,122,127],{"title":98,"path":99,"stem":100,"icon":101},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","3.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":103,"path":104,"stem":105,"icon":106},"OTLP","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fotlp","3.integrate\u002Fadapters\u002Fcloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":108,"path":109,"stem":110,"icon":111},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","3.integrate\u002Fadapters\u002Fcloud\u002F03.posthog","i-simple-icons-posthog",{"title":113,"path":114,"stem":115,"icon":116},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","3.integrate\u002Fadapters\u002Fcloud\u002F04.sentry","i-simple-icons-sentry",{"title":118,"path":119,"stem":120,"icon":121},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","3.integrate\u002Fadapters\u002Fcloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":123,"path":124,"stem":125,"icon":126},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","3.integrate\u002Fadapters\u002Fcloud\u002F06.datadog","i-simple-icons-datadog",{"title":128,"path":129,"stem":130,"icon":131},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fhyperdx","3.integrate\u002Fadapters\u002Fcloud\u002F07.hyperdx","i-custom-hyperdx",{"title":133,"path":134,"stem":135,"children":136,"page":24},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","3.integrate\u002Fadapters\u002Fself-hosted",[137,142],{"title":138,"path":139,"stem":140,"icon":141},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","3.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":143,"path":144,"stem":145,"icon":146},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","3.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":148,"path":149,"stem":150,"children":151,"page":24},"Frameworks","\u002Fintegrate\u002Fframeworks","3.integrate\u002Fframeworks",[152,156,161,166,171,176,181,186,191,196,201,206,211,216,220,225],{"title":31,"path":153,"stem":154,"icon":155},"\u002Fintegrate\u002Fframeworks\u002Foverview","3.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":157,"path":158,"stem":159,"icon":160},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","3.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":162,"path":163,"stem":164,"icon":165},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","3.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":167,"path":168,"stem":169,"icon":170},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","3.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":172,"path":173,"stem":174,"icon":175},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","3.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":177,"path":178,"stem":179,"icon":180},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","3.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":182,"path":183,"stem":184,"icon":185},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","3.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":187,"path":188,"stem":189,"icon":190},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","3.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":192,"path":193,"stem":194,"icon":195},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","3.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":197,"path":198,"stem":199,"icon":200},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","3.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":202,"path":203,"stem":204,"icon":205},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","3.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":207,"path":208,"stem":209,"icon":210},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","3.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":212,"path":213,"stem":214,"icon":215},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","3.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":217,"path":218,"stem":219,"icon":69},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","3.integrate\u002Fframeworks\u002F13.standalone",{"title":221,"path":222,"stem":223,"icon":224},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","3.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":226,"path":227,"stem":228,"icon":229},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","3.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":231,"path":232,"stem":233,"children":234,"page":24},"Use Cases","\u002Fuse-cases","4.use-cases",[235,239,244,273,301,333],{"title":31,"path":236,"stem":237,"icon":238},"\u002Fuse-cases\u002Foverview","4.use-cases\u002F0.overview","i-lucide-list-checks",{"title":240,"path":241,"stem":242,"icon":243},"Client Logging","\u002Fuse-cases\u002Fclient-logging","4.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":245,"icon":246,"path":247,"stem":248,"children":249,"page":24},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","4.use-cases\u002F2.ai-sdk",[250,253,258,263,268],{"title":31,"path":251,"stem":252,"icon":34},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","4.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":254,"path":255,"stem":256,"icon":257},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","4.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":259,"path":260,"stem":261,"icon":262},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","4.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":264,"path":265,"stem":266,"icon":267},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","4.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":269,"path":270,"stem":271,"icon":272},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","4.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":274,"icon":275,"path":276,"stem":277,"children":278,"page":24},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","4.use-cases\u002F3.better-auth",[279,282,287,292,296],{"title":31,"path":280,"stem":281,"icon":34},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","4.use-cases\u002F3.better-auth\u002F01.overview",{"title":283,"path":284,"stem":285,"icon":286},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","4.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":288,"path":289,"stem":290,"icon":291},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","4.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":293,"path":294,"stem":295,"icon":243},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","4.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":297,"path":298,"stem":299,"icon":300},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","4.use-cases\u002F3.better-auth\u002F05.performance","i-lucide-gauge",{"title":302,"icon":303,"path":304,"stem":305,"children":306,"page":24},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","4.use-cases\u002F4.audit",[307,310,315,320,325,329],{"title":31,"path":308,"stem":309,"icon":34},"\u002Fuse-cases\u002Faudit\u002Foverview","4.use-cases\u002F4.audit\u002F01.overview",{"title":311,"path":312,"stem":313,"icon":314},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","4.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":316,"path":317,"stem":318,"icon":319},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","4.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":321,"path":322,"stem":323,"icon":324},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","4.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":326,"path":327,"stem":328,"icon":303},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","4.use-cases\u002F4.audit\u002F05.compliance",{"title":330,"path":331,"stem":332,"icon":74},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","4.use-cases\u002F4.audit\u002F06.recipes",{"title":334,"path":335,"stem":336,"icon":337},"Enrichers","\u002Fuse-cases\u002Fenrichers","4.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":339,"path":340,"stem":341,"children":342,"page":24},"Extend","\u002Fextend","5.extend",[343,347,352,357,362,366,370,374,378,383,388],{"title":31,"path":344,"stem":345,"icon":346},"\u002Fextend\u002Foverview","5.extend\u002F0.overview","i-lucide-blocks",{"title":348,"path":349,"stem":350,"icon":351},"Stream","\u002Fextend\u002Fstream","5.extend\u002F1.stream","i-lucide-radio-tower",{"title":353,"path":354,"stem":355,"icon":356},"Custom framework","\u002Fextend\u002Fcustom-framework","5.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":358,"path":359,"stem":360,"icon":361},"FS reader","\u002Fextend\u002Ffs-reader","5.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":330,"path":363,"stem":364,"icon":365},"\u002Fextend\u002Fconsumer-recipes","5.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":367,"path":368,"stem":369,"icon":346},"Plugins","\u002Fextend\u002Fplugins","5.extend\u002F4.plugins",{"title":371,"path":372,"stem":373,"icon":337},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","5.extend\u002F5.custom-enrichers",{"title":375,"path":376,"stem":377,"icon":59},"Tail sampling","\u002Fextend\u002Ftail-sampling","5.extend\u002F6.tail-sampling",{"title":379,"path":380,"stem":381,"icon":382},"Identity headers","\u002Fextend\u002Fidentity-headers","5.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":384,"path":385,"stem":386,"icon":387},"Custom drains","\u002Fextend\u002Fcustom-drains","5.extend\u002F8.custom-drains","i-lucide-share-2",{"title":389,"path":390,"stem":391,"icon":392},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","5.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":394,"path":395,"stem":396,"children":397,"page":24},"Reference","\u002Freference","6.reference",[398,403,406,411,415,420],{"title":399,"path":400,"stem":401,"icon":402},"Configuration","\u002Freference\u002Fconfiguration","6.reference\u002F1.configuration","i-lucide-settings",{"title":297,"path":404,"stem":405,"icon":300},"\u002Freference\u002Fperformance","6.reference\u002F2.performance",{"title":407,"path":408,"stem":409,"icon":410},"Vite Plugin","\u002Freference\u002Fvite-plugin","6.reference\u002F3.vite-plugin","i-custom-vite",{"title":412,"path":413,"stem":414,"icon":303},"Best Practices","\u002Freference\u002Fbest-practices","6.reference\u002F4.best-practices",{"title":416,"path":417,"stem":418,"icon":419},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","6.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":421,"path":422,"stem":423,"icon":337},"Agent Skills","\u002Freference\u002Fagent-skills","6.reference\u002F6.agent-skills",{"id":425,"title":426,"body":427,"description":1710,"extension":1711,"links":1712,"meta":1718,"navigation":1719,"path":270,"seo":1720,"stem":271,"__hash__":1721},"docs\u002F4.use-cases\u002F2.ai-sdk\u002F05.telemetry.md","Deeper Telemetry",{"type":428,"value":429,"toc":1704},"minimark",[430,446,451,462,792,795,1163,1167,1170,1290,1294,1363,1366,1370,1378,1555,1565,1679,1700],[431,432,433,437,438,441,442,445],"p",{},[434,435,436],"code",{},"createAILogger"," covers tokens, model info, and streaming metrics. For deeper observability — per-tool execution timing, success\u002Ffailure tracking, and total generation wall time — add ",[434,439,440],{},"createEvlogIntegration()"," on top. It implements the AI SDK's ",[434,443,444],{},"TelemetryIntegration"," interface and captures data middleware alone cannot see.",[447,448,450],"h2",{"id":449},"combined-with-middleware-recommended","Combined with middleware (recommended)",[431,452,453,454,457,458,461],{},"When passed an ",[434,455,456],{},"AILogger",", the integration shares its accumulator. Both paths write to the same ",[434,459,460],{},"ai.*"," field:",[463,464,470],"pre",{"className":465,"code":466,"filename":467,"language":468,"meta":469,"style":469},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { generateText } from 'ai'\nimport { createAILogger, createEvlogIntegration } from 'evlog\u002Fai'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n  const ai = createAILogger(log)\n\n  const result = await generateText({\n    model: ai.wrap('anthropic\u002Fclaude-sonnet-4.6'),\n    tools: { getWeather, searchDB },\n    experimental_telemetry: {\n      isEnabled: true,\n      integrations: [createEvlogIntegration(ai)],\n    },\n  })\n\n  return { text: result.text }\n})\n","server\u002Fapi\u002Fagent.post.ts","typescript","",[434,471,472,505,532,539,575,598,617,622,642,674,695,705,719,742,748,756,761,784],{"__ignoreMap":469},[473,474,477,481,485,489,492,495,498,502],"span",{"class":475,"line":476},"line",1,[473,478,480],{"class":479},"s7zQu","import",[473,482,484],{"class":483},"sMK4o"," {",[473,486,488],{"class":487},"sTEyZ"," generateText",[473,490,491],{"class":483}," }",[473,493,494],{"class":479}," from",[473,496,497],{"class":483}," '",[473,499,501],{"class":500},"sfazB","ai",[473,503,504],{"class":483},"'\n",[473,506,508,510,512,515,518,521,523,525,527,530],{"class":475,"line":507},2,[473,509,480],{"class":479},[473,511,484],{"class":483},[473,513,514],{"class":487}," createAILogger",[473,516,517],{"class":483},",",[473,519,520],{"class":487}," createEvlogIntegration",[473,522,491],{"class":483},[473,524,494],{"class":479},[473,526,497],{"class":483},[473,528,529],{"class":500},"evlog\u002Fai",[473,531,504],{"class":483},[473,533,535],{"class":475,"line":534},3,[473,536,538],{"emptyLinePlaceholder":537},true,"\n",[473,540,542,545,548,552,555,559,562,566,569,572],{"class":475,"line":541},4,[473,543,544],{"class":479},"export",[473,546,547],{"class":479}," default",[473,549,551],{"class":550},"s2Zo4"," defineEventHandler",[473,553,554],{"class":487},"(",[473,556,558],{"class":557},"spNyl","async",[473,560,561],{"class":483}," (",[473,563,565],{"class":564},"sHdIc","event",[473,567,568],{"class":483},")",[473,570,571],{"class":557}," =>",[473,573,574],{"class":483}," {\n",[473,576,578,581,584,587,590,593,595],{"class":475,"line":577},5,[473,579,580],{"class":557},"  const",[473,582,583],{"class":487}," log",[473,585,586],{"class":483}," =",[473,588,589],{"class":550}," useLogger",[473,591,554],{"class":592},"swJcz",[473,594,565],{"class":487},[473,596,597],{"class":592},")\n",[473,599,601,603,606,608,610,612,615],{"class":475,"line":600},6,[473,602,580],{"class":557},[473,604,605],{"class":487}," ai",[473,607,586],{"class":483},[473,609,514],{"class":550},[473,611,554],{"class":592},[473,613,614],{"class":487},"log",[473,616,597],{"class":592},[473,618,620],{"class":475,"line":619},7,[473,621,538],{"emptyLinePlaceholder":537},[473,623,625,627,630,632,635,637,639],{"class":475,"line":624},8,[473,626,580],{"class":557},[473,628,629],{"class":487}," result",[473,631,586],{"class":483},[473,633,634],{"class":479}," await",[473,636,488],{"class":550},[473,638,554],{"class":592},[473,640,641],{"class":483},"{\n",[473,643,645,648,651,653,656,659,661,664,667,669,671],{"class":475,"line":644},9,[473,646,647],{"class":592},"    model",[473,649,650],{"class":483},":",[473,652,605],{"class":487},[473,654,655],{"class":483},".",[473,657,658],{"class":550},"wrap",[473,660,554],{"class":592},[473,662,663],{"class":483},"'",[473,665,666],{"class":500},"anthropic\u002Fclaude-sonnet-4.6",[473,668,663],{"class":483},[473,670,568],{"class":592},[473,672,673],{"class":483},",\n",[473,675,677,680,682,684,687,689,692],{"class":475,"line":676},10,[473,678,679],{"class":592},"    tools",[473,681,650],{"class":483},[473,683,484],{"class":483},[473,685,686],{"class":487}," getWeather",[473,688,517],{"class":483},[473,690,691],{"class":487}," searchDB",[473,693,694],{"class":483}," },\n",[473,696,698,701,703],{"class":475,"line":697},11,[473,699,700],{"class":592},"    experimental_telemetry",[473,702,650],{"class":483},[473,704,574],{"class":483},[473,706,708,711,713,717],{"class":475,"line":707},12,[473,709,710],{"class":592},"      isEnabled",[473,712,650],{"class":483},[473,714,716],{"class":715},"sfNiH"," true",[473,718,673],{"class":483},[473,720,722,725,727,730,733,735,737,740],{"class":475,"line":721},13,[473,723,724],{"class":592},"      integrations",[473,726,650],{"class":483},[473,728,729],{"class":592}," [",[473,731,732],{"class":550},"createEvlogIntegration",[473,734,554],{"class":592},[473,736,501],{"class":487},[473,738,739],{"class":592},")]",[473,741,673],{"class":483},[473,743,745],{"class":475,"line":744},14,[473,746,747],{"class":483},"    },\n",[473,749,751,754],{"class":475,"line":750},15,[473,752,753],{"class":483},"  }",[473,755,597],{"class":592},[473,757,759],{"class":475,"line":758},16,[473,760,538],{"emptyLinePlaceholder":537},[473,762,764,767,769,772,774,776,778,781],{"class":475,"line":763},17,[473,765,766],{"class":479},"  return",[473,768,484],{"class":483},[473,770,771],{"class":592}," text",[473,773,650],{"class":483},[473,775,629],{"class":487},[473,777,655],{"class":483},[473,779,780],{"class":487},"text",[473,782,783],{"class":483}," }\n",[473,785,787,790],{"class":475,"line":786},18,[473,788,789],{"class":483},"}",[473,791,597],{"class":487},[431,793,794],{},"Your wide event now includes per-tool timing:",[463,796,801],{"className":797,"code":798,"filename":799,"language":800,"meta":469,"style":469},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"ai\": {\n    \"calls\": 2,\n    \"steps\": 2,\n    \"model\": \"claude-sonnet-4.6\",\n    \"provider\": \"anthropic\",\n    \"inputTokens\": 3500,\n    \"outputTokens\": 800,\n    \"totalTokens\": 4300,\n    \"toolCalls\": [\"getWeather\", \"searchDB\"],\n    \"tools\": [\n      { \"name\": \"getWeather\", \"durationMs\": 150, \"success\": true },\n      { \"name\": \"searchDB\", \"durationMs\": 45, \"success\": true }\n    ],\n    \"totalDurationMs\": 2340,\n    \"msToFirstChunk\": 180,\n    \"msToFinish\": 2100,\n    \"tokensPerSecond\": 380\n  }\n}\n","Wide Event","json",[434,802,803,807,821,840,855,876,896,912,928,944,976,990,1039,1084,1089,1105,1121,1137,1151,1157],{"__ignoreMap":469},[473,804,805],{"class":475,"line":476},[473,806,641],{"class":483},[473,808,809,812,814,817,819],{"class":475,"line":507},[473,810,811],{"class":483},"  \"",[473,813,501],{"class":557},[473,815,816],{"class":483},"\"",[473,818,650],{"class":483},[473,820,574],{"class":483},[473,822,823,826,830,832,834,838],{"class":475,"line":534},[473,824,825],{"class":483},"    \"",[473,827,829],{"class":828},"sBMFI","calls",[473,831,816],{"class":483},[473,833,650],{"class":483},[473,835,837],{"class":836},"sbssI"," 2",[473,839,673],{"class":483},[473,841,842,844,847,849,851,853],{"class":475,"line":541},[473,843,825],{"class":483},[473,845,846],{"class":828},"steps",[473,848,816],{"class":483},[473,850,650],{"class":483},[473,852,837],{"class":836},[473,854,673],{"class":483},[473,856,857,859,862,864,866,869,872,874],{"class":475,"line":577},[473,858,825],{"class":483},[473,860,861],{"class":828},"model",[473,863,816],{"class":483},[473,865,650],{"class":483},[473,867,868],{"class":483}," \"",[473,870,871],{"class":500},"claude-sonnet-4.6",[473,873,816],{"class":483},[473,875,673],{"class":483},[473,877,878,880,883,885,887,889,892,894],{"class":475,"line":600},[473,879,825],{"class":483},[473,881,882],{"class":828},"provider",[473,884,816],{"class":483},[473,886,650],{"class":483},[473,888,868],{"class":483},[473,890,891],{"class":500},"anthropic",[473,893,816],{"class":483},[473,895,673],{"class":483},[473,897,898,900,903,905,907,910],{"class":475,"line":619},[473,899,825],{"class":483},[473,901,902],{"class":828},"inputTokens",[473,904,816],{"class":483},[473,906,650],{"class":483},[473,908,909],{"class":836}," 3500",[473,911,673],{"class":483},[473,913,914,916,919,921,923,926],{"class":475,"line":624},[473,915,825],{"class":483},[473,917,918],{"class":828},"outputTokens",[473,920,816],{"class":483},[473,922,650],{"class":483},[473,924,925],{"class":836}," 800",[473,927,673],{"class":483},[473,929,930,932,935,937,939,942],{"class":475,"line":644},[473,931,825],{"class":483},[473,933,934],{"class":828},"totalTokens",[473,936,816],{"class":483},[473,938,650],{"class":483},[473,940,941],{"class":836}," 4300",[473,943,673],{"class":483},[473,945,946,948,951,953,955,957,959,962,964,966,968,971,973],{"class":475,"line":676},[473,947,825],{"class":483},[473,949,950],{"class":828},"toolCalls",[473,952,816],{"class":483},[473,954,650],{"class":483},[473,956,729],{"class":483},[473,958,816],{"class":483},[473,960,961],{"class":500},"getWeather",[473,963,816],{"class":483},[473,965,517],{"class":483},[473,967,868],{"class":483},[473,969,970],{"class":500},"searchDB",[473,972,816],{"class":483},[473,974,975],{"class":483},"],\n",[473,977,978,980,983,985,987],{"class":475,"line":697},[473,979,825],{"class":483},[473,981,982],{"class":828},"tools",[473,984,816],{"class":483},[473,986,650],{"class":483},[473,988,989],{"class":483}," [\n",[473,991,992,995,997,1000,1002,1004,1006,1008,1010,1012,1014,1017,1019,1021,1024,1026,1028,1031,1033,1035,1037],{"class":475,"line":707},[473,993,994],{"class":483},"      {",[473,996,868],{"class":483},[473,998,999],{"class":836},"name",[473,1001,816],{"class":483},[473,1003,650],{"class":483},[473,1005,868],{"class":483},[473,1007,961],{"class":500},[473,1009,816],{"class":483},[473,1011,517],{"class":483},[473,1013,868],{"class":483},[473,1015,1016],{"class":836},"durationMs",[473,1018,816],{"class":483},[473,1020,650],{"class":483},[473,1022,1023],{"class":836}," 150",[473,1025,517],{"class":483},[473,1027,868],{"class":483},[473,1029,1030],{"class":836},"success",[473,1032,816],{"class":483},[473,1034,650],{"class":483},[473,1036,716],{"class":483},[473,1038,694],{"class":483},[473,1040,1041,1043,1045,1047,1049,1051,1053,1055,1057,1059,1061,1063,1065,1067,1070,1072,1074,1076,1078,1080,1082],{"class":475,"line":721},[473,1042,994],{"class":483},[473,1044,868],{"class":483},[473,1046,999],{"class":836},[473,1048,816],{"class":483},[473,1050,650],{"class":483},[473,1052,868],{"class":483},[473,1054,970],{"class":500},[473,1056,816],{"class":483},[473,1058,517],{"class":483},[473,1060,868],{"class":483},[473,1062,1016],{"class":836},[473,1064,816],{"class":483},[473,1066,650],{"class":483},[473,1068,1069],{"class":836}," 45",[473,1071,517],{"class":483},[473,1073,868],{"class":483},[473,1075,1030],{"class":836},[473,1077,816],{"class":483},[473,1079,650],{"class":483},[473,1081,716],{"class":483},[473,1083,783],{"class":483},[473,1085,1086],{"class":475,"line":744},[473,1087,1088],{"class":483},"    ],\n",[473,1090,1091,1093,1096,1098,1100,1103],{"class":475,"line":750},[473,1092,825],{"class":483},[473,1094,1095],{"class":828},"totalDurationMs",[473,1097,816],{"class":483},[473,1099,650],{"class":483},[473,1101,1102],{"class":836}," 2340",[473,1104,673],{"class":483},[473,1106,1107,1109,1112,1114,1116,1119],{"class":475,"line":758},[473,1108,825],{"class":483},[473,1110,1111],{"class":828},"msToFirstChunk",[473,1113,816],{"class":483},[473,1115,650],{"class":483},[473,1117,1118],{"class":836}," 180",[473,1120,673],{"class":483},[473,1122,1123,1125,1128,1130,1132,1135],{"class":475,"line":763},[473,1124,825],{"class":483},[473,1126,1127],{"class":828},"msToFinish",[473,1129,816],{"class":483},[473,1131,650],{"class":483},[473,1133,1134],{"class":836}," 2100",[473,1136,673],{"class":483},[473,1138,1139,1141,1144,1146,1148],{"class":475,"line":786},[473,1140,825],{"class":483},[473,1142,1143],{"class":828},"tokensPerSecond",[473,1145,816],{"class":483},[473,1147,650],{"class":483},[473,1149,1150],{"class":836}," 380\n",[473,1152,1154],{"class":475,"line":1153},19,[473,1155,1156],{"class":483},"  }\n",[473,1158,1160],{"class":475,"line":1159},20,[473,1161,1162],{"class":483},"}\n",[447,1164,1166],{"id":1165},"standalone-without-middleware","Standalone (without middleware)",[431,1168,1169],{},"If your model is already wrapped (e.g. by another middleware), pass the request logger directly:",[463,1171,1174],{"className":465,"code":1172,"filename":1173,"language":468,"meta":469,"style":469},"import { createEvlogIntegration } from 'evlog\u002Fai'\n\nconst integration = createEvlogIntegration(log)\n\nconst result = await generateText({\n  model: somePreWrappedModel,\n  experimental_telemetry: {\n    isEnabled: true,\n    integrations: [integration],\n  },\n})\n","server\u002Fapi\u002Fchat.post.ts",[434,1175,1176,1194,1198,1214,1218,1235,1247,1256,1267,1279,1284],{"__ignoreMap":469},[473,1177,1178,1180,1182,1184,1186,1188,1190,1192],{"class":475,"line":476},[473,1179,480],{"class":479},[473,1181,484],{"class":483},[473,1183,520],{"class":487},[473,1185,491],{"class":483},[473,1187,494],{"class":479},[473,1189,497],{"class":483},[473,1191,529],{"class":500},[473,1193,504],{"class":483},[473,1195,1196],{"class":475,"line":507},[473,1197,538],{"emptyLinePlaceholder":537},[473,1199,1200,1203,1206,1209,1211],{"class":475,"line":534},[473,1201,1202],{"class":557},"const",[473,1204,1205],{"class":487}," integration ",[473,1207,1208],{"class":483},"=",[473,1210,520],{"class":550},[473,1212,1213],{"class":487},"(log)\n",[473,1215,1216],{"class":475,"line":541},[473,1217,538],{"emptyLinePlaceholder":537},[473,1219,1220,1222,1225,1227,1229,1231,1233],{"class":475,"line":577},[473,1221,1202],{"class":557},[473,1223,1224],{"class":487}," result ",[473,1226,1208],{"class":483},[473,1228,634],{"class":479},[473,1230,488],{"class":550},[473,1232,554],{"class":487},[473,1234,641],{"class":483},[473,1236,1237,1240,1242,1245],{"class":475,"line":600},[473,1238,1239],{"class":592},"  model",[473,1241,650],{"class":483},[473,1243,1244],{"class":487}," somePreWrappedModel",[473,1246,673],{"class":483},[473,1248,1249,1252,1254],{"class":475,"line":619},[473,1250,1251],{"class":592},"  experimental_telemetry",[473,1253,650],{"class":483},[473,1255,574],{"class":483},[473,1257,1258,1261,1263,1265],{"class":475,"line":624},[473,1259,1260],{"class":592},"    isEnabled",[473,1262,650],{"class":483},[473,1264,716],{"class":715},[473,1266,673],{"class":483},[473,1268,1269,1272,1274,1277],{"class":475,"line":644},[473,1270,1271],{"class":592},"    integrations",[473,1273,650],{"class":483},[473,1275,1276],{"class":487}," [integration]",[473,1278,673],{"class":483},[473,1280,1281],{"class":475,"line":676},[473,1282,1283],{"class":483},"  },\n",[473,1285,1286,1288],{"class":475,"line":697},[473,1287,789],{"class":483},[473,1289,597],{"class":487},[447,1291,1293],{"id":1292},"what-the-integration-captures","What the integration captures",[1295,1296,1297,1313],"table",{},[1298,1299,1300],"thead",{},[1301,1302,1303,1307,1310],"tr",{},[1304,1305,1306],"th",{},"Data",[1304,1308,1309],{},"Source",[1304,1311,1312],{},"Description",[1314,1315,1316,1344],"tbody",{},[1301,1317,1318,1324,1329],{},[1319,1320,1321],"td",{},[434,1322,1323],{},"ai.tools[]",[1319,1325,1326],{},[434,1327,1328],{},"onToolCallFinish",[1319,1330,1331,1332,1334,1335,1334,1337,1339,1340,1343],{},"Per-tool ",[434,1333,999],{},", ",[434,1336,1016],{},[434,1338,1030],{},", and ",[434,1341,1342],{},"error"," (if failed)",[1301,1345,1346,1351,1360],{},[1319,1347,1348],{},[434,1349,1350],{},"ai.totalDurationMs",[1319,1352,1353,1356,1357],{},[434,1354,1355],{},"onStart"," → ",[434,1358,1359],{},"onFinish",[1319,1361,1362],{},"Total wall time from generation start to completion",[431,1364,1365],{},"The middleware captures tokens, model info, and streaming metrics. The integration captures tool execution timing. Together, they give you complete AI observability.",[447,1367,1369],{"id":1368},"composability","Composability",[431,1371,1372,1375,1376,650],{},[434,1373,1374],{},"ai.wrap()"," works with models that are already wrapped by other tools. If you use supermemory, guardrails middleware, or any other model wrapper, pass the wrapped model to ",[434,1377,1374],{},[463,1379,1381],{"className":465,"code":1380,"filename":1173,"language":468,"meta":469,"style":469},"import { createAILogger } from 'evlog\u002Fai'\nimport { withSupermemory } from '@supermemory\u002Ftools\u002Fai-sdk'\nimport { createGateway } from 'ai'\n\nconst gateway = createGateway({ ... })\nconst ai = createAILogger(log)\nconst base = gateway('anthropic\u002Fclaude-sonnet-4.6')\nconst model = ai.wrap(withSupermemory(base, 'your-org-id', { mode: 'full' }))\n",[434,1382,1383,1401,1421,1440,1444,1467,1480,1502],{"__ignoreMap":469},[473,1384,1385,1387,1389,1391,1393,1395,1397,1399],{"class":475,"line":476},[473,1386,480],{"class":479},[473,1388,484],{"class":483},[473,1390,514],{"class":487},[473,1392,491],{"class":483},[473,1394,494],{"class":479},[473,1396,497],{"class":483},[473,1398,529],{"class":500},[473,1400,504],{"class":483},[473,1402,1403,1405,1407,1410,1412,1414,1416,1419],{"class":475,"line":507},[473,1404,480],{"class":479},[473,1406,484],{"class":483},[473,1408,1409],{"class":487}," withSupermemory",[473,1411,491],{"class":483},[473,1413,494],{"class":479},[473,1415,497],{"class":483},[473,1417,1418],{"class":500},"@supermemory\u002Ftools\u002Fai-sdk",[473,1420,504],{"class":483},[473,1422,1423,1425,1427,1430,1432,1434,1436,1438],{"class":475,"line":534},[473,1424,480],{"class":479},[473,1426,484],{"class":483},[473,1428,1429],{"class":487}," createGateway",[473,1431,491],{"class":483},[473,1433,494],{"class":479},[473,1435,497],{"class":483},[473,1437,501],{"class":500},[473,1439,504],{"class":483},[473,1441,1442],{"class":475,"line":541},[473,1443,538],{"emptyLinePlaceholder":537},[473,1445,1446,1448,1451,1453,1455,1457,1460,1463,1465],{"class":475,"line":577},[473,1447,1202],{"class":557},[473,1449,1450],{"class":487}," gateway ",[473,1452,1208],{"class":483},[473,1454,1429],{"class":550},[473,1456,554],{"class":487},[473,1458,1459],{"class":483},"{",[473,1461,1462],{"class":483}," ...",[473,1464,491],{"class":483},[473,1466,597],{"class":487},[473,1468,1469,1471,1474,1476,1478],{"class":475,"line":600},[473,1470,1202],{"class":557},[473,1472,1473],{"class":487}," ai ",[473,1475,1208],{"class":483},[473,1477,514],{"class":550},[473,1479,1213],{"class":487},[473,1481,1482,1484,1487,1489,1492,1494,1496,1498,1500],{"class":475,"line":619},[473,1483,1202],{"class":557},[473,1485,1486],{"class":487}," base ",[473,1488,1208],{"class":483},[473,1490,1491],{"class":550}," gateway",[473,1493,554],{"class":487},[473,1495,663],{"class":483},[473,1497,666],{"class":500},[473,1499,663],{"class":483},[473,1501,597],{"class":487},[473,1503,1504,1506,1509,1511,1513,1515,1517,1519,1522,1525,1527,1529,1532,1534,1536,1538,1541,1543,1545,1548,1550,1552],{"class":475,"line":624},[473,1505,1202],{"class":557},[473,1507,1508],{"class":487}," model ",[473,1510,1208],{"class":483},[473,1512,605],{"class":487},[473,1514,655],{"class":483},[473,1516,658],{"class":550},[473,1518,554],{"class":487},[473,1520,1521],{"class":550},"withSupermemory",[473,1523,1524],{"class":487},"(base",[473,1526,517],{"class":483},[473,1528,497],{"class":483},[473,1530,1531],{"class":500},"your-org-id",[473,1533,663],{"class":483},[473,1535,517],{"class":483},[473,1537,484],{"class":483},[473,1539,1540],{"class":592}," mode",[473,1542,650],{"class":483},[473,1544,497],{"class":483},[473,1546,1547],{"class":500},"full",[473,1549,663],{"class":483},[473,1551,491],{"class":483},[473,1553,1554],{"class":487},"))\n",[431,1556,1557,1558,1561,1562,650],{},"For explicit middleware composition, use ",[434,1559,1560],{},"createAIMiddleware"," to get the raw middleware and compose it yourself via ",[434,1563,1564],{},"wrapLanguageModel",[463,1566,1568],{"className":465,"code":1567,"filename":1173,"language":468,"meta":469,"style":469},"import { createAIMiddleware } from 'evlog\u002Fai'\nimport { wrapLanguageModel } from 'ai'\n\nconst model = wrapLanguageModel({\n  model: base,\n  middleware: [createAIMiddleware(log, { toolInputs: true }), otherMiddleware],\n})\n",[434,1569,1570,1589,1608,1612,1626,1637,1673],{"__ignoreMap":469},[473,1571,1572,1574,1576,1579,1581,1583,1585,1587],{"class":475,"line":476},[473,1573,480],{"class":479},[473,1575,484],{"class":483},[473,1577,1578],{"class":487}," createAIMiddleware",[473,1580,491],{"class":483},[473,1582,494],{"class":479},[473,1584,497],{"class":483},[473,1586,529],{"class":500},[473,1588,504],{"class":483},[473,1590,1591,1593,1595,1598,1600,1602,1604,1606],{"class":475,"line":507},[473,1592,480],{"class":479},[473,1594,484],{"class":483},[473,1596,1597],{"class":487}," wrapLanguageModel",[473,1599,491],{"class":483},[473,1601,494],{"class":479},[473,1603,497],{"class":483},[473,1605,501],{"class":500},[473,1607,504],{"class":483},[473,1609,1610],{"class":475,"line":534},[473,1611,538],{"emptyLinePlaceholder":537},[473,1613,1614,1616,1618,1620,1622,1624],{"class":475,"line":541},[473,1615,1202],{"class":557},[473,1617,1508],{"class":487},[473,1619,1208],{"class":483},[473,1621,1597],{"class":550},[473,1623,554],{"class":487},[473,1625,641],{"class":483},[473,1627,1628,1630,1632,1635],{"class":475,"line":577},[473,1629,1239],{"class":592},[473,1631,650],{"class":483},[473,1633,1634],{"class":487}," base",[473,1636,673],{"class":483},[473,1638,1639,1642,1644,1646,1648,1651,1653,1655,1658,1660,1662,1664,1666,1668,1671],{"class":475,"line":600},[473,1640,1641],{"class":592},"  middleware",[473,1643,650],{"class":483},[473,1645,729],{"class":487},[473,1647,1560],{"class":550},[473,1649,1650],{"class":487},"(log",[473,1652,517],{"class":483},[473,1654,484],{"class":483},[473,1656,1657],{"class":592}," toolInputs",[473,1659,650],{"class":483},[473,1661,716],{"class":715},[473,1663,491],{"class":483},[473,1665,568],{"class":487},[473,1667,517],{"class":483},[473,1669,1670],{"class":487}," otherMiddleware]",[473,1672,673],{"class":483},[473,1674,1675,1677],{"class":475,"line":619},[473,1676,789],{"class":483},[473,1678,597],{"class":487},[431,1680,1681,1683,1684,1686,1687,1689,1690,1693,1694,1696,1697,1699],{},[434,1682,1560],{}," returns the same middleware that ",[434,1685,436],{}," uses internally. The difference: ",[434,1688,1560],{}," does not include ",[434,1691,1692],{},"captureEmbed"," (embedding models don't use middleware). Use ",[434,1695,436],{}," for the full API, ",[434,1698,1560],{}," when you need explicit middleware ordering.",[1701,1702,1703],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":469,"searchDepth":507,"depth":507,"links":1705},[1706,1707,1708,1709],{"id":449,"depth":507,"text":450},{"id":1165,"depth":507,"text":1166},{"id":1292,"depth":507,"text":1293},{"id":1368,"depth":507,"text":1369},"Add tool execution timing and total wall time with createEvlogIntegration. Compose with other middleware like supermemory or guardrails.","md",[1713,1716],{"label":31,"icon":34,"to":251,"color":1714,"variant":1715},"neutral","subtle",{"label":1717,"icon":257,"to":255,"color":1714,"variant":1715},"Usage Patterns",{},{"title":269,"icon":272},{"title":426,"description":1710},"6InUBQXtGsOOX89a2nHLcicluLWiERO3jx8_3vFJMrI",[1723,1725],{"title":264,"path":265,"stem":266,"description":1724,"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.",{"title":31,"path":280,"stem":281,"description":1726,"icon":34,"children":-1},"Automatically identify users on every request. Every wide event includes who made the request — userId, user profile, and session metadata — with zero manual work.",1778361905081]