[{"data":1,"prerenderedAt":1810},["ShallowReactive",2],{"navigation_docs":3,"-libraries-exporting":612,"-libraries-exporting-surround":1805},[4,35,85,138,318,453,489,548,587],{"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,474,479,484],{"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":132},"Errors Agents Can Act On","\u002Flibraries\u002Fagents","6.libraries\u002F3.agents",{"title":475,"path":476,"stem":477,"icon":478},"Exporting the Catalog","\u002Flibraries\u002Fexporting","6.libraries\u002F4.exporting","i-lucide-file-output",{"title":480,"path":481,"stem":482,"icon":483},"Migrating","\u002Flibraries\u002Fmigrating","6.libraries\u002F5.migrating","i-lucide-route",{"title":485,"path":486,"stem":487,"icon":488},"Testing","\u002Flibraries\u002Ftesting","6.libraries\u002F6.testing","i-lucide-flask-conical",{"title":490,"path":491,"stem":492,"children":493,"page":34},"Extend","\u002Fextend","7.extend",[494,498,503,508,512,517,521,525,529,533,538,543],{"title":41,"path":495,"stem":496,"icon":497},"\u002Fextend\u002Foverview","7.extend\u002F0.overview","i-lucide-blocks",{"title":499,"path":500,"stem":501,"icon":502},"Stream","\u002Fextend\u002Fstream","7.extend\u002F1.stream","i-lucide-radio-tower",{"title":504,"path":505,"stem":506,"icon":507},"Custom framework","\u002Fextend\u002Fcustom-framework","7.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":509,"path":510,"stem":511,"icon":502},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","7.extend\u002F11.diagnostics-channel",{"title":513,"path":514,"stem":515,"icon":516},"FS reader","\u002Fextend\u002Ffs-reader","7.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":415,"path":518,"stem":519,"icon":520},"\u002Fextend\u002Fconsumer-recipes","7.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":522,"path":523,"stem":524,"icon":497},"Plugins","\u002Fextend\u002Fplugins","7.extend\u002F4.plugins",{"title":526,"path":527,"stem":528,"icon":443},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","7.extend\u002F5.custom-enrichers",{"title":530,"path":531,"stem":532,"icon":69},"Tail sampling","\u002Fextend\u002Ftail-sampling","7.extend\u002F6.tail-sampling",{"title":534,"path":535,"stem":536,"icon":537},"Identity headers","\u002Fextend\u002Fidentity-headers","7.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":539,"path":540,"stem":541,"icon":542},"Custom drains","\u002Fextend\u002Fcustom-drains","7.extend\u002F8.custom-drains","i-lucide-share-2",{"title":544,"path":545,"stem":546,"icon":547},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","7.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":436,"path":549,"stem":550,"children":551,"page":34},"\u002Freference","8.reference",[552,556,561,564,569,573,578,582],{"title":41,"path":553,"stem":554,"icon":555},"\u002Freference\u002Foverview","8.reference\u002F0.overview","i-lucide-book-marked",{"title":557,"path":558,"stem":559,"icon":560},"Configuration","\u002Freference\u002Fconfiguration","8.reference\u002F1.configuration","i-lucide-settings",{"title":383,"path":562,"stem":563,"icon":112},"\u002Freference\u002Fperformance","8.reference\u002F2.performance",{"title":565,"path":566,"stem":567,"icon":568},"Vite Plugin","\u002Freference\u002Fvite-plugin","8.reference\u002F3.vite-plugin","i-custom-vite",{"title":570,"path":571,"stem":572,"icon":388},"Best Practices","\u002Freference\u002Fbest-practices","8.reference\u002F4.best-practices",{"title":574,"path":575,"stem":576,"icon":577},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","8.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":579,"path":580,"stem":581,"icon":443},"Agent Skills","\u002Freference\u002Fagent-skills","8.reference\u002F6.agent-skills",{"title":583,"path":584,"stem":585,"icon":586},"Cost","\u002Freference\u002Fcost","8.reference\u002F7.cost","i-lucide-receipt",{"title":588,"path":589,"stem":590,"children":591,"page":34},"Compare","\u002Fcompare","9.compare",[592,596,600,604,608],{"title":593,"path":594,"stem":595,"icon":577},"evlog vs Pino","\u002Fcompare\u002Fpino","9.compare\u002F1.pino",{"title":597,"path":598,"stem":599,"icon":204},"evlog vs OpenTelemetry","\u002Fcompare\u002Fopentelemetry","9.compare\u002F2.opentelemetry",{"title":601,"path":602,"stem":603,"icon":577},"evlog vs LogTape","\u002Fcompare\u002Flogtape","9.compare\u002F3.logtape",{"title":605,"path":606,"stem":607,"icon":577},"evlog vs Winston: formats and request events","\u002Fcompare\u002Fwinston","9.compare\u002F4.winston",{"title":609,"path":610,"stem":611,"icon":577},"evlog vs Consola: reporters and request context","\u002Fcompare\u002Fconsola","9.compare\u002F5.consola",{"id":613,"title":475,"body":614,"description":1798,"extension":1799,"links":1800,"meta":1801,"navigation":1802,"path":476,"seo":1803,"stem":477,"__hash__":1804},"docs\u002F6.libraries\u002F4.exporting.md",{"type":615,"value":616,"toc":1792},"minimark",[617,647,650,655,676,1035,1040,1044,1047,1543,1554,1581,1584,1588,1600,1621,1633,1637,1640,1779,1788],[618,619,620,621,624,625,624,628,624,631,624,634,624,637,624,640,624,643,646],"p",{},"Your catalog already holds the error reference: every code, its status, its cause, its fix, and its link. Writing that reference a second time by hand, in a docs page, is how the two drift apart within a release. Generate it instead. The catalog is a plain object whose values are factories, and every factory exposes its metadata as enumerable properties: ",[622,623,622],"code",{},", ",[622,626,627],{},"status",[622,629,630],{},"message",[622,632,633],{},"why",[622,635,636],{},"fix",[622,638,639],{},"link",[622,641,642],{},"tags",[622,644,645],{},"internal",". That is enough for a script to produce every artifact this page covers.",[618,648,649],{},"evlog ships no generator for this. The script below is the whole thing, and it is yours to shape.",[651,652,654],"h2",{"id":653},"read-the-catalog-as-data","Read the catalog as data",[618,656,657,660,661,664,665,668,669,672,673,675],{},[622,658,659],{},"Object.entries()"," on a catalog yields one ",[622,662,663],{},"[KEY, factory]"," pair per entry; ",[622,666,667],{},"_prefix"," and ",[622,670,671],{},"_codes"," are non-enumerable, so they stay out of the loop. A ",[622,674,630],{}," defined as a function is a template, so the export records that rather than calling it:",[677,678,684],"pre",{"className":679,"code":680,"filename":681,"language":682,"meta":683,"style":683},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { githubToolsErrors } from '..\u002Fsrc\u002Fcore\u002Ferrors'\n\nexport interface ErrorReferenceEntry {\n  code: string\n  status: number\n  message: string | null\n  why?: string\n  fix?: string\n  link?: string\n}\n\nexport function readCatalog(): ErrorReferenceEntry[] {\n  return Object.entries(githubToolsErrors).map(([, entry]) => ({\n    code: entry.code,\n    status: entry.status,\n    message: typeof entry.message === 'string' ? entry.message : null,\n    why: entry.why,\n    fix: entry.fix,\n    link: entry.link,\n  }))\n}\n","scripts\u002Fexport-errors.ts","typescript","",[622,685,686,719,726,743,756,767,784,795,805,815,821,826,849,897,914,930,973,989,1005,1021,1030],{"__ignoreMap":683},[687,688,691,695,699,703,706,709,712,716],"span",{"class":689,"line":690},"line",1,[687,692,694],{"class":693},"s7zQu","import",[687,696,698],{"class":697},"sMK4o"," {",[687,700,702],{"class":701},"sTEyZ"," githubToolsErrors",[687,704,705],{"class":697}," }",[687,707,708],{"class":693}," from",[687,710,711],{"class":697}," '",[687,713,715],{"class":714},"sfazB","..\u002Fsrc\u002Fcore\u002Ferrors",[687,717,718],{"class":697},"'\n",[687,720,722],{"class":689,"line":721},2,[687,723,725],{"emptyLinePlaceholder":724},true,"\n",[687,727,729,732,736,740],{"class":689,"line":728},3,[687,730,731],{"class":693},"export",[687,733,735],{"class":734},"spNyl"," interface",[687,737,739],{"class":738},"sBMFI"," ErrorReferenceEntry",[687,741,742],{"class":697}," {\n",[687,744,746,750,753],{"class":689,"line":745},4,[687,747,749],{"class":748},"swJcz","  code",[687,751,752],{"class":697},":",[687,754,755],{"class":738}," string\n",[687,757,759,762,764],{"class":689,"line":758},5,[687,760,761],{"class":748},"  status",[687,763,752],{"class":697},[687,765,766],{"class":738}," number\n",[687,768,770,773,775,778,781],{"class":689,"line":769},6,[687,771,772],{"class":748},"  message",[687,774,752],{"class":697},[687,776,777],{"class":738}," string",[687,779,780],{"class":697}," |",[687,782,783],{"class":738}," null\n",[687,785,787,790,793],{"class":689,"line":786},7,[687,788,789],{"class":748},"  why",[687,791,792],{"class":697},"?:",[687,794,755],{"class":738},[687,796,798,801,803],{"class":689,"line":797},8,[687,799,800],{"class":748},"  fix",[687,802,792],{"class":697},[687,804,755],{"class":738},[687,806,808,811,813],{"class":689,"line":807},9,[687,809,810],{"class":748},"  link",[687,812,792],{"class":697},[687,814,755],{"class":738},[687,816,818],{"class":689,"line":817},10,[687,819,820],{"class":697},"}\n",[687,822,824],{"class":689,"line":823},11,[687,825,725],{"emptyLinePlaceholder":724},[687,827,829,831,834,838,841,843,846],{"class":689,"line":828},12,[687,830,731],{"class":693},[687,832,833],{"class":734}," function",[687,835,837],{"class":836},"s2Zo4"," readCatalog",[687,839,840],{"class":697},"():",[687,842,739],{"class":738},[687,844,845],{"class":701},"[] ",[687,847,848],{"class":697},"{\n",[687,850,852,855,858,861,864,867,870,873,875,877,879,882,886,889,892,895],{"class":689,"line":851},13,[687,853,854],{"class":693},"  return",[687,856,857],{"class":701}," Object",[687,859,860],{"class":697},".",[687,862,863],{"class":836},"entries",[687,865,866],{"class":748},"(",[687,868,869],{"class":701},"githubToolsErrors",[687,871,872],{"class":748},")",[687,874,860],{"class":697},[687,876,99],{"class":836},[687,878,866],{"class":748},[687,880,881],{"class":697},"([,",[687,883,885],{"class":884},"sHdIc"," entry",[687,887,888],{"class":697},"])",[687,890,891],{"class":734}," =>",[687,893,894],{"class":748}," (",[687,896,848],{"class":697},[687,898,900,903,905,907,909,911],{"class":689,"line":899},14,[687,901,902],{"class":748},"    code",[687,904,752],{"class":697},[687,906,885],{"class":701},[687,908,860],{"class":697},[687,910,622],{"class":701},[687,912,913],{"class":697},",\n",[687,915,917,920,922,924,926,928],{"class":689,"line":916},15,[687,918,919],{"class":748},"    status",[687,921,752],{"class":697},[687,923,885],{"class":701},[687,925,860],{"class":697},[687,927,627],{"class":701},[687,929,913],{"class":697},[687,931,933,936,938,941,943,945,947,950,952,955,958,961,963,965,967,970],{"class":689,"line":932},16,[687,934,935],{"class":748},"    message",[687,937,752],{"class":697},[687,939,940],{"class":697}," typeof",[687,942,885],{"class":701},[687,944,860],{"class":697},[687,946,630],{"class":701},[687,948,949],{"class":697}," ===",[687,951,711],{"class":697},[687,953,954],{"class":714},"string",[687,956,957],{"class":697},"'",[687,959,960],{"class":697}," ?",[687,962,885],{"class":701},[687,964,860],{"class":697},[687,966,630],{"class":701},[687,968,969],{"class":697}," :",[687,971,972],{"class":697}," null,\n",[687,974,976,979,981,983,985,987],{"class":689,"line":975},17,[687,977,978],{"class":748},"    why",[687,980,752],{"class":697},[687,982,885],{"class":701},[687,984,860],{"class":697},[687,986,633],{"class":701},[687,988,913],{"class":697},[687,990,992,995,997,999,1001,1003],{"class":689,"line":991},18,[687,993,994],{"class":748},"    fix",[687,996,752],{"class":697},[687,998,885],{"class":701},[687,1000,860],{"class":697},[687,1002,636],{"class":701},[687,1004,913],{"class":697},[687,1006,1008,1011,1013,1015,1017,1019],{"class":689,"line":1007},19,[687,1009,1010],{"class":748},"    link",[687,1012,752],{"class":697},[687,1014,885],{"class":701},[687,1016,860],{"class":697},[687,1018,639],{"class":701},[687,1020,913],{"class":697},[687,1022,1024,1027],{"class":689,"line":1023},20,[687,1025,1026],{"class":697},"  }",[687,1028,1029],{"class":748},"))\n",[687,1031,1033],{"class":689,"line":1032},21,[687,1034,820],{"class":697},[618,1036,1037,1039],{},[622,1038,645],{}," is left out on purpose. It is the field you keep off the wire, and a reference page is the wire.",[651,1041,1043],{"id":1042},"write-the-markdown-reference","Write the Markdown reference",[618,1045,1046],{},"A table per status band reads better than one long table, but the minimal version is one table. The output goes into your docs source, wherever your docs framework reads Markdown from:",[677,1048,1050],{"className":679,"code":1049,"filename":681,"language":682,"meta":683,"style":683},"import { writeFileSync } from 'node:fs'\n\nfunction cell(value: string | null | undefined): string {\n  return (value ?? '').replace(\u002F\\|\u002Fg, '\\\\|').replace(\u002F\\n\u002Fg, ' ')\n}\n\nexport function toMarkdown(entries: ErrorReferenceEntry[]): string {\n  const rows = entries.map(entry =>\n    `| \\`${entry.code}\\` | ${entry.status} | ${cell(entry.why)} | ${cell(entry.fix)} | ${entry.link ? `[docs](${entry.link})` : ''} |`,\n  )\n  return [\n    '# Errors',\n    '',\n    'Generated from `src\u002Fcore\u002Ferrors.ts`. Do not edit by hand.',\n    '',\n    '| Code | Status | Why | Fix | Link |',\n    '| --- | --- | --- | --- | --- |',\n    ...rows,\n    '',\n  ].join('\\n')\n}\n\nwriteFileSync('docs\u002Freference\u002Ferrors.md', toMarkdown(readCatalog()))\nwriteFileSync('docs\u002Fpublic\u002Ferrors.json', JSON.stringify(readCatalog(), null, 2))\n",[622,1051,1052,1072,1076,1110,1184,1188,1192,1218,1244,1360,1365,1372,1384,1391,1402,1408,1419,1430,1440,1446,1466,1470,1475,1502],{"__ignoreMap":683},[687,1053,1054,1056,1058,1061,1063,1065,1067,1070],{"class":689,"line":690},[687,1055,694],{"class":693},[687,1057,698],{"class":697},[687,1059,1060],{"class":701}," writeFileSync",[687,1062,705],{"class":697},[687,1064,708],{"class":693},[687,1066,711],{"class":697},[687,1068,1069],{"class":714},"node:fs",[687,1071,718],{"class":697},[687,1073,1074],{"class":689,"line":721},[687,1075,725],{"emptyLinePlaceholder":724},[687,1077,1078,1081,1084,1086,1089,1091,1093,1095,1098,1100,1103,1106,1108],{"class":689,"line":728},[687,1079,1080],{"class":734},"function",[687,1082,1083],{"class":836}," cell",[687,1085,866],{"class":697},[687,1087,1088],{"class":884},"value",[687,1090,752],{"class":697},[687,1092,777],{"class":738},[687,1094,780],{"class":697},[687,1096,1097],{"class":738}," null",[687,1099,780],{"class":697},[687,1101,1102],{"class":738}," undefined",[687,1104,1105],{"class":697},"):",[687,1107,777],{"class":738},[687,1109,742],{"class":697},[687,1111,1112,1114,1116,1118,1121,1124,1126,1128,1131,1133,1136,1139,1141,1145,1148,1150,1153,1156,1158,1160,1162,1164,1166,1168,1171,1173,1175,1177,1179,1181],{"class":689,"line":745},[687,1113,854],{"class":693},[687,1115,894],{"class":748},[687,1117,1088],{"class":701},[687,1119,1120],{"class":697}," ??",[687,1122,1123],{"class":697}," ''",[687,1125,872],{"class":748},[687,1127,860],{"class":697},[687,1129,1130],{"class":836},"replace",[687,1132,866],{"class":748},[687,1134,1135],{"class":697},"\u002F",[687,1137,1138],{"class":701},"\\|",[687,1140,1135],{"class":697},[687,1142,1144],{"class":1143},"sbssI","g",[687,1146,1147],{"class":697},",",[687,1149,711],{"class":697},[687,1151,1152],{"class":701},"\\\\",[687,1154,1155],{"class":714},"|",[687,1157,957],{"class":697},[687,1159,872],{"class":748},[687,1161,860],{"class":697},[687,1163,1130],{"class":836},[687,1165,866],{"class":748},[687,1167,1135],{"class":697},[687,1169,1170],{"class":714},"\\n",[687,1172,1135],{"class":697},[687,1174,1144],{"class":1143},[687,1176,1147],{"class":697},[687,1178,711],{"class":697},[687,1180,711],{"class":697},[687,1182,1183],{"class":748},")\n",[687,1185,1186],{"class":689,"line":758},[687,1187,820],{"class":697},[687,1189,1190],{"class":689,"line":769},[687,1191,725],{"emptyLinePlaceholder":724},[687,1193,1194,1196,1198,1201,1203,1205,1207,1209,1212,1214,1216],{"class":689,"line":786},[687,1195,731],{"class":693},[687,1197,833],{"class":734},[687,1199,1200],{"class":836}," toMarkdown",[687,1202,866],{"class":697},[687,1204,863],{"class":884},[687,1206,752],{"class":697},[687,1208,739],{"class":738},[687,1210,1211],{"class":701},"[]",[687,1213,1105],{"class":697},[687,1215,777],{"class":738},[687,1217,742],{"class":697},[687,1219,1220,1223,1226,1229,1232,1234,1236,1238,1241],{"class":689,"line":797},[687,1221,1222],{"class":734},"  const",[687,1224,1225],{"class":701}," rows",[687,1227,1228],{"class":697}," =",[687,1230,1231],{"class":701}," entries",[687,1233,860],{"class":697},[687,1235,99],{"class":836},[687,1237,866],{"class":748},[687,1239,1240],{"class":884},"entry",[687,1242,1243],{"class":734}," =>\n",[687,1245,1246,1249,1252,1255,1258,1260,1262,1264,1267,1269,1272,1274,1276,1278,1280,1282,1284,1286,1289,1292,1294,1297,1299,1301,1303,1305,1307,1309,1312,1314,1316,1318,1320,1322,1325,1328,1331,1334,1336,1338,1340,1342,1344,1346,1349,1351,1354,1356,1358],{"class":689,"line":807},[687,1247,1248],{"class":697},"    `",[687,1250,1251],{"class":714},"| ",[687,1253,1254],{"class":701},"\\`",[687,1256,1257],{"class":697},"${",[687,1259,1240],{"class":701},[687,1261,860],{"class":697},[687,1263,622],{"class":701},[687,1265,1266],{"class":697},"}",[687,1268,1254],{"class":701},[687,1270,1271],{"class":714}," | ",[687,1273,1257],{"class":697},[687,1275,1240],{"class":701},[687,1277,860],{"class":697},[687,1279,627],{"class":701},[687,1281,1266],{"class":697},[687,1283,1271],{"class":714},[687,1285,1257],{"class":697},[687,1287,1288],{"class":836},"cell",[687,1290,1291],{"class":701},"(entry",[687,1293,860],{"class":697},[687,1295,1296],{"class":701},"why)",[687,1298,1266],{"class":697},[687,1300,1271],{"class":714},[687,1302,1257],{"class":697},[687,1304,1288],{"class":836},[687,1306,1291],{"class":701},[687,1308,860],{"class":697},[687,1310,1311],{"class":701},"fix)",[687,1313,1266],{"class":697},[687,1315,1271],{"class":714},[687,1317,1257],{"class":697},[687,1319,1240],{"class":701},[687,1321,860],{"class":697},[687,1323,1324],{"class":701},"link ",[687,1326,1327],{"class":697},"?",[687,1329,1330],{"class":697}," `",[687,1332,1333],{"class":714},"[docs](",[687,1335,1257],{"class":697},[687,1337,1240],{"class":701},[687,1339,860],{"class":697},[687,1341,639],{"class":701},[687,1343,1266],{"class":697},[687,1345,872],{"class":714},[687,1347,1348],{"class":697},"`",[687,1350,969],{"class":697},[687,1352,1353],{"class":697}," ''}",[687,1355,780],{"class":714},[687,1357,1348],{"class":697},[687,1359,913],{"class":697},[687,1361,1362],{"class":689,"line":817},[687,1363,1364],{"class":748},"  )\n",[687,1366,1367,1369],{"class":689,"line":823},[687,1368,854],{"class":693},[687,1370,1371],{"class":748}," [\n",[687,1373,1374,1377,1380,1382],{"class":689,"line":828},[687,1375,1376],{"class":697},"    '",[687,1378,1379],{"class":714},"# Errors",[687,1381,957],{"class":697},[687,1383,913],{"class":697},[687,1385,1386,1389],{"class":689,"line":851},[687,1387,1388],{"class":697},"    ''",[687,1390,913],{"class":697},[687,1392,1393,1395,1398,1400],{"class":689,"line":899},[687,1394,1376],{"class":697},[687,1396,1397],{"class":714},"Generated from `src\u002Fcore\u002Ferrors.ts`. Do not edit by hand.",[687,1399,957],{"class":697},[687,1401,913],{"class":697},[687,1403,1404,1406],{"class":689,"line":916},[687,1405,1388],{"class":697},[687,1407,913],{"class":697},[687,1409,1410,1412,1415,1417],{"class":689,"line":932},[687,1411,1376],{"class":697},[687,1413,1414],{"class":714},"| Code | Status | Why | Fix | Link |",[687,1416,957],{"class":697},[687,1418,913],{"class":697},[687,1420,1421,1423,1426,1428],{"class":689,"line":975},[687,1422,1376],{"class":697},[687,1424,1425],{"class":714},"| --- | --- | --- | --- | --- |",[687,1427,957],{"class":697},[687,1429,913],{"class":697},[687,1431,1432,1435,1438],{"class":689,"line":991},[687,1433,1434],{"class":697},"    ...",[687,1436,1437],{"class":701},"rows",[687,1439,913],{"class":697},[687,1441,1442,1444],{"class":689,"line":1007},[687,1443,1388],{"class":697},[687,1445,913],{"class":697},[687,1447,1448,1451,1453,1456,1458,1460,1462,1464],{"class":689,"line":1023},[687,1449,1450],{"class":748},"  ]",[687,1452,860],{"class":697},[687,1454,1455],{"class":836},"join",[687,1457,866],{"class":748},[687,1459,957],{"class":697},[687,1461,1170],{"class":701},[687,1463,957],{"class":697},[687,1465,1183],{"class":748},[687,1467,1468],{"class":689,"line":1032},[687,1469,820],{"class":697},[687,1471,1473],{"class":689,"line":1472},22,[687,1474,725],{"emptyLinePlaceholder":724},[687,1476,1478,1481,1483,1485,1488,1490,1492,1494,1496,1499],{"class":689,"line":1477},23,[687,1479,1480],{"class":836},"writeFileSync",[687,1482,866],{"class":701},[687,1484,957],{"class":697},[687,1486,1487],{"class":714},"docs\u002Freference\u002Ferrors.md",[687,1489,957],{"class":697},[687,1491,1147],{"class":697},[687,1493,1200],{"class":836},[687,1495,866],{"class":701},[687,1497,1498],{"class":836},"readCatalog",[687,1500,1501],{"class":701},"()))\n",[687,1503,1505,1507,1509,1511,1514,1516,1518,1521,1523,1526,1528,1530,1533,1535,1538,1541],{"class":689,"line":1504},24,[687,1506,1480],{"class":836},[687,1508,866],{"class":701},[687,1510,957],{"class":697},[687,1512,1513],{"class":714},"docs\u002Fpublic\u002Ferrors.json",[687,1515,957],{"class":697},[687,1517,1147],{"class":697},[687,1519,1520],{"class":701}," JSON",[687,1522,860],{"class":697},[687,1524,1525],{"class":836},"stringify",[687,1527,866],{"class":701},[687,1529,1498],{"class":836},[687,1531,1532],{"class":701},"()",[687,1534,1147],{"class":697},[687,1536,1537],{"class":697}," null,",[687,1539,1540],{"class":1143}," 2",[687,1542,1029],{"class":701},[618,1544,1545,1546,1549,1550,1553],{},"Two of the four ",[622,1547,1548],{},"github_tools"," entries from ",[1551,1552,56],"a",{"href":468}," come out like this:",[677,1555,1559],{"className":1556,"code":1557,"filename":1487,"language":1558,"meta":683,"style":683},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","| Code | Status | Why | Fix | Link |\n| --- | --- | --- | --- | --- |\n| `github_tools.RATE_LIMITED` | 429 | The token used up its GitHub API rate limit for this resource. | Stop calling this tool and retry after the reset timestamp in the message; batch reads or narrow the query to spend fewer requests. | [docs](https:\u002F\u002Fdocs.github.com\u002Fen\u002Frest\u002Fusing-the-rest-api\u002Frate-limits-for-the-rest-api) |\n| `github_tools.NOT_FOUND` | 404 | Either the resource does not exist, or the token cannot see it. GitHub deliberately returns 404 instead of 403 for private resources the token has no access to. | Check the owner\u002Frepo\u002Fnumber input first. If it is correct, the token lacks access: grant the repository to the PAT or App installation, or use a Connect subject that has access. | [docs](https:\u002F\u002Fdocs.github.com\u002Fen\u002Frest\u002Fusing-the-rest-api\u002Ftroubleshooting-the-rest-api#404-not-found-for-an-existing-resource) |\n","markdown",[622,1560,1561,1566,1571,1576],{"__ignoreMap":683},[687,1562,1563],{"class":689,"line":690},[687,1564,1565],{},"| Code | Status | Why | Fix | Link |\n",[687,1567,1568],{"class":689,"line":721},[687,1569,1570],{},"| --- | --- | --- | --- | --- |\n",[687,1572,1573],{"class":689,"line":728},[687,1574,1575],{},"| `github_tools.RATE_LIMITED` | 429 | The token used up its GitHub API rate limit for this resource. | Stop calling this tool and retry after the reset timestamp in the message; batch reads or narrow the query to spend fewer requests. | [docs](https:\u002F\u002Fdocs.github.com\u002Fen\u002Frest\u002Fusing-the-rest-api\u002Frate-limits-for-the-rest-api) |\n",[687,1577,1578],{"class":689,"line":745},[687,1579,1580],{},"| `github_tools.NOT_FOUND` | 404 | Either the resource does not exist, or the token cannot see it. GitHub deliberately returns 404 instead of 403 for private resources the token has no access to. | Check the owner\u002Frepo\u002Fnumber input first. If it is correct, the token lacks access: grant the repository to the PAT or App installation, or use a Connect subject that has access. | [docs](https:\u002F\u002Fdocs.github.com\u002Fen\u002Frest\u002Fusing-the-rest-api\u002Ftroubleshooting-the-rest-api#404-not-found-for-an-existing-resource) |\n",[618,1582,1583],{},"The JSON file is the same array, and it is what a consumer's tooling reads: a test that asserts your codes did not change, a support macro generator, or an agent that loads the catalog once at the start of a session instead of discovering errors one at a time.",[651,1585,1587],{"id":1586},"put-it-where-agents-read","Put it where agents read",[618,1589,1590,1591,1594,1595,668,1597,1599],{},"An agent that hits ",[622,1592,1593],{},"github_tools.NOT_FOUND"," already has ",[622,1596,633],{},[622,1598,636],{}," in the error. An agent that has not called your package yet, and is deciding whether to, benefits from seeing the catalog up front: the codes tell it what can go wrong before it writes the retry logic. Two placements cost nothing extra once the reference exists.",[618,1601,1602,1609,1610,1613,1614,1616,1617,1620],{},[1603,1604,1605,1606,860],"strong",{},"Your ",[622,1607,1608],{},"llms.txt"," Link the generated page from the file, or inline the table under an ",[622,1611,1612],{},"## Errors"," heading. Docs frameworks that build ",[622,1615,1608],{}," from the content tree (Docus does, through ",[622,1618,1619],{},"nuxt-llms",") pick the page up when it lives in the content directory, so the generated Markdown only needs to land there.",[618,1622,1623,1629,1630,1632],{},[1603,1624,1625,1626,860],{},"Your skill or ",[622,1627,1628],{},"AGENTS.md"," If your package ships an agent skill, the error table is the one section an agent reads before every retry. Reference the generated file from the skill instead of pasting it, so a catalog change reaches the skill on the next build. ",[1551,1631,579],{"href":580}," covers how evlog itself does this.",[651,1634,1636],{"id":1635},"keep-the-reference-honest","Keep the reference honest",[618,1638,1639],{},"Run the script in the build that publishes the docs, and add one test that fails when the committed reference is stale:",[677,1641,1644],{"className":679,"code":1642,"filename":1643,"language":682,"meta":683,"style":683},"import { readFileSync } from 'node:fs'\nimport { readCatalog, toMarkdown } from '..\u002Fscripts\u002Fexport-errors'\n\nit('keeps docs\u002Freference\u002Ferrors.md in sync with the catalog', () => {\n  const committed = readFileSync('docs\u002Freference\u002Ferrors.md', 'utf8')\n  expect(committed).toBe(toMarkdown(readCatalog()))\n})\n","test\u002Ferrors-reference.test.ts",[622,1645,1646,1665,1688,1692,1715,1745,1773],{"__ignoreMap":683},[687,1647,1648,1650,1652,1655,1657,1659,1661,1663],{"class":689,"line":690},[687,1649,694],{"class":693},[687,1651,698],{"class":697},[687,1653,1654],{"class":701}," readFileSync",[687,1656,705],{"class":697},[687,1658,708],{"class":693},[687,1660,711],{"class":697},[687,1662,1069],{"class":714},[687,1664,718],{"class":697},[687,1666,1667,1669,1671,1673,1675,1677,1679,1681,1683,1686],{"class":689,"line":721},[687,1668,694],{"class":693},[687,1670,698],{"class":697},[687,1672,837],{"class":701},[687,1674,1147],{"class":697},[687,1676,1200],{"class":701},[687,1678,705],{"class":697},[687,1680,708],{"class":693},[687,1682,711],{"class":697},[687,1684,1685],{"class":714},"..\u002Fscripts\u002Fexport-errors",[687,1687,718],{"class":697},[687,1689,1690],{"class":689,"line":728},[687,1691,725],{"emptyLinePlaceholder":724},[687,1693,1694,1697,1699,1701,1704,1706,1708,1711,1713],{"class":689,"line":745},[687,1695,1696],{"class":836},"it",[687,1698,866],{"class":701},[687,1700,957],{"class":697},[687,1702,1703],{"class":714},"keeps docs\u002Freference\u002Ferrors.md in sync with the catalog",[687,1705,957],{"class":697},[687,1707,1147],{"class":697},[687,1709,1710],{"class":697}," ()",[687,1712,891],{"class":734},[687,1714,742],{"class":697},[687,1716,1717,1719,1722,1724,1726,1728,1730,1732,1734,1736,1738,1741,1743],{"class":689,"line":758},[687,1718,1222],{"class":734},[687,1720,1721],{"class":701}," committed",[687,1723,1228],{"class":697},[687,1725,1654],{"class":836},[687,1727,866],{"class":748},[687,1729,957],{"class":697},[687,1731,1487],{"class":714},[687,1733,957],{"class":697},[687,1735,1147],{"class":697},[687,1737,711],{"class":697},[687,1739,1740],{"class":714},"utf8",[687,1742,957],{"class":697},[687,1744,1183],{"class":748},[687,1746,1747,1750,1752,1755,1757,1759,1762,1764,1767,1769,1771],{"class":689,"line":769},[687,1748,1749],{"class":836},"  expect",[687,1751,866],{"class":748},[687,1753,1754],{"class":701},"committed",[687,1756,872],{"class":748},[687,1758,860],{"class":697},[687,1760,1761],{"class":836},"toBe",[687,1763,866],{"class":748},[687,1765,1766],{"class":836},"toMarkdown",[687,1768,866],{"class":748},[687,1770,1498],{"class":836},[687,1772,1501],{"class":748},[687,1774,1775,1777],{"class":689,"line":786},[687,1776,1266],{"class":697},[687,1778,1183],{"class":701},[618,1780,1781,1782,1784,1785,1787],{},"A ",[622,1783,633],{}," you rewrite in the catalog now fails CI until the reference is regenerated, which is the direction you want the dependency to run. ",[1551,1786,485],{"href":486}," covers the rest of what a library's suite locks down.",[1789,1790,1791],"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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":683,"searchDepth":721,"depth":721,"links":1793},[1794,1795,1796,1797],{"id":653,"depth":721,"text":654},{"id":1042,"depth":721,"text":1043},{"id":1586,"depth":721,"text":1587},{"id":1635,"depth":721,"text":1636},"Generate your package's error reference from the catalog: a Markdown page for humans, a JSON file for tooling, and an llms.txt section for agents.","md",null,{},{"title":475,"icon":478},{"title":475,"description":1798},"6phRxQOh-l2L740wp-RPMQjZtNGkhtmoMPGpfFYJTCY",[1806,1808],{"title":471,"path":472,"stem":473,"description":1807,"icon":132,"children":-1},"Write why, fix, and link so a model calling your package recovers from the error itself, without a docs round-trip and the tokens it costs.",{"title":480,"path":481,"stem":482,"description":1809,"icon":483,"children":-1},"Convert a package with dozens of bare throws to an evlog catalog in five ordered steps, without a breaking release and without a big-bang rewrite.",1789294039735]