[{"data":1,"prerenderedAt":3045},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-ai-sdk-telemetry":602,"-use-cases-ai-sdk-telemetry-surround":3040},[4,35,85,138,318,479,538,577],{"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,453],{"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,"icon":455,"path":456,"stem":457,"children":458,"page":34},"Signals","i-lucide-scan-search","\u002Fuse-cases\u002Fsignals","5.use-cases\u002F7.signals",[459,462,467,472,475],{"title":41,"path":460,"stem":461,"icon":44},"\u002Fuse-cases\u002Fsignals\u002Foverview","5.use-cases\u002F7.signals\u002F01.overview",{"title":463,"path":464,"stem":465,"icon":466},"What You Can Ask","\u002Fuse-cases\u002Fsignals\u002Fask","5.use-cases\u002F7.signals\u002F02.ask","i-lucide-message-circle-question",{"title":468,"path":469,"stem":470,"icon":471},"What It Costs","\u002Fuse-cases\u002Fsignals\u002Fcost","5.use-cases\u002F7.signals\u002F03.cost","i-lucide-coins",{"title":436,"path":473,"stem":474,"icon":84},"\u002Fuse-cases\u002Fsignals\u002Freference","5.use-cases\u002F7.signals\u002F04.reference",{"title":415,"path":476,"stem":477,"icon":478},"\u002Fuse-cases\u002Fsignals\u002Frecipes","5.use-cases\u002F7.signals\u002F05.recipes","i-lucide-lightbulb",{"title":480,"path":481,"stem":482,"children":483,"page":34},"Extend","\u002Fextend","6.extend",[484,488,493,498,502,507,511,515,519,523,528,533],{"title":41,"path":485,"stem":486,"icon":487},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":489,"path":490,"stem":491,"icon":492},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":494,"path":495,"stem":496,"icon":497},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":499,"path":500,"stem":501,"icon":492},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":503,"path":504,"stem":505,"icon":506},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":415,"path":508,"stem":509,"icon":510},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":512,"path":513,"stem":514,"icon":487},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":516,"path":517,"stem":518,"icon":443},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":520,"path":521,"stem":522,"icon":69},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":524,"path":525,"stem":526,"icon":527},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":529,"path":530,"stem":531,"icon":532},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":534,"path":535,"stem":536,"icon":537},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":436,"path":539,"stem":540,"children":541,"page":34},"\u002Freference","7.reference",[542,546,551,554,559,563,568,572],{"title":41,"path":543,"stem":544,"icon":545},"\u002Freference\u002Foverview","7.reference\u002F0.overview","i-lucide-book-marked",{"title":547,"path":548,"stem":549,"icon":550},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":383,"path":552,"stem":553,"icon":112},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":555,"path":556,"stem":557,"icon":558},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":560,"path":561,"stem":562,"icon":388},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":564,"path":565,"stem":566,"icon":567},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":569,"path":570,"stem":571,"icon":443},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":573,"path":574,"stem":575,"icon":576},"Cost","\u002Freference\u002Fcost","7.reference\u002F7.cost","i-lucide-receipt",{"title":578,"path":579,"stem":580,"children":581,"page":34},"Compare","\u002Fcompare","8.compare",[582,586,590,594,598],{"title":583,"path":584,"stem":585,"icon":567},"evlog vs Pino","\u002Fcompare\u002Fpino","8.compare\u002F1.pino",{"title":587,"path":588,"stem":589,"icon":204},"evlog vs OpenTelemetry","\u002Fcompare\u002Fopentelemetry","8.compare\u002F2.opentelemetry",{"title":591,"path":592,"stem":593,"icon":567},"evlog vs LogTape","\u002Fcompare\u002Flogtape","8.compare\u002F3.logtape",{"title":595,"path":596,"stem":597,"icon":567},"evlog vs Winston: formats and request events","\u002Fcompare\u002Fwinston","8.compare\u002F4.winston",{"title":599,"path":600,"stem":601,"icon":567},"evlog vs Consola: reporters and request context","\u002Fcompare\u002Fconsola","8.compare\u002F5.consola",{"id":603,"title":604,"body":605,"description":3028,"extension":3029,"links":3030,"meta":3036,"navigation":3037,"path":357,"seo":3038,"stem":358,"__hash__":3039},"docs\u002F5.use-cases\u002F2.ai-sdk\u002F05.telemetry.md","Deeper Telemetry",{"type":606,"value":607,"toc":3022},"minimark",[608,627,642,647,658,2063,2066,2432,2436,2439,2547,2551,2681,2684,2688,2696,2872,2882,2997,3018],[609,610,611,615,616,619,620,623,624,626],"p",{},[612,613,614],"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 ",[612,617,618],{},"createEvlogIntegration()"," on top. It implements the AI SDK telemetry interface (v6 ",[612,621,622],{},"TelemetryIntegration",", v7 ",[612,625,356],{},") and captures data middleware alone cannot see.",[609,628,629,630,633,634,637,638,641],{},"On AI SDK v7, the integration also auto-captures embeddings via ",[612,631,632],{},"onEmbedEnd",", records stream aborts via ",[612,635,636],{},"onAbort",", and surfaces unrecoverable errors via ",[612,639,640],{},"onError",".",[643,644,646],"h2",{"id":645},"combined-with-middleware-recommended","Combined with middleware (recommended)",[609,648,649,650,653,654,657],{},"When passed an ",[612,651,652],{},"AILogger",", the integration shares its accumulator. Both paths write to the same ",[612,655,656],{},"ai.*"," field:",[659,660,661,1001,1273,1543,1808],"framework-tabs",{},[662,663,669],"pre",{"className":664,"code":665,"filename":240,"language":666,"meta":667,"style":668},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { useLogger } from 'evlog'\nimport { generateText } from 'ai'\nimport { createAILogger, createEvlogIntegration } from 'evlog\u002Fai'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n\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","typescript","server\u002Fapi\u002Fagent.post.ts","",[612,670,671,704,725,752,759,795,817,822,841,846,866,897,918,928,951,957,965,970,993],{"__ignoreMap":668},[672,673,676,680,684,688,691,694,697,701],"span",{"class":674,"line":675},"line",1,[672,677,679],{"class":678},"s7zQu","import",[672,681,683],{"class":682},"sMK4o"," {",[672,685,687],{"class":686},"sTEyZ"," useLogger",[672,689,690],{"class":682}," }",[672,692,693],{"class":678}," from",[672,695,696],{"class":682}," '",[672,698,700],{"class":699},"sfazB","evlog",[672,702,703],{"class":682},"'\n",[672,705,707,709,711,714,716,718,720,723],{"class":674,"line":706},2,[672,708,679],{"class":678},[672,710,683],{"class":682},[672,712,713],{"class":686}," generateText",[672,715,690],{"class":682},[672,717,693],{"class":678},[672,719,696],{"class":682},[672,721,722],{"class":699},"ai",[672,724,703],{"class":682},[672,726,728,730,732,735,738,741,743,745,747,750],{"class":674,"line":727},3,[672,729,679],{"class":678},[672,731,683],{"class":682},[672,733,734],{"class":686}," createAILogger",[672,736,737],{"class":682},",",[672,739,740],{"class":686}," createEvlogIntegration",[672,742,690],{"class":682},[672,744,693],{"class":678},[672,746,696],{"class":682},[672,748,749],{"class":699},"evlog\u002Fai",[672,751,703],{"class":682},[672,753,755],{"class":674,"line":754},4,[672,756,758],{"emptyLinePlaceholder":757},true,"\n",[672,760,762,765,768,772,775,779,782,786,789,792],{"class":674,"line":761},5,[672,763,764],{"class":678},"export",[672,766,767],{"class":678}," default",[672,769,771],{"class":770},"s2Zo4"," defineEventHandler",[672,773,774],{"class":686},"(",[672,776,778],{"class":777},"spNyl","async",[672,780,781],{"class":682}," (",[672,783,785],{"class":784},"sHdIc","event",[672,787,788],{"class":682},")",[672,790,791],{"class":777}," =>",[672,793,794],{"class":682}," {\n",[672,796,798,801,804,807,809,812,814],{"class":674,"line":797},6,[672,799,800],{"class":777},"  const",[672,802,803],{"class":686}," log",[672,805,806],{"class":682}," =",[672,808,687],{"class":770},[672,810,774],{"class":811},"swJcz",[672,813,785],{"class":686},[672,815,816],{"class":811},")\n",[672,818,820],{"class":674,"line":819},7,[672,821,758],{"emptyLinePlaceholder":757},[672,823,825,827,830,832,834,836,839],{"class":674,"line":824},8,[672,826,800],{"class":777},[672,828,829],{"class":686}," ai",[672,831,806],{"class":682},[672,833,734],{"class":770},[672,835,774],{"class":811},[672,837,838],{"class":686},"log",[672,840,816],{"class":811},[672,842,844],{"class":674,"line":843},9,[672,845,758],{"emptyLinePlaceholder":757},[672,847,849,851,854,856,859,861,863],{"class":674,"line":848},10,[672,850,800],{"class":777},[672,852,853],{"class":686}," result",[672,855,806],{"class":682},[672,857,858],{"class":678}," await",[672,860,713],{"class":770},[672,862,774],{"class":811},[672,864,865],{"class":682},"{\n",[672,867,869,872,875,877,879,882,884,887,890,892,894],{"class":674,"line":868},11,[672,870,871],{"class":811},"    model",[672,873,874],{"class":682},":",[672,876,829],{"class":686},[672,878,641],{"class":682},[672,880,881],{"class":770},"wrap",[672,883,774],{"class":811},[672,885,886],{"class":682},"'",[672,888,889],{"class":699},"anthropic\u002Fclaude-sonnet-4.6",[672,891,886],{"class":682},[672,893,788],{"class":811},[672,895,896],{"class":682},",\n",[672,898,900,903,905,907,910,912,915],{"class":674,"line":899},12,[672,901,902],{"class":811},"    tools",[672,904,874],{"class":682},[672,906,683],{"class":682},[672,908,909],{"class":686}," getWeather",[672,911,737],{"class":682},[672,913,914],{"class":686}," searchDB",[672,916,917],{"class":682}," },\n",[672,919,921,924,926],{"class":674,"line":920},13,[672,922,923],{"class":811},"    telemetry",[672,925,874],{"class":682},[672,927,794],{"class":682},[672,929,931,934,936,939,942,944,946,949],{"class":674,"line":930},14,[672,932,933],{"class":811},"      integrations",[672,935,874],{"class":682},[672,937,938],{"class":811}," [",[672,940,941],{"class":770},"createEvlogIntegration",[672,943,774],{"class":811},[672,945,722],{"class":686},[672,947,948],{"class":811},")]",[672,950,896],{"class":682},[672,952,954],{"class":674,"line":953},15,[672,955,956],{"class":682},"    },\n",[672,958,960,963],{"class":674,"line":959},16,[672,961,962],{"class":682},"  }",[672,964,816],{"class":811},[672,966,968],{"class":674,"line":967},17,[672,969,758],{"emptyLinePlaceholder":757},[672,971,973,976,978,981,983,985,987,990],{"class":674,"line":972},18,[672,974,975],{"class":678},"  return",[672,977,683],{"class":682},[672,979,980],{"class":811}," text",[672,982,874],{"class":682},[672,984,853],{"class":686},[672,986,641],{"class":682},[672,988,989],{"class":686},"text",[672,991,992],{"class":682}," }\n",[672,994,996,999],{"class":674,"line":995},19,[672,997,998],{"class":682},"}",[672,1000,816],{"class":686},[662,1002,1005],{"className":664,"code":1003,"filename":255,"language":666,"meta":1004,"style":668},"import { defineHandler } from 'nitro\u002Fh3'\nimport { useLogger } from 'evlog\u002Fnitro\u002Fv3'\nimport { generateText } from 'ai'\nimport { createAILogger, createEvlogIntegration } from 'evlog\u002Fai'\n\nexport default defineHandler(async (event) => {\n  const log = useLogger(event)\n\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","routes\u002Fapi\u002Fagent.post.ts",[612,1006,1007,1027,1046,1064,1086,1090,1112,1128,1132,1148,1152,1168,1192,1208,1216,1234,1238,1244,1248,1266],{"__ignoreMap":668},[672,1008,1009,1011,1013,1016,1018,1020,1022,1025],{"class":674,"line":675},[672,1010,679],{"class":678},[672,1012,683],{"class":682},[672,1014,1015],{"class":686}," defineHandler",[672,1017,690],{"class":682},[672,1019,693],{"class":678},[672,1021,696],{"class":682},[672,1023,1024],{"class":699},"nitro\u002Fh3",[672,1026,703],{"class":682},[672,1028,1029,1031,1033,1035,1037,1039,1041,1044],{"class":674,"line":706},[672,1030,679],{"class":678},[672,1032,683],{"class":682},[672,1034,687],{"class":686},[672,1036,690],{"class":682},[672,1038,693],{"class":678},[672,1040,696],{"class":682},[672,1042,1043],{"class":699},"evlog\u002Fnitro\u002Fv3",[672,1045,703],{"class":682},[672,1047,1048,1050,1052,1054,1056,1058,1060,1062],{"class":674,"line":727},[672,1049,679],{"class":678},[672,1051,683],{"class":682},[672,1053,713],{"class":686},[672,1055,690],{"class":682},[672,1057,693],{"class":678},[672,1059,696],{"class":682},[672,1061,722],{"class":699},[672,1063,703],{"class":682},[672,1065,1066,1068,1070,1072,1074,1076,1078,1080,1082,1084],{"class":674,"line":754},[672,1067,679],{"class":678},[672,1069,683],{"class":682},[672,1071,734],{"class":686},[672,1073,737],{"class":682},[672,1075,740],{"class":686},[672,1077,690],{"class":682},[672,1079,693],{"class":678},[672,1081,696],{"class":682},[672,1083,749],{"class":699},[672,1085,703],{"class":682},[672,1087,1088],{"class":674,"line":761},[672,1089,758],{"emptyLinePlaceholder":757},[672,1091,1092,1094,1096,1098,1100,1102,1104,1106,1108,1110],{"class":674,"line":797},[672,1093,764],{"class":678},[672,1095,767],{"class":678},[672,1097,1015],{"class":770},[672,1099,774],{"class":686},[672,1101,778],{"class":777},[672,1103,781],{"class":682},[672,1105,785],{"class":784},[672,1107,788],{"class":682},[672,1109,791],{"class":777},[672,1111,794],{"class":682},[672,1113,1114,1116,1118,1120,1122,1124,1126],{"class":674,"line":819},[672,1115,800],{"class":777},[672,1117,803],{"class":686},[672,1119,806],{"class":682},[672,1121,687],{"class":770},[672,1123,774],{"class":811},[672,1125,785],{"class":686},[672,1127,816],{"class":811},[672,1129,1130],{"class":674,"line":824},[672,1131,758],{"emptyLinePlaceholder":757},[672,1133,1134,1136,1138,1140,1142,1144,1146],{"class":674,"line":843},[672,1135,800],{"class":777},[672,1137,829],{"class":686},[672,1139,806],{"class":682},[672,1141,734],{"class":770},[672,1143,774],{"class":811},[672,1145,838],{"class":686},[672,1147,816],{"class":811},[672,1149,1150],{"class":674,"line":848},[672,1151,758],{"emptyLinePlaceholder":757},[672,1153,1154,1156,1158,1160,1162,1164,1166],{"class":674,"line":868},[672,1155,800],{"class":777},[672,1157,853],{"class":686},[672,1159,806],{"class":682},[672,1161,858],{"class":678},[672,1163,713],{"class":770},[672,1165,774],{"class":811},[672,1167,865],{"class":682},[672,1169,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188,1190],{"class":674,"line":899},[672,1171,871],{"class":811},[672,1173,874],{"class":682},[672,1175,829],{"class":686},[672,1177,641],{"class":682},[672,1179,881],{"class":770},[672,1181,774],{"class":811},[672,1183,886],{"class":682},[672,1185,889],{"class":699},[672,1187,886],{"class":682},[672,1189,788],{"class":811},[672,1191,896],{"class":682},[672,1193,1194,1196,1198,1200,1202,1204,1206],{"class":674,"line":920},[672,1195,902],{"class":811},[672,1197,874],{"class":682},[672,1199,683],{"class":682},[672,1201,909],{"class":686},[672,1203,737],{"class":682},[672,1205,914],{"class":686},[672,1207,917],{"class":682},[672,1209,1210,1212,1214],{"class":674,"line":930},[672,1211,923],{"class":811},[672,1213,874],{"class":682},[672,1215,794],{"class":682},[672,1217,1218,1220,1222,1224,1226,1228,1230,1232],{"class":674,"line":953},[672,1219,933],{"class":811},[672,1221,874],{"class":682},[672,1223,938],{"class":811},[672,1225,941],{"class":770},[672,1227,774],{"class":811},[672,1229,722],{"class":686},[672,1231,948],{"class":811},[672,1233,896],{"class":682},[672,1235,1236],{"class":674,"line":959},[672,1237,956],{"class":682},[672,1239,1240,1242],{"class":674,"line":967},[672,1241,962],{"class":682},[672,1243,816],{"class":811},[672,1245,1246],{"class":674,"line":972},[672,1247,758],{"emptyLinePlaceholder":757},[672,1249,1250,1252,1254,1256,1258,1260,1262,1264],{"class":674,"line":995},[672,1251,975],{"class":678},[672,1253,683],{"class":682},[672,1255,980],{"class":811},[672,1257,874],{"class":682},[672,1259,853],{"class":686},[672,1261,641],{"class":682},[672,1263,989],{"class":686},[672,1265,992],{"class":682},[672,1267,1269,1271],{"class":674,"line":1268},20,[672,1270,998],{"class":682},[672,1272,816],{"class":686},[662,1274,1277],{"className":664,"code":1275,"filename":245,"language":666,"meta":1276,"style":668},"import { withEvlog, useLogger } from '@\u002Flib\u002Fevlog'\nimport { generateText } from 'ai'\nimport { createAILogger, createEvlogIntegration } from 'evlog\u002Fai'\n\nexport const POST = withEvlog(async () => {\n  const log = useLogger()\n\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 Response.json({ text: result.text })\n})\n","app\u002Fapi\u002Fagent\u002Froute.ts",[612,1278,1279,1303,1321,1343,1347,1373,1386,1390,1406,1410,1426,1450,1466,1474,1492,1496,1502,1506,1537],{"__ignoreMap":668},[672,1280,1281,1283,1285,1288,1290,1292,1294,1296,1298,1301],{"class":674,"line":675},[672,1282,679],{"class":678},[672,1284,683],{"class":682},[672,1286,1287],{"class":686}," withEvlog",[672,1289,737],{"class":682},[672,1291,687],{"class":686},[672,1293,690],{"class":682},[672,1295,693],{"class":678},[672,1297,696],{"class":682},[672,1299,1300],{"class":699},"@\u002Flib\u002Fevlog",[672,1302,703],{"class":682},[672,1304,1305,1307,1309,1311,1313,1315,1317,1319],{"class":674,"line":706},[672,1306,679],{"class":678},[672,1308,683],{"class":682},[672,1310,713],{"class":686},[672,1312,690],{"class":682},[672,1314,693],{"class":678},[672,1316,696],{"class":682},[672,1318,722],{"class":699},[672,1320,703],{"class":682},[672,1322,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341],{"class":674,"line":727},[672,1324,679],{"class":678},[672,1326,683],{"class":682},[672,1328,734],{"class":686},[672,1330,737],{"class":682},[672,1332,740],{"class":686},[672,1334,690],{"class":682},[672,1336,693],{"class":678},[672,1338,696],{"class":682},[672,1340,749],{"class":699},[672,1342,703],{"class":682},[672,1344,1345],{"class":674,"line":754},[672,1346,758],{"emptyLinePlaceholder":757},[672,1348,1349,1351,1354,1357,1360,1362,1364,1366,1369,1371],{"class":674,"line":761},[672,1350,764],{"class":678},[672,1352,1353],{"class":777}," const",[672,1355,1356],{"class":686}," POST ",[672,1358,1359],{"class":682},"=",[672,1361,1287],{"class":770},[672,1363,774],{"class":686},[672,1365,778],{"class":777},[672,1367,1368],{"class":682}," ()",[672,1370,791],{"class":777},[672,1372,794],{"class":682},[672,1374,1375,1377,1379,1381,1383],{"class":674,"line":797},[672,1376,800],{"class":777},[672,1378,803],{"class":686},[672,1380,806],{"class":682},[672,1382,687],{"class":770},[672,1384,1385],{"class":811},"()\n",[672,1387,1388],{"class":674,"line":819},[672,1389,758],{"emptyLinePlaceholder":757},[672,1391,1392,1394,1396,1398,1400,1402,1404],{"class":674,"line":824},[672,1393,800],{"class":777},[672,1395,829],{"class":686},[672,1397,806],{"class":682},[672,1399,734],{"class":770},[672,1401,774],{"class":811},[672,1403,838],{"class":686},[672,1405,816],{"class":811},[672,1407,1408],{"class":674,"line":843},[672,1409,758],{"emptyLinePlaceholder":757},[672,1411,1412,1414,1416,1418,1420,1422,1424],{"class":674,"line":848},[672,1413,800],{"class":777},[672,1415,853],{"class":686},[672,1417,806],{"class":682},[672,1419,858],{"class":678},[672,1421,713],{"class":770},[672,1423,774],{"class":811},[672,1425,865],{"class":682},[672,1427,1428,1430,1432,1434,1436,1438,1440,1442,1444,1446,1448],{"class":674,"line":868},[672,1429,871],{"class":811},[672,1431,874],{"class":682},[672,1433,829],{"class":686},[672,1435,641],{"class":682},[672,1437,881],{"class":770},[672,1439,774],{"class":811},[672,1441,886],{"class":682},[672,1443,889],{"class":699},[672,1445,886],{"class":682},[672,1447,788],{"class":811},[672,1449,896],{"class":682},[672,1451,1452,1454,1456,1458,1460,1462,1464],{"class":674,"line":899},[672,1453,902],{"class":811},[672,1455,874],{"class":682},[672,1457,683],{"class":682},[672,1459,909],{"class":686},[672,1461,737],{"class":682},[672,1463,914],{"class":686},[672,1465,917],{"class":682},[672,1467,1468,1470,1472],{"class":674,"line":920},[672,1469,923],{"class":811},[672,1471,874],{"class":682},[672,1473,794],{"class":682},[672,1475,1476,1478,1480,1482,1484,1486,1488,1490],{"class":674,"line":930},[672,1477,933],{"class":811},[672,1479,874],{"class":682},[672,1481,938],{"class":811},[672,1483,941],{"class":770},[672,1485,774],{"class":811},[672,1487,722],{"class":686},[672,1489,948],{"class":811},[672,1491,896],{"class":682},[672,1493,1494],{"class":674,"line":953},[672,1495,956],{"class":682},[672,1497,1498,1500],{"class":674,"line":959},[672,1499,962],{"class":682},[672,1501,816],{"class":811},[672,1503,1504],{"class":674,"line":967},[672,1505,758],{"emptyLinePlaceholder":757},[672,1507,1508,1510,1513,1515,1518,1520,1523,1525,1527,1529,1531,1533,1535],{"class":674,"line":972},[672,1509,975],{"class":678},[672,1511,1512],{"class":686}," Response",[672,1514,641],{"class":682},[672,1516,1517],{"class":770},"json",[672,1519,774],{"class":811},[672,1521,1522],{"class":682},"{",[672,1524,980],{"class":811},[672,1526,874],{"class":682},[672,1528,853],{"class":686},[672,1530,641],{"class":682},[672,1532,989],{"class":686},[672,1534,690],{"class":682},[672,1536,816],{"class":811},[672,1538,1539,1541],{"class":674,"line":995},[672,1540,998],{"class":682},[672,1542,816],{"class":686},[662,1544,1547],{"className":664,"code":1545,"filename":275,"language":666,"meta":1546,"style":668},"import { generateText } from 'ai'\nimport { createAILogger, createEvlogIntegration } from 'evlog\u002Fai'\n\napp.post('\u002Fapi\u002Fagent', async (c) => {\n  const log = c.get('log')\n\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 c.json({ text: result.text })\n})\n","src\u002Findex.ts",[612,1548,1549,1567,1589,1593,1628,1654,1658,1674,1678,1694,1718,1734,1742,1760,1764,1770,1774,1802],{"__ignoreMap":668},[672,1550,1551,1553,1555,1557,1559,1561,1563,1565],{"class":674,"line":675},[672,1552,679],{"class":678},[672,1554,683],{"class":682},[672,1556,713],{"class":686},[672,1558,690],{"class":682},[672,1560,693],{"class":678},[672,1562,696],{"class":682},[672,1564,722],{"class":699},[672,1566,703],{"class":682},[672,1568,1569,1571,1573,1575,1577,1579,1581,1583,1585,1587],{"class":674,"line":706},[672,1570,679],{"class":678},[672,1572,683],{"class":682},[672,1574,734],{"class":686},[672,1576,737],{"class":682},[672,1578,740],{"class":686},[672,1580,690],{"class":682},[672,1582,693],{"class":678},[672,1584,696],{"class":682},[672,1586,749],{"class":699},[672,1588,703],{"class":682},[672,1590,1591],{"class":674,"line":727},[672,1592,758],{"emptyLinePlaceholder":757},[672,1594,1595,1598,1600,1603,1605,1607,1610,1612,1614,1617,1619,1622,1624,1626],{"class":674,"line":754},[672,1596,1597],{"class":686},"app",[672,1599,641],{"class":682},[672,1601,1602],{"class":770},"post",[672,1604,774],{"class":686},[672,1606,886],{"class":682},[672,1608,1609],{"class":699},"\u002Fapi\u002Fagent",[672,1611,886],{"class":682},[672,1613,737],{"class":682},[672,1615,1616],{"class":777}," async",[672,1618,781],{"class":682},[672,1620,1621],{"class":784},"c",[672,1623,788],{"class":682},[672,1625,791],{"class":777},[672,1627,794],{"class":682},[672,1629,1630,1632,1634,1636,1639,1641,1644,1646,1648,1650,1652],{"class":674,"line":761},[672,1631,800],{"class":777},[672,1633,803],{"class":686},[672,1635,806],{"class":682},[672,1637,1638],{"class":686}," c",[672,1640,641],{"class":682},[672,1642,1643],{"class":770},"get",[672,1645,774],{"class":811},[672,1647,886],{"class":682},[672,1649,838],{"class":699},[672,1651,886],{"class":682},[672,1653,816],{"class":811},[672,1655,1656],{"class":674,"line":797},[672,1657,758],{"emptyLinePlaceholder":757},[672,1659,1660,1662,1664,1666,1668,1670,1672],{"class":674,"line":819},[672,1661,800],{"class":777},[672,1663,829],{"class":686},[672,1665,806],{"class":682},[672,1667,734],{"class":770},[672,1669,774],{"class":811},[672,1671,838],{"class":686},[672,1673,816],{"class":811},[672,1675,1676],{"class":674,"line":824},[672,1677,758],{"emptyLinePlaceholder":757},[672,1679,1680,1682,1684,1686,1688,1690,1692],{"class":674,"line":843},[672,1681,800],{"class":777},[672,1683,853],{"class":686},[672,1685,806],{"class":682},[672,1687,858],{"class":678},[672,1689,713],{"class":770},[672,1691,774],{"class":811},[672,1693,865],{"class":682},[672,1695,1696,1698,1700,1702,1704,1706,1708,1710,1712,1714,1716],{"class":674,"line":848},[672,1697,871],{"class":811},[672,1699,874],{"class":682},[672,1701,829],{"class":686},[672,1703,641],{"class":682},[672,1705,881],{"class":770},[672,1707,774],{"class":811},[672,1709,886],{"class":682},[672,1711,889],{"class":699},[672,1713,886],{"class":682},[672,1715,788],{"class":811},[672,1717,896],{"class":682},[672,1719,1720,1722,1724,1726,1728,1730,1732],{"class":674,"line":868},[672,1721,902],{"class":811},[672,1723,874],{"class":682},[672,1725,683],{"class":682},[672,1727,909],{"class":686},[672,1729,737],{"class":682},[672,1731,914],{"class":686},[672,1733,917],{"class":682},[672,1735,1736,1738,1740],{"class":674,"line":899},[672,1737,923],{"class":811},[672,1739,874],{"class":682},[672,1741,794],{"class":682},[672,1743,1744,1746,1748,1750,1752,1754,1756,1758],{"class":674,"line":920},[672,1745,933],{"class":811},[672,1747,874],{"class":682},[672,1749,938],{"class":811},[672,1751,941],{"class":770},[672,1753,774],{"class":811},[672,1755,722],{"class":686},[672,1757,948],{"class":811},[672,1759,896],{"class":682},[672,1761,1762],{"class":674,"line":930},[672,1763,956],{"class":682},[672,1765,1766,1768],{"class":674,"line":953},[672,1767,962],{"class":682},[672,1769,816],{"class":811},[672,1771,1772],{"class":674,"line":959},[672,1773,758],{"emptyLinePlaceholder":757},[672,1775,1776,1778,1780,1782,1784,1786,1788,1790,1792,1794,1796,1798,1800],{"class":674,"line":967},[672,1777,975],{"class":678},[672,1779,1638],{"class":686},[672,1781,641],{"class":682},[672,1783,1517],{"class":770},[672,1785,774],{"class":811},[672,1787,1522],{"class":682},[672,1789,980],{"class":811},[672,1791,874],{"class":682},[672,1793,853],{"class":686},[672,1795,641],{"class":682},[672,1797,989],{"class":686},[672,1799,690],{"class":682},[672,1801,816],{"class":811},[672,1803,1804,1806],{"class":674,"line":972},[672,1805,998],{"class":682},[672,1807,816],{"class":686},[662,1809,1811],{"className":664,"code":1810,"filename":270,"language":666,"meta":1546,"style":668},"import { generateText } from 'ai'\nimport { createAILogger, createEvlogIntegration } from 'evlog\u002Fai'\n\napp.post('\u002Fapi\u002Fagent', async (req, res) => {\n  const log = req.log\n\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 res.json({ text: result.text })\n})\n",[612,1812,1813,1831,1853,1857,1893,1909,1913,1929,1933,1949,1973,1989,1997,2015,2019,2025,2029,2057],{"__ignoreMap":668},[672,1814,1815,1817,1819,1821,1823,1825,1827,1829],{"class":674,"line":675},[672,1816,679],{"class":678},[672,1818,683],{"class":682},[672,1820,713],{"class":686},[672,1822,690],{"class":682},[672,1824,693],{"class":678},[672,1826,696],{"class":682},[672,1828,722],{"class":699},[672,1830,703],{"class":682},[672,1832,1833,1835,1837,1839,1841,1843,1845,1847,1849,1851],{"class":674,"line":706},[672,1834,679],{"class":678},[672,1836,683],{"class":682},[672,1838,734],{"class":686},[672,1840,737],{"class":682},[672,1842,740],{"class":686},[672,1844,690],{"class":682},[672,1846,693],{"class":678},[672,1848,696],{"class":682},[672,1850,749],{"class":699},[672,1852,703],{"class":682},[672,1854,1855],{"class":674,"line":727},[672,1856,758],{"emptyLinePlaceholder":757},[672,1858,1859,1861,1863,1865,1867,1869,1871,1873,1875,1877,1879,1882,1884,1887,1889,1891],{"class":674,"line":754},[672,1860,1597],{"class":686},[672,1862,641],{"class":682},[672,1864,1602],{"class":770},[672,1866,774],{"class":686},[672,1868,886],{"class":682},[672,1870,1609],{"class":699},[672,1872,886],{"class":682},[672,1874,737],{"class":682},[672,1876,1616],{"class":777},[672,1878,781],{"class":682},[672,1880,1881],{"class":784},"req",[672,1883,737],{"class":682},[672,1885,1886],{"class":784}," res",[672,1888,788],{"class":682},[672,1890,791],{"class":777},[672,1892,794],{"class":682},[672,1894,1895,1897,1899,1901,1904,1906],{"class":674,"line":761},[672,1896,800],{"class":777},[672,1898,803],{"class":686},[672,1900,806],{"class":682},[672,1902,1903],{"class":686}," req",[672,1905,641],{"class":682},[672,1907,1908],{"class":686},"log\n",[672,1910,1911],{"class":674,"line":797},[672,1912,758],{"emptyLinePlaceholder":757},[672,1914,1915,1917,1919,1921,1923,1925,1927],{"class":674,"line":819},[672,1916,800],{"class":777},[672,1918,829],{"class":686},[672,1920,806],{"class":682},[672,1922,734],{"class":770},[672,1924,774],{"class":811},[672,1926,838],{"class":686},[672,1928,816],{"class":811},[672,1930,1931],{"class":674,"line":824},[672,1932,758],{"emptyLinePlaceholder":757},[672,1934,1935,1937,1939,1941,1943,1945,1947],{"class":674,"line":843},[672,1936,800],{"class":777},[672,1938,853],{"class":686},[672,1940,806],{"class":682},[672,1942,858],{"class":678},[672,1944,713],{"class":770},[672,1946,774],{"class":811},[672,1948,865],{"class":682},[672,1950,1951,1953,1955,1957,1959,1961,1963,1965,1967,1969,1971],{"class":674,"line":848},[672,1952,871],{"class":811},[672,1954,874],{"class":682},[672,1956,829],{"class":686},[672,1958,641],{"class":682},[672,1960,881],{"class":770},[672,1962,774],{"class":811},[672,1964,886],{"class":682},[672,1966,889],{"class":699},[672,1968,886],{"class":682},[672,1970,788],{"class":811},[672,1972,896],{"class":682},[672,1974,1975,1977,1979,1981,1983,1985,1987],{"class":674,"line":868},[672,1976,902],{"class":811},[672,1978,874],{"class":682},[672,1980,683],{"class":682},[672,1982,909],{"class":686},[672,1984,737],{"class":682},[672,1986,914],{"class":686},[672,1988,917],{"class":682},[672,1990,1991,1993,1995],{"class":674,"line":899},[672,1992,923],{"class":811},[672,1994,874],{"class":682},[672,1996,794],{"class":682},[672,1998,1999,2001,2003,2005,2007,2009,2011,2013],{"class":674,"line":920},[672,2000,933],{"class":811},[672,2002,874],{"class":682},[672,2004,938],{"class":811},[672,2006,941],{"class":770},[672,2008,774],{"class":811},[672,2010,722],{"class":686},[672,2012,948],{"class":811},[672,2014,896],{"class":682},[672,2016,2017],{"class":674,"line":930},[672,2018,956],{"class":682},[672,2020,2021,2023],{"class":674,"line":953},[672,2022,962],{"class":682},[672,2024,816],{"class":811},[672,2026,2027],{"class":674,"line":959},[672,2028,758],{"emptyLinePlaceholder":757},[672,2030,2031,2033,2035,2037,2039,2041,2043,2045,2047,2049,2051,2053,2055],{"class":674,"line":967},[672,2032,975],{"class":678},[672,2034,1886],{"class":686},[672,2036,641],{"class":682},[672,2038,1517],{"class":770},[672,2040,774],{"class":811},[672,2042,1522],{"class":682},[672,2044,980],{"class":811},[672,2046,874],{"class":682},[672,2048,853],{"class":686},[672,2050,641],{"class":682},[672,2052,989],{"class":686},[672,2054,690],{"class":682},[672,2056,816],{"class":811},[672,2058,2059,2061],{"class":674,"line":972},[672,2060,998],{"class":682},[672,2062,816],{"class":686},[609,2064,2065],{},"Your wide event now includes per-tool timing:",[662,2067,2071],{"className":2068,"code":2069,"filename":2070,"language":1517,"meta":668,"style":668},"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",[612,2072,2073,2077,2091,2110,2125,2146,2166,2182,2198,2214,2246,2260,2310,2355,2360,2376,2392,2408,2422,2427],{"__ignoreMap":668},[672,2074,2075],{"class":674,"line":675},[672,2076,865],{"class":682},[672,2078,2079,2082,2084,2087,2089],{"class":674,"line":706},[672,2080,2081],{"class":682},"  \"",[672,2083,722],{"class":777},[672,2085,2086],{"class":682},"\"",[672,2088,874],{"class":682},[672,2090,794],{"class":682},[672,2092,2093,2096,2100,2102,2104,2108],{"class":674,"line":727},[672,2094,2095],{"class":682},"    \"",[672,2097,2099],{"class":2098},"sBMFI","calls",[672,2101,2086],{"class":682},[672,2103,874],{"class":682},[672,2105,2107],{"class":2106},"sbssI"," 2",[672,2109,896],{"class":682},[672,2111,2112,2114,2117,2119,2121,2123],{"class":674,"line":754},[672,2113,2095],{"class":682},[672,2115,2116],{"class":2098},"steps",[672,2118,2086],{"class":682},[672,2120,874],{"class":682},[672,2122,2107],{"class":2106},[672,2124,896],{"class":682},[672,2126,2127,2129,2132,2134,2136,2139,2142,2144],{"class":674,"line":761},[672,2128,2095],{"class":682},[672,2130,2131],{"class":2098},"model",[672,2133,2086],{"class":682},[672,2135,874],{"class":682},[672,2137,2138],{"class":682}," \"",[672,2140,2141],{"class":699},"claude-sonnet-4.6",[672,2143,2086],{"class":682},[672,2145,896],{"class":682},[672,2147,2148,2150,2153,2155,2157,2159,2162,2164],{"class":674,"line":797},[672,2149,2095],{"class":682},[672,2151,2152],{"class":2098},"provider",[672,2154,2086],{"class":682},[672,2156,874],{"class":682},[672,2158,2138],{"class":682},[672,2160,2161],{"class":699},"anthropic",[672,2163,2086],{"class":682},[672,2165,896],{"class":682},[672,2167,2168,2170,2173,2175,2177,2180],{"class":674,"line":819},[672,2169,2095],{"class":682},[672,2171,2172],{"class":2098},"inputTokens",[672,2174,2086],{"class":682},[672,2176,874],{"class":682},[672,2178,2179],{"class":2106}," 3500",[672,2181,896],{"class":682},[672,2183,2184,2186,2189,2191,2193,2196],{"class":674,"line":824},[672,2185,2095],{"class":682},[672,2187,2188],{"class":2098},"outputTokens",[672,2190,2086],{"class":682},[672,2192,874],{"class":682},[672,2194,2195],{"class":2106}," 800",[672,2197,896],{"class":682},[672,2199,2200,2202,2205,2207,2209,2212],{"class":674,"line":843},[672,2201,2095],{"class":682},[672,2203,2204],{"class":2098},"totalTokens",[672,2206,2086],{"class":682},[672,2208,874],{"class":682},[672,2210,2211],{"class":2106}," 4300",[672,2213,896],{"class":682},[672,2215,2216,2218,2221,2223,2225,2227,2229,2232,2234,2236,2238,2241,2243],{"class":674,"line":848},[672,2217,2095],{"class":682},[672,2219,2220],{"class":2098},"toolCalls",[672,2222,2086],{"class":682},[672,2224,874],{"class":682},[672,2226,938],{"class":682},[672,2228,2086],{"class":682},[672,2230,2231],{"class":699},"getWeather",[672,2233,2086],{"class":682},[672,2235,737],{"class":682},[672,2237,2138],{"class":682},[672,2239,2240],{"class":699},"searchDB",[672,2242,2086],{"class":682},[672,2244,2245],{"class":682},"],\n",[672,2247,2248,2250,2253,2255,2257],{"class":674,"line":868},[672,2249,2095],{"class":682},[672,2251,2252],{"class":2098},"tools",[672,2254,2086],{"class":682},[672,2256,874],{"class":682},[672,2258,2259],{"class":682}," [\n",[672,2261,2262,2265,2267,2270,2272,2274,2276,2278,2280,2282,2284,2287,2289,2291,2294,2296,2298,2301,2303,2305,2308],{"class":674,"line":899},[672,2263,2264],{"class":682},"      {",[672,2266,2138],{"class":682},[672,2268,2269],{"class":2106},"name",[672,2271,2086],{"class":682},[672,2273,874],{"class":682},[672,2275,2138],{"class":682},[672,2277,2231],{"class":699},[672,2279,2086],{"class":682},[672,2281,737],{"class":682},[672,2283,2138],{"class":682},[672,2285,2286],{"class":2106},"durationMs",[672,2288,2086],{"class":682},[672,2290,874],{"class":682},[672,2292,2293],{"class":2106}," 150",[672,2295,737],{"class":682},[672,2297,2138],{"class":682},[672,2299,2300],{"class":2106},"success",[672,2302,2086],{"class":682},[672,2304,874],{"class":682},[672,2306,2307],{"class":682}," true",[672,2309,917],{"class":682},[672,2311,2312,2314,2316,2318,2320,2322,2324,2326,2328,2330,2332,2334,2336,2338,2341,2343,2345,2347,2349,2351,2353],{"class":674,"line":920},[672,2313,2264],{"class":682},[672,2315,2138],{"class":682},[672,2317,2269],{"class":2106},[672,2319,2086],{"class":682},[672,2321,874],{"class":682},[672,2323,2138],{"class":682},[672,2325,2240],{"class":699},[672,2327,2086],{"class":682},[672,2329,737],{"class":682},[672,2331,2138],{"class":682},[672,2333,2286],{"class":2106},[672,2335,2086],{"class":682},[672,2337,874],{"class":682},[672,2339,2340],{"class":2106}," 45",[672,2342,737],{"class":682},[672,2344,2138],{"class":682},[672,2346,2300],{"class":2106},[672,2348,2086],{"class":682},[672,2350,874],{"class":682},[672,2352,2307],{"class":682},[672,2354,992],{"class":682},[672,2356,2357],{"class":674,"line":930},[672,2358,2359],{"class":682},"    ],\n",[672,2361,2362,2364,2367,2369,2371,2374],{"class":674,"line":953},[672,2363,2095],{"class":682},[672,2365,2366],{"class":2098},"totalDurationMs",[672,2368,2086],{"class":682},[672,2370,874],{"class":682},[672,2372,2373],{"class":2106}," 2340",[672,2375,896],{"class":682},[672,2377,2378,2380,2383,2385,2387,2390],{"class":674,"line":959},[672,2379,2095],{"class":682},[672,2381,2382],{"class":2098},"msToFirstChunk",[672,2384,2086],{"class":682},[672,2386,874],{"class":682},[672,2388,2389],{"class":2106}," 180",[672,2391,896],{"class":682},[672,2393,2394,2396,2399,2401,2403,2406],{"class":674,"line":967},[672,2395,2095],{"class":682},[672,2397,2398],{"class":2098},"msToFinish",[672,2400,2086],{"class":682},[672,2402,874],{"class":682},[672,2404,2405],{"class":2106}," 2100",[672,2407,896],{"class":682},[672,2409,2410,2412,2415,2417,2419],{"class":674,"line":972},[672,2411,2095],{"class":682},[672,2413,2414],{"class":2098},"tokensPerSecond",[672,2416,2086],{"class":682},[672,2418,874],{"class":682},[672,2420,2421],{"class":2106}," 380\n",[672,2423,2424],{"class":674,"line":995},[672,2425,2426],{"class":682},"  }\n",[672,2428,2429],{"class":674,"line":1268},[672,2430,2431],{"class":682},"}\n",[643,2433,2435],{"id":2434},"standalone-without-middleware","Standalone (without middleware)",[609,2437,2438],{},"If your model is already wrapped (e.g. by another middleware), pass the request logger directly:",[662,2440,2443],{"className":664,"code":2441,"filename":2442,"language":666,"meta":668,"style":668},"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",[612,2444,2445,2463,2467,2482,2486,2503,2515,2524,2536,2541],{"__ignoreMap":668},[672,2446,2447,2449,2451,2453,2455,2457,2459,2461],{"class":674,"line":675},[672,2448,679],{"class":678},[672,2450,683],{"class":682},[672,2452,740],{"class":686},[672,2454,690],{"class":682},[672,2456,693],{"class":678},[672,2458,696],{"class":682},[672,2460,749],{"class":699},[672,2462,703],{"class":682},[672,2464,2465],{"class":674,"line":706},[672,2466,758],{"emptyLinePlaceholder":757},[672,2468,2469,2472,2475,2477,2479],{"class":674,"line":727},[672,2470,2471],{"class":777},"const",[672,2473,2474],{"class":686}," integration ",[672,2476,1359],{"class":682},[672,2478,740],{"class":770},[672,2480,2481],{"class":686},"(log)\n",[672,2483,2484],{"class":674,"line":754},[672,2485,758],{"emptyLinePlaceholder":757},[672,2487,2488,2490,2493,2495,2497,2499,2501],{"class":674,"line":761},[672,2489,2471],{"class":777},[672,2491,2492],{"class":686}," result ",[672,2494,1359],{"class":682},[672,2496,858],{"class":678},[672,2498,713],{"class":770},[672,2500,774],{"class":686},[672,2502,865],{"class":682},[672,2504,2505,2508,2510,2513],{"class":674,"line":797},[672,2506,2507],{"class":811},"  model",[672,2509,874],{"class":682},[672,2511,2512],{"class":686}," somePreWrappedModel",[672,2514,896],{"class":682},[672,2516,2517,2520,2522],{"class":674,"line":819},[672,2518,2519],{"class":811},"  telemetry",[672,2521,874],{"class":682},[672,2523,794],{"class":682},[672,2525,2526,2529,2531,2534],{"class":674,"line":824},[672,2527,2528],{"class":811},"    integrations",[672,2530,874],{"class":682},[672,2532,2533],{"class":686}," [integration]",[672,2535,896],{"class":682},[672,2537,2538],{"class":674,"line":843},[672,2539,2540],{"class":682},"  },\n",[672,2542,2543,2545],{"class":674,"line":848},[672,2544,998],{"class":682},[672,2546,816],{"class":686},[643,2548,2550],{"id":2549},"what-lands-on-the-wide-event","What lands on the wide event",[2552,2553,2554,2570],"table",{},[2555,2556,2557],"thead",{},[2558,2559,2560,2564,2567],"tr",{},[2561,2562,2563],"th",{},"Data",[2561,2565,2566],{},"Source",[2561,2568,2569],{},"Description",[2571,2572,2573,2606,2628,2651,2665],"tbody",{},[2558,2574,2575,2581,2591],{},[2576,2577,2578],"td",{},[612,2579,2580],{},"ai.tools[]",[2576,2582,2583,2586,2587,2590],{},[612,2584,2585],{},"onToolExecutionEnd"," (v7) \u002F ",[612,2588,2589],{},"onToolCallFinish"," (v6)",[2576,2592,2593,2594,2596,2597,2596,2599,2601,2602,2605],{},"Per-tool ",[612,2595,2269],{},", ",[612,2598,2286],{},[612,2600,2300],{},", and ",[612,2603,2604],{},"error"," (if failed)",[2558,2607,2608,2613,2625],{},[2576,2609,2610],{},[612,2611,2612],{},"ai.totalDurationMs",[2576,2614,2615,2618,2619,2586,2622,2590],{},[612,2616,2617],{},"onStart"," → ",[612,2620,2621],{},"onEnd",[612,2623,2624],{},"onFinish",[2576,2626,2627],{},"Total wall time from generation start to completion",[2558,2629,2630,2635,2640],{},[2576,2631,2632],{},[612,2633,2634],{},"ai.embedding",[2576,2636,2637,2639],{},[612,2638,632],{}," (v7)",[2576,2641,2642,2643,2646,2647,2650],{},"Auto-captured from ",[612,2644,2645],{},"embed()"," \u002F ",[612,2648,2649],{},"embedMany()"," when telemetry is enabled",[2558,2652,2653,2658,2662],{},[2576,2654,2655],{},[612,2656,2657],{},"ai.finishReason: 'abort'",[2576,2659,2660,2639],{},[612,2661,636],{},[2576,2663,2664],{},"Set when a streaming generation is aborted",[2558,2666,2667,2672,2678],{},[2576,2668,2669],{},[612,2670,2671],{},"ai.error",[2576,2673,2674,2646,2676,2639],{},[612,2675,636],{},[612,2677,640],{},[2576,2679,2680],{},"Abort reason or unrecoverable generation error",[609,2682,2683],{},"The middleware captures tokens, model info, and streaming metrics. The integration captures tool execution timing. Together, they give you complete AI observability.",[643,2685,2687],{"id":2686},"compose-it-with-the-rest","Compose it with the rest",[609,2689,2690,2693,2694,874],{},[612,2691,2692],{},"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 ",[612,2695,2692],{},[662,2697,2699],{"className":664,"code":2698,"filename":2442,"language":666,"meta":668,"style":668},"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",[612,2700,2701,2719,2739,2758,2762,2784,2797,2819],{"__ignoreMap":668},[672,2702,2703,2705,2707,2709,2711,2713,2715,2717],{"class":674,"line":675},[672,2704,679],{"class":678},[672,2706,683],{"class":682},[672,2708,734],{"class":686},[672,2710,690],{"class":682},[672,2712,693],{"class":678},[672,2714,696],{"class":682},[672,2716,749],{"class":699},[672,2718,703],{"class":682},[672,2720,2721,2723,2725,2728,2730,2732,2734,2737],{"class":674,"line":706},[672,2722,679],{"class":678},[672,2724,683],{"class":682},[672,2726,2727],{"class":686}," withSupermemory",[672,2729,690],{"class":682},[672,2731,693],{"class":678},[672,2733,696],{"class":682},[672,2735,2736],{"class":699},"@supermemory\u002Ftools\u002Fai-sdk",[672,2738,703],{"class":682},[672,2740,2741,2743,2745,2748,2750,2752,2754,2756],{"class":674,"line":727},[672,2742,679],{"class":678},[672,2744,683],{"class":682},[672,2746,2747],{"class":686}," createGateway",[672,2749,690],{"class":682},[672,2751,693],{"class":678},[672,2753,696],{"class":682},[672,2755,722],{"class":699},[672,2757,703],{"class":682},[672,2759,2760],{"class":674,"line":754},[672,2761,758],{"emptyLinePlaceholder":757},[672,2763,2764,2766,2769,2771,2773,2775,2777,2780,2782],{"class":674,"line":761},[672,2765,2471],{"class":777},[672,2767,2768],{"class":686}," gateway ",[672,2770,1359],{"class":682},[672,2772,2747],{"class":770},[672,2774,774],{"class":686},[672,2776,1522],{"class":682},[672,2778,2779],{"class":682}," ...",[672,2781,690],{"class":682},[672,2783,816],{"class":686},[672,2785,2786,2788,2791,2793,2795],{"class":674,"line":797},[672,2787,2471],{"class":777},[672,2789,2790],{"class":686}," ai ",[672,2792,1359],{"class":682},[672,2794,734],{"class":770},[672,2796,2481],{"class":686},[672,2798,2799,2801,2804,2806,2809,2811,2813,2815,2817],{"class":674,"line":819},[672,2800,2471],{"class":777},[672,2802,2803],{"class":686}," base ",[672,2805,1359],{"class":682},[672,2807,2808],{"class":770}," gateway",[672,2810,774],{"class":686},[672,2812,886],{"class":682},[672,2814,889],{"class":699},[672,2816,886],{"class":682},[672,2818,816],{"class":686},[672,2820,2821,2823,2826,2828,2830,2832,2834,2836,2839,2842,2844,2846,2849,2851,2853,2855,2858,2860,2862,2865,2867,2869],{"class":674,"line":824},[672,2822,2471],{"class":777},[672,2824,2825],{"class":686}," model ",[672,2827,1359],{"class":682},[672,2829,829],{"class":686},[672,2831,641],{"class":682},[672,2833,881],{"class":770},[672,2835,774],{"class":686},[672,2837,2838],{"class":770},"withSupermemory",[672,2840,2841],{"class":686},"(base",[672,2843,737],{"class":682},[672,2845,696],{"class":682},[672,2847,2848],{"class":699},"your-org-id",[672,2850,886],{"class":682},[672,2852,737],{"class":682},[672,2854,683],{"class":682},[672,2856,2857],{"class":811}," mode",[672,2859,874],{"class":682},[672,2861,696],{"class":682},[672,2863,2864],{"class":699},"full",[672,2866,886],{"class":682},[672,2868,690],{"class":682},[672,2870,2871],{"class":686},"))\n",[609,2873,2874,2875,2878,2879,874],{},"For explicit middleware composition, use ",[612,2876,2877],{},"createAIMiddleware"," to get the raw middleware and compose it yourself via ",[612,2880,2881],{},"wrapLanguageModel",[662,2883,2885],{"className":664,"code":2884,"filename":2442,"language":666,"meta":668,"style":668},"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",[612,2886,2887,2906,2925,2929,2943,2954,2991],{"__ignoreMap":668},[672,2888,2889,2891,2893,2896,2898,2900,2902,2904],{"class":674,"line":675},[672,2890,679],{"class":678},[672,2892,683],{"class":682},[672,2894,2895],{"class":686}," createAIMiddleware",[672,2897,690],{"class":682},[672,2899,693],{"class":678},[672,2901,696],{"class":682},[672,2903,749],{"class":699},[672,2905,703],{"class":682},[672,2907,2908,2910,2912,2915,2917,2919,2921,2923],{"class":674,"line":706},[672,2909,679],{"class":678},[672,2911,683],{"class":682},[672,2913,2914],{"class":686}," wrapLanguageModel",[672,2916,690],{"class":682},[672,2918,693],{"class":678},[672,2920,696],{"class":682},[672,2922,722],{"class":699},[672,2924,703],{"class":682},[672,2926,2927],{"class":674,"line":727},[672,2928,758],{"emptyLinePlaceholder":757},[672,2930,2931,2933,2935,2937,2939,2941],{"class":674,"line":754},[672,2932,2471],{"class":777},[672,2934,2825],{"class":686},[672,2936,1359],{"class":682},[672,2938,2914],{"class":770},[672,2940,774],{"class":686},[672,2942,865],{"class":682},[672,2944,2945,2947,2949,2952],{"class":674,"line":761},[672,2946,2507],{"class":811},[672,2948,874],{"class":682},[672,2950,2951],{"class":686}," base",[672,2953,896],{"class":682},[672,2955,2956,2959,2961,2963,2965,2968,2970,2972,2975,2977,2980,2982,2984,2986,2989],{"class":674,"line":797},[672,2957,2958],{"class":811},"  middleware",[672,2960,874],{"class":682},[672,2962,938],{"class":686},[672,2964,2877],{"class":770},[672,2966,2967],{"class":686},"(log",[672,2969,737],{"class":682},[672,2971,683],{"class":682},[672,2973,2974],{"class":811}," toolInputs",[672,2976,874],{"class":682},[672,2978,2307],{"class":2979},"sfNiH",[672,2981,690],{"class":682},[672,2983,788],{"class":686},[672,2985,737],{"class":682},[672,2987,2988],{"class":686}," otherMiddleware]",[672,2990,896],{"class":682},[672,2992,2993,2995],{"class":674,"line":819},[672,2994,998],{"class":682},[672,2996,816],{"class":686},[609,2998,2999,3001,3002,3004,3005,3007,3008,3011,3012,3014,3015,3017],{},[612,3000,2877],{}," returns the same middleware that ",[612,3003,614],{}," uses internally. The difference: ",[612,3006,2877],{}," does not include ",[612,3009,3010],{},"captureEmbed"," (embedding models don't use middleware). Use ",[612,3013,614],{}," for the full API, ",[612,3016,2877],{}," when you need explicit middleware ordering.",[3019,3020,3021],"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":668,"searchDepth":706,"depth":706,"links":3023},[3024,3025,3026,3027],{"id":645,"depth":706,"text":646},{"id":2434,"depth":706,"text":2435},{"id":2549,"depth":706,"text":2550},{"id":2686,"depth":706,"text":2687},"Add tool execution timing and total wall time with createEvlogIntegration. Compose with other middleware like supermemory or guardrails.","md",[3031,3034],{"label":41,"icon":44,"to":338,"color":3032,"variant":3033},"neutral","subtle",{"label":3035,"icon":344,"to":342,"color":3032,"variant":3033},"Usage Patterns",{},{"title":356,"icon":137},{"title":604,"description":3028},"1RZGUmfJdjgnj6Y42eYB5Iedqm5cxF65OVWymITc5c8",[3041,3043],{"title":351,"path":352,"stem":353,"description":3042,"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":3044,"icon":44,"children":-1},"Identify the user on authenticated requests, so each wide event carries who made it without a manual log.set call.",1791103187702]