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