From 1ab770d6af35e1376edb84c8589be0b82ae26cd7 Mon Sep 17 00:00:00 2001
From: Kaylee <65376239+KayleeWilliams@users.noreply.github.com>
Date: Fri, 8 May 2026 21:32:36 -0700
Subject: [PATCH 01/13] Improve docs UX with /docs landing, agent .md, and live
components
- Redirect / to /docs via beforeLoad and remove the Home dashboard
- Add a robot-icon "View as Markdown" toggle in the header that opens
the agent-friendly .md variant of the current docs page
- Wire pipeline:convert into dev/build so leadtype's convertAllMdx
populates apps/example/public/docs/**/*.md before vite starts
- Add a Vite middleware that negotiates Accept: text/markdown on
/docs/* URLs so agents can hit canonical URLs with the right header
- Render Mermaid client-side with @streamdown/mermaid; flatten the
inner Streamdown chart wrapper so it shows as a single card
- Restructure /docs/components into one section per component
(description + usage + live example) so the page is a real
reference and dogfoods the renderer + remark conversion at once
- Wire the NotFound component into router + root route, and update
it to point users back to /docs
---
.gitignore | 1 +
apps/example/package.json | 9 +-
apps/example/playwright.config.ts | 6 +
.../src/components/docs-mdx/mermaid.tsx | 16 +-
apps/example/src/components/not-found.tsx | 28 ++
apps/example/src/components/site-footer.tsx | 2 +-
apps/example/src/components/site-header.tsx | 57 +++-
apps/example/src/lib/docs.ts | 5 -
apps/example/src/router.tsx | 2 +
apps/example/src/routes/__root.tsx | 2 +
apps/example/src/routes/index.tsx | 143 +---------
apps/example/src/styles.css | 13 +-
apps/example/vite.config.ts | 73 ++++-
bun.lock | 3 +
docs/components.mdx | 249 ++++++++++++------
15 files changed, 370 insertions(+), 239 deletions(-)
create mode 100644 apps/example/src/components/not-found.tsx
diff --git a/.gitignore b/.gitignore
index 96fab4f..2338209 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,3 +36,4 @@ yarn-error.log*
# Misc
.DS_Store
*.pem
+.gstack/
diff --git a/apps/example/package.json b/apps/example/package.json
index d707cb5..17c0e26 100644
--- a/apps/example/package.json
+++ b/apps/example/package.json
@@ -4,9 +4,9 @@
"private": true,
"type": "module",
"scripts": {
- "dev": "bun run --filter leadtype build && portless run vite dev",
- "build": "bun run --filter leadtype build && vite build",
- "preview": "portless run vite preview",
+ "dev": "bun run --filter leadtype build && bun run pipeline:convert && PORTLESS_PORT=1355 PORTLESS_HTTPS=0 portless run vite dev",
+ "build": "bun run --filter leadtype build && bun run pipeline:convert && vite build",
+ "preview": "PORTLESS_PORT=1355 PORTLESS_HTTPS=0 portless run vite preview",
"check-types": "tsgo --noEmit",
"test:e2e": "bun run --filter leadtype build && playwright test",
"convert": "bun run pipeline:convert",
@@ -28,15 +28,16 @@
"dependencies": {
"@fontsource-variable/geist": "^5.2.8",
"@fontsource-variable/geist-mono": "^5.2.7",
- "leadtype": "workspace:*",
"@mdx-js/react": "^3.1.1",
"@radix-ui/react-separator": "^1.1.7",
"@radix-ui/react-slot": "^1.2.3",
+ "@streamdown/mermaid": "^1.0.2",
"@tanstack/react-router": "^1.167.4",
"@tanstack/react-start": "^1.166.15",
"ai": "^6.0.168",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
+ "leadtype": "workspace:*",
"nitro": "3.0.260415-beta",
"react": "^19.0.0",
"react-dom": "^19.0.0",
diff --git a/apps/example/playwright.config.ts b/apps/example/playwright.config.ts
index ee595aa..1de72be 100644
--- a/apps/example/playwright.config.ts
+++ b/apps/example/playwright.config.ts
@@ -4,6 +4,7 @@ import { defineConfig, devices } from "@playwright/test";
const isCI = Boolean(process.env.CI);
const HTTPS_PROTOCOL = "https://";
const HTTP_PROTOCOL = "http://";
+const PORTLESS_HTTP_PORT = "1355";
const DEFAULT_BASE_URL = "http://localhost:3000";
function getExampleBaseUrl(): string {
@@ -16,6 +17,11 @@ function getExampleBaseUrl(): string {
try {
portlessUrl = execFileSync("portless", ["get", "example"], {
encoding: "utf8",
+ env: {
+ ...process.env,
+ PORTLESS_HTTPS: "0",
+ PORTLESS_PORT: PORTLESS_HTTP_PORT,
+ },
maxBuffer: 10 * 1024 * 1024,
timeout: 5000,
}).trim();
diff --git a/apps/example/src/components/docs-mdx/mermaid.tsx b/apps/example/src/components/docs-mdx/mermaid.tsx
index c8b64b4..a58e7d2 100644
--- a/apps/example/src/components/docs-mdx/mermaid.tsx
+++ b/apps/example/src/components/docs-mdx/mermaid.tsx
@@ -1,20 +1,20 @@
+"use client";
+
+import { mermaid } from "@streamdown/mermaid";
import type { ReactNode } from "react";
+import { Streamdown } from "streamdown";
export interface MermaidProps {
chart?: string;
children?: ReactNode;
}
-/**
- * Placeholder Mermaid renderer. Emits a `
` block so
- * consumer apps can hydrate it with their preferred mermaid client
- * (mermaid.js, react-mermaid2, etc.) or style it as-is.
- */
export function Mermaid({ chart, children }: MermaidProps) {
const source = chart ?? (typeof children === "string" ? children : "");
+ const markdown = `\`\`\`mermaid\n${source}\n\`\`\``;
return (
-
- {source}
-
+
+ {markdown}
+
);
}
diff --git a/apps/example/src/components/not-found.tsx b/apps/example/src/components/not-found.tsx
new file mode 100644
index 0000000..1317d25
--- /dev/null
+++ b/apps/example/src/components/not-found.tsx
@@ -0,0 +1,28 @@
+import { Link } from "@tanstack/react-router";
+import { SiteFooter } from "@/components/site-footer";
+import { SiteHeader } from "@/components/site-header";
+
+export function NotFound() {
+ return (
+
+
+
+ 404
+
+ Page not found
+
+
+ We couldn't find that page. Check the URL, or head back to the
+ reference app.
+
+
+ Back to docs
+
+
+
+
+ );
+}
diff --git a/apps/example/src/components/site-footer.tsx b/apps/example/src/components/site-footer.tsx
index 9c1f731..ff1f890 100644
--- a/apps/example/src/components/site-footer.tsx
+++ b/apps/example/src/components/site-footer.tsx
@@ -1,6 +1,6 @@
const footerLinks = [
{
- href: "https://github.com/inthhq/docs",
+ href: "https://github.com/inthhq/leadtype",
label: "GitHub",
},
{
diff --git a/apps/example/src/components/site-header.tsx b/apps/example/src/components/site-header.tsx
index e121769..b987782 100644
--- a/apps/example/src/components/site-header.tsx
+++ b/apps/example/src/components/site-header.tsx
@@ -5,23 +5,76 @@ import { navigationRoutes } from "@/lib/docs";
import { cn } from "@/lib/utils";
import { SearchBar } from "./search-bar";
+function RobotIcon() {
+ return (
+
+
+
+
+
+
+
+
+ );
+}
+
+const TRAILING_SLASH_PATTERN = /\/$/;
+
+function markdownHrefForPath(pathname: string): string | null {
+ if (!(pathname === "/docs" || pathname.startsWith("/docs/"))) {
+ return null;
+ }
+ if (pathname.endsWith(".md")) {
+ return null;
+ }
+ if (pathname === "/docs") {
+ return "/docs/index.md";
+ }
+ return `${pathname.replace(TRAILING_SLASH_PATTERN, "")}.md`;
+}
+
export function SiteHeader() {
const pathname = useRouterState({
select: (state) => state.location.pathname,
});
+ const markdownHref = markdownHrefForPath(pathname);
return (
leadtype
-
+
+ {markdownHref && (
+
+
+ View as Markdown
+
+ )}
{navigationRoutes.map((route) => (
{
+ throw redirect({ to: "/docs" });
+ },
});
-
-function HomeRoute() {
- const startRoutes = navigationRoutes.filter((route) =>
- START_ROUTE_PATHS.has(route.to)
- );
-
- return (
-
-
-
-
-
-
- Runtime docs, pipeline fixtures, and search demos
-
-
- Build docs with Leadtype
-
-
- Framework-neutral MDX conversion, LLM bundles, docs linting, and
- static search. This app owns its MDX components while rendering
- the package docs and keeping integration paths easy to test.
-
-
- {startRoutes.map((route) => (
-
-
- {route.label}
-
-
- {route.description}
-
-
- ))}
-
-
-
-
-
-
- Implementation contract
-
-
- Define the MDX component map in the docs app and spread it
- into your MDX provider. The package owns conversion and
- generation, not prebuilt UI.
-
-
-
- Open docs
-
-
-
- {`import { mdxComponents } from "@/components/docs-mdx";
-
-export const components = {
- ...mdxComponents,
-};`}
-
-
-
-
-
-
-
- Package surfaces
-
-
- The demo documents every public entry point so consumers can pick
- the smallest import path for their implementation.
-
-
-
-
-
-
- Import
- Use
-
- Description
-
-
-
-
- {packageSurfaces.map((surface) => (
-
-
- {surface.importPath}
-
-
-
- {surface.lifecycle}
-
-
-
- {surface.description}
-
-
- ))}
-
-
-
-
-
-
-
-
- Smoke coverage
-
-
- The app is also a regression harness for server rendering,
- hydration, conversion, generated search data, and agent docs.
-
-
-
-
-
-
-
- );
-}
diff --git a/apps/example/src/styles.css b/apps/example/src/styles.css
index c19cac6..cc0096a 100644
--- a/apps/example/src/styles.css
+++ b/apps/example/src/styles.css
@@ -399,8 +399,17 @@
}
[data-leadtype-mermaid] {
- font-family: var(--font-mono);
- @apply my-6 overflow-x-auto rounded-lg border border-border bg-secondary px-4 py-4 text-sm;
+ @apply my-6;
+}
+
+[data-leadtype-mermaid] [data-streamdown="mermaid-block"] {
+ @apply my-0;
+}
+
+[data-leadtype-mermaid]
+ [data-streamdown="mermaid-block"]
+ > div:has(> [data-streamdown="mermaid"]) {
+ @apply rounded-none border-none bg-transparent;
}
[data-leadtype-type-table],
diff --git a/apps/example/vite.config.ts b/apps/example/vite.config.ts
index d94236b..7fab73a 100644
--- a/apps/example/vite.config.ts
+++ b/apps/example/vite.config.ts
@@ -6,7 +6,7 @@ import type { Root } from "mdast";
import { nitro } from "nitro/vite";
import remarkFrontmatter from "remark-frontmatter";
import remarkGfm from "remark-gfm";
-import { defineConfig, searchForWorkspaceRoot } from "vite";
+import { defineConfig, type PluginOption, searchForWorkspaceRoot } from "vite";
import viteTsConfigPaths from "vite-tsconfig-paths";
function stripYamlFrontmatter() {
@@ -20,13 +20,84 @@ function stripYamlFrontmatter() {
};
}
+const MARKDOWN_ACCEPT_PATTERN = /text\/(markdown|plain)/i;
+const HTML_ACCEPT_PATTERN = /text\/html/i;
+const MARKDOWN_Q_PATTERN = /text\/(markdown|plain)\s*;?\s*q=/i;
+const TRAILING_SLASH_PATTERN = /\/$/;
+
+function rewriteToMarkdown(
+ url: string,
+ accept: string | undefined
+): string | null {
+ if (!accept) {
+ return null;
+ }
+ const pathname = url.split("?")[0] ?? url;
+ if (pathname.endsWith(".md")) {
+ return null;
+ }
+ if (!(pathname === "/docs" || pathname.startsWith("/docs/"))) {
+ return null;
+ }
+ if (!MARKDOWN_ACCEPT_PATTERN.test(accept)) {
+ return null;
+ }
+ if (HTML_ACCEPT_PATTERN.test(accept) && !MARKDOWN_Q_PATTERN.test(accept)) {
+ // Browsers send `text/html,application/xhtml+xml,...` — never serve markdown to them.
+ return null;
+ }
+ const target =
+ pathname === "/docs"
+ ? "/docs/index.md"
+ : `${pathname.replace(TRAILING_SLASH_PATTERN, "")}.md`;
+ return (
+ target + (url.length > pathname.length ? url.slice(pathname.length) : "")
+ );
+}
+
+function markdownNegotiation(): PluginOption {
+ const middleware = (
+ req: {
+ url?: string;
+ headers: Record;
+ },
+ _res: unknown,
+ next: () => void
+ ) => {
+ if (!req.url) {
+ next();
+ return;
+ }
+ const acceptHeader = req.headers.accept;
+ const accept = Array.isArray(acceptHeader)
+ ? acceptHeader.join(",")
+ : acceptHeader;
+ const rewritten = rewriteToMarkdown(req.url, accept);
+ if (rewritten) {
+ req.url = rewritten;
+ }
+ next();
+ };
+ return {
+ name: "leadtype:markdown-negotiation",
+ configureServer(server) {
+ server.middlewares.use(middleware);
+ },
+ configurePreviewServer(server) {
+ server.middlewares.use(middleware);
+ },
+ };
+}
+
export default defineConfig({
server: {
+ allowedHosts: [".localhost"],
fs: {
allow: [searchForWorkspaceRoot(process.cwd())],
},
},
plugins: [
+ markdownNegotiation(),
nitro(),
viteTsConfigPaths({
projects: ["./tsconfig.json"],
diff --git a/bun.lock b/bun.lock
index 0d13c36..633e2d9 100644
--- a/bun.lock
+++ b/bun.lock
@@ -27,6 +27,7 @@
"@mdx-js/react": "^3.1.1",
"@radix-ui/react-separator": "^1.1.7",
"@radix-ui/react-slot": "^1.2.3",
+ "@streamdown/mermaid": "^1.0.2",
"@tanstack/react-router": "^1.167.4",
"@tanstack/react-start": "^1.166.15",
"ai": "^6.0.168",
@@ -501,6 +502,8 @@
"@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="],
+ "@streamdown/mermaid": ["@streamdown/mermaid@1.0.2", "", { "dependencies": { "mermaid": "^11.12.2" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0" } }, "sha512-Fr/4sBWnAeSnxM3PcrV/+DiZe5oPMq9gOkUIAH7ZauJeuwrZ/DVzD4g0zlav6AH0axh2m/sOfrfLtY5aLT7niw=="],
+
"@tailwindcss/node": ["@tailwindcss/node@4.2.4", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.19.0", "jiti": "^2.6.1", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.2.4" } }, "sha512-Ai7+yQPxz3ddrDQzFfBKdHEVBg0w3Zl83jnjuwxnZOsnH9pGn93QHQtpU0p/8rYWxvbFZHneni6p1BSLK4DkGA=="],
"@tailwindcss/oxide": ["@tailwindcss/oxide@4.2.4", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.2.4", "@tailwindcss/oxide-darwin-arm64": "4.2.4", "@tailwindcss/oxide-darwin-x64": "4.2.4", "@tailwindcss/oxide-freebsd-x64": "4.2.4", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.4", "@tailwindcss/oxide-linux-arm64-gnu": "4.2.4", "@tailwindcss/oxide-linux-arm64-musl": "4.2.4", "@tailwindcss/oxide-linux-x64-gnu": "4.2.4", "@tailwindcss/oxide-linux-x64-musl": "4.2.4", "@tailwindcss/oxide-wasm32-wasi": "4.2.4", "@tailwindcss/oxide-win32-arm64-msvc": "4.2.4", "@tailwindcss/oxide-win32-x64-msvc": "4.2.4" } }, "sha512-9El/iI069DKDSXwTvB9J4BwdO5JhRrOweGaK25taBAvBXyXqJAX+Jqdvs8r8gKpsI/1m0LeJLyQYTf/WLrBT1Q=="],
diff --git a/docs/components.mdx b/docs/components.mdx
index 45b94e5..0fbf4c8 100644
--- a/docs/components.mdx
+++ b/docs/components.mdx
@@ -14,26 +14,9 @@ The package only assumes a small authoring contract for MDX component names so t
Define your own `mdxComponents` map in the docs app. The example app keeps its implementation under `apps/example/src/components/docs-mdx`.
-Common component names handled by the default remark pipeline include:
-
-- `Accordion`
-- `AccordionItem`
-- `ExtractedTypeTable`
-- `Callout`
-- `Card`
-- `Cards`
-- `Example`
-- `Mermaid`
-- `CommandTabs`
-- `Selector`
-- `Step`
-- `Steps`
-- `Tab`
-- `Tabs`
-- `TopicSwitcher`
-- `TypeTable`
-
-Use it like this:
+The remark pipeline knows how to flatten the following names: `Accordion`, `AccordionItem`, `Callout`, `Card`, `Cards`, `CommandTabs`, `Example`, `ExtractedTypeTable`, `Mermaid`, `Selector`, `Step`, `Steps`, `Tab`, `Tabs`, `TopicSwitcher`, `TypeTable`.
+
+Wire them up like this:
```tsx
import { mdxComponents } from "@/components/docs-mdx";
@@ -45,44 +28,184 @@ const components = {
If your app uses different names, add custom remark plugins or adapter components that map authored MDX back to the names handled by the pipeline.
-## Important Components
+## Component Reference
+
+Each section below describes a component, shows its source, and renders a live example. Switch to the agent view (the robot icon in the header) to compare against the flattened markdown the remark pipeline produces.
-### `Accordion` and `AccordionItem`
+### Callout
-Use for secondary details that should be collapsible in the browser but still available to markdown conversion, search, and LLM bundles.
+Wraps supporting context, warnings, or tips. Variants like `info`, `warning`, `success`, `error`, and `tip` change styling but flatten identically into blockquotes.
```tsx
-
-
- Use accordions for supporting details, troubleshooting notes, and optional reference material.
-
-
+
+ Body content goes here.
+
+```
+
+
+ Callouts wrap supporting context, warnings, or tips. The remark pipeline flattens them into blockquotes so agents still see the content.
+
+
+
+ Variants like `warning`, `success`, `error`, and `tip` change the styling but flatten identically.
+
+
+### Cards
+
+Layout primitive for short, linked entry points. The remark pipeline flattens cards into a bullet list of links.
+
+```tsx
+
+
+
```
-Closed content is still flattened by the remark pipeline, so do not use accordions to hide content from generated outputs.
+
+
+
+
+
-### `CommandTabs`
+### Steps
-Use for package-manager-specific install or run commands.
+Numbered walkthroughs. The remark pipeline emits an ordered markdown list with bold step titles.
+
+```tsx
+
+ Use the components in this list.
+ `leadtype generate` writes flattened markdown.
+
+```
+
+
+
+ Use the components in this list as authoring affordances.
+
+
+ `leadtype generate` (or `bun run pipeline:convert` in this app) writes flattened markdown to `public/docs`.
+
+
+ HTML for humans, `.md` for agents — same URL, content negotiated by the `Accept` header.
+
+
+
+### Tabs
+
+Authoring affordance for grouping equivalent content. The remark pipeline flattens each tab into a bold heading followed by its content so agents do not need a JSX-aware renderer.
+
+```tsx
+
+ …
+ …
+ …
+
+```
+
+
+
+ Use a Vite middleware (dev/preview) and a Nitro middleware (prod) to negotiate the `Accept` header.
+
+
+ Wire content negotiation in middleware.ts and serve `.md` from a route handler.
+
+
+ A `configureServer` middleware is enough for static deployments where `.md` files live in `public/`.
+
+
+
+### CommandTabs
+
+Package-manager-aware install or run commands. The remark pipeline expands them into a markdown table with one row per manager.
+
+Use `mode="install"` when `command` is a package name, `mode="run"` when `command` is a CLI name, and `mode="create"` for starter commands such as `pnpm create next-app`. `command` can also include a `{pm}` placeholder for custom templates. Use the `commands` prop for exact per-manager overrides and `defaultManager` to choose the initial tab.
```tsx
-
```
-Use `mode="install"` when `command` is a package name, `mode="run"` when `command` is a CLI name, and `mode="create"` for starter commands such as `pnpm create next-app`. `command` can also include a `{pm}` placeholder for custom templates. Use `commands` for exact per-manager overrides and `defaultManager` to choose the initial tab.
+
+
+
+
+### Accordion
+
+Collapsible details for secondary content. The remark pipeline ignores the open/closed state and flattens every item, so accordions are not a place to hide content from agents.
+
+```tsx
+
+
+ Use them for supporting details and optional reference material.
+
+
+```
+
+
+
+ Use them for supporting details, troubleshooting notes, and optional reference material. Closed content is still flattened by the remark pipeline.
+
+
+ No. Conversion ignores the open/closed state and emits everything inside.
+
+
+
+### TopicSwitcher
+
+Reader-facing navigation across equivalent docs topics. Frameworks are one common use, but the same component can represent SDKs, runtimes, deployment targets, or product areas. It does not automatically read LLM topic config.
+
+```tsx
+
+```
+
+
-### `Example`
+### TypeTable and ExtractedTypeTable
-Use for data-driven preview and source examples. The app-owned component receives code as data; host apps can add filesystem loaders or dynamic imports outside `leadtype` when they need app-specific behavior.
+`TypeTable` is for explicit prop or type rows you already know. `ExtractedTypeTable` extracts types from source files at conversion time.
+
+`ExtractedTypeTable` is the most path-sensitive component in the set. If it needs to resolve project files, pair it with the matching remark plugin configuration and set a stable base path.
+
+```tsx
+
+```
+
+
+
+### Example
+
+Data-driven preview and source examples. The app-owned component receives code as data; host apps can add filesystem loaders or dynamic imports outside `leadtype` when they need app-specific behavior.
+
+Use `sourceFiles` when an example needs to show supporting files in addition to the primary snippet.
```tsx
The host app owns styling and runtime components while `leadtype` owns conversion.
@@ -102,44 +221,20 @@ export const components = {
```
-Use `sourceFiles` when an example needs to show supporting files in addition to the primary snippet.
-
-### `TypeTable` and `ExtractedTypeTable`
-
-Use `TypeTable` for explicit prop or type rows you already know. Use `ExtractedTypeTable` when the docs should extract types from source files.
+### Mermaid
-`ExtractedTypeTable` is the most path-sensitive component in the set. If it needs to resolve project files, pair it with the matching remark plugin configuration and set a stable base path.
-
-### `Tabs`, `Tab`, `Steps`, `Step`
-
-These component names are primarily authoring affordances in MDX. When the markdown conversion pipeline runs, their content is flattened into standard markdown so agents do not need JSX-aware renderers.
-
-### `TopicSwitcher`
-
-Use for reader-facing navigation across equivalent documentation topics.
+Diagrams authored as plain text. Renders client-side into an interactive SVG with zoom, pan, and download controls. The remark pipeline preserves the source as a fenced ` ```mermaid ` block so agents see the diagram in a portable form.
```tsx
-
+|remark| Markdown
+ Markdown -->|llms.txt| Agents`} />
```
-`TopicSwitcher` is intentionally generic. Frameworks are one topic category, but the same component can represent SDKs, runtimes, deployment targets, product areas, or other equivalent slices of docs. It does not automatically read LLM topic config.
+|remark| Markdown
+ Markdown -->|search index| API
+ Markdown -->|llms.txt| Agents`} />
## Guidance
From d91e7b715412700836efe8eaeb589d2b4c6bcb15 Mon Sep 17 00:00:00 2001
From: Kaylee <65376239+KayleeWilliams@users.noreply.github.com>
Date: Fri, 8 May 2026 22:21:40 -0700
Subject: [PATCH 02/13] Restructure docs around two hero paths and add concept
layer
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Full rewrite of /docs into Get Started → Authoring → Build → Reference.
Adds quickstart, how-it-works, frontmatter, validate-in-ci, and CLI
reference pages. Every page leads with the problem it solves; mermaid
diagrams carry the conceptual load (headline flow, pipeline internals,
group resolution, plugin order, both build journeys). READMEs aligned
with the new narrative.
Anchor `build` in .gitignore to repo root so docs/build/ and route
build/ directories aren't shadowed by the generic build-output rule.
Updates CLI integration tests to match the new IA (build/ replaces
guides/).
---
.gitignore | 2 +-
README.md | 157 +++----
apps/example/src/generated/docs-nav.json | 243 +++++------
.../src/generated/docs-search-content.json | 2 +-
.../src/generated/docs-search-index.json | 2 +-
apps/example/src/routeTree.gen.ts | 390 +++++++++++-------
.../docs/{ => authoring}/components.tsx | 4 +-
.../src/routes/docs/authoring/frontmatter.tsx | 12 +
.../{guides => build}/bundle-package-docs.tsx | 4 +-
.../{guides => build}/connect-docs-site.tsx | 4 +-
.../src/routes/docs/build/validate-in-ci.tsx | 12 +
apps/example/src/routes/docs/how-it-works.tsx | 12 +
apps/example/src/routes/docs/quickstart.tsx | 12 +
.../example/src/routes/docs/reference/cli.tsx | 12 +
.../routes/docs/{ => reference}/convert.tsx | 4 +-
.../src/routes/docs/{ => reference}/lint.tsx | 4 +-
.../src/routes/docs/{ => reference}/llm.tsx | 4 +-
.../routes/docs/{ => reference}/remark.tsx | 4 +-
.../src/routes/docs/reference/search.tsx | 12 +
apps/example/src/routes/docs/search.tsx | 12 -
docs/{ => authoring}/components.mdx | 89 ++--
docs/authoring/frontmatter.mdx | 109 +++++
docs/build/bundle-package-docs.mdx | 117 ++++++
docs/build/connect-docs-site.mdx | 139 +++++++
docs/build/validate-in-ci.mdx | 85 ++++
docs/convert.mdx | 84 ----
docs/docs.config.ts | 81 ++--
docs/guides/bundle-package-docs.mdx | 92 -----
docs/guides/connect-docs-site.mdx | 107 -----
docs/how-it-works.mdx | 143 +++++++
docs/index.mdx | 80 ++--
docs/lint.mdx | 191 ---------
docs/llm.mdx | 100 -----
docs/methodology.mdx | 57 ++-
docs/quickstart.mdx | 98 +++++
docs/reference/cli.mdx | 115 ++++++
docs/reference/convert.mdx | 91 ++++
docs/reference/lint.mdx | 168 ++++++++
docs/reference/llm.mdx | 137 ++++++
docs/reference/remark.mdx | 105 +++++
docs/reference/search.mdx | 153 +++++++
docs/remark.mdx | 74 ----
docs/search.mdx | 223 ----------
packages/leadtype/README.md | 201 +++------
packages/leadtype/src/cli.test.ts | 20 +-
45 files changed, 2170 insertions(+), 1597 deletions(-)
rename apps/example/src/routes/docs/{ => authoring}/components.tsx (53%)
create mode 100644 apps/example/src/routes/docs/authoring/frontmatter.tsx
rename apps/example/src/routes/docs/{guides => build}/bundle-package-docs.tsx (53%)
rename apps/example/src/routes/docs/{guides => build}/connect-docs-site.tsx (53%)
create mode 100644 apps/example/src/routes/docs/build/validate-in-ci.tsx
create mode 100644 apps/example/src/routes/docs/how-it-works.tsx
create mode 100644 apps/example/src/routes/docs/quickstart.tsx
create mode 100644 apps/example/src/routes/docs/reference/cli.tsx
rename apps/example/src/routes/docs/{ => reference}/convert.tsx (53%)
rename apps/example/src/routes/docs/{ => reference}/lint.tsx (53%)
rename apps/example/src/routes/docs/{ => reference}/llm.tsx (54%)
rename apps/example/src/routes/docs/{ => reference}/remark.tsx (53%)
create mode 100644 apps/example/src/routes/docs/reference/search.tsx
delete mode 100644 apps/example/src/routes/docs/search.tsx
rename docs/{ => authoring}/components.mdx (51%)
create mode 100644 docs/authoring/frontmatter.mdx
create mode 100644 docs/build/bundle-package-docs.mdx
create mode 100644 docs/build/connect-docs-site.mdx
create mode 100644 docs/build/validate-in-ci.mdx
delete mode 100644 docs/convert.mdx
delete mode 100644 docs/guides/bundle-package-docs.mdx
delete mode 100644 docs/guides/connect-docs-site.mdx
create mode 100644 docs/how-it-works.mdx
delete mode 100644 docs/lint.mdx
delete mode 100644 docs/llm.mdx
create mode 100644 docs/quickstart.mdx
create mode 100644 docs/reference/cli.mdx
create mode 100644 docs/reference/convert.mdx
create mode 100644 docs/reference/lint.mdx
create mode 100644 docs/reference/llm.mdx
create mode 100644 docs/reference/remark.mdx
create mode 100644 docs/reference/search.mdx
delete mode 100644 docs/remark.mdx
delete mode 100644 docs/search.mdx
diff --git a/.gitignore b/.gitignore
index 2338209..6aae50c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,7 +24,7 @@ coverage
# Build Outputs
.next/
out/
-build
+/build
dist
diff --git a/README.md b/README.md
index 38ec227..32d260d 100644
--- a/README.md
+++ b/README.md
@@ -1,132 +1,85 @@
# leadtype
-Shared docs tooling for any docs app: framework-neutral MDX-to-markdown conversion, LLM bundles, validation, and static search.
-
-`leadtype` is split into focused public entry points:
-
-- `leadtype/remark`: remark plugins plus `defaultRemarkPlugins`
-- `leadtype/convert`: MDX-to-markdown conversion APIs
-- `leadtype/llm`: `llms.txt` and topic-scoped full-context generation
-- `leadtype/search`: search runtime, content readers, guards, and rate limiter helpers
-- `leadtype/search/node`: Node-only search index generation
-- `leadtype/search/vercel`: Vercel AI Gateway / AI SDK answer streaming and bash tools
-- `leadtype/search/tanstack`: TanStack AI answer streaming and bash tools
-- `leadtype/search/cloudflare`: Cloudflare AI Gateway / Workers AI adapter helpers and bash tools
-- `leadtype/lint`: docs validation and the `leadtype lint` CLI
-
-## Install
-
-```bash
-pnpm add leadtype
+A docs pipeline. Write MDX once. Get a website, agent-readable bundles, and a static search index from a single command.
+
+```mermaid
+flowchart LR
+ src["docs/*.mdx"]
+ pipe["leadtype generate"]
+ md["clean markdown"]
+ llm["llms.txt + llms-full/*.txt"]
+ idx["search-index.json"]
+ nav["navigation tree"]
+ site["docs website (humans)"]
+ agent["agents · IDEs · CLIs"]
+ search["search UI · AI answers"]
+ src --> pipe
+ pipe --> md
+ pipe --> llm
+ pipe --> idx
+ pipe --> nav
+ md --> site
+ md --> agent
+ llm --> agent
+ idx --> search
+ nav --> site
```
-## Basic Usage
-
-### Own MDX components in your app
-
-`leadtype` does not export prebuilt React, Vue, Nuxt, Svelte, or Astro components. Define the MDX component map in the docs app that renders your pages.
-
-## Live Example App
+leadtype is **not a docs website framework**. Bring your own UI — Next.js, TanStack Start, Astro, anything — and let leadtype handle conversion, validation, search, and the agent-facing outputs that website frameworks don't ship.
-The repo includes a canonical consumer demo at `apps/example`.
+## Choose your path
-- Renders real `.mdx` fixture files through app-owned `mdxComponents`.
-- Uses TanStack Start for SSR and hydration coverage.
-- Shows extracted `ExtractedTypeTable` output while keeping pipeline fixtures in the validation path.
+- **[Build a docs site](https://docs.example.com/docs/build/connect-docs-site)** — wire leadtype into your build to convert MDX, index search, and serve markdown to agents.
+- **[Bundle docs into your package](https://docs.example.com/docs/build/bundle-package-docs)** — ship agent-readable docs inside the npm tarball so IDEs and coding agents can read them offline.
-Local workflow:
+## Install
```bash
-bun install
-bun run dev
+pnpm add leadtype
```
-Pipeline and browser checks:
+## 30-second example
```bash
-bun run --filter example pipeline:build
-bun run --filter example pipeline:test
-bun run --filter example test:e2e
+# In a repo with docs/*.mdx
+npx leadtype generate --src . --out public --base-url https://docs.example.com
```
-Validation layers:
-
-- Package unit tests in `packages/leadtype/src/**/*.test.ts*` cover framework-neutral conversion, search, linting, and generated docs behavior.
-- Pipeline fixtures in `apps/example/scripts` and `apps/example/content` cover MDX conversion, LLM generation, and `ExtractedTypeTable`.
-- The TanStack Start demo app in `apps/example/src` covers real browser rendering and hydration.
-
-## Where This Fits
-
-`leadtype` is not a hosted docs platform or a complete docs-site framework. Use tools such as Mintlify, Fumadocs, or Starlight when the primary job is shipping a polished docs website quickly.
+This converts every `.mdx` under `docs/`, writes `public/llms.txt` plus per-leaf `public/docs/llms-full/*.txt`, builds `public/docs/search-index.json`, and resolves the navigation tree.
-Use this package when the primary job is shared docs infrastructure: MDX-to-markdown conversion, LLM bundles, linting, static search artifacts, answer helpers, and agent-facing docs output that can feed multiple apps and tools.
+See [`apps/example/`](./apps/example) for the canonical docs-site setup, including content negotiation that serves markdown to agents on the same URL humans visit. See [`packages/leadtype/scripts/generate-docs.ts`](./packages/leadtype/scripts/generate-docs.ts) for the canonical "bundle docs into a package" pattern.
-The pipeline entry points are framework-neutral. React, Vue, Nuxt, Svelte, Astro, and other stacks can use conversion, LLM, lint, and search APIs while owning their own runtime component rendering.
+## Documentation
-## Wiring It Into An App
+Full docs at [docs.example.com](https://docs.example.com/docs):
-In a c15t-style repo with a top-level `docs/` directory, wire `leadtype` into the docs app and docs scripts:
+- [Quickstart](https://docs.example.com/docs/quickstart)
+- [How it works](https://docs.example.com/docs/how-it-works)
+- [Frontmatter](https://docs.example.com/docs/authoring/frontmatter)
+- [CLI reference](https://docs.example.com/docs/reference/cli)
+- [Methodology](https://docs.example.com/docs/methodology) — how leadtype differs from Fumadocs, Starlight, and Mintlify
-- The docs app owns `mdxComponents` if it renders MDX directly.
-- A conversion script runs `convertAllMdx({ srcDir: process.cwd(), outDir: "public" })`.
-- LLM and search scripts read the converted markdown under `public/docs/`.
-- Product code does not import `leadtype` unless it also renders docs pages.
+## Repo layout
-### Convert MDX to markdown
+- `packages/leadtype/` — the npm package (CLI + library entry points).
+- `apps/example/` — production docs site and reference template, on TanStack Start.
+- `docs/` — the source MDX rendered by both this site and the package's bundled docs.
-```ts
-import { convertAllMdx } from "leadtype/convert";
-import { defaultRemarkPlugins, remarkInclude } from "leadtype/remark";
-
-await convertAllMdx({
- srcDir: "content",
- outDir: "public",
- remarkPlugins: [remarkInclude, ...defaultRemarkPlugins],
-});
-```
-
-### Generate agent-facing docs bundles
-
-```ts
-import { generateLLMFullContextFiles, generateLlmsTxt } from "leadtype/llm";
-```
-
-Source MDX for the package's own docs lives at the repo root in `/docs` (with `meta.json`). Run the docs generator locally with:
+## Local workflow
```bash
-LEADTYPE_AGENT_BASE_URL=https://docs.example.com/leadtype bun run --filter leadtype docs:generate
+bun install
+bun run dev # build the package, run the pipeline, start the example app
```
-This converts `/docs/*.mdx` into `packages/leadtype/docs/` (markdown, `llms.txt`, `llms-full.txt`, `llms-full/`). The output folder is gitignored and produced fresh at build time; only the converted output ships in the published tarball — the `.mdx` source does not.
-
-### Generate a static search index
-
-```ts
-import { generateDocsSearchFiles } from "leadtype/search/node";
+Pipeline checks:
-await generateDocsSearchFiles({
- outDir: "public",
- baseUrl: "https://docs.example.com",
-});
+```bash
+bun run --filter example pipeline:build
+bun run --filter example pipeline:test
+bun run --filter example test:e2e
```
-At runtime, query the generated JSON with `leadtype/search`. Add a provider entrypoint such as `leadtype/search/vercel` only when a user explicitly asks for a source-grounded answer.
-
-## Agent Docs
-
-The package ships a small, topic-scoped agent reference bundle in `docs/`:
-
-- `docs/llms.txt`: routing index
-- `docs/components.md`
-- `docs/convert.md`
-- `docs/remark.md`
-- `docs/llm.md`
-- `docs/search.md`
-- `docs/lint.md`
-
-Set `LEADTYPE_AGENT_BASE_URL` to the hosted docs base before generating publishable `llms*.txt` files.
-For the example app generator, base URL precedence is `LEADTYPE_AGENT_BASE_URL`, then generic deployment `BASE_URL`, then `PORTLESS_URL`, then the local default.
-
-## Repo Skill
+## License
-This repo also includes a local agent skill at `.agents/skills/leadtype/SKILL.md`. It routes agents to the packaged `docs` bundle in `node_modules/leadtype/docs` and falls back to the local workspace copy at `packages/leadtype/docs/` when the package is not installed.
+MIT.
diff --git a/apps/example/src/generated/docs-nav.json b/apps/example/src/generated/docs-nav.json
index f09184b..da9edd5 100644
--- a/apps/example/src/generated/docs-nav.json
+++ b/apps/example/src/generated/docs-nav.json
@@ -1,195 +1,164 @@
{
"groups": [
{
- "slug": "overview",
+ "slug": "get-started",
"segmentPath": [
- "overview"
+ "get-started"
],
- "title": "Overview",
- "description": "Start here for package scope and surface selection.",
+ "title": "Get Started",
+ "description": "What leadtype is, how it fits together, and the five-minute happy path.",
"pages": [
{
"urlPath": "/docs",
"title": "Leadtype",
- "description": "Reference map for the shared MDX conversion, linting, and LLM doc-generation package.",
+ "description": "One MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.",
"groups": [
- "overview"
+ "get-started"
+ ]
+ },
+ {
+ "urlPath": "/docs/how-it-works",
+ "title": "How it works",
+ "description": "The mental model: one MDX source, a remark pipeline, four artifacts, three audiences.",
+ "groups": [
+ "get-started"
]
},
{
"urlPath": "/docs/methodology",
"title": "Methodology",
- "description": "How leadtype differs from Fumadocs, Mintlify, and Starlight",
+ "description": "How leadtype differs from Fumadocs, Starlight, and Mintlify.",
+ "groups": [
+ "get-started"
+ ]
+ },
+ {
+ "urlPath": "/docs/quickstart",
+ "title": "Quickstart",
+ "description": "Install leadtype, run it against a docs folder, and inspect the four artifacts it produces.",
"groups": [
- "overview"
+ "get-started"
]
}
],
"children": []
},
{
- "slug": "guides",
+ "slug": "authoring",
"segmentPath": [
- "guides"
+ "authoring"
],
- "title": "Guides",
- "description": "Practical ways to wire leadtype into docs apps.",
+ "title": "Authoring",
+ "description": "The content contract: frontmatter, groups, and the MDX components the pipeline can flatten.",
"pages": [
{
- "urlPath": "/docs/guides/bundle-package-docs",
- "title": "Bundle docs into a package",
- "description": "How to ship generated agent docs inside an npm package.",
+ "urlPath": "/docs/authoring/components",
+ "title": "Components",
+ "description": "MDX components the pipeline knows how to flatten into agent-readable markdown.",
"groups": [
- "guides"
+ "authoring"
]
},
{
- "urlPath": "/docs/guides/connect-docs-site",
- "title": "Connect a docs site",
- "description": "How to run the leadtype pipeline before building a docs app.",
+ "urlPath": "/docs/authoring/frontmatter",
+ "title": "Frontmatter",
+ "description": "Required fields, group semantics, and how authored MDX becomes a navigation tree.",
"groups": [
- "guides"
+ "authoring"
]
}
],
"children": []
},
{
- "slug": "authoring",
+ "slug": "build",
"segmentPath": [
- "authoring"
+ "build"
],
- "title": "Authoring And Rendering",
- "description": "React MDX components and remark pipeline behavior.",
- "pages": [],
- "children": [
+ "title": "Build",
+ "description": "Two journeys: ship docs inside an npm package, or wire leadtype into a docs site.",
+ "pages": [
{
- "slug": "components",
- "segmentPath": [
- "authoring",
- "components"
- ],
- "title": "Components",
- "description": "React MDX component adapters.",
- "pages": [
- {
- "urlPath": "/docs/components",
- "title": "Components",
- "description": "How to define app-owned MDX components that the leadtype pipeline can flatten.",
- "groups": [
- "components"
- ]
- }
- ],
- "children": []
+ "urlPath": "/docs/build/bundle-package-docs",
+ "title": "Bundle docs into a package",
+ "description": "Ship agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.",
+ "groups": [
+ "build"
+ ]
},
{
- "slug": "remark",
- "segmentPath": [
- "authoring",
- "remark"
- ],
- "title": "Remark",
- "description": "Default plugins and conversion helpers.",
- "pages": [
- {
- "urlPath": "/docs/remark",
- "title": "Remark",
- "description": "Reference for the remark plugins and default plugin pipeline exported by leadtype.",
- "groups": [
- "remark"
- ]
- }
- ],
- "children": []
+ "urlPath": "/docs/build/connect-docs-site",
+ "title": "Connect a docs site",
+ "description": "Wire leadtype into a docs app build so it serves humans, agents, and search from one source.",
+ "groups": [
+ "build"
+ ]
+ },
+ {
+ "urlPath": "/docs/build/validate-in-ci",
+ "title": "Validate in CI",
+ "description": "Run leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.",
+ "groups": [
+ "build"
+ ]
}
- ]
+ ],
+ "children": []
},
{
- "slug": "generation",
+ "slug": "reference",
"segmentPath": [
- "generation"
+ "reference"
],
- "title": "Generation",
- "description": "MDX conversion, LLM output generation, and search.",
- "pages": [],
- "children": [
+ "title": "Reference",
+ "description": "CLI flags, conversion APIs, remark plugins, LLM bundles, search, and lint rules.",
+ "pages": [
+ {
+ "urlPath": "/docs/reference/cli",
+ "title": "CLI",
+ "description": "leadtype generate and leadtype lint — flags, exit codes, and JSON output.",
+ "groups": [
+ "reference"
+ ]
+ },
{
- "slug": "convert",
- "segmentPath": [
- "generation",
- "convert"
- ],
+ "urlPath": "/docs/reference/convert",
"title": "Convert",
- "description": "MDX-to-markdown conversion APIs.",
- "pages": [
- {
- "urlPath": "/docs/convert",
- "title": "Convert",
- "description": "How to convert MDX docs into Markdown with leadtype/convert.",
- "groups": [
- "convert"
- ]
- }
- ],
- "children": []
+ "description": "MDX-to-markdown conversion APIs from leadtype/convert.",
+ "groups": [
+ "reference"
+ ]
},
{
- "slug": "llm",
- "segmentPath": [
- "generation",
- "llm"
- ],
- "title": "LLM",
- "description": "Summary and full-context file generation.",
- "pages": [
- {
- "urlPath": "/docs/llm",
- "title": "LLM",
- "description": "How to generate llms.txt and topic-scoped full-context files from leadtype.",
- "groups": [
- "llm"
- ]
- }
- ],
- "children": []
+ "urlPath": "/docs/reference/lint",
+ "title": "Lint rules",
+ "description": "Schema, link, and navigation checks. CLI and library API.",
+ "groups": [
+ "reference"
+ ]
},
{
- "slug": "search",
- "segmentPath": [
- "generation",
- "search"
- ],
- "title": "Search",
- "description": "Static search indexes and AI answer helpers.",
- "pages": [
- {
- "urlPath": "/docs/search",
- "title": "Search",
- "description": "Generate and query a static docs search index, then stream source-grounded AI answers.",
- "groups": [
- "search"
- ]
- }
- ],
- "children": []
- }
- ]
- },
- {
- "slug": "validation",
- "segmentPath": [
- "validation"
- ],
- "title": "Validation",
- "description": "Content validation and link checks.",
- "pages": [
+ "urlPath": "/docs/reference/llm",
+ "title": "LLM bundles",
+ "description": "Generate llms.txt and topic-scoped full-context files for agents.",
+ "groups": [
+ "reference"
+ ]
+ },
+ {
+ "urlPath": "/docs/reference/remark",
+ "title": "Remark plugins",
+ "description": "The default plugin stack that flattens MDX components into markdown.",
+ "groups": [
+ "reference"
+ ]
+ },
{
- "urlPath": "/docs/lint",
- "title": "Lint",
- "description": "How to validate docs content with lintDocs and the leadtype lint CLI.",
+ "urlPath": "/docs/reference/search",
+ "title": "Search",
+ "description": "Static search index, runtime helpers, and source-grounded answer streaming.",
"groups": [
- "validation"
+ "reference"
]
}
],
diff --git a/apps/example/src/generated/docs-search-content.json b/apps/example/src/generated/docs-search-content.json
index 7585b8c..02f20a0 100644
--- a/apps/example/src/generated/docs-search-content.json
+++ b/apps/example/src/generated/docs-search-content.json
@@ -1 +1 @@
-{"version":2,"generatedAt":"2026-05-09T01:53:29.914Z","chunks":["Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nleadtype does not export prebuilt UI components or a mdxComponents map. The consuming docs app owns runtime rendering, styling, accessibility, and framework-specific integration. The package only assumes a small authoring contract for MDX component names so the remark pipeline can flatten those components into Markdown for agents, LLM bundles, search indexes, and validation.","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nApp-Owned Adapter Map\n\nDefine your own mdxComponents map in the docs app. The example app keeps its implementation under apps/example/src/components/docs-mdx . Common component names handled by the default remark pipeline include Accordion AccordionItem ExtractedTypeTable Callout Card Cards Example Mermaid CommandTabs Selector Step Steps Tab Tabs TopicSwitcher TypeTable Use it like this If your app uses different names, add custom remark plugins or adapter components that map authored MDX back to the names handled by the pipeline.\n\n```tsx import { mdxComponents } from \"@/components/docs-mdx\"; const components = { ...mdxComponents, }; ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nImportant Components\n\nAccordion and AccordionItem\n\nUse for secondary details that should be collapsible in the browser but still available to markdown conversion, search, and LLM bundles. Closed content is still flattened by the remark pipeline, so do not use accordions to hide content from generated outputs.\n\n```tsx Use accordions for supporting details, troubleshooting notes, and optional reference material. ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nImportant Components\n\nCommandTabs\n\nUse for package-manager-specific install or run commands. Use mode=\"install\" when command is a package name, mode=\"run\" when command is a CLI name, and mode=\"create\" for starter commands such as pnpm create next-app . command can also include a pm placeholder for custom templates. Use commands for exact per-manager overrides and defaultManager to choose the initial tab.\n\n```tsx ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nImportant Components\n\nExample\n\nUse for data-driven preview and source examples. The app-owned component receives code as data; host apps can add filesystem loaders or dynamic imports outside leadtype when they need app-specific behavior. Use sourceFiles when an example needs to show supporting files in addition to the primary snippet.\n\n```tsx The host app owns styling and runtime components while `leadtype` owns conversion. ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nImportant Components\n\nTypeTable and ExtractedTypeTable\n\nUse TypeTable for explicit prop or type rows you already know. Use ExtractedTypeTable when the docs should extract types from source files. ExtractedTypeTable is the most path-sensitive component in the set. If it needs to resolve project files, pair it with the matching remark plugin configuration and set a stable base path.","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nImportant Components\n\nTabs , Tab , Steps , Step\n\nThese component names are primarily authoring affordances in MDX. When the markdown conversion pipeline runs, their content is flattened into standard markdown so agents do not need JSX-aware renderers.","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nImportant Components\n\nTopicSwitcher\n\nUse for reader-facing navigation across equivalent documentation topics. TopicSwitcher is intentionally generic. Frameworks are one topic category, but the same component can represent SDKs, runtimes, deployment targets, product areas, or other equivalent slices of docs. It does not automatically read LLM topic config.\n\n```tsx ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nGuidance\n\nKeep runtime components in the docs app. Keep component names stable when the conversion pipeline depends on them. If the goal is agent-readable markdown, read Remark instead of reimplementing the JSX flattening rules.","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nThe leadtype/convert entrypoint provides three main APIs convertMdxToMarkdown writeMdxFileAsMarkdown convertAllMdx Import them from\n\n```ts import { convertAllMdx, convertMdxToMarkdown, writeMdxFileAsMarkdown, } from \"leadtype/convert\"; ```","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nMain Use Cases\n\nConvert one file in memory\n\nUse convertMdxToMarkdown when you need the rendered markdown string plus the resolved frontmatter.\n\n```ts const result = await convertMdxToMarkdown( \"docs/guides/quickstart.mdx\", defaultRemarkPlugins, false ); ```","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nMain Use Cases\n\nConvert a single file to disk\n\nUse writeMdxFileAsMarkdown when you already know the source path and output path.","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nMain Use Cases\n\nConvert an entire docs tree\n\nUse convertAllMdx for batch conversion\n\n```ts await convertAllMdx({ srcDir: \"content\", outDir: \"public\", remarkPlugins: defaultRemarkPlugins, enrichFrontmatterFromGit: true, }); ```","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nImportant Config\n\nsrcDir root directory containing .mdx files. outDir destination for generated .md files. remarkPlugins additional unified plugins, usually defaultRemarkPlugins from leadtype/remark . enrichFrontmatterFromGit adds git-derived metadata when available.","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nBehavior Notes\n\nFrontmatter is preserved when present. If a file has no frontmatter, the converter synthesizes title and sometimes description from the rendered markdown. Markdown tables and Mermaid blocks are compacted after rendering for cleaner agent consumption. Conversion is concurrent and optimized for large doc trees.","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nRecommended Pairing\n\nIn most apps, pair conversion with Then pass Use remarkInclude only when the source docs actually rely on include tags or partial expansion.\n\n```ts import { defaultRemarkPlugins, remarkInclude } from \"leadtype/remark\"; ``` ```ts remarkPlugins: [remarkInclude, ...defaultRemarkPlugins] ```","Bundle docs into a package\n\nHow to ship generated agent docs inside an npm package.\n\nBundle docs into a package\n\nUse this pattern when a package should carry its own agent-readable docs. The website is for humans. The package-bundled docs are for agents, CLIs, IDEs, and offline tooling that need a small reference set without loading the full docs site.","Bundle docs into a package\n\nHow to ship generated agent docs inside an npm package.\n\nBundle docs into a package\n\nGenerate into the package\n\nIf source docs live at the repo root in docs/ , generate package docs into the package directory This writes converted markdown, llms.txt , full-context files, and search artifacts under packages/my-package/docs .\n\n```bash npx leadtype generate \\ --src . \\ --out packages/my-package \\ --base-url https://docs.example.com/my-package \\ --name \"my-package\" \\ --summary \"Docs for my-package.\" \\ --format json ```","Bundle docs into a package\n\nHow to ship generated agent docs inside an npm package.\n\nBundle docs into a package\n\nFilter package-specific docs\n\nFor package-specific bundles, include only the docs paths that belong to that package Filters are explicit. If a package also needs shared or overview pages, include those paths too Use --include more than once for multiple paths. Use --exclude to remove private or internal docs after includes are applied.\n\n```bash npx leadtype generate \\ --src . \\ --out packages/react \\ --name \"@c15t/react\" \\ --summary \"React bindings for c15t.\" \\ --include \"frameworks/react/**\" \\ --format json ``` ```bash npx leadtype generate \\ --src . \\ --out packages/react \\ --include \"frameworks/react/**\" \\ --include \"shared/**\" \\ --format json ```","Bundle docs into a package\n\nHow to ship generated agent docs inside an npm package.\n\nBundle docs into a package\n\nInclude docs in the package\n\nAdd docs to the package's published files and run generation as part of the package build or prepack step This is the shape leadtype uses for its own package packages/leadtype/package.json includes docs in files , and the package build regenerates the docs bundle before publish.\n\n```json { \"files\": [\"dist\", \"docs\", \"README.md\"], \"scripts\": { \"build\": \"tsup && npx leadtype generate --src ../.. --out . --format json\" } } ```","Bundle docs into a package\n\nHow to ship generated agent docs inside an npm package.\n\nBundle docs into a package\n\nVerify before publishing\n\nRun the generator and inspect the package tarball The dry run should include docs/llms.txt docs/llms-full.txt docs/ / .md docs/search-index.json docs/search-content.json\n\n```bash npx leadtype generate --src . --out packages/my-package --format json npm pack --dry-run ```","Bundle docs into a package\n\nHow to ship generated agent docs inside an npm package.\n\nBundle docs into a package\n\nWhen to use this\n\nUse this when agents should understand the package from the installed dependency itself. If the goal is only to power a public docs website, use Connect a docs site instead.","Connect a docs site\n\nHow to run the leadtype pipeline before building a docs app.\n\nConnect a docs site\n\nUse this pattern when the docs app lives separately from the package repos it documents. The docs app owns the UI. Each package repo owns its MDX content. Before the docs app builds, clone the source repos and run the leadtype pipeline over their docs/ folders. If the package should also ship docs for agents, see Bundle docs into a package. For a local repo, run the pipeline directly\n\n```bash npx leadtype generate \\ --src . \\ --out public \\ --base-url https://docs.example.com/leadtype \\ --name \"leadtype\" \\ --summary \"Shared MDX conversion, linting, and LLM-doc generation package.\" \\ --format json ```","Connect a docs site\n\nHow to run the leadtype pipeline before building a docs app.\n\nConnect a docs site\n\nConfig setup\n\nUse docs.config.ts when the source repo should own product metadata and the docs group tree used by generation and navigation. The config describes product metadata and the group structure. Individual pages join groups from their MDX frontmatter Do not duplicate per-page membership in docs.config.ts . The generator reads group from source frontmatter and uses the config tree to name and organize the generated llms.txt , full-context files, and runtime navigation data.\n\n```ts import { defineDocsConfig } from \"leadtype\"; export default defineDocsConfig({ product: { name: \"leadtype\", summary: \"Shared MDX conversion, linting, and LLM-doc generation package.\", bullets: [ \"Flattens MDX-heavy docs into clean markdown for agents.\", \"Generates llms.txt and topic-scoped full-context bundles.\", ], bestStartingPoints: [{ urlPath: \"/docs\" }], }, groups: [ { slug: \"overview\", title: \"Overview\", description: \"Start here for package scope and surface selection.\", }, { slug: \"guides\", title: \"Guides\", description: \"Practical integration guides.\", }, ], }); ``` ```mdx --- title: \"Connect a docs site\" description: \"How to run the leadtype pipeline before building a docs app.\" group: guides --- ```","Connect a docs site\n\nHow to run the leadtype pipeline before building a docs app.\n\nConnect a docs site\n\nBuild flow\n\n1. Clone the source repo into a temporary build directory. 2. Run leadtype lint against the source docs. 3. Run leadtype generate against the clone. 4. Build the docs app from the generated markdown, llms.txt , full-context files, and search artifacts. This is the same shape we expect for repos like c15t/c15t source docs live in a public repo, while the rendered docs UI can be owned by another app or private template. Use --format json in CI or agent workflows. The command prints generated file paths, inferred groups, product metadata, and search index stats as JSON so automation can verify the result without scraping text.\n\n```bash git clone --depth 1 https://github.com/acme/package-a .docs-src/package-a npx leadtype lint .docs-src/package-a/docs --format json --error-unknown npx leadtype generate --src .docs-src/package-a --out public/package-a npm run build ```","Connect a docs site\n\nHow to run the leadtype pipeline before building a docs app.\n\nConnect a docs site\n\nGenerated output\n\nThe command writes public/docs/ / .md public/llms.txt public/docs/llms.txt public/docs/llms-full.txt public/docs/llms-full/ .txt public/docs/search-index.json public/docs/search-content.json","Connect a docs site\n\nHow to run the leadtype pipeline before building a docs app.\n\nConnect a docs site\n\nWhen to use this\n\nUse this when you want one docs UI for many repos, but do not want every package repo to own the same website implementation. If the docs source already lives inside the docs app repo, skip the clone step and point the pipeline at the local docs/ directory.","Leadtype\n\nReference map for the shared MDX conversion, linting, and LLM doc-generation package.\n\nLeadtype\n\nleadtype is a shared docs package. It provides A remark pipeline that flattens MDX components into LLM-friendly markdown. MDX to markdown conversion utilities. llms.txt and topic-scoped llms-full/ .txt generators. Static docs search, content readers, source-grounded answer helpers, and optional bash-tool integration. MDX linting utilities for frontmatter, meta.json , and docs links.","Leadtype\n\nReference map for the shared MDX conversion, linting, and LLM doc-generation package.\n\nLeadtype\n\nPackage Surfaces\n\nComponents The app-owned MDX component contract used by the remark pipeline. Convert convertMdxToMarkdown , writeMdxFileAsMarkdown , and convertAllMdx . Remark individual remark plugins plus defaultRemarkPlugins . LLM generateLlmsTxt and generateLLMFullContextFiles . Search generateDocsSearchFiles , searchDocs , source-grounded answer helpers, and the optional bash adapter. Lint lintDocs and the leadtype lint CLI.","Leadtype\n\nReference map for the shared MDX conversion, linting, and LLM doc-generation package.\n\nLeadtype\n\nWhen To Read Which Page\n\nReach for Components when defining app-owned MDX components for authored docs. Use Convert when you need markdown output from .mdx files. Check Remark for custom plugin order or component flattening behavior. Open LLM when generating llms.txt or topic-scoped full-context bundles. See Search for static indexing, runtime querying, or grounded answer streaming. Use Lint to validate frontmatter, docs URLs, or sidebar metadata.","Leadtype\n\nReference map for the shared MDX conversion, linting, and LLM doc-generation package.\n\nLeadtype\n\nOther Frameworks\n\nReact, Vue, Nuxt, Svelte, Astro, and other stacks can use the conversion, LLM, lint, and search entry points today. Runtime MDX components belong in the consuming docs app, not this package.","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nThe lint surface validates source docs before conversion or site build. Use it in CI when a docs PR changes frontmatter, sidebar metadata, or internal docs links. Run the CLI with a source docs directory For agent or CI workflows, use JSON output and fail on unknown fields Import the library API from\n\n```bash npx leadtype lint docs ``` ```bash npx leadtype lint docs --format json --error-unknown --max-warnings 0 ``` ```ts import { lintDocs } from \"leadtype/lint\"; ```","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nWhat It Checks\n\nDocs page frontmatter schema validation Changelog frontmatter schema validation when configured meta.json structure Broken /docs/... links in rendered markdown Broken /docs/... links in URL-like frontmatter fields Unresolved framework placeholders in docs URLs Cross-framework links such as a Next.js page linking to a React-only docs route Linting reads source .md and .mdx files, then renders MDX through the default remark pipeline for link checks. Point it at source docs, not generated markdown.","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nCLI Reference\n\nOption Description -- -- srcDir Source directory to scan. Defaults to content when no positional path or --src is provided. --src ; summary: { filesScanned: number; errors: number; warnings: number; }; }; ```","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nRule Reference\n\nRule Severity Meaning -- -- -- schema error A value failed the active frontmatter, changelog, or meta.json schema. unknown-field warn by default A top-level field is not in the active schema and is not read by the default consumers. parse-error error Frontmatter, meta.json , or rendered markdown could not be parsed for validation. invalid-link error A /docs/... link points to a route that does not exist in the source docs tree. unresolved-placeholder error A docs URL still contains an unresolved placeholder such as framework . cross-framework-link error A framework-scoped page links to a different framework's docs route.","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nDefault Schemas\n\nDocs Frontmatter\n\nField Required Type -- -- -- title Yes non-empty string description No string icon No string deprecated No boolean deprecatedReason No string experimental No boolean canary No boolean new No boolean draft No boolean tags No string array group No string or string array availableIn No array of framework, url?, title? full No boolean lastModified and lastAuthor are generated by conversion when enrichFrontmatterFromGit is enabled. Do not author them in source docs.","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nDefault Schemas\n\nChangelog Frontmatter\n\nField Required Type -- -- -- title Yes non-empty string version Yes SemVer string date Yes ISO-8601 or parseable date string description No string icon No string type No release , improvement , retired , or deprecation tags No string array canary No boolean authors No string or string array draft No boolean","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nDefault Schemas\n\nmeta.json\n\nField Required Type -- -- -- pages Yes string array title No non-empty string root No boolean icon No string defaultOpen No boolean nav.sidebar No section or combined nav.label No string nav.mode No string","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nGuidance\n\nRun lint before leadtype generate so content errors fail before artifacts are written. Use --format json for automation and --format github for GitHub Actions annotations. Treat unresolved placeholder errors as content bugs first. If lint fails after a docs move, check meta.json and internal links together; they usually drift at the same time.","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nImport from This surface reads source docs and generated markdown to produce agent-friendly indexes and deep-context bundles.\n\n```ts import { generateLLMFullContextFiles, generateLlmsTxt, } from \"leadtype/llm\"; ```","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nOutput Model\n\ngenerateLlmsTxt\n\nCreates /llms.txt /docs/llms.txt when docsSections is provided Use it to publish a short product summary plus a curated docs map.","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nOutput Model\n\ngenerateLLMFullContextFiles\n\nCreates /llms-full.txt /docs/llms-full.txt /docs/llms-full/ .txt topic files Use it after markdown conversion. It reads .md files under outDir /docs/ .","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nRequired Conventions\n\nSource docs for summaries live under srcDir /docs/ . Converted markdown for full files lives under outDir /docs/ . Run convertAllMdx before generateLLMFullContextFiles .","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nTypical Sequence\n\n```ts await convertAllMdx({ srcDir, outDir, remarkPlugins: [remarkInclude, ...defaultRemarkPlugins], }); await generateLlmsTxt({ srcDir, outDir, baseUrl, product: { name: \"My Docs\", summary: \"Short product summary.\", }, docsSections: [ { title: \"Guides\", links: [{ urlPath: \"/docs/guides/quickstart\" }], }, ], }); await generateLLMFullContextFiles({ outDir, baseUrl, product: { name: \"My Docs\" }, topics: [ { slug: \"guides\", title: \"Guides\", description: \"Full context for guides.\", includePrefixes: [\"guides/\"], }, ], }); ```","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nTopic Design\n\nPrefer multiple narrow topics over one giant full-context file. Good frameworks , self-host , integrations Poor one catch-all topic for the whole docs tree The APIs support nested routers, so parent topics can point to smaller child topics.","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nGuidance\n\nKeep curated summary links opinionated. They should help an agent choose the smallest useful file. Write short, explicit descriptions for topics and sections. Those descriptions become routing hints. If generated files are empty, check that the docs really live under the expected docs/ folder names.","Methodology\n\nHow leadtype differs from Fumadocs, Mintlify, and Starlight\n\nMethodology\n\nleadtype is not a docs website framework. It is the shared pipeline behind docs websites. We built it at Inth because projects like c15t and dsar-sdk need one consistent docs system across packages, repos, websites, generated markdown, llms.txt , search, and package-bundled agent docs. The browser UI stays owned by your app. leadtype makes the content portable.","Methodology\n\nHow leadtype differs from Fumadocs, Mintlify, and Starlight\n\nMethodology\n\nThe short version\n\nFumadocs helps you build a React docs site. Starlight helps you build an Astro docs site. Mintlify gives you a hosted docs platform. leadtype helps you reuse the same docs content across sites, packages, search, and agents. Use the others when the main job is publishing a polished website quickly. Use leadtype when the main job is standardizing the docs infrastructure behind one or more websites.","Methodology\n\nHow leadtype differs from Fumadocs, Mintlify, and Starlight\n\nMethodology\n\nWhat it does\n\nleadtype gives you framework-neutral tools to Convert MDX-heavy docs into clean markdown. Generate llms.txt and full-context topic files. Build static search artifacts. Validate frontmatter, navigation metadata, and links. Ship agent-readable docs inside published packages. It does not provide the visual docs UI, routing, theme, or hosted deployment.","Methodology\n\nHow leadtype differs from Fumadocs, Mintlify, and Starlight\n\nMethodology\n\nUnified docs across repos\n\nThis is useful when an organization has many packages but wants one docs experience. Each repo can keep its MDX next to the code it documents. A shared or private docs UI can render that content with the organization's design system, while leadtype handles conversion, linting, search data, and agent-doc generation. That gives every repo the same output contract without forcing every repo to own the same website implementation.","Methodology\n\nHow leadtype differs from Fumadocs, Mintlify, and Starlight\n\nMethodology\n\nWhen to use what\n\nUse Fumadocs for a composable React docs framework. Use Starlight for an Astro-first docs site with strong defaults. Use Mintlify for hosted docs with deployment, analytics, API docs, and AI features managed for you. Use leadtype when you own the docs app but need shared infrastructure across repos, packages, generated markdown, search, and agent-facing docs. These tools can also be used together use a docs framework or hosted platform for the browser experience, and use leadtype for portable docs outputs behind it.","Remark\n\nReference for the remark plugins and default plugin pipeline exported by leadtype.\n\nRemark\n\nImport from\n\n```ts import { defaultRemarkPlugins, remarkInclude, remarkTypeTableToMarkdown, } from \"leadtype/remark\"; ```","Remark\n\nReference for the remark plugins and default plugin pipeline exported by leadtype.\n\nRemark\n\nDefault Plugin Stack\n\ndefaultRemarkPlugins is the standard MDX-to-markdown pipeline for agent docs. Order matters. The stack 1. Removes MDX imports. 2. Resolves docs placeholders. 3. Flattens JSX-heavy authoring components into plain markdown. The default array includes remarkRemoveImports remarkResolveDocPlaceholders remarkCalloutToMarkdown remarkCardsToMarkdown remarkMermaidToMarkdown remarkCommandTabsToMarkdown remarkStepsToMarkdown remarkTabsToMarkdown remarkTypeTableToMarkdown","Remark\n\nReference for the remark plugins and default plugin pipeline exported by leadtype.\n\nRemark\n\nWhen To Add Extra Plugins\n\nremarkInclude\n\nAdd this when the source docs use include tags or partial composition Place it before the default plugins so included content is expanded before JSX flattening runs.\n\n```ts remarkPlugins: [remarkInclude, ...defaultRemarkPlugins] ```","Remark\n\nReference for the remark plugins and default plugin pipeline exported by leadtype.\n\nRemark\n\nWhen To Add Extra Plugins\n\nremarkTypeTableToMarkdown\n\nThis plugin can be used directly when you only need type-table extraction and not the full pipeline. It pairs with Body content goes here. ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nCards\n\nA grid of short, linked entry points. Flattens to a bullet list of links. Convert Remark Search\n\n```tsx ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nSteps\n\nNumbered walkthroughs. Flattens to an ordered list with bold step titles. 1. Author docs in MDX Use the components in this list as authoring affordances. 2. Run the conversion leadtype generate writes flattened markdown to public/docs/ . 3. Serve both formats HTML for humans, .md for agents — same URL, content negotiated by the Accept header.\n\n```tsx Use the components in this list. `leadtype generate` writes flattened markdown. ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nTabs\n\nGroup equivalent content. Flattens to bold headings followed by content so agents do not need a JSX-aware renderer to read every variant. tanstack-start Use a Vite middleware dev/preview and a Nitro middleware prod to negotiate the Accept header. next-js Wire content negotiation in middleware.ts and serve .md from a route handler. vite A configureServer middleware is enough for static deployments where .md files live in public/ .\n\n```tsx … … … ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nCommandTabs\n\nPackage-manager-aware install or run commands. Flattens to a markdown table with one row per manager. Use mode=\"install\" when command is a package name, mode=\"run\" when command is a CLI name, and mode=\"create\" for starter commands. Use the commands prop for exact per-manager overrides. Package manager Command -- -- npm npm install leadtype pnpm pnpm add leadtype yarn yarn add leadtype bun bun add leadtype Package manager Command -- -- npm npx leadtype lint pnpm pnpm dlx leadtype lint yarn yarn dlx leadtype lint bun bunx leadtype lint\n\n```tsx ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nAccordion\n\nCollapsible details for secondary content. Flattening ignores open/closed state and emits every item — accordions are not a place to hide content from agents. When should I use accordions? Use them for supporting details, troubleshooting notes, and optional reference material. Closed content is still flattened by the remark pipeline. Are accordions a good place to hide content from LLMs? No. Conversion ignores the open/closed state and emits everything inside.\n\n```tsx Use them for supporting details and optional reference material. ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nTopicSwitcher\n\nNavigation across equivalent docs topics — frameworks, SDKs, runtimes, deployment targets, product areas. Reader-facing only; it does not automatically read LLM topic config. Framework React — React integration Vue — Vue integration Svelte — Svelte integration\n\n```tsx ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nTypeTable and ExtractedTypeTable\n\nTypeTable is for explicit prop or type rows you already know. ExtractedTypeTable reads a TypeScript file at conversion time and extracts the table from a named type — keep its path stable. Property Type Description Default Required -- -- -- -- -- title string Heading rendered above the callout body. - ✅ Required variant CalloutVariant Visual treatment for the callout. info Optional deprecated \\ \\ boolean\\ \\ deprecated Marks the row as deprecated. false Optional\n\n```tsx ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nExample\n\nData-driven preview and source examples. The host component receives code as data; add file loaders or dynamic imports outside leadtype when an example needs app-specific behavior.\n\n```tsx The host app owns styling and runtime components while leadtype owns conversion. ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nMermaid\n\nDiagrams authored as plain text. Renders client-side as interactive SVG. Flattening preserves the source as a fenced mermaid block so other tools can render the diagram from the markdown copy.\n\n```tsx |remark| Markdown Markdown -->|llms.txt| Agents`} /> ``` ```mermaid `graph LR MDX -->|remark| Markdown Markdown -->|search index| API Markdown -->|llms.txt| Agents` ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nGuidelines\n\nKeep runtime components in your docs app. Leadtype stays out of UI. Keep component names stable. Renaming resolver page1 --> resolver page2 --> resolver page3 --> resolver resolver --> nav resolver --> llms resolver --> full` ```","Frontmatter\n\nRequired fields, group semantics, and how authored MDX becomes a navigation tree.\n\nFrontmatter\n\nHow groups become a nav tree\n\nNested groups\n\nDeclare children in the config to build deeper trees A page sets group bundle-package-docs and lands in that nested slot. Only leaf groups no children get an llms-full/ cli cli --> bundle bundle --> publish publish --> install install --> consume` ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nGenerate into the package\n\nIf source docs live at the repo root This writes converted markdown, llms.txt , full-context bundles, and the search index under packages/my-package/docs/ .\n\n```bash npx leadtype generate \\ --src . \\ --out packages/my-package \\ --base-url https://docs.example.com/my-package \\ --name \"my-package\" \\ --summary \"Docs for my-package.\" \\ --json ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nFilter to package-specific docs\n\nA monorepo with one shared docs/ and many packages should bundle only the slice each package owns. Use --include repeatable and --exclude Filters are explicit. If the package needs shared overview pages, list them too. --exclude is applied after --include .\n\n```bash npx leadtype generate \\ --src . \\ --out packages/react \\ --name \"@c15t/react\" \\ --include \"frameworks/react/**\" \\ --include \"shared/**\" \\ --exclude \"**/internal/**\" \\ --json ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nInclude in the published tarball\n\nAdd docs to files and run generation as a build or prepack step This is the shape leadtype itself uses — packages/leadtype/package.json lists docs in files , and the package build regenerates the bundle before publish so the output is always current.\n\n```json { \"files\": [\"dist\", \"docs\", \"README.md\"], \"scripts\": { \"build\": \"tsup && npx leadtype generate --src ../.. --out . --json\" } } ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nVerify before publishing\n\nnpm pack --dry-run should list docs/llms.txt docs/llms-full.txt docs/llms-full/ .txt docs/ / .md docs/search-index.json docs/search-content.json If something's missing, check files in package.json and the --include / --exclude filters.\n\n```bash npx leadtype generate --src . --out packages/my-package --json npm pack --dry-run ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nHow agents discover bundled docs\n\nAfter npm install cli cli --> pub cli --> gen pub --> vite gen --> vite vite -- \"Accept: text/html\" --> human vite -- \"Accept: text/markdown\" --> agent gen --> search` ```","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nOne-off run\n\nFor a single repo where docs and site live together That single command converts MDX, generates llms.txt , builds the search index, and resolves the navigation tree. Generated paths are listed by leadtype generate and inspected in detail under How it works.\n\n```bash npx leadtype generate \\ --src . \\ --out public \\ --base-url https://docs.example.com \\ --name \"my-docs\" \\ --summary \"Short product summary.\" ```","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nWire it into the build\n\nAdd a pipeline step before vite/Next/Astro builds. The example app does this with a pipeline build script that runs each stage individually for incremental dev Splitting into separate scripts is optional — the CLI does all three in one pass. Use scripts when you want fine control over plugin order, base URL, or filtering. See apps/example/scripts/mdx-convert.ts for the canonical setup, including how to add remarkInclude for partial expansion or remarkTypeTableToMarkdown with a basePath for lint-report.json ```","Validate in CI\n\nRun leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.\n\nValidate in CI\n\nLocal pre-push hook\n\nCatch issues before they reach CI by running lint in a husky pre-push hook Keep it under a second by limiting the scan to changed files when you have many pages. The CLI accepts repeated --ignore globs to skip stale or generated paths.\n\n```bash #!/usr/bin/env sh npx leadtype lint docs --max-warnings 0 ```","Validate in CI\n\nRun leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.\n\nValidate in CI\n\nRun before generate\n\nWhen leadtype lint and leadtype generate both run in the same job, lint first Generate fails noisily on unknown groups or broken includes. Lint fails specifically on content schema problems with file/line context — much easier to debug.\n\n```bash npx leadtype lint docs --error-unknown npx leadtype generate --src . --out public --json ```","Validate in CI\n\nRun leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.\n\nValidate in CI\n\nWhat to fix first\n\nWhen CI fails on a lot of violations, fix them in this order 1. parse-error — frontmatter is broken; nothing else can validate. 2. schema — missing or wrong-typed required fields. 3. unresolved-placeholder — content bug, not a config bug. 4. invalid-link and cross-framework-link — usually a stale link after a docs move. 5. unknown-field — last; either delete the field or extend the schema.","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nleadtype does not export prebuilt UI components or a mdxComponents map. The consuming docs app owns runtime rendering, styling, accessibility, and framework-specific integration. The package only assumes a small authoring contract for MDX component names so the remark pipeline can flatten those components into Markdown for agents, LLM bundles, search indexes, and validation.","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nApp-Owned Adapter Map\n\nDefine your own mdxComponents map in the docs app. The example app keeps its implementation under apps/example/src/components/docs-mdx . The remark pipeline knows how to flatten the following names Accordion , AccordionItem , Callout , Card , Cards , CommandTabs , Example , ExtractedTypeTable , Mermaid , Selector , Step , Steps , Tab , Tabs , TopicSwitcher , TypeTable . Wire them up like this If your app uses different names, add custom remark plugins or adapter components that map authored MDX back to the names handled by the pipeline.\n\n```tsx import { mdxComponents } from \"@/components/docs-mdx\"; const components = { ...mdxComponents, }; ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nEach section below describes a component, shows its source, and renders a live example. Switch to the agent view the robot icon in the header to compare against the flattened markdown the remark pipeline produces.","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nCallout\n\nWraps supporting context, warnings, or tips. Variants like info , warning , success , error , and tip change styling but flatten identically into blockquotes. ℹ️ Info Heads up Callouts wrap supporting context, warnings, or tips. The remark pipeline flattens them into blockquotes so agents still see the content. ⚠️ Warning Don't do this Variants like warning, success, error, and tip change the styling but flatten identically.\n\n```tsx Body content goes here. ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nCards\n\nLayout primitive for short, linked entry points. The remark pipeline flattens cards into a bullet list of links. Convert Remark Search\n\n```tsx ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nSteps\n\nNumbered walkthroughs. The remark pipeline emits an ordered markdown list with bold step titles. 1. Author docs in MDX Use the components in this list as authoring affordances. 2. Run the conversion leadtype generate or bun run pipeline convert in this app writes flattened markdown to public/docs . 3. Serve both formats HTML for humans, .md for agents — same URL, content negotiated by the Accept header.\n\n```tsx Use the components in this list. `leadtype generate` writes flattened markdown. ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nTabs\n\nAuthoring affordance for grouping equivalent content. The remark pipeline flattens each tab into a bold heading followed by its content so agents do not need a JSX-aware renderer. tanstack-start Use a Vite middleware dev/preview and a Nitro middleware prod to negotiate the Accept header. next-js Wire content negotiation in middleware.ts and serve .md from a route handler. vite A configureServer middleware is enough for static deployments where .md files live in public/ .\n\n```tsx … … … ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nCommandTabs\n\nPackage-manager-aware install or run commands. The remark pipeline expands them into a markdown table with one row per manager. Use mode=\"install\" when command is a package name, mode=\"run\" when command is a CLI name, and mode=\"create\" for starter commands such as pnpm create next-app . command can also include a pm placeholder for custom templates. Use the commands prop for exact per-manager overrides and defaultManager to choose the initial tab. Package manager Command -- -- npm npm install leadtype pnpm pnpm add leadtype yarn yarn add leadtype bun bun add leadtype Package manager Command -- -- npm npx leadtype lint pnpm pnpm dlx leadtype lint yarn yarn dlx leadtype lint bun bunx leadtype lint\n\n```tsx ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nAccordion\n\nCollapsible details for secondary content. The remark pipeline ignores the open/closed state and flattens every item, so accordions are not a place to hide content from agents. When should I use accordions? Use them for supporting details, troubleshooting notes, and optional reference material. Closed content is still flattened by the remark pipeline. Are accordions a good place to hide content from LLMs? No. Conversion ignores the open/closed state and emits everything inside.\n\n```tsx Use them for supporting details and optional reference material. ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nTopicSwitcher\n\nReader-facing navigation across equivalent docs topics. Frameworks are one common use, but the same component can represent SDKs, runtimes, deployment targets, or product areas. It does not automatically read LLM topic config. Framework React — React integration Vue — Vue integration Svelte — Svelte integration\n\n```tsx ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nTypeTable and ExtractedTypeTable\n\nTypeTable is for explicit prop or type rows you already know. ExtractedTypeTable extracts types from source files at conversion time. ExtractedTypeTable is the most path-sensitive component in the set. If it needs to resolve project files, pair it with the matching remark plugin configuration and set a stable base path. Property Type Description Default Required -- -- -- -- -- title string Heading rendered above the callout body. - ✅ Required variant CalloutVariant Visual treatment for the callout. info Optional deprecated \\ \\ boolean\\ \\ deprecated Marks the row as deprecated. false Optional\n\n```tsx ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nExample\n\nData-driven preview and source examples. The app-owned component receives code as data; host apps can add filesystem loaders or dynamic imports outside leadtype when they need app-specific behavior. Use sourceFiles when an example needs to show supporting files in addition to the primary snippet.\n\n```tsx The host app owns styling and runtime components while `leadtype` owns conversion. ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nMermaid\n\nDiagrams authored as plain text. Renders client-side into an interactive SVG with zoom, pan, and download controls. The remark pipeline preserves the source as a fenced mermaid block so agents see the diagram in a portable form.\n\n```tsx |remark| Markdown Markdown -->|llms.txt| Agents`} /> ``` ```mermaid `graph LR MDX -->|remark| Markdown Markdown -->|search index| API Markdown -->|llms.txt| Agents` ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nGuidance\n\nKeep runtime components in the docs app. Keep component names stable when the conversion pipeline depends on them. If the goal is agent-readable markdown, read Remark instead of reimplementing the JSX flattening rules.","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nThe leadtype/convert entrypoint provides three main APIs convertMdxToMarkdown writeMdxFileAsMarkdown convertAllMdx Import them from\n\n```ts import { convertAllMdx, convertMdxToMarkdown, writeMdxFileAsMarkdown, } from \"leadtype/convert\"; ```","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nMain Use Cases\n\nConvert one file in memory\n\nUse convertMdxToMarkdown when you need the rendered markdown string plus the resolved frontmatter.\n\n```ts const result = await convertMdxToMarkdown( \"docs/guides/quickstart.mdx\", defaultRemarkPlugins, false ); ```","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nMain Use Cases\n\nConvert a single file to disk\n\nUse writeMdxFileAsMarkdown when you already know the source path and output path.","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nMain Use Cases\n\nConvert an entire docs tree\n\nUse convertAllMdx for batch conversion\n\n```ts await convertAllMdx({ srcDir: \"content\", outDir: \"public\", remarkPlugins: defaultRemarkPlugins, enrichFrontmatterFromGit: true, }); ```","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nImportant Config\n\nsrcDir root directory containing .mdx files. outDir destination for generated .md files. remarkPlugins additional unified plugins, usually defaultRemarkPlugins from leadtype/remark . enrichFrontmatterFromGit adds git-derived metadata when available.","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nBehavior Notes\n\nFrontmatter is preserved when present. If a file has no frontmatter, the converter synthesizes title and sometimes description from the rendered markdown. Markdown tables and Mermaid blocks are compacted after rendering for cleaner agent consumption. Conversion is concurrent and optimized for large doc trees.","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nRecommended Pairing\n\nIn most apps, pair conversion with Then pass Use remarkInclude only when the source docs actually rely on include tags or partial expansion.\n\n```ts import { defaultRemarkPlugins, remarkInclude } from \"leadtype/remark\"; ``` ```ts remarkPlugins: [remarkInclude, ...defaultRemarkPlugins] ```","Bundle docs into a package\n\nHow to ship generated agent docs inside an npm package.\n\nBundle docs into a package\n\nUse this pattern when a package should carry its own agent-readable docs. The website is for humans. The package-bundled docs are for agents, CLIs, IDEs, and offline tooling that need a small reference set without loading the full docs site.","Bundle docs into a package\n\nHow to ship generated agent docs inside an npm package.\n\nBundle docs into a package\n\nGenerate into the package\n\nIf source docs live at the repo root in docs/ , generate package docs into the package directory This writes converted markdown, llms.txt , full-context files, and search artifacts under packages/my-package/docs .\n\n```bash npx leadtype generate \\ --src . \\ --out packages/my-package \\ --base-url https://docs.example.com/my-package \\ --name \"my-package\" \\ --summary \"Docs for my-package.\" \\ --format json ```","Bundle docs into a package\n\nHow to ship generated agent docs inside an npm package.\n\nBundle docs into a package\n\nFilter package-specific docs\n\nFor package-specific bundles, include only the docs paths that belong to that package Filters are explicit. If a package also needs shared or overview pages, include those paths too Use --include more than once for multiple paths. Use --exclude to remove private or internal docs after includes are applied.\n\n```bash npx leadtype generate \\ --src . \\ --out packages/react \\ --name \"@c15t/react\" \\ --summary \"React bindings for c15t.\" \\ --include \"frameworks/react/**\" \\ --format json ``` ```bash npx leadtype generate \\ --src . \\ --out packages/react \\ --include \"frameworks/react/**\" \\ --include \"shared/**\" \\ --format json ```","Bundle docs into a package\n\nHow to ship generated agent docs inside an npm package.\n\nBundle docs into a package\n\nInclude docs in the package\n\nAdd docs to the package's published files and run generation as part of the package build or prepack step This is the shape leadtype uses for its own package packages/leadtype/package.json includes docs in files , and the package build regenerates the docs bundle before publish.\n\n```json { \"files\": [\"dist\", \"docs\", \"README.md\"], \"scripts\": { \"build\": \"tsup && npx leadtype generate --src ../.. --out . --format json\" } } ```","Bundle docs into a package\n\nHow to ship generated agent docs inside an npm package.\n\nBundle docs into a package\n\nVerify before publishing\n\nRun the generator and inspect the package tarball The dry run should include docs/llms.txt docs/llms-full.txt docs/ / .md docs/search-index.json docs/search-content.json\n\n```bash npx leadtype generate --src . --out packages/my-package --format json npm pack --dry-run ```","Bundle docs into a package\n\nHow to ship generated agent docs inside an npm package.\n\nBundle docs into a package\n\nWhen to use this\n\nUse this when agents should understand the package from the installed dependency itself. If the goal is only to power a public docs website, use Connect a docs site instead.","Connect a docs site\n\nHow to run the leadtype pipeline before building a docs app.\n\nConnect a docs site\n\nUse this pattern when the docs app lives separately from the package repos it documents. The docs app owns the UI. Each package repo owns its MDX content. Before the docs app builds, clone the source repos and run the leadtype pipeline over their docs/ folders. If the package should also ship docs for agents, see Bundle docs into a package. For a local repo, run the pipeline directly\n\n```bash npx leadtype generate \\ --src . \\ --out public \\ --base-url https://docs.example.com/leadtype \\ --name \"leadtype\" \\ --summary \"Shared MDX conversion, linting, and LLM-doc generation package.\" \\ --format json ```","Connect a docs site\n\nHow to run the leadtype pipeline before building a docs app.\n\nConnect a docs site\n\nConfig setup\n\nUse docs.config.ts when the source repo should own product metadata and the docs group tree used by generation and navigation. The config describes product metadata and the group structure. Individual pages join groups from their MDX frontmatter Do not duplicate per-page membership in docs.config.ts . The generator reads group from source frontmatter and uses the config tree to name and organize the generated llms.txt , full-context files, and runtime navigation data.\n\n```ts import { defineDocsConfig } from \"leadtype\"; export default defineDocsConfig({ product: { name: \"leadtype\", summary: \"Shared MDX conversion, linting, and LLM-doc generation package.\", bullets: [ \"Flattens MDX-heavy docs into clean markdown for agents.\", \"Generates llms.txt and topic-scoped full-context bundles.\", ], bestStartingPoints: [{ urlPath: \"/docs\" }], }, groups: [ { slug: \"overview\", title: \"Overview\", description: \"Start here for package scope and surface selection.\", }, { slug: \"guides\", title: \"Guides\", description: \"Practical integration guides.\", }, ], }); ``` ```mdx --- title: \"Connect a docs site\" description: \"How to run the leadtype pipeline before building a docs app.\" group: guides --- ```","Connect a docs site\n\nHow to run the leadtype pipeline before building a docs app.\n\nConnect a docs site\n\nBuild flow\n\n1. Clone the source repo into a temporary build directory. 2. Run leadtype lint against the source docs. 3. Run leadtype generate against the clone. 4. Build the docs app from the generated markdown, llms.txt , full-context files, and search artifacts. This is the same shape we expect for repos like c15t/c15t source docs live in a public repo, while the rendered docs UI can be owned by another app or private template. Use --format json in CI or agent workflows. The command prints generated file paths, inferred groups, product metadata, and search index stats as JSON so automation can verify the result without scraping text.\n\n```bash git clone --depth 1 https://github.com/acme/package-a .docs-src/package-a npx leadtype lint .docs-src/package-a/docs --format json --error-unknown npx leadtype generate --src .docs-src/package-a --out public/package-a npm run build ```","Connect a docs site\n\nHow to run the leadtype pipeline before building a docs app.\n\nConnect a docs site\n\nGenerated output\n\nThe command writes public/docs/ / .md public/llms.txt public/docs/llms.txt public/docs/llms-full.txt public/docs/llms-full/ .txt public/docs/search-index.json public/docs/search-content.json","Connect a docs site\n\nHow to run the leadtype pipeline before building a docs app.\n\nConnect a docs site\n\nWhen to use this\n\nUse this when you want one docs UI for many repos, but do not want every package repo to own the same website implementation. If the docs source already lives inside the docs app repo, skip the clone step and point the pipeline at the local docs/ directory.","How it works\n\nThe mental model: one MDX source, a remark pipeline, four artifacts, three audiences.\n\nHow it works\n\nLeadtype takes one input — a folder of MDX — and produces every other shape your docs need to take. This page names every piece so the rest of the docs make sense.","How it works\n\nThe mental model: one MDX source, a remark pipeline, four artifacts, three audiences.\n\nHow it works\n\nThe pipeline\n\nThe remark stack is what turns interactive MDX components into agent-readable markdown. JSX gets flattened — a fm fm --> remark fm --> groups remark --> md md --> llms md --> idx groups --> llms groups --> nav` ```","How it works\n\nThe mental model: one MDX source, a remark pipeline, four artifacts, three audiences.\n\nHow it works\n\nThe four artifacts\n\nEvery run of leadtype generate produces four kinds of output. They all derive from the same source — there is no manual duplication. Property Type Description Default Required -- -- -- -- -- Markdown .md public/docs/\\ human artifacts -- \"Accept: text/markdown / or node_modules//docs/\" --> agent artifacts -- \"search-index.json + search-content.json\" --> search` ```","How it works\n\nThe mental model: one MDX source, a remark pipeline, four artifacts, three audiences.\n\nHow it works\n\nVocabulary\n\nA few terms you will see throughout the docs. Property Type Description Default Required -- -- -- -- -- flatten verb Convert an interactive MDX component into a portable markdown equivalent. A \\ pipe pipe --> md pipe --> llm pipe --> idx pipe --> nav md --> site md --> agent llm --> agent idx --> search nav --> site` ```","Leadtype\n\nOne MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.\n\nLeadtype\n\nChoose your path\n\nMost teams arrive here for one of two reasons. Pick the journey that matches yours — each is a single page that takes you from zero to running. Build a docs site Ship docs in your package","Leadtype\n\nOne MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.\n\nLeadtype\n\nWhat you get\n\n1. Write once Author MDX with familiar components — Callout , Tabs , Steps , Mermaid , TypeTable , and others. Add group in frontmatter to place pages in the navigation tree. 2. Run \\ leadtype generate\\ A single command converts MDX to markdown, builds llms.txt plus topic-scoped bundles, generates a static search index, and resolves the navigation tree. 3. Serve all of it Your site renders the source MDX; agents and tools fetch the markdown via HTTP content negotiation or load llms.txt from node modules . Same content, three audiences.","Leadtype\n\nOne MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.\n\nLeadtype\n\nNext\n\nNew here? Read the Quickstart — five minutes to a generated bundle. Want the mental model first? Read How it works for the pipeline diagram and the names of every artifact it produces. Comparing tools? See Methodology for how leadtype differs from Fumadocs, Starlight, and Mintlify.","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nThe lint surface validates source docs before conversion or site build. Use it in CI when a docs PR changes frontmatter, sidebar metadata, or internal docs links. Run the CLI with a source docs directory For agent or CI workflows, use JSON output and fail on unknown fields Import the library API from\n\n```bash npx leadtype lint docs ``` ```bash npx leadtype lint docs --format json --error-unknown --max-warnings 0 ``` ```ts import { lintDocs } from \"leadtype/lint\"; ```","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nWhat It Checks\n\nDocs page frontmatter schema validation Changelog frontmatter schema validation when configured meta.json structure Broken /docs/... links in rendered markdown Broken /docs/... links in URL-like frontmatter fields Unresolved framework placeholders in docs URLs Cross-framework links such as a Next.js page linking to a React-only docs route Linting reads source .md and .mdx files, then renders MDX through the default remark pipeline for link checks. Point it at source docs, not generated markdown.","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nCLI Reference\n\nOption Description -- -- srcDir Source directory to scan. Defaults to content when no positional path or --src is provided. --src ; summary: { filesScanned: number; errors: number; warnings: number; }; }; ```","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nRule Reference\n\nRule Severity Meaning -- -- -- schema error A value failed the active frontmatter, changelog, or meta.json schema. unknown-field warn by default A top-level field is not in the active schema and is not read by the default consumers. parse-error error Frontmatter, meta.json , or rendered markdown could not be parsed for validation. invalid-link error A /docs/... link points to a route that does not exist in the source docs tree. unresolved-placeholder error A docs URL still contains an unresolved placeholder such as framework . cross-framework-link error A framework-scoped page links to a different framework's docs route.","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nDefault Schemas\n\nDocs Frontmatter\n\nField Required Type -- -- -- title Yes non-empty string description No string icon No string deprecated No boolean deprecatedReason No string experimental No boolean canary No boolean new No boolean draft No boolean tags No string array group No string or string array availableIn No array of framework, url?, title? full No boolean lastModified and lastAuthor are generated by conversion when enrichFrontmatterFromGit is enabled. Do not author them in source docs.","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nDefault Schemas\n\nChangelog Frontmatter\n\nField Required Type -- -- -- title Yes non-empty string version Yes SemVer string date Yes ISO-8601 or parseable date string description No string icon No string type No release , improvement , retired , or deprecation tags No string array canary No boolean authors No string or string array draft No boolean","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nDefault Schemas\n\nmeta.json\n\nField Required Type -- -- -- pages Yes string array title No non-empty string root No boolean icon No string defaultOpen No boolean nav.sidebar No section or combined nav.label No string nav.mode No string","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nGuidance\n\nRun lint before leadtype generate so content errors fail before artifacts are written. Use --format json for automation and --format github for GitHub Actions annotations. Treat unresolved placeholder errors as content bugs first. If lint fails after a docs move, check meta.json and internal links together; they usually drift at the same time.","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nImport from This surface reads source docs and generated markdown to produce agent-friendly indexes and deep-context bundles.\n\n```ts import { generateLLMFullContextFiles, generateLlmsTxt, } from \"leadtype/llm\"; ```","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nOutput Model\n\ngenerateLlmsTxt\n\nCreates /llms.txt /docs/llms.txt when docsSections is provided Use it to publish a short product summary plus a curated docs map.","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nOutput Model\n\ngenerateLLMFullContextFiles\n\nCreates /llms-full.txt /docs/llms-full.txt /docs/llms-full/ .txt topic files Use it after markdown conversion. It reads .md files under outDir /docs/ .","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nRequired Conventions\n\nSource docs for summaries live under srcDir /docs/ . Converted markdown for full files lives under outDir /docs/ . Run convertAllMdx before generateLLMFullContextFiles .","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nTypical Sequence\n\n```ts await convertAllMdx({ srcDir, outDir, remarkPlugins: [remarkInclude, ...defaultRemarkPlugins], }); await generateLlmsTxt({ srcDir, outDir, baseUrl, product: { name: \"My Docs\", summary: \"Short product summary.\", }, docsSections: [ { title: \"Guides\", links: [{ urlPath: \"/docs/guides/quickstart\" }], }, ], }); await generateLLMFullContextFiles({ outDir, baseUrl, product: { name: \"My Docs\" }, topics: [ { slug: \"guides\", title: \"Guides\", description: \"Full context for guides.\", includePrefixes: [\"guides/\"], }, ], }); ```","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nTopic Design\n\nPrefer multiple narrow topics over one giant full-context file. Good frameworks , self-host , integrations Poor one catch-all topic for the whole docs tree The APIs support nested routers, so parent topics can point to smaller child topics.","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nGuidance\n\nKeep curated summary links opinionated. They should help an agent choose the smallest useful file. Write short, explicit descriptions for topics and sections. Those descriptions become routing hints. If generated files are empty, check that the docs really live under the expected docs/ folder names.","Methodology\n\nHow leadtype differs from Fumadocs, Starlight, and Mintlify.\n\nMethodology\n\nLeadtype is a docs pipeline, not a docs website framework . It produces the artifacts a docs site needs markdown, llms.txt, search index, navigation and stays out of routing, layout, and theming.","Methodology\n\nHow leadtype differs from Fumadocs, Starlight, and Mintlify.\n\nMethodology\n\nThe short version\n\nTool What it gives you -- -- Fumadocs A React docs site framework. Starlight An Astro docs site framework. Mintlify A hosted docs platform with deployment, analytics, and AI built in. Leadtype The portable content layer behind any of the above. Use a website framework when the main job is publishing a polished site quickly. Use a hosted platform when you want zero infra. Use leadtype when you want to own the docs UI but standardize the content pipeline across packages, repos, agent bundles, and search.","Methodology\n\nHow leadtype differs from Fumadocs, Starlight, and Mintlify.\n\nMethodology\n\nWhat leadtype owns\n\nMDX-to-markdown conversion via a remark plugin stack. llms.txt and topic-scoped full-context bundles for agents. A static, edge-safe search index plus optional source-grounded answer streaming. Lint rules for frontmatter, navigation metadata, and internal links. CLI orchestration so the whole pipeline runs from one command.","Methodology\n\nHow leadtype differs from Fumadocs, Starlight, and Mintlify.\n\nMethodology\n\nWhat leadtype does not own\n\nVisual UI, theming, or component styling. Routing, hosting, deployment, or analytics. A prebuilt MDX component library — your docs app provides those see Components .","Methodology\n\nHow leadtype differs from Fumadocs, Starlight, and Mintlify.\n\nMethodology\n\nWhen the combination shines\n\nYou want one docs experience across many repos, but each repo keeps its content next to the code it documents. A shared docs app — public, private, or templated — renders that content with your design system. Leadtype handles conversion, search, validation, and agent outputs identically across every repo. You can also pair leadtype with a website framework use Fumadocs or Starlight for the UI, and run leadtype's pipeline alongside it for llms.txt , agent bundles, or a content-negotiated text/markdown endpoint your framework doesn't ship.","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nFive minutes from a folder of MDX to a complete pipeline output.","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nInstall\n\nPackage manager Command -- -- npm npm install leadtype pnpm pnpm add leadtype yarn yarn add leadtype bun bun add leadtype leadtype ships an executable plus a set of focused entry points leadtype/convert , leadtype/llm , leadtype/search , leadtype/lint , leadtype/remark . The CLI is usually all you need.","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nAuthor one page\n\nCreate docs/index.mdx in your repo Every page needs at minimum a title . Add a group to place it in the nav tree — see Frontmatter.\n\n```mdx --- title: \"My library\" description: \"What it does in one sentence.\" group: get-started --- # My library Welcome. ```","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nGenerate\n\nThe CLI does four things in one pass 1. Convert MDX to markdown Walks docs/ , runs each file through the default remark plugin stack, writes flattened .md to public/docs/ . 2. Generate LLM bundles Writes public/llms.txt the routing index plus public/docs/llms-full/ .txt one file per leaf group, with full content . 3. Build a search index Writes public/docs/search-index.json and public/docs/search-content.json — a BM25 index and a separate content store for excerpts. 4. Resolve groups Reads group from every page's frontmatter and reports which groups it found. The same group tree drives both the nav and llms.txt .\n\n```bash npx leadtype generate \\ --src . \\ --out public \\ --base-url https://docs.example.com ```","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nInspect the output\n\nOpen public/llms.txt to see what an agent will see when you publish. Open public/docs/index.md to see what your authored MDX looks like once flattened — that's the same content the search index and the agent bundles consume.\n\n``` public/ ├── llms.txt # routing index for agents └── docs/ ├── index.md # converted, agent-readable ├── llms.txt # docs-scoped routing index ├── llms-full.txt # all pages flattened ├── llms-full/ │ └── get-started.txt # per-leaf-group bundle ├── search-index.json # BM25 index └── search-content.json # chunk content store ```","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nWhat's next\n\nYou now have the four primitives. From here Wire it into a docs site Bundle docs into your package Understand the pipeline","CLI\n\nleadtype generate and leadtype lint — flags, exit codes, and JSON output.\n\nCLI\n\nTwo commands generate runs the full pipeline, lint validates content. Run leadtype help [options] ```","CLI\n\nleadtype generate and leadtype lint — flags, exit codes, and JSON output.\n\nCLI\n\ngenerate\n\nConvert MDX, build LLM bundles, and produce search artifacts in one pass. Flag Default Description -- -- -- --src ; summary: { filesScanned: number; errors: number; warnings: number; }; }; ```","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nDefault schemas\n\nDocs frontmatter\n\nField Required Type -- -- -- title Yes non-empty string description No string icon No string deprecated No boolean deprecatedReason No string experimental No boolean canary No boolean new No boolean draft No boolean tags No string array group No string or string array availableIn No array of framework, url?, title? full No boolean lastModified and lastAuthor are produced by the converter when --enrich-git is set. Don't author them.","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nDefault schemas\n\nChangelog frontmatter\n\nField Required Type -- -- -- title Yes non-empty string version Yes SemVer string date Yes ISO-8601 or parseable date description No string icon No string type No release , improvement , retired , or deprecation tags No string array canary No boolean authors No string or string array draft No boolean","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nDefault schemas\n\nmeta.json\n\nField Required Type -- -- -- pages Yes string array title No non-empty string root No boolean icon No string defaultOpen No boolean nav.sidebar No section or combined nav.label No string nav.mode No string","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nCustom schemas\n\nPass a Valibot schema to extend or replace the defaults Once you provide a custom schema, unknown-field warnings apply to that schema. Add --error-unknown in CI to keep your contract strict.\n\n```ts import * as v from \"valibot\"; import { lintDocs } from \"leadtype/lint\"; const customFrontmatter = v.object({ title: v.pipe(v.string(), v.minLength(1)), audience: v.picklist([\"beginner\", \"advanced\"]), }); await lintDocs({ srcDir: \"docs\", schemas: { frontmatter: customFrontmatter }, }); ```","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nPractical guidance\n\nRun lint before leadtype generate so content errors fail fast. Use --format github in GitHub Actions and --format json in any other CI. Treat unresolved-placeholder as a content bug first — usually a missing entry in availableIn or a stale URL template. After a docs move, lint and run meta.json updates together; they drift at the same time. For wiring lint into pipelines, see Validate in CI.","LLM bundles\n\nGenerate llms.txt and topic-scoped full-context files for agents.\n\nLLM bundles\n\nThe leadtype/llm entry point produces the agent-facing outputs llms.txt a routing index and llms-full/ .txt per-leaf-group full content . Both are derived from the same docs source.\n\n```ts import { generateLlmsTxt, generateLLMFullContextFiles, resolveDocsNavigation, } from \"leadtype/llm\"; ```","LLM bundles\n\nGenerate llms.txt and topic-scoped full-context files for agents.\n\nLLM bundles\n\nWhat gets generated\n\nFile Purpose -- -- A library that does one thing well. - Helper that handles the boring parts. - Type-safe by default. - Works in any runtime. ## Best Starting Points - [Documentation](https://docs.example.com/docs) - [Quickstart](https://docs.example.com/docs/quickstart) ## Get Started Five-minute happy path and the mental model. - [Quickstart](https://docs.example.com/docs/quickstart): Install and run the pipeline. - [How it works](https://docs.example.com/docs/how-it-works): The mental model. ## Reference CLI flags and conversion APIs. - [CLI](https://docs.example.com/docs/reference/cli): Every flag. ```","LLM bundles\n\nGenerate llms.txt and topic-scoped full-context files for agents.\n\nLLM bundles\n\nTypical sequence\n\ngenerateLLMFullContextFiles reads from 0) { for (const { urlPath, slug } of navigation.unknown) { process.stderr.write(`error: ${urlPath} declares unknown group \"${slug}\".\\n`); } process.exit(1); } ```","LLM bundles\n\nGenerate llms.txt and topic-scoped full-context files for agents.\n\nLLM bundles\n\nTopic design\n\nThe groups you pass to these APIs come from docs.config.ts . Two principles Prefer narrow leaves over one giant bundle. A leaf with 5 pages produces a focused llms-full file an agent can load quickly. A single catch-all leaf with 50 pages produces something most agents will truncate. Write group descriptions for routing, not flavor text. Agents read those descriptions to decide which bundle to load. \"How to install and run\" beats \"Welcome to our guides!\"","LLM bundles\n\nGenerate llms.txt and topic-scoped full-context files for agents.\n\nLLM bundles\n\nBase URL precedence\n\nPass baseUrl explicitly, or use environment variables for layered fallback This is the precedence used by apps/example/scripts/llm-generate.ts . The package-specific LEADTYPE AGENT BASE URL lets each package override the org-wide default.\n\n```ts const baseUrl = process.env.LEADTYPE_AGENT_BASE_URL || process.env.BASE_URL || process.env.PORTLESS_URL || \"https://docs.example.com\"; ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nThe remark stack is what turns interactive MDX into agent-readable markdown. Imports get stripped first, placeholders get resolved, then each named component is flattened into a markdown equivalent. Order matters.\n\n```ts import { defaultRemarkPlugins, remarkInclude, remarkTypeTableToMarkdown, } from \"leadtype/remark\"; ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nThe default stack\n\ndefaultRemarkPlugins runs the stack in this order 1. remarkRemoveImports — strip MDX import and export statements. 2. remarkRemoveJsxComments — strip / ... / JSX comments. 3. remarkResolveDocPlaceholders — replace framework and similar placeholders in URLs. 4. remarkSectionToMarkdown — flatten ri --> rj --> rd --> rs --> rc --> rcd --> rdt --> rm --> rct --> rst --> rt --> rtt --> ra --> rts --> re --> out` ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nWhy order matters\n\nImports must go before placeholder resolution, because some placeholders read from imported modules. Placeholder resolution must go before component flatteners, because flatteners assume URLs are final strings, not template literals. The component flatteners run last so each one sees a clean tree. Don't reorder casually. If you need a custom plugin to run before a flattener for example, to transform a custom component into one of the contracted names , insert it after remarkResolveDocPlaceholders and before the flattener you want to feed.","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nOptional plugins\n\nremarkInclude\n\nAdd this when the source docs use include tags or partial composition Place it before the default stack so included content expands before any flattener sees it.\n\n```ts remarkPlugins: [remarkInclude, ...defaultRemarkPlugins]; ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nOptional plugins\n\nremarkTypeTableToMarkdown with basePath\n\n p !== remarkTypeTableToMarkdown), [remarkTypeTableToMarkdown, { basePath: process.cwd() }], ]; ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nPlugin selection rules\n\nUse defaultRemarkPlugins for any agent-facing or LLM output. Add remarkInclude when docs are composed from shared fragments. Use individual plugins only when you intentionally want to omit a flattener e.g. you don't use /docs/search-index.json /docs/search-content.json ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nRuntime search\n\nThe runtime is edge-safe — no Node APIs, works on Vercel, Cloudflare, and anywhere else Results include heading paths, hash URLs, and snippets ready for a search UI.\n\n```ts import { searchDocs, type DocsSearchIndex, type DocsSearchContentStore, } from \"leadtype/search\"; import indexJson from \"../public/docs/search-index.json\"; import contentJson from \"../public/docs/search-content.json\"; const results = searchDocs( indexJson as DocsSearchIndex, \"tabs install\", { content: contentJson as DocsSearchContentStore } ); ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nReading docs at runtime\n\nThe same index doubles as a virtual filesystem. Three readers, picked by what you have Use readDocsContentFile when you need the entire page for context links . Use readDocsContentChunk when a search result already named the right heading.\n\n```ts import { listDocsContentFiles, readDocsContentFile, readDocsContentChunk, } from \"leadtype/search\"; const allFiles = listDocsContentFiles(index); const wholePage = readDocsContentFile(index, \"guides/quickstart\", content); const oneChunk = readDocsContentChunk(index, \"chunk-0\", content); ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nSource-grounded answers\n\ncreateAnswerContext turns a query plus retrieved chunks into a system and prompt you pass to any model The system message instructs the model to answer only from the retrieved context, cite sources with 1 -style references, and say so when the context is insufficient.\n\n```ts import { createAnswerContext } from \"leadtype/search\"; const context = createAnswerContext(index, \"how do I run lint?\", { content, productName: \"My Library\", }); // → { system, prompt, sources } ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nStreaming via provider entry points\n\nThree thin wrappers around createAnswerContext that stream a Response and surface sources separately. Use one matching your runtime response is a plain text Response. sources is metadata for citation links — display it separately, don't embed it in the streamed answer. For TanStack, pass an explicit adapter . For Cloudflare, build one with createCloudflareDocsAdapter provider, model, options binding env.AI.gateway \"docs\" .\n\n```ts import { streamDocsAnswer } from \"leadtype/search/vercel\"; // Vercel AI SDK / AI Gateway import { streamDocsAnswer } from \"leadtype/search/tanstack\"; // TanStack AI import { streamDocsAnswer } from \"leadtype/search/cloudflare\"; // Cloudflare AI Gateway / Workers AI ``` ```ts const { response, sources } = streamDocsAnswer({ index, content, query, model: process.env.DOCS_SEARCH_MODEL ?? \"openai/gpt-5.4-mini\", productName: \"My Library\", }); ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nBash tool adapters\n\nWhen you want an agent to explore docs with shell commands instead of receiving pre-selected chunks The adapter exposes a read-only virtual /docs filesystem with ls , cat , find , grep , and rg . Network commands, code execution, and writes are disabled. TanStack and Cloudflare expose createDocsBashTools plural over the same filesystem.\n\n```ts import { createDocsBashTool } from \"leadtype/search/vercel\"; const { tools, instructions } = await createDocsBashTool(index, content); ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nAbuse guards\n\nReusable utilities for the request path Helper Purpose -- -- validateDocsQuery Trim and cap query text. readJsonWithLimit Reject oversized JSON bodies before parse. getClientIdentifier Read common proxy IP headers. createMemoryRateLimiter Implements RateLimiter for demos. The in-memory limiter is fine for demos. Production apps should adapt the RateLimiter interface to a shared store — Redis, Vercel KV, Cloudflare KV, or Durable Objects.","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nWhen to add embeddings\n\nStart with the local index. It is static, cheap, edge-safe, and fast for exact API names, config keys, error messages, and paths. Add embeddings only when Users search with vocabulary that doesn't match the docs e.g. \"make it faster\" matching a \"performance optimization\" page . Your docs grow past tens of thousands of chunks and the cold-start memory hit becomes noticeable. Even then, keep the lexical index for exact matches and layer embeddings on top — they're complementary, not replacements.","Remark\n\nReference for the remark plugins and default plugin pipeline exported by leadtype.\n\nRemark\n\nImport from\n\n```ts import { defaultRemarkPlugins, remarkInclude, remarkTypeTableToMarkdown, } from \"leadtype/remark\"; ```","Remark\n\nReference for the remark plugins and default plugin pipeline exported by leadtype.\n\nRemark\n\nDefault Plugin Stack\n\ndefaultRemarkPlugins is the standard MDX-to-markdown pipeline for agent docs. Order matters. The stack 1. Removes MDX imports. 2. Resolves docs placeholders. 3. Flattens JSX-heavy authoring components into plain markdown. The default array includes remarkRemoveImports remarkResolveDocPlaceholders remarkCalloutToMarkdown remarkCardsToMarkdown remarkMermaidToMarkdown remarkCommandTabsToMarkdown remarkStepsToMarkdown remarkTabsToMarkdown remarkTypeTableToMarkdown","Remark\n\nReference for the remark plugins and default plugin pipeline exported by leadtype.\n\nRemark\n\nWhen To Add Extra Plugins\n\nremarkInclude\n\nAdd this when the source docs use include tags or partial composition Place it before the default plugins so included content is expanded before JSX flattening runs.\n\n```ts remarkPlugins: [remarkInclude, ...defaultRemarkPlugins] ```","Remark\n\nReference for the remark plugins and default plugin pipeline exported by leadtype.\n\nRemark\n\nWhen To Add Extra Plugins\n\nremarkTypeTableToMarkdown\n\nThis plugin can be used directly when you only need type-table extraction and not the full pipeline. It pairs with DocsRouteRoute,
} as any)
-const DocsSearchRoute = DocsSearchRouteImport.update({
- id: '/search',
- path: '/search',
- getParentRoute: () => DocsRouteRoute,
-} as any)
-const DocsRemarkRoute = DocsRemarkRouteImport.update({
- id: '/remark',
- path: '/remark',
+const DocsQuickstartRoute = DocsQuickstartRouteImport.update({
+ id: '/quickstart',
+ path: '/quickstart',
getParentRoute: () => DocsRouteRoute,
} as any)
const DocsMethodologyRoute = DocsMethodologyRouteImport.update({
@@ -66,38 +66,69 @@ const DocsMethodologyRoute = DocsMethodologyRouteImport.update({
path: '/methodology',
getParentRoute: () => DocsRouteRoute,
} as any)
-const DocsLlmRoute = DocsLlmRouteImport.update({
- id: '/llm',
- path: '/llm',
+const DocsHowItWorksRoute = DocsHowItWorksRouteImport.update({
+ id: '/how-it-works',
+ path: '/how-it-works',
+ getParentRoute: () => DocsRouteRoute,
+} as any)
+const DocsReferenceSearchRoute = DocsReferenceSearchRouteImport.update({
+ id: '/reference/search',
+ path: '/reference/search',
+ getParentRoute: () => DocsRouteRoute,
+} as any)
+const DocsReferenceRemarkRoute = DocsReferenceRemarkRouteImport.update({
+ id: '/reference/remark',
+ path: '/reference/remark',
getParentRoute: () => DocsRouteRoute,
} as any)
-const DocsLintRoute = DocsLintRouteImport.update({
- id: '/lint',
- path: '/lint',
+const DocsReferenceLlmRoute = DocsReferenceLlmRouteImport.update({
+ id: '/reference/llm',
+ path: '/reference/llm',
getParentRoute: () => DocsRouteRoute,
} as any)
-const DocsConvertRoute = DocsConvertRouteImport.update({
- id: '/convert',
- path: '/convert',
+const DocsReferenceLintRoute = DocsReferenceLintRouteImport.update({
+ id: '/reference/lint',
+ path: '/reference/lint',
getParentRoute: () => DocsRouteRoute,
} as any)
-const DocsComponentsRoute = DocsComponentsRouteImport.update({
- id: '/components',
- path: '/components',
+const DocsReferenceConvertRoute = DocsReferenceConvertRouteImport.update({
+ id: '/reference/convert',
+ path: '/reference/convert',
getParentRoute: () => DocsRouteRoute,
} as any)
-const DocsGuidesConnectDocsSiteRoute =
- DocsGuidesConnectDocsSiteRouteImport.update({
- id: '/guides/connect-docs-site',
- path: '/guides/connect-docs-site',
+const DocsReferenceCliRoute = DocsReferenceCliRouteImport.update({
+ id: '/reference/cli',
+ path: '/reference/cli',
+ getParentRoute: () => DocsRouteRoute,
+} as any)
+const DocsBuildValidateInCiRoute = DocsBuildValidateInCiRouteImport.update({
+ id: '/build/validate-in-ci',
+ path: '/build/validate-in-ci',
+ getParentRoute: () => DocsRouteRoute,
+} as any)
+const DocsBuildConnectDocsSiteRoute =
+ DocsBuildConnectDocsSiteRouteImport.update({
+ id: '/build/connect-docs-site',
+ path: '/build/connect-docs-site',
getParentRoute: () => DocsRouteRoute,
} as any)
-const DocsGuidesBundlePackageDocsRoute =
- DocsGuidesBundlePackageDocsRouteImport.update({
- id: '/guides/bundle-package-docs',
- path: '/guides/bundle-package-docs',
+const DocsBuildBundlePackageDocsRoute =
+ DocsBuildBundlePackageDocsRouteImport.update({
+ id: '/build/bundle-package-docs',
+ path: '/build/bundle-package-docs',
getParentRoute: () => DocsRouteRoute,
} as any)
+const DocsAuthoringFrontmatterRoute =
+ DocsAuthoringFrontmatterRouteImport.update({
+ id: '/authoring/frontmatter',
+ path: '/authoring/frontmatter',
+ getParentRoute: () => DocsRouteRoute,
+ } as any)
+const DocsAuthoringComponentsRoute = DocsAuthoringComponentsRouteImport.update({
+ id: '/authoring/components',
+ path: '/authoring/components',
+ getParentRoute: () => DocsRouteRoute,
+} as any)
const ApiDocsSearchRoute = ApiDocsSearchRouteImport.update({
id: '/api/docs/search',
path: '/api/docs/search',
@@ -114,35 +145,45 @@ export interface FileRoutesByFullPath {
'/docs': typeof DocsRouteRouteWithChildren
'/playground': typeof PlaygroundRoute
'/search': typeof SearchRoute
- '/docs/components': typeof DocsComponentsRoute
- '/docs/convert': typeof DocsConvertRoute
- '/docs/lint': typeof DocsLintRoute
- '/docs/llm': typeof DocsLlmRoute
+ '/docs/how-it-works': typeof DocsHowItWorksRoute
'/docs/methodology': typeof DocsMethodologyRoute
- '/docs/remark': typeof DocsRemarkRoute
- '/docs/search': typeof DocsSearchRoute
+ '/docs/quickstart': typeof DocsQuickstartRoute
'/docs/': typeof DocsIndexRoute
'/api/docs/ask': typeof ApiDocsAskRoute
'/api/docs/search': typeof ApiDocsSearchRoute
- '/docs/guides/bundle-package-docs': typeof DocsGuidesBundlePackageDocsRoute
- '/docs/guides/connect-docs-site': typeof DocsGuidesConnectDocsSiteRoute
+ '/docs/authoring/components': typeof DocsAuthoringComponentsRoute
+ '/docs/authoring/frontmatter': typeof DocsAuthoringFrontmatterRoute
+ '/docs/build/bundle-package-docs': typeof DocsBuildBundlePackageDocsRoute
+ '/docs/build/connect-docs-site': typeof DocsBuildConnectDocsSiteRoute
+ '/docs/build/validate-in-ci': typeof DocsBuildValidateInCiRoute
+ '/docs/reference/cli': typeof DocsReferenceCliRoute
+ '/docs/reference/convert': typeof DocsReferenceConvertRoute
+ '/docs/reference/lint': typeof DocsReferenceLintRoute
+ '/docs/reference/llm': typeof DocsReferenceLlmRoute
+ '/docs/reference/remark': typeof DocsReferenceRemarkRoute
+ '/docs/reference/search': typeof DocsReferenceSearchRoute
}
export interface FileRoutesByTo {
'/': typeof IndexRoute
'/playground': typeof PlaygroundRoute
'/search': typeof SearchRoute
- '/docs/components': typeof DocsComponentsRoute
- '/docs/convert': typeof DocsConvertRoute
- '/docs/lint': typeof DocsLintRoute
- '/docs/llm': typeof DocsLlmRoute
+ '/docs/how-it-works': typeof DocsHowItWorksRoute
'/docs/methodology': typeof DocsMethodologyRoute
- '/docs/remark': typeof DocsRemarkRoute
- '/docs/search': typeof DocsSearchRoute
+ '/docs/quickstart': typeof DocsQuickstartRoute
'/docs': typeof DocsIndexRoute
'/api/docs/ask': typeof ApiDocsAskRoute
'/api/docs/search': typeof ApiDocsSearchRoute
- '/docs/guides/bundle-package-docs': typeof DocsGuidesBundlePackageDocsRoute
- '/docs/guides/connect-docs-site': typeof DocsGuidesConnectDocsSiteRoute
+ '/docs/authoring/components': typeof DocsAuthoringComponentsRoute
+ '/docs/authoring/frontmatter': typeof DocsAuthoringFrontmatterRoute
+ '/docs/build/bundle-package-docs': typeof DocsBuildBundlePackageDocsRoute
+ '/docs/build/connect-docs-site': typeof DocsBuildConnectDocsSiteRoute
+ '/docs/build/validate-in-ci': typeof DocsBuildValidateInCiRoute
+ '/docs/reference/cli': typeof DocsReferenceCliRoute
+ '/docs/reference/convert': typeof DocsReferenceConvertRoute
+ '/docs/reference/lint': typeof DocsReferenceLintRoute
+ '/docs/reference/llm': typeof DocsReferenceLlmRoute
+ '/docs/reference/remark': typeof DocsReferenceRemarkRoute
+ '/docs/reference/search': typeof DocsReferenceSearchRoute
}
export interface FileRoutesById {
__root__: typeof rootRouteImport
@@ -150,18 +191,23 @@ export interface FileRoutesById {
'/docs': typeof DocsRouteRouteWithChildren
'/playground': typeof PlaygroundRoute
'/search': typeof SearchRoute
- '/docs/components': typeof DocsComponentsRoute
- '/docs/convert': typeof DocsConvertRoute
- '/docs/lint': typeof DocsLintRoute
- '/docs/llm': typeof DocsLlmRoute
+ '/docs/how-it-works': typeof DocsHowItWorksRoute
'/docs/methodology': typeof DocsMethodologyRoute
- '/docs/remark': typeof DocsRemarkRoute
- '/docs/search': typeof DocsSearchRoute
+ '/docs/quickstart': typeof DocsQuickstartRoute
'/docs/': typeof DocsIndexRoute
'/api/docs/ask': typeof ApiDocsAskRoute
'/api/docs/search': typeof ApiDocsSearchRoute
- '/docs/guides/bundle-package-docs': typeof DocsGuidesBundlePackageDocsRoute
- '/docs/guides/connect-docs-site': typeof DocsGuidesConnectDocsSiteRoute
+ '/docs/authoring/components': typeof DocsAuthoringComponentsRoute
+ '/docs/authoring/frontmatter': typeof DocsAuthoringFrontmatterRoute
+ '/docs/build/bundle-package-docs': typeof DocsBuildBundlePackageDocsRoute
+ '/docs/build/connect-docs-site': typeof DocsBuildConnectDocsSiteRoute
+ '/docs/build/validate-in-ci': typeof DocsBuildValidateInCiRoute
+ '/docs/reference/cli': typeof DocsReferenceCliRoute
+ '/docs/reference/convert': typeof DocsReferenceConvertRoute
+ '/docs/reference/lint': typeof DocsReferenceLintRoute
+ '/docs/reference/llm': typeof DocsReferenceLlmRoute
+ '/docs/reference/remark': typeof DocsReferenceRemarkRoute
+ '/docs/reference/search': typeof DocsReferenceSearchRoute
}
export interface FileRouteTypes {
fileRoutesByFullPath: FileRoutesByFullPath
@@ -170,53 +216,68 @@ export interface FileRouteTypes {
| '/docs'
| '/playground'
| '/search'
- | '/docs/components'
- | '/docs/convert'
- | '/docs/lint'
- | '/docs/llm'
+ | '/docs/how-it-works'
| '/docs/methodology'
- | '/docs/remark'
- | '/docs/search'
+ | '/docs/quickstart'
| '/docs/'
| '/api/docs/ask'
| '/api/docs/search'
- | '/docs/guides/bundle-package-docs'
- | '/docs/guides/connect-docs-site'
+ | '/docs/authoring/components'
+ | '/docs/authoring/frontmatter'
+ | '/docs/build/bundle-package-docs'
+ | '/docs/build/connect-docs-site'
+ | '/docs/build/validate-in-ci'
+ | '/docs/reference/cli'
+ | '/docs/reference/convert'
+ | '/docs/reference/lint'
+ | '/docs/reference/llm'
+ | '/docs/reference/remark'
+ | '/docs/reference/search'
fileRoutesByTo: FileRoutesByTo
to:
| '/'
| '/playground'
| '/search'
- | '/docs/components'
- | '/docs/convert'
- | '/docs/lint'
- | '/docs/llm'
+ | '/docs/how-it-works'
| '/docs/methodology'
- | '/docs/remark'
- | '/docs/search'
+ | '/docs/quickstart'
| '/docs'
| '/api/docs/ask'
| '/api/docs/search'
- | '/docs/guides/bundle-package-docs'
- | '/docs/guides/connect-docs-site'
+ | '/docs/authoring/components'
+ | '/docs/authoring/frontmatter'
+ | '/docs/build/bundle-package-docs'
+ | '/docs/build/connect-docs-site'
+ | '/docs/build/validate-in-ci'
+ | '/docs/reference/cli'
+ | '/docs/reference/convert'
+ | '/docs/reference/lint'
+ | '/docs/reference/llm'
+ | '/docs/reference/remark'
+ | '/docs/reference/search'
id:
| '__root__'
| '/'
| '/docs'
| '/playground'
| '/search'
- | '/docs/components'
- | '/docs/convert'
- | '/docs/lint'
- | '/docs/llm'
+ | '/docs/how-it-works'
| '/docs/methodology'
- | '/docs/remark'
- | '/docs/search'
+ | '/docs/quickstart'
| '/docs/'
| '/api/docs/ask'
| '/api/docs/search'
- | '/docs/guides/bundle-package-docs'
- | '/docs/guides/connect-docs-site'
+ | '/docs/authoring/components'
+ | '/docs/authoring/frontmatter'
+ | '/docs/build/bundle-package-docs'
+ | '/docs/build/connect-docs-site'
+ | '/docs/build/validate-in-ci'
+ | '/docs/reference/cli'
+ | '/docs/reference/convert'
+ | '/docs/reference/lint'
+ | '/docs/reference/llm'
+ | '/docs/reference/remark'
+ | '/docs/reference/search'
fileRoutesById: FileRoutesById
}
export interface RootRouteChildren {
@@ -265,18 +326,11 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof DocsIndexRouteImport
parentRoute: typeof DocsRouteRoute
}
- '/docs/search': {
- id: '/docs/search'
- path: '/search'
- fullPath: '/docs/search'
- preLoaderRoute: typeof DocsSearchRouteImport
- parentRoute: typeof DocsRouteRoute
- }
- '/docs/remark': {
- id: '/docs/remark'
- path: '/remark'
- fullPath: '/docs/remark'
- preLoaderRoute: typeof DocsRemarkRouteImport
+ '/docs/quickstart': {
+ id: '/docs/quickstart'
+ path: '/quickstart'
+ fullPath: '/docs/quickstart'
+ preLoaderRoute: typeof DocsQuickstartRouteImport
parentRoute: typeof DocsRouteRoute
}
'/docs/methodology': {
@@ -286,46 +340,88 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof DocsMethodologyRouteImport
parentRoute: typeof DocsRouteRoute
}
- '/docs/llm': {
- id: '/docs/llm'
- path: '/llm'
- fullPath: '/docs/llm'
- preLoaderRoute: typeof DocsLlmRouteImport
+ '/docs/how-it-works': {
+ id: '/docs/how-it-works'
+ path: '/how-it-works'
+ fullPath: '/docs/how-it-works'
+ preLoaderRoute: typeof DocsHowItWorksRouteImport
+ parentRoute: typeof DocsRouteRoute
+ }
+ '/docs/reference/search': {
+ id: '/docs/reference/search'
+ path: '/reference/search'
+ fullPath: '/docs/reference/search'
+ preLoaderRoute: typeof DocsReferenceSearchRouteImport
+ parentRoute: typeof DocsRouteRoute
+ }
+ '/docs/reference/remark': {
+ id: '/docs/reference/remark'
+ path: '/reference/remark'
+ fullPath: '/docs/reference/remark'
+ preLoaderRoute: typeof DocsReferenceRemarkRouteImport
+ parentRoute: typeof DocsRouteRoute
+ }
+ '/docs/reference/llm': {
+ id: '/docs/reference/llm'
+ path: '/reference/llm'
+ fullPath: '/docs/reference/llm'
+ preLoaderRoute: typeof DocsReferenceLlmRouteImport
+ parentRoute: typeof DocsRouteRoute
+ }
+ '/docs/reference/lint': {
+ id: '/docs/reference/lint'
+ path: '/reference/lint'
+ fullPath: '/docs/reference/lint'
+ preLoaderRoute: typeof DocsReferenceLintRouteImport
+ parentRoute: typeof DocsRouteRoute
+ }
+ '/docs/reference/convert': {
+ id: '/docs/reference/convert'
+ path: '/reference/convert'
+ fullPath: '/docs/reference/convert'
+ preLoaderRoute: typeof DocsReferenceConvertRouteImport
+ parentRoute: typeof DocsRouteRoute
+ }
+ '/docs/reference/cli': {
+ id: '/docs/reference/cli'
+ path: '/reference/cli'
+ fullPath: '/docs/reference/cli'
+ preLoaderRoute: typeof DocsReferenceCliRouteImport
parentRoute: typeof DocsRouteRoute
}
- '/docs/lint': {
- id: '/docs/lint'
- path: '/lint'
- fullPath: '/docs/lint'
- preLoaderRoute: typeof DocsLintRouteImport
+ '/docs/build/validate-in-ci': {
+ id: '/docs/build/validate-in-ci'
+ path: '/build/validate-in-ci'
+ fullPath: '/docs/build/validate-in-ci'
+ preLoaderRoute: typeof DocsBuildValidateInCiRouteImport
parentRoute: typeof DocsRouteRoute
}
- '/docs/convert': {
- id: '/docs/convert'
- path: '/convert'
- fullPath: '/docs/convert'
- preLoaderRoute: typeof DocsConvertRouteImport
+ '/docs/build/connect-docs-site': {
+ id: '/docs/build/connect-docs-site'
+ path: '/build/connect-docs-site'
+ fullPath: '/docs/build/connect-docs-site'
+ preLoaderRoute: typeof DocsBuildConnectDocsSiteRouteImport
parentRoute: typeof DocsRouteRoute
}
- '/docs/components': {
- id: '/docs/components'
- path: '/components'
- fullPath: '/docs/components'
- preLoaderRoute: typeof DocsComponentsRouteImport
+ '/docs/build/bundle-package-docs': {
+ id: '/docs/build/bundle-package-docs'
+ path: '/build/bundle-package-docs'
+ fullPath: '/docs/build/bundle-package-docs'
+ preLoaderRoute: typeof DocsBuildBundlePackageDocsRouteImport
parentRoute: typeof DocsRouteRoute
}
- '/docs/guides/connect-docs-site': {
- id: '/docs/guides/connect-docs-site'
- path: '/guides/connect-docs-site'
- fullPath: '/docs/guides/connect-docs-site'
- preLoaderRoute: typeof DocsGuidesConnectDocsSiteRouteImport
+ '/docs/authoring/frontmatter': {
+ id: '/docs/authoring/frontmatter'
+ path: '/authoring/frontmatter'
+ fullPath: '/docs/authoring/frontmatter'
+ preLoaderRoute: typeof DocsAuthoringFrontmatterRouteImport
parentRoute: typeof DocsRouteRoute
}
- '/docs/guides/bundle-package-docs': {
- id: '/docs/guides/bundle-package-docs'
- path: '/guides/bundle-package-docs'
- fullPath: '/docs/guides/bundle-package-docs'
- preLoaderRoute: typeof DocsGuidesBundlePackageDocsRouteImport
+ '/docs/authoring/components': {
+ id: '/docs/authoring/components'
+ path: '/authoring/components'
+ fullPath: '/docs/authoring/components'
+ preLoaderRoute: typeof DocsAuthoringComponentsRouteImport
parentRoute: typeof DocsRouteRoute
}
'/api/docs/search': {
@@ -346,29 +442,39 @@ declare module '@tanstack/react-router' {
}
interface DocsRouteRouteChildren {
- DocsComponentsRoute: typeof DocsComponentsRoute
- DocsConvertRoute: typeof DocsConvertRoute
- DocsLintRoute: typeof DocsLintRoute
- DocsLlmRoute: typeof DocsLlmRoute
+ DocsHowItWorksRoute: typeof DocsHowItWorksRoute
DocsMethodologyRoute: typeof DocsMethodologyRoute
- DocsRemarkRoute: typeof DocsRemarkRoute
- DocsSearchRoute: typeof DocsSearchRoute
+ DocsQuickstartRoute: typeof DocsQuickstartRoute
DocsIndexRoute: typeof DocsIndexRoute
- DocsGuidesBundlePackageDocsRoute: typeof DocsGuidesBundlePackageDocsRoute
- DocsGuidesConnectDocsSiteRoute: typeof DocsGuidesConnectDocsSiteRoute
+ DocsAuthoringComponentsRoute: typeof DocsAuthoringComponentsRoute
+ DocsAuthoringFrontmatterRoute: typeof DocsAuthoringFrontmatterRoute
+ DocsBuildBundlePackageDocsRoute: typeof DocsBuildBundlePackageDocsRoute
+ DocsBuildConnectDocsSiteRoute: typeof DocsBuildConnectDocsSiteRoute
+ DocsBuildValidateInCiRoute: typeof DocsBuildValidateInCiRoute
+ DocsReferenceCliRoute: typeof DocsReferenceCliRoute
+ DocsReferenceConvertRoute: typeof DocsReferenceConvertRoute
+ DocsReferenceLintRoute: typeof DocsReferenceLintRoute
+ DocsReferenceLlmRoute: typeof DocsReferenceLlmRoute
+ DocsReferenceRemarkRoute: typeof DocsReferenceRemarkRoute
+ DocsReferenceSearchRoute: typeof DocsReferenceSearchRoute
}
const DocsRouteRouteChildren: DocsRouteRouteChildren = {
- DocsComponentsRoute: DocsComponentsRoute,
- DocsConvertRoute: DocsConvertRoute,
- DocsLintRoute: DocsLintRoute,
- DocsLlmRoute: DocsLlmRoute,
+ DocsHowItWorksRoute: DocsHowItWorksRoute,
DocsMethodologyRoute: DocsMethodologyRoute,
- DocsRemarkRoute: DocsRemarkRoute,
- DocsSearchRoute: DocsSearchRoute,
+ DocsQuickstartRoute: DocsQuickstartRoute,
DocsIndexRoute: DocsIndexRoute,
- DocsGuidesBundlePackageDocsRoute: DocsGuidesBundlePackageDocsRoute,
- DocsGuidesConnectDocsSiteRoute: DocsGuidesConnectDocsSiteRoute,
+ DocsAuthoringComponentsRoute: DocsAuthoringComponentsRoute,
+ DocsAuthoringFrontmatterRoute: DocsAuthoringFrontmatterRoute,
+ DocsBuildBundlePackageDocsRoute: DocsBuildBundlePackageDocsRoute,
+ DocsBuildConnectDocsSiteRoute: DocsBuildConnectDocsSiteRoute,
+ DocsBuildValidateInCiRoute: DocsBuildValidateInCiRoute,
+ DocsReferenceCliRoute: DocsReferenceCliRoute,
+ DocsReferenceConvertRoute: DocsReferenceConvertRoute,
+ DocsReferenceLintRoute: DocsReferenceLintRoute,
+ DocsReferenceLlmRoute: DocsReferenceLlmRoute,
+ DocsReferenceRemarkRoute: DocsReferenceRemarkRoute,
+ DocsReferenceSearchRoute: DocsReferenceSearchRoute,
}
const DocsRouteRouteWithChildren = DocsRouteRoute._addFileChildren(
diff --git a/apps/example/src/routes/docs/components.tsx b/apps/example/src/routes/docs/authoring/components.tsx
similarity index 53%
rename from apps/example/src/routes/docs/components.tsx
rename to apps/example/src/routes/docs/authoring/components.tsx
index 86be51a..1534375 100644
--- a/apps/example/src/routes/docs/components.tsx
+++ b/apps/example/src/routes/docs/authoring/components.tsx
@@ -1,9 +1,9 @@
"use client";
import { createFileRoute } from "@tanstack/react-router";
-import ComponentsDoc from "../../../../../docs/components.mdx";
+import ComponentsDoc from "../../../../../../docs/authoring/components.mdx";
-export const Route = createFileRoute("/docs/components")({
+export const Route = createFileRoute("/docs/authoring/components")({
component: ComponentsRoute,
});
diff --git a/apps/example/src/routes/docs/authoring/frontmatter.tsx b/apps/example/src/routes/docs/authoring/frontmatter.tsx
new file mode 100644
index 0000000..886ff1f
--- /dev/null
+++ b/apps/example/src/routes/docs/authoring/frontmatter.tsx
@@ -0,0 +1,12 @@
+"use client";
+
+import { createFileRoute } from "@tanstack/react-router";
+import FrontmatterDoc from "../../../../../../docs/authoring/frontmatter.mdx";
+
+export const Route = createFileRoute("/docs/authoring/frontmatter")({
+ component: FrontmatterRoute,
+});
+
+function FrontmatterRoute() {
+ return ;
+}
diff --git a/apps/example/src/routes/docs/guides/bundle-package-docs.tsx b/apps/example/src/routes/docs/build/bundle-package-docs.tsx
similarity index 53%
rename from apps/example/src/routes/docs/guides/bundle-package-docs.tsx
rename to apps/example/src/routes/docs/build/bundle-package-docs.tsx
index 0784d81..9ddf3e5 100644
--- a/apps/example/src/routes/docs/guides/bundle-package-docs.tsx
+++ b/apps/example/src/routes/docs/build/bundle-package-docs.tsx
@@ -1,9 +1,9 @@
"use client";
import { createFileRoute } from "@tanstack/react-router";
-import BundlePackageDocsDoc from "../../../../../../docs/guides/bundle-package-docs.mdx";
+import BundlePackageDocsDoc from "../../../../../../docs/build/bundle-package-docs.mdx";
-export const Route = createFileRoute("/docs/guides/bundle-package-docs")({
+export const Route = createFileRoute("/docs/build/bundle-package-docs")({
component: BundlePackageDocsRoute,
});
diff --git a/apps/example/src/routes/docs/guides/connect-docs-site.tsx b/apps/example/src/routes/docs/build/connect-docs-site.tsx
similarity index 53%
rename from apps/example/src/routes/docs/guides/connect-docs-site.tsx
rename to apps/example/src/routes/docs/build/connect-docs-site.tsx
index dbd9bcf..2398254 100644
--- a/apps/example/src/routes/docs/guides/connect-docs-site.tsx
+++ b/apps/example/src/routes/docs/build/connect-docs-site.tsx
@@ -1,9 +1,9 @@
"use client";
import { createFileRoute } from "@tanstack/react-router";
-import ConnectDocsSiteDoc from "../../../../../../docs/guides/connect-docs-site.mdx";
+import ConnectDocsSiteDoc from "../../../../../../docs/build/connect-docs-site.mdx";
-export const Route = createFileRoute("/docs/guides/connect-docs-site")({
+export const Route = createFileRoute("/docs/build/connect-docs-site")({
component: ConnectDocsSiteRoute,
});
diff --git a/apps/example/src/routes/docs/build/validate-in-ci.tsx b/apps/example/src/routes/docs/build/validate-in-ci.tsx
new file mode 100644
index 0000000..085283c
--- /dev/null
+++ b/apps/example/src/routes/docs/build/validate-in-ci.tsx
@@ -0,0 +1,12 @@
+"use client";
+
+import { createFileRoute } from "@tanstack/react-router";
+import ValidateInCiDoc from "../../../../../../docs/build/validate-in-ci.mdx";
+
+export const Route = createFileRoute("/docs/build/validate-in-ci")({
+ component: ValidateInCiRoute,
+});
+
+function ValidateInCiRoute() {
+ return ;
+}
diff --git a/apps/example/src/routes/docs/how-it-works.tsx b/apps/example/src/routes/docs/how-it-works.tsx
new file mode 100644
index 0000000..d4b3e0b
--- /dev/null
+++ b/apps/example/src/routes/docs/how-it-works.tsx
@@ -0,0 +1,12 @@
+"use client";
+
+import { createFileRoute } from "@tanstack/react-router";
+import HowItWorksDoc from "../../../../../docs/how-it-works.mdx";
+
+export const Route = createFileRoute("/docs/how-it-works")({
+ component: HowItWorksRoute,
+});
+
+function HowItWorksRoute() {
+ return ;
+}
diff --git a/apps/example/src/routes/docs/quickstart.tsx b/apps/example/src/routes/docs/quickstart.tsx
new file mode 100644
index 0000000..d8dbaff
--- /dev/null
+++ b/apps/example/src/routes/docs/quickstart.tsx
@@ -0,0 +1,12 @@
+"use client";
+
+import { createFileRoute } from "@tanstack/react-router";
+import QuickstartDoc from "../../../../../docs/quickstart.mdx";
+
+export const Route = createFileRoute("/docs/quickstart")({
+ component: QuickstartRoute,
+});
+
+function QuickstartRoute() {
+ return ;
+}
diff --git a/apps/example/src/routes/docs/reference/cli.tsx b/apps/example/src/routes/docs/reference/cli.tsx
new file mode 100644
index 0000000..e0f37dd
--- /dev/null
+++ b/apps/example/src/routes/docs/reference/cli.tsx
@@ -0,0 +1,12 @@
+"use client";
+
+import { createFileRoute } from "@tanstack/react-router";
+import CliDoc from "../../../../../../docs/reference/cli.mdx";
+
+export const Route = createFileRoute("/docs/reference/cli")({
+ component: CliRoute,
+});
+
+function CliRoute() {
+ return ;
+}
diff --git a/apps/example/src/routes/docs/convert.tsx b/apps/example/src/routes/docs/reference/convert.tsx
similarity index 53%
rename from apps/example/src/routes/docs/convert.tsx
rename to apps/example/src/routes/docs/reference/convert.tsx
index 11a8516..23e5d99 100644
--- a/apps/example/src/routes/docs/convert.tsx
+++ b/apps/example/src/routes/docs/reference/convert.tsx
@@ -1,9 +1,9 @@
"use client";
import { createFileRoute } from "@tanstack/react-router";
-import ConvertDoc from "../../../../../docs/convert.mdx";
+import ConvertDoc from "../../../../../../docs/reference/convert.mdx";
-export const Route = createFileRoute("/docs/convert")({
+export const Route = createFileRoute("/docs/reference/convert")({
component: ConvertRoute,
});
diff --git a/apps/example/src/routes/docs/lint.tsx b/apps/example/src/routes/docs/reference/lint.tsx
similarity index 53%
rename from apps/example/src/routes/docs/lint.tsx
rename to apps/example/src/routes/docs/reference/lint.tsx
index 56fd03e..974f9b5 100644
--- a/apps/example/src/routes/docs/lint.tsx
+++ b/apps/example/src/routes/docs/reference/lint.tsx
@@ -1,9 +1,9 @@
"use client";
import { createFileRoute } from "@tanstack/react-router";
-import LintDoc from "../../../../../docs/lint.mdx";
+import LintDoc from "../../../../../../docs/reference/lint.mdx";
-export const Route = createFileRoute("/docs/lint")({
+export const Route = createFileRoute("/docs/reference/lint")({
component: LintRoute,
});
diff --git a/apps/example/src/routes/docs/llm.tsx b/apps/example/src/routes/docs/reference/llm.tsx
similarity index 54%
rename from apps/example/src/routes/docs/llm.tsx
rename to apps/example/src/routes/docs/reference/llm.tsx
index 9c07b98..c1cce70 100644
--- a/apps/example/src/routes/docs/llm.tsx
+++ b/apps/example/src/routes/docs/reference/llm.tsx
@@ -1,9 +1,9 @@
"use client";
-import LlmDoc from "@docs/llm.mdx";
import { createFileRoute } from "@tanstack/react-router";
+import LlmDoc from "../../../../../../docs/reference/llm.mdx";
-export const Route = createFileRoute("/docs/llm")({
+export const Route = createFileRoute("/docs/reference/llm")({
component: LlmRoute,
});
diff --git a/apps/example/src/routes/docs/remark.tsx b/apps/example/src/routes/docs/reference/remark.tsx
similarity index 53%
rename from apps/example/src/routes/docs/remark.tsx
rename to apps/example/src/routes/docs/reference/remark.tsx
index f649300..8ec1f46 100644
--- a/apps/example/src/routes/docs/remark.tsx
+++ b/apps/example/src/routes/docs/reference/remark.tsx
@@ -1,9 +1,9 @@
"use client";
import { createFileRoute } from "@tanstack/react-router";
-import RemarkDoc from "../../../../../docs/remark.mdx";
+import RemarkDoc from "../../../../../../docs/reference/remark.mdx";
-export const Route = createFileRoute("/docs/remark")({
+export const Route = createFileRoute("/docs/reference/remark")({
component: RemarkRoute,
});
diff --git a/apps/example/src/routes/docs/reference/search.tsx b/apps/example/src/routes/docs/reference/search.tsx
new file mode 100644
index 0000000..10b749a
--- /dev/null
+++ b/apps/example/src/routes/docs/reference/search.tsx
@@ -0,0 +1,12 @@
+"use client";
+
+import { createFileRoute } from "@tanstack/react-router";
+import SearchDoc from "../../../../../../docs/reference/search.mdx";
+
+export const Route = createFileRoute("/docs/reference/search")({
+ component: SearchRoute,
+});
+
+function SearchRoute() {
+ return ;
+}
diff --git a/apps/example/src/routes/docs/search.tsx b/apps/example/src/routes/docs/search.tsx
deleted file mode 100644
index bdf81d9..0000000
--- a/apps/example/src/routes/docs/search.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-"use client";
-
-import { createFileRoute } from "@tanstack/react-router";
-import SearchDoc from "../../../../../docs/search.mdx";
-
-export const Route = createFileRoute("/docs/search")({
- component: SearchDocsRoute,
-});
-
-function SearchDocsRoute() {
- return ;
-}
diff --git a/docs/components.mdx b/docs/authoring/components.mdx
similarity index 51%
rename from docs/components.mdx
rename to docs/authoring/components.mdx
index 0fbf4c8..1f1805f 100644
--- a/docs/components.mdx
+++ b/docs/authoring/components.mdx
@@ -1,22 +1,33 @@
---
title: "Components"
-description: "How to define app-owned MDX components that the leadtype pipeline can flatten."
-group: components
+description: "MDX components the pipeline knows how to flatten into agent-readable markdown."
+group: authoring
---
# Components
-`leadtype` does not export prebuilt UI components or a `mdxComponents` map. The consuming docs app owns runtime rendering, styling, accessibility, and framework-specific integration.
+Leadtype does not ship UI components. **Your docs app owns runtime rendering, styling, and accessibility** — it only has to honor a small naming contract so the remark pipeline can flatten each component into markdown for agents, search, and `llms-full/*.txt` bundles.
-The package only assumes a small authoring contract for MDX component names so the remark pipeline can flatten those components into Markdown for agents, LLM bundles, search indexes, and validation.
+The example app keeps its implementation under `apps/example/src/components/docs-mdx/` and is the canonical reference.
-## App-Owned Adapter Map
+## Why flatten at all?
-Define your own `mdxComponents` map in the docs app. The example app keeps its implementation under `apps/example/src/components/docs-mdx`.
+Interactive MDX components like `` or `` render fine in a browser but do nothing for an agent reading raw text. *Flattening* converts each component into a portable markdown equivalent at conversion time:
-The remark pipeline knows how to flatten the following names: `Accordion`, `AccordionItem`, `Callout`, `Card`, `Cards`, `CommandTabs`, `Example`, `ExtractedTypeTable`, `Mermaid`, `Selector`, `Step`, `Steps`, `Tab`, `Tabs`, `TopicSwitcher`, `TypeTable`.
+- A `` becomes a blockquote.
+- A `` becomes a stack of bold headings, one per tab.
+- A `` becomes a markdown table.
+- A `` becomes a fenced ` ```mermaid ` block — the diagram source survives so other tooling can render it.
-Wire them up like this:
+This means the same content reaches three audiences (humans, agents, search) without you maintaining two copies.
+
+## The naming contract
+
+The remark pipeline recognizes these names. If your components use the same names, flattening Just Works:
+
+`Accordion`, `AccordionItem`, `Callout`, `Card`, `Cards`, `CommandTabs`, `Details`, `Example`, `ExtractedTypeTable`, `Mermaid`, `Section`, `Selector`, `Step`, `Steps`, `Tab`, `Tabs`, `TopicSwitcher`, `TypeTable`.
+
+If your app uses different names, you have two options: rename to match, or add a custom remark plugin that maps your names back to the contract above.
```tsx
import { mdxComponents } from "@/components/docs-mdx";
@@ -26,15 +37,13 @@ const components = {
};
```
-If your app uses different names, add custom remark plugins or adapter components that map authored MDX back to the names handled by the pipeline.
+## Component reference
-## Component Reference
-
-Each section below describes a component, shows its source, and renders a live example. Switch to the agent view (the robot icon in the header) to compare against the flattened markdown the remark pipeline produces.
+Each section below shows the authored MDX and a live render. Switch to the agent view (the robot icon in the example app header) to see the flattened markdown side-by-side.
### Callout
-Wraps supporting context, warnings, or tips. Variants like `info`, `warning`, `success`, `error`, and `tip` change styling but flatten identically into blockquotes.
+Wraps supporting context, warnings, or tips. Variants change styling but flatten identically into a blockquote.
```tsx
@@ -52,23 +61,23 @@ Wraps supporting context, warnings, or tips. Variants like `info`, `warning`, `s
### Cards
-Layout primitive for short, linked entry points. The remark pipeline flattens cards into a bullet list of links.
+A grid of short, linked entry points. Flattens to a bullet list of links.
```tsx
-
+
```
-
-
-
+
+
+
### Steps
-Numbered walkthroughs. The remark pipeline emits an ordered markdown list with bold step titles.
+Numbered walkthroughs. Flattens to an ordered list with bold step titles.
```tsx
@@ -82,7 +91,7 @@ Numbered walkthroughs. The remark pipeline emits an ordered markdown list with b
Use the components in this list as authoring affordances.
- `leadtype generate` (or `bun run pipeline:convert` in this app) writes flattened markdown to `public/docs`.
+ `leadtype generate` writes flattened markdown to `public/docs/`.
HTML for humans, `.md` for agents — same URL, content negotiated by the `Accept` header.
@@ -91,7 +100,7 @@ Numbered walkthroughs. The remark pipeline emits an ordered markdown list with b
### Tabs
-Authoring affordance for grouping equivalent content. The remark pipeline flattens each tab into a bold heading followed by its content so agents do not need a JSX-aware renderer.
+Group equivalent content. Flattens to bold headings followed by content so agents do not need a JSX-aware renderer to read every variant.
```tsx
@@ -115,9 +124,9 @@ Authoring affordance for grouping equivalent content. The remark pipeline flatte
### CommandTabs
-Package-manager-aware install or run commands. The remark pipeline expands them into a markdown table with one row per manager.
+Package-manager-aware install or run commands. Flattens to a markdown table with one row per manager.
-Use `mode="install"` when `command` is a package name, `mode="run"` when `command` is a CLI name, and `mode="create"` for starter commands such as `pnpm create next-app`. `command` can also include a `{pm}` placeholder for custom templates. Use the `commands` prop for exact per-manager overrides and `defaultManager` to choose the initial tab.
+Use `mode="install"` when `command` is a package name, `mode="run"` when `command` is a CLI name, and `mode="create"` for starter commands. Use the `commands` prop for exact per-manager overrides.
```tsx
@@ -134,7 +143,7 @@ Use `mode="install"` when `command` is a package name, `mode="run"` when `comman
### Accordion
-Collapsible details for secondary content. The remark pipeline ignores the open/closed state and flattens every item, so accordions are not a place to hide content from agents.
+Collapsible details for secondary content. Flattening ignores open/closed state and emits every item — accordions are not a place to hide content from agents.
```tsx
@@ -155,15 +164,15 @@ Collapsible details for secondary content. The remark pipeline ignores the open/
### TopicSwitcher
-Reader-facing navigation across equivalent docs topics. Frameworks are one common use, but the same component can represent SDKs, runtimes, deployment targets, or product areas. It does not automatically read LLM topic config.
+Navigation across equivalent docs topics — frameworks, SDKs, runtimes, deployment targets, product areas. Reader-facing only; it does not automatically read LLM topic config.
```tsx
```
@@ -172,17 +181,15 @@ Reader-facing navigation across equivalent docs topics. Frameworks are one commo
label="Framework"
activeValue="react"
items={[
- { value: "react", label: "React", href: "/docs/components", description: "React integration" },
- { value: "vue", label: "Vue", href: "/docs/components", description: "Vue integration" },
- { value: "svelte", label: "Svelte", href: "/docs/components", description: "Svelte integration" },
+ { value: "react", label: "React", href: "/docs/authoring/components", description: "React integration" },
+ { value: "vue", label: "Vue", href: "/docs/authoring/components", description: "Vue integration" },
+ { value: "svelte", label: "Svelte", href: "/docs/authoring/components", description: "Svelte integration" },
]}
/>
### TypeTable and ExtractedTypeTable
-`TypeTable` is for explicit prop or type rows you already know. `ExtractedTypeTable` extracts types from source files at conversion time.
-
-`ExtractedTypeTable` is the most path-sensitive component in the set. If it needs to resolve project files, pair it with the matching remark plugin configuration and set a stable base path.
+`TypeTable` is for explicit prop or type rows you already know. `ExtractedTypeTable` reads a TypeScript file at conversion time and extracts the table from a named type — keep its `path` stable.
```tsx
- The host app owns styling and runtime components while `leadtype` owns conversion.
+ The host app owns styling and runtime components while leadtype owns conversion.
```
### Mermaid
-Diagrams authored as plain text. Renders client-side into an interactive SVG with zoom, pan, and download controls. The remark pipeline preserves the source as a fenced ` ```mermaid ` block so agents see the diagram in a portable form.
+Diagrams authored as plain text. Renders client-side as interactive SVG. Flattening preserves the source as a fenced ` ```mermaid ` block so other tools can render the diagram from the markdown copy.
```tsx
|search index| API
Markdown -->|llms.txt| Agents`} />
-## Guidance
+## Guidelines
-- Keep runtime components in the docs app.
-- Keep component names stable when the conversion pipeline depends on them.
-- If the goal is agent-readable markdown, read [Remark](/docs/remark) instead of reimplementing the JSX flattening rules.
+- Keep runtime components in your docs app. Leadtype stays out of UI.
+- Keep component names stable. Renaming `` breaks the flattening contract until you add a remark plugin to remap.
+- For agent output quality, read the converted `.md` files first and only edit components or plugin order if the markdown actually looks wrong.
diff --git a/docs/authoring/frontmatter.mdx b/docs/authoring/frontmatter.mdx
new file mode 100644
index 0000000..1b3ce98
--- /dev/null
+++ b/docs/authoring/frontmatter.mdx
@@ -0,0 +1,109 @@
+---
+title: "Frontmatter"
+description: "Required fields, group semantics, and how authored MDX becomes a navigation tree."
+group: authoring
+---
+
+# Frontmatter
+
+Every page is a `.mdx` file with a YAML frontmatter block. Leadtype reads three things from it: what the page is, where it lives in the nav, and how to lint it.
+
+## Minimum
+
+```mdx
+---
+title: "Connect a docs site"
+description: "Wire leadtype into a docs app build."
+group: build
+---
+```
+
+- `title` — required. Non-empty string. Renders as the page heading and as the entry text in `llms.txt` and the sidebar.
+- `description` — optional but recommended. Becomes the routing hint in `llms.txt`. If omitted, the converter synthesizes one from the body during conversion (see [convert behavior](/docs/reference/convert)).
+- `group` — optional. Slug of a group declared in `docs.config.ts`. Pages without a group are excluded from the nav and from `llms-full/*.txt`.
+
+## How groups become a nav tree
+
+Each page declares a single group slug. Each group is declared once in `docs.config.ts`. The intersection produces the nav tree, the section headings in `llms.txt`, and the per-leaf `llms-full/.txt` files.
+
+ groups: [authoring, build, reference]"]
+ page1["page A group: authoring"]
+ page2["page B group: build"]
+ page3["page C group: build"]
+ resolver["group resolver"]
+ nav["navigation tree"]
+ llms["llms.txt sections"]
+ full["llms-full/build.txt llms-full/authoring.txt"]
+ cfg --> resolver
+ page1 --> resolver
+ page2 --> resolver
+ page3 --> resolver
+ resolver --> nav
+ resolver --> llms
+ resolver --> full`} />
+
+If a page declares a group slug that isn't in `docs.config.ts`, the build fails with `unknown group ""`. Same source of truth, no drift.
+
+### Nested groups
+
+Declare children in the config to build deeper trees:
+
+```ts
+{
+ slug: "build",
+ title: "Build",
+ children: [
+ { slug: "bundle-package-docs", title: "Bundle a package" },
+ { slug: "connect-docs-site", title: "Connect a docs site" },
+ ],
+}
+```
+
+A page sets `group: bundle-package-docs` and lands in that nested slot. Only **leaf** groups (no children) get an `llms-full/.txt` file — non-leaves are headings only.
+
+## Optional fields
+
+The default lint schema also accepts:
+
+", description: "Cross-framework availability map for TopicSwitcher pages." },
+ full: { type: "boolean", description: "Forces the page into the full-context bundle even when normally excluded." },
+ }}
+/>
+
+`lastModified` and `lastAuthor` are filled in automatically when you pass `--enrich-git` to the CLI. Don't author them by hand.
+
+## Lint rules
+
+`leadtype lint` enforces the schema, so violations surface in CI before they reach a build. The relevant rules:
+
+- `schema` — a required field is missing or has the wrong type.
+- `unknown-field` — a top-level field isn't in the schema (warn by default; `--error-unknown` to fail).
+- `parse-error` — frontmatter or `meta.json` doesn't parse.
+- `invalid-link` — a `/docs/...` link points to a route that doesn't exist.
+- `unresolved-placeholder` — a doc URL still contains an unresolved `{framework}` placeholder.
+- `cross-framework-link` — a framework-scoped page links to another framework's docs.
+
+See [Lint rules](/docs/reference/lint) for the full reference and how to extend the schema.
+
+## What this gives you
+
+Once frontmatter is consistent, the rest of the pipeline works without per-page configuration. The same `group:` value drives:
+
+- The sidebar position
+- The `llms.txt` section
+- The `llms-full/.txt` bundle
+- The search filtering UI (if you build one)
+- Cross-framework link checks in lint
+
+One field, one source of truth.
diff --git a/docs/build/bundle-package-docs.mdx b/docs/build/bundle-package-docs.mdx
new file mode 100644
index 0000000..7aeb60a
--- /dev/null
+++ b/docs/build/bundle-package-docs.mdx
@@ -0,0 +1,117 @@
+---
+title: "Bundle docs into a package"
+description: "Ship agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline."
+group: build
+---
+
+# Bundle docs into a package
+
+Use this path when **you publish a library on npm** and want agents, IDEs, and CLI tooling to read your docs without hitting the network. Run leadtype at prepack time, include the `docs/` output in `files`, and every install gets the same docs your website serves.
+
+The website is for humans. The package-bundled docs are for everyone else.
+
+The reference implementation is leadtype itself: see [`packages/leadtype/scripts/generate-docs.ts`](https://github.com/inthio/leadtype/blob/main/packages/leadtype/scripts/generate-docs.ts) and [`packages/leadtype/package.json`](https://github.com/inthio/leadtype/blob/main/packages/leadtype/package.json).
+
+## The flow
+
+ (your repo)"]
+ cli["leadtype generate --out packages/<name>"]
+ bundle["packages/<name>/docs/ llms.txt llms-full/*.txt *.md search-index.json"]
+ publish["npm publish (docs in 'files')"]
+ install["npm install <name>"]
+ consume["node_modules/<name>/docs/ read by agents · IDEs · CLIs"]
+ src --> cli
+ cli --> bundle
+ bundle --> publish
+ publish --> install
+ install --> consume`} />
+
+## Generate into the package
+
+If source docs live at the repo root:
+
+```bash
+npx leadtype generate \
+ --src . \
+ --out packages/my-package \
+ --base-url https://docs.example.com/my-package \
+ --name "my-package" \
+ --summary "Docs for my-package." \
+ --json
+```
+
+This writes converted markdown, `llms.txt`, full-context bundles, and the search index under `packages/my-package/docs/`.
+
+## Filter to package-specific docs
+
+A monorepo with one shared `docs/` and many packages should bundle only the slice each package owns. Use `--include` (repeatable) and `--exclude`:
+
+```bash
+npx leadtype generate \
+ --src . \
+ --out packages/react \
+ --name "@c15t/react" \
+ --include "frameworks/react/**" \
+ --include "shared/**" \
+ --exclude "**/internal/**" \
+ --json
+```
+
+Filters are explicit. If the package needs shared overview pages, list them too. `--exclude` is applied after `--include`.
+
+## Include in the published tarball
+
+Add `docs` to `files` and run generation as a build or prepack step:
+
+```json
+{
+ "files": ["dist", "docs", "README.md"],
+ "scripts": {
+ "build": "tsup && npx leadtype generate --src ../.. --out . --json"
+ }
+}
+```
+
+This is the shape leadtype itself uses — `packages/leadtype/package.json` lists `docs` in `files`, and the package build regenerates the bundle before publish so the output is always current.
+
+## Verify before publishing
+
+```bash
+npx leadtype generate --src . --out packages/my-package --json
+npm pack --dry-run
+```
+
+`npm pack --dry-run` should list:
+
+- `docs/llms.txt`
+- `docs/llms-full.txt`
+- `docs/llms-full/*.txt`
+- `docs/**/*.md`
+- `docs/search-index.json`
+- `docs/search-content.json`
+
+If something's missing, check `files` in `package.json` and the `--include`/`--exclude` filters.
+
+## How agents discover bundled docs
+
+After `npm install `, the docs sit at `node_modules//docs/`. Agents and IDEs read them in two ways:
+
+- **Routing index** — open `node_modules//docs/llms.txt` first. It links to topic-scoped `llms-full/.txt` files.
+- **Full text** — read the relevant `llms-full/.txt` for deep context, or open individual `.md` files when only one page is needed.
+
+Set the right `--base-url` when generating so the URLs in `llms.txt` point to your hosted docs — agents can fall back to fetching live pages if the bundle is out of date.
+
+## When to use this
+
+Use this when **agents should understand the package from the installed dependency itself** — coding agents that don't have web access, IDE assistants, CLI tools, or air-gapped environments.
+
+Don't use this if your only goal is a public docs website. For that, see [Connect a docs site](/docs/build/connect-docs-site).
+
+## What's next
+
+
+
+
+
+
diff --git a/docs/build/connect-docs-site.mdx b/docs/build/connect-docs-site.mdx
new file mode 100644
index 0000000..fed53b1
--- /dev/null
+++ b/docs/build/connect-docs-site.mdx
@@ -0,0 +1,139 @@
+---
+title: "Connect a docs site"
+description: "Wire leadtype into a docs app build so it serves humans, agents, and search from one source."
+group: build
+---
+
+# Connect a docs site
+
+Use this path when **you run a docs site** (or want to). Leadtype runs before your build to convert MDX, generate the navigation, build the search index, and produce agent-readable bundles. Your site framework — TanStack Start, Next.js, Astro, anything — handles routing and rendering.
+
+The reference implementation lives in `apps/example/` in the leadtype repo. It's also the production docs site you're reading right now.
+
+## The flow
+
+ (your repo)"]
+ cli["leadtype generate"]
+ pub["public/ llms.txt docs/*.md docs/llms-full/*.txt docs/search-index.json docs/search-content.json"]
+ gen["src/generated/ docs-nav.json docs-search-*.json"]
+ vite["vite + content negotiation"]
+ human["Humans (HTML)"]
+ agent["Agents (text/markdown)"]
+ search["Search UI"]
+ src --> cli
+ cli --> pub
+ cli --> gen
+ pub --> vite
+ gen --> vite
+ vite -- "Accept: text/html" --> human
+ vite -- "Accept: text/markdown" --> agent
+ gen --> search`} />
+
+## One-off run
+
+For a single repo where docs and site live together:
+
+```bash
+npx leadtype generate \
+ --src . \
+ --out public \
+ --base-url https://docs.example.com \
+ --name "my-docs" \
+ --summary "Short product summary."
+```
+
+That single command converts MDX, generates `llms.txt`, builds the search index, and resolves the navigation tree. Generated paths are listed by [`leadtype generate`](/docs/reference/cli) and inspected in detail under [How it works](/docs/how-it-works).
+
+## Wire it into the build
+
+Add a pipeline step before vite/Next/Astro builds. The example app does this with a `pipeline:build` script that runs each stage individually for incremental dev:
+
+```json
+{
+ "scripts": {
+ "pipeline:convert": "bun run scripts/mdx-convert.ts",
+ "pipeline:llm": "bun run scripts/llm-generate.ts",
+ "pipeline:search": "bun run scripts/search-generate.ts",
+ "pipeline:build": "bun run pipeline:convert && bun run pipeline:llm && bun run pipeline:search",
+ "build": "bun run pipeline:build && vite build"
+ }
+}
+```
+
+Splitting into separate scripts is optional — the CLI does all three in one pass. Use scripts when you want fine control over plugin order, base URL, or filtering. See [`apps/example/scripts/mdx-convert.ts`](https://github.com/inthio/leadtype/blob/main/apps/example/scripts/mdx-convert.ts) for the canonical setup, including how to add `remarkInclude` for partial expansion or `remarkTypeTableToMarkdown` with a `basePath` for ``.
+
+## Configure the product and groups
+
+Author `docs/docs.config.ts` once and let every stage read from it:
+
+```ts
+import { defineDocsConfig } from "leadtype";
+
+export default defineDocsConfig({
+ product: {
+ name: "my-docs",
+ summary: "Short product summary.",
+ bullets: ["What it does in one bullet.", "Another bullet."],
+ bestStartingPoints: [{ urlPath: "/docs" }, { urlPath: "/docs/quickstart" }],
+ },
+ groups: [
+ { slug: "get-started", title: "Get Started" },
+ { slug: "guides", title: "Guides" },
+ ],
+});
+```
+
+Pages declare `group:` in frontmatter. The config declares the tree. The two together produce the navigation manifest, the `llms.txt` sections, and the lint check that catches typos. See [Frontmatter](/docs/authoring/frontmatter) for the resolution rules.
+
+## Serve markdown to agents
+
+Drop a content-negotiation middleware in front of your static `/docs/*.md` files so agents can fetch markdown from the same URL humans visit. The example app's vite plugin (~30 lines) is in [`apps/example/vite.config.ts`](https://github.com/inthio/leadtype/blob/main/apps/example/vite.config.ts):
+
+```ts
+function rewriteToMarkdown(url, accept) {
+ if (!accept) return null;
+ if (!accept.includes("text/markdown")) return null;
+ if (accept.includes("text/html") && !accept.includes("q=")) return null;
+ // /docs/foo → /docs/foo.md
+ return `${url.replace(/\/$/, "")}.md`;
+}
+```
+
+Browsers send `text/html,*/*` and get HTML. Agents send `Accept: text/markdown` and get the converted `.md`. Same URL, two formats.
+
+For Next.js, wire the same logic in `middleware.ts` and serve `.md` from a route handler. For Cloudflare Pages, use a `_middleware` Worker.
+
+## Connect a remote source
+
+When the docs source lives in a different repo from the docs site:
+
+```bash
+git clone --depth 1 https://github.com/acme/package-a .docs-src/package-a
+npx leadtype lint .docs-src/package-a/docs --format github --error-unknown
+npx leadtype generate --src .docs-src/package-a --out public --json
+npm run build
+```
+
+Run lint first so missing or malformed frontmatter fails before the converter writes anything. Use `--format github` in CI to get inline annotations on the PR. Use `--json` on `generate` so automation can read the resolved groups and search index stats.
+
+This is the shape we expect for orgs hosting one docs UI for multiple package repos: the source lives next to the code it documents, the docs app pulls it in at build time. See [Bundle docs into a package](/docs/build/bundle-package-docs) if the package should *also* ship docs inside its npm tarball.
+
+## Verify
+
+After a clean build:
+
+- `public/docs/index.md` — the converted home page.
+- `public/llms.txt` — the routing index. Should mention every group from your config.
+- `public/docs/llms-full/.txt` — one per leaf group, full content.
+- `public/docs/search-index.json` and `public/docs/search-content.json` — non-empty.
+
+Then start the dev server and `curl -H "Accept: text/markdown" http://localhost:5173/docs/`. You should get the markdown body of `index.md`. If you get HTML, the negotiation middleware isn't wired.
+
+## What's next
+
+
+
+
+
+
diff --git a/docs/build/validate-in-ci.mdx b/docs/build/validate-in-ci.mdx
new file mode 100644
index 0000000..25442f2
--- /dev/null
+++ b/docs/build/validate-in-ci.mdx
@@ -0,0 +1,85 @@
+---
+title: "Validate in CI"
+description: "Run leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish."
+group: build
+---
+
+# Validate in CI
+
+`leadtype lint` reads source MDX, runs the schema and link checks, and exits non-zero on errors. Wire it into CI so docs PRs fail fast on the same rules that would otherwise blow up `leadtype generate` later in the pipeline.
+
+## What it catches
+
+- Missing or wrong-typed frontmatter fields (`schema` rule).
+- Top-level frontmatter fields not in the schema (`unknown-field`).
+- Frontmatter or `meta.json` that doesn't parse (`parse-error`).
+- Internal `/docs/...` links pointing at routes that don't exist (`invalid-link`).
+- Unresolved `{framework}` placeholders left in URLs (`unresolved-placeholder`).
+- Cross-framework links from a framework-scoped page to a different framework's docs (`cross-framework-link`).
+
+See [Lint reference](/docs/reference/lint) for the full rule list and how to extend the schema.
+
+## GitHub Actions
+
+Use `--format github` so violations render as inline annotations on the PR:
+
+```yaml
+name: Lint docs
+on:
+ pull_request:
+ paths:
+ - "docs/**"
+ - "**/*.mdx"
+jobs:
+ lint:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: oven-sh/setup-bun@v2
+ - run: bun install
+ - run: npx leadtype lint docs --format github --error-unknown --max-warnings 0
+```
+
+`--error-unknown` upgrades unknown-field warnings to errors — strict mode. `--max-warnings 0` makes any remaining warning fail the job.
+
+## Other CI providers
+
+Use `--format json` for any CI that doesn't speak the GitHub annotations format:
+
+```bash
+npx leadtype lint docs --format json --error-unknown > lint-report.json
+```
+
+The JSON output includes per-file violations and summary counts. Pipe it into your provider's reporter, post a PR comment, or upload as an artifact.
+
+## Local pre-push hook
+
+Catch issues before they reach CI by running lint in a husky pre-push hook:
+
+```bash
+#!/usr/bin/env sh
+npx leadtype lint docs --max-warnings 0
+```
+
+Keep it under a second by limiting the scan to changed files when you have many pages. The CLI accepts repeated `--ignore` globs to skip stale or generated paths.
+
+## Run before generate
+
+When `leadtype lint` and `leadtype generate` both run in the same job, lint first:
+
+```bash
+npx leadtype lint docs --error-unknown
+npx leadtype generate --src . --out public --json
+```
+
+Generate fails noisily on unknown groups or broken includes. Lint fails specifically on content schema problems with file/line context — much easier to debug.
+
+## What to fix first
+
+When CI fails on a lot of violations, fix them in this order:
+
+1. `parse-error` — frontmatter is broken; nothing else can validate.
+2. `schema` — missing or wrong-typed required fields.
+3. `unresolved-placeholder` — content bug, not a config bug.
+4. `invalid-link` and `cross-framework-link` — usually a stale link after a docs move.
+5. `unknown-field` — last; either delete the field or extend the schema.
diff --git a/docs/convert.mdx b/docs/convert.mdx
deleted file mode 100644
index 50487d7..0000000
--- a/docs/convert.mdx
+++ /dev/null
@@ -1,84 +0,0 @@
----
-title: "Convert"
-description: "How to convert MDX docs into Markdown with leadtype/convert."
-group: convert
----
-
-# Convert
-
-The `leadtype/convert` entrypoint provides three main APIs:
-
-- `convertMdxToMarkdown`
-- `writeMdxFileAsMarkdown`
-- `convertAllMdx`
-
-Import them from:
-
-```ts
-import {
- convertAllMdx,
- convertMdxToMarkdown,
- writeMdxFileAsMarkdown,
-} from "leadtype/convert";
-```
-
-## Main Use Cases
-
-### Convert one file in memory
-
-Use `convertMdxToMarkdown` when you need the rendered markdown string plus the resolved frontmatter.
-
-```ts
-const result = await convertMdxToMarkdown(
- "docs/guides/quickstart.mdx",
- defaultRemarkPlugins,
- false
-);
-```
-
-### Convert a single file to disk
-
-Use `writeMdxFileAsMarkdown` when you already know the source path and output path.
-
-### Convert an entire docs tree
-
-Use `convertAllMdx` for batch conversion:
-
-```ts
-await convertAllMdx({
- srcDir: "content",
- outDir: "public",
- remarkPlugins: defaultRemarkPlugins,
- enrichFrontmatterFromGit: true,
-});
-```
-
-## Important Config
-
-- `srcDir`: root directory containing `.mdx` files.
-- `outDir`: destination for generated `.md` files.
-- `remarkPlugins`: additional unified plugins, usually `defaultRemarkPlugins` from `leadtype/remark`.
-- `enrichFrontmatterFromGit`: adds git-derived metadata when available.
-
-## Behavior Notes
-
-- Frontmatter is preserved when present.
-- If a file has no frontmatter, the converter synthesizes `title` and sometimes `description` from the rendered markdown.
-- Markdown tables and Mermaid blocks are compacted after rendering for cleaner agent consumption.
-- Conversion is concurrent and optimized for large doc trees.
-
-## Recommended Pairing
-
-In most apps, pair conversion with:
-
-```ts
-import { defaultRemarkPlugins, remarkInclude } from "leadtype/remark";
-```
-
-Then pass:
-
-```ts
-remarkPlugins: [remarkInclude, ...defaultRemarkPlugins]
-```
-
-Use `remarkInclude` only when the source docs actually rely on include tags or partial expansion.
diff --git a/docs/docs.config.ts b/docs/docs.config.ts
index 5743c40..f565ed6 100644
--- a/docs/docs.config.ts
+++ b/docs/docs.config.ts
@@ -3,77 +3,48 @@ import { defineDocsConfig } from "leadtype";
export default defineDocsConfig({
product: {
name: "Leadtype",
- summary: "Shared MDX conversion, linting, and LLM-doc generation package.",
+ summary:
+ "A docs pipeline that turns one MDX source into a website, agent-readable bundles, and a search index.",
bullets: [
- "Flattens MDX-heavy docs into clean markdown for agents.",
- "Generates llms.txt plus topic-scoped full-context bundles.",
- "Builds compact static search indexes and source-grounded answer prompts.",
- "Validates frontmatter, docs metadata, and internal docs links.",
+ "Convert MDX into clean markdown that agents and tools can read.",
+ "Generate llms.txt and topic-scoped full-context bundles.",
+ "Build a static search index plus optional source-grounded answers.",
+ "Validate frontmatter, navigation, and internal links before publish.",
],
bestStartingPoints: [
{ urlPath: "/docs" },
- { urlPath: "/docs/guides/connect-docs-site" },
- { urlPath: "/docs/convert" },
- { urlPath: "/docs/llm" },
- { urlPath: "/docs/search" },
+ { urlPath: "/docs/quickstart" },
+ { urlPath: "/docs/how-it-works" },
+ { urlPath: "/docs/build/connect-docs-site" },
+ { urlPath: "/docs/build/bundle-package-docs" },
],
agentGuidance:
- "Start with /docs/llms.txt to route the task, then open the smallest matching topic page.",
+ "Open /docs/llms.txt to route the task, then load the smallest matching topic file from /docs/llms-full/.",
},
groups: [
{
- slug: "overview",
- title: "Overview",
- description: "Start here for package scope and surface selection.",
- },
- {
- slug: "guides",
- title: "Guides",
- description: "Practical ways to wire leadtype into docs apps.",
+ slug: "get-started",
+ title: "Get Started",
+ description:
+ "What leadtype is, how it fits together, and the five-minute happy path.",
},
{
slug: "authoring",
- title: "Authoring And Rendering",
- description: "React MDX components and remark pipeline behavior.",
- children: [
- {
- slug: "components",
- title: "Components",
- description: "React MDX component adapters.",
- },
- {
- slug: "remark",
- title: "Remark",
- description: "Default plugins and conversion helpers.",
- },
- ],
+ title: "Authoring",
+ description:
+ "The content contract: frontmatter, groups, and the MDX components the pipeline can flatten.",
},
{
- slug: "generation",
- title: "Generation",
- description: "MDX conversion, LLM output generation, and search.",
- children: [
- {
- slug: "convert",
- title: "Convert",
- description: "MDX-to-markdown conversion APIs.",
- },
- {
- slug: "llm",
- title: "LLM",
- description: "Summary and full-context file generation.",
- },
- {
- slug: "search",
- title: "Search",
- description: "Static search indexes and AI answer helpers.",
- },
- ],
+ slug: "build",
+ title: "Build",
+ description:
+ "Two journeys: ship docs inside an npm package, or wire leadtype into a docs site.",
},
{
- slug: "validation",
- title: "Validation",
- description: "Content validation and link checks.",
+ slug: "reference",
+ title: "Reference",
+ description:
+ "CLI flags, conversion APIs, remark plugins, LLM bundles, search, and lint rules.",
},
],
});
diff --git a/docs/guides/bundle-package-docs.mdx b/docs/guides/bundle-package-docs.mdx
deleted file mode 100644
index 51b68a7..0000000
--- a/docs/guides/bundle-package-docs.mdx
+++ /dev/null
@@ -1,92 +0,0 @@
----
-title: "Bundle docs into a package"
-description: "How to ship generated agent docs inside an npm package."
-group: guides
----
-
-# Bundle docs into a package
-
-Use this pattern when a package should carry its own agent-readable docs.
-
-The website is for humans. The package-bundled docs are for agents, CLIs, IDEs, and offline tooling that need a small reference set without loading the full docs site.
-
-## Generate into the package
-
-If source docs live at the repo root in `docs/`, generate package docs into the package directory:
-
-```bash
-npx leadtype generate \
- --src . \
- --out packages/my-package \
- --base-url https://docs.example.com/my-package \
- --name "my-package" \
- --summary "Docs for my-package." \
- --format json
-```
-
-This writes converted markdown, `llms.txt`, full-context files, and search artifacts under `packages/my-package/docs`.
-
-## Filter package-specific docs
-
-For package-specific bundles, include only the docs paths that belong to that package:
-
-```bash
-npx leadtype generate \
- --src . \
- --out packages/react \
- --name "@c15t/react" \
- --summary "React bindings for c15t." \
- --include "frameworks/react/**" \
- --format json
-```
-
-Filters are explicit. If a package also needs shared or overview pages, include those paths too:
-
-```bash
-npx leadtype generate \
- --src . \
- --out packages/react \
- --include "frameworks/react/**" \
- --include "shared/**" \
- --format json
-```
-
-Use `--include` more than once for multiple paths. Use `--exclude` to remove private or internal docs after includes are applied.
-
-## Include docs in the package
-
-Add `docs` to the package's published files and run generation as part of the package build or prepack step:
-
-```json
-{
- "files": ["dist", "docs", "README.md"],
- "scripts": {
- "build": "tsup && npx leadtype generate --src ../.. --out . --format json"
- }
-}
-```
-
-This is the shape `leadtype` uses for its own package: `packages/leadtype/package.json` includes `docs` in `files`, and the package build regenerates the docs bundle before publish.
-
-## Verify before publishing
-
-Run the generator and inspect the package tarball:
-
-```bash
-npx leadtype generate --src . --out packages/my-package --format json
-npm pack --dry-run
-```
-
-The dry run should include:
-
-- `docs/llms.txt`
-- `docs/llms-full.txt`
-- `docs/**/*.md`
-- `docs/search-index.json`
-- `docs/search-content.json`
-
-## When to use this
-
-Use this when agents should understand the package from the installed dependency itself.
-
-If the goal is only to power a public docs website, use [Connect a docs site](/docs/guides/connect-docs-site) instead.
diff --git a/docs/guides/connect-docs-site.mdx b/docs/guides/connect-docs-site.mdx
deleted file mode 100644
index c5da667..0000000
--- a/docs/guides/connect-docs-site.mdx
+++ /dev/null
@@ -1,107 +0,0 @@
----
-title: "Connect a docs site"
-description: "How to run the leadtype pipeline before building a docs app."
-group: guides
----
-
-# Connect a docs site
-
-Use this pattern when the docs app lives separately from the package repos it documents.
-
-The docs app owns the UI. Each package repo owns its MDX content. Before the docs app builds, clone the source repos and run the `leadtype` pipeline over their `docs/` folders. If the package should also ship docs for agents, see [Bundle docs into a package](/docs/guides/bundle-package-docs).
-
-For a local repo, run the pipeline directly:
-
-```bash
-npx leadtype generate \
- --src . \
- --out public \
- --base-url https://docs.example.com/leadtype \
- --name "leadtype" \
- --summary "Shared MDX conversion, linting, and LLM-doc generation package." \
- --format json
-```
-
-## Config setup
-
-Use `docs.config.ts` when the source repo should own product metadata and the
-docs group tree used by generation and navigation.
-
-```ts
-import { defineDocsConfig } from "leadtype";
-
-export default defineDocsConfig({
- product: {
- name: "leadtype",
- summary: "Shared MDX conversion, linting, and LLM-doc generation package.",
- bullets: [
- "Flattens MDX-heavy docs into clean markdown for agents.",
- "Generates llms.txt and topic-scoped full-context bundles.",
- ],
- bestStartingPoints: [{ urlPath: "/docs" }],
- },
- groups: [
- {
- slug: "overview",
- title: "Overview",
- description: "Start here for package scope and surface selection.",
- },
- {
- slug: "guides",
- title: "Guides",
- description: "Practical integration guides.",
- },
- ],
-});
-```
-
-The config describes product metadata and the group structure. Individual pages
-join groups from their MDX frontmatter:
-
-```mdx
----
-title: "Connect a docs site"
-description: "How to run the leadtype pipeline before building a docs app."
-group: guides
----
-```
-
-Do not duplicate per-page membership in `docs.config.ts`. The generator reads
-`group` from source frontmatter and uses the config tree to name and organize
-the generated `llms.txt`, full-context files, and runtime navigation data.
-
-## Build flow
-
-1. Clone the source repo into a temporary build directory.
-2. Run `leadtype lint` against the source docs.
-3. Run `leadtype generate` against the clone.
-4. Build the docs app from the generated markdown, `llms.txt`, full-context files, and search artifacts.
-
-```bash
-git clone --depth 1 https://github.com/acme/package-a .docs-src/package-a
-npx leadtype lint .docs-src/package-a/docs --format json --error-unknown
-npx leadtype generate --src .docs-src/package-a --out public/package-a
-npm run build
-```
-
-This is the same shape we expect for repos like `c15t/c15t`: source docs live in a public repo, while the rendered docs UI can be owned by another app or private template.
-
-Use `--format json` in CI or agent workflows. The command prints generated file paths, inferred groups, product metadata, and search index stats as JSON so automation can verify the result without scraping text.
-
-## Generated output
-
-The command writes:
-
-- `public/docs/**/*.md`
-- `public/llms.txt`
-- `public/docs/llms.txt`
-- `public/docs/llms-full.txt`
-- `public/docs/llms-full/*.txt`
-- `public/docs/search-index.json`
-- `public/docs/search-content.json`
-
-## When to use this
-
-Use this when you want one docs UI for many repos, but do not want every package repo to own the same website implementation.
-
-If the docs source already lives inside the docs app repo, skip the clone step and point the pipeline at the local `docs/` directory.
diff --git a/docs/how-it-works.mdx b/docs/how-it-works.mdx
new file mode 100644
index 0000000..806e105
--- /dev/null
+++ b/docs/how-it-works.mdx
@@ -0,0 +1,143 @@
+---
+title: "How it works"
+description: "The mental model: one MDX source, a remark pipeline, four artifacts, three audiences."
+group: get-started
+---
+
+# How it works
+
+Leadtype takes one input — a folder of MDX — and produces every other shape your docs need to take. This page names every piece so the rest of the docs make sense.
+
+## The pipeline
+
+ title · description · group · body"]
+ fm["frontmatter parser"]
+ remark["remark plugin stack (strip imports → flatten components)"]
+ groups["group resolver (nav tree from frontmatter)"]
+ md["public/docs/*.md"]
+ llms["public/llms.txt public/docs/llms-full/*.txt"]
+ idx["public/docs/search-index.json public/docs/search-content.json"]
+ nav["navigation manifest (group → page)"]
+ src --> fm
+ fm --> remark
+ fm --> groups
+ remark --> md
+ md --> llms
+ md --> idx
+ groups --> llms
+ groups --> nav`} />
+
+The remark stack is what turns interactive MDX components into agent-readable markdown. JSX gets *flattened* — a `` becomes a blockquote, a `` becomes a sequence of bold headings, a `` becomes a markdown table. The flattened markdown is what the search index ranks and what `llms-full/*.txt` bundles include.
+
+For the exact stack, see [Remark plugins](/docs/reference/remark). For the component contract, see [Components](/docs/authoring/components).
+
+## The four artifacts
+
+Every run of `leadtype generate` produces four kinds of output. They all derive from the same source — there is no manual duplication.
+
+.md",
+ description:
+ "Flattened markdown for each MDX page. Served to agents via content negotiation; consumed by every other artifact below.",
+ },
+ "LLM bundles": {
+ type: "llms.txt + llms-full/.txt",
+ description:
+ "Routing index plus topic-scoped full-context files. llms.txt is short and links to deeper bundles; each leaf group gets one llms-full file.",
+ },
+ "Search index": {
+ type: "search-index.json + search-content.json",
+ description:
+ "BM25-ranked inverted index over headings, titles, body, and code. Content is stored separately so the index stays small.",
+ },
+ "Navigation manifest": {
+ type: "docs-nav.json",
+ description:
+ "Resolved group tree mapping pages to nav locations. Drives the sidebar in your docs site and the section structure in llms.txt.",
+ },
+ }}
+/>
+
+## The three audiences
+
+ (browser)"]
+ agent["Agents · IDEs · CLIs"]
+ search["Search UI · AI answers"]
+ artifacts -- "HTML render of MDX" --> human
+ artifacts -- "Accept: text/markdown or node_modules//docs/" --> agent
+ artifacts -- "search-index.json + search-content.json" --> search`} />
+
+- **Humans** see the HTML your docs site renders from MDX (or from the converted markdown — same content).
+- **Agents and tools** read the markdown directly. Either over HTTP via `Accept: text/markdown` content negotiation, or offline by reading `node_modules//docs/` after `npm install`.
+- **Search** uses the index plus the content store. Lexical results are exact; the same data feeds optional source-grounded AI answers.
+
+## Vocabulary
+
+A few terms you will see throughout the docs.
+
+ flattens to a blockquote; a flattens to a stack of bold headings.",
+ },
+ group: {
+ type: "frontmatter field",
+ description:
+ "A slug declaring which group a page belongs to. The same string drives the sidebar position, the llms.txt section, and the llms-full/.txt file.",
+ },
+ leaf: {
+ type: "noun",
+ description:
+ "A group that has no children. Each leaf gets its own llms-full file; non-leaf groups are summary headings only.",
+ },
+ chunk: {
+ type: "noun",
+ description:
+ "A heading-aware slice of a page that the search index scores independently. Titles weigh 4×, headings 2×, body 1×, code 0.35×.",
+ },
+ "content negotiation": {
+ type: "noun",
+ description:
+ "Middleware that rewrites GET /docs/foo to /docs/foo.md when the request advertises Accept: text/markdown. Same URL, two formats. Implement it wherever your framework intercepts requests — Next.js middleware, an Astro endpoint, a Cloudflare Worker, a Vite plugin.",
+ },
+ }}
+/>
+
+## What runs when
+
+The `leadtype generate` command runs in a fixed order — each stage depends on the previous one's output:
+
+1. **Parse frontmatter** for every `.mdx` under `docs/`.
+2. **Convert** each file through the [default remark stack](/docs/reference/remark) and write `.md` to `public/docs/`.
+3. **Resolve groups** from frontmatter, validate every page's `group:` matches a known slug.
+4. **Generate LLM bundles** by reading the converted markdown and grouping by leaf.
+5. **Build the search index** by chunking the converted markdown.
+
+If step 3 finds an unknown group, the run fails. That is by design — broken navigation is a content bug, not a render-time problem.
+
+## Where to next
+
+
+
+
+
+
diff --git a/docs/index.mdx b/docs/index.mdx
index 9d80882..b9b7e46 100644
--- a/docs/index.mdx
+++ b/docs/index.mdx
@@ -1,37 +1,69 @@
---
title: "Leadtype"
-description: "Reference map for the shared MDX conversion, linting, and LLM doc-generation package."
-group: overview
+description: "One MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline."
+group: get-started
---
# Leadtype
-`leadtype` is a shared docs package. It provides:
+Leadtype is a **docs pipeline**. You write MDX in one place. It produces every other shape your docs need to take: clean markdown, agent-readable bundles, a static search index, and a navigation tree.
-- A remark pipeline that flattens MDX components into LLM-friendly markdown.
-- MDX to markdown conversion utilities.
-- `llms.txt` and topic-scoped `llms-full/*.txt` generators.
-- Static docs search, content readers, source-grounded answer helpers, and optional bash-tool integration.
-- MDX linting utilities for frontmatter, `meta.json`, and docs links.
+It is not a docs website framework. Bring your own UI — Next.js, TanStack Start, Astro, anything — and let leadtype handle conversion, validation, search, and the agent-facing outputs that website frameworks don't ship.
-## Package Surfaces
+ (your source)"]
+ pipe["leadtype generate (convert · llm · search · lint)"]
+ md["Clean markdown (.md per page)"]
+ llm["llms.txt llms-full/*.txt"]
+ idx["search-index.json search-content.json"]
+ nav["navigation tree (group → page)"]
+ site["Docs website humans"]
+ agent["Agents · IDEs · CLIs via npm package or HTTP"]
+ search["Search UI · AI answers"]
+ src --> pipe
+ pipe --> md
+ pipe --> llm
+ pipe --> idx
+ pipe --> nav
+ md --> site
+ md --> agent
+ llm --> agent
+ idx --> search
+ nav --> site`} />
-- [Components](/docs/components): The app-owned MDX component contract used by the remark pipeline.
-- [Convert](/docs/convert): `convertMdxToMarkdown`, `writeMdxFileAsMarkdown`, and `convertAllMdx`.
-- [Remark](/docs/remark): individual remark plugins plus `defaultRemarkPlugins`.
-- [LLM](/docs/llm): `generateLlmsTxt` and `generateLLMFullContextFiles`.
-- [Search](/docs/search): `generateDocsSearchFiles`, `searchDocs`, source-grounded answer helpers, and the optional bash adapter.
-- [Lint](/docs/lint): `lintDocs` and the `leadtype lint` CLI.
+## Choose your path
-## When To Read Which Page
+Most teams arrive here for one of two reasons. Pick the journey that matches yours — each is a single page that takes you from zero to running.
-- Reach for [Components](/docs/components) when defining app-owned MDX components for authored docs.
-- Use [Convert](/docs/convert) when you need markdown output from `.mdx` files.
-- Check [Remark](/docs/remark) for custom plugin order or component flattening behavior.
-- Open [LLM](/docs/llm) when generating `llms.txt` or topic-scoped full-context bundles.
-- See [Search](/docs/search) for static indexing, runtime querying, or grounded answer streaming.
-- Use [Lint](/docs/lint) to validate frontmatter, docs URLs, or sidebar metadata.
+
+
+
+
-## Other Frameworks
+## What you get
-React, Vue, Nuxt, Svelte, Astro, and other stacks can use the conversion, LLM, lint, and search entry points today. Runtime MDX components belong in the consuming docs app, not this package.
+
+
+ Author MDX with familiar components — `Callout`, `Tabs`, `Steps`, `Mermaid`, `TypeTable`, and others. Add `group:` in frontmatter to place pages in the navigation tree.
+
+
+ A single command converts MDX to markdown, builds `llms.txt` plus topic-scoped bundles, generates a static search index, and resolves the navigation tree.
+
+
+ Your site renders the source MDX; agents and tools fetch the markdown via HTTP content negotiation or load `llms.txt` from `node_modules`. Same content, three audiences.
+
+
+
+## Next
+
+- New here? Read the **[Quickstart](/docs/quickstart)** — five minutes to a generated bundle.
+- Want the mental model first? Read **[How it works](/docs/how-it-works)** for the pipeline diagram and the names of every artifact it produces.
+- Comparing tools? See **[Methodology](/docs/methodology)** for how leadtype differs from Fumadocs, Starlight, and Mintlify.
diff --git a/docs/lint.mdx b/docs/lint.mdx
deleted file mode 100644
index 6ec76a2..0000000
--- a/docs/lint.mdx
+++ /dev/null
@@ -1,191 +0,0 @@
----
-title: "Lint"
-description: "How to validate docs content with lintDocs and the leadtype lint CLI."
-group: validation
----
-
-# Lint
-
-The lint surface validates source docs before conversion or site build. Use it
-in CI when a docs PR changes frontmatter, sidebar metadata, or internal docs
-links.
-
-Run the CLI with a source docs directory:
-
-```bash
-npx leadtype lint docs
-```
-
-For agent or CI workflows, use JSON output and fail on unknown fields:
-
-```bash
-npx leadtype lint docs --format json --error-unknown --max-warnings 0
-```
-
-Import the library API from:
-
-```ts
-import { lintDocs } from "leadtype/lint";
-```
-
-## What It Checks
-
-- Docs page frontmatter schema validation
-- Changelog frontmatter schema validation when configured
-- `meta.json` structure
-- Broken `/docs/...` links in rendered markdown
-- Broken `/docs/...` links in URL-like frontmatter fields
-- Unresolved framework placeholders in docs URLs
-- Cross-framework links such as a Next.js page linking to a React-only docs route
-
-Linting reads source `.md` and `.mdx` files, then renders MDX through the
-default remark pipeline for link checks. Point it at source docs, not generated
-markdown.
-
-## CLI Reference
-
-```bash
-npx leadtype lint [srcDir] [options]
-```
-
-| Option | Description |
-| --- | --- |
-| `[srcDir]` | Source directory to scan. Defaults to `content` when no positional path or `--src` is provided. |
-| `--src ` | Source directory to scan. Equivalent to the positional argument. |
-| `--changelog ` | Subdirectory under the source root that should use the changelog schema. |
-| `--format ` | Report format: `pretty`, `json`, or `github`. Defaults to `pretty`. |
-| `--ignore ` | Docs-root-relative glob to skip. Repeatable. |
-| `--warn-unknown` | Report unknown frontmatter and meta fields as warnings. This is the default. |
-| `--error-unknown` | Report unknown frontmatter and meta fields as errors. |
-| `--max-warnings ` | Exit non-zero when warning count is greater than `n`. |
-| `-h`, `--help` | Print CLI usage. |
-
-Default ignored paths are `**/shared/**`, `**/_shared/**`,
-`**/_partials/**`, and `**/node_modules/**`. When you pass `--ignore`, provide
-each glob you want the run to use.
-
-Exit code `0` means no errors and warnings stayed within `--max-warnings`.
-Exit code `1` means lint errors were found or warnings exceeded the limit. Exit
-code `2` means CLI usage failed.
-
-## Library Usage
-
-```ts
-const result = await lintDocs({
- srcDir: "docs",
- unknownFieldSeverity: "error",
-});
-```
-
-### Options
-
-| Option | Description |
-| --- | --- |
-| `srcDir` | Required root containing `.md`, `.mdx`, and `meta.json` files. |
-| `changelogDir` | Optional subdirectory that should use the changelog schema. |
-| `ignore` | Glob patterns relative to `srcDir`. Defaults to shared fragments, partials, and `node_modules`. |
-| `unknownFieldSeverity` | `warn` or `error` for fields not present in the active schema. Defaults to `warn`. |
-| `schemas.frontmatter` | Custom Valibot object schema for docs page frontmatter. |
-| `schemas.changelogFrontmatter` | Custom Valibot object schema for changelog frontmatter. |
-| `schemas.meta` | Custom Valibot object schema for `meta.json`. |
-
-The result contains file-level violations plus summary counts:
-
-```ts
-type LintResult = {
- violations: Array<{
- file: string;
- kind: "frontmatter" | "changelog" | "meta" | "content";
- severity: "error" | "warn";
- rule:
- | "schema"
- | "unknown-field"
- | "parse-error"
- | "invalid-link"
- | "unresolved-placeholder"
- | "cross-framework-link";
- field?: string;
- message: string;
- }>;
- summary: {
- filesScanned: number;
- errors: number;
- warnings: number;
- };
-};
-```
-
-Required-field failures are reported as `schema` violations. Treat that as the
-public rule for missing or invalid schema fields.
-
-## Rule Reference
-
-| Rule | Severity | Meaning |
-| --- | --- | --- |
-| `schema` | error | A value failed the active frontmatter, changelog, or `meta.json` schema. |
-| `unknown-field` | warn by default | A top-level field is not in the active schema and is not read by the default consumers. |
-| `parse-error` | error | Frontmatter, `meta.json`, or rendered markdown could not be parsed for validation. |
-| `invalid-link` | error | A `/docs/...` link points to a route that does not exist in the source docs tree. |
-| `unresolved-placeholder` | error | A docs URL still contains an unresolved placeholder such as `{framework}`. |
-| `cross-framework-link` | error | A framework-scoped page links to a different framework's docs route. |
-
-## Default Schemas
-
-### Docs Frontmatter
-
-| Field | Required | Type |
-| --- | --- | --- |
-| `title` | Yes | non-empty string |
-| `description` | No | string |
-| `icon` | No | string |
-| `deprecated` | No | boolean |
-| `deprecatedReason` | No | string |
-| `experimental` | No | boolean |
-| `canary` | No | boolean |
-| `new` | No | boolean |
-| `draft` | No | boolean |
-| `tags` | No | string array |
-| `group` | No | string or string array |
-| `availableIn` | No | array of `{ framework, url?, title? }` |
-| `full` | No | boolean |
-
-`lastModified` and `lastAuthor` are generated by conversion when
-`enrichFrontmatterFromGit` is enabled. Do not author them in source docs.
-
-### Changelog Frontmatter
-
-| Field | Required | Type |
-| --- | --- | --- |
-| `title` | Yes | non-empty string |
-| `version` | Yes | SemVer string |
-| `date` | Yes | ISO-8601 or parseable date string |
-| `description` | No | string |
-| `icon` | No | string |
-| `type` | No | `release`, `improvement`, `retired`, or `deprecation` |
-| `tags` | No | string array |
-| `canary` | No | boolean |
-| `authors` | No | string or string array |
-| `draft` | No | boolean |
-
-### `meta.json`
-
-| Field | Required | Type |
-| --- | --- | --- |
-| `pages` | Yes | string array |
-| `title` | No | non-empty string |
-| `root` | No | boolean |
-| `icon` | No | string |
-| `defaultOpen` | No | boolean |
-| `nav.sidebar` | No | `section` or `combined` |
-| `nav.label` | No | string |
-| `nav.mode` | No | string |
-
-## Guidance
-
-- Run lint before `leadtype generate` so content errors fail before artifacts
- are written.
-- Use `--format json` for automation and `--format github` for GitHub Actions
- annotations.
-- Treat unresolved placeholder errors as content bugs first.
-- If lint fails after a docs move, check `meta.json` and internal links
- together; they usually drift at the same time.
diff --git a/docs/llm.mdx b/docs/llm.mdx
deleted file mode 100644
index fbe6a28..0000000
--- a/docs/llm.mdx
+++ /dev/null
@@ -1,100 +0,0 @@
----
-title: "LLM"
-description: "How to generate llms.txt and topic-scoped full-context files from leadtype."
-group: llm
----
-
-# LLM
-
-Import from:
-
-```ts
-import {
- generateLLMFullContextFiles,
- generateLlmsTxt,
-} from "leadtype/llm";
-```
-
-This surface reads source docs and generated markdown to produce agent-friendly indexes and deep-context bundles.
-
-## Output Model
-
-### `generateLlmsTxt`
-
-Creates:
-
-- `/llms.txt`
-- `/docs/llms.txt` when `docsSections` is provided
-
-Use it to publish a short product summary plus a curated docs map.
-
-### `generateLLMFullContextFiles`
-
-Creates:
-
-- `/llms-full.txt`
-- `/docs/llms-full.txt`
-- `/docs/llms-full/*.txt` topic files
-
-Use it after markdown conversion. It reads `.md` files under `{outDir}/docs/`.
-
-## Required Conventions
-
-- Source docs for summaries live under `{srcDir}/docs/`.
-- Converted markdown for full files lives under `{outDir}/docs/`.
-- Run `convertAllMdx` before `generateLLMFullContextFiles`.
-
-## Typical Sequence
-
-```ts
-await convertAllMdx({
- srcDir,
- outDir,
- remarkPlugins: [remarkInclude, ...defaultRemarkPlugins],
-});
-
-await generateLlmsTxt({
- srcDir,
- outDir,
- baseUrl,
- product: {
- name: "My Docs",
- summary: "Short product summary.",
- },
- docsSections: [
- {
- title: "Guides",
- links: [{ urlPath: "/docs/guides/quickstart" }],
- },
- ],
-});
-
-await generateLLMFullContextFiles({
- outDir,
- baseUrl,
- product: { name: "My Docs" },
- topics: [
- {
- slug: "guides",
- title: "Guides",
- description: "Full context for guides.",
- includePrefixes: ["guides/"],
- },
- ],
-});
-```
-
-## Topic Design
-
-Prefer multiple narrow topics over one giant full-context file.
-
-- Good: `frameworks`, `self-host`, `integrations`
-- Poor: one catch-all topic for the whole docs tree
-
-The APIs support nested routers, so parent topics can point to smaller child topics.
-
-## Guidance
-
-- Keep curated summary links opinionated. They should help an agent choose the smallest useful file.
-- Write short, explicit descriptions for topics and sections. Those descriptions become routing hints.
-- If generated files are empty, check that the docs really live under the expected `docs/` folder names.
diff --git a/docs/methodology.mdx b/docs/methodology.mdx
index d9a17dd..a05fa9e 100644
--- a/docs/methodology.mdx
+++ b/docs/methodology.mdx
@@ -1,51 +1,40 @@
---
title: "Methodology"
-description: "How leadtype differs from Fumadocs, Mintlify, and Starlight"
-group: overview
+description: "How leadtype differs from Fumadocs, Starlight, and Mintlify."
+group: get-started
---
# Methodology
-`leadtype` is not a docs website framework. It is the shared pipeline behind docs websites.
-
-We built it at Inth because projects like [c15t](https://c15t.com) and [dsar-sdk](https://dsar-sdk.dev) need one consistent docs system across packages, repos, websites, generated markdown, `llms.txt`, search, and package-bundled agent docs.
-
-The browser UI stays owned by your app. `leadtype` makes the content portable.
+Leadtype is **a docs pipeline, not a docs website framework**. It produces the artifacts a docs site needs (markdown, llms.txt, search index, navigation) and stays out of routing, layout, and theming.
## The short version
-- Fumadocs helps you build a React docs site.
-- Starlight helps you build an Astro docs site.
-- Mintlify gives you a hosted docs platform.
-- `leadtype` helps you reuse the same docs content across sites, packages, search, and agents.
-
-Use the others when the main job is publishing a polished website quickly. Use `leadtype` when the main job is standardizing the docs infrastructure behind one or more websites.
-
-## What it does
-
-`leadtype` gives you framework-neutral tools to:
-
-- Convert MDX-heavy docs into clean markdown.
-- Generate `llms.txt` and full-context topic files.
-- Build static search artifacts.
-- Validate frontmatter, navigation metadata, and links.
-- Ship agent-readable docs inside published packages.
+| Tool | What it gives you |
+| --- | --- |
+| Fumadocs | A React docs site framework. |
+| Starlight | An Astro docs site framework. |
+| Mintlify | A hosted docs platform with deployment, analytics, and AI built in. |
+| Leadtype | The portable content layer behind any of the above. |
-It does not provide the visual docs UI, routing, theme, or hosted deployment.
+Use a website framework when the main job is publishing a polished site quickly. Use a hosted platform when you want zero infra. Use leadtype when you want to **own the docs UI but standardize the content pipeline** across packages, repos, agent bundles, and search.
-## Unified docs across repos
+## What leadtype owns
-This is useful when an organization has many packages but wants one docs experience.
+- MDX-to-markdown conversion via a remark plugin stack.
+- `llms.txt` and topic-scoped full-context bundles for agents.
+- A static, edge-safe search index plus optional source-grounded answer streaming.
+- Lint rules for frontmatter, navigation metadata, and internal links.
+- CLI orchestration so the whole pipeline runs from one command.
-Each repo can keep its MDX next to the code it documents. A shared or private docs UI can render that content with the organization's design system, while `leadtype` handles conversion, linting, search data, and agent-doc generation.
+## What leadtype does not own
-That gives every repo the same output contract without forcing every repo to own the same website implementation.
+- Visual UI, theming, or component styling.
+- Routing, hosting, deployment, or analytics.
+- A prebuilt MDX component library — your docs app provides those (see [Components](/docs/authoring/components)).
-## When to use what
+## When the combination shines
-- Use Fumadocs for a composable React docs framework.
-- Use Starlight for an Astro-first docs site with strong defaults.
-- Use Mintlify for hosted docs with deployment, analytics, API docs, and AI features managed for you.
-- Use `leadtype` when you own the docs app but need shared infrastructure across repos, packages, generated markdown, search, and agent-facing docs.
+You want one docs experience across many repos, but each repo keeps its content next to the code it documents. A shared docs app — public, private, or templated — renders that content with your design system. Leadtype handles conversion, search, validation, and agent outputs identically across every repo.
-These tools can also be used together: use a docs framework or hosted platform for the browser experience, and use `leadtype` for portable docs outputs behind it.
+You can also pair leadtype *with* a website framework: use Fumadocs or Starlight for the UI, and run leadtype's pipeline alongside it for `llms.txt`, agent bundles, or a content-negotiated `text/markdown` endpoint your framework doesn't ship.
diff --git a/docs/quickstart.mdx b/docs/quickstart.mdx
new file mode 100644
index 0000000..29fa576
--- /dev/null
+++ b/docs/quickstart.mdx
@@ -0,0 +1,98 @@
+---
+title: "Quickstart"
+description: "Install leadtype, run it against a docs folder, and inspect the four artifacts it produces."
+group: get-started
+---
+
+# Quickstart
+
+Five minutes from a folder of MDX to a complete pipeline output.
+
+## Install
+
+
+
+`leadtype` ships an executable plus a set of focused entry points (`leadtype/convert`, `leadtype/llm`, `leadtype/search`, `leadtype/lint`, `leadtype/remark`). The CLI is usually all you need.
+
+## Author one page
+
+Create `docs/index.mdx` in your repo:
+
+```mdx
+---
+title: "My library"
+description: "What it does in one sentence."
+group: get-started
+---
+
+# My library
+
+Welcome.
+```
+
+Every page needs at minimum a `title`. Add a `group:` to place it in the nav tree — see [Frontmatter](/docs/authoring/frontmatter).
+
+## Generate
+
+```bash
+npx leadtype generate \
+ --src . \
+ --out public \
+ --base-url https://docs.example.com
+```
+
+The CLI does four things in one pass:
+
+
+
+ Walks `docs/`, runs each file through the default remark plugin stack, writes flattened `.md` to `public/docs/`.
+
+
+ Writes `public/llms.txt` (the routing index) plus `public/docs/llms-full/*.txt` (one file per leaf group, with full content).
+
+
+ Writes `public/docs/search-index.json` and `public/docs/search-content.json` — a BM25 index and a separate content store for excerpts.
+
+
+ Reads `group:` from every page's frontmatter and reports which groups it found. The same group tree drives both the nav and `llms.txt`.
+
+
+
+## Inspect the output
+
+```
+public/
+├── llms.txt # routing index for agents
+└── docs/
+ ├── index.md # converted, agent-readable
+ ├── llms.txt # docs-scoped routing index
+ ├── llms-full.txt # all pages flattened
+ ├── llms-full/
+ │ └── get-started.txt # per-leaf-group bundle
+ ├── search-index.json # BM25 index
+ └── search-content.json # chunk content store
+```
+
+Open `public/llms.txt` to see what an agent will see when you publish. Open `public/docs/index.md` to see what your authored MDX looks like once flattened — that's the same content the search index and the agent bundles consume.
+
+## What's next
+
+You now have the four primitives. From here:
+
+
+
+
+
+
diff --git a/docs/reference/cli.mdx b/docs/reference/cli.mdx
new file mode 100644
index 0000000..9f43dff
--- /dev/null
+++ b/docs/reference/cli.mdx
@@ -0,0 +1,115 @@
+---
+title: "CLI"
+description: "leadtype generate and leadtype lint — flags, exit codes, and JSON output."
+group: reference
+---
+
+# CLI
+
+```bash
+leadtype [options]
+```
+
+Two commands: `generate` runs the full pipeline, `lint` validates content. Run `leadtype help ` for inline usage.
+
+## generate
+
+Convert MDX, build LLM bundles, and produce search artifacts in one pass.
+
+```bash
+leadtype generate [options]
+```
+
+| Flag | Default | Description |
+| --- | --- | --- |
+| `--src ` | `.` | Repo or root directory containing the docs folder. |
+| `--docs-dir ` | `docs` | Docs folder relative to `--src`. |
+| `--out ` | `public` | Output root. The pipeline writes to `/llms.txt` and `/docs/*`. |
+| `--base-url ` | — | Base URL written into generated links. Recommended for any non-local run. |
+| `--name ` | from `package.json#name` | Product name in `llms.txt`. |
+| `--summary ` | from `package.json#description` | Product summary in `llms.txt`. |
+| `--include ` | none | Docs-root-relative glob to include. Repeatable. |
+| `--exclude ` | none | Docs-root-relative glob to exclude. Applied after `--include`. |
+| `--enrich-git` | off | Add `lastModified` and `lastAuthor` to frontmatter from git history. |
+| `--format ` | `text` | `text` or `json`. JSON prints a single result object on stdout. |
+| `--json` | — | Alias for `--format json`. |
+| `-h`, `--help` | — | Print usage. |
+
+Exit codes: `0` success, `1` runtime error (docs dir missing, unknown group, conversion error), `2` CLI usage error.
+
+### JSON output shape
+
+`--json` prints a single object describing what was generated:
+
+```json
+{
+ "srcDir": "/abs/path/to/repo",
+ "docsDir": "/abs/path/to/repo/docs",
+ "outDir": "/abs/path/to/repo/public",
+ "product": { "name": "...", "summary": "..." },
+ "groups": [{ "slug": "get-started", "title": "Get Started" }],
+ "filters": { "include": [], "exclude": [] },
+ "files": {
+ "llmsTxt": "/abs/path/.../public/llms.txt",
+ "docsLlmsTxt": "/abs/path/.../public/docs/llms.txt",
+ "docsLlmsFullTxt": "/abs/path/.../public/docs/llms-full.txt",
+ "searchIndex": "/abs/path/.../public/docs/search-index.json",
+ "searchContent": "/abs/path/.../public/docs/search-content.json"
+ },
+ "search": { /* index stats */ }
+}
+```
+
+Errors in JSON mode print `{"error": "...", ...}` to stderr.
+
+### Group inference
+
+When `docs.config.ts` is not loaded explicitly (the CLI runs without an importing script), groups are **inferred from the union of `group:` values across every page**. The inferred groups become the section structure for `llms.txt`. To control the title/order of groups, run the pipeline from a script that imports `docs.config.ts` directly — see [`apps/example/scripts/llm-generate.ts`](https://github.com/inthio/leadtype/blob/main/apps/example/scripts/llm-generate.ts).
+
+## lint
+
+Validate frontmatter, `meta.json`, and internal links before generation runs.
+
+```bash
+leadtype lint [srcDir] [options]
+```
+
+| Flag | Default | Description |
+| --- | --- | --- |
+| `[srcDir]` | `content` | Source docs root. Equivalent to `--src`. |
+| `--src ` | — | Same as the positional. |
+| `--changelog ` | — | Subdirectory under `srcDir` validated against the changelog schema. |
+| `--format ` | `pretty` | `pretty`, `json`, or `github` (annotation format). |
+| `--ignore ` | shared & node_modules defaults | Glob to skip. Repeatable; passing any `--ignore` overrides defaults. |
+| `--warn-unknown` | on | Report unknown frontmatter and meta fields as warnings. |
+| `--error-unknown` | off | Report unknown fields as errors. |
+| `--max-warnings ` | unlimited | Exit non-zero when warning count exceeds `n`. |
+| `-h`, `--help` | — | Print usage. |
+
+Exit codes: `0` no errors and warnings within budget, `1` lint errors or budget exceeded, `2` CLI usage error.
+
+Default ignored paths: `**/shared/**`, `**/_shared/**`, `**/_partials/**`, `**/node_modules/**`. Pass `--ignore` to extend (each pass overrides the defaults — re-add what you need).
+
+See [Lint reference](/docs/reference/lint) for the full rule list, schema, and how to plug in custom Valibot schemas via the library API.
+
+## help
+
+Show usage:
+
+```bash
+leadtype help # main usage
+leadtype help generate
+leadtype help lint
+```
+
+## Library entry points
+
+The CLI is a thin wrapper. Every command is also available as a TypeScript API for custom build scripts:
+
+- [`leadtype/convert`](/docs/reference/convert) — `convertAllMdx`, `convertMdxToMarkdown`, `writeMdxFileAsMarkdown`.
+- [`leadtype/llm`](/docs/reference/llm) — `generateLlmsTxt`, `generateLLMFullContextFiles`, `resolveDocsNavigation`.
+- [`leadtype/search/node`](/docs/reference/search) — `generateDocsSearchFiles`.
+- [`leadtype/lint`](/docs/reference/lint) — `lintDocs`.
+- [`leadtype/remark`](/docs/reference/remark) — `defaultRemarkPlugins` and individual plugins.
+
+Use the CLI for the happy path, the library entry points when you need custom plugin order, base URL precedence, or alternate output paths.
diff --git a/docs/reference/convert.mdx b/docs/reference/convert.mdx
new file mode 100644
index 0000000..6b86969
--- /dev/null
+++ b/docs/reference/convert.mdx
@@ -0,0 +1,91 @@
+---
+title: "Convert"
+description: "MDX-to-markdown conversion APIs from leadtype/convert."
+group: reference
+---
+
+# Convert
+
+The `leadtype/convert` entry point flattens MDX into clean markdown via the [remark plugin stack](/docs/reference/remark).
+
+```ts
+import {
+ convertAllMdx,
+ convertMdxToMarkdown,
+ writeMdxFileAsMarkdown,
+} from "leadtype/convert";
+```
+
+The CLI ([`leadtype generate`](/docs/reference/cli)) calls `convertAllMdx` internally — use these APIs directly when you need custom plugin order, in-memory output, or per-file control.
+
+## convertAllMdx
+
+Batch convert a docs tree:
+
+```ts
+import { defaultRemarkPlugins, remarkInclude } from "leadtype/remark";
+
+await convertAllMdx({
+ srcDir: "docs",
+ outDir: "public/docs",
+ remarkPlugins: [remarkInclude, ...defaultRemarkPlugins],
+ enrichFrontmatterFromGit: true,
+});
+```
+
+| Option | Description |
+| --- | --- |
+| `srcDir` | Root directory of `.mdx` files. |
+| `outDir` | Destination for `.md` output. The directory structure mirrors `srcDir`. |
+| `remarkPlugins` | Plugin array. Usually `[remarkInclude?, ...defaultRemarkPlugins]`. Order matters. |
+| `enrichFrontmatterFromGit` | When true, adds `lastModified` and `lastAuthor` from git history. |
+
+The function is concurrent — large trees process in parallel.
+
+## convertMdxToMarkdown
+
+Convert one file in memory and get back the markdown plus parsed frontmatter:
+
+```ts
+const result = await convertMdxToMarkdown(
+ "docs/quickstart.mdx",
+ defaultRemarkPlugins,
+ /* enrichFrontmatterFromGit */ false,
+);
+
+console.log(result.markdown);
+console.log(result.frontmatter);
+```
+
+Use this when you want to render the output yourself, validate it before writing, or feed it to another pipeline stage without touching disk.
+
+## writeMdxFileAsMarkdown
+
+Convert one file and write the output:
+
+```ts
+await writeMdxFileAsMarkdown({
+ srcPath: "docs/quickstart.mdx",
+ outPath: "public/docs/quickstart.md",
+ remarkPlugins: defaultRemarkPlugins,
+});
+```
+
+## Behavior notes
+
+- **Frontmatter is preserved.** YAML blocks at the top of the source `.mdx` survive into the output `.md`.
+- **Synthesized frontmatter.** A page without frontmatter gets `title` (and sometimes `description`) inferred from the rendered markdown.
+- **Tables and Mermaid blocks are compacted** after rendering so agent output stays clean.
+- **Conversion is concurrent** — there is no global state.
+
+## Pairing with remark plugins
+
+In most setups, pair `convertAllMdx` with the default plugin stack and `remarkInclude` if your docs use partials:
+
+```ts
+import { defaultRemarkPlugins, remarkInclude } from "leadtype/remark";
+
+remarkPlugins: [remarkInclude, ...defaultRemarkPlugins];
+```
+
+Place `remarkInclude` *before* the defaults so includes expand into the source AST before component flattening sees them. See [Remark plugins](/docs/reference/remark) for the full stack and order rationale.
diff --git a/docs/reference/lint.mdx b/docs/reference/lint.mdx
new file mode 100644
index 0000000..2b00ec1
--- /dev/null
+++ b/docs/reference/lint.mdx
@@ -0,0 +1,168 @@
+---
+title: "Lint rules"
+description: "Schema, link, and navigation checks. CLI and library API."
+group: reference
+---
+
+# Lint rules
+
+`leadtype lint` validates source MDX before generation. Run it in CI to fail PRs on schema and link issues before they reach a build. CLI flags are documented in the [CLI reference](/docs/reference/cli) — this page covers the rules, schemas, and library API.
+
+```ts
+import { lintDocs } from "leadtype/lint";
+```
+
+## Rules
+
+Grouped by what they catch.
+
+### Frontmatter rules
+
+| Rule | Severity | Catches |
+| --- | --- | --- |
+| `schema` | error | Required field missing or wrong type. |
+| `unknown-field` | warn (default) | Top-level field not in the active schema. |
+| `parse-error` | error | YAML frontmatter or `meta.json` won't parse. |
+
+`unknown-field` upgrades to error with `--error-unknown`. Treat `parse-error` as the highest priority — it blocks every other check.
+
+### Content / link rules
+
+| Rule | Severity | Catches |
+| --- | --- | --- |
+| `invalid-link` | error | A `/docs/...` link points to a route that doesn't exist. |
+| `unresolved-placeholder` | error | A docs URL still contains `{framework}` or similar. |
+| `cross-framework-link` | error | A framework-scoped page links to another framework's docs. |
+
+Linting renders MDX through the [default remark stack](/docs/reference/remark) before walking links — same flattening the converter performs, so link checks see the final URLs.
+
+## Library API
+
+```ts
+import { lintDocs } from "leadtype/lint";
+
+const result = await lintDocs({
+ srcDir: "docs",
+ unknownFieldSeverity: "error",
+});
+```
+
+| Option | Description |
+| --- | --- |
+| `srcDir` | Required. Root of `.md`, `.mdx`, and `meta.json` files. |
+| `changelogDir` | Subdirectory under `srcDir` validated against the changelog schema. |
+| `ignore` | Glob patterns relative to `srcDir`. Defaults shown below. |
+| `unknownFieldSeverity` | `"warn"` or `"error"` for fields outside the schema. Default: `"warn"`. |
+| `schemas.frontmatter` | Custom Valibot schema for docs page frontmatter. |
+| `schemas.changelogFrontmatter` | Custom Valibot schema for changelog frontmatter. |
+| `schemas.meta` | Custom Valibot schema for `meta.json`. |
+
+Default ignore patterns: `**/shared/**`, `**/_shared/**`, `**/_partials/**`, `**/node_modules/**`.
+
+### Result shape
+
+```ts
+type LintResult = {
+ violations: Array<{
+ file: string;
+ kind: "frontmatter" | "changelog" | "meta" | "content";
+ severity: "error" | "warn";
+ rule:
+ | "schema"
+ | "unknown-field"
+ | "parse-error"
+ | "invalid-link"
+ | "unresolved-placeholder"
+ | "cross-framework-link";
+ field?: string;
+ message: string;
+ }>;
+ summary: {
+ filesScanned: number;
+ errors: number;
+ warnings: number;
+ };
+};
+```
+
+Required-field failures are reported as `schema` violations — that's the public rule for missing or invalid required fields.
+
+## Default schemas
+
+### Docs frontmatter
+
+| Field | Required | Type |
+| --- | --- | --- |
+| `title` | Yes | non-empty string |
+| `description` | No | string |
+| `icon` | No | string |
+| `deprecated` | No | boolean |
+| `deprecatedReason` | No | string |
+| `experimental` | No | boolean |
+| `canary` | No | boolean |
+| `new` | No | boolean |
+| `draft` | No | boolean |
+| `tags` | No | string array |
+| `group` | No | string or string array |
+| `availableIn` | No | array of `{ framework, url?, title? }` |
+| `full` | No | boolean |
+
+`lastModified` and `lastAuthor` are produced by the converter when `--enrich-git` is set. Don't author them.
+
+### Changelog frontmatter
+
+| Field | Required | Type |
+| --- | --- | --- |
+| `title` | Yes | non-empty string |
+| `version` | Yes | SemVer string |
+| `date` | Yes | ISO-8601 or parseable date |
+| `description` | No | string |
+| `icon` | No | string |
+| `type` | No | `release`, `improvement`, `retired`, or `deprecation` |
+| `tags` | No | string array |
+| `canary` | No | boolean |
+| `authors` | No | string or string array |
+| `draft` | No | boolean |
+
+### `meta.json`
+
+| Field | Required | Type |
+| --- | --- | --- |
+| `pages` | Yes | string array |
+| `title` | No | non-empty string |
+| `root` | No | boolean |
+| `icon` | No | string |
+| `defaultOpen` | No | boolean |
+| `nav.sidebar` | No | `section` or `combined` |
+| `nav.label` | No | string |
+| `nav.mode` | No | string |
+
+## Custom schemas
+
+Pass a Valibot schema to extend or replace the defaults:
+
+```ts
+import * as v from "valibot";
+import { lintDocs } from "leadtype/lint";
+
+const customFrontmatter = v.object({
+ title: v.pipe(v.string(), v.minLength(1)),
+ audience: v.picklist(["beginner", "advanced"]),
+});
+
+await lintDocs({
+ srcDir: "docs",
+ schemas: { frontmatter: customFrontmatter },
+});
+```
+
+Once you provide a custom schema, `unknown-field` warnings apply to *that* schema. Add `--error-unknown` in CI to keep your contract strict.
+
+## Practical guidance
+
+- Run lint **before** `leadtype generate` so content errors fail fast.
+- Use `--format github` in GitHub Actions and `--format json` in any other CI.
+- Treat `unresolved-placeholder` as a content bug first — usually a missing entry in `availableIn` or a stale URL template.
+- After a docs move, lint and run `meta.json` updates together; they drift at the same time.
+
+For wiring lint into pipelines, see [Validate in CI](/docs/build/validate-in-ci).
diff --git a/docs/reference/llm.mdx b/docs/reference/llm.mdx
new file mode 100644
index 0000000..8d9ebbb
--- /dev/null
+++ b/docs/reference/llm.mdx
@@ -0,0 +1,137 @@
+---
+title: "LLM bundles"
+description: "Generate llms.txt and topic-scoped full-context files for agents."
+group: reference
+---
+
+# LLM bundles
+
+The `leadtype/llm` entry point produces the agent-facing outputs: `llms.txt` (a routing index) and `llms-full/*.txt` (per-leaf-group full content). Both are derived from the same docs source.
+
+```ts
+import {
+ generateLlmsTxt,
+ generateLLMFullContextFiles,
+ resolveDocsNavigation,
+} from "leadtype/llm";
+```
+
+## What gets generated
+
+| File | Purpose |
+| --- | --- |
+| `/llms.txt` | Top-level routing index. Product summary, best starting points, links to deeper bundles. |
+| `/docs/llms.txt` | Docs-scoped routing index. Lists every group with descriptions and entry links. |
+| `/docs/llms-full.txt` | All pages flattened into one file. Use for agents with very large context windows. |
+| `/docs/llms-full/.txt` | One per leaf group. Topic-scoped full content for narrower context budgets. |
+
+Only **leaf** groups (no children) get an `llms-full/.txt`. Non-leaf groups appear as headings inside the parent file.
+
+## Example llms.txt
+
+```txt
+# My Library
+
+> A library that does one thing well.
+
+- Helper that handles the boring parts.
+- Type-safe by default.
+- Works in any runtime.
+
+## Best Starting Points
+
+- [Documentation](https://docs.example.com/docs)
+- [Quickstart](https://docs.example.com/docs/quickstart)
+
+## Get Started
+
+Five-minute happy path and the mental model.
+
+- [Quickstart](https://docs.example.com/docs/quickstart): Install and run the pipeline.
+- [How it works](https://docs.example.com/docs/how-it-works): The mental model.
+
+## Reference
+
+CLI flags and conversion APIs.
+
+- [CLI](https://docs.example.com/docs/reference/cli): Every flag.
+```
+
+## Typical sequence
+
+```ts
+import { convertAllMdx } from "leadtype/convert";
+import { defaultRemarkPlugins, remarkInclude } from "leadtype/remark";
+import {
+ generateLLMFullContextFiles,
+ generateLlmsTxt,
+} from "leadtype/llm";
+
+await convertAllMdx({
+ srcDir: "docs",
+ outDir: "public/docs",
+ remarkPlugins: [remarkInclude, ...defaultRemarkPlugins],
+});
+
+await generateLlmsTxt({
+ srcDir: ".",
+ outDir: "public",
+ baseUrl: "https://docs.example.com",
+ product: {
+ name: "My Library",
+ summary: "A library that does one thing well.",
+ },
+ groups: docsConfig.groups,
+});
+
+await generateLLMFullContextFiles({
+ outDir: "public",
+ baseUrl: "https://docs.example.com",
+ product: { name: "My Library" },
+ groups: docsConfig.groups,
+});
+```
+
+`generateLLMFullContextFiles` reads from `/docs/`, so always run conversion first.
+
+## resolveDocsNavigation
+
+Same group-resolution logic the LLM bundles use, but returns the navigation manifest as a plain object — useful for driving a sidebar UI:
+
+```ts
+const navigation = await resolveDocsNavigation({
+ srcDir: ".",
+ baseUrl: "https://docs.example.com",
+ groups: docsConfig.groups,
+});
+
+if (navigation.unknown.length > 0) {
+ for (const { urlPath, slug } of navigation.unknown) {
+ process.stderr.write(`error: ${urlPath} declares unknown group "${slug}".\n`);
+ }
+ process.exit(1);
+}
+```
+
+Write the result to `src/generated/docs-nav.json` and import it from your sidebar component. This is the pattern the example app uses — see [`apps/example/scripts/llm-generate.ts`](https://github.com/inthio/leadtype/blob/main/apps/example/scripts/llm-generate.ts).
+
+## Topic design
+
+The `groups` you pass to these APIs come from `docs.config.ts`. Two principles:
+
+- **Prefer narrow leaves over one giant bundle.** A leaf with 5 pages produces a focused `llms-full` file an agent can load quickly. A single catch-all leaf with 50 pages produces something most agents will truncate.
+- **Write group descriptions for routing, not flavor text.** Agents read those descriptions to decide which bundle to load. "How to install and run" beats "Welcome to our guides!"
+
+## Base URL precedence
+
+Pass `baseUrl` explicitly, or use environment variables for layered fallback:
+
+```ts
+const baseUrl =
+ process.env.LEADTYPE_AGENT_BASE_URL ||
+ process.env.BASE_URL ||
+ process.env.PORTLESS_URL ||
+ "https://docs.example.com";
+```
+
+This is the precedence used by `apps/example/scripts/llm-generate.ts`. The package-specific `LEADTYPE_AGENT_BASE_URL` lets each package override the org-wide default.
diff --git a/docs/reference/remark.mdx b/docs/reference/remark.mdx
new file mode 100644
index 0000000..d33dced
--- /dev/null
+++ b/docs/reference/remark.mdx
@@ -0,0 +1,105 @@
+---
+title: "Remark plugins"
+description: "The default plugin stack that flattens MDX components into markdown."
+group: reference
+---
+
+# Remark plugins
+
+The remark stack is what turns interactive MDX into agent-readable markdown. Imports get stripped first, placeholders get resolved, then each named component is flattened into a markdown equivalent. Order matters.
+
+```ts
+import {
+ defaultRemarkPlugins,
+ remarkInclude,
+ remarkTypeTableToMarkdown,
+} from "leadtype/remark";
+```
+
+## The default stack
+
+ ri --> rj --> rd --> rs --> rc --> rcd --> rdt --> rm --> rct --> rst --> rt --> rtt --> ra --> rts --> re --> out`} />
+
+`defaultRemarkPlugins` runs the stack in this order:
+
+1. `remarkRemoveImports` — strip MDX `import` and `export` statements.
+2. `remarkRemoveJsxComments` — strip `{/* ... */}` JSX comments.
+3. `remarkResolveDocPlaceholders` — replace `{framework}` and similar placeholders in URLs.
+4. `remarkSectionToMarkdown` — flatten `` containers.
+5. `remarkCalloutToMarkdown` — `` → blockquote.
+6. `remarkCardsToMarkdown` — `` → bulleted link list.
+7. `remarkDetailsToMarkdown` — flatten `` blocks.
+8. `remarkMermaidToMarkdown` — `` → fenced ` ```mermaid ` block.
+9. `remarkCommandTabsToMarkdown` — `` → markdown table.
+10. `remarkStepsToMarkdown` — `` → ordered list.
+11. `remarkTabsToMarkdown` — `` → bold heading per tab.
+12. `remarkTypeTableToMarkdown` — `` and `` → markdown table.
+13. `remarkAccordionToMarkdown` — `` → flattened sections (open/closed state ignored).
+14. `remarkTopicSwitcherToMarkdown` — `` → labeled link list.
+15. `remarkExampleToMarkdown` — `` → fenced code block plus body.
+
+## Why order matters
+
+Imports must go before placeholder resolution, because some placeholders read from imported modules. Placeholder resolution must go before component flatteners, because flatteners assume URLs are final strings, not template literals. The component flatteners run last so each one sees a clean tree.
+
+Don't reorder casually. If you need a custom plugin to run before a flattener (for example, to transform a custom component into one of the contracted names), insert it after `remarkResolveDocPlaceholders` and before the flattener you want to feed.
+
+## Optional plugins
+
+### remarkInclude
+
+Add this when the source docs use include tags or partial composition:
+
+```ts
+remarkPlugins: [remarkInclude, ...defaultRemarkPlugins];
+```
+
+Place it before the default stack so included content expands before any flattener sees it.
+
+### remarkTypeTableToMarkdown (with basePath)
+
+`` reads a TypeScript file at conversion time. When the file path is relative, the plugin needs a `basePath` to resolve from. Override the default plugin entry to pass options:
+
+```ts
+import {
+ defaultRemarkPlugins,
+ remarkTypeTableToMarkdown,
+} from "leadtype/remark";
+
+const remarkPlugins = [
+ ...defaultRemarkPlugins.filter((p) => p !== remarkTypeTableToMarkdown),
+ [remarkTypeTableToMarkdown, { basePath: process.cwd() }],
+];
+```
+
+Live example — extracted from `apps/example/type-fixtures/pipeline-example.ts`:
+
+
+
+## Plugin selection rules
+
+- Use `defaultRemarkPlugins` for any agent-facing or LLM output.
+- Add `remarkInclude` when docs are composed from shared fragments.
+- Use individual plugins only when you intentionally want to omit a flattener (e.g. you don't use `` and want to skip its processing cost).
+- If output looks wrong, read the converted `.md` first. The fix is almost never reordering — it's usually a custom plugin between two existing ones.
diff --git a/docs/reference/search.mdx b/docs/reference/search.mdx
new file mode 100644
index 0000000..9c24b2f
--- /dev/null
+++ b/docs/reference/search.mdx
@@ -0,0 +1,153 @@
+---
+title: "Search"
+description: "Static search index, runtime helpers, and source-grounded answer streaming."
+group: reference
+---
+# Search
+
+Leadtype builds a **static, edge-safe search index** over your docs at build time and exposes a runtime that queries it without touching a database. Source-grounded answer streaming layers on top via provider-specific entry points.
+
+## Vocabulary
+
+- **Chunk** — a heading-aware slice of a page. Each chunk is a separate document in the index, so search results jump to the right section, not just the right page.
+- **BM25** — the ranking function. Titles weigh 4×, headings 2×, body 1×, code 0.35×. Tunable in the index generator.
+- **Index** — `search-index.json`. Compact tuple format with term postings, document refs, and chunk refs.
+- **Content store** — `search-content.json`. The actual chunk text, separated from the index so you can search without loading content, then read content lazily for excerpts and answers.
+
+## Build-time indexing
+
+Generate after MDX conversion:
+
+```ts
+import { generateDocsSearchFiles } from "leadtype/search/node";
+
+await generateDocsSearchFiles({
+ outDir: "public",
+ baseUrl: "https://docs.example.com",
+});
+```
+
+The generator reads markdown under `/docs/` and writes:
+
+```
+/docs/search-index.json
+/docs/search-content.json
+```
+
+Splitting them keeps the index small (load on every search) while content stays cheap (load on result hover or answer generation).
+
+## Runtime search
+
+The runtime is edge-safe — no Node APIs, works on Vercel, Cloudflare, and anywhere else:
+
+```ts
+import {
+ searchDocs,
+ type DocsSearchIndex,
+ type DocsSearchContentStore,
+} from "leadtype/search";
+import indexJson from "../public/docs/search-index.json";
+import contentJson from "../public/docs/search-content.json";
+
+const results = searchDocs(
+ indexJson as DocsSearchIndex,
+ "tabs install",
+ { content: contentJson as DocsSearchContentStore }
+);
+```
+
+Results include heading paths, hash URLs, and snippets ready for a search UI.
+
+## Reading docs at runtime
+
+The same index doubles as a virtual filesystem. Three readers, picked by what you have:
+
+```ts
+import {
+ listDocsContentFiles,
+ readDocsContentFile,
+ readDocsContentChunk,
+} from "leadtype/search";
+
+const allFiles = listDocsContentFiles(index);
+const wholePage = readDocsContentFile(index, "guides/quickstart", content);
+const oneChunk = readDocsContentChunk(index, "chunk-0", content);
+```
+
+Use `readDocsContentFile` when you need the entire page (for context links). Use `readDocsContentChunk` when a search result already named the right heading.
+
+## Source-grounded answers
+
+`createAnswerContext` turns a query plus retrieved chunks into a `system` and `prompt` you pass to any model:
+
+```ts
+import { createAnswerContext } from "leadtype/search";
+
+const context = createAnswerContext(index, "how do I run lint?", {
+ content,
+ productName: "My Library",
+});
+// → { system, prompt, sources }
+```
+
+The system message instructs the model to answer only from the retrieved context, cite sources with `[1]`-style references, and say so when the context is insufficient.
+
+## Streaming via provider entry points
+
+Three thin wrappers around `createAnswerContext` that stream a Response and surface sources separately. Use one matching your runtime:
+
+```ts
+import { streamDocsAnswer } from "leadtype/search/vercel"; // Vercel AI SDK / AI Gateway
+import { streamDocsAnswer } from "leadtype/search/tanstack"; // TanStack AI
+import { streamDocsAnswer } from "leadtype/search/cloudflare"; // Cloudflare AI Gateway / Workers AI
+```
+
+```ts
+const { response, sources } = streamDocsAnswer({
+ index,
+ content,
+ query,
+ model: "openai/gpt-5.5",
+ productName: "My Library",
+});
+```
+
+`response` is a plain text Response. `sources` is metadata for citation links — display it separately, don't embed it in the streamed answer.
+
+For TanStack, pass an explicit `adapter`. For Cloudflare, build one with `createCloudflareDocsAdapter({ provider, model, options: { binding: env.AI.gateway("docs") } })`.
+
+## Bash tool adapters
+
+When you want an agent to **explore docs with shell commands** instead of receiving pre-selected chunks:
+
+```ts
+import { createDocsBashTool } from "leadtype/search/vercel";
+
+const { tools, instructions } = await createDocsBashTool(index, content);
+```
+
+The adapter exposes a read-only virtual `/docs` filesystem with `ls`, `cat`, `find`, `grep`, and `rg`. Network commands, code execution, and writes are disabled. TanStack and Cloudflare expose `createDocsBashTools` (plural) over the same filesystem.
+
+## Abuse guards
+
+Reusable utilities for the request path:
+
+
+| Helper | Purpose |
+| ------------------------- | ------------------------------------------ |
+| `validateDocsQuery` | Trim and cap query text. |
+| `readJsonWithLimit` | Reject oversized JSON bodies before parse. |
+| `getClientIdentifier` | Read common proxy IP headers. |
+| `createMemoryRateLimiter` | Implements `RateLimiter` for demos. |
+
+
+The in-memory limiter is fine for demos. Production apps should adapt the `RateLimiter` interface to a shared store — Redis, Vercel KV, Cloudflare KV, or Durable Objects.
+
+## When to add embeddings
+
+Start with the local index. It is static, cheap, edge-safe, and fast for exact API names, config keys, error messages, and paths. Add embeddings only when:
+
+- Users search with vocabulary that doesn't match the docs (e.g. "make it faster" matching a "performance optimization" page).
+- Your docs grow past tens of thousands of chunks and the cold-start memory hit becomes noticeable.
+
+Even then, keep the lexical index for exact matches and layer embeddings on top — they're complementary, not replacements.
\ No newline at end of file
diff --git a/docs/remark.mdx b/docs/remark.mdx
deleted file mode 100644
index d8bbb6e..0000000
--- a/docs/remark.mdx
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: "Remark"
-description: "Reference for the remark plugins and default plugin pipeline exported by leadtype."
-group: remark
----
-
-# Remark
-
-Import from:
-
-```ts
-import {
- defaultRemarkPlugins,
- remarkInclude,
- remarkTypeTableToMarkdown,
-} from "leadtype/remark";
-```
-
-## Default Plugin Stack
-
-`defaultRemarkPlugins` is the standard MDX-to-markdown pipeline for agent docs.
-
-Order matters. The stack:
-
-1. Removes MDX imports.
-2. Resolves docs placeholders.
-3. Flattens JSX-heavy authoring components into plain markdown.
-
-The default array includes:
-
-- `remarkRemoveImports`
-- `remarkResolveDocPlaceholders`
-- `remarkCalloutToMarkdown`
-- `remarkCardsToMarkdown`
-- `remarkMermaidToMarkdown`
-- `remarkCommandTabsToMarkdown`
-- `remarkStepsToMarkdown`
-- `remarkTabsToMarkdown`
-- `remarkTypeTableToMarkdown`
-
-## When To Add Extra Plugins
-
-### `remarkInclude`
-
-Add this when the source docs use include tags or partial composition:
-
-```ts
-remarkPlugins: [remarkInclude, ...defaultRemarkPlugins]
-```
-
-Place it before the default plugins so included content is expanded before JSX flattening runs.
-
-### `remarkTypeTableToMarkdown`
-
-This plugin can be used directly when you only need type-table extraction and not the full pipeline. It pairs with `` in MDX, which references a TypeScript file and a type name; the plugin reads the file at build time and renders a markdown table.
-
-Live example — extracted from `./apps/example/type-fixtures/pipeline-example.ts`:
-
-
-
-## Plugin Selection Guide
-
-- Use `defaultRemarkPlugins` for agent or LLM output.
-- Add `remarkInclude` when docs are composed from shared fragments.
-- Use individual plugins only when a consumer needs a custom order or intentionally omits behavior.
-
-## Guidance
-
-- Do not reorder the default stack casually. Import stripping and placeholder resolution need to happen before markdown flattening.
-- Keep custom plugins small and place them with intent. Content-shaping plugins usually belong before the default component flatteners.
-- If the problem is output quality rather than raw parsing, start by checking the converted markdown from [Convert](/docs/convert) before changing plugin order.
diff --git a/docs/search.mdx b/docs/search.mdx
deleted file mode 100644
index fdb8d2c..0000000
--- a/docs/search.mdx
+++ /dev/null
@@ -1,223 +0,0 @@
----
-title: Search
-description: Generate and query a static docs search index, then stream source-grounded AI answers.
-group: search
----
-
-# Search
-
-Import runtime helpers from:
-
-```ts
-import {
- createAnswerContext,
- createMemoryRateLimiter,
- type DocsSearchContentStore,
- type DocsSearchIndex,
- listDocsContentFiles,
- readDocsContentChunk,
- readDocsContentFile,
- readJsonWithLimit,
- searchDocs,
- validateDocsQuery,
-} from "leadtype/search";
-```
-
-Import the Node-only generator from:
-
-```ts
-import { generateDocsSearchFiles } from "leadtype/search/node";
-```
-
-Use the provider entrypoints for answer streaming and provider-compatible bash
-tools:
-
-```ts
-import { streamDocsAnswer as streamVercelDocsAnswer } from "leadtype/search/vercel";
-import { streamDocsAnswer as streamTanStackDocsAnswer } from "leadtype/search/tanstack";
-import { streamDocsAnswer as streamCloudflareDocsAnswer } from "leadtype/search/cloudflare";
-```
-
-| Use case | Import |
-| --- | --- |
-| Search, content reads, request guards, and rate limiting | `leadtype/search` |
-| Vercel AI Gateway / AI SDK answer + bash tools | `leadtype/search/vercel` |
-| TanStack AI answer + bash tools | `leadtype/search/tanstack` |
-| Cloudflare AI Gateway / Workers AI answer + bash tools | `leadtype/search/cloudflare` |
-
-## Build-Time Indexing
-
-Generate the index after converting MDX to markdown:
-
-```ts
-await generateDocsSearchFiles({
- outDir: "public",
- baseUrl: "https://docs.example.com",
-});
-```
-
-The generator reads markdown under `{outDir}/docs` and writes split files by
-default:
-
-```txt
-{outDir}/docs/search-index.json
-{outDir}/docs/search-content.json
-```
-
-`search-index.json` uses a compact v2 tuple format for documents, chunks, and
-term postings. `search-content.json` stores answer-source text separately. This
-keeps search metadata smaller and gives the AI path a precise way to read only
-the page or heading chunks it needs.
-
-## Runtime Search
-
-The core runtime is edge-safe. Import both generated JSON files and pass content
-when you want excerpts:
-
-```ts
-const results = searchDocs(indexJson as DocsSearchIndex, "tabs install", {
- content: contentJson as DocsSearchContentStore,
-});
-```
-
-Search uses normalized tokens, a small stopword list, heading-aware chunks, and
-BM25-style ranking. Titles and headings are weighted above body text; code is
-searchable with a lower weight.
-
-## Docs Content Files
-
-The same generated index also acts as a small virtual docs filesystem:
-
-```ts
-const files = listDocsContentFiles(indexJson as DocsSearchIndex);
-const quickstart = readDocsContentFile(
- indexJson as DocsSearchIndex,
- "guides/quickstart",
- contentJson as DocsSearchContentStore
-);
-const sourceChunk = readDocsContentChunk(
- indexJson as DocsSearchIndex,
- "chunk-0",
- contentJson as DocsSearchContentStore
-);
-```
-
-Use `readDocsContentFile` when a UI or agent wants a whole normalized page. Use
-`readDocsContentChunk` when the search result already identifies the relevant
-heading chunk. Returned chunks include heading paths, hash URLs, source text, and
-metadata needed for citations.
-
-## Answer Context
-
-Use `createAnswerContext` when wiring a custom model call:
-
-```ts
-const context = createAnswerContext(indexJson as DocsSearchIndex, query, {
- content: contentJson as DocsSearchContentStore,
- productName: "My Docs",
-});
-```
-
-The returned `system` and `prompt` instruct the model to answer only from
-retrieved docs context, cite sources with `[1]` style citations, treat docs text
-as untrusted reference content, and say when context is insufficient.
-
-## Vercel AI Gateway / AI SDK Streaming
-
-Use `streamDocsAnswer` for a minimal Vercel AI SDK integration:
-
-```ts
-import { streamDocsAnswer } from "leadtype/search/vercel";
-
-const { response, sources } = streamDocsAnswer({
- index: indexJson as DocsSearchIndex,
- content: contentJson as DocsSearchContentStore,
- query,
- model: process.env.DOCS_SEARCH_MODEL ?? "openai/gpt-5.4-mini",
- productName: "My Docs",
-});
-```
-
-`streamDocsAnswer` returns a plain text `Response`. Display `sources`
-separately in your own UI; they are metadata for source links, not embedded in
-the streamed answer.
-
-## BYO Gateway Streaming
-
-TanStack callers pass the adapter explicitly:
-
-```ts
-import { streamDocsAnswer } from "leadtype/search/tanstack";
-
-const { response, sources } = streamDocsAnswer({
- index: indexJson as DocsSearchIndex,
- content: contentJson as DocsSearchContentStore,
- query,
- adapter,
-});
-```
-
-Cloudflare callers use explicit provider mapping:
-
-```ts
-import {
- createCloudflareDocsAdapter,
- streamDocsAnswer,
-} from "leadtype/search/cloudflare";
-
-const adapter = createCloudflareDocsAdapter({
- provider: "openai",
- model: "gpt-4o",
- options: {
- binding: env.AI.gateway("docs-gateway"),
- },
-});
-
-const { response, sources } = streamDocsAnswer({
- index: indexJson as DocsSearchIndex,
- content: contentJson as DocsSearchContentStore,
- query,
- adapter,
-});
-```
-
-## Bash Tool Adapters
-
-Use the matching provider entrypoint when an agent should inspect docs through
-shell commands instead of receiving only preselected chunks:
-
-```ts
-import { createDocsBashTool } from "leadtype/search/vercel";
-
-const { tools, instructions } = await createDocsBashTool(
- indexJson as DocsSearchIndex,
- contentJson as DocsSearchContentStore
-);
-```
-
-Vercel wraps the read-only `/docs` filesystem with `bash-tool`. TanStack and
-Cloudflare export `createDocsBashTools`, which exposes native TanStack tools over
-the same filesystem. Network commands, Python, JavaScript execution, and
-filesystem writes are disabled by default.
-
-## Abuse Guards
-
-The package includes reusable request-path utilities:
-
-* `validateDocsQuery` trims and caps query text.
-* `readJsonWithLimit` rejects oversized JSON bodies before parsing.
-* `getClientIdentifier` reads common proxy IP headers.
-* `createMemoryRateLimiter` implements the `RateLimiter` interface for demos.
-
-In-memory rate limiting is not strong across serverless instances. Production
-docs sites should adapt the `RateLimiter` interface to a shared store such as
-Redis, Vercel KV, Cloudflare KV, or Durable Objects.
-
-## When To Use Embeddings
-
-Start with the local index for most docs sites. It is static, cheap, portable to
-Vercel and Cloudflare, and has no request-time database dependency. As docs grow,
-keep lexical search for exact APIs, config keys, paths, and errors; add a
-virtual content layer for precise page reads; then add embeddings or hosted
-search when users need semantic matches that do not share vocabulary with the
-docs, or when chunk counts become large enough to hurt cold-start memory.
diff --git a/packages/leadtype/README.md b/packages/leadtype/README.md
index 54e0553..b03099f 100644
--- a/packages/leadtype/README.md
+++ b/packages/leadtype/README.md
@@ -1,18 +1,13 @@
# leadtype
-Framework-neutral docs pipeline tooling for any docs app.
+A docs pipeline. Write MDX once. Get a website, agent-readable bundles, and a static search index from a single command.
-## Package Surfaces
+- Flattens MDX components into clean markdown that agents and tools can read.
+- Generates `llms.txt` plus topic-scoped full-context bundles.
+- Builds a static, edge-safe search index (BM25, optional source-grounded answers).
+- Validates frontmatter, navigation, and internal links.
-- `leadtype/remark`: remark plugins plus `defaultRemarkPlugins`
-- `leadtype/convert`: MDX-to-markdown conversion APIs
-- `leadtype/llm`: `llms.txt` and topic-scoped full-context generation
-- `leadtype/search`: headless static docs search, answer prompts, request guards, and rate limiter helpers
-- `leadtype/search/node`: Node-only search index generation
-- `leadtype/search/vercel`: Vercel AI Gateway / AI SDK answer streaming and bash tools
-- `leadtype/search/tanstack`: TanStack AI answer streaming and bash tools
-- `leadtype/search/cloudflare`: Cloudflare AI Gateway / Workers AI adapter helpers and bash tools
-- `leadtype/lint`: docs validation and the `leadtype lint` CLI
+leadtype is not a docs website framework. Bring your own UI — Next.js, TanStack Start, Astro, anything.
## Install
@@ -20,160 +15,64 @@ Framework-neutral docs pipeline tooling for any docs app.
pnpm add leadtype
```
-## Convert Docs
-
-`leadtype` does not export prebuilt UI components. The docs app owns its MDX component map and styling; this package owns the framework-neutral conversion, LLM, lint, and search pipeline:
-
-```ts
-import { convertAllMdx } from "leadtype/convert";
-import { defaultRemarkPlugins, remarkInclude } from "leadtype/remark";
-
-await convertAllMdx({
- srcDir: "content",
- outDir: "public",
- remarkPlugins: [remarkInclude, ...defaultRemarkPlugins],
-});
-```
-
-## Validation Layers
-
-This package is verified in three distinct layers:
-
-- Package unit tests in `packages/leadtype/src/**/*.test.ts*` cover pure library behavior such as conversion, search, linting, and generated docs output.
-- Pipeline fixtures in `apps/example/scripts` and `apps/example/content` exercise MDX conversion, LLM generation, and `ExtractedTypeTable`.
-- The live consumer demo in `apps/example` owns and renders its MDX components inside a TanStack Start app and provides Playwright browser coverage.
-
-Use the demo app as the reference integration when you need to see how a consumer should host and style the package in practice.
-
-## Where This Fits
-
-`leadtype` is portable docs infrastructure, not a hosted docs platform or complete docs-site framework. Mintlify, Fumadocs, and Starlight are good fits when the primary job is shipping the public docs website.
-
-Use `leadtype` when the docs pipeline also needs to feed converted markdown, agent bundles, lint checks, static search data, source-grounded answer routes, and internal tooling while the consuming app keeps control of routing, layout, hosting, and framework choices.
-
-React, Vue, Nuxt, Svelte, Astro, and other stacks can use the framework-neutral pipeline APIs today while owning their own runtime component rendering.
-
-## App Wiring Model
-
-In a consuming repo, wire this package into the docs surface:
-
-- Runtime docs app: define `mdxComponents` in the app when it renders MDX directly.
-- Docs pipeline: run `convertAllMdx` against the docs source tree.
-- Agent output: run `generateLlmsTxt` and `generateLLMFullContextFiles` against the converted markdown.
-- Search output: run `generateDocsSearchFiles`, then import the generated JSON in your docs search route.
-
-Do not add `leadtype` to product runtime code unless that runtime also renders or serves documentation.
-
-## Generate Agent Docs
-
-The MDX source for this package's docs lives at the repo root in `/docs` (with `meta.json`). Run:
+## 30-second example
```bash
-LEADTYPE_AGENT_BASE_URL=https://docs.example.com/leadtype bun run docs:generate
+# In a repo with docs/*.mdx
+npx leadtype generate --src . --out public --base-url https://docs.example.com
```
-This reads `/docs/*.mdx` and writes converted markdown plus `llms*.txt` bundles into `packages/leadtype/docs/`. The output folder is gitignored and produced fresh at build time; only the converted output ships in the published tarball — the `.mdx` source does not.
-
-## Bundled Agent References
-
-The published package includes:
-
-- `docs/llms.txt`
-- `docs/components.md`
-- `docs/convert.md`
-- `docs/remark.md`
-- `docs/llm.md`
-- `docs/search.md`
-- `docs/lint.md`
-
-These files are intended for coding agents and other tooling that need small, topic-scoped references instead of a full docs site.
+Output:
-Set `LEADTYPE_AGENT_BASE_URL` before generating publishable agent docs so the bundled routers point at the hosted docs base.
-For the example app generator, base URL precedence is `LEADTYPE_AGENT_BASE_URL`, then generic deployment `BASE_URL`, then `PORTLESS_URL`, then the local default.
-When the variable is absent, local builds fall back to `https://example.invalid/leadtype` so `bun run build` still succeeds in a clean workspace.
+```
+public/
+├── llms.txt
+└── docs/
+ ├── *.md
+ ├── llms.txt
+ ├── llms-full/.txt
+ ├── search-index.json
+ └── search-content.json
+```
-## Generate A Search Index
+## Documentation
-Run the MDX conversion first, then generate a static search index from the
-converted markdown:
+Full docs at [docs.example.com](https://docs.example.com/docs). Highlights:
-```ts
-import { generateDocsSearchFiles } from "leadtype/search/node";
+- [Quickstart](https://docs.example.com/docs/quickstart) — five-minute happy path.
+- [How it works](https://docs.example.com/docs/how-it-works) — the mental model.
+- [Build a docs site](https://docs.example.com/docs/build/connect-docs-site) — wire into your build.
+- [Bundle docs into a package](https://docs.example.com/docs/build/bundle-package-docs) — ship docs inside an npm tarball.
+- [CLI reference](https://docs.example.com/docs/reference/cli) — every flag.
-await generateDocsSearchFiles({
- outDir: "public",
- baseUrl: "https://docs.example.com",
-});
-```
+## Entry points
-At runtime, import the generated JSON and query it without Node APIs:
-
-```ts
-import {
- readDocsContentFile,
- searchDocs,
- type DocsSearchContentStore,
- type DocsSearchIndex,
-} from "leadtype/search";
-import contentJson from "./public/docs/search-content.json";
-import indexJson from "./public/docs/search-index.json";
-
-const index = indexJson as DocsSearchIndex;
-const content = contentJson as DocsSearchContentStore;
-
-const results = searchDocs(index, "package tabs", { content });
-const quickstart = readDocsContentFile(
- index,
- "guides/quickstart",
- content
-);
-```
+| Import | Purpose |
+| --- | --- |
+| `leadtype` | `defineDocsConfig` — the config helper. |
+| `leadtype/convert` | MDX-to-markdown conversion. |
+| `leadtype/remark` | `defaultRemarkPlugins` plus individual plugins. |
+| `leadtype/llm` | `generateLlmsTxt`, `generateLLMFullContextFiles`, `resolveDocsNavigation`. |
+| `leadtype/search` | Edge-safe search runtime, content readers, request guards. |
+| `leadtype/search/node` | Build-time `generateDocsSearchFiles`. |
+| `leadtype/search/vercel` | Vercel AI SDK / AI Gateway answer streaming and bash tools. |
+| `leadtype/search/tanstack` | TanStack AI answer streaming and bash tools. |
+| `leadtype/search/cloudflare` | Cloudflare AI Gateway / Workers AI adapter and bash tools. |
+| `leadtype/lint` | `lintDocs` and the `leadtype lint` CLI. |
-The generator writes a compact `search-index.json` plus a separate
-`search-content.json`. Search scores against numeric chunk records, while answer
-flows read precise docs pages or heading chunks from the content store.
+The `leadtype` binary wraps `generate` and `lint`. Use the library entry points when you need custom plugin order, base URL precedence, or alternate output paths.
-For question answering, use a provider entrypoint. The example app uses the Vercel AI Gateway / AI SDK helper:
+## Bundled agent docs
-```ts
-import { streamDocsAnswer } from "leadtype/search/vercel";
+This package ships its own docs inside the published tarball at `node_modules/leadtype/docs/`:
-const { response, sources } = streamDocsAnswer({
- index,
- content,
- query: "How do I switch package managers?",
- model: process.env.DOCS_SEARCH_MODEL ?? "openai/gpt-5.4-mini",
- productName: "My Docs",
-});
-```
-
-For agent-style docs inspection, use the provider-compatible bash tool adapter:
+- `docs/llms.txt` — routing index
+- `docs/llms-full/*.txt` — per-leaf-group full content
+- `docs/*.md` — flattened markdown per page
+- `docs/search-index.json` + `docs/search-content.json`
-```ts
-import { createDocsBashTool } from "leadtype/search/vercel";
+Agents and IDEs can read these offline. Set `LEADTYPE_AGENT_BASE_URL` before running `bun run docs:generate` so the URLs in `llms.txt` point to your hosted docs.
-const { tools, instructions } = await createDocsBashTool(index, content);
-```
+## License
-The bash adapter builds a read-only `/docs` filesystem for `just-bash` and wraps
-it with `bash-tool` so AI SDK agents can inspect docs with commands like `ls`,
-`cat`, `find`, `grep`, and `rg`.
-
-Use `leadtype/search/tanstack` with a TanStack `adapter`, or
-`leadtype/search/cloudflare` with `createCloudflareDocsAdapter`, when those
-gateways own answer generation. Tools and tool instructions are explicit inputs
-to `streamDocsAnswer`; no provider entrypoint creates tools internally.
-
-The search runtime includes reusable guards for payload size, query length,
-control characters, client identification, and in-memory rate limiting. The
-in-memory limiter is suitable for local demos; production apps should pass the
-same `RateLimiter` interface through Redis, Vercel KV, Cloudflare KV, Durable
-Objects, or another shared store.
-
-The local index is the intended default for docs sites. It is static, cheap to
-serve on Vercel and Cloudflare, and has no request-time database dependency.
-For larger docs, keep this lexical index for exact API/config/error searches and
-add a virtual content layer plus optional embeddings for fuzzy semantic recall.
-Move to hosted search or a vector store when the compact index becomes large
-enough to hurt cold starts, docs exceed tens of thousands of chunks, or users ask
-questions that do not share vocabulary with the docs.
+MIT.
diff --git a/packages/leadtype/src/cli.test.ts b/packages/leadtype/src/cli.test.ts
index 06559a3..9a160aa 100644
--- a/packages/leadtype/src/cli.test.ts
+++ b/packages/leadtype/src/cli.test.ts
@@ -115,7 +115,7 @@ describe("leadtype CLI", () => {
expect(capture.stdout).toContain("Generated docs pipeline output");
expect(existsSync(path.join(outDir, "docs", "methodology.md"))).toBe(true);
expect(
- existsSync(path.join(outDir, "docs", "guides", "connect-docs-site.md"))
+ existsSync(path.join(outDir, "docs", "build", "connect-docs-site.md"))
).toBe(true);
expect(existsSync(path.join(outDir, "llms.txt"))).toBe(true);
expect(existsSync(path.join(outDir, "docs", "llms.txt"))).toBe(true);
@@ -169,7 +169,7 @@ describe("leadtype CLI", () => {
expect(result.files.searchIndex).toBe(
path.join(outDir, "docs", "search-index.json")
);
- expect(result.groups.map((group) => group.slug)).toContain("guides");
+ expect(result.groups.map((group) => group.slug)).toContain("build");
expect(result.search.docs).toBeGreaterThan(0);
});
@@ -185,7 +185,7 @@ describe("leadtype CLI", () => {
"--out",
outDir,
"--include",
- "guides/**",
+ "build/**",
"--format",
"json",
],
@@ -196,12 +196,12 @@ describe("leadtype CLI", () => {
const result = JSON.parse(capture.stdout) as {
filters: { include: string[] };
};
- expect(result.filters.include).toEqual(["guides/**"]);
+ expect(result.filters.include).toEqual(["build/**"]);
expect(
- existsSync(path.join(outDir, "docs", "guides", "connect-docs-site.md"))
+ existsSync(path.join(outDir, "docs", "build", "connect-docs-site.md"))
).toBe(true);
expect(
- existsSync(path.join(outDir, "docs", "guides", "bundle-package-docs.md"))
+ existsSync(path.join(outDir, "docs", "build", "bundle-package-docs.md"))
).toBe(true);
expect(existsSync(path.join(outDir, "docs", "methodology.md"))).toBe(false);
});
@@ -218,19 +218,19 @@ describe("leadtype CLI", () => {
"--out",
outDir,
"--include",
- "guides/**",
+ "build/**",
"--exclude",
- "guides/connect-docs-site.mdx",
+ "build/connect-docs-site.mdx",
],
capture.io
);
expect(code).toBe(0);
expect(
- existsSync(path.join(outDir, "docs", "guides", "bundle-package-docs.md"))
+ existsSync(path.join(outDir, "docs", "build", "bundle-package-docs.md"))
).toBe(true);
expect(
- existsSync(path.join(outDir, "docs", "guides", "connect-docs-site.md"))
+ existsSync(path.join(outDir, "docs", "build", "connect-docs-site.md"))
).toBe(false);
});
From 26fbb7bd8f2e4e27c4c61c66fc47033ec3f27ff1 Mon Sep 17 00:00:00 2001
From: Kaylee <65376239+KayleeWilliams@users.noreply.github.com>
Date: Fri, 8 May 2026 22:36:53 -0700
Subject: [PATCH 03/13] Style Steps as connected numbered circles
---
apps/example/src/styles.css | 22 +++++++++++++++++-----
1 file changed, 17 insertions(+), 5 deletions(-)
diff --git a/apps/example/src/styles.css b/apps/example/src/styles.css
index cc0096a..40e49f3 100644
--- a/apps/example/src/styles.css
+++ b/apps/example/src/styles.css
@@ -112,11 +112,11 @@
@apply list-disc pl-6;
}
-.docs-prose ol {
+.docs-prose ol:not([data-leadtype-steps]) {
@apply list-decimal pl-6;
}
-.docs-prose li {
+.docs-prose li:not([data-leadtype-step]) {
@apply my-2 marker:text-muted-foreground/60;
}
@@ -251,11 +251,23 @@
}
[data-leadtype-steps] {
- @apply my-6 space-y-4 pl-6;
+ counter-reset: leadtype-step;
+ @apply my-8 list-none p-0;
}
[data-leadtype-step] {
- @apply rounded-lg border border-border bg-card p-4;
+ counter-increment: leadtype-step;
+ @apply relative pb-8 pl-12 last:pb-0;
+}
+
+[data-leadtype-step]::before {
+ content: counter(leadtype-step);
+ @apply absolute left-0 top-0 flex h-8 w-8 items-center justify-center rounded-full border border-border bg-background text-xs font-semibold tabular-nums text-foreground;
+}
+
+[data-leadtype-step]:not(:last-child)::after {
+ content: "";
+ @apply absolute bottom-0 left-4 top-8 w-px bg-border;
}
[data-leadtype-step-title] {
@@ -263,7 +275,7 @@
}
[data-leadtype-step-content] {
- @apply mt-3 text-sm leading-7 text-muted-foreground;
+ @apply mt-2 text-sm leading-7 text-muted-foreground;
}
[data-leadtype-tabs] {
From 69e5148ec46ab226cef2de2e8de9a9c09d7e7a92 Mon Sep 17 00:00:00 2001
From: Kaylee <65376239+KayleeWilliams@users.noreply.github.com>
Date: Fri, 8 May 2026 22:40:03 -0700
Subject: [PATCH 04/13] Tighten Steps typography and align title with circle
---
apps/example/src/styles.css | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/apps/example/src/styles.css b/apps/example/src/styles.css
index 40e49f3..00f1df2 100644
--- a/apps/example/src/styles.css
+++ b/apps/example/src/styles.css
@@ -82,7 +82,7 @@
.docs-prose h1,
.docs-prose h2,
.docs-prose h3,
-.docs-prose h4 {
+.docs-prose h4:not([data-leadtype-step-title]) {
@apply font-heading font-medium tracking-tight text-foreground;
}
@@ -271,11 +271,19 @@
}
[data-leadtype-step-title] {
- @apply m-0 text-base font-semibold text-foreground;
+ @apply m-0 font-heading text-[15px] font-semibold leading-8 tracking-tight text-foreground;
}
[data-leadtype-step-content] {
- @apply mt-2 text-sm leading-7 text-muted-foreground;
+ @apply mt-1 text-sm leading-7 text-muted-foreground;
+}
+
+[data-leadtype-step-content] > :first-child {
+ @apply mt-0;
+}
+
+[data-leadtype-step-content] > :last-child {
+ @apply mb-0;
}
[data-leadtype-tabs] {
From 71c9da5083d3be9cf756dd3959963c609da556df Mon Sep 17 00:00:00 2001
From: Kaylee <65376239+KayleeWilliams@users.noreply.github.com>
Date: Fri, 8 May 2026 22:40:48 -0700
Subject: [PATCH 05/13] Drop Package manager legend from CommandTabs
---
apps/example/src/components/docs-mdx/command-tabs.tsx | 1 -
1 file changed, 1 deletion(-)
diff --git a/apps/example/src/components/docs-mdx/command-tabs.tsx b/apps/example/src/components/docs-mdx/command-tabs.tsx
index a0ab2bb..2c4be40 100644
--- a/apps/example/src/components/docs-mdx/command-tabs.tsx
+++ b/apps/example/src/components/docs-mdx/command-tabs.tsx
@@ -86,7 +86,6 @@ export function CommandTabs({
role="tab" since we don't implement the full tabs keyboard pattern
(roving tabindex, ArrowLeft/Right, associated tabpanel). */}
- Package manager
{MANAGERS.map((manager) => (
Date: Fri, 8 May 2026 22:46:22 -0700
Subject: [PATCH 06/13] Append charset=utf-8 to text/markdown responses
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Vite served .md files as `text/markdown` with no charset, so browsers
defaulted to Latin-1 and rendered UTF-8 box-drawing as mojibake
(├── as ├──). The middleware now patches setHeader on every
response to append `; charset=utf-8` to text/markdown and text/plain
when the charset is missing. Covers both negotiated /docs/foo and
direct /docs/foo.md paths.
---
apps/example/vite.config.ts | 26 +++++++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/apps/example/vite.config.ts b/apps/example/vite.config.ts
index 7fab73a..bc4dcb6 100644
--- a/apps/example/vite.config.ts
+++ b/apps/example/vite.config.ts
@@ -24,6 +24,8 @@ const MARKDOWN_ACCEPT_PATTERN = /text\/(markdown|plain)/i;
const HTML_ACCEPT_PATTERN = /text\/html/i;
const MARKDOWN_Q_PATTERN = /text\/(markdown|plain)\s*;?\s*q=/i;
const TRAILING_SLASH_PATTERN = /\/$/;
+const TEXT_CONTENT_TYPE_PATTERN = /^text\/(markdown|plain)/i;
+const CHARSET_PATTERN = /charset=/i;
function rewriteToMarkdown(
url: string,
@@ -55,19 +57,41 @@ function rewriteToMarkdown(
);
}
+type SetHeader = (name: string, value: number | string | string[]) => unknown;
+interface Res {
+ setHeader: SetHeader;
+}
+
+function forceUtf8OnTextResponses(res: Res) {
+ const original = res.setHeader.bind(res);
+ res.setHeader = (name, value) => {
+ if (
+ typeof name === "string" &&
+ name.toLowerCase() === "content-type" &&
+ typeof value === "string" &&
+ TEXT_CONTENT_TYPE_PATTERN.test(value) &&
+ !CHARSET_PATTERN.test(value)
+ ) {
+ return original(name, `${value}; charset=utf-8`);
+ }
+ return original(name, value);
+ };
+}
+
function markdownNegotiation(): PluginOption {
const middleware = (
req: {
url?: string;
headers: Record;
},
- _res: unknown,
+ res: Res,
next: () => void
) => {
if (!req.url) {
next();
return;
}
+ forceUtf8OnTextResponses(res);
const acceptHeader = req.headers.accept;
const accept = Array.isArray(acceptHeader)
? acceptHeader.join(",")
From e7239c7669b9d81252936b60997326947e4c697d Mon Sep 17 00:00:00 2001
From: Kaylee <65376239+KayleeWilliams@users.noreply.github.com>
Date: Fri, 8 May 2026 22:49:08 -0700
Subject: [PATCH 07/13] Document charset=utf-8 requirement in Connect a docs
site
Adds a Callout warning to the content-negotiation section calling out
that static handlers default to no charset, which makes browsers fall
back to Latin-1 and render UTF-8 as mojibake. Verify step now checks
for charset=utf-8 explicitly.
---
docs/build/connect-docs-site.mdx | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/docs/build/connect-docs-site.mdx b/docs/build/connect-docs-site.mdx
index fed53b1..811c617 100644
--- a/docs/build/connect-docs-site.mdx
+++ b/docs/build/connect-docs-site.mdx
@@ -102,7 +102,11 @@ function rewriteToMarkdown(url, accept) {
Browsers send `text/html,*/*` and get HTML. Agents send `Accept: text/markdown` and get the converted `.md`. Same URL, two formats.
-For Next.js, wire the same logic in `middleware.ts` and serve `.md` from a route handler. For Cloudflare Pages, use a `_middleware` Worker.
+
+ Many static handlers serve `.md` files as `Content-Type: text/markdown` with no charset, which makes browsers fall back to Latin-1 and render UTF-8 characters (box-drawing, em dashes, smart quotes) as mojibake. Always send `Content-Type: text/markdown; charset=utf-8`. The example app patches `setHeader` in the same middleware — see [`apps/example/vite.config.ts`](https://github.com/inthio/leadtype/blob/main/apps/example/vite.config.ts) for the exact code.
+
+
+For Next.js, wire the same logic in `middleware.ts` and serve `.md` from a route handler. For Cloudflare Pages, use a `_middleware` Worker. In every case, set the charset explicitly.
## Connect a remote source
@@ -128,7 +132,7 @@ After a clean build:
- `public/docs/llms-full/.txt` — one per leaf group, full content.
- `public/docs/search-index.json` and `public/docs/search-content.json` — non-empty.
-Then start the dev server and `curl -H "Accept: text/markdown" http://localhost:5173/docs/`. You should get the markdown body of `index.md`. If you get HTML, the negotiation middleware isn't wired.
+Then start the dev server and `curl -I -H "Accept: text/markdown" http://localhost:5173/docs/`. You should see `content-type: text/markdown; charset=utf-8`. If the charset is missing, UTF-8 characters in your docs will render as mojibake in the browser. If you get `text/html` back instead, the negotiation middleware isn't wired.
## What's next
From 05174ee92042b8b6341ff84bd82f774fdb3e03ac Mon Sep 17 00:00:00 2001
From: Kaylee <65376239+KayleeWilliams@users.noreply.github.com>
Date: Fri, 8 May 2026 22:57:14 -0700
Subject: [PATCH 08/13] Inline reference code instead of pointing at
apps/example
Agents reading bundled docs (via npm install or llms.txt) can't follow
links to apps/example/* on GitHub, so every "see this file" reference
became a dead end. The connect-docs-site, bundle-package-docs, cli,
llm, remark, components, and quickstart pages now contain the actual
copyable code (mdx-convert script, full vite middleware with charset
patch, generate-docs script, navigation write helpers) rather than
GitHub-link breadcrumbs.
---
.../src/generated/docs-search-content.json | 2 +-
.../src/generated/docs-search-index.json | 2 +-
docs/authoring/components.mdx | 2 -
docs/build/bundle-package-docs.mdx | 66 ++++++++-
docs/build/connect-docs-site.mdx | 129 +++++++++++++-----
docs/quickstart.mdx | 2 +-
docs/reference/cli.mdx | 17 ++-
docs/reference/llm.mdx | 16 ++-
docs/reference/remark.mdx | 8 +-
9 files changed, 200 insertions(+), 44 deletions(-)
diff --git a/apps/example/src/generated/docs-search-content.json b/apps/example/src/generated/docs-search-content.json
index 02f20a0..9cfe545 100644
--- a/apps/example/src/generated/docs-search-content.json
+++ b/apps/example/src/generated/docs-search-content.json
@@ -1 +1 @@
-{"version":2,"generatedAt":"2026-05-09T05:03:19.290Z","chunks":["Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nLeadtype does not ship UI components. Your docs app owns runtime rendering, styling, and accessibility — it only has to honor a small naming contract so the remark pipeline can flatten each component into markdown for agents, search, and llms-full/ .txt bundles. The example app keeps its implementation under apps/example/src/components/docs-mdx/ and is the canonical reference.","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nWhy flatten at all?\n\nInteractive MDX components like Body content goes here. ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nCards\n\nA grid of short, linked entry points. Flattens to a bullet list of links. Convert Remark Search\n\n```tsx ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nSteps\n\nNumbered walkthroughs. Flattens to an ordered list with bold step titles. 1. Author docs in MDX Use the components in this list as authoring affordances. 2. Run the conversion leadtype generate writes flattened markdown to public/docs/ . 3. Serve both formats HTML for humans, .md for agents — same URL, content negotiated by the Accept header.\n\n```tsx Use the components in this list. `leadtype generate` writes flattened markdown. ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nTabs\n\nGroup equivalent content. Flattens to bold headings followed by content so agents do not need a JSX-aware renderer to read every variant. tanstack-start Use a Vite middleware dev/preview and a Nitro middleware prod to negotiate the Accept header. next-js Wire content negotiation in middleware.ts and serve .md from a route handler. vite A configureServer middleware is enough for static deployments where .md files live in public/ .\n\n```tsx … … … ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nCommandTabs\n\nPackage-manager-aware install or run commands. Flattens to a markdown table with one row per manager. Use mode=\"install\" when command is a package name, mode=\"run\" when command is a CLI name, and mode=\"create\" for starter commands. Use the commands prop for exact per-manager overrides. Package manager Command -- -- npm npm install leadtype pnpm pnpm add leadtype yarn yarn add leadtype bun bun add leadtype Package manager Command -- -- npm npx leadtype lint pnpm pnpm dlx leadtype lint yarn yarn dlx leadtype lint bun bunx leadtype lint\n\n```tsx ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nAccordion\n\nCollapsible details for secondary content. Flattening ignores open/closed state and emits every item — accordions are not a place to hide content from agents. When should I use accordions? Use them for supporting details, troubleshooting notes, and optional reference material. Closed content is still flattened by the remark pipeline. Are accordions a good place to hide content from LLMs? No. Conversion ignores the open/closed state and emits everything inside.\n\n```tsx Use them for supporting details and optional reference material. ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nTopicSwitcher\n\nNavigation across equivalent docs topics — frameworks, SDKs, runtimes, deployment targets, product areas. Reader-facing only; it does not automatically read LLM topic config. Framework React — React integration Vue — Vue integration Svelte — Svelte integration\n\n```tsx ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nTypeTable and ExtractedTypeTable\n\nTypeTable is for explicit prop or type rows you already know. ExtractedTypeTable reads a TypeScript file at conversion time and extracts the table from a named type — keep its path stable. Property Type Description Default Required -- -- -- -- -- title string Heading rendered above the callout body. - ✅ Required variant CalloutVariant Visual treatment for the callout. info Optional deprecated \\ \\ boolean\\ \\ deprecated Marks the row as deprecated. false Optional\n\n```tsx ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nExample\n\nData-driven preview and source examples. The host component receives code as data; add file loaders or dynamic imports outside leadtype when an example needs app-specific behavior.\n\n```tsx The host app owns styling and runtime components while leadtype owns conversion. ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nMermaid\n\nDiagrams authored as plain text. Renders client-side as interactive SVG. Flattening preserves the source as a fenced mermaid block so other tools can render the diagram from the markdown copy.\n\n```tsx |remark| Markdown Markdown -->|llms.txt| Agents`} /> ``` ```mermaid `graph LR MDX -->|remark| Markdown Markdown -->|search index| API Markdown -->|llms.txt| Agents` ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nGuidelines\n\nKeep runtime components in your docs app. Leadtype stays out of UI. Keep component names stable. Renaming resolver page1 --> resolver page2 --> resolver page3 --> resolver resolver --> nav resolver --> llms resolver --> full` ```","Frontmatter\n\nRequired fields, group semantics, and how authored MDX becomes a navigation tree.\n\nFrontmatter\n\nHow groups become a nav tree\n\nNested groups\n\nDeclare children in the config to build deeper trees A page sets group bundle-package-docs and lands in that nested slot. Only leaf groups no children get an llms-full/ cli cli --> bundle bundle --> publish publish --> install install --> consume` ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nGenerate into the package\n\nIf source docs live at the repo root This writes converted markdown, llms.txt , full-context bundles, and the search index under packages/my-package/docs/ .\n\n```bash npx leadtype generate \\ --src . \\ --out packages/my-package \\ --base-url https://docs.example.com/my-package \\ --name \"my-package\" \\ --summary \"Docs for my-package.\" \\ --json ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nFilter to package-specific docs\n\nA monorepo with one shared docs/ and many packages should bundle only the slice each package owns. Use --include repeatable and --exclude Filters are explicit. If the package needs shared overview pages, list them too. --exclude is applied after --include .\n\n```bash npx leadtype generate \\ --src . \\ --out packages/react \\ --name \"@c15t/react\" \\ --include \"frameworks/react/**\" \\ --include \"shared/**\" \\ --exclude \"**/internal/**\" \\ --json ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nInclude in the published tarball\n\nAdd docs to files and run generation as a build or prepack step This is the shape leadtype itself uses — packages/leadtype/package.json lists docs in files , and the package build regenerates the bundle before publish so the output is always current.\n\n```json { \"files\": [\"dist\", \"docs\", \"README.md\"], \"scripts\": { \"build\": \"tsup && npx leadtype generate --src ../.. --out . --json\" } } ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nVerify before publishing\n\nnpm pack --dry-run should list docs/llms.txt docs/llms-full.txt docs/llms-full/ .txt docs/ / .md docs/search-index.json docs/search-content.json If something's missing, check files in package.json and the --include / --exclude filters.\n\n```bash npx leadtype generate --src . --out packages/my-package --json npm pack --dry-run ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nHow agents discover bundled docs\n\nAfter npm install cli cli --> pub cli --> gen pub --> vite gen --> vite vite -- \"Accept: text/html\" --> human vite -- \"Accept: text/markdown\" --> agent gen --> search` ```","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nOne-off run\n\nFor a single repo where docs and site live together That single command converts MDX, generates llms.txt , builds the search index, and resolves the navigation tree. Generated paths are listed by leadtype generate and inspected in detail under How it works.\n\n```bash npx leadtype generate \\ --src . \\ --out public \\ --base-url https://docs.example.com \\ --name \"my-docs\" \\ --summary \"Short product summary.\" ```","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nWire it into the build\n\nAdd a pipeline step before vite/Next/Astro builds. The example app does this with a pipeline build script that runs each stage individually for incremental dev Splitting into separate scripts is optional — the CLI does all three in one pass. Use scripts when you want fine control over plugin order, base URL, or filtering. See apps/example/scripts/mdx-convert.ts for the canonical setup, including how to add remarkInclude for partial expansion or remarkTypeTableToMarkdown with a basePath for lint-report.json ```","Validate in CI\n\nRun leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.\n\nValidate in CI\n\nLocal pre-push hook\n\nCatch issues before they reach CI by running lint in a husky pre-push hook Keep it under a second by limiting the scan to changed files when you have many pages. The CLI accepts repeated --ignore globs to skip stale or generated paths.\n\n```bash #!/usr/bin/env sh npx leadtype lint docs --max-warnings 0 ```","Validate in CI\n\nRun leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.\n\nValidate in CI\n\nRun before generate\n\nWhen leadtype lint and leadtype generate both run in the same job, lint first Generate fails noisily on unknown groups or broken includes. Lint fails specifically on content schema problems with file/line context — much easier to debug.\n\n```bash npx leadtype lint docs --error-unknown npx leadtype generate --src . --out public --json ```","Validate in CI\n\nRun leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.\n\nValidate in CI\n\nWhat to fix first\n\nWhen CI fails on a lot of violations, fix them in this order 1. parse-error — frontmatter is broken; nothing else can validate. 2. schema — missing or wrong-typed required fields. 3. unresolved-placeholder — content bug, not a config bug. 4. invalid-link and cross-framework-link — usually a stale link after a docs move. 5. unknown-field — last; either delete the field or extend the schema.","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nleadtype does not export prebuilt UI components or a mdxComponents map. The consuming docs app owns runtime rendering, styling, accessibility, and framework-specific integration. The package only assumes a small authoring contract for MDX component names so the remark pipeline can flatten those components into Markdown for agents, LLM bundles, search indexes, and validation.","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nApp-Owned Adapter Map\n\nDefine your own mdxComponents map in the docs app. The example app keeps its implementation under apps/example/src/components/docs-mdx . The remark pipeline knows how to flatten the following names Accordion , AccordionItem , Callout , Card , Cards , CommandTabs , Example , ExtractedTypeTable , Mermaid , Selector , Step , Steps , Tab , Tabs , TopicSwitcher , TypeTable . Wire them up like this If your app uses different names, add custom remark plugins or adapter components that map authored MDX back to the names handled by the pipeline.\n\n```tsx import { mdxComponents } from \"@/components/docs-mdx\"; const components = { ...mdxComponents, }; ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nEach section below describes a component, shows its source, and renders a live example. Switch to the agent view the robot icon in the header to compare against the flattened markdown the remark pipeline produces.","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nCallout\n\nWraps supporting context, warnings, or tips. Variants like info , warning , success , error , and tip change styling but flatten identically into blockquotes. ℹ️ Info Heads up Callouts wrap supporting context, warnings, or tips. The remark pipeline flattens them into blockquotes so agents still see the content. ⚠️ Warning Don't do this Variants like warning, success, error, and tip change the styling but flatten identically.\n\n```tsx Body content goes here. ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nCards\n\nLayout primitive for short, linked entry points. The remark pipeline flattens cards into a bullet list of links. Convert Remark Search\n\n```tsx ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nSteps\n\nNumbered walkthroughs. The remark pipeline emits an ordered markdown list with bold step titles. 1. Author docs in MDX Use the components in this list as authoring affordances. 2. Run the conversion leadtype generate or bun run pipeline convert in this app writes flattened markdown to public/docs . 3. Serve both formats HTML for humans, .md for agents — same URL, content negotiated by the Accept header.\n\n```tsx Use the components in this list. `leadtype generate` writes flattened markdown. ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nTabs\n\nAuthoring affordance for grouping equivalent content. The remark pipeline flattens each tab into a bold heading followed by its content so agents do not need a JSX-aware renderer. tanstack-start Use a Vite middleware dev/preview and a Nitro middleware prod to negotiate the Accept header. next-js Wire content negotiation in middleware.ts and serve .md from a route handler. vite A configureServer middleware is enough for static deployments where .md files live in public/ .\n\n```tsx … … … ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nCommandTabs\n\nPackage-manager-aware install or run commands. The remark pipeline expands them into a markdown table with one row per manager. Use mode=\"install\" when command is a package name, mode=\"run\" when command is a CLI name, and mode=\"create\" for starter commands such as pnpm create next-app . command can also include a pm placeholder for custom templates. Use the commands prop for exact per-manager overrides and defaultManager to choose the initial tab. Package manager Command -- -- npm npm install leadtype pnpm pnpm add leadtype yarn yarn add leadtype bun bun add leadtype Package manager Command -- -- npm npx leadtype lint pnpm pnpm dlx leadtype lint yarn yarn dlx leadtype lint bun bunx leadtype lint\n\n```tsx ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nAccordion\n\nCollapsible details for secondary content. The remark pipeline ignores the open/closed state and flattens every item, so accordions are not a place to hide content from agents. When should I use accordions? Use them for supporting details, troubleshooting notes, and optional reference material. Closed content is still flattened by the remark pipeline. Are accordions a good place to hide content from LLMs? No. Conversion ignores the open/closed state and emits everything inside.\n\n```tsx Use them for supporting details and optional reference material. ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nTopicSwitcher\n\nReader-facing navigation across equivalent docs topics. Frameworks are one common use, but the same component can represent SDKs, runtimes, deployment targets, or product areas. It does not automatically read LLM topic config. Framework React — React integration Vue — Vue integration Svelte — Svelte integration\n\n```tsx ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nTypeTable and ExtractedTypeTable\n\nTypeTable is for explicit prop or type rows you already know. ExtractedTypeTable extracts types from source files at conversion time. ExtractedTypeTable is the most path-sensitive component in the set. If it needs to resolve project files, pair it with the matching remark plugin configuration and set a stable base path. Property Type Description Default Required -- -- -- -- -- title string Heading rendered above the callout body. - ✅ Required variant CalloutVariant Visual treatment for the callout. info Optional deprecated \\ \\ boolean\\ \\ deprecated Marks the row as deprecated. false Optional\n\n```tsx ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nExample\n\nData-driven preview and source examples. The app-owned component receives code as data; host apps can add filesystem loaders or dynamic imports outside leadtype when they need app-specific behavior. Use sourceFiles when an example needs to show supporting files in addition to the primary snippet.\n\n```tsx The host app owns styling and runtime components while `leadtype` owns conversion. ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nComponent Reference\n\nMermaid\n\nDiagrams authored as plain text. Renders client-side into an interactive SVG with zoom, pan, and download controls. The remark pipeline preserves the source as a fenced mermaid block so agents see the diagram in a portable form.\n\n```tsx |remark| Markdown Markdown -->|llms.txt| Agents`} /> ``` ```mermaid `graph LR MDX -->|remark| Markdown Markdown -->|search index| API Markdown -->|llms.txt| Agents` ```","Components\n\nHow to define app-owned MDX components that the leadtype pipeline can flatten.\n\nComponents\n\nGuidance\n\nKeep runtime components in the docs app. Keep component names stable when the conversion pipeline depends on them. If the goal is agent-readable markdown, read Remark instead of reimplementing the JSX flattening rules.","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nThe leadtype/convert entrypoint provides three main APIs convertMdxToMarkdown writeMdxFileAsMarkdown convertAllMdx Import them from\n\n```ts import { convertAllMdx, convertMdxToMarkdown, writeMdxFileAsMarkdown, } from \"leadtype/convert\"; ```","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nMain Use Cases\n\nConvert one file in memory\n\nUse convertMdxToMarkdown when you need the rendered markdown string plus the resolved frontmatter.\n\n```ts const result = await convertMdxToMarkdown( \"docs/guides/quickstart.mdx\", defaultRemarkPlugins, false ); ```","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nMain Use Cases\n\nConvert a single file to disk\n\nUse writeMdxFileAsMarkdown when you already know the source path and output path.","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nMain Use Cases\n\nConvert an entire docs tree\n\nUse convertAllMdx for batch conversion\n\n```ts await convertAllMdx({ srcDir: \"content\", outDir: \"public\", remarkPlugins: defaultRemarkPlugins, enrichFrontmatterFromGit: true, }); ```","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nImportant Config\n\nsrcDir root directory containing .mdx files. outDir destination for generated .md files. remarkPlugins additional unified plugins, usually defaultRemarkPlugins from leadtype/remark . enrichFrontmatterFromGit adds git-derived metadata when available.","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nBehavior Notes\n\nFrontmatter is preserved when present. If a file has no frontmatter, the converter synthesizes title and sometimes description from the rendered markdown. Markdown tables and Mermaid blocks are compacted after rendering for cleaner agent consumption. Conversion is concurrent and optimized for large doc trees.","Convert\n\nHow to convert MDX docs into Markdown with leadtype/convert.\n\nConvert\n\nRecommended Pairing\n\nIn most apps, pair conversion with Then pass Use remarkInclude only when the source docs actually rely on include tags or partial expansion.\n\n```ts import { defaultRemarkPlugins, remarkInclude } from \"leadtype/remark\"; ``` ```ts remarkPlugins: [remarkInclude, ...defaultRemarkPlugins] ```","Bundle docs into a package\n\nHow to ship generated agent docs inside an npm package.\n\nBundle docs into a package\n\nUse this pattern when a package should carry its own agent-readable docs. The website is for humans. The package-bundled docs are for agents, CLIs, IDEs, and offline tooling that need a small reference set without loading the full docs site.","Bundle docs into a package\n\nHow to ship generated agent docs inside an npm package.\n\nBundle docs into a package\n\nGenerate into the package\n\nIf source docs live at the repo root in docs/ , generate package docs into the package directory This writes converted markdown, llms.txt , full-context files, and search artifacts under packages/my-package/docs .\n\n```bash npx leadtype generate \\ --src . \\ --out packages/my-package \\ --base-url https://docs.example.com/my-package \\ --name \"my-package\" \\ --summary \"Docs for my-package.\" \\ --format json ```","Bundle docs into a package\n\nHow to ship generated agent docs inside an npm package.\n\nBundle docs into a package\n\nFilter package-specific docs\n\nFor package-specific bundles, include only the docs paths that belong to that package Filters are explicit. If a package also needs shared or overview pages, include those paths too Use --include more than once for multiple paths. Use --exclude to remove private or internal docs after includes are applied.\n\n```bash npx leadtype generate \\ --src . \\ --out packages/react \\ --name \"@c15t/react\" \\ --summary \"React bindings for c15t.\" \\ --include \"frameworks/react/**\" \\ --format json ``` ```bash npx leadtype generate \\ --src . \\ --out packages/react \\ --include \"frameworks/react/**\" \\ --include \"shared/**\" \\ --format json ```","Bundle docs into a package\n\nHow to ship generated agent docs inside an npm package.\n\nBundle docs into a package\n\nInclude docs in the package\n\nAdd docs to the package's published files and run generation as part of the package build or prepack step This is the shape leadtype uses for its own package packages/leadtype/package.json includes docs in files , and the package build regenerates the docs bundle before publish.\n\n```json { \"files\": [\"dist\", \"docs\", \"README.md\"], \"scripts\": { \"build\": \"tsup && npx leadtype generate --src ../.. --out . --format json\" } } ```","Bundle docs into a package\n\nHow to ship generated agent docs inside an npm package.\n\nBundle docs into a package\n\nVerify before publishing\n\nRun the generator and inspect the package tarball The dry run should include docs/llms.txt docs/llms-full.txt docs/ / .md docs/search-index.json docs/search-content.json\n\n```bash npx leadtype generate --src . --out packages/my-package --format json npm pack --dry-run ```","Bundle docs into a package\n\nHow to ship generated agent docs inside an npm package.\n\nBundle docs into a package\n\nWhen to use this\n\nUse this when agents should understand the package from the installed dependency itself. If the goal is only to power a public docs website, use Connect a docs site instead.","Connect a docs site\n\nHow to run the leadtype pipeline before building a docs app.\n\nConnect a docs site\n\nUse this pattern when the docs app lives separately from the package repos it documents. The docs app owns the UI. Each package repo owns its MDX content. Before the docs app builds, clone the source repos and run the leadtype pipeline over their docs/ folders. If the package should also ship docs for agents, see Bundle docs into a package. For a local repo, run the pipeline directly\n\n```bash npx leadtype generate \\ --src . \\ --out public \\ --base-url https://docs.example.com/leadtype \\ --name \"leadtype\" \\ --summary \"Shared MDX conversion, linting, and LLM-doc generation package.\" \\ --format json ```","Connect a docs site\n\nHow to run the leadtype pipeline before building a docs app.\n\nConnect a docs site\n\nConfig setup\n\nUse docs.config.ts when the source repo should own product metadata and the docs group tree used by generation and navigation. The config describes product metadata and the group structure. Individual pages join groups from their MDX frontmatter Do not duplicate per-page membership in docs.config.ts . The generator reads group from source frontmatter and uses the config tree to name and organize the generated llms.txt , full-context files, and runtime navigation data.\n\n```ts import { defineDocsConfig } from \"leadtype\"; export default defineDocsConfig({ product: { name: \"leadtype\", summary: \"Shared MDX conversion, linting, and LLM-doc generation package.\", bullets: [ \"Flattens MDX-heavy docs into clean markdown for agents.\", \"Generates llms.txt and topic-scoped full-context bundles.\", ], bestStartingPoints: [{ urlPath: \"/docs\" }], }, groups: [ { slug: \"overview\", title: \"Overview\", description: \"Start here for package scope and surface selection.\", }, { slug: \"guides\", title: \"Guides\", description: \"Practical integration guides.\", }, ], }); ``` ```mdx --- title: \"Connect a docs site\" description: \"How to run the leadtype pipeline before building a docs app.\" group: guides --- ```","Connect a docs site\n\nHow to run the leadtype pipeline before building a docs app.\n\nConnect a docs site\n\nBuild flow\n\n1. Clone the source repo into a temporary build directory. 2. Run leadtype lint against the source docs. 3. Run leadtype generate against the clone. 4. Build the docs app from the generated markdown, llms.txt , full-context files, and search artifacts. This is the same shape we expect for repos like c15t/c15t source docs live in a public repo, while the rendered docs UI can be owned by another app or private template. Use --format json in CI or agent workflows. The command prints generated file paths, inferred groups, product metadata, and search index stats as JSON so automation can verify the result without scraping text.\n\n```bash git clone --depth 1 https://github.com/acme/package-a .docs-src/package-a npx leadtype lint .docs-src/package-a/docs --format json --error-unknown npx leadtype generate --src .docs-src/package-a --out public/package-a npm run build ```","Connect a docs site\n\nHow to run the leadtype pipeline before building a docs app.\n\nConnect a docs site\n\nGenerated output\n\nThe command writes public/docs/ / .md public/llms.txt public/docs/llms.txt public/docs/llms-full.txt public/docs/llms-full/ .txt public/docs/search-index.json public/docs/search-content.json","Connect a docs site\n\nHow to run the leadtype pipeline before building a docs app.\n\nConnect a docs site\n\nWhen to use this\n\nUse this when you want one docs UI for many repos, but do not want every package repo to own the same website implementation. If the docs source already lives inside the docs app repo, skip the clone step and point the pipeline at the local docs/ directory.","How it works\n\nThe mental model: one MDX source, a remark pipeline, four artifacts, three audiences.\n\nHow it works\n\nLeadtype takes one input — a folder of MDX — and produces every other shape your docs need to take. This page names every piece so the rest of the docs make sense.","How it works\n\nThe mental model: one MDX source, a remark pipeline, four artifacts, three audiences.\n\nHow it works\n\nThe pipeline\n\nThe remark stack is what turns interactive MDX components into agent-readable markdown. JSX gets flattened — a fm fm --> remark fm --> groups remark --> md md --> llms md --> idx groups --> llms groups --> nav` ```","How it works\n\nThe mental model: one MDX source, a remark pipeline, four artifacts, three audiences.\n\nHow it works\n\nThe four artifacts\n\nEvery run of leadtype generate produces four kinds of output. They all derive from the same source — there is no manual duplication. Property Type Description Default Required -- -- -- -- -- Markdown .md public/docs/\\ human artifacts -- \"Accept: text/markdown / or node_modules//docs/\" --> agent artifacts -- \"search-index.json + search-content.json\" --> search` ```","How it works\n\nThe mental model: one MDX source, a remark pipeline, four artifacts, three audiences.\n\nHow it works\n\nVocabulary\n\nA few terms you will see throughout the docs. Property Type Description Default Required -- -- -- -- -- flatten verb Convert an interactive MDX component into a portable markdown equivalent. A \\ pipe pipe --> md pipe --> llm pipe --> idx pipe --> nav md --> site md --> agent llm --> agent idx --> search nav --> site` ```","Leadtype\n\nOne MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.\n\nLeadtype\n\nChoose your path\n\nMost teams arrive here for one of two reasons. Pick the journey that matches yours — each is a single page that takes you from zero to running. Build a docs site Ship docs in your package","Leadtype\n\nOne MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.\n\nLeadtype\n\nWhat you get\n\n1. Write once Author MDX with familiar components — Callout , Tabs , Steps , Mermaid , TypeTable , and others. Add group in frontmatter to place pages in the navigation tree. 2. Run \\ leadtype generate\\ A single command converts MDX to markdown, builds llms.txt plus topic-scoped bundles, generates a static search index, and resolves the navigation tree. 3. Serve all of it Your site renders the source MDX; agents and tools fetch the markdown via HTTP content negotiation or load llms.txt from node modules . Same content, three audiences.","Leadtype\n\nOne MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.\n\nLeadtype\n\nNext\n\nNew here? Read the Quickstart — five minutes to a generated bundle. Want the mental model first? Read How it works for the pipeline diagram and the names of every artifact it produces. Comparing tools? See Methodology for how leadtype differs from Fumadocs, Starlight, and Mintlify.","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nThe lint surface validates source docs before conversion or site build. Use it in CI when a docs PR changes frontmatter, sidebar metadata, or internal docs links. Run the CLI with a source docs directory For agent or CI workflows, use JSON output and fail on unknown fields Import the library API from\n\n```bash npx leadtype lint docs ``` ```bash npx leadtype lint docs --format json --error-unknown --max-warnings 0 ``` ```ts import { lintDocs } from \"leadtype/lint\"; ```","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nWhat It Checks\n\nDocs page frontmatter schema validation Changelog frontmatter schema validation when configured meta.json structure Broken /docs/... links in rendered markdown Broken /docs/... links in URL-like frontmatter fields Unresolved framework placeholders in docs URLs Cross-framework links such as a Next.js page linking to a React-only docs route Linting reads source .md and .mdx files, then renders MDX through the default remark pipeline for link checks. Point it at source docs, not generated markdown.","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nCLI Reference\n\nOption Description -- -- srcDir Source directory to scan. Defaults to content when no positional path or --src is provided. --src ; summary: { filesScanned: number; errors: number; warnings: number; }; }; ```","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nRule Reference\n\nRule Severity Meaning -- -- -- schema error A value failed the active frontmatter, changelog, or meta.json schema. unknown-field warn by default A top-level field is not in the active schema and is not read by the default consumers. parse-error error Frontmatter, meta.json , or rendered markdown could not be parsed for validation. invalid-link error A /docs/... link points to a route that does not exist in the source docs tree. unresolved-placeholder error A docs URL still contains an unresolved placeholder such as framework . cross-framework-link error A framework-scoped page links to a different framework's docs route.","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nDefault Schemas\n\nDocs Frontmatter\n\nField Required Type -- -- -- title Yes non-empty string description No string icon No string deprecated No boolean deprecatedReason No string experimental No boolean canary No boolean new No boolean draft No boolean tags No string array group No string or string array availableIn No array of framework, url?, title? full No boolean lastModified and lastAuthor are generated by conversion when enrichFrontmatterFromGit is enabled. Do not author them in source docs.","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nDefault Schemas\n\nChangelog Frontmatter\n\nField Required Type -- -- -- title Yes non-empty string version Yes SemVer string date Yes ISO-8601 or parseable date string description No string icon No string type No release , improvement , retired , or deprecation tags No string array canary No boolean authors No string or string array draft No boolean","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nDefault Schemas\n\nmeta.json\n\nField Required Type -- -- -- pages Yes string array title No non-empty string root No boolean icon No string defaultOpen No boolean nav.sidebar No section or combined nav.label No string nav.mode No string","Lint\n\nHow to validate docs content with lintDocs and the leadtype lint CLI.\n\nLint\n\nGuidance\n\nRun lint before leadtype generate so content errors fail before artifacts are written. Use --format json for automation and --format github for GitHub Actions annotations. Treat unresolved placeholder errors as content bugs first. If lint fails after a docs move, check meta.json and internal links together; they usually drift at the same time.","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nImport from This surface reads source docs and generated markdown to produce agent-friendly indexes and deep-context bundles.\n\n```ts import { generateLLMFullContextFiles, generateLlmsTxt, } from \"leadtype/llm\"; ```","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nOutput Model\n\ngenerateLlmsTxt\n\nCreates /llms.txt /docs/llms.txt when docsSections is provided Use it to publish a short product summary plus a curated docs map.","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nOutput Model\n\ngenerateLLMFullContextFiles\n\nCreates /llms-full.txt /docs/llms-full.txt /docs/llms-full/ .txt topic files Use it after markdown conversion. It reads .md files under outDir /docs/ .","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nRequired Conventions\n\nSource docs for summaries live under srcDir /docs/ . Converted markdown for full files lives under outDir /docs/ . Run convertAllMdx before generateLLMFullContextFiles .","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nTypical Sequence\n\n```ts await convertAllMdx({ srcDir, outDir, remarkPlugins: [remarkInclude, ...defaultRemarkPlugins], }); await generateLlmsTxt({ srcDir, outDir, baseUrl, product: { name: \"My Docs\", summary: \"Short product summary.\", }, docsSections: [ { title: \"Guides\", links: [{ urlPath: \"/docs/guides/quickstart\" }], }, ], }); await generateLLMFullContextFiles({ outDir, baseUrl, product: { name: \"My Docs\" }, topics: [ { slug: \"guides\", title: \"Guides\", description: \"Full context for guides.\", includePrefixes: [\"guides/\"], }, ], }); ```","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nTopic Design\n\nPrefer multiple narrow topics over one giant full-context file. Good frameworks , self-host , integrations Poor one catch-all topic for the whole docs tree The APIs support nested routers, so parent topics can point to smaller child topics.","LLM\n\nHow to generate llms.txt and topic-scoped full-context files from leadtype.\n\nLLM\n\nGuidance\n\nKeep curated summary links opinionated. They should help an agent choose the smallest useful file. Write short, explicit descriptions for topics and sections. Those descriptions become routing hints. If generated files are empty, check that the docs really live under the expected docs/ folder names.","Methodology\n\nHow leadtype differs from Fumadocs, Starlight, and Mintlify.\n\nMethodology\n\nLeadtype is a docs pipeline, not a docs website framework . It produces the artifacts a docs site needs markdown, llms.txt, search index, navigation and stays out of routing, layout, and theming.","Methodology\n\nHow leadtype differs from Fumadocs, Starlight, and Mintlify.\n\nMethodology\n\nThe short version\n\nTool What it gives you -- -- Fumadocs A React docs site framework. Starlight An Astro docs site framework. Mintlify A hosted docs platform with deployment, analytics, and AI built in. Leadtype The portable content layer behind any of the above. Use a website framework when the main job is publishing a polished site quickly. Use a hosted platform when you want zero infra. Use leadtype when you want to own the docs UI but standardize the content pipeline across packages, repos, agent bundles, and search.","Methodology\n\nHow leadtype differs from Fumadocs, Starlight, and Mintlify.\n\nMethodology\n\nWhat leadtype owns\n\nMDX-to-markdown conversion via a remark plugin stack. llms.txt and topic-scoped full-context bundles for agents. A static, edge-safe search index plus optional source-grounded answer streaming. Lint rules for frontmatter, navigation metadata, and internal links. CLI orchestration so the whole pipeline runs from one command.","Methodology\n\nHow leadtype differs from Fumadocs, Starlight, and Mintlify.\n\nMethodology\n\nWhat leadtype does not own\n\nVisual UI, theming, or component styling. Routing, hosting, deployment, or analytics. A prebuilt MDX component library — your docs app provides those see Components .","Methodology\n\nHow leadtype differs from Fumadocs, Starlight, and Mintlify.\n\nMethodology\n\nWhen the combination shines\n\nYou want one docs experience across many repos, but each repo keeps its content next to the code it documents. A shared docs app — public, private, or templated — renders that content with your design system. Leadtype handles conversion, search, validation, and agent outputs identically across every repo. You can also pair leadtype with a website framework use Fumadocs or Starlight for the UI, and run leadtype's pipeline alongside it for llms.txt , agent bundles, or a content-negotiated text/markdown endpoint your framework doesn't ship.","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nFive minutes from a folder of MDX to a complete pipeline output.","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nInstall\n\nPackage manager Command -- -- npm npm install leadtype pnpm pnpm add leadtype yarn yarn add leadtype bun bun add leadtype leadtype ships an executable plus a set of focused entry points leadtype/convert , leadtype/llm , leadtype/search , leadtype/lint , leadtype/remark . The CLI is usually all you need.","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nAuthor one page\n\nCreate docs/index.mdx in your repo Every page needs at minimum a title . Add a group to place it in the nav tree — see Frontmatter.\n\n```mdx --- title: \"My library\" description: \"What it does in one sentence.\" group: get-started --- # My library Welcome. ```","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nGenerate\n\nThe CLI does four things in one pass 1. Convert MDX to markdown Walks docs/ , runs each file through the default remark plugin stack, writes flattened .md to public/docs/ . 2. Generate LLM bundles Writes public/llms.txt the routing index plus public/docs/llms-full/ .txt one file per leaf group, with full content . 3. Build a search index Writes public/docs/search-index.json and public/docs/search-content.json — a BM25 index and a separate content store for excerpts. 4. Resolve groups Reads group from every page's frontmatter and reports which groups it found. The same group tree drives both the nav and llms.txt .\n\n```bash npx leadtype generate \\ --src . \\ --out public \\ --base-url https://docs.example.com ```","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nInspect the output\n\nOpen public/llms.txt to see what an agent will see when you publish. Open public/docs/index.md to see what your authored MDX looks like once flattened — that's the same content the search index and the agent bundles consume.\n\n``` public/ ├── llms.txt # routing index for agents └── docs/ ├── index.md # converted, agent-readable ├── llms.txt # docs-scoped routing index ├── llms-full.txt # all pages flattened ├── llms-full/ │ └── get-started.txt # per-leaf-group bundle ├── search-index.json # BM25 index └── search-content.json # chunk content store ```","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nWhat's next\n\nYou now have the four primitives. From here Wire it into a docs site Bundle docs into your package Understand the pipeline","CLI\n\nleadtype generate and leadtype lint — flags, exit codes, and JSON output.\n\nCLI\n\nTwo commands generate runs the full pipeline, lint validates content. Run leadtype help [options] ```","CLI\n\nleadtype generate and leadtype lint — flags, exit codes, and JSON output.\n\nCLI\n\ngenerate\n\nConvert MDX, build LLM bundles, and produce search artifacts in one pass. Flag Default Description -- -- -- --src ; summary: { filesScanned: number; errors: number; warnings: number; }; }; ```","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nDefault schemas\n\nDocs frontmatter\n\nField Required Type -- -- -- title Yes non-empty string description No string icon No string deprecated No boolean deprecatedReason No string experimental No boolean canary No boolean new No boolean draft No boolean tags No string array group No string or string array availableIn No array of framework, url?, title? full No boolean lastModified and lastAuthor are produced by the converter when --enrich-git is set. Don't author them.","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nDefault schemas\n\nChangelog frontmatter\n\nField Required Type -- -- -- title Yes non-empty string version Yes SemVer string date Yes ISO-8601 or parseable date description No string icon No string type No release , improvement , retired , or deprecation tags No string array canary No boolean authors No string or string array draft No boolean","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nDefault schemas\n\nmeta.json\n\nField Required Type -- -- -- pages Yes string array title No non-empty string root No boolean icon No string defaultOpen No boolean nav.sidebar No section or combined nav.label No string nav.mode No string","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nCustom schemas\n\nPass a Valibot schema to extend or replace the defaults Once you provide a custom schema, unknown-field warnings apply to that schema. Add --error-unknown in CI to keep your contract strict.\n\n```ts import * as v from \"valibot\"; import { lintDocs } from \"leadtype/lint\"; const customFrontmatter = v.object({ title: v.pipe(v.string(), v.minLength(1)), audience: v.picklist([\"beginner\", \"advanced\"]), }); await lintDocs({ srcDir: \"docs\", schemas: { frontmatter: customFrontmatter }, }); ```","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nPractical guidance\n\nRun lint before leadtype generate so content errors fail fast. Use --format github in GitHub Actions and --format json in any other CI. Treat unresolved-placeholder as a content bug first — usually a missing entry in availableIn or a stale URL template. After a docs move, lint and run meta.json updates together; they drift at the same time. For wiring lint into pipelines, see Validate in CI.","LLM bundles\n\nGenerate llms.txt and topic-scoped full-context files for agents.\n\nLLM bundles\n\nThe leadtype/llm entry point produces the agent-facing outputs llms.txt a routing index and llms-full/ .txt per-leaf-group full content . Both are derived from the same docs source.\n\n```ts import { generateLlmsTxt, generateLLMFullContextFiles, resolveDocsNavigation, } from \"leadtype/llm\"; ```","LLM bundles\n\nGenerate llms.txt and topic-scoped full-context files for agents.\n\nLLM bundles\n\nWhat gets generated\n\nFile Purpose -- -- A library that does one thing well. - Helper that handles the boring parts. - Type-safe by default. - Works in any runtime. ## Best Starting Points - [Documentation](https://docs.example.com/docs) - [Quickstart](https://docs.example.com/docs/quickstart) ## Get Started Five-minute happy path and the mental model. - [Quickstart](https://docs.example.com/docs/quickstart): Install and run the pipeline. - [How it works](https://docs.example.com/docs/how-it-works): The mental model. ## Reference CLI flags and conversion APIs. - [CLI](https://docs.example.com/docs/reference/cli): Every flag. ```","LLM bundles\n\nGenerate llms.txt and topic-scoped full-context files for agents.\n\nLLM bundles\n\nTypical sequence\n\ngenerateLLMFullContextFiles reads from 0) { for (const { urlPath, slug } of navigation.unknown) { process.stderr.write(`error: ${urlPath} declares unknown group \"${slug}\".\\n`); } process.exit(1); } ```","LLM bundles\n\nGenerate llms.txt and topic-scoped full-context files for agents.\n\nLLM bundles\n\nTopic design\n\nThe groups you pass to these APIs come from docs.config.ts . Two principles Prefer narrow leaves over one giant bundle. A leaf with 5 pages produces a focused llms-full file an agent can load quickly. A single catch-all leaf with 50 pages produces something most agents will truncate. Write group descriptions for routing, not flavor text. Agents read those descriptions to decide which bundle to load. \"How to install and run\" beats \"Welcome to our guides!\"","LLM bundles\n\nGenerate llms.txt and topic-scoped full-context files for agents.\n\nLLM bundles\n\nBase URL precedence\n\nPass baseUrl explicitly, or use environment variables for layered fallback This is the precedence used by apps/example/scripts/llm-generate.ts . The package-specific LEADTYPE AGENT BASE URL lets each package override the org-wide default.\n\n```ts const baseUrl = process.env.LEADTYPE_AGENT_BASE_URL || process.env.BASE_URL || process.env.PORTLESS_URL || \"https://docs.example.com\"; ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nThe remark stack is what turns interactive MDX into agent-readable markdown. Imports get stripped first, placeholders get resolved, then each named component is flattened into a markdown equivalent. Order matters.\n\n```ts import { defaultRemarkPlugins, remarkInclude, remarkTypeTableToMarkdown, } from \"leadtype/remark\"; ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nThe default stack\n\ndefaultRemarkPlugins runs the stack in this order 1. remarkRemoveImports — strip MDX import and export statements. 2. remarkRemoveJsxComments — strip / ... / JSX comments. 3. remarkResolveDocPlaceholders — replace framework and similar placeholders in URLs. 4. remarkSectionToMarkdown — flatten ri --> rj --> rd --> rs --> rc --> rcd --> rdt --> rm --> rct --> rst --> rt --> rtt --> ra --> rts --> re --> out` ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nWhy order matters\n\nImports must go before placeholder resolution, because some placeholders read from imported modules. Placeholder resolution must go before component flatteners, because flatteners assume URLs are final strings, not template literals. The component flatteners run last so each one sees a clean tree. Don't reorder casually. If you need a custom plugin to run before a flattener for example, to transform a custom component into one of the contracted names , insert it after remarkResolveDocPlaceholders and before the flattener you want to feed.","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nOptional plugins\n\nremarkInclude\n\nAdd this when the source docs use include tags or partial composition Place it before the default stack so included content expands before any flattener sees it.\n\n```ts remarkPlugins: [remarkInclude, ...defaultRemarkPlugins]; ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nOptional plugins\n\nremarkTypeTableToMarkdown with basePath\n\n p !== remarkTypeTableToMarkdown), [remarkTypeTableToMarkdown, { basePath: process.cwd() }], ]; ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nPlugin selection rules\n\nUse defaultRemarkPlugins for any agent-facing or LLM output. Add remarkInclude when docs are composed from shared fragments. Use individual plugins only when you intentionally want to omit a flattener e.g. you don't use /docs/search-index.json /docs/search-content.json ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nRuntime search\n\nThe runtime is edge-safe — no Node APIs, works on Vercel, Cloudflare, and anywhere else Results include heading paths, hash URLs, and snippets ready for a search UI.\n\n```ts import { searchDocs, type DocsSearchIndex, type DocsSearchContentStore, } from \"leadtype/search\"; import indexJson from \"../public/docs/search-index.json\"; import contentJson from \"../public/docs/search-content.json\"; const results = searchDocs( indexJson as DocsSearchIndex, \"tabs install\", { content: contentJson as DocsSearchContentStore } ); ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nReading docs at runtime\n\nThe same index doubles as a virtual filesystem. Three readers, picked by what you have Use readDocsContentFile when you need the entire page for context links . Use readDocsContentChunk when a search result already named the right heading.\n\n```ts import { listDocsContentFiles, readDocsContentFile, readDocsContentChunk, } from \"leadtype/search\"; const allFiles = listDocsContentFiles(index); const wholePage = readDocsContentFile(index, \"guides/quickstart\", content); const oneChunk = readDocsContentChunk(index, \"chunk-0\", content); ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nSource-grounded answers\n\ncreateAnswerContext turns a query plus retrieved chunks into a system and prompt you pass to any model The system message instructs the model to answer only from the retrieved context, cite sources with 1 -style references, and say so when the context is insufficient.\n\n```ts import { createAnswerContext } from \"leadtype/search\"; const context = createAnswerContext(index, \"how do I run lint?\", { content, productName: \"My Library\", }); // → { system, prompt, sources } ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nStreaming via provider entry points\n\nThree thin wrappers around createAnswerContext that stream a Response and surface sources separately. Use one matching your runtime response is a plain text Response. sources is metadata for citation links — display it separately, don't embed it in the streamed answer. For TanStack, pass an explicit adapter . For Cloudflare, build one with createCloudflareDocsAdapter provider, model, options binding env.AI.gateway \"docs\" .\n\n```ts import { streamDocsAnswer } from \"leadtype/search/vercel\"; // Vercel AI SDK / AI Gateway import { streamDocsAnswer } from \"leadtype/search/tanstack\"; // TanStack AI import { streamDocsAnswer } from \"leadtype/search/cloudflare\"; // Cloudflare AI Gateway / Workers AI ``` ```ts const { response, sources } = streamDocsAnswer({ index, content, query, model: process.env.DOCS_SEARCH_MODEL ?? \"openai/gpt-5.4-mini\", productName: \"My Library\", }); ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nBash tool adapters\n\nWhen you want an agent to explore docs with shell commands instead of receiving pre-selected chunks The adapter exposes a read-only virtual /docs filesystem with ls , cat , find , grep , and rg . Network commands, code execution, and writes are disabled. TanStack and Cloudflare expose createDocsBashTools plural over the same filesystem.\n\n```ts import { createDocsBashTool } from \"leadtype/search/vercel\"; const { tools, instructions } = await createDocsBashTool(index, content); ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nAbuse guards\n\nReusable utilities for the request path Helper Purpose -- -- validateDocsQuery Trim and cap query text. readJsonWithLimit Reject oversized JSON bodies before parse. getClientIdentifier Read common proxy IP headers. createMemoryRateLimiter Implements RateLimiter for demos. The in-memory limiter is fine for demos. Production apps should adapt the RateLimiter interface to a shared store — Redis, Vercel KV, Cloudflare KV, or Durable Objects.","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nWhen to add embeddings\n\nStart with the local index. It is static, cheap, edge-safe, and fast for exact API names, config keys, error messages, and paths. Add embeddings only when Users search with vocabulary that doesn't match the docs e.g. \"make it faster\" matching a \"performance optimization\" page . Your docs grow past tens of thousands of chunks and the cold-start memory hit becomes noticeable. Even then, keep the lexical index for exact matches and layer embeddings on top — they're complementary, not replacements.","Remark\n\nReference for the remark plugins and default plugin pipeline exported by leadtype.\n\nRemark\n\nImport from\n\n```ts import { defaultRemarkPlugins, remarkInclude, remarkTypeTableToMarkdown, } from \"leadtype/remark\"; ```","Remark\n\nReference for the remark plugins and default plugin pipeline exported by leadtype.\n\nRemark\n\nDefault Plugin Stack\n\ndefaultRemarkPlugins is the standard MDX-to-markdown pipeline for agent docs. Order matters. The stack 1. Removes MDX imports. 2. Resolves docs placeholders. 3. Flattens JSX-heavy authoring components into plain markdown. The default array includes remarkRemoveImports remarkResolveDocPlaceholders remarkCalloutToMarkdown remarkCardsToMarkdown remarkMermaidToMarkdown remarkCommandTabsToMarkdown remarkStepsToMarkdown remarkTabsToMarkdown remarkTypeTableToMarkdown","Remark\n\nReference for the remark plugins and default plugin pipeline exported by leadtype.\n\nRemark\n\nWhen To Add Extra Plugins\n\nremarkInclude\n\nAdd this when the source docs use include tags or partial composition Place it before the default plugins so included content is expanded before JSX flattening runs.\n\n```ts remarkPlugins: [remarkInclude, ...defaultRemarkPlugins] ```","Remark\n\nReference for the remark plugins and default plugin pipeline exported by leadtype.\n\nRemark\n\nWhen To Add Extra Plugins\n\nremarkTypeTableToMarkdown\n\nThis plugin can be used directly when you only need type-table extraction and not the full pipeline. It pairs with Body content goes here. ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nCards\n\nA grid of short, linked entry points. Flattens to a bullet list of links. Convert Remark Search\n\n```tsx ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nSteps\n\nNumbered walkthroughs. Flattens to an ordered list with bold step titles. 1. Author docs in MDX Use the components in this list as authoring affordances. 2. Run the conversion leadtype generate writes flattened markdown to public/docs/ . 3. Serve both formats HTML for humans, .md for agents — same URL, content negotiated by the Accept header.\n\n```tsx Use the components in this list. `leadtype generate` writes flattened markdown. ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nTabs\n\nGroup equivalent content. Flattens to bold headings followed by content so agents do not need a JSX-aware renderer to read every variant. tanstack-start Use a Vite middleware dev/preview and a Nitro middleware prod to negotiate the Accept header. next-js Wire content negotiation in middleware.ts and serve .md from a route handler. vite A configureServer middleware is enough for static deployments where .md files live in public/ .\n\n```tsx … … … ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nCommandTabs\n\nPackage-manager-aware install or run commands. Flattens to a markdown table with one row per manager. Use mode=\"install\" when command is a package name, mode=\"run\" when command is a CLI name, and mode=\"create\" for starter commands. Use the commands prop for exact per-manager overrides. Package manager Command -- -- npm npm install leadtype pnpm pnpm add leadtype yarn yarn add leadtype bun bun add leadtype Package manager Command -- -- npm npx leadtype lint pnpm pnpm dlx leadtype lint yarn yarn dlx leadtype lint bun bunx leadtype lint\n\n```tsx ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nAccordion\n\nCollapsible details for secondary content. Flattening ignores open/closed state and emits every item — accordions are not a place to hide content from agents. When should I use accordions? Use them for supporting details, troubleshooting notes, and optional reference material. Closed content is still flattened by the remark pipeline. Are accordions a good place to hide content from LLMs? No. Conversion ignores the open/closed state and emits everything inside.\n\n```tsx Use them for supporting details and optional reference material. ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nTopicSwitcher\n\nNavigation across equivalent docs topics — frameworks, SDKs, runtimes, deployment targets, product areas. Reader-facing only; it does not automatically read LLM topic config. Framework React — React integration Vue — Vue integration Svelte — Svelte integration\n\n```tsx ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nTypeTable and ExtractedTypeTable\n\nTypeTable is for explicit prop or type rows you already know. ExtractedTypeTable reads a TypeScript file at conversion time and extracts the table from a named type — keep its path stable. Property Type Description Default Required -- -- -- -- -- title string Heading rendered above the callout body. - ✅ Required variant CalloutVariant Visual treatment for the callout. info Optional deprecated \\ \\ boolean\\ \\ deprecated Marks the row as deprecated. false Optional\n\n```tsx ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nExample\n\nData-driven preview and source examples. The host component receives code as data; add file loaders or dynamic imports outside leadtype when an example needs app-specific behavior.\n\n```tsx The host app owns styling and runtime components while leadtype owns conversion. ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nMermaid\n\nDiagrams authored as plain text. Renders client-side as interactive SVG. Flattening preserves the source as a fenced mermaid block so other tools can render the diagram from the markdown copy.\n\n```tsx |remark| Markdown Markdown -->|llms.txt| Agents`} /> ``` ```mermaid `graph LR MDX -->|remark| Markdown Markdown -->|search index| API Markdown -->|llms.txt| Agents` ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nGuidelines\n\nKeep runtime components in your docs app. Leadtype stays out of UI. Keep component names stable. Renaming resolver page1 --> resolver page2 --> resolver page3 --> resolver resolver --> nav resolver --> llms resolver --> full` ```","Frontmatter\n\nRequired fields, group semantics, and how authored MDX becomes a navigation tree.\n\nFrontmatter\n\nHow groups become a nav tree\n\nNested groups\n\nDeclare children in the config to build deeper trees A page sets group bundle-package-docs and lands in that nested slot. Only leaf groups no children get an llms-full/ cli cli --> bundle bundle --> publish publish --> install install --> consume` ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nGenerate into the package\n\nIf source docs live at the repo root This writes converted markdown, llms.txt , full-context bundles, and the search index under packages/my-package/docs/ .\n\n```bash npx leadtype generate \\ --src . \\ --out packages/my-package \\ --base-url https://docs.example.com/my-package \\ --name \"my-package\" \\ --summary \"Docs for my-package.\" \\ --json ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nFilter to package-specific docs\n\nA monorepo with one shared docs/ and many packages should bundle only the slice each package owns. Use --include repeatable and --exclude Filters are explicit. If the package needs shared overview pages, list them too. --exclude is applied after --include .\n\n```bash npx leadtype generate \\ --src . \\ --out packages/react \\ --name \"@c15t/react\" \\ --include \"frameworks/react/**\" \\ --include \"shared/**\" \\ --exclude \"**/internal/**\" \\ --json ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nInclude in the published tarball\n\nAdd docs to files and run generation as a build or prepack step If you need full control over plugin order, base URL fallback, or custom navigation handling, run the library APIs directly from a script Then point your build script at it \"build\" \"tsup && bun run scripts/generate-docs.ts\" .\n\n```json { \"files\": [\"dist\", \"docs\", \"README.md\"], \"scripts\": { \"build\": \"tsup && npx leadtype generate --src ../.. --out . --json\" } } ``` ```ts // scripts/generate-docs.ts import { rm } from \"node:fs/promises\"; import { convertAllMdx } from \"leadtype/convert\"; import { generateLLMFullContextFiles, generateLlmsTxt, resolveDocsNavigation, } from \"leadtype/llm\"; import { defaultRemarkPlugins } from \"leadtype/remark\"; import docsConfig from \"../../../docs/docs.config\"; const REPO_ROOT = `${process.cwd()}/../..`; const PACKAGE_ROOT = process.cwd(); const baseUrl = process.env.LEADTYPE_AGENT_BASE_URL?.trim() || \"https://example.invalid/your-package\"; // Output is generated and gitignored — safe to nuke before each build. await rm(`${PACKAGE_ROOT}/docs`, { recursive: true, force: true }); await convertAllMdx({ srcDir: `${REPO_ROOT}/docs`, outDir: `${PACKAGE_ROOT}/docs`, remarkPlugins: defaultRemarkPlugins, }); // generateLlmsTxt and generateLLMFullContextFiles join `/docs/` // internally, so pass the parents (REPO_ROOT for source, PACKAGE_ROOT // for output) — they read MDX from `/docs/` and write to `/docs/`.","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nInclude in the published tarball\n\ndocs/` // internally, so pass the parents (REPO_ROOT for source, PACKAGE_ROOT // for output) — they read MDX from `/docs/` and write to `/docs/`. await generateLlmsTxt({ srcDir: REPO_ROOT, outDir: PACKAGE_ROOT, baseUrl, product: docsConfig.product, groups: docsConfig.groups, }); await generateLLMFullContextFiles({ outDir: PACKAGE_ROOT, baseUrl, product: { name: docsConfig.product.name }, groups: docsConfig.groups, }); // Fail fast on unknown groups so a bad config can't ship. const navigation = await resolveDocsNavigation({ srcDir: REPO_ROOT, baseUrl, groups: docsConfig.groups, }); if (navigation.unknown.length > 0) { for (const { urlPath, slug } of navigation.unknown) { process.stderr.write(`error: ${urlPath} declares unknown group \"${slug}\".\\n`); } process.exit(1); } ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nVerify before publishing\n\nnpm pack --dry-run should list docs/llms.txt docs/llms-full.txt docs/llms-full/ .txt docs/ / .md docs/search-index.json docs/search-content.json If something's missing, check files in package.json and the --include / --exclude filters.\n\n```bash npx leadtype generate --src . --out packages/my-package --json npm pack --dry-run ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nHow agents discover bundled docs\n\nAfter npm install ` reads TypeScript files at conversion time. // Pass basePath so the component can resolve relative paths. const typeTablePlugin: NonNullable< MdxToMarkdownOptions[\"remarkPlugins\"] >[number] = [remarkTypeTableToMarkdown, { basePath: repoRoot }]; await convertAllMdx({ srcDir, outDir, remarkPlugins: [ remarkInclude, ...defaultRemarkPlugins.filter((p) => p !== remarkTypeTableToMarkdown), typeTablePlugin, ], enrichFrontmatterFromGit: true, }); ```","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nConfigure the product and groups\n\nAuthor docs/docs.config.ts once and let every stage read from it Pages declare group in frontmatter. The config declares the tree. The two together produce the navigation manifest, the llms.txt sections, and the lint check that catches typos. See Frontmatter for the resolution rules.\n\n```ts import { defineDocsConfig } from \"leadtype\"; export default defineDocsConfig({ product: { name: \"my-docs\", summary: \"Short product summary.\", bullets: [\"What it does in one bullet.\", \"Another bullet.\"], bestStartingPoints: [{ urlPath: \"/docs\" }, { urlPath: \"/docs/quickstart\" }], }, groups: [ { slug: \"get-started\", title: \"Get Started\" }, { slug: \"guides\", title: \"Guides\" }, ], }); ```","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nServe markdown to agents\n\nDrop a content-negotiation middleware in front of your static /docs/ .md files so agents can fetch markdown from the same URL humans visit. A complete vite plugin in \\ 50 lines Browsers send text/html, / and get HTML. Agents send Accept text/markdown and get the converted .md . Same URL, two formats. ⚠️ Warning Set charset=utf-8 Many static handlers serve .md files as Content-Type text/markdown with no charset, which makes browsers fall back to Latin-1 and render UTF-8 characters box-drawing, em dashes, smart quotes as mojibake. Always send Content-Type text/markdown; charset=utf-8 — that's what forceUtf8OnTextResponses above does by patching setHeader. For Next.js, wire the same rewriteToMarkdown logic in middleware.ts and serve .md from a route handler that sets Content-Type text/markdown; charset=utf-8 . For Cloudflare Pages, use a middleware Worker. In every case, set the charset explicitly.\n\n```ts import type { PluginOption } from \"vite\"; function rewriteToMarkdown( url: string, accept: string | undefined ): string | null { if (!accept) return null; const pathname = url.split(\"?\")[0] ?? url; if (pathname.endsWith(\".md\")) return null; if (!(pathname === \"/docs\" || pathname.startsWith(\"/docs/\"))) return null; if (!/text\\/(markdown|plain)/i.test(accept)) return null; // Browsers send `text/html,*/*` — never serve markdown to them. if (/text\\/html/i.test(accept) && !/text\\/(markdown|plain)\\s*;?\\s*q=/i.test(accept)) { return null; } const target = pathname === \"/docs\" ? \"/docs/index.md\" : `${pathname.replace(/\\/$/, \"\")}.md`; return target + (url.length > pathname.length ? url.slice(pathname.length) : \"\"); } function forceUtf8OnTextResponses(res: { setHeader: (n: string, v: string | number | string[]) => unknown }) { const original = res.setHeader.bind(res); res.setHeader = (name, value) => { if ( typeof name === \"string\" && name.toLowerCase() === \"content-type\" && typeof value === \"string\" && /^text\\/(markdown|plain)/i.test(value) && !/charset=/i.test(value) ) { return original(name, `${value}; charset=utf-8`); } return original(name, value); }; } export function","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nServe markdown to agents\n\ndown|plain)/i.test(value) && !/charset=/i.test(value) ) { return original(name, `${value}; charset=utf-8`); } return original(name, value); }; } export function markdownNegotiation(): PluginOption { const middleware = (req: any, res: any, next: () => void) => { if (!req.url) return next(); forceUtf8OnTextResponses(res); const accept = Array.isArray(req.headers.accept) ? req.headers.accept.join(\",\") : req.headers.accept; const rewritten = rewriteToMarkdown(req.url, accept); if (rewritten) req.url = rewritten; next(); }; return { name: \"leadtype:markdown-negotiation\", configureServer: (s) => s.middlewares.use(middleware), configurePreviewServer: (s) => s.middlewares.use(middleware), }; } ```","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nConnect a remote source\n\nWhen the docs source lives in a different repo from the docs site Run lint first so missing or malformed frontmatter fails before the converter writes anything. Use --format github in CI to get inline annotations on the PR. Use --json on generate so automation can read the resolved groups and search index stats. This is the shape we expect for orgs hosting one docs UI for multiple package repos the source lives next to the code it documents, the docs app pulls it in at build time. See Bundle docs into a package if the package should also ship docs inside its npm tarball.\n\n```bash git clone --depth 1 https://github.com/acme/package-a .docs-src/package-a npx leadtype lint .docs-src/package-a/docs --format github --error-unknown npx leadtype generate --src .docs-src/package-a --out public --json npm run build ```","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nVerify\n\nAfter a clean build public/docs/index.md — the converted home page. public/llms.txt — the routing index. Should mention every group from your config. public/docs/llms-full/ lint-report.json ```","Validate in CI\n\nRun leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.\n\nValidate in CI\n\nLocal pre-push hook\n\nCatch issues before they reach CI by running lint in a husky pre-push hook Keep it under a second by limiting the scan to changed files when you have many pages. The CLI accepts repeated --ignore globs to skip stale or generated paths.\n\n```bash #!/usr/bin/env sh npx leadtype lint docs --max-warnings 0 ```","Validate in CI\n\nRun leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.\n\nValidate in CI\n\nRun before generate\n\nWhen leadtype lint and leadtype generate both run in the same job, lint first Generate fails noisily on unknown groups or broken includes. Lint fails specifically on content schema problems with file/line context — much easier to debug.\n\n```bash npx leadtype lint docs --error-unknown npx leadtype generate --src . --out public --json ```","Validate in CI\n\nRun leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.\n\nValidate in CI\n\nWhat to fix first\n\nWhen CI fails on a lot of violations, fix them in this order 1. parse-error — frontmatter is broken; nothing else can validate. 2. schema — missing or wrong-typed required fields. 3. unresolved-placeholder — content bug, not a config bug. 4. invalid-link and cross-framework-link — usually a stale link after a docs move. 5. unknown-field — last; either delete the field or extend the schema.","How it works\n\nThe mental model: one MDX source, a remark pipeline, four artifacts, three audiences.\n\nHow it works\n\nLeadtype takes one input — a folder of MDX — and produces every other shape your docs need to take. This page names every piece so the rest of the docs make sense.","How it works\n\nThe mental model: one MDX source, a remark pipeline, four artifacts, three audiences.\n\nHow it works\n\nThe pipeline\n\nThe remark stack is what turns interactive MDX components into agent-readable markdown. JSX gets flattened — a fm fm --> remark fm --> groups remark --> md md --> llms md --> idx groups --> llms groups --> nav` ```","How it works\n\nThe mental model: one MDX source, a remark pipeline, four artifacts, three audiences.\n\nHow it works\n\nThe four artifacts\n\nEvery run of leadtype generate produces four kinds of output. They all derive from the same source — there is no manual duplication. Property Type Description Default Required -- -- -- -- -- Markdown .md public/docs/\\ human artifacts -- \"Accept: text/markdown / or node_modules//docs/\" --> agent artifacts -- \"search-index.json + search-content.json\" --> search` ```","How it works\n\nThe mental model: one MDX source, a remark pipeline, four artifacts, three audiences.\n\nHow it works\n\nVocabulary\n\nA few terms you will see throughout the docs. Property Type Description Default Required -- -- -- -- -- flatten verb Convert an interactive MDX component into a portable markdown equivalent. A \\ pipe pipe --> md pipe --> llm pipe --> idx pipe --> nav md --> site md --> agent llm --> agent idx --> search nav --> site` ```","Leadtype\n\nOne MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.\n\nLeadtype\n\nChoose your path\n\nMost teams arrive here for one of two reasons. Pick the journey that matches yours — each is a single page that takes you from zero to running. Build a docs site Ship docs in your package","Leadtype\n\nOne MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.\n\nLeadtype\n\nWhat you get\n\n1. Write once Author MDX with familiar components — Callout , Tabs , Steps , Mermaid , TypeTable , and others. Add group in frontmatter to place pages in the navigation tree. 2. Run \\ leadtype generate\\ A single command converts MDX to markdown, builds llms.txt plus topic-scoped bundles, generates a static search index, and resolves the navigation tree. 3. Serve all of it Your site renders the source MDX; agents and tools fetch the markdown via HTTP content negotiation or load llms.txt from node modules . Same content, three audiences.","Leadtype\n\nOne MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.\n\nLeadtype\n\nNext\n\nNew here? Read the Quickstart — five minutes to a generated bundle. Want the mental model first? Read How it works for the pipeline diagram and the names of every artifact it produces. Comparing tools? See Methodology for how leadtype differs from Fumadocs, Starlight, and Mintlify.","Methodology\n\nHow leadtype differs from Fumadocs, Starlight, and Mintlify.\n\nMethodology\n\nLeadtype is a docs pipeline, not a docs website framework . It produces the artifacts a docs site needs markdown, llms.txt, search index, navigation and stays out of routing, layout, and theming.","Methodology\n\nHow leadtype differs from Fumadocs, Starlight, and Mintlify.\n\nMethodology\n\nThe short version\n\nTool What it gives you -- -- Fumadocs A React docs site framework. Starlight An Astro docs site framework. Mintlify A hosted docs platform with deployment, analytics, and AI built in. Leadtype The portable content layer behind any of the above. Use a website framework when the main job is publishing a polished site quickly. Use a hosted platform when you want zero infra. Use leadtype when you want to own the docs UI but standardize the content pipeline across packages, repos, agent bundles, and search.","Methodology\n\nHow leadtype differs from Fumadocs, Starlight, and Mintlify.\n\nMethodology\n\nWhat leadtype owns\n\nMDX-to-markdown conversion via a remark plugin stack. llms.txt and topic-scoped full-context bundles for agents. A static, edge-safe search index plus optional source-grounded answer streaming. Lint rules for frontmatter, navigation metadata, and internal links. CLI orchestration so the whole pipeline runs from one command.","Methodology\n\nHow leadtype differs from Fumadocs, Starlight, and Mintlify.\n\nMethodology\n\nWhat leadtype does not own\n\nVisual UI, theming, or component styling. Routing, hosting, deployment, or analytics. A prebuilt MDX component library — your docs app provides those see Components .","Methodology\n\nHow leadtype differs from Fumadocs, Starlight, and Mintlify.\n\nMethodology\n\nWhen the combination shines\n\nYou want one docs experience across many repos, but each repo keeps its content next to the code it documents. A shared docs app — public, private, or templated — renders that content with your design system. Leadtype handles conversion, search, validation, and agent outputs identically across every repo. You can also pair leadtype with a website framework use Fumadocs or Starlight for the UI, and run leadtype's pipeline alongside it for llms.txt , agent bundles, or a content-negotiated text/markdown endpoint your framework doesn't ship.","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nFive minutes from a folder of MDX to a complete pipeline output.","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nInstall\n\nPackage manager Command -- -- npm npm install leadtype pnpm pnpm add leadtype yarn yarn add leadtype bun bun add leadtype leadtype ships an executable plus a set of focused entry points leadtype/convert , leadtype/llm , leadtype/search , leadtype/lint , leadtype/remark . The CLI is usually all you need.","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nAuthor one page\n\nCreate docs/index.mdx in your repo Every page needs at minimum a title . Add a group to place it in the nav tree — see Frontmatter.\n\n```mdx --- title: \"My library\" description: \"What it does in one sentence.\" group: get-started --- # My library Welcome. ```","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nGenerate\n\nThe CLI does four things in one pass 1. Convert MDX to markdown Walks docs/ , runs each file through the default remark plugin stack, writes flattened .md to public/docs/ . 2. Generate LLM bundles Writes public/llms.txt the routing index plus public/docs/llms-full/ .txt one file per leaf group, with full content . 3. Build a search index Writes public/docs/search-index.json and public/docs/search-content.json — a BM25 index and a separate content store for excerpts. 4. Resolve groups Reads group from every page's frontmatter and reports which groups it found. The same group tree drives both the nav and llms.txt .\n\n```bash npx leadtype generate \\ --src . \\ --out public \\ --base-url https://docs.example.com ```","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nInspect the output\n\nOpen public/llms.txt to see what an agent will see when you publish. Open public/docs/index.md to see what your authored MDX looks like once flattened — that's the same content the search index and the agent bundles consume.\n\n``` public/ ├── llms.txt # routing index for agents └── docs/ ├── index.md # converted, agent-readable ├── llms.txt # docs-scoped routing index ├── llms-full.txt # all pages flattened ├── llms-full/ │ └── get-started.txt # per-leaf-group bundle ├── search-index.json # BM25 index └── search-content.json # chunk content store ```","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nWhat's next\n\nYou now have the four primitives. From here Wire it into a docs site Bundle docs into your package Understand the pipeline","CLI\n\nleadtype generate and leadtype lint — flags, exit codes, and JSON output.\n\nCLI\n\nTwo commands generate runs the full pipeline, lint validates content. Run leadtype help [options] ```","CLI\n\nleadtype generate and leadtype lint — flags, exit codes, and JSON output.\n\nCLI\n\ngenerate\n\nConvert MDX, build LLM bundles, and produce search artifacts in one pass. Flag Default Description -- -- -- --src ; summary: { filesScanned: number; errors: number; warnings: number; }; }; ```","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nDefault schemas\n\nDocs frontmatter\n\nField Required Type -- -- -- title Yes non-empty string description No string icon No string deprecated No boolean deprecatedReason No string experimental No boolean canary No boolean new No boolean draft No boolean tags No string array group No string or string array availableIn No array of framework, url?, title? full No boolean lastModified and lastAuthor are produced by the converter when --enrich-git is set. Don't author them.","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nDefault schemas\n\nChangelog frontmatter\n\nField Required Type -- -- -- title Yes non-empty string version Yes SemVer string date Yes ISO-8601 or parseable date description No string icon No string type No release , improvement , retired , or deprecation tags No string array canary No boolean authors No string or string array draft No boolean","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nDefault schemas\n\nmeta.json\n\nField Required Type -- -- -- pages Yes string array title No non-empty string root No boolean icon No string defaultOpen No boolean nav.sidebar No section or combined nav.label No string nav.mode No string","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nCustom schemas\n\nPass a Valibot schema to extend or replace the defaults Once you provide a custom schema, unknown-field warnings apply to that schema. Add --error-unknown in CI to keep your contract strict.\n\n```ts import * as v from \"valibot\"; import { lintDocs } from \"leadtype/lint\"; const customFrontmatter = v.object({ title: v.pipe(v.string(), v.minLength(1)), audience: v.picklist([\"beginner\", \"advanced\"]), }); await lintDocs({ srcDir: \"docs\", schemas: { frontmatter: customFrontmatter }, }); ```","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nPractical guidance\n\nRun lint before leadtype generate so content errors fail fast. Use --format github in GitHub Actions and --format json in any other CI. Treat unresolved-placeholder as a content bug first — usually a missing entry in availableIn or a stale URL template. After a docs move, lint and run meta.json updates together; they drift at the same time. For wiring lint into pipelines, see Validate in CI.","LLM bundles\n\nGenerate llms.txt and topic-scoped full-context files for agents.\n\nLLM bundles\n\nThe leadtype/llm entry point produces the agent-facing outputs llms.txt a routing index and llms-full/ .txt per-leaf-group full content . Both are derived from the same docs source.\n\n```ts import { generateLlmsTxt, generateLLMFullContextFiles, resolveDocsNavigation, } from \"leadtype/llm\"; ```","LLM bundles\n\nGenerate llms.txt and topic-scoped full-context files for agents.\n\nLLM bundles\n\nWhat gets generated\n\nFile Purpose -- -- A library that does one thing well. - Helper that handles the boring parts. - Type-safe by default. - Works in any runtime. ## Best Starting Points - [Documentation](https://docs.example.com/docs) - [Quickstart](https://docs.example.com/docs/quickstart) ## Get Started Five-minute happy path and the mental model. - [Quickstart](https://docs.example.com/docs/quickstart): Install and run the pipeline. - [How it works](https://docs.example.com/docs/how-it-works): The mental model. ## Reference CLI flags and conversion APIs. - [CLI](https://docs.example.com/docs/reference/cli): Every flag. ```","LLM bundles\n\nGenerate llms.txt and topic-scoped full-context files for agents.\n\nLLM bundles\n\nTypical sequence\n\ngenerateLLMFullContextFiles reads from 0) { for (const { urlPath, slug } of navigation.unknown) { process.stderr.write(`error: ${urlPath} declares unknown group \"${slug}\".\\n`); } process.exit(1); } ``` ```ts import { mkdir, writeFile } from \"node:fs/promises\"; await mkdir(\"src/generated\", { recursive: true }); await writeFile( \"src/generated/docs-nav.json\", `${JSON.stringify(navigation, null, 2)}\\n` ); ```","LLM bundles\n\nGenerate llms.txt and topic-scoped full-context files for agents.\n\nLLM bundles\n\nTopic design\n\nThe groups you pass to these APIs come from docs.config.ts . Two principles Prefer narrow leaves over one giant bundle. A leaf with 5 pages produces a focused llms-full file an agent can load quickly. A single catch-all leaf with 50 pages produces something most agents will truncate. Write group descriptions for routing, not flavor text. Agents read those descriptions to decide which bundle to load. \"How to install and run\" beats \"Welcome to our guides!\"","LLM bundles\n\nGenerate llms.txt and topic-scoped full-context files for agents.\n\nLLM bundles\n\nBase URL precedence\n\nPass baseUrl explicitly, or use environment variables for layered fallback The package-specific LEADTYPE AGENT BASE URL lets each package override an org-wide default. BASE URL covers most CI/deployment platforms, and a final hardcoded fallback keeps local builds working without env setup.\n\n```ts const baseUrl = process.env.LEADTYPE_AGENT_BASE_URL || process.env.BASE_URL || process.env.PORTLESS_URL || \"https://docs.example.com\"; ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nThe remark stack is what turns interactive MDX into agent-readable markdown. Imports get stripped first, placeholders get resolved, then each named component is flattened into a markdown equivalent. Order matters.\n\n```ts import { defaultRemarkPlugins, remarkInclude, remarkTypeTableToMarkdown, } from \"leadtype/remark\"; ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nThe default stack\n\ndefaultRemarkPlugins runs the stack in this order 1. remarkRemoveImports — strip MDX import and export statements. 2. remarkRemoveJsxComments — strip / ... / JSX comments. 3. remarkResolveDocPlaceholders — replace framework and similar placeholders in URLs. 4. remarkSectionToMarkdown — flatten ri --> rj --> rd --> rs --> rc --> rcd --> rdt --> rm --> rct --> rst --> rt --> rtt --> ra --> rts --> re --> out` ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nWhy order matters\n\nImports must go before placeholder resolution, because some placeholders read from imported modules. Placeholder resolution must go before component flatteners, because flatteners assume URLs are final strings, not template literals. The component flatteners run last so each one sees a clean tree. Don't reorder casually. If you need a custom plugin to run before a flattener for example, to transform a custom component into one of the contracted names , insert it after remarkResolveDocPlaceholders and before the flattener you want to feed.","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nOptional plugins\n\nremarkInclude\n\nAdd this when the source docs use include tags or partial composition Place it before the default stack so included content expands before any flattener sees it.\n\n```ts remarkPlugins: [remarkInclude, ...defaultRemarkPlugins]; ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nOptional plugins\n\nremarkTypeTableToMarkdown with basePath\n\n p !== remarkTypeTableToMarkdown), [remarkTypeTableToMarkdown, { basePath: process.cwd() }], ]; ``` ```mdx ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nPlugin selection rules\n\nUse defaultRemarkPlugins for any agent-facing or LLM output. Add remarkInclude when docs are composed from shared fragments. Use individual plugins only when you intentionally want to omit a flattener e.g. you don't use /docs/search-index.json /docs/search-content.json ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nRuntime search\n\nThe runtime is edge-safe — no Node APIs, works on Vercel, Cloudflare, and anywhere else Results include heading paths, hash URLs, and snippets ready for a search UI.\n\n```ts import { searchDocs, type DocsSearchIndex, type DocsSearchContentStore, } from \"leadtype/search\"; import indexJson from \"../public/docs/search-index.json\"; import contentJson from \"../public/docs/search-content.json\"; const results = searchDocs( indexJson as DocsSearchIndex, \"tabs install\", { content: contentJson as DocsSearchContentStore } ); ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nReading docs at runtime\n\nThe same index doubles as a virtual filesystem. Three readers, picked by what you have Use readDocsContentFile when you need the entire page for context links . Use readDocsContentChunk when a search result already named the right heading.\n\n```ts import { listDocsContentFiles, readDocsContentFile, readDocsContentChunk, } from \"leadtype/search\"; const allFiles = listDocsContentFiles(index); const wholePage = readDocsContentFile(index, \"guides/quickstart\", content); const oneChunk = readDocsContentChunk(index, \"chunk-0\", content); ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nSource-grounded answers\n\ncreateAnswerContext turns a query plus retrieved chunks into a system and prompt you pass to any model The system message instructs the model to answer only from the retrieved context, cite sources with 1 -style references, and say so when the context is insufficient.\n\n```ts import { createAnswerContext } from \"leadtype/search\"; const context = createAnswerContext(index, \"how do I run lint?\", { content, productName: \"My Library\", }); // → { system, prompt, sources } ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nStreaming via provider entry points\n\nThree thin wrappers around createAnswerContext that stream a Response and surface sources separately. Use one matching your runtime response is a plain text Response. sources is metadata for citation links — display it separately, don't embed it in the streamed answer. For TanStack, pass an explicit adapter . For Cloudflare, build one with createCloudflareDocsAdapter provider, model, options binding env.AI.gateway \"docs\" .\n\n```ts import { streamDocsAnswer } from \"leadtype/search/vercel\"; // Vercel AI SDK / AI Gateway import { streamDocsAnswer } from \"leadtype/search/tanstack\"; // TanStack AI import { streamDocsAnswer } from \"leadtype/search/cloudflare\"; // Cloudflare AI Gateway / Workers AI ``` ```ts const { response, sources } = streamDocsAnswer({ index, content, query, model: \"openai/gpt-5.5\", productName: \"My Library\", }); ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nBash tool adapters\n\nWhen you want an agent to explore docs with shell commands instead of receiving pre-selected chunks The adapter exposes a read-only virtual /docs filesystem with ls , cat , find , grep , and rg . Network commands, code execution, and writes are disabled. TanStack and Cloudflare expose createDocsBashTools plural over the same filesystem.\n\n```ts import { createDocsBashTool } from \"leadtype/search/vercel\"; const { tools, instructions } = await createDocsBashTool(index, content); ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nAbuse guards\n\nReusable utilities for the request path Helper Purpose -- -- validateDocsQuery Trim and cap query text. readJsonWithLimit Reject oversized JSON bodies before parse. getClientIdentifier Read common proxy IP headers. createMemoryRateLimiter Implements RateLimiter for demos. The in-memory limiter is fine for demos. Production apps should adapt the RateLimiter interface to a shared store — Redis, Vercel KV, Cloudflare KV, or Durable Objects.","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nWhen to add embeddings\n\nStart with the local index. It is static, cheap, edge-safe, and fast for exact API names, config keys, error messages, and paths. Add embeddings only when Users search with vocabulary that doesn't match the docs e.g. \"make it faster\" matching a \"performance optimization\" page . Your docs grow past tens of thousands of chunks and the cold-start memory hit becomes noticeable. Even then, keep the lexical index for exact matches and layer embeddings on top — they're complementary, not replacements."]}
diff --git a/apps/example/src/generated/docs-search-index.json b/apps/example/src/generated/docs-search-index.json
index aab20cf..6d7673b 100644
--- a/apps/example/src/generated/docs-search-index.json
+++ b/apps/example/src/generated/docs-search-index.json
@@ -1 +1 @@
-{"version":2,"generatedAt":"2026-05-09T05:03:19.290Z","documents":[["authoring/components","Components","MDX components the pipeline knows how to flatten into agent-readable markdown.","/docs/authoring/components","https://docs.example.com/docs/authoring/components","authoring/components"],["authoring/frontmatter","Frontmatter","Required fields, group semantics, and how authored MDX becomes a navigation tree.","/docs/authoring/frontmatter","https://docs.example.com/docs/authoring/frontmatter","authoring/frontmatter"],["build/bundle-package-docs","Bundle docs into a package","Ship agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.","/docs/build/bundle-package-docs","https://docs.example.com/docs/build/bundle-package-docs","build/bundle-package-docs"],["build/connect-docs-site","Connect a docs site","Wire leadtype into a docs app build so it serves humans, agents, and search from one source.","/docs/build/connect-docs-site","https://docs.example.com/docs/build/connect-docs-site","build/connect-docs-site"],["build/validate-in-ci","Validate in CI","Run leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.","/docs/build/validate-in-ci","https://docs.example.com/docs/build/validate-in-ci","build/validate-in-ci"],["components","Components","How to define app-owned MDX components that the leadtype pipeline can flatten.","/docs/components","https://docs.example.com/docs/components","components"],["convert","Convert","How to convert MDX docs into Markdown with leadtype/convert.","/docs/convert","https://docs.example.com/docs/convert","convert"],["guides/bundle-package-docs","Bundle docs into a package","How to ship generated agent docs inside an npm package.","/docs/guides/bundle-package-docs","https://docs.example.com/docs/guides/bundle-package-docs","guides/bundle-package-docs"],["guides/connect-docs-site","Connect a docs site","How to run the leadtype pipeline before building a docs app.","/docs/guides/connect-docs-site","https://docs.example.com/docs/guides/connect-docs-site","guides/connect-docs-site"],["how-it-works","How it works","The mental model: one MDX source, a remark pipeline, four artifacts, three audiences.","/docs/how-it-works","https://docs.example.com/docs/how-it-works","how-it-works"],["index","Leadtype","One MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.","/docs","https://docs.example.com/docs","index"],["lint","Lint","How to validate docs content with lintDocs and the leadtype lint CLI.","/docs/lint","https://docs.example.com/docs/lint","lint"],["llm","LLM","How to generate llms.txt and topic-scoped full-context files from leadtype.","/docs/llm","https://docs.example.com/docs/llm","llm"],["methodology","Methodology","How leadtype differs from Fumadocs, Starlight, and Mintlify.","/docs/methodology","https://docs.example.com/docs/methodology","methodology"],["quickstart","Quickstart","Install leadtype, run it against a docs folder, and inspect the four artifacts it produces.","/docs/quickstart","https://docs.example.com/docs/quickstart","quickstart"],["reference/cli","CLI","leadtype generate and leadtype lint — flags, exit codes, and JSON output.","/docs/reference/cli","https://docs.example.com/docs/reference/cli","reference/cli"],["reference/convert","Convert","MDX-to-markdown conversion APIs from leadtype/convert.","/docs/reference/convert","https://docs.example.com/docs/reference/convert","reference/convert"],["reference/lint","Lint rules","Schema, link, and navigation checks. CLI and library API.","/docs/reference/lint","https://docs.example.com/docs/reference/lint","reference/lint"],["reference/llm","LLM bundles","Generate llms.txt and topic-scoped full-context files for agents.","/docs/reference/llm","https://docs.example.com/docs/reference/llm","reference/llm"],["reference/remark","Remark plugins","The default plugin stack that flattens MDX components into markdown.","/docs/reference/remark","https://docs.example.com/docs/reference/remark","reference/remark"],["reference/search","Search","Static search index, runtime helpers, and source-grounded answer streaming.","/docs/reference/search","https://docs.example.com/docs/reference/search","reference/search"],["remark","Remark","Reference for the remark plugins and default plugin pipeline exported by leadtype.","/docs/remark","https://docs.example.com/docs/remark","remark"],["search","Search","Generate and query a static docs search index, then stream source-grounded AI answers.","/docs/search","https://docs.example.com/docs/search","search"]],"chunks":[["chunk-0",0,"components",["Components"],59,0],["chunk-1",0,"why-flatten-at-all",["Components","Why flatten at all?"],82,1],["chunk-2",0,"the-naming-contract",["Components","The naming contract"],76,2],["chunk-3",0,"component-reference",["Components","Component reference"],34,3],["chunk-4",0,"callout",["Components","Component reference","Callout"],74,4],["chunk-5",0,"cards",["Components","Component reference","Cards"],43,5],["chunk-6",0,"steps",["Components","Component reference","Steps"],74,6],["chunk-7",0,"tabs",["Components","Component reference","Tabs"],89,7],["chunk-8",0,"commandtabs",["Components","Component reference","CommandTabs"],111,8],["chunk-9",0,"accordion",["Components","Component reference","Accordion"],77,9],["chunk-10",0,"topicswitcher",["Components","Component reference","TopicSwitcher"],69,10],["chunk-11",0,"typetable-and-extractedtypetable",["Components","Component reference","TypeTable and ExtractedTypeTable"],86,11],["chunk-12",0,"example",["Components","Component reference","Example"],76,12],["chunk-13",0,"mermaid",["Components","Component reference","Mermaid"],62,13],["chunk-14",0,"guidelines",["Components","Guidelines"],55,14],["chunk-15",1,"frontmatter",["Frontmatter"],26,15],["chunk-16",1,"minimum",["Frontmatter","Minimum"],75,16],["chunk-17",1,"how-groups-become-a-nav-tree",["Frontmatter","How groups become a nav tree"],119,17],["chunk-18",1,"nested-groups",["Frontmatter","How groups become a nav tree","Nested groups"],69,18],["chunk-19",1,"optional-fields",["Frontmatter","Optional fields"],117,19],["chunk-20",1,"lint-rules",["Frontmatter","Lint rules"],88,20],["chunk-21",1,"what-this-gives-you",["Frontmatter","What this gives you"],55,21],["chunk-22",2,"bundle-docs-into-a-package",["Bundle docs into a package"],77,22],["chunk-23",2,"the-flow",["Bundle docs into a package","The flow"],86,23],["chunk-24",2,"generate-into-the-package",["Bundle docs into a package","Generate into the package"],72,24],["chunk-25",2,"filter-to-package-specific-docs",["Bundle docs into a package","Filter to package-specific docs"],76,25],["chunk-26",2,"include-in-the-published-tarball",["Bundle docs into a package","Include in the published tarball"],70,26],["chunk-27",2,"verify-before-publishing",["Bundle docs into a package","Verify before publishing"],76,27],["chunk-28",2,"how-agents-discover-bundled-docs",["Bundle docs into a package","How agents discover bundled docs"],104,28],["chunk-29",2,"when-to-use-this",["Bundle docs into a package","When to use this"],59,29],["chunk-30",2,"what-s-next",["Bundle docs into a package","What's next"],29,30],["chunk-31",3,"connect-a-docs-site",["Connect a docs site"],70,31],["chunk-32",3,"the-flow",["Connect a docs site","The flow"],94,32],["chunk-33",3,"one-off-run",["Connect a docs site","One-off run"],71,33],["chunk-34",3,"wire-it-into-the-build",["Connect a docs site","Wire it into the build"],130,34],["chunk-35",3,"configure-the-product-and-groups",["Connect a docs site","Configure the product and groups"],94,35],["chunk-36",3,"serve-markdown-to-agents",["Connect a docs site","Serve markdown to agents"],118,36],["chunk-37",3,"connect-a-remote-source",["Connect a docs site","Connect a remote source"],131,37],["chunk-38",3,"verify",["Connect a docs site","Verify"],92,38],["chunk-39",3,"what-s-next",["Connect a docs site","What's next"],26,39],["chunk-40",4,"validate-in-ci",["Validate in CI"],49,40],["chunk-41",4,"what-it-catches",["Validate in CI","What it catches"],78,41],["chunk-42",4,"github-actions",["Validate in CI","GitHub Actions"],83,42],["chunk-43",4,"other-ci-providers",["Validate in CI","Other CI providers"],60,43],["chunk-44",4,"local-pre-push-hook",["Validate in CI","Local pre-push hook"],64,44],["chunk-45",4,"run-before-generate",["Validate in CI","Run before generate"],63,45],["chunk-46",4,"what-to-fix-first",["Validate in CI","What to fix first"],66,46],["chunk-47",5,"components",["Components"],54,47],["chunk-48",5,"app-owned-adapter-map",["Components","App-Owned Adapter Map"],90,48],["chunk-49",5,"component-reference",["Components","Component Reference"],37,49],["chunk-50",5,"callout",["Components","Component Reference","Callout"],80,50],["chunk-51",5,"cards",["Components","Component Reference","Cards"],47,51],["chunk-52",5,"steps",["Components","Component Reference","Steps"],83,52],["chunk-53",5,"tabs",["Components","Component Reference","Tabs"],94,53],["chunk-54",5,"commandtabs",["Components","Component Reference","CommandTabs"],131,54],["chunk-55",5,"accordion",["Components","Component Reference","Accordion"],79,55],["chunk-56",5,"topicswitcher",["Components","Component Reference","TopicSwitcher"],80,56],["chunk-57",5,"typetable-and-extractedtypetable",["Components","Component Reference","TypeTable and ExtractedTypeTable"],99,57],["chunk-58",5,"example",["Components","Component Reference","Example"],88,58],["chunk-59",5,"mermaid",["Components","Component Reference","Mermaid"],67,59],["chunk-60",5,"guidance",["Components","Guidance"],37,60],["chunk-61",6,"convert",["Convert"],28,61],["chunk-62",6,"convert-one-file-in-memory",["Convert","Main Use Cases","Convert one file in memory"],35,62],["chunk-63",6,"convert-a-single-file-to-disk",["Convert","Main Use Cases","Convert a single file to disk"],23,63],["chunk-64",6,"convert-an-entire-docs-tree",["Convert","Main Use Cases","Convert an entire docs tree"],29,64],["chunk-65",6,"important-config",["Convert","Important Config"],36,65],["chunk-66",6,"behavior-notes",["Convert","Behavior Notes"],42,66],["chunk-67",6,"recommended-pairing",["Convert","Recommended Pairing"],37,67],["chunk-68",7,"bundle-docs-into-a-package",["Bundle docs into a package"],45,68],["chunk-69",7,"generate-into-the-package",["Bundle docs into a package","Generate into the package"],73,69],["chunk-70",7,"filter-package-specific-docs",["Bundle docs into a package","Filter package-specific docs"],92,70],["chunk-71",7,"include-docs-in-the-package",["Bundle docs into a package","Include docs in the package"],67,71],["chunk-72",7,"verify-before-publishing",["Bundle docs into a package","Verify before publishing"],59,72],["chunk-73",7,"when-to-use-this",["Bundle docs into a package","When to use this"],35,73],["chunk-74",8,"connect-a-docs-site",["Connect a docs site"],91,74],["chunk-75",8,"config-setup",["Connect a docs site","Config setup"],145,75],["chunk-76",8,"build-flow",["Connect a docs site","Build flow"],129,76],["chunk-77",8,"generated-output",["Connect a docs site","Generated output"],47,77],["chunk-78",8,"when-to-use-this",["Connect a docs site","When to use this"],50,78],["chunk-79",9,"how-it-works",["How it works"],37,79],["chunk-80",9,"the-pipeline",["How it works","The pipeline"],130,80],["chunk-81",9,"the-four-artifacts",["How it works","The four artifacts"],137,81],["chunk-82",9,"the-three-audiences",["How it works","The three audiences"],108,82],["chunk-83",9,"vocabulary",["How it works","Vocabulary"],132,83],["chunk-84",9,"what-runs-when",["How it works","What runs when"],84,84],["chunk-85",9,"where-to-next",["How it works","Where to next"],19,85],["chunk-86",10,"leadtype",["Leadtype"],145,86],["chunk-87",10,"choose-your-path",["Leadtype","Choose your path"],45,87],["chunk-88",10,"what-you-get",["Leadtype","What you get"],82,88],["chunk-89",10,"next",["Leadtype","Next"],45,89],["chunk-90",11,"lint",["Lint"],65,90],["chunk-91",11,"what-it-checks",["Lint","What It Checks"],73,91],["chunk-92",11,"cli-reference",["Lint","CLI Reference"],139,92],["chunk-93",11,"library-usage",["Lint","Library Usage"],20,93],["chunk-94",11,"options",["Lint","Library Usage","Options"],137,94],["chunk-95",11,"rule-reference",["Lint","Rule Reference"],87,95],["chunk-96",11,"docs-frontmatter",["Lint","Default Schemas","Docs Frontmatter"],75,96],["chunk-97",11,"changelog-frontmatter",["Lint","Default Schemas","Changelog Frontmatter"],59,97],["chunk-98",11,"meta-json",["Lint","Default Schemas","meta.json"],47,98],["chunk-99",11,"guidance",["Lint","Guidance"],54,99],["chunk-100",12,"llm",["LLM"],32,100],["chunk-101",12,"generatellmstxt",["LLM","Output Model","generateLlmsTxt"],30,101],["chunk-102",12,"generatellmfullcontextfiles",["LLM","Output Model","generateLLMFullContextFiles"],37,102],["chunk-103",12,"required-conventions",["LLM","Required Conventions"],32,103],["chunk-104",12,"typical-sequence",["LLM","Typical Sequence"],61,104],["chunk-105",12,"topic-design",["LLM","Topic Design"],47,105],["chunk-106",12,"guidance",["LLM","Guidance"],50,106],["chunk-107",13,"methodology",["Methodology"],30,107],["chunk-108",13,"the-short-version",["Methodology","The short version"],67,108],["chunk-109",13,"what-leadtype-owns",["Methodology","What leadtype owns"],50,109],["chunk-110",13,"what-leadtype-does-not-own",["Methodology","What leadtype does not own"],31,110],["chunk-111",13,"when-the-combination-shines",["Methodology","When the combination shines"],75,111],["chunk-112",14,"quickstart",["Quickstart"],19,112],["chunk-113",14,"install",["Quickstart","Install"],55,113],["chunk-114",14,"author-one-page",["Quickstart","Author one page"],47,114],["chunk-115",14,"generate",["Quickstart","Generate"],111,115],["chunk-116",14,"inspect-the-output",["Quickstart","Inspect the output"],89,116],["chunk-117",14,"what-s-next",["Quickstart","What's next"],30,117],["chunk-118",15,"cli",["CLI"],30,118],["chunk-119",15,"generate",["CLI","generate"],151,119],["chunk-120",15,"json-output-shape",["CLI","generate","JSON output shape"],97,120],["chunk-121",15,"group-inference",["CLI","generate","Group inference"],60,121],["chunk-122",15,"lint",["CLI","lint"],145,122],["chunk-123",15,"help",["CLI","help"],25,123],["chunk-124",15,"library-entry-points",["CLI","Library entry points"],65,124],["chunk-125",16,"convert",["Convert"],47,125],["chunk-126",16,"convertallmdx",["Convert","convertAllMdx"],67,126],["chunk-127",16,"convertmdxtomarkdown",["Convert","convertMdxToMarkdown"],54,127],["chunk-128",16,"writemdxfileasmarkdown",["Convert","writeMdxFileAsMarkdown"],28,128],["chunk-129",16,"behavior-notes",["Convert","Behavior notes"],50,129],["chunk-130",16,"pairing-with-remark-plugins",["Convert","Pairing with remark plugins"],54,130],["chunk-131",17,"lint-rules",["Lint rules"],46,131],["chunk-132",17,"rules",["Lint rules","Rules"],15,132],["chunk-133",17,"frontmatter-rules",["Lint rules","Rules","Frontmatter rules"],58,133],["chunk-134",17,"content-link-rules",["Lint rules","Rules","Content / link rules"],68,134],["chunk-135",17,"library-api",["Lint rules","Library API"],90,135],["chunk-136",17,"result-shape",["Lint rules","Library API","Result shape"],67,136],["chunk-137",17,"docs-frontmatter",["Lint rules","Default schemas","Docs frontmatter"],75,137],["chunk-138",17,"changelog-frontmatter",["Lint rules","Default schemas","Changelog frontmatter"],60,138],["chunk-139",17,"meta-json",["Lint rules","Default schemas","meta.json"],49,139],["chunk-140",17,"custom-schemas",["Lint rules","Custom schemas"],63,140],["chunk-141",17,"practical-guidance",["Lint rules","Practical guidance"],65,141],["chunk-142",18,"llm-bundles",["LLM bundles"],45,142],["chunk-143",18,"what-gets-generated",["LLM bundles","What gets generated"],97,143],["chunk-144",18,"example-llms-txt",["LLM bundles","Example llms.txt"],94,144],["chunk-145",18,"typical-sequence",["LLM bundles","Typical sequence"],89,145],["chunk-146",18,"resolvedocsnavigation",["LLM bundles","resolveDocsNavigation"],87,146],["chunk-147",18,"topic-design",["LLM bundles","Topic design"],76,147],["chunk-148",18,"base-url-precedence",["LLM bundles","Base URL precedence"],66,148],["chunk-149",19,"remark-plugins",["Remark plugins"],46,149],["chunk-150",19,"the-default-stack",["Remark plugins","The default stack"],158,150],["chunk-151",19,"why-order-matters",["Remark plugins","Why order matters"],81,151],["chunk-152",19,"remarkinclude",["Remark plugins","Optional plugins","remarkInclude"],40,152],["chunk-153",19,"remarktypetabletomarkdown-with-basepath",["Remark plugins","Optional plugins","remarkTypeTableToMarkdown with basePath"],76,153],["chunk-154",19,"plugin-selection-rules",["Remark plugins","Plugin selection rules"],63,154],["chunk-155",20,"search",["Search"],41,155],["chunk-156",20,"vocabulary",["Search","Vocabulary"],79,156],["chunk-157",20,"build-time-indexing",["Search","Build-time indexing"],67,157],["chunk-158",20,"runtime-search",["Search","Runtime search"],67,158],["chunk-159",20,"reading-docs-at-runtime",["Search","Reading docs at runtime"],62,159],["chunk-160",20,"source-grounded-answers",["Search","Source-grounded answers"],62,160],["chunk-161",20,"streaming-via-provider-entry-points",["Search","Streaming via provider entry points"],109,161],["chunk-162",20,"bash-tool-adapters",["Search","Bash tool adapters"],65,162],["chunk-163",20,"abuse-guards",["Search","Abuse guards"],60,163],["chunk-164",20,"when-to-add-embeddings",["Search","When to add embeddings"],73,164],["chunk-165",21,"remark",["Remark"],18,165],["chunk-166",21,"default-plugin-stack",["Remark","Default Plugin Stack"],49,166],["chunk-167",21,"remarkinclude",["Remark","When To Add Extra Plugins","remarkInclude"],38,167],["chunk-168",21,"remarktypetabletomarkdown",["Remark","When To Add Extra Plugins","remarkTypeTableToMarkdown"],69,168],["chunk-169",21,"plugin-selection-guide",["Remark","Plugin Selection Guide"],33,169],["chunk-170",21,"guidance",["Remark","Guidance"],59,170],["chunk-171",22,"search",["Search"],111,171],["chunk-172",22,"build-time-indexing",["Search","Build-Time Indexing"],90,172],["chunk-173",22,"runtime-search",["Search","Runtime Search"],64,173],["chunk-174",22,"docs-content-files",["Search","Docs Content Files"],76,174],["chunk-175",22,"answer-context",["Search","Answer Context"],57,175],["chunk-176",22,"vercel-ai-gateway-ai-sdk-streaming",["Search","Vercel AI Gateway / AI SDK Streaming"],74,176],["chunk-177",22,"byo-gateway-streaming",["Search","BYO Gateway Streaming"],79,177],["chunk-178",22,"bash-tool-adapters",["Search","Bash Tool Adapters"],76,178],["chunk-179",22,"abuse-guards",["Search","Abuse Guards"],70,179],["chunk-180",22,"when-to-use-embeddings",["Search","When To Use Embeddings"],74,180]],"terms":{"10":[[150,0,0,1,0]],"11":[[150,0,0,1,0]],"12":[[150,0,0,1,0]],"13":[[150,0,0,1,0]],"14":[[150,0,0,1,0]],"15":[[150,0,0,1,0]],"30":[[36,0,0,1,0]],"35":[[83,0,0,1,0],[156,0,0,1,0]],"50":[[147,0,0,1,0]],"5173":[[38,0,0,1,0]],"8601":[[97,0,0,1,0],[138,0,0,1,0]],"components":[[0,1,1,3,0],[1,1,1,2,0],[2,1,1,2,2],[3,1,1,1,0],[4,1,1,1,0],[5,1,1,1,0],[6,1,1,2,1],[7,1,1,1,0],[8,1,1,1,0],[9,1,1,1,0],[10,1,1,1,0],[11,1,1,1,0],[12,1,1,1,4],[13,1,1,1,0],[14,1,1,3,0],[47,1,1,3,0],[48,1,1,3,2],[49,1,1,1,0],[50,1,1,1,0],[51,1,1,1,0],[52,1,1,2,1],[53,1,1,1,0],[54,1,1,1,0],[55,1,1,1,0],[56,1,1,1,0],[57,1,1,1,0],[58,1,1,1,4],[59,1,1,1,0],[60,1,1,2,0],[80,0,0,2,1],[88,0,0,1,0],[110,0,0,1,0],[149,0,0,1,0],[150,0,0,1,0],[151,0,0,1,0],[152,0,0,1,0],[153,0,0,1,0],[154,0,0,1,0],[166,0,0,1,0]],"mdx":[[0,0,0,2,0],[1,0,0,2,0],[2,0,0,1,1],[3,0,0,2,0],[4,0,0,1,0],[5,0,0,1,1],[6,0,0,2,1],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,3],[13,0,0,1,2],[14,0,0,1,0],[15,0,0,2,0],[16,0,0,1,1],[17,0,0,1,0],[18,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[23,0,0,0,1],[31,0,0,1,0],[32,0,0,0,1],[33,0,0,1,0],[34,0,0,1,1],[40,0,0,1,0],[42,0,0,0,1],[47,0,0,2,0],[48,0,0,3,1],[49,0,0,1,0],[50,0,0,1,0],[51,0,0,1,1],[52,0,0,2,1],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[56,0,0,1,0],[57,0,0,1,0],[58,0,0,1,3],[59,0,0,1,2],[60,0,0,1,0],[61,0,0,1,0],[62,0,0,1,1],[63,0,0,1,0],[64,0,0,1,0],[65,0,0,2,0],[66,0,0,1,0],[67,0,0,1,0],[74,0,0,1,1],[75,0,0,1,3],[79,0,0,2,0],[80,0,0,2,1],[81,0,0,2,0],[82,0,0,2,1],[83,0,0,2,0],[84,0,0,2,0],[85,0,0,1,0],[86,0,0,2,1],[87,0,0,1,0],[88,0,0,4,0],[89,0,0,1,0],[91,0,0,2,0],[94,0,0,1,0],[109,0,0,1,0],[110,0,0,1,0],[112,0,0,1,0],[114,0,0,1,1],[115,0,0,1,0],[116,0,0,1,0],[119,0,0,1,0],[125,0,0,2,0],[126,0,0,2,0],[127,0,0,1,1],[128,0,0,1,1],[129,0,0,2,0],[130,0,0,1,0],[131,0,0,1,0],[134,0,0,1,0],[135,0,0,1,0],[149,0,0,2,0],[150,0,0,2,1],[151,0,0,1,0],[152,0,0,1,0],[153,0,0,1,0],[154,0,0,1,0],[157,0,0,1,0],[166,0,0,2,0],[168,0,0,1,0],[172,0,0,1,0]],"pipeline":[[0,0,0,2,0],[1,0,0,1,0],[2,0,0,2,0],[3,0,0,1,0],[4,0,0,2,0],[5,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,2,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[21,0,0,1,0],[34,0,0,2,8],[40,0,0,1,0],[47,0,0,2,0],[48,0,0,3,0],[49,0,0,2,0],[50,0,0,2,0],[51,0,0,2,0],[52,0,0,3,0],[53,0,0,2,0],[54,0,0,2,0],[55,0,0,3,0],[56,0,0,1,0],[57,0,0,1,0],[58,0,0,1,0],[59,0,0,2,0],[60,0,0,2,0],[74,0,0,3,0],[75,0,0,1,1],[76,0,0,1,0],[77,0,0,1,0],[78,0,0,2,0],[79,0,0,1,0],[80,0,1,1,0],[81,0,0,1,0],[82,0,0,1,0],[83,0,0,1,0],[84,0,0,1,0],[85,0,0,1,0],[86,0,0,2,0],[87,0,0,1,0],[88,0,0,1,0],[89,0,0,2,0],[91,0,0,1,0],[107,0,0,1,0],[108,0,0,1,0],[109,0,0,1,0],[111,0,0,1,0],[112,0,0,1,0],[117,0,0,1,0],[118,0,0,1,0],[119,0,0,1,0],[121,0,0,1,0],[127,0,0,1,0],[144,0,0,0,1],[153,0,0,1,0],[165,0,0,1,0],[166,0,0,2,0],[167,0,0,1,0],[168,0,0,3,0],[169,0,0,1,0],[170,0,0,1,0]],"knows":[[0,0,0,1,0],[1,0,0,1,0],[2,0,0,1,0],[3,0,0,1,0],[4,0,0,1,0],[5,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[48,0,0,1,0]],"flatten":[[0,0,0,2,0],[1,0,1,1,0],[2,0,0,1,0],[3,0,0,1,0],[4,0,0,3,0],[5,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[47,0,0,2,0],[48,0,0,2,0],[49,0,0,1,0],[50,0,0,3,0],[51,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[56,0,0,1,0],[57,0,0,1,0],[58,0,0,1,0],[59,0,0,1,0],[60,0,0,1,0],[80,0,0,0,1],[83,0,0,1,0],[150,0,0,2,0]],"into":[[0,0,0,2,0],[1,0,0,2,0],[2,0,0,1,0],[3,0,0,1,0],[4,0,0,3,0],[5,0,0,1,1],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[16,0,0,0,1],[19,0,0,1,0],[22,1,1,0,0],[23,1,1,0,0],[24,1,2,0,0],[25,1,1,0,0],[26,1,1,0,0],[27,1,1,0,0],[28,1,1,0,0],[29,1,1,0,0],[30,1,1,0,0],[31,0,0,1,0],[32,0,0,1,0],[33,0,0,1,0],[34,0,1,2,0],[35,0,0,1,0],[36,0,0,1,0],[37,0,0,2,0],[38,0,0,1,0],[39,0,0,1,0],[40,0,0,1,0],[43,0,0,1,0],[47,0,0,1,0],[50,0,0,2,0],[51,0,0,1,1],[53,0,0,1,0],[54,0,0,1,0],[59,0,0,1,0],[61,0,0,1,0],[62,0,0,1,0],[63,0,0,1,0],[64,0,0,1,0],[65,0,0,1,0],[66,0,0,1,0],[67,0,0,1,0],[68,1,1,0,0],[69,1,2,1,0],[70,1,1,0,0],[71,1,1,0,0],[72,1,1,0,0],[73,1,1,0,0],[74,0,0,1,0],[75,0,0,0,1],[76,0,0,1,0],[80,0,0,1,0],[83,0,0,1,0],[117,0,0,2,0],[119,0,0,1,0],[125,0,0,1,0],[129,0,0,1,0],[130,0,0,1,0],[141,0,0,1,0],[143,0,0,1,0],[149,0,0,3,0],[150,0,0,1,0],[151,0,0,2,0],[152,0,0,1,0],[153,0,0,1,0],[154,0,0,1,0],[160,0,0,1,0],[166,0,0,1,0]],"agent":[[0,0,0,1,0],[1,0,0,2,0],[2,0,0,1,0],[3,0,0,2,0],[4,0,0,1,0],[5,0,0,1,1],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,2,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[32,0,0,0,2],[49,0,0,1,0],[51,0,0,0,1],[60,0,0,1,0],[66,0,0,1,0],[68,0,0,2,0],[69,0,0,1,0],[70,0,0,1,0],[71,0,0,1,0],[72,0,0,1,0],[73,0,0,1,0],[76,0,0,1,0],[80,0,0,1,0],[82,0,0,0,2],[86,0,0,2,3],[90,0,0,1,0],[100,0,0,1,0],[106,0,0,1,0],[108,0,0,1,0],[111,0,0,2,0],[116,0,0,2,1],[129,0,0,1,0],[142,0,0,1,0],[147,0,0,1,0],[148,0,0,1,1],[149,0,0,1,0],[154,0,0,1,0],[162,0,0,1,0],[166,0,0,1,0],[169,0,0,1,0],[174,0,0,1,0],[178,0,0,1,0]],"readable":[[0,0,0,1,0],[1,0,0,1,0],[2,0,0,1,0],[3,0,0,1,0],[4,0,0,1,0],[5,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[60,0,0,1,0],[68,0,0,1,0],[80,0,0,1,0],[86,0,0,1,0],[116,0,0,0,1],[149,0,0,1,0]],"markdown":[[0,0,0,2,0],[1,0,0,3,0],[2,0,0,1,0],[3,0,0,2,0],[4,0,0,1,0],[5,0,0,1,1],[6,0,0,2,1],[7,0,0,1,0],[8,0,0,2,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,2,5],[14,0,0,2,0],[24,0,0,1,0],[32,0,0,0,2],[36,0,1,2,1],[38,0,0,2,0],[47,0,0,1,0],[49,0,0,1,0],[51,0,0,0,1],[52,0,0,2,1],[54,0,0,1,0],[59,0,0,0,5],[60,0,0,1,0],[61,0,0,1,0],[62,0,0,2,0],[63,0,0,1,0],[64,0,0,1,0],[65,0,0,1,0],[66,0,0,3,0],[67,0,0,1,0],[69,0,0,1,0],[75,0,0,0,1],[76,0,0,1,0],[80,0,0,3,0],[81,0,0,2,0],[82,0,0,3,1],[83,0,0,2,0],[84,0,0,2,0],[86,0,0,1,1],[88,0,0,2,0],[91,0,0,2,0],[95,0,0,1,0],[100,0,0,1,0],[102,0,0,1,0],[103,0,0,1,0],[107,0,0,1,0],[109,0,0,1,0],[111,0,0,1,0],[115,0,0,1,0],[125,0,0,2,0],[126,0,0,1,0],[127,0,0,2,1],[128,0,0,1,0],[129,0,0,2,0],[130,0,0,1,0],[149,0,0,3,0],[150,0,0,3,1],[151,0,0,1,0],[152,0,0,1,0],[153,0,0,1,0],[154,0,0,1,0],[157,0,0,1,0],[166,0,0,2,0],[168,0,0,1,0],[170,0,0,2,0],[172,0,0,2,0]],"leadtype":[[0,0,0,1,0],[6,0,0,1,1],[8,0,0,8,4],[12,0,0,1,1],[14,0,0,1,0],[15,0,0,1,0],[16,0,0,0,1],[20,0,0,1,0],[22,0,0,4,0],[23,0,0,0,1],[24,0,0,0,1],[25,0,0,0,1],[26,0,0,2,1],[27,0,0,0,1],[31,0,0,3,0],[32,0,0,1,1],[33,0,0,2,1],[34,0,0,1,0],[35,0,0,1,1],[36,0,0,1,0],[37,0,0,1,2],[38,0,0,1,0],[39,0,0,1,0],[40,0,0,3,0],[41,0,0,1,0],[42,0,0,1,1],[43,0,0,1,1],[44,0,0,1,1],[45,0,0,3,2],[46,0,0,1,0],[47,0,0,2,0],[48,0,0,1,0],[49,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[52,0,0,2,1],[53,0,0,1,0],[54,0,0,9,4],[55,0,0,1,0],[56,0,0,1,0],[57,0,0,1,0],[58,0,0,2,1],[59,0,0,1,0],[60,0,0,1,0],[61,0,0,2,1],[62,0,0,1,0],[63,0,0,1,0],[64,0,0,1,0],[65,0,0,2,0],[66,0,0,1,0],[67,0,0,1,1],[69,0,0,0,1],[70,0,0,0,2],[71,0,0,2,1],[72,0,0,0,1],[74,0,0,2,3],[75,0,0,1,3],[76,0,0,3,2],[77,0,0,1,0],[78,0,0,1,0],[79,0,0,1,0],[81,0,0,1,0],[84,0,0,1,0],[86,1,1,2,1],[87,1,1,0,0],[88,1,1,1,0],[89,1,1,1,0],[90,0,0,1,3],[91,0,0,1,0],[92,0,0,1,1],[93,0,0,1,0],[94,0,0,1,0],[95,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,2,0],[100,0,0,1,1],[101,0,0,1,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,1,0],[107,0,0,2,0],[108,0,0,3,0],[109,0,1,1,0],[110,0,1,1,0],[111,0,0,4,0],[112,0,0,1,0],[113,0,0,11,0],[114,0,0,1,0],[115,0,0,1,1],[116,0,0,1,0],[117,0,0,1,0],[118,0,0,3,1],[119,0,0,2,1],[120,0,0,2,0],[121,0,0,2,0],[122,0,0,2,1],[123,0,0,2,3],[124,0,0,7,0],[125,0,0,3,1],[126,0,0,1,1],[127,0,0,1,0],[128,0,0,1,0],[129,0,0,1,0],[130,0,0,1,1],[131,0,0,1,1],[135,0,0,0,1],[140,0,0,0,1],[141,0,0,1,0],[142,0,0,1,1],[145,0,0,0,3],[148,0,0,1,1],[149,0,0,0,1],[153,0,0,0,1],[155,0,0,1,0],[157,0,0,0,1],[158,0,0,0,1],[159,0,0,0,1],[160,0,0,0,1],[161,0,0,0,3],[162,0,0,0,1],[165,0,0,1,1],[166,0,0,1,0],[167,0,0,1,0],[168,0,0,1,0],[169,0,0,1,0],[170,0,0,1,0],[171,0,0,4,5],[176,0,0,0,1],[177,0,0,0,2],[178,0,0,0,1]],"does":[[0,0,0,1,0],[10,0,0,1,0],[34,0,0,2,0],[35,0,0,0,1],[47,0,0,1,0],[56,0,0,1,0],[95,0,0,1,0],[110,0,1,0,0],[114,0,0,0,1],[115,0,0,1,0],[144,0,0,0,1],[145,0,0,0,1]],"not":[[0,0,0,1,0],[7,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[41,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[53,0,0,1,0],[55,0,0,1,0],[56,0,0,1,0],[75,0,0,1,0],[78,0,0,1,0],[84,0,0,1,0],[86,0,0,1,0],[91,0,0,1,0],[94,0,0,1,0],[95,0,0,4,0],[96,0,0,1,0],[107,0,0,1,0],[110,0,1,0,0],[121,0,0,1,0],[133,0,0,1,0],[147,0,0,1,0],[151,0,0,1,0],[156,0,0,1,0],[164,0,0,1,0],[168,0,0,1,0],[170,0,0,1,0],[176,0,0,1,0],[179,0,0,1,0],[180,0,0,1,0]],"ship":[[0,0,0,1,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[37,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[71,0,0,1,0],[72,0,0,1,0],[73,0,0,1,0],[74,0,0,1,0],[86,0,0,1,0],[87,0,0,1,0],[111,0,0,1,0]],"ui":[[0,0,0,1,0],[14,0,0,1,0],[21,0,0,1,0],[32,0,0,0,1],[37,0,0,1,0],[47,0,0,1,0],[74,0,0,1,0],[76,0,0,1,0],[78,0,0,1,0],[82,0,0,0,1],[86,0,0,1,1],[108,0,0,1,0],[110,0,0,1,0],[111,0,0,1,0],[146,0,0,1,0],[158,0,0,1,0],[174,0,0,1,0],[176,0,0,1,0]],"your":[[0,0,0,1,0],[2,0,0,3,0],[14,0,0,1,0],[19,0,0,1,0],[22,0,0,2,0],[23,0,0,0,1],[28,0,0,4,0],[29,0,0,1,0],[31,0,0,2,0],[32,0,0,0,1],[36,0,0,1,0],[38,0,0,1,0],[43,0,0,1,0],[48,0,0,2,0],[79,0,0,1,0],[81,0,0,1,0],[82,0,0,2,0],[86,0,0,2,1],[87,0,1,1,0],[88,0,0,1,0],[110,0,0,1,0],[111,0,0,2,0],[114,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0],[130,0,0,1,0],[140,0,0,1,0],[146,0,0,1,0],[155,0,0,1,0],[161,0,0,1,0],[164,0,0,1,0],[176,0,0,1,0]],"docs":[[0,0,0,2,0],[2,0,0,0,1],[5,0,0,0,1],[6,0,0,2,1],[10,0,0,1,2],[12,0,0,0,1],[14,0,0,1,0],[16,0,0,1,2],[17,0,0,2,1],[18,0,0,1,3],[20,0,0,2,0],[22,1,1,6,0],[23,1,1,1,4],[24,1,1,3,2],[25,1,2,2,0],[26,1,1,3,1],[27,1,1,7,0],[28,1,2,5,0],[29,1,1,3,0],[30,1,1,1,0],[31,1,1,3,0],[32,1,1,1,7],[33,1,1,2,2],[34,1,1,1,0],[35,1,1,3,3],[36,1,1,2,2],[37,1,1,7,4],[38,1,1,6,0],[39,1,1,1,0],[40,0,0,1,0],[41,0,0,2,0],[42,0,0,0,3],[43,0,0,0,1],[44,0,0,0,1],[45,0,0,0,1],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,2,1],[51,0,0,0,1],[52,0,0,2,1],[56,0,0,1,2],[58,0,0,0,1],[60,0,0,1,0],[61,0,0,1,0],[62,0,0,1,1],[63,0,0,1,0],[64,0,1,1,0],[65,0,0,1,0],[66,0,0,1,0],[67,0,0,2,0],[68,1,1,4,0],[69,1,1,5,2],[70,1,2,3,0],[71,1,2,4,1],[72,1,1,6,0],[73,1,1,3,0],[74,1,1,7,1],[75,1,1,4,4],[76,1,1,5,4],[77,1,1,7,0],[78,1,1,5,0],[79,0,0,2,0],[80,0,0,0,5],[81,0,0,3,0],[82,0,0,2,1],[83,0,0,3,0],[84,0,0,2,0],[86,0,0,3,2],[87,0,0,2,0],[90,0,0,5,2],[91,0,0,7,0],[92,0,0,2,0],[93,0,0,1,1],[94,0,0,2,0],[95,0,0,5,0],[96,0,1,2,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,2,0],[100,0,0,1,0],[101,0,0,2,0],[102,0,0,3,0],[103,0,0,3,0],[104,0,0,0,3],[105,0,0,1,0],[106,0,0,2,0],[107,0,0,3,0],[108,0,0,4,0],[110,0,0,1,0],[111,0,0,2,0],[112,0,0,1,0],[113,0,0,1,0],[114,0,0,2,0],[115,0,0,6,1],[116,0,0,2,2],[117,0,0,3,0],[119,0,0,8,0],[120,0,0,0,5],[121,0,0,2,0],[122,0,0,1,0],[126,0,0,1,2],[127,0,0,0,1],[128,0,0,0,2],[130,0,0,1,0],[134,0,0,3,0],[135,0,0,1,1],[137,0,1,0,0],[140,0,0,0,1],[141,0,0,1,0],[142,0,0,1,0],[143,0,0,4,0],[144,0,0,0,10],[145,0,0,1,4],[146,0,0,1,1],[147,0,0,1,0],[148,0,0,0,1],[152,0,0,1,0],[154,0,0,1,0],[155,0,0,1,0],[157,0,0,1,3],[158,0,0,0,2],[159,0,1,0,0],[161,0,0,1,1],[162,0,0,2,0],[164,0,0,2,0],[166,0,0,2,0],[167,0,0,1,0],[169,0,0,1,0],[171,0,0,1,0],[172,0,0,2,3],[173,0,0,1,0],[174,0,1,2,0],[175,0,0,3,1],[176,0,0,1,2],[177,0,0,1,1],[178,0,0,3,0],[179,0,0,2,0],[180,0,0,4,0]],"app":[[0,0,0,2,0],[2,0,0,1,0],[3,0,0,1,0],[12,0,0,1,1],[14,0,0,1,0],[16,0,0,0,1],[31,0,0,1,0],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,2,0],[35,0,0,1,0],[36,0,0,2,0],[37,0,0,2,0],[38,0,0,1,0],[39,0,0,1,0],[47,0,0,2,0],[48,0,1,4,0],[49,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[52,0,0,2,0],[53,0,0,1,0],[54,0,0,2,0],[55,0,0,1,0],[56,0,0,1,0],[57,0,0,1,0],[58,0,0,3,1],[59,0,0,1,0],[60,0,0,2,0],[74,0,0,4,0],[75,0,0,1,1],[76,0,0,3,0],[77,0,0,1,0],[78,0,0,2,0],[110,0,0,1,0],[111,0,0,1,0],[146,0,0,1,0]],"owns":[[0,0,0,1,0],[12,0,0,0,2],[25,0,0,1,0],[47,0,0,1,0],[58,0,0,0,2],[74,0,0,2,0],[109,0,1,0,0]],"runtime":[[0,0,0,1,0],[12,0,0,0,2],[14,0,0,1,0],[47,0,0,1,0],[58,0,0,0,2],[60,0,0,1,0],[75,0,0,1,0],[119,0,0,1,0],[144,0,0,0,1],[155,0,0,2,0],[156,0,0,1,0],[157,0,0,1,0],[158,0,1,2,0],[159,0,1,1,0],[160,0,0,1,0],[161,0,0,2,0],[162,0,0,1,0],[163,0,0,1,0],[164,0,0,1,0],[171,0,0,1,0],[173,0,1,1,0]],"rendering":[[0,0,0,1,0],[31,0,0,1,0],[47,0,0,1,0],[66,0,0,1,0],[129,0,0,1,0]],"styling":[[0,0,0,1,0],[4,0,0,2,0],[12,0,0,0,1],[47,0,0,1,0],[50,0,0,2,0],[58,0,0,0,1],[110,0,0,1,0]],"accessibility":[[0,0,0,1,0],[47,0,0,1,0]],"only":[[0,0,0,1,0],[10,0,0,1,0],[14,0,0,1,0],[18,0,0,2,0],[25,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[47,0,0,1,0],[67,0,0,1,0],[70,0,0,1,0],[73,0,0,1,0],[83,0,0,1,0],[91,0,0,1,0],[143,0,0,1,0],[154,0,0,1,0],[160,0,0,1,0],[162,0,0,1,0],[164,0,0,1,0],[168,0,0,1,0],[169,0,0,1,0],[171,0,0,1,0],[172,0,0,1,0],[175,0,0,1,0],[178,0,0,2,0]],"has":[[0,0,0,1,0],[20,0,0,1,0],[66,0,0,1,0],[83,0,0,1,0],[180,0,0,1,0]],"honor":[[0,0,0,1,0]],"small":[[0,0,0,1,0],[47,0,0,1,0],[68,0,0,1,0],[81,0,0,1,0],[157,0,0,1,0],[170,0,0,1,0],[173,0,0,1,0],[174,0,0,1,0]],"naming":[[0,0,0,1,0],[2,0,1,0,0]],"contract":[[0,0,0,1,0],[2,0,1,1,0],[14,0,0,1,0],[47,0,0,1,0],[80,0,0,1,0],[85,0,0,1,0],[140,0,0,1,0]],"so":[[0,0,0,1,0],[1,0,0,1,0],[4,0,0,1,0],[7,0,0,1,0],[13,0,0,1,0],[20,0,0,1,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,2,0],[27,0,0,1,0],[28,0,0,2,0],[29,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,0,2,0],[37,0,0,3,0],[38,0,0,1,0],[39,0,0,1,0],[40,0,0,2,0],[41,0,0,1,0],[42,0,0,2,0],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[50,0,0,1,0],[53,0,0,1,0],[55,0,0,1,0],[59,0,0,1,0],[76,0,0,1,0],[79,0,0,1,0],[81,0,0,1,0],[99,0,0,1,0],[105,0,0,1,0],[109,0,0,1,0],[129,0,0,1,0],[130,0,0,1,0],[134,0,0,1,0],[141,0,0,1,0],[145,0,0,1,0],[151,0,0,1,0],[152,0,0,1,0],[156,0,0,2,0],[160,0,0,1,0],[167,0,0,1,0]],"remark":[[0,0,0,1,0],[2,0,0,2,0],[4,0,0,1,0],[5,0,0,1,0],[9,0,0,1,0],[13,0,0,0,2],[14,0,0,1,0],[47,0,0,1,0],[48,0,0,2,0],[49,0,0,1,0],[50,0,0,1,0],[51,0,0,2,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,2,0],[57,0,0,1,0],[59,0,0,1,2],[60,0,0,1,0],[65,0,0,1,0],[67,0,0,0,1],[79,0,0,1,0],[80,0,0,3,4],[81,0,0,1,0],[82,0,0,1,0],[83,0,0,1,0],[84,0,0,2,0],[85,0,0,1,0],[91,0,0,1,0],[109,0,0,1,0],[113,0,0,1,0],[115,0,0,1,0],[124,0,0,1,0],[125,0,0,1,0],[126,0,0,0,1],[130,0,1,1,1],[134,0,0,1,0],[145,0,0,0,1],[149,1,1,1,1],[150,1,1,0,0],[151,1,1,0,0],[152,1,1,0,0],[153,1,1,0,1],[154,1,1,0,0],[165,1,1,1,1],[166,1,1,1,0],[167,1,1,1,0],[168,1,1,1,0],[169,1,1,1,0],[170,1,1,1,0]],"each":[[0,0,0,1,0],[1,0,0,1,0],[3,0,0,1,0],[17,0,0,2,0],[25,0,0,1,0],[34,0,0,1,0],[49,0,0,1,0],[53,0,0,1,0],[74,0,0,1,0],[81,0,0,2,0],[83,0,0,1,0],[84,0,0,2,0],[87,0,0,1,0],[92,0,0,1,0],[111,0,0,1,0],[115,0,0,1,0],[122,0,0,1,0],[148,0,0,1,0],[149,0,0,1,0],[151,0,0,1,0],[156,0,0,1,0]],"component":[[0,0,0,1,0],[1,0,0,1,0],[3,0,1,0,0],[4,0,1,0,0],[5,0,1,0,0],[6,0,1,0,0],[7,0,1,0,0],[8,0,1,0,0],[9,0,1,0,0],[10,0,1,0,0],[11,0,1,0,0],[12,0,1,1,0],[13,0,1,0,0],[14,0,0,1,0],[19,0,0,1,0],[47,0,0,1,0],[49,0,1,1,0],[50,0,1,0,0],[51,0,1,0,0],[52,0,1,0,0],[53,0,1,0,0],[54,0,1,0,0],[55,0,1,0,0],[56,0,1,1,0],[57,0,1,1,0],[58,0,1,1,0],[59,0,1,0,0],[60,0,0,1,0],[80,0,0,1,0],[83,0,0,1,0],[110,0,0,2,0],[130,0,0,1,0],[146,0,0,1,0],[149,0,0,1,0],[151,0,0,3,0],[170,0,0,1,0]],"agents":[[0,0,0,1,0],[1,0,0,1,0],[4,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[9,0,0,1,0],[13,0,0,0,2],[22,0,0,2,0],[23,0,0,1,1],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,1,3,0],[29,0,0,3,0],[30,0,0,1,0],[31,0,0,1,0],[32,0,0,1,1],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,1,3,0],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,1,0],[47,0,0,1,0],[50,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[55,0,0,1,0],[59,0,0,1,2],[68,0,0,1,0],[73,0,0,1,0],[74,0,0,1,0],[75,0,0,0,1],[81,0,0,1,0],[82,0,0,1,1],[86,0,0,1,1],[87,0,0,1,0],[88,0,0,2,0],[89,0,0,1,0],[109,0,0,1,0],[116,0,0,0,1],[142,0,0,1,0],[143,0,0,2,0],[144,0,0,1,0],[145,0,0,1,0],[146,0,0,1,0],[147,0,0,3,0],[148,0,0,1,0]],"search":[[0,0,0,1,0],[1,0,0,1,0],[5,0,0,1,0],[13,0,0,0,1],[19,0,0,2,0],[21,0,0,1,0],[23,0,0,0,1],[24,0,0,1,0],[27,0,0,2,0],[31,0,0,2,0],[32,0,0,1,6],[33,0,0,2,0],[34,0,0,1,3],[35,0,0,1,0],[36,0,0,1,0],[37,0,0,2,0],[38,0,0,3,0],[39,0,0,2,0],[47,0,0,1,0],[51,0,0,1,0],[59,0,0,0,1],[69,0,0,1,0],[72,0,0,2,0],[76,0,0,2,0],[77,0,0,2,0],[80,0,0,1,2],[81,0,0,3,0],[82,0,0,1,5],[83,0,0,1,0],[84,0,0,1,0],[86,0,0,3,6],[87,0,0,1,0],[88,0,0,2,0],[89,0,0,1,0],[107,0,0,1,0],[108,0,0,1,0],[109,0,0,1,0],[111,0,0,1,0],[113,0,0,1,0],[115,0,0,3,0],[116,0,0,1,2],[119,0,0,1,0],[120,0,0,0,3],[124,0,0,1,0],[155,1,1,2,0],[156,1,1,5,0],[157,1,1,2,3],[158,1,2,2,3],[159,1,1,2,1],[160,1,1,1,1],[161,1,1,1,4],[162,1,1,1,1],[163,1,1,1,0],[164,1,1,2,0],[171,1,1,6,5],[172,1,1,4,2],[173,1,2,2,0],[174,1,1,2,0],[175,1,1,1,0],[176,1,1,1,2],[177,1,1,1,2],[178,1,1,1,1],[179,1,1,1,0],[180,1,1,3,0]],"llms":[[0,0,0,1,0],[9,0,0,1,0],[13,0,0,0,2],[16,0,0,3,0],[17,0,0,2,5],[18,0,0,1,0],[21,0,0,2,0],[23,0,0,0,2],[24,0,0,1,0],[27,0,0,3,0],[28,0,0,4,0],[32,0,0,0,2],[33,0,0,1,0],[35,0,0,1,0],[38,0,0,2,0],[55,0,0,1,0],[59,0,0,0,2],[69,0,0,1,0],[72,0,0,2,0],[75,0,0,1,1],[76,0,0,1,0],[77,0,0,4,0],[80,0,0,1,5],[81,0,0,5,0],[83,0,0,3,0],[86,0,0,1,2],[87,0,0,1,0],[88,0,0,3,0],[89,0,0,1,0],[100,0,0,1,0],[101,0,0,3,0],[102,0,0,4,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,1,0],[107,0,0,1,0],[109,0,0,1,0],[111,0,0,1,0],[115,0,0,3,0],[116,0,0,1,4],[119,0,0,3,0],[120,0,0,0,3],[121,0,0,1,0],[142,0,0,3,0],[143,0,0,6,0],[144,0,1,1,0],[145,0,0,1,0],[146,0,0,1,0],[147,0,0,2,0],[148,0,0,1,0]],"full":[[0,0,0,1,0],[16,0,0,1,0],[17,0,0,1,4],[18,0,0,1,0],[19,0,0,2,0],[20,0,0,1,0],[21,0,0,1,0],[23,0,0,0,1],[24,0,0,1,0],[27,0,0,2,0],[28,0,0,3,0],[32,0,0,0,1],[38,0,0,2,0],[41,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[72,0,0,1,0],[75,0,0,1,1],[76,0,0,1,0],[77,0,0,2,0],[80,0,0,1,1],[81,0,0,3,0],[83,0,0,2,0],[86,0,0,0,1],[96,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0],[102,0,0,4,0],[103,0,0,2,0],[104,0,0,1,1],[105,0,0,2,0],[106,0,0,1,0],[109,0,0,1,0],[115,0,0,2,0],[116,0,0,0,2],[118,0,0,1,0],[120,0,0,0,1],[122,0,0,1,0],[130,0,0,1,0],[137,0,0,1,0],[142,0,0,3,0],[143,0,0,5,0],[144,0,0,1,0],[145,0,0,1,0],[146,0,0,1,0],[147,0,0,2,0],[148,0,0,1,0],[168,0,0,1,0]],"txt":[[0,0,0,1,0],[13,0,0,0,2],[16,0,0,3,0],[17,0,0,2,3],[18,0,0,1,0],[21,0,0,2,0],[23,0,0,0,2],[24,0,0,1,0],[27,0,0,3,0],[28,0,0,4,0],[32,0,0,0,2],[33,0,0,1,0],[35,0,0,1,0],[38,0,0,2,0],[59,0,0,0,2],[69,0,0,1,0],[72,0,0,2,0],[75,0,0,1,1],[76,0,0,1,0],[77,0,0,4,0],[80,0,0,1,2],[81,0,0,4,0],[83,0,0,2,0],[86,0,0,1,2],[87,0,0,1,0],[88,0,0,3,0],[89,0,0,1,0],[100,0,0,1,0],[101,0,0,3,0],[102,0,0,4,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,1,0],[107,0,0,1,0],[109,0,0,1,0],[111,0,0,1,0],[115,0,0,3,0],[116,0,0,1,4],[119,0,0,3,0],[120,0,0,0,3],[121,0,0,1,0],[142,0,0,3,0],[143,0,0,6,0],[144,0,1,1,1],[145,0,0,1,0],[146,0,0,1,0],[147,0,0,1,0],[148,0,0,1,0],[172,0,0,0,1]],"bundles":[[0,0,0,1,0],[24,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[47,0,0,1,0],[70,0,0,1,0],[75,0,0,0,1],[80,0,0,1,0],[81,0,0,2,0],[84,0,0,1,0],[86,0,0,1,0],[88,0,0,1,0],[100,0,0,1,0],[108,0,0,1,0],[109,0,0,1,0],[111,0,0,1,0],[115,0,0,1,0],[116,0,0,1,0],[119,0,0,1,0],[142,1,1,0,0],[143,1,1,1,0],[144,1,1,0,0],[145,1,1,0,0],[146,1,1,1,0],[147,1,1,0,0],[148,1,1,0,0]],"example":[[0,0,0,2,0],[2,0,0,1,0],[3,0,0,1,0],[12,0,1,1,2],[24,0,0,0,1],[31,0,0,1,0],[33,0,0,0,1],[34,0,0,2,0],[36,0,0,2,0],[48,0,0,3,0],[49,0,0,1,0],[58,0,1,1,2],[69,0,0,0,1],[74,0,0,0,1],[115,0,0,0,1],[121,0,0,1,0],[144,0,1,0,5],[145,0,0,0,2],[146,0,0,2,1],[148,0,0,1,1],[150,0,0,1,0],[151,0,0,1,0],[153,0,0,3,0],[157,0,0,0,1],[168,0,0,3,0],[172,0,0,0,1]],"keeps":[[0,0,0,1,0],[48,0,0,1,0],[111,0,0,1,0],[157,0,0,1,0],[172,0,0,1,0]],"its":[[0,0,0,1,0],[11,0,0,1,0],[37,0,0,1,0],[48,0,0,1,0],[49,0,0,1,0],[53,0,0,1,0],[68,0,0,1,0],[71,0,0,1,0],[74,0,0,1,0],[83,0,0,1,0],[111,0,0,1,0],[154,0,0,1,0]],"implementation":[[0,0,0,1,0],[22,0,0,1,0],[31,0,0,1,0],[48,0,0,1,0],[78,0,0,1,0]],"under":[[0,0,0,1,0],[24,0,0,1,0],[33,0,0,1,0],[44,0,0,1,0],[48,0,0,1,0],[69,0,0,1,0],[84,0,0,1,0],[92,0,0,1,0],[102,0,0,1,0],[103,0,0,2,0],[106,0,0,1,0],[122,0,0,1,0],[135,0,0,1,0],[157,0,0,1,0],[172,0,0,1,0]],"apps":[[0,0,0,1,0],[31,0,0,1,0],[34,0,0,1,0],[36,0,0,1,0],[48,0,0,1,0],[58,0,0,1,0],[67,0,0,1,0],[121,0,0,1,0],[146,0,0,1,0],[148,0,0,1,0],[153,0,0,1,0],[163,0,0,1,0],[168,0,0,1,0]],"src":[[0,0,0,1,0],[23,0,0,0,2],[24,0,0,0,1],[25,0,0,0,1],[26,0,0,0,1],[27,0,0,0,1],[32,0,0,0,3],[33,0,0,0,1],[37,0,0,0,4],[45,0,0,0,1],[48,0,0,1,0],[69,0,0,0,1],[70,0,0,0,2],[71,0,0,0,1],[72,0,0,0,1],[74,0,0,0,1],[76,0,0,0,4],[80,0,0,0,2],[86,0,0,0,2],[92,0,0,2,0],[115,0,0,0,1],[119,0,0,2,0],[122,0,0,2,0],[146,0,0,1,0],[150,0,0,0,2]],"canonical":[[0,0,0,1,0],[34,0,0,1,0]],"reference":[[0,0,0,1,0],[3,0,1,0,0],[4,0,1,0,0],[5,0,1,0,1],[6,0,1,0,0],[7,0,1,0,0],[8,0,1,0,0],[9,0,1,1,1],[10,0,1,0,0],[11,0,1,0,0],[12,0,1,0,0],[13,0,1,0,0],[17,0,0,0,1],[20,0,0,1,0],[22,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[39,0,0,2,0],[41,0,0,1,0],[49,0,1,0,0],[50,0,1,0,0],[51,0,1,0,0],[52,0,1,0,0],[53,0,1,0,0],[54,0,1,0,0],[55,0,1,1,1],[56,0,1,0,0],[57,0,1,0,0],[58,0,1,0,0],[59,0,1,0,0],[68,0,0,1,0],[85,0,0,1,0],[92,0,1,0,0],[95,0,1,0,0],[122,0,0,1,0],[131,0,0,1,0],[144,0,0,0,2],[165,0,0,1,0],[166,0,0,1,0],[167,0,0,1,0],[168,0,0,1,0],[169,0,0,1,0],[170,0,0,1,0],[175,0,0,1,0]],"why":[[1,0,1,0,0],[151,0,1,0,0]],"all":[[1,0,1,0,0],[34,0,0,1,0],[81,0,0,1,0],[86,0,0,1,0],[87,0,0,1,0],[88,0,0,2,0],[89,0,0,1,0],[105,0,0,1,0],[113,0,0,1,0],[116,0,0,0,1],[143,0,0,1,0],[147,0,0,1,0]],"interactive":[[1,0,0,1,0],[13,0,0,1,0],[59,0,0,1,0],[80,0,0,1,0],[83,0,0,1,0],[149,0,0,1,0]],"like":[[1,0,0,1,0],[4,0,0,1,0],[48,0,0,1,0],[50,0,0,2,0],[76,0,0,1,0],[91,0,0,1,0],[116,0,0,1,0]],"tabs":[[1,0,0,2,0],[2,0,0,1,0],[7,0,1,0,2],[48,0,0,1,0],[53,0,1,0,2],[80,0,0,1,0],[83,0,0,1,0],[88,0,0,1,0],[150,0,0,1,0],[158,0,0,0,1],[173,0,0,0,1]],"callout":[[1,0,0,2,0],[2,0,0,1,0],[4,0,1,0,2],[11,0,0,2,0],[12,0,0,0,2],[14,0,0,1,0],[48,0,0,1,0],[50,0,1,0,2],[57,0,0,2,0],[58,0,0,0,2],[80,0,0,1,0],[83,0,0,1,0],[88,0,0,1,0],[150,0,0,1,0]],"render":[[1,0,0,2,0],[3,0,0,1,0],[12,0,0,0,1],[13,0,0,1,0],[42,0,0,1,0],[58,0,0,0,1],[82,0,0,0,1],[84,0,0,1,0],[127,0,0,1,0]],"fine":[[1,0,0,1,0],[34,0,0,1,0],[163,0,0,1,0]],"browser":[[1,0,0,1,0],[82,0,0,0,1]],"but":[[1,0,0,1,0],[4,0,0,2,0],[16,0,0,1,0],[50,0,0,2,0],[56,0,0,1,0],[78,0,0,1,0],[108,0,0,1,0],[111,0,0,1,0],[146,0,0,1,0]],"do":[[1,0,0,1,0],[4,0,0,1,0],[7,0,0,1,0],[50,0,0,1,0],[53,0,0,1,0],[75,0,0,1,0],[78,0,0,1,0],[96,0,0,1,0],[160,0,0,0,1],[170,0,0,1,0],[180,0,0,1,0]],"nothing":[[1,0,0,1,0],[46,0,0,1,0]],"reading":[[1,0,0,1,0],[31,0,0,1,0],[82,0,0,1,0],[84,0,0,1,0],[159,0,1,0,0]],"raw":[[1,0,0,1,0],[170,0,0,1,0]],"text":[[1,0,0,1,0],[13,0,0,1,0],[16,0,0,1,0],[28,0,0,1,0],[32,0,0,0,3],[36,0,0,2,2],[38,0,0,1,0],[59,0,0,1,0],[76,0,0,1,0],[82,0,0,1,1],[83,0,0,1,0],[111,0,0,1,0],[119,0,0,3,0],[147,0,0,1,0],[156,0,0,1,0],[161,0,0,1,0],[163,0,0,1,0],[172,0,0,1,0],[173,0,0,1,0],[174,0,0,1,0],[175,0,0,1,0],[176,0,0,1,0],[179,0,0,1,0]],"flattening":[[1,0,0,1,0],[2,0,0,1,0],[9,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[60,0,0,1,0],[130,0,0,1,0],[134,0,0,1,0],[167,0,0,1,0],[170,0,0,1,0]],"converts":[[1,0,0,1,0],[33,0,0,1,0],[88,0,0,1,0]],"portable":[[1,0,0,1,0],[59,0,0,1,0],[83,0,0,1,0],[108,0,0,1,0],[180,0,0,1,0]],"equivalent":[[1,0,0,1,0],[7,0,0,1,0],[10,0,0,1,0],[53,0,0,1,0],[56,0,0,1,0],[83,0,0,1,0],[92,0,0,1,0],[122,0,0,1,0],[149,0,0,1,0]],"conversion":[[1,0,0,1,0],[6,0,0,1,1],[9,0,0,1,0],[11,0,0,1,0],[12,0,0,0,1],[16,0,0,1,0],[52,0,0,1,1],[55,0,0,1,0],[57,0,0,1,0],[58,0,0,0,1],[60,0,0,1,0],[64,0,0,1,0],[66,0,0,1,0],[67,0,0,1,0],[74,0,0,0,1],[75,0,0,0,1],[86,0,0,1,0],[90,0,0,1,0],[96,0,0,1,0],[102,0,0,1,0],[109,0,0,1,0],[111,0,0,1,0],[119,0,0,1,0],[125,0,0,1,0],[126,0,0,1,0],[127,0,0,1,0],[128,0,0,1,0],[129,0,0,2,0],[130,0,0,1,0],[144,0,0,0,1],[145,0,0,1,0],[153,0,0,1,0],[157,0,0,1,0]],"time":[[1,0,0,1,0],[11,0,0,1,0],[22,0,0,1,0],[37,0,0,1,0],[57,0,0,1,0],[84,0,0,1,0],[99,0,0,1,0],[141,0,0,1,0],[153,0,0,1,0],[155,0,0,1,0],[157,0,1,0,0],[168,0,0,1,0],[172,0,1,0,0],[180,0,0,1,0]],"becomes":[[1,0,0,4,0],[15,0,0,1,0],[16,0,0,2,0],[17,0,0,1,0],[18,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[80,0,0,3,0],[164,0,0,1,0]],"blockquote":[[1,0,0,1,0],[4,0,0,1,0],[80,0,0,1,0],[83,0,0,1,0],[150,0,0,1,0]],"stack":[[1,0,0,1,0],[80,0,0,2,1],[83,0,0,1,0],[84,0,0,1,0],[109,0,0,1,0],[115,0,0,1,0],[125,0,0,1,0],[130,0,0,2,0],[134,0,0,1,0],[149,0,0,2,0],[150,0,1,2,0],[151,0,0,1,0],[152,0,0,2,0],[153,0,0,1,0],[154,0,0,1,0],[166,0,1,1,0],[170,0,0,1,0]],"bold":[[1,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[80,0,0,1,0],[83,0,0,1,0],[150,0,0,1,0]],"headings":[[1,0,0,1,0],[7,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[80,0,0,1,0],[81,0,0,1,0],[83,0,0,3,0],[143,0,0,1,0],[156,0,0,1,0],[173,0,0,1,0]],"one":[[1,0,0,1,0],[8,0,0,1,0],[16,0,0,1,0],[21,0,0,3,0],[25,0,0,1,0],[28,0,0,1,0],[31,0,0,1,0],[32,0,0,1,0],[33,0,1,1,0],[34,0,0,2,0],[35,0,0,1,1],[36,0,0,1,0],[37,0,0,2,0],[38,0,0,2,0],[39,0,0,1,0],[54,0,0,1,0],[56,0,0,1,0],[62,0,1,0,0],[78,0,0,1,0],[79,0,0,2,0],[80,0,0,1,0],[81,0,0,2,0],[82,0,0,1,0],[83,0,0,1,0],[84,0,0,2,0],[85,0,0,1,0],[86,0,0,2,0],[87,0,0,2,0],[88,0,0,1,0],[89,0,0,1,0],[105,0,0,2,0],[109,0,0,1,0],[111,0,0,1,0],[114,0,1,0,1],[115,0,0,2,0],[119,0,0,1,0],[127,0,0,1,0],[128,0,0,1,0],[143,0,0,2,0],[144,0,0,0,1],[145,0,0,0,1],[147,0,0,1,0],[151,0,0,2,0],[161,0,0,2,0]],"per":[[1,0,0,1,0],[8,0,0,2,0],[17,0,0,1,0],[21,0,0,1,0],[38,0,0,1,0],[43,0,0,1,0],[54,0,0,2,0],[75,0,0,1,0],[86,0,0,0,1],[115,0,0,1,0],[116,0,0,0,1],[125,0,0,1,0],[142,0,0,1,0],[143,0,0,1,0],[150,0,0,1,0]],"tab":[[1,0,0,1,0],[2,0,0,1,0],[7,0,0,0,6],[48,0,0,1,0],[53,0,0,1,6],[54,0,0,1,0],[150,0,0,1,0]],"typetable":[[1,0,0,1,0],[2,0,0,1,0],[11,0,1,1,1],[48,0,0,1,0],[57,0,1,1,1],[80,0,0,1,0],[88,0,0,1,0],[150,0,0,1,0],[154,0,0,1,0]],"table":[[1,0,0,1,0],[8,0,0,1,0],[11,0,0,1,0],[54,0,0,1,0],[80,0,0,1,0],[150,0,0,2,0],[168,0,0,2,0]],"mermaid":[[1,0,0,2,0],[2,0,0,1,0],[13,0,1,1,2],[17,0,0,0,1],[23,0,0,0,1],[32,0,0,0,1],[48,0,0,1,0],[59,0,1,1,2],[66,0,0,1,0],[80,0,0,0,1],[82,0,0,0,1],[86,0,0,0,1],[88,0,0,1,0],[129,0,0,1,0],[150,0,0,2,1]],"fenced":[[1,0,0,1,0],[13,0,0,1,0],[59,0,0,1,0],[150,0,0,2,0]],"block":[[1,0,0,1,0],[13,0,0,1,0],[15,0,0,1,0],[59,0,0,1,0],[150,0,0,2,0]],"diagram":[[1,0,0,1,0],[13,0,0,1,0],[59,0,0,1,0],[89,0,0,1,0]],"source":[[1,0,0,1,0],[12,0,0,1,1],[13,0,0,1,0],[17,0,0,1,0],[21,0,0,1,0],[24,0,0,1,0],[31,0,0,1,0],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,0,1,0],[37,0,1,3,0],[38,0,0,1,0],[39,0,0,1,0],[40,0,0,1,0],[49,0,0,1,0],[57,0,0,1,0],[58,0,0,1,1],[59,0,0,1,0],[63,0,0,1,0],[67,0,0,1,0],[69,0,0,1,0],[74,0,0,1,0],[75,0,0,2,0],[76,0,0,3,0],[78,0,0,1,0],[79,0,0,1,0],[80,0,0,1,0],[81,0,0,2,0],[82,0,0,2,0],[83,0,0,1,0],[84,0,0,1,0],[85,0,0,1,0],[86,0,0,1,1],[87,0,0,1,0],[88,0,0,2,0],[89,0,0,1,0],[90,0,0,2,0],[91,0,0,2,0],[92,0,0,3,0],[95,0,0,1,0],[96,0,0,1,0],[100,0,0,1,0],[103,0,0,1,0],[109,0,0,1,0],[122,0,0,1,0],[129,0,0,1,0],[130,0,0,1,0],[131,0,0,1,0],[142,0,0,1,0],[152,0,0,1,0],[155,0,0,2,0],[156,0,0,1,0],[157,0,0,1,0],[158,0,0,1,0],[159,0,0,1,0],[160,0,1,1,0],[161,0,0,1,0],[162,0,0,1,0],[163,0,0,1,0],[164,0,0,1,0],[167,0,0,1,0],[171,0,0,1,0],[172,0,0,2,0],[173,0,0,1,0],[174,0,0,2,0],[175,0,0,1,0],[176,0,0,2,0],[177,0,0,1,0],[178,0,0,1,0],[179,0,0,1,0],[180,0,0,1,0]],"survives":[[1,0,0,1,0]],"other":[[1,0,0,1,0],[13,0,0,1,0],[43,0,1,0,0],[79,0,0,1,0],[81,0,0,1,0],[86,0,0,1,0],[133,0,0,1,0],[141,0,0,1,0]],"tooling":[[1,0,0,1,0],[22,0,0,1,0],[68,0,0,1,0]],"this":[[1,0,0,1,0],[4,0,0,1,0],[6,0,0,1,1],[21,0,1,0,0],[22,0,0,1,0],[24,0,0,1,0],[26,0,0,1,0],[29,0,1,2,0],[31,0,0,1,0],[34,0,0,1,0],[37,0,0,1,0],[46,0,0,1,0],[48,0,0,1,0],[50,0,0,1,0],[52,0,0,2,1],[68,0,0,1,0],[69,0,0,1,0],[71,0,0,1,0],[73,0,1,1,0],[74,0,0,1,0],[76,0,0,1,0],[78,0,1,1,0],[79,0,0,1,0],[92,0,0,1,0],[100,0,0,1,0],[127,0,0,1,0],[131,0,0,1,0],[146,0,0,1,0],[148,0,0,1,0],[150,0,0,1,0],[152,0,0,1,0],[167,0,0,1,0],[168,0,0,1,0],[172,0,0,1,0]],"means":[[1,0,0,1,0],[92,0,0,3,0]],"same":[[1,0,0,1,0],[2,0,0,1,0],[6,0,0,1,0],[17,0,0,1,0],[21,0,0,1,0],[22,0,0,1,0],[36,0,0,3,0],[40,0,0,1,0],[45,0,0,1,0],[52,0,0,1,0],[56,0,0,1,0],[76,0,0,1,0],[78,0,0,1,0],[81,0,0,1,0],[82,0,0,2,0],[83,0,0,2,0],[88,0,0,1,0],[99,0,0,1,0],[115,0,0,1,0],[116,0,0,1,0],[122,0,0,1,0],[134,0,0,1,0],[141,0,0,1,0],[142,0,0,1,0],[146,0,0,1,0],[159,0,0,1,0],[162,0,0,1,0],[174,0,0,1,0],[178,0,0,1,0]],"content":[[1,0,0,1,0],[4,0,0,1,1],[6,0,0,1,0],[7,0,0,3,0],[9,0,0,4,0],[27,0,0,1,0],[32,0,0,0,2],[36,0,0,1,0],[38,0,0,2,0],[45,0,0,1,0],[46,0,0,1,0],[50,0,0,1,1],[52,0,0,1,0],[53,0,0,3,0],[55,0,0,4,0],[64,0,0,0,1],[72,0,0,1,0],[74,0,0,1,0],[77,0,0,1,0],[80,0,0,0,1],[81,0,0,3,0],[82,0,0,3,1],[83,0,0,1,0],[84,0,0,1,0],[86,0,0,0,1],[88,0,0,2,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,2,0],[93,0,0,1,0],[94,0,0,1,1],[95,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,3,0],[108,0,0,2,0],[111,0,0,3,0],[115,0,0,3,0],[116,0,0,1,2],[118,0,0,1,0],[120,0,0,0,1],[122,0,0,1,0],[134,0,1,0,0],[136,0,0,0,1],[141,0,0,2,0],[142,0,0,1,0],[143,0,0,1,0],[152,0,0,1,0],[156,0,0,4,0],[157,0,0,1,1],[158,0,0,0,2],[159,0,0,0,2],[160,0,0,0,1],[161,0,0,0,1],[162,0,0,0,1],[167,0,0,1,0],[170,0,0,1,0],[171,0,0,1,0],[172,0,0,1,1],[173,0,0,1,1],[174,0,1,0,0],[175,0,0,1,1],[176,0,0,0,1],[177,0,0,0,2],[180,0,0,1,0]],"reaches":[[1,0,0,1,0]],"three":[[1,0,0,1,0],[15,0,0,1,0],[34,0,0,1,0],[61,0,0,1,0],[79,0,0,1,0],[80,0,0,1,0],[81,0,0,1,0],[82,0,1,1,0],[83,0,0,1,0],[84,0,0,1,0],[85,0,0,1,0],[88,0,0,1,0],[159,0,0,1,0],[161,0,0,1,0]],"audiences":[[1,0,0,1,0],[79,0,0,1,0],[80,0,0,1,0],[81,0,0,1,0],[82,0,1,1,0],[83,0,0,1,0],[84,0,0,1,0],[85,0,0,1,0],[88,0,0,1,0]],"humans":[[1,0,0,1,0],[6,0,0,1,0],[22,0,0,1,0],[31,0,0,1,0],[32,0,0,1,1],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,0,2,0],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,1,0],[52,0,0,1,0],[68,0,0,1,0],[82,0,0,1,1],[86,0,0,1,1],[87,0,0,1,0],[88,0,0,1,0],[89,0,0,1,0]],"without":[[1,0,0,1,0],[16,0,0,1,0],[21,0,0,1,0],[22,0,0,1,0],[68,0,0,1,0],[76,0,0,1,0],[121,0,0,1,0],[127,0,0,1,0],[129,0,0,1,0],[155,0,0,1,0],[156,0,0,1,0]],"you":[[1,0,0,1,0],[2,0,0,1,0],[11,0,0,1,0],[14,0,0,1,0],[19,0,0,1,0],[21,0,1,1,0],[22,0,0,1,0],[31,0,0,2,0],[34,0,0,1,0],[38,0,0,2,0],[44,0,0,1,0],[57,0,0,1,0],[62,0,0,1,0],[63,0,0,1,0],[78,0,0,1,0],[83,0,0,1,0],[86,0,0,1,0],[87,0,0,1,0],[88,0,1,0,0],[92,0,0,2,0],[108,0,0,3,0],[111,0,0,2,0],[113,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0],[122,0,0,1,0],[124,0,0,1,0],[125,0,0,1,0],[127,0,0,1,0],[140,0,0,1,0],[147,0,0,1,0],[151,0,0,2,0],[154,0,0,2,0],[156,0,0,1,0],[159,0,0,2,0],[160,0,0,1,0],[162,0,0,1,0],[168,0,0,1,0],[173,0,0,1,0]],"maintaining":[[1,0,0,1,0]],"two":[[1,0,0,1,0],[2,0,0,1,0],[28,0,0,1,0],[35,0,0,1,0],[36,0,0,1,0],[83,0,0,1,0],[87,0,0,1,0],[118,0,0,1,0],[147,0,0,1,0],[154,0,0,1,0]],"copies":[[1,0,0,1,0]],"recognizes":[[2,0,0,1,0]],"these":[[2,0,0,1,0],[125,0,0,1,0],[147,0,0,1,0]],"names":[[2,0,0,4,0],[14,0,0,1,0],[47,0,0,1,0],[48,0,0,3,0],[60,0,0,1,0],[79,0,0,1,0],[89,0,0,1,0],[106,0,0,1,0],[151,0,0,1,0],[164,0,0,1,0]],"if":[[2,0,0,2,0],[14,0,0,1,0],[16,0,0,1,0],[17,0,0,1,0],[21,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[36,0,0,0,3],[37,0,0,1,0],[38,0,0,1,0],[48,0,0,1,0],[57,0,0,1,0],[60,0,0,1,0],[66,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[73,0,0,1,0],[74,0,0,1,0],[78,0,0,1,0],[84,0,0,1,0],[99,0,0,1,0],[106,0,0,1,0],[130,0,0,1,0],[146,0,0,0,1],[151,0,0,1,0],[154,0,0,1,0],[170,0,0,1,0]],"just":[[2,0,0,1,0],[156,0,0,1,0]],"works":[[2,0,0,1,0],[21,0,0,1,0],[33,0,0,1,0],[79,1,1,0,0],[80,1,1,0,0],[81,1,1,0,0],[82,1,1,0,0],[83,1,1,0,0],[84,1,1,0,0],[85,1,1,0,0],[89,0,0,1,0],[144,0,0,0,3],[158,0,0,1,0]],"accordion":[[2,0,0,1,0],[9,0,1,0,2],[48,0,0,1,0],[55,0,1,0,2],[150,0,0,1,0]],"accordionitem":[[2,0,0,1,0],[9,0,0,0,2],[48,0,0,1,0],[55,0,0,0,2]],"card":[[2,0,0,1,0],[5,0,0,0,1],[48,0,0,1,0],[51,0,0,0,1]],"cards":[[2,0,0,1,0],[5,0,1,0,2],[48,0,0,1,0],[51,0,1,1,2],[150,0,0,1,0]],"commandtabs":[[2,0,0,1,0],[8,0,1,0,3],[48,0,0,1,0],[54,0,1,0,3],[150,0,0,1,0]],"details":[[2,0,0,1,0],[9,0,0,2,1],[55,0,0,2,1],[150,0,0,1,0]],"extractedtypetable":[[2,0,0,1,0],[11,0,1,1,0],[34,0,0,1,0],[48,0,0,1,0],[57,0,1,2,0],[150,0,0,1,0],[153,0,0,1,0],[168,0,0,1,0]],"section":[[2,0,0,1,0],[3,0,0,1,0],[17,0,0,1,0],[21,0,0,1,0],[49,0,0,1,0],[81,0,0,1,0],[83,0,0,1,0],[98,0,0,1,0],[121,0,0,1,0],[139,0,0,1,0],[150,0,0,1,0],[156,0,0,1,0]],"selector":[[2,0,0,1,0],[48,0,0,1,0]],"step":[[2,0,0,1,0],[6,0,0,1,4],[26,0,0,1,0],[34,0,0,1,0],[48,0,0,1,0],[52,0,0,1,4],[71,0,0,1,0],[78,0,0,1,0],[84,0,0,1,0]],"steps":[[2,0,0,1,0],[6,0,1,0,2],[42,0,0,0,1],[48,0,0,1,0],[52,0,1,0,2],[88,0,0,1,0],[150,0,0,1,0]],"topicswitcher":[[2,0,0,1,0],[10,0,1,0,1],[19,0,0,1,0],[48,0,0,1,0],[56,0,1,0,1],[150,0,0,1,0]],"uses":[[2,0,0,1,0],[26,0,0,1,0],[42,0,0,0,2],[48,0,0,1,0],[71,0,0,1,0],[75,0,0,1,0],[82,0,0,1,0],[146,0,0,1,0],[172,0,0,1,0],[173,0,0,1,0]],"different":[[2,0,0,1,0],[37,0,0,1,0],[41,0,0,1,0],[48,0,0,1,0],[95,0,0,1,0]],"have":[[2,0,0,1,0],[29,0,0,1,0],[44,0,0,1,0],[117,0,0,1,0],[159,0,0,1,0]],"options":[[2,0,0,1,0],[92,0,0,0,1],[94,0,1,0,0],[118,0,0,0,1],[119,0,0,0,1],[122,0,0,0,1],[153,0,0,1,0],[161,0,0,1,0],[177,0,0,0,1]],"rename":[[2,0,0,1,0]],"match":[[2,0,0,1,0],[164,0,0,1,0]],"add":[[2,0,0,1,0],[8,0,0,3,1],[12,0,0,1,0],[14,0,0,1,0],[26,0,0,1,0],[34,0,0,2,0],[48,0,0,1,0],[54,0,0,3,1],[58,0,0,1,0],[71,0,0,1,0],[88,0,0,1,0],[113,0,0,3,0],[114,0,0,1,0],[119,0,0,1,0],[122,0,0,1,0],[140,0,0,1,0],[152,0,0,1,0],[154,0,0,1,0],[164,0,1,1,0],[167,0,1,1,0],[168,0,1,0,0],[169,0,0,1,0],[180,0,0,2,0]],"custom":[[2,0,0,1,0],[48,0,0,1,0],[54,0,0,1,0],[94,0,0,3,0],[122,0,0,1,0],[124,0,0,2,0],[125,0,0,1,0],[135,0,0,3,0],[140,0,1,1,0],[151,0,0,2,0],[154,0,0,1,0],[169,0,0,1,0],[170,0,0,1,0],[175,0,0,1,0]],"plugin":[[2,0,0,1,0],[14,0,0,2,0],[34,0,0,1,0],[36,0,0,1,0],[57,0,0,1,0],[80,0,0,0,1],[109,0,0,1,0],[115,0,0,1,0],[124,0,0,1,0],[125,0,0,2,0],[126,0,0,1,0],[130,0,0,1,0],[149,0,0,1,0],[150,0,0,1,0],[151,0,0,2,0],[152,0,0,1,0],[153,0,0,3,0],[154,0,1,2,0],[165,0,0,1,0],[166,0,1,1,0],[167,0,0,1,0],[168,0,0,3,0],[169,0,1,1,0],[170,0,0,2,0]],"that":[[2,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[20,0,0,1,0],[29,0,0,2,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[40,0,0,1,0],[41,0,0,2,0],[43,0,0,1,0],[47,0,0,1,0],[48,0,0,2,0],[49,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[56,0,0,1,0],[57,0,0,1,0],[58,0,0,1,0],[59,0,0,1,0],[60,0,0,1,0],[68,0,0,1,0],[70,0,0,2,0],[83,0,0,3,0],[84,0,0,1,0],[86,0,0,1,0],[87,0,0,2,0],[92,0,0,1,0],[94,0,0,2,0],[95,0,0,1,0],[106,0,0,1,0],[111,0,0,1,0],[116,0,0,1,0],[121,0,0,1,0],[134,0,0,1,0],[136,0,0,1,0],[140,0,0,1,0],[144,0,0,0,2],[145,0,0,0,1],[149,0,0,1,0],[150,0,0,1,0],[151,0,0,1,0],[152,0,0,1,0],[153,0,0,1,0],[154,0,0,1,0],[155,0,0,1,0],[161,0,0,1,0],[164,0,0,1,0],[180,0,0,1,0]],"maps":[[2,0,0,1,0]],"back":[[2,0,0,1,0],[28,0,0,1,0],[48,0,0,1,0],[127,0,0,1,0]],"above":[[2,0,0,1,0],[11,0,0,1,1],[57,0,0,1,1],[108,0,0,1,0],[173,0,0,1,0]],"tsx":[[2,0,0,0,1],[4,0,0,0,1],[5,0,0,0,1],[6,0,0,0,1],[7,0,0,0,1],[8,0,0,0,1],[9,0,0,0,1],[10,0,0,0,1],[11,0,0,0,1],[12,0,0,0,3],[13,0,0,0,1],[48,0,0,0,1],[50,0,0,0,1],[51,0,0,0,1],[52,0,0,0,1],[53,0,0,0,1],[54,0,0,0,1],[55,0,0,0,1],[56,0,0,0,1],[57,0,0,0,1],[58,0,0,0,3],[59,0,0,0,1]],"import":[[2,0,0,0,1],[12,0,0,0,1],[35,0,0,0,1],[48,0,0,0,1],[58,0,0,0,1],[61,0,0,1,1],[67,0,0,0,1],[75,0,0,0,1],[90,0,0,1,1],[100,0,0,1,1],[125,0,0,0,1],[126,0,0,0,1],[130,0,0,0,1],[131,0,0,0,1],[135,0,0,0,1],[140,0,0,0,2],[142,0,0,0,1],[145,0,0,0,3],[146,0,0,1,0],[149,0,0,0,1],[150,0,0,1,0],[153,0,0,0,1],[157,0,0,0,1],[158,0,0,0,3],[159,0,0,0,1],[160,0,0,0,1],[161,0,0,0,3],[162,0,0,0,1],[165,0,0,1,1],[170,0,0,1,0],[171,0,0,3,5],[173,0,0,1,0],[176,0,0,0,1],[177,0,0,0,2],[178,0,0,0,1]],"mdxcomponents":[[2,0,0,0,2],[12,0,0,0,1],[47,0,0,1,0],[48,0,0,1,2],[58,0,0,0,1]],"const":[[2,0,0,0,1],[48,0,0,0,1],[62,0,0,0,1],[93,0,0,0,1],[127,0,0,0,1],[135,0,0,0,1],[140,0,0,0,1],[146,0,0,0,2],[148,0,0,0,1],[153,0,0,0,1],[158,0,0,0,1],[159,0,0,0,3],[160,0,0,0,1],[161,0,0,0,1],[162,0,0,0,1],[173,0,0,0,1],[174,0,0,0,3],[175,0,0,0,1],[176,0,0,0,1],[177,0,0,0,3],[178,0,0,0,1]],"below":[[3,0,0,1,0],[49,0,0,1,0],[81,0,0,1,0],[135,0,0,1,0]],"shows":[[3,0,0,1,0],[49,0,0,1,0]],"authored":[[3,0,0,1,0],[13,0,0,1,0],[15,0,0,1,0],[16,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[48,0,0,1,0],[59,0,0,1,0],[116,0,0,1,0]],"live":[[3,0,0,1,0],[7,0,0,1,0],[24,0,0,1,0],[28,0,0,1,0],[33,0,0,1,0],[49,0,0,1,0],[53,0,0,1,0],[69,0,0,1,0],[76,0,0,1,0],[103,0,0,1,0],[106,0,0,1,0],[153,0,0,1,0],[168,0,0,1,0]],"switch":[[3,0,0,1,0],[49,0,0,1,0]],"view":[[3,0,0,1,0],[49,0,0,1,0]],"robot":[[3,0,0,1,0],[49,0,0,1,0]],"icon":[[3,0,0,1,0],[19,0,0,2,0],[49,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[137,0,0,1,0],[138,0,0,1,0],[139,0,0,1,0]],"header":[[3,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[49,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0]],"see":[[3,0,0,1,0],[4,0,0,1,0],[16,0,0,1,0],[20,0,0,1,0],[22,0,0,1,0],[29,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[37,0,0,1,0],[41,0,0,1,0],[50,0,0,1,0],[59,0,0,1,0],[74,0,0,1,0],[80,0,0,2,0],[82,0,0,1,0],[83,0,0,1,0],[89,0,0,1,0],[110,0,0,1,0],[114,0,0,1,0],[116,0,0,3,0],[121,0,0,1,0],[122,0,0,1,0],[130,0,0,1,0],[134,0,0,1,0],[141,0,0,1,0],[146,0,0,1,0]],"flattened":[[3,0,0,1,0],[6,0,0,1,1],[9,0,0,1,0],[49,0,0,1,0],[52,0,0,1,1],[55,0,0,1,0],[80,0,0,2,0],[81,0,0,1,0],[115,0,0,1,0],[116,0,0,1,1],[143,0,0,1,0],[149,0,0,1,0],[150,0,0,1,0]],"side":[[3,0,0,2,0],[13,0,0,1,0],[59,0,0,1,0]],"wraps":[[4,0,0,1,0],[50,0,0,1,0],[178,0,0,1,0]],"supporting":[[4,0,0,2,0],[9,0,0,1,1],[50,0,0,2,0],[55,0,0,1,1],[58,0,0,1,0]],"context":[[4,0,0,2,0],[19,0,0,1,0],[24,0,0,1,0],[28,0,0,1,0],[45,0,0,1,0],[50,0,0,2,0],[69,0,0,1,0],[75,0,0,1,1],[76,0,0,1,0],[81,0,0,1,0],[100,0,0,2,0],[101,0,0,1,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,1,1],[105,0,0,2,0],[106,0,0,1,0],[109,0,0,1,0],[142,0,0,1,0],[143,0,0,3,0],[144,0,0,1,0],[145,0,0,1,0],[146,0,0,1,0],[147,0,0,1,0],[148,0,0,1,0],[159,0,0,1,0],[160,0,0,2,1],[175,0,1,2,1]],"warnings":[[4,0,0,2,0],[42,0,0,2,1],[44,0,0,0,1],[50,0,0,2,0],[90,0,0,0,1],[92,0,0,5,0],[94,0,0,0,1],[122,0,0,3,0],[136,0,0,0,1],[140,0,0,1,0]],"tips":[[4,0,0,2,0],[50,0,0,2,0]],"variants":[[4,0,0,2,0],[50,0,0,2,0]],"change":[[4,0,0,2,0],[50,0,0,2,0]],"identically":[[4,0,0,2,0],[50,0,0,2,0],[111,0,0,1,0]],"info":[[4,0,0,1,1],[11,0,0,1,1],[50,0,0,2,1],[57,0,0,1,1]],"heads":[[4,0,0,1,1],[50,0,0,1,1]],"up":[[4,0,0,1,1],[40,0,0,1,0],[48,0,0,1,0],[50,0,0,1,1]],"callouts":[[4,0,0,1,0],[50,0,0,1,0]],"wrap":[[4,0,0,1,0],[50,0,0,1,0]],"flattens":[[4,0,0,1,0],[5,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[55,0,0,1,0],[75,0,0,0,1],[83,0,0,2,0],[125,0,0,1,0],[149,0,0,1,0],[150,0,0,1,0],[151,0,0,1,0],[152,0,0,1,0],[153,0,0,1,0],[154,0,0,1,0],[166,0,0,1,0]],"them":[[4,0,0,1,0],[9,0,0,1,1],[19,0,0,1,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,2,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,2,0],[29,0,0,1,0],[30,0,0,1,0],[46,0,0,1,0],[48,0,0,1,0],[50,0,0,1,0],[54,0,0,1,0],[55,0,0,1,1],[60,0,0,1,0],[61,0,0,1,0],[96,0,0,1,0],[130,0,0,1,0],[137,0,0,1,0],[157,0,0,1,0],[170,0,0,1,0]],"blockquotes":[[4,0,0,1,0],[50,0,0,2,0]],"still":[[4,0,0,1,0],[9,0,0,1,0],[20,0,0,1,0],[50,0,0,1,0],[55,0,0,1,0],[95,0,0,1,0],[134,0,0,1,0]],"warning":[[4,0,0,2,0],[42,0,0,1,0],[50,0,0,3,0],[92,0,0,1,0],[122,0,0,1,0]],"don":[[4,0,0,1,0],[19,0,0,1,0],[29,0,0,2,0],[41,0,0,1,0],[50,0,0,1,0],[86,0,0,1,0],[137,0,0,1,0],[151,0,0,1,0],[154,0,0,1,0],[161,0,0,1,0]],"success":[[4,0,0,1,0],[12,0,0,0,1],[50,0,0,2,0],[58,0,0,0,1],[119,0,0,1,0]],"error":[[4,0,0,1,0],[20,0,0,2,0],[37,0,0,0,1],[41,0,0,1,0],[42,0,0,1,1],[43,0,0,0,1],[45,0,0,0,1],[46,0,0,1,0],[50,0,0,2,0],[76,0,0,0,1],[90,0,0,0,1],[92,0,0,1,0],[93,0,0,0,1],[94,0,0,1,2],[95,0,0,6,0],[119,0,0,3,0],[120,0,0,1,0],[122,0,0,2,0],[133,0,0,6,0],[134,0,0,3,0],[135,0,0,1,1],[136,0,0,0,2],[140,0,0,1,0],[146,0,0,0,1],[164,0,0,1,0]],"tip":[[4,0,0,1,0],[50,0,0,2,0]],"title":[[4,0,0,0,1],[5,0,0,0,1],[6,0,0,0,2],[9,0,0,0,1],[11,0,0,1,1],[12,0,0,0,2],[16,0,0,1,1],[18,0,0,0,3],[19,0,0,1,0],[35,0,0,0,2],[50,0,0,0,1],[51,0,0,0,1],[52,0,0,0,2],[55,0,0,0,1],[57,0,0,1,1],[58,0,0,0,2],[66,0,0,1,0],[75,0,0,0,3],[80,0,0,0,1],[96,0,0,2,0],[97,0,0,1,0],[98,0,0,1,0],[104,0,0,0,2],[114,0,0,1,1],[120,0,0,0,1],[121,0,0,1,0],[129,0,0,1,0],[137,0,0,2,0],[138,0,0,1,0],[139,0,0,1,0],[140,0,0,0,1]],"variant":[[4,0,0,0,1],[7,0,0,1,0],[11,0,0,1,1],[12,0,0,0,1],[50,0,0,0,1],[57,0,0,1,1],[58,0,0,0,1]],"body":[[4,0,0,0,1],[11,0,0,1,1],[16,0,0,1,0],[38,0,0,1,0],[50,0,0,0,1],[57,0,0,1,1],[80,0,0,0,1],[81,0,0,1,0],[83,0,0,1,0],[150,0,0,1,0],[156,0,0,1,0],[173,0,0,1,0]],"goes":[[4,0,0,0,1],[50,0,0,0,1]],"here":[[4,0,0,0,1],[50,0,0,0,1],[75,0,0,0,1],[87,0,0,1,0],[89,0,0,1,0],[117,0,0,1,0]],"grid":[[5,0,0,1,0]],"short":[[5,0,0,1,0],[19,0,0,1,0],[33,0,0,0,1],[35,0,0,0,1],[51,0,0,1,0],[81,0,0,1,0],[101,0,0,1,0],[104,0,0,0,1],[106,0,0,1,0],[108,0,1,0,0]],"linked":[[5,0,0,1,0],[51,0,0,1,0]],"entry":[[5,0,0,1,0],[16,0,0,1,0],[51,0,0,1,0],[113,0,0,1,0],[124,0,1,1,0],[125,0,0,1,0],[141,0,0,1,0],[142,0,0,1,0],[143,0,0,1,0],[153,0,0,1,0],[155,0,0,1,0],[161,0,1,0,0]],"points":[[5,0,0,1,0],[20,0,0,1,0],[51,0,0,1,0],[95,0,0,1,0],[113,0,0,1,0],[124,0,1,1,0],[134,0,0,1,0],[143,0,0,1,0],[144,0,0,0,1],[155,0,0,1,0],[161,0,1,0,0]],"bullet":[[5,0,0,1,0],[35,0,0,0,2],[51,0,0,1,0]],"list":[[5,0,0,1,0],[6,0,0,2,1],[25,0,0,1,0],[27,0,0,1,0],[41,0,0,1,0],[51,0,0,1,0],[52,0,0,2,1],[122,0,0,1,0],[150,0,0,3,0],[173,0,0,1,0]],"links":[[5,0,0,1,0],[20,0,0,1,0],[28,0,0,1,0],[41,0,0,2,0],[51,0,0,1,0],[81,0,0,1,0],[90,0,0,1,0],[91,0,0,3,0],[95,0,0,1,0],[99,0,0,1,0],[104,0,0,0,1],[106,0,0,1,0],[109,0,0,1,0],[119,0,0,1,0],[122,0,0,1,0],[134,0,0,2,0],[143,0,0,2,0],[159,0,0,1,0],[161,0,0,1,0],[176,0,0,1,0]],"convert":[[5,0,0,1,2],[16,0,0,1,0],[31,0,0,1,0],[34,0,0,1,3],[51,0,0,1,2],[52,0,0,1,0],[61,1,1,3,1],[62,1,2,2,0],[63,1,2,2,0],[64,1,2,2,0],[65,1,1,2,0],[66,1,1,2,0],[67,1,1,2,0],[83,0,0,1,0],[84,0,0,1,0],[86,0,0,0,1],[113,0,0,1,0],[115,0,0,1,0],[119,0,0,1,0],[124,0,0,1,0],[125,1,1,2,1],[126,1,1,2,0],[127,1,1,2,0],[128,1,1,2,0],[129,1,1,1,0],[130,1,1,1,0],[145,0,0,0,1],[170,0,0,1,0]],"description":[[5,0,0,0,1],[11,0,0,1,2],[12,0,0,0,1],[16,0,0,1,1],[19,0,0,1,0],[51,0,0,0,1],[56,0,0,0,2],[57,0,0,1,2],[58,0,0,0,1],[66,0,0,1,0],[75,0,0,0,3],[80,0,0,0,1],[81,0,0,1,0],[83,0,0,1,0],[92,0,0,1,0],[94,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[104,0,0,0,1],[114,0,0,0,1],[119,0,0,2,0],[122,0,0,1,0],[126,0,0,1,0],[129,0,0,1,0],[135,0,0,1,0],[137,0,0,1,0],[138,0,0,1,0],[153,0,0,1,0],[168,0,0,1,0]],"turn":[[5,0,0,0,1],[51,0,0,0,1]],"friendly":[[5,0,0,0,1],[51,0,0,0,1],[100,0,0,1,0]],"href":[[5,0,0,0,1],[10,0,0,0,2],[51,0,0,0,1],[56,0,0,0,2]],"numbered":[[6,0,0,1,0],[52,0,0,1,0]],"walkthroughs":[[6,0,0,1,0],[52,0,0,1,0]],"ordered":[[6,0,0,1,0],[52,0,0,1,0],[150,0,0,1,0]],"titles":[[6,0,0,1,0],[52,0,0,1,0],[81,0,0,1,0],[83,0,0,1,0],[156,0,0,1,0],[173,0,0,1,0]],"author":[[6,0,0,1,1],[19,0,0,1,0],[35,0,0,1,0],[52,0,0,1,1],[88,0,0,1,0],[96,0,0,1,0],[114,0,1,0,0],[137,0,0,1,0]],"authoring":[[6,0,0,1,0],[17,0,0,0,3],[47,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[166,0,0,1,0]],"affordances":[[6,0,0,1,0],[52,0,0,1,0]],"run":[[6,0,0,1,1],[8,0,0,2,1],[22,0,0,1,0],[26,0,0,1,0],[27,0,0,1,1],[31,0,0,1,0],[33,0,1,0,0],[34,0,0,0,7],[37,0,0,1,1],[40,0,0,1,0],[41,0,0,1,0],[42,0,0,1,2],[43,0,0,1,0],[44,0,0,1,0],[45,0,1,2,0],[46,0,0,1,0],[52,0,0,2,1],[54,0,0,2,1],[71,0,0,1,0],[72,0,0,2,1],[74,0,0,3,0],[75,0,0,1,1],[76,0,0,3,1],[77,0,0,1,0],[78,0,0,1,0],[81,0,0,1,0],[84,0,0,1,0],[88,0,0,1,0],[90,0,0,1,0],[92,0,0,1,0],[99,0,0,1,0],[103,0,0,1,0],[111,0,0,1,0],[112,0,0,1,0],[113,0,0,1,0],[114,0,0,1,0],[115,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0],[118,0,0,1,0],[119,0,0,1,0],[121,0,0,1,0],[131,0,0,1,0],[141,0,0,2,0],[144,0,0,0,1],[145,0,0,1,0],[147,0,0,1,0],[151,0,0,2,0],[160,0,0,0,1]],"generate":[[6,0,0,1,1],[22,0,0,1,0],[23,0,0,0,1],[24,0,1,0,1],[25,0,0,0,1],[26,0,0,0,1],[27,0,0,0,1],[31,0,0,1,0],[32,0,0,0,1],[33,0,0,1,1],[34,0,0,0,2],[37,0,0,1,1],[40,0,0,1,0],[45,0,1,2,1],[52,0,0,1,1],[69,0,1,1,1],[70,0,0,0,2],[71,0,0,0,1],[72,0,0,0,1],[74,0,0,0,1],[76,0,0,1,1],[81,0,0,1,0],[84,0,0,2,0],[86,0,0,0,1],[88,0,0,1,0],[99,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,1,0],[115,0,1,1,1],[118,0,0,2,0],[119,0,1,1,1],[120,0,1,1,0],[121,0,1,2,0],[122,0,0,1,0],[123,0,0,1,1],[124,0,0,1,0],[125,0,0,1,0],[141,0,0,1,0],[142,0,0,1,0],[143,0,0,1,0],[144,0,0,1,0],[145,0,0,1,0],[146,0,0,2,0],[147,0,0,1,0],[148,0,0,2,0],[157,0,0,1,0],[171,0,0,1,0],[172,0,0,2,0],[173,0,0,1,0],[174,0,0,1,0],[175,0,0,1,0],[176,0,0,1,0],[177,0,0,1,0],[178,0,0,1,0],[179,0,0,1,0],[180,0,0,1,0]],"writes":[[6,0,0,1,1],[24,0,0,1,0],[37,0,0,1,0],[52,0,0,1,1],[69,0,0,1,0],[77,0,0,1,0],[115,0,0,3,0],[119,0,0,1,0],[157,0,0,1,0],[162,0,0,1,0],[172,0,0,1,0],[178,0,0,1,0]],"public":[[6,0,0,1,0],[7,0,0,1,0],[29,0,0,1,0],[32,0,0,0,1],[33,0,0,0,1],[37,0,0,0,1],[38,0,0,5,0],[45,0,0,0,1],[52,0,0,1,0],[53,0,0,1,0],[64,0,0,0,1],[73,0,0,1,0],[74,0,0,0,1],[76,0,0,1,1],[77,0,0,7,0],[80,0,0,0,5],[81,0,0,1,0],[82,0,0,0,1],[84,0,0,1,0],[94,0,0,1,0],[111,0,0,1,0],[115,0,0,5,1],[116,0,0,2,1],[119,0,0,1,0],[120,0,0,0,6],[126,0,0,0,1],[128,0,0,0,1],[136,0,0,1,0],[145,0,0,0,3],[157,0,0,0,1],[158,0,0,0,2],[172,0,0,0,1]],"serve":[[6,0,0,1,0],[7,0,0,1,0],[36,0,1,1,0],[52,0,0,1,0],[53,0,0,1,0],[88,0,0,1,0]],"both":[[6,0,0,1,0],[45,0,0,1,0],[52,0,0,1,0],[115,0,0,1,0],[142,0,0,1,0],[173,0,0,1,0]],"formats":[[6,0,0,1,0],[36,0,0,1,0],[52,0,0,1,0],[83,0,0,1,0]],"html":[[6,0,0,1,0],[32,0,0,0,2],[36,0,0,2,1],[38,0,0,1,0],[52,0,0,1,0],[82,0,0,1,1]],"md":[[6,0,0,1,0],[7,0,0,2,0],[14,0,0,1,0],[23,0,0,0,1],[26,0,0,0,1],[27,0,0,1,0],[28,0,0,1,0],[32,0,0,0,1],[36,0,0,3,2],[38,0,0,2,0],[52,0,0,1,0],[53,0,0,2,0],[65,0,0,1,0],[71,0,0,0,1],[72,0,0,1,0],[77,0,0,1,0],[80,0,0,0,5],[81,0,0,2,0],[83,0,0,1,0],[84,0,0,1,0],[86,0,0,0,5],[91,0,0,1,0],[94,0,0,1,0],[102,0,0,1,0],[115,0,0,1,0],[116,0,0,1,1],[126,0,0,1,0],[128,0,0,0,1],[129,0,0,1,0],[135,0,0,1,0],[154,0,0,1,0]],"url":[[6,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[24,0,0,0,1],[28,0,0,1,0],[33,0,0,0,1],[34,0,0,1,0],[36,0,0,2,2],[52,0,0,1,0],[69,0,0,0,1],[74,0,0,0,1],[83,0,0,1,0],[91,0,0,1,0],[95,0,0,1,0],[96,0,0,1,0],[115,0,0,0,1],[119,0,0,3,0],[124,0,0,1,0],[134,0,0,1,0],[137,0,0,1,0],[141,0,0,1,0],[148,0,1,1,3]],"negotiated":[[6,0,0,1,0],[52,0,0,1,0],[111,0,0,1,0]],"accept":[[6,0,0,1,0],[7,0,0,1,0],[32,0,0,0,2],[36,0,0,1,5],[38,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[82,0,0,1,1],[83,0,0,1,0]],"group":[[7,0,0,1,0],[15,0,0,1,0],[16,0,0,4,1],[17,0,0,5,4],[18,0,0,2,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,3,0],[28,0,0,2,0],[35,0,0,1,0],[38,0,0,2,0],[75,0,0,3,1],[80,0,0,0,3],[81,0,0,3,0],[83,0,0,3,0],[84,0,0,2,0],[86,0,0,0,1],[88,0,0,1,0],[96,0,0,1,0],[114,0,0,1,1],[115,0,0,3,0],[116,0,0,0,1],[119,0,0,1,0],[121,0,1,1,0],[137,0,0,1,0],[142,0,0,1,0],[143,0,0,2,0],[146,0,0,1,1],[147,0,0,1,0]],"followed":[[7,0,0,1,0],[53,0,0,1,0]],"need":[[7,0,0,1,0],[53,0,0,1,0],[58,0,0,1,0],[62,0,0,1,0],[68,0,0,1,0],[79,0,0,1,0],[86,0,0,1,0],[113,0,0,1,0],[122,0,0,1,0],[124,0,0,1,0],[125,0,0,1,0],[151,0,0,1,0],[159,0,0,1,0],[168,0,0,1,0],[170,0,0,1,0],[180,0,0,1,0]],"jsx":[[7,0,0,1,0],[53,0,0,1,0],[60,0,0,1,0],[80,0,0,1,0],[150,0,0,1,0],[166,0,0,1,0],[167,0,0,1,0]],"aware":[[7,0,0,1,0],[8,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[83,0,0,1,0],[156,0,0,1,0],[173,0,0,1,0]],"renderer":[[7,0,0,1,0],[53,0,0,1,0]],"read":[[7,0,0,1,0],[10,0,0,1,0],[14,0,0,1,0],[22,0,0,2,0],[23,0,0,1,1],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,3,0],[29,0,0,1,0],[30,0,0,1,0],[35,0,0,1,0],[37,0,0,1,0],[56,0,0,1,0],[60,0,0,1,0],[82,0,0,1,0],[89,0,0,2,0],[95,0,0,1,0],[147,0,0,1,0],[151,0,0,1,0],[154,0,0,1,0],[156,0,0,1,0],[162,0,0,1,0],[163,0,0,1,0],[172,0,0,1,0],[178,0,0,1,0]],"every":[[7,0,0,1,0],[9,0,0,1,0],[15,0,0,1,0],[22,0,0,1,0],[35,0,0,1,0],[38,0,0,1,0],[55,0,0,1,0],[78,0,0,1,0],[79,0,0,2,0],[81,0,0,2,0],[84,0,0,2,0],[86,0,0,1,0],[89,0,0,1,0],[111,0,0,1,0],[114,0,0,1,0],[115,0,0,1,0],[121,0,0,1,0],[124,0,0,1,0],[133,0,0,1,0],[143,0,0,1,0],[144,0,0,0,1],[157,0,0,1,0]],"tanstack":[[7,0,0,1,2],[31,0,0,1,0],[53,0,0,1,2],[86,0,0,1,0],[161,0,0,1,2],[162,0,0,1,0],[171,0,0,2,1],[177,0,0,1,1],[178,0,0,2,0]],"start":[[7,0,0,1,2],[31,0,0,1,0],[38,0,0,1,0],[53,0,0,1,2],[75,0,0,0,1],[86,0,0,1,0],[164,0,0,2,0],[170,0,0,1,0],[180,0,0,2,0]],"vite":[[7,0,0,2,2],[32,0,0,0,6],[34,0,0,1,1],[36,0,0,2,0],[53,0,0,2,2],[83,0,0,1,0]],"middleware":[[7,0,0,4,0],[36,0,0,3,0],[38,0,0,1,0],[53,0,0,4,0],[83,0,0,1,0]],"dev":[[7,0,0,1,0],[34,0,0,1,0],[38,0,0,1,0],[53,0,0,1,0]],"preview":[[7,0,0,1,0],[12,0,0,1,1],[53,0,0,1,0],[58,0,0,1,1]],"nitro":[[7,0,0,1,0],[53,0,0,1,0],[83,0,0,1,0]],"prod":[[7,0,0,1,0],[53,0,0,1,0]],"negotiate":[[7,0,0,1,0],[53,0,0,1,0]],"next":[[7,0,0,1,2],[30,0,1,0,0],[31,0,0,1,0],[34,0,0,1,0],[36,0,0,1,0],[37,0,0,1,0],[39,0,1,0,0],[53,0,0,1,2],[54,0,0,1,0],[85,0,1,0,0],[86,0,0,1,0],[89,0,1,0,0],[91,0,0,1,0],[111,0,0,1,0],[117,0,1,0,0]],"js":[[7,0,0,1,2],[31,0,0,1,0],[36,0,0,1,0],[53,0,0,1,2],[86,0,0,1,0],[91,0,0,1,0]],"wire":[[7,0,0,1,0],[16,0,0,0,1],[31,0,0,1,0],[32,0,0,1,0],[33,0,0,1,0],[34,0,1,1,0],[35,0,0,1,0],[36,0,0,2,0],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,1,0],[40,0,0,1,0],[48,0,0,1,0],[53,0,0,1,0],[117,0,0,1,0]],"negotiation":[[7,0,0,1,0],[32,0,0,0,1],[36,0,0,1,0],[38,0,0,1,0],[53,0,0,1,0],[81,0,0,1,0],[82,0,0,1,0],[83,0,0,1,0],[88,0,0,1,0]],"ts":[[7,0,0,1,0],[16,0,0,1,0],[17,0,0,2,1],[18,0,0,0,1],[22,0,0,1,0],[34,0,0,1,3],[35,0,0,1,1],[36,0,0,2,1],[53,0,0,1,0],[61,0,0,0,1],[62,0,0,0,1],[64,0,0,0,1],[67,0,0,0,2],[75,0,0,2,1],[90,0,0,0,1],[93,0,0,0,1],[94,0,0,0,1],[100,0,0,0,1],[104,0,0,0,1],[121,0,0,3,0],[125,0,0,0,1],[126,0,0,0,1],[127,0,0,0,1],[128,0,0,0,1],[130,0,0,0,1],[131,0,0,0,1],[135,0,0,0,1],[136,0,0,0,1],[140,0,0,0,1],[142,0,0,0,1],[145,0,0,0,1],[146,0,0,1,1],[147,0,0,1,0],[148,0,0,1,1],[149,0,0,0,1],[152,0,0,0,1],[153,0,0,1,1],[157,0,0,0,1],[158,0,0,0,1],[159,0,0,0,1],[160,0,0,0,1],[161,0,0,0,2],[162,0,0,0,1],[165,0,0,0,1],[167,0,0,0,1],[168,0,0,1,0],[171,0,0,0,3],[172,0,0,0,1],[173,0,0,0,1],[174,0,0,0,1],[175,0,0,0,1],[176,0,0,0,1],[177,0,0,0,2],[178,0,0,0,1]],"route":[[7,0,0,1,0],[20,0,0,1,0],[36,0,0,1,0],[53,0,0,1,0],[91,0,0,1,0],[95,0,0,2,0],[134,0,0,1,0]],"handler":[[7,0,0,1,0],[36,0,0,1,0],[53,0,0,1,0]],"configureserver":[[7,0,0,1,0],[53,0,0,1,0]],"enough":[[7,0,0,1,0],[53,0,0,1,0],[180,0,0,1,0]],"static":[[7,0,0,1,0],[36,0,0,1,0],[53,0,0,1,0],[86,0,0,1,0],[88,0,0,1,0],[109,0,0,1,0],[155,0,0,2,0],[156,0,0,1,0],[157,0,0,1,0],[158,0,0,1,0],[159,0,0,1,0],[160,0,0,1,0],[161,0,0,1,0],[162,0,0,1,0],[163,0,0,1,0],[164,0,0,2,0],[171,0,0,1,0],[172,0,0,1,0],[173,0,0,1,0],[174,0,0,1,0],[175,0,0,1,0],[176,0,0,1,0],[177,0,0,1,0],[178,0,0,1,0],[179,0,0,1,0],[180,0,0,2,0]],"deployments":[[7,0,0,1,0],[53,0,0,1,0]],"files":[[7,0,0,1,0],[14,0,0,1,0],[17,0,0,1,0],[22,0,0,1,0],[23,0,0,0,1],[26,0,0,2,1],[27,0,0,1,0],[28,0,0,2,0],[36,0,0,1,0],[44,0,0,1,0],[53,0,0,1,0],[57,0,0,2,0],[58,0,0,1,0],[65,0,0,2,0],[69,0,0,1,0],[71,0,0,2,1],[75,0,0,1,0],[76,0,0,1,0],[81,0,0,1,0],[91,0,0,1,0],[94,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0],[102,0,0,3,0],[103,0,0,2,0],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,2,0],[120,0,0,0,1],[126,0,0,1,0],[135,0,0,1,0],[142,0,0,1,0],[143,0,0,1,0],[144,0,0,1,0],[145,0,0,1,0],[146,0,0,1,0],[147,0,0,1,0],[148,0,0,1,0],[172,0,0,1,0],[173,0,0,1,0],[174,0,1,0,1]],"items":[[7,0,0,0,1],[10,0,0,0,1],[53,0,0,0,1],[56,0,0,0,1]],"value":[[7,0,0,0,3],[10,0,0,0,2],[21,0,0,1,0],[53,0,0,0,3],[56,0,0,0,2],[95,0,0,1,0],[153,0,0,1,0],[168,0,0,1,0]],"package":[[8,0,0,4,0],[18,0,0,1,2],[22,1,1,2,0],[23,1,1,0,0],[24,1,2,1,4],[25,1,2,2,0],[26,1,1,2,0],[27,1,1,1,1],[28,1,1,3,0],[29,1,1,1,0],[30,1,1,0,0],[37,0,0,3,4],[47,0,0,1,0],[54,0,0,4,0],[68,1,1,3,0],[69,1,2,4,4],[70,1,2,4,0],[71,1,2,6,0],[72,1,1,2,1],[73,1,1,2,0],[74,0,0,4,1],[75,0,0,0,2],[76,0,0,0,5],[78,0,0,1,0],[82,0,0,1,0],[86,0,0,0,1],[87,0,0,1,0],[113,0,0,1,0],[117,0,0,1,0],[119,0,0,2,0],[148,0,0,2,0],[179,0,0,1,0]],"manager":[[8,0,0,5,0],[54,0,0,5,0],[113,0,0,1,0]],"install":[[8,0,0,3,2],[22,0,0,1,0],[23,0,0,0,4],[28,0,0,1,0],[42,0,0,0,1],[54,0,0,3,2],[82,0,0,1,0],[112,0,0,1,0],[113,0,1,2,0],[114,0,0,1,0],[115,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0],[144,0,0,0,1],[147,0,0,1,0],[158,0,0,0,1],[173,0,0,0,1]],"commands":[[8,0,0,3,1],[54,0,0,3,1],[118,0,0,1,0],[162,0,0,2,0],[178,0,0,2,0]],"row":[[8,0,0,1,0],[11,0,0,1,0],[54,0,0,1,0],[57,0,0,1,0]],"mode":[[8,0,0,3,2],[42,0,0,1,0],[54,0,0,3,2],[98,0,0,1,0],[120,0,0,1,0],[139,0,0,1,0]],"command":[[8,0,0,4,2],[33,0,0,1,0],[54,0,0,5,2],[76,0,0,1,0],[77,0,0,1,0],[84,0,0,1,0],[88,0,0,1,0],[109,0,0,1,0],[113,0,0,1,0],[118,0,0,1,1],[124,0,0,1,0]],"name":[[8,0,0,2,0],[19,0,0,1,0],[23,0,0,0,4],[24,0,0,0,1],[25,0,0,0,1],[33,0,0,0,1],[35,0,0,0,1],[42,0,0,0,1],[54,0,0,2,0],[69,0,0,0,1],[70,0,0,0,1],[74,0,0,0,1],[75,0,0,1,1],[104,0,0,0,2],[119,0,0,4,0],[120,0,0,0,1],[145,0,0,0,2],[168,0,0,1,0]],"cli":[[8,0,0,1,0],[19,0,0,1,0],[22,0,0,1,0],[23,0,0,0,3],[29,0,0,1,0],[30,0,0,1,0],[32,0,0,0,4],[34,0,0,1,0],[39,0,0,1,0],[44,0,0,1,0],[54,0,0,1,0],[85,0,0,1,0],[90,0,0,2,0],[91,0,0,1,0],[92,0,1,3,0],[93,0,0,1,0],[94,0,0,1,0],[95,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[109,0,0,1,0],[113,0,0,1,0],[115,0,0,1,0],[118,1,1,0,0],[119,1,1,1,0],[120,1,1,0,0],[121,1,1,1,0],[122,1,1,1,0],[123,1,1,0,0],[124,1,1,2,0],[125,0,0,1,0],[131,0,0,3,0],[132,0,0,1,0],[133,0,0,1,0],[134,0,0,1,0],[135,0,0,1,0],[136,0,0,1,0],[137,0,0,1,0],[138,0,0,1,0],[139,0,0,1,0],[140,0,0,1,0],[141,0,0,1,0],[144,0,0,0,3]],"create":[[8,0,0,1,0],[54,0,0,2,0],[114,0,0,1,0]],"starter":[[8,0,0,1,0],[54,0,0,1,0]],"prop":[[8,0,0,1,0],[11,0,0,1,0],[54,0,0,1,0],[57,0,0,1,0]],"exact":[[8,0,0,1,0],[54,0,0,1,0],[80,0,0,1,0],[82,0,0,1,0],[164,0,0,2,0],[180,0,0,1,0]],"overrides":[[8,0,0,1,0],[54,0,0,1,0],[122,0,0,2,0]],"npm":[[8,0,0,3,2],[22,0,0,2,0],[23,0,0,1,2],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,2,1],[28,0,0,2,0],[29,0,0,1,0],[30,0,0,1,0],[37,0,0,1,1],[54,0,0,3,2],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[71,0,0,1,0],[72,0,0,1,1],[73,0,0,1,0],[76,0,0,0,1],[82,0,0,1,0],[86,0,0,0,1],[113,0,0,2,0]],"pnpm":[[8,0,0,4,3],[54,0,0,5,3],[113,0,0,2,0]],"yarn":[[8,0,0,4,0],[54,0,0,4,0],[113,0,0,2,0]],"bun":[[8,0,0,3,0],[34,0,0,0,7],[42,0,0,0,2],[52,0,0,1,0],[54,0,0,3,0],[113,0,0,2,0]],"npx":[[8,0,0,1,0],[24,0,0,0,1],[25,0,0,0,1],[26,0,0,0,1],[27,0,0,0,1],[33,0,0,0,1],[37,0,0,0,2],[42,0,0,0,1],[43,0,0,0,1],[44,0,0,0,1],[45,0,0,0,2],[54,0,0,1,0],[69,0,0,0,1],[70,0,0,0,2],[71,0,0,0,1],[72,0,0,0,1],[74,0,0,0,1],[76,0,0,0,2],[90,0,0,0,2],[92,0,0,0,1],[115,0,0,0,1]],"lint":[[8,0,0,4,1],[15,0,0,1,0],[19,0,0,1,0],[20,0,1,2,0],[21,0,0,1,0],[30,0,0,1,0],[35,0,0,1,0],[37,0,0,1,1],[39,0,0,1,0],[40,0,0,2,0],[41,0,0,2,0],[42,0,0,1,3],[43,0,0,1,2],[44,0,0,2,1],[45,0,0,4,1],[46,0,0,1,0],[54,0,0,4,1],[76,0,0,1,1],[86,0,0,0,1],[90,1,1,2,3],[91,1,1,1,0],[92,1,1,2,1],[93,1,1,1,0],[94,1,1,1,0],[95,1,1,1,0],[96,1,1,1,0],[97,1,1,1,0],[98,1,1,1,0],[99,1,1,3,0],[109,0,0,1,0],[113,0,0,1,0],[118,0,0,2,0],[119,0,0,1,0],[120,0,0,1,0],[121,0,0,1,0],[122,0,1,3,1],[123,0,0,1,1],[124,0,0,2,0],[131,1,1,1,1],[132,1,1,0,0],[133,1,1,0,0],[134,1,1,0,0],[135,1,1,0,1],[136,1,1,0,0],[137,1,1,0,0],[138,1,1,0,0],[139,1,1,0,0],[140,1,1,0,1],[141,1,1,3,0],[160,0,0,0,1]],"dlx":[[8,0,0,2,0],[54,0,0,2,0]],"bunx":[[8,0,0,1,0],[54,0,0,1,0]],"defaultmanager":[[8,0,0,0,1],[54,0,0,1,1]],"collapsible":[[9,0,0,1,0],[55,0,0,1,0]],"secondary":[[9,0,0,1,0],[55,0,0,1,0]],"ignores":[[9,0,0,2,0],[55,0,0,2,0]],"open":[[9,0,0,2,0],[28,0,0,2,0],[55,0,0,2,0],[116,0,0,2,0],[150,0,0,1,0]],"closed":[[9,0,0,3,0],[55,0,0,3,0],[150,0,0,1,0]],"state":[[9,0,0,2,0],[55,0,0,2,0],[129,0,0,1,0],[150,0,0,1,0]],"emits":[[9,0,0,2,0],[52,0,0,1,0],[55,0,0,1,0]],"item":[[9,0,0,1,0],[55,0,0,1,0]],"accordions":[[9,0,0,3,1],[55,0,0,3,1]],"place":[[9,0,0,2,0],[55,0,0,2,0],[86,0,0,1,0],[88,0,0,1,0],[114,0,0,1,0],[130,0,0,1,0],[152,0,0,1,0],[167,0,0,1,0],[170,0,0,1,0]],"hide":[[9,0,0,2,0],[55,0,0,2,0]],"should":[[9,0,0,1,1],[25,0,0,1,0],[27,0,0,1,0],[29,0,0,1,0],[37,0,0,1,0],[38,0,0,2,0],[55,0,0,1,1],[68,0,0,1,0],[72,0,0,1,0],[73,0,0,1,0],[74,0,0,1,0],[75,0,0,1,0],[92,0,0,1,0],[94,0,0,1,0],[106,0,0,1,0],[163,0,0,1,0],[178,0,0,1,0],[179,0,0,1,0]],"troubleshooting":[[9,0,0,1,0],[55,0,0,1,0]],"notes":[[9,0,0,1,0],[55,0,0,1,0],[66,0,1,0,0],[129,0,1,0,0]],"optional":[[9,0,0,1,1],[11,0,0,2,0],[16,0,0,2,0],[19,0,1,10,0],[34,0,0,1,0],[55,0,0,1,1],[57,0,0,2,0],[81,0,0,4,0],[82,0,0,1,0],[83,0,0,5,0],[94,0,0,1,0],[109,0,0,1,0],[152,0,1,0,0],[153,0,1,1,0],[168,0,0,1,0]],"material":[[9,0,0,1,1],[55,0,0,1,1]],"good":[[9,0,0,1,0],[55,0,0,1,0],[105,0,0,1,0]],"no":[[9,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[55,0,0,1,0],[66,0,0,1,0],[81,0,0,1,0],[83,0,0,1,0],[92,0,0,2,0],[96,0,0,12,0],[97,0,0,7,0],[98,0,0,7,0],[122,0,0,1,0],[129,0,0,1,0],[137,0,0,12,0],[138,0,0,7,0],[139,0,0,7,0],[143,0,0,1,0],[158,0,0,1,0],[180,0,0,1,0]],"everything":[[9,0,0,1,0],[55,0,0,1,0]],"inside":[[9,0,0,1,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[37,0,0,1,0],[55,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[71,0,0,1,0],[72,0,0,1,0],[73,0,0,1,0],[78,0,0,1,0],[143,0,0,1,0]],"navigation":[[10,0,0,1,0],[15,0,0,1,0],[16,0,0,1,0],[17,0,0,1,1],[18,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[31,0,0,1,0],[33,0,0,1,0],[35,0,0,1,0],[40,0,0,1,0],[41,0,0,1,0],[42,0,0,1,0],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[56,0,0,1,0],[75,0,0,2,0],[80,0,0,0,1],[81,0,0,1,0],[84,0,0,1,0],[86,0,0,1,1],[88,0,0,2,0],[107,0,0,1,0],[109,0,0,1,0],[131,0,0,1,0],[132,0,0,1,0],[133,0,0,1,0],[134,0,0,1,0],[135,0,0,1,0],[136,0,0,1,0],[137,0,0,1,0],[138,0,0,1,0],[139,0,0,1,0],[140,0,0,1,0],[141,0,0,1,0],[146,0,0,1,3]],"across":[[10,0,0,1,0],[56,0,0,1,0],[108,0,0,1,0],[111,0,0,2,0],[121,0,0,1,0],[179,0,0,1,0]],"topics":[[10,0,0,1,0],[56,0,0,1,0],[104,0,0,0,1],[105,0,0,3,0],[106,0,0,1,0]],"frameworks":[[10,0,0,1,2],[25,0,0,0,1],[56,0,0,1,2],[70,0,0,0,2],[86,0,0,1,0],[105,0,0,1,0]],"sdks":[[10,0,0,1,0],[56,0,0,1,0]],"runtimes":[[10,0,0,1,0],[56,0,0,1,0]],"deployment":[[10,0,0,1,0],[56,0,0,1,0],[108,0,0,1,0],[110,0,0,1,0]],"targets":[[10,0,0,1,0],[56,0,0,1,0]],"product":[[10,0,0,1,0],[33,0,0,0,1],[35,0,1,0,2],[56,0,0,1,0],[75,0,0,2,1],[76,0,0,1,0],[101,0,0,1,0],[104,0,0,0,3],[119,0,0,2,0],[120,0,0,0,1],[143,0,0,1,0],[145,0,0,0,2]],"areas":[[10,0,0,1,0],[56,0,0,1,0]],"reader":[[10,0,0,1,0],[56,0,0,1,0]],"facing":[[10,0,0,1,0],[56,0,0,1,0],[86,0,0,1,0],[142,0,0,1,0],[154,0,0,1,0]],"automatically":[[10,0,0,1,0],[19,0,0,1,0],[56,0,0,1,0]],"llm":[[10,0,0,1,0],[30,0,0,1,0],[34,0,0,0,3],[47,0,0,1,0],[56,0,0,1,0],[74,0,0,0,1],[75,0,0,0,1],[81,0,0,1,0],[84,0,0,1,0],[86,0,0,0,4],[100,1,1,0,1],[101,1,1,0,0],[102,1,1,0,0],[103,1,1,0,0],[104,1,1,0,0],[105,1,1,0,0],[106,1,1,0,0],[113,0,0,1,0],[115,0,0,1,0],[119,0,0,1,0],[121,0,0,1,0],[124,0,0,1,0],[142,1,1,1,1],[143,1,1,0,0],[144,1,1,0,0],[145,1,1,0,1],[146,1,1,2,0],[147,1,1,0,0],[148,1,1,1,0],[154,0,0,1,0],[169,0,0,1,0]],"topic":[[10,0,0,1,0],[28,0,0,1,0],[56,0,0,1,0],[75,0,0,0,1],[81,0,0,1,0],[88,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0],[102,0,0,2,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,1,2,0],[106,0,0,1,0],[109,0,0,1,0],[142,0,0,1,0],[143,0,0,2,0],[144,0,0,1,0],[145,0,0,1,0],[146,0,0,1,0],[147,0,1,1,0],[148,0,0,1,0]],"config":[[10,0,0,1,0],[16,0,0,1,0],[17,0,0,2,1],[18,0,0,1,0],[35,0,0,2,0],[36,0,0,1,0],[38,0,0,1,0],[46,0,0,1,0],[56,0,0,1,0],[65,0,1,0,0],[75,0,1,4,0],[121,0,0,2,0],[147,0,0,1,0],[164,0,0,1,0],[180,0,0,1,0]],"framework":[[10,0,0,1,1],[19,0,0,2,0],[20,0,0,4,0],[21,0,0,1,0],[31,0,0,1,0],[41,0,0,5,0],[46,0,0,1,0],[47,0,0,1,0],[56,0,0,1,1],[86,0,0,1,0],[91,0,0,2,0],[94,0,0,0,1],[95,0,0,4,0],[96,0,0,1,0],[107,0,0,1,0],[108,0,0,3,0],[111,0,0,2,0],[134,0,0,4,0],[136,0,0,0,1],[137,0,0,1,0],[150,0,0,1,0]],"react":[[10,0,0,2,4],[25,0,0,0,3],[56,0,0,2,5],[70,0,0,0,6],[91,0,0,1,0],[108,0,0,1,0]],"integration":[[10,0,0,3,0],[47,0,0,1,0],[56,0,0,3,2],[75,0,0,0,1],[176,0,0,1,0]],"vue":[[10,0,0,2,3],[56,0,0,2,4]],"svelte":[[10,0,0,2,0],[56,0,0,2,0]],"label":[[10,0,0,0,3],[56,0,0,0,3],[98,0,0,1,0],[139,0,0,1,0],[153,0,0,1,0],[168,0,0,1,0]],"activevalue":[[10,0,0,0,1],[56,0,0,0,1]],"explicit":[[11,0,0,1,0],[25,0,0,1,0],[57,0,0,1,0],[70,0,0,1,0],[106,0,0,1,0],[161,0,0,1,0],[177,0,0,1,0]],"type":[[11,0,0,3,2],[19,0,0,1,0],[20,0,0,1,0],[57,0,0,2,2],[81,0,0,1,0],[83,0,0,1,0],[94,0,0,0,1],[96,0,0,1,0],[97,0,0,2,0],[98,0,0,1,0],[133,0,0,1,0],[136,0,0,0,1],[137,0,0,1,0],[138,0,0,2,0],[139,0,0,1,0],[144,0,0,0,1],[153,0,0,2,0],[158,0,0,0,2],[168,0,0,4,0],[171,0,0,0,2]],"rows":[[11,0,0,1,0],[57,0,0,1,0]],"already":[[11,0,0,1,0],[57,0,0,1,0],[63,0,0,1,0],[78,0,0,1,0],[159,0,0,1,0],[174,0,0,1,0]],"know":[[11,0,0,1,0],[57,0,0,1,0],[63,0,0,1,0]],"reads":[[11,0,0,1,0],[15,0,0,1,0],[40,0,0,1,0],[75,0,0,1,0],[91,0,0,1,0],[100,0,0,1,0],[102,0,0,1,0],[115,0,0,1,0],[145,0,0,1,0],[153,0,0,1,0],[157,0,0,1,0],[168,0,0,1,0],[171,0,0,1,0],[172,0,0,1,0],[179,0,0,1,0],[180,0,0,1,0]],"typescript":[[11,0,0,1,0],[124,0,0,1,0],[153,0,0,1,0],[168,0,0,1,0]],"file":[[11,0,0,1,0],[12,0,0,1,0],[15,0,0,1,0],[18,0,0,1,0],[43,0,0,1,0],[45,0,0,1,0],[62,0,1,0,0],[63,0,1,0,0],[66,0,0,1,0],[76,0,0,1,0],[81,0,0,1,0],[83,0,0,2,0],[84,0,0,1,0],[94,0,0,1,1],[105,0,0,1,0],[106,0,0,1,0],[115,0,0,2,0],[125,0,0,1,0],[127,0,0,1,0],[128,0,0,1,0],[136,0,0,0,1],[143,0,0,3,0],[147,0,0,1,0],[153,0,0,2,0],[168,0,0,2,0]],"extracts":[[11,0,0,1,0],[57,0,0,1,0]],"named":[[11,0,0,1,0],[149,0,0,1,0],[159,0,0,1,0]],"keep":[[11,0,0,1,0],[14,0,0,2,0],[44,0,0,1,0],[60,0,0,2,0],[106,0,0,1,0],[140,0,0,1,0],[164,0,0,1,0],[170,0,0,1,0],[180,0,0,1,0]],"path":[[11,0,0,1,0],[22,0,0,1,0],[31,0,0,1,0],[57,0,0,2,0],[63,0,0,2,0],[81,0,0,1,0],[87,0,1,0,0],[92,0,0,1,0],[120,0,0,0,8],[124,0,0,1,0],[144,0,0,0,1],[153,0,0,1,0],[163,0,0,1,0],[172,0,0,1,0],[179,0,0,1,0]],"stable":[[11,0,0,1,0],[14,0,0,1,0],[19,0,0,1,0],[57,0,0,1,0],[60,0,0,1,0]],"property":[[11,0,0,1,0],[19,0,0,1,0],[57,0,0,1,0],[81,0,0,1,0],[83,0,0,1,0],[153,0,0,1,0],[168,0,0,1,0]],"default":[[11,0,0,1,1],[19,0,0,2,0],[20,0,0,1,0],[35,0,0,0,1],[57,0,0,1,1],[75,0,0,0,1],[81,0,0,1,0],[83,0,0,1,0],[84,0,0,1,0],[91,0,0,1,0],[92,0,0,2,0],[95,0,0,2,0],[96,0,1,0,0],[97,0,1,0,0],[98,0,1,0,0],[115,0,0,1,0],[119,0,0,1,0],[122,0,0,2,0],[130,0,0,1,0],[133,0,0,1,0],[134,0,0,1,0],[135,0,0,2,0],[137,0,1,0,0],[138,0,1,0,0],[139,0,1,0,0],[144,0,0,0,1],[148,0,0,1,0],[149,0,0,1,0],[150,0,1,1,0],[151,0,0,1,0],[152,0,0,2,0],[153,0,0,3,0],[154,0,0,1,0],[165,0,0,1,0],[166,0,1,2,0],[167,0,0,2,0],[168,0,0,2,0],[169,0,0,1,0],[170,0,0,3,0],[172,0,0,1,0],[178,0,0,1,0]],"required":[[11,0,0,2,1],[15,0,0,1,0],[16,0,0,2,0],[17,0,0,1,0],[18,0,0,1,0],[19,0,0,2,0],[20,0,0,2,0],[21,0,0,1,0],[46,0,0,1,0],[57,0,0,2,1],[81,0,0,1,0],[83,0,0,1,0],[94,0,0,2,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[103,0,1,0,0],[133,0,0,1,0],[135,0,0,1,0],[136,0,0,2,0],[137,0,0,1,0],[138,0,0,1,0],[139,0,0,1,0],[153,0,0,3,0],[168,0,0,3,0]],"string":[[11,0,0,1,1],[16,0,0,1,0],[19,0,0,3,0],[57,0,0,1,1],[62,0,0,1,0],[83,0,0,1,0],[94,0,0,0,3],[96,0,0,7,0],[97,0,0,8,0],[98,0,0,5,0],[136,0,0,0,3],[137,0,0,7,0],[138,0,0,7,0],[139,0,0,5,0],[140,0,0,0,1],[153,0,0,2,0],[168,0,0,2,0]],"heading":[[11,0,0,1,1],[16,0,0,1,0],[53,0,0,1,0],[57,0,0,1,1],[83,0,0,1,0],[150,0,0,1,0],[156,0,0,1,0],[158,0,0,1,0],[159,0,0,1,0],[172,0,0,1,0],[173,0,0,1,0],[174,0,0,2,0]],"rendered":[[11,0,0,1,1],[57,0,0,1,1],[62,0,0,1,0],[66,0,0,1,0],[76,0,0,1,0],[91,0,0,1,0],[95,0,0,1,0],[129,0,0,1,0]],"calloutvariant":[[11,0,0,1,1],[57,0,0,1,1]],"visual":[[11,0,0,1,1],[57,0,0,1,1],[110,0,0,1,0]],"treatment":[[11,0,0,1,1],[57,0,0,1,1]],"deprecated":[[11,0,0,3,0],[19,0,0,3,0],[57,0,0,3,0],[96,0,0,1,0],[137,0,0,1,0]],"boolean":[[11,0,0,1,0],[19,0,0,6,0],[57,0,0,1,0],[96,0,0,6,0],[97,0,0,2,0],[98,0,0,2,0],[137,0,0,6,0],[138,0,0,2,0],[139,0,0,2,0],[153,0,0,1,0],[168,0,0,1,0]],"marks":[[11,0,0,1,0],[19,0,0,2,0],[57,0,0,1,0]],"false":[[11,0,0,1,0],[57,0,0,1,0],[62,0,0,0,1],[127,0,0,0,1]],"properties":[[11,0,0,0,1],[57,0,0,0,1]],"true":[[11,0,0,0,1],[57,0,0,0,1],[64,0,0,0,1],[126,0,0,1,1]],"data":[[12,0,0,2,0],[58,0,0,2,0],[75,0,0,1,0],[82,0,0,1,0]],"driven":[[12,0,0,1,0],[58,0,0,1,0]],"examples":[[12,0,0,1,0],[58,0,0,1,0]],"host":[[12,0,0,1,1],[58,0,0,1,1],[105,0,0,1,0]],"receives":[[12,0,0,1,0],[58,0,0,1,0]],"code":[[12,0,0,1,1],[37,0,0,1,0],[58,0,0,1,1],[81,0,0,1,0],[83,0,0,1,0],[92,0,0,3,0],[111,0,0,1,0],[150,0,0,1,0],[156,0,0,1,0],[162,0,0,1,0],[173,0,0,1,0]],"loaders":[[12,0,0,1,0],[58,0,0,1,0]],"dynamic":[[12,0,0,1,0],[58,0,0,1,0]],"imports":[[12,0,0,1,0],[58,0,0,1,0],[80,0,0,0,1],[121,0,0,1,0],[149,0,0,1,0],[151,0,0,1,0],[166,0,0,1,0]],"outside":[[12,0,0,1,0],[58,0,0,1,0],[135,0,0,1,0]],"needs":[[12,0,0,1,0],[25,0,0,1,0],[57,0,0,1,0],[58,0,0,1,0],[70,0,0,1,0],[107,0,0,1,0],[114,0,0,1,0],[153,0,0,1,0],[169,0,0,1,0],[172,0,0,1,0]],"specific":[[12,0,0,1,0],[25,0,1,0,0],[47,0,0,1,0],[58,0,0,1,0],[70,0,1,1,0],[148,0,0,1,0],[155,0,0,1,0]],"behavior":[[12,0,0,1,0],[16,0,0,1,0],[58,0,0,1,0],[66,0,1,0,0],[129,0,1,0,0],[169,0,0,1,0]],"output":[[12,0,0,0,1],[14,0,0,1,0],[22,0,0,1,0],[26,0,0,1,0],[43,0,0,1,0],[58,0,0,0,1],[63,0,0,1,0],[77,0,1,0,0],[81,0,0,1,0],[84,0,0,1,0],[90,0,0,1,0],[101,0,1,0,0],[102,0,1,0,0],[112,0,0,1,0],[116,0,1,0,0],[118,0,0,1,0],[119,0,0,2,0],[120,0,1,1,0],[121,0,0,1,0],[122,0,0,1,0],[123,0,0,1,0],[124,0,0,2,0],[125,0,0,1,0],[126,0,0,1,0],[127,0,0,1,0],[128,0,0,1,0],[129,0,0,2,0],[154,0,0,2,0],[169,0,0,1,0],[170,0,0,1,0]],"inspect":[[12,0,0,0,1],[58,0,0,0,1],[72,0,0,1,0],[112,0,0,1,0],[113,0,0,1,0],[114,0,0,1,0],[115,0,0,1,0],[116,0,1,1,0],[117,0,0,1,0],[178,0,0,1,0]],"filename":[[12,0,0,0,1],[58,0,0,0,1]],"language":[[12,0,0,0,1],[58,0,0,0,1]],"while":[[12,0,0,0,1],[58,0,0,0,1],[76,0,0,1,0],[157,0,0,1,0]],"diagrams":[[13,0,0,1,0],[59,0,0,1,0]],"plain":[[13,0,0,1,0],[59,0,0,1,0],[146,0,0,1,0],[161,0,0,1,0],[166,0,0,1,0],[176,0,0,1,0]],"renders":[[13,0,0,1,0],[16,0,0,1,0],[49,0,0,1,0],[59,0,0,1,0],[82,0,0,1,0],[88,0,0,1,0],[91,0,0,1,0],[111,0,0,1,0],[134,0,0,1,0],[168,0,0,1,0]],"client":[[13,0,0,1,0],[59,0,0,1,0]],"svg":[[13,0,0,1,0],[59,0,0,1,0]],"preserves":[[13,0,0,1,0],[59,0,0,1,0]],"tools":[[13,0,0,1,0],[29,0,0,1,0],[82,0,0,1,0],[88,0,0,1,0],[89,0,0,1,0],[162,0,0,0,1],[171,0,0,4,0],[178,0,0,1,1]],"copy":[[13,0,0,1,0]],"chart":[[13,0,0,0,1],[59,0,0,0,1]],"graph":[[13,0,0,0,2],[59,0,0,0,2]],"lr":[[13,0,0,0,2],[17,0,0,0,1],[23,0,0,0,1],[32,0,0,0,1],[59,0,0,0,2],[82,0,0,0,1],[86,0,0,0,1]],"index":[[13,0,0,0,1],[23,0,0,0,1],[24,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[31,0,0,1,0],[32,0,0,0,1],[33,0,0,1,0],[37,0,0,1,0],[38,0,0,4,0],[59,0,0,0,1],[72,0,0,1,0],[76,0,0,1,0],[77,0,0,1,0],[80,0,0,1,1],[81,0,0,5,0],[82,0,0,1,1],[83,0,0,1,0],[84,0,0,1,0],[86,0,0,2,1],[87,0,0,1,0],[88,0,0,2,0],[89,0,0,1,0],[107,0,0,1,0],[109,0,0,1,0],[114,0,0,1,0],[115,0,0,4,0],[116,0,0,2,5],[120,0,0,0,2],[142,0,0,1,0],[143,0,0,2,0],[155,0,0,2,0],[156,0,0,6,0],[157,0,0,2,1],[158,0,0,1,1],[159,0,0,2,3],[160,0,0,1,1],[161,0,0,1,1],[162,0,0,1,1],[163,0,0,1,0],[164,0,0,3,0],[171,0,0,1,0],[172,0,0,3,1],[173,0,0,1,0],[174,0,0,2,0],[175,0,0,1,0],[176,0,0,1,1],[177,0,0,1,2],[178,0,0,1,0],[179,0,0,1,0],[180,0,0,2,0]],"api":[[13,0,0,0,1],[59,0,0,0,1],[90,0,0,1,0],[122,0,0,1,0],[124,0,0,1,0],[131,0,0,2,0],[132,0,0,1,0],[133,0,0,1,0],[134,0,0,1,0],[135,0,1,1,0],[136,0,1,1,0],[137,0,0,1,0],[138,0,0,1,0],[139,0,0,1,0],[140,0,0,1,0],[141,0,0,1,0],[164,0,0,1,0]],"guidelines":[[14,0,1,0,0]],"stays":[[14,0,0,1,0],[81,0,0,1,0],[107,0,0,1,0],[129,0,0,1,0],[157,0,0,1,0]],"out":[[14,0,0,1,0],[23,0,0,0,1],[24,0,0,0,1],[25,0,0,0,1],[26,0,0,0,1],[27,0,0,0,1],[28,0,0,1,0],[33,0,0,0,1],[37,0,0,0,1],[45,0,0,0,1],[69,0,0,0,1],[70,0,0,0,2],[71,0,0,0,1],[72,0,0,0,1],[74,0,0,0,1],[76,0,0,0,1],[107,0,0,1,0],[115,0,0,0,1],[119,0,0,3,0],[143,0,0,4,0],[150,0,0,0,2]],"renaming":[[14,0,0,1,0]],"breaks":[[14,0,0,1,0]],"until":[[14,0,0,1,0]],"remap":[[14,0,0,1,0]],"quality":[[14,0,0,1,0],[170,0,0,1,0]],"converted":[[14,0,0,1,0],[24,0,0,1,0],[36,0,0,1,0],[38,0,0,1,0],[69,0,0,1,0],[82,0,0,1,0],[84,0,0,2,0],[103,0,0,1,0],[116,0,0,0,1],[154,0,0,1,0],[170,0,0,1,0]],"first":[[14,0,0,1,0],[28,0,0,1,0],[37,0,0,1,0],[45,0,0,1,0],[46,0,1,0,0],[89,0,0,1,0],[99,0,0,1,0],[141,0,0,1,0],[145,0,0,1,0],[149,0,0,1,0],[154,0,0,1,0]],"edit":[[14,0,0,1,0]],"order":[[14,0,0,1,0],[34,0,0,1,0],[46,0,0,1,0],[84,0,0,1,0],[121,0,0,1,0],[124,0,0,1,0],[125,0,0,1,0],[126,0,0,1,0],[130,0,0,1,0],[149,0,0,1,0],[150,0,0,1,0],[151,0,1,0,0],[166,0,0,1,0],[169,0,0,1,0],[170,0,0,1,0]],"actually":[[14,0,0,1,0],[67,0,0,1,0]],"looks":[[14,0,0,1,0],[116,0,0,1,0],[154,0,0,1,0]],"wrong":[[14,0,0,1,0],[20,0,0,1,0],[41,0,0,1,0],[46,0,0,1,0],[133,0,0,1,0],[154,0,0,1,0]],"frontmatter":[[15,1,1,1,0],[16,1,1,0,0],[17,1,1,0,0],[18,1,1,0,0],[19,1,1,0,0],[20,1,1,1,0],[21,1,1,1,0],[35,0,0,2,0],[37,0,0,1,0],[40,0,0,1,0],[41,0,0,4,0],[42,0,0,1,0],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,2,0],[62,0,0,1,0],[66,0,0,2,0],[75,0,0,2,0],[80,0,0,0,2],[83,0,0,1,0],[84,0,0,2,0],[85,0,0,1,0],[88,0,0,1,0],[90,0,0,1,0],[91,0,0,3,0],[92,0,0,2,0],[94,0,0,3,1],[95,0,0,2,0],[96,0,1,0,0],[97,0,1,0,0],[109,0,0,1,0],[114,0,0,1,0],[115,0,0,1,0],[119,0,0,1,0],[122,0,0,2,0],[127,0,0,1,1],[129,0,0,3,0],[133,0,1,1,0],[135,0,0,3,0],[136,0,0,0,1],[137,0,1,0,0],[138,0,1,0,0],[140,0,0,0,1]],"fields":[[15,0,0,1,0],[16,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[19,0,1,1,0],[20,0,0,1,0],[21,0,0,1,0],[41,0,0,2,0],[46,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,2,0],[94,0,0,2,0],[122,0,0,2,0],[135,0,0,1,0],[136,0,0,1,0]],"semantics":[[15,0,0,1,0],[16,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0]],"tree":[[15,0,0,1,0],[16,0,0,1,0],[17,0,1,2,1],[18,0,1,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[33,0,0,1,0],[35,0,0,1,0],[64,0,1,0,0],[75,0,0,2,0],[80,0,0,0,1],[81,0,0,1,0],[86,0,0,1,1],[88,0,0,2,0],[95,0,0,1,0],[105,0,0,1,0],[114,0,0,1,0],[115,0,0,1,0],[126,0,0,1,0],[151,0,0,1,0]],"page":[[15,0,0,2,0],[16,0,0,1,0],[17,0,0,2,3],[18,0,0,1,0],[19,0,0,4,0],[20,0,0,1,0],[21,0,0,1,0],[28,0,0,1,0],[38,0,0,1,0],[41,0,0,1,0],[75,0,0,1,0],[79,0,0,1,0],[80,0,0,0,1],[81,0,0,1,0],[83,0,0,2,0],[84,0,0,1,0],[86,0,0,0,2],[87,0,0,1,0],[91,0,0,2,0],[94,0,0,1,0],[95,0,0,1,0],[114,0,1,1,0],[115,0,0,1,0],[121,0,0,1,0],[129,0,0,1,0],[131,0,0,1,0],[134,0,0,1,0],[135,0,0,1,0],[156,0,0,2,0],[159,0,0,1,0],[164,0,0,1,0],[172,0,0,1,0],[174,0,0,1,0],[180,0,0,1,0]],"yaml":[[15,0,0,1,0],[42,0,0,0,1],[129,0,0,1,0],[133,0,0,1,0]],"things":[[15,0,0,1,0],[115,0,0,1,0]],"lives":[[15,0,0,1,0],[31,0,0,1,0],[37,0,0,2,0],[74,0,0,1,0],[78,0,0,1,0],[103,0,0,1,0]],"nav":[[15,0,0,1,0],[16,0,0,1,0],[17,0,1,1,2],[18,0,1,0,0],[19,0,0,1,0],[32,0,0,0,1],[80,0,0,0,3],[81,0,0,2,0],[86,0,0,0,3],[98,0,0,3,0],[114,0,0,1,0],[115,0,0,1,0],[139,0,0,3,0],[146,0,0,1,0]],"minimum":[[16,0,1,0,0],[114,0,0,1,0]],"non":[[16,0,0,1,0],[18,0,0,1,0],[38,0,0,1,0],[40,0,0,1,0],[83,0,0,1,0],[92,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[119,0,0,1,0],[122,0,0,1,0],[137,0,0,1,0],[138,0,0,1,0],[139,0,0,1,0],[143,0,0,1,0]],"empty":[[16,0,0,1,0],[38,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[106,0,0,1,0],[137,0,0,1,0],[138,0,0,1,0],[139,0,0,1,0]],"sidebar":[[16,0,0,1,0],[19,0,0,1,0],[21,0,0,1,0],[81,0,0,1,0],[83,0,0,1,0],[90,0,0,1,0],[98,0,0,1,0],[139,0,0,1,0],[146,0,0,2,0]],"recommended":[[16,0,0,1,0],[67,0,1,0,0],[119,0,0,1,0]],"routing":[[16,0,0,1,0],[28,0,0,1,0],[31,0,0,1,0],[38,0,0,1,0],[81,0,0,1,0],[106,0,0,1,0],[107,0,0,1,0],[110,0,0,1,0],[115,0,0,1,0],[116,0,0,0,2],[142,0,0,1,0],[143,0,0,2,0],[147,0,0,1,0]],"hint":[[16,0,0,1,0]],"omitted":[[16,0,0,1,0]],"converter":[[16,0,0,1,0],[37,0,0,1,0],[66,0,0,1,0],[134,0,0,1,0],[137,0,0,1,0]],"synthesizes":[[16,0,0,1,0],[66,0,0,1,0]],"during":[[16,0,0,1,0]],"slug":[[16,0,0,1,0],[17,0,0,4,0],[18,0,0,1,3],[35,0,0,0,2],[75,0,0,0,2],[83,0,0,2,0],[84,0,0,1,0],[104,0,0,0,1],[120,0,0,0,1],[146,0,0,0,2]],"declared":[[16,0,0,1,0],[17,0,0,1,0]],"pages":[[16,0,0,1,0],[19,0,0,1,0],[25,0,0,1,0],[28,0,0,1,0],[35,0,0,1,0],[36,0,0,1,0],[44,0,0,1,0],[70,0,0,1,0],[75,0,0,1,0],[81,0,0,1,0],[88,0,0,1,0],[98,0,0,1,0],[116,0,0,0,1],[139,0,0,1,0],[143,0,0,1,0],[147,0,0,2,0]],"excluded":[[16,0,0,1,0],[19,0,0,1,0]],"connect":[[16,0,0,0,1],[18,0,0,0,2],[29,0,0,1,0],[31,1,1,0,0],[32,1,1,0,0],[33,1,1,0,0],[34,1,1,0,0],[35,1,1,0,0],[36,1,1,0,0],[37,1,2,0,0],[38,1,1,0,0],[39,1,1,0,0],[73,0,0,1,0],[74,1,1,0,0],[75,1,1,0,1],[76,1,1,0,0],[77,1,1,0,0],[78,1,1,0,0]],"site":[[16,0,0,0,1],[18,0,0,0,2],[29,0,0,1,0],[31,1,1,3,0],[32,1,1,0,0],[33,1,1,1,0],[34,1,1,0,0],[35,1,1,0,0],[36,1,1,0,0],[37,1,1,1,0],[38,1,1,0,0],[39,1,1,0,0],[68,0,0,1,0],[73,0,0,1,0],[74,1,1,0,0],[75,1,1,0,1],[76,1,1,0,0],[77,1,1,0,0],[78,1,1,0,0],[81,0,0,1,0],[82,0,0,1,0],[86,0,0,0,3],[87,0,0,1,0],[88,0,0,1,0],[90,0,0,1,0],[107,0,0,1,0],[108,0,0,3,0],[117,0,0,1,0]],"build":[[16,0,0,0,2],[17,0,0,1,4],[18,0,0,1,2],[20,0,0,1,0],[21,0,0,1,0],[26,0,0,2,1],[31,0,0,3,0],[32,0,0,1,0],[33,0,0,1,0],[34,0,1,2,4],[35,0,0,1,0],[36,0,0,1,0],[37,0,0,2,1],[38,0,0,2,0],[39,0,0,1,0],[71,0,0,2,1],[76,0,1,2,1],[84,0,0,1,0],[87,0,0,1,0],[90,0,0,1,0],[115,0,0,1,0],[119,0,0,1,0],[124,0,0,1,0],[131,0,0,1,0],[155,0,0,1,0],[157,0,1,0,0],[161,0,0,1,0],[168,0,0,1,0],[172,0,1,0,0]],"groups":[[17,0,1,0,1],[18,0,2,1,0],[35,0,1,0,1],[37,0,0,1,0],[45,0,0,1,0],[75,0,0,1,1],[76,0,0,1,0],[80,0,0,0,4],[83,0,0,1,0],[84,0,0,1,0],[115,0,0,2,0],[120,0,0,0,1],[121,0,0,3,0],[143,0,0,2,0],[145,0,0,0,4],[146,0,0,0,2],[147,0,0,1,0]],"become":[[17,0,1,0,0],[18,0,1,0,0],[106,0,0,1,0],[121,0,0,1,0],[180,0,0,1,0]],"declares":[[17,0,0,2,0],[35,0,0,1,0],[146,0,0,0,1]],"single":[[17,0,0,1,0],[33,0,0,2,0],[63,0,1,0,0],[86,0,0,1,0],[87,0,0,2,0],[88,0,0,2,0],[89,0,0,1,0],[119,0,0,1,0],[120,0,0,1,0],[147,0,0,1,0]],"once":[[17,0,0,1,0],[21,0,0,1,0],[35,0,0,1,0],[70,0,0,1,0],[88,0,0,1,0],[116,0,0,1,0],[140,0,0,1,0]],"intersection":[[17,0,0,1,0]],"produces":[[17,0,0,1,0],[49,0,0,1,0],[79,0,0,1,0],[81,0,0,1,0],[86,0,0,1,0],[89,0,0,1,0],[107,0,0,1,0],[112,0,0,1,0],[113,0,0,1,0],[114,0,0,1,0],[115,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0],[142,0,0,1,0],[147,0,0,2,0]],"leaf":[[17,0,0,1,0],[18,0,0,1,0],[38,0,0,2,0],[81,0,0,1,0],[83,0,0,3,0],[84,0,0,1,0],[115,0,0,1,0],[116,0,0,0,1],[142,0,0,1,0],[143,0,0,5,0],[147,0,0,2,0]],"isn":[[17,0,0,1,0],[20,0,0,1,0],[38,0,0,1,0]],"fails":[[17,0,0,1,0],[37,0,0,1,0],[45,0,0,2,0],[46,0,0,1,0],[84,0,0,1,0],[99,0,0,1,0]],"unknown":[[17,0,0,1,0],[20,0,0,2,0],[37,0,0,0,1],[41,0,0,1,0],[42,0,0,2,1],[43,0,0,0,1],[45,0,0,1,1],[46,0,0,1,0],[76,0,0,0,1],[84,0,0,1,0],[90,0,0,1,1],[92,0,0,4,0],[94,0,0,0,1],[95,0,0,1,0],[119,0,0,1,0],[122,0,0,4,0],[133,0,0,3,0],[136,0,0,0,1],[140,0,0,2,0],[146,0,0,0,3]],"truth":[[17,0,0,1,0],[21,0,0,1,0]],"drift":[[17,0,0,1,0],[99,0,0,1,0],[141,0,0,1,0]],"flowchart":[[17,0,0,0,1],[23,0,0,0,1],[32,0,0,0,1],[80,0,0,0,1],[82,0,0,0,1],[86,0,0,0,1],[150,0,0,0,1]],"cfg":[[17,0,0,0,2]],"page1":[[17,0,0,0,2]],"page2":[[17,0,0,0,2]],"page3":[[17,0,0,0,2]],"resolver":[[17,0,0,0,9],[80,0,0,0,1]],"sections":[[17,0,0,0,1],[35,0,0,1,0],[106,0,0,1,0],[150,0,0,1,0]],"nested":[[18,0,1,1,0],[105,0,0,1,0]],"declare":[[18,0,0,1,0],[35,0,0,1,0]],"children":[[18,0,0,2,1],[83,0,0,1,0],[143,0,0,1,0]],"deeper":[[18,0,0,1,0],[81,0,0,1,0],[143,0,0,1,0]],"trees":[[18,0,0,1,0],[66,0,0,1,0],[126,0,0,1,0]],"sets":[[18,0,0,1,0]],"bundle":[[18,0,0,1,2],[19,0,0,1,0],[21,0,0,1,0],[22,1,1,0,0],[23,1,1,0,3],[24,1,1,0,0],[25,1,1,1,0],[26,1,1,1,0],[27,1,1,0,0],[28,1,1,1,0],[29,1,1,0,0],[30,1,1,0,0],[37,0,0,1,0],[68,1,1,0,0],[69,1,1,0,0],[70,1,1,0,0],[71,1,1,1,0],[72,1,1,0,0],[73,1,1,0,0],[74,0,0,1,0],[89,0,0,1,0],[116,0,0,0,1],[117,0,0,1,0],[147,0,0,2,0]],"lands":[[18,0,0,1,0]],"slot":[[18,0,0,1,0]],"get":[[18,0,0,1,0],[35,0,0,0,2],[36,0,0,2,0],[37,0,0,1,0],[38,0,0,2,0],[83,0,0,1,0],[88,0,1,0,0],[114,0,0,0,1],[116,0,0,0,1],[120,0,0,0,2],[127,0,0,1,0],[143,0,0,1,0],[144,0,0,0,1],[149,0,0,2,0]],"leaves":[[18,0,0,1,0],[147,0,0,1,0]],"schema":[[19,0,0,1,0],[20,0,0,4,0],[40,0,0,1,0],[41,0,0,3,0],[45,0,0,1,0],[46,0,0,2,0],[91,0,0,2,0],[92,0,0,1,0],[94,0,0,7,1],[95,0,0,3,0],[122,0,0,2,0],[131,0,0,2,0],[132,0,0,1,0],[133,0,0,3,0],[134,0,0,1,0],[135,0,0,6,0],[136,0,0,2,1],[137,0,0,1,0],[138,0,0,1,0],[139,0,0,1,0],[140,0,0,4,0],[141,0,0,1,0]],"also":[[19,0,0,1,0],[31,0,0,1,0],[37,0,0,1,0],[54,0,0,1,0],[70,0,0,1,0],[74,0,0,1,0],[111,0,0,1,0],[124,0,0,1,0],[174,0,0,1,0]],"accepts":[[19,0,0,1,0],[44,0,0,1,0]],"resolved":[[19,0,0,1,0],[37,0,0,1,0],[62,0,0,1,0],[81,0,0,1,0],[149,0,0,1,0]],"deprecatedreason":[[19,0,0,1,0],[96,0,0,1,0],[137,0,0,1,0]],"message":[[19,0,0,1,0],[94,0,0,0,1],[136,0,0,0,1],[160,0,0,1,0]],"paired":[[19,0,0,1,0]],"experimental":[[19,0,0,2,0],[96,0,0,1,0],[137,0,0,1,0]],"canary":[[19,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[137,0,0,1,0],[138,0,0,1,0]],"hides":[[19,0,0,1,0]],"channels":[[19,0,0,1,0]],"new":[[19,0,0,1,0],[89,0,0,1,0],[96,0,0,1,0],[137,0,0,1,0]],"highlights":[[19,0,0,1,0]],"recently":[[19,0,0,1,0]],"added":[[19,0,0,1,0]],"draft":[[19,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[137,0,0,1,0],[138,0,0,1,0]],"excludes":[[19,0,0,1,0]],"generation":[[19,0,0,1,0],[26,0,0,1,0],[71,0,0,1,0],[74,0,0,0,1],[75,0,0,1,1],[122,0,0,1,0],[131,0,0,1,0],[157,0,0,1,0]],"entirely":[[19,0,0,1,0]],"tags":[[19,0,0,2,0],[67,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[137,0,0,1,0],[138,0,0,1,0],[152,0,0,1,0],[167,0,0,1,0]],"free":[[19,0,0,1,0]],"form":[[19,0,0,1,0],[59,0,0,1,0]],"facets":[[19,0,0,1,0]],"availablein":[[19,0,0,1,0],[96,0,0,1,0],[137,0,0,1,0],[141,0,0,1,0]],"array":[[19,0,0,1,0],[94,0,0,0,1],[96,0,0,3,0],[97,0,0,2,0],[98,0,0,1,0],[126,0,0,1,0],[136,0,0,0,1],[137,0,0,3,0],[138,0,0,2,0],[139,0,0,1,0],[166,0,0,1,0]],"cross":[[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[41,0,0,2,0],[46,0,0,1,0],[91,0,0,1,0],[94,0,0,0,1],[95,0,0,1,0],[134,0,0,1,0],[136,0,0,0,1]],"availability":[[19,0,0,1,0]],"map":[[19,0,0,1,0],[47,0,0,1,0],[48,0,1,2,0],[101,0,0,1,0]],"forces":[[19,0,0,1,0]],"even":[[19,0,0,1,0],[164,0,0,1,0]],"normally":[[19,0,0,1,0]],"lastmodified":[[19,0,0,1,0],[96,0,0,1,0],[119,0,0,1,0],[126,0,0,1,0],[137,0,0,1,0]],"lastauthor":[[19,0,0,1,0],[96,0,0,1,0],[119,0,0,1,0],[126,0,0,1,0],[137,0,0,1,0]],"filled":[[19,0,0,1,0]],"pass":[[19,0,0,1,0],[34,0,0,1,0],[67,0,0,1,0],[92,0,0,1,0],[115,0,0,1,0],[119,0,0,1,0],[122,0,0,2,0],[140,0,0,1,0],[147,0,0,1,0],[148,0,0,1,0],[153,0,0,1,0],[160,0,0,1,0],[161,0,0,1,0],[173,0,0,1,0],[177,0,0,1,0]],"enrich":[[19,0,0,1,0],[119,0,0,1,0],[137,0,0,1,0]],"git":[[19,0,0,1,0],[37,0,0,0,1],[65,0,0,1,0],[76,0,0,0,1],[119,0,0,2,0],[126,0,0,1,0],[137,0,0,1,0]],"hand":[[19,0,0,1,0]],"rules":[[20,0,1,2,0],[35,0,0,1,0],[40,0,0,1,0],[60,0,0,1,0],[109,0,0,1,0],[131,1,1,1,0],[132,1,2,0,0],[133,1,3,0,0],[134,1,3,0,0],[135,1,1,0,0],[136,1,1,0,0],[137,1,1,0,0],[138,1,1,0,0],[139,1,1,0,0],[140,1,1,0,0],[141,1,1,0,0],[154,0,1,0,0]],"enforces":[[20,0,0,1,0]],"violations":[[20,0,0,1,0],[42,0,0,1,0],[43,0,0,1,0],[46,0,0,1,0],[94,0,0,2,1],[136,0,0,1,1]],"surface":[[20,0,0,1,0],[75,0,0,0,1],[90,0,0,1,0],[100,0,0,1,0],[161,0,0,1,0]],"ci":[[20,0,0,1,0],[30,0,0,1,0],[37,0,0,1,0],[39,0,0,1,0],[40,1,1,2,0],[41,1,1,1,0],[42,1,1,1,0],[43,1,2,2,0],[44,1,1,2,0],[45,1,1,1,0],[46,1,1,2,0],[76,0,0,1,0],[90,0,0,2,0],[131,0,0,1,0],[140,0,0,1,0],[141,0,0,2,0]],"before":[[20,0,0,1,0],[26,0,0,1,0],[27,0,1,0,0],[31,0,0,1,0],[34,0,0,1,0],[37,0,0,1,0],[40,0,0,1,0],[41,0,0,1,0],[42,0,0,1,0],[43,0,0,1,0],[44,0,0,2,0],[45,0,1,1,0],[46,0,0,1,0],[71,0,0,1,0],[72,0,1,0,0],[74,0,0,2,0],[75,0,0,1,1],[76,0,0,1,0],[77,0,0,1,0],[78,0,0,1,0],[90,0,0,1,0],[99,0,0,2,0],[103,0,0,1,0],[122,0,0,1,0],[127,0,0,1,0],[130,0,0,2,0],[131,0,0,2,0],[134,0,0,1,0],[141,0,0,1,0],[151,0,0,4,0],[152,0,0,2,0],[163,0,0,1,0],[167,0,0,2,0],[170,0,0,3,0],[179,0,0,1,0]],"they":[[20,0,0,1,0],[44,0,0,1,0],[58,0,0,1,0],[81,0,0,1,0],[99,0,0,1,0],[106,0,0,1,0],[131,0,0,1,0],[132,0,0,1,0],[141,0,0,1,0],[164,0,0,1,0],[176,0,0,1,0]],"reach":[[20,0,0,1,0],[44,0,0,1,0],[131,0,0,1,0]],"relevant":[[20,0,0,1,0],[28,0,0,1,0],[174,0,0,1,0]],"field":[[20,0,0,3,0],[21,0,0,1,0],[41,0,0,1,0],[42,0,0,1,0],[46,0,0,2,0],[83,0,0,1,0],[94,0,0,1,2],[95,0,0,2,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[133,0,0,4,0],[136,0,0,1,2],[137,0,0,1,0],[138,0,0,1,0],[139,0,0,1,0],[140,0,0,1,0]],"missing":[[20,0,0,1,0],[27,0,0,1,0],[37,0,0,1,0],[41,0,0,1,0],[46,0,0,1,0],[94,0,0,1,0],[119,0,0,1,0],[133,0,0,1,0],[136,0,0,1,0],[141,0,0,1,0]],"top":[[20,0,0,1,0],[41,0,0,1,0],[95,0,0,1,0],[129,0,0,1,0],[133,0,0,1,0],[143,0,0,1,0],[155,0,0,1,0],[164,0,0,1,0]],"level":[[20,0,0,1,0],[41,0,0,1,0],[94,0,0,1,0],[95,0,0,1,0],[133,0,0,1,0],[143,0,0,1,0]],"warn":[[20,0,0,1,0],[92,0,0,1,0],[94,0,0,2,1],[95,0,0,1,0],[122,0,0,1,0],[133,0,0,1,0],[135,0,0,2,0],[136,0,0,0,1]],"fail":[[20,0,0,1,0],[40,0,0,2,0],[41,0,0,1,0],[42,0,0,2,0],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[90,0,0,1,0],[99,0,0,1,0],[131,0,0,1,0],[141,0,0,1,0]],"parse":[[20,0,0,2,0],[41,0,0,2,0],[46,0,0,1,0],[84,0,0,1,0],[94,0,0,0,1],[95,0,0,1,0],[133,0,0,3,0],[136,0,0,0,1],[163,0,0,1,0]],"meta":[[20,0,0,1,0],[41,0,0,1,0],[91,0,0,1,0],[92,0,0,2,0],[94,0,0,3,1],[95,0,0,2,0],[98,0,1,0,0],[99,0,0,1,0],[122,0,0,2,0],[133,0,0,1,0],[135,0,0,3,0],[136,0,0,0,1],[139,0,1,0,0],[141,0,0,1,0]],"json":[[20,0,0,1,0],[22,0,0,1,0],[23,0,0,0,1],[24,0,0,0,1],[25,0,0,0,1],[26,0,0,1,2],[27,0,0,3,1],[32,0,0,0,4],[34,0,0,0,1],[37,0,0,1,1],[38,0,0,2,0],[41,0,0,1,0],[43,0,0,2,2],[45,0,0,0,1],[69,0,0,0,1],[70,0,0,0,2],[71,0,0,1,2],[72,0,0,2,1],[74,0,0,0,1],[76,0,0,2,1],[77,0,0,2,0],[80,0,0,0,2],[81,0,0,3,0],[82,0,0,0,2],[86,0,0,0,2],[90,0,0,1,1],[91,0,0,1,0],[92,0,0,1,0],[94,0,0,2,0],[95,0,0,2,0],[98,0,1,0,0],[99,0,0,2,0],[115,0,0,2,0],[116,0,0,0,2],[118,0,0,1,0],[119,0,0,7,0],[120,0,1,3,3],[121,0,0,1,0],[122,0,0,3,0],[123,0,0,1,0],[124,0,0,1,0],[133,0,0,1,0],[135,0,0,2,0],[139,0,1,0,0],[141,0,0,2,0],[146,0,0,1,0],[156,0,0,2,0],[157,0,0,0,2],[158,0,0,0,2],[163,0,0,1,0],[172,0,0,2,2],[173,0,0,1,0],[179,0,0,1,0]],"doesn":[[20,0,0,2,0],[41,0,0,1,0],[43,0,0,1,0],[111,0,0,1,0],[134,0,0,1,0],[164,0,0,1,0]],"invalid":[[20,0,0,1,0],[41,0,0,1,0],[46,0,0,1,0],[94,0,0,1,1],[95,0,0,1,0],[134,0,0,1,0],[136,0,0,1,1]],"link":[[20,0,0,3,0],[21,0,0,1,0],[40,0,0,2,0],[41,0,0,3,0],[42,0,0,1,0],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,4,0],[91,0,0,1,0],[94,0,0,0,2],[95,0,0,3,0],[131,0,0,2,0],[132,0,0,1,0],[133,0,0,1,0],[134,0,1,5,0],[135,0,0,1,0],[136,0,0,1,2],[137,0,0,1,0],[138,0,0,1,0],[139,0,0,1,0],[140,0,0,1,0],[141,0,0,1,0],[150,0,0,2,0]],"exist":[[20,0,0,1,0],[41,0,0,1,0],[95,0,0,1,0],[134,0,0,1,0]],"unresolved":[[20,0,0,2,0],[41,0,0,2,0],[46,0,0,1,0],[91,0,0,1,0],[94,0,0,0,1],[95,0,0,2,0],[99,0,0,1,0],[134,0,0,1,0],[136,0,0,0,1],[141,0,0,1,0]],"placeholder":[[20,0,0,2,0],[41,0,0,1,0],[46,0,0,1,0],[54,0,0,1,0],[94,0,0,0,1],[95,0,0,2,0],[99,0,0,1,0],[134,0,0,1,0],[136,0,0,0,1],[141,0,0,1,0],[151,0,0,2,0],[170,0,0,1,0]],"doc":[[20,0,0,1,0],[66,0,0,1,0],[74,0,0,0,1],[75,0,0,0,1]],"contains":[[20,0,0,1,0],[94,0,0,1,0],[95,0,0,1,0],[134,0,0,1,0]],"scoped":[[20,0,0,1,0],[28,0,0,1,0],[41,0,0,1,0],[75,0,0,0,1],[81,0,0,1,0],[88,0,0,1,0],[95,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,1,0],[109,0,0,1,0],[116,0,0,0,1],[134,0,0,1,0],[142,0,0,1,0],[143,0,0,3,0],[144,0,0,1,0],[145,0,0,1,0],[146,0,0,1,0],[147,0,0,1,0],[148,0,0,1,0]],"another":[[20,0,0,1,0],[35,0,0,0,1],[76,0,0,1,0],[127,0,0,1,0],[134,0,0,1,0]],"extend":[[20,0,0,1,0],[41,0,0,1,0],[46,0,0,1,0],[122,0,0,1,0],[140,0,0,1,0]],"gives":[[21,0,1,0,0],[108,0,0,1,0],[172,0,0,1,0]],"consistent":[[21,0,0,1,0]],"rest":[[21,0,0,1,0],[79,0,0,1,0]],"configuration":[[21,0,0,1,0],[57,0,0,1,0]],"drives":[[21,0,0,1,0],[81,0,0,1,0],[83,0,0,1,0],[115,0,0,1,0]],"position":[[21,0,0,1,0],[83,0,0,1,0]],"filtering":[[21,0,0,1,0],[34,0,0,1,0]],"checks":[[21,0,0,1,0],[40,0,0,1,0],[91,0,1,1,0],[131,0,0,1,0],[132,0,0,1,0],[133,0,0,1,0],[134,0,0,2,0],[135,0,0,1,0],[136,0,0,1,0],[137,0,0,1,0],[138,0,0,1,0],[139,0,0,1,0],[140,0,0,1,0],[141,0,0,1,0]],"tarball":[[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,1,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[37,0,0,1,0],[72,0,0,1,0]],"ides":[[22,0,0,2,0],[23,0,0,1,1],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,2,0],[29,0,0,1,0],[30,0,0,1,0],[68,0,0,1,0],[82,0,0,0,1],[86,0,0,0,1]],"coding":[[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,2,0],[30,0,0,1,0]],"offline":[[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[68,0,0,1,0],[82,0,0,1,0]],"publish":[[22,0,0,1,0],[23,0,0,0,4],[26,0,0,1,0],[40,0,0,1,0],[41,0,0,1,0],[42,0,0,1,0],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[71,0,0,1,0],[101,0,0,1,0],[116,0,0,1,0]],"library":[[22,0,0,1,0],[90,0,0,1,0],[93,0,1,0,0],[94,0,1,0,0],[110,0,0,1,0],[114,0,0,0,2],[122,0,0,1,0],[124,0,1,1,0],[131,0,0,2,0],[132,0,0,1,0],[133,0,0,1,0],[134,0,0,1,0],[135,0,1,1,0],[136,0,1,1,0],[137,0,0,1,0],[138,0,0,1,0],[139,0,0,1,0],[140,0,0,1,0],[141,0,0,1,0],[144,0,0,0,2],[145,0,0,0,3],[160,0,0,0,1],[161,0,0,0,1]],"want":[[22,0,0,1,0],[31,0,0,1,0],[34,0,0,1,0],[78,0,0,2,0],[89,0,0,1,0],[92,0,0,1,0],[108,0,0,2,0],[111,0,0,1,0],[127,0,0,1,0],[151,0,0,1,0],[154,0,0,2,0],[162,0,0,1,0],[173,0,0,1,0]],"hitting":[[22,0,0,1,0]],"network":[[22,0,0,1,0],[162,0,0,1,0],[178,0,0,1,0]],"prepack":[[22,0,0,1,0],[26,0,0,1,0],[71,0,0,1,0]],"include":[[22,0,0,1,0],[25,0,0,2,2],[26,0,1,0,0],[27,0,0,1,0],[54,0,0,1,0],[67,0,0,1,0],[70,0,0,3,3],[71,0,1,0,0],[72,0,0,1,0],[80,0,0,1,0],[119,0,0,3,0],[120,0,0,0,1],[152,0,0,1,0],[158,0,0,1,0],[167,0,0,1,0],[174,0,0,1,0]],"gets":[[22,0,0,1,0],[80,0,0,1,0],[81,0,0,1,0],[83,0,0,1,0],[129,0,0,1,0],[143,0,1,0,0]],"website":[[22,0,0,2,0],[29,0,0,1,0],[68,0,0,1,0],[73,0,0,1,0],[78,0,0,1,0],[86,0,0,3,1],[87,0,0,1,0],[88,0,0,1,0],[89,0,0,1,0],[107,0,0,1,0],[108,0,0,1,0],[111,0,0,1,0]],"serves":[[22,0,0,1,0],[31,0,0,1,0],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,0,1,0],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,1,0]],"bundled":[[22,0,0,1,0],[28,0,1,0,0],[68,0,0,1,0]],"everyone":[[22,0,0,1,0]],"else":[[22,0,0,1,0],[46,0,0,1,0],[158,0,0,1,0]],"itself":[[22,0,0,1,0],[26,0,0,1,0],[29,0,0,1,0],[73,0,0,1,0]],"packages":[[22,0,0,2,0],[23,0,0,0,2],[24,0,0,1,1],[25,0,0,1,1],[26,0,0,1,0],[27,0,0,0,1],[69,0,0,1,1],[70,0,0,0,2],[71,0,0,1,0],[72,0,0,0,1],[108,0,0,1,0]],"scripts":[[22,0,0,1,0],[26,0,0,0,1],[34,0,0,3,4],[71,0,0,0,1],[121,0,0,1,0],[124,0,0,1,0],[146,0,0,1,0],[148,0,0,1,0]],"flow":[[23,0,1,0,0],[32,0,1,0,0],[76,0,1,0,0]],"repo":[[23,0,0,0,1],[24,0,0,1,0],[31,0,0,1,0],[32,0,0,0,1],[33,0,0,1,0],[37,0,0,1,0],[69,0,0,1,0],[74,0,0,2,0],[75,0,0,1,0],[76,0,0,2,0],[78,0,0,2,0],[111,0,0,2,0],[114,0,0,1,0],[119,0,0,1,0],[120,0,0,0,3]],"lt":[[23,0,0,0,4]],"gt":[[23,0,0,0,4]],"consume":[[23,0,0,0,2],[116,0,0,1,0]],"node":[[23,0,0,0,1],[28,0,0,2,0],[82,0,0,1,1],[88,0,0,1,0],[92,0,0,1,0],[94,0,0,1,0],[122,0,0,2,0],[124,0,0,1,0],[135,0,0,1,0],[157,0,0,0,1],[158,0,0,1,0],[171,0,0,1,1]],"modules":[[23,0,0,0,1],[28,0,0,2,0],[82,0,0,1,1],[88,0,0,1,0],[92,0,0,1,0],[94,0,0,1,0],[122,0,0,2,0],[135,0,0,1,0],[151,0,0,1,0]],"clis":[[23,0,0,0,1],[68,0,0,1,0],[82,0,0,0,1],[86,0,0,0,1]],"root":[[24,0,0,1,0],[65,0,0,1,0],[69,0,0,1,0],[92,0,0,2,0],[94,0,0,1,0],[98,0,0,1,0],[119,0,0,4,0],[122,0,0,1,0],[126,0,0,1,0],[135,0,0,1,0],[139,0,0,1,0]],"my":[[24,0,0,1,4],[27,0,0,0,1],[33,0,0,0,1],[35,0,0,0,1],[69,0,0,1,4],[72,0,0,0,1],[104,0,0,0,2],[114,0,0,0,2],[144,0,0,0,1],[145,0,0,0,2],[160,0,0,0,1],[161,0,0,0,1],[175,0,0,0,1],[176,0,0,0,1]],"bash":[[24,0,0,0,1],[25,0,0,0,1],[27,0,0,0,1],[33,0,0,0,1],[37,0,0,0,1],[43,0,0,0,1],[44,0,0,0,1],[45,0,0,0,1],[69,0,0,0,1],[70,0,0,0,2],[72,0,0,0,1],[74,0,0,0,1],[76,0,0,0,1],[90,0,0,0,2],[92,0,0,0,1],[115,0,0,0,1],[118,0,0,0,1],[119,0,0,0,1],[122,0,0,0,1],[123,0,0,0,1],[162,0,1,0,0],[171,0,0,4,0],[178,0,1,1,0]],"base":[[24,0,0,0,1],[28,0,0,1,0],[33,0,0,0,1],[34,0,0,1,0],[57,0,0,1,0],[69,0,0,0,1],[74,0,0,0,1],[115,0,0,0,1],[119,0,0,2,0],[124,0,0,1,0],[148,0,1,1,2]],"https":[[24,0,0,0,1],[33,0,0,0,1],[37,0,0,0,1],[69,0,0,0,1],[74,0,0,0,1],[76,0,0,0,1],[115,0,0,0,1],[144,0,0,0,5],[145,0,0,0,2],[146,0,0,0,1],[148,0,0,0,1],[157,0,0,0,1],[172,0,0,0,1]],"com":[[24,0,0,0,1],[33,0,0,0,1],[37,0,0,0,1],[69,0,0,0,1],[74,0,0,0,1],[76,0,0,0,1],[115,0,0,0,1],[144,0,0,0,5],[145,0,0,0,2],[146,0,0,0,1],[148,0,0,0,1],[157,0,0,0,1],[172,0,0,0,1]],"summary":[[24,0,0,0,1],[33,0,0,0,2],[35,0,0,0,2],[43,0,0,1,0],[69,0,0,0,1],[70,0,0,0,1],[74,0,0,0,1],[75,0,0,0,1],[83,0,0,1,0],[94,0,0,1,1],[101,0,0,1,0],[104,0,0,0,2],[106,0,0,1,0],[119,0,0,2,0],[120,0,0,0,1],[136,0,0,0,1],[143,0,0,1,0],[145,0,0,0,1]],"filter":[[25,0,1,0,0],[70,0,1,0,0],[153,0,0,0,1]],"monorepo":[[25,0,0,1,0]],"shared":[[25,0,0,2,1],[70,0,0,1,1],[74,0,0,0,1],[75,0,0,0,1],[92,0,0,2,0],[94,0,0,1,0],[111,0,0,1,0],[122,0,0,3,0],[135,0,0,2,0],[154,0,0,1,0],[163,0,0,1,0],[169,0,0,1,0],[179,0,0,1,0]],"many":[[25,0,0,1,0],[44,0,0,1,0],[78,0,0,1,0],[111,0,0,1,0]],"slice":[[25,0,0,1,0],[83,0,0,1,0],[156,0,0,1,0]],"repeatable":[[25,0,0,1,0],[92,0,0,1,0],[119,0,0,1,0],[122,0,0,1,0]],"exclude":[[25,0,0,2,1],[27,0,0,1,0],[70,0,0,1,0],[119,0,0,2,0],[120,0,0,0,1]],"filters":[[25,0,0,1,0],[27,0,0,1,0],[70,0,0,1,0],[120,0,0,0,1]],"overview":[[25,0,0,1,0],[70,0,0,1,0],[75,0,0,0,2]],"too":[[25,0,0,1,0],[70,0,0,1,0]],"applied":[[25,0,0,1,0],[70,0,0,1,0],[119,0,0,1,0]],"after":[[25,0,0,1,0],[28,0,0,1,0],[38,0,0,1,0],[46,0,0,1,0],[66,0,0,1,0],[70,0,0,1,0],[82,0,0,1,0],[99,0,0,1,0],[102,0,0,1,0],[119,0,0,1,0],[129,0,0,1,0],[141,0,0,1,0],[151,0,0,1,0],[157,0,0,1,0],[172,0,0,1,0]],"c15t":[[25,0,0,0,1],[70,0,0,0,2],[76,0,0,2,0]],"internal":[[25,0,0,0,1],[41,0,0,1,0],[70,0,0,1,0],[90,0,0,1,0],[99,0,0,1,0],[109,0,0,1,0],[122,0,0,1,0]],"published":[[26,0,1,0,0],[71,0,0,1,0]],"shape":[[26,0,0,1,0],[37,0,0,1,0],[71,0,0,1,0],[76,0,0,1,0],[79,0,0,1,0],[86,0,0,1,0],[120,0,1,0,0],[136,0,1,0,0]],"lists":[[26,0,0,1,0],[143,0,0,1,0]],"regenerates":[[26,0,0,1,0],[71,0,0,1,0]],"always":[[26,0,0,1,0],[145,0,0,1,0]],"current":[[26,0,0,1,0]],"dist":[[26,0,0,0,1],[71,0,0,0,1]],"readme":[[26,0,0,0,1],[71,0,0,0,1]],"tsup":[[26,0,0,0,1],[71,0,0,0,1]],"verify":[[27,0,1,0,0],[38,0,1,0,0],[72,0,1,0,0],[76,0,0,1,0]],"publishing":[[27,0,1,0,0],[72,0,1,0,0],[108,0,0,1,0]],"pack":[[27,0,0,1,1],[72,0,0,0,1]],"dry":[[27,0,0,1,1],[72,0,0,1,1]],"something":[[27,0,0,1,0],[147,0,0,1,0]],"check":[[27,0,0,1,0],[35,0,0,1,0],[99,0,0,1,0],[106,0,0,1,0],[133,0,0,1,0]],"discover":[[28,0,1,0,0]],"sit":[[28,0,0,1,0]],"ways":[[28,0,0,1,0]],"deep":[[28,0,0,1,0],[100,0,0,1,0]],"individual":[[28,0,0,1,0],[75,0,0,1,0],[124,0,0,1,0],[154,0,0,1,0],[169,0,0,1,0]],"needed":[[28,0,0,1,0],[174,0,0,1,0]],"set":[[28,0,0,1,0],[57,0,0,2,0],[68,0,0,1,0],[113,0,0,1,0],[137,0,0,1,0]],"right":[[28,0,0,1,0],[31,0,0,1,0],[156,0,0,2,0],[159,0,0,1,0]],"generating":[[28,0,0,1,0]],"urls":[[28,0,0,1,0],[41,0,0,1,0],[91,0,0,1,0],[134,0,0,1,0],[150,0,0,1,0],[151,0,0,1,0],[158,0,0,1,0],[174,0,0,1,0]],"point":[[28,0,0,1,0],[78,0,0,1,0],[91,0,0,1,0],[105,0,0,1,0],[125,0,0,1,0],[142,0,0,1,0]],"hosted":[[28,0,0,1,0],[108,0,0,2,0],[180,0,0,1,0]],"fall":[[28,0,0,1,0]],"fetching":[[28,0,0,1,0]],"date":[[28,0,0,1,0],[97,0,0,2,0],[138,0,0,2,0]],"understand":[[29,0,0,1,0],[73,0,0,1,0],[117,0,0,1,0]],"installed":[[29,0,0,1,0],[73,0,0,1,0]],"dependency":[[29,0,0,1,0],[73,0,0,1,0],[180,0,0,1,0]],"web":[[29,0,0,1,0]],"access":[[29,0,0,1,0]],"ide":[[29,0,0,1,0]],"assistants":[[29,0,0,1,0]],"air":[[29,0,0,1,0]],"gapped":[[29,0,0,1,0]],"environments":[[29,0,0,1,0]],"goal":[[29,0,0,1,0],[60,0,0,1,0],[73,0,0,1,0]],"runs":[[31,0,0,1,0],[34,0,0,1,0],[40,0,0,1,0],[42,0,0,0,1],[84,0,1,1,0],[109,0,0,1,0],[115,0,0,1,0],[118,0,0,1,0],[121,0,0,1,0],[122,0,0,1,0],[150,0,0,1,0],[167,0,0,1,0]],"produce":[[31,0,0,1,0],[35,0,0,1,0],[100,0,0,1,0],[119,0,0,1,0]],"astro":[[31,0,0,1,0],[34,0,0,1,0],[86,0,0,1,0],[108,0,0,1,0]],"anything":[[31,0,0,1,0],[37,0,0,1,0],[86,0,0,1,0]],"handles":[[31,0,0,1,0],[111,0,0,1,0],[144,0,0,0,1]],"production":[[31,0,0,1,0],[163,0,0,1,0],[179,0,0,1,0]],"re":[[31,0,0,1,0],[122,0,0,1,0],[150,0,0,0,2],[164,0,0,1,0]],"now":[[31,0,0,1,0],[117,0,0,1,0]],"pub":[[32,0,0,0,3]],"gen":[[32,0,0,0,4]],"generated":[[32,0,0,0,1],[33,0,0,1,0],[44,0,0,1,0],[65,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[71,0,0,1,0],[72,0,0,1,0],[73,0,0,1,0],[75,0,0,1,0],[76,0,0,2,0],[77,0,1,0,0],[89,0,0,1,0],[91,0,0,1,0],[96,0,0,1,0],[100,0,0,1,0],[106,0,0,1,0],[119,0,0,1,0],[120,0,0,1,0],[143,0,1,0,0],[146,0,0,1,0],[173,0,0,1,0],[174,0,0,1,0]],"human":[[32,0,0,0,2],[82,0,0,0,2]],"off":[[33,0,1,0,0],[119,0,0,1,0],[122,0,0,1,0]],"together":[[33,0,0,1,0],[35,0,0,1,0],[99,0,0,1,0],[141,0,0,1,0]],"generates":[[33,0,0,1,0],[75,0,0,0,1],[88,0,0,1,0]],"builds":[[33,0,0,1,0],[34,0,0,1,0],[74,0,0,1,0],[88,0,0,1,0],[155,0,0,1,0]],"resolves":[[33,0,0,1,0],[88,0,0,1,0],[166,0,0,1,0]],"paths":[[33,0,0,1,0],[42,0,0,0,1],[44,0,0,1,0],[70,0,0,3,0],[76,0,0,1,0],[92,0,0,1,0],[122,0,0,1,0],[124,0,0,1,0],[158,0,0,1,0],[164,0,0,1,0],[174,0,0,1,0],[180,0,0,1,0]],"listed":[[33,0,0,1,0]],"inspected":[[33,0,0,1,0]],"detail":[[33,0,0,1,0]],"script":[[34,0,0,1,0],[121,0,0,2,0]],"stage":[[34,0,0,1,0],[35,0,0,1,0],[84,0,0,1,0],[127,0,0,1,0]],"individually":[[34,0,0,1,0]],"incremental":[[34,0,0,1,0]],"splitting":[[34,0,0,1,0],[157,0,0,1,0]],"separate":[[34,0,0,1,0],[115,0,0,1,0],[156,0,0,1,0]],"control":[[34,0,0,1,0],[121,0,0,1,0],[125,0,0,1,0]],"over":[[34,0,0,1,0],[74,0,0,1,0],[81,0,0,1,0],[82,0,0,1,0],[105,0,0,1,0],[147,0,0,1,0],[155,0,0,1,0],[162,0,0,1,0],[178,0,0,1,0]],"setup":[[34,0,0,1,0],[42,0,0,0,1],[75,0,1,0,0]],"including":[[34,0,0,1,0]],"remarkinclude":[[34,0,0,1,0],[67,0,0,1,2],[104,0,0,0,1],[126,0,0,1,2],[130,0,0,2,2],[145,0,0,0,2],[149,0,0,0,1],[152,0,1,0,1],[154,0,0,1,0],[165,0,0,0,1],[167,0,1,0,1],[169,0,0,1,0]],"partial":[[34,0,0,1,0],[67,0,0,1,0],[152,0,0,1,0],[167,0,0,1,0]],"expansion":[[34,0,0,1,0],[67,0,0,1,0]],"remarktypetabletomarkdown":[[34,0,0,1,0],[149,0,0,0,1],[150,0,0,1,1],[153,0,1,0,3],[165,0,0,0,1],[166,0,0,1,0],[168,0,1,0,0]],"basepath":[[34,0,0,1,0],[153,0,1,1,1]],"configure":[[35,0,1,0,0]],"let":[[35,0,0,1,0],[86,0,0,1,0]],"manifest":[[35,0,0,1,0],[80,0,0,0,1],[81,0,0,1,0],[146,0,0,1,0]],"catches":[[35,0,0,1,0],[41,0,1,0,0],[133,0,0,1,0],[134,0,0,1,0]],"typos":[[35,0,0,1,0]],"resolution":[[35,0,0,1,0],[146,0,0,1,0],[151,0,0,2,0],[170,0,0,1,0]],"definedocsconfig":[[35,0,0,0,2],[75,0,0,0,2]],"export":[[35,0,0,0,1],[47,0,0,1,0],[75,0,0,0,1],[150,0,0,1,0],[178,0,0,1,0]],"bullets":[[35,0,0,0,1],[75,0,0,0,1]],"beststartingpoints":[[35,0,0,0,1],[75,0,0,0,1]],"urlpath":[[35,0,0,0,2],[75,0,0,0,1],[104,0,0,0,1],[146,0,0,0,2]],"quickstart":[[35,0,0,0,1],[62,0,0,0,1],[85,0,0,1,0],[89,0,0,1,0],[104,0,0,0,1],[112,1,1,0,0],[113,1,1,0,0],[114,1,1,0,0],[115,1,1,0,0],[116,1,1,0,0],[117,1,1,0,0],[127,0,0,0,1],[128,0,0,0,2],[144,0,0,0,4],[159,0,0,0,1],[174,0,0,0,2]],"started":[[35,0,0,0,2],[114,0,0,0,1],[116,0,0,0,1],[120,0,0,0,2],[144,0,0,0,1]],"guides":[[35,0,0,0,2],[62,0,0,0,1],[75,0,0,0,4],[104,0,0,0,6],[147,0,0,1,0],[159,0,0,0,1],[174,0,0,0,1]],"drop":[[36,0,0,1,0]],"front":[[36,0,0,1,0]],"fetch":[[36,0,0,1,0],[88,0,0,1,0]],"visit":[[36,0,0,1,0]],"lines":[[36,0,0,1,0]],"browsers":[[36,0,0,1,0]],"send":[[36,0,0,2,0]],"logic":[[36,0,0,1,0],[146,0,0,1,0]],"cloudflare":[[36,0,0,1,0],[158,0,0,1,0],[161,0,0,1,2],[162,0,0,1,0],[163,0,0,1,0],[171,0,0,2,1],[177,0,0,1,1],[178,0,0,1,0],[179,0,0,1,0],[180,0,0,1,0]],"worker":[[36,0,0,1,0]],"function":[[36,0,0,0,1],[126,0,0,1,0],[156,0,0,1,0]],"rewritetomarkdown":[[36,0,0,0,1]],"return":[[36,0,0,0,4]],"null":[[36,0,0,0,3]],"includes":[[36,0,0,0,3],[43,0,0,1,0],[45,0,0,1,0],[70,0,0,1,0],[71,0,0,1,0],[130,0,0,1,0],[166,0,0,1,0],[179,0,0,1,0]],"foo":[[36,0,0,0,2],[83,0,0,2,0]],"replace":[[36,0,0,0,1],[140,0,0,1,0],[150,0,0,1,0]],"remote":[[37,0,1,0,0]],"malformed":[[37,0,0,1,0]],"format":[[37,0,0,1,1],[42,0,0,1,1],[43,0,0,2,1],[69,0,0,0,1],[70,0,0,0,2],[71,0,0,0,1],[72,0,0,0,1],[74,0,0,0,1],[76,0,0,1,1],[90,0,0,0,1],[92,0,0,2,0],[99,0,0,2,0],[119,0,0,2,0],[122,0,0,2,0],[141,0,0,2,0],[156,0,0,1,0],[172,0,0,1,0]],"github":[[37,0,0,1,2],[42,0,1,1,1],[43,0,0,1,0],[76,0,0,0,1],[92,0,0,1,0],[99,0,0,2,0],[122,0,0,1,0],[141,0,0,2,0]],"inline":[[37,0,0,1,0],[42,0,0,1,0],[118,0,0,1,0]],"annotations":[[37,0,0,1,0],[42,0,0,1,0],[43,0,0,1,0],[99,0,0,1,0]],"pr":[[37,0,0,1,0],[42,0,0,1,0],[43,0,0,1,0],[90,0,0,1,0]],"automation":[[37,0,0,1,0],[76,0,0,1,0],[99,0,0,1,0]],"stats":[[37,0,0,1,0],[76,0,0,1,0],[120,0,0,0,1]],"we":[[37,0,0,1,0],[76,0,0,1,0]],"expect":[[37,0,0,1,0],[76,0,0,1,0]],"orgs":[[37,0,0,1,0]],"hosting":[[37,0,0,1,0],[110,0,0,1,0]],"multiple":[[37,0,0,1,0],[70,0,0,1,0],[105,0,0,1,0]],"repos":[[37,0,0,1,0],[74,0,0,2,0],[76,0,0,1,0],[78,0,0,1,0],[108,0,0,1,0],[111,0,0,1,0]],"documents":[[37,0,0,1,0],[74,0,0,1,0],[111,0,0,1,0],[172,0,0,1,0]],"pulls":[[37,0,0,1,0]],"clone":[[37,0,0,0,1],[74,0,0,1,0],[76,0,0,2,1],[78,0,0,1,0]],"depth":[[37,0,0,0,1],[76,0,0,0,1]],"acme":[[37,0,0,0,1],[76,0,0,0,1]],"clean":[[38,0,0,1,0],[75,0,0,0,1],[86,0,0,1,1],[125,0,0,1,0],[129,0,0,1,0],[150,0,0,0,1],[151,0,0,1,0]],"home":[[38,0,0,1,0]],"mention":[[38,0,0,1,0]],"then":[[38,0,0,1,0],[67,0,0,1,0],[91,0,0,1,0],[149,0,0,1,0],[156,0,0,1,0],[164,0,0,1,0],[171,0,0,1,0],[172,0,0,1,0],[173,0,0,1,0],[174,0,0,1,0],[175,0,0,1,0],[176,0,0,1,0],[177,0,0,1,0],[178,0,0,1,0],[179,0,0,1,0],[180,0,0,2,0]],"server":[[38,0,0,1,0]],"curl":[[38,0,0,1,0]],"http":[[38,0,0,1,0],[82,0,0,1,0],[86,0,0,0,1],[88,0,0,1,0]],"localhost":[[38,0,0,1,0]],"wired":[[38,0,0,1,0]],"validate":[[40,1,1,0,0],[41,1,1,0,0],[42,1,1,0,0],[43,1,1,0,0],[44,1,1,0,0],[45,1,1,0,0],[46,1,1,1,0],[84,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0],[94,0,0,1,0],[95,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[122,0,0,1,0],[127,0,0,1,0],[141,0,0,1,0]],"issues":[[40,0,0,1,0],[41,0,0,1,0],[42,0,0,1,0],[43,0,0,1,0],[44,0,0,2,0],[45,0,0,1,0],[46,0,0,1,0],[131,0,0,1,0]],"prs":[[40,0,0,2,0],[41,0,0,1,0],[42,0,0,1,0],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[131,0,0,1,0]],"exits":[[40,0,0,1,0]],"zero":[[40,0,0,1,0],[87,0,0,1,0],[92,0,0,1,0],[108,0,0,1,0],[122,0,0,1,0]],"errors":[[40,0,0,1,0],[42,0,0,1,0],[92,0,0,3,0],[94,0,0,0,1],[99,0,0,2,0],[120,0,0,1,0],[122,0,0,3,0],[136,0,0,0,1],[141,0,0,1,0],[180,0,0,1,0]],"fast":[[40,0,0,1,0],[141,0,0,1,0],[164,0,0,1,0]],"would":[[40,0,0,1,0]],"otherwise":[[40,0,0,1,0]],"blow":[[40,0,0,1,0]],"later":[[40,0,0,1,0]],"typed":[[41,0,0,1,0],[46,0,0,1,0]],"rule":[[41,0,0,2,0],[94,0,0,1,1],[95,0,1,1,0],[122,0,0,1,0],[133,0,0,1,0],[134,0,0,1,0],[136,0,0,1,1]],"pointing":[[41,0,0,1,0]],"routes":[[41,0,0,1,0]],"placeholders":[[41,0,0,1,0],[91,0,0,1,0],[149,0,0,1,0],[150,0,0,1,0],[151,0,0,1,0],[166,0,0,1,0]],"left":[[41,0,0,1,0]],"actions":[[42,0,1,0,1],[99,0,0,1,0],[141,0,0,1,0]],"upgrades":[[42,0,0,1,0],[133,0,0,1,0]],"strict":[[42,0,0,1,0],[140,0,0,1,0]],"max":[[42,0,0,1,1],[44,0,0,0,1],[90,0,0,0,1],[92,0,0,2,0],[122,0,0,1,0]],"makes":[[42,0,0,1,0]],"any":[[42,0,0,1,0],[43,0,0,1,0],[108,0,0,1,0],[119,0,0,1,0],[122,0,0,1,0],[141,0,0,1,0],[144,0,0,0,1],[152,0,0,1,0],[154,0,0,1,0],[160,0,0,1,0]],"remaining":[[42,0,0,1,0]],"job":[[42,0,0,1,0],[45,0,0,1,0],[108,0,0,1,0]],"pull":[[42,0,0,0,1]],"request":[[42,0,0,0,1],[83,0,0,1,0],[163,0,0,1,0],[171,0,0,1,0],[179,0,0,1,0],[180,0,0,1,0]],"jobs":[[42,0,0,0,1]],"ubuntu":[[42,0,0,0,1]],"latest":[[42,0,0,0,1]],"checkout":[[42,0,0,0,1]],"v4":[[42,0,0,0,1]],"oven":[[42,0,0,0,1]],"sh":[[42,0,0,0,1],[44,0,0,0,1]],"v2":[[42,0,0,0,1],[172,0,0,1,0]],"providers":[[43,0,1,0,0]],"speak":[[43,0,0,1,0]],"counts":[[43,0,0,1,0],[94,0,0,1,0],[180,0,0,1,0]],"pipe":[[43,0,0,1,0],[86,0,0,0,6],[140,0,0,0,1]],"provider":[[43,0,0,1,0],[155,0,0,1,0],[161,0,1,1,0],[171,0,0,2,0],[177,0,0,1,1],[178,0,0,1,0]],"reporter":[[43,0,0,1,0]],"post":[[43,0,0,1,0]],"comment":[[43,0,0,1,0]],"upload":[[43,0,0,1,0]],"artifact":[[43,0,0,1,0],[81,0,0,1,0],[89,0,0,1,0]],"report":[[43,0,0,0,1],[92,0,0,3,0],[122,0,0,2,0]],"local":[[44,0,1,0,0],[74,0,0,1,0],[78,0,0,1,0],[119,0,0,1,0],[164,0,0,1,0],[180,0,0,1,0]],"pre":[[44,0,1,1,0],[162,0,0,1,0]],"push":[[44,0,1,1,0]],"hook":[[44,0,1,1,0]],"catch":[[44,0,0,1,0],[105,0,0,1,0],[132,0,0,1,0],[147,0,0,1,0]],"running":[[44,0,0,1,0],[87,0,0,1,0]],"husky":[[44,0,0,1,0]],"second":[[44,0,0,1,0]],"limiting":[[44,0,0,1,0],[171,0,0,1,0],[179,0,0,1,0]],"scan":[[44,0,0,1,0],[92,0,0,2,0]],"changed":[[44,0,0,1,0]],"repeated":[[44,0,0,1,0]],"ignore":[[44,0,0,1,0],[92,0,0,2,0],[94,0,0,1,0],[122,0,0,3,0],[135,0,0,2,0]],"globs":[[44,0,0,1,0]],"skip":[[44,0,0,1,0],[78,0,0,1,0],[92,0,0,1,0],[122,0,0,1,0],[154,0,0,1,0]],"stale":[[44,0,0,1,0],[46,0,0,1,0],[141,0,0,1,0]],"usr":[[44,0,0,0,1]],"bin":[[44,0,0,0,1]],"env":[[44,0,0,0,1],[148,0,0,0,3],[161,0,0,1,1],[176,0,0,0,1],[177,0,0,0,1]],"noisily":[[45,0,0,1,0]],"broken":[[45,0,0,1,0],[46,0,0,1,0],[84,0,0,1,0],[91,0,0,2,0]],"specifically":[[45,0,0,1,0]],"problems":[[45,0,0,1,0]],"line":[[45,0,0,1,0]],"much":[[45,0,0,1,0]],"easier":[[45,0,0,1,0]],"debug":[[45,0,0,1,0]],"fix":[[46,0,1,1,0],[154,0,0,1,0]],"lot":[[46,0,0,1,0]],"bug":[[46,0,0,2,0],[84,0,0,1,0],[141,0,0,1,0]],"usually":[[46,0,0,1,0],[65,0,0,1,0],[99,0,0,1,0],[113,0,0,1,0],[126,0,0,1,0],[141,0,0,1,0],[154,0,0,1,0],[170,0,0,1,0]],"move":[[46,0,0,1,0],[99,0,0,1,0],[141,0,0,1,0]],"last":[[46,0,0,1,0],[151,0,0,1,0]],"either":[[46,0,0,1,0],[82,0,0,1,0]],"delete":[[46,0,0,1,0]],"define":[[47,0,0,1,0],[48,0,0,2,0],[49,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[56,0,0,1,0],[57,0,0,1,0],[58,0,0,1,0],[59,0,0,1,0],[60,0,0,1,0]],"owned":[[47,0,0,1,0],[48,0,1,1,0],[49,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[56,0,0,1,0],[57,0,0,1,0],[58,0,0,2,0],[59,0,0,1,0],[60,0,0,1,0],[76,0,0,1,0]],"prebuilt":[[47,0,0,1,0],[110,0,0,1,0]],"consuming":[[47,0,0,1,0]],"assumes":[[47,0,0,1,0]],"those":[[47,0,0,1,0],[70,0,0,1,0],[106,0,0,1,0],[110,0,0,1,0],[147,0,0,1,0]],"indexes":[[47,0,0,1,0],[100,0,0,1,0]],"validation":[[47,0,0,1,0],[86,0,0,1,0],[91,0,0,2,0],[95,0,0,1,0],[111,0,0,1,0]],"adapter":[[48,0,1,1,0],[161,0,0,1,0],[162,0,0,1,0],[177,0,0,1,3]],"own":[[48,0,0,1,0],[68,0,0,1,0],[71,0,0,1,0],[75,0,0,1,0],[78,0,0,1,0],[83,0,0,1,0],[86,0,0,1,0],[108,0,0,1,0],[110,0,1,0,0],[176,0,0,1,0]],"following":[[48,0,0,1,0]],"plugins":[[48,0,0,1,0],[65,0,0,1,0],[80,0,0,1,0],[124,0,0,1,0],[130,0,1,1,0],[149,1,1,0,0],[150,1,1,0,0],[151,1,1,0,0],[152,1,2,0,0],[153,1,2,0,0],[154,1,1,1,0],[165,0,0,1,0],[166,0,0,1,0],[167,0,1,2,0],[168,0,1,1,0],[169,0,0,2,0],[170,0,0,3,0]],"handled":[[48,0,0,1,0]],"describes":[[49,0,0,1,0],[75,0,0,1,0]],"compare":[[49,0,0,1,0]],"against":[[49,0,0,1,0],[76,0,0,2,0],[112,0,0,1,0],[113,0,0,1,0],[114,0,0,1,0],[115,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0],[122,0,0,1,0],[135,0,0,1,0]],"layout":[[51,0,0,1,0],[107,0,0,1,0]],"primitive":[[51,0,0,1,0]],"affordance":[[53,0,0,1,0]],"grouping":[[53,0,0,1,0],[84,0,0,1,0]],"expands":[[54,0,0,1,0],[152,0,0,1,0]],"such":[[54,0,0,1,0],[91,0,0,1,0],[95,0,0,1,0],[179,0,0,1,0]],"pm":[[54,0,0,1,0]],"templates":[[54,0,0,1,0]],"choose":[[54,0,0,1,0],[87,0,1,0,0],[106,0,0,1,0]],"initial":[[54,0,0,1,0]],"common":[[56,0,0,1,0],[163,0,0,1,0],[179,0,0,1,0]],"represent":[[56,0,0,1,0]],"types":[[57,0,0,1,0]],"most":[[57,0,0,1,0],[67,0,0,1,0],[87,0,0,1,0],[130,0,0,1,0],[147,0,0,1,0],[180,0,0,1,0]],"sensitive":[[57,0,0,1,0]],"resolve":[[57,0,0,1,0],[84,0,0,1,0],[115,0,0,1,0],[153,0,0,1,0]],"project":[[57,0,0,1,0]],"pair":[[57,0,0,1,0],[67,0,0,1,0],[111,0,0,1,0],[130,0,0,1,0]],"matching":[[57,0,0,1,0],[161,0,0,1,0],[164,0,0,1,0],[178,0,0,1,0]],"filesystem":[[58,0,0,1,0],[159,0,0,1,0],[162,0,0,2,0],[174,0,0,1,0],[178,0,0,3,0]],"sourcefiles":[[58,0,0,1,0]],"show":[[58,0,0,1,0],[123,0,0,1,0]],"addition":[[58,0,0,1,0]],"primary":[[58,0,0,1,0]],"snippet":[[58,0,0,1,0]],"zoom":[[59,0,0,1,0]],"pan":[[59,0,0,1,0]],"download":[[59,0,0,1,0]],"controls":[[59,0,0,1,0]],"guidance":[[60,0,1,0,0],[99,0,1,0,0],[106,0,1,0,0],[141,0,1,0,0],[170,0,1,0,0]],"depends":[[60,0,0,1,0],[84,0,0,1,0]],"instead":[[60,0,0,1,0],[73,0,0,1,0],[162,0,0,1,0],[178,0,0,1,0]],"reimplementing":[[60,0,0,1,0]],"entrypoint":[[61,0,0,1,0],[178,0,0,1,0]],"provides":[[61,0,0,1,0],[110,0,0,1,0]],"main":[[61,0,0,1,0],[62,0,1,0,0],[63,0,1,0,0],[64,0,1,0,0],[108,0,0,1,0],[123,0,0,0,1]],"apis":[[61,0,0,1,0],[105,0,0,1,0],[125,0,0,2,0],[126,0,0,1,0],[127,0,0,1,0],[128,0,0,1,0],[129,0,0,1,0],[130,0,0,1,0],[144,0,0,0,1],[147,0,0,1,0],[158,0,0,1,0],[180,0,0,1,0]],"convertmdxtomarkdown":[[61,0,0,1,1],[62,0,0,1,1],[124,0,0,1,0],[125,0,0,0,1],[127,0,1,0,1]],"writemdxfileasmarkdown":[[61,0,0,1,1],[63,0,0,1,0],[124,0,0,1,0],[125,0,0,0,1],[128,0,1,0,1]],"convertallmdx":[[61,0,0,1,1],[64,0,0,1,1],[103,0,0,1,0],[104,0,0,0,1],[124,0,0,1,0],[125,0,0,1,1],[126,0,1,0,1],[130,0,0,1,0],[145,0,0,0,2]],"cases":[[62,0,1,0,0],[63,0,1,0,0],[64,0,1,0,0]],"memory":[[62,0,1,0,0],[125,0,0,1,0],[127,0,0,1,0],[163,0,0,1,0],[164,0,0,1,0],[179,0,0,1,0],[180,0,0,1,0]],"plus":[[62,0,0,1,0],[81,0,0,1,0],[82,0,0,1,0],[88,0,0,1,0],[94,0,0,1,0],[101,0,0,1,0],[109,0,0,1,0],[113,0,0,1,0],[115,0,0,1,0],[127,0,0,1,0],[150,0,0,1,0],[160,0,0,1,0]],"result":[[62,0,0,0,1],[76,0,0,1,0],[93,0,0,0,1],[94,0,0,1,0],[119,0,0,1,0],[127,0,0,0,3],[135,0,0,0,1],[136,0,1,0,0],[146,0,0,1,0],[157,0,0,1,0],[159,0,0,1,0],[174,0,0,1,0]],"await":[[62,0,0,0,1],[64,0,0,0,1],[93,0,0,0,1],[104,0,0,0,3],[126,0,0,0,1],[127,0,0,0,1],[128,0,0,0,1],[135,0,0,0,1],[140,0,0,0,1],[145,0,0,0,3],[146,0,0,0,1],[157,0,0,0,1],[162,0,0,0,1],[172,0,0,0,1],[178,0,0,0,1]],"defaultremarkplugins":[[62,0,0,0,1],[64,0,0,0,1],[65,0,0,1,0],[67,0,0,0,2],[104,0,0,0,1],[124,0,0,1,0],[126,0,0,1,2],[127,0,0,0,1],[128,0,0,0,1],[130,0,0,0,2],[145,0,0,0,2],[149,0,0,0,1],[150,0,0,1,0],[152,0,0,0,1],[153,0,0,0,2],[154,0,0,1,0],[165,0,0,0,1],[166,0,0,1,0],[167,0,0,0,1],[169,0,0,1,0]],"disk":[[63,0,1,0,0],[127,0,0,1,0]],"entire":[[64,0,1,0,0],[159,0,0,1,0]],"batch":[[64,0,0,1,0],[126,0,0,1,0]],"srcdir":[[64,0,0,0,1],[65,0,0,1,0],[92,0,0,1,1],[93,0,0,0,1],[94,0,0,2,0],[103,0,0,1,0],[104,0,0,0,2],[120,0,0,0,1],[122,0,0,2,1],[126,0,0,2,1],[135,0,0,3,1],[140,0,0,0,1],[145,0,0,0,2],[146,0,0,0,1]],"outdir":[[64,0,0,0,1],[65,0,0,1,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,0,3],[120,0,0,0,1],[126,0,0,1,1],[145,0,0,1,3],[157,0,0,1,3],[172,0,0,1,3]],"remarkplugins":[[64,0,0,0,1],[65,0,0,1,0],[67,0,0,0,1],[104,0,0,0,1],[126,0,0,1,1],[128,0,0,0,1],[130,0,0,0,1],[145,0,0,0,1],[152,0,0,0,1],[153,0,0,0,1],[167,0,0,0,1]],"enrichfrontmatterfromgit":[[64,0,0,0,1],[65,0,0,1,0],[96,0,0,1,0],[126,0,0,1,1],[127,0,0,0,1]],"important":[[65,0,1,0,0]],"directory":[[65,0,0,1,0],[69,0,0,1,0],[76,0,0,1,0],[78,0,0,1,0],[90,0,0,1,0],[92,0,0,2,0],[119,0,0,1,0],[126,0,0,2,0]],"containing":[[65,0,0,1,0],[94,0,0,1,0],[119,0,0,1,0]],"destination":[[65,0,0,1,0],[126,0,0,1,0]],"additional":[[65,0,0,1,0]],"unified":[[65,0,0,1,0]],"adds":[[65,0,0,1,0],[126,0,0,1,0]],"derived":[[65,0,0,1,0],[142,0,0,1,0]],"metadata":[[65,0,0,1,0],[75,0,0,2,0],[76,0,0,1,0],[90,0,0,1,0],[109,0,0,1,0],[161,0,0,1,0],[172,0,0,1,0],[174,0,0,1,0],[176,0,0,1,0]],"available":[[65,0,0,1,0],[124,0,0,1,0]],"preserved":[[66,0,0,1,0],[129,0,0,1,0]],"present":[[66,0,0,1,0],[94,0,0,1,0]],"sometimes":[[66,0,0,1,0],[129,0,0,1,0]],"tables":[[66,0,0,1,0],[129,0,0,1,0]],"blocks":[[66,0,0,1,0],[129,0,0,2,0],[133,0,0,1,0],[150,0,0,1,0]],"compacted":[[66,0,0,1,0],[129,0,0,1,0]],"cleaner":[[66,0,0,1,0]],"consumption":[[66,0,0,1,0]],"concurrent":[[66,0,0,1,0],[126,0,0,1,0],[129,0,0,1,0]],"optimized":[[66,0,0,1,0]],"large":[[66,0,0,1,0],[126,0,0,1,0],[143,0,0,1,0],[180,0,0,1,0]],"pairing":[[67,0,1,0,0],[130,0,1,0,0]],"rely":[[67,0,0,1,0]],"pattern":[[68,0,0,1,0],[74,0,0,1,0],[146,0,0,1,0]],"carry":[[68,0,0,1,0]],"loading":[[68,0,0,1,0],[156,0,0,1,0]],"artifacts":[[69,0,0,1,0],[76,0,0,1,0],[79,0,0,1,0],[80,0,0,1,0],[81,0,1,1,0],[82,0,0,1,5],[83,0,0,1,0],[84,0,0,1,0],[85,0,0,1,0],[99,0,0,1,0],[107,0,0,1,0],[112,0,0,1,0],[113,0,0,1,0],[114,0,0,1,0],[115,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0],[119,0,0,1,0]],"belong":[[70,0,0,1,0],[170,0,0,1,0]],"more":[[70,0,0,1,0]],"than":[[70,0,0,1,0],[92,0,0,1,0],[170,0,0,1,0]],"remove":[[70,0,0,1,0]],"private":[[70,0,0,1,0],[76,0,0,1,0],[111,0,0,1,0]],"bindings":[[70,0,0,0,1]],"part":[[71,0,0,1,0]],"generator":[[72,0,0,1,0],[75,0,0,1,0],[156,0,0,1,0],[157,0,0,1,0],[171,0,0,1,0],[172,0,0,1,0]],"power":[[73,0,0,1,0]],"building":[[74,0,0,1,0],[75,0,0,1,1],[76,0,0,1,0],[77,0,0,1,0],[78,0,0,1,0]],"separately":[[74,0,0,1,0],[81,0,0,1,0],[161,0,0,2,0],[172,0,0,1,0],[176,0,0,1,0]],"their":[[74,0,0,1,0],[75,0,0,1,0]],"folders":[[74,0,0,1,0]],"directly":[[74,0,0,1,0],[82,0,0,1,0],[121,0,0,1,0],[125,0,0,1,0],[168,0,0,1,0]],"linting":[[74,0,0,0,1],[75,0,0,0,1],[91,0,0,1,0],[134,0,0,1,0]],"used":[[75,0,0,1,0],[148,0,0,1,0],[168,0,0,1,0]],"structure":[[75,0,0,1,0],[81,0,0,1,0],[91,0,0,1,0],[121,0,0,1,0],[126,0,0,1,0]],"join":[[75,0,0,1,0]],"duplicate":[[75,0,0,1,0]],"membership":[[75,0,0,1,0]],"organize":[[75,0,0,1,0]],"heavy":[[75,0,0,0,1],[166,0,0,1,0]],"scope":[[75,0,0,0,1]],"selection":[[75,0,0,0,1],[154,0,1,0,0],[169,0,1,0,0]],"practical":[[75,0,0,0,1],[141,0,1,0,0]],"temporary":[[76,0,0,1,0]],"template":[[76,0,0,1,0],[141,0,0,1,0],[151,0,0,1,0]],"workflows":[[76,0,0,1,0],[90,0,0,1,0]],"prints":[[76,0,0,1,0],[119,0,0,1,0],[120,0,0,1,0]],"inferred":[[76,0,0,1,0],[121,0,0,2,0],[129,0,0,1,0]],"scraping":[[76,0,0,1,0]],"mental":[[79,0,0,1,0],[80,0,0,1,0],[81,0,0,1,0],[82,0,0,1,0],[83,0,0,1,0],[84,0,0,1,0],[85,0,0,1,0],[89,0,0,1,0],[144,0,0,0,2]],"model":[[79,0,0,1,0],[80,0,0,1,0],[81,0,0,1,0],[82,0,0,1,0],[83,0,0,1,0],[84,0,0,1,0],[85,0,0,1,0],[89,0,0,1,0],[101,0,1,0,0],[102,0,1,0,0],[144,0,0,0,2],[160,0,0,2,0],[161,0,0,1,2],[175,0,0,2,0],[176,0,0,0,2],[177,0,0,0,1]],"four":[[79,0,0,1,0],[80,0,0,1,0],[81,0,1,2,0],[82,0,0,1,0],[83,0,0,1,0],[84,0,0,1,0],[85,0,0,1,0],[112,0,0,1,0],[113,0,0,1,0],[114,0,0,1,0],[115,0,0,2,0],[116,0,0,1,0],[117,0,0,2,0]],"takes":[[79,0,0,1,0],[87,0,0,1,0]],"input":[[79,0,0,1,0]],"folder":[[79,0,0,1,0],[106,0,0,1,0],[112,0,0,2,0],[113,0,0,1,0],[114,0,0,1,0],[115,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0],[119,0,0,2,0]],"take":[[79,0,0,1,0],[86,0,0,1,0]],"piece":[[79,0,0,1,0]],"make":[[79,0,0,1,0],[164,0,0,1,0]],"sense":[[79,0,0,1,0]],"turns":[[80,0,0,1,0],[149,0,0,1,0],[160,0,0,1,0]],"sequence":[[80,0,0,1,0],[104,0,1,0,0],[145,0,1,0,0]],"ranks":[[80,0,0,1,0]],"tb":[[80,0,0,0,1],[150,0,0,0,1]],"fm":[[80,0,0,0,4]],"parser":[[80,0,0,0,1]],"strip":[[80,0,0,0,1],[150,0,0,2,0]],"idx":[[80,0,0,0,2],[86,0,0,0,3]],"kinds":[[81,0,0,1,0]],"derive":[[81,0,0,1,0]],"there":[[81,0,0,1,0],[129,0,0,1,0]],"manual":[[81,0,0,1,0]],"duplication":[[81,0,0,1,0]],"served":[[81,0,0,1,0]],"via":[[81,0,0,1,0],[82,0,0,1,0],[86,0,0,0,1],[88,0,0,1,0],[109,0,0,1,0],[122,0,0,1,0],[125,0,0,1,0],[155,0,0,1,0],[161,0,1,0,0]],"consumed":[[81,0,0,1,0]],"bm25":[[81,0,0,1,0],[115,0,0,1,0],[116,0,0,0,1],[156,0,0,1,0],[173,0,0,1,0]],"ranked":[[81,0,0,1,0]],"inverted":[[81,0,0,1,0]],"stored":[[81,0,0,1,0]],"mapping":[[81,0,0,1,0],[177,0,0,1,0]],"locations":[[81,0,0,1,0]],"store":[[82,0,0,1,0],[115,0,0,1,0],[116,0,0,0,1],[156,0,0,1,0],[163,0,0,1,0],[179,0,0,1,0]],"lexical":[[82,0,0,1,0],[164,0,0,1,0],[180,0,0,1,0]],"results":[[82,0,0,1,0],[156,0,0,1,0],[158,0,0,1,1],[173,0,0,0,1]],"feeds":[[82,0,0,1,0]],"grounded":[[82,0,0,1,0],[109,0,0,1,0],[155,0,0,2,0],[156,0,0,1,0],[157,0,0,1,0],[158,0,0,1,0],[159,0,0,1,0],[160,0,1,1,0],[161,0,0,1,0],[162,0,0,1,0],[163,0,0,1,0],[164,0,0,1,0],[171,0,0,1,0],[172,0,0,1,0],[173,0,0,1,0],[174,0,0,1,0],[175,0,0,1,0],[176,0,0,1,0],[177,0,0,1,0],[178,0,0,1,0],[179,0,0,1,0],[180,0,0,1,0]],"ai":[[82,0,0,1,1],[86,0,0,0,1],[108,0,0,1,0],[161,0,0,1,5],[171,0,0,6,0],[172,0,0,2,0],[173,0,0,1,0],[174,0,0,1,0],[175,0,0,1,0],[176,0,2,2,0],[177,0,0,1,1],[178,0,0,1,0],[179,0,0,1,0],[180,0,0,1,0]],"answers":[[82,0,0,1,1],[86,0,0,0,1],[156,0,0,1,0],[160,0,1,0,0],[171,0,0,1,0],[172,0,0,1,0],[173,0,0,1,0],[174,0,0,1,0],[175,0,0,1,0],[176,0,0,1,0],[177,0,0,1,0],[178,0,0,1,0],[179,0,0,1,0],[180,0,0,1,0]],"pkg":[[82,0,0,0,1]],"vocabulary":[[83,0,1,0,0],[156,0,1,0,0],[164,0,0,1,0],[180,0,0,1,0]],"few":[[83,0,0,1,0]],"terms":[[83,0,0,1,0]],"will":[[83,0,0,1,0],[116,0,0,1,0],[147,0,0,1,0]],"throughout":[[83,0,0,1,0]],"verb":[[83,0,0,1,0]],"declaring":[[83,0,0,1,0]],"which":[[83,0,0,1,0],[115,0,0,1,0],[147,0,0,1,0],[168,0,0,1,0],[178,0,0,1,0]],"belongs":[[83,0,0,1,0]],"noun":[[83,0,0,3,0]],"chunk":[[83,0,0,1,0],[116,0,0,0,1],[156,0,0,4,0],[159,0,0,0,1],[174,0,0,1,1],[180,0,0,1,0]],"scores":[[83,0,0,1,0]],"independently":[[83,0,0,1,0]],"weigh":[[83,0,0,1,0],[156,0,0,1,0]],"rewrites":[[83,0,0,1,0]],"advertises":[[83,0,0,1,0]],"fixed":[[84,0,0,1,0]],"previous":[[84,0,0,1,0]],"through":[[84,0,0,1,0],[91,0,0,1,0],[115,0,0,1,0],[134,0,0,1,0],[178,0,0,1,0]],"write":[[84,0,0,1,0],[86,0,0,1,0],[88,0,0,1,0],[106,0,0,1,0],[128,0,0,1,0],[146,0,0,1,1],[147,0,0,1,0]],"matches":[[84,0,0,1,0],[87,0,0,1,0],[164,0,0,1,0],[180,0,0,1,0]],"known":[[84,0,0,1,0]],"chunking":[[84,0,0,1,0]],"finds":[[84,0,0,1,0]],"design":[[84,0,0,1,0],[105,0,1,0,0],[111,0,0,1,0],[147,0,1,0,0]],"problem":[[84,0,0,1,0],[170,0,0,1,0]],"bring":[[86,0,0,1,0]],"handle":[[86,0,0,1,0]],"outputs":[[86,0,0,1,0],[111,0,0,1,0],[142,0,0,1,0]],"teams":[[87,0,0,1,0]],"arrive":[[87,0,0,1,0]],"reasons":[[87,0,0,1,0]],"pick":[[87,0,0,1,0]],"journey":[[87,0,0,1,0]],"yours":[[87,0,0,1,0]],"familiar":[[88,0,0,1,0]],"others":[[88,0,0,1,0]],"load":[[88,0,0,1,0],[147,0,0,2,0],[157,0,0,2,0]],"five":[[89,0,0,1,0],[112,0,0,1,0],[144,0,0,0,1]],"minutes":[[89,0,0,1,0],[112,0,0,1,0]],"comparing":[[89,0,0,1,0]],"methodology":[[89,0,0,1,0],[107,1,1,0,0],[108,1,1,0,0],[109,1,1,0,0],[110,1,1,0,0],[111,1,1,0,0]],"differs":[[89,0,0,1,0],[107,0,0,1,0],[108,0,0,1,0],[109,0,0,1,0],[110,0,0,1,0],[111,0,0,1,0]],"fumadocs":[[89,0,0,1,0],[107,0,0,1,0],[108,0,0,2,0],[109,0,0,1,0],[110,0,0,1,0],[111,0,0,2,0]],"starlight":[[89,0,0,1,0],[107,0,0,1,0],[108,0,0,2,0],[109,0,0,1,0],[110,0,0,1,0],[111,0,0,2,0]],"mintlify":[[89,0,0,1,0],[107,0,0,1,0],[108,0,0,2,0],[109,0,0,1,0],[110,0,0,1,0],[111,0,0,1,0]],"lintdocs":[[90,0,0,1,1],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,1,1],[94,0,0,1,0],[95,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[124,0,0,1,0],[131,0,0,0,1],[135,0,0,0,2],[140,0,0,0,2]],"validates":[[90,0,0,1,0],[118,0,0,1,0],[131,0,0,1,0]],"changes":[[90,0,0,1,0]],"changelog":[[91,0,0,1,0],[92,0,0,2,0],[94,0,0,2,1],[95,0,0,1,0],[97,0,1,0,0],[122,0,0,2,0],[135,0,0,2,0],[136,0,0,0,1],[138,0,1,0,0]],"configured":[[91,0,0,1,0]],"linking":[[91,0,0,1,0]],"option":[[92,0,0,1,0],[94,0,0,1,0],[126,0,0,1,0],[135,0,0,1,0]],"defaults":[[92,0,0,2,0],[94,0,0,2,0],[122,0,0,3,0],[130,0,0,1,0],[135,0,0,1,0],[140,0,0,1,0]],"positional":[[92,0,0,2,0],[122,0,0,1,0]],"provided":[[92,0,0,1,0],[101,0,0,1,0]],"dir":[[92,0,0,2,0],[119,0,0,5,0],[122,0,0,2,0]],"argument":[[92,0,0,1,0]],"subdirectory":[[92,0,0,1,0],[94,0,0,1,0],[122,0,0,1,0],[135,0,0,1,0]],"fmt":[[92,0,0,1,0],[119,0,0,1,0],[122,0,0,1,0]],"pretty":[[92,0,0,2,0],[122,0,0,2,0]],"glob":[[92,0,0,3,0],[94,0,0,1,0],[119,0,0,4,0],[122,0,0,2,0],[135,0,0,1,0]],"relative":[[92,0,0,1,0],[94,0,0,1,0],[119,0,0,3,0],[135,0,0,1,0],[153,0,0,1,0]],"exit":[[92,0,0,4,0],[118,0,0,1,0],[119,0,0,2,0],[120,0,0,1,0],[121,0,0,1,0],[122,0,0,3,0],[123,0,0,1,0],[124,0,0,1,0],[146,0,0,0,1]],"count":[[92,0,0,1,0],[122,0,0,1,0]],"greater":[[92,0,0,1,0]],"help":[[92,0,0,1,0],[106,0,0,1,0],[118,0,0,1,0],[119,0,0,1,0],[122,0,0,1,0],[123,0,1,0,3]],"print":[[92,0,0,1,0],[119,0,0,1,0],[120,0,0,1,0],[122,0,0,1,0]],"usage":[[92,0,0,2,0],[93,0,1,0,0],[94,0,1,0,0],[118,0,0,1,0],[119,0,0,2,0],[122,0,0,2,0],[123,0,0,1,1]],"ignored":[[92,0,0,1,0],[122,0,0,1,0],[150,0,0,1,0]],"partials":[[92,0,0,1,0],[94,0,0,1,0],[122,0,0,1,0],[130,0,0,1,0],[135,0,0,1,0]],"provide":[[92,0,0,1,0],[140,0,0,1,0]],"stayed":[[92,0,0,1,0]],"within":[[92,0,0,1,0],[122,0,0,1,0]],"were":[[92,0,0,1,0]],"found":[[92,0,0,1,0],[115,0,0,1,0]],"exceeded":[[92,0,0,1,0],[122,0,0,1,0]],"limit":[[92,0,0,1,0]],"failed":[[92,0,0,1,0],[95,0,0,1,0]],"unknownfieldseverity":[[93,0,0,0,1],[94,0,0,1,0],[135,0,0,1,1]],"changelogdir":[[94,0,0,1,0],[135,0,0,1,0]],"patterns":[[94,0,0,1,0],[135,0,0,2,0]],"fragments":[[94,0,0,1,0],[154,0,0,1,0],[169,0,0,1,0]],"active":[[94,0,0,1,0],[95,0,0,2,0],[133,0,0,1,0]],"schemas":[[94,0,0,3,0],[96,0,1,0,0],[97,0,1,0,0],[98,0,1,0,0],[122,0,0,1,0],[131,0,0,1,0],[135,0,0,3,0],[137,0,1,0,0],[138,0,1,0,0],[139,0,1,0,0],[140,0,1,0,1]],"valibot":[[94,0,0,3,0],[122,0,0,1,0],[135,0,0,3,0],[140,0,0,1,1]],"object":[[94,0,0,3,0],[119,0,0,1,0],[120,0,0,1,0],[140,0,0,0,1],[146,0,0,1,0]],"changelogfrontmatter":[[94,0,0,1,0],[135,0,0,1,0]],"failures":[[94,0,0,1,0],[136,0,0,1,0]],"reported":[[94,0,0,1,0],[136,0,0,1,0]],"treat":[[94,0,0,1,0],[99,0,0,1,0],[133,0,0,1,0],[141,0,0,1,0],[175,0,0,1,0]],"lintresult":[[94,0,0,0,1],[136,0,0,0,1]],"kind":[[94,0,0,0,1],[136,0,0,0,1]],"severity":[[94,0,0,0,1],[95,0,0,1,0],[133,0,0,1,0],[134,0,0,1,0],[136,0,0,0,1]],"filesscanned":[[94,0,0,0,1],[136,0,0,0,1]],"number":[[94,0,0,0,3],[136,0,0,0,3]],"meaning":[[95,0,0,1,0]],"consumers":[[95,0,0,1,0]],"could":[[95,0,0,1,0]],"parsed":[[95,0,0,1,0],[127,0,0,1,0]],"yes":[[96,0,0,1,0],[97,0,0,3,0],[98,0,0,1,0],[137,0,0,1,0],[138,0,0,3,0],[139,0,0,1,0]],"enabled":[[96,0,0,1,0]],"version":[[97,0,0,1,0],[108,0,1,0,0],[138,0,0,1,0]],"semver":[[97,0,0,1,0],[138,0,0,1,0]],"iso":[[97,0,0,1,0],[138,0,0,1,0]],"parseable":[[97,0,0,1,0],[138,0,0,1,0]],"release":[[97,0,0,1,0],[138,0,0,1,0]],"improvement":[[97,0,0,1,0],[138,0,0,1,0]],"retired":[[97,0,0,1,0],[138,0,0,1,0]],"deprecation":[[97,0,0,1,0],[138,0,0,1,0]],"authors":[[97,0,0,1,0],[138,0,0,1,0]],"defaultopen":[[98,0,0,1,0],[139,0,0,1,0]],"combined":[[98,0,0,1,0],[139,0,0,1,0]],"written":[[99,0,0,1,0],[119,0,0,1,0]],"bugs":[[99,0,0,1,0]],"generatellmfullcontextfiles":[[100,0,0,0,1],[102,0,1,0,0],[103,0,0,1,0],[104,0,0,0,1],[124,0,0,1,0],[142,0,0,0,1],[145,0,0,1,2]],"generatellmstxt":[[100,0,0,0,1],[101,0,1,0,0],[104,0,0,0,1],[124,0,0,1,0],[142,0,0,0,1],[145,0,0,0,2]],"creates":[[101,0,0,1,0],[102,0,0,1,0]],"docssections":[[101,0,0,1,0],[104,0,0,0,1]],"curated":[[101,0,0,1,0],[106,0,0,1,0]],"conventions":[[103,0,1,0,0]],"summaries":[[103,0,0,1,0]],"typical":[[104,0,1,0,0],[145,0,1,0,0]],"baseurl":[[104,0,0,0,2],[145,0,0,0,2],[146,0,0,0,1],[148,0,0,1,1],[157,0,0,0,1],[172,0,0,0,1]],"includeprefixes":[[104,0,0,0,1]],"prefer":[[105,0,0,1,0],[147,0,0,1,0]],"narrow":[[105,0,0,1,0],[147,0,0,1,0]],"giant":[[105,0,0,1,0],[147,0,0,1,0]],"self":[[105,0,0,1,0]],"integrations":[[105,0,0,1,0]],"poor":[[105,0,0,1,0]],"whole":[[105,0,0,1,0],[109,0,0,1,0],[174,0,0,1,0]],"support":[[105,0,0,1,0]],"routers":[[105,0,0,1,0]],"parent":[[105,0,0,1,0],[143,0,0,1,0]],"smaller":[[105,0,0,1,0],[172,0,0,1,0]],"child":[[105,0,0,1,0]],"opinionated":[[106,0,0,1,0]],"smallest":[[106,0,0,1,0]],"useful":[[106,0,0,1,0],[146,0,0,1,0]],"descriptions":[[106,0,0,2,0],[143,0,0,1,0],[147,0,0,2,0]],"hints":[[106,0,0,1,0]],"really":[[106,0,0,1,0]],"expected":[[106,0,0,1,0]],"theming":[[107,0,0,1,0],[110,0,0,1,0]],"tool":[[108,0,0,1,0],[162,0,1,0,0],[178,0,1,1,0]],"platform":[[108,0,0,2,0]],"analytics":[[108,0,0,1,0],[110,0,0,1,0]],"built":[[108,0,0,1,0]],"layer":[[108,0,0,1,0],[164,0,0,1,0],[180,0,0,1,0]],"behind":[[108,0,0,1,0]],"polished":[[108,0,0,1,0]],"quickly":[[108,0,0,1,0],[147,0,0,1,0]],"infra":[[108,0,0,1,0]],"standardize":[[108,0,0,1,0]],"edge":[[109,0,0,1,0],[155,0,0,1,0],[158,0,0,1,0],[164,0,0,1,0],[173,0,0,1,0]],"safe":[[109,0,0,1,0],[144,0,0,0,1],[155,0,0,1,0],[158,0,0,1,0],[164,0,0,1,0],[173,0,0,1,0]],"answer":[[109,0,0,1,0],[155,0,0,2,0],[156,0,0,1,0],[157,0,0,2,0],[158,0,0,1,0],[159,0,0,1,0],[160,0,0,2,0],[161,0,0,2,0],[162,0,0,1,0],[163,0,0,1,0],[164,0,0,1,0],[171,0,0,4,0],[172,0,0,1,0],[175,0,1,1,0],[176,0,0,1,0]],"streaming":[[109,0,0,1,0],[155,0,0,2,0],[156,0,0,1,0],[157,0,0,1,0],[158,0,0,1,0],[159,0,0,1,0],[160,0,0,1,0],[161,0,1,1,0],[162,0,0,1,0],[163,0,0,1,0],[164,0,0,1,0],[171,0,0,1,0],[176,0,1,0,0],[177,0,1,0,0]],"orchestration":[[109,0,0,1,0]],"combination":[[111,0,1,0,0]],"shines":[[111,0,1,0,0]],"experience":[[111,0,0,1,0]],"templated":[[111,0,0,1,0]],"system":[[111,0,0,1,0],[160,0,0,2,1],[175,0,0,1,0]],"alongside":[[111,0,0,1,0]],"endpoint":[[111,0,0,1,0]],"complete":[[112,0,0,1,0]],"ships":[[113,0,0,1,0]],"executable":[[113,0,0,1,0]],"focused":[[113,0,0,1,0],[147,0,0,1,0]],"sentence":[[114,0,0,0,1]],"welcome":[[114,0,0,0,1],[147,0,0,1,0]],"walks":[[115,0,0,1,0]],"excerpts":[[115,0,0,1,0],[156,0,0,1,0],[173,0,0,1,0]],"reports":[[115,0,0,1,0]],"primitives":[[117,0,0,1,0]],"flags":[[118,0,0,1,0],[119,0,0,1,0],[120,0,0,1,0],[121,0,0,1,0],[122,0,0,1,0],[123,0,0,1,0],[124,0,0,1,0],[131,0,0,1,0],[144,0,0,0,1]],"codes":[[118,0,0,1,0],[119,0,0,2,0],[120,0,0,1,0],[121,0,0,1,0],[122,0,0,2,0],[123,0,0,1,0],[124,0,0,1,0]],"flag":[[119,0,0,1,0],[122,0,0,1,0],[144,0,0,0,1]],"none":[[119,0,0,2,0]],"history":[[119,0,0,1,0],[126,0,0,1,0]],"stdout":[[119,0,0,1,0]],"alias":[[119,0,0,1,0]],"describing":[[120,0,0,1,0]],"was":[[120,0,0,1,0]],"stderr":[[120,0,0,1,0],[146,0,0,0,1]],"abs":[[120,0,0,0,8]],"docsdir":[[120,0,0,0,1]],"llmstxt":[[120,0,0,0,1]],"docsllmstxt":[[120,0,0,0,1]],"docsllmsfulltxt":[[120,0,0,0,1]],"searchindex":[[120,0,0,0,1]],"searchcontent":[[120,0,0,0,1]],"inference":[[121,0,1,0,0]],"loaded":[[121,0,0,1,0]],"explicitly":[[121,0,0,1,0],[148,0,0,1,0],[177,0,0,1,0]],"importing":[[121,0,0,1,0]],"union":[[121,0,0,1,0]],"values":[[121,0,0,1,0]],"validated":[[122,0,0,1,0],[135,0,0,1,0]],"annotation":[[122,0,0,1,0]],"passing":[[122,0,0,1,0]],"unlimited":[[122,0,0,1,0]],"exceeds":[[122,0,0,1,0]],"budget":[[122,0,0,2,0]],"plug":[[122,0,0,1,0]],"thin":[[124,0,0,1,0],[161,0,0,1,0]],"wrapper":[[124,0,0,1,0]],"resolvedocsnavigation":[[124,0,0,1,0],[142,0,0,0,1],[146,0,1,0,1]],"generatedocssearchfiles":[[124,0,0,1,0],[157,0,0,0,2],[171,0,0,0,1],[172,0,0,0,1]],"happy":[[124,0,0,1,0],[144,0,0,0,1]],"precedence":[[124,0,0,1,0],[148,0,1,1,0]],"alternate":[[124,0,0,1,0]],"calls":[[125,0,0,1,0]],"internally":[[125,0,0,1,0]],"mirrors":[[126,0,0,1,0]],"matters":[[126,0,0,1,0],[149,0,0,1,0],[151,0,1,0,0],[166,0,0,1,0]],"process":[[126,0,0,1,0],[146,0,0,0,2],[148,0,0,0,3],[153,0,0,0,1],[161,0,0,0,1],[176,0,0,0,1]],"parallel":[[126,0,0,1,0]],"yourself":[[127,0,0,1,0]],"writing":[[127,0,0,1,0]],"feed":[[127,0,0,1,0],[151,0,0,1,0]],"touching":[[127,0,0,1,0],[155,0,0,1,0]],"console":[[127,0,0,0,2]],"log":[[127,0,0,0,2]],"srcpath":[[128,0,0,0,1]],"outpath":[[128,0,0,0,1]],"survive":[[129,0,0,1,0]],"synthesized":[[129,0,0,1,0]],"global":[[129,0,0,1,0]],"setups":[[130,0,0,1,0]],"expand":[[130,0,0,1,0]],"ast":[[130,0,0,1,0]],"sees":[[130,0,0,1,0],[151,0,0,1,0],[152,0,0,1,0]],"rationale":[[130,0,0,1,0]],"documented":[[131,0,0,1,0]],"covers":[[131,0,0,1,0]],"grouped":[[132,0,0,1,0]],"won":[[133,0,0,1,0]],"highest":[[133,0,0,1,0]],"priority":[[133,0,0,1,0]],"similar":[[134,0,0,1,0],[150,0,0,1,0]],"walking":[[134,0,0,1,0]],"performs":[[134,0,0,1,0]],"final":[[134,0,0,1,0],[151,0,0,1,0]],"shown":[[135,0,0,1,0]],"produced":[[137,0,0,1,0]],"apply":[[140,0,0,1,0]],"customfrontmatter":[[140,0,0,0,2]],"minlength":[[140,0,0,0,1]],"audience":[[140,0,0,0,1]],"picklist":[[140,0,0,0,1]],"beginner":[[140,0,0,0,1]],"advanced":[[140,0,0,0,1]],"updates":[[141,0,0,1,0]],"wiring":[[141,0,0,1,0],[175,0,0,1,0]],"pipelines":[[141,0,0,1,0]],"purpose":[[143,0,0,1,0],[163,0,0,1,0]],"best":[[143,0,0,1,0],[144,0,0,0,1]],"starting":[[143,0,0,1,0],[144,0,0,0,1]],"very":[[143,0,0,1,0]],"windows":[[143,0,0,1,0]],"narrower":[[143,0,0,1,0]],"budgets":[[143,0,0,1,0]],"appear":[[143,0,0,1,0]],"thing":[[144,0,0,0,1],[145,0,0,0,1]],"well":[[144,0,0,0,1],[145,0,0,0,1]],"helper":[[144,0,0,0,1],[163,0,0,1,0]],"boring":[[144,0,0,0,1]],"parts":[[144,0,0,0,1]],"documentation":[[144,0,0,0,1]],"minute":[[144,0,0,0,1]],"docsconfig":[[145,0,0,0,2],[146,0,0,0,1]],"returns":[[146,0,0,1,0],[176,0,0,1,0]],"driving":[[146,0,0,1,0]],"length":[[146,0,0,0,1]],"come":[[147,0,0,1,0]],"principles":[[147,0,0,1,0]],"truncate":[[147,0,0,1,0]],"flavor":[[147,0,0,1,0]],"decide":[[147,0,0,1,0]],"beats":[[147,0,0,1,0]],"our":[[147,0,0,1,0]],"environment":[[148,0,0,1,0]],"variables":[[148,0,0,1,0]],"layered":[[148,0,0,1,0]],"fallback":[[148,0,0,1,0]],"lets":[[148,0,0,1,0]],"override":[[148,0,0,1,0],[153,0,0,1,0]],"org":[[148,0,0,1,0]],"wide":[[148,0,0,1,0]],"portless":[[148,0,0,0,1]],"stripped":[[149,0,0,1,0]],"remarkremoveimports":[[150,0,0,1,1],[166,0,0,1,0]],"statements":[[150,0,0,1,0]],"remarkremovejsxcomments":[[150,0,0,1,1]],"comments":[[150,0,0,1,0]],"remarkresolvedocplaceholders":[[150,0,0,1,1],[151,0,0,1,0],[166,0,0,1,0]],"remarksectiontomarkdown":[[150,0,0,1,1]],"containers":[[150,0,0,1,0]],"remarkcallouttomarkdown":[[150,0,0,1,1],[166,0,0,1,0]],"remarkcardstomarkdown":[[150,0,0,1,1],[166,0,0,1,0]],"bulleted":[[150,0,0,1,0]],"remarkdetailstomarkdown":[[150,0,0,1,1]],"remarkmermaidtomarkdown":[[150,0,0,1,1],[166,0,0,1,0]],"remarkcommandtabstomarkdown":[[150,0,0,1,1],[166,0,0,1,0]],"remarkstepstomarkdown":[[150,0,0,1,1],[166,0,0,1,0]],"remarktabstomarkdown":[[150,0,0,1,1],[166,0,0,1,0]],"remarkaccordiontomarkdown":[[150,0,0,1,1]],"remarktopicswitchertomarkdown":[[150,0,0,1,1]],"labeled":[[150,0,0,1,0]],"remarkexampletomarkdown":[[150,0,0,1,1]],"mdast":[[150,0,0,0,1]],"ri":[[150,0,0,0,2]],"rj":[[150,0,0,0,2]],"rd":[[150,0,0,0,2]],"rs":[[150,0,0,0,2]],"rc":[[150,0,0,0,2]],"rcd":[[150,0,0,0,2]],"rdt":[[150,0,0,0,2]],"rm":[[150,0,0,0,2]],"rct":[[150,0,0,0,2]],"rst":[[150,0,0,0,2]],"rt":[[150,0,0,0,2]],"rtt":[[150,0,0,0,2]],"ra":[[150,0,0,0,2]],"rts":[[150,0,0,0,2]],"must":[[151,0,0,2,0]],"go":[[151,0,0,2,0]],"because":[[151,0,0,2,0]],"some":[[151,0,0,1,0]],"imported":[[151,0,0,1,0]],"flatteners":[[151,0,0,3,0],[170,0,0,1,0]],"assume":[[151,0,0,1,0]],"strings":[[151,0,0,1,0]],"literals":[[151,0,0,1,0]],"reorder":[[151,0,0,1,0],[170,0,0,1,0]],"casually":[[151,0,0,1,0],[170,0,0,1,0]],"flattener":[[151,0,0,2,0],[152,0,0,1,0],[154,0,0,1,0]],"transform":[[151,0,0,1,0]],"contracted":[[151,0,0,1,0]],"insert":[[151,0,0,1,0]],"composition":[[152,0,0,1,0],[167,0,0,1,0]],"included":[[152,0,0,1,0],[167,0,0,1,0]],"extracted":[[153,0,0,1,0],[168,0,0,1,0]],"fixtures":[[153,0,0,1,0],[168,0,0,1,0]],"featured":[[153,0,0,1,0],[168,0,0,1,0]],"undefined":[[153,0,0,1,0],[168,0,0,1,0]],"cwd":[[153,0,0,0,1]],"composed":[[154,0,0,1,0],[169,0,0,1,0]],"intentionally":[[154,0,0,1,0],[169,0,0,1,0]],"omit":[[154,0,0,1,0]],"processing":[[154,0,0,1,0]],"cost":[[154,0,0,1,0]],"almost":[[154,0,0,1,0]],"never":[[154,0,0,1,0]],"reordering":[[154,0,0,1,0]],"between":[[154,0,0,1,0]],"existing":[[154,0,0,1,0]],"ones":[[154,0,0,1,0]],"helpers":[[155,0,0,1,0],[156,0,0,1,0],[157,0,0,1,0],[158,0,0,1,0],[159,0,0,1,0],[160,0,0,1,0],[161,0,0,1,0],[162,0,0,1,0],[163,0,0,1,0],[164,0,0,1,0],[171,0,0,1,0]],"exposes":[[155,0,0,1,0],[162,0,0,1,0],[178,0,0,1,0]],"queries":[[155,0,0,1,0]],"database":[[155,0,0,1,0],[180,0,0,1,0]],"layers":[[155,0,0,1,0]],"document":[[156,0,0,2,0]],"jump":[[156,0,0,1,0]],"ranking":[[156,0,0,1,0],[173,0,0,1,0]],"tunable":[[156,0,0,1,0]],"compact":[[156,0,0,1,0],[172,0,0,1,0]],"tuple":[[156,0,0,1,0],[172,0,0,1,0]],"term":[[156,0,0,1,0],[172,0,0,1,0]],"postings":[[156,0,0,1,0],[172,0,0,1,0]],"refs":[[156,0,0,2,0]],"actual":[[156,0,0,1,0]],"separated":[[156,0,0,1,0]],"lazily":[[156,0,0,1,0]],"indexing":[[157,0,1,0,0],[172,0,1,0,0]],"cheap":[[157,0,0,1,0],[164,0,0,1,0],[180,0,0,1,0]],"hover":[[157,0,0,1,0]],"vercel":[[158,0,0,1,0],[161,0,0,0,2],[162,0,0,0,1],[163,0,0,1,0],[171,0,0,2,1],[176,0,1,1,1],[178,0,0,1,1],[179,0,0,1,0],[180,0,0,1,0]],"anywhere":[[158,0,0,1,0]],"hash":[[158,0,0,1,0],[174,0,0,1,0]],"snippets":[[158,0,0,1,0]],"ready":[[158,0,0,1,0]],"searchdocs":[[158,0,0,0,2],[171,0,0,0,1],[173,0,0,0,1]],"docssearchindex":[[158,0,0,0,2],[171,0,0,0,1],[173,0,0,0,1],[174,0,0,0,3],[175,0,0,0,1],[176,0,0,0,1],[177,0,0,0,2],[178,0,0,0,1]],"docssearchcontentstore":[[158,0,0,0,2],[171,0,0,0,1],[173,0,0,0,1],[174,0,0,0,2],[175,0,0,0,1],[176,0,0,0,1],[177,0,0,0,2],[178,0,0,0,1]],"indexjson":[[158,0,0,0,2],[173,0,0,0,1],[174,0,0,0,3],[175,0,0,0,1],[176,0,0,0,1],[177,0,0,0,2],[178,0,0,0,1]],"contentjson":[[158,0,0,0,2],[173,0,0,0,1],[174,0,0,0,2],[175,0,0,0,1],[176,0,0,0,1],[177,0,0,0,2],[178,0,0,0,1]],"doubles":[[159,0,0,1,0]],"virtual":[[159,0,0,1,0],[162,0,0,1,0],[174,0,0,1,0],[180,0,0,1,0]],"readers":[[159,0,0,1,0]],"picked":[[159,0,0,1,0]],"readdocscontentfile":[[159,0,0,1,2],[171,0,0,0,1],[174,0,0,1,1]],"readdocscontentchunk":[[159,0,0,1,2],[171,0,0,0,1],[174,0,0,1,1]],"listdocscontentfiles":[[159,0,0,0,2],[171,0,0,0,1],[174,0,0,0,1]],"allfiles":[[159,0,0,0,1]],"wholepage":[[159,0,0,0,1]],"onechunk":[[159,0,0,0,1]],"createanswercontext":[[160,0,0,1,2],[161,0,0,1,0],[171,0,0,0,1],[175,0,0,1,1]],"query":[[160,0,0,1,0],[161,0,0,0,1],[163,0,0,1,0],[171,0,0,1,0],[172,0,0,1,0],[173,0,0,1,0],[174,0,0,1,0],[175,0,0,1,1],[176,0,0,1,1],[177,0,0,1,2],[178,0,0,1,0],[179,0,0,2,0],[180,0,0,1,0]],"retrieved":[[160,0,0,2,0],[175,0,0,1,0]],"chunks":[[160,0,0,1,0],[162,0,0,1,0],[164,0,0,1,0],[172,0,0,2,0],[173,0,0,1,0],[174,0,0,1,0],[178,0,0,1,0]],"prompt":[[160,0,0,1,1],[175,0,0,1,0]],"instructs":[[160,0,0,1,0]],"cite":[[160,0,0,1,0],[175,0,0,1,0]],"sources":[[160,0,0,1,1],[161,0,0,2,1],[175,0,0,1,0],[176,0,0,1,1],[177,0,0,0,2]],"style":[[160,0,0,1,0],[173,0,0,1,0],[175,0,0,1,0]],"references":[[160,0,0,1,0],[168,0,0,1,0]],"say":[[160,0,0,1,0],[175,0,0,1,0]],"insufficient":[[160,0,0,1,0],[175,0,0,1,0]],"productname":[[160,0,0,0,1],[161,0,0,0,1],[175,0,0,0,1],[176,0,0,0,1]],"wrappers":[[161,0,0,1,0]],"around":[[161,0,0,1,0]],"stream":[[161,0,0,1,0],[171,0,0,1,0],[172,0,0,1,0],[173,0,0,1,0],[174,0,0,1,0],[175,0,0,1,0],[176,0,0,1,0],[177,0,0,1,0],[178,0,0,1,0],[179,0,0,1,0],[180,0,0,1,0]],"response":[[161,0,0,3,1],[176,0,0,1,1],[177,0,0,0,2]],"citation":[[161,0,0,1,0]],"display":[[161,0,0,1,0],[176,0,0,1,0]],"embed":[[161,0,0,1,0]],"streamed":[[161,0,0,1,0],[176,0,0,1,0]],"createcloudflaredocsadapter":[[161,0,0,1,0],[177,0,0,0,2]],"binding":[[161,0,0,1,0],[177,0,0,0,1]],"gateway":[[161,0,0,1,2],[171,0,0,2,0],[176,0,1,0,0],[177,0,1,0,2]],"streamdocsanswer":[[161,0,0,0,4],[171,0,0,0,3],[176,0,0,2,2],[177,0,0,0,4]],"sdk":[[161,0,0,0,1],[171,0,0,1,0],[176,0,1,1,0]],"workers":[[161,0,0,0,1],[171,0,0,1,0]],"openai":[[161,0,0,0,1],[176,0,0,0,1],[177,0,0,0,1]],"gpt":[[161,0,0,0,1],[176,0,0,0,1],[177,0,0,0,1]],"mini":[[161,0,0,0,1],[176,0,0,0,1]],"adapters":[[162,0,1,0,0],[178,0,1,0,0]],"explore":[[162,0,0,1,0]],"shell":[[162,0,0,1,0],[178,0,0,1,0]],"receiving":[[162,0,0,1,0],[178,0,0,1,0]],"selected":[[162,0,0,1,0]],"ls":[[162,0,0,1,0]],"cat":[[162,0,0,1,0]],"find":[[162,0,0,1,0]],"grep":[[162,0,0,1,0]],"rg":[[162,0,0,1,0]],"execution":[[162,0,0,1,0],[178,0,0,1,0]],"disabled":[[162,0,0,1,0],[178,0,0,1,0]],"expose":[[162,0,0,1,0]],"createdocsbashtools":[[162,0,0,1,0],[178,0,0,1,0]],"plural":[[162,0,0,1,0]],"createdocsbashtool":[[162,0,0,0,2],[178,0,0,0,2]],"instructions":[[162,0,0,0,1],[178,0,0,0,1]],"abuse":[[163,0,1,0,0],[179,0,1,0,0]],"guards":[[163,0,1,0,0],[171,0,0,1,0],[179,0,1,0,0]],"reusable":[[163,0,0,1,0],[179,0,0,1,0]],"utilities":[[163,0,0,1,0],[179,0,0,1,0]],"validatedocsquery":[[163,0,0,1,0],[171,0,0,0,1],[179,0,0,1,0]],"trim":[[163,0,0,1,0]],"cap":[[163,0,0,1,0]],"readjsonwithlimit":[[163,0,0,1,0],[171,0,0,0,1],[179,0,0,1,0]],"reject":[[163,0,0,1,0]],"oversized":[[163,0,0,1,0],[179,0,0,1,0]],"bodies":[[163,0,0,1,0],[179,0,0,1,0]],"getclientidentifier":[[163,0,0,1,0],[179,0,0,1,0]],"proxy":[[163,0,0,1,0],[179,0,0,1,0]],"ip":[[163,0,0,1,0],[179,0,0,1,0]],"headers":[[163,0,0,1,0],[179,0,0,1,0]],"creatememoryratelimiter":[[163,0,0,1,0],[171,0,0,0,1],[179,0,0,1,0]],"implements":[[163,0,0,1,0],[179,0,0,1,0]],"ratelimiter":[[163,0,0,2,0],[179,0,0,2,0]],"demos":[[163,0,0,2,0],[179,0,0,1,0]],"limiter":[[163,0,0,1,0]],"adapt":[[163,0,0,1,0],[179,0,0,1,0]],"interface":[[163,0,0,1,0],[179,0,0,2,0]],"redis":[[163,0,0,1,0],[179,0,0,1,0]],"kv":[[163,0,0,2,0],[179,0,0,2,0]],"durable":[[163,0,0,1,0],[179,0,0,1,0]],"objects":[[163,0,0,1,0],[179,0,0,1,0]],"embeddings":[[164,0,1,2,0],[180,0,1,1,0]],"keys":[[164,0,0,1,0],[180,0,0,1,0]],"messages":[[164,0,0,1,0]],"users":[[164,0,0,1,0],[180,0,0,1,0]],"faster":[[164,0,0,1,0]],"performance":[[164,0,0,1,0]],"optimization":[[164,0,0,1,0]],"grow":[[164,0,0,1,0],[180,0,0,1,0]],"past":[[164,0,0,1,0]],"tens":[[164,0,0,1,0]],"thousands":[[164,0,0,1,0]],"cold":[[164,0,0,1,0],[180,0,0,1,0]],"hit":[[164,0,0,1,0]],"noticeable":[[164,0,0,1,0]],"complementary":[[164,0,0,1,0]],"replacements":[[164,0,0,1,0]],"exported":[[165,0,0,1,0],[166,0,0,1,0],[167,0,0,1,0],[168,0,0,1,0],[169,0,0,1,0],[170,0,0,1,0]],"standard":[[166,0,0,1,0]],"removes":[[166,0,0,1,0]],"extra":[[167,0,1,0,0],[168,0,1,0,0]],"expanded":[[167,0,0,1,0]],"extraction":[[168,0,0,1,0]],"pairs":[[168,0,0,1,0]],"guide":[[169,0,1,0,0]],"consumer":[[169,0,0,1,0]],"omits":[[169,0,0,1,0]],"stripping":[[170,0,0,1,0]],"happen":[[170,0,0,1,0]],"intent":[[170,0,0,1,0]],"shaping":[[170,0,0,1,0]],"rather":[[170,0,0,1,0]],"parsing":[[170,0,0,1,0],[179,0,0,1,0]],"checking":[[170,0,0,1,0]],"changing":[[170,0,0,1,0]],"entrypoints":[[171,0,0,1,0]],"compatible":[[171,0,0,1,0]],"case":[[171,0,0,1,0]],"rate":[[171,0,0,1,0],[179,0,0,1,0]],"streamverceldocsanswer":[[171,0,0,0,1]],"streamtanstackdocsanswer":[[171,0,0,0,1]],"streamcloudflaredocsanswer":[[171,0,0,0,1]],"converting":[[172,0,0,1,0]],"split":[[172,0,0,1,0]],"stores":[[172,0,0,1,0]],"precise":[[172,0,0,1,0],[180,0,0,1,0]],"way":[[172,0,0,1,0]],"core":[[173,0,0,1,0]],"normalized":[[173,0,0,1,0],[174,0,0,1,0]],"tokens":[[173,0,0,1,0]],"stopword":[[173,0,0,1,0]],"weighted":[[173,0,0,1,0]],"searchable":[[173,0,0,1,0]],"lower":[[173,0,0,1,0]],"weight":[[173,0,0,1,0]],"acts":[[174,0,0,1,0]],"wants":[[174,0,0,1,0]],"identifies":[[174,0,0,1,0]],"returned":[[174,0,0,1,0],[175,0,0,1,0]],"citations":[[174,0,0,1,0],[175,0,0,1,0]],"sourcechunk":[[174,0,0,0,1]],"call":[[175,0,0,1,0]],"instruct":[[175,0,0,1,0]],"untrusted":[[175,0,0,1,0]],"minimal":[[176,0,0,1,0]],"embedded":[[176,0,0,1,0]],"byo":[[177,0,1,0,0]],"callers":[[177,0,0,2,0]],"4o":[[177,0,0,0,1]],"preselected":[[178,0,0,1,0]],"native":[[178,0,0,1,0]],"python":[[178,0,0,1,0]],"javascript":[[178,0,0,1,0]],"trims":[[179,0,0,1,0]],"caps":[[179,0,0,1,0]],"rejects":[[179,0,0,1,0]],"strong":[[179,0,0,1,0]],"serverless":[[179,0,0,1,0]],"instances":[[179,0,0,1,0]],"sites":[[179,0,0,1,0],[180,0,0,1,0]],"semantic":[[180,0,0,1,0]],"share":[[180,0,0,1,0]],"hurt":[[180,0,0,1,0]]},"averageChunkLength":69.41988950276243}
+{"version":2,"generatedAt":"2026-05-09T05:56:41.430Z","documents":[["authoring/components","Components","MDX components the pipeline knows how to flatten into agent-readable markdown.","/docs/authoring/components","https://docs.example.com/docs/authoring/components","authoring/components"],["authoring/frontmatter","Frontmatter","Required fields, group semantics, and how authored MDX becomes a navigation tree.","/docs/authoring/frontmatter","https://docs.example.com/docs/authoring/frontmatter","authoring/frontmatter"],["build/bundle-package-docs","Bundle docs into a package","Ship agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.","/docs/build/bundle-package-docs","https://docs.example.com/docs/build/bundle-package-docs","build/bundle-package-docs"],["build/connect-docs-site","Connect a docs site","Wire leadtype into a docs app build so it serves humans, agents, and search from one source.","/docs/build/connect-docs-site","https://docs.example.com/docs/build/connect-docs-site","build/connect-docs-site"],["build/validate-in-ci","Validate in CI","Run leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.","/docs/build/validate-in-ci","https://docs.example.com/docs/build/validate-in-ci","build/validate-in-ci"],["how-it-works","How it works","The mental model: one MDX source, a remark pipeline, four artifacts, three audiences.","/docs/how-it-works","https://docs.example.com/docs/how-it-works","how-it-works"],["index","Leadtype","One MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.","/docs","https://docs.example.com/docs","index"],["methodology","Methodology","How leadtype differs from Fumadocs, Starlight, and Mintlify.","/docs/methodology","https://docs.example.com/docs/methodology","methodology"],["quickstart","Quickstart","Install leadtype, run it against a docs folder, and inspect the four artifacts it produces.","/docs/quickstart","https://docs.example.com/docs/quickstart","quickstart"],["reference/cli","CLI","leadtype generate and leadtype lint — flags, exit codes, and JSON output.","/docs/reference/cli","https://docs.example.com/docs/reference/cli","reference/cli"],["reference/convert","Convert","MDX-to-markdown conversion APIs from leadtype/convert.","/docs/reference/convert","https://docs.example.com/docs/reference/convert","reference/convert"],["reference/lint","Lint rules","Schema, link, and navigation checks. CLI and library API.","/docs/reference/lint","https://docs.example.com/docs/reference/lint","reference/lint"],["reference/llm","LLM bundles","Generate llms.txt and topic-scoped full-context files for agents.","/docs/reference/llm","https://docs.example.com/docs/reference/llm","reference/llm"],["reference/remark","Remark plugins","The default plugin stack that flattens MDX components into markdown.","/docs/reference/remark","https://docs.example.com/docs/reference/remark","reference/remark"],["reference/search","Search","Static search index, runtime helpers, and source-grounded answer streaming.","/docs/reference/search","https://docs.example.com/docs/reference/search","reference/search"]],"chunks":[["chunk-0",0,"components",["Components"],45,0],["chunk-1",0,"why-flatten-at-all",["Components","Why flatten at all?"],82,1],["chunk-2",0,"the-naming-contract",["Components","The naming contract"],76,2],["chunk-3",0,"component-reference",["Components","Component reference"],34,3],["chunk-4",0,"callout",["Components","Component reference","Callout"],74,4],["chunk-5",0,"cards",["Components","Component reference","Cards"],43,5],["chunk-6",0,"steps",["Components","Component reference","Steps"],74,6],["chunk-7",0,"tabs",["Components","Component reference","Tabs"],89,7],["chunk-8",0,"commandtabs",["Components","Component reference","CommandTabs"],111,8],["chunk-9",0,"accordion",["Components","Component reference","Accordion"],77,9],["chunk-10",0,"topicswitcher",["Components","Component reference","TopicSwitcher"],69,10],["chunk-11",0,"typetable-and-extractedtypetable",["Components","Component reference","TypeTable and ExtractedTypeTable"],86,11],["chunk-12",0,"example",["Components","Component reference","Example"],76,12],["chunk-13",0,"mermaid",["Components","Component reference","Mermaid"],62,13],["chunk-14",0,"guidelines",["Components","Guidelines"],55,14],["chunk-15",1,"frontmatter",["Frontmatter"],26,15],["chunk-16",1,"minimum",["Frontmatter","Minimum"],75,16],["chunk-17",1,"how-groups-become-a-nav-tree",["Frontmatter","How groups become a nav tree"],119,17],["chunk-18",1,"nested-groups",["Frontmatter","How groups become a nav tree","Nested groups"],69,18],["chunk-19",1,"optional-fields",["Frontmatter","Optional fields"],117,19],["chunk-20",1,"lint-rules",["Frontmatter","Lint rules"],88,20],["chunk-21",1,"what-this-gives-you",["Frontmatter","What this gives you"],55,21],["chunk-22",2,"bundle-docs-into-a-package",["Bundle docs into a package"],62,22],["chunk-23",2,"the-flow",["Bundle docs into a package","The flow"],86,23],["chunk-24",2,"generate-into-the-package",["Bundle docs into a package","Generate into the package"],72,24],["chunk-25",2,"filter-to-package-specific-docs",["Bundle docs into a package","Filter to package-specific docs"],76,25],["chunk-26",2,"include-in-the-published-tarball",["Bundle docs into a package","Include in the published tarball"],185,26],["chunk-27",2,"include-in-the-published-tarball",["Bundle docs into a package","Include in the published tarball"],112,27],["chunk-28",2,"verify-before-publishing",["Bundle docs into a package","Verify before publishing"],76,28],["chunk-29",2,"how-agents-discover-bundled-docs",["Bundle docs into a package","How agents discover bundled docs"],104,29],["chunk-30",2,"when-to-use-this",["Bundle docs into a package","When to use this"],59,30],["chunk-31",2,"what-s-next",["Bundle docs into a package","What's next"],29,31],["chunk-32",3,"connect-a-docs-site",["Connect a docs site"],54,32],["chunk-33",3,"the-flow",["Connect a docs site","The flow"],105,33],["chunk-34",3,"one-off-run",["Connect a docs site","One-off run"],71,34],["chunk-35",3,"wire-it-into-the-build",["Connect a docs site","Wire it into the build"],202,35],["chunk-36",3,"configure-the-product-and-groups",["Connect a docs site","Configure the product and groups"],94,36],["chunk-37",3,"serve-markdown-to-agents",["Connect a docs site","Serve markdown to agents"],273,37],["chunk-38",3,"serve-markdown-to-agents",["Connect a docs site","Serve markdown to agents"],95,38],["chunk-39",3,"connect-a-remote-source",["Connect a docs site","Connect a remote source"],131,39],["chunk-40",3,"verify",["Connect a docs site","Verify"],108,40],["chunk-41",3,"what-s-next",["Connect a docs site","What's next"],26,41],["chunk-42",4,"validate-in-ci",["Validate in CI"],49,42],["chunk-43",4,"what-it-catches",["Validate in CI","What it catches"],78,43],["chunk-44",4,"github-actions",["Validate in CI","GitHub Actions"],83,44],["chunk-45",4,"other-ci-providers",["Validate in CI","Other CI providers"],60,45],["chunk-46",4,"local-pre-push-hook",["Validate in CI","Local pre-push hook"],64,46],["chunk-47",4,"run-before-generate",["Validate in CI","Run before generate"],63,47],["chunk-48",4,"what-to-fix-first",["Validate in CI","What to fix first"],66,48],["chunk-49",5,"how-it-works",["How it works"],37,49],["chunk-50",5,"the-pipeline",["How it works","The pipeline"],130,50],["chunk-51",5,"the-four-artifacts",["How it works","The four artifacts"],137,51],["chunk-52",5,"the-three-audiences",["How it works","The three audiences"],108,52],["chunk-53",5,"vocabulary",["How it works","Vocabulary"],145,53],["chunk-54",5,"what-runs-when",["How it works","What runs when"],84,54],["chunk-55",5,"where-to-next",["How it works","Where to next"],19,55],["chunk-56",6,"leadtype",["Leadtype"],145,56],["chunk-57",6,"choose-your-path",["Leadtype","Choose your path"],45,57],["chunk-58",6,"what-you-get",["Leadtype","What you get"],82,58],["chunk-59",6,"next",["Leadtype","Next"],45,59],["chunk-60",7,"methodology",["Methodology"],30,60],["chunk-61",7,"the-short-version",["Methodology","The short version"],67,61],["chunk-62",7,"what-leadtype-owns",["Methodology","What leadtype owns"],50,62],["chunk-63",7,"what-leadtype-does-not-own",["Methodology","What leadtype does not own"],31,63],["chunk-64",7,"when-the-combination-shines",["Methodology","When the combination shines"],75,64],["chunk-65",8,"quickstart",["Quickstart"],19,65],["chunk-66",8,"install",["Quickstart","Install"],55,66],["chunk-67",8,"author-one-page",["Quickstart","Author one page"],47,67],["chunk-68",8,"generate",["Quickstart","Generate"],111,68],["chunk-69",8,"inspect-the-output",["Quickstart","Inspect the output"],89,69],["chunk-70",8,"what-s-next",["Quickstart","What's next"],30,70],["chunk-71",9,"cli",["CLI"],30,71],["chunk-72",9,"generate",["CLI","generate"],151,72],["chunk-73",9,"json-output-shape",["CLI","generate","JSON output shape"],97,73],["chunk-74",9,"group-inference",["CLI","generate","Group inference"],89,74],["chunk-75",9,"lint",["CLI","lint"],145,75],["chunk-76",9,"help",["CLI","help"],25,76],["chunk-77",9,"library-entry-points",["CLI","Library entry points"],65,77],["chunk-78",10,"convert",["Convert"],47,78],["chunk-79",10,"convertallmdx",["Convert","convertAllMdx"],67,79],["chunk-80",10,"convertmdxtomarkdown",["Convert","convertMdxToMarkdown"],54,80],["chunk-81",10,"writemdxfileasmarkdown",["Convert","writeMdxFileAsMarkdown"],28,81],["chunk-82",10,"behavior-notes",["Convert","Behavior notes"],50,82],["chunk-83",10,"pairing-with-remark-plugins",["Convert","Pairing with remark plugins"],54,83],["chunk-84",11,"lint-rules",["Lint rules"],46,84],["chunk-85",11,"rules",["Lint rules","Rules"],15,85],["chunk-86",11,"frontmatter-rules",["Lint rules","Rules","Frontmatter rules"],58,86],["chunk-87",11,"content-link-rules",["Lint rules","Rules","Content / link rules"],68,87],["chunk-88",11,"library-api",["Lint rules","Library API"],90,88],["chunk-89",11,"result-shape",["Lint rules","Library API","Result shape"],67,89],["chunk-90",11,"docs-frontmatter",["Lint rules","Default schemas","Docs frontmatter"],75,90],["chunk-91",11,"changelog-frontmatter",["Lint rules","Default schemas","Changelog frontmatter"],60,91],["chunk-92",11,"meta-json",["Lint rules","Default schemas","meta.json"],49,92],["chunk-93",11,"custom-schemas",["Lint rules","Custom schemas"],63,93],["chunk-94",11,"practical-guidance",["Lint rules","Practical guidance"],65,94],["chunk-95",12,"llm-bundles",["LLM bundles"],45,95],["chunk-96",12,"what-gets-generated",["LLM bundles","What gets generated"],97,96],["chunk-97",12,"example-llms-txt",["LLM bundles","Example llms.txt"],94,97],["chunk-98",12,"typical-sequence",["LLM bundles","Typical sequence"],89,98],["chunk-99",12,"resolvedocsnavigation",["LLM bundles","resolveDocsNavigation"],110,99],["chunk-100",12,"topic-design",["LLM bundles","Topic design"],76,100],["chunk-101",12,"base-url-precedence",["LLM bundles","Base URL precedence"],74,101],["chunk-102",13,"remark-plugins",["Remark plugins"],46,102],["chunk-103",13,"the-default-stack",["Remark plugins","The default stack"],158,103],["chunk-104",13,"why-order-matters",["Remark plugins","Why order matters"],81,104],["chunk-105",13,"remarkinclude",["Remark plugins","Optional plugins","remarkInclude"],40,105],["chunk-106",13,"remarktypetabletomarkdown-with-basepath",["Remark plugins","Optional plugins","remarkTypeTableToMarkdown with basePath"],98,106],["chunk-107",13,"plugin-selection-rules",["Remark plugins","Plugin selection rules"],63,107],["chunk-108",14,"search",["Search"],41,108],["chunk-109",14,"vocabulary",["Search","Vocabulary"],79,109],["chunk-110",14,"build-time-indexing",["Search","Build-time indexing"],67,110],["chunk-111",14,"runtime-search",["Search","Runtime search"],67,111],["chunk-112",14,"reading-docs-at-runtime",["Search","Reading docs at runtime"],62,112],["chunk-113",14,"source-grounded-answers",["Search","Source-grounded answers"],62,113],["chunk-114",14,"streaming-via-provider-entry-points",["Search","Streaming via provider entry points"],103,114],["chunk-115",14,"bash-tool-adapters",["Search","Bash tool adapters"],65,115],["chunk-116",14,"abuse-guards",["Search","Abuse guards"],60,116],["chunk-117",14,"when-to-add-embeddings",["Search","When to add embeddings"],73,117]],"terms":{"10":[[103,0,0,1,0]],"11":[[103,0,0,1,0]],"12":[[103,0,0,1,0]],"13":[[103,0,0,1,0]],"14":[[103,0,0,1,0]],"15":[[103,0,0,1,0]],"35":[[53,0,0,1,0],[109,0,0,1,0]],"50":[[37,0,0,1,0],[100,0,0,1,0]],"5173":[[40,0,0,1,0]],"8601":[[91,0,0,1,0]],"components":[[0,1,1,2,0],[1,1,1,2,0],[2,1,1,2,2],[3,1,1,1,0],[4,1,1,1,0],[5,1,1,1,0],[6,1,1,2,1],[7,1,1,1,0],[8,1,1,1,0],[9,1,1,1,0],[10,1,1,1,0],[11,1,1,1,0],[12,1,1,1,4],[13,1,1,1,0],[14,1,1,3,0],[50,0,0,2,1],[58,0,0,1,0],[63,0,0,1,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,1,0],[107,0,0,1,0]],"mdx":[[0,0,0,1,0],[1,0,0,2,0],[2,0,0,1,1],[3,0,0,2,0],[4,0,0,1,0],[5,0,0,1,1],[6,0,0,2,1],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,3],[13,0,0,1,2],[14,0,0,1,0],[15,0,0,2,0],[16,0,0,1,1],[17,0,0,1,0],[18,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[23,0,0,0,1],[26,0,0,0,1],[27,0,0,0,1],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,0,2],[42,0,0,1,0],[44,0,0,0,1],[49,0,0,2,0],[50,0,0,2,1],[51,0,0,2,0],[52,0,0,2,1],[53,0,0,2,0],[54,0,0,2,0],[55,0,0,1,0],[56,0,0,2,1],[57,0,0,1,0],[58,0,0,4,0],[59,0,0,1,0],[62,0,0,1,0],[63,0,0,1,0],[65,0,0,1,0],[67,0,0,1,1],[68,0,0,1,0],[69,0,0,1,0],[72,0,0,1,0],[78,0,0,2,0],[79,0,0,2,0],[80,0,0,1,1],[81,0,0,1,1],[82,0,0,2,0],[83,0,0,1,0],[84,0,0,1,0],[87,0,0,1,0],[88,0,0,1,0],[102,0,0,2,0],[103,0,0,2,1],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,2,1],[107,0,0,1,0],[110,0,0,1,0]],"pipeline":[[0,0,0,2,0],[1,0,0,1,0],[2,0,0,2,0],[3,0,0,1,0],[4,0,0,2,0],[5,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,2,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[21,0,0,1,0],[35,0,0,1,8],[42,0,0,1,0],[49,0,0,1,0],[50,0,1,1,0],[51,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[56,0,0,2,0],[57,0,0,1,0],[58,0,0,1,0],[59,0,0,2,0],[60,0,0,1,0],[61,0,0,1,0],[62,0,0,1,0],[64,0,0,1,0],[65,0,0,1,0],[70,0,0,1,0],[71,0,0,1,0],[72,0,0,1,0],[74,0,0,1,0],[80,0,0,1,0],[97,0,0,0,1]],"knows":[[0,0,0,1,0],[1,0,0,1,0],[2,0,0,1,0],[3,0,0,1,0],[4,0,0,1,0],[5,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0]],"flatten":[[0,0,0,2,0],[1,0,1,1,0],[2,0,0,1,0],[3,0,0,1,0],[4,0,0,3,0],[5,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[50,0,0,0,1],[53,0,0,1,0],[103,0,0,2,0]],"into":[[0,0,0,2,0],[1,0,0,2,0],[2,0,0,1,0],[3,0,0,1,0],[4,0,0,3,0],[5,0,0,1,1],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[16,0,0,0,1],[19,0,0,1,0],[22,1,1,0,0],[23,1,1,0,0],[24,1,2,0,0],[25,1,1,0,0],[26,1,1,0,0],[27,1,1,0,0],[28,1,1,0,0],[29,1,1,0,0],[30,1,1,0,0],[31,1,1,0,0],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,1,2,0],[36,0,0,1,0],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,2,0],[40,0,0,1,0],[41,0,0,1,0],[42,0,0,1,0],[45,0,0,1,0],[50,0,0,1,0],[53,0,0,1,0],[70,0,0,2,0],[72,0,0,1,0],[78,0,0,1,0],[82,0,0,1,0],[83,0,0,1,0],[94,0,0,1,0],[96,0,0,1,0],[102,0,0,3,0],[103,0,0,1,0],[104,0,0,2,0],[105,0,0,1,0],[106,0,0,1,0],[107,0,0,1,0],[113,0,0,1,0]],"agent":[[0,0,0,1,0],[1,0,0,2,0],[2,0,0,1,0],[3,0,0,2,0],[4,0,0,1,0],[5,0,0,1,1],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,2,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,1],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[32,0,0,1,0],[33,0,0,2,0],[50,0,0,1,0],[52,0,0,0,2],[56,0,0,2,3],[61,0,0,1,0],[64,0,0,2,0],[69,0,0,2,1],[82,0,0,1,0],[95,0,0,1,0],[100,0,0,1,0],[101,0,0,1,1],[102,0,0,1,0],[107,0,0,1,0],[115,0,0,1,0]],"readable":[[0,0,0,1,0],[1,0,0,1,0],[2,0,0,1,0],[3,0,0,1,0],[4,0,0,1,0],[5,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[32,0,0,1,0],[50,0,0,1,0],[56,0,0,1,0],[69,0,0,0,1],[102,0,0,1,0]],"markdown":[[0,0,0,2,0],[1,0,0,3,0],[2,0,0,1,0],[3,0,0,2,0],[4,0,0,1,0],[5,0,0,1,1],[6,0,0,2,1],[7,0,0,1,0],[8,0,0,2,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,2,5],[14,0,0,2,0],[24,0,0,1,0],[33,0,0,2,0],[37,0,1,5,4],[38,0,1,0,1],[40,0,0,2,0],[50,0,0,3,0],[51,0,0,2,0],[52,0,0,3,1],[53,0,0,2,0],[54,0,0,2,0],[56,0,0,1,1],[58,0,0,2,0],[60,0,0,1,0],[62,0,0,1,0],[64,0,0,1,0],[68,0,0,1,0],[78,0,0,2,0],[79,0,0,1,0],[80,0,0,2,1],[81,0,0,1,0],[82,0,0,2,0],[83,0,0,1,0],[102,0,0,3,0],[103,0,0,3,1],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,2,0],[107,0,0,1,0],[110,0,0,1,0]],"leadtype":[[0,0,0,1,0],[6,0,0,1,1],[8,0,0,8,4],[12,0,0,1,1],[14,0,0,1,0],[15,0,0,1,0],[16,0,0,0,1],[20,0,0,1,0],[22,0,0,1,0],[23,0,0,0,1],[24,0,0,0,1],[25,0,0,0,1],[26,0,0,0,5],[28,0,0,0,1],[32,0,0,2,0],[33,0,0,2,0],[34,0,0,2,1],[35,0,0,1,2],[36,0,0,1,1],[37,0,0,1,0],[38,0,0,1,1],[39,0,0,1,2],[40,0,0,1,0],[41,0,0,1,0],[42,0,0,3,0],[43,0,0,1,0],[44,0,0,1,1],[45,0,0,1,1],[46,0,0,1,1],[47,0,0,3,2],[48,0,0,1,0],[49,0,0,1,0],[51,0,0,1,0],[54,0,0,1,0],[56,1,1,2,1],[57,1,1,0,0],[58,1,1,1,0],[59,1,1,1,0],[60,0,0,2,0],[61,0,0,3,0],[62,0,1,1,0],[63,0,1,1,0],[64,0,0,4,0],[65,0,0,1,0],[66,0,0,11,0],[67,0,0,1,0],[68,0,0,1,1],[69,0,0,1,0],[70,0,0,1,0],[71,0,0,3,1],[72,0,0,2,1],[73,0,0,2,0],[74,0,0,2,1],[75,0,0,2,1],[76,0,0,2,3],[77,0,0,7,0],[78,0,0,3,1],[79,0,0,1,1],[80,0,0,1,0],[81,0,0,1,0],[82,0,0,1,0],[83,0,0,1,1],[84,0,0,1,1],[88,0,0,0,1],[93,0,0,0,1],[94,0,0,1,0],[95,0,0,1,1],[98,0,0,0,3],[101,0,0,1,1],[102,0,0,0,1],[106,0,0,0,1],[108,0,0,1,0],[110,0,0,0,1],[111,0,0,0,1],[112,0,0,0,1],[113,0,0,0,1],[114,0,0,0,3],[115,0,0,0,1]],"does":[[0,0,0,1,0],[10,0,0,1,0],[35,0,0,1,0],[36,0,0,0,1],[37,0,0,1,0],[63,0,1,0,0],[67,0,0,0,1],[68,0,0,1,0],[97,0,0,0,1],[98,0,0,0,1]],"not":[[0,0,0,1,0],[7,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[43,0,0,1,0],[48,0,0,1,0],[54,0,0,1,0],[56,0,0,1,0],[60,0,0,1,0],[63,0,1,0,0],[74,0,0,1,0],[86,0,0,1,0],[100,0,0,1,0],[104,0,0,1,0],[109,0,0,1,0],[117,0,0,1,0]],"ship":[[0,0,0,1,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,1],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[39,0,0,1,0],[56,0,0,1,0],[57,0,0,1,0],[64,0,0,1,0]],"ui":[[0,0,0,1,0],[14,0,0,1,0],[21,0,0,1,0],[33,0,0,1,0],[39,0,0,1,0],[52,0,0,0,1],[56,0,0,1,1],[61,0,0,1,0],[63,0,0,1,0],[64,0,0,1,0],[99,0,0,1,0],[111,0,0,1,0]],"your":[[0,0,0,1,0],[2,0,0,3,0],[14,0,0,1,0],[19,0,0,1,0],[22,0,0,2,0],[23,0,0,0,1],[26,0,0,1,1],[29,0,0,4,0],[30,0,0,1,0],[32,0,0,2,0],[33,0,0,1,0],[35,0,0,1,0],[37,0,0,1,0],[40,0,0,2,0],[45,0,0,1,0],[49,0,0,1,0],[51,0,0,1,0],[52,0,0,2,0],[53,0,0,1,0],[56,0,0,2,1],[57,0,1,1,0],[58,0,0,1,0],[63,0,0,1,0],[64,0,0,2,0],[67,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[83,0,0,1,0],[93,0,0,1,0],[99,0,0,2,0],[106,0,0,1,0],[108,0,0,1,0],[114,0,0,1,0],[117,0,0,1,0]],"docs":[[0,0,0,1,0],[2,0,0,0,1],[5,0,0,0,1],[6,0,0,2,1],[10,0,0,1,2],[12,0,0,0,1],[14,0,0,1,0],[16,0,0,1,2],[17,0,0,2,1],[18,0,0,1,3],[20,0,0,2,0],[22,1,1,5,0],[23,1,1,1,4],[24,1,1,3,2],[25,1,2,2,0],[26,1,1,3,10],[27,1,1,1,3],[28,1,1,7,0],[29,1,2,5,0],[30,1,1,3,0],[31,1,1,1,0],[32,1,1,2,0],[33,1,1,8,0],[34,1,1,2,2],[35,1,1,2,2],[36,1,1,3,3],[37,1,1,2,4],[38,1,1,1,0],[39,1,1,7,4],[40,1,1,7,0],[41,1,1,1,0],[42,0,0,1,0],[43,0,0,2,0],[44,0,0,0,3],[45,0,0,0,1],[46,0,0,0,1],[47,0,0,0,1],[48,0,0,1,0],[49,0,0,2,0],[50,0,0,0,5],[51,0,0,3,0],[52,0,0,2,1],[53,0,0,3,0],[54,0,0,2,0],[56,0,0,3,2],[57,0,0,2,0],[60,0,0,3,0],[61,0,0,4,0],[63,0,0,1,0],[64,0,0,2,0],[65,0,0,1,0],[66,0,0,1,0],[67,0,0,2,0],[68,0,0,6,1],[69,0,0,2,2],[70,0,0,3,0],[72,0,0,8,0],[73,0,0,0,5],[74,0,0,2,3],[75,0,0,1,0],[79,0,0,1,2],[80,0,0,0,1],[81,0,0,0,2],[83,0,0,1,0],[87,0,0,3,0],[88,0,0,1,1],[90,0,1,0,0],[93,0,0,0,1],[94,0,0,1,0],[95,0,0,1,0],[96,0,0,4,0],[97,0,0,0,10],[98,0,0,1,4],[99,0,0,1,2],[100,0,0,1,0],[101,0,0,0,1],[105,0,0,1,0],[107,0,0,1,0],[108,0,0,1,0],[110,0,0,1,3],[111,0,0,0,2],[112,0,1,0,0],[114,0,0,1,0],[115,0,0,2,0],[117,0,0,2,0]],"app":[[0,0,0,1,0],[2,0,0,1,0],[3,0,0,1,0],[12,0,0,1,1],[14,0,0,1,0],[16,0,0,0,1],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,0,1,0],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,2,0],[40,0,0,1,0],[41,0,0,1,0],[63,0,0,1,0],[64,0,0,1,0]],"owns":[[0,0,0,1,0],[12,0,0,0,2],[25,0,0,1,0],[62,0,1,0,0]],"runtime":[[0,0,0,1,0],[12,0,0,0,2],[14,0,0,1,0],[72,0,0,1,0],[97,0,0,0,1],[108,0,0,2,0],[109,0,0,1,0],[110,0,0,1,0],[111,0,1,2,0],[112,0,1,1,0],[113,0,0,1,0],[114,0,0,2,0],[115,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0]],"rendering":[[0,0,0,1,0],[32,0,0,1,0],[82,0,0,1,0],[106,0,0,1,0]],"styling":[[0,0,0,1,0],[4,0,0,2,0],[12,0,0,0,1],[63,0,0,1,0]],"accessibility":[[0,0,0,1,0]],"only":[[0,0,0,1,0],[10,0,0,1,0],[14,0,0,1,0],[18,0,0,2,0],[25,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[35,0,0,1,0],[53,0,0,1,0],[96,0,0,1,0],[107,0,0,1,0],[113,0,0,1,0],[115,0,0,1,0],[117,0,0,1,0]],"has":[[0,0,0,1,0],[20,0,0,1,0],[53,0,0,1,0]],"honor":[[0,0,0,1,0]],"small":[[0,0,0,1,0],[51,0,0,1,0],[110,0,0,1,0]],"naming":[[0,0,0,1,0],[2,0,1,0,0]],"contract":[[0,0,0,1,0],[2,0,1,1,0],[14,0,0,1,0],[50,0,0,1,0],[55,0,0,1,0],[93,0,0,1,0]],"so":[[0,0,0,1,0],[1,0,0,1,0],[4,0,0,1,0],[7,0,0,1,0],[13,0,0,1,0],[20,0,0,1,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,1],[27,0,0,1,2],[28,0,0,1,0],[29,0,0,2,0],[30,0,0,1,0],[31,0,0,1,0],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,2,1],[36,0,0,1,0],[37,0,0,2,0],[38,0,0,1,0],[39,0,0,3,0],[40,0,0,1,0],[41,0,0,1,0],[42,0,0,2,0],[43,0,0,1,0],[44,0,0,2,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,1,0],[49,0,0,1,0],[51,0,0,1,0],[62,0,0,1,0],[82,0,0,1,0],[83,0,0,1,0],[87,0,0,1,0],[94,0,0,1,0],[98,0,0,1,0],[104,0,0,1,0],[105,0,0,1,0],[109,0,0,2,0],[113,0,0,1,0]],"remark":[[0,0,0,1,0],[2,0,0,2,0],[4,0,0,1,0],[5,0,0,1,0],[9,0,0,1,0],[13,0,0,0,2],[14,0,0,1,0],[26,0,0,0,1],[35,0,0,1,1],[49,0,0,1,0],[50,0,0,3,4],[51,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,2,0],[55,0,0,1,0],[62,0,0,1,0],[66,0,0,1,0],[68,0,0,1,0],[77,0,0,1,0],[78,0,0,1,0],[79,0,0,0,1],[83,0,1,1,1],[87,0,0,1,0],[98,0,0,0,1],[102,1,1,1,1],[103,1,1,0,0],[104,1,1,0,0],[105,1,1,0,0],[106,1,1,0,1],[107,1,1,0,0]],"each":[[0,0,0,1,0],[1,0,0,1,0],[3,0,0,1,0],[17,0,0,2,0],[25,0,0,1,0],[26,0,0,0,1],[51,0,0,2,0],[53,0,0,1,0],[54,0,0,2,0],[57,0,0,1,0],[64,0,0,1,0],[68,0,0,1,0],[75,0,0,1,0],[101,0,0,1,0],[102,0,0,1,0],[104,0,0,1,0],[109,0,0,1,0]],"component":[[0,0,0,1,0],[1,0,0,1,0],[3,0,1,0,0],[4,0,1,0,0],[5,0,1,0,0],[6,0,1,0,0],[7,0,1,0,0],[8,0,1,0,0],[9,0,1,0,0],[10,0,1,0,0],[11,0,1,0,0],[12,0,1,1,0],[13,0,1,0,0],[14,0,0,1,0],[19,0,0,1,0],[35,0,0,0,1],[50,0,0,1,0],[53,0,0,1,0],[63,0,0,2,0],[83,0,0,1,0],[99,0,0,1,0],[102,0,0,1,0],[104,0,0,3,0]],"agents":[[0,0,0,1,0],[1,0,0,1,0],[4,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[9,0,0,1,0],[13,0,0,0,2],[22,0,0,2,0],[23,0,0,1,1],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,1,3,0],[30,0,0,3,0],[31,0,0,1,0],[32,0,0,1,0],[33,0,0,2,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,0,1,0],[37,0,1,3,0],[38,0,1,1,0],[39,0,0,1,0],[40,0,0,1,0],[41,0,0,1,0],[51,0,0,1,0],[52,0,0,1,1],[56,0,0,1,1],[57,0,0,1,0],[58,0,0,2,0],[59,0,0,1,0],[62,0,0,1,0],[69,0,0,0,1],[95,0,0,1,0],[96,0,0,2,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,3,0],[101,0,0,1,0]],"search":[[0,0,0,1,0],[1,0,0,1,0],[5,0,0,1,0],[13,0,0,0,1],[19,0,0,2,0],[21,0,0,1,0],[23,0,0,0,1],[24,0,0,1,0],[28,0,0,2,0],[32,0,0,2,0],[33,0,0,7,0],[34,0,0,2,0],[35,0,0,2,3],[36,0,0,1,0],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,2,0],[40,0,0,3,0],[41,0,0,2,0],[50,0,0,1,2],[51,0,0,3,0],[52,0,0,1,5],[53,0,0,1,0],[54,0,0,1,0],[56,0,0,3,6],[57,0,0,1,0],[58,0,0,2,0],[59,0,0,1,0],[60,0,0,1,0],[61,0,0,1,0],[62,0,0,1,0],[64,0,0,1,0],[66,0,0,1,0],[68,0,0,3,0],[69,0,0,1,2],[72,0,0,1,0],[73,0,0,0,3],[77,0,0,1,0],[108,1,1,2,0],[109,1,1,5,0],[110,1,1,2,3],[111,1,2,2,3],[112,1,1,2,1],[113,1,1,1,1],[114,1,1,1,3],[115,1,1,1,1],[116,1,1,1,0],[117,1,1,2,0]],"llms":[[0,0,0,1,0],[9,0,0,1,0],[13,0,0,0,2],[16,0,0,3,0],[17,0,0,2,5],[18,0,0,1,0],[21,0,0,2,0],[23,0,0,0,2],[24,0,0,1,0],[28,0,0,3,0],[29,0,0,4,0],[33,0,0,2,0],[34,0,0,1,0],[36,0,0,1,0],[40,0,0,2,0],[50,0,0,1,5],[51,0,0,5,0],[53,0,0,3,0],[56,0,0,1,2],[57,0,0,1,0],[58,0,0,3,0],[59,0,0,1,0],[60,0,0,1,0],[62,0,0,1,0],[64,0,0,1,0],[68,0,0,3,0],[69,0,0,1,4],[72,0,0,3,0],[73,0,0,0,3],[74,0,0,1,0],[95,0,0,3,0],[96,0,0,6,0],[97,0,1,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,2,0],[101,0,0,1,0],[106,0,0,1,0]],"full":[[0,0,0,1,0],[16,0,0,1,0],[17,0,0,1,4],[18,0,0,1,0],[19,0,0,2,0],[20,0,0,1,0],[21,0,0,1,0],[23,0,0,0,1],[24,0,0,1,0],[26,0,0,1,0],[28,0,0,2,0],[29,0,0,3,0],[33,0,0,1,0],[35,0,0,1,0],[40,0,0,2,0],[43,0,0,1,0],[50,0,0,1,1],[51,0,0,3,0],[53,0,0,2,0],[56,0,0,0,1],[62,0,0,1,0],[68,0,0,2,0],[69,0,0,0,2],[71,0,0,1,0],[73,0,0,0,1],[75,0,0,1,0],[83,0,0,1,0],[90,0,0,1,0],[95,0,0,3,0],[96,0,0,5,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,2,0],[101,0,0,1,0],[106,0,0,1,0]],"txt":[[0,0,0,1,0],[13,0,0,0,2],[16,0,0,3,0],[17,0,0,2,3],[18,0,0,1,0],[21,0,0,2,0],[23,0,0,0,2],[24,0,0,1,0],[28,0,0,3,0],[29,0,0,4,0],[33,0,0,2,0],[34,0,0,1,0],[36,0,0,1,0],[40,0,0,2,0],[50,0,0,1,2],[51,0,0,4,0],[53,0,0,2,0],[56,0,0,1,2],[57,0,0,1,0],[58,0,0,3,0],[59,0,0,1,0],[60,0,0,1,0],[62,0,0,1,0],[64,0,0,1,0],[68,0,0,3,0],[69,0,0,1,4],[72,0,0,3,0],[73,0,0,0,3],[74,0,0,1,0],[95,0,0,3,0],[96,0,0,6,0],[97,0,1,1,1],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0]],"bundles":[[0,0,0,1,0],[24,0,0,1,0],[31,0,0,1,0],[32,0,0,1,0],[50,0,0,1,0],[51,0,0,2,0],[54,0,0,1,0],[56,0,0,1,0],[58,0,0,1,0],[61,0,0,1,0],[62,0,0,1,0],[64,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[72,0,0,1,0],[74,0,0,1,0],[95,1,1,0,0],[96,1,1,1,0],[97,1,1,0,0],[98,1,1,0,0],[99,1,1,2,0],[100,1,1,0,0],[101,1,1,0,0],[106,0,0,1,0]],"why":[[1,0,1,0,0],[104,0,1,0,0]],"all":[[1,0,1,0,0],[35,0,0,1,0],[51,0,0,1,0],[56,0,0,1,0],[57,0,0,1,0],[58,0,0,2,0],[59,0,0,1,0],[66,0,0,1,0],[69,0,0,0,1],[96,0,0,1,0],[100,0,0,1,0]],"interactive":[[1,0,0,1,0],[13,0,0,1,0],[50,0,0,1,0],[53,0,0,1,0],[102,0,0,1,0]],"like":[[1,0,0,1,0],[4,0,0,1,0],[69,0,0,1,0]],"tabs":[[1,0,0,2,0],[2,0,0,1,0],[7,0,1,0,2],[50,0,0,1,0],[53,0,0,1,0],[58,0,0,1,0],[103,0,0,1,0],[111,0,0,0,1]],"callout":[[1,0,0,2,0],[2,0,0,1,0],[4,0,1,0,2],[11,0,0,2,0],[12,0,0,0,2],[14,0,0,1,0],[50,0,0,1,0],[53,0,0,1,0],[58,0,0,1,0],[103,0,0,1,0]],"render":[[1,0,0,2,0],[3,0,0,1,0],[12,0,0,0,1],[13,0,0,1,0],[37,0,0,1,0],[40,0,0,1,0],[44,0,0,1,0],[52,0,0,0,1],[54,0,0,1,0],[80,0,0,1,0]],"fine":[[1,0,0,1,0],[35,0,0,1,0],[116,0,0,1,0]],"browser":[[1,0,0,1,0],[40,0,0,1,0],[52,0,0,0,1]],"but":[[1,0,0,1,0],[4,0,0,2,0],[16,0,0,1,0],[61,0,0,1,0],[64,0,0,1,0],[99,0,0,1,0]],"do":[[1,0,0,1,0],[4,0,0,1,0],[7,0,0,1,0],[113,0,0,0,1]],"nothing":[[1,0,0,1,0],[48,0,0,1,0]],"reading":[[1,0,0,1,0],[52,0,0,1,0],[54,0,0,1,0],[112,0,1,0,0]],"raw":[[1,0,0,1,0]],"text":[[1,0,0,1,0],[13,0,0,1,0],[16,0,0,1,0],[29,0,0,1,0],[33,0,0,3,0],[37,0,0,5,5],[40,0,0,3,0],[52,0,0,1,1],[53,0,0,1,0],[64,0,0,1,0],[72,0,0,3,0],[100,0,0,1,0],[109,0,0,1,0],[114,0,0,1,0],[116,0,0,1,0]],"flattening":[[1,0,0,1,0],[2,0,0,1,0],[9,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[83,0,0,1,0],[87,0,0,1,0]],"converts":[[1,0,0,1,0],[34,0,0,1,0],[58,0,0,1,0]],"portable":[[1,0,0,1,0],[53,0,0,1,0],[61,0,0,1,0]],"equivalent":[[1,0,0,1,0],[7,0,0,1,0],[10,0,0,1,0],[53,0,0,1,0],[75,0,0,1,0],[102,0,0,1,0]],"conversion":[[1,0,0,1,0],[6,0,0,1,1],[9,0,0,1,0],[11,0,0,1,0],[12,0,0,0,1],[16,0,0,1,0],[35,0,0,0,1],[56,0,0,1,0],[62,0,0,1,0],[64,0,0,1,0],[72,0,0,1,0],[78,0,0,1,0],[79,0,0,1,0],[80,0,0,1,0],[81,0,0,1,0],[82,0,0,2,0],[83,0,0,1,0],[97,0,0,0,1],[98,0,0,1,0],[106,0,0,2,0],[110,0,0,1,0]],"time":[[1,0,0,1,0],[11,0,0,1,0],[22,0,0,1,0],[35,0,0,0,1],[39,0,0,1,0],[54,0,0,1,0],[94,0,0,1,0],[106,0,0,2,0],[108,0,0,1,0],[110,0,1,0,0]],"becomes":[[1,0,0,4,0],[15,0,0,1,0],[16,0,0,2,0],[17,0,0,1,0],[18,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[50,0,0,3,0],[117,0,0,1,0]],"blockquote":[[1,0,0,1,0],[4,0,0,1,0],[50,0,0,1,0],[53,0,0,1,0],[103,0,0,1,0]],"stack":[[1,0,0,1,0],[50,0,0,2,1],[53,0,0,1,0],[54,0,0,1,0],[62,0,0,1,0],[68,0,0,1,0],[78,0,0,1,0],[83,0,0,2,0],[87,0,0,1,0],[102,0,0,2,0],[103,0,1,2,0],[104,0,0,1,0],[105,0,0,2,0],[106,0,0,1,0],[107,0,0,1,0]],"bold":[[1,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[50,0,0,1,0],[53,0,0,1,0],[103,0,0,1,0]],"headings":[[1,0,0,1,0],[7,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[53,0,0,3,0],[96,0,0,1,0],[109,0,0,1,0]],"one":[[1,0,0,1,0],[8,0,0,1,0],[16,0,0,1,0],[21,0,0,3,0],[25,0,0,1,0],[29,0,0,1,0],[32,0,0,1,0],[33,0,0,1,0],[34,0,1,1,0],[35,0,0,3,0],[36,0,0,1,1],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,2,0],[40,0,0,2,0],[41,0,0,1,0],[49,0,0,2,0],[50,0,0,1,0],[51,0,0,2,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,2,0],[55,0,0,1,0],[56,0,0,2,0],[57,0,0,2,0],[58,0,0,1,0],[59,0,0,1,0],[62,0,0,1,0],[64,0,0,1,0],[67,0,1,0,1],[68,0,0,2,0],[72,0,0,1,0],[80,0,0,1,0],[81,0,0,1,0],[96,0,0,2,0],[97,0,0,0,1],[98,0,0,0,1],[100,0,0,1,0],[104,0,0,2,0],[106,0,0,1,0],[114,0,0,2,0]],"per":[[1,0,0,1,0],[8,0,0,2,0],[17,0,0,1,0],[21,0,0,1,0],[35,0,0,1,0],[40,0,0,1,0],[45,0,0,1,0],[56,0,0,0,1],[68,0,0,1,0],[69,0,0,0,1],[78,0,0,1,0],[95,0,0,1,0],[96,0,0,1,0],[103,0,0,1,0],[106,0,0,1,0]],"tab":[[1,0,0,1,0],[2,0,0,1,0],[7,0,0,0,6],[103,0,0,1,0]],"typetable":[[1,0,0,1,0],[2,0,0,1,0],[11,0,1,1,1],[50,0,0,1,0],[58,0,0,1,0],[103,0,0,1,0],[107,0,0,1,0]],"table":[[1,0,0,1,0],[8,0,0,1,0],[11,0,0,1,0],[50,0,0,1,0],[103,0,0,2,0],[106,0,0,1,0]],"mermaid":[[1,0,0,2,0],[2,0,0,1,0],[13,0,1,1,2],[17,0,0,0,1],[23,0,0,0,1],[33,0,0,1,0],[50,0,0,0,1],[52,0,0,0,1],[56,0,0,0,1],[58,0,0,1,0],[82,0,0,1,0],[103,0,0,2,1]],"fenced":[[1,0,0,1,0],[13,0,0,1,0],[103,0,0,2,0]],"block":[[1,0,0,1,0],[13,0,0,1,0],[15,0,0,1,0],[103,0,0,2,0]],"diagram":[[1,0,0,1,0],[13,0,0,1,0],[59,0,0,1,0]],"source":[[1,0,0,1,0],[12,0,0,1,1],[13,0,0,1,0],[17,0,0,1,0],[21,0,0,1,0],[24,0,0,1,0],[26,0,0,0,1],[27,0,0,0,1],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,0,1,0],[37,0,0,1,0],[38,0,0,1,0],[39,0,1,3,0],[40,0,0,1,0],[41,0,0,1,0],[42,0,0,1,0],[49,0,0,1,0],[50,0,0,1,0],[51,0,0,2,0],[52,0,0,2,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[56,0,0,1,1],[57,0,0,1,0],[58,0,0,2,0],[59,0,0,1,0],[62,0,0,1,0],[75,0,0,1,0],[82,0,0,1,0],[83,0,0,1,0],[84,0,0,1,0],[95,0,0,1,0],[105,0,0,1,0],[108,0,0,2,0],[109,0,0,1,0],[110,0,0,1,0],[111,0,0,1,0],[112,0,0,1,0],[113,0,1,1,0],[114,0,0,1,0],[115,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0]],"survives":[[1,0,0,1,0]],"other":[[1,0,0,1,0],[13,0,0,1,0],[45,0,1,0,0],[49,0,0,1,0],[51,0,0,1,0],[56,0,0,1,0],[86,0,0,1,0],[94,0,0,1,0]],"tooling":[[1,0,0,1,0],[22,0,0,1,0]],"this":[[1,0,0,1,0],[4,0,0,1,0],[6,0,0,1,1],[21,0,1,0,0],[22,0,0,1,0],[24,0,0,1,0],[30,0,1,2,0],[32,0,0,1,0],[39,0,0,1,0],[48,0,0,1,0],[49,0,0,1,0],[80,0,0,1,0],[84,0,0,1,0],[103,0,0,1,0],[105,0,0,1,0]],"means":[[1,0,0,1,0]],"same":[[1,0,0,1,0],[2,0,0,1,0],[6,0,0,1,0],[17,0,0,1,0],[21,0,0,1,0],[22,0,0,1,0],[37,0,0,3,0],[42,0,0,1,0],[47,0,0,1,0],[51,0,0,1,0],[52,0,0,2,0],[53,0,0,2,0],[58,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[75,0,0,1,0],[87,0,0,1,0],[94,0,0,1,0],[95,0,0,1,0],[99,0,0,2,0],[112,0,0,1,0],[115,0,0,1,0]],"content":[[1,0,0,1,0],[4,0,0,1,1],[6,0,0,1,0],[7,0,0,3,0],[9,0,0,4,0],[28,0,0,1,0],[33,0,0,2,0],[37,0,0,4,1],[40,0,0,3,0],[47,0,0,1,0],[48,0,0,1,0],[50,0,0,0,1],[51,0,0,3,0],[52,0,0,3,1],[53,0,0,1,0],[54,0,0,1,0],[56,0,0,0,1],[58,0,0,2,0],[61,0,0,2,0],[64,0,0,3,0],[68,0,0,3,0],[69,0,0,1,2],[71,0,0,1,0],[73,0,0,0,1],[75,0,0,1,0],[87,0,1,0,0],[89,0,0,0,1],[94,0,0,2,0],[95,0,0,1,0],[96,0,0,1,0],[105,0,0,1,0],[109,0,0,4,0],[110,0,0,1,1],[111,0,0,0,2],[112,0,0,0,2],[113,0,0,0,1],[114,0,0,0,1],[115,0,0,0,1]],"reaches":[[1,0,0,1,0]],"three":[[1,0,0,1,0],[15,0,0,1,0],[35,0,0,1,0],[49,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[52,0,1,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[58,0,0,1,0],[112,0,0,1,0],[114,0,0,1,0]],"audiences":[[1,0,0,1,0],[49,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[52,0,1,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[58,0,0,1,0]],"humans":[[1,0,0,1,0],[6,0,0,1,0],[22,0,0,1,0],[32,0,0,1,0],[33,0,0,2,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,0,1,0],[37,0,0,2,0],[38,0,0,1,0],[39,0,0,1,0],[40,0,0,1,0],[41,0,0,1,0],[52,0,0,1,1],[56,0,0,1,1],[57,0,0,1,0],[58,0,0,1,0],[59,0,0,1,0]],"without":[[1,0,0,1,0],[16,0,0,1,0],[21,0,0,1,0],[22,0,0,1,0],[74,0,0,1,0],[80,0,0,1,0],[82,0,0,1,0],[101,0,0,1,0],[108,0,0,1,0],[109,0,0,1,0]],"you":[[1,0,0,1,0],[2,0,0,1,0],[11,0,0,1,0],[14,0,0,1,0],[19,0,0,1,0],[21,0,1,1,0],[22,0,0,1,0],[26,0,0,1,0],[32,0,0,1,0],[35,0,0,2,0],[40,0,0,2,0],[46,0,0,1,0],[53,0,0,1,0],[56,0,0,1,0],[57,0,0,1,0],[58,0,1,0,0],[61,0,0,3,0],[64,0,0,2,0],[66,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[75,0,0,1,0],[77,0,0,1,0],[78,0,0,1,0],[80,0,0,1,0],[93,0,0,1,0],[100,0,0,1,0],[104,0,0,2,0],[107,0,0,2,0],[109,0,0,1,0],[112,0,0,2,0],[113,0,0,1,0],[115,0,0,1,0]],"maintaining":[[1,0,0,1,0]],"two":[[1,0,0,1,0],[2,0,0,1,0],[29,0,0,1,0],[36,0,0,1,0],[37,0,0,1,0],[53,0,0,1,0],[57,0,0,1,0],[71,0,0,1,0],[100,0,0,1,0],[107,0,0,1,0]],"copies":[[1,0,0,1,0]],"recognizes":[[2,0,0,1,0]],"these":[[2,0,0,1,0],[78,0,0,1,0],[100,0,0,1,0]],"names":[[2,0,0,4,0],[14,0,0,1,0],[49,0,0,1,0],[59,0,0,1,0],[104,0,0,1,0],[117,0,0,1,0]],"if":[[2,0,0,2,0],[14,0,0,1,0],[16,0,0,1,0],[17,0,0,1,0],[21,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,0,1],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[35,0,0,1,0],[37,0,0,0,6],[38,0,0,0,2],[39,0,0,1,0],[40,0,0,2,0],[54,0,0,1,0],[83,0,0,1,0],[99,0,0,0,1],[104,0,0,1,0],[107,0,0,1,0]],"just":[[2,0,0,1,0],[109,0,0,1,0]],"works":[[2,0,0,1,0],[21,0,0,1,0],[34,0,0,1,0],[49,1,1,0,0],[50,1,1,0,0],[51,1,1,0,0],[52,1,1,0,0],[53,1,1,0,0],[54,1,1,0,0],[55,1,1,0,0],[59,0,0,1,0],[97,0,0,0,3],[111,0,0,1,0]],"accordion":[[2,0,0,1,0],[9,0,1,0,2],[103,0,0,1,0]],"accordionitem":[[2,0,0,1,0],[9,0,0,0,2]],"card":[[2,0,0,1,0],[5,0,0,0,1]],"cards":[[2,0,0,1,0],[5,0,1,0,2],[103,0,0,1,0]],"commandtabs":[[2,0,0,1,0],[8,0,1,0,3],[103,0,0,1,0]],"details":[[2,0,0,1,0],[9,0,0,2,1],[103,0,0,1,0]],"example":[[2,0,0,1,0],[3,0,0,1,0],[12,0,1,1,2],[24,0,0,0,1],[26,0,0,0,1],[34,0,0,0,1],[68,0,0,0,1],[74,0,0,0,1],[97,0,1,0,5],[98,0,0,0,2],[99,0,0,0,1],[101,0,0,0,1],[103,0,0,1,0],[104,0,0,1,0],[110,0,0,0,1]],"extractedtypetable":[[2,0,0,1,0],[11,0,1,1,0],[35,0,0,1,1],[103,0,0,1,0],[106,0,0,1,1]],"section":[[2,0,0,1,0],[3,0,0,1,0],[17,0,0,1,0],[21,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[74,0,0,1,0],[92,0,0,1,0],[103,0,0,1,0],[109,0,0,1,0]],"selector":[[2,0,0,1,0]],"step":[[2,0,0,1,0],[6,0,0,1,4],[26,0,0,1,0],[35,0,0,1,0],[54,0,0,1,0]],"steps":[[2,0,0,1,0],[6,0,1,0,2],[44,0,0,0,1],[58,0,0,1,0],[103,0,0,1,0]],"topicswitcher":[[2,0,0,1,0],[10,0,1,0,1],[19,0,0,1,0],[103,0,0,1,0]],"uses":[[2,0,0,1,0],[44,0,0,0,2],[52,0,0,1,0]],"different":[[2,0,0,1,0],[39,0,0,1,0],[43,0,0,1,0]],"have":[[2,0,0,1,0],[30,0,0,1,0],[46,0,0,1,0],[70,0,0,1,0],[112,0,0,1,0]],"options":[[2,0,0,1,0],[71,0,0,0,1],[72,0,0,0,1],[75,0,0,0,1],[106,0,0,1,0],[114,0,0,1,0]],"rename":[[2,0,0,1,0]],"match":[[2,0,0,1,0],[117,0,0,1,0]],"add":[[2,0,0,1,0],[8,0,0,3,1],[12,0,0,1,0],[14,0,0,1,0],[26,0,0,1,0],[35,0,0,1,0],[58,0,0,1,0],[66,0,0,3,0],[67,0,0,1,0],[72,0,0,1,0],[75,0,0,1,0],[93,0,0,1,0],[105,0,0,1,0],[107,0,0,1,0],[117,0,1,1,0]],"custom":[[2,0,0,1,0],[26,0,0,1,0],[75,0,0,1,0],[77,0,0,2,0],[78,0,0,1,0],[88,0,0,3,0],[93,0,1,1,0],[104,0,0,2,0],[107,0,0,1,0]],"plugin":[[2,0,0,1,0],[14,0,0,2,0],[26,0,0,1,0],[35,0,0,2,0],[37,0,0,1,0],[50,0,0,0,1],[53,0,0,1,0],[62,0,0,1,0],[68,0,0,1,0],[77,0,0,1,0],[78,0,0,2,0],[79,0,0,1,0],[83,0,0,1,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,2,0],[105,0,0,1,0],[106,0,0,4,0],[107,0,1,2,0]],"that":[[2,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[20,0,0,1,0],[30,0,0,2,0],[34,0,0,1,0],[36,0,0,1,0],[37,0,0,2,0],[42,0,0,1,0],[43,0,0,2,0],[45,0,0,1,0],[53,0,0,3,0],[54,0,0,1,0],[56,0,0,1,0],[57,0,0,2,0],[64,0,0,1,0],[69,0,0,1,0],[74,0,0,1,0],[87,0,0,1,0],[89,0,0,1,0],[93,0,0,1,0],[97,0,0,0,2],[98,0,0,0,1],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,1,0],[107,0,0,1,0],[108,0,0,1,0],[114,0,0,1,0],[117,0,0,1,0]],"maps":[[2,0,0,1,0]],"back":[[2,0,0,1,0],[29,0,0,1,0],[37,0,0,1,0],[40,0,0,1,0],[80,0,0,1,0]],"above":[[2,0,0,1,0],[11,0,0,1,1],[37,0,0,1,0],[61,0,0,1,0]],"tsx":[[2,0,0,0,1],[4,0,0,0,1],[5,0,0,0,1],[6,0,0,0,1],[7,0,0,0,1],[8,0,0,0,1],[9,0,0,0,1],[10,0,0,0,1],[11,0,0,0,1],[12,0,0,0,3],[13,0,0,0,1]],"import":[[2,0,0,0,1],[12,0,0,0,1],[26,0,0,0,5],[35,0,0,0,2],[36,0,0,0,1],[37,0,0,0,1],[74,0,0,0,2],[78,0,0,0,1],[79,0,0,0,1],[83,0,0,0,1],[84,0,0,0,1],[88,0,0,0,1],[93,0,0,0,2],[95,0,0,0,1],[98,0,0,0,3],[99,0,0,2,1],[102,0,0,0,1],[103,0,0,1,0],[106,0,0,0,1],[110,0,0,0,1],[111,0,0,0,3],[112,0,0,0,1],[113,0,0,0,1],[114,0,0,0,3],[115,0,0,0,1]],"mdxcomponents":[[2,0,0,0,2],[12,0,0,0,1]],"const":[[2,0,0,0,1],[26,0,0,0,3],[27,0,0,0,2],[35,0,0,0,4],[37,0,0,0,3],[38,0,0,0,3],[80,0,0,0,1],[88,0,0,0,1],[93,0,0,0,1],[99,0,0,0,2],[101,0,0,0,1],[106,0,0,0,1],[111,0,0,0,1],[112,0,0,0,3],[113,0,0,0,1],[114,0,0,0,1],[115,0,0,0,1]],"reference":[[3,0,1,0,0],[4,0,1,0,0],[5,0,1,0,1],[6,0,1,0,0],[7,0,1,0,0],[8,0,1,0,0],[9,0,1,1,1],[10,0,1,0,0],[11,0,1,0,0],[12,0,1,0,0],[13,0,1,0,0],[17,0,0,0,1],[20,0,0,1,0],[31,0,0,1,0],[41,0,0,2,0],[43,0,0,1,0],[55,0,0,1,0],[75,0,0,1,0],[84,0,0,1,0],[97,0,0,0,2]],"below":[[3,0,0,1,0],[51,0,0,1,0],[88,0,0,1,0]],"shows":[[3,0,0,1,0]],"authored":[[3,0,0,1,0],[13,0,0,1,0],[15,0,0,1,0],[16,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[69,0,0,1,0]],"live":[[3,0,0,1,0],[7,0,0,1,0],[24,0,0,1,0],[29,0,0,1,0],[34,0,0,1,0]],"switch":[[3,0,0,1,0]],"view":[[3,0,0,1,0]],"robot":[[3,0,0,1,0]],"icon":[[3,0,0,1,0],[19,0,0,2,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0]],"header":[[3,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0]],"see":[[3,0,0,1,0],[4,0,0,1,0],[16,0,0,1,0],[20,0,0,1,0],[30,0,0,1,0],[35,0,0,1,0],[36,0,0,1,0],[39,0,0,1,0],[40,0,0,1,0],[43,0,0,1,0],[50,0,0,2,0],[52,0,0,1,0],[53,0,0,1,0],[59,0,0,1,0],[63,0,0,1,0],[67,0,0,1,0],[69,0,0,3,0],[74,0,0,1,0],[75,0,0,1,0],[83,0,0,1,0],[87,0,0,1,0],[94,0,0,1,0]],"flattened":[[3,0,0,1,0],[6,0,0,1,1],[9,0,0,1,0],[50,0,0,2,0],[51,0,0,1,0],[68,0,0,1,0],[69,0,0,1,1],[96,0,0,1,0],[102,0,0,1,0],[103,0,0,1,0]],"side":[[3,0,0,2,0],[13,0,0,1,0],[106,0,0,1,0]],"wraps":[[4,0,0,1,0]],"supporting":[[4,0,0,2,0],[9,0,0,1,1]],"context":[[4,0,0,2,0],[19,0,0,1,0],[24,0,0,1,0],[29,0,0,1,0],[47,0,0,1,0],[51,0,0,1,0],[62,0,0,1,0],[95,0,0,1,0],[96,0,0,3,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0],[112,0,0,1,0],[113,0,0,2,1]],"warnings":[[4,0,0,2,0],[44,0,0,2,1],[46,0,0,0,1],[75,0,0,3,0],[89,0,0,0,1],[93,0,0,1,0]],"tips":[[4,0,0,2,0]],"variants":[[4,0,0,2,0]],"change":[[4,0,0,2,0]],"identically":[[4,0,0,2,0],[64,0,0,1,0]],"info":[[4,0,0,1,1],[11,0,0,1,1]],"heads":[[4,0,0,1,1]],"up":[[4,0,0,1,1],[42,0,0,1,0]],"callouts":[[4,0,0,1,0]],"wrap":[[4,0,0,1,0]],"flattens":[[4,0,0,1,0],[5,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[53,0,0,2,0],[78,0,0,1,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,1,0],[107,0,0,1,0]],"them":[[4,0,0,1,0],[9,0,0,1,1],[19,0,0,1,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,2,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,2,0],[30,0,0,1,0],[31,0,0,1,0],[37,0,0,0,1],[48,0,0,1,0],[83,0,0,1,0],[90,0,0,1,0],[110,0,0,1,0]],"blockquotes":[[4,0,0,1,0]],"still":[[4,0,0,1,0],[9,0,0,1,0],[20,0,0,1,0],[87,0,0,1,0]],"warning":[[4,0,0,2,0],[37,0,0,1,0],[44,0,0,1,0],[75,0,0,1,0]],"don":[[4,0,0,1,0],[19,0,0,1,0],[30,0,0,2,0],[43,0,0,1,0],[56,0,0,1,0],[90,0,0,1,0],[104,0,0,1,0],[107,0,0,1,0],[114,0,0,1,0]],"success":[[4,0,0,1,0],[12,0,0,0,1],[72,0,0,1,0]],"error":[[4,0,0,1,0],[20,0,0,2,0],[27,0,0,0,1],[39,0,0,0,1],[43,0,0,1,0],[44,0,0,1,1],[45,0,0,0,1],[47,0,0,0,1],[48,0,0,1,0],[72,0,0,3,0],[73,0,0,1,0],[75,0,0,2,0],[86,0,0,6,0],[87,0,0,3,0],[88,0,0,1,1],[89,0,0,0,2],[93,0,0,1,0],[99,0,0,0,1],[117,0,0,1,0]],"tip":[[4,0,0,1,0]],"title":[[4,0,0,0,1],[5,0,0,0,1],[6,0,0,0,2],[9,0,0,0,1],[11,0,0,1,1],[12,0,0,0,2],[16,0,0,1,1],[18,0,0,0,3],[19,0,0,1,0],[36,0,0,0,2],[50,0,0,0,1],[67,0,0,1,1],[73,0,0,0,1],[74,0,0,1,0],[82,0,0,1,0],[90,0,0,2,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,0,1]],"variant":[[4,0,0,0,1],[7,0,0,1,0],[11,0,0,1,1],[12,0,0,0,1]],"body":[[4,0,0,0,1],[11,0,0,1,1],[16,0,0,1,0],[50,0,0,0,1],[51,0,0,1,0],[53,0,0,1,0],[103,0,0,1,0],[109,0,0,1,0]],"goes":[[4,0,0,0,1]],"here":[[4,0,0,0,1],[57,0,0,1,0],[59,0,0,1,0],[70,0,0,1,0]],"grid":[[5,0,0,1,0]],"short":[[5,0,0,1,0],[19,0,0,1,0],[34,0,0,0,1],[36,0,0,0,1],[51,0,0,1,0],[61,0,1,0,0]],"linked":[[5,0,0,1,0]],"entry":[[5,0,0,1,0],[16,0,0,1,0],[66,0,0,1,0],[77,0,1,1,0],[78,0,0,1,0],[94,0,0,1,0],[95,0,0,1,0],[96,0,0,1,0],[106,0,0,1,0],[108,0,0,1,0],[114,0,1,0,0]],"points":[[5,0,0,1,0],[20,0,0,1,0],[66,0,0,1,0],[77,0,1,1,0],[87,0,0,1,0],[96,0,0,1,0],[97,0,0,0,1],[108,0,0,1,0],[114,0,1,0,0]],"bullet":[[5,0,0,1,0],[36,0,0,0,2]],"list":[[5,0,0,1,0],[6,0,0,2,1],[25,0,0,1,0],[28,0,0,1,0],[43,0,0,1,0],[75,0,0,1,0],[103,0,0,3,0]],"links":[[5,0,0,1,0],[20,0,0,1,0],[29,0,0,1,0],[43,0,0,2,0],[51,0,0,1,0],[62,0,0,1,0],[72,0,0,1,0],[75,0,0,1,0],[87,0,0,2,0],[96,0,0,2,0],[112,0,0,1,0],[114,0,0,1,0]],"convert":[[5,0,0,1,2],[16,0,0,1,0],[26,0,0,0,1],[32,0,0,1,0],[35,0,0,2,5],[53,0,0,1,0],[54,0,0,1,0],[56,0,0,0,1],[66,0,0,1,0],[68,0,0,1,0],[72,0,0,1,0],[77,0,0,1,0],[78,1,1,2,1],[79,1,1,2,0],[80,1,1,2,0],[81,1,1,2,0],[82,1,1,1,0],[83,1,1,1,0],[98,0,0,0,1]],"description":[[5,0,0,0,1],[11,0,0,1,2],[12,0,0,0,1],[16,0,0,1,1],[19,0,0,1,0],[50,0,0,0,1],[51,0,0,1,0],[53,0,0,1,0],[67,0,0,0,1],[72,0,0,2,0],[75,0,0,1,0],[79,0,0,1,0],[82,0,0,1,0],[88,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0]],"turn":[[5,0,0,0,1]],"friendly":[[5,0,0,0,1]],"href":[[5,0,0,0,1],[10,0,0,0,2]],"numbered":[[6,0,0,1,0]],"walkthroughs":[[6,0,0,1,0]],"ordered":[[6,0,0,1,0],[103,0,0,1,0]],"titles":[[6,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[74,0,0,0,1],[109,0,0,1,0]],"author":[[6,0,0,1,1],[19,0,0,1,0],[36,0,0,1,0],[58,0,0,1,0],[67,0,1,0,0],[90,0,0,1,0]],"authoring":[[6,0,0,1,0],[17,0,0,0,3]],"affordances":[[6,0,0,1,0]],"run":[[6,0,0,1,1],[8,0,0,2,1],[22,0,0,1,0],[26,0,0,3,0],[28,0,0,1,1],[32,0,0,1,0],[34,0,1,0,0],[35,0,0,0,7],[39,0,0,1,1],[42,0,0,1,0],[43,0,0,1,0],[44,0,0,1,2],[45,0,0,1,0],[46,0,0,1,0],[47,0,1,2,0],[48,0,0,1,0],[51,0,0,1,0],[54,0,0,1,0],[58,0,0,1,0],[64,0,0,1,0],[65,0,0,1,0],[66,0,0,1,0],[67,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[71,0,0,1,0],[72,0,0,1,0],[74,0,0,1,0],[84,0,0,1,0],[94,0,0,2,0],[97,0,0,0,1],[98,0,0,1,0],[100,0,0,1,0],[104,0,0,2,0],[113,0,0,0,1]],"generate":[[6,0,0,1,1],[23,0,0,0,1],[24,0,1,0,1],[25,0,0,0,1],[26,0,0,1,2],[28,0,0,0,1],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,1],[35,0,0,0,2],[39,0,0,1,1],[42,0,0,1,0],[47,0,1,2,1],[51,0,0,1,0],[54,0,0,2,0],[56,0,0,0,1],[58,0,0,1,0],[68,0,1,1,1],[71,0,0,2,0],[72,0,1,1,1],[73,0,1,1,0],[74,0,1,1,0],[75,0,0,1,0],[76,0,0,1,1],[77,0,0,1,0],[78,0,0,1,0],[94,0,0,1,0],[95,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0],[110,0,0,1,0]],"writes":[[6,0,0,1,1],[24,0,0,1,0],[39,0,0,1,0],[68,0,0,3,0],[72,0,0,1,0],[110,0,0,1,0],[115,0,0,1,0]],"public":[[6,0,0,1,0],[7,0,0,1,0],[30,0,0,1,0],[33,0,0,1,0],[34,0,0,0,1],[35,0,0,0,1],[39,0,0,0,1],[40,0,0,5,0],[47,0,0,0,1],[50,0,0,0,5],[51,0,0,1,0],[52,0,0,0,1],[54,0,0,1,0],[64,0,0,1,0],[68,0,0,5,1],[69,0,0,2,1],[72,0,0,1,0],[73,0,0,0,6],[74,0,0,0,1],[79,0,0,0,1],[81,0,0,0,1],[89,0,0,1,0],[98,0,0,0,3],[110,0,0,0,1],[111,0,0,0,2]],"serve":[[6,0,0,1,0],[7,0,0,1,0],[37,0,1,2,1],[38,0,1,0,0],[58,0,0,1,0]],"both":[[6,0,0,1,0],[47,0,0,1,0],[68,0,0,1,0],[95,0,0,1,0]],"formats":[[6,0,0,1,0],[37,0,0,1,0],[53,0,0,1,0]],"html":[[6,0,0,1,0],[33,0,0,2,0],[37,0,0,2,2],[40,0,0,1,0],[52,0,0,1,1]],"md":[[6,0,0,1,0],[7,0,0,2,0],[14,0,0,1,0],[23,0,0,0,1],[26,0,0,0,1],[28,0,0,1,0],[29,0,0,1,0],[33,0,0,1,0],[37,0,0,4,3],[40,0,0,1,0],[50,0,0,0,5],[51,0,0,2,0],[53,0,0,1,0],[54,0,0,1,0],[56,0,0,0,5],[68,0,0,1,0],[69,0,0,1,1],[79,0,0,1,0],[81,0,0,0,1],[82,0,0,1,0],[88,0,0,1,0],[106,0,0,1,0],[107,0,0,1,0]],"url":[[6,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[24,0,0,0,1],[26,0,0,1,1],[29,0,0,1,0],[34,0,0,0,1],[35,0,0,1,0],[37,0,0,2,5],[38,0,0,0,3],[53,0,0,1,0],[68,0,0,0,1],[72,0,0,3,0],[77,0,0,1,0],[87,0,0,1,0],[90,0,0,1,0],[94,0,0,1,0],[101,0,1,2,3]],"negotiated":[[6,0,0,1,0],[64,0,0,1,0]],"accept":[[6,0,0,1,0],[7,0,0,1,0],[33,0,0,2,0],[37,0,0,1,5],[38,0,0,0,5],[40,0,0,1,0],[52,0,0,1,1],[53,0,0,1,0]],"group":[[7,0,0,1,0],[15,0,0,1,0],[16,0,0,4,1],[17,0,0,5,4],[18,0,0,2,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,3,0],[27,0,0,0,1],[29,0,0,2,0],[36,0,0,1,0],[40,0,0,2,0],[50,0,0,0,3],[51,0,0,3,0],[53,0,0,3,0],[54,0,0,2,0],[56,0,0,0,1],[58,0,0,1,0],[67,0,0,1,1],[68,0,0,3,0],[69,0,0,0,1],[72,0,0,1,0],[74,0,1,1,0],[90,0,0,1,0],[95,0,0,1,0],[96,0,0,2,0],[99,0,0,2,1],[100,0,0,1,0]],"followed":[[7,0,0,1,0]],"need":[[7,0,0,1,0],[26,0,0,1,0],[49,0,0,1,0],[56,0,0,1,0],[66,0,0,1,0],[75,0,0,1,0],[77,0,0,1,0],[78,0,0,1,0],[104,0,0,1,0],[112,0,0,1,0]],"jsx":[[7,0,0,1,0],[50,0,0,1,0],[103,0,0,1,0],[106,0,0,1,0]],"aware":[[7,0,0,1,0],[8,0,0,1,0],[53,0,0,1,0],[109,0,0,1,0]],"renderer":[[7,0,0,1,0]],"read":[[7,0,0,1,0],[10,0,0,1,0],[14,0,0,1,0],[22,0,0,2,0],[23,0,0,1,1],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,1],[27,0,0,1,1],[28,0,0,1,0],[29,0,0,3,0],[30,0,0,1,0],[31,0,0,1,0],[36,0,0,1,0],[39,0,0,1,0],[52,0,0,1,0],[59,0,0,2,0],[100,0,0,1,0],[104,0,0,1,0],[107,0,0,1,0],[109,0,0,1,0],[115,0,0,1,0],[116,0,0,1,0]],"every":[[7,0,0,1,0],[9,0,0,1,0],[15,0,0,1,0],[22,0,0,1,0],[36,0,0,1,0],[37,0,0,1,0],[40,0,0,1,0],[49,0,0,2,0],[51,0,0,2,0],[54,0,0,2,0],[56,0,0,1,0],[59,0,0,1,0],[64,0,0,1,0],[67,0,0,1,0],[68,0,0,1,0],[74,0,0,1,0],[77,0,0,1,0],[86,0,0,1,0],[96,0,0,1,0],[97,0,0,0,1],[110,0,0,1,0]],"tanstack":[[7,0,0,1,2],[32,0,0,1,0],[56,0,0,1,0],[114,0,0,1,2],[115,0,0,1,0]],"start":[[7,0,0,1,2],[32,0,0,1,0],[40,0,0,1,0],[56,0,0,1,0],[117,0,0,2,0]],"vite":[[7,0,0,2,2],[33,0,0,6,0],[35,0,0,1,1],[37,0,0,1,1],[53,0,0,1,0]],"middleware":[[7,0,0,4,0],[37,0,0,3,0],[38,0,0,0,3],[40,0,0,1,0],[53,0,0,2,0]],"dev":[[7,0,0,1,0],[35,0,0,1,0],[40,0,0,1,0]],"preview":[[7,0,0,1,0],[12,0,0,1,1]],"nitro":[[7,0,0,1,0]],"prod":[[7,0,0,1,0]],"negotiate":[[7,0,0,1,0]],"next":[[7,0,0,1,2],[31,0,1,0,0],[32,0,0,1,0],[35,0,0,1,0],[37,0,0,1,0],[38,0,0,0,3],[39,0,0,1,0],[41,0,1,0,0],[53,0,0,1,0],[55,0,1,0,0],[56,0,0,1,0],[59,0,1,0,0],[64,0,0,1,0],[70,0,1,0,0]],"js":[[7,0,0,1,2],[32,0,0,1,0],[37,0,0,1,0],[53,0,0,1,0],[56,0,0,1,0]],"wire":[[7,0,0,1,0],[16,0,0,0,1],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,1,1,0],[36,0,0,1,0],[37,0,0,2,0],[38,0,0,1,0],[39,0,0,1,0],[40,0,0,1,0],[41,0,0,1,0],[42,0,0,1,0],[70,0,0,1,0]],"negotiation":[[7,0,0,1,0],[33,0,0,1,0],[37,0,0,1,0],[38,0,0,0,1],[40,0,0,1,0],[51,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[58,0,0,1,0]],"ts":[[7,0,0,1,0],[16,0,0,1,0],[17,0,0,2,1],[18,0,0,0,1],[26,0,0,1,2],[35,0,0,0,5],[36,0,0,1,1],[37,0,0,1,1],[74,0,0,2,1],[78,0,0,0,1],[79,0,0,0,1],[80,0,0,0,1],[81,0,0,0,1],[83,0,0,0,1],[84,0,0,0,1],[88,0,0,0,1],[89,0,0,0,1],[93,0,0,0,1],[95,0,0,0,1],[98,0,0,0,1],[99,0,0,0,2],[100,0,0,1,0],[101,0,0,0,1],[102,0,0,0,1],[105,0,0,0,1],[106,0,0,0,2],[110,0,0,0,1],[111,0,0,0,1],[112,0,0,0,1],[113,0,0,0,1],[114,0,0,0,2],[115,0,0,0,1]],"route":[[7,0,0,1,0],[20,0,0,1,0],[37,0,0,1,0],[87,0,0,1,0]],"handler":[[7,0,0,1,0],[37,0,0,1,0]],"configureserver":[[7,0,0,1,0],[38,0,0,0,1]],"enough":[[7,0,0,1,0]],"static":[[7,0,0,1,0],[37,0,0,2,0],[56,0,0,1,0],[58,0,0,1,0],[62,0,0,1,0],[99,0,0,1,0],[108,0,0,2,0],[109,0,0,1,0],[110,0,0,1,0],[111,0,0,1,0],[112,0,0,1,0],[113,0,0,1,0],[114,0,0,1,0],[115,0,0,1,0],[116,0,0,1,0],[117,0,0,2,0]],"deployments":[[7,0,0,1,0]],"files":[[7,0,0,1,0],[14,0,0,1,0],[17,0,0,1,0],[22,0,0,1,0],[23,0,0,0,1],[26,0,0,1,1],[28,0,0,1,0],[29,0,0,2,0],[35,0,0,0,1],[37,0,0,2,0],[46,0,0,1,0],[51,0,0,1,0],[73,0,0,0,1],[79,0,0,1,0],[88,0,0,1,0],[95,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0]],"items":[[7,0,0,0,1],[10,0,0,0,1]],"value":[[7,0,0,0,3],[10,0,0,0,2],[21,0,0,1,0],[37,0,0,0,6],[38,0,0,0,4]],"package":[[8,0,0,4,0],[18,0,0,1,2],[22,1,1,1,0],[23,1,1,0,0],[24,1,2,1,4],[25,1,2,2,0],[26,1,1,0,6],[27,1,1,0,4],[28,1,1,1,1],[29,1,1,3,0],[30,1,1,1,0],[31,1,1,0,0],[39,0,0,3,4],[52,0,0,1,0],[56,0,0,0,1],[57,0,0,1,0],[66,0,0,1,0],[70,0,0,1,0],[72,0,0,2,0],[101,0,0,2,0]],"manager":[[8,0,0,5,0],[66,0,0,1,0]],"install":[[8,0,0,3,2],[22,0,0,1,0],[23,0,0,0,4],[29,0,0,1,0],[44,0,0,0,1],[52,0,0,1,0],[65,0,0,1,0],[66,0,1,2,0],[67,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[97,0,0,0,1],[100,0,0,1,0],[111,0,0,0,1]],"commands":[[8,0,0,3,1],[71,0,0,1,0],[115,0,0,2,0]],"row":[[8,0,0,1,0],[11,0,0,1,0],[106,0,0,1,0]],"mode":[[8,0,0,3,2],[44,0,0,1,0],[73,0,0,1,0],[92,0,0,1,0]],"command":[[8,0,0,4,2],[34,0,0,1,0],[54,0,0,1,0],[58,0,0,1,0],[62,0,0,1,0],[66,0,0,1,0],[71,0,0,1,1],[77,0,0,1,0]],"name":[[8,0,0,2,0],[19,0,0,1,0],[23,0,0,0,4],[24,0,0,0,1],[25,0,0,0,1],[27,0,0,0,2],[34,0,0,0,1],[36,0,0,0,1],[37,0,0,0,5],[38,0,0,0,3],[44,0,0,0,1],[72,0,0,4,0],[73,0,0,0,1],[98,0,0,0,2],[106,0,0,1,1]],"cli":[[8,0,0,1,0],[19,0,0,1,0],[22,0,0,1,0],[23,0,0,0,3],[30,0,0,1,0],[31,0,0,1,0],[33,0,0,4,0],[35,0,0,1,0],[41,0,0,1,0],[46,0,0,1,0],[55,0,0,1,0],[62,0,0,1,0],[66,0,0,1,0],[68,0,0,1,0],[71,1,1,0,0],[72,1,1,1,0],[73,1,1,0,0],[74,1,1,1,0],[75,1,1,1,0],[76,1,1,0,0],[77,1,1,2,0],[78,0,0,1,0],[84,0,0,3,0],[85,0,0,1,0],[86,0,0,1,0],[87,0,0,1,0],[88,0,0,1,0],[89,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0],[94,0,0,1,0],[97,0,0,0,3]],"create":[[8,0,0,1,0],[67,0,0,1,0]],"starter":[[8,0,0,1,0]],"prop":[[8,0,0,1,0],[11,0,0,1,0]],"exact":[[8,0,0,1,0],[50,0,0,1,0],[52,0,0,1,0],[117,0,0,2,0]],"overrides":[[8,0,0,1,0],[75,0,0,2,0]],"npm":[[8,0,0,3,2],[22,0,0,2,0],[23,0,0,1,2],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,2,1],[29,0,0,2,0],[30,0,0,1,0],[31,0,0,1,0],[39,0,0,1,1],[52,0,0,1,0],[56,0,0,0,1],[66,0,0,2,0]],"pnpm":[[8,0,0,4,3],[66,0,0,2,0]],"yarn":[[8,0,0,4,0],[66,0,0,2,0]],"bun":[[8,0,0,3,0],[26,0,0,1,0],[35,0,0,0,7],[44,0,0,0,2],[66,0,0,2,0]],"npx":[[8,0,0,1,0],[24,0,0,0,1],[25,0,0,0,1],[26,0,0,0,1],[28,0,0,0,1],[34,0,0,0,1],[39,0,0,0,2],[44,0,0,0,1],[45,0,0,0,1],[46,0,0,0,1],[47,0,0,0,2],[68,0,0,0,1]],"lint":[[8,0,0,4,1],[15,0,0,1,0],[19,0,0,1,0],[20,0,1,2,0],[21,0,0,1,0],[31,0,0,1,0],[36,0,0,1,0],[39,0,0,1,1],[41,0,0,1,0],[42,0,0,2,0],[43,0,0,2,0],[44,0,0,1,3],[45,0,0,1,2],[46,0,0,2,1],[47,0,0,4,1],[48,0,0,1,0],[56,0,0,0,1],[62,0,0,1,0],[66,0,0,1,0],[71,0,0,2,0],[72,0,0,1,0],[73,0,0,1,0],[74,0,0,1,0],[75,0,1,3,1],[76,0,0,1,1],[77,0,0,2,0],[84,1,1,1,1],[85,1,1,0,0],[86,1,1,0,0],[87,1,1,0,0],[88,1,1,0,1],[89,1,1,0,0],[90,1,1,0,0],[91,1,1,0,0],[92,1,1,0,0],[93,1,1,0,1],[94,1,1,3,0],[113,0,0,0,1]],"dlx":[[8,0,0,2,0]],"bunx":[[8,0,0,1,0]],"defaultmanager":[[8,0,0,0,1]],"collapsible":[[9,0,0,1,0]],"secondary":[[9,0,0,1,0]],"ignores":[[9,0,0,2,0]],"open":[[9,0,0,2,0],[29,0,0,2,0],[69,0,0,2,0],[103,0,0,1,0]],"closed":[[9,0,0,3,0],[103,0,0,1,0]],"state":[[9,0,0,2,0],[82,0,0,1,0],[103,0,0,1,0]],"emits":[[9,0,0,2,0],[106,0,0,1,0]],"item":[[9,0,0,1,0]],"accordions":[[9,0,0,3,1]],"place":[[9,0,0,2,0],[56,0,0,1,0],[58,0,0,1,0],[67,0,0,1,0],[83,0,0,1,0],[105,0,0,1,0]],"hide":[[9,0,0,2,0]],"should":[[9,0,0,1,1],[25,0,0,1,0],[28,0,0,1,0],[30,0,0,1,0],[39,0,0,1,0],[40,0,0,2,0],[116,0,0,1,0]],"troubleshooting":[[9,0,0,1,0]],"notes":[[9,0,0,1,0],[82,0,1,0,0]],"optional":[[9,0,0,1,1],[11,0,0,2,0],[16,0,0,2,0],[19,0,1,10,0],[35,0,0,1,0],[51,0,0,4,0],[52,0,0,1,0],[53,0,0,5,0],[62,0,0,1,0],[105,0,1,0,0],[106,0,1,0,0]],"material":[[9,0,0,1,1]],"good":[[9,0,0,1,0]],"no":[[9,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[37,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[75,0,0,1,0],[82,0,0,1,0],[90,0,0,12,0],[91,0,0,7,0],[92,0,0,7,0],[96,0,0,1,0],[106,0,0,2,0],[111,0,0,1,0]],"everything":[[9,0,0,1,0]],"inside":[[9,0,0,1,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[39,0,0,1,0],[96,0,0,1,0]],"navigation":[[10,0,0,1,0],[15,0,0,1,0],[16,0,0,1,0],[17,0,0,1,1],[18,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[26,0,0,1,0],[27,0,0,0,3],[32,0,0,1,0],[34,0,0,1,0],[36,0,0,1,0],[42,0,0,1,0],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,1,0],[50,0,0,0,1],[51,0,0,1,0],[54,0,0,1,0],[56,0,0,1,1],[58,0,0,2,0],[60,0,0,1,0],[62,0,0,1,0],[84,0,0,1,0],[85,0,0,1,0],[86,0,0,1,0],[87,0,0,1,0],[88,0,0,1,0],[89,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0],[94,0,0,1,0],[99,0,0,1,4]],"across":[[10,0,0,1,0],[61,0,0,1,0],[64,0,0,2,0],[74,0,0,1,0]],"topics":[[10,0,0,1,0]],"frameworks":[[10,0,0,1,2],[25,0,0,0,1],[56,0,0,1,0]],"sdks":[[10,0,0,1,0]],"runtimes":[[10,0,0,1,0]],"deployment":[[10,0,0,1,0],[61,0,0,1,0],[63,0,0,1,0],[101,0,0,1,0]],"targets":[[10,0,0,1,0]],"product":[[10,0,0,1,0],[27,0,0,0,4],[34,0,0,0,1],[36,0,1,0,2],[72,0,0,2,0],[73,0,0,0,1],[74,0,0,0,2],[96,0,0,1,0],[98,0,0,0,2]],"areas":[[10,0,0,1,0]],"reader":[[10,0,0,1,0]],"facing":[[10,0,0,1,0],[56,0,0,1,0],[95,0,0,1,0],[107,0,0,1,0]],"automatically":[[10,0,0,1,0],[19,0,0,1,0]],"llm":[[10,0,0,1,0],[26,0,0,0,1],[31,0,0,1,0],[35,0,0,0,3],[51,0,0,1,0],[54,0,0,1,0],[56,0,0,0,4],[66,0,0,1,0],[68,0,0,1,0],[72,0,0,1,0],[74,0,0,1,1],[77,0,0,1,0],[95,1,1,1,1],[96,1,1,0,0],[97,1,1,0,0],[98,1,1,0,1],[99,1,1,2,0],[100,1,1,0,0],[101,1,1,0,0],[107,0,0,1,0]],"topic":[[10,0,0,1,0],[29,0,0,1,0],[51,0,0,1,0],[58,0,0,1,0],[62,0,0,1,0],[95,0,0,1,0],[96,0,0,2,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,1,1,0],[101,0,0,1,0]],"config":[[10,0,0,1,0],[16,0,0,1,0],[17,0,0,2,1],[18,0,0,1,0],[26,0,0,0,1],[27,0,0,0,1],[36,0,0,2,0],[40,0,0,1,0],[48,0,0,1,0],[74,0,0,2,1],[100,0,0,1,0],[117,0,0,1,0]],"framework":[[10,0,0,1,1],[19,0,0,2,0],[20,0,0,4,0],[21,0,0,1,0],[32,0,0,1,0],[43,0,0,5,0],[48,0,0,1,0],[53,0,0,1,0],[56,0,0,1,0],[60,0,0,1,0],[61,0,0,3,0],[64,0,0,2,0],[87,0,0,4,0],[89,0,0,0,1],[90,0,0,1,0],[103,0,0,1,0]],"react":[[10,0,0,2,4],[25,0,0,0,3],[61,0,0,1,0]],"integration":[[10,0,0,3,0]],"vue":[[10,0,0,2,3]],"svelte":[[10,0,0,2,0]],"label":[[10,0,0,0,3],[92,0,0,1,0]],"activevalue":[[10,0,0,0,1]],"explicit":[[11,0,0,1,0],[25,0,0,1,0],[114,0,0,1,0]],"type":[[11,0,0,3,2],[19,0,0,1,0],[20,0,0,1,0],[35,0,0,0,1],[37,0,0,3,2],[40,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[86,0,0,1,0],[89,0,0,0,1],[90,0,0,1,0],[91,0,0,2,0],[92,0,0,1,0],[97,0,0,0,1],[106,0,0,2,0],[111,0,0,0,2]],"rows":[[11,0,0,1,0]],"already":[[11,0,0,1,0],[112,0,0,1,0]],"know":[[11,0,0,1,0]],"reads":[[11,0,0,1,0],[15,0,0,1,0],[35,0,0,0,1],[42,0,0,1,0],[68,0,0,1,0],[98,0,0,1,0],[106,0,0,2,0],[110,0,0,1,0]],"typescript":[[11,0,0,1,0],[35,0,0,0,1],[77,0,0,1,0],[106,0,0,2,0]],"file":[[11,0,0,1,0],[12,0,0,1,0],[15,0,0,1,0],[18,0,0,1,0],[45,0,0,1,0],[47,0,0,1,0],[51,0,0,1,0],[53,0,0,2,0],[54,0,0,1,0],[68,0,0,2,0],[78,0,0,1,0],[80,0,0,1,0],[81,0,0,1,0],[89,0,0,0,1],[96,0,0,3,0],[100,0,0,1,0],[106,0,0,4,0]],"extracts":[[11,0,0,1,0]],"named":[[11,0,0,1,0],[102,0,0,1,0],[106,0,0,1,0],[112,0,0,1,0]],"keep":[[11,0,0,1,0],[14,0,0,2,0],[46,0,0,1,0],[93,0,0,1,0],[117,0,0,1,0]],"its":[[11,0,0,1,0],[39,0,0,1,0],[53,0,0,1,0],[64,0,0,1,0],[107,0,0,1,0]],"path":[[11,0,0,1,0],[22,0,0,1,0],[32,0,0,1,0],[51,0,0,1,0],[57,0,1,0,0],[73,0,0,0,8],[77,0,0,1,0],[97,0,0,0,1],[106,0,0,2,1],[116,0,0,1,0]],"stable":[[11,0,0,1,0],[14,0,0,1,0],[19,0,0,1,0]],"property":[[11,0,0,1,0],[19,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[106,0,0,1,0]],"default":[[11,0,0,1,1],[19,0,0,2,0],[20,0,0,1,0],[36,0,0,0,1],[51,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[68,0,0,1,0],[72,0,0,1,0],[75,0,0,2,0],[83,0,0,1,0],[86,0,0,1,0],[87,0,0,1,0],[88,0,0,2,0],[90,0,1,0,0],[91,0,1,0,0],[92,0,1,0,0],[97,0,0,0,1],[101,0,0,1,0],[102,0,0,1,0],[103,0,1,1,0],[104,0,0,1,0],[105,0,0,2,0],[106,0,0,2,0],[107,0,0,1,0]],"required":[[11,0,0,2,1],[15,0,0,1,0],[16,0,0,2,0],[17,0,0,1,0],[18,0,0,1,0],[19,0,0,2,0],[20,0,0,2,0],[21,0,0,1,0],[48,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[86,0,0,1,0],[88,0,0,1,0],[89,0,0,2,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0]],"string":[[11,0,0,1,1],[16,0,0,1,0],[19,0,0,3,0],[37,0,0,0,8],[53,0,0,1,0],[89,0,0,0,3],[90,0,0,7,0],[91,0,0,7,0],[92,0,0,5,0],[93,0,0,0,1]],"heading":[[11,0,0,1,1],[16,0,0,1,0],[53,0,0,1,0],[103,0,0,1,0],[109,0,0,1,0],[111,0,0,1,0],[112,0,0,1,0]],"rendered":[[11,0,0,1,1],[82,0,0,1,0],[106,0,0,1,0]],"calloutvariant":[[11,0,0,1,1]],"visual":[[11,0,0,1,1],[63,0,0,1,0]],"treatment":[[11,0,0,1,1]],"deprecated":[[11,0,0,3,0],[19,0,0,3,0],[90,0,0,1,0]],"boolean":[[11,0,0,1,0],[19,0,0,6,0],[90,0,0,6,0],[91,0,0,2,0],[92,0,0,2,0]],"marks":[[11,0,0,1,0],[19,0,0,2,0]],"false":[[11,0,0,1,0],[80,0,0,0,1]],"properties":[[11,0,0,0,1]],"true":[[11,0,0,0,1],[26,0,0,0,2],[35,0,0,0,1],[79,0,0,1,1],[99,0,0,0,1]],"data":[[12,0,0,2,0],[52,0,0,1,0]],"driven":[[12,0,0,1,0]],"examples":[[12,0,0,1,0]],"host":[[12,0,0,1,1]],"receives":[[12,0,0,1,0]],"code":[[12,0,0,1,1],[39,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[64,0,0,1,0],[103,0,0,1,0],[109,0,0,1,0],[115,0,0,1,0]],"loaders":[[12,0,0,1,0]],"dynamic":[[12,0,0,1,0]],"imports":[[12,0,0,1,0],[50,0,0,0,1],[74,0,0,1,0],[102,0,0,1,0],[104,0,0,1,0]],"outside":[[12,0,0,1,0],[88,0,0,1,0]],"needs":[[12,0,0,1,0],[25,0,0,1,0],[60,0,0,1,0],[67,0,0,1,0],[106,0,0,1,0]],"specific":[[12,0,0,1,0],[25,0,1,0,0],[101,0,0,1,0],[108,0,0,1,0]],"behavior":[[12,0,0,1,0],[16,0,0,1,0],[82,0,1,0,0]],"output":[[12,0,0,0,1],[14,0,0,1,0],[22,0,0,1,0],[26,0,0,0,2],[27,0,0,0,1],[45,0,0,1,0],[51,0,0,1,0],[54,0,0,1,0],[65,0,0,1,0],[69,0,1,0,0],[71,0,0,1,0],[72,0,0,2,0],[73,0,1,1,0],[74,0,0,1,0],[75,0,0,1,0],[76,0,0,1,0],[77,0,0,2,0],[78,0,0,1,0],[79,0,0,1,0],[80,0,0,1,0],[81,0,0,1,0],[82,0,0,2,0],[106,0,0,1,0],[107,0,0,2,0]],"inspect":[[12,0,0,0,1],[65,0,0,1,0],[66,0,0,1,0],[67,0,0,1,0],[68,0,0,1,0],[69,0,1,1,0],[70,0,0,1,0]],"filename":[[12,0,0,0,1]],"language":[[12,0,0,0,1]],"while":[[12,0,0,0,1],[110,0,0,1,0]],"diagrams":[[13,0,0,1,0]],"plain":[[13,0,0,1,0],[37,0,0,0,3],[38,0,0,0,1],[99,0,0,1,0],[114,0,0,1,0]],"renders":[[13,0,0,1,0],[16,0,0,1,0],[52,0,0,1,0],[58,0,0,1,0],[64,0,0,1,0],[87,0,0,1,0]],"client":[[13,0,0,1,0],[106,0,0,1,0]],"svg":[[13,0,0,1,0]],"preserves":[[13,0,0,1,0]],"tools":[[13,0,0,1,0],[30,0,0,1,0],[52,0,0,1,0],[58,0,0,1,0],[59,0,0,1,0],[115,0,0,0,1]],"copy":[[13,0,0,1,0]],"chart":[[13,0,0,0,1],[33,0,0,1,0]],"graph":[[13,0,0,0,2]],"lr":[[13,0,0,0,2],[17,0,0,0,1],[23,0,0,0,1],[33,0,0,1,0],[52,0,0,0,1],[56,0,0,0,1]],"index":[[13,0,0,0,1],[23,0,0,0,1],[24,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[37,0,0,0,1],[39,0,0,1,0],[40,0,0,3,0],[50,0,0,1,1],[51,0,0,5,0],[52,0,0,1,1],[53,0,0,1,0],[54,0,0,1,0],[56,0,0,2,1],[57,0,0,1,0],[58,0,0,2,0],[59,0,0,1,0],[60,0,0,1,0],[62,0,0,1,0],[67,0,0,1,0],[68,0,0,4,0],[69,0,0,2,5],[73,0,0,0,2],[95,0,0,1,0],[96,0,0,2,0],[108,0,0,2,0],[109,0,0,6,0],[110,0,0,2,1],[111,0,0,1,1],[112,0,0,2,3],[113,0,0,1,1],[114,0,0,1,1],[115,0,0,1,1],[116,0,0,1,0],[117,0,0,3,0]],"api":[[13,0,0,0,1],[75,0,0,1,0],[77,0,0,1,0],[84,0,0,2,0],[85,0,0,1,0],[86,0,0,1,0],[87,0,0,1,0],[88,0,1,1,0],[89,0,1,1,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0],[94,0,0,1,0],[117,0,0,1,0]],"guidelines":[[14,0,1,0,0]],"stays":[[14,0,0,1,0],[51,0,0,1,0],[60,0,0,1,0],[82,0,0,1,0],[110,0,0,1,0]],"out":[[14,0,0,1,0],[23,0,0,0,1],[24,0,0,0,1],[25,0,0,0,1],[26,0,0,0,1],[28,0,0,0,1],[29,0,0,1,0],[34,0,0,0,1],[39,0,0,0,1],[47,0,0,0,1],[60,0,0,1,0],[68,0,0,0,1],[72,0,0,3,0],[96,0,0,4,0],[103,0,0,0,2]],"renaming":[[14,0,0,1,0]],"breaks":[[14,0,0,1,0]],"until":[[14,0,0,1,0]],"remap":[[14,0,0,1,0]],"quality":[[14,0,0,1,0]],"converted":[[14,0,0,1,0],[24,0,0,1,0],[37,0,0,1,0],[40,0,0,1,0],[52,0,0,1,0],[54,0,0,2,0],[69,0,0,0,1],[106,0,0,1,0],[107,0,0,1,0]],"first":[[14,0,0,1,0],[29,0,0,1,0],[39,0,0,1,0],[47,0,0,1,0],[48,0,1,0,0],[59,0,0,1,0],[94,0,0,1,0],[98,0,0,1,0],[102,0,0,1,0],[107,0,0,1,0]],"edit":[[14,0,0,1,0]],"order":[[14,0,0,1,0],[26,0,0,1,0],[35,0,0,2,0],[48,0,0,1,0],[54,0,0,1,0],[74,0,0,1,1],[77,0,0,1,0],[78,0,0,1,0],[79,0,0,1,0],[83,0,0,1,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,1,0,0]],"actually":[[14,0,0,1,0]],"looks":[[14,0,0,1,0],[69,0,0,1,0],[107,0,0,1,0]],"wrong":[[14,0,0,1,0],[20,0,0,1,0],[43,0,0,1,0],[48,0,0,1,0],[86,0,0,1,0],[107,0,0,1,0]],"frontmatter":[[15,1,1,1,0],[16,1,1,0,0],[17,1,1,0,0],[18,1,1,0,0],[19,1,1,0,0],[20,1,1,1,0],[21,1,1,1,0],[36,0,0,2,0],[39,0,0,1,0],[42,0,0,1,0],[43,0,0,4,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,2,0],[50,0,0,0,2],[53,0,0,1,0],[54,0,0,2,0],[55,0,0,1,0],[58,0,0,1,0],[62,0,0,1,0],[67,0,0,1,0],[68,0,0,1,0],[72,0,0,1,0],[75,0,0,2,0],[80,0,0,1,1],[82,0,0,3,0],[86,0,1,1,0],[88,0,0,3,0],[89,0,0,0,1],[90,0,1,0,0],[91,0,1,0,0],[93,0,0,0,1]],"fields":[[15,0,0,1,0],[16,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[19,0,1,1,0],[20,0,0,1,0],[21,0,0,1,0],[43,0,0,2,0],[48,0,0,1,0],[75,0,0,2,0],[88,0,0,1,0],[89,0,0,1,0]],"semantics":[[15,0,0,1,0],[16,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0]],"tree":[[15,0,0,1,0],[16,0,0,1,0],[17,0,1,2,1],[18,0,1,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[34,0,0,1,0],[36,0,0,1,0],[50,0,0,0,1],[51,0,0,1,0],[56,0,0,1,1],[58,0,0,2,0],[67,0,0,1,0],[68,0,0,1,0],[79,0,0,1,0],[99,0,0,1,0],[104,0,0,1,0]],"page":[[15,0,0,2,0],[16,0,0,1,0],[17,0,0,2,3],[18,0,0,1,0],[19,0,0,4,0],[20,0,0,1,0],[21,0,0,1,0],[29,0,0,1,0],[40,0,0,1,0],[43,0,0,1,0],[49,0,0,1,0],[50,0,0,0,1],[51,0,0,1,0],[53,0,0,2,0],[54,0,0,1,0],[56,0,0,0,2],[57,0,0,1,0],[67,0,1,1,0],[68,0,0,1,0],[74,0,0,1,0],[82,0,0,1,0],[84,0,0,1,0],[87,0,0,1,0],[88,0,0,1,0],[109,0,0,2,0],[112,0,0,1,0],[117,0,0,1,0]],"yaml":[[15,0,0,1,0],[44,0,0,0,1],[82,0,0,1,0],[86,0,0,1,0]],"things":[[15,0,0,1,0],[68,0,0,1,0]],"lives":[[15,0,0,1,0],[39,0,0,2,0]],"nav":[[15,0,0,1,0],[16,0,0,1,0],[17,0,1,1,2],[18,0,1,0,0],[19,0,0,1,0],[33,0,0,1,0],[50,0,0,0,3],[51,0,0,2,0],[56,0,0,0,3],[67,0,0,1,0],[68,0,0,1,0],[92,0,0,3,0],[99,0,0,1,1]],"minimum":[[16,0,1,0,0],[67,0,0,1,0]],"non":[[16,0,0,1,0],[18,0,0,1,0],[40,0,0,1,0],[42,0,0,1,0],[53,0,0,1,0],[72,0,0,1,0],[75,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[96,0,0,1,0]],"empty":[[16,0,0,1,0],[40,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0]],"sidebar":[[16,0,0,1,0],[19,0,0,1,0],[21,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[92,0,0,1,0],[99,0,0,3,0]],"recommended":[[16,0,0,1,0],[72,0,0,1,0]],"routing":[[16,0,0,1,0],[29,0,0,1,0],[32,0,0,1,0],[40,0,0,1,0],[51,0,0,1,0],[60,0,0,1,0],[63,0,0,1,0],[68,0,0,1,0],[69,0,0,0,2],[95,0,0,1,0],[96,0,0,2,0],[100,0,0,1,0]],"hint":[[16,0,0,1,0]],"omitted":[[16,0,0,1,0]],"converter":[[16,0,0,1,0],[39,0,0,1,0],[87,0,0,1,0],[90,0,0,1,0]],"synthesizes":[[16,0,0,1,0]],"during":[[16,0,0,1,0],[35,0,0,1,0]],"slug":[[16,0,0,1,0],[17,0,0,4,0],[18,0,0,1,3],[27,0,0,0,2],[36,0,0,0,2],[53,0,0,2,0],[54,0,0,1,0],[73,0,0,0,1],[99,0,0,0,2]],"declared":[[16,0,0,1,0],[17,0,0,1,0]],"pages":[[16,0,0,1,0],[19,0,0,1,0],[25,0,0,1,0],[29,0,0,1,0],[36,0,0,1,0],[37,0,0,1,0],[46,0,0,1,0],[51,0,0,1,0],[58,0,0,1,0],[69,0,0,0,1],[92,0,0,1,0],[96,0,0,1,0],[100,0,0,2,0]],"excluded":[[16,0,0,1,0],[19,0,0,1,0]],"connect":[[16,0,0,0,1],[18,0,0,0,2],[30,0,0,1,0],[32,1,1,0,0],[33,1,1,0,0],[34,1,1,0,0],[35,1,1,0,0],[36,1,1,0,0],[37,1,1,0,0],[38,1,1,0,0],[39,1,2,0,0],[40,1,1,0,0],[41,1,1,0,0]],"site":[[16,0,0,0,1],[18,0,0,0,2],[30,0,0,1,0],[32,1,1,2,0],[33,1,1,0,0],[34,1,1,1,0],[35,1,1,0,0],[36,1,1,0,0],[37,1,1,0,0],[38,1,1,0,0],[39,1,1,1,0],[40,1,1,0,0],[41,1,1,0,0],[51,0,0,1,0],[52,0,0,1,0],[56,0,0,0,3],[57,0,0,1,0],[58,0,0,1,0],[60,0,0,1,0],[61,0,0,3,0],[70,0,0,1,0]],"build":[[16,0,0,0,2],[17,0,0,1,4],[18,0,0,1,2],[20,0,0,1,0],[21,0,0,1,0],[26,0,0,3,2],[32,0,0,3,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,1,1,4],[36,0,0,1,0],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,2,1],[40,0,0,2,0],[41,0,0,1,0],[54,0,0,1,0],[57,0,0,1,0],[68,0,0,1,0],[72,0,0,1,0],[77,0,0,1,0],[84,0,0,1,0],[108,0,0,1,0],[110,0,1,0,0],[114,0,0,1,0]],"groups":[[17,0,1,0,1],[18,0,2,1,0],[27,0,0,0,7],[36,0,1,0,1],[39,0,0,1,0],[47,0,0,1,0],[50,0,0,0,4],[53,0,0,1,0],[54,0,0,1,0],[68,0,0,2,0],[73,0,0,0,1],[74,0,0,3,2],[96,0,0,2,0],[98,0,0,0,4],[99,0,0,0,2],[100,0,0,1,0]],"become":[[17,0,1,0,0],[18,0,1,0,0],[74,0,0,1,0]],"declares":[[17,0,0,2,0],[27,0,0,0,1],[36,0,0,1,0],[99,0,0,0,1]],"single":[[17,0,0,1,0],[34,0,0,2,0],[56,0,0,1,0],[57,0,0,2,0],[58,0,0,2,0],[59,0,0,1,0],[72,0,0,1,0],[73,0,0,1,0],[100,0,0,1,0]],"once":[[17,0,0,1,0],[21,0,0,1,0],[36,0,0,1,0],[58,0,0,1,0],[69,0,0,1,0],[93,0,0,1,0]],"intersection":[[17,0,0,1,0]],"produces":[[17,0,0,1,0],[49,0,0,1,0],[51,0,0,1,0],[56,0,0,1,0],[59,0,0,1,0],[60,0,0,1,0],[65,0,0,1,0],[66,0,0,1,0],[67,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[95,0,0,1,0],[100,0,0,2,0]],"leaf":[[17,0,0,1,0],[18,0,0,1,0],[40,0,0,2,0],[51,0,0,1,0],[53,0,0,3,0],[54,0,0,1,0],[68,0,0,1,0],[69,0,0,0,1],[95,0,0,1,0],[96,0,0,5,0],[100,0,0,2,0]],"isn":[[17,0,0,1,0],[20,0,0,1,0],[40,0,0,1,0]],"fails":[[17,0,0,1,0],[39,0,0,1,0],[47,0,0,2,0],[48,0,0,1,0],[54,0,0,1,0]],"unknown":[[17,0,0,1,0],[20,0,0,2,0],[27,0,0,0,4],[37,0,0,0,1],[39,0,0,0,1],[43,0,0,1,0],[44,0,0,2,1],[45,0,0,0,1],[47,0,0,1,1],[48,0,0,1,0],[54,0,0,1,0],[72,0,0,1,0],[75,0,0,4,0],[86,0,0,3,0],[89,0,0,0,1],[93,0,0,2,0],[99,0,0,0,3]],"truth":[[17,0,0,1,0],[21,0,0,1,0]],"drift":[[17,0,0,1,0],[94,0,0,1,0]],"flowchart":[[17,0,0,0,1],[23,0,0,0,1],[33,0,0,1,0],[50,0,0,0,1],[52,0,0,0,1],[56,0,0,0,1],[103,0,0,0,1]],"cfg":[[17,0,0,0,2]],"page1":[[17,0,0,0,2]],"page2":[[17,0,0,0,2]],"page3":[[17,0,0,0,2]],"resolver":[[17,0,0,0,9],[50,0,0,0,1]],"sections":[[17,0,0,0,1],[36,0,0,1,0],[103,0,0,1,0]],"nested":[[18,0,1,1,0]],"declare":[[18,0,0,1,0],[36,0,0,1,0]],"children":[[18,0,0,2,1],[53,0,0,1,0],[96,0,0,1,0]],"deeper":[[18,0,0,1,0],[51,0,0,1,0],[96,0,0,1,0]],"trees":[[18,0,0,1,0],[79,0,0,1,0]],"sets":[[18,0,0,1,0],[37,0,0,1,0]],"bundle":[[18,0,0,1,2],[19,0,0,1,0],[21,0,0,1,0],[22,1,1,0,0],[23,1,1,0,3],[24,1,1,0,0],[25,1,1,1,0],[26,1,1,0,0],[27,1,1,0,0],[28,1,1,0,0],[29,1,1,1,0],[30,1,1,0,0],[31,1,1,0,0],[39,0,0,1,0],[59,0,0,1,0],[69,0,0,0,1],[70,0,0,1,0],[100,0,0,2,0]],"lands":[[18,0,0,1,0]],"slot":[[18,0,0,1,0]],"get":[[18,0,0,1,0],[36,0,0,0,2],[37,0,0,2,0],[39,0,0,1,0],[40,0,0,1,0],[53,0,0,1,0],[58,0,1,0,0],[67,0,0,0,1],[69,0,0,0,1],[73,0,0,0,2],[80,0,0,1,0],[96,0,0,1,0],[97,0,0,0,1],[102,0,0,2,0]],"leaves":[[18,0,0,1,0],[100,0,0,1,0]],"schema":[[19,0,0,1,0],[20,0,0,4,0],[42,0,0,1,0],[43,0,0,3,0],[47,0,0,1,0],[48,0,0,2,0],[75,0,0,2,0],[84,0,0,2,0],[85,0,0,1,0],[86,0,0,3,0],[87,0,0,1,0],[88,0,0,6,0],[89,0,0,2,1],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,4,0],[94,0,0,1,0]],"also":[[19,0,0,1,0],[39,0,0,1,0],[64,0,0,1,0],[77,0,0,1,0]],"accepts":[[19,0,0,1,0],[46,0,0,1,0]],"resolved":[[19,0,0,1,0],[39,0,0,1,0],[51,0,0,1,0],[102,0,0,1,0]],"deprecatedreason":[[19,0,0,1,0],[90,0,0,1,0]],"message":[[19,0,0,1,0],[89,0,0,0,1],[113,0,0,1,0]],"paired":[[19,0,0,1,0]],"experimental":[[19,0,0,2,0],[90,0,0,1,0]],"canary":[[19,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0]],"hides":[[19,0,0,1,0]],"channels":[[19,0,0,1,0]],"new":[[19,0,0,1,0],[59,0,0,1,0],[90,0,0,1,0]],"highlights":[[19,0,0,1,0]],"recently":[[19,0,0,1,0]],"added":[[19,0,0,1,0]],"draft":[[19,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0]],"excludes":[[19,0,0,1,0]],"generation":[[19,0,0,1,0],[26,0,0,1,0],[75,0,0,1,0],[84,0,0,1,0],[110,0,0,1,0]],"entirely":[[19,0,0,1,0]],"tags":[[19,0,0,2,0],[90,0,0,1,0],[91,0,0,1,0],[105,0,0,1,0]],"free":[[19,0,0,1,0]],"form":[[19,0,0,1,0]],"facets":[[19,0,0,1,0]],"availablein":[[19,0,0,1,0],[90,0,0,1,0],[94,0,0,1,0]],"array":[[19,0,0,1,0],[38,0,0,0,1],[79,0,0,1,0],[89,0,0,0,1],[90,0,0,3,0],[91,0,0,2,0],[92,0,0,1,0]],"cross":[[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[43,0,0,2,0],[48,0,0,1,0],[87,0,0,1,0],[89,0,0,0,1]],"availability":[[19,0,0,1,0]],"map":[[19,0,0,1,0]],"forces":[[19,0,0,1,0]],"even":[[19,0,0,1,0],[117,0,0,1,0]],"normally":[[19,0,0,1,0]],"lastmodified":[[19,0,0,1,0],[72,0,0,1,0],[79,0,0,1,0],[90,0,0,1,0]],"lastauthor":[[19,0,0,1,0],[72,0,0,1,0],[79,0,0,1,0],[90,0,0,1,0]],"filled":[[19,0,0,1,0]],"pass":[[19,0,0,1,0],[26,0,0,0,1],[27,0,0,0,1],[35,0,0,1,1],[68,0,0,1,0],[72,0,0,1,0],[75,0,0,2,0],[93,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0],[106,0,0,1,0],[113,0,0,1,0],[114,0,0,1,0]],"enrich":[[19,0,0,1,0],[72,0,0,1,0],[90,0,0,1,0]],"git":[[19,0,0,1,0],[39,0,0,0,1],[72,0,0,2,0],[79,0,0,1,0],[90,0,0,1,0]],"hand":[[19,0,0,1,0]],"rules":[[20,0,1,2,0],[36,0,0,1,0],[42,0,0,1,0],[62,0,0,1,0],[84,1,1,1,0],[85,1,2,0,0],[86,1,3,0,0],[87,1,3,0,0],[88,1,1,0,0],[89,1,1,0,0],[90,1,1,0,0],[91,1,1,0,0],[92,1,1,0,0],[93,1,1,0,0],[94,1,1,0,0],[107,0,1,0,0]],"enforces":[[20,0,0,1,0]],"violations":[[20,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[48,0,0,1,0],[89,0,0,1,1]],"surface":[[20,0,0,1,0],[114,0,0,1,0]],"ci":[[20,0,0,1,0],[31,0,0,1,0],[39,0,0,1,0],[41,0,0,1,0],[42,1,1,2,0],[43,1,1,1,0],[44,1,1,1,0],[45,1,2,2,0],[46,1,1,2,0],[47,1,1,1,0],[48,1,1,2,0],[84,0,0,1,0],[93,0,0,1,0],[94,0,0,2,0],[101,0,0,1,0]],"before":[[20,0,0,1,0],[26,0,0,0,1],[28,0,1,0,0],[32,0,0,1,0],[35,0,0,1,0],[39,0,0,1,0],[42,0,0,1,0],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,2,0],[47,0,1,1,0],[48,0,0,1,0],[75,0,0,1,0],[80,0,0,1,0],[83,0,0,2,0],[84,0,0,2,0],[87,0,0,1,0],[94,0,0,1,0],[104,0,0,4,0],[105,0,0,2,0],[116,0,0,1,0]],"they":[[20,0,0,1,0],[26,0,0,0,1],[27,0,0,0,1],[46,0,0,1,0],[51,0,0,1,0],[84,0,0,1,0],[85,0,0,1,0],[94,0,0,1,0],[117,0,0,1,0]],"reach":[[20,0,0,1,0],[46,0,0,1,0],[84,0,0,1,0]],"relevant":[[20,0,0,1,0],[29,0,0,1,0]],"field":[[20,0,0,3,0],[21,0,0,1,0],[43,0,0,1,0],[44,0,0,1,0],[48,0,0,2,0],[53,0,0,1,0],[86,0,0,4,0],[89,0,0,1,2],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0]],"missing":[[20,0,0,1,0],[28,0,0,1,0],[39,0,0,1,0],[40,0,0,1,0],[43,0,0,1,0],[48,0,0,1,0],[72,0,0,1,0],[86,0,0,1,0],[89,0,0,1,0],[94,0,0,1,0]],"top":[[20,0,0,1,0],[43,0,0,1,0],[82,0,0,1,0],[86,0,0,1,0],[96,0,0,1,0],[108,0,0,1,0],[117,0,0,1,0]],"level":[[20,0,0,1,0],[43,0,0,1,0],[86,0,0,1,0],[96,0,0,1,0]],"warn":[[20,0,0,1,0],[75,0,0,1,0],[86,0,0,1,0],[88,0,0,2,0],[89,0,0,0,1]],"fail":[[20,0,0,1,0],[27,0,0,0,1],[42,0,0,2,0],[43,0,0,1,0],[44,0,0,2,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,1,0],[84,0,0,1,0],[94,0,0,1,0]],"parse":[[20,0,0,2,0],[43,0,0,2,0],[48,0,0,1,0],[54,0,0,1,0],[86,0,0,3,0],[89,0,0,0,1],[116,0,0,1,0]],"meta":[[20,0,0,1,0],[43,0,0,1,0],[75,0,0,2,0],[86,0,0,1,0],[88,0,0,3,0],[89,0,0,0,1],[92,0,1,0,0],[94,0,0,1,0]],"json":[[20,0,0,1,0],[23,0,0,0,1],[24,0,0,0,1],[25,0,0,0,1],[26,0,0,0,2],[28,0,0,3,1],[33,0,0,4,0],[35,0,0,0,1],[39,0,0,1,1],[40,0,0,2,0],[43,0,0,1,0],[45,0,0,2,2],[47,0,0,0,1],[50,0,0,0,2],[51,0,0,3,0],[52,0,0,0,2],[56,0,0,0,2],[68,0,0,2,0],[69,0,0,0,2],[71,0,0,1,0],[72,0,0,7,0],[73,0,1,3,3],[74,0,0,1,0],[75,0,0,3,0],[76,0,0,1,0],[77,0,0,1,0],[86,0,0,1,0],[88,0,0,2,0],[92,0,1,0,0],[94,0,0,2,0],[99,0,0,1,2],[109,0,0,2,0],[110,0,0,0,2],[111,0,0,0,2],[116,0,0,1,0]],"doesn":[[20,0,0,2,0],[43,0,0,1,0],[45,0,0,1,0],[64,0,0,1,0],[87,0,0,1,0],[117,0,0,1,0]],"invalid":[[20,0,0,1,0],[26,0,0,0,1],[43,0,0,1,0],[48,0,0,1,0],[87,0,0,1,0],[89,0,0,1,1]],"link":[[20,0,0,3,0],[21,0,0,1,0],[42,0,0,2,0],[43,0,0,3,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,4,0],[84,0,0,2,0],[85,0,0,1,0],[86,0,0,1,0],[87,0,1,5,0],[88,0,0,1,0],[89,0,0,1,2],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0],[94,0,0,1,0],[103,0,0,2,0]],"exist":[[20,0,0,1,0],[43,0,0,1,0],[87,0,0,1,0]],"unresolved":[[20,0,0,2,0],[43,0,0,2,0],[48,0,0,1,0],[87,0,0,1,0],[89,0,0,0,1],[94,0,0,1,0]],"placeholder":[[20,0,0,2,0],[43,0,0,1,0],[48,0,0,1,0],[87,0,0,1,0],[89,0,0,0,1],[94,0,0,1,0],[104,0,0,2,0]],"doc":[[20,0,0,1,0]],"contains":[[20,0,0,1,0],[87,0,0,1,0]],"scoped":[[20,0,0,1,0],[29,0,0,1,0],[43,0,0,1,0],[51,0,0,1,0],[58,0,0,1,0],[62,0,0,1,0],[69,0,0,0,1],[87,0,0,1,0],[95,0,0,1,0],[96,0,0,3,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0]],"another":[[20,0,0,1,0],[36,0,0,0,1],[80,0,0,1,0],[87,0,0,1,0]],"extend":[[20,0,0,1,0],[43,0,0,1,0],[48,0,0,1,0],[75,0,0,1,0],[93,0,0,1,0]],"gives":[[21,0,1,0,0],[61,0,0,1,0]],"consistent":[[21,0,0,1,0]],"rest":[[21,0,0,1,0],[49,0,0,1,0],[74,0,0,1,0]],"configuration":[[21,0,0,1,0]],"drives":[[21,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[68,0,0,1,0]],"position":[[21,0,0,1,0],[53,0,0,1,0]],"filtering":[[21,0,0,1,0],[35,0,0,1,0]],"checks":[[21,0,0,1,0],[42,0,0,1,0],[84,0,0,1,0],[85,0,0,1,0],[86,0,0,1,0],[87,0,0,2,0],[88,0,0,1,0],[89,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0],[94,0,0,1,0]],"tarball":[[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,1,1,0],[27,0,1,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[39,0,0,1,0]],"ides":[[22,0,0,2,0],[23,0,0,1,1],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,2,0],[30,0,0,1,0],[31,0,0,1,0],[52,0,0,0,1],[56,0,0,0,1]],"coding":[[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,2,0],[31,0,0,1,0]],"offline":[[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[52,0,0,1,0]],"publish":[[22,0,0,1,0],[23,0,0,0,4],[42,0,0,1,0],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,1,0],[69,0,0,1,0]],"library":[[22,0,0,1,0],[26,0,0,1,0],[63,0,0,1,0],[67,0,0,0,2],[75,0,0,1,0],[77,0,1,1,0],[84,0,0,2,0],[85,0,0,1,0],[86,0,0,1,0],[87,0,0,1,0],[88,0,1,1,0],[89,0,1,1,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0],[94,0,0,1,0],[97,0,0,0,2],[98,0,0,0,3],[113,0,0,0,1],[114,0,0,0,1]],"want":[[22,0,0,1,0],[32,0,0,1,0],[35,0,0,1,0],[59,0,0,1,0],[61,0,0,2,0],[64,0,0,1,0],[80,0,0,1,0],[104,0,0,1,0],[107,0,0,2,0],[115,0,0,1,0]],"hitting":[[22,0,0,1,0]],"network":[[22,0,0,1,0],[115,0,0,1,0]],"prepack":[[22,0,0,1,0],[26,0,0,1,0]],"include":[[22,0,0,1,0],[25,0,0,2,2],[26,0,1,0,0],[27,0,1,0,0],[28,0,0,1,0],[35,0,0,1,0],[50,0,0,1,0],[72,0,0,3,0],[73,0,0,0,1],[105,0,0,1,0],[111,0,0,1,0]],"gets":[[22,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[82,0,0,1,0],[96,0,1,0,0]],"website":[[22,0,0,2,0],[30,0,0,1,0],[56,0,0,3,1],[57,0,0,1,0],[58,0,0,1,0],[59,0,0,1,0],[60,0,0,1,0],[61,0,0,1,0],[64,0,0,1,0]],"serves":[[22,0,0,1,0],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,0,1,0],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,1,0],[40,0,0,1,0],[41,0,0,1,0]],"bundled":[[22,0,0,1,0],[29,0,1,0,0]],"everyone":[[22,0,0,1,0]],"else":[[22,0,0,1,0],[48,0,0,1,0],[111,0,0,1,0]],"flow":[[23,0,1,0,0],[33,0,1,0,0]],"src":[[23,0,0,0,2],[24,0,0,0,1],[25,0,0,0,1],[26,0,0,0,1],[28,0,0,0,1],[33,0,0,3,0],[34,0,0,0,1],[39,0,0,0,4],[47,0,0,0,1],[50,0,0,0,2],[56,0,0,0,2],[68,0,0,0,1],[72,0,0,2,0],[75,0,0,2,0],[99,0,0,1,2],[103,0,0,0,2],[106,0,0,0,1]],"repo":[[23,0,0,0,1],[24,0,0,1,0],[26,0,0,0,4],[27,0,0,0,4],[33,0,0,1,0],[34,0,0,1,0],[39,0,0,1,0],[64,0,0,2,0],[67,0,0,1,0],[72,0,0,1,0],[73,0,0,0,3]],"packages":[[23,0,0,0,2],[24,0,0,1,1],[25,0,0,1,1],[28,0,0,0,1],[61,0,0,1,0]],"lt":[[23,0,0,0,4]],"gt":[[23,0,0,0,4]],"consume":[[23,0,0,0,2],[69,0,0,1,0]],"node":[[23,0,0,0,1],[26,0,0,0,1],[29,0,0,2,0],[52,0,0,1,1],[58,0,0,1,0],[75,0,0,2,0],[77,0,0,1,0],[88,0,0,1,0],[99,0,0,0,1],[110,0,0,0,1],[111,0,0,1,0]],"modules":[[23,0,0,0,1],[29,0,0,2,0],[52,0,0,1,1],[58,0,0,1,0],[75,0,0,2,0],[88,0,0,1,0],[104,0,0,1,0]],"clis":[[23,0,0,0,1],[52,0,0,0,1],[56,0,0,0,1]],"root":[[24,0,0,1,0],[26,0,0,0,7],[27,0,0,0,6],[72,0,0,4,0],[75,0,0,1,0],[79,0,0,1,0],[88,0,0,1,0],[92,0,0,1,0]],"under":[[24,0,0,1,0],[34,0,0,1,0],[46,0,0,1,0],[54,0,0,1,0],[75,0,0,1,0],[88,0,0,1,0],[110,0,0,1,0]],"my":[[24,0,0,1,4],[28,0,0,0,1],[34,0,0,0,1],[36,0,0,0,1],[67,0,0,0,2],[97,0,0,0,1],[98,0,0,0,2],[113,0,0,0,1],[114,0,0,0,1]],"bash":[[24,0,0,0,1],[25,0,0,0,1],[28,0,0,0,1],[34,0,0,0,1],[39,0,0,0,1],[45,0,0,0,1],[46,0,0,0,1],[47,0,0,0,1],[68,0,0,0,1],[71,0,0,0,1],[72,0,0,0,1],[75,0,0,0,1],[76,0,0,0,1],[115,0,1,0,0]],"base":[[24,0,0,0,1],[26,0,0,1,1],[29,0,0,1,0],[34,0,0,0,1],[35,0,0,1,0],[68,0,0,0,1],[72,0,0,2,0],[77,0,0,1,0],[101,0,1,2,2]],"https":[[24,0,0,0,1],[26,0,0,0,1],[34,0,0,0,1],[39,0,0,0,1],[68,0,0,0,1],[74,0,0,0,1],[97,0,0,0,5],[98,0,0,0,2],[99,0,0,0,1],[101,0,0,0,1],[110,0,0,0,1]],"com":[[24,0,0,0,1],[34,0,0,0,1],[39,0,0,0,1],[68,0,0,0,1],[74,0,0,0,1],[97,0,0,0,5],[98,0,0,0,2],[99,0,0,0,1],[101,0,0,0,1],[110,0,0,0,1]],"summary":[[24,0,0,0,1],[34,0,0,0,2],[36,0,0,0,2],[45,0,0,1,0],[53,0,0,1,0],[72,0,0,2,0],[73,0,0,0,1],[89,0,0,0,1],[96,0,0,1,0],[98,0,0,0,1]],"filter":[[25,0,1,0,0],[35,0,0,0,1],[106,0,0,0,1]],"monorepo":[[25,0,0,1,0]],"shared":[[25,0,0,2,1],[64,0,0,1,0],[75,0,0,3,0],[88,0,0,2,0],[107,0,0,1,0],[116,0,0,1,0]],"many":[[25,0,0,1,0],[37,0,0,1,0],[46,0,0,1,0],[64,0,0,1,0]],"slice":[[25,0,0,1,0],[37,0,0,0,1],[53,0,0,1,0],[109,0,0,1,0]],"repeatable":[[25,0,0,1,0],[72,0,0,1,0],[75,0,0,1,0]],"exclude":[[25,0,0,2,1],[28,0,0,1,0],[72,0,0,2,0],[73,0,0,0,1]],"filters":[[25,0,0,1,0],[28,0,0,1,0],[73,0,0,0,1]],"overview":[[25,0,0,1,0]],"too":[[25,0,0,1,0]],"applied":[[25,0,0,1,0],[72,0,0,1,0]],"after":[[25,0,0,1,0],[29,0,0,1,0],[40,0,0,1,0],[48,0,0,1,0],[52,0,0,1,0],[72,0,0,1,0],[82,0,0,1,0],[94,0,0,1,0],[104,0,0,1,0],[110,0,0,1,0]],"c15t":[[25,0,0,0,1]],"internal":[[25,0,0,0,1],[43,0,0,1,0],[62,0,0,1,0],[75,0,0,1,0]],"published":[[26,0,1,0,0],[27,0,1,0,0]],"control":[[26,0,0,1,0],[35,0,0,1,0],[74,0,0,1,0],[78,0,0,1,0]],"over":[[26,0,0,1,0],[35,0,0,1,0],[51,0,0,1,0],[52,0,0,1,0],[100,0,0,1,0],[108,0,0,1,0],[115,0,0,1,0]],"fallback":[[26,0,0,1,0],[101,0,0,2,0]],"handling":[[26,0,0,1,0]],"apis":[[26,0,0,1,0],[78,0,0,2,0],[79,0,0,1,0],[80,0,0,1,0],[81,0,0,1,0],[82,0,0,1,0],[83,0,0,1,0],[97,0,0,0,1],[100,0,0,1,0],[111,0,0,1,0]],"directly":[[26,0,0,1,0],[52,0,0,1,0],[74,0,0,1,0],[78,0,0,1,0]],"script":[[26,0,0,2,0],[35,0,0,2,0],[74,0,0,3,0]],"then":[[26,0,0,1,0],[40,0,0,1,0],[102,0,0,1,0],[109,0,0,1,0],[117,0,0,1,0]],"point":[[26,0,0,1,0],[29,0,0,1,0],[78,0,0,1,0],[95,0,0,1,0],[106,0,0,1,0]],"tsup":[[26,0,0,1,1]],"scripts":[[26,0,0,1,2],[35,0,0,2,5],[77,0,0,1,0]],"dist":[[26,0,0,0,1]],"readme":[[26,0,0,0,1]],"rm":[[26,0,0,0,2],[103,0,0,0,2]],"fs":[[26,0,0,0,1],[99,0,0,0,1]],"promises":[[26,0,0,0,1],[99,0,0,0,1]],"convertallmdx":[[26,0,0,0,2],[35,0,0,0,2],[77,0,0,1,0],[78,0,0,1,1],[79,0,1,0,1],[83,0,0,1,0],[98,0,0,0,2]],"generatellmfullcontextfiles":[[26,0,0,0,2],[27,0,0,0,1],[77,0,0,1,0],[95,0,0,0,1],[98,0,0,1,2]],"generatellmstxt":[[26,0,0,0,2],[27,0,0,0,1],[74,0,0,0,2],[77,0,0,1,0],[95,0,0,0,1],[98,0,0,0,2]],"resolvedocsnavigation":[[26,0,0,0,1],[27,0,0,0,1],[77,0,0,1,0],[95,0,0,0,1],[99,0,1,0,1]],"defaultremarkplugins":[[26,0,0,0,2],[35,0,0,0,2],[77,0,0,1,0],[79,0,0,1,2],[80,0,0,0,1],[81,0,0,0,1],[83,0,0,0,2],[98,0,0,0,2],[102,0,0,0,1],[103,0,0,1,0],[105,0,0,0,1],[106,0,0,0,2],[107,0,0,1,0]],"docsconfig":[[26,0,0,0,1],[27,0,0,0,5],[74,0,0,0,3],[98,0,0,0,2],[99,0,0,0,1]],"process":[[26,0,0,0,3],[27,0,0,0,2],[35,0,0,0,1],[74,0,0,0,1],[79,0,0,1,0],[99,0,0,0,2],[101,0,0,0,3],[106,0,0,0,1]],"cwd":[[26,0,0,0,2],[35,0,0,0,1],[74,0,0,0,1],[106,0,0,0,1]],"baseurl":[[26,0,0,0,1],[27,0,0,0,3],[74,0,0,0,1],[98,0,0,0,2],[99,0,0,0,1],[101,0,0,1,1],[110,0,0,0,1]],"env":[[26,0,0,0,1],[46,0,0,0,1],[101,0,0,1,3],[114,0,0,1,0]],"trim":[[26,0,0,0,1],[116,0,0,1,0]],"generated":[[26,0,0,0,1],[33,0,0,1,0],[34,0,0,1,0],[46,0,0,1,0],[59,0,0,1,0],[72,0,0,1,0],[73,0,0,1,0],[96,0,1,0,0],[99,0,0,1,2]],"gitignored":[[26,0,0,0,1]],"safe":[[26,0,0,0,1],[62,0,0,1,0],[97,0,0,0,1],[108,0,0,1,0],[111,0,0,1,0],[117,0,0,1,0]],"nuke":[[26,0,0,0,1]],"await":[[26,0,0,0,2],[27,0,0,0,3],[35,0,0,0,1],[74,0,0,0,1],[79,0,0,0,1],[80,0,0,0,1],[81,0,0,0,1],[88,0,0,0,1],[93,0,0,0,1],[98,0,0,0,3],[99,0,0,0,3],[110,0,0,0,1],[115,0,0,0,1]],"recursive":[[26,0,0,0,1],[99,0,0,0,1]],"force":[[26,0,0,0,1]],"srcdir":[[26,0,0,0,1],[27,0,0,0,2],[35,0,0,0,2],[73,0,0,0,1],[74,0,0,0,1],[75,0,0,2,1],[79,0,0,2,1],[88,0,0,3,1],[93,0,0,0,1],[98,0,0,0,2],[99,0,0,0,1]],"outdir":[[26,0,0,0,1],[27,0,0,0,2],[35,0,0,0,2],[73,0,0,0,1],[74,0,0,0,1],[79,0,0,1,1],[98,0,0,1,3],[110,0,0,1,3]],"remarkplugins":[[26,0,0,0,1],[35,0,0,0,2],[79,0,0,1,1],[81,0,0,0,1],[83,0,0,0,1],[98,0,0,0,1],[105,0,0,0,1],[106,0,0,0,1]],"join":[[26,0,0,0,1],[38,0,0,0,1]],"dir":[[26,0,0,0,1],[72,0,0,5,0],[75,0,0,2,0]],"internally":[[26,0,0,0,1],[27,0,0,0,1],[78,0,0,1,0]],"parents":[[26,0,0,0,1],[27,0,0,0,1]],"write":[[26,0,0,0,1],[27,0,0,0,2],[54,0,0,1,0],[56,0,0,1,0],[58,0,0,1,0],[81,0,0,1,0],[99,0,0,1,1],[100,0,0,1,0]],"fast":[[27,0,0,0,1],[42,0,0,1,0],[94,0,0,1,0],[117,0,0,1,0]],"bad":[[27,0,0,0,1]],"length":[[27,0,0,0,1],[37,0,0,0,3],[99,0,0,0,1]],"urlpath":[[27,0,0,0,2],[36,0,0,0,2],[99,0,0,0,2]],"stderr":[[27,0,0,0,1],[73,0,0,1,0],[99,0,0,0,1]],"exit":[[27,0,0,0,1],[71,0,0,1,0],[72,0,0,2,0],[73,0,0,1,0],[74,0,0,1,0],[75,0,0,3,0],[76,0,0,1,0],[77,0,0,1,0],[99,0,0,0,1]],"verify":[[28,0,1,0,0],[40,0,1,0,0]],"publishing":[[28,0,1,0,0],[61,0,0,1,0]],"pack":[[28,0,0,1,1]],"dry":[[28,0,0,1,1]],"something":[[28,0,0,1,0],[100,0,0,1,0]],"check":[[28,0,0,1,0],[36,0,0,1,0],[86,0,0,1,0]],"discover":[[29,0,1,0,0]],"sit":[[29,0,0,1,0]],"ways":[[29,0,0,1,0]],"deep":[[29,0,0,1,0]],"individual":[[29,0,0,1,0],[77,0,0,1,0],[107,0,0,1,0]],"needed":[[29,0,0,1,0],[35,0,0,1,0],[106,0,0,1,0]],"set":[[29,0,0,1,0],[37,0,0,2,0],[66,0,0,1,0],[90,0,0,1,0]],"right":[[29,0,0,1,0],[109,0,0,2,0],[112,0,0,1,0]],"generating":[[29,0,0,1,0]],"urls":[[29,0,0,1,0],[43,0,0,1,0],[87,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0],[111,0,0,1,0]],"hosted":[[29,0,0,1,0],[61,0,0,2,0]],"fall":[[29,0,0,1,0],[37,0,0,1,0]],"fetching":[[29,0,0,1,0]],"date":[[29,0,0,1,0],[91,0,0,2,0]],"understand":[[30,0,0,1,0],[70,0,0,1,0]],"installed":[[30,0,0,1,0]],"dependency":[[30,0,0,1,0]],"itself":[[30,0,0,1,0]],"web":[[30,0,0,1,0]],"access":[[30,0,0,1,0]],"ide":[[30,0,0,1,0]],"assistants":[[30,0,0,1,0]],"air":[[30,0,0,1,0]],"gapped":[[30,0,0,1,0]],"environments":[[30,0,0,1,0]],"goal":[[30,0,0,1,0]],"runs":[[32,0,0,1,0],[42,0,0,1,0],[44,0,0,0,1],[54,0,1,1,0],[62,0,0,1,0],[68,0,0,1,0],[71,0,0,1,0],[74,0,0,1,0],[75,0,0,1,0],[103,0,0,1,0]],"produce":[[32,0,0,1,0],[36,0,0,1,0],[72,0,0,1,0]],"astro":[[32,0,0,1,0],[35,0,0,1,0],[53,0,0,1,0],[56,0,0,1,0],[61,0,0,1,0]],"anything":[[32,0,0,1,0],[39,0,0,1,0],[56,0,0,1,0]],"handles":[[32,0,0,1,0],[64,0,0,1,0],[97,0,0,0,1]],"br":[[33,0,0,10,0]],"pub":[[33,0,0,3,0]],"gen":[[33,0,0,4,0]],"human":[[33,0,0,2,0],[52,0,0,0,2]],"off":[[34,0,1,0,0],[72,0,0,1,0],[75,0,0,1,0]],"together":[[34,0,0,1,0],[36,0,0,1,0],[94,0,0,1,0]],"generates":[[34,0,0,1,0],[58,0,0,1,0]],"builds":[[34,0,0,1,0],[35,0,0,1,0],[58,0,0,1,0],[101,0,0,1,0],[108,0,0,1,0]],"resolves":[[34,0,0,1,0],[58,0,0,1,0]],"paths":[[34,0,0,1,0],[35,0,0,0,1],[44,0,0,0,1],[46,0,0,1,0],[75,0,0,1,0],[77,0,0,1,0],[111,0,0,1,0],[117,0,0,1,0]],"listed":[[34,0,0,1,0]],"inspected":[[34,0,0,1,0]],"detail":[[34,0,0,1,0]],"simplest":[[35,0,0,1,0]],"setup":[[35,0,0,1,0],[44,0,0,0,1],[101,0,0,1,0]],"stage":[[35,0,0,1,0],[36,0,0,1,0],[54,0,0,1,0],[80,0,0,1,0]],"rerun":[[35,0,0,1,0]],"independently":[[35,0,0,1,0],[53,0,0,1,0]],"splitting":[[35,0,0,1,0],[110,0,0,1,0]],"separate":[[35,0,0,1,0],[68,0,0,1,0],[109,0,0,1,0]],"canonical":[[35,0,0,1,0]],"remarkinclude":[[35,0,0,1,2],[79,0,0,1,2],[83,0,0,2,2],[98,0,0,0,2],[102,0,0,0,1],[105,0,1,0,1],[107,0,0,1,0]],"enables":[[35,0,0,1,0]],"foo":[[35,0,0,1,0],[53,0,0,2,0]],"style":[[35,0,0,1,0],[113,0,0,1,0]],"partial":[[35,0,0,1,0],[105,0,0,1,0]],"expansion":[[35,0,0,1,0]],"basepath":[[35,0,0,1,2],[106,0,1,1,1]],"swap":[[35,0,0,1,0]],"remarktypetabletomarkdown":[[35,0,0,1,3],[102,0,0,0,1],[103,0,0,1,1],[106,0,1,0,3]],"plugins":[[35,0,0,1,0],[50,0,0,1,0],[77,0,0,1,0],[83,0,1,1,0],[102,1,1,0,0],[103,1,1,0,0],[104,1,1,0,0],[105,1,2,0,0],[106,1,2,0,0],[107,1,1,1,0]],"mdxtomarkdownoptions":[[35,0,0,0,2]],"reporoot":[[35,0,0,0,4]],"resolve":[[35,0,0,0,1],[54,0,0,1,0],[68,0,0,1,0],[106,0,0,1,0]],"relative":[[35,0,0,0,1],[72,0,0,3,0],[88,0,0,1,0],[106,0,0,1,0]],"typetableplugin":[[35,0,0,0,2]],"nonnullable":[[35,0,0,0,1]],"number":[[35,0,0,0,1],[37,0,0,0,1],[89,0,0,0,3]],"enrichfrontmatterfromgit":[[35,0,0,0,1],[79,0,0,1,1],[80,0,0,0,1]],"configure":[[36,0,1,0,0]],"let":[[36,0,0,1,0],[56,0,0,1,0]],"manifest":[[36,0,0,1,0],[50,0,0,0,1],[51,0,0,1,0],[99,0,0,2,0]],"catches":[[36,0,0,1,0],[43,0,1,0,0],[86,0,0,1,0],[87,0,0,1,0]],"typos":[[36,0,0,1,0]],"resolution":[[36,0,0,1,0],[99,0,0,1,0],[104,0,0,2,0]],"definedocsconfig":[[36,0,0,0,2]],"export":[[36,0,0,0,1],[37,0,0,0,1],[38,0,0,0,1],[103,0,0,1,0]],"bullets":[[36,0,0,0,1]],"beststartingpoints":[[36,0,0,0,1]],"quickstart":[[36,0,0,0,1],[55,0,0,1,0],[59,0,0,1,0],[65,1,1,0,0],[66,1,1,0,0],[67,1,1,0,0],[68,1,1,0,0],[69,1,1,0,0],[70,1,1,0,0],[80,0,0,0,1],[81,0,0,0,2],[97,0,0,0,4],[112,0,0,0,1]],"started":[[36,0,0,0,2],[67,0,0,0,1],[69,0,0,0,1],[73,0,0,0,2],[97,0,0,0,1]],"guides":[[36,0,0,0,2],[100,0,0,1,0],[112,0,0,0,1]],"drop":[[37,0,0,1,0]],"front":[[37,0,0,1,0]],"fetch":[[37,0,0,1,0],[58,0,0,1,0]],"visit":[[37,0,0,1,0]],"complete":[[37,0,0,1,0],[65,0,0,1,0]],"lines":[[37,0,0,1,0]],"browsers":[[37,0,0,2,1]],"send":[[37,0,0,3,1]],"charset":[[37,0,0,5,2],[38,0,0,0,2],[40,0,0,2,0]],"utf":[[37,0,0,4,1],[38,0,0,0,1],[40,0,0,2,0]],"handlers":[[37,0,0,1,0]],"which":[[37,0,0,1,0],[53,0,0,1,0],[68,0,0,1,0],[100,0,0,1,0]],"makes":[[37,0,0,1,0],[44,0,0,1,0]],"latin":[[37,0,0,1,0]],"characters":[[37,0,0,1,0],[40,0,0,1,0]],"box":[[37,0,0,1,0]],"drawing":[[37,0,0,1,0]],"em":[[37,0,0,1,0]],"dashes":[[37,0,0,1,0]],"smart":[[37,0,0,1,0]],"quotes":[[37,0,0,1,0]],"mojibake":[[37,0,0,1,0],[40,0,0,1,0]],"always":[[37,0,0,1,0],[98,0,0,1,0]],"forceutf8ontextresponses":[[37,0,0,1,1],[38,0,0,0,1]],"patching":[[37,0,0,1,0]],"setheader":[[37,0,0,1,3]],"rewritetomarkdown":[[37,0,0,1,1],[38,0,0,0,1]],"logic":[[37,0,0,1,0],[99,0,0,1,0]],"cloudflare":[[37,0,0,1,0],[53,0,0,1,0],[111,0,0,1,0],[114,0,0,1,2],[115,0,0,1,0],[116,0,0,1,0]],"worker":[[37,0,0,1,0],[53,0,0,1,0]],"case":[[37,0,0,1,0]],"explicitly":[[37,0,0,1,0],[74,0,0,1,0],[101,0,0,1,0]],"pluginoption":[[37,0,0,0,1],[38,0,0,0,1]],"function":[[37,0,0,0,3],[38,0,0,0,1],[79,0,0,1,0],[109,0,0,1,0]],"undefined":[[37,0,0,0,1]],"null":[[37,0,0,0,6],[99,0,0,0,1]],"return":[[37,0,0,0,8],[38,0,0,0,4]],"pathname":[[37,0,0,0,8]],"split":[[37,0,0,0,1]],"endswith":[[37,0,0,0,1]],"startswith":[[37,0,0,0,1]],"test":[[37,0,0,0,5],[38,0,0,0,2]],"never":[[37,0,0,0,1],[107,0,0,1,0]],"target":[[37,0,0,0,2]],"replace":[[37,0,0,0,1],[93,0,0,1,0],[103,0,0,1,0]],"res":[[37,0,0,0,4],[38,0,0,0,2]],"original":[[37,0,0,0,3],[38,0,0,0,2]],"bind":[[37,0,0,0,1]],"typeof":[[37,0,0,0,2]],"tolowercase":[[37,0,0,0,1]],"down":[[38,0,0,0,1]],"markdownnegotiation":[[38,0,0,0,1]],"req":[[38,0,0,0,7]],"any":[[38,0,0,0,2],[44,0,0,1,0],[45,0,0,1,0],[61,0,0,1,0],[72,0,0,1,0],[75,0,0,1,0],[94,0,0,1,0],[97,0,0,0,1],[105,0,0,1,0],[107,0,0,1,0],[113,0,0,1,0]],"void":[[38,0,0,0,1]],"isarray":[[38,0,0,0,1]],"headers":[[38,0,0,0,3],[116,0,0,1,0]],"rewritten":[[38,0,0,0,3]],"middlewares":[[38,0,0,0,2]],"configurepreviewserver":[[38,0,0,0,1]],"remote":[[39,0,1,0,0]],"malformed":[[39,0,0,1,0]],"format":[[39,0,0,1,1],[44,0,0,1,1],[45,0,0,2,1],[72,0,0,2,0],[75,0,0,2,0],[94,0,0,2,0],[109,0,0,1,0]],"github":[[39,0,0,1,2],[44,0,1,1,1],[45,0,0,1,0],[75,0,0,1,0],[94,0,0,2,0]],"inline":[[39,0,0,1,0],[44,0,0,1,0],[71,0,0,1,0]],"annotations":[[39,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0]],"pr":[[39,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0]],"automation":[[39,0,0,1,0]],"stats":[[39,0,0,1,0],[73,0,0,0,1]],"shape":[[39,0,0,1,0],[49,0,0,1,0],[56,0,0,1,0],[73,0,1,0,0],[89,0,1,0,0]],"we":[[39,0,0,1,0]],"expect":[[39,0,0,1,0]],"orgs":[[39,0,0,1,0]],"hosting":[[39,0,0,1,0],[63,0,0,1,0]],"multiple":[[39,0,0,1,0]],"repos":[[39,0,0,1,0],[61,0,0,1,0],[64,0,0,1,0]],"documents":[[39,0,0,1,0],[64,0,0,1,0]],"pulls":[[39,0,0,1,0]],"clone":[[39,0,0,0,1]],"depth":[[39,0,0,0,1]],"acme":[[39,0,0,0,1]],"clean":[[40,0,0,1,0],[56,0,0,1,1],[78,0,0,1,0],[82,0,0,1,0],[103,0,0,0,1],[104,0,0,1,0]],"home":[[40,0,0,1,0]],"mention":[[40,0,0,1,0]],"server":[[40,0,0,1,0]],"curl":[[40,0,0,1,0]],"http":[[40,0,0,1,0],[52,0,0,1,0],[56,0,0,0,1],[58,0,0,1,0]],"localhost":[[40,0,0,1,0]],"will":[[40,0,0,1,0],[53,0,0,1,0],[69,0,0,1,0],[100,0,0,1,0]],"instead":[[40,0,0,1,0],[115,0,0,1,0]],"wired":[[40,0,0,1,0]],"validate":[[42,1,1,0,0],[43,1,1,0,0],[44,1,1,0,0],[45,1,1,0,0],[46,1,1,0,0],[47,1,1,0,0],[48,1,1,1,0],[54,0,0,1,0],[75,0,0,1,0],[80,0,0,1,0],[94,0,0,1,0]],"issues":[[42,0,0,1,0],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,2,0],[47,0,0,1,0],[48,0,0,1,0],[84,0,0,1,0]],"prs":[[42,0,0,2,0],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,1,0],[84,0,0,1,0]],"exits":[[42,0,0,1,0]],"zero":[[42,0,0,1,0],[57,0,0,1,0],[61,0,0,1,0],[75,0,0,1,0]],"errors":[[42,0,0,1,0],[44,0,0,1,0],[73,0,0,1,0],[75,0,0,3,0],[89,0,0,0,1],[94,0,0,1,0]],"would":[[42,0,0,1,0]],"otherwise":[[42,0,0,1,0]],"blow":[[42,0,0,1,0]],"later":[[42,0,0,1,0]],"typed":[[43,0,0,1,0],[48,0,0,1,0]],"rule":[[43,0,0,2,0],[75,0,0,1,0],[86,0,0,1,0],[87,0,0,1,0],[89,0,0,1,1]],"pointing":[[43,0,0,1,0]],"routes":[[43,0,0,1,0]],"placeholders":[[43,0,0,1,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0]],"left":[[43,0,0,1,0]],"actions":[[44,0,1,0,1],[94,0,0,1,0]],"upgrades":[[44,0,0,1,0],[86,0,0,1,0]],"strict":[[44,0,0,1,0],[93,0,0,1,0]],"max":[[44,0,0,1,1],[46,0,0,0,1],[75,0,0,1,0]],"remaining":[[44,0,0,1,0]],"job":[[44,0,0,1,0],[47,0,0,1,0],[61,0,0,1,0]],"pull":[[44,0,0,0,1]],"request":[[44,0,0,0,1],[53,0,0,1,0],[116,0,0,1,0]],"jobs":[[44,0,0,0,1]],"ubuntu":[[44,0,0,0,1]],"latest":[[44,0,0,0,1]],"checkout":[[44,0,0,0,1]],"v4":[[44,0,0,0,1]],"oven":[[44,0,0,0,1]],"sh":[[44,0,0,0,1],[46,0,0,0,1]],"v2":[[44,0,0,0,1]],"providers":[[45,0,1,0,0]],"speak":[[45,0,0,1,0]],"includes":[[45,0,0,1,0],[47,0,0,1,0],[83,0,0,1,0]],"counts":[[45,0,0,1,0]],"pipe":[[45,0,0,1,0],[56,0,0,0,6],[93,0,0,0,1]],"provider":[[45,0,0,1,0],[108,0,0,1,0],[114,0,1,1,0]],"reporter":[[45,0,0,1,0]],"post":[[45,0,0,1,0]],"comment":[[45,0,0,1,0]],"upload":[[45,0,0,1,0]],"artifact":[[45,0,0,1,0],[51,0,0,1,0],[59,0,0,1,0]],"report":[[45,0,0,0,1],[75,0,0,2,0]],"local":[[46,0,1,0,0],[72,0,0,1,0],[101,0,0,1,0],[106,0,0,1,0],[117,0,0,1,0]],"pre":[[46,0,1,1,0],[115,0,0,1,0]],"push":[[46,0,1,1,0]],"hook":[[46,0,1,1,0]],"catch":[[46,0,0,1,0],[85,0,0,1,0],[100,0,0,1,0]],"running":[[46,0,0,1,0],[57,0,0,1,0]],"husky":[[46,0,0,1,0]],"second":[[46,0,0,1,0]],"limiting":[[46,0,0,1,0]],"scan":[[46,0,0,1,0]],"changed":[[46,0,0,1,0]],"repeated":[[46,0,0,1,0]],"ignore":[[46,0,0,1,0],[75,0,0,3,0],[88,0,0,2,0]],"globs":[[46,0,0,1,0]],"skip":[[46,0,0,1,0],[75,0,0,1,0],[107,0,0,1,0]],"stale":[[46,0,0,1,0],[48,0,0,1,0],[94,0,0,1,0]],"usr":[[46,0,0,0,1]],"bin":[[46,0,0,0,1]],"noisily":[[47,0,0,1,0]],"broken":[[47,0,0,1,0],[48,0,0,1,0],[54,0,0,1,0]],"specifically":[[47,0,0,1,0]],"problems":[[47,0,0,1,0]],"line":[[47,0,0,1,0]],"much":[[47,0,0,1,0]],"easier":[[47,0,0,1,0]],"debug":[[47,0,0,1,0]],"fix":[[48,0,1,1,0],[107,0,0,1,0]],"lot":[[48,0,0,1,0]],"bug":[[48,0,0,2,0],[54,0,0,1,0],[94,0,0,1,0]],"usually":[[48,0,0,1,0],[66,0,0,1,0],[79,0,0,1,0],[94,0,0,1,0],[107,0,0,1,0]],"move":[[48,0,0,1,0],[94,0,0,1,0]],"last":[[48,0,0,1,0],[104,0,0,1,0]],"either":[[48,0,0,1,0],[52,0,0,1,0]],"delete":[[48,0,0,1,0]],"mental":[[49,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[59,0,0,1,0],[97,0,0,0,2]],"model":[[49,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[59,0,0,1,0],[97,0,0,0,2],[113,0,0,2,0],[114,0,0,1,1]],"four":[[49,0,0,1,0],[50,0,0,1,0],[51,0,1,2,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[65,0,0,1,0],[66,0,0,1,0],[67,0,0,1,0],[68,0,0,2,0],[69,0,0,1,0],[70,0,0,2,0]],"artifacts":[[49,0,0,1,0],[50,0,0,1,0],[51,0,1,1,0],[52,0,0,1,5],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[60,0,0,1,0],[65,0,0,1,0],[66,0,0,1,0],[67,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[72,0,0,1,0]],"takes":[[49,0,0,1,0],[57,0,0,1,0]],"input":[[49,0,0,1,0]],"folder":[[49,0,0,1,0],[65,0,0,2,0],[66,0,0,1,0],[67,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[72,0,0,2,0]],"take":[[49,0,0,1,0],[56,0,0,1,0]],"piece":[[49,0,0,1,0]],"make":[[49,0,0,1,0],[117,0,0,1,0]],"sense":[[49,0,0,1,0]],"turns":[[50,0,0,1,0],[102,0,0,1,0],[113,0,0,1,0]],"sequence":[[50,0,0,1,0],[98,0,1,0,0]],"ranks":[[50,0,0,1,0]],"tb":[[50,0,0,0,1],[103,0,0,0,1]],"fm":[[50,0,0,0,4]],"parser":[[50,0,0,0,1]],"strip":[[50,0,0,0,1],[103,0,0,2,0]],"idx":[[50,0,0,0,2],[56,0,0,0,3]],"kinds":[[51,0,0,1,0]],"derive":[[51,0,0,1,0]],"there":[[51,0,0,1,0],[82,0,0,1,0]],"manual":[[51,0,0,1,0]],"duplication":[[51,0,0,1,0]],"served":[[51,0,0,1,0]],"via":[[51,0,0,1,0],[52,0,0,1,0],[56,0,0,0,1],[58,0,0,1,0],[62,0,0,1,0],[75,0,0,1,0],[78,0,0,1,0],[108,0,0,1,0],[114,0,1,0,0]],"consumed":[[51,0,0,1,0]],"plus":[[51,0,0,1,0],[52,0,0,1,0],[58,0,0,1,0],[62,0,0,1,0],[66,0,0,1,0],[68,0,0,1,0],[80,0,0,1,0],[103,0,0,1,0],[113,0,0,1,0]],"bm25":[[51,0,0,1,0],[68,0,0,1,0],[69,0,0,0,1],[109,0,0,1,0]],"ranked":[[51,0,0,1,0]],"inverted":[[51,0,0,1,0]],"stored":[[51,0,0,1,0]],"separately":[[51,0,0,1,0],[114,0,0,2,0]],"mapping":[[51,0,0,1,0]],"locations":[[51,0,0,1,0]],"structure":[[51,0,0,1,0],[74,0,0,1,0],[79,0,0,1,0]],"store":[[52,0,0,1,0],[68,0,0,1,0],[69,0,0,0,1],[109,0,0,1,0],[116,0,0,1,0]],"lexical":[[52,0,0,1,0],[117,0,0,1,0]],"results":[[52,0,0,1,0],[109,0,0,1,0],[111,0,0,1,1]],"feeds":[[52,0,0,1,0]],"grounded":[[52,0,0,1,0],[62,0,0,1,0],[108,0,0,2,0],[109,0,0,1,0],[110,0,0,1,0],[111,0,0,1,0],[112,0,0,1,0],[113,0,1,1,0],[114,0,0,1,0],[115,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0]],"ai":[[52,0,0,1,1],[56,0,0,0,1],[61,0,0,1,0],[114,0,0,1,5]],"answers":[[52,0,0,1,1],[56,0,0,0,1],[109,0,0,1,0],[113,0,1,0,0]],"pkg":[[52,0,0,0,1]],"vocabulary":[[53,0,1,0,0],[109,0,1,0,0],[117,0,0,1,0]],"few":[[53,0,0,1,0]],"terms":[[53,0,0,1,0]],"throughout":[[53,0,0,1,0]],"verb":[[53,0,0,1,0]],"declaring":[[53,0,0,1,0]],"belongs":[[53,0,0,1,0]],"noun":[[53,0,0,3,0]],"own":[[53,0,0,1,0],[56,0,0,1,0],[61,0,0,1,0],[63,0,1,0,0]],"chunk":[[53,0,0,1,0],[69,0,0,0,1],[109,0,0,4,0],[112,0,0,0,1]],"scores":[[53,0,0,1,0]],"weigh":[[53,0,0,1,0],[109,0,0,1,0]],"rewrites":[[53,0,0,1,0]],"advertises":[[53,0,0,1,0]],"implement":[[53,0,0,1,0]],"wherever":[[53,0,0,1,0]],"intercepts":[[53,0,0,1,0]],"requests":[[53,0,0,1,0]],"endpoint":[[53,0,0,1,0],[64,0,0,1,0]],"fixed":[[54,0,0,1,0]],"depends":[[54,0,0,1,0]],"previous":[[54,0,0,1,0]],"through":[[54,0,0,1,0],[68,0,0,1,0],[87,0,0,1,0]],"matches":[[54,0,0,1,0],[57,0,0,1,0],[117,0,0,1,0]],"known":[[54,0,0,1,0]],"grouping":[[54,0,0,1,0]],"chunking":[[54,0,0,1,0]],"finds":[[54,0,0,1,0],[106,0,0,1,0]],"design":[[54,0,0,1,0],[64,0,0,1,0],[100,0,1,0,0]],"problem":[[54,0,0,1,0]],"bring":[[56,0,0,1,0]],"handle":[[56,0,0,1,0]],"validation":[[56,0,0,1,0],[64,0,0,1,0]],"outputs":[[56,0,0,1,0],[64,0,0,1,0],[95,0,0,1,0]],"choose":[[57,0,1,0,0]],"most":[[57,0,0,1,0],[83,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0]],"teams":[[57,0,0,1,0]],"arrive":[[57,0,0,1,0]],"reasons":[[57,0,0,1,0]],"pick":[[57,0,0,1,0]],"journey":[[57,0,0,1,0]],"yours":[[57,0,0,1,0]],"familiar":[[58,0,0,1,0]],"others":[[58,0,0,1,0]],"load":[[58,0,0,1,0],[100,0,0,2,0],[110,0,0,2,0]],"five":[[59,0,0,1,0],[65,0,0,1,0],[97,0,0,0,1]],"minutes":[[59,0,0,1,0],[65,0,0,1,0]],"comparing":[[59,0,0,1,0]],"methodology":[[59,0,0,1,0],[60,1,1,0,0],[61,1,1,0,0],[62,1,1,0,0],[63,1,1,0,0],[64,1,1,0,0]],"differs":[[59,0,0,1,0],[60,0,0,1,0],[61,0,0,1,0],[62,0,0,1,0],[63,0,0,1,0],[64,0,0,1,0]],"fumadocs":[[59,0,0,1,0],[60,0,0,1,0],[61,0,0,2,0],[62,0,0,1,0],[63,0,0,1,0],[64,0,0,2,0]],"starlight":[[59,0,0,1,0],[60,0,0,1,0],[61,0,0,2,0],[62,0,0,1,0],[63,0,0,1,0],[64,0,0,2,0]],"mintlify":[[59,0,0,1,0],[60,0,0,1,0],[61,0,0,2,0],[62,0,0,1,0],[63,0,0,1,0],[64,0,0,1,0]],"layout":[[60,0,0,1,0]],"theming":[[60,0,0,1,0],[63,0,0,1,0]],"version":[[61,0,1,0,0],[91,0,0,1,0]],"tool":[[61,0,0,1,0],[115,0,1,0,0]],"platform":[[61,0,0,2,0]],"analytics":[[61,0,0,1,0],[63,0,0,1,0]],"built":[[61,0,0,1,0]],"layer":[[61,0,0,1,0],[117,0,0,1,0]],"behind":[[61,0,0,1,0]],"main":[[61,0,0,1,0],[76,0,0,0,1]],"polished":[[61,0,0,1,0]],"quickly":[[61,0,0,1,0],[100,0,0,1,0]],"infra":[[61,0,0,1,0]],"standardize":[[61,0,0,1,0]],"edge":[[62,0,0,1,0],[108,0,0,1,0],[111,0,0,1,0],[117,0,0,1,0]],"answer":[[62,0,0,1,0],[108,0,0,2,0],[109,0,0,1,0],[110,0,0,2,0],[111,0,0,1,0],[112,0,0,1,0],[113,0,0,2,0],[114,0,0,2,0],[115,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0]],"streaming":[[62,0,0,1,0],[108,0,0,2,0],[109,0,0,1,0],[110,0,0,1,0],[111,0,0,1,0],[112,0,0,1,0],[113,0,0,1,0],[114,0,1,1,0],[115,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0]],"metadata":[[62,0,0,1,0],[114,0,0,1,0]],"orchestration":[[62,0,0,1,0]],"whole":[[62,0,0,1,0]],"prebuilt":[[63,0,0,1,0]],"provides":[[63,0,0,1,0]],"those":[[63,0,0,1,0],[100,0,0,1,0]],"combination":[[64,0,1,0,0]],"shines":[[64,0,1,0,0]],"experience":[[64,0,0,1,0]],"keeps":[[64,0,0,1,0],[101,0,0,1,0],[110,0,0,1,0]],"private":[[64,0,0,1,0]],"templated":[[64,0,0,1,0]],"system":[[64,0,0,1,0],[113,0,0,2,1]],"pair":[[64,0,0,1,0],[83,0,0,1,0]],"alongside":[[64,0,0,1,0]],"against":[[65,0,0,1,0],[66,0,0,1,0],[67,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[75,0,0,1,0],[88,0,0,1,0]],"ships":[[66,0,0,1,0],[106,0,0,1,0]],"executable":[[66,0,0,1,0]],"focused":[[66,0,0,1,0],[100,0,0,1,0]],"sentence":[[67,0,0,0,1]],"welcome":[[67,0,0,0,1],[100,0,0,1,0]],"walks":[[68,0,0,1,0]],"excerpts":[[68,0,0,1,0],[109,0,0,1,0]],"reports":[[68,0,0,1,0]],"found":[[68,0,0,1,0]],"now":[[70,0,0,1,0],[99,0,0,1,0]],"primitives":[[70,0,0,1,0]],"flags":[[71,0,0,1,0],[72,0,0,1,0],[73,0,0,1,0],[74,0,0,1,0],[75,0,0,1,0],[76,0,0,1,0],[77,0,0,1,0],[84,0,0,1,0],[97,0,0,0,1]],"codes":[[71,0,0,1,0],[72,0,0,2,0],[73,0,0,1,0],[74,0,0,1,0],[75,0,0,2,0],[76,0,0,1,0],[77,0,0,1,0]],"validates":[[71,0,0,1,0],[84,0,0,1,0]],"help":[[71,0,0,1,0],[72,0,0,1,0],[75,0,0,1,0],[76,0,1,0,3]],"usage":[[71,0,0,1,0],[72,0,0,2,0],[75,0,0,2,0],[76,0,0,1,1]],"flag":[[72,0,0,1,0],[75,0,0,1,0],[97,0,0,0,1]],"directory":[[72,0,0,1,0],[79,0,0,2,0]],"containing":[[72,0,0,1,0]],"written":[[72,0,0,1,0]],"glob":[[72,0,0,4,0],[75,0,0,2,0],[88,0,0,1,0]],"none":[[72,0,0,2,0]],"history":[[72,0,0,1,0],[79,0,0,1,0]],"fmt":[[72,0,0,1,0],[75,0,0,1,0]],"prints":[[72,0,0,1,0],[73,0,0,1,0]],"result":[[72,0,0,1,0],[80,0,0,0,3],[88,0,0,0,1],[89,0,1,0,0],[99,0,0,1,0],[110,0,0,1,0],[112,0,0,1,0]],"object":[[72,0,0,1,0],[73,0,0,1,0],[93,0,0,0,1],[99,0,0,1,0]],"stdout":[[72,0,0,1,0]],"alias":[[72,0,0,1,0]],"print":[[72,0,0,1,0],[73,0,0,1,0],[75,0,0,1,0]],"describing":[[73,0,0,1,0]],"was":[[73,0,0,1,0]],"abs":[[73,0,0,0,8]],"docsdir":[[73,0,0,0,1]],"llmstxt":[[73,0,0,0,1]],"docsllmstxt":[[73,0,0,0,1]],"docsllmsfulltxt":[[73,0,0,0,1]],"searchindex":[[73,0,0,0,1]],"searchcontent":[[73,0,0,0,1]],"inference":[[74,0,1,0,0]],"loaded":[[74,0,0,1,0]],"importing":[[74,0,0,1,0]],"inferred":[[74,0,0,2,0],[82,0,0,1,0]],"union":[[74,0,0,1,0]],"values":[[74,0,0,1,0]],"honored":[[74,0,0,0,1]],"positional":[[75,0,0,1,0]],"changelog":[[75,0,0,2,0],[88,0,0,2,0],[89,0,0,0,1],[91,0,1,0,0]],"subdirectory":[[75,0,0,1,0],[88,0,0,1,0]],"validated":[[75,0,0,1,0],[88,0,0,1,0]],"pretty":[[75,0,0,2,0]],"annotation":[[75,0,0,1,0]],"defaults":[[75,0,0,3,0],[83,0,0,1,0],[88,0,0,1,0],[93,0,0,1,0]],"passing":[[75,0,0,1,0]],"unlimited":[[75,0,0,1,0]],"count":[[75,0,0,1,0]],"exceeds":[[75,0,0,1,0]],"within":[[75,0,0,1,0]],"budget":[[75,0,0,2,0]],"exceeded":[[75,0,0,1,0]],"ignored":[[75,0,0,1,0],[103,0,0,1,0]],"partials":[[75,0,0,1,0],[83,0,0,1,0],[88,0,0,1,0]],"re":[[75,0,0,1,0],[103,0,0,0,2],[117,0,0,1,0]],"plug":[[75,0,0,1,0]],"valibot":[[75,0,0,1,0],[88,0,0,3,0],[93,0,0,1,1]],"schemas":[[75,0,0,1,0],[84,0,0,1,0],[88,0,0,3,0],[90,0,1,0,0],[91,0,1,0,0],[92,0,1,0,0],[93,0,1,0,1]],"show":[[76,0,0,1,0]],"thin":[[77,0,0,1,0],[114,0,0,1,0]],"wrapper":[[77,0,0,1,0]],"available":[[77,0,0,1,0]],"convertmdxtomarkdown":[[77,0,0,1,0],[78,0,0,0,1],[80,0,1,0,1]],"writemdxfileasmarkdown":[[77,0,0,1,0],[78,0,0,0,1],[81,0,1,0,1]],"generatedocssearchfiles":[[77,0,0,1,0],[110,0,0,0,2]],"lintdocs":[[77,0,0,1,0],[84,0,0,0,1],[88,0,0,0,2],[93,0,0,0,2]],"happy":[[77,0,0,1,0],[97,0,0,0,1]],"precedence":[[77,0,0,1,0],[101,0,1,0,0]],"alternate":[[77,0,0,1,0]],"calls":[[78,0,0,1,0]],"memory":[[78,0,0,1,0],[80,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0]],"batch":[[79,0,0,1,0]],"option":[[79,0,0,1,0],[88,0,0,1,0]],"destination":[[79,0,0,1,0]],"mirrors":[[79,0,0,1,0]],"matters":[[79,0,0,1,0],[102,0,0,1,0],[104,0,1,0,0]],"adds":[[79,0,0,1,0]],"concurrent":[[79,0,0,1,0],[82,0,0,1,0]],"large":[[79,0,0,1,0],[96,0,0,1,0]],"parallel":[[79,0,0,1,0]],"parsed":[[80,0,0,1,0]],"yourself":[[80,0,0,1,0]],"writing":[[80,0,0,1,0]],"feed":[[80,0,0,1,0],[104,0,0,1,0]],"touching":[[80,0,0,1,0],[108,0,0,1,0]],"disk":[[80,0,0,1,0]],"console":[[80,0,0,0,2]],"log":[[80,0,0,0,2]],"srcpath":[[81,0,0,0,1]],"outpath":[[81,0,0,0,1]],"preserved":[[82,0,0,1,0]],"blocks":[[82,0,0,2,0],[86,0,0,1,0],[103,0,0,1,0]],"survive":[[82,0,0,1,0]],"synthesized":[[82,0,0,1,0]],"sometimes":[[82,0,0,1,0]],"tables":[[82,0,0,1,0]],"compacted":[[82,0,0,1,0]],"global":[[82,0,0,1,0]],"pairing":[[83,0,1,0,0]],"setups":[[83,0,0,1,0]],"expand":[[83,0,0,1,0]],"ast":[[83,0,0,1,0]],"sees":[[83,0,0,1,0],[104,0,0,1,0],[105,0,0,1,0]],"rationale":[[83,0,0,1,0]],"documented":[[84,0,0,1,0]],"covers":[[84,0,0,1,0],[101,0,0,1,0]],"grouped":[[85,0,0,1,0]],"severity":[[86,0,0,1,0],[87,0,0,1,0],[89,0,0,0,1]],"active":[[86,0,0,1,0]],"won":[[86,0,0,1,0]],"treat":[[86,0,0,1,0],[94,0,0,1,0]],"highest":[[86,0,0,1,0]],"priority":[[86,0,0,1,0]],"similar":[[87,0,0,1,0],[103,0,0,1,0]],"linting":[[87,0,0,1,0]],"walking":[[87,0,0,1,0]],"performs":[[87,0,0,1,0]],"final":[[87,0,0,1,0],[101,0,0,1,0],[104,0,0,1,0]],"changelogdir":[[88,0,0,1,0]],"patterns":[[88,0,0,2,0]],"shown":[[88,0,0,1,0]],"unknownfieldseverity":[[88,0,0,1,1]],"changelogfrontmatter":[[88,0,0,1,0]],"failures":[[89,0,0,1,0]],"reported":[[89,0,0,1,0]],"lintresult":[[89,0,0,0,1]],"kind":[[89,0,0,0,1]],"filesscanned":[[89,0,0,0,1]],"yes":[[90,0,0,1,0],[91,0,0,3,0],[92,0,0,1,0]],"produced":[[90,0,0,1,0]],"semver":[[91,0,0,1,0]],"iso":[[91,0,0,1,0]],"parseable":[[91,0,0,1,0]],"release":[[91,0,0,1,0]],"improvement":[[91,0,0,1,0]],"retired":[[91,0,0,1,0]],"deprecation":[[91,0,0,1,0]],"authors":[[91,0,0,1,0]],"defaultopen":[[92,0,0,1,0]],"combined":[[92,0,0,1,0]],"provide":[[93,0,0,1,0]],"apply":[[93,0,0,1,0]],"customfrontmatter":[[93,0,0,0,2]],"minlength":[[93,0,0,0,1]],"audience":[[93,0,0,0,1]],"picklist":[[93,0,0,0,1]],"beginner":[[93,0,0,0,1]],"advanced":[[93,0,0,0,1]],"practical":[[94,0,1,0,0]],"guidance":[[94,0,1,0,0]],"template":[[94,0,0,1,0],[104,0,0,1,0]],"updates":[[94,0,0,1,0]],"wiring":[[94,0,0,1,0]],"pipelines":[[94,0,0,1,0]],"derived":[[95,0,0,1,0]],"purpose":[[96,0,0,1,0],[116,0,0,1,0]],"best":[[96,0,0,1,0],[97,0,0,0,1]],"starting":[[96,0,0,1,0],[97,0,0,0,1]],"lists":[[96,0,0,1,0]],"descriptions":[[96,0,0,1,0],[100,0,0,2,0]],"very":[[96,0,0,1,0]],"windows":[[96,0,0,1,0]],"narrower":[[96,0,0,1,0]],"budgets":[[96,0,0,1,0]],"appear":[[96,0,0,1,0]],"parent":[[96,0,0,1,0]],"thing":[[97,0,0,0,1],[98,0,0,0,1]],"well":[[97,0,0,0,1],[98,0,0,0,1]],"helper":[[97,0,0,0,1],[116,0,0,1,0]],"boring":[[97,0,0,0,1]],"parts":[[97,0,0,0,1]],"documentation":[[97,0,0,0,1]],"minute":[[97,0,0,0,1]],"typical":[[98,0,1,0,0]],"returns":[[99,0,0,1,0]],"useful":[[99,0,0,1,0]],"driving":[[99,0,0,1,0]],"mkdir":[[99,0,0,0,2]],"writefile":[[99,0,0,0,2]],"stringify":[[99,0,0,0,1]],"come":[[100,0,0,1,0]],"principles":[[100,0,0,1,0]],"prefer":[[100,0,0,1,0]],"narrow":[[100,0,0,1,0]],"giant":[[100,0,0,1,0]],"truncate":[[100,0,0,1,0]],"flavor":[[100,0,0,1,0]],"decide":[[100,0,0,1,0]],"beats":[[100,0,0,1,0]],"our":[[100,0,0,1,0]],"environment":[[101,0,0,1,0]],"variables":[[101,0,0,1,0]],"layered":[[101,0,0,1,0]],"lets":[[101,0,0,1,0]],"override":[[101,0,0,1,0],[106,0,0,1,0]],"org":[[101,0,0,1,0]],"wide":[[101,0,0,1,0]],"platforms":[[101,0,0,1,0]],"hardcoded":[[101,0,0,1,0]],"working":[[101,0,0,1,0]],"portless":[[101,0,0,0,1]],"stripped":[[102,0,0,1,0]],"remarkremoveimports":[[103,0,0,1,1]],"statements":[[103,0,0,1,0]],"remarkremovejsxcomments":[[103,0,0,1,1]],"comments":[[103,0,0,1,0]],"remarkresolvedocplaceholders":[[103,0,0,1,1],[104,0,0,1,0]],"remarksectiontomarkdown":[[103,0,0,1,1]],"containers":[[103,0,0,1,0]],"remarkcallouttomarkdown":[[103,0,0,1,1]],"remarkcardstomarkdown":[[103,0,0,1,1]],"bulleted":[[103,0,0,1,0]],"remarkdetailstomarkdown":[[103,0,0,1,1]],"remarkmermaidtomarkdown":[[103,0,0,1,1]],"remarkcommandtabstomarkdown":[[103,0,0,1,1]],"remarkstepstomarkdown":[[103,0,0,1,1]],"remarktabstomarkdown":[[103,0,0,1,1]],"remarkaccordiontomarkdown":[[103,0,0,1,1]],"remarktopicswitchertomarkdown":[[103,0,0,1,1]],"labeled":[[103,0,0,1,0]],"remarkexampletomarkdown":[[103,0,0,1,1]],"mdast":[[103,0,0,0,1]],"ri":[[103,0,0,0,2]],"rj":[[103,0,0,0,2]],"rd":[[103,0,0,0,2]],"rs":[[103,0,0,0,2]],"rc":[[103,0,0,0,2]],"rcd":[[103,0,0,0,2]],"rdt":[[103,0,0,0,2]],"rct":[[103,0,0,0,2]],"rst":[[103,0,0,0,2]],"rt":[[103,0,0,0,2]],"rtt":[[103,0,0,0,2]],"ra":[[103,0,0,0,2]],"rts":[[103,0,0,0,2]],"must":[[104,0,0,2,0]],"go":[[104,0,0,2,0]],"because":[[104,0,0,2,0]],"some":[[104,0,0,1,0]],"imported":[[104,0,0,1,0]],"flatteners":[[104,0,0,3,0]],"assume":[[104,0,0,1,0]],"strings":[[104,0,0,1,0]],"literals":[[104,0,0,1,0]],"reorder":[[104,0,0,1,0]],"casually":[[104,0,0,1,0]],"flattener":[[104,0,0,2,0],[105,0,0,1,0],[107,0,0,1,0]],"transform":[[104,0,0,1,0]],"contracted":[[104,0,0,1,0]],"insert":[[104,0,0,1,0]],"composition":[[105,0,0,1,0]],"included":[[105,0,0,1,0]],"expands":[[105,0,0,1,0]],"pipelineexampleoptions":[[106,0,0,0,1]],"types":[[106,0,0,0,1]],"selection":[[107,0,1,0,0]],"composed":[[107,0,0,1,0]],"fragments":[[107,0,0,1,0]],"intentionally":[[107,0,0,1,0]],"omit":[[107,0,0,1,0]],"processing":[[107,0,0,1,0]],"cost":[[107,0,0,1,0]],"almost":[[107,0,0,1,0]],"reordering":[[107,0,0,1,0]],"between":[[107,0,0,1,0]],"existing":[[107,0,0,1,0]],"ones":[[107,0,0,1,0]],"helpers":[[108,0,0,1,0],[109,0,0,1,0],[110,0,0,1,0],[111,0,0,1,0],[112,0,0,1,0],[113,0,0,1,0],[114,0,0,1,0],[115,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0]],"exposes":[[108,0,0,1,0],[115,0,0,1,0]],"queries":[[108,0,0,1,0]],"database":[[108,0,0,1,0]],"layers":[[108,0,0,1,0]],"document":[[109,0,0,2,0]],"jump":[[109,0,0,1,0]],"ranking":[[109,0,0,1,0]],"tunable":[[109,0,0,1,0]],"generator":[[109,0,0,1,0],[110,0,0,1,0]],"compact":[[109,0,0,1,0]],"tuple":[[109,0,0,1,0]],"term":[[109,0,0,1,0]],"postings":[[109,0,0,1,0]],"refs":[[109,0,0,2,0]],"actual":[[109,0,0,1,0]],"separated":[[109,0,0,1,0]],"loading":[[109,0,0,1,0]],"lazily":[[109,0,0,1,0]],"indexing":[[110,0,1,0,0]],"cheap":[[110,0,0,1,0],[117,0,0,1,0]],"hover":[[110,0,0,1,0]],"vercel":[[111,0,0,1,0],[114,0,0,0,2],[115,0,0,0,1],[116,0,0,1,0]],"anywhere":[[111,0,0,1,0]],"hash":[[111,0,0,1,0]],"snippets":[[111,0,0,1,0]],"ready":[[111,0,0,1,0]],"searchdocs":[[111,0,0,0,2]],"docssearchindex":[[111,0,0,0,2]],"docssearchcontentstore":[[111,0,0,0,2]],"indexjson":[[111,0,0,0,2]],"contentjson":[[111,0,0,0,2]],"doubles":[[112,0,0,1,0]],"virtual":[[112,0,0,1,0],[115,0,0,1,0]],"filesystem":[[112,0,0,1,0],[115,0,0,2,0]],"readers":[[112,0,0,1,0]],"picked":[[112,0,0,1,0]],"readdocscontentfile":[[112,0,0,1,2]],"entire":[[112,0,0,1,0]],"readdocscontentchunk":[[112,0,0,1,2]],"listdocscontentfiles":[[112,0,0,0,2]],"allfiles":[[112,0,0,0,1]],"wholepage":[[112,0,0,0,1]],"onechunk":[[112,0,0,0,1]],"createanswercontext":[[113,0,0,1,2],[114,0,0,1,0]],"query":[[113,0,0,1,0],[114,0,0,0,1],[116,0,0,1,0]],"retrieved":[[113,0,0,2,0]],"chunks":[[113,0,0,1,0],[115,0,0,1,0],[117,0,0,1,0]],"prompt":[[113,0,0,1,1]],"instructs":[[113,0,0,1,0]],"cite":[[113,0,0,1,0]],"sources":[[113,0,0,1,1],[114,0,0,2,1]],"references":[[113,0,0,1,0]],"say":[[113,0,0,1,0]],"insufficient":[[113,0,0,1,0]],"productname":[[113,0,0,0,1],[114,0,0,0,1]],"wrappers":[[114,0,0,1,0]],"around":[[114,0,0,1,0]],"stream":[[114,0,0,1,0]],"response":[[114,0,0,3,1]],"matching":[[114,0,0,1,0],[117,0,0,1,0]],"citation":[[114,0,0,1,0]],"display":[[114,0,0,1,0]],"embed":[[114,0,0,1,0]],"streamed":[[114,0,0,1,0]],"adapter":[[114,0,0,1,0],[115,0,0,1,0]],"createcloudflaredocsadapter":[[114,0,0,1,0]],"binding":[[114,0,0,1,0]],"gateway":[[114,0,0,1,2]],"streamdocsanswer":[[114,0,0,0,4]],"sdk":[[114,0,0,0,1]],"workers":[[114,0,0,0,1]],"openai":[[114,0,0,0,1]],"gpt":[[114,0,0,0,1]],"adapters":[[115,0,1,0,0]],"explore":[[115,0,0,1,0]],"shell":[[115,0,0,1,0]],"receiving":[[115,0,0,1,0]],"selected":[[115,0,0,1,0]],"ls":[[115,0,0,1,0]],"cat":[[115,0,0,1,0]],"find":[[115,0,0,1,0]],"grep":[[115,0,0,1,0]],"rg":[[115,0,0,1,0]],"execution":[[115,0,0,1,0]],"disabled":[[115,0,0,1,0]],"expose":[[115,0,0,1,0]],"createdocsbashtools":[[115,0,0,1,0]],"plural":[[115,0,0,1,0]],"createdocsbashtool":[[115,0,0,0,2]],"instructions":[[115,0,0,0,1]],"abuse":[[116,0,1,0,0]],"guards":[[116,0,1,0,0]],"reusable":[[116,0,0,1,0]],"utilities":[[116,0,0,1,0]],"validatedocsquery":[[116,0,0,1,0]],"cap":[[116,0,0,1,0]],"readjsonwithlimit":[[116,0,0,1,0]],"reject":[[116,0,0,1,0]],"oversized":[[116,0,0,1,0]],"bodies":[[116,0,0,1,0]],"getclientidentifier":[[116,0,0,1,0]],"common":[[116,0,0,1,0]],"proxy":[[116,0,0,1,0]],"ip":[[116,0,0,1,0]],"creatememoryratelimiter":[[116,0,0,1,0]],"implements":[[116,0,0,1,0]],"ratelimiter":[[116,0,0,2,0]],"demos":[[116,0,0,2,0]],"limiter":[[116,0,0,1,0]],"production":[[116,0,0,1,0]],"apps":[[116,0,0,1,0]],"adapt":[[116,0,0,1,0]],"interface":[[116,0,0,1,0]],"redis":[[116,0,0,1,0]],"kv":[[116,0,0,2,0]],"durable":[[116,0,0,1,0]],"objects":[[116,0,0,1,0]],"embeddings":[[117,0,1,2,0]],"keys":[[117,0,0,1,0]],"messages":[[117,0,0,1,0]],"users":[[117,0,0,1,0]],"faster":[[117,0,0,1,0]],"performance":[[117,0,0,1,0]],"optimization":[[117,0,0,1,0]],"grow":[[117,0,0,1,0]],"past":[[117,0,0,1,0]],"tens":[[117,0,0,1,0]],"thousands":[[117,0,0,1,0]],"cold":[[117,0,0,1,0]],"hit":[[117,0,0,1,0]],"noticeable":[[117,0,0,1,0]],"complementary":[[117,0,0,1,0]],"replacements":[[117,0,0,1,0]]},"averageChunkLength":76.05084745762711}
diff --git a/docs/authoring/components.mdx b/docs/authoring/components.mdx
index 1f1805f..5d33886 100644
--- a/docs/authoring/components.mdx
+++ b/docs/authoring/components.mdx
@@ -8,8 +8,6 @@ group: authoring
Leadtype does not ship UI components. **Your docs app owns runtime rendering, styling, and accessibility** — it only has to honor a small naming contract so the remark pipeline can flatten each component into markdown for agents, search, and `llms-full/*.txt` bundles.
-The example app keeps its implementation under `apps/example/src/components/docs-mdx/` and is the canonical reference.
-
## Why flatten at all?
Interactive MDX components like `` or `` render fine in a browser but do nothing for an agent reading raw text. *Flattening* converts each component into a portable markdown equivalent at conversion time:
diff --git a/docs/build/bundle-package-docs.mdx b/docs/build/bundle-package-docs.mdx
index 7aeb60a..7442e2b 100644
--- a/docs/build/bundle-package-docs.mdx
+++ b/docs/build/bundle-package-docs.mdx
@@ -10,8 +10,6 @@ Use this path when **you publish a library on npm** and want agents, IDEs, and C
The website is for humans. The package-bundled docs are for everyone else.
-The reference implementation is leadtype itself: see [`packages/leadtype/scripts/generate-docs.ts`](https://github.com/inthio/leadtype/blob/main/packages/leadtype/scripts/generate-docs.ts) and [`packages/leadtype/package.json`](https://github.com/inthio/leadtype/blob/main/packages/leadtype/package.json).
-
## The flow
/docs/`
+// internally, so pass the parents (REPO_ROOT for source, PACKAGE_ROOT
+// for output) — they read MDX from `/docs/` and write to `/docs/`.
+await generateLlmsTxt({
+ srcDir: REPO_ROOT,
+ outDir: PACKAGE_ROOT,
+ baseUrl,
+ product: docsConfig.product,
+ groups: docsConfig.groups,
+});
+
+await generateLLMFullContextFiles({
+ outDir: PACKAGE_ROOT,
+ baseUrl,
+ product: { name: docsConfig.product.name },
+ groups: docsConfig.groups,
+});
+
+// Fail fast on unknown groups so a bad config can't ship.
+const navigation = await resolveDocsNavigation({
+ srcDir: REPO_ROOT,
+ baseUrl,
+ groups: docsConfig.groups,
+});
+if (navigation.unknown.length > 0) {
+ for (const { urlPath, slug } of navigation.unknown) {
+ process.stderr.write(`error: ${urlPath} declares unknown group "${slug}".\n`);
+ }
+ process.exit(1);
+}
+```
+
+Then point your build script at it: `"build": "tsup && bun run scripts/generate-docs.ts"`.
## Verify before publishing
diff --git a/docs/build/connect-docs-site.mdx b/docs/build/connect-docs-site.mdx
index 811c617..56ba667 100644
--- a/docs/build/connect-docs-site.mdx
+++ b/docs/build/connect-docs-site.mdx
@@ -3,32 +3,13 @@ title: "Connect a docs site"
description: "Wire leadtype into a docs app build so it serves humans, agents, and search from one source."
group: build
---
-
# Connect a docs site
Use this path when **you run a docs site** (or want to). Leadtype runs before your build to convert MDX, generate the navigation, build the search index, and produce agent-readable bundles. Your site framework — TanStack Start, Next.js, Astro, anything — handles routing and rendering.
-The reference implementation lives in `apps/example/` in the leadtype repo. It's also the production docs site you're reading right now.
-
## The flow
- (your repo)"]
- cli["leadtype generate"]
- pub["public/ llms.txt docs/*.md docs/llms-full/*.txt docs/search-index.json docs/search-content.json"]
- gen["src/generated/ docs-nav.json docs-search-*.json"]
- vite["vite + content negotiation"]
- human["Humans (HTML)"]
- agent["Agents (text/markdown)"]
- search["Search UI"]
- src --> cli
- cli --> pub
- cli --> gen
- pub --> vite
- gen --> vite
- vite -- "Accept: text/html" --> human
- vite -- "Accept: text/markdown" --> agent
- gen --> search`} />
+<Mermaid chart={`flowchart LR src["docs/*.mdx (your repo)"] cli["leadtype generate"] pub["public/ llms.txt docs/*.md docs/llms-full/*.txt docs/search-index.json docs/search-content.json"] gen["src/generated/ docs-nav.json docs-search-*.json"] vite["vite + content negotiation"] human["Humans (HTML)"] agent["Agents (text/markdown)"] search["Search UI"] src --> cli cli --> pub cli --> gen pub --> vite gen --> vite vite -- "Accept: text/html" --> human vite -- "Accept: text/markdown" --> agent gen --> search`} />
## One-off run
@@ -43,11 +24,11 @@ npx leadtype generate \
--summary "Short product summary."
```
-That single command converts MDX, generates `llms.txt`, builds the search index, and resolves the navigation tree. Generated paths are listed by [`leadtype generate`](/docs/reference/cli) and inspected in detail under [How it works](/docs/how-it-works).
+That single command converts MDX, generates `llms.txt`, builds the search index, and resolves the navigation tree. Generated paths are listed by `[leadtype generate](/docs/reference/cli)` and inspected in detail under [How it works](/docs/how-it-works).
## Wire it into the build
-Add a pipeline step before vite/Next/Astro builds. The example app does this with a `pipeline:build` script that runs each stage individually for incremental dev:
+Add a pipeline step before vite/Next/Astro builds. The simplest setup is one script per stage so you can rerun convert/search independently during dev:
```json
{
@@ -61,7 +42,40 @@ Add a pipeline step before vite/Next/Astro builds. The example app does this wit
}
```
-Splitting into separate scripts is optional — the CLI does all three in one pass. Use scripts when you want fine control over plugin order, base URL, or filtering. See [`apps/example/scripts/mdx-convert.ts`](https://github.com/inthio/leadtype/blob/main/apps/example/scripts/mdx-convert.ts) for the canonical setup, including how to add `remarkInclude` for partial expansion or `remarkTypeTableToMarkdown` with a `basePath` for ``.
+Splitting into separate scripts is optional — the CLI does all three in one pass. Use scripts when you want fine control over plugin order, base URL, or filtering. A canonical convert script:
+
+```ts
+// scripts/mdx-convert.ts
+import { convertAllMdx, type MdxToMarkdownOptions } from "leadtype/convert";
+import {
+ defaultRemarkPlugins,
+ remarkInclude,
+ remarkTypeTableToMarkdown,
+} from "leadtype/remark";
+
+const repoRoot = process.cwd();
+const srcDir = `${repoRoot}/docs`;
+const outDir = `${repoRoot}/public/docs`;
+
+// `` reads TypeScript files at conversion time.
+// Pass basePath so the component can resolve relative paths.
+const typeTablePlugin: NonNullable<
+ MdxToMarkdownOptions["remarkPlugins"]
+>[number] = [remarkTypeTableToMarkdown, { basePath: repoRoot }];
+
+await convertAllMdx({
+ srcDir,
+ outDir,
+ remarkPlugins: [
+ remarkInclude,
+ ...defaultRemarkPlugins.filter((p) => p !== remarkTypeTableToMarkdown),
+ typeTablePlugin,
+ ],
+ enrichFrontmatterFromGit: true,
+});
+```
+
+`remarkInclude` enables `{/*include:foo*/}`-style partial expansion. The `basePath` swap on `remarkTypeTableToMarkdown` is only needed if your docs use ``. See [Remark plugins](/docs/reference/remark) for the full plugin order.
## Configure the product and groups
@@ -88,25 +102,73 @@ Pages declare `group:` in frontmatter. The config declares the tree. The two tog
## Serve markdown to agents
-Drop a content-negotiation middleware in front of your static `/docs/*.md` files so agents can fetch markdown from the same URL humans visit. The example app's vite plugin (~30 lines) is in [`apps/example/vite.config.ts`](https://github.com/inthio/leadtype/blob/main/apps/example/vite.config.ts):
+Drop a content-negotiation middleware in front of your static `/docs/*.md` files so agents can fetch markdown from the same URL humans visit. A complete vite plugin in ~50 lines:
```ts
-function rewriteToMarkdown(url, accept) {
+import type { PluginOption } from "vite";
+
+function rewriteToMarkdown(
+ url: string,
+ accept: string | undefined
+): string | null {
if (!accept) return null;
- if (!accept.includes("text/markdown")) return null;
- if (accept.includes("text/html") && !accept.includes("q=")) return null;
- // /docs/foo → /docs/foo.md
- return `${url.replace(/\/$/, "")}.md`;
+ const pathname = url.split("?")[0] ?? url;
+ if (pathname.endsWith(".md")) return null;
+ if (!(pathname === "/docs" || pathname.startsWith("/docs/"))) return null;
+ if (!/text\/(markdown|plain)/i.test(accept)) return null;
+ // Browsers send `text/html,*/*` — never serve markdown to them.
+ if (/text\/html/i.test(accept) && !/text\/(markdown|plain)\s*;?\s*q=/i.test(accept)) {
+ return null;
+ }
+ const target =
+ pathname === "/docs" ? "/docs/index.md" : `${pathname.replace(/\/$/, "")}.md`;
+ return target + (url.length > pathname.length ? url.slice(pathname.length) : "");
+}
+
+function forceUtf8OnTextResponses(res: { setHeader: (n: string, v: string | number | string[]) => unknown }) {
+ const original = res.setHeader.bind(res);
+ res.setHeader = (name, value) => {
+ if (
+ typeof name === "string" &&
+ name.toLowerCase() === "content-type" &&
+ typeof value === "string" &&
+ /^text\/(markdown|plain)/i.test(value) &&
+ !/charset=/i.test(value)
+ ) {
+ return original(name, `${value}; charset=utf-8`);
+ }
+ return original(name, value);
+ };
+}
+
+export function markdownNegotiation(): PluginOption {
+ const middleware = (req: any, res: any, next: () => void) => {
+ if (!req.url) return next();
+ forceUtf8OnTextResponses(res);
+ const accept = Array.isArray(req.headers.accept)
+ ? req.headers.accept.join(",")
+ : req.headers.accept;
+ const rewritten = rewriteToMarkdown(req.url, accept);
+ if (rewritten) req.url = rewritten;
+ next();
+ };
+ return {
+ name: "leadtype:markdown-negotiation",
+ configureServer: (s) => s.middlewares.use(middleware),
+ configurePreviewServer: (s) => s.middlewares.use(middleware),
+ };
}
```
Browsers send `text/html,*/*` and get HTML. Agents send `Accept: text/markdown` and get the converted `.md`. Same URL, two formats.
- Many static handlers serve `.md` files as `Content-Type: text/markdown` with no charset, which makes browsers fall back to Latin-1 and render UTF-8 characters (box-drawing, em dashes, smart quotes) as mojibake. Always send `Content-Type: text/markdown; charset=utf-8`. The example app patches `setHeader` in the same middleware — see [`apps/example/vite.config.ts`](https://github.com/inthio/leadtype/blob/main/apps/example/vite.config.ts) for the exact code.
+
+ Many static handlers serve `.md` files as `Content-Type: text/markdown` with no charset, which makes browsers fall back to Latin-1 and render UTF-8 characters (box-drawing, em dashes, smart quotes) as mojibake. Always send `Content-Type: text/markdown; charset=utf-8` — that's what `forceUtf8OnTextResponses` above does by patching `setHeader`.
+
-For Next.js, wire the same logic in `middleware.ts` and serve `.md` from a route handler. For Cloudflare Pages, use a `_middleware` Worker. In every case, set the charset explicitly.
+For Next.js, wire the same `rewriteToMarkdown` logic in `middleware.ts` and serve `.md` from a route handler that sets `Content-Type: text/markdown; charset=utf-8`. For Cloudflare Pages, use a `_middleware` Worker. In every case, set the charset explicitly.
## Connect a remote source
@@ -137,7 +199,12 @@ Then start the dev server and `curl -I -H "Accept: text/markdown" http://localho
## What's next
+
+
+
+
+
diff --git a/docs/quickstart.mdx b/docs/quickstart.mdx
index 29fa576..bf2018c 100644
--- a/docs/quickstart.mdx
+++ b/docs/quickstart.mdx
@@ -82,7 +82,7 @@ You now have the four primitives. From here:
0) {
}
```
-Write the result to `src/generated/docs-nav.json` and import it from your sidebar component. This is the pattern the example app uses — see [`apps/example/scripts/llm-generate.ts`](https://github.com/inthio/leadtype/blob/main/apps/example/scripts/llm-generate.ts).
+Write the result to `src/generated/docs-nav.json` and import it from your sidebar component:
+
+```ts
+import { mkdir, writeFile } from "node:fs/promises";
+
+await mkdir("src/generated", { recursive: true });
+await writeFile(
+ "src/generated/docs-nav.json",
+ `${JSON.stringify(navigation, null, 2)}\n`
+);
+```
+
+Now your sidebar can import a static manifest with the same group tree the LLM bundles use.
## Topic design
@@ -134,4 +146,4 @@ const baseUrl =
"https://docs.example.com";
```
-This is the precedence used by `apps/example/scripts/llm-generate.ts`. The package-specific `LEADTYPE_AGENT_BASE_URL` lets each package override the org-wide default.
+The package-specific `LEADTYPE_AGENT_BASE_URL` lets each package override an org-wide default. `BASE_URL` covers most CI/deployment platforms, and a final hardcoded fallback keeps local builds working without env setup.
diff --git a/docs/reference/remark.mdx b/docs/reference/remark.mdx
index d33dced..d1f00c3 100644
--- a/docs/reference/remark.mdx
+++ b/docs/reference/remark.mdx
@@ -90,12 +90,16 @@ const remarkPlugins = [
];
```
-Live example — extracted from `apps/example/type-fixtures/pipeline-example.ts`:
+In your MDX, point at a local TypeScript file by `path` and the type by `name`:
+```mdx
+```
+
+At conversion time, the plugin reads the file, finds the named type, and emits a markdown table with one row per property. The rendered output is what ships in the converted `.md` and the `llms-full` bundles — no JSX, no client-side rendering needed.
## Plugin selection rules
From ac4711b8a13edf9341ae6af0986ff692fa0b5897 Mon Sep 17 00:00:00 2001
From: Kaylee <65376239+KayleeWilliams@users.noreply.github.com>
Date: Fri, 8 May 2026 23:53:29 -0700
Subject: [PATCH 09/13] Ship AGENTS.md instead of llms.txt for npm-bundled docs
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
leadtype's bundled docs (inside the published tarball) were emitting
website-shaped artifacts: llms.txt with absolute URLs, llms-full.txt,
search-index.json — none of which made sense at node_modules//.
The llms.txt spec is for hosted websites; agents don't auto-discover
node_modules//llms.txt. The actual filesystem convention is
AGENTS.md, supported by 25+ coding agents (Claude Code, Codex, Cursor,
Copilot, Aider, etc.).
Changes:
- New `generateAgentsMd` in leadtype/llm — same shape as
generateLlmsTxt but emits Markdown with relative ./docs/.md
paths so the file works inside an installed npm package.
- New `--bundle` flag on `leadtype generate`. Emits AGENTS.md +
docs/*.md and skips llms.txt, llms-full*, and search artifacts.
Website mode is unchanged.
- packages/leadtype now uses --bundle for its own published tarball.
AGENTS.md added to package.json#files.
- Docs rewritten across index, how-it-works, quickstart, the bundle
guide, both READMEs, and the cli + llm references. The "agents read
llms.txt from node_modules" claim is replaced everywhere with the
correct AGENTS.md flow plus the Next.js consuming-project pattern.
- New evals/ directory using @vercel/agent-eval to measure
discoverability empirically: paired bundled-docs vs
bundled-docs-control experiments across four fixtures
(wire-content-negotiation, validate-in-ci, explain-cli-flag,
bundle-own-docs). Pass-rate delta = the value of shipping AGENTS.md.
- New `--bundle` integration test in cli.test.ts asserts AGENTS.md is
written, llms.txt is NOT, and docs/*.md still ship. Existing tests
unchanged. 98/98 pass.
Tarball check (`npm pack --dry-run`):
- AGENTS.md (3.6kB) at root ✓
- docs/**/*.md (15 files) ✓
- no llms.txt, no llms-full, no search-index.json ✓
---
.gitignore | 5 +
README.md | 47 ++++---
apps/example/src/generated/docs-nav.json | 8 +-
.../src/generated/docs-search-content.json | 2 +-
.../src/generated/docs-search-index.json | 2 +-
biome.jsonc | 18 +++
docs/build/bundle-package-docs.mdx | 129 ++++++++---------
docs/how-it-works.mdx | 89 ++++++++----
docs/index.mdx | 42 +++---
docs/quickstart.mdx | 12 +-
docs/reference/cli.mdx | 28 ++--
docs/reference/llm.mdx | 61 +++++++-
evals/.env.example | 8 ++
evals/README.md | 52 +++++++
evals/evals/bundle-own-docs/EVAL.ts | 61 ++++++++
evals/evals/bundle-own-docs/PROMPT.md | 11 ++
evals/evals/bundle-own-docs/package.json | 15 ++
evals/evals/explain-cli-flag/EVAL.ts | 39 ++++++
evals/evals/explain-cli-flag/PROMPT.md | 3 +
evals/evals/explain-cli-flag/package.json | 11 ++
evals/evals/validate-in-ci/EVAL.ts | 52 +++++++
evals/evals/validate-in-ci/PROMPT.md | 10 ++
evals/evals/validate-in-ci/package.json | 11 ++
evals/evals/wire-content-negotiation/EVAL.ts | 67 +++++++++
.../evals/wire-content-negotiation/PROMPT.md | 9 ++
.../wire-content-negotiation/package.json | 12 ++
.../wire-content-negotiation/vite.config.ts | 8 ++
evals/experiments/bundled-docs-control.ts | 53 +++++++
evals/experiments/bundled-docs.ts | 51 +++++++
evals/package.json | 16 +++
packages/leadtype/AGENTS.md | 55 ++++++++
packages/leadtype/README.md | 41 +++---
packages/leadtype/package.json | 1 +
packages/leadtype/scripts/generate-docs.ts | 63 +++------
packages/leadtype/src/cli.test.ts | 51 +++++++
packages/leadtype/src/cli/generate.ts | 131 ++++++++++++------
packages/leadtype/src/llm/index.ts | 3 +
packages/leadtype/src/llm/llm.ts | 126 +++++++++++++++++
38 files changed, 1139 insertions(+), 264 deletions(-)
create mode 100644 evals/.env.example
create mode 100644 evals/README.md
create mode 100644 evals/evals/bundle-own-docs/EVAL.ts
create mode 100644 evals/evals/bundle-own-docs/PROMPT.md
create mode 100644 evals/evals/bundle-own-docs/package.json
create mode 100644 evals/evals/explain-cli-flag/EVAL.ts
create mode 100644 evals/evals/explain-cli-flag/PROMPT.md
create mode 100644 evals/evals/explain-cli-flag/package.json
create mode 100644 evals/evals/validate-in-ci/EVAL.ts
create mode 100644 evals/evals/validate-in-ci/PROMPT.md
create mode 100644 evals/evals/validate-in-ci/package.json
create mode 100644 evals/evals/wire-content-negotiation/EVAL.ts
create mode 100644 evals/evals/wire-content-negotiation/PROMPT.md
create mode 100644 evals/evals/wire-content-negotiation/package.json
create mode 100644 evals/evals/wire-content-negotiation/vite.config.ts
create mode 100644 evals/experiments/bundled-docs-control.ts
create mode 100644 evals/experiments/bundled-docs.ts
create mode 100644 evals/package.json
create mode 100644 packages/leadtype/AGENTS.md
diff --git a/.gitignore b/.gitignore
index 6aae50c..b50f255 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,3 +37,8 @@ yarn-error.log*
.DS_Store
*.pem
.gstack/
+
+# Agent evals (@vercel/agent-eval)
+evals/.tarballs/
+evals/__agent_eval__/
+evals/**/__agent_eval__/
diff --git a/README.md b/README.md
index 32d260d..dc5ebe9 100644
--- a/README.md
+++ b/README.md
@@ -1,28 +1,26 @@
# leadtype
-A docs pipeline. Write MDX once. Get a website, agent-readable bundles, and a static search index from a single command.
+A docs pipeline. Write MDX once. Get a website for humans, an `llms.txt` for HTTP agents, an `AGENTS.md`-fronted bundle for offline coding agents, and a static search index — all from a single source.
```mermaid
flowchart LR
src["docs/*.mdx"]
- pipe["leadtype generate"]
- md["clean markdown"]
- llm["llms.txt + llms-full/*.txt"]
- idx["search-index.json"]
- nav["navigation tree"]
- site["docs website (humans)"]
- agent["agents · IDEs · CLIs"]
+ site_run["leadtype generate"]
+ bundle_run["leadtype generate --bundle"]
+ site_out["public/ llms.txt · llms-full/ docs/*.md · search-index.json"]
+ bundle_out["packages/<name>/ AGENTS.md · docs/*.md"]
+ humans["humans (browser)"]
+ http_agents["HTTP agents (/llms.txt or Accept: text/markdown)"]
search["search UI · AI answers"]
- src --> pipe
- pipe --> md
- pipe --> llm
- pipe --> idx
- pipe --> nav
- md --> site
- md --> agent
- llm --> agent
- idx --> search
- nav --> site
+ offline_agents["coding agents (Claude Code, Codex, Cursor, Copilot…) read node_modules/<pkg>/AGENTS.md"]
+ src --> site_run
+ src --> bundle_run
+ site_run --> site_out
+ bundle_run --> bundle_out
+ site_out --> humans
+ site_out --> http_agents
+ site_out --> search
+ bundle_out --> offline_agents
```
leadtype is **not a docs website framework**. Bring your own UI — Next.js, TanStack Start, Astro, anything — and let leadtype handle conversion, validation, search, and the agent-facing outputs that website frameworks don't ship.
@@ -30,7 +28,7 @@ leadtype is **not a docs website framework**. Bring your own UI — Next.js, Tan
## Choose your path
- **[Build a docs site](https://docs.example.com/docs/build/connect-docs-site)** — wire leadtype into your build to convert MDX, index search, and serve markdown to agents.
-- **[Bundle docs into your package](https://docs.example.com/docs/build/bundle-package-docs)** — ship agent-readable docs inside the npm tarball so IDEs and coding agents can read them offline.
+- **[Bundle docs into your package](https://docs.example.com/docs/build/bundle-package-docs)** — ship `AGENTS.md` plus topic markdown inside the npm tarball so coding agents auto-discover them from `node_modules//AGENTS.md`.
## Install
@@ -40,14 +38,19 @@ pnpm add leadtype
## 30-second example
+For a hosted docs site:
+
```bash
-# In a repo with docs/*.mdx
npx leadtype generate --src . --out public --base-url https://docs.example.com
```
-This converts every `.mdx` under `docs/`, writes `public/llms.txt` plus per-leaf `public/docs/llms-full/*.txt`, builds `public/docs/search-index.json`, and resolves the navigation tree.
+For an npm-bundled doc set:
+
+```bash
+npx leadtype generate --bundle --src . --out packages/my-package
+```
-See [`apps/example/`](./apps/example) for the canonical docs-site setup, including content negotiation that serves markdown to agents on the same URL humans visit. See [`packages/leadtype/scripts/generate-docs.ts`](./packages/leadtype/scripts/generate-docs.ts) for the canonical "bundle docs into a package" pattern.
+The first produces `public/llms.txt`, `public/docs/llms-full/*.txt`, `public/docs/search-index.json`, and `public/docs/*.md`. The second produces `packages/my-package/AGENTS.md` and `packages/my-package/docs/*.md` — auto-discoverable by [25+ coding agents](https://agents.md) once the package is installed.
## Documentation
diff --git a/apps/example/src/generated/docs-nav.json b/apps/example/src/generated/docs-nav.json
index da9edd5..76eb21f 100644
--- a/apps/example/src/generated/docs-nav.json
+++ b/apps/example/src/generated/docs-nav.json
@@ -11,7 +11,7 @@
{
"urlPath": "/docs",
"title": "Leadtype",
- "description": "One MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.",
+ "description": "One MDX source. A website for humans, AGENTS.md for offline coding agents, llms.txt for HTTP agents — all from a single pipeline.",
"groups": [
"get-started"
]
@@ -19,7 +19,7 @@
{
"urlPath": "/docs/how-it-works",
"title": "How it works",
- "description": "The mental model: one MDX source, a remark pipeline, four artifacts, three audiences.",
+ "description": "The mental model: one MDX source, a remark pipeline, two output modes, three audiences.",
"groups": [
"get-started"
]
@@ -81,7 +81,7 @@
{
"urlPath": "/docs/build/bundle-package-docs",
"title": "Bundle docs into a package",
- "description": "Ship agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.",
+ "description": "Ship agent-readable docs inside an npm tarball — AGENTS.md at the package root plus per-topic .md files.",
"groups": [
"build"
]
@@ -140,7 +140,7 @@
{
"urlPath": "/docs/reference/llm",
"title": "LLM bundles",
- "description": "Generate llms.txt and topic-scoped full-context files for agents.",
+ "description": "Generate llms.txt for hosted websites and AGENTS.md for npm-bundled offline reading.",
"groups": [
"reference"
]
diff --git a/apps/example/src/generated/docs-search-content.json b/apps/example/src/generated/docs-search-content.json
index 9cfe545..0bc5e3d 100644
--- a/apps/example/src/generated/docs-search-content.json
+++ b/apps/example/src/generated/docs-search-content.json
@@ -1 +1 @@
-{"version":2,"generatedAt":"2026-05-09T05:56:41.430Z","chunks":["Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nLeadtype does not ship UI components. Your docs app owns runtime rendering, styling, and accessibility — it only has to honor a small naming contract so the remark pipeline can flatten each component into markdown for agents, search, and llms-full/ .txt bundles.","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nWhy flatten at all?\n\nInteractive MDX components like Body content goes here. ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nCards\n\nA grid of short, linked entry points. Flattens to a bullet list of links. Convert Remark Search\n\n```tsx ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nSteps\n\nNumbered walkthroughs. Flattens to an ordered list with bold step titles. 1. Author docs in MDX Use the components in this list as authoring affordances. 2. Run the conversion leadtype generate writes flattened markdown to public/docs/ . 3. Serve both formats HTML for humans, .md for agents — same URL, content negotiated by the Accept header.\n\n```tsx Use the components in this list. `leadtype generate` writes flattened markdown. ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nTabs\n\nGroup equivalent content. Flattens to bold headings followed by content so agents do not need a JSX-aware renderer to read every variant. tanstack-start Use a Vite middleware dev/preview and a Nitro middleware prod to negotiate the Accept header. next-js Wire content negotiation in middleware.ts and serve .md from a route handler. vite A configureServer middleware is enough for static deployments where .md files live in public/ .\n\n```tsx … … … ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nCommandTabs\n\nPackage-manager-aware install or run commands. Flattens to a markdown table with one row per manager. Use mode=\"install\" when command is a package name, mode=\"run\" when command is a CLI name, and mode=\"create\" for starter commands. Use the commands prop for exact per-manager overrides. Package manager Command -- -- npm npm install leadtype pnpm pnpm add leadtype yarn yarn add leadtype bun bun add leadtype Package manager Command -- -- npm npx leadtype lint pnpm pnpm dlx leadtype lint yarn yarn dlx leadtype lint bun bunx leadtype lint\n\n```tsx ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nAccordion\n\nCollapsible details for secondary content. Flattening ignores open/closed state and emits every item — accordions are not a place to hide content from agents. When should I use accordions? Use them for supporting details, troubleshooting notes, and optional reference material. Closed content is still flattened by the remark pipeline. Are accordions a good place to hide content from LLMs? No. Conversion ignores the open/closed state and emits everything inside.\n\n```tsx Use them for supporting details and optional reference material. ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nTopicSwitcher\n\nNavigation across equivalent docs topics — frameworks, SDKs, runtimes, deployment targets, product areas. Reader-facing only; it does not automatically read LLM topic config. Framework React — React integration Vue — Vue integration Svelte — Svelte integration\n\n```tsx ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nTypeTable and ExtractedTypeTable\n\nTypeTable is for explicit prop or type rows you already know. ExtractedTypeTable reads a TypeScript file at conversion time and extracts the table from a named type — keep its path stable. Property Type Description Default Required -- -- -- -- -- title string Heading rendered above the callout body. - ✅ Required variant CalloutVariant Visual treatment for the callout. info Optional deprecated \\ \\ boolean\\ \\ deprecated Marks the row as deprecated. false Optional\n\n```tsx ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nExample\n\nData-driven preview and source examples. The host component receives code as data; add file loaders or dynamic imports outside leadtype when an example needs app-specific behavior.\n\n```tsx The host app owns styling and runtime components while leadtype owns conversion. ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nMermaid\n\nDiagrams authored as plain text. Renders client-side as interactive SVG. Flattening preserves the source as a fenced mermaid block so other tools can render the diagram from the markdown copy.\n\n```tsx |remark| Markdown Markdown -->|llms.txt| Agents`} /> ``` ```mermaid `graph LR MDX -->|remark| Markdown Markdown -->|search index| API Markdown -->|llms.txt| Agents` ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nGuidelines\n\nKeep runtime components in your docs app. Leadtype stays out of UI. Keep component names stable. Renaming resolver page1 --> resolver page2 --> resolver page3 --> resolver resolver --> nav resolver --> llms resolver --> full` ```","Frontmatter\n\nRequired fields, group semantics, and how authored MDX becomes a navigation tree.\n\nFrontmatter\n\nHow groups become a nav tree\n\nNested groups\n\nDeclare children in the config to build deeper trees A page sets group bundle-package-docs and lands in that nested slot. Only leaf groups no children get an llms-full/ cli cli --> bundle bundle --> publish publish --> install install --> consume` ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nGenerate into the package\n\nIf source docs live at the repo root This writes converted markdown, llms.txt , full-context bundles, and the search index under packages/my-package/docs/ .\n\n```bash npx leadtype generate \\ --src . \\ --out packages/my-package \\ --base-url https://docs.example.com/my-package \\ --name \"my-package\" \\ --summary \"Docs for my-package.\" \\ --json ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nFilter to package-specific docs\n\nA monorepo with one shared docs/ and many packages should bundle only the slice each package owns. Use --include repeatable and --exclude Filters are explicit. If the package needs shared overview pages, list them too. --exclude is applied after --include .\n\n```bash npx leadtype generate \\ --src . \\ --out packages/react \\ --name \"@c15t/react\" \\ --include \"frameworks/react/**\" \\ --include \"shared/**\" \\ --exclude \"**/internal/**\" \\ --json ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nInclude in the published tarball\n\nAdd docs to files and run generation as a build or prepack step If you need full control over plugin order, base URL fallback, or custom navigation handling, run the library APIs directly from a script Then point your build script at it \"build\" \"tsup && bun run scripts/generate-docs.ts\" .\n\n```json { \"files\": [\"dist\", \"docs\", \"README.md\"], \"scripts\": { \"build\": \"tsup && npx leadtype generate --src ../.. --out . --json\" } } ``` ```ts // scripts/generate-docs.ts import { rm } from \"node:fs/promises\"; import { convertAllMdx } from \"leadtype/convert\"; import { generateLLMFullContextFiles, generateLlmsTxt, resolveDocsNavigation, } from \"leadtype/llm\"; import { defaultRemarkPlugins } from \"leadtype/remark\"; import docsConfig from \"../../../docs/docs.config\"; const REPO_ROOT = `${process.cwd()}/../..`; const PACKAGE_ROOT = process.cwd(); const baseUrl = process.env.LEADTYPE_AGENT_BASE_URL?.trim() || \"https://example.invalid/your-package\"; // Output is generated and gitignored — safe to nuke before each build. await rm(`${PACKAGE_ROOT}/docs`, { recursive: true, force: true }); await convertAllMdx({ srcDir: `${REPO_ROOT}/docs`, outDir: `${PACKAGE_ROOT}/docs`, remarkPlugins: defaultRemarkPlugins, }); // generateLlmsTxt and generateLLMFullContextFiles join `/docs/` // internally, so pass the parents (REPO_ROOT for source, PACKAGE_ROOT // for output) — they read MDX from `/docs/` and write to `/docs/`.","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nInclude in the published tarball\n\ndocs/` // internally, so pass the parents (REPO_ROOT for source, PACKAGE_ROOT // for output) — they read MDX from `/docs/` and write to `/docs/`. await generateLlmsTxt({ srcDir: REPO_ROOT, outDir: PACKAGE_ROOT, baseUrl, product: docsConfig.product, groups: docsConfig.groups, }); await generateLLMFullContextFiles({ outDir: PACKAGE_ROOT, baseUrl, product: { name: docsConfig.product.name }, groups: docsConfig.groups, }); // Fail fast on unknown groups so a bad config can't ship. const navigation = await resolveDocsNavigation({ srcDir: REPO_ROOT, baseUrl, groups: docsConfig.groups, }); if (navigation.unknown.length > 0) { for (const { urlPath, slug } of navigation.unknown) { process.stderr.write(`error: ${urlPath} declares unknown group \"${slug}\".\\n`); } process.exit(1); } ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nVerify before publishing\n\nnpm pack --dry-run should list docs/llms.txt docs/llms-full.txt docs/llms-full/ .txt docs/ / .md docs/search-index.json docs/search-content.json If something's missing, check files in package.json and the --include / --exclude filters.\n\n```bash npx leadtype generate --src . --out packages/my-package --json npm pack --dry-run ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.\n\nBundle docs into a package\n\nHow agents discover bundled docs\n\nAfter npm install ` reads TypeScript files at conversion time. // Pass basePath so the component can resolve relative paths. const typeTablePlugin: NonNullable< MdxToMarkdownOptions[\"remarkPlugins\"] >[number] = [remarkTypeTableToMarkdown, { basePath: repoRoot }]; await convertAllMdx({ srcDir, outDir, remarkPlugins: [ remarkInclude, ...defaultRemarkPlugins.filter((p) => p !== remarkTypeTableToMarkdown), typeTablePlugin, ], enrichFrontmatterFromGit: true, }); ```","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nConfigure the product and groups\n\nAuthor docs/docs.config.ts once and let every stage read from it Pages declare group in frontmatter. The config declares the tree. The two together produce the navigation manifest, the llms.txt sections, and the lint check that catches typos. See Frontmatter for the resolution rules.\n\n```ts import { defineDocsConfig } from \"leadtype\"; export default defineDocsConfig({ product: { name: \"my-docs\", summary: \"Short product summary.\", bullets: [\"What it does in one bullet.\", \"Another bullet.\"], bestStartingPoints: [{ urlPath: \"/docs\" }, { urlPath: \"/docs/quickstart\" }], }, groups: [ { slug: \"get-started\", title: \"Get Started\" }, { slug: \"guides\", title: \"Guides\" }, ], }); ```","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nServe markdown to agents\n\nDrop a content-negotiation middleware in front of your static /docs/ .md files so agents can fetch markdown from the same URL humans visit. A complete vite plugin in \\ 50 lines Browsers send text/html, / and get HTML. Agents send Accept text/markdown and get the converted .md . Same URL, two formats. ⚠️ Warning Set charset=utf-8 Many static handlers serve .md files as Content-Type text/markdown with no charset, which makes browsers fall back to Latin-1 and render UTF-8 characters box-drawing, em dashes, smart quotes as mojibake. Always send Content-Type text/markdown; charset=utf-8 — that's what forceUtf8OnTextResponses above does by patching setHeader. For Next.js, wire the same rewriteToMarkdown logic in middleware.ts and serve .md from a route handler that sets Content-Type text/markdown; charset=utf-8 . For Cloudflare Pages, use a middleware Worker. In every case, set the charset explicitly.\n\n```ts import type { PluginOption } from \"vite\"; function rewriteToMarkdown( url: string, accept: string | undefined ): string | null { if (!accept) return null; const pathname = url.split(\"?\")[0] ?? url; if (pathname.endsWith(\".md\")) return null; if (!(pathname === \"/docs\" || pathname.startsWith(\"/docs/\"))) return null; if (!/text\\/(markdown|plain)/i.test(accept)) return null; // Browsers send `text/html,*/*` — never serve markdown to them. if (/text\\/html/i.test(accept) && !/text\\/(markdown|plain)\\s*;?\\s*q=/i.test(accept)) { return null; } const target = pathname === \"/docs\" ? \"/docs/index.md\" : `${pathname.replace(/\\/$/, \"\")}.md`; return target + (url.length > pathname.length ? url.slice(pathname.length) : \"\"); } function forceUtf8OnTextResponses(res: { setHeader: (n: string, v: string | number | string[]) => unknown }) { const original = res.setHeader.bind(res); res.setHeader = (name, value) => { if ( typeof name === \"string\" && name.toLowerCase() === \"content-type\" && typeof value === \"string\" && /^text\\/(markdown|plain)/i.test(value) && !/charset=/i.test(value) ) { return original(name, `${value}; charset=utf-8`); } return original(name, value); }; } export function","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nServe markdown to agents\n\ndown|plain)/i.test(value) && !/charset=/i.test(value) ) { return original(name, `${value}; charset=utf-8`); } return original(name, value); }; } export function markdownNegotiation(): PluginOption { const middleware = (req: any, res: any, next: () => void) => { if (!req.url) return next(); forceUtf8OnTextResponses(res); const accept = Array.isArray(req.headers.accept) ? req.headers.accept.join(\",\") : req.headers.accept; const rewritten = rewriteToMarkdown(req.url, accept); if (rewritten) req.url = rewritten; next(); }; return { name: \"leadtype:markdown-negotiation\", configureServer: (s) => s.middlewares.use(middleware), configurePreviewServer: (s) => s.middlewares.use(middleware), }; } ```","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nConnect a remote source\n\nWhen the docs source lives in a different repo from the docs site Run lint first so missing or malformed frontmatter fails before the converter writes anything. Use --format github in CI to get inline annotations on the PR. Use --json on generate so automation can read the resolved groups and search index stats. This is the shape we expect for orgs hosting one docs UI for multiple package repos the source lives next to the code it documents, the docs app pulls it in at build time. See Bundle docs into a package if the package should also ship docs inside its npm tarball.\n\n```bash git clone --depth 1 https://github.com/acme/package-a .docs-src/package-a npx leadtype lint .docs-src/package-a/docs --format github --error-unknown npx leadtype generate --src .docs-src/package-a --out public --json npm run build ```","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nVerify\n\nAfter a clean build public/docs/index.md — the converted home page. public/llms.txt — the routing index. Should mention every group from your config. public/docs/llms-full/ lint-report.json ```","Validate in CI\n\nRun leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.\n\nValidate in CI\n\nLocal pre-push hook\n\nCatch issues before they reach CI by running lint in a husky pre-push hook Keep it under a second by limiting the scan to changed files when you have many pages. The CLI accepts repeated --ignore globs to skip stale or generated paths.\n\n```bash #!/usr/bin/env sh npx leadtype lint docs --max-warnings 0 ```","Validate in CI\n\nRun leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.\n\nValidate in CI\n\nRun before generate\n\nWhen leadtype lint and leadtype generate both run in the same job, lint first Generate fails noisily on unknown groups or broken includes. Lint fails specifically on content schema problems with file/line context — much easier to debug.\n\n```bash npx leadtype lint docs --error-unknown npx leadtype generate --src . --out public --json ```","Validate in CI\n\nRun leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.\n\nValidate in CI\n\nWhat to fix first\n\nWhen CI fails on a lot of violations, fix them in this order 1. parse-error — frontmatter is broken; nothing else can validate. 2. schema — missing or wrong-typed required fields. 3. unresolved-placeholder — content bug, not a config bug. 4. invalid-link and cross-framework-link — usually a stale link after a docs move. 5. unknown-field — last; either delete the field or extend the schema.","How it works\n\nThe mental model: one MDX source, a remark pipeline, four artifacts, three audiences.\n\nHow it works\n\nLeadtype takes one input — a folder of MDX — and produces every other shape your docs need to take. This page names every piece so the rest of the docs make sense.","How it works\n\nThe mental model: one MDX source, a remark pipeline, four artifacts, three audiences.\n\nHow it works\n\nThe pipeline\n\nThe remark stack is what turns interactive MDX components into agent-readable markdown. JSX gets flattened — a fm fm --> remark fm --> groups remark --> md md --> llms md --> idx groups --> llms groups --> nav` ```","How it works\n\nThe mental model: one MDX source, a remark pipeline, four artifacts, three audiences.\n\nHow it works\n\nThe four artifacts\n\nEvery run of leadtype generate produces four kinds of output. They all derive from the same source — there is no manual duplication. Property Type Description Default Required -- -- -- -- -- Markdown .md public/docs/\\ human artifacts -- \"Accept: text/markdown / or node_modules//docs/\" --> agent artifacts -- \"search-index.json + search-content.json\" --> search` ```","How it works\n\nThe mental model: one MDX source, a remark pipeline, four artifacts, three audiences.\n\nHow it works\n\nVocabulary\n\nA few terms you will see throughout the docs. Property Type Description Default Required -- -- -- -- -- flatten verb Convert an interactive MDX component into a portable markdown equivalent. A \\ pipe pipe --> md pipe --> llm pipe --> idx pipe --> nav md --> site md --> agent llm --> agent idx --> search nav --> site` ```","Leadtype\n\nOne MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.\n\nLeadtype\n\nChoose your path\n\nMost teams arrive here for one of two reasons. Pick the journey that matches yours — each is a single page that takes you from zero to running. Build a docs site Ship docs in your package","Leadtype\n\nOne MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.\n\nLeadtype\n\nWhat you get\n\n1. Write once Author MDX with familiar components — Callout , Tabs , Steps , Mermaid , TypeTable , and others. Add group in frontmatter to place pages in the navigation tree. 2. Run \\ leadtype generate\\ A single command converts MDX to markdown, builds llms.txt plus topic-scoped bundles, generates a static search index, and resolves the navigation tree. 3. Serve all of it Your site renders the source MDX; agents and tools fetch the markdown via HTTP content negotiation or load llms.txt from node modules . Same content, three audiences.","Leadtype\n\nOne MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.\n\nLeadtype\n\nNext\n\nNew here? Read the Quickstart — five minutes to a generated bundle. Want the mental model first? Read How it works for the pipeline diagram and the names of every artifact it produces. Comparing tools? See Methodology for how leadtype differs from Fumadocs, Starlight, and Mintlify.","Methodology\n\nHow leadtype differs from Fumadocs, Starlight, and Mintlify.\n\nMethodology\n\nLeadtype is a docs pipeline, not a docs website framework . It produces the artifacts a docs site needs markdown, llms.txt, search index, navigation and stays out of routing, layout, and theming.","Methodology\n\nHow leadtype differs from Fumadocs, Starlight, and Mintlify.\n\nMethodology\n\nThe short version\n\nTool What it gives you -- -- Fumadocs A React docs site framework. Starlight An Astro docs site framework. Mintlify A hosted docs platform with deployment, analytics, and AI built in. Leadtype The portable content layer behind any of the above. Use a website framework when the main job is publishing a polished site quickly. Use a hosted platform when you want zero infra. Use leadtype when you want to own the docs UI but standardize the content pipeline across packages, repos, agent bundles, and search.","Methodology\n\nHow leadtype differs from Fumadocs, Starlight, and Mintlify.\n\nMethodology\n\nWhat leadtype owns\n\nMDX-to-markdown conversion via a remark plugin stack. llms.txt and topic-scoped full-context bundles for agents. A static, edge-safe search index plus optional source-grounded answer streaming. Lint rules for frontmatter, navigation metadata, and internal links. CLI orchestration so the whole pipeline runs from one command.","Methodology\n\nHow leadtype differs from Fumadocs, Starlight, and Mintlify.\n\nMethodology\n\nWhat leadtype does not own\n\nVisual UI, theming, or component styling. Routing, hosting, deployment, or analytics. A prebuilt MDX component library — your docs app provides those see Components .","Methodology\n\nHow leadtype differs from Fumadocs, Starlight, and Mintlify.\n\nMethodology\n\nWhen the combination shines\n\nYou want one docs experience across many repos, but each repo keeps its content next to the code it documents. A shared docs app — public, private, or templated — renders that content with your design system. Leadtype handles conversion, search, validation, and agent outputs identically across every repo. You can also pair leadtype with a website framework use Fumadocs or Starlight for the UI, and run leadtype's pipeline alongside it for llms.txt , agent bundles, or a content-negotiated text/markdown endpoint your framework doesn't ship.","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nFive minutes from a folder of MDX to a complete pipeline output.","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nInstall\n\nPackage manager Command -- -- npm npm install leadtype pnpm pnpm add leadtype yarn yarn add leadtype bun bun add leadtype leadtype ships an executable plus a set of focused entry points leadtype/convert , leadtype/llm , leadtype/search , leadtype/lint , leadtype/remark . The CLI is usually all you need.","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nAuthor one page\n\nCreate docs/index.mdx in your repo Every page needs at minimum a title . Add a group to place it in the nav tree — see Frontmatter.\n\n```mdx --- title: \"My library\" description: \"What it does in one sentence.\" group: get-started --- # My library Welcome. ```","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nGenerate\n\nThe CLI does four things in one pass 1. Convert MDX to markdown Walks docs/ , runs each file through the default remark plugin stack, writes flattened .md to public/docs/ . 2. Generate LLM bundles Writes public/llms.txt the routing index plus public/docs/llms-full/ .txt one file per leaf group, with full content . 3. Build a search index Writes public/docs/search-index.json and public/docs/search-content.json — a BM25 index and a separate content store for excerpts. 4. Resolve groups Reads group from every page's frontmatter and reports which groups it found. The same group tree drives both the nav and llms.txt .\n\n```bash npx leadtype generate \\ --src . \\ --out public \\ --base-url https://docs.example.com ```","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nInspect the output\n\nOpen public/llms.txt to see what an agent will see when you publish. Open public/docs/index.md to see what your authored MDX looks like once flattened — that's the same content the search index and the agent bundles consume.\n\n``` public/ ├── llms.txt # routing index for agents └── docs/ ├── index.md # converted, agent-readable ├── llms.txt # docs-scoped routing index ├── llms-full.txt # all pages flattened ├── llms-full/ │ └── get-started.txt # per-leaf-group bundle ├── search-index.json # BM25 index └── search-content.json # chunk content store ```","Quickstart\n\nInstall leadtype, run it against a docs folder, and inspect the four artifacts it produces.\n\nQuickstart\n\nWhat's next\n\nYou now have the four primitives. From here Wire it into a docs site Bundle docs into your package Understand the pipeline","CLI\n\nleadtype generate and leadtype lint — flags, exit codes, and JSON output.\n\nCLI\n\nTwo commands generate runs the full pipeline, lint validates content. Run leadtype help [options] ```","CLI\n\nleadtype generate and leadtype lint — flags, exit codes, and JSON output.\n\nCLI\n\ngenerate\n\nConvert MDX, build LLM bundles, and produce search artifacts in one pass. Flag Default Description -- -- -- --src ; summary: { filesScanned: number; errors: number; warnings: number; }; }; ```","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nDefault schemas\n\nDocs frontmatter\n\nField Required Type -- -- -- title Yes non-empty string description No string icon No string deprecated No boolean deprecatedReason No string experimental No boolean canary No boolean new No boolean draft No boolean tags No string array group No string or string array availableIn No array of framework, url?, title? full No boolean lastModified and lastAuthor are produced by the converter when --enrich-git is set. Don't author them.","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nDefault schemas\n\nChangelog frontmatter\n\nField Required Type -- -- -- title Yes non-empty string version Yes SemVer string date Yes ISO-8601 or parseable date description No string icon No string type No release , improvement , retired , or deprecation tags No string array canary No boolean authors No string or string array draft No boolean","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nDefault schemas\n\nmeta.json\n\nField Required Type -- -- -- pages Yes string array title No non-empty string root No boolean icon No string defaultOpen No boolean nav.sidebar No section or combined nav.label No string nav.mode No string","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nCustom schemas\n\nPass a Valibot schema to extend or replace the defaults Once you provide a custom schema, unknown-field warnings apply to that schema. Add --error-unknown in CI to keep your contract strict.\n\n```ts import * as v from \"valibot\"; import { lintDocs } from \"leadtype/lint\"; const customFrontmatter = v.object({ title: v.pipe(v.string(), v.minLength(1)), audience: v.picklist([\"beginner\", \"advanced\"]), }); await lintDocs({ srcDir: \"docs\", schemas: { frontmatter: customFrontmatter }, }); ```","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nPractical guidance\n\nRun lint before leadtype generate so content errors fail fast. Use --format github in GitHub Actions and --format json in any other CI. Treat unresolved-placeholder as a content bug first — usually a missing entry in availableIn or a stale URL template. After a docs move, lint and run meta.json updates together; they drift at the same time. For wiring lint into pipelines, see Validate in CI.","LLM bundles\n\nGenerate llms.txt and topic-scoped full-context files for agents.\n\nLLM bundles\n\nThe leadtype/llm entry point produces the agent-facing outputs llms.txt a routing index and llms-full/ .txt per-leaf-group full content . Both are derived from the same docs source.\n\n```ts import { generateLlmsTxt, generateLLMFullContextFiles, resolveDocsNavigation, } from \"leadtype/llm\"; ```","LLM bundles\n\nGenerate llms.txt and topic-scoped full-context files for agents.\n\nLLM bundles\n\nWhat gets generated\n\nFile Purpose -- -- A library that does one thing well. - Helper that handles the boring parts. - Type-safe by default. - Works in any runtime. ## Best Starting Points - [Documentation](https://docs.example.com/docs) - [Quickstart](https://docs.example.com/docs/quickstart) ## Get Started Five-minute happy path and the mental model. - [Quickstart](https://docs.example.com/docs/quickstart): Install and run the pipeline. - [How it works](https://docs.example.com/docs/how-it-works): The mental model. ## Reference CLI flags and conversion APIs. - [CLI](https://docs.example.com/docs/reference/cli): Every flag. ```","LLM bundles\n\nGenerate llms.txt and topic-scoped full-context files for agents.\n\nLLM bundles\n\nTypical sequence\n\ngenerateLLMFullContextFiles reads from 0) { for (const { urlPath, slug } of navigation.unknown) { process.stderr.write(`error: ${urlPath} declares unknown group \"${slug}\".\\n`); } process.exit(1); } ``` ```ts import { mkdir, writeFile } from \"node:fs/promises\"; await mkdir(\"src/generated\", { recursive: true }); await writeFile( \"src/generated/docs-nav.json\", `${JSON.stringify(navigation, null, 2)}\\n` ); ```","LLM bundles\n\nGenerate llms.txt and topic-scoped full-context files for agents.\n\nLLM bundles\n\nTopic design\n\nThe groups you pass to these APIs come from docs.config.ts . Two principles Prefer narrow leaves over one giant bundle. A leaf with 5 pages produces a focused llms-full file an agent can load quickly. A single catch-all leaf with 50 pages produces something most agents will truncate. Write group descriptions for routing, not flavor text. Agents read those descriptions to decide which bundle to load. \"How to install and run\" beats \"Welcome to our guides!\"","LLM bundles\n\nGenerate llms.txt and topic-scoped full-context files for agents.\n\nLLM bundles\n\nBase URL precedence\n\nPass baseUrl explicitly, or use environment variables for layered fallback The package-specific LEADTYPE AGENT BASE URL lets each package override an org-wide default. BASE URL covers most CI/deployment platforms, and a final hardcoded fallback keeps local builds working without env setup.\n\n```ts const baseUrl = process.env.LEADTYPE_AGENT_BASE_URL || process.env.BASE_URL || process.env.PORTLESS_URL || \"https://docs.example.com\"; ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nThe remark stack is what turns interactive MDX into agent-readable markdown. Imports get stripped first, placeholders get resolved, then each named component is flattened into a markdown equivalent. Order matters.\n\n```ts import { defaultRemarkPlugins, remarkInclude, remarkTypeTableToMarkdown, } from \"leadtype/remark\"; ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nThe default stack\n\ndefaultRemarkPlugins runs the stack in this order 1. remarkRemoveImports — strip MDX import and export statements. 2. remarkRemoveJsxComments — strip / ... / JSX comments. 3. remarkResolveDocPlaceholders — replace framework and similar placeholders in URLs. 4. remarkSectionToMarkdown — flatten ri --> rj --> rd --> rs --> rc --> rcd --> rdt --> rm --> rct --> rst --> rt --> rtt --> ra --> rts --> re --> out` ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nWhy order matters\n\nImports must go before placeholder resolution, because some placeholders read from imported modules. Placeholder resolution must go before component flatteners, because flatteners assume URLs are final strings, not template literals. The component flatteners run last so each one sees a clean tree. Don't reorder casually. If you need a custom plugin to run before a flattener for example, to transform a custom component into one of the contracted names , insert it after remarkResolveDocPlaceholders and before the flattener you want to feed.","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nOptional plugins\n\nremarkInclude\n\nAdd this when the source docs use include tags or partial composition Place it before the default stack so included content expands before any flattener sees it.\n\n```ts remarkPlugins: [remarkInclude, ...defaultRemarkPlugins]; ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nOptional plugins\n\nremarkTypeTableToMarkdown with basePath\n\n p !== remarkTypeTableToMarkdown), [remarkTypeTableToMarkdown, { basePath: process.cwd() }], ]; ``` ```mdx ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nPlugin selection rules\n\nUse defaultRemarkPlugins for any agent-facing or LLM output. Add remarkInclude when docs are composed from shared fragments. Use individual plugins only when you intentionally want to omit a flattener e.g. you don't use /docs/search-index.json /docs/search-content.json ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nRuntime search\n\nThe runtime is edge-safe — no Node APIs, works on Vercel, Cloudflare, and anywhere else Results include heading paths, hash URLs, and snippets ready for a search UI.\n\n```ts import { searchDocs, type DocsSearchIndex, type DocsSearchContentStore, } from \"leadtype/search\"; import indexJson from \"../public/docs/search-index.json\"; import contentJson from \"../public/docs/search-content.json\"; const results = searchDocs( indexJson as DocsSearchIndex, \"tabs install\", { content: contentJson as DocsSearchContentStore } ); ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nReading docs at runtime\n\nThe same index doubles as a virtual filesystem. Three readers, picked by what you have Use readDocsContentFile when you need the entire page for context links . Use readDocsContentChunk when a search result already named the right heading.\n\n```ts import { listDocsContentFiles, readDocsContentFile, readDocsContentChunk, } from \"leadtype/search\"; const allFiles = listDocsContentFiles(index); const wholePage = readDocsContentFile(index, \"guides/quickstart\", content); const oneChunk = readDocsContentChunk(index, \"chunk-0\", content); ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nSource-grounded answers\n\ncreateAnswerContext turns a query plus retrieved chunks into a system and prompt you pass to any model The system message instructs the model to answer only from the retrieved context, cite sources with 1 -style references, and say so when the context is insufficient.\n\n```ts import { createAnswerContext } from \"leadtype/search\"; const context = createAnswerContext(index, \"how do I run lint?\", { content, productName: \"My Library\", }); // → { system, prompt, sources } ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nStreaming via provider entry points\n\nThree thin wrappers around createAnswerContext that stream a Response and surface sources separately. Use one matching your runtime response is a plain text Response. sources is metadata for citation links — display it separately, don't embed it in the streamed answer. For TanStack, pass an explicit adapter . For Cloudflare, build one with createCloudflareDocsAdapter provider, model, options binding env.AI.gateway \"docs\" .\n\n```ts import { streamDocsAnswer } from \"leadtype/search/vercel\"; // Vercel AI SDK / AI Gateway import { streamDocsAnswer } from \"leadtype/search/tanstack\"; // TanStack AI import { streamDocsAnswer } from \"leadtype/search/cloudflare\"; // Cloudflare AI Gateway / Workers AI ``` ```ts const { response, sources } = streamDocsAnswer({ index, content, query, model: \"openai/gpt-5.5\", productName: \"My Library\", }); ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nBash tool adapters\n\nWhen you want an agent to explore docs with shell commands instead of receiving pre-selected chunks The adapter exposes a read-only virtual /docs filesystem with ls , cat , find , grep , and rg . Network commands, code execution, and writes are disabled. TanStack and Cloudflare expose createDocsBashTools plural over the same filesystem.\n\n```ts import { createDocsBashTool } from \"leadtype/search/vercel\"; const { tools, instructions } = await createDocsBashTool(index, content); ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nAbuse guards\n\nReusable utilities for the request path Helper Purpose -- -- validateDocsQuery Trim and cap query text. readJsonWithLimit Reject oversized JSON bodies before parse. getClientIdentifier Read common proxy IP headers. createMemoryRateLimiter Implements RateLimiter for demos. The in-memory limiter is fine for demos. Production apps should adapt the RateLimiter interface to a shared store — Redis, Vercel KV, Cloudflare KV, or Durable Objects.","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nWhen to add embeddings\n\nStart with the local index. It is static, cheap, edge-safe, and fast for exact API names, config keys, error messages, and paths. Add embeddings only when Users search with vocabulary that doesn't match the docs e.g. \"make it faster\" matching a \"performance optimization\" page . Your docs grow past tens of thousands of chunks and the cold-start memory hit becomes noticeable. Even then, keep the lexical index for exact matches and layer embeddings on top — they're complementary, not replacements."]}
+{"version":2,"generatedAt":"2026-05-09T06:52:24.592Z","chunks":["Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nLeadtype does not ship UI components. Your docs app owns runtime rendering, styling, and accessibility — it only has to honor a small naming contract so the remark pipeline can flatten each component into markdown for agents, search, and llms-full/ .txt bundles.","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nWhy flatten at all?\n\nInteractive MDX components like Body content goes here. ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nCards\n\nA grid of short, linked entry points. Flattens to a bullet list of links. Convert Remark Search\n\n```tsx ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nSteps\n\nNumbered walkthroughs. Flattens to an ordered list with bold step titles. 1. Author docs in MDX Use the components in this list as authoring affordances. 2. Run the conversion leadtype generate writes flattened markdown to public/docs/ . 3. Serve both formats HTML for humans, .md for agents — same URL, content negotiated by the Accept header.\n\n```tsx Use the components in this list. `leadtype generate` writes flattened markdown. ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nTabs\n\nGroup equivalent content. Flattens to bold headings followed by content so agents do not need a JSX-aware renderer to read every variant. tanstack-start Use a Vite middleware dev/preview and a Nitro middleware prod to negotiate the Accept header. next-js Wire content negotiation in middleware.ts and serve .md from a route handler. vite A configureServer middleware is enough for static deployments where .md files live in public/ .\n\n```tsx … … … ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nCommandTabs\n\nPackage-manager-aware install or run commands. Flattens to a markdown table with one row per manager. Use mode=\"install\" when command is a package name, mode=\"run\" when command is a CLI name, and mode=\"create\" for starter commands. Use the commands prop for exact per-manager overrides. Package manager Command -- -- npm npm install leadtype pnpm pnpm add leadtype yarn yarn add leadtype bun bun add leadtype Package manager Command -- -- npm npx leadtype lint pnpm pnpm dlx leadtype lint yarn yarn dlx leadtype lint bun bunx leadtype lint\n\n```tsx ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nAccordion\n\nCollapsible details for secondary content. Flattening ignores open/closed state and emits every item — accordions are not a place to hide content from agents. When should I use accordions? Use them for supporting details, troubleshooting notes, and optional reference material. Closed content is still flattened by the remark pipeline. Are accordions a good place to hide content from LLMs? No. Conversion ignores the open/closed state and emits everything inside.\n\n```tsx Use them for supporting details and optional reference material. ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nTopicSwitcher\n\nNavigation across equivalent docs topics — frameworks, SDKs, runtimes, deployment targets, product areas. Reader-facing only; it does not automatically read LLM topic config. Framework React — React integration Vue — Vue integration Svelte — Svelte integration\n\n```tsx ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nTypeTable and ExtractedTypeTable\n\nTypeTable is for explicit prop or type rows you already know. ExtractedTypeTable reads a TypeScript file at conversion time and extracts the table from a named type — keep its path stable. Property Type Description Default Required -- -- -- -- -- title string Heading rendered above the callout body. - ✅ Required variant CalloutVariant Visual treatment for the callout. info Optional deprecated \\ \\ boolean\\ \\ deprecated Marks the row as deprecated. false Optional\n\n```tsx ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nExample\n\nData-driven preview and source examples. The host component receives code as data; add file loaders or dynamic imports outside leadtype when an example needs app-specific behavior.\n\n```tsx The host app owns styling and runtime components while leadtype owns conversion. ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nComponent reference\n\nMermaid\n\nDiagrams authored as plain text. Renders client-side as interactive SVG. Flattening preserves the source as a fenced mermaid block so other tools can render the diagram from the markdown copy.\n\n```tsx |remark| Markdown Markdown -->|llms.txt| Agents`} /> ``` ```mermaid `graph LR MDX -->|remark| Markdown Markdown -->|search index| API Markdown -->|llms.txt| Agents` ```","Components\n\nMDX components the pipeline knows how to flatten into agent-readable markdown.\n\nComponents\n\nGuidelines\n\nKeep runtime components in your docs app. Leadtype stays out of UI. Keep component names stable. Renaming resolver page1 --> resolver page2 --> resolver page3 --> resolver resolver --> nav resolver --> llms resolver --> full` ```","Frontmatter\n\nRequired fields, group semantics, and how authored MDX becomes a navigation tree.\n\nFrontmatter\n\nHow groups become a nav tree\n\nNested groups\n\nDeclare children in the config to build deeper trees A page sets group bundle-package-docs and lands in that nested slot. Only leaf groups no children get an llms-full/ cli cli --> bundle bundle --> publish publish --> install install --> consume` ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball — AGENTS.md at the package root plus per-topic .md files.\n\nBundle docs into a package\n\nWhy AGENTS.md, not llms.txt?\n\nllms.txt is a website convention — a file at /llms.txt with absolute URLs that an agent fetches over HTTP. Inside an npm tarball it's the wrong shape every link points at a hosted URL the agent may not be able to reach, and no major coding agent looks for node modules/ 0) { for (const { urlPath, slug } of navigation.unknown) { process.stderr.write(`error: ${urlPath} declares unknown group \"${slug}\".\\n`); } process.exit(1); } await generateAgentsMd({ srcDir: REPO_ROOT, outDir: PACKAGE_ROOT, product: docsConfig.product, groups: docsConfig.groups, }); ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball — AGENTS.md at the package root plus per-topic .md files.\n\nBundle docs into a package\n\nVerify before publishing\n\nnpm pack --dry-run should list AGENTS.md docs/ / .md If AGENTS.md is missing, check files in package.json . If .md files are missing, check the --include / --exclude filters.\n\n```bash npx leadtype generate --bundle --src . --out packages/my-package cd packages/my-package && npm pack --dry-run ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball — AGENTS.md at the package root plus per-topic .md files.\n\nBundle docs into a package\n\nTell consuming projects to use the bundle\n\nAGENTS.md inside your tarball is auto-discovered by agents working in your published package — but for a project that depends on your package, the agent's working directory is the consumer's repo, not yours. You need to point them at the bundled docs. Recommend this snippet in your README so consumers add it to their own root AGENTS.md This is the same pattern Next.js uses to point agents at node modules/next/dist/docs/ .\n\n```md # When working with the `` library, read the bundled docs in `node_modules//AGENTS.md` first — they're version-matched to the installed package and stay accurate as the library updates. ```","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball — AGENTS.md at the package root plus per-topic .md files.\n\nBundle docs into a package\n\nWhen to use this\n\nUse this when agents should understand the package from the installed dependency itself — coding agents that don't have web access, IDE assistants, CLI tools, or air-gapped environments. Don't use this if your only goal is a public docs website. For that, see Connect a docs site. You can use both — they read the same source MDX, just emit different shapes.","Bundle docs into a package\n\nShip agent-readable docs inside an npm tarball — AGENTS.md at the package root plus per-topic .md files.\n\nBundle docs into a package\n\nWhat's next\n\nCLI reference LLM bundles Lint in CI","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nUse this path when you run a docs site or want to . Leadtype runs before your build to convert MDX, generate the navigation, build the search index, and produce agent-readable bundles. Your site framework — TanStack Start, Next.js, Astro, anything — handles routing and rendering.","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nThe flow\n\n\\` reads TypeScript files at conversion time. // Pass basePath so the component can resolve relative paths. const typeTablePlugin: NonNullable< MdxToMarkdownOptions[\"remarkPlugins\"] >[number] = [remarkTypeTableToMarkdown, { basePath: repoRoot }]; await convertAllMdx({ srcDir, outDir, remarkPlugins: [ remarkInclude, ...defaultRemarkPlugins.filter((p) => p !== remarkTypeTableToMarkdown), typeTablePlugin, ], enrichFrontmatterFromGit: true, }); ```","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nConfigure the product and groups\n\nAuthor docs/docs.config.ts once and let every stage read from it Pages declare group in frontmatter. The config declares the tree. The two together produce the navigation manifest, the llms.txt sections, and the lint check that catches typos. See Frontmatter for the resolution rules.\n\n```ts import { defineDocsConfig } from \"leadtype\"; export default defineDocsConfig({ product: { name: \"my-docs\", summary: \"Short product summary.\", bullets: [\"What it does in one bullet.\", \"Another bullet.\"], bestStartingPoints: [{ urlPath: \"/docs\" }, { urlPath: \"/docs/quickstart\" }], }, groups: [ { slug: \"get-started\", title: \"Get Started\" }, { slug: \"guides\", title: \"Guides\" }, ], }); ```","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nServe markdown to agents\n\nDrop a content-negotiation middleware in front of your static /docs/ .md files so agents can fetch markdown from the same URL humans visit. A complete vite plugin in \\ 50 lines Browsers send text/html, / and get HTML. Agents send Accept text/markdown and get the converted .md . Same URL, two formats. ⚠️ Warning Set charset=utf-8 Many static handlers serve .md files as Content-Type text/markdown with no charset, which makes browsers fall back to Latin-1 and render UTF-8 characters box-drawing, em dashes, smart quotes as mojibake. Always send Content-Type text/markdown; charset=utf-8 — that's what forceUtf8OnTextResponses above does by patching setHeader. For Next.js, wire the same rewriteToMarkdown logic in middleware.ts and serve .md from a route handler that sets Content-Type text/markdown; charset=utf-8 . For Cloudflare Pages, use a middleware Worker. In every case, set the charset explicitly.\n\n```ts import type { PluginOption } from \"vite\"; function rewriteToMarkdown( url: string, accept: string | undefined ): string | null { if (!accept) return null; const pathname = url.split(\"?\")[0] ?? url; if (pathname.endsWith(\".md\")) return null; if (!(pathname === \"/docs\" || pathname.startsWith(\"/docs/\"))) return null; if (!/text\\/(markdown|plain)/i.test(accept)) return null; // Browsers send `text/html,*/*` — never serve markdown to them. if (/text\\/html/i.test(accept) && !/text\\/(markdown|plain)\\s*;?\\s*q=/i.test(accept)) { return null; } const target = pathname === \"/docs\" ? \"/docs/index.md\" : `${pathname.replace(/\\/$/, \"\")}.md`; return target + (url.length > pathname.length ? url.slice(pathname.length) : \"\"); } function forceUtf8OnTextResponses(res: { setHeader: (n: string, v: string | number | string[]) => unknown }) { const original = res.setHeader.bind(res); res.setHeader = (name, value) => { if ( typeof name === \"string\" && name.toLowerCase() === \"content-type\" && typeof value === \"string\" && /^text\\/(markdown|plain)/i.test(value) && !/charset=/i.test(value) ) { return original(name, `${value}; charset=utf-8`); } return original(name, value); }; } export function","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nServe markdown to agents\n\ndown|plain)/i.test(value) && !/charset=/i.test(value) ) { return original(name, `${value}; charset=utf-8`); } return original(name, value); }; } export function markdownNegotiation(): PluginOption { const middleware = (req: any, res: any, next: () => void) => { if (!req.url) return next(); forceUtf8OnTextResponses(res); const accept = Array.isArray(req.headers.accept) ? req.headers.accept.join(\",\") : req.headers.accept; const rewritten = rewriteToMarkdown(req.url, accept); if (rewritten) req.url = rewritten; next(); }; return { name: \"leadtype:markdown-negotiation\", configureServer: (s) => s.middlewares.use(middleware), configurePreviewServer: (s) => s.middlewares.use(middleware), }; } ```","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nConnect a remote source\n\nWhen the docs source lives in a different repo from the docs site Run lint first so missing or malformed frontmatter fails before the converter writes anything. Use --format github in CI to get inline annotations on the PR. Use --json on generate so automation can read the resolved groups and search index stats. This is the shape we expect for orgs hosting one docs UI for multiple package repos the source lives next to the code it documents, the docs app pulls it in at build time. See Bundle docs into a package if the package should also ship docs inside its npm tarball.\n\n```bash git clone --depth 1 https://github.com/acme/package-a .docs-src/package-a npx leadtype lint .docs-src/package-a/docs --format github --error-unknown npx leadtype generate --src .docs-src/package-a --out public --json npm run build ```","Connect a docs site\n\nWire leadtype into a docs app build so it serves humans, agents, and search from one source.\n\nConnect a docs site\n\nVerify\n\nAfter a clean build public/docs/index.md — the converted home page. public/llms.txt — the routing index. Should mention every group from your config. public/docs/llms-full/ lint-report.json ```","Validate in CI\n\nRun leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.\n\nValidate in CI\n\nLocal pre-push hook\n\nCatch issues before they reach CI by running lint in a husky pre-push hook Keep it under a second by limiting the scan to changed files when you have many pages. The CLI accepts repeated --ignore globs to skip stale or generated paths.\n\n```bash #!/usr/bin/env sh npx leadtype lint docs --max-warnings 0 ```","Validate in CI\n\nRun leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.\n\nValidate in CI\n\nRun before generate\n\nWhen leadtype lint and leadtype generate both run in the same job, lint first Generate fails noisily on unknown groups or broken includes. Lint fails specifically on content schema problems with file/line context — much easier to debug.\n\n```bash npx leadtype lint docs --error-unknown npx leadtype generate --src . --out public --json ```","Validate in CI\n\nRun leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.\n\nValidate in CI\n\nWhat to fix first\n\nWhen CI fails on a lot of violations, fix them in this order 1. parse-error — frontmatter is broken; nothing else can validate. 2. schema — missing or wrong-typed required fields. 3. unresolved-placeholder — content bug, not a config bug. 4. invalid-link and cross-framework-link — usually a stale link after a docs move. 5. unknown-field — last; either delete the field or extend the schema.","How it works\n\nThe mental model: one MDX source, a remark pipeline, two output modes, three audiences.\n\nHow it works\n\nLeadtype takes one input — a folder of MDX — and produces every shape your docs need to take. This page names every piece so the rest of the docs make sense.","How it works\n\nThe mental model: one MDX source, a remark pipeline, two output modes, three audiences.\n\nHow it works\n\nThe pipeline\n\nThe remark stack is what turns interactive MDX components into agent-readable markdown. JSX gets flattened — a fm fm --> remark fm --> groups remark --> md md --> site_idx md --> search groups --> site_idx groups --> agents_md groups --> nav` ```","How it works\n\nThe mental model: one MDX source, a remark pipeline, two output modes, three audiences.\n\nHow it works\n\nTwo output modes\n\nleadtype generate has two modes that read the same source and emit different shapes Property Type Description Default Required -- -- -- -- -- Site mode default leadtype generate --out public Writes llms.txt, docs/llms-full/\\ .txt, docs/search-index.json, and docs/\\ .md to a public/ directory your docs website serves. Links use absolute URLs set with --base-url . This is what you wire into a vite/Next/Astro build. - Optional Bundle mode leadtype generate --bundle --out packages/foo Writes AGENTS.md at the package root and docs/\\ .md beneath it, both with relative paths. Skips llms.txt, llms-full, and the search index — those are website-only. Designed for npm tarballs that ship docs alongside the published code. - Optional","How it works\n\nThe mental model: one MDX source, a remark pipeline, two output modes, three audiences.\n\nHow it works\n\nThe artifacts\n\nProperty Type Description Default Required -- -- -- -- -- Markdown .md docs/\\ human site_out -- \"absolute URLs\" --> http_agent site_out -- \"search-index.json\" --> search_ui bundle_out -- \"AGENTS.md auto-discovery\" --> offline_agent` ```","How it works\n\nThe mental model: one MDX source, a remark pipeline, two output modes, three audiences.\n\nHow it works\n\nVocabulary\n\nA few terms you will see throughout the docs. Property Type Description Default Required -- -- -- -- -- flatten verb Convert an interactive MDX component into a portable markdown equivalent. A \\ site_run src --> bundle_run site_run --> site_out bundle_run --> bundle_out site_out --> humans site_out --> http_agents site_out --> search bundle_out --> offline_agents` ```","Leadtype\n\nOne MDX source. A website for humans, AGENTS.md for offline coding agents, llms.txt for HTTP agents — all from a single pipeline.\n\nLeadtype\n\nChoose your path\n\nMost teams arrive here for one of two reasons. Pick the journey that matches yours — each is a single page that takes you from zero to running. Build a docs site Ship docs in your package","Leadtype\n\nOne MDX source. A website for humans, AGENTS.md for offline coding agents, llms.txt for HTTP agents — all from a single pipeline.\n\nLeadtype\n\nWhat you get\n\n1. Write once Author MDX with familiar components — Callout , Tabs , Steps , Mermaid , TypeTable , and others. Add group in frontmatter to place pages in the navigation tree. 2. Run \\ leadtype generate\\ For a website converts MDX to markdown, builds llms.txt plus topic bundles, generates a search index, resolves navigation. With --bundle emits AGENTS.md plus per-topic .md files for agents reading from node modules/ . 3. Serve all of it Humans get HTML. HTTP agents get markdown via content negotiation or fetch llms.txt . Coding agents working in a project that depends on your package auto-discover AGENTS.md from node modules/ [options] ```","CLI\n\nleadtype generate and leadtype lint — flags, exit codes, and JSON output.\n\nCLI\n\ngenerate\n\nConvert MDX, then either produce website artifacts default or a package bundle --bundle . Flag Default Description -- -- -- --src ; summary: { filesScanned: number; errors: number; warnings: number; }; }; ```","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nDefault schemas\n\nDocs frontmatter\n\nField Required Type -- -- -- title Yes non-empty string description No string icon No string deprecated No boolean deprecatedReason No string experimental No boolean canary No boolean new No boolean draft No boolean tags No string array group No string or string array availableIn No array of framework, url?, title? full No boolean lastModified and lastAuthor are produced by the converter when --enrich-git is set. Don't author them.","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nDefault schemas\n\nChangelog frontmatter\n\nField Required Type -- -- -- title Yes non-empty string version Yes SemVer string date Yes ISO-8601 or parseable date description No string icon No string type No release , improvement , retired , or deprecation tags No string array canary No boolean authors No string or string array draft No boolean","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nDefault schemas\n\nmeta.json\n\nField Required Type -- -- -- pages Yes string array title No non-empty string root No boolean icon No string defaultOpen No boolean nav.sidebar No section or combined nav.label No string nav.mode No string","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nCustom schemas\n\nPass a Valibot schema to extend or replace the defaults Once you provide a custom schema, unknown-field warnings apply to that schema. Add --error-unknown in CI to keep your contract strict.\n\n```ts import * as v from \"valibot\"; import { lintDocs } from \"leadtype/lint\"; const customFrontmatter = v.object({ title: v.pipe(v.string(), v.minLength(1)), audience: v.picklist([\"beginner\", \"advanced\"]), }); await lintDocs({ srcDir: \"docs\", schemas: { frontmatter: customFrontmatter }, }); ```","Lint rules\n\nSchema, link, and navigation checks. CLI and library API.\n\nLint rules\n\nPractical guidance\n\nRun lint before leadtype generate so content errors fail fast. Use --format github in GitHub Actions and --format json in any other CI. Treat unresolved-placeholder as a content bug first — usually a missing entry in availableIn or a stale URL template. After a docs move, lint and run meta.json updates together; they drift at the same time. For wiring lint into pipelines, see Validate in CI.","LLM bundles\n\nGenerate llms.txt for hosted websites and AGENTS.md for npm-bundled offline reading.\n\nLLM bundles\n\nThe leadtype/llm entry point produces three flavors of agent-facing index, all derived from the same docs source generateLlmsTxt — for hosted websites. Emits the /llms.txt convention with absolute URLs. generateLLMFullContextFiles — full-content topic bundles. Pairs with generateLlmsTxt . generateAgentsMd — for npm-bundled docs. Emits an AGENTS.md index with relative ./docs/ A library that does one thing well. - Helper that handles the boring parts. - Type-safe by default. - Works in any runtime. ## Best Starting Points - [Documentation](https://docs.example.com/docs) - [Quickstart](https://docs.example.com/docs/quickstart) ## Get Started Five-minute happy path and the mental model. - [Quickstart](https://docs.example.com/docs/quickstart): Install and run the pipeline. - [How it works](https://docs.example.com/docs/how-it-works): The mental model. ## Reference CLI flags and conversion APIs. - [CLI](https://docs.example.com/docs/reference/cli): Every flag. ```","LLM bundles\n\nGenerate llms.txt for hosted websites and AGENTS.md for npm-bundled offline reading.\n\nLLM bundles\n\nTypical sequence\n\ngenerateLLMFullContextFiles reads from A library that does one thing well. These docs ship inside the package so coding agents can read them offline. Open the topic file you need from the list below — paths are relative to this file. ## Get Started - [Quickstart](./docs/quickstart.md): Install and run the pipeline. - [How it works](./docs/how-it-works.md): The mental model. ## Reference - [CLI](./docs/reference/cli.md): Every flag. ```","LLM bundles\n\nGenerate llms.txt for hosted websites and AGENTS.md for npm-bundled offline reading.\n\nLLM bundles\n\nresolveDocsNavigation\n\nSame group-resolution logic the LLM bundles use, but returns the navigation manifest as a plain object — useful for driving a sidebar UI Write the result to src/generated/docs-nav.json and import it from your sidebar component Now your sidebar can import a static manifest with the same group tree the LLM bundles use.\n\n```ts const navigation = await resolveDocsNavigation({ srcDir: \".\", baseUrl: \"https://docs.example.com\", groups: docsConfig.groups, }); if (navigation.unknown.length > 0) { for (const { urlPath, slug } of navigation.unknown) { process.stderr.write(`error: ${urlPath} declares unknown group \"${slug}\".\\n`); } process.exit(1); } ``` ```ts import { mkdir, writeFile } from \"node:fs/promises\"; await mkdir(\"src/generated\", { recursive: true }); await writeFile( \"src/generated/docs-nav.json\", `${JSON.stringify(navigation, null, 2)}\\n` ); ```","LLM bundles\n\nGenerate llms.txt for hosted websites and AGENTS.md for npm-bundled offline reading.\n\nLLM bundles\n\nTopic design\n\nThe groups you pass to these APIs come from docs.config.ts . Two principles Prefer narrow leaves over one giant bundle. A leaf with 5 pages produces a focused llms-full file an agent can load quickly. A single catch-all leaf with 50 pages produces something most agents will truncate. Write group descriptions for routing, not flavor text. Agents read those descriptions to decide which bundle to load. \"How to install and run\" beats \"Welcome to our guides!\"","LLM bundles\n\nGenerate llms.txt for hosted websites and AGENTS.md for npm-bundled offline reading.\n\nLLM bundles\n\nBase URL precedence\n\nPass baseUrl explicitly, or use environment variables for layered fallback The package-specific LEADTYPE AGENT BASE URL lets each package override an org-wide default. BASE URL covers most CI/deployment platforms, and a final hardcoded fallback keeps local builds working without env setup.\n\n```ts const baseUrl = process.env.LEADTYPE_AGENT_BASE_URL || process.env.BASE_URL || process.env.PORTLESS_URL || \"https://docs.example.com\"; ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nThe remark stack is what turns interactive MDX into agent-readable markdown. Imports get stripped first, placeholders get resolved, then each named component is flattened into a markdown equivalent. Order matters.\n\n```ts import { defaultRemarkPlugins, remarkInclude, remarkTypeTableToMarkdown, } from \"leadtype/remark\"; ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nThe default stack\n\ndefaultRemarkPlugins runs the stack in this order 1. remarkRemoveImports — strip MDX import and export statements. 2. remarkRemoveJsxComments — strip / ... / JSX comments. 3. remarkResolveDocPlaceholders — replace framework and similar placeholders in URLs. 4. remarkSectionToMarkdown — flatten ri --> rj --> rd --> rs --> rc --> rcd --> rdt --> rm --> rct --> rst --> rt --> rtt --> ra --> rts --> re --> out` ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nWhy order matters\n\nImports must go before placeholder resolution, because some placeholders read from imported modules. Placeholder resolution must go before component flatteners, because flatteners assume URLs are final strings, not template literals. The component flatteners run last so each one sees a clean tree. Don't reorder casually. If you need a custom plugin to run before a flattener for example, to transform a custom component into one of the contracted names , insert it after remarkResolveDocPlaceholders and before the flattener you want to feed.","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nOptional plugins\n\nremarkInclude\n\nAdd this when the source docs use include tags or partial composition Place it before the default stack so included content expands before any flattener sees it.\n\n```ts remarkPlugins: [remarkInclude, ...defaultRemarkPlugins]; ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nOptional plugins\n\nremarkTypeTableToMarkdown with basePath\n\n p !== remarkTypeTableToMarkdown), [remarkTypeTableToMarkdown, { basePath: process.cwd() }], ]; ``` ```mdx ```","Remark plugins\n\nThe default plugin stack that flattens MDX components into markdown.\n\nRemark plugins\n\nPlugin selection rules\n\nUse defaultRemarkPlugins for any agent-facing or LLM output. Add remarkInclude when docs are composed from shared fragments. Use individual plugins only when you intentionally want to omit a flattener e.g. you don't use /docs/search-index.json /docs/search-content.json ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nRuntime search\n\nThe runtime is edge-safe — no Node APIs, works on Vercel, Cloudflare, and anywhere else Results include heading paths, hash URLs, and snippets ready for a search UI.\n\n```ts import { searchDocs, type DocsSearchIndex, type DocsSearchContentStore, } from \"leadtype/search\"; import indexJson from \"../public/docs/search-index.json\"; import contentJson from \"../public/docs/search-content.json\"; const results = searchDocs( indexJson as DocsSearchIndex, \"tabs install\", { content: contentJson as DocsSearchContentStore } ); ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nReading docs at runtime\n\nThe same index doubles as a virtual filesystem. Three readers, picked by what you have Use readDocsContentFile when you need the entire page for context links . Use readDocsContentChunk when a search result already named the right heading.\n\n```ts import { listDocsContentFiles, readDocsContentFile, readDocsContentChunk, } from \"leadtype/search\"; const allFiles = listDocsContentFiles(index); const wholePage = readDocsContentFile(index, \"guides/quickstart\", content); const oneChunk = readDocsContentChunk(index, \"chunk-0\", content); ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nSource-grounded answers\n\ncreateAnswerContext turns a query plus retrieved chunks into a system and prompt you pass to any model The system message instructs the model to answer only from the retrieved context, cite sources with 1 -style references, and say so when the context is insufficient.\n\n```ts import { createAnswerContext } from \"leadtype/search\"; const context = createAnswerContext(index, \"how do I run lint?\", { content, productName: \"My Library\", }); // → { system, prompt, sources } ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nStreaming via provider entry points\n\nThree thin wrappers around createAnswerContext that stream a Response and surface sources separately. Use one matching your runtime response is a plain text Response. sources is metadata for citation links — display it separately, don't embed it in the streamed answer. For TanStack, pass an explicit adapter . For Cloudflare, build one with createCloudflareDocsAdapter provider, model, options binding env.AI.gateway \"docs\" .\n\n```ts import { streamDocsAnswer } from \"leadtype/search/vercel\"; // Vercel AI SDK / AI Gateway import { streamDocsAnswer } from \"leadtype/search/tanstack\"; // TanStack AI import { streamDocsAnswer } from \"leadtype/search/cloudflare\"; // Cloudflare AI Gateway / Workers AI ``` ```ts const { response, sources } = streamDocsAnswer({ index, content, query, model: \"openai/gpt-5.5\", productName: \"My Library\", }); ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nBash tool adapters\n\nWhen you want an agent to explore docs with shell commands instead of receiving pre-selected chunks The adapter exposes a read-only virtual /docs filesystem with ls , cat , find , grep , and rg . Network commands, code execution, and writes are disabled. TanStack and Cloudflare expose createDocsBashTools plural over the same filesystem.\n\n```ts import { createDocsBashTool } from \"leadtype/search/vercel\"; const { tools, instructions } = await createDocsBashTool(index, content); ```","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nAbuse guards\n\nReusable utilities for the request path Helper Purpose -- -- validateDocsQuery Trim and cap query text. readJsonWithLimit Reject oversized JSON bodies before parse. getClientIdentifier Read common proxy IP headers. createMemoryRateLimiter Implements RateLimiter for demos. The in-memory limiter is fine for demos. Production apps should adapt the RateLimiter interface to a shared store — Redis, Vercel KV, Cloudflare KV, or Durable Objects.","Search\n\nStatic search index, runtime helpers, and source-grounded answer streaming.\n\nSearch\n\nWhen to add embeddings\n\nStart with the local index. It is static, cheap, edge-safe, and fast for exact API names, config keys, error messages, and paths. Add embeddings only when Users search with vocabulary that doesn't match the docs e.g. \"make it faster\" matching a \"performance optimization\" page . Your docs grow past tens of thousands of chunks and the cold-start memory hit becomes noticeable. Even then, keep the lexical index for exact matches and layer embeddings on top — they're complementary, not replacements."]}
diff --git a/apps/example/src/generated/docs-search-index.json b/apps/example/src/generated/docs-search-index.json
index 6d7673b..9b122d0 100644
--- a/apps/example/src/generated/docs-search-index.json
+++ b/apps/example/src/generated/docs-search-index.json
@@ -1 +1 @@
-{"version":2,"generatedAt":"2026-05-09T05:56:41.430Z","documents":[["authoring/components","Components","MDX components the pipeline knows how to flatten into agent-readable markdown.","/docs/authoring/components","https://docs.example.com/docs/authoring/components","authoring/components"],["authoring/frontmatter","Frontmatter","Required fields, group semantics, and how authored MDX becomes a navigation tree.","/docs/authoring/frontmatter","https://docs.example.com/docs/authoring/frontmatter","authoring/frontmatter"],["build/bundle-package-docs","Bundle docs into a package","Ship agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.","/docs/build/bundle-package-docs","https://docs.example.com/docs/build/bundle-package-docs","build/bundle-package-docs"],["build/connect-docs-site","Connect a docs site","Wire leadtype into a docs app build so it serves humans, agents, and search from one source.","/docs/build/connect-docs-site","https://docs.example.com/docs/build/connect-docs-site","build/connect-docs-site"],["build/validate-in-ci","Validate in CI","Run leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.","/docs/build/validate-in-ci","https://docs.example.com/docs/build/validate-in-ci","build/validate-in-ci"],["how-it-works","How it works","The mental model: one MDX source, a remark pipeline, four artifacts, three audiences.","/docs/how-it-works","https://docs.example.com/docs/how-it-works","how-it-works"],["index","Leadtype","One MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.","/docs","https://docs.example.com/docs","index"],["methodology","Methodology","How leadtype differs from Fumadocs, Starlight, and Mintlify.","/docs/methodology","https://docs.example.com/docs/methodology","methodology"],["quickstart","Quickstart","Install leadtype, run it against a docs folder, and inspect the four artifacts it produces.","/docs/quickstart","https://docs.example.com/docs/quickstart","quickstart"],["reference/cli","CLI","leadtype generate and leadtype lint — flags, exit codes, and JSON output.","/docs/reference/cli","https://docs.example.com/docs/reference/cli","reference/cli"],["reference/convert","Convert","MDX-to-markdown conversion APIs from leadtype/convert.","/docs/reference/convert","https://docs.example.com/docs/reference/convert","reference/convert"],["reference/lint","Lint rules","Schema, link, and navigation checks. CLI and library API.","/docs/reference/lint","https://docs.example.com/docs/reference/lint","reference/lint"],["reference/llm","LLM bundles","Generate llms.txt and topic-scoped full-context files for agents.","/docs/reference/llm","https://docs.example.com/docs/reference/llm","reference/llm"],["reference/remark","Remark plugins","The default plugin stack that flattens MDX components into markdown.","/docs/reference/remark","https://docs.example.com/docs/reference/remark","reference/remark"],["reference/search","Search","Static search index, runtime helpers, and source-grounded answer streaming.","/docs/reference/search","https://docs.example.com/docs/reference/search","reference/search"]],"chunks":[["chunk-0",0,"components",["Components"],45,0],["chunk-1",0,"why-flatten-at-all",["Components","Why flatten at all?"],82,1],["chunk-2",0,"the-naming-contract",["Components","The naming contract"],76,2],["chunk-3",0,"component-reference",["Components","Component reference"],34,3],["chunk-4",0,"callout",["Components","Component reference","Callout"],74,4],["chunk-5",0,"cards",["Components","Component reference","Cards"],43,5],["chunk-6",0,"steps",["Components","Component reference","Steps"],74,6],["chunk-7",0,"tabs",["Components","Component reference","Tabs"],89,7],["chunk-8",0,"commandtabs",["Components","Component reference","CommandTabs"],111,8],["chunk-9",0,"accordion",["Components","Component reference","Accordion"],77,9],["chunk-10",0,"topicswitcher",["Components","Component reference","TopicSwitcher"],69,10],["chunk-11",0,"typetable-and-extractedtypetable",["Components","Component reference","TypeTable and ExtractedTypeTable"],86,11],["chunk-12",0,"example",["Components","Component reference","Example"],76,12],["chunk-13",0,"mermaid",["Components","Component reference","Mermaid"],62,13],["chunk-14",0,"guidelines",["Components","Guidelines"],55,14],["chunk-15",1,"frontmatter",["Frontmatter"],26,15],["chunk-16",1,"minimum",["Frontmatter","Minimum"],75,16],["chunk-17",1,"how-groups-become-a-nav-tree",["Frontmatter","How groups become a nav tree"],119,17],["chunk-18",1,"nested-groups",["Frontmatter","How groups become a nav tree","Nested groups"],69,18],["chunk-19",1,"optional-fields",["Frontmatter","Optional fields"],117,19],["chunk-20",1,"lint-rules",["Frontmatter","Lint rules"],88,20],["chunk-21",1,"what-this-gives-you",["Frontmatter","What this gives you"],55,21],["chunk-22",2,"bundle-docs-into-a-package",["Bundle docs into a package"],62,22],["chunk-23",2,"the-flow",["Bundle docs into a package","The flow"],86,23],["chunk-24",2,"generate-into-the-package",["Bundle docs into a package","Generate into the package"],72,24],["chunk-25",2,"filter-to-package-specific-docs",["Bundle docs into a package","Filter to package-specific docs"],76,25],["chunk-26",2,"include-in-the-published-tarball",["Bundle docs into a package","Include in the published tarball"],185,26],["chunk-27",2,"include-in-the-published-tarball",["Bundle docs into a package","Include in the published tarball"],112,27],["chunk-28",2,"verify-before-publishing",["Bundle docs into a package","Verify before publishing"],76,28],["chunk-29",2,"how-agents-discover-bundled-docs",["Bundle docs into a package","How agents discover bundled docs"],104,29],["chunk-30",2,"when-to-use-this",["Bundle docs into a package","When to use this"],59,30],["chunk-31",2,"what-s-next",["Bundle docs into a package","What's next"],29,31],["chunk-32",3,"connect-a-docs-site",["Connect a docs site"],54,32],["chunk-33",3,"the-flow",["Connect a docs site","The flow"],105,33],["chunk-34",3,"one-off-run",["Connect a docs site","One-off run"],71,34],["chunk-35",3,"wire-it-into-the-build",["Connect a docs site","Wire it into the build"],202,35],["chunk-36",3,"configure-the-product-and-groups",["Connect a docs site","Configure the product and groups"],94,36],["chunk-37",3,"serve-markdown-to-agents",["Connect a docs site","Serve markdown to agents"],273,37],["chunk-38",3,"serve-markdown-to-agents",["Connect a docs site","Serve markdown to agents"],95,38],["chunk-39",3,"connect-a-remote-source",["Connect a docs site","Connect a remote source"],131,39],["chunk-40",3,"verify",["Connect a docs site","Verify"],108,40],["chunk-41",3,"what-s-next",["Connect a docs site","What's next"],26,41],["chunk-42",4,"validate-in-ci",["Validate in CI"],49,42],["chunk-43",4,"what-it-catches",["Validate in CI","What it catches"],78,43],["chunk-44",4,"github-actions",["Validate in CI","GitHub Actions"],83,44],["chunk-45",4,"other-ci-providers",["Validate in CI","Other CI providers"],60,45],["chunk-46",4,"local-pre-push-hook",["Validate in CI","Local pre-push hook"],64,46],["chunk-47",4,"run-before-generate",["Validate in CI","Run before generate"],63,47],["chunk-48",4,"what-to-fix-first",["Validate in CI","What to fix first"],66,48],["chunk-49",5,"how-it-works",["How it works"],37,49],["chunk-50",5,"the-pipeline",["How it works","The pipeline"],130,50],["chunk-51",5,"the-four-artifacts",["How it works","The four artifacts"],137,51],["chunk-52",5,"the-three-audiences",["How it works","The three audiences"],108,52],["chunk-53",5,"vocabulary",["How it works","Vocabulary"],145,53],["chunk-54",5,"what-runs-when",["How it works","What runs when"],84,54],["chunk-55",5,"where-to-next",["How it works","Where to next"],19,55],["chunk-56",6,"leadtype",["Leadtype"],145,56],["chunk-57",6,"choose-your-path",["Leadtype","Choose your path"],45,57],["chunk-58",6,"what-you-get",["Leadtype","What you get"],82,58],["chunk-59",6,"next",["Leadtype","Next"],45,59],["chunk-60",7,"methodology",["Methodology"],30,60],["chunk-61",7,"the-short-version",["Methodology","The short version"],67,61],["chunk-62",7,"what-leadtype-owns",["Methodology","What leadtype owns"],50,62],["chunk-63",7,"what-leadtype-does-not-own",["Methodology","What leadtype does not own"],31,63],["chunk-64",7,"when-the-combination-shines",["Methodology","When the combination shines"],75,64],["chunk-65",8,"quickstart",["Quickstart"],19,65],["chunk-66",8,"install",["Quickstart","Install"],55,66],["chunk-67",8,"author-one-page",["Quickstart","Author one page"],47,67],["chunk-68",8,"generate",["Quickstart","Generate"],111,68],["chunk-69",8,"inspect-the-output",["Quickstart","Inspect the output"],89,69],["chunk-70",8,"what-s-next",["Quickstart","What's next"],30,70],["chunk-71",9,"cli",["CLI"],30,71],["chunk-72",9,"generate",["CLI","generate"],151,72],["chunk-73",9,"json-output-shape",["CLI","generate","JSON output shape"],97,73],["chunk-74",9,"group-inference",["CLI","generate","Group inference"],89,74],["chunk-75",9,"lint",["CLI","lint"],145,75],["chunk-76",9,"help",["CLI","help"],25,76],["chunk-77",9,"library-entry-points",["CLI","Library entry points"],65,77],["chunk-78",10,"convert",["Convert"],47,78],["chunk-79",10,"convertallmdx",["Convert","convertAllMdx"],67,79],["chunk-80",10,"convertmdxtomarkdown",["Convert","convertMdxToMarkdown"],54,80],["chunk-81",10,"writemdxfileasmarkdown",["Convert","writeMdxFileAsMarkdown"],28,81],["chunk-82",10,"behavior-notes",["Convert","Behavior notes"],50,82],["chunk-83",10,"pairing-with-remark-plugins",["Convert","Pairing with remark plugins"],54,83],["chunk-84",11,"lint-rules",["Lint rules"],46,84],["chunk-85",11,"rules",["Lint rules","Rules"],15,85],["chunk-86",11,"frontmatter-rules",["Lint rules","Rules","Frontmatter rules"],58,86],["chunk-87",11,"content-link-rules",["Lint rules","Rules","Content / link rules"],68,87],["chunk-88",11,"library-api",["Lint rules","Library API"],90,88],["chunk-89",11,"result-shape",["Lint rules","Library API","Result shape"],67,89],["chunk-90",11,"docs-frontmatter",["Lint rules","Default schemas","Docs frontmatter"],75,90],["chunk-91",11,"changelog-frontmatter",["Lint rules","Default schemas","Changelog frontmatter"],60,91],["chunk-92",11,"meta-json",["Lint rules","Default schemas","meta.json"],49,92],["chunk-93",11,"custom-schemas",["Lint rules","Custom schemas"],63,93],["chunk-94",11,"practical-guidance",["Lint rules","Practical guidance"],65,94],["chunk-95",12,"llm-bundles",["LLM bundles"],45,95],["chunk-96",12,"what-gets-generated",["LLM bundles","What gets generated"],97,96],["chunk-97",12,"example-llms-txt",["LLM bundles","Example llms.txt"],94,97],["chunk-98",12,"typical-sequence",["LLM bundles","Typical sequence"],89,98],["chunk-99",12,"resolvedocsnavigation",["LLM bundles","resolveDocsNavigation"],110,99],["chunk-100",12,"topic-design",["LLM bundles","Topic design"],76,100],["chunk-101",12,"base-url-precedence",["LLM bundles","Base URL precedence"],74,101],["chunk-102",13,"remark-plugins",["Remark plugins"],46,102],["chunk-103",13,"the-default-stack",["Remark plugins","The default stack"],158,103],["chunk-104",13,"why-order-matters",["Remark plugins","Why order matters"],81,104],["chunk-105",13,"remarkinclude",["Remark plugins","Optional plugins","remarkInclude"],40,105],["chunk-106",13,"remarktypetabletomarkdown-with-basepath",["Remark plugins","Optional plugins","remarkTypeTableToMarkdown with basePath"],98,106],["chunk-107",13,"plugin-selection-rules",["Remark plugins","Plugin selection rules"],63,107],["chunk-108",14,"search",["Search"],41,108],["chunk-109",14,"vocabulary",["Search","Vocabulary"],79,109],["chunk-110",14,"build-time-indexing",["Search","Build-time indexing"],67,110],["chunk-111",14,"runtime-search",["Search","Runtime search"],67,111],["chunk-112",14,"reading-docs-at-runtime",["Search","Reading docs at runtime"],62,112],["chunk-113",14,"source-grounded-answers",["Search","Source-grounded answers"],62,113],["chunk-114",14,"streaming-via-provider-entry-points",["Search","Streaming via provider entry points"],103,114],["chunk-115",14,"bash-tool-adapters",["Search","Bash tool adapters"],65,115],["chunk-116",14,"abuse-guards",["Search","Abuse guards"],60,116],["chunk-117",14,"when-to-add-embeddings",["Search","When to add embeddings"],73,117]],"terms":{"10":[[103,0,0,1,0]],"11":[[103,0,0,1,0]],"12":[[103,0,0,1,0]],"13":[[103,0,0,1,0]],"14":[[103,0,0,1,0]],"15":[[103,0,0,1,0]],"35":[[53,0,0,1,0],[109,0,0,1,0]],"50":[[37,0,0,1,0],[100,0,0,1,0]],"5173":[[40,0,0,1,0]],"8601":[[91,0,0,1,0]],"components":[[0,1,1,2,0],[1,1,1,2,0],[2,1,1,2,2],[3,1,1,1,0],[4,1,1,1,0],[5,1,1,1,0],[6,1,1,2,1],[7,1,1,1,0],[8,1,1,1,0],[9,1,1,1,0],[10,1,1,1,0],[11,1,1,1,0],[12,1,1,1,4],[13,1,1,1,0],[14,1,1,3,0],[50,0,0,2,1],[58,0,0,1,0],[63,0,0,1,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,1,0],[107,0,0,1,0]],"mdx":[[0,0,0,1,0],[1,0,0,2,0],[2,0,0,1,1],[3,0,0,2,0],[4,0,0,1,0],[5,0,0,1,1],[6,0,0,2,1],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,3],[13,0,0,1,2],[14,0,0,1,0],[15,0,0,2,0],[16,0,0,1,1],[17,0,0,1,0],[18,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[23,0,0,0,1],[26,0,0,0,1],[27,0,0,0,1],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,0,2],[42,0,0,1,0],[44,0,0,0,1],[49,0,0,2,0],[50,0,0,2,1],[51,0,0,2,0],[52,0,0,2,1],[53,0,0,2,0],[54,0,0,2,0],[55,0,0,1,0],[56,0,0,2,1],[57,0,0,1,0],[58,0,0,4,0],[59,0,0,1,0],[62,0,0,1,0],[63,0,0,1,0],[65,0,0,1,0],[67,0,0,1,1],[68,0,0,1,0],[69,0,0,1,0],[72,0,0,1,0],[78,0,0,2,0],[79,0,0,2,0],[80,0,0,1,1],[81,0,0,1,1],[82,0,0,2,0],[83,0,0,1,0],[84,0,0,1,0],[87,0,0,1,0],[88,0,0,1,0],[102,0,0,2,0],[103,0,0,2,1],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,2,1],[107,0,0,1,0],[110,0,0,1,0]],"pipeline":[[0,0,0,2,0],[1,0,0,1,0],[2,0,0,2,0],[3,0,0,1,0],[4,0,0,2,0],[5,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,2,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[21,0,0,1,0],[35,0,0,1,8],[42,0,0,1,0],[49,0,0,1,0],[50,0,1,1,0],[51,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[56,0,0,2,0],[57,0,0,1,0],[58,0,0,1,0],[59,0,0,2,0],[60,0,0,1,0],[61,0,0,1,0],[62,0,0,1,0],[64,0,0,1,0],[65,0,0,1,0],[70,0,0,1,0],[71,0,0,1,0],[72,0,0,1,0],[74,0,0,1,0],[80,0,0,1,0],[97,0,0,0,1]],"knows":[[0,0,0,1,0],[1,0,0,1,0],[2,0,0,1,0],[3,0,0,1,0],[4,0,0,1,0],[5,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0]],"flatten":[[0,0,0,2,0],[1,0,1,1,0],[2,0,0,1,0],[3,0,0,1,0],[4,0,0,3,0],[5,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[50,0,0,0,1],[53,0,0,1,0],[103,0,0,2,0]],"into":[[0,0,0,2,0],[1,0,0,2,0],[2,0,0,1,0],[3,0,0,1,0],[4,0,0,3,0],[5,0,0,1,1],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[16,0,0,0,1],[19,0,0,1,0],[22,1,1,0,0],[23,1,1,0,0],[24,1,2,0,0],[25,1,1,0,0],[26,1,1,0,0],[27,1,1,0,0],[28,1,1,0,0],[29,1,1,0,0],[30,1,1,0,0],[31,1,1,0,0],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,1,2,0],[36,0,0,1,0],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,2,0],[40,0,0,1,0],[41,0,0,1,0],[42,0,0,1,0],[45,0,0,1,0],[50,0,0,1,0],[53,0,0,1,0],[70,0,0,2,0],[72,0,0,1,0],[78,0,0,1,0],[82,0,0,1,0],[83,0,0,1,0],[94,0,0,1,0],[96,0,0,1,0],[102,0,0,3,0],[103,0,0,1,0],[104,0,0,2,0],[105,0,0,1,0],[106,0,0,1,0],[107,0,0,1,0],[113,0,0,1,0]],"agent":[[0,0,0,1,0],[1,0,0,2,0],[2,0,0,1,0],[3,0,0,2,0],[4,0,0,1,0],[5,0,0,1,1],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,2,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,1],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[32,0,0,1,0],[33,0,0,2,0],[50,0,0,1,0],[52,0,0,0,2],[56,0,0,2,3],[61,0,0,1,0],[64,0,0,2,0],[69,0,0,2,1],[82,0,0,1,0],[95,0,0,1,0],[100,0,0,1,0],[101,0,0,1,1],[102,0,0,1,0],[107,0,0,1,0],[115,0,0,1,0]],"readable":[[0,0,0,1,0],[1,0,0,1,0],[2,0,0,1,0],[3,0,0,1,0],[4,0,0,1,0],[5,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[32,0,0,1,0],[50,0,0,1,0],[56,0,0,1,0],[69,0,0,0,1],[102,0,0,1,0]],"markdown":[[0,0,0,2,0],[1,0,0,3,0],[2,0,0,1,0],[3,0,0,2,0],[4,0,0,1,0],[5,0,0,1,1],[6,0,0,2,1],[7,0,0,1,0],[8,0,0,2,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,2,5],[14,0,0,2,0],[24,0,0,1,0],[33,0,0,2,0],[37,0,1,5,4],[38,0,1,0,1],[40,0,0,2,0],[50,0,0,3,0],[51,0,0,2,0],[52,0,0,3,1],[53,0,0,2,0],[54,0,0,2,0],[56,0,0,1,1],[58,0,0,2,0],[60,0,0,1,0],[62,0,0,1,0],[64,0,0,1,0],[68,0,0,1,0],[78,0,0,2,0],[79,0,0,1,0],[80,0,0,2,1],[81,0,0,1,0],[82,0,0,2,0],[83,0,0,1,0],[102,0,0,3,0],[103,0,0,3,1],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,2,0],[107,0,0,1,0],[110,0,0,1,0]],"leadtype":[[0,0,0,1,0],[6,0,0,1,1],[8,0,0,8,4],[12,0,0,1,1],[14,0,0,1,0],[15,0,0,1,0],[16,0,0,0,1],[20,0,0,1,0],[22,0,0,1,0],[23,0,0,0,1],[24,0,0,0,1],[25,0,0,0,1],[26,0,0,0,5],[28,0,0,0,1],[32,0,0,2,0],[33,0,0,2,0],[34,0,0,2,1],[35,0,0,1,2],[36,0,0,1,1],[37,0,0,1,0],[38,0,0,1,1],[39,0,0,1,2],[40,0,0,1,0],[41,0,0,1,0],[42,0,0,3,0],[43,0,0,1,0],[44,0,0,1,1],[45,0,0,1,1],[46,0,0,1,1],[47,0,0,3,2],[48,0,0,1,0],[49,0,0,1,0],[51,0,0,1,0],[54,0,0,1,0],[56,1,1,2,1],[57,1,1,0,0],[58,1,1,1,0],[59,1,1,1,0],[60,0,0,2,0],[61,0,0,3,0],[62,0,1,1,0],[63,0,1,1,0],[64,0,0,4,0],[65,0,0,1,0],[66,0,0,11,0],[67,0,0,1,0],[68,0,0,1,1],[69,0,0,1,0],[70,0,0,1,0],[71,0,0,3,1],[72,0,0,2,1],[73,0,0,2,0],[74,0,0,2,1],[75,0,0,2,1],[76,0,0,2,3],[77,0,0,7,0],[78,0,0,3,1],[79,0,0,1,1],[80,0,0,1,0],[81,0,0,1,0],[82,0,0,1,0],[83,0,0,1,1],[84,0,0,1,1],[88,0,0,0,1],[93,0,0,0,1],[94,0,0,1,0],[95,0,0,1,1],[98,0,0,0,3],[101,0,0,1,1],[102,0,0,0,1],[106,0,0,0,1],[108,0,0,1,0],[110,0,0,0,1],[111,0,0,0,1],[112,0,0,0,1],[113,0,0,0,1],[114,0,0,0,3],[115,0,0,0,1]],"does":[[0,0,0,1,0],[10,0,0,1,0],[35,0,0,1,0],[36,0,0,0,1],[37,0,0,1,0],[63,0,1,0,0],[67,0,0,0,1],[68,0,0,1,0],[97,0,0,0,1],[98,0,0,0,1]],"not":[[0,0,0,1,0],[7,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[43,0,0,1,0],[48,0,0,1,0],[54,0,0,1,0],[56,0,0,1,0],[60,0,0,1,0],[63,0,1,0,0],[74,0,0,1,0],[86,0,0,1,0],[100,0,0,1,0],[104,0,0,1,0],[109,0,0,1,0],[117,0,0,1,0]],"ship":[[0,0,0,1,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,1],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[39,0,0,1,0],[56,0,0,1,0],[57,0,0,1,0],[64,0,0,1,0]],"ui":[[0,0,0,1,0],[14,0,0,1,0],[21,0,0,1,0],[33,0,0,1,0],[39,0,0,1,0],[52,0,0,0,1],[56,0,0,1,1],[61,0,0,1,0],[63,0,0,1,0],[64,0,0,1,0],[99,0,0,1,0],[111,0,0,1,0]],"your":[[0,0,0,1,0],[2,0,0,3,0],[14,0,0,1,0],[19,0,0,1,0],[22,0,0,2,0],[23,0,0,0,1],[26,0,0,1,1],[29,0,0,4,0],[30,0,0,1,0],[32,0,0,2,0],[33,0,0,1,0],[35,0,0,1,0],[37,0,0,1,0],[40,0,0,2,0],[45,0,0,1,0],[49,0,0,1,0],[51,0,0,1,0],[52,0,0,2,0],[53,0,0,1,0],[56,0,0,2,1],[57,0,1,1,0],[58,0,0,1,0],[63,0,0,1,0],[64,0,0,2,0],[67,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[83,0,0,1,0],[93,0,0,1,0],[99,0,0,2,0],[106,0,0,1,0],[108,0,0,1,0],[114,0,0,1,0],[117,0,0,1,0]],"docs":[[0,0,0,1,0],[2,0,0,0,1],[5,0,0,0,1],[6,0,0,2,1],[10,0,0,1,2],[12,0,0,0,1],[14,0,0,1,0],[16,0,0,1,2],[17,0,0,2,1],[18,0,0,1,3],[20,0,0,2,0],[22,1,1,5,0],[23,1,1,1,4],[24,1,1,3,2],[25,1,2,2,0],[26,1,1,3,10],[27,1,1,1,3],[28,1,1,7,0],[29,1,2,5,0],[30,1,1,3,0],[31,1,1,1,0],[32,1,1,2,0],[33,1,1,8,0],[34,1,1,2,2],[35,1,1,2,2],[36,1,1,3,3],[37,1,1,2,4],[38,1,1,1,0],[39,1,1,7,4],[40,1,1,7,0],[41,1,1,1,0],[42,0,0,1,0],[43,0,0,2,0],[44,0,0,0,3],[45,0,0,0,1],[46,0,0,0,1],[47,0,0,0,1],[48,0,0,1,0],[49,0,0,2,0],[50,0,0,0,5],[51,0,0,3,0],[52,0,0,2,1],[53,0,0,3,0],[54,0,0,2,0],[56,0,0,3,2],[57,0,0,2,0],[60,0,0,3,0],[61,0,0,4,0],[63,0,0,1,0],[64,0,0,2,0],[65,0,0,1,0],[66,0,0,1,0],[67,0,0,2,0],[68,0,0,6,1],[69,0,0,2,2],[70,0,0,3,0],[72,0,0,8,0],[73,0,0,0,5],[74,0,0,2,3],[75,0,0,1,0],[79,0,0,1,2],[80,0,0,0,1],[81,0,0,0,2],[83,0,0,1,0],[87,0,0,3,0],[88,0,0,1,1],[90,0,1,0,0],[93,0,0,0,1],[94,0,0,1,0],[95,0,0,1,0],[96,0,0,4,0],[97,0,0,0,10],[98,0,0,1,4],[99,0,0,1,2],[100,0,0,1,0],[101,0,0,0,1],[105,0,0,1,0],[107,0,0,1,0],[108,0,0,1,0],[110,0,0,1,3],[111,0,0,0,2],[112,0,1,0,0],[114,0,0,1,0],[115,0,0,2,0],[117,0,0,2,0]],"app":[[0,0,0,1,0],[2,0,0,1,0],[3,0,0,1,0],[12,0,0,1,1],[14,0,0,1,0],[16,0,0,0,1],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,0,1,0],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,2,0],[40,0,0,1,0],[41,0,0,1,0],[63,0,0,1,0],[64,0,0,1,0]],"owns":[[0,0,0,1,0],[12,0,0,0,2],[25,0,0,1,0],[62,0,1,0,0]],"runtime":[[0,0,0,1,0],[12,0,0,0,2],[14,0,0,1,0],[72,0,0,1,0],[97,0,0,0,1],[108,0,0,2,0],[109,0,0,1,0],[110,0,0,1,0],[111,0,1,2,0],[112,0,1,1,0],[113,0,0,1,0],[114,0,0,2,0],[115,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0]],"rendering":[[0,0,0,1,0],[32,0,0,1,0],[82,0,0,1,0],[106,0,0,1,0]],"styling":[[0,0,0,1,0],[4,0,0,2,0],[12,0,0,0,1],[63,0,0,1,0]],"accessibility":[[0,0,0,1,0]],"only":[[0,0,0,1,0],[10,0,0,1,0],[14,0,0,1,0],[18,0,0,2,0],[25,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[35,0,0,1,0],[53,0,0,1,0],[96,0,0,1,0],[107,0,0,1,0],[113,0,0,1,0],[115,0,0,1,0],[117,0,0,1,0]],"has":[[0,0,0,1,0],[20,0,0,1,0],[53,0,0,1,0]],"honor":[[0,0,0,1,0]],"small":[[0,0,0,1,0],[51,0,0,1,0],[110,0,0,1,0]],"naming":[[0,0,0,1,0],[2,0,1,0,0]],"contract":[[0,0,0,1,0],[2,0,1,1,0],[14,0,0,1,0],[50,0,0,1,0],[55,0,0,1,0],[93,0,0,1,0]],"so":[[0,0,0,1,0],[1,0,0,1,0],[4,0,0,1,0],[7,0,0,1,0],[13,0,0,1,0],[20,0,0,1,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,1],[27,0,0,1,2],[28,0,0,1,0],[29,0,0,2,0],[30,0,0,1,0],[31,0,0,1,0],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,2,1],[36,0,0,1,0],[37,0,0,2,0],[38,0,0,1,0],[39,0,0,3,0],[40,0,0,1,0],[41,0,0,1,0],[42,0,0,2,0],[43,0,0,1,0],[44,0,0,2,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,1,0],[49,0,0,1,0],[51,0,0,1,0],[62,0,0,1,0],[82,0,0,1,0],[83,0,0,1,0],[87,0,0,1,0],[94,0,0,1,0],[98,0,0,1,0],[104,0,0,1,0],[105,0,0,1,0],[109,0,0,2,0],[113,0,0,1,0]],"remark":[[0,0,0,1,0],[2,0,0,2,0],[4,0,0,1,0],[5,0,0,1,0],[9,0,0,1,0],[13,0,0,0,2],[14,0,0,1,0],[26,0,0,0,1],[35,0,0,1,1],[49,0,0,1,0],[50,0,0,3,4],[51,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,2,0],[55,0,0,1,0],[62,0,0,1,0],[66,0,0,1,0],[68,0,0,1,0],[77,0,0,1,0],[78,0,0,1,0],[79,0,0,0,1],[83,0,1,1,1],[87,0,0,1,0],[98,0,0,0,1],[102,1,1,1,1],[103,1,1,0,0],[104,1,1,0,0],[105,1,1,0,0],[106,1,1,0,1],[107,1,1,0,0]],"each":[[0,0,0,1,0],[1,0,0,1,0],[3,0,0,1,0],[17,0,0,2,0],[25,0,0,1,0],[26,0,0,0,1],[51,0,0,2,0],[53,0,0,1,0],[54,0,0,2,0],[57,0,0,1,0],[64,0,0,1,0],[68,0,0,1,0],[75,0,0,1,0],[101,0,0,1,0],[102,0,0,1,0],[104,0,0,1,0],[109,0,0,1,0]],"component":[[0,0,0,1,0],[1,0,0,1,0],[3,0,1,0,0],[4,0,1,0,0],[5,0,1,0,0],[6,0,1,0,0],[7,0,1,0,0],[8,0,1,0,0],[9,0,1,0,0],[10,0,1,0,0],[11,0,1,0,0],[12,0,1,1,0],[13,0,1,0,0],[14,0,0,1,0],[19,0,0,1,0],[35,0,0,0,1],[50,0,0,1,0],[53,0,0,1,0],[63,0,0,2,0],[83,0,0,1,0],[99,0,0,1,0],[102,0,0,1,0],[104,0,0,3,0]],"agents":[[0,0,0,1,0],[1,0,0,1,0],[4,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[9,0,0,1,0],[13,0,0,0,2],[22,0,0,2,0],[23,0,0,1,1],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,1,3,0],[30,0,0,3,0],[31,0,0,1,0],[32,0,0,1,0],[33,0,0,2,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,0,1,0],[37,0,1,3,0],[38,0,1,1,0],[39,0,0,1,0],[40,0,0,1,0],[41,0,0,1,0],[51,0,0,1,0],[52,0,0,1,1],[56,0,0,1,1],[57,0,0,1,0],[58,0,0,2,0],[59,0,0,1,0],[62,0,0,1,0],[69,0,0,0,1],[95,0,0,1,0],[96,0,0,2,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,3,0],[101,0,0,1,0]],"search":[[0,0,0,1,0],[1,0,0,1,0],[5,0,0,1,0],[13,0,0,0,1],[19,0,0,2,0],[21,0,0,1,0],[23,0,0,0,1],[24,0,0,1,0],[28,0,0,2,0],[32,0,0,2,0],[33,0,0,7,0],[34,0,0,2,0],[35,0,0,2,3],[36,0,0,1,0],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,2,0],[40,0,0,3,0],[41,0,0,2,0],[50,0,0,1,2],[51,0,0,3,0],[52,0,0,1,5],[53,0,0,1,0],[54,0,0,1,0],[56,0,0,3,6],[57,0,0,1,0],[58,0,0,2,0],[59,0,0,1,0],[60,0,0,1,0],[61,0,0,1,0],[62,0,0,1,0],[64,0,0,1,0],[66,0,0,1,0],[68,0,0,3,0],[69,0,0,1,2],[72,0,0,1,0],[73,0,0,0,3],[77,0,0,1,0],[108,1,1,2,0],[109,1,1,5,0],[110,1,1,2,3],[111,1,2,2,3],[112,1,1,2,1],[113,1,1,1,1],[114,1,1,1,3],[115,1,1,1,1],[116,1,1,1,0],[117,1,1,2,0]],"llms":[[0,0,0,1,0],[9,0,0,1,0],[13,0,0,0,2],[16,0,0,3,0],[17,0,0,2,5],[18,0,0,1,0],[21,0,0,2,0],[23,0,0,0,2],[24,0,0,1,0],[28,0,0,3,0],[29,0,0,4,0],[33,0,0,2,0],[34,0,0,1,0],[36,0,0,1,0],[40,0,0,2,0],[50,0,0,1,5],[51,0,0,5,0],[53,0,0,3,0],[56,0,0,1,2],[57,0,0,1,0],[58,0,0,3,0],[59,0,0,1,0],[60,0,0,1,0],[62,0,0,1,0],[64,0,0,1,0],[68,0,0,3,0],[69,0,0,1,4],[72,0,0,3,0],[73,0,0,0,3],[74,0,0,1,0],[95,0,0,3,0],[96,0,0,6,0],[97,0,1,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,2,0],[101,0,0,1,0],[106,0,0,1,0]],"full":[[0,0,0,1,0],[16,0,0,1,0],[17,0,0,1,4],[18,0,0,1,0],[19,0,0,2,0],[20,0,0,1,0],[21,0,0,1,0],[23,0,0,0,1],[24,0,0,1,0],[26,0,0,1,0],[28,0,0,2,0],[29,0,0,3,0],[33,0,0,1,0],[35,0,0,1,0],[40,0,0,2,0],[43,0,0,1,0],[50,0,0,1,1],[51,0,0,3,0],[53,0,0,2,0],[56,0,0,0,1],[62,0,0,1,0],[68,0,0,2,0],[69,0,0,0,2],[71,0,0,1,0],[73,0,0,0,1],[75,0,0,1,0],[83,0,0,1,0],[90,0,0,1,0],[95,0,0,3,0],[96,0,0,5,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,2,0],[101,0,0,1,0],[106,0,0,1,0]],"txt":[[0,0,0,1,0],[13,0,0,0,2],[16,0,0,3,0],[17,0,0,2,3],[18,0,0,1,0],[21,0,0,2,0],[23,0,0,0,2],[24,0,0,1,0],[28,0,0,3,0],[29,0,0,4,0],[33,0,0,2,0],[34,0,0,1,0],[36,0,0,1,0],[40,0,0,2,0],[50,0,0,1,2],[51,0,0,4,0],[53,0,0,2,0],[56,0,0,1,2],[57,0,0,1,0],[58,0,0,3,0],[59,0,0,1,0],[60,0,0,1,0],[62,0,0,1,0],[64,0,0,1,0],[68,0,0,3,0],[69,0,0,1,4],[72,0,0,3,0],[73,0,0,0,3],[74,0,0,1,0],[95,0,0,3,0],[96,0,0,6,0],[97,0,1,1,1],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0]],"bundles":[[0,0,0,1,0],[24,0,0,1,0],[31,0,0,1,0],[32,0,0,1,0],[50,0,0,1,0],[51,0,0,2,0],[54,0,0,1,0],[56,0,0,1,0],[58,0,0,1,0],[61,0,0,1,0],[62,0,0,1,0],[64,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[72,0,0,1,0],[74,0,0,1,0],[95,1,1,0,0],[96,1,1,1,0],[97,1,1,0,0],[98,1,1,0,0],[99,1,1,2,0],[100,1,1,0,0],[101,1,1,0,0],[106,0,0,1,0]],"why":[[1,0,1,0,0],[104,0,1,0,0]],"all":[[1,0,1,0,0],[35,0,0,1,0],[51,0,0,1,0],[56,0,0,1,0],[57,0,0,1,0],[58,0,0,2,0],[59,0,0,1,0],[66,0,0,1,0],[69,0,0,0,1],[96,0,0,1,0],[100,0,0,1,0]],"interactive":[[1,0,0,1,0],[13,0,0,1,0],[50,0,0,1,0],[53,0,0,1,0],[102,0,0,1,0]],"like":[[1,0,0,1,0],[4,0,0,1,0],[69,0,0,1,0]],"tabs":[[1,0,0,2,0],[2,0,0,1,0],[7,0,1,0,2],[50,0,0,1,0],[53,0,0,1,0],[58,0,0,1,0],[103,0,0,1,0],[111,0,0,0,1]],"callout":[[1,0,0,2,0],[2,0,0,1,0],[4,0,1,0,2],[11,0,0,2,0],[12,0,0,0,2],[14,0,0,1,0],[50,0,0,1,0],[53,0,0,1,0],[58,0,0,1,0],[103,0,0,1,0]],"render":[[1,0,0,2,0],[3,0,0,1,0],[12,0,0,0,1],[13,0,0,1,0],[37,0,0,1,0],[40,0,0,1,0],[44,0,0,1,0],[52,0,0,0,1],[54,0,0,1,0],[80,0,0,1,0]],"fine":[[1,0,0,1,0],[35,0,0,1,0],[116,0,0,1,0]],"browser":[[1,0,0,1,0],[40,0,0,1,0],[52,0,0,0,1]],"but":[[1,0,0,1,0],[4,0,0,2,0],[16,0,0,1,0],[61,0,0,1,0],[64,0,0,1,0],[99,0,0,1,0]],"do":[[1,0,0,1,0],[4,0,0,1,0],[7,0,0,1,0],[113,0,0,0,1]],"nothing":[[1,0,0,1,0],[48,0,0,1,0]],"reading":[[1,0,0,1,0],[52,0,0,1,0],[54,0,0,1,0],[112,0,1,0,0]],"raw":[[1,0,0,1,0]],"text":[[1,0,0,1,0],[13,0,0,1,0],[16,0,0,1,0],[29,0,0,1,0],[33,0,0,3,0],[37,0,0,5,5],[40,0,0,3,0],[52,0,0,1,1],[53,0,0,1,0],[64,0,0,1,0],[72,0,0,3,0],[100,0,0,1,0],[109,0,0,1,0],[114,0,0,1,0],[116,0,0,1,0]],"flattening":[[1,0,0,1,0],[2,0,0,1,0],[9,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[83,0,0,1,0],[87,0,0,1,0]],"converts":[[1,0,0,1,0],[34,0,0,1,0],[58,0,0,1,0]],"portable":[[1,0,0,1,0],[53,0,0,1,0],[61,0,0,1,0]],"equivalent":[[1,0,0,1,0],[7,0,0,1,0],[10,0,0,1,0],[53,0,0,1,0],[75,0,0,1,0],[102,0,0,1,0]],"conversion":[[1,0,0,1,0],[6,0,0,1,1],[9,0,0,1,0],[11,0,0,1,0],[12,0,0,0,1],[16,0,0,1,0],[35,0,0,0,1],[56,0,0,1,0],[62,0,0,1,0],[64,0,0,1,0],[72,0,0,1,0],[78,0,0,1,0],[79,0,0,1,0],[80,0,0,1,0],[81,0,0,1,0],[82,0,0,2,0],[83,0,0,1,0],[97,0,0,0,1],[98,0,0,1,0],[106,0,0,2,0],[110,0,0,1,0]],"time":[[1,0,0,1,0],[11,0,0,1,0],[22,0,0,1,0],[35,0,0,0,1],[39,0,0,1,0],[54,0,0,1,0],[94,0,0,1,0],[106,0,0,2,0],[108,0,0,1,0],[110,0,1,0,0]],"becomes":[[1,0,0,4,0],[15,0,0,1,0],[16,0,0,2,0],[17,0,0,1,0],[18,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[50,0,0,3,0],[117,0,0,1,0]],"blockquote":[[1,0,0,1,0],[4,0,0,1,0],[50,0,0,1,0],[53,0,0,1,0],[103,0,0,1,0]],"stack":[[1,0,0,1,0],[50,0,0,2,1],[53,0,0,1,0],[54,0,0,1,0],[62,0,0,1,0],[68,0,0,1,0],[78,0,0,1,0],[83,0,0,2,0],[87,0,0,1,0],[102,0,0,2,0],[103,0,1,2,0],[104,0,0,1,0],[105,0,0,2,0],[106,0,0,1,0],[107,0,0,1,0]],"bold":[[1,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[50,0,0,1,0],[53,0,0,1,0],[103,0,0,1,0]],"headings":[[1,0,0,1,0],[7,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[53,0,0,3,0],[96,0,0,1,0],[109,0,0,1,0]],"one":[[1,0,0,1,0],[8,0,0,1,0],[16,0,0,1,0],[21,0,0,3,0],[25,0,0,1,0],[29,0,0,1,0],[32,0,0,1,0],[33,0,0,1,0],[34,0,1,1,0],[35,0,0,3,0],[36,0,0,1,1],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,2,0],[40,0,0,2,0],[41,0,0,1,0],[49,0,0,2,0],[50,0,0,1,0],[51,0,0,2,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,2,0],[55,0,0,1,0],[56,0,0,2,0],[57,0,0,2,0],[58,0,0,1,0],[59,0,0,1,0],[62,0,0,1,0],[64,0,0,1,0],[67,0,1,0,1],[68,0,0,2,0],[72,0,0,1,0],[80,0,0,1,0],[81,0,0,1,0],[96,0,0,2,0],[97,0,0,0,1],[98,0,0,0,1],[100,0,0,1,0],[104,0,0,2,0],[106,0,0,1,0],[114,0,0,2,0]],"per":[[1,0,0,1,0],[8,0,0,2,0],[17,0,0,1,0],[21,0,0,1,0],[35,0,0,1,0],[40,0,0,1,0],[45,0,0,1,0],[56,0,0,0,1],[68,0,0,1,0],[69,0,0,0,1],[78,0,0,1,0],[95,0,0,1,0],[96,0,0,1,0],[103,0,0,1,0],[106,0,0,1,0]],"tab":[[1,0,0,1,0],[2,0,0,1,0],[7,0,0,0,6],[103,0,0,1,0]],"typetable":[[1,0,0,1,0],[2,0,0,1,0],[11,0,1,1,1],[50,0,0,1,0],[58,0,0,1,0],[103,0,0,1,0],[107,0,0,1,0]],"table":[[1,0,0,1,0],[8,0,0,1,0],[11,0,0,1,0],[50,0,0,1,0],[103,0,0,2,0],[106,0,0,1,0]],"mermaid":[[1,0,0,2,0],[2,0,0,1,0],[13,0,1,1,2],[17,0,0,0,1],[23,0,0,0,1],[33,0,0,1,0],[50,0,0,0,1],[52,0,0,0,1],[56,0,0,0,1],[58,0,0,1,0],[82,0,0,1,0],[103,0,0,2,1]],"fenced":[[1,0,0,1,0],[13,0,0,1,0],[103,0,0,2,0]],"block":[[1,0,0,1,0],[13,0,0,1,0],[15,0,0,1,0],[103,0,0,2,0]],"diagram":[[1,0,0,1,0],[13,0,0,1,0],[59,0,0,1,0]],"source":[[1,0,0,1,0],[12,0,0,1,1],[13,0,0,1,0],[17,0,0,1,0],[21,0,0,1,0],[24,0,0,1,0],[26,0,0,0,1],[27,0,0,0,1],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,0,1,0],[37,0,0,1,0],[38,0,0,1,0],[39,0,1,3,0],[40,0,0,1,0],[41,0,0,1,0],[42,0,0,1,0],[49,0,0,1,0],[50,0,0,1,0],[51,0,0,2,0],[52,0,0,2,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[56,0,0,1,1],[57,0,0,1,0],[58,0,0,2,0],[59,0,0,1,0],[62,0,0,1,0],[75,0,0,1,0],[82,0,0,1,0],[83,0,0,1,0],[84,0,0,1,0],[95,0,0,1,0],[105,0,0,1,0],[108,0,0,2,0],[109,0,0,1,0],[110,0,0,1,0],[111,0,0,1,0],[112,0,0,1,0],[113,0,1,1,0],[114,0,0,1,0],[115,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0]],"survives":[[1,0,0,1,0]],"other":[[1,0,0,1,0],[13,0,0,1,0],[45,0,1,0,0],[49,0,0,1,0],[51,0,0,1,0],[56,0,0,1,0],[86,0,0,1,0],[94,0,0,1,0]],"tooling":[[1,0,0,1,0],[22,0,0,1,0]],"this":[[1,0,0,1,0],[4,0,0,1,0],[6,0,0,1,1],[21,0,1,0,0],[22,0,0,1,0],[24,0,0,1,0],[30,0,1,2,0],[32,0,0,1,0],[39,0,0,1,0],[48,0,0,1,0],[49,0,0,1,0],[80,0,0,1,0],[84,0,0,1,0],[103,0,0,1,0],[105,0,0,1,0]],"means":[[1,0,0,1,0]],"same":[[1,0,0,1,0],[2,0,0,1,0],[6,0,0,1,0],[17,0,0,1,0],[21,0,0,1,0],[22,0,0,1,0],[37,0,0,3,0],[42,0,0,1,0],[47,0,0,1,0],[51,0,0,1,0],[52,0,0,2,0],[53,0,0,2,0],[58,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[75,0,0,1,0],[87,0,0,1,0],[94,0,0,1,0],[95,0,0,1,0],[99,0,0,2,0],[112,0,0,1,0],[115,0,0,1,0]],"content":[[1,0,0,1,0],[4,0,0,1,1],[6,0,0,1,0],[7,0,0,3,0],[9,0,0,4,0],[28,0,0,1,0],[33,0,0,2,0],[37,0,0,4,1],[40,0,0,3,0],[47,0,0,1,0],[48,0,0,1,0],[50,0,0,0,1],[51,0,0,3,0],[52,0,0,3,1],[53,0,0,1,0],[54,0,0,1,0],[56,0,0,0,1],[58,0,0,2,0],[61,0,0,2,0],[64,0,0,3,0],[68,0,0,3,0],[69,0,0,1,2],[71,0,0,1,0],[73,0,0,0,1],[75,0,0,1,0],[87,0,1,0,0],[89,0,0,0,1],[94,0,0,2,0],[95,0,0,1,0],[96,0,0,1,0],[105,0,0,1,0],[109,0,0,4,0],[110,0,0,1,1],[111,0,0,0,2],[112,0,0,0,2],[113,0,0,0,1],[114,0,0,0,1],[115,0,0,0,1]],"reaches":[[1,0,0,1,0]],"three":[[1,0,0,1,0],[15,0,0,1,0],[35,0,0,1,0],[49,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[52,0,1,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[58,0,0,1,0],[112,0,0,1,0],[114,0,0,1,0]],"audiences":[[1,0,0,1,0],[49,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[52,0,1,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[58,0,0,1,0]],"humans":[[1,0,0,1,0],[6,0,0,1,0],[22,0,0,1,0],[32,0,0,1,0],[33,0,0,2,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,0,1,0],[37,0,0,2,0],[38,0,0,1,0],[39,0,0,1,0],[40,0,0,1,0],[41,0,0,1,0],[52,0,0,1,1],[56,0,0,1,1],[57,0,0,1,0],[58,0,0,1,0],[59,0,0,1,0]],"without":[[1,0,0,1,0],[16,0,0,1,0],[21,0,0,1,0],[22,0,0,1,0],[74,0,0,1,0],[80,0,0,1,0],[82,0,0,1,0],[101,0,0,1,0],[108,0,0,1,0],[109,0,0,1,0]],"you":[[1,0,0,1,0],[2,0,0,1,0],[11,0,0,1,0],[14,0,0,1,0],[19,0,0,1,0],[21,0,1,1,0],[22,0,0,1,0],[26,0,0,1,0],[32,0,0,1,0],[35,0,0,2,0],[40,0,0,2,0],[46,0,0,1,0],[53,0,0,1,0],[56,0,0,1,0],[57,0,0,1,0],[58,0,1,0,0],[61,0,0,3,0],[64,0,0,2,0],[66,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[75,0,0,1,0],[77,0,0,1,0],[78,0,0,1,0],[80,0,0,1,0],[93,0,0,1,0],[100,0,0,1,0],[104,0,0,2,0],[107,0,0,2,0],[109,0,0,1,0],[112,0,0,2,0],[113,0,0,1,0],[115,0,0,1,0]],"maintaining":[[1,0,0,1,0]],"two":[[1,0,0,1,0],[2,0,0,1,0],[29,0,0,1,0],[36,0,0,1,0],[37,0,0,1,0],[53,0,0,1,0],[57,0,0,1,0],[71,0,0,1,0],[100,0,0,1,0],[107,0,0,1,0]],"copies":[[1,0,0,1,0]],"recognizes":[[2,0,0,1,0]],"these":[[2,0,0,1,0],[78,0,0,1,0],[100,0,0,1,0]],"names":[[2,0,0,4,0],[14,0,0,1,0],[49,0,0,1,0],[59,0,0,1,0],[104,0,0,1,0],[117,0,0,1,0]],"if":[[2,0,0,2,0],[14,0,0,1,0],[16,0,0,1,0],[17,0,0,1,0],[21,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,0,1],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[35,0,0,1,0],[37,0,0,0,6],[38,0,0,0,2],[39,0,0,1,0],[40,0,0,2,0],[54,0,0,1,0],[83,0,0,1,0],[99,0,0,0,1],[104,0,0,1,0],[107,0,0,1,0]],"just":[[2,0,0,1,0],[109,0,0,1,0]],"works":[[2,0,0,1,0],[21,0,0,1,0],[34,0,0,1,0],[49,1,1,0,0],[50,1,1,0,0],[51,1,1,0,0],[52,1,1,0,0],[53,1,1,0,0],[54,1,1,0,0],[55,1,1,0,0],[59,0,0,1,0],[97,0,0,0,3],[111,0,0,1,0]],"accordion":[[2,0,0,1,0],[9,0,1,0,2],[103,0,0,1,0]],"accordionitem":[[2,0,0,1,0],[9,0,0,0,2]],"card":[[2,0,0,1,0],[5,0,0,0,1]],"cards":[[2,0,0,1,0],[5,0,1,0,2],[103,0,0,1,0]],"commandtabs":[[2,0,0,1,0],[8,0,1,0,3],[103,0,0,1,0]],"details":[[2,0,0,1,0],[9,0,0,2,1],[103,0,0,1,0]],"example":[[2,0,0,1,0],[3,0,0,1,0],[12,0,1,1,2],[24,0,0,0,1],[26,0,0,0,1],[34,0,0,0,1],[68,0,0,0,1],[74,0,0,0,1],[97,0,1,0,5],[98,0,0,0,2],[99,0,0,0,1],[101,0,0,0,1],[103,0,0,1,0],[104,0,0,1,0],[110,0,0,0,1]],"extractedtypetable":[[2,0,0,1,0],[11,0,1,1,0],[35,0,0,1,1],[103,0,0,1,0],[106,0,0,1,1]],"section":[[2,0,0,1,0],[3,0,0,1,0],[17,0,0,1,0],[21,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[74,0,0,1,0],[92,0,0,1,0],[103,0,0,1,0],[109,0,0,1,0]],"selector":[[2,0,0,1,0]],"step":[[2,0,0,1,0],[6,0,0,1,4],[26,0,0,1,0],[35,0,0,1,0],[54,0,0,1,0]],"steps":[[2,0,0,1,0],[6,0,1,0,2],[44,0,0,0,1],[58,0,0,1,0],[103,0,0,1,0]],"topicswitcher":[[2,0,0,1,0],[10,0,1,0,1],[19,0,0,1,0],[103,0,0,1,0]],"uses":[[2,0,0,1,0],[44,0,0,0,2],[52,0,0,1,0]],"different":[[2,0,0,1,0],[39,0,0,1,0],[43,0,0,1,0]],"have":[[2,0,0,1,0],[30,0,0,1,0],[46,0,0,1,0],[70,0,0,1,0],[112,0,0,1,0]],"options":[[2,0,0,1,0],[71,0,0,0,1],[72,0,0,0,1],[75,0,0,0,1],[106,0,0,1,0],[114,0,0,1,0]],"rename":[[2,0,0,1,0]],"match":[[2,0,0,1,0],[117,0,0,1,0]],"add":[[2,0,0,1,0],[8,0,0,3,1],[12,0,0,1,0],[14,0,0,1,0],[26,0,0,1,0],[35,0,0,1,0],[58,0,0,1,0],[66,0,0,3,0],[67,0,0,1,0],[72,0,0,1,0],[75,0,0,1,0],[93,0,0,1,0],[105,0,0,1,0],[107,0,0,1,0],[117,0,1,1,0]],"custom":[[2,0,0,1,0],[26,0,0,1,0],[75,0,0,1,0],[77,0,0,2,0],[78,0,0,1,0],[88,0,0,3,0],[93,0,1,1,0],[104,0,0,2,0],[107,0,0,1,0]],"plugin":[[2,0,0,1,0],[14,0,0,2,0],[26,0,0,1,0],[35,0,0,2,0],[37,0,0,1,0],[50,0,0,0,1],[53,0,0,1,0],[62,0,0,1,0],[68,0,0,1,0],[77,0,0,1,0],[78,0,0,2,0],[79,0,0,1,0],[83,0,0,1,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,2,0],[105,0,0,1,0],[106,0,0,4,0],[107,0,1,2,0]],"that":[[2,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[20,0,0,1,0],[30,0,0,2,0],[34,0,0,1,0],[36,0,0,1,0],[37,0,0,2,0],[42,0,0,1,0],[43,0,0,2,0],[45,0,0,1,0],[53,0,0,3,0],[54,0,0,1,0],[56,0,0,1,0],[57,0,0,2,0],[64,0,0,1,0],[69,0,0,1,0],[74,0,0,1,0],[87,0,0,1,0],[89,0,0,1,0],[93,0,0,1,0],[97,0,0,0,2],[98,0,0,0,1],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,1,0],[107,0,0,1,0],[108,0,0,1,0],[114,0,0,1,0],[117,0,0,1,0]],"maps":[[2,0,0,1,0]],"back":[[2,0,0,1,0],[29,0,0,1,0],[37,0,0,1,0],[40,0,0,1,0],[80,0,0,1,0]],"above":[[2,0,0,1,0],[11,0,0,1,1],[37,0,0,1,0],[61,0,0,1,0]],"tsx":[[2,0,0,0,1],[4,0,0,0,1],[5,0,0,0,1],[6,0,0,0,1],[7,0,0,0,1],[8,0,0,0,1],[9,0,0,0,1],[10,0,0,0,1],[11,0,0,0,1],[12,0,0,0,3],[13,0,0,0,1]],"import":[[2,0,0,0,1],[12,0,0,0,1],[26,0,0,0,5],[35,0,0,0,2],[36,0,0,0,1],[37,0,0,0,1],[74,0,0,0,2],[78,0,0,0,1],[79,0,0,0,1],[83,0,0,0,1],[84,0,0,0,1],[88,0,0,0,1],[93,0,0,0,2],[95,0,0,0,1],[98,0,0,0,3],[99,0,0,2,1],[102,0,0,0,1],[103,0,0,1,0],[106,0,0,0,1],[110,0,0,0,1],[111,0,0,0,3],[112,0,0,0,1],[113,0,0,0,1],[114,0,0,0,3],[115,0,0,0,1]],"mdxcomponents":[[2,0,0,0,2],[12,0,0,0,1]],"const":[[2,0,0,0,1],[26,0,0,0,3],[27,0,0,0,2],[35,0,0,0,4],[37,0,0,0,3],[38,0,0,0,3],[80,0,0,0,1],[88,0,0,0,1],[93,0,0,0,1],[99,0,0,0,2],[101,0,0,0,1],[106,0,0,0,1],[111,0,0,0,1],[112,0,0,0,3],[113,0,0,0,1],[114,0,0,0,1],[115,0,0,0,1]],"reference":[[3,0,1,0,0],[4,0,1,0,0],[5,0,1,0,1],[6,0,1,0,0],[7,0,1,0,0],[8,0,1,0,0],[9,0,1,1,1],[10,0,1,0,0],[11,0,1,0,0],[12,0,1,0,0],[13,0,1,0,0],[17,0,0,0,1],[20,0,0,1,0],[31,0,0,1,0],[41,0,0,2,0],[43,0,0,1,0],[55,0,0,1,0],[75,0,0,1,0],[84,0,0,1,0],[97,0,0,0,2]],"below":[[3,0,0,1,0],[51,0,0,1,0],[88,0,0,1,0]],"shows":[[3,0,0,1,0]],"authored":[[3,0,0,1,0],[13,0,0,1,0],[15,0,0,1,0],[16,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[69,0,0,1,0]],"live":[[3,0,0,1,0],[7,0,0,1,0],[24,0,0,1,0],[29,0,0,1,0],[34,0,0,1,0]],"switch":[[3,0,0,1,0]],"view":[[3,0,0,1,0]],"robot":[[3,0,0,1,0]],"icon":[[3,0,0,1,0],[19,0,0,2,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0]],"header":[[3,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0]],"see":[[3,0,0,1,0],[4,0,0,1,0],[16,0,0,1,0],[20,0,0,1,0],[30,0,0,1,0],[35,0,0,1,0],[36,0,0,1,0],[39,0,0,1,0],[40,0,0,1,0],[43,0,0,1,0],[50,0,0,2,0],[52,0,0,1,0],[53,0,0,1,0],[59,0,0,1,0],[63,0,0,1,0],[67,0,0,1,0],[69,0,0,3,0],[74,0,0,1,0],[75,0,0,1,0],[83,0,0,1,0],[87,0,0,1,0],[94,0,0,1,0]],"flattened":[[3,0,0,1,0],[6,0,0,1,1],[9,0,0,1,0],[50,0,0,2,0],[51,0,0,1,0],[68,0,0,1,0],[69,0,0,1,1],[96,0,0,1,0],[102,0,0,1,0],[103,0,0,1,0]],"side":[[3,0,0,2,0],[13,0,0,1,0],[106,0,0,1,0]],"wraps":[[4,0,0,1,0]],"supporting":[[4,0,0,2,0],[9,0,0,1,1]],"context":[[4,0,0,2,0],[19,0,0,1,0],[24,0,0,1,0],[29,0,0,1,0],[47,0,0,1,0],[51,0,0,1,0],[62,0,0,1,0],[95,0,0,1,0],[96,0,0,3,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0],[112,0,0,1,0],[113,0,0,2,1]],"warnings":[[4,0,0,2,0],[44,0,0,2,1],[46,0,0,0,1],[75,0,0,3,0],[89,0,0,0,1],[93,0,0,1,0]],"tips":[[4,0,0,2,0]],"variants":[[4,0,0,2,0]],"change":[[4,0,0,2,0]],"identically":[[4,0,0,2,0],[64,0,0,1,0]],"info":[[4,0,0,1,1],[11,0,0,1,1]],"heads":[[4,0,0,1,1]],"up":[[4,0,0,1,1],[42,0,0,1,0]],"callouts":[[4,0,0,1,0]],"wrap":[[4,0,0,1,0]],"flattens":[[4,0,0,1,0],[5,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[53,0,0,2,0],[78,0,0,1,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,1,0],[107,0,0,1,0]],"them":[[4,0,0,1,0],[9,0,0,1,1],[19,0,0,1,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,2,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,2,0],[30,0,0,1,0],[31,0,0,1,0],[37,0,0,0,1],[48,0,0,1,0],[83,0,0,1,0],[90,0,0,1,0],[110,0,0,1,0]],"blockquotes":[[4,0,0,1,0]],"still":[[4,0,0,1,0],[9,0,0,1,0],[20,0,0,1,0],[87,0,0,1,0]],"warning":[[4,0,0,2,0],[37,0,0,1,0],[44,0,0,1,0],[75,0,0,1,0]],"don":[[4,0,0,1,0],[19,0,0,1,0],[30,0,0,2,0],[43,0,0,1,0],[56,0,0,1,0],[90,0,0,1,0],[104,0,0,1,0],[107,0,0,1,0],[114,0,0,1,0]],"success":[[4,0,0,1,0],[12,0,0,0,1],[72,0,0,1,0]],"error":[[4,0,0,1,0],[20,0,0,2,0],[27,0,0,0,1],[39,0,0,0,1],[43,0,0,1,0],[44,0,0,1,1],[45,0,0,0,1],[47,0,0,0,1],[48,0,0,1,0],[72,0,0,3,0],[73,0,0,1,0],[75,0,0,2,0],[86,0,0,6,0],[87,0,0,3,0],[88,0,0,1,1],[89,0,0,0,2],[93,0,0,1,0],[99,0,0,0,1],[117,0,0,1,0]],"tip":[[4,0,0,1,0]],"title":[[4,0,0,0,1],[5,0,0,0,1],[6,0,0,0,2],[9,0,0,0,1],[11,0,0,1,1],[12,0,0,0,2],[16,0,0,1,1],[18,0,0,0,3],[19,0,0,1,0],[36,0,0,0,2],[50,0,0,0,1],[67,0,0,1,1],[73,0,0,0,1],[74,0,0,1,0],[82,0,0,1,0],[90,0,0,2,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,0,1]],"variant":[[4,0,0,0,1],[7,0,0,1,0],[11,0,0,1,1],[12,0,0,0,1]],"body":[[4,0,0,0,1],[11,0,0,1,1],[16,0,0,1,0],[50,0,0,0,1],[51,0,0,1,0],[53,0,0,1,0],[103,0,0,1,0],[109,0,0,1,0]],"goes":[[4,0,0,0,1]],"here":[[4,0,0,0,1],[57,0,0,1,0],[59,0,0,1,0],[70,0,0,1,0]],"grid":[[5,0,0,1,0]],"short":[[5,0,0,1,0],[19,0,0,1,0],[34,0,0,0,1],[36,0,0,0,1],[51,0,0,1,0],[61,0,1,0,0]],"linked":[[5,0,0,1,0]],"entry":[[5,0,0,1,0],[16,0,0,1,0],[66,0,0,1,0],[77,0,1,1,0],[78,0,0,1,0],[94,0,0,1,0],[95,0,0,1,0],[96,0,0,1,0],[106,0,0,1,0],[108,0,0,1,0],[114,0,1,0,0]],"points":[[5,0,0,1,0],[20,0,0,1,0],[66,0,0,1,0],[77,0,1,1,0],[87,0,0,1,0],[96,0,0,1,0],[97,0,0,0,1],[108,0,0,1,0],[114,0,1,0,0]],"bullet":[[5,0,0,1,0],[36,0,0,0,2]],"list":[[5,0,0,1,0],[6,0,0,2,1],[25,0,0,1,0],[28,0,0,1,0],[43,0,0,1,0],[75,0,0,1,0],[103,0,0,3,0]],"links":[[5,0,0,1,0],[20,0,0,1,0],[29,0,0,1,0],[43,0,0,2,0],[51,0,0,1,0],[62,0,0,1,0],[72,0,0,1,0],[75,0,0,1,0],[87,0,0,2,0],[96,0,0,2,0],[112,0,0,1,0],[114,0,0,1,0]],"convert":[[5,0,0,1,2],[16,0,0,1,0],[26,0,0,0,1],[32,0,0,1,0],[35,0,0,2,5],[53,0,0,1,0],[54,0,0,1,0],[56,0,0,0,1],[66,0,0,1,0],[68,0,0,1,0],[72,0,0,1,0],[77,0,0,1,0],[78,1,1,2,1],[79,1,1,2,0],[80,1,1,2,0],[81,1,1,2,0],[82,1,1,1,0],[83,1,1,1,0],[98,0,0,0,1]],"description":[[5,0,0,0,1],[11,0,0,1,2],[12,0,0,0,1],[16,0,0,1,1],[19,0,0,1,0],[50,0,0,0,1],[51,0,0,1,0],[53,0,0,1,0],[67,0,0,0,1],[72,0,0,2,0],[75,0,0,1,0],[79,0,0,1,0],[82,0,0,1,0],[88,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0]],"turn":[[5,0,0,0,1]],"friendly":[[5,0,0,0,1]],"href":[[5,0,0,0,1],[10,0,0,0,2]],"numbered":[[6,0,0,1,0]],"walkthroughs":[[6,0,0,1,0]],"ordered":[[6,0,0,1,0],[103,0,0,1,0]],"titles":[[6,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[74,0,0,0,1],[109,0,0,1,0]],"author":[[6,0,0,1,1],[19,0,0,1,0],[36,0,0,1,0],[58,0,0,1,0],[67,0,1,0,0],[90,0,0,1,0]],"authoring":[[6,0,0,1,0],[17,0,0,0,3]],"affordances":[[6,0,0,1,0]],"run":[[6,0,0,1,1],[8,0,0,2,1],[22,0,0,1,0],[26,0,0,3,0],[28,0,0,1,1],[32,0,0,1,0],[34,0,1,0,0],[35,0,0,0,7],[39,0,0,1,1],[42,0,0,1,0],[43,0,0,1,0],[44,0,0,1,2],[45,0,0,1,0],[46,0,0,1,0],[47,0,1,2,0],[48,0,0,1,0],[51,0,0,1,0],[54,0,0,1,0],[58,0,0,1,0],[64,0,0,1,0],[65,0,0,1,0],[66,0,0,1,0],[67,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[71,0,0,1,0],[72,0,0,1,0],[74,0,0,1,0],[84,0,0,1,0],[94,0,0,2,0],[97,0,0,0,1],[98,0,0,1,0],[100,0,0,1,0],[104,0,0,2,0],[113,0,0,0,1]],"generate":[[6,0,0,1,1],[23,0,0,0,1],[24,0,1,0,1],[25,0,0,0,1],[26,0,0,1,2],[28,0,0,0,1],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,1],[35,0,0,0,2],[39,0,0,1,1],[42,0,0,1,0],[47,0,1,2,1],[51,0,0,1,0],[54,0,0,2,0],[56,0,0,0,1],[58,0,0,1,0],[68,0,1,1,1],[71,0,0,2,0],[72,0,1,1,1],[73,0,1,1,0],[74,0,1,1,0],[75,0,0,1,0],[76,0,0,1,1],[77,0,0,1,0],[78,0,0,1,0],[94,0,0,1,0],[95,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0],[110,0,0,1,0]],"writes":[[6,0,0,1,1],[24,0,0,1,0],[39,0,0,1,0],[68,0,0,3,0],[72,0,0,1,0],[110,0,0,1,0],[115,0,0,1,0]],"public":[[6,0,0,1,0],[7,0,0,1,0],[30,0,0,1,0],[33,0,0,1,0],[34,0,0,0,1],[35,0,0,0,1],[39,0,0,0,1],[40,0,0,5,0],[47,0,0,0,1],[50,0,0,0,5],[51,0,0,1,0],[52,0,0,0,1],[54,0,0,1,0],[64,0,0,1,0],[68,0,0,5,1],[69,0,0,2,1],[72,0,0,1,0],[73,0,0,0,6],[74,0,0,0,1],[79,0,0,0,1],[81,0,0,0,1],[89,0,0,1,0],[98,0,0,0,3],[110,0,0,0,1],[111,0,0,0,2]],"serve":[[6,0,0,1,0],[7,0,0,1,0],[37,0,1,2,1],[38,0,1,0,0],[58,0,0,1,0]],"both":[[6,0,0,1,0],[47,0,0,1,0],[68,0,0,1,0],[95,0,0,1,0]],"formats":[[6,0,0,1,0],[37,0,0,1,0],[53,0,0,1,0]],"html":[[6,0,0,1,0],[33,0,0,2,0],[37,0,0,2,2],[40,0,0,1,0],[52,0,0,1,1]],"md":[[6,0,0,1,0],[7,0,0,2,0],[14,0,0,1,0],[23,0,0,0,1],[26,0,0,0,1],[28,0,0,1,0],[29,0,0,1,0],[33,0,0,1,0],[37,0,0,4,3],[40,0,0,1,0],[50,0,0,0,5],[51,0,0,2,0],[53,0,0,1,0],[54,0,0,1,0],[56,0,0,0,5],[68,0,0,1,0],[69,0,0,1,1],[79,0,0,1,0],[81,0,0,0,1],[82,0,0,1,0],[88,0,0,1,0],[106,0,0,1,0],[107,0,0,1,0]],"url":[[6,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[24,0,0,0,1],[26,0,0,1,1],[29,0,0,1,0],[34,0,0,0,1],[35,0,0,1,0],[37,0,0,2,5],[38,0,0,0,3],[53,0,0,1,0],[68,0,0,0,1],[72,0,0,3,0],[77,0,0,1,0],[87,0,0,1,0],[90,0,0,1,0],[94,0,0,1,0],[101,0,1,2,3]],"negotiated":[[6,0,0,1,0],[64,0,0,1,0]],"accept":[[6,0,0,1,0],[7,0,0,1,0],[33,0,0,2,0],[37,0,0,1,5],[38,0,0,0,5],[40,0,0,1,0],[52,0,0,1,1],[53,0,0,1,0]],"group":[[7,0,0,1,0],[15,0,0,1,0],[16,0,0,4,1],[17,0,0,5,4],[18,0,0,2,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,3,0],[27,0,0,0,1],[29,0,0,2,0],[36,0,0,1,0],[40,0,0,2,0],[50,0,0,0,3],[51,0,0,3,0],[53,0,0,3,0],[54,0,0,2,0],[56,0,0,0,1],[58,0,0,1,0],[67,0,0,1,1],[68,0,0,3,0],[69,0,0,0,1],[72,0,0,1,0],[74,0,1,1,0],[90,0,0,1,0],[95,0,0,1,0],[96,0,0,2,0],[99,0,0,2,1],[100,0,0,1,0]],"followed":[[7,0,0,1,0]],"need":[[7,0,0,1,0],[26,0,0,1,0],[49,0,0,1,0],[56,0,0,1,0],[66,0,0,1,0],[75,0,0,1,0],[77,0,0,1,0],[78,0,0,1,0],[104,0,0,1,0],[112,0,0,1,0]],"jsx":[[7,0,0,1,0],[50,0,0,1,0],[103,0,0,1,0],[106,0,0,1,0]],"aware":[[7,0,0,1,0],[8,0,0,1,0],[53,0,0,1,0],[109,0,0,1,0]],"renderer":[[7,0,0,1,0]],"read":[[7,0,0,1,0],[10,0,0,1,0],[14,0,0,1,0],[22,0,0,2,0],[23,0,0,1,1],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,1],[27,0,0,1,1],[28,0,0,1,0],[29,0,0,3,0],[30,0,0,1,0],[31,0,0,1,0],[36,0,0,1,0],[39,0,0,1,0],[52,0,0,1,0],[59,0,0,2,0],[100,0,0,1,0],[104,0,0,1,0],[107,0,0,1,0],[109,0,0,1,0],[115,0,0,1,0],[116,0,0,1,0]],"every":[[7,0,0,1,0],[9,0,0,1,0],[15,0,0,1,0],[22,0,0,1,0],[36,0,0,1,0],[37,0,0,1,0],[40,0,0,1,0],[49,0,0,2,0],[51,0,0,2,0],[54,0,0,2,0],[56,0,0,1,0],[59,0,0,1,0],[64,0,0,1,0],[67,0,0,1,0],[68,0,0,1,0],[74,0,0,1,0],[77,0,0,1,0],[86,0,0,1,0],[96,0,0,1,0],[97,0,0,0,1],[110,0,0,1,0]],"tanstack":[[7,0,0,1,2],[32,0,0,1,0],[56,0,0,1,0],[114,0,0,1,2],[115,0,0,1,0]],"start":[[7,0,0,1,2],[32,0,0,1,0],[40,0,0,1,0],[56,0,0,1,0],[117,0,0,2,0]],"vite":[[7,0,0,2,2],[33,0,0,6,0],[35,0,0,1,1],[37,0,0,1,1],[53,0,0,1,0]],"middleware":[[7,0,0,4,0],[37,0,0,3,0],[38,0,0,0,3],[40,0,0,1,0],[53,0,0,2,0]],"dev":[[7,0,0,1,0],[35,0,0,1,0],[40,0,0,1,0]],"preview":[[7,0,0,1,0],[12,0,0,1,1]],"nitro":[[7,0,0,1,0]],"prod":[[7,0,0,1,0]],"negotiate":[[7,0,0,1,0]],"next":[[7,0,0,1,2],[31,0,1,0,0],[32,0,0,1,0],[35,0,0,1,0],[37,0,0,1,0],[38,0,0,0,3],[39,0,0,1,0],[41,0,1,0,0],[53,0,0,1,0],[55,0,1,0,0],[56,0,0,1,0],[59,0,1,0,0],[64,0,0,1,0],[70,0,1,0,0]],"js":[[7,0,0,1,2],[32,0,0,1,0],[37,0,0,1,0],[53,0,0,1,0],[56,0,0,1,0]],"wire":[[7,0,0,1,0],[16,0,0,0,1],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,1,1,0],[36,0,0,1,0],[37,0,0,2,0],[38,0,0,1,0],[39,0,0,1,0],[40,0,0,1,0],[41,0,0,1,0],[42,0,0,1,0],[70,0,0,1,0]],"negotiation":[[7,0,0,1,0],[33,0,0,1,0],[37,0,0,1,0],[38,0,0,0,1],[40,0,0,1,0],[51,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[58,0,0,1,0]],"ts":[[7,0,0,1,0],[16,0,0,1,0],[17,0,0,2,1],[18,0,0,0,1],[26,0,0,1,2],[35,0,0,0,5],[36,0,0,1,1],[37,0,0,1,1],[74,0,0,2,1],[78,0,0,0,1],[79,0,0,0,1],[80,0,0,0,1],[81,0,0,0,1],[83,0,0,0,1],[84,0,0,0,1],[88,0,0,0,1],[89,0,0,0,1],[93,0,0,0,1],[95,0,0,0,1],[98,0,0,0,1],[99,0,0,0,2],[100,0,0,1,0],[101,0,0,0,1],[102,0,0,0,1],[105,0,0,0,1],[106,0,0,0,2],[110,0,0,0,1],[111,0,0,0,1],[112,0,0,0,1],[113,0,0,0,1],[114,0,0,0,2],[115,0,0,0,1]],"route":[[7,0,0,1,0],[20,0,0,1,0],[37,0,0,1,0],[87,0,0,1,0]],"handler":[[7,0,0,1,0],[37,0,0,1,0]],"configureserver":[[7,0,0,1,0],[38,0,0,0,1]],"enough":[[7,0,0,1,0]],"static":[[7,0,0,1,0],[37,0,0,2,0],[56,0,0,1,0],[58,0,0,1,0],[62,0,0,1,0],[99,0,0,1,0],[108,0,0,2,0],[109,0,0,1,0],[110,0,0,1,0],[111,0,0,1,0],[112,0,0,1,0],[113,0,0,1,0],[114,0,0,1,0],[115,0,0,1,0],[116,0,0,1,0],[117,0,0,2,0]],"deployments":[[7,0,0,1,0]],"files":[[7,0,0,1,0],[14,0,0,1,0],[17,0,0,1,0],[22,0,0,1,0],[23,0,0,0,1],[26,0,0,1,1],[28,0,0,1,0],[29,0,0,2,0],[35,0,0,0,1],[37,0,0,2,0],[46,0,0,1,0],[51,0,0,1,0],[73,0,0,0,1],[79,0,0,1,0],[88,0,0,1,0],[95,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0]],"items":[[7,0,0,0,1],[10,0,0,0,1]],"value":[[7,0,0,0,3],[10,0,0,0,2],[21,0,0,1,0],[37,0,0,0,6],[38,0,0,0,4]],"package":[[8,0,0,4,0],[18,0,0,1,2],[22,1,1,1,0],[23,1,1,0,0],[24,1,2,1,4],[25,1,2,2,0],[26,1,1,0,6],[27,1,1,0,4],[28,1,1,1,1],[29,1,1,3,0],[30,1,1,1,0],[31,1,1,0,0],[39,0,0,3,4],[52,0,0,1,0],[56,0,0,0,1],[57,0,0,1,0],[66,0,0,1,0],[70,0,0,1,0],[72,0,0,2,0],[101,0,0,2,0]],"manager":[[8,0,0,5,0],[66,0,0,1,0]],"install":[[8,0,0,3,2],[22,0,0,1,0],[23,0,0,0,4],[29,0,0,1,0],[44,0,0,0,1],[52,0,0,1,0],[65,0,0,1,0],[66,0,1,2,0],[67,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[97,0,0,0,1],[100,0,0,1,0],[111,0,0,0,1]],"commands":[[8,0,0,3,1],[71,0,0,1,0],[115,0,0,2,0]],"row":[[8,0,0,1,0],[11,0,0,1,0],[106,0,0,1,0]],"mode":[[8,0,0,3,2],[44,0,0,1,0],[73,0,0,1,0],[92,0,0,1,0]],"command":[[8,0,0,4,2],[34,0,0,1,0],[54,0,0,1,0],[58,0,0,1,0],[62,0,0,1,0],[66,0,0,1,0],[71,0,0,1,1],[77,0,0,1,0]],"name":[[8,0,0,2,0],[19,0,0,1,0],[23,0,0,0,4],[24,0,0,0,1],[25,0,0,0,1],[27,0,0,0,2],[34,0,0,0,1],[36,0,0,0,1],[37,0,0,0,5],[38,0,0,0,3],[44,0,0,0,1],[72,0,0,4,0],[73,0,0,0,1],[98,0,0,0,2],[106,0,0,1,1]],"cli":[[8,0,0,1,0],[19,0,0,1,0],[22,0,0,1,0],[23,0,0,0,3],[30,0,0,1,0],[31,0,0,1,0],[33,0,0,4,0],[35,0,0,1,0],[41,0,0,1,0],[46,0,0,1,0],[55,0,0,1,0],[62,0,0,1,0],[66,0,0,1,0],[68,0,0,1,0],[71,1,1,0,0],[72,1,1,1,0],[73,1,1,0,0],[74,1,1,1,0],[75,1,1,1,0],[76,1,1,0,0],[77,1,1,2,0],[78,0,0,1,0],[84,0,0,3,0],[85,0,0,1,0],[86,0,0,1,0],[87,0,0,1,0],[88,0,0,1,0],[89,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0],[94,0,0,1,0],[97,0,0,0,3]],"create":[[8,0,0,1,0],[67,0,0,1,0]],"starter":[[8,0,0,1,0]],"prop":[[8,0,0,1,0],[11,0,0,1,0]],"exact":[[8,0,0,1,0],[50,0,0,1,0],[52,0,0,1,0],[117,0,0,2,0]],"overrides":[[8,0,0,1,0],[75,0,0,2,0]],"npm":[[8,0,0,3,2],[22,0,0,2,0],[23,0,0,1,2],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,2,1],[29,0,0,2,0],[30,0,0,1,0],[31,0,0,1,0],[39,0,0,1,1],[52,0,0,1,0],[56,0,0,0,1],[66,0,0,2,0]],"pnpm":[[8,0,0,4,3],[66,0,0,2,0]],"yarn":[[8,0,0,4,0],[66,0,0,2,0]],"bun":[[8,0,0,3,0],[26,0,0,1,0],[35,0,0,0,7],[44,0,0,0,2],[66,0,0,2,0]],"npx":[[8,0,0,1,0],[24,0,0,0,1],[25,0,0,0,1],[26,0,0,0,1],[28,0,0,0,1],[34,0,0,0,1],[39,0,0,0,2],[44,0,0,0,1],[45,0,0,0,1],[46,0,0,0,1],[47,0,0,0,2],[68,0,0,0,1]],"lint":[[8,0,0,4,1],[15,0,0,1,0],[19,0,0,1,0],[20,0,1,2,0],[21,0,0,1,0],[31,0,0,1,0],[36,0,0,1,0],[39,0,0,1,1],[41,0,0,1,0],[42,0,0,2,0],[43,0,0,2,0],[44,0,0,1,3],[45,0,0,1,2],[46,0,0,2,1],[47,0,0,4,1],[48,0,0,1,0],[56,0,0,0,1],[62,0,0,1,0],[66,0,0,1,0],[71,0,0,2,0],[72,0,0,1,0],[73,0,0,1,0],[74,0,0,1,0],[75,0,1,3,1],[76,0,0,1,1],[77,0,0,2,0],[84,1,1,1,1],[85,1,1,0,0],[86,1,1,0,0],[87,1,1,0,0],[88,1,1,0,1],[89,1,1,0,0],[90,1,1,0,0],[91,1,1,0,0],[92,1,1,0,0],[93,1,1,0,1],[94,1,1,3,0],[113,0,0,0,1]],"dlx":[[8,0,0,2,0]],"bunx":[[8,0,0,1,0]],"defaultmanager":[[8,0,0,0,1]],"collapsible":[[9,0,0,1,0]],"secondary":[[9,0,0,1,0]],"ignores":[[9,0,0,2,0]],"open":[[9,0,0,2,0],[29,0,0,2,0],[69,0,0,2,0],[103,0,0,1,0]],"closed":[[9,0,0,3,0],[103,0,0,1,0]],"state":[[9,0,0,2,0],[82,0,0,1,0],[103,0,0,1,0]],"emits":[[9,0,0,2,0],[106,0,0,1,0]],"item":[[9,0,0,1,0]],"accordions":[[9,0,0,3,1]],"place":[[9,0,0,2,0],[56,0,0,1,0],[58,0,0,1,0],[67,0,0,1,0],[83,0,0,1,0],[105,0,0,1,0]],"hide":[[9,0,0,2,0]],"should":[[9,0,0,1,1],[25,0,0,1,0],[28,0,0,1,0],[30,0,0,1,0],[39,0,0,1,0],[40,0,0,2,0],[116,0,0,1,0]],"troubleshooting":[[9,0,0,1,0]],"notes":[[9,0,0,1,0],[82,0,1,0,0]],"optional":[[9,0,0,1,1],[11,0,0,2,0],[16,0,0,2,0],[19,0,1,10,0],[35,0,0,1,0],[51,0,0,4,0],[52,0,0,1,0],[53,0,0,5,0],[62,0,0,1,0],[105,0,1,0,0],[106,0,1,0,0]],"material":[[9,0,0,1,1]],"good":[[9,0,0,1,0]],"no":[[9,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[37,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[75,0,0,1,0],[82,0,0,1,0],[90,0,0,12,0],[91,0,0,7,0],[92,0,0,7,0],[96,0,0,1,0],[106,0,0,2,0],[111,0,0,1,0]],"everything":[[9,0,0,1,0]],"inside":[[9,0,0,1,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[39,0,0,1,0],[96,0,0,1,0]],"navigation":[[10,0,0,1,0],[15,0,0,1,0],[16,0,0,1,0],[17,0,0,1,1],[18,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[26,0,0,1,0],[27,0,0,0,3],[32,0,0,1,0],[34,0,0,1,0],[36,0,0,1,0],[42,0,0,1,0],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,1,0],[50,0,0,0,1],[51,0,0,1,0],[54,0,0,1,0],[56,0,0,1,1],[58,0,0,2,0],[60,0,0,1,0],[62,0,0,1,0],[84,0,0,1,0],[85,0,0,1,0],[86,0,0,1,0],[87,0,0,1,0],[88,0,0,1,0],[89,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0],[94,0,0,1,0],[99,0,0,1,4]],"across":[[10,0,0,1,0],[61,0,0,1,0],[64,0,0,2,0],[74,0,0,1,0]],"topics":[[10,0,0,1,0]],"frameworks":[[10,0,0,1,2],[25,0,0,0,1],[56,0,0,1,0]],"sdks":[[10,0,0,1,0]],"runtimes":[[10,0,0,1,0]],"deployment":[[10,0,0,1,0],[61,0,0,1,0],[63,0,0,1,0],[101,0,0,1,0]],"targets":[[10,0,0,1,0]],"product":[[10,0,0,1,0],[27,0,0,0,4],[34,0,0,0,1],[36,0,1,0,2],[72,0,0,2,0],[73,0,0,0,1],[74,0,0,0,2],[96,0,0,1,0],[98,0,0,0,2]],"areas":[[10,0,0,1,0]],"reader":[[10,0,0,1,0]],"facing":[[10,0,0,1,0],[56,0,0,1,0],[95,0,0,1,0],[107,0,0,1,0]],"automatically":[[10,0,0,1,0],[19,0,0,1,0]],"llm":[[10,0,0,1,0],[26,0,0,0,1],[31,0,0,1,0],[35,0,0,0,3],[51,0,0,1,0],[54,0,0,1,0],[56,0,0,0,4],[66,0,0,1,0],[68,0,0,1,0],[72,0,0,1,0],[74,0,0,1,1],[77,0,0,1,0],[95,1,1,1,1],[96,1,1,0,0],[97,1,1,0,0],[98,1,1,0,1],[99,1,1,2,0],[100,1,1,0,0],[101,1,1,0,0],[107,0,0,1,0]],"topic":[[10,0,0,1,0],[29,0,0,1,0],[51,0,0,1,0],[58,0,0,1,0],[62,0,0,1,0],[95,0,0,1,0],[96,0,0,2,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,1,1,0],[101,0,0,1,0]],"config":[[10,0,0,1,0],[16,0,0,1,0],[17,0,0,2,1],[18,0,0,1,0],[26,0,0,0,1],[27,0,0,0,1],[36,0,0,2,0],[40,0,0,1,0],[48,0,0,1,0],[74,0,0,2,1],[100,0,0,1,0],[117,0,0,1,0]],"framework":[[10,0,0,1,1],[19,0,0,2,0],[20,0,0,4,0],[21,0,0,1,0],[32,0,0,1,0],[43,0,0,5,0],[48,0,0,1,0],[53,0,0,1,0],[56,0,0,1,0],[60,0,0,1,0],[61,0,0,3,0],[64,0,0,2,0],[87,0,0,4,0],[89,0,0,0,1],[90,0,0,1,0],[103,0,0,1,0]],"react":[[10,0,0,2,4],[25,0,0,0,3],[61,0,0,1,0]],"integration":[[10,0,0,3,0]],"vue":[[10,0,0,2,3]],"svelte":[[10,0,0,2,0]],"label":[[10,0,0,0,3],[92,0,0,1,0]],"activevalue":[[10,0,0,0,1]],"explicit":[[11,0,0,1,0],[25,0,0,1,0],[114,0,0,1,0]],"type":[[11,0,0,3,2],[19,0,0,1,0],[20,0,0,1,0],[35,0,0,0,1],[37,0,0,3,2],[40,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[86,0,0,1,0],[89,0,0,0,1],[90,0,0,1,0],[91,0,0,2,0],[92,0,0,1,0],[97,0,0,0,1],[106,0,0,2,0],[111,0,0,0,2]],"rows":[[11,0,0,1,0]],"already":[[11,0,0,1,0],[112,0,0,1,0]],"know":[[11,0,0,1,0]],"reads":[[11,0,0,1,0],[15,0,0,1,0],[35,0,0,0,1],[42,0,0,1,0],[68,0,0,1,0],[98,0,0,1,0],[106,0,0,2,0],[110,0,0,1,0]],"typescript":[[11,0,0,1,0],[35,0,0,0,1],[77,0,0,1,0],[106,0,0,2,0]],"file":[[11,0,0,1,0],[12,0,0,1,0],[15,0,0,1,0],[18,0,0,1,0],[45,0,0,1,0],[47,0,0,1,0],[51,0,0,1,0],[53,0,0,2,0],[54,0,0,1,0],[68,0,0,2,0],[78,0,0,1,0],[80,0,0,1,0],[81,0,0,1,0],[89,0,0,0,1],[96,0,0,3,0],[100,0,0,1,0],[106,0,0,4,0]],"extracts":[[11,0,0,1,0]],"named":[[11,0,0,1,0],[102,0,0,1,0],[106,0,0,1,0],[112,0,0,1,0]],"keep":[[11,0,0,1,0],[14,0,0,2,0],[46,0,0,1,0],[93,0,0,1,0],[117,0,0,1,0]],"its":[[11,0,0,1,0],[39,0,0,1,0],[53,0,0,1,0],[64,0,0,1,0],[107,0,0,1,0]],"path":[[11,0,0,1,0],[22,0,0,1,0],[32,0,0,1,0],[51,0,0,1,0],[57,0,1,0,0],[73,0,0,0,8],[77,0,0,1,0],[97,0,0,0,1],[106,0,0,2,1],[116,0,0,1,0]],"stable":[[11,0,0,1,0],[14,0,0,1,0],[19,0,0,1,0]],"property":[[11,0,0,1,0],[19,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[106,0,0,1,0]],"default":[[11,0,0,1,1],[19,0,0,2,0],[20,0,0,1,0],[36,0,0,0,1],[51,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[68,0,0,1,0],[72,0,0,1,0],[75,0,0,2,0],[83,0,0,1,0],[86,0,0,1,0],[87,0,0,1,0],[88,0,0,2,0],[90,0,1,0,0],[91,0,1,0,0],[92,0,1,0,0],[97,0,0,0,1],[101,0,0,1,0],[102,0,0,1,0],[103,0,1,1,0],[104,0,0,1,0],[105,0,0,2,0],[106,0,0,2,0],[107,0,0,1,0]],"required":[[11,0,0,2,1],[15,0,0,1,0],[16,0,0,2,0],[17,0,0,1,0],[18,0,0,1,0],[19,0,0,2,0],[20,0,0,2,0],[21,0,0,1,0],[48,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[86,0,0,1,0],[88,0,0,1,0],[89,0,0,2,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0]],"string":[[11,0,0,1,1],[16,0,0,1,0],[19,0,0,3,0],[37,0,0,0,8],[53,0,0,1,0],[89,0,0,0,3],[90,0,0,7,0],[91,0,0,7,0],[92,0,0,5,0],[93,0,0,0,1]],"heading":[[11,0,0,1,1],[16,0,0,1,0],[53,0,0,1,0],[103,0,0,1,0],[109,0,0,1,0],[111,0,0,1,0],[112,0,0,1,0]],"rendered":[[11,0,0,1,1],[82,0,0,1,0],[106,0,0,1,0]],"calloutvariant":[[11,0,0,1,1]],"visual":[[11,0,0,1,1],[63,0,0,1,0]],"treatment":[[11,0,0,1,1]],"deprecated":[[11,0,0,3,0],[19,0,0,3,0],[90,0,0,1,0]],"boolean":[[11,0,0,1,0],[19,0,0,6,0],[90,0,0,6,0],[91,0,0,2,0],[92,0,0,2,0]],"marks":[[11,0,0,1,0],[19,0,0,2,0]],"false":[[11,0,0,1,0],[80,0,0,0,1]],"properties":[[11,0,0,0,1]],"true":[[11,0,0,0,1],[26,0,0,0,2],[35,0,0,0,1],[79,0,0,1,1],[99,0,0,0,1]],"data":[[12,0,0,2,0],[52,0,0,1,0]],"driven":[[12,0,0,1,0]],"examples":[[12,0,0,1,0]],"host":[[12,0,0,1,1]],"receives":[[12,0,0,1,0]],"code":[[12,0,0,1,1],[39,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[64,0,0,1,0],[103,0,0,1,0],[109,0,0,1,0],[115,0,0,1,0]],"loaders":[[12,0,0,1,0]],"dynamic":[[12,0,0,1,0]],"imports":[[12,0,0,1,0],[50,0,0,0,1],[74,0,0,1,0],[102,0,0,1,0],[104,0,0,1,0]],"outside":[[12,0,0,1,0],[88,0,0,1,0]],"needs":[[12,0,0,1,0],[25,0,0,1,0],[60,0,0,1,0],[67,0,0,1,0],[106,0,0,1,0]],"specific":[[12,0,0,1,0],[25,0,1,0,0],[101,0,0,1,0],[108,0,0,1,0]],"behavior":[[12,0,0,1,0],[16,0,0,1,0],[82,0,1,0,0]],"output":[[12,0,0,0,1],[14,0,0,1,0],[22,0,0,1,0],[26,0,0,0,2],[27,0,0,0,1],[45,0,0,1,0],[51,0,0,1,0],[54,0,0,1,0],[65,0,0,1,0],[69,0,1,0,0],[71,0,0,1,0],[72,0,0,2,0],[73,0,1,1,0],[74,0,0,1,0],[75,0,0,1,0],[76,0,0,1,0],[77,0,0,2,0],[78,0,0,1,0],[79,0,0,1,0],[80,0,0,1,0],[81,0,0,1,0],[82,0,0,2,0],[106,0,0,1,0],[107,0,0,2,0]],"inspect":[[12,0,0,0,1],[65,0,0,1,0],[66,0,0,1,0],[67,0,0,1,0],[68,0,0,1,0],[69,0,1,1,0],[70,0,0,1,0]],"filename":[[12,0,0,0,1]],"language":[[12,0,0,0,1]],"while":[[12,0,0,0,1],[110,0,0,1,0]],"diagrams":[[13,0,0,1,0]],"plain":[[13,0,0,1,0],[37,0,0,0,3],[38,0,0,0,1],[99,0,0,1,0],[114,0,0,1,0]],"renders":[[13,0,0,1,0],[16,0,0,1,0],[52,0,0,1,0],[58,0,0,1,0],[64,0,0,1,0],[87,0,0,1,0]],"client":[[13,0,0,1,0],[106,0,0,1,0]],"svg":[[13,0,0,1,0]],"preserves":[[13,0,0,1,0]],"tools":[[13,0,0,1,0],[30,0,0,1,0],[52,0,0,1,0],[58,0,0,1,0],[59,0,0,1,0],[115,0,0,0,1]],"copy":[[13,0,0,1,0]],"chart":[[13,0,0,0,1],[33,0,0,1,0]],"graph":[[13,0,0,0,2]],"lr":[[13,0,0,0,2],[17,0,0,0,1],[23,0,0,0,1],[33,0,0,1,0],[52,0,0,0,1],[56,0,0,0,1]],"index":[[13,0,0,0,1],[23,0,0,0,1],[24,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[37,0,0,0,1],[39,0,0,1,0],[40,0,0,3,0],[50,0,0,1,1],[51,0,0,5,0],[52,0,0,1,1],[53,0,0,1,0],[54,0,0,1,0],[56,0,0,2,1],[57,0,0,1,0],[58,0,0,2,0],[59,0,0,1,0],[60,0,0,1,0],[62,0,0,1,0],[67,0,0,1,0],[68,0,0,4,0],[69,0,0,2,5],[73,0,0,0,2],[95,0,0,1,0],[96,0,0,2,0],[108,0,0,2,0],[109,0,0,6,0],[110,0,0,2,1],[111,0,0,1,1],[112,0,0,2,3],[113,0,0,1,1],[114,0,0,1,1],[115,0,0,1,1],[116,0,0,1,0],[117,0,0,3,0]],"api":[[13,0,0,0,1],[75,0,0,1,0],[77,0,0,1,0],[84,0,0,2,0],[85,0,0,1,0],[86,0,0,1,0],[87,0,0,1,0],[88,0,1,1,0],[89,0,1,1,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0],[94,0,0,1,0],[117,0,0,1,0]],"guidelines":[[14,0,1,0,0]],"stays":[[14,0,0,1,0],[51,0,0,1,0],[60,0,0,1,0],[82,0,0,1,0],[110,0,0,1,0]],"out":[[14,0,0,1,0],[23,0,0,0,1],[24,0,0,0,1],[25,0,0,0,1],[26,0,0,0,1],[28,0,0,0,1],[29,0,0,1,0],[34,0,0,0,1],[39,0,0,0,1],[47,0,0,0,1],[60,0,0,1,0],[68,0,0,0,1],[72,0,0,3,0],[96,0,0,4,0],[103,0,0,0,2]],"renaming":[[14,0,0,1,0]],"breaks":[[14,0,0,1,0]],"until":[[14,0,0,1,0]],"remap":[[14,0,0,1,0]],"quality":[[14,0,0,1,0]],"converted":[[14,0,0,1,0],[24,0,0,1,0],[37,0,0,1,0],[40,0,0,1,0],[52,0,0,1,0],[54,0,0,2,0],[69,0,0,0,1],[106,0,0,1,0],[107,0,0,1,0]],"first":[[14,0,0,1,0],[29,0,0,1,0],[39,0,0,1,0],[47,0,0,1,0],[48,0,1,0,0],[59,0,0,1,0],[94,0,0,1,0],[98,0,0,1,0],[102,0,0,1,0],[107,0,0,1,0]],"edit":[[14,0,0,1,0]],"order":[[14,0,0,1,0],[26,0,0,1,0],[35,0,0,2,0],[48,0,0,1,0],[54,0,0,1,0],[74,0,0,1,1],[77,0,0,1,0],[78,0,0,1,0],[79,0,0,1,0],[83,0,0,1,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,1,0,0]],"actually":[[14,0,0,1,0]],"looks":[[14,0,0,1,0],[69,0,0,1,0],[107,0,0,1,0]],"wrong":[[14,0,0,1,0],[20,0,0,1,0],[43,0,0,1,0],[48,0,0,1,0],[86,0,0,1,0],[107,0,0,1,0]],"frontmatter":[[15,1,1,1,0],[16,1,1,0,0],[17,1,1,0,0],[18,1,1,0,0],[19,1,1,0,0],[20,1,1,1,0],[21,1,1,1,0],[36,0,0,2,0],[39,0,0,1,0],[42,0,0,1,0],[43,0,0,4,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,2,0],[50,0,0,0,2],[53,0,0,1,0],[54,0,0,2,0],[55,0,0,1,0],[58,0,0,1,0],[62,0,0,1,0],[67,0,0,1,0],[68,0,0,1,0],[72,0,0,1,0],[75,0,0,2,0],[80,0,0,1,1],[82,0,0,3,0],[86,0,1,1,0],[88,0,0,3,0],[89,0,0,0,1],[90,0,1,0,0],[91,0,1,0,0],[93,0,0,0,1]],"fields":[[15,0,0,1,0],[16,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[19,0,1,1,0],[20,0,0,1,0],[21,0,0,1,0],[43,0,0,2,0],[48,0,0,1,0],[75,0,0,2,0],[88,0,0,1,0],[89,0,0,1,0]],"semantics":[[15,0,0,1,0],[16,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0]],"tree":[[15,0,0,1,0],[16,0,0,1,0],[17,0,1,2,1],[18,0,1,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[34,0,0,1,0],[36,0,0,1,0],[50,0,0,0,1],[51,0,0,1,0],[56,0,0,1,1],[58,0,0,2,0],[67,0,0,1,0],[68,0,0,1,0],[79,0,0,1,0],[99,0,0,1,0],[104,0,0,1,0]],"page":[[15,0,0,2,0],[16,0,0,1,0],[17,0,0,2,3],[18,0,0,1,0],[19,0,0,4,0],[20,0,0,1,0],[21,0,0,1,0],[29,0,0,1,0],[40,0,0,1,0],[43,0,0,1,0],[49,0,0,1,0],[50,0,0,0,1],[51,0,0,1,0],[53,0,0,2,0],[54,0,0,1,0],[56,0,0,0,2],[57,0,0,1,0],[67,0,1,1,0],[68,0,0,1,0],[74,0,0,1,0],[82,0,0,1,0],[84,0,0,1,0],[87,0,0,1,0],[88,0,0,1,0],[109,0,0,2,0],[112,0,0,1,0],[117,0,0,1,0]],"yaml":[[15,0,0,1,0],[44,0,0,0,1],[82,0,0,1,0],[86,0,0,1,0]],"things":[[15,0,0,1,0],[68,0,0,1,0]],"lives":[[15,0,0,1,0],[39,0,0,2,0]],"nav":[[15,0,0,1,0],[16,0,0,1,0],[17,0,1,1,2],[18,0,1,0,0],[19,0,0,1,0],[33,0,0,1,0],[50,0,0,0,3],[51,0,0,2,0],[56,0,0,0,3],[67,0,0,1,0],[68,0,0,1,0],[92,0,0,3,0],[99,0,0,1,1]],"minimum":[[16,0,1,0,0],[67,0,0,1,0]],"non":[[16,0,0,1,0],[18,0,0,1,0],[40,0,0,1,0],[42,0,0,1,0],[53,0,0,1,0],[72,0,0,1,0],[75,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[96,0,0,1,0]],"empty":[[16,0,0,1,0],[40,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0]],"sidebar":[[16,0,0,1,0],[19,0,0,1,0],[21,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[92,0,0,1,0],[99,0,0,3,0]],"recommended":[[16,0,0,1,0],[72,0,0,1,0]],"routing":[[16,0,0,1,0],[29,0,0,1,0],[32,0,0,1,0],[40,0,0,1,0],[51,0,0,1,0],[60,0,0,1,0],[63,0,0,1,0],[68,0,0,1,0],[69,0,0,0,2],[95,0,0,1,0],[96,0,0,2,0],[100,0,0,1,0]],"hint":[[16,0,0,1,0]],"omitted":[[16,0,0,1,0]],"converter":[[16,0,0,1,0],[39,0,0,1,0],[87,0,0,1,0],[90,0,0,1,0]],"synthesizes":[[16,0,0,1,0]],"during":[[16,0,0,1,0],[35,0,0,1,0]],"slug":[[16,0,0,1,0],[17,0,0,4,0],[18,0,0,1,3],[27,0,0,0,2],[36,0,0,0,2],[53,0,0,2,0],[54,0,0,1,0],[73,0,0,0,1],[99,0,0,0,2]],"declared":[[16,0,0,1,0],[17,0,0,1,0]],"pages":[[16,0,0,1,0],[19,0,0,1,0],[25,0,0,1,0],[29,0,0,1,0],[36,0,0,1,0],[37,0,0,1,0],[46,0,0,1,0],[51,0,0,1,0],[58,0,0,1,0],[69,0,0,0,1],[92,0,0,1,0],[96,0,0,1,0],[100,0,0,2,0]],"excluded":[[16,0,0,1,0],[19,0,0,1,0]],"connect":[[16,0,0,0,1],[18,0,0,0,2],[30,0,0,1,0],[32,1,1,0,0],[33,1,1,0,0],[34,1,1,0,0],[35,1,1,0,0],[36,1,1,0,0],[37,1,1,0,0],[38,1,1,0,0],[39,1,2,0,0],[40,1,1,0,0],[41,1,1,0,0]],"site":[[16,0,0,0,1],[18,0,0,0,2],[30,0,0,1,0],[32,1,1,2,0],[33,1,1,0,0],[34,1,1,1,0],[35,1,1,0,0],[36,1,1,0,0],[37,1,1,0,0],[38,1,1,0,0],[39,1,1,1,0],[40,1,1,0,0],[41,1,1,0,0],[51,0,0,1,0],[52,0,0,1,0],[56,0,0,0,3],[57,0,0,1,0],[58,0,0,1,0],[60,0,0,1,0],[61,0,0,3,0],[70,0,0,1,0]],"build":[[16,0,0,0,2],[17,0,0,1,4],[18,0,0,1,2],[20,0,0,1,0],[21,0,0,1,0],[26,0,0,3,2],[32,0,0,3,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,1,1,4],[36,0,0,1,0],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,2,1],[40,0,0,2,0],[41,0,0,1,0],[54,0,0,1,0],[57,0,0,1,0],[68,0,0,1,0],[72,0,0,1,0],[77,0,0,1,0],[84,0,0,1,0],[108,0,0,1,0],[110,0,1,0,0],[114,0,0,1,0]],"groups":[[17,0,1,0,1],[18,0,2,1,0],[27,0,0,0,7],[36,0,1,0,1],[39,0,0,1,0],[47,0,0,1,0],[50,0,0,0,4],[53,0,0,1,0],[54,0,0,1,0],[68,0,0,2,0],[73,0,0,0,1],[74,0,0,3,2],[96,0,0,2,0],[98,0,0,0,4],[99,0,0,0,2],[100,0,0,1,0]],"become":[[17,0,1,0,0],[18,0,1,0,0],[74,0,0,1,0]],"declares":[[17,0,0,2,0],[27,0,0,0,1],[36,0,0,1,0],[99,0,0,0,1]],"single":[[17,0,0,1,0],[34,0,0,2,0],[56,0,0,1,0],[57,0,0,2,0],[58,0,0,2,0],[59,0,0,1,0],[72,0,0,1,0],[73,0,0,1,0],[100,0,0,1,0]],"once":[[17,0,0,1,0],[21,0,0,1,0],[36,0,0,1,0],[58,0,0,1,0],[69,0,0,1,0],[93,0,0,1,0]],"intersection":[[17,0,0,1,0]],"produces":[[17,0,0,1,0],[49,0,0,1,0],[51,0,0,1,0],[56,0,0,1,0],[59,0,0,1,0],[60,0,0,1,0],[65,0,0,1,0],[66,0,0,1,0],[67,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[95,0,0,1,0],[100,0,0,2,0]],"leaf":[[17,0,0,1,0],[18,0,0,1,0],[40,0,0,2,0],[51,0,0,1,0],[53,0,0,3,0],[54,0,0,1,0],[68,0,0,1,0],[69,0,0,0,1],[95,0,0,1,0],[96,0,0,5,0],[100,0,0,2,0]],"isn":[[17,0,0,1,0],[20,0,0,1,0],[40,0,0,1,0]],"fails":[[17,0,0,1,0],[39,0,0,1,0],[47,0,0,2,0],[48,0,0,1,0],[54,0,0,1,0]],"unknown":[[17,0,0,1,0],[20,0,0,2,0],[27,0,0,0,4],[37,0,0,0,1],[39,0,0,0,1],[43,0,0,1,0],[44,0,0,2,1],[45,0,0,0,1],[47,0,0,1,1],[48,0,0,1,0],[54,0,0,1,0],[72,0,0,1,0],[75,0,0,4,0],[86,0,0,3,0],[89,0,0,0,1],[93,0,0,2,0],[99,0,0,0,3]],"truth":[[17,0,0,1,0],[21,0,0,1,0]],"drift":[[17,0,0,1,0],[94,0,0,1,0]],"flowchart":[[17,0,0,0,1],[23,0,0,0,1],[33,0,0,1,0],[50,0,0,0,1],[52,0,0,0,1],[56,0,0,0,1],[103,0,0,0,1]],"cfg":[[17,0,0,0,2]],"page1":[[17,0,0,0,2]],"page2":[[17,0,0,0,2]],"page3":[[17,0,0,0,2]],"resolver":[[17,0,0,0,9],[50,0,0,0,1]],"sections":[[17,0,0,0,1],[36,0,0,1,0],[103,0,0,1,0]],"nested":[[18,0,1,1,0]],"declare":[[18,0,0,1,0],[36,0,0,1,0]],"children":[[18,0,0,2,1],[53,0,0,1,0],[96,0,0,1,0]],"deeper":[[18,0,0,1,0],[51,0,0,1,0],[96,0,0,1,0]],"trees":[[18,0,0,1,0],[79,0,0,1,0]],"sets":[[18,0,0,1,0],[37,0,0,1,0]],"bundle":[[18,0,0,1,2],[19,0,0,1,0],[21,0,0,1,0],[22,1,1,0,0],[23,1,1,0,3],[24,1,1,0,0],[25,1,1,1,0],[26,1,1,0,0],[27,1,1,0,0],[28,1,1,0,0],[29,1,1,1,0],[30,1,1,0,0],[31,1,1,0,0],[39,0,0,1,0],[59,0,0,1,0],[69,0,0,0,1],[70,0,0,1,0],[100,0,0,2,0]],"lands":[[18,0,0,1,0]],"slot":[[18,0,0,1,0]],"get":[[18,0,0,1,0],[36,0,0,0,2],[37,0,0,2,0],[39,0,0,1,0],[40,0,0,1,0],[53,0,0,1,0],[58,0,1,0,0],[67,0,0,0,1],[69,0,0,0,1],[73,0,0,0,2],[80,0,0,1,0],[96,0,0,1,0],[97,0,0,0,1],[102,0,0,2,0]],"leaves":[[18,0,0,1,0],[100,0,0,1,0]],"schema":[[19,0,0,1,0],[20,0,0,4,0],[42,0,0,1,0],[43,0,0,3,0],[47,0,0,1,0],[48,0,0,2,0],[75,0,0,2,0],[84,0,0,2,0],[85,0,0,1,0],[86,0,0,3,0],[87,0,0,1,0],[88,0,0,6,0],[89,0,0,2,1],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,4,0],[94,0,0,1,0]],"also":[[19,0,0,1,0],[39,0,0,1,0],[64,0,0,1,0],[77,0,0,1,0]],"accepts":[[19,0,0,1,0],[46,0,0,1,0]],"resolved":[[19,0,0,1,0],[39,0,0,1,0],[51,0,0,1,0],[102,0,0,1,0]],"deprecatedreason":[[19,0,0,1,0],[90,0,0,1,0]],"message":[[19,0,0,1,0],[89,0,0,0,1],[113,0,0,1,0]],"paired":[[19,0,0,1,0]],"experimental":[[19,0,0,2,0],[90,0,0,1,0]],"canary":[[19,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0]],"hides":[[19,0,0,1,0]],"channels":[[19,0,0,1,0]],"new":[[19,0,0,1,0],[59,0,0,1,0],[90,0,0,1,0]],"highlights":[[19,0,0,1,0]],"recently":[[19,0,0,1,0]],"added":[[19,0,0,1,0]],"draft":[[19,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0]],"excludes":[[19,0,0,1,0]],"generation":[[19,0,0,1,0],[26,0,0,1,0],[75,0,0,1,0],[84,0,0,1,0],[110,0,0,1,0]],"entirely":[[19,0,0,1,0]],"tags":[[19,0,0,2,0],[90,0,0,1,0],[91,0,0,1,0],[105,0,0,1,0]],"free":[[19,0,0,1,0]],"form":[[19,0,0,1,0]],"facets":[[19,0,0,1,0]],"availablein":[[19,0,0,1,0],[90,0,0,1,0],[94,0,0,1,0]],"array":[[19,0,0,1,0],[38,0,0,0,1],[79,0,0,1,0],[89,0,0,0,1],[90,0,0,3,0],[91,0,0,2,0],[92,0,0,1,0]],"cross":[[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[43,0,0,2,0],[48,0,0,1,0],[87,0,0,1,0],[89,0,0,0,1]],"availability":[[19,0,0,1,0]],"map":[[19,0,0,1,0]],"forces":[[19,0,0,1,0]],"even":[[19,0,0,1,0],[117,0,0,1,0]],"normally":[[19,0,0,1,0]],"lastmodified":[[19,0,0,1,0],[72,0,0,1,0],[79,0,0,1,0],[90,0,0,1,0]],"lastauthor":[[19,0,0,1,0],[72,0,0,1,0],[79,0,0,1,0],[90,0,0,1,0]],"filled":[[19,0,0,1,0]],"pass":[[19,0,0,1,0],[26,0,0,0,1],[27,0,0,0,1],[35,0,0,1,1],[68,0,0,1,0],[72,0,0,1,0],[75,0,0,2,0],[93,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0],[106,0,0,1,0],[113,0,0,1,0],[114,0,0,1,0]],"enrich":[[19,0,0,1,0],[72,0,0,1,0],[90,0,0,1,0]],"git":[[19,0,0,1,0],[39,0,0,0,1],[72,0,0,2,0],[79,0,0,1,0],[90,0,0,1,0]],"hand":[[19,0,0,1,0]],"rules":[[20,0,1,2,0],[36,0,0,1,0],[42,0,0,1,0],[62,0,0,1,0],[84,1,1,1,0],[85,1,2,0,0],[86,1,3,0,0],[87,1,3,0,0],[88,1,1,0,0],[89,1,1,0,0],[90,1,1,0,0],[91,1,1,0,0],[92,1,1,0,0],[93,1,1,0,0],[94,1,1,0,0],[107,0,1,0,0]],"enforces":[[20,0,0,1,0]],"violations":[[20,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[48,0,0,1,0],[89,0,0,1,1]],"surface":[[20,0,0,1,0],[114,0,0,1,0]],"ci":[[20,0,0,1,0],[31,0,0,1,0],[39,0,0,1,0],[41,0,0,1,0],[42,1,1,2,0],[43,1,1,1,0],[44,1,1,1,0],[45,1,2,2,0],[46,1,1,2,0],[47,1,1,1,0],[48,1,1,2,0],[84,0,0,1,0],[93,0,0,1,0],[94,0,0,2,0],[101,0,0,1,0]],"before":[[20,0,0,1,0],[26,0,0,0,1],[28,0,1,0,0],[32,0,0,1,0],[35,0,0,1,0],[39,0,0,1,0],[42,0,0,1,0],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,2,0],[47,0,1,1,0],[48,0,0,1,0],[75,0,0,1,0],[80,0,0,1,0],[83,0,0,2,0],[84,0,0,2,0],[87,0,0,1,0],[94,0,0,1,0],[104,0,0,4,0],[105,0,0,2,0],[116,0,0,1,0]],"they":[[20,0,0,1,0],[26,0,0,0,1],[27,0,0,0,1],[46,0,0,1,0],[51,0,0,1,0],[84,0,0,1,0],[85,0,0,1,0],[94,0,0,1,0],[117,0,0,1,0]],"reach":[[20,0,0,1,0],[46,0,0,1,0],[84,0,0,1,0]],"relevant":[[20,0,0,1,0],[29,0,0,1,0]],"field":[[20,0,0,3,0],[21,0,0,1,0],[43,0,0,1,0],[44,0,0,1,0],[48,0,0,2,0],[53,0,0,1,0],[86,0,0,4,0],[89,0,0,1,2],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0]],"missing":[[20,0,0,1,0],[28,0,0,1,0],[39,0,0,1,0],[40,0,0,1,0],[43,0,0,1,0],[48,0,0,1,0],[72,0,0,1,0],[86,0,0,1,0],[89,0,0,1,0],[94,0,0,1,0]],"top":[[20,0,0,1,0],[43,0,0,1,0],[82,0,0,1,0],[86,0,0,1,0],[96,0,0,1,0],[108,0,0,1,0],[117,0,0,1,0]],"level":[[20,0,0,1,0],[43,0,0,1,0],[86,0,0,1,0],[96,0,0,1,0]],"warn":[[20,0,0,1,0],[75,0,0,1,0],[86,0,0,1,0],[88,0,0,2,0],[89,0,0,0,1]],"fail":[[20,0,0,1,0],[27,0,0,0,1],[42,0,0,2,0],[43,0,0,1,0],[44,0,0,2,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,1,0],[84,0,0,1,0],[94,0,0,1,0]],"parse":[[20,0,0,2,0],[43,0,0,2,0],[48,0,0,1,0],[54,0,0,1,0],[86,0,0,3,0],[89,0,0,0,1],[116,0,0,1,0]],"meta":[[20,0,0,1,0],[43,0,0,1,0],[75,0,0,2,0],[86,0,0,1,0],[88,0,0,3,0],[89,0,0,0,1],[92,0,1,0,0],[94,0,0,1,0]],"json":[[20,0,0,1,0],[23,0,0,0,1],[24,0,0,0,1],[25,0,0,0,1],[26,0,0,0,2],[28,0,0,3,1],[33,0,0,4,0],[35,0,0,0,1],[39,0,0,1,1],[40,0,0,2,0],[43,0,0,1,0],[45,0,0,2,2],[47,0,0,0,1],[50,0,0,0,2],[51,0,0,3,0],[52,0,0,0,2],[56,0,0,0,2],[68,0,0,2,0],[69,0,0,0,2],[71,0,0,1,0],[72,0,0,7,0],[73,0,1,3,3],[74,0,0,1,0],[75,0,0,3,0],[76,0,0,1,0],[77,0,0,1,0],[86,0,0,1,0],[88,0,0,2,0],[92,0,1,0,0],[94,0,0,2,0],[99,0,0,1,2],[109,0,0,2,0],[110,0,0,0,2],[111,0,0,0,2],[116,0,0,1,0]],"doesn":[[20,0,0,2,0],[43,0,0,1,0],[45,0,0,1,0],[64,0,0,1,0],[87,0,0,1,0],[117,0,0,1,0]],"invalid":[[20,0,0,1,0],[26,0,0,0,1],[43,0,0,1,0],[48,0,0,1,0],[87,0,0,1,0],[89,0,0,1,1]],"link":[[20,0,0,3,0],[21,0,0,1,0],[42,0,0,2,0],[43,0,0,3,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,4,0],[84,0,0,2,0],[85,0,0,1,0],[86,0,0,1,0],[87,0,1,5,0],[88,0,0,1,0],[89,0,0,1,2],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0],[94,0,0,1,0],[103,0,0,2,0]],"exist":[[20,0,0,1,0],[43,0,0,1,0],[87,0,0,1,0]],"unresolved":[[20,0,0,2,0],[43,0,0,2,0],[48,0,0,1,0],[87,0,0,1,0],[89,0,0,0,1],[94,0,0,1,0]],"placeholder":[[20,0,0,2,0],[43,0,0,1,0],[48,0,0,1,0],[87,0,0,1,0],[89,0,0,0,1],[94,0,0,1,0],[104,0,0,2,0]],"doc":[[20,0,0,1,0]],"contains":[[20,0,0,1,0],[87,0,0,1,0]],"scoped":[[20,0,0,1,0],[29,0,0,1,0],[43,0,0,1,0],[51,0,0,1,0],[58,0,0,1,0],[62,0,0,1,0],[69,0,0,0,1],[87,0,0,1,0],[95,0,0,1,0],[96,0,0,3,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0]],"another":[[20,0,0,1,0],[36,0,0,0,1],[80,0,0,1,0],[87,0,0,1,0]],"extend":[[20,0,0,1,0],[43,0,0,1,0],[48,0,0,1,0],[75,0,0,1,0],[93,0,0,1,0]],"gives":[[21,0,1,0,0],[61,0,0,1,0]],"consistent":[[21,0,0,1,0]],"rest":[[21,0,0,1,0],[49,0,0,1,0],[74,0,0,1,0]],"configuration":[[21,0,0,1,0]],"drives":[[21,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[68,0,0,1,0]],"position":[[21,0,0,1,0],[53,0,0,1,0]],"filtering":[[21,0,0,1,0],[35,0,0,1,0]],"checks":[[21,0,0,1,0],[42,0,0,1,0],[84,0,0,1,0],[85,0,0,1,0],[86,0,0,1,0],[87,0,0,2,0],[88,0,0,1,0],[89,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0],[94,0,0,1,0]],"tarball":[[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,1,1,0],[27,0,1,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[39,0,0,1,0]],"ides":[[22,0,0,2,0],[23,0,0,1,1],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,2,0],[30,0,0,1,0],[31,0,0,1,0],[52,0,0,0,1],[56,0,0,0,1]],"coding":[[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,2,0],[31,0,0,1,0]],"offline":[[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[52,0,0,1,0]],"publish":[[22,0,0,1,0],[23,0,0,0,4],[42,0,0,1,0],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,1,0],[69,0,0,1,0]],"library":[[22,0,0,1,0],[26,0,0,1,0],[63,0,0,1,0],[67,0,0,0,2],[75,0,0,1,0],[77,0,1,1,0],[84,0,0,2,0],[85,0,0,1,0],[86,0,0,1,0],[87,0,0,1,0],[88,0,1,1,0],[89,0,1,1,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0],[94,0,0,1,0],[97,0,0,0,2],[98,0,0,0,3],[113,0,0,0,1],[114,0,0,0,1]],"want":[[22,0,0,1,0],[32,0,0,1,0],[35,0,0,1,0],[59,0,0,1,0],[61,0,0,2,0],[64,0,0,1,0],[80,0,0,1,0],[104,0,0,1,0],[107,0,0,2,0],[115,0,0,1,0]],"hitting":[[22,0,0,1,0]],"network":[[22,0,0,1,0],[115,0,0,1,0]],"prepack":[[22,0,0,1,0],[26,0,0,1,0]],"include":[[22,0,0,1,0],[25,0,0,2,2],[26,0,1,0,0],[27,0,1,0,0],[28,0,0,1,0],[35,0,0,1,0],[50,0,0,1,0],[72,0,0,3,0],[73,0,0,0,1],[105,0,0,1,0],[111,0,0,1,0]],"gets":[[22,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[82,0,0,1,0],[96,0,1,0,0]],"website":[[22,0,0,2,0],[30,0,0,1,0],[56,0,0,3,1],[57,0,0,1,0],[58,0,0,1,0],[59,0,0,1,0],[60,0,0,1,0],[61,0,0,1,0],[64,0,0,1,0]],"serves":[[22,0,0,1,0],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,0,1,0],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,1,0],[40,0,0,1,0],[41,0,0,1,0]],"bundled":[[22,0,0,1,0],[29,0,1,0,0]],"everyone":[[22,0,0,1,0]],"else":[[22,0,0,1,0],[48,0,0,1,0],[111,0,0,1,0]],"flow":[[23,0,1,0,0],[33,0,1,0,0]],"src":[[23,0,0,0,2],[24,0,0,0,1],[25,0,0,0,1],[26,0,0,0,1],[28,0,0,0,1],[33,0,0,3,0],[34,0,0,0,1],[39,0,0,0,4],[47,0,0,0,1],[50,0,0,0,2],[56,0,0,0,2],[68,0,0,0,1],[72,0,0,2,0],[75,0,0,2,0],[99,0,0,1,2],[103,0,0,0,2],[106,0,0,0,1]],"repo":[[23,0,0,0,1],[24,0,0,1,0],[26,0,0,0,4],[27,0,0,0,4],[33,0,0,1,0],[34,0,0,1,0],[39,0,0,1,0],[64,0,0,2,0],[67,0,0,1,0],[72,0,0,1,0],[73,0,0,0,3]],"packages":[[23,0,0,0,2],[24,0,0,1,1],[25,0,0,1,1],[28,0,0,0,1],[61,0,0,1,0]],"lt":[[23,0,0,0,4]],"gt":[[23,0,0,0,4]],"consume":[[23,0,0,0,2],[69,0,0,1,0]],"node":[[23,0,0,0,1],[26,0,0,0,1],[29,0,0,2,0],[52,0,0,1,1],[58,0,0,1,0],[75,0,0,2,0],[77,0,0,1,0],[88,0,0,1,0],[99,0,0,0,1],[110,0,0,0,1],[111,0,0,1,0]],"modules":[[23,0,0,0,1],[29,0,0,2,0],[52,0,0,1,1],[58,0,0,1,0],[75,0,0,2,0],[88,0,0,1,0],[104,0,0,1,0]],"clis":[[23,0,0,0,1],[52,0,0,0,1],[56,0,0,0,1]],"root":[[24,0,0,1,0],[26,0,0,0,7],[27,0,0,0,6],[72,0,0,4,0],[75,0,0,1,0],[79,0,0,1,0],[88,0,0,1,0],[92,0,0,1,0]],"under":[[24,0,0,1,0],[34,0,0,1,0],[46,0,0,1,0],[54,0,0,1,0],[75,0,0,1,0],[88,0,0,1,0],[110,0,0,1,0]],"my":[[24,0,0,1,4],[28,0,0,0,1],[34,0,0,0,1],[36,0,0,0,1],[67,0,0,0,2],[97,0,0,0,1],[98,0,0,0,2],[113,0,0,0,1],[114,0,0,0,1]],"bash":[[24,0,0,0,1],[25,0,0,0,1],[28,0,0,0,1],[34,0,0,0,1],[39,0,0,0,1],[45,0,0,0,1],[46,0,0,0,1],[47,0,0,0,1],[68,0,0,0,1],[71,0,0,0,1],[72,0,0,0,1],[75,0,0,0,1],[76,0,0,0,1],[115,0,1,0,0]],"base":[[24,0,0,0,1],[26,0,0,1,1],[29,0,0,1,0],[34,0,0,0,1],[35,0,0,1,0],[68,0,0,0,1],[72,0,0,2,0],[77,0,0,1,0],[101,0,1,2,2]],"https":[[24,0,0,0,1],[26,0,0,0,1],[34,0,0,0,1],[39,0,0,0,1],[68,0,0,0,1],[74,0,0,0,1],[97,0,0,0,5],[98,0,0,0,2],[99,0,0,0,1],[101,0,0,0,1],[110,0,0,0,1]],"com":[[24,0,0,0,1],[34,0,0,0,1],[39,0,0,0,1],[68,0,0,0,1],[74,0,0,0,1],[97,0,0,0,5],[98,0,0,0,2],[99,0,0,0,1],[101,0,0,0,1],[110,0,0,0,1]],"summary":[[24,0,0,0,1],[34,0,0,0,2],[36,0,0,0,2],[45,0,0,1,0],[53,0,0,1,0],[72,0,0,2,0],[73,0,0,0,1],[89,0,0,0,1],[96,0,0,1,0],[98,0,0,0,1]],"filter":[[25,0,1,0,0],[35,0,0,0,1],[106,0,0,0,1]],"monorepo":[[25,0,0,1,0]],"shared":[[25,0,0,2,1],[64,0,0,1,0],[75,0,0,3,0],[88,0,0,2,0],[107,0,0,1,0],[116,0,0,1,0]],"many":[[25,0,0,1,0],[37,0,0,1,0],[46,0,0,1,0],[64,0,0,1,0]],"slice":[[25,0,0,1,0],[37,0,0,0,1],[53,0,0,1,0],[109,0,0,1,0]],"repeatable":[[25,0,0,1,0],[72,0,0,1,0],[75,0,0,1,0]],"exclude":[[25,0,0,2,1],[28,0,0,1,0],[72,0,0,2,0],[73,0,0,0,1]],"filters":[[25,0,0,1,0],[28,0,0,1,0],[73,0,0,0,1]],"overview":[[25,0,0,1,0]],"too":[[25,0,0,1,0]],"applied":[[25,0,0,1,0],[72,0,0,1,0]],"after":[[25,0,0,1,0],[29,0,0,1,0],[40,0,0,1,0],[48,0,0,1,0],[52,0,0,1,0],[72,0,0,1,0],[82,0,0,1,0],[94,0,0,1,0],[104,0,0,1,0],[110,0,0,1,0]],"c15t":[[25,0,0,0,1]],"internal":[[25,0,0,0,1],[43,0,0,1,0],[62,0,0,1,0],[75,0,0,1,0]],"published":[[26,0,1,0,0],[27,0,1,0,0]],"control":[[26,0,0,1,0],[35,0,0,1,0],[74,0,0,1,0],[78,0,0,1,0]],"over":[[26,0,0,1,0],[35,0,0,1,0],[51,0,0,1,0],[52,0,0,1,0],[100,0,0,1,0],[108,0,0,1,0],[115,0,0,1,0]],"fallback":[[26,0,0,1,0],[101,0,0,2,0]],"handling":[[26,0,0,1,0]],"apis":[[26,0,0,1,0],[78,0,0,2,0],[79,0,0,1,0],[80,0,0,1,0],[81,0,0,1,0],[82,0,0,1,0],[83,0,0,1,0],[97,0,0,0,1],[100,0,0,1,0],[111,0,0,1,0]],"directly":[[26,0,0,1,0],[52,0,0,1,0],[74,0,0,1,0],[78,0,0,1,0]],"script":[[26,0,0,2,0],[35,0,0,2,0],[74,0,0,3,0]],"then":[[26,0,0,1,0],[40,0,0,1,0],[102,0,0,1,0],[109,0,0,1,0],[117,0,0,1,0]],"point":[[26,0,0,1,0],[29,0,0,1,0],[78,0,0,1,0],[95,0,0,1,0],[106,0,0,1,0]],"tsup":[[26,0,0,1,1]],"scripts":[[26,0,0,1,2],[35,0,0,2,5],[77,0,0,1,0]],"dist":[[26,0,0,0,1]],"readme":[[26,0,0,0,1]],"rm":[[26,0,0,0,2],[103,0,0,0,2]],"fs":[[26,0,0,0,1],[99,0,0,0,1]],"promises":[[26,0,0,0,1],[99,0,0,0,1]],"convertallmdx":[[26,0,0,0,2],[35,0,0,0,2],[77,0,0,1,0],[78,0,0,1,1],[79,0,1,0,1],[83,0,0,1,0],[98,0,0,0,2]],"generatellmfullcontextfiles":[[26,0,0,0,2],[27,0,0,0,1],[77,0,0,1,0],[95,0,0,0,1],[98,0,0,1,2]],"generatellmstxt":[[26,0,0,0,2],[27,0,0,0,1],[74,0,0,0,2],[77,0,0,1,0],[95,0,0,0,1],[98,0,0,0,2]],"resolvedocsnavigation":[[26,0,0,0,1],[27,0,0,0,1],[77,0,0,1,0],[95,0,0,0,1],[99,0,1,0,1]],"defaultremarkplugins":[[26,0,0,0,2],[35,0,0,0,2],[77,0,0,1,0],[79,0,0,1,2],[80,0,0,0,1],[81,0,0,0,1],[83,0,0,0,2],[98,0,0,0,2],[102,0,0,0,1],[103,0,0,1,0],[105,0,0,0,1],[106,0,0,0,2],[107,0,0,1,0]],"docsconfig":[[26,0,0,0,1],[27,0,0,0,5],[74,0,0,0,3],[98,0,0,0,2],[99,0,0,0,1]],"process":[[26,0,0,0,3],[27,0,0,0,2],[35,0,0,0,1],[74,0,0,0,1],[79,0,0,1,0],[99,0,0,0,2],[101,0,0,0,3],[106,0,0,0,1]],"cwd":[[26,0,0,0,2],[35,0,0,0,1],[74,0,0,0,1],[106,0,0,0,1]],"baseurl":[[26,0,0,0,1],[27,0,0,0,3],[74,0,0,0,1],[98,0,0,0,2],[99,0,0,0,1],[101,0,0,1,1],[110,0,0,0,1]],"env":[[26,0,0,0,1],[46,0,0,0,1],[101,0,0,1,3],[114,0,0,1,0]],"trim":[[26,0,0,0,1],[116,0,0,1,0]],"generated":[[26,0,0,0,1],[33,0,0,1,0],[34,0,0,1,0],[46,0,0,1,0],[59,0,0,1,0],[72,0,0,1,0],[73,0,0,1,0],[96,0,1,0,0],[99,0,0,1,2]],"gitignored":[[26,0,0,0,1]],"safe":[[26,0,0,0,1],[62,0,0,1,0],[97,0,0,0,1],[108,0,0,1,0],[111,0,0,1,0],[117,0,0,1,0]],"nuke":[[26,0,0,0,1]],"await":[[26,0,0,0,2],[27,0,0,0,3],[35,0,0,0,1],[74,0,0,0,1],[79,0,0,0,1],[80,0,0,0,1],[81,0,0,0,1],[88,0,0,0,1],[93,0,0,0,1],[98,0,0,0,3],[99,0,0,0,3],[110,0,0,0,1],[115,0,0,0,1]],"recursive":[[26,0,0,0,1],[99,0,0,0,1]],"force":[[26,0,0,0,1]],"srcdir":[[26,0,0,0,1],[27,0,0,0,2],[35,0,0,0,2],[73,0,0,0,1],[74,0,0,0,1],[75,0,0,2,1],[79,0,0,2,1],[88,0,0,3,1],[93,0,0,0,1],[98,0,0,0,2],[99,0,0,0,1]],"outdir":[[26,0,0,0,1],[27,0,0,0,2],[35,0,0,0,2],[73,0,0,0,1],[74,0,0,0,1],[79,0,0,1,1],[98,0,0,1,3],[110,0,0,1,3]],"remarkplugins":[[26,0,0,0,1],[35,0,0,0,2],[79,0,0,1,1],[81,0,0,0,1],[83,0,0,0,1],[98,0,0,0,1],[105,0,0,0,1],[106,0,0,0,1]],"join":[[26,0,0,0,1],[38,0,0,0,1]],"dir":[[26,0,0,0,1],[72,0,0,5,0],[75,0,0,2,0]],"internally":[[26,0,0,0,1],[27,0,0,0,1],[78,0,0,1,0]],"parents":[[26,0,0,0,1],[27,0,0,0,1]],"write":[[26,0,0,0,1],[27,0,0,0,2],[54,0,0,1,0],[56,0,0,1,0],[58,0,0,1,0],[81,0,0,1,0],[99,0,0,1,1],[100,0,0,1,0]],"fast":[[27,0,0,0,1],[42,0,0,1,0],[94,0,0,1,0],[117,0,0,1,0]],"bad":[[27,0,0,0,1]],"length":[[27,0,0,0,1],[37,0,0,0,3],[99,0,0,0,1]],"urlpath":[[27,0,0,0,2],[36,0,0,0,2],[99,0,0,0,2]],"stderr":[[27,0,0,0,1],[73,0,0,1,0],[99,0,0,0,1]],"exit":[[27,0,0,0,1],[71,0,0,1,0],[72,0,0,2,0],[73,0,0,1,0],[74,0,0,1,0],[75,0,0,3,0],[76,0,0,1,0],[77,0,0,1,0],[99,0,0,0,1]],"verify":[[28,0,1,0,0],[40,0,1,0,0]],"publishing":[[28,0,1,0,0],[61,0,0,1,0]],"pack":[[28,0,0,1,1]],"dry":[[28,0,0,1,1]],"something":[[28,0,0,1,0],[100,0,0,1,0]],"check":[[28,0,0,1,0],[36,0,0,1,0],[86,0,0,1,0]],"discover":[[29,0,1,0,0]],"sit":[[29,0,0,1,0]],"ways":[[29,0,0,1,0]],"deep":[[29,0,0,1,0]],"individual":[[29,0,0,1,0],[77,0,0,1,0],[107,0,0,1,0]],"needed":[[29,0,0,1,0],[35,0,0,1,0],[106,0,0,1,0]],"set":[[29,0,0,1,0],[37,0,0,2,0],[66,0,0,1,0],[90,0,0,1,0]],"right":[[29,0,0,1,0],[109,0,0,2,0],[112,0,0,1,0]],"generating":[[29,0,0,1,0]],"urls":[[29,0,0,1,0],[43,0,0,1,0],[87,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0],[111,0,0,1,0]],"hosted":[[29,0,0,1,0],[61,0,0,2,0]],"fall":[[29,0,0,1,0],[37,0,0,1,0]],"fetching":[[29,0,0,1,0]],"date":[[29,0,0,1,0],[91,0,0,2,0]],"understand":[[30,0,0,1,0],[70,0,0,1,0]],"installed":[[30,0,0,1,0]],"dependency":[[30,0,0,1,0]],"itself":[[30,0,0,1,0]],"web":[[30,0,0,1,0]],"access":[[30,0,0,1,0]],"ide":[[30,0,0,1,0]],"assistants":[[30,0,0,1,0]],"air":[[30,0,0,1,0]],"gapped":[[30,0,0,1,0]],"environments":[[30,0,0,1,0]],"goal":[[30,0,0,1,0]],"runs":[[32,0,0,1,0],[42,0,0,1,0],[44,0,0,0,1],[54,0,1,1,0],[62,0,0,1,0],[68,0,0,1,0],[71,0,0,1,0],[74,0,0,1,0],[75,0,0,1,0],[103,0,0,1,0]],"produce":[[32,0,0,1,0],[36,0,0,1,0],[72,0,0,1,0]],"astro":[[32,0,0,1,0],[35,0,0,1,0],[53,0,0,1,0],[56,0,0,1,0],[61,0,0,1,0]],"anything":[[32,0,0,1,0],[39,0,0,1,0],[56,0,0,1,0]],"handles":[[32,0,0,1,0],[64,0,0,1,0],[97,0,0,0,1]],"br":[[33,0,0,10,0]],"pub":[[33,0,0,3,0]],"gen":[[33,0,0,4,0]],"human":[[33,0,0,2,0],[52,0,0,0,2]],"off":[[34,0,1,0,0],[72,0,0,1,0],[75,0,0,1,0]],"together":[[34,0,0,1,0],[36,0,0,1,0],[94,0,0,1,0]],"generates":[[34,0,0,1,0],[58,0,0,1,0]],"builds":[[34,0,0,1,0],[35,0,0,1,0],[58,0,0,1,0],[101,0,0,1,0],[108,0,0,1,0]],"resolves":[[34,0,0,1,0],[58,0,0,1,0]],"paths":[[34,0,0,1,0],[35,0,0,0,1],[44,0,0,0,1],[46,0,0,1,0],[75,0,0,1,0],[77,0,0,1,0],[111,0,0,1,0],[117,0,0,1,0]],"listed":[[34,0,0,1,0]],"inspected":[[34,0,0,1,0]],"detail":[[34,0,0,1,0]],"simplest":[[35,0,0,1,0]],"setup":[[35,0,0,1,0],[44,0,0,0,1],[101,0,0,1,0]],"stage":[[35,0,0,1,0],[36,0,0,1,0],[54,0,0,1,0],[80,0,0,1,0]],"rerun":[[35,0,0,1,0]],"independently":[[35,0,0,1,0],[53,0,0,1,0]],"splitting":[[35,0,0,1,0],[110,0,0,1,0]],"separate":[[35,0,0,1,0],[68,0,0,1,0],[109,0,0,1,0]],"canonical":[[35,0,0,1,0]],"remarkinclude":[[35,0,0,1,2],[79,0,0,1,2],[83,0,0,2,2],[98,0,0,0,2],[102,0,0,0,1],[105,0,1,0,1],[107,0,0,1,0]],"enables":[[35,0,0,1,0]],"foo":[[35,0,0,1,0],[53,0,0,2,0]],"style":[[35,0,0,1,0],[113,0,0,1,0]],"partial":[[35,0,0,1,0],[105,0,0,1,0]],"expansion":[[35,0,0,1,0]],"basepath":[[35,0,0,1,2],[106,0,1,1,1]],"swap":[[35,0,0,1,0]],"remarktypetabletomarkdown":[[35,0,0,1,3],[102,0,0,0,1],[103,0,0,1,1],[106,0,1,0,3]],"plugins":[[35,0,0,1,0],[50,0,0,1,0],[77,0,0,1,0],[83,0,1,1,0],[102,1,1,0,0],[103,1,1,0,0],[104,1,1,0,0],[105,1,2,0,0],[106,1,2,0,0],[107,1,1,1,0]],"mdxtomarkdownoptions":[[35,0,0,0,2]],"reporoot":[[35,0,0,0,4]],"resolve":[[35,0,0,0,1],[54,0,0,1,0],[68,0,0,1,0],[106,0,0,1,0]],"relative":[[35,0,0,0,1],[72,0,0,3,0],[88,0,0,1,0],[106,0,0,1,0]],"typetableplugin":[[35,0,0,0,2]],"nonnullable":[[35,0,0,0,1]],"number":[[35,0,0,0,1],[37,0,0,0,1],[89,0,0,0,3]],"enrichfrontmatterfromgit":[[35,0,0,0,1],[79,0,0,1,1],[80,0,0,0,1]],"configure":[[36,0,1,0,0]],"let":[[36,0,0,1,0],[56,0,0,1,0]],"manifest":[[36,0,0,1,0],[50,0,0,0,1],[51,0,0,1,0],[99,0,0,2,0]],"catches":[[36,0,0,1,0],[43,0,1,0,0],[86,0,0,1,0],[87,0,0,1,0]],"typos":[[36,0,0,1,0]],"resolution":[[36,0,0,1,0],[99,0,0,1,0],[104,0,0,2,0]],"definedocsconfig":[[36,0,0,0,2]],"export":[[36,0,0,0,1],[37,0,0,0,1],[38,0,0,0,1],[103,0,0,1,0]],"bullets":[[36,0,0,0,1]],"beststartingpoints":[[36,0,0,0,1]],"quickstart":[[36,0,0,0,1],[55,0,0,1,0],[59,0,0,1,0],[65,1,1,0,0],[66,1,1,0,0],[67,1,1,0,0],[68,1,1,0,0],[69,1,1,0,0],[70,1,1,0,0],[80,0,0,0,1],[81,0,0,0,2],[97,0,0,0,4],[112,0,0,0,1]],"started":[[36,0,0,0,2],[67,0,0,0,1],[69,0,0,0,1],[73,0,0,0,2],[97,0,0,0,1]],"guides":[[36,0,0,0,2],[100,0,0,1,0],[112,0,0,0,1]],"drop":[[37,0,0,1,0]],"front":[[37,0,0,1,0]],"fetch":[[37,0,0,1,0],[58,0,0,1,0]],"visit":[[37,0,0,1,0]],"complete":[[37,0,0,1,0],[65,0,0,1,0]],"lines":[[37,0,0,1,0]],"browsers":[[37,0,0,2,1]],"send":[[37,0,0,3,1]],"charset":[[37,0,0,5,2],[38,0,0,0,2],[40,0,0,2,0]],"utf":[[37,0,0,4,1],[38,0,0,0,1],[40,0,0,2,0]],"handlers":[[37,0,0,1,0]],"which":[[37,0,0,1,0],[53,0,0,1,0],[68,0,0,1,0],[100,0,0,1,0]],"makes":[[37,0,0,1,0],[44,0,0,1,0]],"latin":[[37,0,0,1,0]],"characters":[[37,0,0,1,0],[40,0,0,1,0]],"box":[[37,0,0,1,0]],"drawing":[[37,0,0,1,0]],"em":[[37,0,0,1,0]],"dashes":[[37,0,0,1,0]],"smart":[[37,0,0,1,0]],"quotes":[[37,0,0,1,0]],"mojibake":[[37,0,0,1,0],[40,0,0,1,0]],"always":[[37,0,0,1,0],[98,0,0,1,0]],"forceutf8ontextresponses":[[37,0,0,1,1],[38,0,0,0,1]],"patching":[[37,0,0,1,0]],"setheader":[[37,0,0,1,3]],"rewritetomarkdown":[[37,0,0,1,1],[38,0,0,0,1]],"logic":[[37,0,0,1,0],[99,0,0,1,0]],"cloudflare":[[37,0,0,1,0],[53,0,0,1,0],[111,0,0,1,0],[114,0,0,1,2],[115,0,0,1,0],[116,0,0,1,0]],"worker":[[37,0,0,1,0],[53,0,0,1,0]],"case":[[37,0,0,1,0]],"explicitly":[[37,0,0,1,0],[74,0,0,1,0],[101,0,0,1,0]],"pluginoption":[[37,0,0,0,1],[38,0,0,0,1]],"function":[[37,0,0,0,3],[38,0,0,0,1],[79,0,0,1,0],[109,0,0,1,0]],"undefined":[[37,0,0,0,1]],"null":[[37,0,0,0,6],[99,0,0,0,1]],"return":[[37,0,0,0,8],[38,0,0,0,4]],"pathname":[[37,0,0,0,8]],"split":[[37,0,0,0,1]],"endswith":[[37,0,0,0,1]],"startswith":[[37,0,0,0,1]],"test":[[37,0,0,0,5],[38,0,0,0,2]],"never":[[37,0,0,0,1],[107,0,0,1,0]],"target":[[37,0,0,0,2]],"replace":[[37,0,0,0,1],[93,0,0,1,0],[103,0,0,1,0]],"res":[[37,0,0,0,4],[38,0,0,0,2]],"original":[[37,0,0,0,3],[38,0,0,0,2]],"bind":[[37,0,0,0,1]],"typeof":[[37,0,0,0,2]],"tolowercase":[[37,0,0,0,1]],"down":[[38,0,0,0,1]],"markdownnegotiation":[[38,0,0,0,1]],"req":[[38,0,0,0,7]],"any":[[38,0,0,0,2],[44,0,0,1,0],[45,0,0,1,0],[61,0,0,1,0],[72,0,0,1,0],[75,0,0,1,0],[94,0,0,1,0],[97,0,0,0,1],[105,0,0,1,0],[107,0,0,1,0],[113,0,0,1,0]],"void":[[38,0,0,0,1]],"isarray":[[38,0,0,0,1]],"headers":[[38,0,0,0,3],[116,0,0,1,0]],"rewritten":[[38,0,0,0,3]],"middlewares":[[38,0,0,0,2]],"configurepreviewserver":[[38,0,0,0,1]],"remote":[[39,0,1,0,0]],"malformed":[[39,0,0,1,0]],"format":[[39,0,0,1,1],[44,0,0,1,1],[45,0,0,2,1],[72,0,0,2,0],[75,0,0,2,0],[94,0,0,2,0],[109,0,0,1,0]],"github":[[39,0,0,1,2],[44,0,1,1,1],[45,0,0,1,0],[75,0,0,1,0],[94,0,0,2,0]],"inline":[[39,0,0,1,0],[44,0,0,1,0],[71,0,0,1,0]],"annotations":[[39,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0]],"pr":[[39,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0]],"automation":[[39,0,0,1,0]],"stats":[[39,0,0,1,0],[73,0,0,0,1]],"shape":[[39,0,0,1,0],[49,0,0,1,0],[56,0,0,1,0],[73,0,1,0,0],[89,0,1,0,0]],"we":[[39,0,0,1,0]],"expect":[[39,0,0,1,0]],"orgs":[[39,0,0,1,0]],"hosting":[[39,0,0,1,0],[63,0,0,1,0]],"multiple":[[39,0,0,1,0]],"repos":[[39,0,0,1,0],[61,0,0,1,0],[64,0,0,1,0]],"documents":[[39,0,0,1,0],[64,0,0,1,0]],"pulls":[[39,0,0,1,0]],"clone":[[39,0,0,0,1]],"depth":[[39,0,0,0,1]],"acme":[[39,0,0,0,1]],"clean":[[40,0,0,1,0],[56,0,0,1,1],[78,0,0,1,0],[82,0,0,1,0],[103,0,0,0,1],[104,0,0,1,0]],"home":[[40,0,0,1,0]],"mention":[[40,0,0,1,0]],"server":[[40,0,0,1,0]],"curl":[[40,0,0,1,0]],"http":[[40,0,0,1,0],[52,0,0,1,0],[56,0,0,0,1],[58,0,0,1,0]],"localhost":[[40,0,0,1,0]],"will":[[40,0,0,1,0],[53,0,0,1,0],[69,0,0,1,0],[100,0,0,1,0]],"instead":[[40,0,0,1,0],[115,0,0,1,0]],"wired":[[40,0,0,1,0]],"validate":[[42,1,1,0,0],[43,1,1,0,0],[44,1,1,0,0],[45,1,1,0,0],[46,1,1,0,0],[47,1,1,0,0],[48,1,1,1,0],[54,0,0,1,0],[75,0,0,1,0],[80,0,0,1,0],[94,0,0,1,0]],"issues":[[42,0,0,1,0],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,2,0],[47,0,0,1,0],[48,0,0,1,0],[84,0,0,1,0]],"prs":[[42,0,0,2,0],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,1,0],[84,0,0,1,0]],"exits":[[42,0,0,1,0]],"zero":[[42,0,0,1,0],[57,0,0,1,0],[61,0,0,1,0],[75,0,0,1,0]],"errors":[[42,0,0,1,0],[44,0,0,1,0],[73,0,0,1,0],[75,0,0,3,0],[89,0,0,0,1],[94,0,0,1,0]],"would":[[42,0,0,1,0]],"otherwise":[[42,0,0,1,0]],"blow":[[42,0,0,1,0]],"later":[[42,0,0,1,0]],"typed":[[43,0,0,1,0],[48,0,0,1,0]],"rule":[[43,0,0,2,0],[75,0,0,1,0],[86,0,0,1,0],[87,0,0,1,0],[89,0,0,1,1]],"pointing":[[43,0,0,1,0]],"routes":[[43,0,0,1,0]],"placeholders":[[43,0,0,1,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0]],"left":[[43,0,0,1,0]],"actions":[[44,0,1,0,1],[94,0,0,1,0]],"upgrades":[[44,0,0,1,0],[86,0,0,1,0]],"strict":[[44,0,0,1,0],[93,0,0,1,0]],"max":[[44,0,0,1,1],[46,0,0,0,1],[75,0,0,1,0]],"remaining":[[44,0,0,1,0]],"job":[[44,0,0,1,0],[47,0,0,1,0],[61,0,0,1,0]],"pull":[[44,0,0,0,1]],"request":[[44,0,0,0,1],[53,0,0,1,0],[116,0,0,1,0]],"jobs":[[44,0,0,0,1]],"ubuntu":[[44,0,0,0,1]],"latest":[[44,0,0,0,1]],"checkout":[[44,0,0,0,1]],"v4":[[44,0,0,0,1]],"oven":[[44,0,0,0,1]],"sh":[[44,0,0,0,1],[46,0,0,0,1]],"v2":[[44,0,0,0,1]],"providers":[[45,0,1,0,0]],"speak":[[45,0,0,1,0]],"includes":[[45,0,0,1,0],[47,0,0,1,0],[83,0,0,1,0]],"counts":[[45,0,0,1,0]],"pipe":[[45,0,0,1,0],[56,0,0,0,6],[93,0,0,0,1]],"provider":[[45,0,0,1,0],[108,0,0,1,0],[114,0,1,1,0]],"reporter":[[45,0,0,1,0]],"post":[[45,0,0,1,0]],"comment":[[45,0,0,1,0]],"upload":[[45,0,0,1,0]],"artifact":[[45,0,0,1,0],[51,0,0,1,0],[59,0,0,1,0]],"report":[[45,0,0,0,1],[75,0,0,2,0]],"local":[[46,0,1,0,0],[72,0,0,1,0],[101,0,0,1,0],[106,0,0,1,0],[117,0,0,1,0]],"pre":[[46,0,1,1,0],[115,0,0,1,0]],"push":[[46,0,1,1,0]],"hook":[[46,0,1,1,0]],"catch":[[46,0,0,1,0],[85,0,0,1,0],[100,0,0,1,0]],"running":[[46,0,0,1,0],[57,0,0,1,0]],"husky":[[46,0,0,1,0]],"second":[[46,0,0,1,0]],"limiting":[[46,0,0,1,0]],"scan":[[46,0,0,1,0]],"changed":[[46,0,0,1,0]],"repeated":[[46,0,0,1,0]],"ignore":[[46,0,0,1,0],[75,0,0,3,0],[88,0,0,2,0]],"globs":[[46,0,0,1,0]],"skip":[[46,0,0,1,0],[75,0,0,1,0],[107,0,0,1,0]],"stale":[[46,0,0,1,0],[48,0,0,1,0],[94,0,0,1,0]],"usr":[[46,0,0,0,1]],"bin":[[46,0,0,0,1]],"noisily":[[47,0,0,1,0]],"broken":[[47,0,0,1,0],[48,0,0,1,0],[54,0,0,1,0]],"specifically":[[47,0,0,1,0]],"problems":[[47,0,0,1,0]],"line":[[47,0,0,1,0]],"much":[[47,0,0,1,0]],"easier":[[47,0,0,1,0]],"debug":[[47,0,0,1,0]],"fix":[[48,0,1,1,0],[107,0,0,1,0]],"lot":[[48,0,0,1,0]],"bug":[[48,0,0,2,0],[54,0,0,1,0],[94,0,0,1,0]],"usually":[[48,0,0,1,0],[66,0,0,1,0],[79,0,0,1,0],[94,0,0,1,0],[107,0,0,1,0]],"move":[[48,0,0,1,0],[94,0,0,1,0]],"last":[[48,0,0,1,0],[104,0,0,1,0]],"either":[[48,0,0,1,0],[52,0,0,1,0]],"delete":[[48,0,0,1,0]],"mental":[[49,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[59,0,0,1,0],[97,0,0,0,2]],"model":[[49,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[59,0,0,1,0],[97,0,0,0,2],[113,0,0,2,0],[114,0,0,1,1]],"four":[[49,0,0,1,0],[50,0,0,1,0],[51,0,1,2,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[65,0,0,1,0],[66,0,0,1,0],[67,0,0,1,0],[68,0,0,2,0],[69,0,0,1,0],[70,0,0,2,0]],"artifacts":[[49,0,0,1,0],[50,0,0,1,0],[51,0,1,1,0],[52,0,0,1,5],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[60,0,0,1,0],[65,0,0,1,0],[66,0,0,1,0],[67,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[72,0,0,1,0]],"takes":[[49,0,0,1,0],[57,0,0,1,0]],"input":[[49,0,0,1,0]],"folder":[[49,0,0,1,0],[65,0,0,2,0],[66,0,0,1,0],[67,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[72,0,0,2,0]],"take":[[49,0,0,1,0],[56,0,0,1,0]],"piece":[[49,0,0,1,0]],"make":[[49,0,0,1,0],[117,0,0,1,0]],"sense":[[49,0,0,1,0]],"turns":[[50,0,0,1,0],[102,0,0,1,0],[113,0,0,1,0]],"sequence":[[50,0,0,1,0],[98,0,1,0,0]],"ranks":[[50,0,0,1,0]],"tb":[[50,0,0,0,1],[103,0,0,0,1]],"fm":[[50,0,0,0,4]],"parser":[[50,0,0,0,1]],"strip":[[50,0,0,0,1],[103,0,0,2,0]],"idx":[[50,0,0,0,2],[56,0,0,0,3]],"kinds":[[51,0,0,1,0]],"derive":[[51,0,0,1,0]],"there":[[51,0,0,1,0],[82,0,0,1,0]],"manual":[[51,0,0,1,0]],"duplication":[[51,0,0,1,0]],"served":[[51,0,0,1,0]],"via":[[51,0,0,1,0],[52,0,0,1,0],[56,0,0,0,1],[58,0,0,1,0],[62,0,0,1,0],[75,0,0,1,0],[78,0,0,1,0],[108,0,0,1,0],[114,0,1,0,0]],"consumed":[[51,0,0,1,0]],"plus":[[51,0,0,1,0],[52,0,0,1,0],[58,0,0,1,0],[62,0,0,1,0],[66,0,0,1,0],[68,0,0,1,0],[80,0,0,1,0],[103,0,0,1,0],[113,0,0,1,0]],"bm25":[[51,0,0,1,0],[68,0,0,1,0],[69,0,0,0,1],[109,0,0,1,0]],"ranked":[[51,0,0,1,0]],"inverted":[[51,0,0,1,0]],"stored":[[51,0,0,1,0]],"separately":[[51,0,0,1,0],[114,0,0,2,0]],"mapping":[[51,0,0,1,0]],"locations":[[51,0,0,1,0]],"structure":[[51,0,0,1,0],[74,0,0,1,0],[79,0,0,1,0]],"store":[[52,0,0,1,0],[68,0,0,1,0],[69,0,0,0,1],[109,0,0,1,0],[116,0,0,1,0]],"lexical":[[52,0,0,1,0],[117,0,0,1,0]],"results":[[52,0,0,1,0],[109,0,0,1,0],[111,0,0,1,1]],"feeds":[[52,0,0,1,0]],"grounded":[[52,0,0,1,0],[62,0,0,1,0],[108,0,0,2,0],[109,0,0,1,0],[110,0,0,1,0],[111,0,0,1,0],[112,0,0,1,0],[113,0,1,1,0],[114,0,0,1,0],[115,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0]],"ai":[[52,0,0,1,1],[56,0,0,0,1],[61,0,0,1,0],[114,0,0,1,5]],"answers":[[52,0,0,1,1],[56,0,0,0,1],[109,0,0,1,0],[113,0,1,0,0]],"pkg":[[52,0,0,0,1]],"vocabulary":[[53,0,1,0,0],[109,0,1,0,0],[117,0,0,1,0]],"few":[[53,0,0,1,0]],"terms":[[53,0,0,1,0]],"throughout":[[53,0,0,1,0]],"verb":[[53,0,0,1,0]],"declaring":[[53,0,0,1,0]],"belongs":[[53,0,0,1,0]],"noun":[[53,0,0,3,0]],"own":[[53,0,0,1,0],[56,0,0,1,0],[61,0,0,1,0],[63,0,1,0,0]],"chunk":[[53,0,0,1,0],[69,0,0,0,1],[109,0,0,4,0],[112,0,0,0,1]],"scores":[[53,0,0,1,0]],"weigh":[[53,0,0,1,0],[109,0,0,1,0]],"rewrites":[[53,0,0,1,0]],"advertises":[[53,0,0,1,0]],"implement":[[53,0,0,1,0]],"wherever":[[53,0,0,1,0]],"intercepts":[[53,0,0,1,0]],"requests":[[53,0,0,1,0]],"endpoint":[[53,0,0,1,0],[64,0,0,1,0]],"fixed":[[54,0,0,1,0]],"depends":[[54,0,0,1,0]],"previous":[[54,0,0,1,0]],"through":[[54,0,0,1,0],[68,0,0,1,0],[87,0,0,1,0]],"matches":[[54,0,0,1,0],[57,0,0,1,0],[117,0,0,1,0]],"known":[[54,0,0,1,0]],"grouping":[[54,0,0,1,0]],"chunking":[[54,0,0,1,0]],"finds":[[54,0,0,1,0],[106,0,0,1,0]],"design":[[54,0,0,1,0],[64,0,0,1,0],[100,0,1,0,0]],"problem":[[54,0,0,1,0]],"bring":[[56,0,0,1,0]],"handle":[[56,0,0,1,0]],"validation":[[56,0,0,1,0],[64,0,0,1,0]],"outputs":[[56,0,0,1,0],[64,0,0,1,0],[95,0,0,1,0]],"choose":[[57,0,1,0,0]],"most":[[57,0,0,1,0],[83,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0]],"teams":[[57,0,0,1,0]],"arrive":[[57,0,0,1,0]],"reasons":[[57,0,0,1,0]],"pick":[[57,0,0,1,0]],"journey":[[57,0,0,1,0]],"yours":[[57,0,0,1,0]],"familiar":[[58,0,0,1,0]],"others":[[58,0,0,1,0]],"load":[[58,0,0,1,0],[100,0,0,2,0],[110,0,0,2,0]],"five":[[59,0,0,1,0],[65,0,0,1,0],[97,0,0,0,1]],"minutes":[[59,0,0,1,0],[65,0,0,1,0]],"comparing":[[59,0,0,1,0]],"methodology":[[59,0,0,1,0],[60,1,1,0,0],[61,1,1,0,0],[62,1,1,0,0],[63,1,1,0,0],[64,1,1,0,0]],"differs":[[59,0,0,1,0],[60,0,0,1,0],[61,0,0,1,0],[62,0,0,1,0],[63,0,0,1,0],[64,0,0,1,0]],"fumadocs":[[59,0,0,1,0],[60,0,0,1,0],[61,0,0,2,0],[62,0,0,1,0],[63,0,0,1,0],[64,0,0,2,0]],"starlight":[[59,0,0,1,0],[60,0,0,1,0],[61,0,0,2,0],[62,0,0,1,0],[63,0,0,1,0],[64,0,0,2,0]],"mintlify":[[59,0,0,1,0],[60,0,0,1,0],[61,0,0,2,0],[62,0,0,1,0],[63,0,0,1,0],[64,0,0,1,0]],"layout":[[60,0,0,1,0]],"theming":[[60,0,0,1,0],[63,0,0,1,0]],"version":[[61,0,1,0,0],[91,0,0,1,0]],"tool":[[61,0,0,1,0],[115,0,1,0,0]],"platform":[[61,0,0,2,0]],"analytics":[[61,0,0,1,0],[63,0,0,1,0]],"built":[[61,0,0,1,0]],"layer":[[61,0,0,1,0],[117,0,0,1,0]],"behind":[[61,0,0,1,0]],"main":[[61,0,0,1,0],[76,0,0,0,1]],"polished":[[61,0,0,1,0]],"quickly":[[61,0,0,1,0],[100,0,0,1,0]],"infra":[[61,0,0,1,0]],"standardize":[[61,0,0,1,0]],"edge":[[62,0,0,1,0],[108,0,0,1,0],[111,0,0,1,0],[117,0,0,1,0]],"answer":[[62,0,0,1,0],[108,0,0,2,0],[109,0,0,1,0],[110,0,0,2,0],[111,0,0,1,0],[112,0,0,1,0],[113,0,0,2,0],[114,0,0,2,0],[115,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0]],"streaming":[[62,0,0,1,0],[108,0,0,2,0],[109,0,0,1,0],[110,0,0,1,0],[111,0,0,1,0],[112,0,0,1,0],[113,0,0,1,0],[114,0,1,1,0],[115,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0]],"metadata":[[62,0,0,1,0],[114,0,0,1,0]],"orchestration":[[62,0,0,1,0]],"whole":[[62,0,0,1,0]],"prebuilt":[[63,0,0,1,0]],"provides":[[63,0,0,1,0]],"those":[[63,0,0,1,0],[100,0,0,1,0]],"combination":[[64,0,1,0,0]],"shines":[[64,0,1,0,0]],"experience":[[64,0,0,1,0]],"keeps":[[64,0,0,1,0],[101,0,0,1,0],[110,0,0,1,0]],"private":[[64,0,0,1,0]],"templated":[[64,0,0,1,0]],"system":[[64,0,0,1,0],[113,0,0,2,1]],"pair":[[64,0,0,1,0],[83,0,0,1,0]],"alongside":[[64,0,0,1,0]],"against":[[65,0,0,1,0],[66,0,0,1,0],[67,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[75,0,0,1,0],[88,0,0,1,0]],"ships":[[66,0,0,1,0],[106,0,0,1,0]],"executable":[[66,0,0,1,0]],"focused":[[66,0,0,1,0],[100,0,0,1,0]],"sentence":[[67,0,0,0,1]],"welcome":[[67,0,0,0,1],[100,0,0,1,0]],"walks":[[68,0,0,1,0]],"excerpts":[[68,0,0,1,0],[109,0,0,1,0]],"reports":[[68,0,0,1,0]],"found":[[68,0,0,1,0]],"now":[[70,0,0,1,0],[99,0,0,1,0]],"primitives":[[70,0,0,1,0]],"flags":[[71,0,0,1,0],[72,0,0,1,0],[73,0,0,1,0],[74,0,0,1,0],[75,0,0,1,0],[76,0,0,1,0],[77,0,0,1,0],[84,0,0,1,0],[97,0,0,0,1]],"codes":[[71,0,0,1,0],[72,0,0,2,0],[73,0,0,1,0],[74,0,0,1,0],[75,0,0,2,0],[76,0,0,1,0],[77,0,0,1,0]],"validates":[[71,0,0,1,0],[84,0,0,1,0]],"help":[[71,0,0,1,0],[72,0,0,1,0],[75,0,0,1,0],[76,0,1,0,3]],"usage":[[71,0,0,1,0],[72,0,0,2,0],[75,0,0,2,0],[76,0,0,1,1]],"flag":[[72,0,0,1,0],[75,0,0,1,0],[97,0,0,0,1]],"directory":[[72,0,0,1,0],[79,0,0,2,0]],"containing":[[72,0,0,1,0]],"written":[[72,0,0,1,0]],"glob":[[72,0,0,4,0],[75,0,0,2,0],[88,0,0,1,0]],"none":[[72,0,0,2,0]],"history":[[72,0,0,1,0],[79,0,0,1,0]],"fmt":[[72,0,0,1,0],[75,0,0,1,0]],"prints":[[72,0,0,1,0],[73,0,0,1,0]],"result":[[72,0,0,1,0],[80,0,0,0,3],[88,0,0,0,1],[89,0,1,0,0],[99,0,0,1,0],[110,0,0,1,0],[112,0,0,1,0]],"object":[[72,0,0,1,0],[73,0,0,1,0],[93,0,0,0,1],[99,0,0,1,0]],"stdout":[[72,0,0,1,0]],"alias":[[72,0,0,1,0]],"print":[[72,0,0,1,0],[73,0,0,1,0],[75,0,0,1,0]],"describing":[[73,0,0,1,0]],"was":[[73,0,0,1,0]],"abs":[[73,0,0,0,8]],"docsdir":[[73,0,0,0,1]],"llmstxt":[[73,0,0,0,1]],"docsllmstxt":[[73,0,0,0,1]],"docsllmsfulltxt":[[73,0,0,0,1]],"searchindex":[[73,0,0,0,1]],"searchcontent":[[73,0,0,0,1]],"inference":[[74,0,1,0,0]],"loaded":[[74,0,0,1,0]],"importing":[[74,0,0,1,0]],"inferred":[[74,0,0,2,0],[82,0,0,1,0]],"union":[[74,0,0,1,0]],"values":[[74,0,0,1,0]],"honored":[[74,0,0,0,1]],"positional":[[75,0,0,1,0]],"changelog":[[75,0,0,2,0],[88,0,0,2,0],[89,0,0,0,1],[91,0,1,0,0]],"subdirectory":[[75,0,0,1,0],[88,0,0,1,0]],"validated":[[75,0,0,1,0],[88,0,0,1,0]],"pretty":[[75,0,0,2,0]],"annotation":[[75,0,0,1,0]],"defaults":[[75,0,0,3,0],[83,0,0,1,0],[88,0,0,1,0],[93,0,0,1,0]],"passing":[[75,0,0,1,0]],"unlimited":[[75,0,0,1,0]],"count":[[75,0,0,1,0]],"exceeds":[[75,0,0,1,0]],"within":[[75,0,0,1,0]],"budget":[[75,0,0,2,0]],"exceeded":[[75,0,0,1,0]],"ignored":[[75,0,0,1,0],[103,0,0,1,0]],"partials":[[75,0,0,1,0],[83,0,0,1,0],[88,0,0,1,0]],"re":[[75,0,0,1,0],[103,0,0,0,2],[117,0,0,1,0]],"plug":[[75,0,0,1,0]],"valibot":[[75,0,0,1,0],[88,0,0,3,0],[93,0,0,1,1]],"schemas":[[75,0,0,1,0],[84,0,0,1,0],[88,0,0,3,0],[90,0,1,0,0],[91,0,1,0,0],[92,0,1,0,0],[93,0,1,0,1]],"show":[[76,0,0,1,0]],"thin":[[77,0,0,1,0],[114,0,0,1,0]],"wrapper":[[77,0,0,1,0]],"available":[[77,0,0,1,0]],"convertmdxtomarkdown":[[77,0,0,1,0],[78,0,0,0,1],[80,0,1,0,1]],"writemdxfileasmarkdown":[[77,0,0,1,0],[78,0,0,0,1],[81,0,1,0,1]],"generatedocssearchfiles":[[77,0,0,1,0],[110,0,0,0,2]],"lintdocs":[[77,0,0,1,0],[84,0,0,0,1],[88,0,0,0,2],[93,0,0,0,2]],"happy":[[77,0,0,1,0],[97,0,0,0,1]],"precedence":[[77,0,0,1,0],[101,0,1,0,0]],"alternate":[[77,0,0,1,0]],"calls":[[78,0,0,1,0]],"memory":[[78,0,0,1,0],[80,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0]],"batch":[[79,0,0,1,0]],"option":[[79,0,0,1,0],[88,0,0,1,0]],"destination":[[79,0,0,1,0]],"mirrors":[[79,0,0,1,0]],"matters":[[79,0,0,1,0],[102,0,0,1,0],[104,0,1,0,0]],"adds":[[79,0,0,1,0]],"concurrent":[[79,0,0,1,0],[82,0,0,1,0]],"large":[[79,0,0,1,0],[96,0,0,1,0]],"parallel":[[79,0,0,1,0]],"parsed":[[80,0,0,1,0]],"yourself":[[80,0,0,1,0]],"writing":[[80,0,0,1,0]],"feed":[[80,0,0,1,0],[104,0,0,1,0]],"touching":[[80,0,0,1,0],[108,0,0,1,0]],"disk":[[80,0,0,1,0]],"console":[[80,0,0,0,2]],"log":[[80,0,0,0,2]],"srcpath":[[81,0,0,0,1]],"outpath":[[81,0,0,0,1]],"preserved":[[82,0,0,1,0]],"blocks":[[82,0,0,2,0],[86,0,0,1,0],[103,0,0,1,0]],"survive":[[82,0,0,1,0]],"synthesized":[[82,0,0,1,0]],"sometimes":[[82,0,0,1,0]],"tables":[[82,0,0,1,0]],"compacted":[[82,0,0,1,0]],"global":[[82,0,0,1,0]],"pairing":[[83,0,1,0,0]],"setups":[[83,0,0,1,0]],"expand":[[83,0,0,1,0]],"ast":[[83,0,0,1,0]],"sees":[[83,0,0,1,0],[104,0,0,1,0],[105,0,0,1,0]],"rationale":[[83,0,0,1,0]],"documented":[[84,0,0,1,0]],"covers":[[84,0,0,1,0],[101,0,0,1,0]],"grouped":[[85,0,0,1,0]],"severity":[[86,0,0,1,0],[87,0,0,1,0],[89,0,0,0,1]],"active":[[86,0,0,1,0]],"won":[[86,0,0,1,0]],"treat":[[86,0,0,1,0],[94,0,0,1,0]],"highest":[[86,0,0,1,0]],"priority":[[86,0,0,1,0]],"similar":[[87,0,0,1,0],[103,0,0,1,0]],"linting":[[87,0,0,1,0]],"walking":[[87,0,0,1,0]],"performs":[[87,0,0,1,0]],"final":[[87,0,0,1,0],[101,0,0,1,0],[104,0,0,1,0]],"changelogdir":[[88,0,0,1,0]],"patterns":[[88,0,0,2,0]],"shown":[[88,0,0,1,0]],"unknownfieldseverity":[[88,0,0,1,1]],"changelogfrontmatter":[[88,0,0,1,0]],"failures":[[89,0,0,1,0]],"reported":[[89,0,0,1,0]],"lintresult":[[89,0,0,0,1]],"kind":[[89,0,0,0,1]],"filesscanned":[[89,0,0,0,1]],"yes":[[90,0,0,1,0],[91,0,0,3,0],[92,0,0,1,0]],"produced":[[90,0,0,1,0]],"semver":[[91,0,0,1,0]],"iso":[[91,0,0,1,0]],"parseable":[[91,0,0,1,0]],"release":[[91,0,0,1,0]],"improvement":[[91,0,0,1,0]],"retired":[[91,0,0,1,0]],"deprecation":[[91,0,0,1,0]],"authors":[[91,0,0,1,0]],"defaultopen":[[92,0,0,1,0]],"combined":[[92,0,0,1,0]],"provide":[[93,0,0,1,0]],"apply":[[93,0,0,1,0]],"customfrontmatter":[[93,0,0,0,2]],"minlength":[[93,0,0,0,1]],"audience":[[93,0,0,0,1]],"picklist":[[93,0,0,0,1]],"beginner":[[93,0,0,0,1]],"advanced":[[93,0,0,0,1]],"practical":[[94,0,1,0,0]],"guidance":[[94,0,1,0,0]],"template":[[94,0,0,1,0],[104,0,0,1,0]],"updates":[[94,0,0,1,0]],"wiring":[[94,0,0,1,0]],"pipelines":[[94,0,0,1,0]],"derived":[[95,0,0,1,0]],"purpose":[[96,0,0,1,0],[116,0,0,1,0]],"best":[[96,0,0,1,0],[97,0,0,0,1]],"starting":[[96,0,0,1,0],[97,0,0,0,1]],"lists":[[96,0,0,1,0]],"descriptions":[[96,0,0,1,0],[100,0,0,2,0]],"very":[[96,0,0,1,0]],"windows":[[96,0,0,1,0]],"narrower":[[96,0,0,1,0]],"budgets":[[96,0,0,1,0]],"appear":[[96,0,0,1,0]],"parent":[[96,0,0,1,0]],"thing":[[97,0,0,0,1],[98,0,0,0,1]],"well":[[97,0,0,0,1],[98,0,0,0,1]],"helper":[[97,0,0,0,1],[116,0,0,1,0]],"boring":[[97,0,0,0,1]],"parts":[[97,0,0,0,1]],"documentation":[[97,0,0,0,1]],"minute":[[97,0,0,0,1]],"typical":[[98,0,1,0,0]],"returns":[[99,0,0,1,0]],"useful":[[99,0,0,1,0]],"driving":[[99,0,0,1,0]],"mkdir":[[99,0,0,0,2]],"writefile":[[99,0,0,0,2]],"stringify":[[99,0,0,0,1]],"come":[[100,0,0,1,0]],"principles":[[100,0,0,1,0]],"prefer":[[100,0,0,1,0]],"narrow":[[100,0,0,1,0]],"giant":[[100,0,0,1,0]],"truncate":[[100,0,0,1,0]],"flavor":[[100,0,0,1,0]],"decide":[[100,0,0,1,0]],"beats":[[100,0,0,1,0]],"our":[[100,0,0,1,0]],"environment":[[101,0,0,1,0]],"variables":[[101,0,0,1,0]],"layered":[[101,0,0,1,0]],"lets":[[101,0,0,1,0]],"override":[[101,0,0,1,0],[106,0,0,1,0]],"org":[[101,0,0,1,0]],"wide":[[101,0,0,1,0]],"platforms":[[101,0,0,1,0]],"hardcoded":[[101,0,0,1,0]],"working":[[101,0,0,1,0]],"portless":[[101,0,0,0,1]],"stripped":[[102,0,0,1,0]],"remarkremoveimports":[[103,0,0,1,1]],"statements":[[103,0,0,1,0]],"remarkremovejsxcomments":[[103,0,0,1,1]],"comments":[[103,0,0,1,0]],"remarkresolvedocplaceholders":[[103,0,0,1,1],[104,0,0,1,0]],"remarksectiontomarkdown":[[103,0,0,1,1]],"containers":[[103,0,0,1,0]],"remarkcallouttomarkdown":[[103,0,0,1,1]],"remarkcardstomarkdown":[[103,0,0,1,1]],"bulleted":[[103,0,0,1,0]],"remarkdetailstomarkdown":[[103,0,0,1,1]],"remarkmermaidtomarkdown":[[103,0,0,1,1]],"remarkcommandtabstomarkdown":[[103,0,0,1,1]],"remarkstepstomarkdown":[[103,0,0,1,1]],"remarktabstomarkdown":[[103,0,0,1,1]],"remarkaccordiontomarkdown":[[103,0,0,1,1]],"remarktopicswitchertomarkdown":[[103,0,0,1,1]],"labeled":[[103,0,0,1,0]],"remarkexampletomarkdown":[[103,0,0,1,1]],"mdast":[[103,0,0,0,1]],"ri":[[103,0,0,0,2]],"rj":[[103,0,0,0,2]],"rd":[[103,0,0,0,2]],"rs":[[103,0,0,0,2]],"rc":[[103,0,0,0,2]],"rcd":[[103,0,0,0,2]],"rdt":[[103,0,0,0,2]],"rct":[[103,0,0,0,2]],"rst":[[103,0,0,0,2]],"rt":[[103,0,0,0,2]],"rtt":[[103,0,0,0,2]],"ra":[[103,0,0,0,2]],"rts":[[103,0,0,0,2]],"must":[[104,0,0,2,0]],"go":[[104,0,0,2,0]],"because":[[104,0,0,2,0]],"some":[[104,0,0,1,0]],"imported":[[104,0,0,1,0]],"flatteners":[[104,0,0,3,0]],"assume":[[104,0,0,1,0]],"strings":[[104,0,0,1,0]],"literals":[[104,0,0,1,0]],"reorder":[[104,0,0,1,0]],"casually":[[104,0,0,1,0]],"flattener":[[104,0,0,2,0],[105,0,0,1,0],[107,0,0,1,0]],"transform":[[104,0,0,1,0]],"contracted":[[104,0,0,1,0]],"insert":[[104,0,0,1,0]],"composition":[[105,0,0,1,0]],"included":[[105,0,0,1,0]],"expands":[[105,0,0,1,0]],"pipelineexampleoptions":[[106,0,0,0,1]],"types":[[106,0,0,0,1]],"selection":[[107,0,1,0,0]],"composed":[[107,0,0,1,0]],"fragments":[[107,0,0,1,0]],"intentionally":[[107,0,0,1,0]],"omit":[[107,0,0,1,0]],"processing":[[107,0,0,1,0]],"cost":[[107,0,0,1,0]],"almost":[[107,0,0,1,0]],"reordering":[[107,0,0,1,0]],"between":[[107,0,0,1,0]],"existing":[[107,0,0,1,0]],"ones":[[107,0,0,1,0]],"helpers":[[108,0,0,1,0],[109,0,0,1,0],[110,0,0,1,0],[111,0,0,1,0],[112,0,0,1,0],[113,0,0,1,0],[114,0,0,1,0],[115,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0]],"exposes":[[108,0,0,1,0],[115,0,0,1,0]],"queries":[[108,0,0,1,0]],"database":[[108,0,0,1,0]],"layers":[[108,0,0,1,0]],"document":[[109,0,0,2,0]],"jump":[[109,0,0,1,0]],"ranking":[[109,0,0,1,0]],"tunable":[[109,0,0,1,0]],"generator":[[109,0,0,1,0],[110,0,0,1,0]],"compact":[[109,0,0,1,0]],"tuple":[[109,0,0,1,0]],"term":[[109,0,0,1,0]],"postings":[[109,0,0,1,0]],"refs":[[109,0,0,2,0]],"actual":[[109,0,0,1,0]],"separated":[[109,0,0,1,0]],"loading":[[109,0,0,1,0]],"lazily":[[109,0,0,1,0]],"indexing":[[110,0,1,0,0]],"cheap":[[110,0,0,1,0],[117,0,0,1,0]],"hover":[[110,0,0,1,0]],"vercel":[[111,0,0,1,0],[114,0,0,0,2],[115,0,0,0,1],[116,0,0,1,0]],"anywhere":[[111,0,0,1,0]],"hash":[[111,0,0,1,0]],"snippets":[[111,0,0,1,0]],"ready":[[111,0,0,1,0]],"searchdocs":[[111,0,0,0,2]],"docssearchindex":[[111,0,0,0,2]],"docssearchcontentstore":[[111,0,0,0,2]],"indexjson":[[111,0,0,0,2]],"contentjson":[[111,0,0,0,2]],"doubles":[[112,0,0,1,0]],"virtual":[[112,0,0,1,0],[115,0,0,1,0]],"filesystem":[[112,0,0,1,0],[115,0,0,2,0]],"readers":[[112,0,0,1,0]],"picked":[[112,0,0,1,0]],"readdocscontentfile":[[112,0,0,1,2]],"entire":[[112,0,0,1,0]],"readdocscontentchunk":[[112,0,0,1,2]],"listdocscontentfiles":[[112,0,0,0,2]],"allfiles":[[112,0,0,0,1]],"wholepage":[[112,0,0,0,1]],"onechunk":[[112,0,0,0,1]],"createanswercontext":[[113,0,0,1,2],[114,0,0,1,0]],"query":[[113,0,0,1,0],[114,0,0,0,1],[116,0,0,1,0]],"retrieved":[[113,0,0,2,0]],"chunks":[[113,0,0,1,0],[115,0,0,1,0],[117,0,0,1,0]],"prompt":[[113,0,0,1,1]],"instructs":[[113,0,0,1,0]],"cite":[[113,0,0,1,0]],"sources":[[113,0,0,1,1],[114,0,0,2,1]],"references":[[113,0,0,1,0]],"say":[[113,0,0,1,0]],"insufficient":[[113,0,0,1,0]],"productname":[[113,0,0,0,1],[114,0,0,0,1]],"wrappers":[[114,0,0,1,0]],"around":[[114,0,0,1,0]],"stream":[[114,0,0,1,0]],"response":[[114,0,0,3,1]],"matching":[[114,0,0,1,0],[117,0,0,1,0]],"citation":[[114,0,0,1,0]],"display":[[114,0,0,1,0]],"embed":[[114,0,0,1,0]],"streamed":[[114,0,0,1,0]],"adapter":[[114,0,0,1,0],[115,0,0,1,0]],"createcloudflaredocsadapter":[[114,0,0,1,0]],"binding":[[114,0,0,1,0]],"gateway":[[114,0,0,1,2]],"streamdocsanswer":[[114,0,0,0,4]],"sdk":[[114,0,0,0,1]],"workers":[[114,0,0,0,1]],"openai":[[114,0,0,0,1]],"gpt":[[114,0,0,0,1]],"adapters":[[115,0,1,0,0]],"explore":[[115,0,0,1,0]],"shell":[[115,0,0,1,0]],"receiving":[[115,0,0,1,0]],"selected":[[115,0,0,1,0]],"ls":[[115,0,0,1,0]],"cat":[[115,0,0,1,0]],"find":[[115,0,0,1,0]],"grep":[[115,0,0,1,0]],"rg":[[115,0,0,1,0]],"execution":[[115,0,0,1,0]],"disabled":[[115,0,0,1,0]],"expose":[[115,0,0,1,0]],"createdocsbashtools":[[115,0,0,1,0]],"plural":[[115,0,0,1,0]],"createdocsbashtool":[[115,0,0,0,2]],"instructions":[[115,0,0,0,1]],"abuse":[[116,0,1,0,0]],"guards":[[116,0,1,0,0]],"reusable":[[116,0,0,1,0]],"utilities":[[116,0,0,1,0]],"validatedocsquery":[[116,0,0,1,0]],"cap":[[116,0,0,1,0]],"readjsonwithlimit":[[116,0,0,1,0]],"reject":[[116,0,0,1,0]],"oversized":[[116,0,0,1,0]],"bodies":[[116,0,0,1,0]],"getclientidentifier":[[116,0,0,1,0]],"common":[[116,0,0,1,0]],"proxy":[[116,0,0,1,0]],"ip":[[116,0,0,1,0]],"creatememoryratelimiter":[[116,0,0,1,0]],"implements":[[116,0,0,1,0]],"ratelimiter":[[116,0,0,2,0]],"demos":[[116,0,0,2,0]],"limiter":[[116,0,0,1,0]],"production":[[116,0,0,1,0]],"apps":[[116,0,0,1,0]],"adapt":[[116,0,0,1,0]],"interface":[[116,0,0,1,0]],"redis":[[116,0,0,1,0]],"kv":[[116,0,0,2,0]],"durable":[[116,0,0,1,0]],"objects":[[116,0,0,1,0]],"embeddings":[[117,0,1,2,0]],"keys":[[117,0,0,1,0]],"messages":[[117,0,0,1,0]],"users":[[117,0,0,1,0]],"faster":[[117,0,0,1,0]],"performance":[[117,0,0,1,0]],"optimization":[[117,0,0,1,0]],"grow":[[117,0,0,1,0]],"past":[[117,0,0,1,0]],"tens":[[117,0,0,1,0]],"thousands":[[117,0,0,1,0]],"cold":[[117,0,0,1,0]],"hit":[[117,0,0,1,0]],"noticeable":[[117,0,0,1,0]],"complementary":[[117,0,0,1,0]],"replacements":[[117,0,0,1,0]]},"averageChunkLength":76.05084745762711}
+{"version":2,"generatedAt":"2026-05-09T06:52:24.592Z","documents":[["authoring/components","Components","MDX components the pipeline knows how to flatten into agent-readable markdown.","/docs/authoring/components","https://docs.example.com/docs/authoring/components","authoring/components"],["authoring/frontmatter","Frontmatter","Required fields, group semantics, and how authored MDX becomes a navigation tree.","/docs/authoring/frontmatter","https://docs.example.com/docs/authoring/frontmatter","authoring/frontmatter"],["build/bundle-package-docs","Bundle docs into a package","Ship agent-readable docs inside an npm tarball — AGENTS.md at the package root plus per-topic .md files.","/docs/build/bundle-package-docs","https://docs.example.com/docs/build/bundle-package-docs","build/bundle-package-docs"],["build/connect-docs-site","Connect a docs site","Wire leadtype into a docs app build so it serves humans, agents, and search from one source.","/docs/build/connect-docs-site","https://docs.example.com/docs/build/connect-docs-site","build/connect-docs-site"],["build/validate-in-ci","Validate in CI","Run leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.","/docs/build/validate-in-ci","https://docs.example.com/docs/build/validate-in-ci","build/validate-in-ci"],["how-it-works","How it works","The mental model: one MDX source, a remark pipeline, two output modes, three audiences.","/docs/how-it-works","https://docs.example.com/docs/how-it-works","how-it-works"],["index","Leadtype","One MDX source. A website for humans, AGENTS.md for offline coding agents, llms.txt for HTTP agents — all from a single pipeline.","/docs","https://docs.example.com/docs","index"],["methodology","Methodology","How leadtype differs from Fumadocs, Starlight, and Mintlify.","/docs/methodology","https://docs.example.com/docs/methodology","methodology"],["quickstart","Quickstart","Install leadtype, run it against a docs folder, and inspect the four artifacts it produces.","/docs/quickstart","https://docs.example.com/docs/quickstart","quickstart"],["reference/cli","CLI","leadtype generate and leadtype lint — flags, exit codes, and JSON output.","/docs/reference/cli","https://docs.example.com/docs/reference/cli","reference/cli"],["reference/convert","Convert","MDX-to-markdown conversion APIs from leadtype/convert.","/docs/reference/convert","https://docs.example.com/docs/reference/convert","reference/convert"],["reference/lint","Lint rules","Schema, link, and navigation checks. CLI and library API.","/docs/reference/lint","https://docs.example.com/docs/reference/lint","reference/lint"],["reference/llm","LLM bundles","Generate llms.txt for hosted websites and AGENTS.md for npm-bundled offline reading.","/docs/reference/llm","https://docs.example.com/docs/reference/llm","reference/llm"],["reference/remark","Remark plugins","The default plugin stack that flattens MDX components into markdown.","/docs/reference/remark","https://docs.example.com/docs/reference/remark","reference/remark"],["reference/search","Search","Static search index, runtime helpers, and source-grounded answer streaming.","/docs/reference/search","https://docs.example.com/docs/reference/search","reference/search"]],"chunks":[["chunk-0",0,"components",["Components"],45,0],["chunk-1",0,"why-flatten-at-all",["Components","Why flatten at all?"],82,1],["chunk-2",0,"the-naming-contract",["Components","The naming contract"],76,2],["chunk-3",0,"component-reference",["Components","Component reference"],34,3],["chunk-4",0,"callout",["Components","Component reference","Callout"],74,4],["chunk-5",0,"cards",["Components","Component reference","Cards"],43,5],["chunk-6",0,"steps",["Components","Component reference","Steps"],74,6],["chunk-7",0,"tabs",["Components","Component reference","Tabs"],89,7],["chunk-8",0,"commandtabs",["Components","Component reference","CommandTabs"],111,8],["chunk-9",0,"accordion",["Components","Component reference","Accordion"],77,9],["chunk-10",0,"topicswitcher",["Components","Component reference","TopicSwitcher"],69,10],["chunk-11",0,"typetable-and-extractedtypetable",["Components","Component reference","TypeTable and ExtractedTypeTable"],86,11],["chunk-12",0,"example",["Components","Component reference","Example"],76,12],["chunk-13",0,"mermaid",["Components","Component reference","Mermaid"],62,13],["chunk-14",0,"guidelines",["Components","Guidelines"],55,14],["chunk-15",1,"frontmatter",["Frontmatter"],26,15],["chunk-16",1,"minimum",["Frontmatter","Minimum"],75,16],["chunk-17",1,"how-groups-become-a-nav-tree",["Frontmatter","How groups become a nav tree"],119,17],["chunk-18",1,"nested-groups",["Frontmatter","How groups become a nav tree","Nested groups"],69,18],["chunk-19",1,"optional-fields",["Frontmatter","Optional fields"],117,19],["chunk-20",1,"lint-rules",["Frontmatter","Lint rules"],88,20],["chunk-21",1,"what-this-gives-you",["Frontmatter","What this gives you"],55,21],["chunk-22",2,"bundle-docs-into-a-package",["Bundle docs into a package"],76,22],["chunk-23",2,"the-flow",["Bundle docs into a package","The flow"],86,23],["chunk-24",2,"why-agents-md-not-llms-txt",["Bundle docs into a package","Why AGENTS.md, not llms.txt?"],137,24],["chunk-25",2,"generate-into-the-package",["Bundle docs into a package","Generate into the package"],117,25],["chunk-26",2,"filter-to-package-specific-docs",["Bundle docs into a package","Filter to package-specific docs"],78,26],["chunk-27",2,"include-in-the-published-tarball",["Bundle docs into a package","Include in the published tarball"],156,27],["chunk-28",2,"include-in-the-published-tarball",["Bundle docs into a package","Include in the published tarball"],89,28],["chunk-29",2,"verify-before-publishing",["Bundle docs into a package","Verify before publishing"],71,29],["chunk-30",2,"tell-consuming-projects-to-use-the-bundle",["Bundle docs into a package","Tell consuming projects to use the bundle"],112,30],["chunk-31",2,"when-to-use-this",["Bundle docs into a package","When to use this"],72,31],["chunk-32",2,"what-s-next",["Bundle docs into a package","What's next"],31,32],["chunk-33",3,"connect-a-docs-site",["Connect a docs site"],54,33],["chunk-34",3,"the-flow",["Connect a docs site","The flow"],105,34],["chunk-35",3,"one-off-run",["Connect a docs site","One-off run"],71,35],["chunk-36",3,"wire-it-into-the-build",["Connect a docs site","Wire it into the build"],202,36],["chunk-37",3,"configure-the-product-and-groups",["Connect a docs site","Configure the product and groups"],94,37],["chunk-38",3,"serve-markdown-to-agents",["Connect a docs site","Serve markdown to agents"],273,38],["chunk-39",3,"serve-markdown-to-agents",["Connect a docs site","Serve markdown to agents"],95,39],["chunk-40",3,"connect-a-remote-source",["Connect a docs site","Connect a remote source"],131,40],["chunk-41",3,"verify",["Connect a docs site","Verify"],108,41],["chunk-42",3,"what-s-next",["Connect a docs site","What's next"],26,42],["chunk-43",4,"validate-in-ci",["Validate in CI"],49,43],["chunk-44",4,"what-it-catches",["Validate in CI","What it catches"],78,44],["chunk-45",4,"github-actions",["Validate in CI","GitHub Actions"],83,45],["chunk-46",4,"other-ci-providers",["Validate in CI","Other CI providers"],60,46],["chunk-47",4,"local-pre-push-hook",["Validate in CI","Local pre-push hook"],64,47],["chunk-48",4,"run-before-generate",["Validate in CI","Run before generate"],63,48],["chunk-49",4,"what-to-fix-first",["Validate in CI","What to fix first"],66,49],["chunk-50",5,"how-it-works",["How it works"],37,50],["chunk-51",5,"the-pipeline",["How it works","The pipeline"],138,51],["chunk-52",5,"two-output-modes",["How it works","Two output modes"],114,52],["chunk-53",5,"the-artifacts",["How it works","The artifacts"],182,53],["chunk-54",5,"the-artifacts",["How it works","The artifacts"],51,54],["chunk-55",5,"the-three-audiences",["How it works","The three audiences"],178,55],["chunk-56",5,"vocabulary",["How it works","Vocabulary"],146,56],["chunk-57",5,"what-runs-when",["How it works","What runs when"],85,57],["chunk-58",5,"where-to-next",["How it works","Where to next"],20,58],["chunk-59",6,"leadtype",["Leadtype"],182,59],["chunk-60",6,"choose-your-path",["Leadtype","Choose your path"],49,60],["chunk-61",6,"what-you-get",["Leadtype","What you get"],106,61],["chunk-62",6,"next",["Leadtype","Next"],49,62],["chunk-63",7,"methodology",["Methodology"],30,63],["chunk-64",7,"the-short-version",["Methodology","The short version"],67,64],["chunk-65",7,"what-leadtype-owns",["Methodology","What leadtype owns"],50,65],["chunk-66",7,"what-leadtype-does-not-own",["Methodology","What leadtype does not own"],31,66],["chunk-67",7,"when-the-combination-shines",["Methodology","When the combination shines"],75,67],["chunk-68",8,"quickstart",["Quickstart"],19,68],["chunk-69",8,"install",["Quickstart","Install"],55,69],["chunk-70",8,"author-one-page",["Quickstart","Author one page"],47,70],["chunk-71",8,"generate",["Quickstart","Generate"],111,71],["chunk-72",8,"inspect-the-output",["Quickstart","Inspect the output"],90,72],["chunk-73",8,"bundle-for-offline-agents",["Quickstart","Bundle for offline agents"],83,73],["chunk-74",8,"what-s-next",["Quickstart","What's next"],30,74],["chunk-75",9,"cli",["CLI"],30,75],["chunk-76",9,"generate",["CLI","generate"],173,76],["chunk-77",9,"generate",["CLI","generate"],49,77],["chunk-78",9,"bundle-mode",["CLI","generate","Bundle mode"],78,78],["chunk-79",9,"json-output-shape",["CLI","generate","JSON output shape"],117,79],["chunk-80",9,"group-inference",["CLI","generate","Group inference"],89,80],["chunk-81",9,"lint",["CLI","lint"],145,81],["chunk-82",9,"help",["CLI","help"],25,82],["chunk-83",9,"library-entry-points",["CLI","Library entry points"],66,83],["chunk-84",10,"convert",["Convert"],47,84],["chunk-85",10,"convertallmdx",["Convert","convertAllMdx"],67,85],["chunk-86",10,"convertmdxtomarkdown",["Convert","convertMdxToMarkdown"],54,86],["chunk-87",10,"writemdxfileasmarkdown",["Convert","writeMdxFileAsMarkdown"],28,87],["chunk-88",10,"behavior-notes",["Convert","Behavior notes"],50,88],["chunk-89",10,"pairing-with-remark-plugins",["Convert","Pairing with remark plugins"],54,89],["chunk-90",11,"lint-rules",["Lint rules"],46,90],["chunk-91",11,"rules",["Lint rules","Rules"],15,91],["chunk-92",11,"frontmatter-rules",["Lint rules","Rules","Frontmatter rules"],58,92],["chunk-93",11,"content-link-rules",["Lint rules","Rules","Content / link rules"],68,93],["chunk-94",11,"library-api",["Lint rules","Library API"],90,94],["chunk-95",11,"result-shape",["Lint rules","Library API","Result shape"],67,95],["chunk-96",11,"docs-frontmatter",["Lint rules","Default schemas","Docs frontmatter"],75,96],["chunk-97",11,"changelog-frontmatter",["Lint rules","Default schemas","Changelog frontmatter"],60,97],["chunk-98",11,"meta-json",["Lint rules","Default schemas","meta.json"],49,98],["chunk-99",11,"custom-schemas",["Lint rules","Custom schemas"],63,99],["chunk-100",11,"practical-guidance",["Lint rules","Practical guidance"],65,100],["chunk-101",12,"llm-bundles",["LLM bundles"],93,101],["chunk-102",12,"what-gets-generated",["LLM bundles","What gets generated"],99,102],["chunk-103",12,"example-llms-txt",["LLM bundles","Example llms.txt"],96,103],["chunk-104",12,"typical-sequence",["LLM bundles","Typical sequence"],91,104],["chunk-105",12,"generateagentsmd",["LLM bundles","generateAgentsMd"],144,105],["chunk-106",12,"example-output",["LLM bundles","generateAgentsMd","Example output"],86,106],["chunk-107",12,"resolvedocsnavigation",["LLM bundles","resolveDocsNavigation"],112,107],["chunk-108",12,"topic-design",["LLM bundles","Topic design"],78,108],["chunk-109",12,"base-url-precedence",["LLM bundles","Base URL precedence"],76,109],["chunk-110",13,"remark-plugins",["Remark plugins"],46,110],["chunk-111",13,"the-default-stack",["Remark plugins","The default stack"],158,111],["chunk-112",13,"why-order-matters",["Remark plugins","Why order matters"],81,112],["chunk-113",13,"remarkinclude",["Remark plugins","Optional plugins","remarkInclude"],40,113],["chunk-114",13,"remarktypetabletomarkdown-with-basepath",["Remark plugins","Optional plugins","remarkTypeTableToMarkdown with basePath"],98,114],["chunk-115",13,"plugin-selection-rules",["Remark plugins","Plugin selection rules"],63,115],["chunk-116",14,"search",["Search"],41,116],["chunk-117",14,"vocabulary",["Search","Vocabulary"],79,117],["chunk-118",14,"build-time-indexing",["Search","Build-time indexing"],67,118],["chunk-119",14,"runtime-search",["Search","Runtime search"],67,119],["chunk-120",14,"reading-docs-at-runtime",["Search","Reading docs at runtime"],62,120],["chunk-121",14,"source-grounded-answers",["Search","Source-grounded answers"],62,121],["chunk-122",14,"streaming-via-provider-entry-points",["Search","Streaming via provider entry points"],103,122],["chunk-123",14,"bash-tool-adapters",["Search","Bash tool adapters"],65,123],["chunk-124",14,"abuse-guards",["Search","Abuse guards"],60,124],["chunk-125",14,"when-to-add-embeddings",["Search","When to add embeddings"],73,125]],"terms":{"10":[[111,0,0,1,0]],"11":[[111,0,0,1,0]],"12":[[111,0,0,1,0]],"13":[[111,0,0,1,0]],"14":[[111,0,0,1,0]],"15":[[111,0,0,1,0]],"25":[[22,0,0,1,0],[53,0,0,1,0],[55,0,0,1,0]],"35":[[56,0,0,1,0],[117,0,0,1,0]],"50":[[38,0,0,1,0],[108,0,0,1,0]],"5173":[[41,0,0,1,0]],"8601":[[97,0,0,1,0]],"components":[[0,1,1,2,0],[1,1,1,2,0],[2,1,1,2,2],[3,1,1,1,0],[4,1,1,1,0],[5,1,1,1,0],[6,1,1,2,1],[7,1,1,1,0],[8,1,1,1,0],[9,1,1,1,0],[10,1,1,1,0],[11,1,1,1,0],[12,1,1,1,4],[13,1,1,1,0],[14,1,1,3,0],[51,0,0,2,1],[61,0,0,1,0],[66,0,0,1,0],[110,0,0,1,0],[111,0,0,1,0],[112,0,0,1,0],[113,0,0,1,0],[114,0,0,1,0],[115,0,0,1,0]],"mdx":[[0,0,0,1,0],[1,0,0,2,0],[2,0,0,1,1],[3,0,0,2,0],[4,0,0,1,0],[5,0,0,1,1],[6,0,0,2,1],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,3],[13,0,0,1,2],[14,0,0,1,0],[15,0,0,2,0],[16,0,0,1,1],[17,0,0,1,0],[18,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[23,0,0,0,1],[31,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,0,0,2],[43,0,0,1,0],[45,0,0,0,1],[50,0,0,2,0],[51,0,0,2,1],[52,0,0,1,0],[53,0,0,2,0],[54,0,0,1,0],[55,0,0,2,1],[56,0,0,2,0],[57,0,0,2,0],[58,0,0,1,0],[59,0,0,2,1],[60,0,0,1,0],[61,0,0,3,0],[62,0,0,1,0],[65,0,0,1,0],[66,0,0,1,0],[68,0,0,1,0],[70,0,0,1,1],[71,0,0,1,0],[72,0,0,1,0],[76,0,0,1,0],[84,0,0,2,0],[85,0,0,2,0],[86,0,0,1,1],[87,0,0,1,1],[88,0,0,2,0],[89,0,0,1,0],[90,0,0,1,0],[93,0,0,1,0],[94,0,0,1,0],[110,0,0,2,0],[111,0,0,2,1],[112,0,0,1,0],[113,0,0,1,0],[114,0,0,2,1],[115,0,0,1,0],[118,0,0,1,0]],"pipeline":[[0,0,0,2,0],[1,0,0,1,0],[2,0,0,2,0],[3,0,0,1,0],[4,0,0,2,0],[5,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,2,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[21,0,0,1,0],[36,0,0,1,8],[43,0,0,1,0],[50,0,0,1,0],[51,0,1,1,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[56,0,0,1,0],[57,0,0,1,0],[58,0,0,1,0],[59,0,0,2,0],[60,0,0,1,0],[61,0,0,1,0],[62,0,0,2,0],[63,0,0,1,0],[64,0,0,1,0],[65,0,0,1,0],[67,0,0,1,0],[68,0,0,1,0],[74,0,0,1,0],[75,0,0,1,0],[76,0,0,1,0],[80,0,0,1,0],[86,0,0,1,0],[103,0,0,0,1],[106,0,0,0,1]],"knows":[[0,0,0,1,0],[1,0,0,1,0],[2,0,0,1,0],[3,0,0,1,0],[4,0,0,1,0],[5,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0]],"flatten":[[0,0,0,2,0],[1,0,1,1,0],[2,0,0,1,0],[3,0,0,1,0],[4,0,0,3,0],[5,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[51,0,0,0,1],[56,0,0,1,0],[111,0,0,2,0]],"into":[[0,0,0,2,0],[1,0,0,2,0],[2,0,0,1,0],[3,0,0,1,0],[4,0,0,3,0],[5,0,0,1,1],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[16,0,0,0,1],[19,0,0,1,0],[22,1,1,0,0],[23,1,1,0,0],[24,1,1,0,0],[25,1,2,0,0],[26,1,1,0,0],[27,1,1,0,0],[28,1,1,0,0],[29,1,1,0,0],[30,1,1,0,0],[31,1,1,0,0],[32,1,1,0,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,1,2,0],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,1,0],[40,0,0,2,0],[41,0,0,1,0],[42,0,0,1,0],[43,0,0,1,0],[46,0,0,1,0],[51,0,0,1,0],[52,0,0,1,0],[56,0,0,1,0],[73,0,0,1,0],[74,0,0,2,0],[76,0,0,2,0],[78,0,0,1,0],[84,0,0,1,0],[88,0,0,1,0],[89,0,0,1,0],[100,0,0,1,0],[102,0,0,1,0],[106,0,0,1,0],[110,0,0,3,0],[111,0,0,1,0],[112,0,0,2,0],[113,0,0,1,0],[114,0,0,1,0],[115,0,0,1,0],[121,0,0,1,0]],"agent":[[0,0,0,1,0],[1,0,0,2,0],[2,0,0,1,0],[3,0,0,2,0],[4,0,0,1,0],[5,0,0,1,1],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,2,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,4,0],[25,0,0,1,1],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,2,0],[31,0,0,1,0],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,2,0],[51,0,0,1,0],[55,0,0,1,4],[59,0,0,1,0],[64,0,0,1,0],[67,0,0,2,0],[72,0,0,1,1],[78,0,0,1,0],[88,0,0,1,0],[101,0,0,1,0],[105,0,0,1,0],[108,0,0,1,0],[109,0,0,1,1],[110,0,0,1,0],[115,0,0,1,0],[123,0,0,1,0]],"readable":[[0,0,0,1,0],[1,0,0,1,0],[2,0,0,1,0],[3,0,0,1,0],[4,0,0,1,0],[5,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,1],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[32,0,0,1,0],[33,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[72,0,0,0,1],[73,0,0,1,0],[110,0,0,1,0]],"markdown":[[0,0,0,2,0],[1,0,0,3,0],[2,0,0,1,0],[3,0,0,2,0],[4,0,0,1,0],[5,0,0,1,1],[6,0,0,2,1],[7,0,0,1,0],[8,0,0,2,0],[9,0,0,1,0],[10,0,0,1,0],[11,0,0,1,0],[12,0,0,1,0],[13,0,0,2,5],[14,0,0,2,0],[22,0,0,1,0],[34,0,0,2,0],[38,0,1,5,4],[39,0,1,0,1],[41,0,0,2,0],[51,0,0,3,0],[53,0,0,2,0],[55,0,0,1,1],[56,0,0,2,0],[57,0,0,2,0],[59,0,0,0,1],[61,0,0,2,0],[63,0,0,1,0],[65,0,0,1,0],[67,0,0,1,0],[71,0,0,1,0],[84,0,0,2,0],[85,0,0,1,0],[86,0,0,2,1],[87,0,0,1,0],[88,0,0,2,0],[89,0,0,1,0],[110,0,0,3,0],[111,0,0,3,1],[112,0,0,1,0],[113,0,0,1,0],[114,0,0,2,0],[115,0,0,1,0],[118,0,0,1,0]],"leadtype":[[0,0,0,1,0],[6,0,0,1,1],[8,0,0,8,4],[12,0,0,1,1],[14,0,0,1,0],[15,0,0,1,0],[16,0,0,0,1],[20,0,0,1,0],[22,0,0,1,0],[23,0,0,0,1],[24,0,0,1,0],[25,0,0,0,1],[26,0,0,0,1],[27,0,0,0,4],[29,0,0,0,1],[33,0,0,2,0],[34,0,0,2,0],[35,0,0,2,1],[36,0,0,1,2],[37,0,0,1,1],[38,0,0,1,0],[39,0,0,1,1],[40,0,0,1,2],[41,0,0,1,0],[42,0,0,1,0],[43,0,0,3,0],[44,0,0,1,0],[45,0,0,1,1],[46,0,0,1,1],[47,0,0,1,1],[48,0,0,3,2],[49,0,0,1,0],[50,0,0,1,0],[52,0,0,3,0],[57,0,0,1,0],[59,1,1,2,2],[60,1,1,0,0],[61,1,1,1,0],[62,1,1,1,0],[63,0,0,2,0],[64,0,0,3,0],[65,0,1,1,0],[66,0,1,1,0],[67,0,0,4,0],[68,0,0,1,0],[69,0,0,11,0],[70,0,0,1,0],[71,0,0,1,1],[72,0,0,1,0],[73,0,0,1,1],[74,0,0,1,0],[75,0,0,3,1],[76,0,0,2,1],[77,0,0,2,0],[78,0,0,2,1],[79,0,0,2,0],[80,0,0,2,1],[81,0,0,2,1],[82,0,0,2,3],[83,0,0,7,0],[84,0,0,3,1],[85,0,0,1,1],[86,0,0,1,0],[87,0,0,1,0],[88,0,0,1,0],[89,0,0,1,1],[90,0,0,1,1],[94,0,0,0,1],[99,0,0,0,1],[100,0,0,1,0],[101,0,0,3,1],[104,0,0,0,3],[105,0,0,0,1],[109,0,0,1,1],[110,0,0,0,1],[114,0,0,0,1],[116,0,0,1,0],[118,0,0,0,1],[119,0,0,0,1],[120,0,0,0,1],[121,0,0,0,1],[122,0,0,0,3],[123,0,0,0,1]],"does":[[0,0,0,1,0],[10,0,0,1,0],[36,0,0,1,0],[37,0,0,0,1],[38,0,0,1,0],[66,0,1,0,0],[70,0,0,0,1],[71,0,0,1,0],[103,0,0,0,1],[104,0,0,0,1],[106,0,0,0,1]],"not":[[0,0,0,1,0],[7,0,0,1,0],[9,0,0,1,0],[10,0,0,1,0],[24,0,1,1,0],[30,0,0,1,0],[44,0,0,1,0],[49,0,0,1,0],[57,0,0,1,0],[59,0,0,1,0],[63,0,0,1,0],[66,0,1,0,0],[80,0,0,1,0],[92,0,0,1,0],[108,0,0,1,0],[112,0,0,1,0],[117,0,0,1,0],[125,0,0,1,0]],"ship":[[0,0,0,1,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,1],[28,0,0,1,1],[29,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[32,0,0,1,0],[40,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[59,0,0,1,0],[60,0,0,1,0],[67,0,0,1,0],[73,0,0,1,0],[78,0,0,1,0],[105,0,0,1,0],[106,0,0,0,1]],"ui":[[0,0,0,1,0],[14,0,0,1,0],[21,0,0,1,0],[34,0,0,1,0],[40,0,0,1,0],[55,0,0,0,3],[59,0,0,1,1],[64,0,0,1,0],[66,0,0,1,0],[67,0,0,1,0],[107,0,0,1,0],[119,0,0,1,0]],"your":[[0,0,0,1,0],[2,0,0,3,0],[14,0,0,1,0],[19,0,0,1,0],[22,0,0,2,0],[23,0,0,0,1],[24,0,0,2,0],[27,0,0,1,0],[30,0,0,4,2],[31,0,0,1,0],[33,0,0,2,0],[34,0,0,1,0],[36,0,0,1,0],[38,0,0,1,0],[41,0,0,2,0],[46,0,0,1,0],[50,0,0,1,0],[52,0,0,1,0],[54,0,0,2,0],[55,0,0,4,0],[56,0,0,1,0],[59,0,0,2,1],[60,0,1,1,0],[61,0,0,2,0],[66,0,0,1,0],[67,0,0,2,0],[70,0,0,1,0],[72,0,0,1,0],[74,0,0,1,0],[89,0,0,1,0],[99,0,0,1,0],[107,0,0,2,0],[114,0,0,1,0],[116,0,0,1,0],[122,0,0,1,0],[125,0,0,1,0]],"docs":[[0,0,0,1,0],[2,0,0,0,1],[5,0,0,0,1],[6,0,0,2,1],[10,0,0,1,2],[12,0,0,0,1],[14,0,0,1,0],[16,0,0,1,2],[17,0,0,2,1],[18,0,0,1,3],[20,0,0,2,0],[22,1,1,3,0],[23,1,1,1,3],[24,1,1,1,0],[25,1,1,2,2],[26,1,2,2,0],[27,1,1,3,7],[28,1,1,1,2],[29,1,1,2,0],[30,1,1,3,1],[31,1,1,3,0],[32,1,1,1,0],[33,1,1,2,0],[34,1,1,8,0],[35,1,1,2,2],[36,1,1,2,2],[37,1,1,3,3],[38,1,1,2,4],[39,1,1,1,0],[40,1,1,7,4],[41,1,1,7,0],[42,1,1,1,0],[43,0,0,1,0],[44,0,0,2,0],[45,0,0,0,3],[46,0,0,0,1],[47,0,0,0,1],[48,0,0,0,1],[49,0,0,1,0],[50,0,0,2,0],[51,0,0,0,2],[52,0,0,6,0],[53,0,0,5,0],[54,0,0,1,0],[55,0,0,3,0],[56,0,0,3,0],[57,0,0,2,0],[59,0,0,3,3],[60,0,0,2,0],[63,0,0,3,0],[64,0,0,4,0],[66,0,0,1,0],[67,0,0,2,0],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,2,0],[71,0,0,6,1],[72,0,0,2,2],[73,0,0,4,0],[74,0,0,3,0],[76,0,0,9,0],[77,0,0,1,0],[78,0,0,3,0],[79,0,0,0,5],[80,0,0,2,3],[81,0,0,1,0],[85,0,0,1,2],[86,0,0,0,1],[87,0,0,0,2],[89,0,0,1,0],[93,0,0,3,0],[94,0,0,1,1],[96,0,1,0,0],[99,0,0,0,1],[100,0,0,1,0],[101,0,0,3,0],[102,0,0,4,0],[103,0,0,0,10],[104,0,0,1,4],[105,0,0,5,0],[106,0,0,1,4],[107,0,0,1,2],[108,0,0,1,0],[109,0,0,0,1],[113,0,0,1,0],[115,0,0,1,0],[116,0,0,1,0],[118,0,0,1,3],[119,0,0,0,2],[120,0,1,0,0],[122,0,0,1,0],[123,0,0,2,0],[125,0,0,2,0]],"app":[[0,0,0,1,0],[2,0,0,1,0],[3,0,0,1,0],[12,0,0,1,1],[14,0,0,1,0],[16,0,0,0,1],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,0,1,0],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,1,0],[40,0,0,2,0],[41,0,0,1,0],[42,0,0,1,0],[66,0,0,1,0],[67,0,0,1,0]],"owns":[[0,0,0,1,0],[12,0,0,0,2],[26,0,0,1,0],[65,0,1,0,0]],"runtime":[[0,0,0,1,0],[12,0,0,0,2],[14,0,0,1,0],[77,0,0,1,0],[103,0,0,0,1],[116,0,0,2,0],[117,0,0,1,0],[118,0,0,1,0],[119,0,1,2,0],[120,0,1,1,0],[121,0,0,1,0],[122,0,0,2,0],[123,0,0,1,0],[124,0,0,1,0],[125,0,0,1,0]],"rendering":[[0,0,0,1,0],[33,0,0,1,0],[88,0,0,1,0],[114,0,0,1,0]],"styling":[[0,0,0,1,0],[4,0,0,2,0],[12,0,0,0,1],[66,0,0,1,0]],"accessibility":[[0,0,0,1,0]],"only":[[0,0,0,1,0],[10,0,0,1,0],[14,0,0,1,0],[18,0,0,2,0],[26,0,0,1,0],[31,0,0,1,0],[36,0,0,1,0],[51,0,0,0,3],[52,0,0,1,0],[53,0,0,3,0],[56,0,0,1,0],[73,0,0,1,0],[76,0,0,1,0],[78,0,0,1,0],[79,0,0,2,0],[102,0,0,1,0],[115,0,0,1,0],[121,0,0,1,0],[123,0,0,1,0],[125,0,0,1,0]],"has":[[0,0,0,1,0],[20,0,0,1,0],[52,0,0,1,0],[56,0,0,1,0]],"honor":[[0,0,0,1,0]],"small":[[0,0,0,1,0],[53,0,0,1,0],[118,0,0,1,0]],"naming":[[0,0,0,1,0],[2,0,1,0,0]],"contract":[[0,0,0,1,0],[2,0,1,1,0],[14,0,0,1,0],[51,0,0,1,0],[58,0,0,1,0],[99,0,0,1,0]],"so":[[0,0,0,1,0],[1,0,0,1,0],[4,0,0,1,0],[7,0,0,1,0],[13,0,0,1,0],[20,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[27,0,0,0,1],[28,0,0,0,1],[30,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,0,2,1],[37,0,0,1,0],[38,0,0,2,0],[39,0,0,1,0],[40,0,0,3,0],[41,0,0,1,0],[42,0,0,1,0],[43,0,0,2,0],[44,0,0,1,0],[45,0,0,2,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,1,0],[49,0,0,1,0],[50,0,0,1,0],[53,0,0,3,0],[54,0,0,1,0],[65,0,0,1,0],[73,0,0,1,0],[88,0,0,1,0],[89,0,0,1,0],[93,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0],[104,0,0,1,0],[106,0,0,0,1],[112,0,0,1,0],[113,0,0,1,0],[117,0,0,2,0],[121,0,0,1,0]],"remark":[[0,0,0,1,0],[2,0,0,2,0],[4,0,0,1,0],[5,0,0,1,0],[9,0,0,1,0],[13,0,0,0,2],[14,0,0,1,0],[27,0,0,0,1],[36,0,0,1,1],[50,0,0,1,0],[51,0,0,3,4],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[56,0,0,1,0],[57,0,0,2,0],[58,0,0,1,0],[65,0,0,1,0],[69,0,0,1,0],[71,0,0,1,0],[83,0,0,1,0],[84,0,0,1,0],[85,0,0,0,1],[89,0,1,1,1],[93,0,0,1,0],[104,0,0,0,1],[110,1,1,1,1],[111,1,1,0,0],[112,1,1,0,0],[113,1,1,0,0],[114,1,1,0,1],[115,1,1,0,0]],"each":[[0,0,0,1,0],[1,0,0,1,0],[3,0,0,1,0],[17,0,0,2,0],[26,0,0,1,0],[53,0,0,1,0],[55,0,0,1,0],[56,0,0,1,0],[57,0,0,2,0],[60,0,0,1,0],[67,0,0,1,0],[71,0,0,1,0],[81,0,0,1,0],[109,0,0,1,0],[110,0,0,1,0],[112,0,0,1,0],[117,0,0,1,0]],"component":[[0,0,0,1,0],[1,0,0,1,0],[3,0,1,0,0],[4,0,1,0,0],[5,0,1,0,0],[6,0,1,0,0],[7,0,1,0,0],[8,0,1,0,0],[9,0,1,0,0],[10,0,1,0,0],[11,0,1,0,0],[12,0,1,1,0],[13,0,1,0,0],[14,0,0,1,0],[19,0,0,1,0],[36,0,0,0,1],[51,0,0,1,0],[54,0,0,1,0],[56,0,0,1,0],[66,0,0,2,0],[89,0,0,1,0],[107,0,0,1,0],[110,0,0,1,0],[112,0,0,3,0]],"agents":[[0,0,0,1,0],[1,0,0,1,0],[4,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[9,0,0,1,0],[13,0,0,0,2],[22,0,0,4,0],[23,0,0,1,2],[24,0,1,9,0],[25,0,0,4,1],[26,0,0,1,0],[27,0,0,2,2],[28,0,0,1,0],[29,0,0,3,0],[30,0,0,5,1],[31,0,0,3,0],[32,0,0,1,0],[33,0,0,1,0],[34,0,0,2,0],[35,0,0,1,0],[36,0,0,1,0],[37,0,0,1,0],[38,0,1,3,0],[39,0,1,1,0],[40,0,0,1,0],[41,0,0,1,0],[42,0,0,1,0],[51,0,0,0,3],[52,0,0,1,0],[53,0,0,6,0],[55,0,0,6,3],[59,0,0,6,8],[60,0,0,3,0],[61,0,0,8,0],[62,0,0,3,0],[65,0,0,1,0],[72,0,0,0,1],[73,0,1,2,0],[76,0,0,4,0],[78,0,0,1,0],[101,0,0,2,0],[102,0,0,2,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,0,5,0],[106,0,0,1,1],[107,0,0,1,0],[108,0,0,3,0],[109,0,0,1,0]],"search":[[0,0,0,1,0],[1,0,0,1,0],[5,0,0,1,0],[13,0,0,0,1],[19,0,0,2,0],[21,0,0,1,0],[25,0,0,1,0],[33,0,0,2,0],[34,0,0,7,0],[35,0,0,2,0],[36,0,0,2,3],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,1,0],[40,0,0,2,0],[41,0,0,3,0],[42,0,0,2,0],[51,0,0,0,4],[52,0,0,2,0],[53,0,0,3,0],[55,0,0,0,4],[56,0,0,1,0],[57,0,0,1,0],[59,0,0,2,4],[61,0,0,1,0],[63,0,0,1,0],[64,0,0,1,0],[65,0,0,1,0],[67,0,0,1,0],[69,0,0,1,0],[71,0,0,3,0],[72,0,0,1,2],[73,0,0,1,0],[76,0,0,1,0],[78,0,0,2,0],[79,0,0,1,3],[83,0,0,1,0],[116,1,1,2,0],[117,1,1,5,0],[118,1,1,2,3],[119,1,2,2,3],[120,1,1,2,1],[121,1,1,1,1],[122,1,1,1,3],[123,1,1,1,1],[124,1,1,1,0],[125,1,1,2,0]],"llms":[[0,0,0,1,0],[9,0,0,1,0],[13,0,0,0,2],[16,0,0,3,0],[17,0,0,2,5],[18,0,0,1,0],[21,0,0,2,0],[24,0,1,4,0],[25,0,0,2,0],[34,0,0,2,0],[35,0,0,1,0],[37,0,0,1,0],[41,0,0,2,0],[51,0,0,0,2],[52,0,0,4,0],[53,0,0,6,0],[54,0,0,1,0],[55,0,0,2,1],[56,0,0,3,0],[59,0,0,2,3],[60,0,0,1,0],[61,0,0,3,0],[62,0,0,1,0],[63,0,0,1,0],[65,0,0,1,0],[67,0,0,1,0],[71,0,0,3,0],[72,0,0,1,4],[73,0,0,1,0],[76,0,0,5,0],[78,0,0,3,0],[79,0,0,0,3],[80,0,0,1,0],[101,0,0,2,0],[102,0,0,6,0],[103,0,1,1,0],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,1,0],[107,0,0,1,0],[108,0,0,2,0],[109,0,0,1,0],[114,0,0,1,0]],"full":[[0,0,0,1,0],[16,0,0,1,0],[17,0,0,1,4],[18,0,0,1,0],[19,0,0,2,0],[20,0,0,1,0],[21,0,0,1,0],[25,0,0,1,0],[27,0,0,1,0],[34,0,0,1,0],[36,0,0,1,0],[41,0,0,2,0],[44,0,0,1,0],[51,0,0,0,1],[52,0,0,2,0],[53,0,0,2,0],[56,0,0,2,0],[59,0,0,0,1],[65,0,0,1,0],[71,0,0,2,0],[72,0,0,0,2],[73,0,0,1,0],[75,0,0,1,0],[76,0,0,1,0],[78,0,0,2,0],[79,0,0,0,1],[81,0,0,1,0],[89,0,0,1,0],[96,0,0,1,0],[101,0,0,1,0],[102,0,0,4,0],[106,0,0,1,0],[108,0,0,1,0],[114,0,0,1,0]],"txt":[[0,0,0,1,0],[13,0,0,0,2],[16,0,0,3,0],[17,0,0,2,3],[18,0,0,1,0],[21,0,0,2,0],[24,0,1,4,0],[25,0,0,1,0],[34,0,0,2,0],[35,0,0,1,0],[37,0,0,1,0],[41,0,0,2,0],[51,0,0,0,2],[52,0,0,3,0],[53,0,0,5,0],[54,0,0,1,0],[55,0,0,2,1],[56,0,0,2,0],[59,0,0,2,2],[60,0,0,1,0],[61,0,0,3,0],[62,0,0,1,0],[63,0,0,1,0],[65,0,0,1,0],[67,0,0,1,0],[71,0,0,3,0],[72,0,0,1,4],[73,0,0,1,0],[76,0,0,4,0],[78,0,0,3,0],[79,0,0,0,3],[80,0,0,1,0],[101,0,0,2,0],[102,0,0,6,0],[103,0,1,1,1],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,1,0],[107,0,0,1,0],[108,0,0,1,0],[109,0,0,1,0]],"bundles":[[0,0,0,1,0],[32,0,0,1,0],[33,0,0,1,0],[57,0,0,1,0],[61,0,0,1,0],[64,0,0,1,0],[65,0,0,1,0],[67,0,0,1,0],[71,0,0,1,0],[72,0,0,1,0],[80,0,0,1,0],[101,1,1,1,0],[102,1,1,1,0],[103,1,1,0,0],[104,1,1,0,0],[105,1,1,0,0],[106,1,1,0,0],[107,1,1,2,0],[108,1,1,0,0],[109,1,1,0,0],[114,0,0,1,0]],"why":[[1,0,1,0,0],[24,0,1,0,0],[112,0,1,0,0]],"all":[[1,0,1,0,0],[36,0,0,1,0],[59,0,0,1,0],[60,0,0,1,0],[61,0,0,2,0],[62,0,0,1,0],[69,0,0,1,0],[72,0,0,0,1],[101,0,0,1,0],[102,0,0,1,0],[108,0,0,1,0]],"interactive":[[1,0,0,1,0],[13,0,0,1,0],[51,0,0,1,0],[56,0,0,1,0],[110,0,0,1,0]],"like":[[1,0,0,1,0],[4,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[72,0,0,1,0],[105,0,0,1,0]],"tabs":[[1,0,0,2,0],[2,0,0,1,0],[7,0,1,0,2],[51,0,0,1,0],[56,0,0,1,0],[61,0,0,1,0],[111,0,0,1,0],[119,0,0,0,1]],"callout":[[1,0,0,2,0],[2,0,0,1,0],[4,0,1,0,2],[11,0,0,2,0],[12,0,0,0,2],[14,0,0,1,0],[51,0,0,1,0],[56,0,0,1,0],[61,0,0,1,0],[111,0,0,1,0]],"render":[[1,0,0,2,0],[3,0,0,1,0],[12,0,0,0,1],[13,0,0,1,0],[38,0,0,1,0],[41,0,0,1,0],[45,0,0,1,0],[55,0,0,0,1],[57,0,0,1,0],[86,0,0,1,0]],"fine":[[1,0,0,1,0],[36,0,0,1,0],[124,0,0,1,0]],"browser":[[1,0,0,1,0],[41,0,0,1,0],[55,0,0,0,1],[59,0,0,0,1]],"but":[[1,0,0,1,0],[4,0,0,2,0],[16,0,0,1,0],[30,0,0,1,0],[64,0,0,1,0],[67,0,0,1,0],[105,0,0,1,0],[107,0,0,1,0]],"do":[[1,0,0,1,0],[4,0,0,1,0],[7,0,0,1,0],[121,0,0,0,1]],"nothing":[[1,0,0,1,0],[49,0,0,1,0]],"reading":[[1,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[57,0,0,1,0],[59,0,0,1,0],[61,0,0,1,0],[73,0,0,1,0],[101,0,0,1,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,1,0],[107,0,0,1,0],[108,0,0,1,0],[109,0,0,1,0],[120,0,1,0,0]],"raw":[[1,0,0,1,0]],"text":[[1,0,0,1,0],[13,0,0,1,0],[16,0,0,1,0],[34,0,0,3,0],[38,0,0,5,5],[41,0,0,3,0],[55,0,0,1,1],[56,0,0,1,0],[59,0,0,0,1],[67,0,0,1,0],[76,0,0,3,0],[77,0,0,2,0],[108,0,0,1,0],[117,0,0,1,0],[122,0,0,1,0],[124,0,0,1,0]],"flattening":[[1,0,0,1,0],[2,0,0,1,0],[9,0,0,1,0],[13,0,0,1,0],[14,0,0,1,0],[89,0,0,1,0],[93,0,0,1,0]],"converts":[[1,0,0,1,0],[35,0,0,1,0],[61,0,0,1,0]],"portable":[[1,0,0,1,0],[56,0,0,1,0],[64,0,0,1,0]],"equivalent":[[1,0,0,1,0],[7,0,0,1,0],[10,0,0,1,0],[56,0,0,1,0],[81,0,0,1,0],[110,0,0,1,0]],"conversion":[[1,0,0,1,0],[6,0,0,1,1],[9,0,0,1,0],[11,0,0,1,0],[12,0,0,0,1],[16,0,0,1,0],[36,0,0,0,1],[59,0,0,1,0],[65,0,0,1,0],[67,0,0,1,0],[77,0,0,1,0],[84,0,0,1,0],[85,0,0,1,0],[86,0,0,1,0],[87,0,0,1,0],[88,0,0,2,0],[89,0,0,1,0],[103,0,0,0,1],[104,0,0,1,0],[114,0,0,2,0],[118,0,0,1,0]],"time":[[1,0,0,1,0],[11,0,0,1,0],[22,0,0,1,0],[36,0,0,0,1],[40,0,0,1,0],[57,0,0,1,0],[100,0,0,1,0],[114,0,0,2,0],[116,0,0,1,0],[118,0,1,0,0]],"becomes":[[1,0,0,4,0],[15,0,0,1,0],[16,0,0,2,0],[17,0,0,1,0],[18,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[51,0,0,3,0],[125,0,0,1,0]],"blockquote":[[1,0,0,1,0],[4,0,0,1,0],[51,0,0,1,0],[56,0,0,1,0],[111,0,0,1,0]],"stack":[[1,0,0,1,0],[51,0,0,2,1],[56,0,0,1,0],[57,0,0,1,0],[65,0,0,1,0],[71,0,0,1,0],[84,0,0,1,0],[89,0,0,2,0],[93,0,0,1,0],[110,0,0,2,0],[111,0,1,2,0],[112,0,0,1,0],[113,0,0,2,0],[114,0,0,1,0],[115,0,0,1,0]],"bold":[[1,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[51,0,0,1,0],[56,0,0,1,0],[111,0,0,1,0]],"headings":[[1,0,0,1,0],[7,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[51,0,0,1,0],[53,0,0,1,0],[56,0,0,3,0],[102,0,0,1,0],[117,0,0,1,0]],"one":[[1,0,0,1,0],[8,0,0,1,0],[16,0,0,1,0],[21,0,0,3,0],[24,0,0,1,0],[25,0,0,0,1],[26,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,1,1,0],[36,0,0,3,0],[37,0,0,1,1],[38,0,0,1,0],[39,0,0,1,0],[40,0,0,2,0],[41,0,0,2,0],[42,0,0,1,0],[50,0,0,2,0],[51,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,2,0],[56,0,0,1,0],[57,0,0,2,0],[58,0,0,1,0],[59,0,0,2,0],[60,0,0,2,0],[61,0,0,2,0],[62,0,0,1,0],[65,0,0,1,0],[67,0,0,1,0],[70,0,1,0,1],[71,0,0,2,0],[78,0,0,1,0],[86,0,0,1,0],[87,0,0,1,0],[102,0,0,2,0],[103,0,0,0,1],[104,0,0,0,1],[106,0,0,0,1],[108,0,0,1,0],[112,0,0,2,0],[114,0,0,1,0],[122,0,0,2,0]],"per":[[1,0,0,1,0],[8,0,0,2,0],[17,0,0,1,0],[21,0,0,1,0],[22,0,0,2,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,1],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[32,0,0,1,0],[36,0,0,1,0],[41,0,0,1,0],[46,0,0,1,0],[61,0,0,1,0],[71,0,0,1,0],[72,0,0,0,1],[78,0,0,1,0],[84,0,0,1,0],[102,0,0,1,0],[111,0,0,1,0],[114,0,0,1,0]],"tab":[[1,0,0,1,0],[2,0,0,1,0],[7,0,0,0,6],[111,0,0,1,0]],"typetable":[[1,0,0,1,0],[2,0,0,1,0],[11,0,1,1,1],[51,0,0,1,0],[61,0,0,1,0],[111,0,0,1,0],[115,0,0,1,0]],"table":[[1,0,0,1,0],[8,0,0,1,0],[11,0,0,1,0],[51,0,0,1,0],[111,0,0,2,0],[114,0,0,1,0]],"mermaid":[[1,0,0,2,0],[2,0,0,1,0],[13,0,1,1,2],[17,0,0,0,1],[23,0,0,0,1],[34,0,0,1,0],[51,0,0,0,1],[55,0,0,0,1],[59,0,0,0,1],[61,0,0,1,0],[88,0,0,1,0],[111,0,0,2,1]],"fenced":[[1,0,0,1,0],[13,0,0,1,0],[111,0,0,2,0]],"block":[[1,0,0,1,0],[13,0,0,1,0],[15,0,0,1,0],[111,0,0,2,0]],"diagram":[[1,0,0,1,0],[13,0,0,1,0],[62,0,0,1,0]],"source":[[1,0,0,1,0],[12,0,0,1,1],[13,0,0,1,0],[17,0,0,1,0],[21,0,0,1,0],[25,0,0,0,1],[31,0,0,1,0],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,0,1,0],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,1,0],[40,0,1,3,0],[41,0,0,1,0],[42,0,0,1,0],[43,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[52,0,0,2,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[56,0,0,1,0],[57,0,0,1,0],[58,0,0,1,0],[59,0,0,1,1],[60,0,0,1,0],[61,0,0,2,0],[62,0,0,1,0],[65,0,0,1,0],[81,0,0,1,0],[88,0,0,1,0],[89,0,0,1,0],[90,0,0,1,0],[101,0,0,1,0],[105,0,0,1,0],[113,0,0,1,0],[116,0,0,2,0],[117,0,0,1,0],[118,0,0,1,0],[119,0,0,1,0],[120,0,0,1,0],[121,0,1,1,0],[122,0,0,1,0],[123,0,0,1,0],[124,0,0,1,0],[125,0,0,1,0]],"survives":[[1,0,0,1,0]],"other":[[1,0,0,1,0],[13,0,0,1,0],[46,0,1,0,0],[51,0,0,1,0],[55,0,0,1,0],[92,0,0,1,0],[100,0,0,1,0]],"tooling":[[1,0,0,1,0],[22,0,0,1,0]],"this":[[1,0,0,1,0],[4,0,0,1,0],[6,0,0,1,1],[21,0,1,0,0],[22,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[30,0,0,2,0],[31,0,1,2,0],[33,0,0,1,0],[40,0,0,1,0],[49,0,0,1,0],[50,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[78,0,0,1,0],[86,0,0,1,0],[90,0,0,1,0],[106,0,0,0,1],[111,0,0,1,0],[113,0,0,1,0]],"means":[[1,0,0,1,0]],"same":[[1,0,0,1,0],[2,0,0,1,0],[6,0,0,1,0],[17,0,0,1,0],[21,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[38,0,0,3,0],[43,0,0,1,0],[48,0,0,1,0],[52,0,0,1,0],[56,0,0,2,0],[71,0,0,1,0],[72,0,0,1,0],[81,0,0,1,0],[93,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0],[105,0,0,3,0],[107,0,0,2,0],[120,0,0,1,0],[123,0,0,1,0]],"content":[[1,0,0,1,0],[4,0,0,1,1],[6,0,0,1,0],[7,0,0,3,0],[9,0,0,4,0],[34,0,0,2,0],[38,0,0,4,1],[41,0,0,3,0],[48,0,0,1,0],[49,0,0,1,0],[51,0,0,0,1],[53,0,0,3,0],[55,0,0,1,0],[56,0,0,1,0],[57,0,0,1,0],[61,0,0,1,0],[64,0,0,2,0],[67,0,0,3,0],[71,0,0,3,0],[72,0,0,1,2],[75,0,0,1,0],[78,0,0,1,0],[79,0,0,0,1],[81,0,0,1,0],[93,0,1,0,0],[95,0,0,0,1],[100,0,0,2,0],[101,0,0,1,0],[102,0,0,1,0],[113,0,0,1,0],[117,0,0,4,0],[118,0,0,1,1],[119,0,0,0,2],[120,0,0,0,2],[121,0,0,0,1],[122,0,0,0,1],[123,0,0,0,1]],"reaches":[[1,0,0,1,0]],"three":[[1,0,0,1,0],[15,0,0,1,0],[36,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,1,1,0],[56,0,0,1,0],[57,0,0,1,0],[58,0,0,1,0],[61,0,0,1,0],[101,0,0,1,0],[120,0,0,1,0],[122,0,0,1,0]],"audiences":[[1,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,1,1,0],[56,0,0,1,0],[57,0,0,1,0],[58,0,0,1,0],[61,0,0,1,0]],"humans":[[1,0,0,1,0],[6,0,0,1,0],[22,0,0,1,0],[33,0,0,1,0],[34,0,0,2,0],[35,0,0,1,0],[36,0,0,1,0],[37,0,0,1,0],[38,0,0,2,0],[39,0,0,1,0],[40,0,0,1,0],[41,0,0,1,0],[42,0,0,1,0],[55,0,0,1,1],[59,0,0,2,3],[60,0,0,1,0],[61,0,0,2,0],[62,0,0,1,0]],"without":[[1,0,0,1,0],[16,0,0,1,0],[21,0,0,1,0],[22,0,0,1,0],[55,0,0,1,0],[80,0,0,1,0],[86,0,0,1,0],[88,0,0,1,0],[109,0,0,1,0],[116,0,0,1,0],[117,0,0,1,0]],"you":[[1,0,0,1,0],[2,0,0,1,0],[11,0,0,1,0],[14,0,0,1,0],[19,0,0,1,0],[21,0,1,1,0],[22,0,0,1,0],[27,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[33,0,0,1,0],[36,0,0,2,0],[41,0,0,2,0],[47,0,0,1,0],[52,0,0,1,0],[55,0,0,1,0],[56,0,0,1,0],[59,0,0,1,0],[60,0,0,1,0],[61,0,1,0,0],[64,0,0,3,0],[67,0,0,2,0],[69,0,0,1,0],[72,0,0,1,0],[74,0,0,1,0],[81,0,0,1,0],[83,0,0,1,0],[84,0,0,1,0],[86,0,0,1,0],[99,0,0,1,0],[101,0,0,1,0],[106,0,0,0,1],[108,0,0,1,0],[112,0,0,2,0],[115,0,0,2,0],[117,0,0,1,0],[120,0,0,2,0],[121,0,0,1,0],[123,0,0,1,0]],"maintaining":[[1,0,0,1,0]],"two":[[1,0,0,1,0],[2,0,0,1,0],[37,0,0,1,0],[38,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[52,0,1,2,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,2,0],[56,0,0,2,0],[57,0,0,1,0],[58,0,0,1,0],[60,0,0,1,0],[75,0,0,1,0],[101,0,0,1,0],[108,0,0,1,0],[115,0,0,1,0]],"copies":[[1,0,0,1,0]],"recognizes":[[2,0,0,1,0]],"these":[[2,0,0,1,0],[53,0,0,1,0],[84,0,0,1,0],[101,0,0,1,0],[106,0,0,0,1],[108,0,0,1,0]],"names":[[2,0,0,4,0],[14,0,0,1,0],[50,0,0,1,0],[62,0,0,1,0],[112,0,0,1,0],[125,0,0,1,0]],"if":[[2,0,0,2,0],[14,0,0,1,0],[16,0,0,1,0],[17,0,0,1,0],[21,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,0,1],[29,0,0,2,0],[31,0,0,1,0],[36,0,0,1,0],[38,0,0,0,6],[39,0,0,0,2],[40,0,0,1,0],[41,0,0,2,0],[57,0,0,1,0],[89,0,0,1,0],[107,0,0,0,1],[112,0,0,1,0],[115,0,0,1,0]],"just":[[2,0,0,1,0],[31,0,0,1,0],[117,0,0,1,0]],"works":[[2,0,0,1,0],[21,0,0,1,0],[35,0,0,1,0],[50,1,1,0,0],[51,1,1,0,0],[52,1,1,0,0],[53,1,1,1,0],[54,1,1,0,0],[55,1,1,0,0],[56,1,1,0,0],[57,1,1,0,0],[58,1,1,0,0],[62,0,0,1,0],[76,0,0,1,0],[101,0,0,1,0],[103,0,0,0,3],[106,0,0,0,2],[119,0,0,1,0]],"accordion":[[2,0,0,1,0],[9,0,1,0,2],[111,0,0,1,0]],"accordionitem":[[2,0,0,1,0],[9,0,0,0,2]],"card":[[2,0,0,1,0],[5,0,0,0,1]],"cards":[[2,0,0,1,0],[5,0,1,0,2],[111,0,0,1,0]],"commandtabs":[[2,0,0,1,0],[8,0,1,0,3],[111,0,0,1,0]],"details":[[2,0,0,1,0],[9,0,0,2,1],[111,0,0,1,0]],"example":[[2,0,0,1,0],[3,0,0,1,0],[12,0,1,1,2],[35,0,0,0,1],[71,0,0,0,1],[80,0,0,0,1],[103,0,1,0,5],[104,0,0,0,2],[106,0,1,0,0],[107,0,0,0,1],[109,0,0,0,1],[111,0,0,1,0],[112,0,0,1,0],[118,0,0,0,1]],"extractedtypetable":[[2,0,0,1,0],[11,0,1,1,0],[36,0,0,1,1],[111,0,0,1,0],[114,0,0,1,1]],"section":[[2,0,0,1,0],[3,0,0,1,0],[17,0,0,1,0],[21,0,0,1,0],[56,0,0,1,0],[80,0,0,1,0],[98,0,0,1,0],[111,0,0,1,0],[117,0,0,1,0]],"selector":[[2,0,0,1,0]],"step":[[2,0,0,1,0],[6,0,0,1,4],[27,0,0,1,0],[36,0,0,1,0],[57,0,0,1,0]],"steps":[[2,0,0,1,0],[6,0,1,0,2],[45,0,0,0,1],[61,0,0,1,0],[111,0,0,1,0]],"topicswitcher":[[2,0,0,1,0],[10,0,1,0,1],[19,0,0,1,0],[111,0,0,1,0]],"uses":[[2,0,0,1,0],[30,0,0,1,0],[45,0,0,0,2]],"different":[[2,0,0,1,0],[31,0,0,1,0],[40,0,0,1,0],[44,0,0,1,0],[52,0,0,1,0],[55,0,0,2,0]],"have":[[2,0,0,1,0],[31,0,0,1,0],[47,0,0,1,0],[74,0,0,1,0],[120,0,0,1,0]],"options":[[2,0,0,1,0],[75,0,0,0,1],[76,0,0,0,1],[81,0,0,0,1],[114,0,0,1,0],[122,0,0,1,0]],"rename":[[2,0,0,1,0]],"match":[[2,0,0,1,0],[125,0,0,1,0]],"add":[[2,0,0,1,0],[8,0,0,3,1],[12,0,0,1,0],[14,0,0,1,0],[27,0,0,1,0],[30,0,0,1,0],[36,0,0,1,0],[61,0,0,1,0],[69,0,0,3,0],[70,0,0,1,0],[73,0,0,1,0],[76,0,0,1,0],[81,0,0,1,0],[99,0,0,1,0],[113,0,0,1,0],[115,0,0,1,0],[125,0,1,1,0]],"custom":[[2,0,0,1,0],[27,0,0,1,0],[81,0,0,1,0],[83,0,0,2,0],[84,0,0,1,0],[94,0,0,3,0],[99,0,1,1,0],[112,0,0,2,0],[115,0,0,1,0]],"plugin":[[2,0,0,1,0],[14,0,0,2,0],[27,0,0,1,0],[36,0,0,2,0],[38,0,0,1,0],[51,0,0,0,1],[56,0,0,1,0],[65,0,0,1,0],[71,0,0,1,0],[83,0,0,1,0],[84,0,0,2,0],[85,0,0,1,0],[89,0,0,1,0],[110,0,0,1,0],[111,0,0,1,0],[112,0,0,2,0],[113,0,0,1,0],[114,0,0,4,0],[115,0,1,2,0]],"that":[[2,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[20,0,0,1,0],[22,0,0,1,0],[24,0,0,2,0],[25,0,0,1,0],[30,0,0,1,0],[31,0,0,2,0],[35,0,0,1,0],[37,0,0,1,0],[38,0,0,2,0],[43,0,0,1,0],[44,0,0,2,0],[46,0,0,1,0],[52,0,0,2,0],[53,0,0,1,0],[55,0,0,2,0],[56,0,0,3,0],[57,0,0,1,0],[59,0,0,1,0],[60,0,0,2,0],[61,0,0,1,0],[67,0,0,1,0],[72,0,0,1,0],[73,0,0,1,0],[78,0,0,1,0],[80,0,0,1,0],[93,0,0,1,0],[95,0,0,1,0],[99,0,0,1,0],[103,0,0,0,2],[104,0,0,0,1],[105,0,0,2,0],[106,0,0,0,1],[110,0,0,1,0],[111,0,0,1,0],[112,0,0,1,0],[113,0,0,1,0],[114,0,0,1,0],[115,0,0,1,0],[116,0,0,1,0],[122,0,0,1,0],[125,0,0,1,0]],"maps":[[2,0,0,1,0]],"back":[[2,0,0,1,0],[38,0,0,1,0],[41,0,0,1,0],[86,0,0,1,0]],"above":[[2,0,0,1,0],[11,0,0,1,1],[38,0,0,1,0],[64,0,0,1,0],[73,0,0,1,0]],"tsx":[[2,0,0,0,1],[4,0,0,0,1],[5,0,0,0,1],[6,0,0,0,1],[7,0,0,0,1],[8,0,0,0,1],[9,0,0,0,1],[10,0,0,0,1],[11,0,0,0,1],[12,0,0,0,3],[13,0,0,0,1]],"import":[[2,0,0,0,1],[12,0,0,0,1],[27,0,0,0,5],[36,0,0,0,2],[37,0,0,0,1],[38,0,0,0,1],[80,0,0,0,2],[84,0,0,0,1],[85,0,0,0,1],[89,0,0,0,1],[90,0,0,0,1],[94,0,0,0,1],[99,0,0,0,2],[101,0,0,0,1],[104,0,0,0,3],[105,0,0,0,1],[107,0,0,2,1],[110,0,0,0,1],[111,0,0,1,0],[114,0,0,0,1],[118,0,0,0,1],[119,0,0,0,3],[120,0,0,0,1],[121,0,0,0,1],[122,0,0,0,3],[123,0,0,0,1]],"mdxcomponents":[[2,0,0,0,2],[12,0,0,0,1]],"const":[[2,0,0,0,1],[27,0,0,0,2],[28,0,0,0,2],[36,0,0,0,4],[38,0,0,0,3],[39,0,0,0,3],[86,0,0,0,1],[94,0,0,0,1],[99,0,0,0,1],[107,0,0,0,2],[109,0,0,0,1],[114,0,0,0,1],[119,0,0,0,1],[120,0,0,0,3],[121,0,0,0,1],[122,0,0,0,1],[123,0,0,0,1]],"reference":[[3,0,1,0,0],[4,0,1,0,0],[5,0,1,0,1],[6,0,1,0,0],[7,0,1,0,0],[8,0,1,0,0],[9,0,1,1,1],[10,0,1,0,0],[11,0,1,0,0],[12,0,1,0,0],[13,0,1,0,0],[17,0,0,0,1],[20,0,0,1,0],[32,0,0,1,0],[42,0,0,2,0],[44,0,0,1,0],[58,0,0,1,0],[81,0,0,1,0],[90,0,0,1,0],[103,0,0,0,2],[106,0,0,0,2]],"below":[[3,0,0,1,0],[94,0,0,1,0],[106,0,0,0,1]],"shows":[[3,0,0,1,0]],"authored":[[3,0,0,1,0],[13,0,0,1,0],[15,0,0,1,0],[16,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[72,0,0,1,0]],"live":[[3,0,0,1,0],[7,0,0,1,0],[35,0,0,1,0]],"switch":[[3,0,0,1,0]],"view":[[3,0,0,1,0]],"robot":[[3,0,0,1,0]],"icon":[[3,0,0,1,0],[19,0,0,2,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0]],"header":[[3,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0]],"see":[[3,0,0,1,0],[4,0,0,1,0],[16,0,0,1,0],[20,0,0,1,0],[31,0,0,1,0],[36,0,0,1,0],[37,0,0,1,0],[40,0,0,1,0],[41,0,0,1,0],[44,0,0,1,0],[51,0,0,2,0],[55,0,0,1,0],[56,0,0,1,0],[62,0,0,1,0],[66,0,0,1,0],[70,0,0,1,0],[72,0,0,3,0],[73,0,0,1,0],[78,0,0,1,0],[80,0,0,1,0],[81,0,0,1,0],[89,0,0,1,0],[93,0,0,1,0],[100,0,0,1,0],[106,0,0,1,0]],"flattened":[[3,0,0,1,0],[6,0,0,1,1],[9,0,0,1,0],[51,0,0,2,0],[53,0,0,1,0],[71,0,0,1,0],[72,0,0,1,1],[102,0,0,1,0],[110,0,0,1,0],[111,0,0,1,0]],"side":[[3,0,0,2,0],[13,0,0,1,0],[114,0,0,1,0]],"wraps":[[4,0,0,1,0]],"supporting":[[4,0,0,2,0],[9,0,0,1,1],[22,0,0,1,0],[55,0,0,1,0]],"context":[[4,0,0,2,0],[19,0,0,1,0],[48,0,0,1,0],[53,0,0,1,0],[65,0,0,1,0],[102,0,0,2,0],[120,0,0,1,0],[121,0,0,2,1]],"warnings":[[4,0,0,2,0],[45,0,0,2,1],[47,0,0,0,1],[81,0,0,3,0],[95,0,0,0,1],[99,0,0,1,0]],"tips":[[4,0,0,2,0]],"variants":[[4,0,0,2,0]],"change":[[4,0,0,2,0]],"identically":[[4,0,0,2,0],[67,0,0,1,0]],"info":[[4,0,0,1,1],[11,0,0,1,1]],"heads":[[4,0,0,1,1]],"up":[[4,0,0,1,1],[43,0,0,1,0]],"callouts":[[4,0,0,1,0]],"wrap":[[4,0,0,1,0]],"flattens":[[4,0,0,1,0],[5,0,0,1,0],[6,0,0,1,0],[7,0,0,1,0],[8,0,0,1,0],[56,0,0,2,0],[84,0,0,1,0],[110,0,0,1,0],[111,0,0,1,0],[112,0,0,1,0],[113,0,0,1,0],[114,0,0,1,0],[115,0,0,1,0]],"them":[[4,0,0,1,0],[9,0,0,1,1],[19,0,0,1,0],[26,0,0,1,0],[30,0,0,1,0],[38,0,0,0,1],[49,0,0,1,0],[73,0,0,1,0],[89,0,0,1,0],[96,0,0,1,0],[106,0,0,0,1],[118,0,0,1,0]],"blockquotes":[[4,0,0,1,0]],"still":[[4,0,0,1,0],[9,0,0,1,0],[20,0,0,1,0],[93,0,0,1,0]],"warning":[[4,0,0,2,0],[38,0,0,1,0],[45,0,0,1,0],[81,0,0,1,0]],"don":[[4,0,0,1,0],[19,0,0,1,0],[25,0,0,1,0],[31,0,0,2,0],[44,0,0,1,0],[55,0,0,1,0],[59,0,0,1,0],[96,0,0,1,0],[112,0,0,1,0],[115,0,0,1,0],[122,0,0,1,0]],"success":[[4,0,0,1,0],[12,0,0,0,1],[77,0,0,1,0]],"error":[[4,0,0,1,0],[20,0,0,2,0],[28,0,0,0,1],[40,0,0,0,1],[44,0,0,1,0],[45,0,0,1,1],[46,0,0,0,1],[48,0,0,0,1],[49,0,0,1,0],[77,0,0,3,0],[79,0,0,1,0],[81,0,0,2,0],[92,0,0,6,0],[93,0,0,3,0],[94,0,0,1,1],[95,0,0,0,2],[99,0,0,1,0],[107,0,0,0,1],[125,0,0,1,0]],"tip":[[4,0,0,1,0]],"title":[[4,0,0,0,1],[5,0,0,0,1],[6,0,0,0,2],[9,0,0,0,1],[11,0,0,1,1],[12,0,0,0,2],[16,0,0,1,1],[18,0,0,0,3],[19,0,0,1,0],[37,0,0,0,2],[51,0,0,0,1],[70,0,0,1,1],[79,0,0,0,1],[80,0,0,1,0],[88,0,0,1,0],[96,0,0,2,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,0,1]],"variant":[[4,0,0,0,1],[7,0,0,1,0],[11,0,0,1,1],[12,0,0,0,1]],"body":[[4,0,0,0,1],[11,0,0,1,1],[16,0,0,1,0],[51,0,0,0,1],[53,0,0,1,0],[56,0,0,1,0],[111,0,0,1,0],[117,0,0,1,0]],"goes":[[4,0,0,0,1]],"here":[[4,0,0,0,1],[60,0,0,1,0],[62,0,0,1,0],[74,0,0,1,0]],"grid":[[5,0,0,1,0]],"short":[[5,0,0,1,0],[19,0,0,1,0],[35,0,0,0,1],[37,0,0,0,1],[64,0,1,0,0]],"linked":[[5,0,0,1,0]],"entry":[[5,0,0,1,0],[16,0,0,1,0],[25,0,0,0,1],[69,0,0,1,0],[83,0,1,1,0],[84,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0],[102,0,0,1,0],[114,0,0,1,0],[116,0,0,1,0],[122,0,1,0,0]],"points":[[5,0,0,1,0],[20,0,0,1,0],[24,0,0,1,0],[69,0,0,1,0],[83,0,1,1,0],[93,0,0,1,0],[102,0,0,1,0],[103,0,0,0,1],[116,0,0,1,0],[122,0,1,0,0]],"bullet":[[5,0,0,1,0],[37,0,0,0,2]],"list":[[5,0,0,1,0],[6,0,0,2,1],[26,0,0,1,0],[29,0,0,1,0],[44,0,0,1,0],[81,0,0,1,0],[106,0,0,0,1],[111,0,0,3,0]],"links":[[5,0,0,1,0],[20,0,0,1,0],[44,0,0,2,0],[52,0,0,1,0],[55,0,0,1,0],[65,0,0,1,0],[76,0,0,1,0],[81,0,0,1,0],[93,0,0,2,0],[102,0,0,2,0],[106,0,0,1,0],[120,0,0,1,0],[122,0,0,1,0]],"convert":[[5,0,0,1,2],[16,0,0,1,0],[27,0,0,0,1],[33,0,0,1,0],[36,0,0,2,5],[56,0,0,1,0],[57,0,0,1,0],[69,0,0,1,0],[71,0,0,1,0],[76,0,0,1,0],[83,0,0,1,0],[84,1,1,2,1],[85,1,1,2,0],[86,1,1,2,0],[87,1,1,2,0],[88,1,1,1,0],[89,1,1,1,0],[104,0,0,0,1]],"description":[[5,0,0,0,1],[11,0,0,1,2],[12,0,0,0,1],[16,0,0,1,1],[19,0,0,1,0],[51,0,0,0,1],[52,0,0,1,0],[53,0,0,1,0],[56,0,0,1,0],[70,0,0,0,1],[76,0,0,2,0],[81,0,0,1,0],[85,0,0,1,0],[88,0,0,1,0],[94,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[105,0,0,1,0]],"turn":[[5,0,0,0,1]],"friendly":[[5,0,0,0,1],[55,0,0,1,0]],"href":[[5,0,0,0,1],[10,0,0,0,2]],"numbered":[[6,0,0,1,0]],"walkthroughs":[[6,0,0,1,0]],"ordered":[[6,0,0,1,0],[111,0,0,1,0]],"titles":[[6,0,0,1,0],[53,0,0,1,0],[56,0,0,1,0],[80,0,0,0,1],[117,0,0,1,0]],"author":[[6,0,0,1,1],[19,0,0,1,0],[37,0,0,1,0],[61,0,0,1,0],[70,0,1,0,0],[96,0,0,1,0]],"authoring":[[6,0,0,1,0],[17,0,0,0,3]],"affordances":[[6,0,0,1,0]],"run":[[6,0,0,1,1],[8,0,0,2,1],[22,0,0,1,0],[27,0,0,3,0],[29,0,0,1,1],[33,0,0,1,0],[35,0,1,0,0],[36,0,0,0,7],[40,0,0,1,1],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,2],[46,0,0,1,0],[47,0,0,1,0],[48,0,1,2,0],[49,0,0,1,0],[57,0,0,1,0],[59,0,0,0,6],[61,0,0,1,0],[67,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[71,0,0,1,0],[72,0,0,1,0],[73,0,0,1,0],[74,0,0,1,0],[75,0,0,1,0],[80,0,0,1,0],[90,0,0,1,0],[100,0,0,2,0],[103,0,0,0,1],[104,0,0,1,0],[106,0,0,0,1],[108,0,0,1,0],[112,0,0,2,0],[121,0,0,0,1]],"generate":[[6,0,0,1,1],[22,0,0,1,0],[23,0,0,0,1],[25,0,1,0,1],[26,0,0,0,1],[27,0,0,1,2],[29,0,0,0,1],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,1],[36,0,0,0,2],[40,0,0,1,1],[43,0,0,1,0],[48,0,1,2,1],[52,0,0,3,0],[57,0,0,2,0],[59,0,0,0,2],[61,0,0,1,0],[71,0,1,1,1],[73,0,0,0,1],[75,0,0,2,0],[76,0,1,1,1],[77,0,1,1,0],[78,0,1,1,1],[79,0,1,1,0],[80,0,1,1,0],[81,0,0,1,0],[82,0,0,1,1],[83,0,0,1,0],[84,0,0,1,0],[100,0,0,1,0],[101,0,0,3,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,1,0],[107,0,0,1,0],[108,0,0,1,0],[109,0,0,1,0],[118,0,0,1,0]],"writes":[[6,0,0,1,1],[25,0,0,1,0],[40,0,0,1,0],[52,0,0,2,0],[71,0,0,3,0],[73,0,0,1,0],[76,0,0,1,0],[78,0,0,1,0],[105,0,0,1,0],[118,0,0,1,0],[123,0,0,1,0]],"public":[[6,0,0,1,0],[7,0,0,1,0],[31,0,0,1,0],[34,0,0,1,0],[35,0,0,0,1],[36,0,0,0,1],[40,0,0,0,1],[41,0,0,5,0],[48,0,0,0,1],[52,0,0,2,0],[55,0,0,0,1],[57,0,0,1,0],[59,0,0,0,1],[67,0,0,1,0],[71,0,0,5,1],[72,0,0,2,1],[76,0,0,1,0],[79,0,0,0,6],[80,0,0,0,1],[85,0,0,0,1],[87,0,0,0,1],[95,0,0,1,0],[104,0,0,0,3],[118,0,0,0,1],[119,0,0,0,2]],"serve":[[6,0,0,1,0],[7,0,0,1,0],[38,0,1,2,1],[39,0,1,0,0],[61,0,0,1,0]],"both":[[6,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[31,0,0,1,0],[48,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[55,0,0,1,0],[71,0,0,1,0],[76,0,0,1,0]],"formats":[[6,0,0,1,0],[38,0,0,1,0],[56,0,0,1,0]],"html":[[6,0,0,1,0],[34,0,0,2,0],[38,0,0,2,2],[41,0,0,1,0],[55,0,0,1,1],[61,0,0,1,0]],"md":[[6,0,0,1,0],[7,0,0,2,0],[14,0,0,1,0],[22,0,0,4,0],[23,0,0,2,4],[24,0,1,7,0],[25,0,0,6,4],[26,0,0,2,0],[27,0,0,3,3],[28,0,0,2,0],[29,0,0,6,0],[30,0,0,4,2],[31,0,0,2,0],[32,0,0,2,0],[34,0,0,1,0],[38,0,0,4,3],[41,0,0,1,0],[51,0,0,0,8],[52,0,0,3,0],[53,0,0,6,0],[54,0,0,1,0],[55,0,0,5,1],[56,0,0,1,0],[57,0,0,1,0],[59,0,0,2,4],[60,0,0,1,0],[61,0,0,4,0],[62,0,0,1,0],[71,0,0,1,0],[72,0,0,1,1],[73,0,0,2,0],[76,0,0,5,0],[78,0,0,2,0],[85,0,0,1,0],[87,0,0,0,1],[88,0,0,1,0],[94,0,0,1,0],[101,0,0,3,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,0,7,0],[106,0,0,2,4],[107,0,0,1,0],[108,0,0,1,0],[109,0,0,1,0],[114,0,0,1,0],[115,0,0,1,0]],"url":[[6,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[24,0,0,1,0],[35,0,0,0,1],[36,0,0,1,0],[38,0,0,2,5],[39,0,0,0,3],[52,0,0,1,0],[55,0,0,1,0],[56,0,0,1,0],[71,0,0,0,1],[76,0,0,3,0],[78,0,0,1,0],[83,0,0,1,0],[93,0,0,1,0],[96,0,0,1,0],[100,0,0,1,0],[105,0,0,2,0],[109,0,1,2,3]],"negotiated":[[6,0,0,1,0],[67,0,0,1,0]],"accept":[[6,0,0,1,0],[7,0,0,1,0],[34,0,0,2,0],[38,0,0,1,5],[39,0,0,0,5],[41,0,0,1,0],[55,0,0,1,1],[56,0,0,1,0],[59,0,0,0,1]],"group":[[7,0,0,1,0],[15,0,0,1,0],[16,0,0,4,1],[17,0,0,5,4],[18,0,0,2,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,3,0],[25,0,0,0,1],[28,0,0,0,1],[37,0,0,1,0],[41,0,0,2,0],[51,0,0,0,3],[53,0,0,2,0],[54,0,0,1,0],[56,0,0,3,0],[57,0,0,2,0],[61,0,0,1,0],[70,0,0,1,1],[71,0,0,3,0],[72,0,0,0,1],[77,0,0,1,0],[78,0,0,1,0],[80,0,1,1,0],[96,0,0,1,0],[102,0,0,2,0],[105,0,0,2,0],[107,0,0,2,1],[108,0,0,1,0]],"followed":[[7,0,0,1,0]],"need":[[7,0,0,1,0],[27,0,0,1,0],[30,0,0,1,0],[50,0,0,1,0],[59,0,0,1,0],[69,0,0,1,0],[81,0,0,1,0],[83,0,0,1,0],[84,0,0,1,0],[101,0,0,1,0],[106,0,0,0,1],[112,0,0,1,0],[120,0,0,1,0]],"jsx":[[7,0,0,1,0],[51,0,0,1,0],[111,0,0,1,0],[114,0,0,1,0]],"aware":[[7,0,0,1,0],[8,0,0,1,0],[56,0,0,1,0],[117,0,0,1,0]],"renderer":[[7,0,0,1,0]],"read":[[7,0,0,1,0],[10,0,0,1,0],[14,0,0,1,0],[22,0,0,1,0],[23,0,0,0,1],[24,0,0,1,0],[30,0,0,0,1],[31,0,0,1,0],[37,0,0,1,0],[40,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[55,0,0,1,0],[59,0,0,0,1],[62,0,0,2,0],[106,0,0,0,1],[108,0,0,1,0],[112,0,0,1,0],[115,0,0,1,0],[117,0,0,1,0],[123,0,0,1,0],[124,0,0,1,0]],"every":[[7,0,0,1,0],[9,0,0,1,0],[15,0,0,1,0],[22,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[37,0,0,1,0],[38,0,0,1,0],[41,0,0,1,0],[50,0,0,2,0],[51,0,0,1,0],[53,0,0,1,0],[57,0,0,2,0],[59,0,0,1,0],[62,0,0,1,0],[67,0,0,1,0],[70,0,0,1,0],[71,0,0,1,0],[78,0,0,1,0],[80,0,0,1,0],[83,0,0,1,0],[92,0,0,1,0],[102,0,0,1,0],[103,0,0,0,1],[105,0,0,2,0],[106,0,0,0,1],[118,0,0,1,0]],"tanstack":[[7,0,0,1,2],[33,0,0,1,0],[59,0,0,1,0],[122,0,0,1,2],[123,0,0,1,0]],"start":[[7,0,0,1,2],[33,0,0,1,0],[41,0,0,1,0],[59,0,0,1,0],[125,0,0,2,0]],"vite":[[7,0,0,2,2],[34,0,0,6,0],[36,0,0,1,1],[38,0,0,1,1],[52,0,0,1,0],[56,0,0,1,0]],"middleware":[[7,0,0,4,0],[38,0,0,3,0],[39,0,0,0,3],[41,0,0,1,0],[56,0,0,2,0]],"dev":[[7,0,0,1,0],[25,0,0,1,0],[36,0,0,1,0],[41,0,0,1,0]],"preview":[[7,0,0,1,0],[12,0,0,1,1]],"nitro":[[7,0,0,1,0]],"prod":[[7,0,0,1,0]],"negotiate":[[7,0,0,1,0]],"next":[[7,0,0,1,2],[30,0,0,2,0],[32,0,1,0,0],[33,0,0,1,0],[36,0,0,1,0],[38,0,0,1,0],[39,0,0,0,3],[40,0,0,1,0],[42,0,1,0,0],[52,0,0,1,0],[56,0,0,1,0],[58,0,1,0,0],[59,0,0,1,0],[62,0,1,0,0],[67,0,0,1,0],[74,0,1,0,0]],"js":[[7,0,0,1,2],[30,0,0,1,0],[33,0,0,1,0],[38,0,0,1,0],[56,0,0,1,0],[59,0,0,1,0]],"wire":[[7,0,0,1,0],[16,0,0,0,1],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,1,1,0],[37,0,0,1,0],[38,0,0,2,0],[39,0,0,1,0],[40,0,0,1,0],[41,0,0,1,0],[42,0,0,1,0],[43,0,0,1,0],[52,0,0,1,0],[74,0,0,1,0]],"negotiation":[[7,0,0,1,0],[34,0,0,1,0],[38,0,0,1,0],[39,0,0,0,1],[41,0,0,1,0],[53,0,0,1,0],[55,0,0,1,0],[56,0,0,1,0],[61,0,0,1,0]],"ts":[[7,0,0,1,0],[16,0,0,1,0],[17,0,0,2,1],[18,0,0,0,1],[27,0,0,1,2],[36,0,0,0,5],[37,0,0,1,1],[38,0,0,1,1],[80,0,0,2,1],[84,0,0,0,1],[85,0,0,0,1],[86,0,0,0,1],[87,0,0,0,1],[89,0,0,0,1],[90,0,0,0,1],[94,0,0,0,1],[95,0,0,0,1],[99,0,0,0,1],[101,0,0,0,1],[104,0,0,0,1],[105,0,0,1,1],[107,0,0,0,2],[108,0,0,1,0],[109,0,0,0,1],[110,0,0,0,1],[113,0,0,0,1],[114,0,0,0,2],[118,0,0,0,1],[119,0,0,0,1],[120,0,0,0,1],[121,0,0,0,1],[122,0,0,0,2],[123,0,0,0,1]],"route":[[7,0,0,1,0],[20,0,0,1,0],[38,0,0,1,0],[93,0,0,1,0]],"handler":[[7,0,0,1,0],[38,0,0,1,0]],"configureserver":[[7,0,0,1,0],[39,0,0,0,1]],"enough":[[7,0,0,1,0]],"static":[[7,0,0,1,0],[38,0,0,2,0],[59,0,0,1,0],[65,0,0,1,0],[107,0,0,1,0],[116,0,0,2,0],[117,0,0,1,0],[118,0,0,1,0],[119,0,0,1,0],[120,0,0,1,0],[121,0,0,1,0],[122,0,0,1,0],[123,0,0,1,0],[124,0,0,1,0],[125,0,0,2,0]],"deployments":[[7,0,0,1,0]],"files":[[7,0,0,1,0],[14,0,0,1,0],[17,0,0,1,0],[22,0,0,2,0],[23,0,0,1,0],[24,0,0,2,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,2,1],[28,0,0,1,0],[29,0,0,3,0],[30,0,0,1,0],[31,0,0,1,0],[32,0,0,1,0],[36,0,0,0,1],[38,0,0,2,0],[47,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[61,0,0,1,0],[79,0,0,1,1],[85,0,0,1,0],[94,0,0,1,0],[105,0,0,1,0],[106,0,0,1,0]],"items":[[7,0,0,0,1],[10,0,0,0,1]],"value":[[7,0,0,0,3],[10,0,0,0,2],[21,0,0,1,0],[38,0,0,0,6],[39,0,0,0,4]],"package":[[8,0,0,4,0],[18,0,0,1,2],[22,1,1,2,0],[23,1,1,1,0],[24,1,1,2,0],[25,1,2,3,4],[26,1,2,3,0],[27,1,1,1,4],[28,1,1,1,2],[29,1,1,2,2],[30,1,1,3,3],[31,1,1,2,0],[32,1,1,1,0],[40,0,0,3,4],[52,0,0,1,0],[53,0,0,2,0],[55,0,0,3,0],[60,0,0,1,0],[61,0,0,1,0],[69,0,0,1,0],[73,0,0,4,1],[74,0,0,1,0],[76,0,0,3,0],[78,0,0,1,1],[105,0,0,1,1],[106,0,0,1,1],[109,0,0,2,0]],"manager":[[8,0,0,5,0],[69,0,0,1,0]],"install":[[8,0,0,3,2],[22,0,0,1,0],[23,0,0,0,4],[25,0,0,1,0],[45,0,0,0,1],[68,0,0,1,0],[69,0,1,2,0],[70,0,0,1,0],[71,0,0,1,0],[72,0,0,1,0],[73,0,0,1,0],[74,0,0,1,0],[103,0,0,0,1],[106,0,0,0,1],[108,0,0,1,0],[119,0,0,0,1]],"commands":[[8,0,0,3,1],[75,0,0,1,0],[123,0,0,2,0]],"row":[[8,0,0,1,0],[11,0,0,1,0],[114,0,0,1,0]],"mode":[[8,0,0,3,2],[24,0,0,2,0],[45,0,0,1,0],[51,0,0,0,3],[52,0,0,2,0],[53,0,0,7,0],[55,0,0,0,2],[76,0,0,4,0],[78,0,1,0,0],[79,0,0,4,1],[98,0,0,1,0]],"command":[[8,0,0,4,2],[35,0,0,1,0],[57,0,0,1,0],[65,0,0,1,0],[69,0,0,1,0],[75,0,0,1,1],[83,0,0,1,0]],"name":[[8,0,0,2,0],[19,0,0,1,0],[23,0,0,0,4],[25,0,0,0,1],[26,0,0,0,1],[35,0,0,0,1],[37,0,0,0,1],[38,0,0,0,5],[39,0,0,0,3],[45,0,0,0,1],[59,0,0,0,1],[76,0,0,4,0],[79,0,0,0,1],[104,0,0,0,2],[114,0,0,1,1]],"cli":[[8,0,0,1,0],[19,0,0,1,0],[22,0,0,1,0],[23,0,0,0,3],[31,0,0,1,0],[32,0,0,1,0],[34,0,0,4,0],[36,0,0,1,0],[42,0,0,1,0],[47,0,0,1,0],[58,0,0,1,0],[65,0,0,1,0],[69,0,0,1,0],[71,0,0,1,0],[75,1,1,0,0],[76,1,1,0,0],[77,1,1,1,0],[78,1,1,0,0],[79,1,1,0,0],[80,1,1,1,0],[81,1,1,1,0],[82,1,1,0,0],[83,1,1,2,0],[84,0,0,1,0],[90,0,0,3,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0],[94,0,0,1,0],[95,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0],[103,0,0,0,3],[106,0,0,0,2]],"create":[[8,0,0,1,0],[70,0,0,1,0]],"starter":[[8,0,0,1,0]],"prop":[[8,0,0,1,0],[11,0,0,1,0]],"exact":[[8,0,0,1,0],[51,0,0,1,0],[125,0,0,2,0]],"overrides":[[8,0,0,1,0],[81,0,0,2,0]],"npm":[[8,0,0,3,2],[22,0,0,2,0],[23,0,0,1,2],[24,0,0,2,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,2,1],[30,0,0,1,0],[31,0,0,1,0],[32,0,0,1,0],[40,0,0,1,1],[52,0,0,1,0],[53,0,0,2,0],[69,0,0,2,0],[73,0,0,1,0],[78,0,0,1,0],[101,0,0,2,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,0,2,0],[106,0,0,1,0],[107,0,0,1,0],[108,0,0,1,0],[109,0,0,1,0]],"pnpm":[[8,0,0,4,3],[69,0,0,2,0]],"yarn":[[8,0,0,4,0],[69,0,0,2,0]],"bun":[[8,0,0,3,0],[27,0,0,1,0],[36,0,0,0,7],[45,0,0,0,2],[69,0,0,2,0]],"npx":[[8,0,0,1,0],[25,0,0,0,1],[26,0,0,0,1],[27,0,0,0,1],[29,0,0,0,1],[35,0,0,0,1],[40,0,0,0,2],[45,0,0,0,1],[46,0,0,0,1],[47,0,0,0,1],[48,0,0,0,2],[71,0,0,0,1],[73,0,0,0,1]],"lint":[[8,0,0,4,1],[15,0,0,1,0],[19,0,0,1,0],[20,0,1,2,0],[21,0,0,1,0],[32,0,0,1,0],[37,0,0,1,0],[40,0,0,1,1],[42,0,0,1,0],[43,0,0,2,0],[44,0,0,2,0],[45,0,0,1,3],[46,0,0,1,2],[47,0,0,2,1],[48,0,0,4,1],[49,0,0,1,0],[65,0,0,1,0],[69,0,0,1,0],[75,0,0,2,0],[76,0,0,1,0],[77,0,0,1,0],[78,0,0,1,0],[79,0,0,1,0],[80,0,0,1,0],[81,0,1,3,1],[82,0,0,1,1],[83,0,0,2,0],[90,1,1,1,1],[91,1,1,0,0],[92,1,1,0,0],[93,1,1,0,0],[94,1,1,0,1],[95,1,1,0,0],[96,1,1,0,0],[97,1,1,0,0],[98,1,1,0,0],[99,1,1,0,1],[100,1,1,3,0],[121,0,0,0,1]],"dlx":[[8,0,0,2,0]],"bunx":[[8,0,0,1,0]],"defaultmanager":[[8,0,0,0,1]],"collapsible":[[9,0,0,1,0]],"secondary":[[9,0,0,1,0]],"ignores":[[9,0,0,2,0]],"open":[[9,0,0,2,0],[72,0,0,2,0],[106,0,0,0,1],[111,0,0,1,0]],"closed":[[9,0,0,3,0],[111,0,0,1,0]],"state":[[9,0,0,2,0],[88,0,0,1,0],[111,0,0,1,0]],"emits":[[9,0,0,2,0],[24,0,0,1,0],[61,0,0,1,0],[76,0,0,1,0],[101,0,0,2,0],[114,0,0,1,0]],"item":[[9,0,0,1,0]],"accordions":[[9,0,0,3,1]],"place":[[9,0,0,2,0],[24,0,0,1,0],[59,0,0,1,0],[61,0,0,1,0],[70,0,0,1,0],[89,0,0,1,0],[113,0,0,1,0]],"hide":[[9,0,0,2,0]],"should":[[9,0,0,1,1],[26,0,0,1,0],[29,0,0,1,0],[31,0,0,1,0],[40,0,0,1,0],[41,0,0,2,0],[124,0,0,1,0]],"troubleshooting":[[9,0,0,1,0]],"notes":[[9,0,0,1,0],[88,0,1,0,0]],"optional":[[9,0,0,1,1],[11,0,0,2,0],[16,0,0,2,0],[19,0,1,10,0],[36,0,0,1,0],[52,0,0,2,0],[53,0,0,4,0],[54,0,0,2,0],[56,0,0,5,0],[65,0,0,1,0],[113,0,1,0,0],[114,0,1,0,0]],"material":[[9,0,0,1,1]],"good":[[9,0,0,1,0]],"no":[[9,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[24,0,0,1,0],[38,0,0,1,0],[56,0,0,1,0],[73,0,0,2,0],[81,0,0,1,0],[88,0,0,1,0],[96,0,0,12,0],[97,0,0,7,0],[98,0,0,7,0],[102,0,0,1,0],[114,0,0,2,0],[119,0,0,1,0]],"everything":[[9,0,0,1,0]],"inside":[[9,0,0,1,0],[22,0,0,1,0],[23,0,0,1,0],[24,0,0,3,0],[25,0,0,2,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,2,0],[31,0,0,1,0],[32,0,0,1,0],[40,0,0,1,0],[53,0,0,2,0],[55,0,0,1,0],[73,0,0,1,0],[101,0,0,1,0],[102,0,0,1,0],[105,0,0,1,0],[106,0,0,0,1]],"navigation":[[10,0,0,1,0],[15,0,0,1,0],[16,0,0,1,0],[17,0,0,1,1],[18,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[28,0,0,0,3],[33,0,0,1,0],[35,0,0,1,0],[37,0,0,1,0],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,1,0],[49,0,0,1,0],[51,0,0,0,1],[53,0,0,1,0],[54,0,0,1,0],[57,0,0,1,0],[61,0,0,2,0],[63,0,0,1,0],[65,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0],[94,0,0,1,0],[95,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,1,0],[107,0,0,1,4]],"across":[[10,0,0,1,0],[64,0,0,1,0],[67,0,0,2,0],[80,0,0,1,0]],"topics":[[10,0,0,1,0]],"frameworks":[[10,0,0,1,2],[26,0,0,0,1],[59,0,0,1,0]],"sdks":[[10,0,0,1,0]],"runtimes":[[10,0,0,1,0]],"deployment":[[10,0,0,1,0],[64,0,0,1,0],[66,0,0,1,0],[109,0,0,1,0]],"targets":[[10,0,0,1,0]],"product":[[10,0,0,1,0],[28,0,0,0,2],[35,0,0,0,1],[37,0,1,0,2],[76,0,0,2,0],[79,0,0,0,1],[80,0,0,0,2],[102,0,0,1,0],[104,0,0,0,2],[105,0,0,2,2]],"areas":[[10,0,0,1,0]],"reader":[[10,0,0,1,0]],"facing":[[10,0,0,1,0],[59,0,0,1,0],[101,0,0,1,0],[115,0,0,1,0]],"automatically":[[10,0,0,1,0],[19,0,0,1,0]],"llm":[[10,0,0,1,0],[27,0,0,0,1],[32,0,0,1,0],[36,0,0,0,3],[57,0,0,1,0],[69,0,0,1,0],[71,0,0,1,0],[72,0,0,1,0],[80,0,0,1,1],[83,0,0,1,0],[101,1,1,1,1],[102,1,1,0,0],[103,1,1,0,0],[104,1,1,0,1],[105,1,1,0,1],[106,1,1,0,0],[107,1,1,2,0],[108,1,1,0,0],[109,1,1,0,0],[115,0,0,1,0]],"topic":[[10,0,0,1,0],[22,0,0,2,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[32,0,0,1,0],[55,0,0,1,0],[61,0,0,2,0],[65,0,0,1,0],[101,0,0,2,0],[102,0,0,1,0],[106,0,0,0,1],[108,0,1,0,0]],"config":[[10,0,0,1,0],[16,0,0,1,0],[17,0,0,2,1],[18,0,0,1,0],[27,0,0,0,2],[28,0,0,0,1],[37,0,0,2,0],[41,0,0,1,0],[49,0,0,1,0],[80,0,0,2,1],[105,0,0,1,0],[108,0,0,1,0],[125,0,0,1,0]],"framework":[[10,0,0,1,1],[19,0,0,2,0],[20,0,0,4,0],[21,0,0,1,0],[33,0,0,1,0],[44,0,0,5,0],[49,0,0,1,0],[56,0,0,1,0],[59,0,0,1,0],[63,0,0,1,0],[64,0,0,3,0],[67,0,0,2,0],[93,0,0,4,0],[95,0,0,0,1],[96,0,0,1,0],[111,0,0,1,0]],"react":[[10,0,0,2,4],[26,0,0,0,3],[64,0,0,1,0]],"integration":[[10,0,0,3,0]],"vue":[[10,0,0,2,3]],"svelte":[[10,0,0,2,0]],"label":[[10,0,0,0,3],[98,0,0,1,0]],"activevalue":[[10,0,0,0,1]],"explicit":[[11,0,0,1,0],[26,0,0,1,0],[122,0,0,1,0]],"type":[[11,0,0,3,2],[19,0,0,1,0],[20,0,0,1,0],[36,0,0,0,1],[38,0,0,3,2],[41,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[56,0,0,1,0],[92,0,0,1,0],[95,0,0,0,1],[96,0,0,1,0],[97,0,0,2,0],[98,0,0,1,0],[103,0,0,0,1],[114,0,0,2,0],[119,0,0,0,2]],"rows":[[11,0,0,1,0]],"already":[[11,0,0,1,0],[120,0,0,1,0]],"know":[[11,0,0,1,0]],"reads":[[11,0,0,1,0],[15,0,0,1,0],[36,0,0,0,1],[43,0,0,1,0],[71,0,0,1,0],[104,0,0,1,0],[114,0,0,2,0],[118,0,0,1,0]],"typescript":[[11,0,0,1,0],[36,0,0,0,1],[83,0,0,1,0],[114,0,0,2,0]],"file":[[11,0,0,1,0],[12,0,0,1,0],[15,0,0,1,0],[18,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[46,0,0,1,0],[48,0,0,1,0],[53,0,0,1,0],[56,0,0,2,0],[57,0,0,1,0],[71,0,0,2,0],[76,0,0,2,0],[84,0,0,1,0],[86,0,0,1,0],[87,0,0,1,0],[95,0,0,0,1],[101,0,0,1,0],[102,0,0,3,0],[106,0,0,0,2],[108,0,0,1,0],[114,0,0,4,0]],"extracts":[[11,0,0,1,0]],"named":[[11,0,0,1,0],[110,0,0,1,0],[114,0,0,1,0],[120,0,0,1,0]],"keep":[[11,0,0,1,0],[14,0,0,2,0],[47,0,0,1,0],[99,0,0,1,0],[125,0,0,1,0]],"its":[[11,0,0,1,0],[40,0,0,1,0],[56,0,0,1,0],[67,0,0,1,0],[115,0,0,1,0]],"path":[[11,0,0,1,0],[22,0,0,1,0],[25,0,0,1,0],[33,0,0,1,0],[53,0,0,3,0],[60,0,1,0,0],[79,0,0,0,8],[83,0,0,1,0],[103,0,0,0,1],[105,0,0,2,0],[114,0,0,2,1],[124,0,0,1,0]],"stable":[[11,0,0,1,0],[14,0,0,1,0],[19,0,0,1,0]],"property":[[11,0,0,1,0],[19,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[56,0,0,1,0],[114,0,0,1,0]],"default":[[11,0,0,1,1],[19,0,0,2,0],[20,0,0,1,0],[37,0,0,0,1],[52,0,0,2,0],[53,0,0,1,0],[56,0,0,1,0],[57,0,0,1,0],[71,0,0,1,0],[76,0,0,2,0],[81,0,0,2,0],[89,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0],[94,0,0,2,0],[96,0,1,0,0],[97,0,1,0,0],[98,0,1,0,0],[101,0,0,1,0],[103,0,0,0,1],[105,0,0,1,0],[109,0,0,1,0],[110,0,0,1,0],[111,0,1,1,0],[112,0,0,1,0],[113,0,0,2,0],[114,0,0,2,0],[115,0,0,1,0]],"required":[[11,0,0,2,1],[15,0,0,1,0],[16,0,0,2,0],[17,0,0,1,0],[18,0,0,1,0],[19,0,0,2,0],[20,0,0,2,0],[21,0,0,1,0],[49,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[56,0,0,1,0],[92,0,0,1,0],[94,0,0,1,0],[95,0,0,2,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0]],"string":[[11,0,0,1,1],[16,0,0,1,0],[19,0,0,3,0],[38,0,0,0,8],[56,0,0,1,0],[95,0,0,0,3],[96,0,0,7,0],[97,0,0,7,0],[98,0,0,5,0],[99,0,0,0,1],[105,0,0,1,0]],"heading":[[11,0,0,1,1],[16,0,0,1,0],[56,0,0,1,0],[111,0,0,1,0],[117,0,0,1,0],[119,0,0,1,0],[120,0,0,1,0]],"rendered":[[11,0,0,1,1],[88,0,0,1,0],[114,0,0,1,0]],"calloutvariant":[[11,0,0,1,1]],"visual":[[11,0,0,1,1],[66,0,0,1,0]],"treatment":[[11,0,0,1,1]],"deprecated":[[11,0,0,3,0],[19,0,0,3,0],[96,0,0,1,0]],"boolean":[[11,0,0,1,0],[19,0,0,6,0],[96,0,0,6,0],[97,0,0,2,0],[98,0,0,2,0]],"marks":[[11,0,0,1,0],[19,0,0,2,0]],"false":[[11,0,0,1,0],[86,0,0,0,1]],"properties":[[11,0,0,0,1]],"true":[[11,0,0,0,1],[27,0,0,0,3],[36,0,0,0,1],[85,0,0,1,1],[107,0,0,0,1]],"data":[[12,0,0,2,0]],"driven":[[12,0,0,1,0]],"examples":[[12,0,0,1,0]],"host":[[12,0,0,1,1]],"receives":[[12,0,0,1,0]],"code":[[12,0,0,1,1],[23,0,0,0,1],[24,0,0,1,0],[40,0,0,1,0],[52,0,0,1,0],[53,0,0,2,0],[55,0,0,0,1],[56,0,0,1,0],[59,0,0,0,1],[67,0,0,1,0],[73,0,0,1,0],[78,0,0,1,0],[105,0,0,1,0],[111,0,0,1,0],[117,0,0,1,0],[123,0,0,1,0]],"loaders":[[12,0,0,1,0]],"dynamic":[[12,0,0,1,0]],"imports":[[12,0,0,1,0],[51,0,0,0,1],[80,0,0,1,0],[110,0,0,1,0],[112,0,0,1,0]],"outside":[[12,0,0,1,0],[94,0,0,1,0]],"needs":[[12,0,0,1,0],[26,0,0,1,0],[63,0,0,1,0],[70,0,0,1,0],[114,0,0,1,0]],"specific":[[12,0,0,1,0],[26,0,1,0,0],[109,0,0,1,0],[116,0,0,1,0]],"behavior":[[12,0,0,1,0],[16,0,0,1,0],[88,0,1,0,0]],"output":[[12,0,0,0,1],[14,0,0,1,0],[22,0,0,1,0],[46,0,0,1,0],[50,0,0,1,0],[51,0,0,1,0],[52,0,1,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,2,0],[56,0,0,1,0],[57,0,0,2,0],[58,0,0,1,0],[68,0,0,1,0],[72,0,1,0,0],[73,0,0,1,0],[75,0,0,1,0],[76,0,0,2,0],[77,0,0,1,0],[78,0,0,1,0],[79,0,1,1,0],[80,0,0,1,0],[81,0,0,1,0],[82,0,0,1,0],[83,0,0,2,0],[84,0,0,1,0],[85,0,0,1,0],[86,0,0,1,0],[87,0,0,1,0],[88,0,0,2,0],[106,0,1,0,0],[114,0,0,1,0],[115,0,0,2,0]],"inspect":[[12,0,0,0,1],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[71,0,0,1,0],[72,0,1,1,0],[73,0,0,1,0],[74,0,0,1,0]],"filename":[[12,0,0,0,1]],"language":[[12,0,0,0,1]],"while":[[12,0,0,0,1],[118,0,0,1,0]],"diagrams":[[13,0,0,1,0]],"plain":[[13,0,0,1,0],[38,0,0,0,3],[39,0,0,0,1],[107,0,0,1,0],[122,0,0,1,0]],"renders":[[13,0,0,1,0],[16,0,0,1,0],[55,0,0,1,0],[67,0,0,1,0],[93,0,0,1,0]],"client":[[13,0,0,1,0],[114,0,0,1,0]],"svg":[[13,0,0,1,0]],"preserves":[[13,0,0,1,0]],"tools":[[13,0,0,1,0],[22,0,0,1,0],[24,0,0,1,0],[31,0,0,1,0],[55,0,0,1,0],[62,0,0,1,0],[123,0,0,0,1]],"copy":[[13,0,0,1,0]],"chart":[[13,0,0,0,1],[34,0,0,1,0]],"graph":[[13,0,0,0,2]],"lr":[[13,0,0,0,2],[17,0,0,0,1],[23,0,0,0,1],[34,0,0,1,0],[55,0,0,0,1],[59,0,0,0,1]],"index":[[13,0,0,0,1],[25,0,0,1,2],[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[38,0,0,0,1],[40,0,0,1,0],[41,0,0,3,0],[51,0,0,0,1],[52,0,0,2,0],[53,0,0,5,0],[55,0,0,0,1],[56,0,0,1,0],[57,0,0,1,0],[59,0,0,1,1],[61,0,0,1,0],[63,0,0,1,0],[65,0,0,1,0],[70,0,0,1,0],[71,0,0,4,0],[72,0,0,2,5],[73,0,0,2,0],[76,0,0,3,0],[78,0,0,2,0],[79,0,0,0,2],[101,0,0,2,0],[102,0,0,2,0],[116,0,0,2,0],[117,0,0,6,0],[118,0,0,2,1],[119,0,0,1,1],[120,0,0,2,3],[121,0,0,1,1],[122,0,0,1,1],[123,0,0,1,1],[124,0,0,1,0],[125,0,0,3,0]],"api":[[13,0,0,0,1],[81,0,0,1,0],[83,0,0,1,0],[90,0,0,2,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0],[94,0,1,1,0],[95,0,1,1,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,1,0],[125,0,0,1,0]],"guidelines":[[14,0,1,0,0]],"stays":[[14,0,0,1,0],[53,0,0,1,0],[63,0,0,1,0],[88,0,0,1,0],[118,0,0,1,0]],"out":[[14,0,0,1,0],[23,0,0,0,1],[25,0,0,0,1],[26,0,0,0,1],[27,0,0,0,1],[29,0,0,0,1],[35,0,0,0,1],[40,0,0,0,1],[48,0,0,0,1],[52,0,0,2,0],[53,0,0,3,0],[55,0,0,0,6],[59,0,0,0,8],[63,0,0,1,0],[71,0,0,0,1],[73,0,0,0,1],[76,0,0,5,0],[78,0,0,2,1],[102,0,0,4,0],[111,0,0,0,2]],"renaming":[[14,0,0,1,0]],"breaks":[[14,0,0,1,0]],"until":[[14,0,0,1,0]],"remap":[[14,0,0,1,0]],"quality":[[14,0,0,1,0]],"converted":[[14,0,0,1,0],[38,0,0,1,0],[41,0,0,1,0],[55,0,0,1,0],[57,0,0,2,0],[72,0,0,0,1],[114,0,0,1,0],[115,0,0,1,0]],"first":[[14,0,0,1,0],[30,0,0,0,1],[40,0,0,1,0],[48,0,0,1,0],[49,0,1,0,0],[62,0,0,1,0],[100,0,0,1,0],[101,0,0,1,0],[104,0,0,1,0],[110,0,0,1,0],[115,0,0,1,0]],"edit":[[14,0,0,1,0]],"order":[[14,0,0,1,0],[27,0,0,1,0],[36,0,0,2,0],[49,0,0,1,0],[57,0,0,1,0],[80,0,0,1,1],[83,0,0,1,0],[84,0,0,1,0],[85,0,0,1,0],[89,0,0,1,0],[110,0,0,1,0],[111,0,0,1,0],[112,0,1,0,0]],"actually":[[14,0,0,1,0]],"looks":[[14,0,0,1,0],[24,0,0,1,0],[72,0,0,1,0],[115,0,0,1,0]],"wrong":[[14,0,0,1,0],[20,0,0,1,0],[24,0,0,1,0],[44,0,0,1,0],[49,0,0,1,0],[92,0,0,1,0],[115,0,0,1,0]],"frontmatter":[[15,1,1,1,0],[16,1,1,0,0],[17,1,1,0,0],[18,1,1,0,0],[19,1,1,0,0],[20,1,1,1,0],[21,1,1,1,0],[37,0,0,2,0],[40,0,0,1,0],[43,0,0,1,0],[44,0,0,4,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,1,0],[49,0,0,2,0],[51,0,0,0,2],[56,0,0,1,0],[57,0,0,2,0],[58,0,0,1,0],[61,0,0,1,0],[65,0,0,1,0],[70,0,0,1,0],[71,0,0,1,0],[76,0,0,1,0],[77,0,0,1,0],[81,0,0,2,0],[86,0,0,1,1],[88,0,0,3,0],[92,0,1,1,0],[94,0,0,3,0],[95,0,0,0,1],[96,0,1,0,0],[97,0,1,0,0],[99,0,0,0,1]],"fields":[[15,0,0,1,0],[16,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[19,0,1,1,0],[20,0,0,1,0],[21,0,0,1,0],[44,0,0,2,0],[49,0,0,1,0],[79,0,0,1,0],[81,0,0,2,0],[94,0,0,1,0],[95,0,0,1,0]],"semantics":[[15,0,0,1,0],[16,0,0,1,0],[17,0,0,1,0],[18,0,0,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0]],"tree":[[15,0,0,1,0],[16,0,0,1,0],[17,0,1,2,1],[18,0,1,1,0],[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[35,0,0,1,0],[37,0,0,1,0],[51,0,0,0,1],[53,0,0,1,0],[54,0,0,1,0],[61,0,0,1,0],[70,0,0,1,0],[71,0,0,1,0],[85,0,0,1,0],[105,0,0,1,0],[107,0,0,1,0],[112,0,0,1,0]],"page":[[15,0,0,2,0],[16,0,0,1,0],[17,0,0,2,3],[18,0,0,1,0],[19,0,0,4,0],[20,0,0,1,0],[21,0,0,1,0],[25,0,0,0,1],[41,0,0,1,0],[44,0,0,1,0],[50,0,0,1,0],[51,0,0,0,1],[53,0,0,1,0],[56,0,0,2,0],[57,0,0,1,0],[60,0,0,1,0],[70,0,1,1,0],[71,0,0,1,0],[78,0,0,1,0],[80,0,0,1,0],[88,0,0,1,0],[90,0,0,1,0],[93,0,0,1,0],[94,0,0,1,0],[117,0,0,2,0],[120,0,0,1,0],[125,0,0,1,0]],"yaml":[[15,0,0,1,0],[45,0,0,0,1],[88,0,0,1,0],[92,0,0,1,0]],"things":[[15,0,0,1,0],[71,0,0,1,0]],"lives":[[15,0,0,1,0],[40,0,0,2,0]],"nav":[[15,0,0,1,0],[16,0,0,1,0],[17,0,1,1,2],[18,0,1,0,0],[19,0,0,1,0],[34,0,0,1,0],[51,0,0,0,3],[53,0,0,2,0],[54,0,0,2,0],[70,0,0,1,0],[71,0,0,1,0],[98,0,0,3,0],[107,0,0,1,1]],"minimum":[[16,0,1,0,0],[70,0,0,1,0]],"non":[[16,0,0,1,0],[18,0,0,1,0],[41,0,0,1,0],[43,0,0,1,0],[56,0,0,1,0],[81,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[102,0,0,1,0]],"empty":[[16,0,0,1,0],[41,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0]],"sidebar":[[16,0,0,1,0],[19,0,0,1,0],[21,0,0,1,0],[54,0,0,1,0],[56,0,0,1,0],[98,0,0,1,0],[107,0,0,3,0]],"recommended":[[16,0,0,1,0]],"routing":[[16,0,0,1,0],[33,0,0,1,0],[41,0,0,1,0],[63,0,0,1,0],[66,0,0,1,0],[71,0,0,1,0],[72,0,0,0,2],[102,0,0,2,0],[105,0,0,1,0],[108,0,0,1,0]],"hint":[[16,0,0,1,0]],"omitted":[[16,0,0,1,0]],"converter":[[16,0,0,1,0],[40,0,0,1,0],[93,0,0,1,0],[96,0,0,1,0]],"synthesizes":[[16,0,0,1,0]],"during":[[16,0,0,1,0],[25,0,0,1,0],[36,0,0,1,0]],"slug":[[16,0,0,1,0],[17,0,0,4,0],[18,0,0,1,3],[28,0,0,0,2],[37,0,0,0,2],[56,0,0,2,0],[57,0,0,1,0],[79,0,0,0,1],[105,0,0,1,0],[107,0,0,0,2]],"declared":[[16,0,0,1,0],[17,0,0,1,0]],"pages":[[16,0,0,1,0],[19,0,0,1,0],[26,0,0,1,0],[37,0,0,1,0],[38,0,0,1,0],[47,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[61,0,0,1,0],[72,0,0,0,1],[98,0,0,1,0],[102,0,0,1,0],[108,0,0,2,0]],"excluded":[[16,0,0,1,0],[19,0,0,1,0]],"connect":[[16,0,0,0,1],[18,0,0,0,2],[31,0,0,1,0],[33,1,1,0,0],[34,1,1,0,0],[35,1,1,0,0],[36,1,1,0,0],[37,1,1,0,0],[38,1,1,0,0],[39,1,1,0,0],[40,1,2,0,0],[41,1,1,0,0],[42,1,1,0,0]],"site":[[16,0,0,0,1],[18,0,0,0,2],[31,0,0,1,0],[33,1,1,2,0],[34,1,1,0,0],[35,1,1,1,0],[36,1,1,0,0],[37,1,1,0,0],[38,1,1,0,0],[39,1,1,0,0],[40,1,1,1,0],[41,1,1,0,0],[42,1,1,0,0],[51,0,0,0,3],[52,0,0,1,0],[53,0,0,3,0],[55,0,0,2,5],[59,0,0,0,8],[60,0,0,1,0],[63,0,0,1,0],[64,0,0,3,0],[74,0,0,1,0],[76,0,0,2,0],[79,0,0,1,1]],"build":[[16,0,0,0,2],[17,0,0,1,4],[18,0,0,1,2],[20,0,0,1,0],[21,0,0,1,0],[27,0,0,3,1],[33,0,0,3,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,1,1,4],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,1,0],[40,0,0,2,1],[41,0,0,2,0],[42,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[57,0,0,1,0],[60,0,0,1,0],[71,0,0,1,0],[83,0,0,1,0],[90,0,0,1,0],[116,0,0,1,0],[118,0,1,0,0],[122,0,0,1,0]],"groups":[[17,0,1,0,1],[18,0,2,1,0],[27,0,0,0,1],[28,0,0,0,5],[37,0,1,0,1],[40,0,0,1,0],[48,0,0,1,0],[51,0,0,0,5],[56,0,0,1,0],[57,0,0,1,0],[71,0,0,2,0],[79,0,0,0,1],[80,0,0,3,2],[102,0,0,2,0],[104,0,0,0,4],[105,0,0,1,2],[107,0,0,0,2],[108,0,0,1,0]],"become":[[17,0,1,0,0],[18,0,1,0,0],[80,0,0,1,0]],"declares":[[17,0,0,2,0],[28,0,0,0,1],[37,0,0,1,0],[107,0,0,0,1]],"single":[[17,0,0,1,0],[35,0,0,2,0],[59,0,0,1,0],[60,0,0,2,0],[61,0,0,1,0],[62,0,0,1,0],[76,0,0,1,0],[77,0,0,1,0],[79,0,0,1,0],[108,0,0,1,0]],"once":[[17,0,0,1,0],[21,0,0,1,0],[37,0,0,1,0],[61,0,0,1,0],[72,0,0,1,0],[99,0,0,1,0]],"intersection":[[17,0,0,1,0]],"produces":[[17,0,0,1,0],[50,0,0,1,0],[59,0,0,1,0],[62,0,0,1,0],[63,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[71,0,0,1,0],[72,0,0,1,0],[73,0,0,1,0],[74,0,0,1,0],[101,0,0,1,0],[108,0,0,2,0]],"leaf":[[17,0,0,1,0],[18,0,0,1,0],[41,0,0,2,0],[56,0,0,3,0],[57,0,0,1,0],[71,0,0,1,0],[72,0,0,0,1],[102,0,0,5,0],[108,0,0,2,0]],"isn":[[17,0,0,1,0],[20,0,0,1,0],[41,0,0,1,0]],"fails":[[17,0,0,1,0],[40,0,0,1,0],[48,0,0,2,0],[49,0,0,1,0],[57,0,0,1,0]],"unknown":[[17,0,0,1,0],[20,0,0,2,0],[27,0,0,0,1],[28,0,0,0,4],[38,0,0,0,1],[40,0,0,0,1],[44,0,0,1,0],[45,0,0,2,1],[46,0,0,0,1],[48,0,0,1,1],[49,0,0,1,0],[57,0,0,1,0],[77,0,0,1,0],[81,0,0,4,0],[92,0,0,3,0],[95,0,0,0,1],[99,0,0,2,0],[107,0,0,0,3]],"truth":[[17,0,0,1,0],[21,0,0,1,0]],"drift":[[17,0,0,1,0],[100,0,0,1,0]],"flowchart":[[17,0,0,0,1],[23,0,0,0,1],[34,0,0,1,0],[51,0,0,0,1],[55,0,0,0,1],[59,0,0,0,1],[111,0,0,0,1]],"cfg":[[17,0,0,0,2]],"page1":[[17,0,0,0,2]],"page2":[[17,0,0,0,2]],"page3":[[17,0,0,0,2]],"resolver":[[17,0,0,0,9],[51,0,0,0,1]],"sections":[[17,0,0,0,1],[37,0,0,1,0],[54,0,0,1,0],[111,0,0,1,0]],"nested":[[18,0,1,1,0],[24,0,0,1,0]],"declare":[[18,0,0,1,0],[37,0,0,1,0]],"children":[[18,0,0,2,1],[56,0,0,1,0],[102,0,0,1,0]],"deeper":[[18,0,0,1,0],[53,0,0,1,0],[102,0,0,1,0]],"trees":[[18,0,0,1,0],[85,0,0,1,0]],"sets":[[18,0,0,1,0],[38,0,0,1,0]],"bundle":[[18,0,0,1,2],[19,0,0,1,0],[21,0,0,1,0],[22,1,1,1,0],[23,1,1,0,4],[24,1,1,1,0],[25,1,1,1,1],[26,1,1,1,1],[27,1,1,0,1],[28,1,1,0,0],[29,1,1,0,1],[30,1,2,0,0],[31,1,1,0,0],[32,1,1,0,0],[40,0,0,1,0],[51,0,0,0,1],[52,0,0,2,0],[53,0,0,4,0],[55,0,0,1,3],[59,0,0,1,7],[61,0,0,1,0],[62,0,0,1,0],[72,0,0,0,1],[73,0,1,2,1],[74,0,0,1,0],[76,0,0,6,0],[78,0,1,1,1],[79,0,0,2,0],[101,0,0,1,0],[106,0,0,1,0],[108,0,0,2,0]],"lands":[[18,0,0,1,0]],"slot":[[18,0,0,1,0]],"get":[[18,0,0,1,0],[37,0,0,0,2],[38,0,0,2,0],[40,0,0,1,0],[41,0,0,1,0],[55,0,0,1,0],[56,0,0,1,0],[61,0,1,2,0],[70,0,0,0,1],[72,0,0,0,1],[79,0,0,0,2],[86,0,0,1,0],[102,0,0,1,0],[103,0,0,0,1],[106,0,0,0,1],[110,0,0,2,0]],"leaves":[[18,0,0,1,0],[108,0,0,1,0]],"schema":[[19,0,0,1,0],[20,0,0,4,0],[43,0,0,1,0],[44,0,0,3,0],[48,0,0,1,0],[49,0,0,2,0],[81,0,0,2,0],[90,0,0,2,0],[91,0,0,1,0],[92,0,0,3,0],[93,0,0,1,0],[94,0,0,6,0],[95,0,0,2,1],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,4,0],[100,0,0,1,0]],"also":[[19,0,0,1,0],[24,0,0,1,0],[40,0,0,1,0],[67,0,0,1,0],[83,0,0,1,0]],"accepts":[[19,0,0,1,0],[47,0,0,1,0]],"resolved":[[19,0,0,1,0],[40,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[110,0,0,1,0]],"deprecatedreason":[[19,0,0,1,0],[96,0,0,1,0]],"message":[[19,0,0,1,0],[95,0,0,0,1],[121,0,0,1,0]],"paired":[[19,0,0,1,0]],"experimental":[[19,0,0,2,0],[96,0,0,1,0]],"canary":[[19,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0]],"hides":[[19,0,0,1,0]],"channels":[[19,0,0,1,0]],"new":[[19,0,0,1,0],[62,0,0,1,0],[96,0,0,1,0]],"highlights":[[19,0,0,1,0]],"recently":[[19,0,0,1,0]],"added":[[19,0,0,1,0]],"draft":[[19,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0]],"excludes":[[19,0,0,1,0]],"generation":[[19,0,0,1,0],[27,0,0,1,0],[81,0,0,1,0],[90,0,0,1,0],[118,0,0,1,0]],"entirely":[[19,0,0,1,0]],"tags":[[19,0,0,2,0],[96,0,0,1,0],[97,0,0,1,0],[113,0,0,1,0]],"free":[[19,0,0,1,0]],"form":[[19,0,0,1,0]],"facets":[[19,0,0,1,0]],"availablein":[[19,0,0,1,0],[96,0,0,1,0],[100,0,0,1,0]],"array":[[19,0,0,1,0],[39,0,0,0,1],[85,0,0,1,0],[95,0,0,0,1],[96,0,0,3,0],[97,0,0,2,0],[98,0,0,1,0]],"cross":[[19,0,0,1,0],[20,0,0,1,0],[21,0,0,1,0],[44,0,0,2,0],[49,0,0,1,0],[93,0,0,1,0],[95,0,0,0,1]],"availability":[[19,0,0,1,0]],"map":[[19,0,0,1,0]],"forces":[[19,0,0,1,0]],"even":[[19,0,0,1,0],[125,0,0,1,0]],"normally":[[19,0,0,1,0]],"lastmodified":[[19,0,0,1,0],[76,0,0,1,0],[85,0,0,1,0],[96,0,0,1,0]],"lastauthor":[[19,0,0,1,0],[76,0,0,1,0],[77,0,0,1,0],[85,0,0,1,0],[96,0,0,1,0]],"filled":[[19,0,0,1,0]],"pass":[[19,0,0,1,0],[36,0,0,1,1],[71,0,0,1,0],[81,0,0,2,0],[99,0,0,1,0],[108,0,0,1,0],[109,0,0,1,0],[114,0,0,1,0],[121,0,0,1,0],[122,0,0,1,0]],"enrich":[[19,0,0,1,0],[76,0,0,1,0],[96,0,0,1,0]],"git":[[19,0,0,1,0],[40,0,0,0,1],[76,0,0,2,0],[77,0,0,1,0],[85,0,0,1,0],[96,0,0,1,0]],"hand":[[19,0,0,1,0]],"rules":[[20,0,1,2,0],[37,0,0,1,0],[43,0,0,1,0],[65,0,0,1,0],[90,1,1,1,0],[91,1,2,0,0],[92,1,3,0,0],[93,1,3,0,0],[94,1,1,0,0],[95,1,1,0,0],[96,1,1,0,0],[97,1,1,0,0],[98,1,1,0,0],[99,1,1,0,0],[100,1,1,0,0],[115,0,1,0,0]],"enforces":[[20,0,0,1,0]],"violations":[[20,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[49,0,0,1,0],[95,0,0,1,1]],"surface":[[20,0,0,1,0],[122,0,0,1,0]],"ci":[[20,0,0,1,0],[32,0,0,1,0],[40,0,0,1,0],[42,0,0,1,0],[43,1,1,2,0],[44,1,1,1,0],[45,1,1,1,0],[46,1,2,2,0],[47,1,1,2,0],[48,1,1,1,0],[49,1,1,2,0],[90,0,0,1,0],[99,0,0,1,0],[100,0,0,2,0],[109,0,0,1,0]],"before":[[20,0,0,1,0],[29,0,1,0,0],[33,0,0,1,0],[36,0,0,1,0],[40,0,0,1,0],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,2,0],[48,0,1,1,0],[49,0,0,1,0],[81,0,0,1,0],[86,0,0,1,0],[89,0,0,2,0],[90,0,0,2,0],[93,0,0,1,0],[100,0,0,1,0],[112,0,0,4,0],[113,0,0,2,0],[124,0,0,1,0]],"they":[[20,0,0,1,0],[30,0,0,0,1],[31,0,0,1,0],[47,0,0,1,0],[55,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0],[100,0,0,1,0],[125,0,0,1,0]],"reach":[[20,0,0,1,0],[24,0,0,1,0],[47,0,0,1,0],[90,0,0,1,0]],"relevant":[[20,0,0,1,0]],"field":[[20,0,0,3,0],[21,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[49,0,0,2,0],[56,0,0,1,0],[92,0,0,4,0],[95,0,0,1,2],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0]],"missing":[[20,0,0,1,0],[29,0,0,2,0],[40,0,0,1,0],[41,0,0,1,0],[44,0,0,1,0],[49,0,0,1,0],[77,0,0,1,0],[92,0,0,1,0],[95,0,0,1,0],[100,0,0,1,0]],"top":[[20,0,0,1,0],[44,0,0,1,0],[88,0,0,1,0],[92,0,0,1,0],[102,0,0,1,0],[116,0,0,1,0],[125,0,0,1,0]],"level":[[20,0,0,1,0],[44,0,0,1,0],[92,0,0,1,0],[102,0,0,1,0]],"warn":[[20,0,0,1,0],[81,0,0,1,0],[92,0,0,1,0],[94,0,0,2,0],[95,0,0,0,1]],"fail":[[20,0,0,1,0],[27,0,0,0,1],[28,0,0,0,1],[43,0,0,2,0],[44,0,0,1,0],[45,0,0,2,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,1,0],[49,0,0,1,0],[90,0,0,1,0],[100,0,0,1,0]],"parse":[[20,0,0,2,0],[44,0,0,2,0],[49,0,0,1,0],[57,0,0,1,0],[92,0,0,3,0],[95,0,0,0,1],[124,0,0,1,0]],"meta":[[20,0,0,1,0],[44,0,0,1,0],[81,0,0,2,0],[92,0,0,1,0],[94,0,0,3,0],[95,0,0,0,1],[98,0,1,0,0],[100,0,0,1,0]],"json":[[20,0,0,1,0],[27,0,0,0,1],[29,0,0,1,0],[34,0,0,4,0],[36,0,0,0,1],[40,0,0,1,1],[41,0,0,2,0],[44,0,0,1,0],[46,0,0,2,2],[48,0,0,0,1],[51,0,0,0,2],[52,0,0,1,0],[53,0,0,3,0],[54,0,0,1,0],[55,0,0,0,1],[59,0,0,0,1],[71,0,0,2,0],[72,0,0,0,2],[75,0,0,1,0],[76,0,0,7,0],[77,0,0,5,0],[78,0,0,3,0],[79,0,1,3,3],[80,0,0,1,0],[81,0,0,3,0],[82,0,0,1,0],[83,0,0,1,0],[92,0,0,1,0],[94,0,0,2,0],[98,0,1,0,0],[100,0,0,2,0],[107,0,0,1,2],[117,0,0,2,0],[118,0,0,0,2],[119,0,0,0,2],[124,0,0,1,0]],"doesn":[[20,0,0,2,0],[44,0,0,1,0],[46,0,0,1,0],[67,0,0,1,0],[93,0,0,1,0],[125,0,0,1,0]],"invalid":[[20,0,0,1,0],[44,0,0,1,0],[49,0,0,1,0],[93,0,0,1,0],[95,0,0,1,1]],"link":[[20,0,0,3,0],[21,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[43,0,0,2,0],[44,0,0,3,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,1,0],[49,0,0,4,0],[53,0,0,1,0],[78,0,0,1,0],[90,0,0,2,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,1,5,0],[94,0,0,1,0],[95,0,0,1,2],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,1,0],[105,0,0,2,0],[111,0,0,2,0]],"exist":[[20,0,0,1,0],[44,0,0,1,0],[93,0,0,1,0]],"unresolved":[[20,0,0,2,0],[44,0,0,2,0],[49,0,0,1,0],[93,0,0,1,0],[95,0,0,0,1],[100,0,0,1,0]],"placeholder":[[20,0,0,2,0],[44,0,0,1,0],[49,0,0,1,0],[93,0,0,1,0],[95,0,0,0,1],[100,0,0,1,0],[112,0,0,2,0]],"doc":[[20,0,0,1,0]],"contains":[[20,0,0,1,0],[79,0,0,1,0],[93,0,0,1,0]],"scoped":[[20,0,0,1,0],[44,0,0,1,0],[65,0,0,1,0],[72,0,0,0,1],[93,0,0,1,0],[102,0,0,2,0]],"another":[[20,0,0,1,0],[37,0,0,0,1],[86,0,0,1,0],[93,0,0,1,0]],"extend":[[20,0,0,1,0],[44,0,0,1,0],[49,0,0,1,0],[81,0,0,1,0],[99,0,0,1,0]],"gives":[[21,0,1,0,0],[64,0,0,1,0]],"consistent":[[21,0,0,1,0]],"rest":[[21,0,0,1,0],[50,0,0,1,0],[80,0,0,1,0]],"configuration":[[21,0,0,1,0]],"drives":[[21,0,0,1,0],[56,0,0,1,0],[71,0,0,1,0]],"position":[[21,0,0,1,0],[56,0,0,1,0]],"filtering":[[21,0,0,1,0],[36,0,0,1,0]],"checks":[[21,0,0,1,0],[43,0,0,1,0],[90,0,0,1,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,2,0],[94,0,0,1,0],[95,0,0,1,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,1,0]],"tarball":[[22,0,0,1,0],[23,0,0,1,0],[24,0,0,2,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,1,1,0],[28,0,1,1,0],[29,0,0,1,0],[30,0,0,2,0],[31,0,0,1,0],[32,0,0,1,0],[40,0,0,1,0],[53,0,0,1,0],[55,0,0,1,0]],"root":[[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,6],[28,0,0,1,5],[29,0,0,1,0],[30,0,0,2,0],[31,0,0,1,0],[32,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[76,0,0,4,0],[81,0,0,1,0],[85,0,0,1,0],[94,0,0,1,0],[98,0,0,1,0],[105,0,0,3,0]],"plus":[[22,0,0,1,0],[23,0,0,1,0],[24,0,0,1,0],[25,0,0,1,0],[26,0,0,1,0],[27,0,0,1,0],[28,0,0,1,0],[29,0,0,1,0],[30,0,0,1,0],[31,0,0,1,0],[32,0,0,1,0],[61,0,0,2,0],[65,0,0,1,0],[69,0,0,1,0],[71,0,0,1,0],[73,0,0,1,0],[78,0,0,1,0],[86,0,0,1,0],[111,0,0,1,0],[121,0,0,1,0]],"publish":[[22,0,0,1,0],[23,0,0,0,4],[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,1,0],[49,0,0,1,0],[72,0,0,1,0]],"library":[[22,0,0,1,0],[24,0,0,1,0],[27,0,0,1,0],[30,0,0,0,2],[66,0,0,1,0],[70,0,0,0,2],[81,0,0,1,0],[83,0,1,1,0],[90,0,0,2,0],[91,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0],[94,0,1,1,0],[95,0,1,1,0],[96,0,0,1,0],[97,0,0,1,0],[98,0,0,1,0],[99,0,0,1,0],[100,0,0,1,0],[103,0,0,0,2],[104,0,0,0,3],[106,0,0,0,2],[121,0,0,0,1],[122,0,0,0,1]],"want":[[22,0,0,1,0],[33,0,0,1,0],[36,0,0,1,0],[62,0,0,1,0],[64,0,0,2,0],[67,0,0,1,0],[86,0,0,1,0],[112,0,0,1,0],[115,0,0,2,0],[123,0,0,1,0]],"coding":[[22,0,0,1,0],[24,0,0,1,0],[31,0,0,1,0],[53,0,0,1,0],[55,0,0,1,1],[59,0,0,2,1],[60,0,0,1,0],[61,0,0,2,0],[62,0,0,1,0],[73,0,0,1,0],[106,0,0,0,1]],"ides":[[22,0,0,1,0]],"hitting":[[22,0,0,1,0]],"network":[[22,0,0,1,0],[55,0,0,1,0],[123,0,0,1,0]],"prepack":[[22,0,0,1,0],[27,0,0,1,0]],"include":[[22,0,0,1,0],[26,0,0,2,2],[27,0,1,0,0],[28,0,1,0,0],[29,0,0,1,0],[36,0,0,1,0],[76,0,0,3,0],[79,0,0,0,1],[113,0,0,1,0],[119,0,0,1,0]],"published":[[22,0,0,1,0],[27,0,1,0,0],[28,0,1,0,0],[30,0,0,1,0],[52,0,0,1,0],[78,0,0,1,0]],"ships":[[22,0,0,1,0],[69,0,0,1,0],[114,0,0,1,0]],"auto":[[22,0,0,1,0],[24,0,0,1,0],[30,0,0,1,0],[53,0,0,1,0],[55,0,0,1,1],[61,0,0,1,0],[73,0,0,1,0],[105,0,0,1,0]],"discover":[[22,0,0,1,0],[53,0,0,1,0],[55,0,0,1,0],[61,0,0,1,0]],"website":[[22,0,0,1,0],[24,0,0,2,0],[25,0,0,1,0],[31,0,0,1,0],[51,0,0,0,2],[52,0,0,2,0],[55,0,0,1,0],[59,0,0,4,0],[60,0,0,1,0],[61,0,0,2,0],[62,0,0,1,0],[63,0,0,1,0],[64,0,0,1,0],[67,0,0,1,0],[73,0,0,2,0],[76,0,0,1,0],[78,0,0,1,0],[105,0,0,1,0]],"bundled":[[22,0,0,1,0],[30,0,0,1,1],[101,0,0,2,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,0,2,0],[106,0,0,1,0],[107,0,0,1,0],[108,0,0,1,0],[109,0,0,1,0]],"everyone":[[22,0,0,1,0]],"else":[[22,0,0,1,0],[49,0,0,1,0],[119,0,0,1,0]],"flow":[[23,0,1,0,0],[34,0,1,0,0],[73,0,0,1,0],[105,0,0,1,0],[106,0,0,1,0]],"src":[[23,0,0,0,2],[25,0,0,0,1],[26,0,0,0,1],[27,0,0,0,1],[29,0,0,0,1],[34,0,0,3,0],[35,0,0,0,1],[40,0,0,0,4],[48,0,0,0,1],[51,0,0,0,2],[59,0,0,0,3],[71,0,0,0,1],[73,0,0,0,1],[76,0,0,2,0],[78,0,0,0,1],[81,0,0,2,0],[107,0,0,1,2],[111,0,0,0,2],[114,0,0,0,1]],"repo":[[23,0,0,0,1],[24,0,0,1,0],[27,0,0,0,2],[28,0,0,0,3],[30,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[40,0,0,1,0],[67,0,0,2,0],[70,0,0,1,0],[76,0,0,1,0],[79,0,0,0,3],[105,0,0,1,0]],"packages":[[23,0,0,0,2],[25,0,0,1,2],[26,0,0,1,1],[29,0,0,0,2],[52,0,0,1,0],[59,0,0,0,1],[64,0,0,1,0],[73,0,0,2,1],[78,0,0,1,1],[105,0,0,0,1]],"lt":[[23,0,0,0,4],[55,0,0,0,1],[59,0,0,0,2]],"gt":[[23,0,0,0,4],[55,0,0,0,1],[59,0,0,0,2]],"consume":[[23,0,0,0,2],[72,0,0,1,0]],"node":[[23,0,0,0,1],[24,0,0,2,0],[25,0,0,1,0],[27,0,0,0,1],[30,0,0,1,1],[53,0,0,1,0],[55,0,0,1,1],[59,0,0,1,1],[61,0,0,2,0],[73,0,0,1,0],[81,0,0,2,0],[83,0,0,1,0],[94,0,0,1,0],[101,0,0,1,0],[105,0,0,1,0],[107,0,0,0,1],[118,0,0,0,1],[119,0,0,1,0]],"modules":[[23,0,0,0,1],[24,0,0,2,0],[25,0,0,1,0],[30,0,0,1,1],[53,0,0,1,0],[55,0,0,1,1],[59,0,0,1,1],[61,0,0,2,0],[73,0,0,1,0],[81,0,0,2,0],[94,0,0,1,0],[101,0,0,1,0],[105,0,0,1,0],[112,0,0,1,0]],"claude":[[23,0,0,0,1],[24,0,0,1,0],[53,0,0,1,0],[55,0,0,0,1],[59,0,0,0,1],[73,0,0,1,0],[105,0,0,1,0]],"codex":[[23,0,0,0,1],[24,0,0,1,0],[53,0,0,1,0],[55,0,0,0,1],[59,0,0,0,1],[73,0,0,1,0],[105,0,0,1,0]],"cursor":[[23,0,0,0,1],[24,0,0,1,0],[53,0,0,1,0],[55,0,0,0,1],[59,0,0,0,1],[73,0,0,1,0],[105,0,0,1,0]],"copilot":[[23,0,0,0,1],[24,0,0,1,0],[53,0,0,1,0],[55,0,0,0,1],[59,0,0,0,1],[73,0,0,1,0],[105,0,0,1,0]],"convention":[[24,0,0,2,0],[53,0,0,1,0],[101,0,0,1,0]],"absolute":[[24,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[55,0,0,0,1],[76,0,0,1,0],[101,0,0,1,0],[105,0,0,1,0]],"urls":[[24,0,0,1,0],[44,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[55,0,0,0,1],[93,0,0,1,0],[101,0,0,1,0],[111,0,0,1,0],[112,0,0,1,0],[119,0,0,1,0]],"fetches":[[24,0,0,1,0]],"over":[[24,0,0,1,0],[27,0,0,1,0],[36,0,0,1,0],[53,0,0,2,0],[55,0,0,1,0],[108,0,0,1,0],[116,0,0,1,0],[123,0,0,1,0]],"http":[[24,0,0,2,0],[41,0,0,1,0],[53,0,0,2,0],[55,0,0,1,3],[59,0,0,2,3],[60,0,0,1,0],[61,0,0,2,0],[62,0,0,1,0],[72,0,0,1,0]],"shape":[[24,0,0,1,0],[40,0,0,1,0],[50,0,0,1,0],[59,0,0,1,0],[79,0,1,1,0],[95,0,1,0,0],[105,0,0,2,0]],"hosted":[[24,0,0,1,0],[55,0,0,1,0],[64,0,0,2,0],[101,0,0,2,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,1,0],[107,0,0,1,0],[108,0,0,1,0],[109,0,0,1,0]],"may":[[24,0,0,1,0]],"able":[[24,0,0,1,0]],"major":[[24,0,0,1,0]],"pkg":[[24,0,0,1,0],[55,0,0,0,1],[59,0,0,0,1],[61,0,0,1,0],[101,0,0,1,0],[105,0,0,1,0]],"anyway":[[24,0,0,1,0]],"filesystem":[[24,0,0,2,0],[105,0,0,1,0],[120,0,0,1,0],[123,0,0,2,0]],"solves":[[24,0,0,1,0]],"openai":[[24,0,0,1,0],[122,0,0,0,1]],"github":[[24,0,0,1,0],[40,0,0,1,2],[45,0,1,1,1],[46,0,0,1,0],[81,0,0,1,0],[100,0,0,2,0]],"aider":[[24,0,0,1,0]],"devin":[[24,0,0,1,0]],"others":[[24,0,0,1,0],[61,0,0,1,0]],"working":[[24,0,0,1,0],[30,0,0,2,1],[55,0,0,1,0],[61,0,0,1,0],[109,0,0,1,0]],"supported":[[24,0,0,1,0]],"closest":[[24,0,0,1,0]],"wins":[[24,0,0,1,0]],"natural":[[24,0,0,1,0]],"tell":[[24,0,0,1,0],[30,0,1,0,0]],"about":[[24,0,0,1,0]],"discoverable":[[24,0,0,2,0],[78,0,0,1,0]],"offline":[[24,0,0,1,0],[25,0,0,1,1],[53,0,0,1,0],[55,0,0,0,2],[59,0,0,1,2],[60,0,0,1,0],[61,0,0,1,0],[62,0,0,1,0],[73,0,1,1,0],[76,0,0,1,0],[101,0,0,1,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,0,2,0],[106,0,0,1,1],[107,0,0,1,0],[108,0,0,1,0],[109,0,0,1,0]],"relative":[[25,0,0,1,0],[36,0,0,0,1],[52,0,0,1,0],[53,0,0,1,0],[55,0,0,1,0],[76,0,0,3,0],[78,0,0,1,0],[94,0,0,1,0],[101,0,0,1,0],[105,0,0,2,0],[106,0,0,0,1],[114,0,0,1,0]],"quickstart":[[25,0,0,1,1],[37,0,0,0,1],[58,0,0,1,0],[62,0,0,1,0],[68,1,1,0,0],[69,1,1,0,0],[70,1,1,0,0],[71,1,1,0,0],[72,1,1,0,0],[73,1,1,0,0],[74,1,1,0,0],[86,0,0,0,1],[87,0,0,0,2],[103,0,0,0,4],[106,0,0,0,2],[120,0,0,0,1]],"meaningful":[[25,0,0,1,0]],"my":[[25,0,0,2,4],[29,0,0,0,2],[30,0,0,0,1],[35,0,0,0,1],[37,0,0,0,1],[70,0,0,0,2],[73,0,0,2,1],[78,0,0,0,1],[103,0,0,0,1],[104,0,0,0,2],[105,0,0,0,1],[106,0,0,0,1],[121,0,0,0,1],[122,0,0,0,1]],"local":[[25,0,0,1,0],[47,0,1,0,0],[109,0,0,1,0],[114,0,0,1,0],[125,0,0,1,0]],"after":[[25,0,0,1,0],[26,0,0,1,0],[41,0,0,1,0],[49,0,0,1,0],[76,0,0,1,0],[88,0,0,1,0],[100,0,0,1,0],[112,0,0,1,0],[118,0,0,1,0]],"skips":[[25,0,0,1,0],[52,0,0,1,0],[53,0,0,2,0],[76,0,0,1,0],[78,0,0,1,0]],"those":[[25,0,0,1,0],[52,0,0,1,0],[66,0,0,1,0],[73,0,0,1,0],[78,0,0,1,0],[108,0,0,1,0]],"artifacts":[[25,0,0,1,0],[53,0,1,0,0],[54,0,1,0,0],[63,0,0,1,0],[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[71,0,0,1,0],[72,0,0,1,0],[73,0,0,1,0],[74,0,0,1,0],[76,0,0,1,0]],"make":[[25,0,0,1,0],[50,0,0,1,0],[125,0,0,1,0]],"sense":[[25,0,0,1,0],[50,0,0,1,0]],"bash":[[25,0,0,0,1],[26,0,0,0,1],[29,0,0,0,1],[35,0,0,0,1],[40,0,0,0,1],[46,0,0,0,1],[47,0,0,0,1],[48,0,0,0,1],[71,0,0,0,1],[73,0,0,0,1],[75,0,0,0,1],[76,0,0,0,1],[78,0,0,0,1],[81,0,0,0,1],[82,0,0,0,1],[123,0,1,0,0]],"summary":[[25,0,0,0,1],[35,0,0,0,2],[37,0,0,0,2],[46,0,0,1,0],[56,0,0,1,0],[76,0,0,2,0],[79,0,0,0,1],[95,0,0,0,1],[102,0,0,1,0],[104,0,0,0,1],[105,0,0,1,0]],"point":[[25,0,0,0,1],[27,0,0,1,0],[30,0,0,2,0],[84,0,0,1,0],[101,0,0,1,0],[114,0,0,1,0]],"subdirs":[[25,0,0,0,1],[78,0,0,1,0]],"preserved":[[25,0,0,0,1],[78,0,0,1,0],[88,0,0,1,0]],"filter":[[26,0,1,0,0],[36,0,0,0,1],[114,0,0,0,1]],"monorepo":[[26,0,0,1,0]],"shared":[[26,0,0,2,1],[67,0,0,1,0],[81,0,0,3,0],[94,0,0,2,0],[115,0,0,1,0],[124,0,0,1,0]],"many":[[26,0,0,1,0],[38,0,0,1,0],[47,0,0,1,0],[67,0,0,1,0]],"slice":[[26,0,0,1,0],[38,0,0,0,1],[56,0,0,1,0],[117,0,0,1,0]],"repeatable":[[26,0,0,1,0],[76,0,0,1,0],[81,0,0,1,0]],"exclude":[[26,0,0,2,1],[29,0,0,1,0],[76,0,0,2,0],[79,0,0,0,1]],"filters":[[26,0,0,1,0],[29,0,0,1,0],[79,0,0,0,1]],"overview":[[26,0,0,1,0]],"too":[[26,0,0,1,0]],"applied":[[26,0,0,1,0],[76,0,0,1,0]],"c15t":[[26,0,0,0,1]],"internal":[[26,0,0,0,1],[44,0,0,1,0],[65,0,0,1,0],[81,0,0,1,0]],"control":[[27,0,0,1,0],[36,0,0,1,0],[80,0,0,1,0],[84,0,0,1,0],[101,0,0,1,0]],"validation":[[27,0,0,1,0],[59,0,0,1,0],[67,0,0,1,0]],"apis":[[27,0,0,1,0],[84,0,0,2,0],[85,0,0,1,0],[86,0,0,1,0],[87,0,0,1,0],[88,0,0,1,0],[89,0,0,1,0],[101,0,0,1,0],[103,0,0,0,1],[108,0,0,1,0],[119,0,0,1,0]],"directly":[[27,0,0,1,0],[53,0,0,2,0],[54,0,0,1,0],[80,0,0,1,0],[84,0,0,1,0],[101,0,0,1,0]],"script":[[27,0,0,2,0],[36,0,0,2,0],[53,0,0,1,0],[54,0,0,1,0],[80,0,0,3,0]],"tsup":[[27,0,0,1,1]],"scripts":[[27,0,0,1,2],[36,0,0,2,5],[83,0,0,1,0]],"dist":[[27,0,0,0,1],[30,0,0,1,0]],"readme":[[27,0,0,0,1],[30,0,0,1,0]],"rm":[[27,0,0,0,3],[111,0,0,0,2]],"fs":[[27,0,0,0,1],[107,0,0,0,1]],"promises":[[27,0,0,0,1],[107,0,0,0,1]],"convertallmdx":[[27,0,0,0,2],[36,0,0,0,2],[83,0,0,1,0],[84,0,0,1,1],[85,0,1,0,1],[89,0,0,1,0],[104,0,0,0,2],[106,0,0,1,0]],"generateagentsmd":[[27,0,0,0,1],[28,0,0,0,1],[83,0,0,1,0],[101,0,0,1,1],[105,0,1,0,2],[106,0,1,0,0]],"resolvedocsnavigation":[[27,0,0,0,1],[28,0,0,0,1],[54,0,0,1,0],[83,0,0,1,0],[101,0,0,0,1],[107,0,1,0,1]],"defaultremarkplugins":[[27,0,0,0,2],[28,0,0,0,1],[36,0,0,0,2],[83,0,0,1,0],[85,0,0,1,2],[86,0,0,0,1],[87,0,0,0,1],[89,0,0,0,2],[104,0,0,0,2],[110,0,0,0,1],[111,0,0,1,0],[113,0,0,0,1],[114,0,0,0,2],[115,0,0,1,0]],"docsconfig":[[27,0,0,0,1],[28,0,0,0,3],[80,0,0,0,3],[104,0,0,0,2],[105,0,0,0,2],[107,0,0,0,1]],"process":[[27,0,0,0,2],[28,0,0,0,2],[36,0,0,0,1],[80,0,0,0,1],[85,0,0,1,0],[107,0,0,0,2],[109,0,0,0,3],[114,0,0,0,1]],"cwd":[[27,0,0,0,2],[36,0,0,0,1],[80,0,0,0,1],[114,0,0,0,1]],"await":[[27,0,0,0,3],[28,0,0,0,2],[36,0,0,0,1],[80,0,0,0,1],[85,0,0,0,1],[86,0,0,0,1],[87,0,0,0,1],[94,0,0,0,1],[99,0,0,0,1],[104,0,0,0,3],[105,0,0,0,1],[107,0,0,0,3],[118,0,0,0,1],[123,0,0,0,1]],"recursive":[[27,0,0,0,1],[107,0,0,0,1]],"force":[[27,0,0,0,2]],"srcdir":[[27,0,0,0,1],[28,0,0,0,3],[36,0,0,0,2],[79,0,0,0,1],[80,0,0,0,1],[81,0,0,2,1],[85,0,0,2,1],[94,0,0,3,1],[99,0,0,0,1],[104,0,0,0,2],[105,0,0,1,1],[107,0,0,0,1]],"outdir":[[27,0,0,0,1],[28,0,0,0,2],[36,0,0,0,2],[79,0,0,0,1],[80,0,0,0,1],[85,0,0,1,1],[104,0,0,1,3],[105,0,0,4,1],[118,0,0,1,3]],"remarkplugins":[[27,0,0,0,1],[28,0,0,0,1],[36,0,0,0,2],[85,0,0,1,1],[87,0,0,0,1],[89,0,0,0,1],[104,0,0,0,1],[113,0,0,0,1],[114,0,0,0,1]],"fast":[[27,0,0,0,1],[28,0,0,0,1],[43,0,0,1,0],[100,0,0,1,0],[125,0,0,1,0]],"bad":[[27,0,0,0,1],[28,0,0,0,1]],"length":[[28,0,0,0,1],[38,0,0,0,3],[107,0,0,0,1]],"urlpath":[[28,0,0,0,2],[37,0,0,0,2],[107,0,0,0,2]],"stderr":[[28,0,0,0,1],[79,0,0,1,0],[107,0,0,0,1]],"write":[[28,0,0,0,1],[57,0,0,1,0],[59,0,0,1,0],[61,0,0,1,0],[87,0,0,1,0],[107,0,0,1,1],[108,0,0,1,0]],"exit":[[28,0,0,0,1],[75,0,0,1,0],[76,0,0,1,0],[77,0,0,2,0],[78,0,0,1,0],[79,0,0,1,0],[80,0,0,1,0],[81,0,0,3,0],[82,0,0,1,0],[83,0,0,1,0],[107,0,0,0,1]],"verify":[[29,0,1,0,0],[41,0,1,0,0]],"publishing":[[29,0,1,0,0],[64,0,0,1,0]],"pack":[[29,0,0,1,1]],"dry":[[29,0,0,1,1]],"check":[[29,0,0,2,0],[37,0,0,1,0],[92,0,0,1,0]],"cd":[[29,0,0,0,1]],"consuming":[[30,0,1,0,0]],"projects":[[30,0,1,0,0]],"discovered":[[30,0,0,1,0],[73,0,0,1,0]],"project":[[30,0,0,1,1],[55,0,0,1,0],[61,0,0,1,0]],"depends":[[30,0,0,1,0],[55,0,0,1,0],[57,0,0,1,0],[61,0,0,1,0]],"directory":[[30,0,0,1,0],[52,0,0,1,0],[76,0,0,1,0],[85,0,0,2,0]],"consumer":[[30,0,0,1,0]],"yours":[[30,0,0,1,0],[60,0,0,1,0]],"recommend":[[30,0,0,1,0]],"snippet":[[30,0,0,1,0]],"consumers":[[30,0,0,1,0]],"their":[[30,0,0,1,0]],"own":[[30,0,0,1,0],[56,0,0,1,0],[59,0,0,1,0],[64,0,0,1,0],[66,0,1,0,0]],"pattern":[[30,0,0,1,0]],"re":[[30,0,0,0,1],[81,0,0,1,0],[111,0,0,0,2],[125,0,0,1,0]],"version":[[30,0,0,0,1],[64,0,1,0,0],[97,0,0,1,0]],"matched":[[30,0,0,0,1]],"installed":[[30,0,0,0,1],[31,0,0,1,0],[53,0,0,1,0]],"stay":[[30,0,0,0,1]],"accurate":[[30,0,0,0,1]],"updates":[[30,0,0,0,1],[100,0,0,1,0]],"understand":[[31,0,0,1,0],[74,0,0,1,0]],"dependency":[[31,0,0,1,0]],"itself":[[31,0,0,1,0]],"web":[[31,0,0,1,0]],"access":[[31,0,0,1,0]],"ide":[[31,0,0,1,0]],"assistants":[[31,0,0,1,0]],"air":[[31,0,0,1,0]],"gapped":[[31,0,0,1,0]],"environments":[[31,0,0,1,0]],"goal":[[31,0,0,1,0]],"emit":[[31,0,0,1,0],[52,0,0,1,0]],"shapes":[[31,0,0,1,0],[52,0,0,1,0]],"serves":[[33,0,0,1,0],[34,0,0,1,0],[35,0,0,1,0],[36,0,0,1,0],[37,0,0,1,0],[38,0,0,1,0],[39,0,0,1,0],[40,0,0,1,0],[41,0,0,1,0],[42,0,0,1,0],[52,0,0,1,0]],"runs":[[33,0,0,1,0],[43,0,0,1,0],[45,0,0,0,1],[57,0,1,1,0],[65,0,0,1,0],[71,0,0,1,0],[75,0,0,1,0],[80,0,0,1,0],[81,0,0,1,0],[111,0,0,1,0]],"produce":[[33,0,0,1,0],[37,0,0,1,0],[76,0,0,1,0],[106,0,0,1,0]],"astro":[[33,0,0,1,0],[36,0,0,1,0],[52,0,0,1,0],[56,0,0,1,0],[59,0,0,1,0],[64,0,0,1,0]],"anything":[[33,0,0,1,0],[40,0,0,1,0],[59,0,0,1,0]],"handles":[[33,0,0,1,0],[67,0,0,1,0],[103,0,0,0,1]],"br":[[34,0,0,10,0]],"pub":[[34,0,0,3,0]],"gen":[[34,0,0,4,0]],"generated":[[34,0,0,1,0],[35,0,0,1,0],[47,0,0,1,0],[62,0,0,1,0],[79,0,0,1,0],[102,0,1,0,0],[107,0,0,1,2]],"human":[[34,0,0,2,0],[55,0,0,0,2]],"off":[[35,0,1,0,0],[76,0,0,2,0],[81,0,0,1,0]],"together":[[35,0,0,1,0],[37,0,0,1,0],[100,0,0,1,0]],"generates":[[35,0,0,1,0],[61,0,0,1,0]],"builds":[[35,0,0,1,0],[36,0,0,1,0],[61,0,0,1,0],[109,0,0,1,0],[116,0,0,1,0]],"resolves":[[35,0,0,1,0],[61,0,0,1,0]],"paths":[[35,0,0,1,0],[36,0,0,0,1],[45,0,0,0,1],[47,0,0,1,0],[52,0,0,1,0],[81,0,0,1,0],[83,0,0,1,0],[101,0,0,1,0],[106,0,0,0,1],[119,0,0,1,0],[125,0,0,1,0]],"listed":[[35,0,0,1,0]],"inspected":[[35,0,0,1,0]],"detail":[[35,0,0,1,0]],"under":[[35,0,0,1,0],[47,0,0,1,0],[57,0,0,1,0],[81,0,0,1,0],[94,0,0,1,0],[105,0,0,1,0],[118,0,0,1,0]],"base":[[35,0,0,0,1],[36,0,0,1,0],[52,0,0,1,0],[71,0,0,0,1],[76,0,0,2,0],[83,0,0,1,0],[109,0,1,2,2]],"https":[[35,0,0,0,1],[40,0,0,0,1],[71,0,0,0,1],[80,0,0,0,1],[103,0,0,0,5],[104,0,0,0,2],[107,0,0,0,1],[109,0,0,0,1],[118,0,0,0,1]],"com":[[35,0,0,0,1],[40,0,0,0,1],[71,0,0,0,1],[80,0,0,0,1],[103,0,0,0,5],[104,0,0,0,2],[107,0,0,0,1],[109,0,0,0,1],[118,0,0,0,1]],"simplest":[[36,0,0,1,0]],"setup":[[36,0,0,1,0],[45,0,0,0,1],[109,0,0,1,0]],"stage":[[36,0,0,1,0],[37,0,0,1,0],[57,0,0,1,0],[86,0,0,1,0]],"rerun":[[36,0,0,1,0]],"independently":[[36,0,0,1,0],[56,0,0,1,0]],"splitting":[[36,0,0,1,0],[118,0,0,1,0]],"separate":[[36,0,0,1,0],[71,0,0,1,0],[117,0,0,1,0]],"canonical":[[36,0,0,1,0]],"remarkinclude":[[36,0,0,1,2],[85,0,0,1,2],[89,0,0,2,2],[104,0,0,0,2],[110,0,0,0,1],[113,0,1,0,1],[115,0,0,1,0]],"enables":[[36,0,0,1,0]],"foo":[[36,0,0,1,0],[52,0,0,1,0],[56,0,0,2,0]],"style":[[36,0,0,1,0],[121,0,0,1,0]],"partial":[[36,0,0,1,0],[113,0,0,1,0]],"expansion":[[36,0,0,1,0]],"basepath":[[36,0,0,1,2],[114,0,1,1,1]],"swap":[[36,0,0,1,0]],"remarktypetabletomarkdown":[[36,0,0,1,3],[110,0,0,0,1],[111,0,0,1,1],[114,0,1,0,3]],"needed":[[36,0,0,1,0],[114,0,0,1,0]],"plugins":[[36,0,0,1,0],[51,0,0,1,0],[83,0,0,1,0],[89,0,1,1,0],[110,1,1,0,0],[111,1,1,0,0],[112,1,1,0,0],[113,1,2,0,0],[114,1,2,0,0],[115,1,1,1,0]],"mdxtomarkdownoptions":[[36,0,0,0,2]],"reporoot":[[36,0,0,0,4]],"resolve":[[36,0,0,0,1],[57,0,0,1,0],[71,0,0,1,0],[106,0,0,1,0],[114,0,0,1,0]],"typetableplugin":[[36,0,0,0,2]],"nonnullable":[[36,0,0,0,1]],"number":[[36,0,0,0,1],[38,0,0,0,1],[95,0,0,0,3]],"enrichfrontmatterfromgit":[[36,0,0,0,1],[85,0,0,1,1],[86,0,0,0,1]],"configure":[[37,0,1,0,0]],"let":[[37,0,0,1,0],[59,0,0,1,0]],"manifest":[[37,0,0,1,0],[51,0,0,0,1],[53,0,0,1,0],[54,0,0,1,0],[107,0,0,2,0]],"catches":[[37,0,0,1,0],[44,0,1,0,0],[92,0,0,1,0],[93,0,0,1,0]],"typos":[[37,0,0,1,0]],"resolution":[[37,0,0,1,0],[107,0,0,1,0],[112,0,0,2,0]],"definedocsconfig":[[37,0,0,0,2]],"export":[[37,0,0,0,1],[38,0,0,0,1],[39,0,0,0,1],[111,0,0,1,0]],"bullets":[[37,0,0,0,1]],"beststartingpoints":[[37,0,0,0,1]],"started":[[37,0,0,0,2],[70,0,0,0,1],[72,0,0,0,1],[79,0,0,0,2],[103,0,0,0,1],[106,0,0,0,1]],"guides":[[37,0,0,0,2],[108,0,0,1,0],[120,0,0,0,1]],"drop":[[38,0,0,1,0]],"front":[[38,0,0,1,0]],"fetch":[[38,0,0,1,0],[53,0,0,1,0],[55,0,0,1,1],[61,0,0,1,0]],"visit":[[38,0,0,1,0]],"complete":[[38,0,0,1,0],[68,0,0,1,0]],"lines":[[38,0,0,1,0]],"browsers":[[38,0,0,2,1]],"send":[[38,0,0,3,1]],"set":[[38,0,0,2,0],[52,0,0,1,0],[69,0,0,1,0],[96,0,0,1,0]],"charset":[[38,0,0,5,2],[39,0,0,0,2],[41,0,0,2,0]],"utf":[[38,0,0,4,1],[39,0,0,0,1],[41,0,0,2,0]],"handlers":[[38,0,0,1,0]],"which":[[38,0,0,1,0],[56,0,0,1,0],[71,0,0,1,0],[108,0,0,1,0]],"makes":[[38,0,0,1,0],[45,0,0,1,0]],"fall":[[38,0,0,1,0]],"latin":[[38,0,0,1,0]],"characters":[[38,0,0,1,0],[41,0,0,1,0]],"box":[[38,0,0,1,0]],"drawing":[[38,0,0,1,0]],"em":[[38,0,0,1,0]],"dashes":[[38,0,0,1,0]],"smart":[[38,0,0,1,0]],"quotes":[[38,0,0,1,0]],"mojibake":[[38,0,0,1,0],[41,0,0,1,0]],"always":[[38,0,0,1,0],[104,0,0,1,0]],"forceutf8ontextresponses":[[38,0,0,1,1],[39,0,0,0,1]],"patching":[[38,0,0,1,0]],"setheader":[[38,0,0,1,3]],"rewritetomarkdown":[[38,0,0,1,1],[39,0,0,0,1]],"logic":[[38,0,0,1,0],[107,0,0,1,0]],"cloudflare":[[38,0,0,1,0],[56,0,0,1,0],[119,0,0,1,0],[122,0,0,1,2],[123,0,0,1,0],[124,0,0,1,0]],"worker":[[38,0,0,1,0],[56,0,0,1,0]],"case":[[38,0,0,1,0]],"explicitly":[[38,0,0,1,0],[80,0,0,1,0],[109,0,0,1,0]],"pluginoption":[[38,0,0,0,1],[39,0,0,0,1]],"function":[[38,0,0,0,3],[39,0,0,0,1],[85,0,0,1,0],[117,0,0,1,0]],"undefined":[[38,0,0,0,1]],"null":[[38,0,0,0,6],[107,0,0,0,1]],"return":[[38,0,0,0,8],[39,0,0,0,4]],"pathname":[[38,0,0,0,8]],"split":[[38,0,0,0,1]],"endswith":[[38,0,0,0,1]],"startswith":[[38,0,0,0,1]],"test":[[38,0,0,0,5],[39,0,0,0,2]],"never":[[38,0,0,0,1],[115,0,0,1,0]],"target":[[38,0,0,0,2]],"replace":[[38,0,0,0,1],[99,0,0,1,0],[111,0,0,1,0]],"res":[[38,0,0,0,4],[39,0,0,0,2]],"original":[[38,0,0,0,3],[39,0,0,0,2]],"bind":[[38,0,0,0,1]],"typeof":[[38,0,0,0,2]],"tolowercase":[[38,0,0,0,1]],"down":[[39,0,0,0,1]],"markdownnegotiation":[[39,0,0,0,1]],"req":[[39,0,0,0,7]],"any":[[39,0,0,0,2],[45,0,0,1,0],[46,0,0,1,0],[64,0,0,1,0],[81,0,0,1,0],[100,0,0,1,0],[103,0,0,0,1],[113,0,0,1,0],[115,0,0,1,0],[121,0,0,1,0]],"void":[[39,0,0,0,1]],"isarray":[[39,0,0,0,1]],"headers":[[39,0,0,0,3],[124,0,0,1,0]],"join":[[39,0,0,0,1]],"rewritten":[[39,0,0,0,3]],"middlewares":[[39,0,0,0,2]],"configurepreviewserver":[[39,0,0,0,1]],"remote":[[40,0,1,0,0]],"malformed":[[40,0,0,1,0]],"format":[[40,0,0,1,1],[45,0,0,1,1],[46,0,0,2,1],[76,0,0,2,0],[77,0,0,2,0],[81,0,0,2,0],[100,0,0,2,0],[117,0,0,1,0]],"inline":[[40,0,0,1,0],[45,0,0,1,0],[75,0,0,1,0]],"annotations":[[40,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0]],"pr":[[40,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0]],"automation":[[40,0,0,1,0]],"stats":[[40,0,0,1,0],[79,0,0,0,1]],"we":[[40,0,0,1,0]],"expect":[[40,0,0,1,0]],"orgs":[[40,0,0,1,0]],"hosting":[[40,0,0,1,0],[66,0,0,1,0]],"multiple":[[40,0,0,1,0]],"repos":[[40,0,0,1,0],[64,0,0,1,0],[67,0,0,1,0]],"documents":[[40,0,0,1,0],[67,0,0,1,0]],"pulls":[[40,0,0,1,0]],"clone":[[40,0,0,0,1]],"depth":[[40,0,0,0,1]],"acme":[[40,0,0,0,1]],"clean":[[41,0,0,1,0],[84,0,0,1,0],[88,0,0,1,0],[111,0,0,0,1],[112,0,0,1,0]],"home":[[41,0,0,1,0]],"mention":[[41,0,0,1,0]],"then":[[41,0,0,1,0],[76,0,0,1,0],[110,0,0,1,0],[117,0,0,1,0],[125,0,0,1,0]],"server":[[41,0,0,1,0]],"curl":[[41,0,0,1,0]],"localhost":[[41,0,0,1,0]],"will":[[41,0,0,1,0],[56,0,0,1,0],[72,0,0,1,0],[108,0,0,1,0]],"instead":[[41,0,0,1,0],[105,0,0,1,0],[123,0,0,1,0]],"wired":[[41,0,0,1,0]],"validate":[[43,1,1,0,0],[44,1,1,0,0],[45,1,1,0,0],[46,1,1,0,0],[47,1,1,0,0],[48,1,1,0,0],[49,1,1,1,0],[57,0,0,1,0],[81,0,0,1,0],[86,0,0,1,0],[100,0,0,1,0]],"issues":[[43,0,0,1,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,2,0],[48,0,0,1,0],[49,0,0,1,0],[90,0,0,1,0]],"prs":[[43,0,0,2,0],[44,0,0,1,0],[45,0,0,1,0],[46,0,0,1,0],[47,0,0,1,0],[48,0,0,1,0],[49,0,0,1,0],[90,0,0,1,0]],"exits":[[43,0,0,1,0]],"zero":[[43,0,0,1,0],[60,0,0,1,0],[64,0,0,1,0],[81,0,0,1,0]],"errors":[[43,0,0,1,0],[45,0,0,1,0],[79,0,0,1,0],[81,0,0,3,0],[95,0,0,0,1],[100,0,0,1,0]],"would":[[43,0,0,1,0],[105,0,0,1,0]],"otherwise":[[43,0,0,1,0]],"blow":[[43,0,0,1,0]],"later":[[43,0,0,1,0]],"typed":[[44,0,0,1,0],[49,0,0,1,0]],"rule":[[44,0,0,2,0],[81,0,0,1,0],[92,0,0,1,0],[93,0,0,1,0],[95,0,0,1,1]],"pointing":[[44,0,0,1,0],[105,0,0,1,0]],"routes":[[44,0,0,1,0]],"placeholders":[[44,0,0,1,0],[110,0,0,1,0],[111,0,0,1,0],[112,0,0,1,0]],"left":[[44,0,0,1,0]],"actions":[[45,0,1,0,1],[100,0,0,1,0]],"upgrades":[[45,0,0,1,0],[92,0,0,1,0]],"strict":[[45,0,0,1,0],[99,0,0,1,0]],"max":[[45,0,0,1,1],[47,0,0,0,1],[81,0,0,1,0]],"remaining":[[45,0,0,1,0]],"job":[[45,0,0,1,0],[48,0,0,1,0],[64,0,0,1,0]],"pull":[[45,0,0,0,1]],"request":[[45,0,0,0,1],[56,0,0,1,0],[124,0,0,1,0]],"jobs":[[45,0,0,0,1]],"ubuntu":[[45,0,0,0,1]],"latest":[[45,0,0,0,1]],"checkout":[[45,0,0,0,1]],"v4":[[45,0,0,0,1]],"oven":[[45,0,0,0,1]],"sh":[[45,0,0,0,1],[47,0,0,0,1]],"v2":[[45,0,0,0,1]],"providers":[[46,0,1,0,0]],"speak":[[46,0,0,1,0]],"includes":[[46,0,0,1,0],[48,0,0,1,0],[89,0,0,1,0]],"counts":[[46,0,0,1,0]],"pipe":[[46,0,0,1,0],[99,0,0,0,1]],"provider":[[46,0,0,1,0],[116,0,0,1,0],[122,0,1,1,0]],"reporter":[[46,0,0,1,0]],"post":[[46,0,0,1,0]],"comment":[[46,0,0,1,0]],"upload":[[46,0,0,1,0]],"artifact":[[46,0,0,1,0],[51,0,0,1,0],[62,0,0,1,0],[78,0,0,1,0]],"report":[[46,0,0,0,1],[81,0,0,2,0]],"pre":[[47,0,1,1,0],[123,0,0,1,0]],"push":[[47,0,1,1,0]],"hook":[[47,0,1,1,0]],"catch":[[47,0,0,1,0],[91,0,0,1,0],[108,0,0,1,0]],"running":[[47,0,0,1,0],[60,0,0,1,0]],"husky":[[47,0,0,1,0]],"second":[[47,0,0,1,0]],"limiting":[[47,0,0,1,0]],"scan":[[47,0,0,1,0]],"changed":[[47,0,0,1,0]],"repeated":[[47,0,0,1,0]],"ignore":[[47,0,0,1,0],[81,0,0,3,0],[94,0,0,2,0]],"globs":[[47,0,0,1,0]],"skip":[[47,0,0,1,0],[81,0,0,1,0],[115,0,0,1,0]],"stale":[[47,0,0,1,0],[49,0,0,1,0],[100,0,0,1,0]],"usr":[[47,0,0,0,1]],"bin":[[47,0,0,0,1]],"env":[[47,0,0,0,1],[109,0,0,1,3],[122,0,0,1,0]],"noisily":[[48,0,0,1,0]],"broken":[[48,0,0,1,0],[49,0,0,1,0],[57,0,0,1,0]],"specifically":[[48,0,0,1,0]],"problems":[[48,0,0,1,0]],"line":[[48,0,0,1,0]],"much":[[48,0,0,1,0]],"easier":[[48,0,0,1,0]],"debug":[[48,0,0,1,0]],"fix":[[49,0,1,1,0],[115,0,0,1,0]],"lot":[[49,0,0,1,0]],"bug":[[49,0,0,2,0],[57,0,0,1,0],[100,0,0,1,0]],"usually":[[49,0,0,1,0],[69,0,0,1,0],[85,0,0,1,0],[100,0,0,1,0],[115,0,0,1,0]],"move":[[49,0,0,1,0],[100,0,0,1,0]],"last":[[49,0,0,1,0],[112,0,0,1,0]],"either":[[49,0,0,1,0],[76,0,0,1,0]],"delete":[[49,0,0,1,0]],"mental":[[50,0,0,1,0],[51,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[56,0,0,1,0],[57,0,0,1,0],[58,0,0,1,0],[62,0,0,1,0],[103,0,0,0,2],[106,0,0,0,1]],"model":[[50,0,0,1,0],[51,0,0,1,0],[52,0,0,1,0],[53,0,0,1,0],[54,0,0,1,0],[55,0,0,1,0],[56,0,0,1,0],[57,0,0,1,0],[58,0,0,1,0],[62,0,0,1,0],[103,0,0,0,2],[106,0,0,0,1],[121,0,0,2,0],[122,0,0,1,1]],"modes":[[50,0,0,1,0],[51,0,0,1,0],[52,0,1,2,0],[53,0,0,2,0],[54,0,0,1,0],[55,0,0,1,0],[56,0,0,1,0],[57,0,0,1,0],[58,0,0,1,0],[76,0,0,1,0]],"takes":[[50,0,0,1,0],[60,0,0,1,0]],"input":[[50,0,0,1,0]],"folder":[[50,0,0,1,0],[68,0,0,2,0],[69,0,0,1,0],[70,0,0,1,0],[71,0,0,1,0],[72,0,0,1,0],[73,0,0,1,0],[74,0,0,1,0],[76,0,0,2,0]],"take":[[50,0,0,1,0],[59,0,0,1,0]],"piece":[[50,0,0,1,0]],"turns":[[51,0,0,1,0],[110,0,0,1,0],[121,0,0,1,0]],"gets":[[51,0,0,1,0],[56,0,0,1,0],[88,0,0,1,0],[102,0,1,0,0]],"sequence":[[51,0,0,1,0],[104,0,1,0,0]],"consumes":[[51,0,0,1,0]],"tb":[[51,0,0,0,1],[111,0,0,0,1]],"fm":[[51,0,0,0,4]],"parser":[[51,0,0,0,1]],"strip":[[51,0,0,0,1],[111,0,0,2,0]],"idx":[[51,0,0,0,3]],"beneath":[[52,0,0,1,0]],"designed":[[52,0,0,1,0]],"tarballs":[[52,0,0,1,0]],"alongside":[[52,0,0,1,0],[67,0,0,1,0],[78,0,0,1,0]],"served":[[53,0,0,1,0]],"via":[[53,0,0,1,0],[59,0,0,0,1],[61,0,0,1,0],[65,0,0,1,0],[81,0,0,1,0],[84,0,0,1,0],[116,0,0,1,0],[122,0,1,0,0]],"websites":[[53,0,0,1,0],[101,0,0,2,0],[102,0,0,1,0],[103,0,0,1,0],[104,0,0,1,0],[105,0,0,1,0],[106,0,0,1,0],[107,0,0,1,0],[108,0,0,1,0],[109,0,0,1,0]],"follow":[[53,0,0,1,0],[55,0,0,1,0]],"useless":[[53,0,0,1,0]],"bm25":[[53,0,0,1,0],[71,0,0,1,0],[72,0,0,0,1],[117,0,0,1,0]],"ranked":[[53,0,0,1,0]],"inverted":[[53,0,0,1,0]],"stored":[[53,0,0,1,0]],"separately":[[53,0,0,1,0],[122,0,0,2,0]],"disk":[[53,0,0,1,0],[54,0,0,1,0],[86,0,0,1,0]],"grep":[[53,0,0,1,0],[54,0,0,1,0],[123,0,0,1,0]],"mapping":[[53,0,0,1,0],[54,0,0,1,0]],"locations":[[53,0,0,1,0],[54,0,0,1,0]],"nts":[[54,0,0,1,0]],"built":[[54,0,0,1,0],[64,0,0,1,0]],"helper":[[54,0,0,1,0],[103,0,0,0,1],[124,0,0,1,0]],"agree":[[54,0,0,1,0]],"structure":[[54,0,0,1,0],[80,0,0,1,0],[85,0,0,1,0],[105,0,0,1,0]],"being":[[55,0,0,1,0]],"told":[[55,0,0,1,0]],"there":[[55,0,0,1,0],[88,0,0,1,0]],"flows":[[55,0,0,2,0]],"complement":[[55,0,0,1,0]],"wants":[[55,0,0,1,0]],"publishes":[[55,0,0,1,0]],"pick":[[55,0,0,1,0],[60,0,0,1,0]],"ai":[[55,0,0,0,1],[59,0,0,0,1],[64,0,0,1,0],[122,0,0,1,5]],"answers":[[55,0,0,0,1],[59,0,0,0,1],[117,0,0,1,0],[121,0,1,0,0]],"discovery":[[55,0,0,0,1],[105,0,0,1,0]],"vocabulary":[[56,0,1,0,0],[117,0,1,0,0],[125,0,0,1,0]],"few":[[56,0,0,1,0]],"terms":[[56,0,0,1,0]],"throughout":[[56,0,0,1,0]],"verb":[[56,0,0,1,0]],"declaring":[[56,0,0,1,0]],"belongs":[[56,0,0,1,0]],"noun":[[56,0,0,3,0]],"chunk":[[56,0,0,1,0],[72,0,0,0,1],[117,0,0,4,0],[120,0,0,0,1]],"scores":[[56,0,0,1,0]],"weigh":[[56,0,0,1,0],[117,0,0,1,0]],"rewrites":[[56,0,0,1,0]],"advertises":[[56,0,0,1,0]],"implement":[[56,0,0,1,0]],"wherever":[[56,0,0,1,0]],"intercepts":[[56,0,0,1,0]],"requests":[[56,0,0,1,0]],"endpoint":[[56,0,0,1,0],[67,0,0,1,0]],"fixed":[[57,0,0,1,0]],"previous":[[57,0,0,1,0]],"through":[[57,0,0,1,0],[71,0,0,1,0],[93,0,0,1,0]],"matches":[[57,0,0,1,0],[60,0,0,1,0],[125,0,0,1,0]],"known":[[57,0,0,1,0]],"grouping":[[57,0,0,1,0]],"chunking":[[57,0,0,1,0]],"finds":[[57,0,0,1,0],[114,0,0,1,0]],"design":[[57,0,0,1,0],[67,0,0,1,0],[108,0,1,0,0]],"problem":[[57,0,0,1,0]],"fronted":[[59,0,0,1,0]],"bring":[[59,0,0,1,0]],"handle":[[59,0,0,1,0]],"outputs":[[59,0,0,1,0],[67,0,0,1,0]],"choose":[[60,0,1,0,0]],"most":[[60,0,0,1,0],[89,0,0,1,0],[108,0,0,1,0],[109,0,0,1,0]],"teams":[[60,0,0,1,0]],"arrive":[[60,0,0,1,0]],"reasons":[[60,0,0,1,0]],"journey":[[60,0,0,1,0]],"familiar":[[61,0,0,1,0]],"five":[[62,0,0,1,0],[68,0,0,1,0],[103,0,0,0,1]],"minutes":[[62,0,0,1,0],[68,0,0,1,0]],"comparing":[[62,0,0,1,0]],"methodology":[[62,0,0,1,0],[63,1,1,0,0],[64,1,1,0,0],[65,1,1,0,0],[66,1,1,0,0],[67,1,1,0,0]],"differs":[[62,0,0,1,0],[63,0,0,1,0],[64,0,0,1,0],[65,0,0,1,0],[66,0,0,1,0],[67,0,0,1,0]],"fumadocs":[[62,0,0,1,0],[63,0,0,1,0],[64,0,0,2,0],[65,0,0,1,0],[66,0,0,1,0],[67,0,0,2,0]],"starlight":[[62,0,0,1,0],[63,0,0,1,0],[64,0,0,2,0],[65,0,0,1,0],[66,0,0,1,0],[67,0,0,2,0]],"mintlify":[[62,0,0,1,0],[63,0,0,1,0],[64,0,0,2,0],[65,0,0,1,0],[66,0,0,1,0],[67,0,0,1,0]],"layout":[[63,0,0,1,0]],"theming":[[63,0,0,1,0],[66,0,0,1,0]],"tool":[[64,0,0,1,0],[123,0,1,0,0]],"platform":[[64,0,0,2,0]],"analytics":[[64,0,0,1,0],[66,0,0,1,0]],"layer":[[64,0,0,1,0],[125,0,0,1,0]],"behind":[[64,0,0,1,0]],"main":[[64,0,0,1,0],[82,0,0,0,1]],"polished":[[64,0,0,1,0]],"quickly":[[64,0,0,1,0],[108,0,0,1,0]],"infra":[[64,0,0,1,0]],"standardize":[[64,0,0,1,0]],"edge":[[65,0,0,1,0],[116,0,0,1,0],[119,0,0,1,0],[125,0,0,1,0]],"safe":[[65,0,0,1,0],[103,0,0,0,1],[116,0,0,1,0],[119,0,0,1,0],[125,0,0,1,0]],"grounded":[[65,0,0,1,0],[116,0,0,2,0],[117,0,0,1,0],[118,0,0,1,0],[119,0,0,1,0],[120,0,0,1,0],[121,0,1,1,0],[122,0,0,1,0],[123,0,0,1,0],[124,0,0,1,0],[125,0,0,1,0]],"answer":[[65,0,0,1,0],[116,0,0,2,0],[117,0,0,1,0],[118,0,0,2,0],[119,0,0,1,0],[120,0,0,1,0],[121,0,0,2,0],[122,0,0,2,0],[123,0,0,1,0],[124,0,0,1,0],[125,0,0,1,0]],"streaming":[[65,0,0,1,0],[116,0,0,2,0],[117,0,0,1,0],[118,0,0,1,0],[119,0,0,1,0],[120,0,0,1,0],[121,0,0,1,0],[122,0,1,1,0],[123,0,0,1,0],[124,0,0,1,0],[125,0,0,1,0]],"metadata":[[65,0,0,1,0],[122,0,0,1,0]],"orchestration":[[65,0,0,1,0]],"whole":[[65,0,0,1,0]],"prebuilt":[[66,0,0,1,0]],"provides":[[66,0,0,1,0]],"combination":[[67,0,1,0,0]],"shines":[[67,0,1,0,0]],"experience":[[67,0,0,1,0]],"keeps":[[67,0,0,1,0],[109,0,0,1,0],[118,0,0,1,0]],"private":[[67,0,0,1,0]],"templated":[[67,0,0,1,0]],"system":[[67,0,0,1,0],[121,0,0,2,1]],"pair":[[67,0,0,1,0],[89,0,0,1,0],[106,0,0,1,0]],"against":[[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[71,0,0,1,0],[72,0,0,1,0],[73,0,0,1,0],[74,0,0,1,0],[81,0,0,1,0],[94,0,0,1,0]],"four":[[68,0,0,1,0],[69,0,0,1,0],[70,0,0,1,0],[71,0,0,2,0],[72,0,0,1,0],[73,0,0,1,0],[74,0,0,2,0]],"executable":[[69,0,0,1,0]],"focused":[[69,0,0,1,0],[108,0,0,1,0]],"sentence":[[70,0,0,0,1]],"welcome":[[70,0,0,0,1],[108,0,0,1,0]],"walks":[[71,0,0,1,0]],"store":[[71,0,0,1,0],[72,0,0,0,1],[117,0,0,1,0],[124,0,0,1,0]],"excerpts":[[71,0,0,1,0],[117,0,0,1,0]],"reports":[[71,0,0,1,0]],"found":[[71,0,0,1,0]],"find":[[73,0,0,1,0],[123,0,0,1,0]],"etc":[[73,0,0,1,0],[79,0,0,1,0],[105,0,0,1,0]],"now":[[74,0,0,1,0],[107,0,0,1,0]],"primitives":[[74,0,0,1,0]],"flags":[[75,0,0,1,0],[76,0,0,1,0],[77,0,0,1,0],[78,0,0,1,0],[79,0,0,1,0],[80,0,0,1,0],[81,0,0,1,0],[82,0,0,1,0],[83,0,0,1,0],[90,0,0,1,0],[103,0,0,0,1]],"codes":[[75,0,0,1,0],[76,0,0,1,0],[77,0,0,2,0],[78,0,0,1,0],[79,0,0,1,0],[80,0,0,1,0],[81,0,0,2,0],[82,0,0,1,0],[83,0,0,1,0]],"validates":[[75,0,0,1,0],[90,0,0,1,0]],"help":[[75,0,0,1,0],[77,0,0,1,0],[81,0,0,1,0],[82,0,1,0,3]],"usage":[[75,0,0,1,0],[77,0,0,2,0],[81,0,0,2,0],[82,0,0,1,1]],"flag":[[76,0,0,1,0],[81,0,0,1,0],[103,0,0,0,1],[106,0,0,0,1]],"dir":[[76,0,0,4,0],[77,0,0,1,0],[81,0,0,2,0]],"containing":[[76,0,0,1,0],[105,0,0,1,0]],"ignored":[[76,0,0,1,0],[81,0,0,1,0],[105,0,0,1,0],[111,0,0,1,0]],"written":[[76,0,0,2,0],[105,0,0,3,0]],"glob":[[76,0,0,4,0],[81,0,0,2,0],[94,0,0,1,0]],"none":[[76,0,0,2,0]],"history":[[76,0,0,1,0],[77,0,0,1,0],[85,0,0,1,0]],"fmt":[[76,0,0,1,0],[77,0,0,1,0],[81,0,0,1,0]],"prints":[[76,0,0,1,0],[77,0,0,1,0],[79,0,0,1,0]],"result":[[76,0,0,1,0],[77,0,0,1,0],[86,0,0,0,3],[94,0,0,0,1],[95,0,1,0,0],[107,0,0,1,0],[118,0,0,1,0],[120,0,0,1,0]],"object":[[76,0,0,1,0],[77,0,0,1,0],[79,0,0,1,0],[99,0,0,0,1],[107,0,0,1,0]],"stdout":[[76,0,0,1,0],[77,0,0,1,0]],"alias":[[76,0,0,1,0],[77,0,0,1,0]],"print":[[77,0,0,1,0],[79,0,0,1,0],[81,0,0,1,0]],"anchored":[[78,0,0,1,0]],"describing":[[79,0,0,1,0]],"was":[[79,0,0,1,0]],"varies":[[79,0,0,1,0]],"agentsmd":[[79,0,0,1,0]],"llmstxt":[[79,0,0,1,1]],"absent":[[79,0,0,1,0]],"abs":[[79,0,0,0,8]],"docsdir":[[79,0,0,0,1]],"docsllmstxt":[[79,0,0,0,1]],"docsllmsfulltxt":[[79,0,0,0,1]],"searchindex":[[79,0,0,0,1]],"searchcontent":[[79,0,0,0,1]],"inference":[[80,0,1,0,0]],"loaded":[[80,0,0,1,0]],"importing":[[80,0,0,1,0]],"inferred":[[80,0,0,2,0],[88,0,0,1,0]],"union":[[80,0,0,1,0]],"values":[[80,0,0,1,0]],"generatellmstxt":[[80,0,0,0,2],[83,0,0,1,0],[101,0,0,2,1],[104,0,0,0,2],[105,0,0,3,0]],"baseurl":[[80,0,0,0,1],[104,0,0,0,2],[107,0,0,0,1],[109,0,0,1,1],[118,0,0,0,1]],"honored":[[80,0,0,0,1]],"positional":[[81,0,0,1,0]],"changelog":[[81,0,0,2,0],[94,0,0,2,0],[95,0,0,0,1],[97,0,1,0,0]],"subdirectory":[[81,0,0,1,0],[94,0,0,1,0],[105,0,0,1,0]],"validated":[[81,0,0,1,0],[94,0,0,1,0]],"pretty":[[81,0,0,2,0]],"annotation":[[81,0,0,1,0]],"defaults":[[81,0,0,3,0],[89,0,0,1,0],[94,0,0,1,0],[99,0,0,1,0]],"passing":[[81,0,0,1,0]],"unlimited":[[81,0,0,1,0]],"count":[[81,0,0,1,0]],"exceeds":[[81,0,0,1,0]],"within":[[81,0,0,1,0]],"budget":[[81,0,0,2,0]],"exceeded":[[81,0,0,1,0]],"partials":[[81,0,0,1,0],[89,0,0,1,0],[94,0,0,1,0]],"plug":[[81,0,0,1,0]],"valibot":[[81,0,0,1,0],[94,0,0,3,0],[99,0,0,1,1]],"schemas":[[81,0,0,1,0],[90,0,0,1,0],[94,0,0,3,0],[96,0,1,0,0],[97,0,1,0,0],[98,0,1,0,0],[99,0,1,0,1]],"show":[[82,0,0,1,0]],"thin":[[83,0,0,1,0],[122,0,0,1,0]],"wrapper":[[83,0,0,1,0]],"available":[[83,0,0,1,0]],"convertmdxtomarkdown":[[83,0,0,1,0],[84,0,0,0,1],[86,0,1,0,1]],"writemdxfileasmarkdown":[[83,0,0,1,0],[84,0,0,0,1],[87,0,1,0,1]],"generatellmfullcontextfiles":[[83,0,0,1,0],[101,0,0,1,1],[104,0,0,1,2]],"generatedocssearchfiles":[[83,0,0,1,0],[118,0,0,0,2]],"lintdocs":[[83,0,0,1,0],[90,0,0,0,1],[94,0,0,0,2],[99,0,0,0,2]],"individual":[[83,0,0,1,0],[115,0,0,1,0]],"happy":[[83,0,0,1,0],[103,0,0,0,1]],"precedence":[[83,0,0,1,0],[109,0,1,0,0]],"alternate":[[83,0,0,1,0]],"calls":[[84,0,0,1,0],[101,0,0,2,0]],"internally":[[84,0,0,1,0]],"memory":[[84,0,0,1,0],[86,0,0,1,0],[124,0,0,1,0],[125,0,0,1,0]],"batch":[[85,0,0,1,0]],"option":[[85,0,0,1,0],[94,0,0,1,0],[105,0,0,1,0]],"destination":[[85,0,0,1,0]],"mirrors":[[85,0,0,1,0]],"matters":[[85,0,0,1,0],[110,0,0,1,0],[112,0,1,0,0]],"adds":[[85,0,0,1,0]],"concurrent":[[85,0,0,1,0],[88,0,0,1,0]],"large":[[85,0,0,1,0],[102,0,0,1,0]],"parallel":[[85,0,0,1,0]],"parsed":[[86,0,0,1,0]],"yourself":[[86,0,0,1,0]],"writing":[[86,0,0,1,0]],"feed":[[86,0,0,1,0],[112,0,0,1,0]],"touching":[[86,0,0,1,0],[116,0,0,1,0]],"console":[[86,0,0,0,2]],"log":[[86,0,0,0,2]],"srcpath":[[87,0,0,0,1]],"outpath":[[87,0,0,0,1]],"blocks":[[88,0,0,2,0],[92,0,0,1,0],[111,0,0,1,0]],"survive":[[88,0,0,1,0]],"synthesized":[[88,0,0,1,0]],"sometimes":[[88,0,0,1,0]],"tables":[[88,0,0,1,0]],"compacted":[[88,0,0,1,0]],"global":[[88,0,0,1,0]],"pairing":[[89,0,1,0,0]],"setups":[[89,0,0,1,0]],"expand":[[89,0,0,1,0]],"ast":[[89,0,0,1,0]],"sees":[[89,0,0,1,0],[112,0,0,1,0],[113,0,0,1,0]],"rationale":[[89,0,0,1,0]],"documented":[[90,0,0,1,0]],"covers":[[90,0,0,1,0],[109,0,0,1,0]],"grouped":[[91,0,0,1,0]],"severity":[[92,0,0,1,0],[93,0,0,1,0],[95,0,0,0,1]],"active":[[92,0,0,1,0]],"won":[[92,0,0,1,0]],"treat":[[92,0,0,1,0],[100,0,0,1,0]],"highest":[[92,0,0,1,0]],"priority":[[92,0,0,1,0]],"similar":[[93,0,0,1,0],[111,0,0,1,0]],"linting":[[93,0,0,1,0]],"walking":[[93,0,0,1,0]],"performs":[[93,0,0,1,0]],"final":[[93,0,0,1,0],[109,0,0,1,0],[112,0,0,1,0]],"changelogdir":[[94,0,0,1,0]],"patterns":[[94,0,0,2,0]],"shown":[[94,0,0,1,0]],"unknownfieldseverity":[[94,0,0,1,1]],"changelogfrontmatter":[[94,0,0,1,0]],"failures":[[95,0,0,1,0]],"reported":[[95,0,0,1,0]],"lintresult":[[95,0,0,0,1]],"kind":[[95,0,0,0,1]],"filesscanned":[[95,0,0,0,1]],"yes":[[96,0,0,1,0],[97,0,0,3,0],[98,0,0,1,0]],"produced":[[96,0,0,1,0]],"semver":[[97,0,0,1,0]],"date":[[97,0,0,2,0]],"iso":[[97,0,0,1,0]],"parseable":[[97,0,0,1,0]],"release":[[97,0,0,1,0]],"improvement":[[97,0,0,1,0]],"retired":[[97,0,0,1,0]],"deprecation":[[97,0,0,1,0]],"authors":[[97,0,0,1,0]],"defaultopen":[[98,0,0,1,0]],"combined":[[98,0,0,1,0]],"provide":[[99,0,0,1,0]],"apply":[[99,0,0,1,0]],"customfrontmatter":[[99,0,0,0,2]],"minlength":[[99,0,0,0,1]],"audience":[[99,0,0,0,1]],"picklist":[[99,0,0,0,1]],"beginner":[[99,0,0,0,1]],"advanced":[[99,0,0,0,1]],"practical":[[100,0,1,0,0]],"guidance":[[100,0,1,0,0]],"template":[[100,0,0,1,0],[112,0,0,1,0]],"wiring":[[100,0,0,1,0]],"pipelines":[[100,0,0,1,0]],"flavors":[[101,0,0,1,0]],"derived":[[101,0,0,1,0]],"pairs":[[101,0,0,1,0]],"third":[[101,0,0,1,0]],"finer":[[101,0,0,1,0]],"purpose":[[102,0,0,1,0],[124,0,0,1,0]],"best":[[102,0,0,1,0],[103,0,0,0,1]],"starting":[[102,0,0,1,0],[103,0,0,0,1]],"lists":[[102,0,0,1,0]],"descriptions":[[102,0,0,1,0],[108,0,0,2,0]],"very":[[102,0,0,1,0]],"windows":[[102,0,0,1,0]],"narrower":[[102,0,0,1,0]],"budgets":[[102,0,0,1,0]],"appear":[[102,0,0,1,0]],"parent":[[102,0,0,1,0]],"thing":[[103,0,0,0,1],[104,0,0,0,1],[106,0,0,0,1]],"well":[[103,0,0,0,1],[104,0,0,0,1],[106,0,0,0,1]],"boring":[[103,0,0,0,1]],"parts":[[103,0,0,0,1]],"documentation":[[103,0,0,0,1]],"minute":[[103,0,0,0,1]],"typical":[[104,0,1,0,0]],"rely":[[105,0,0,1,0]],"singular":[[105,0,0,1,0]],"segment":[[105,0,0,1,0]],"productinfo":[[105,0,0,1,0]],"agentguidance":[[105,0,0,1,0]],"intentionally":[[105,0,0,1,0],[115,0,0,1,0]],"mislead":[[105,0,0,1,0]],"docssubdir":[[105,0,0,1,0]],"holds":[[105,0,0,1,0]],"used":[[105,0,0,1,0]],"prefix":[[105,0,0,1,0]],"returns":[[105,0,0,1,0],[107,0,0,1,0]],"outputpath":[[105,0,0,1,0]],"useful":[[107,0,0,1,0]],"driving":[[107,0,0,1,0]],"mkdir":[[107,0,0,0,2]],"writefile":[[107,0,0,0,2]],"stringify":[[107,0,0,0,1]],"come":[[108,0,0,1,0]],"principles":[[108,0,0,1,0]],"prefer":[[108,0,0,1,0]],"narrow":[[108,0,0,1,0]],"giant":[[108,0,0,1,0]],"load":[[108,0,0,2,0],[118,0,0,2,0]],"something":[[108,0,0,1,0]],"truncate":[[108,0,0,1,0]],"flavor":[[108,0,0,1,0]],"decide":[[108,0,0,1,0]],"beats":[[108,0,0,1,0]],"our":[[108,0,0,1,0]],"environment":[[109,0,0,1,0]],"variables":[[109,0,0,1,0]],"layered":[[109,0,0,1,0]],"fallback":[[109,0,0,2,0]],"lets":[[109,0,0,1,0]],"override":[[109,0,0,1,0],[114,0,0,1,0]],"org":[[109,0,0,1,0]],"wide":[[109,0,0,1,0]],"platforms":[[109,0,0,1,0]],"hardcoded":[[109,0,0,1,0]],"portless":[[109,0,0,0,1]],"stripped":[[110,0,0,1,0]],"remarkremoveimports":[[111,0,0,1,1]],"statements":[[111,0,0,1,0]],"remarkremovejsxcomments":[[111,0,0,1,1]],"comments":[[111,0,0,1,0]],"remarkresolvedocplaceholders":[[111,0,0,1,1],[112,0,0,1,0]],"remarksectiontomarkdown":[[111,0,0,1,1]],"containers":[[111,0,0,1,0]],"remarkcallouttomarkdown":[[111,0,0,1,1]],"remarkcardstomarkdown":[[111,0,0,1,1]],"bulleted":[[111,0,0,1,0]],"remarkdetailstomarkdown":[[111,0,0,1,1]],"remarkmermaidtomarkdown":[[111,0,0,1,1]],"remarkcommandtabstomarkdown":[[111,0,0,1,1]],"remarkstepstomarkdown":[[111,0,0,1,1]],"remarktabstomarkdown":[[111,0,0,1,1]],"remarkaccordiontomarkdown":[[111,0,0,1,1]],"remarktopicswitchertomarkdown":[[111,0,0,1,1]],"labeled":[[111,0,0,1,0]],"remarkexampletomarkdown":[[111,0,0,1,1]],"mdast":[[111,0,0,0,1]],"ri":[[111,0,0,0,2]],"rj":[[111,0,0,0,2]],"rd":[[111,0,0,0,2]],"rs":[[111,0,0,0,2]],"rc":[[111,0,0,0,2]],"rcd":[[111,0,0,0,2]],"rdt":[[111,0,0,0,2]],"rct":[[111,0,0,0,2]],"rst":[[111,0,0,0,2]],"rt":[[111,0,0,0,2]],"rtt":[[111,0,0,0,2]],"ra":[[111,0,0,0,2]],"rts":[[111,0,0,0,2]],"must":[[112,0,0,2,0]],"go":[[112,0,0,2,0]],"because":[[112,0,0,2,0]],"some":[[112,0,0,1,0]],"imported":[[112,0,0,1,0]],"flatteners":[[112,0,0,3,0]],"assume":[[112,0,0,1,0]],"strings":[[112,0,0,1,0]],"literals":[[112,0,0,1,0]],"reorder":[[112,0,0,1,0]],"casually":[[112,0,0,1,0]],"flattener":[[112,0,0,2,0],[113,0,0,1,0],[115,0,0,1,0]],"transform":[[112,0,0,1,0]],"contracted":[[112,0,0,1,0]],"insert":[[112,0,0,1,0]],"composition":[[113,0,0,1,0]],"included":[[113,0,0,1,0]],"expands":[[113,0,0,1,0]],"pipelineexampleoptions":[[114,0,0,0,1]],"types":[[114,0,0,0,1]],"selection":[[115,0,1,0,0]],"composed":[[115,0,0,1,0]],"fragments":[[115,0,0,1,0]],"omit":[[115,0,0,1,0]],"processing":[[115,0,0,1,0]],"cost":[[115,0,0,1,0]],"almost":[[115,0,0,1,0]],"reordering":[[115,0,0,1,0]],"between":[[115,0,0,1,0]],"existing":[[115,0,0,1,0]],"ones":[[115,0,0,1,0]],"helpers":[[116,0,0,1,0],[117,0,0,1,0],[118,0,0,1,0],[119,0,0,1,0],[120,0,0,1,0],[121,0,0,1,0],[122,0,0,1,0],[123,0,0,1,0],[124,0,0,1,0],[125,0,0,1,0]],"exposes":[[116,0,0,1,0],[123,0,0,1,0]],"queries":[[116,0,0,1,0]],"database":[[116,0,0,1,0]],"layers":[[116,0,0,1,0]],"document":[[117,0,0,2,0]],"results":[[117,0,0,1,0],[119,0,0,1,1]],"jump":[[117,0,0,1,0]],"right":[[117,0,0,2,0],[120,0,0,1,0]],"ranking":[[117,0,0,1,0]],"tunable":[[117,0,0,1,0]],"generator":[[117,0,0,1,0],[118,0,0,1,0]],"compact":[[117,0,0,1,0]],"tuple":[[117,0,0,1,0]],"term":[[117,0,0,1,0]],"postings":[[117,0,0,1,0]],"refs":[[117,0,0,2,0]],"actual":[[117,0,0,1,0]],"separated":[[117,0,0,1,0]],"loading":[[117,0,0,1,0]],"lazily":[[117,0,0,1,0]],"indexing":[[118,0,1,0,0]],"cheap":[[118,0,0,1,0],[125,0,0,1,0]],"hover":[[118,0,0,1,0]],"vercel":[[119,0,0,1,0],[122,0,0,0,2],[123,0,0,0,1],[124,0,0,1,0]],"anywhere":[[119,0,0,1,0]],"hash":[[119,0,0,1,0]],"snippets":[[119,0,0,1,0]],"ready":[[119,0,0,1,0]],"searchdocs":[[119,0,0,0,2]],"docssearchindex":[[119,0,0,0,2]],"docssearchcontentstore":[[119,0,0,0,2]],"indexjson":[[119,0,0,0,2]],"contentjson":[[119,0,0,0,2]],"doubles":[[120,0,0,1,0]],"virtual":[[120,0,0,1,0],[123,0,0,1,0]],"readers":[[120,0,0,1,0]],"picked":[[120,0,0,1,0]],"readdocscontentfile":[[120,0,0,1,2]],"entire":[[120,0,0,1,0]],"readdocscontentchunk":[[120,0,0,1,2]],"listdocscontentfiles":[[120,0,0,0,2]],"allfiles":[[120,0,0,0,1]],"wholepage":[[120,0,0,0,1]],"onechunk":[[120,0,0,0,1]],"createanswercontext":[[121,0,0,1,2],[122,0,0,1,0]],"query":[[121,0,0,1,0],[122,0,0,0,1],[124,0,0,1,0]],"retrieved":[[121,0,0,2,0]],"chunks":[[121,0,0,1,0],[123,0,0,1,0],[125,0,0,1,0]],"prompt":[[121,0,0,1,1]],"instructs":[[121,0,0,1,0]],"cite":[[121,0,0,1,0]],"sources":[[121,0,0,1,1],[122,0,0,2,1]],"references":[[121,0,0,1,0]],"say":[[121,0,0,1,0]],"insufficient":[[121,0,0,1,0]],"productname":[[121,0,0,0,1],[122,0,0,0,1]],"wrappers":[[122,0,0,1,0]],"around":[[122,0,0,1,0]],"stream":[[122,0,0,1,0]],"response":[[122,0,0,3,1]],"matching":[[122,0,0,1,0],[125,0,0,1,0]],"citation":[[122,0,0,1,0]],"display":[[122,0,0,1,0]],"embed":[[122,0,0,1,0]],"streamed":[[122,0,0,1,0]],"adapter":[[122,0,0,1,0],[123,0,0,1,0]],"createcloudflaredocsadapter":[[122,0,0,1,0]],"binding":[[122,0,0,1,0]],"gateway":[[122,0,0,1,2]],"streamdocsanswer":[[122,0,0,0,4]],"sdk":[[122,0,0,0,1]],"workers":[[122,0,0,0,1]],"gpt":[[122,0,0,0,1]],"adapters":[[123,0,1,0,0]],"explore":[[123,0,0,1,0]],"shell":[[123,0,0,1,0]],"receiving":[[123,0,0,1,0]],"selected":[[123,0,0,1,0]],"ls":[[123,0,0,1,0]],"cat":[[123,0,0,1,0]],"rg":[[123,0,0,1,0]],"execution":[[123,0,0,1,0]],"disabled":[[123,0,0,1,0]],"expose":[[123,0,0,1,0]],"createdocsbashtools":[[123,0,0,1,0]],"plural":[[123,0,0,1,0]],"createdocsbashtool":[[123,0,0,0,2]],"instructions":[[123,0,0,0,1]],"abuse":[[124,0,1,0,0]],"guards":[[124,0,1,0,0]],"reusable":[[124,0,0,1,0]],"utilities":[[124,0,0,1,0]],"validatedocsquery":[[124,0,0,1,0]],"trim":[[124,0,0,1,0]],"cap":[[124,0,0,1,0]],"readjsonwithlimit":[[124,0,0,1,0]],"reject":[[124,0,0,1,0]],"oversized":[[124,0,0,1,0]],"bodies":[[124,0,0,1,0]],"getclientidentifier":[[124,0,0,1,0]],"common":[[124,0,0,1,0]],"proxy":[[124,0,0,1,0]],"ip":[[124,0,0,1,0]],"creatememoryratelimiter":[[124,0,0,1,0]],"implements":[[124,0,0,1,0]],"ratelimiter":[[124,0,0,2,0]],"demos":[[124,0,0,2,0]],"limiter":[[124,0,0,1,0]],"production":[[124,0,0,1,0]],"apps":[[124,0,0,1,0]],"adapt":[[124,0,0,1,0]],"interface":[[124,0,0,1,0]],"redis":[[124,0,0,1,0]],"kv":[[124,0,0,2,0]],"durable":[[124,0,0,1,0]],"objects":[[124,0,0,1,0]],"embeddings":[[125,0,1,2,0]],"keys":[[125,0,0,1,0]],"messages":[[125,0,0,1,0]],"users":[[125,0,0,1,0]],"faster":[[125,0,0,1,0]],"performance":[[125,0,0,1,0]],"optimization":[[125,0,0,1,0]],"grow":[[125,0,0,1,0]],"past":[[125,0,0,1,0]],"tens":[[125,0,0,1,0]],"thousands":[[125,0,0,1,0]],"cold":[[125,0,0,1,0]],"hit":[[125,0,0,1,0]],"noticeable":[[125,0,0,1,0]],"lexical":[[125,0,0,1,0]],"complementary":[[125,0,0,1,0]],"replacements":[[125,0,0,1,0]]},"averageChunkLength":79.6984126984127}
diff --git a/biome.jsonc b/biome.jsonc
index 05e05fd..9a94d0e 100644
--- a/biome.jsonc
+++ b/biome.jsonc
@@ -34,6 +34,24 @@
}
}
}
+ },
+ {
+ // @vercel/agent-eval requires fixture files to be named EVAL.ts (uppercase)
+ // and PROMPT.md. Eval test files are short, ad-hoc assertions over a
+ // transcript — useTopLevelRegex / useConsistentTypeDefinitions don't
+ // earn their lint cost here.
+ "includes": ["evals/**"],
+ "linter": {
+ "rules": {
+ "performance": {
+ "useTopLevelRegex": "off"
+ },
+ "style": {
+ "useConsistentTypeDefinitions": "off",
+ "useFilenamingConvention": "off"
+ }
+ }
+ }
}
]
}
diff --git a/docs/build/bundle-package-docs.mdx b/docs/build/bundle-package-docs.mdx
index 7442e2b..8e4dbe7 100644
--- a/docs/build/bundle-package-docs.mdx
+++ b/docs/build/bundle-package-docs.mdx
@@ -1,12 +1,12 @@
---
title: "Bundle docs into a package"
-description: "Ship agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline."
+description: "Ship agent-readable docs inside an npm tarball — AGENTS.md at the package root plus per-topic .md files."
group: build
---
# Bundle docs into a package
-Use this path when **you publish a library on npm** and want agents, IDEs, and CLI tooling to read your docs without hitting the network. Run leadtype at prepack time, include the `docs/` output in `files`, and every install gets the same docs your website serves.
+Use this path when **you publish a library on npm** and want coding agents, IDEs, and CLI tooling to read your docs without hitting the network. Run `leadtype generate --bundle` at prepack time, include the output in your published `files`, and every install ships **`AGENTS.md` + per-topic markdown** that the 25+ tools supporting [agents.md](https://agents.md) auto-discover.
The website is for humans. The package-bundled docs are for everyone else.
@@ -14,32 +14,50 @@ The website is for humans. The package-bundled docs are for everyone else.
(your repo)"]
- cli["leadtype generate --out packages/<name>"]
- bundle["packages/<name>/docs/ llms.txt llms-full/*.txt *.md search-index.json"]
- publish["npm publish (docs in 'files')"]
+ cli["leadtype generate --bundle --out packages/<name>"]
+ bundle["packages/<name>/ AGENTS.md docs/*.md"]
+ publish["npm publish"]
install["npm install <name>"]
- consume["node_modules/<name>/docs/ read by agents · IDEs · CLIs"]
+ consume["node_modules/<name>/ AGENTS.md → docs/*.md read by Claude Code, Codex, Cursor, Copilot, …"]
src --> cli
cli --> bundle
bundle --> publish
publish --> install
install --> consume`} />
-## Generate into the package
+## Why AGENTS.md, not llms.txt?
+
+[`llms.txt`](https://llmstxt.org) is a **website convention** — a file at `/llms.txt` with absolute URLs that an agent fetches over HTTP. Inside an npm tarball it's the wrong shape: every link points at a hosted URL the agent may not be able to reach, and no major coding agent looks for `node_modules//llms.txt` anyway.
+
+[`AGENTS.md`](https://agents.md) is the **filesystem convention** that solves this. Tools like Claude Code, OpenAI Codex, Cursor, GitHub Copilot, Aider, Devin, and others auto-read `AGENTS.md` when working in a repo. Nested `AGENTS.md` files are also supported — "the closest one wins" — so an `AGENTS.md` inside `node_modules//` is the natural place to tell agents about your library.
+
+leadtype emits both — `llms.txt` in [website mode](/docs/build/connect-docs-site) for HTTP-discoverable agents, and `AGENTS.md` in `--bundle` mode for offline filesystem-discoverable agents.
-If source docs live at the repo root:
+## Generate into the package
```bash
npx leadtype generate \
+ --bundle \
--src . \
--out packages/my-package \
- --base-url https://docs.example.com/my-package \
--name "my-package" \
- --summary "Docs for my-package." \
- --json
+ --summary "Docs for my-package."
```
-This writes converted markdown, `llms.txt`, full-context bundles, and the search index under `packages/my-package/docs/`.
+This writes:
+
+```
+packages/my-package/
+├── AGENTS.md # offline-readable index — agent's entry point
+└── docs/
+ ├── index.md
+ ├── quickstart.md
+ └── … # one .md per source page, group subdirs preserved
+```
+
+Every link inside `AGENTS.md` is a relative path like `./docs/quickstart.md` so the file is meaningful both at `packages/my-package/AGENTS.md` (during local dev) and at `node_modules/my-package/AGENTS.md` (after install).
+
+`--bundle` skips `llms.txt`, `llms-full*`, and the search index — those are website artifacts that don't make sense offline.
## Filter to package-specific docs
@@ -47,53 +65,45 @@ A monorepo with one shared `docs/` and many packages should bundle only the slic
```bash
npx leadtype generate \
+ --bundle \
--src . \
--out packages/react \
--name "@c15t/react" \
--include "frameworks/react/**" \
--include "shared/**" \
- --exclude "**/internal/**" \
- --json
+ --exclude "**/internal/**"
```
Filters are explicit. If the package needs shared overview pages, list them too. `--exclude` is applied after `--include`.
## Include in the published tarball
-Add `docs` to `files` and run generation as a build or prepack step:
+Add `AGENTS.md` and `docs` to `files` and run generation as a build or prepack step:
```json
{
- "files": ["dist", "docs", "README.md"],
+ "files": ["dist", "docs", "AGENTS.md", "README.md"],
"scripts": {
- "build": "tsup && npx leadtype generate --src ../.. --out . --json"
+ "build": "tsup && npx leadtype generate --bundle --src ../.. --out ."
}
}
```
-If you need full control over plugin order, base URL fallback, or custom navigation handling, run the library APIs directly from a script:
+If you need full control over plugin order or custom validation, run the library APIs directly from a script:
```ts
// scripts/generate-docs.ts
import { rm } from "node:fs/promises";
import { convertAllMdx } from "leadtype/convert";
-import {
- generateLLMFullContextFiles,
- generateLlmsTxt,
- resolveDocsNavigation,
-} from "leadtype/llm";
+import { generateAgentsMd, resolveDocsNavigation } from "leadtype/llm";
import { defaultRemarkPlugins } from "leadtype/remark";
import docsConfig from "../../../docs/docs.config";
const REPO_ROOT = `${process.cwd()}/../..`;
const PACKAGE_ROOT = process.cwd();
-const baseUrl =
- process.env.LEADTYPE_AGENT_BASE_URL?.trim() ||
- "https://example.invalid/your-package";
-
-// Output is generated and gitignored — safe to nuke before each build.
await rm(`${PACKAGE_ROOT}/docs`, { recursive: true, force: true });
+await rm(`${PACKAGE_ROOT}/AGENTS.md`, { force: true });
await convertAllMdx({
srcDir: `${REPO_ROOT}/docs`,
@@ -101,28 +111,9 @@ await convertAllMdx({
remarkPlugins: defaultRemarkPlugins,
});
-// generateLlmsTxt and generateLLMFullContextFiles join `/docs/`
-// internally, so pass the parents (REPO_ROOT for source, PACKAGE_ROOT
-// for output) — they read MDX from `/docs/` and write to `/docs/`.
-await generateLlmsTxt({
- srcDir: REPO_ROOT,
- outDir: PACKAGE_ROOT,
- baseUrl,
- product: docsConfig.product,
- groups: docsConfig.groups,
-});
-
-await generateLLMFullContextFiles({
- outDir: PACKAGE_ROOT,
- baseUrl,
- product: { name: docsConfig.product.name },
- groups: docsConfig.groups,
-});
-
// Fail fast on unknown groups so a bad config can't ship.
const navigation = await resolveDocsNavigation({
srcDir: REPO_ROOT,
- baseUrl,
groups: docsConfig.groups,
});
if (navigation.unknown.length > 0) {
@@ -131,47 +122,57 @@ if (navigation.unknown.length > 0) {
}
process.exit(1);
}
+
+await generateAgentsMd({
+ srcDir: REPO_ROOT,
+ outDir: PACKAGE_ROOT,
+ product: docsConfig.product,
+ groups: docsConfig.groups,
+});
```
-Then point your build script at it: `"build": "tsup && bun run scripts/generate-docs.ts"`.
+Point your build script at it: `"build": "tsup && bun run scripts/generate-docs.ts"`.
## Verify before publishing
```bash
-npx leadtype generate --src . --out packages/my-package --json
-npm pack --dry-run
+npx leadtype generate --bundle --src . --out packages/my-package
+cd packages/my-package && npm pack --dry-run
```
`npm pack --dry-run` should list:
-- `docs/llms.txt`
-- `docs/llms-full.txt`
-- `docs/llms-full/*.txt`
+- `AGENTS.md`
- `docs/**/*.md`
-- `docs/search-index.json`
-- `docs/search-content.json`
-If something's missing, check `files` in `package.json` and the `--include`/`--exclude` filters.
+If `AGENTS.md` is missing, check `files` in `package.json`. If `.md` files are missing, check the `--include`/`--exclude` filters.
-## How agents discover bundled docs
+## Tell consuming projects to use the bundle
-After `npm install `, the docs sit at `node_modules//docs/`. Agents and IDEs read them in two ways:
+`AGENTS.md` inside your tarball is auto-discovered by agents working **in your published package** — but for a project that *depends* on your package, the agent's working directory is the consumer's repo, not yours. You need to point them at the bundled docs.
-- **Routing index** — open `node_modules//docs/llms.txt` first. It links to topic-scoped `llms-full/.txt` files.
-- **Full text** — read the relevant `llms-full/.txt` for deep context, or open individual `.md` files when only one page is needed.
+Recommend this snippet in your README so consumers add it to their own root `AGENTS.md`:
+
+```md
+#
+
+When working with the `` library, read the bundled docs in
+`node_modules//AGENTS.md` first — they're version-matched to
+the installed package and stay accurate as the library updates.
+```
-Set the right `--base-url` when generating so the URLs in `llms.txt` point to your hosted docs — agents can fall back to fetching live pages if the bundle is out of date.
+This is the same pattern Next.js uses to point agents at `node_modules/next/dist/docs/`.
## When to use this
Use this when **agents should understand the package from the installed dependency itself** — coding agents that don't have web access, IDE assistants, CLI tools, or air-gapped environments.
-Don't use this if your only goal is a public docs website. For that, see [Connect a docs site](/docs/build/connect-docs-site).
+Don't use this if your only goal is a public docs website. For that, see [Connect a docs site](/docs/build/connect-docs-site). You can use both — they read the same source MDX, just emit different shapes.
## What's next
-
-
+
+
diff --git a/docs/how-it-works.mdx b/docs/how-it-works.mdx
index 806e105..3cd7aec 100644
--- a/docs/how-it-works.mdx
+++ b/docs/how-it-works.mdx
@@ -1,12 +1,12 @@
---
title: "How it works"
-description: "The mental model: one MDX source, a remark pipeline, four artifacts, three audiences."
+description: "The mental model: one MDX source, a remark pipeline, two output modes, three audiences."
group: get-started
---
# How it works
-Leadtype takes one input — a folder of MDX — and produces every other shape your docs need to take. This page names every piece so the rest of the docs make sense.
+Leadtype takes one input — a folder of MDX — and produces every shape your docs need to take. This page names every piece so the rest of the docs make sense.
## The pipeline
@@ -15,48 +15,72 @@ Leadtype takes one input — a folder of MDX — and produces every other shape
fm["frontmatter parser"]
remark["remark plugin stack (strip imports → flatten components)"]
groups["group resolver (nav tree from frontmatter)"]
- md["public/docs/*.md"]
- llms["public/llms.txt public/docs/llms-full/*.txt"]
- idx["public/docs/search-index.json public/docs/search-content.json"]
+ md["docs/*.md"]
+ site_idx["llms.txt · llms-full/*.txt (website mode only)"]
+ search["search-index.json · search-content.json (website mode only)"]
+ agents_md["AGENTS.md (--bundle mode only)"]
nav["navigation manifest (group → page)"]
src --> fm
fm --> remark
fm --> groups
remark --> md
- md --> llms
- md --> idx
- groups --> llms
+ md --> site_idx
+ md --> search
+ groups --> site_idx
+ groups --> agents_md
groups --> nav`} />
-The remark stack is what turns interactive MDX components into agent-readable markdown. JSX gets *flattened* — a `` becomes a blockquote, a `` becomes a sequence of bold headings, a `` becomes a markdown table. The flattened markdown is what the search index ranks and what `llms-full/*.txt` bundles include.
+The remark stack is what turns interactive MDX components into agent-readable markdown. JSX gets *flattened* — a `` becomes a blockquote, a `` becomes a sequence of bold headings, a `` becomes a markdown table. The flattened markdown is what every other artifact consumes.
For the exact stack, see [Remark plugins](/docs/reference/remark). For the component contract, see [Components](/docs/authoring/components).
-## The four artifacts
+## Two output modes
-Every run of `leadtype generate` produces four kinds of output. They all derive from the same source — there is no manual duplication.
+`leadtype generate` has two modes that read the same source and emit different shapes:
+
+
+
+## The artifacts
.md",
+ type: "docs/.md",
+ description:
+ "Flattened markdown for each MDX page. Both modes ship these. Served to HTTP agents via content negotiation in site mode; read directly from node_modules in bundle mode.",
+ },
+ "AGENTS.md": {
+ type: "/AGENTS.md",
description:
- "Flattened markdown for each MDX page. Served to agents via content negotiation; consumed by every other artifact below.",
+ "Bundle mode only. Offline-readable index that 25+ coding agents auto-discover (Claude Code, Codex, Cursor, Copilot, …). Every link is a relative ./docs/.md path so the file works inside an installed npm package.",
},
- "LLM bundles": {
- type: "llms.txt + llms-full/.txt",
+ "llms.txt + llms-full": {
+ type: "/llms.txt + /docs/llms-full/.txt",
description:
- "Routing index plus topic-scoped full-context files. llms.txt is short and links to deeper bundles; each leaf group gets one llms-full file.",
+ "Site mode only. The llms.txt convention is for websites — agents fetch /llms.txt over HTTP and follow absolute URLs to deeper context. Useless inside an npm tarball, so bundle mode skips this.",
},
"Search index": {
- type: "search-index.json + search-content.json",
+ type: "/docs/search-index.json + search-content.json",
description:
- "BM25-ranked inverted index over headings, titles, body, and code. Content is stored separately so the index stays small.",
+ "Site mode only. BM25-ranked inverted index over headings, titles, body, and code. Content is stored separately so the index stays small. Bundle mode skips it — agents reading from disk grep the .md files directly.",
},
"Navigation manifest": {
- type: "docs-nav.json",
+ type: "docs-nav.json (build script)",
description:
- "Resolved group tree mapping pages to nav locations. Drives the sidebar in your docs site and the section structure in llms.txt.",
+ "Resolved group tree mapping pages to nav locations. Built by the resolveDocsNavigation() helper so your sidebar component and your llms.txt sections agree on structure.",
},
}}
/>
@@ -64,17 +88,22 @@ Every run of `leadtype generate` produces four kinds of output. They all derive
## The three audiences
public/*"]
+ bundle_out["bundle mode node_modules/<pkg>/*"]
human["Humans (browser)"]
- agent["Agents · IDEs · CLIs"]
- search["Search UI · AI answers"]
- artifacts -- "HTML render of MDX" --> human
- artifacts -- "Accept: text/markdown or node_modules//docs/" --> agent
- artifacts -- "search-index.json + search-content.json" --> search`} />
-
-- **Humans** see the HTML your docs site renders from MDX (or from the converted markdown — same content).
-- **Agents and tools** read the markdown directly. Either over HTTP via `Accept: text/markdown` content negotiation, or offline by reading `node_modules//docs/` after `npm install`.
-- **Search** uses the index plus the content store. Lexical results are exact; the same data feeds optional source-grounded AI answers.
+ http_agent["HTTP agents (fetch /llms.txt or Accept: text/markdown)"]
+ search_ui["Search UI AI answers"]
+ offline_agent["Coding agents (Claude Code, Codex, Cursor, Copilot, …)"]
+ site_out -- "HTML render of MDX" --> human
+ site_out -- "absolute URLs" --> http_agent
+ site_out -- "search-index.json" --> search_ui
+ bundle_out -- "AGENTS.md auto-discovery" --> offline_agent`} />
+
+- **Humans** see the HTML your docs site renders from MDX.
+- **HTTP agents** fetch `/llms.txt` over the network or use `Accept: text/markdown` content negotiation to get the converted `.md` from your docs site URL.
+- **Coding agents working in a project that depends on your package** auto-discover `AGENTS.md` at `node_modules//AGENTS.md`. The 25+ tools supporting [agents.md](https://agents.md) read it without being told to. From there they follow relative `./docs/.md` links.
+
+The two flows complement each other. A package that wants to be agent-friendly publishes both: `--bundle` output inside the tarball *and* a hosted website with `llms.txt`. Different agents use different flows; you don't pick one.
## Vocabulary
diff --git a/docs/index.mdx b/docs/index.mdx
index b9b7e46..348752a 100644
--- a/docs/index.mdx
+++ b/docs/index.mdx
@@ -1,35 +1,33 @@
---
title: "Leadtype"
-description: "One MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline."
+description: "One MDX source. A website for humans, AGENTS.md for offline coding agents, llms.txt for HTTP agents — all from a single pipeline."
group: get-started
---
# Leadtype
-Leadtype is a **docs pipeline**. You write MDX in one place. It produces every other shape your docs need to take: clean markdown, agent-readable bundles, a static search index, and a navigation tree.
+Leadtype is a **docs pipeline**. You write MDX in one place. It produces every shape your docs need to take: a website for humans, an `AGENTS.md`-fronted bundle for coding agents reading from `node_modules/`, an `llms.txt` for HTTP agents, and a static search index.
It is not a docs website framework. Bring your own UI — Next.js, TanStack Start, Astro, anything — and let leadtype handle conversion, validation, search, and the agent-facing outputs that website frameworks don't ship.
(your source)"]
- pipe["leadtype generate (convert · llm · search · lint)"]
- md["Clean markdown (.md per page)"]
- llm["llms.txt llms-full/*.txt"]
- idx["search-index.json search-content.json"]
- nav["navigation tree (group → page)"]
- site["Docs website humans"]
- agent["Agents · IDEs · CLIs via npm package or HTTP"]
- search["Search UI · AI answers"]
- src --> pipe
- pipe --> md
- pipe --> llm
- pipe --> idx
- pipe --> nav
- md --> site
- md --> agent
- llm --> agent
- idx --> search
- nav --> site`} />
+ site_run["leadtype generate"]
+ bundle_run["leadtype generate --bundle"]
+ site_out["public/ llms.txt · llms-full/ docs/*.md · search-index.json"]
+ bundle_out["packages/<name>/ AGENTS.md · docs/*.md"]
+ humans["Humans (browser)"]
+ http_agents["HTTP agents (via /llms.txt or Accept: text/markdown)"]
+ search["Search UI AI answers"]
+ offline_agents["Coding agents (Claude Code, Codex, Cursor, Copilot…) read node_modules/<pkg>/AGENTS.md"]
+ src --> site_run
+ src --> bundle_run
+ site_run --> site_out
+ bundle_run --> bundle_out
+ site_out --> humans
+ site_out --> http_agents
+ site_out --> search
+ bundle_out --> offline_agents`} />
## Choose your path
@@ -55,10 +53,10 @@ Most teams arrive here for one of two reasons. Pick the journey that matches you
Author MDX with familiar components — `Callout`, `Tabs`, `Steps`, `Mermaid`, `TypeTable`, and others. Add `group:` in frontmatter to place pages in the navigation tree.
- A single command converts MDX to markdown, builds `llms.txt` plus topic-scoped bundles, generates a static search index, and resolves the navigation tree.
+ For a website: converts MDX to markdown, builds `llms.txt` plus topic bundles, generates a search index, resolves navigation. With `--bundle`: emits `AGENTS.md` plus per-topic `.md` files for agents reading from `node_modules/`.
- Your site renders the source MDX; agents and tools fetch the markdown via HTTP content negotiation or load `llms.txt` from `node_modules`. Same content, three audiences.
+ Humans get HTML. HTTP agents get markdown via content negotiation or fetch `llms.txt`. Coding agents working in a project that depends on your package auto-discover `AGENTS.md` from `node_modules//`. One source, three audiences.
diff --git a/docs/quickstart.mdx b/docs/quickstart.mdx
index bf2018c..51f665e 100644
--- a/docs/quickstart.mdx
+++ b/docs/quickstart.mdx
@@ -73,7 +73,17 @@ public/
└── search-content.json # chunk content store
```
-Open `public/llms.txt` to see what an agent will see when you publish. Open `public/docs/index.md` to see what your authored MDX looks like once flattened — that's the same content the search index and the agent bundles consume.
+Open `public/llms.txt` to see what an HTTP agent will see when you publish. Open `public/docs/index.md` to see what your authored MDX looks like once flattened — that's the same content the search index and the LLM bundles consume.
+
+## Bundle for offline agents
+
+The output above is for a **website**. To ship docs **inside an npm package** so coding agents reading from `node_modules/` find them, add `--bundle`:
+
+```bash
+npx leadtype generate --bundle --src . --out packages/my-package
+```
+
+That writes `packages/my-package/AGENTS.md` (the offline-readable index, auto-discovered by Claude Code, Codex, Cursor, Copilot, etc.) plus `packages/my-package/docs/*.md`. No `llms.txt`, no search index — those are website-only. See [Bundle docs into a package](/docs/build/bundle-package-docs) for the full flow.
## What's next
diff --git a/docs/reference/cli.mdx b/docs/reference/cli.mdx
index 2da5278..52cf68c 100644
--- a/docs/reference/cli.mdx
+++ b/docs/reference/cli.mdx
@@ -14,7 +14,7 @@ Two commands: `generate` runs the full pipeline, `lint` validates content. Run `
## generate
-Convert MDX, build LLM bundles, and produce search artifacts in one pass.
+Convert MDX, then either produce website artifacts (default) or a package bundle (`--bundle`).
```bash
leadtype generate [options]
@@ -24,11 +24,12 @@ leadtype generate [options]
| --- | --- | --- |
| `--src ` | `.` | Repo or root directory containing the docs folder. |
| `--docs-dir ` | `docs` | Docs folder relative to `--src`. |
-| `--out ` | `public` | Output root. The pipeline writes to `/llms.txt` and `/docs/*`. |
-| `--base-url ` | — | Base URL written into generated links. Recommended for any non-local run. |
-| `--name ` | from `package.json#name` | Product name in `llms.txt`. |
-| `--summary ` | from `package.json#description` | Product summary in `llms.txt`. |
-| `--include ` | none | Docs-root-relative glob to include. Repeatable. |
+| `--out ` | `public` | Output root. The pipeline writes to `/llms.txt` and `/docs/*` in site mode, or `/AGENTS.md` and `/docs/*.md` in bundle mode. |
+| `--bundle` | off | Bundle mode. Emits `AGENTS.md` and `docs/*.md` for offline agents. Skips `llms.txt`, `llms-full*`, and the search index. |
+| `--base-url ` | — | Base URL for absolute links in `llms.txt`. Site mode only; ignored in `--bundle`. |
+| `--name ` | from `package.json#name` | Product name written into the index file (`llms.txt` or `AGENTS.md`). |
+| `--summary ` | from `package.json#description` | Product summary written into the index file. |
+| `--include ` | none | Docs-root-relative glob to include. Repeatable. Works in both modes. |
| `--exclude ` | none | Docs-root-relative glob to exclude. Applied after `--include`. |
| `--enrich-git` | off | Add `lastModified` and `lastAuthor` to frontmatter from git history. |
| `--format ` | `text` | `text` or `json`. JSON prints a single result object on stdout. |
@@ -37,12 +38,21 @@ leadtype generate [options]
Exit codes: `0` success, `1` runtime error (docs dir missing, unknown group, conversion error), `2` CLI usage error.
+### Bundle mode
+
+```bash
+leadtype generate --bundle --src . --out packages/my-package
+```
+
+Writes `/AGENTS.md` (relative-link index, agent-discoverable) plus `/docs/*.md` (one per page, group subdirs preserved). Skips every URL-anchored artifact (`llms.txt`, `llms-full.txt`, `llms-full/*.txt`, `search-index.json`, `search-content.json`) — those are website-only. Use this for npm packages that ship docs alongside the published code; see [Bundle docs into a package](/docs/build/bundle-package-docs).
+
### JSON output shape
-`--json` prints a single object describing what was generated:
+`--json` prints a single object describing what was generated. The shape varies by mode:
```json
{
+ "mode": "site",
"srcDir": "/abs/path/to/repo",
"docsDir": "/abs/path/to/repo/docs",
"outDir": "/abs/path/to/repo/public",
@@ -60,6 +70,8 @@ Exit codes: `0` success, `1` runtime error (docs dir missing, unknown group, con
}
```
+In `--bundle` mode, `mode` is `"bundle"` and `files` contains only `agentsMd`. Site-only fields (`search`, `llmsTxt`, etc.) are absent.
+
Errors in JSON mode print `{"error": "...", ...}` to stderr.
### Group inference
@@ -122,7 +134,7 @@ leadtype help lint
The CLI is a thin wrapper. Every command is also available as a TypeScript API for custom build scripts:
- [`leadtype/convert`](/docs/reference/convert) — `convertAllMdx`, `convertMdxToMarkdown`, `writeMdxFileAsMarkdown`.
-- [`leadtype/llm`](/docs/reference/llm) — `generateLlmsTxt`, `generateLLMFullContextFiles`, `resolveDocsNavigation`.
+- [`leadtype/llm`](/docs/reference/llm) — `generateLlmsTxt`, `generateLLMFullContextFiles`, `generateAgentsMd`, `resolveDocsNavigation`.
- [`leadtype/search/node`](/docs/reference/search) — `generateDocsSearchFiles`.
- [`leadtype/lint`](/docs/reference/lint) — `lintDocs`.
- [`leadtype/remark`](/docs/reference/remark) — `defaultRemarkPlugins` and individual plugins.
diff --git a/docs/reference/llm.mdx b/docs/reference/llm.mdx
index 4808cc6..6ef93a5 100644
--- a/docs/reference/llm.mdx
+++ b/docs/reference/llm.mdx
@@ -1,21 +1,28 @@
---
title: "LLM bundles"
-description: "Generate llms.txt and topic-scoped full-context files for agents."
+description: "Generate llms.txt for hosted websites and AGENTS.md for npm-bundled offline reading."
group: reference
---
# LLM bundles
-The `leadtype/llm` entry point produces the agent-facing outputs: `llms.txt` (a routing index) and `llms-full/*.txt` (per-leaf-group full content). Both are derived from the same docs source.
+The `leadtype/llm` entry point produces three flavors of agent-facing index, all derived from the same docs source:
+
+- **`generateLlmsTxt`** — for hosted websites. Emits the `/llms.txt` convention with absolute URLs.
+- **`generateLLMFullContextFiles`** — full-content topic bundles. Pairs with `generateLlmsTxt`.
+- **`generateAgentsMd`** — for npm-bundled docs. Emits an `AGENTS.md` index with relative `./docs/.md` paths so the file works inside `node_modules//`.
```ts
import {
- generateLlmsTxt,
+ generateAgentsMd,
generateLLMFullContextFiles,
+ generateLlmsTxt,
resolveDocsNavigation,
} from "leadtype/llm";
```
+The CLI's default `leadtype generate` calls the first two; `leadtype generate --bundle` calls the third. Use these APIs directly when you need finer control.
+
## What gets generated
| File | Purpose |
@@ -94,6 +101,54 @@ await generateLLMFullContextFiles({
`generateLLMFullContextFiles` reads from `/docs/`, so always run conversion first.
+## generateAgentsMd
+
+For npm-bundled docs that ship inside `node_modules//` and rely on filesystem auto-discovery (Claude Code, Codex, Cursor, Copilot, etc.):
+
+```ts
+import { generateAgentsMd } from "leadtype/llm";
+
+await generateAgentsMd({
+ srcDir: ".",
+ outDir: "packages/my-package",
+ product: docsConfig.product,
+ groups: docsConfig.groups,
+});
+```
+
+Writes `/AGENTS.md` (singular, at the root) with the same product summary and group structure as `generateLlmsTxt`, but every link is a **relative** path like `./docs//.md` instead of an absolute URL.
+
+| Option | Description |
+| --- | --- |
+| `srcDir` | Repo root containing the `docs/` source. |
+| `outDir` | Package root. `AGENTS.md` is written at `/AGENTS.md`. |
+| `product` | Same `ProductInfo` shape as `generateLlmsTxt`. `agentGuidance` is intentionally ignored — it's written for the website's URL-routing flow and would mislead an offline agent. |
+| `groups` | Group tree from `docs.config.ts`. Same shape as `generateLlmsTxt`. |
+| `docsSubdir` | Subdirectory under `outDir` that holds the `.md` files. Default: `docs`. Used as the relative-path prefix in every link. |
+
+Returns `{ outputPath: string }` pointing at the written `AGENTS.md`.
+
+### Example output
+
+```md
+# My Library
+
+> A library that does one thing well.
+
+These docs ship inside the package so coding agents can read them offline. Open the topic file you need from the list below — paths are relative to this file.
+
+## Get Started
+
+- [Quickstart](./docs/quickstart.md): Install and run the pipeline.
+- [How it works](./docs/how-it-works.md): The mental model.
+
+## Reference
+
+- [CLI](./docs/reference/cli.md): Every flag.
+```
+
+Pair with `convertAllMdx` to produce the `.md` files the links resolve to. See [Bundle docs into a package](/docs/build/bundle-package-docs) for the full flow.
+
## resolveDocsNavigation
Same group-resolution logic the LLM bundles use, but returns the navigation manifest as a plain object — useful for driving a sidebar UI:
diff --git a/evals/.env.example b/evals/.env.example
new file mode 100644
index 0000000..73addd9
--- /dev/null
+++ b/evals/.env.example
@@ -0,0 +1,8 @@
+# Required for @vercel/agent-eval. Copy to .env and fill in.
+# See https://github.com/vercel-labs/agent-eval
+
+# Vercel AI Gateway key — used to authenticate model calls during eval runs.
+AI_GATEWAY_API_KEY=
+
+# Vercel platform token — used to provision sandboxes for agent execution.
+VERCEL_TOKEN=
diff --git a/evals/README.md b/evals/README.md
new file mode 100644
index 0000000..5843986
--- /dev/null
+++ b/evals/README.md
@@ -0,0 +1,52 @@
+# leadtype agent evals
+
+Measure whether real coding agents discover and use leadtype's bundled docs (`AGENTS.md` + `docs/*.md`) when they're working in a project that depends on the package. Built on [`@vercel/agent-eval`](https://github.com/vercel-labs/agent-eval).
+
+## What this answers
+
+- **Discovery rate** — does the agent open `node_modules/leadtype/AGENTS.md` before guessing?
+- **Pass rate** — can it complete leadtype-related tasks correctly?
+- **Control delta** — pass rate WITH bundled docs minus pass rate WITHOUT. The bundled docs' value, in numbers.
+- **Per-topic hit rate** — which `.md` files actually get read.
+
+## Setup
+
+```bash
+cd evals
+cp .env.example .env
+# fill in AI_GATEWAY_API_KEY and VERCEL_TOKEN
+bun install
+
+# Pack leadtype as a tarball that fixtures can install in-sandbox.
+bun run pack-leadtype
+```
+
+## Run
+
+```bash
+bun run evals:dry # preview what would run
+bun run evals # run all experiments
+bun run evals -- --filter bundled-docs # one experiment
+```
+
+## Layout
+
+```
+evals/
+├── experiments/
+│ ├── bundled-docs.ts # Treatment: leadtype installed normally
+│ └── bundled-docs-control.ts # Control: AGENTS.md + docs/ deleted
+└── evals/
+ ├── wire-content-negotiation/ # Add Accept: text/markdown to a vite app
+ ├── validate-in-ci/ # Add a leadtype lint GH Actions workflow
+ ├── explain-cli-flag/ # Q&A about --enrich-git
+ └── bundle-own-docs/ # Configure --bundle in another package
+```
+
+Each fixture has `PROMPT.md` (the task), `EVAL.ts` (vitest assertions over the agent's transcript), and `package.json` (sandbox starter project).
+
+## Interpreting results
+
+After a run, `__agent_eval__/results.json` inside each sandbox holds the transcript. The `o11y` field has `filesRead`, `filesModified`, `shellCommands`, `toolCalls`, `webFetches`, etc. The `EVAL.ts` files assert against these.
+
+Compare bundled-docs vs bundled-docs-control to see the lift from shipping `AGENTS.md`. If the delta is small for a fixture, that fixture's docs page may not be earning its place — or the agent finds it via training data without needing the bundle.
diff --git a/evals/evals/bundle-own-docs/EVAL.ts b/evals/evals/bundle-own-docs/EVAL.ts
new file mode 100644
index 0000000..d9c8a9f
--- /dev/null
+++ b/evals/evals/bundle-own-docs/EVAL.ts
@@ -0,0 +1,61 @@
+import { existsSync, readFileSync } from "node:fs";
+import { expect, test } from "vitest";
+
+type Transcript = {
+ o11y: {
+ filesRead: string[];
+ filesModified: string[];
+ shellCommands: { command: string }[];
+ } | null;
+};
+
+const transcript = JSON.parse(
+ readFileSync("__agent_eval__/results.json", "utf-8")
+) as Transcript;
+
+const filesRead = transcript.o11y?.filesRead ?? [];
+const filesModified = transcript.o11y?.filesModified ?? [];
+const shellCommands = (transcript.o11y?.shellCommands ?? []).map(
+ (entry) => entry.command
+);
+
+test("agent read AGENTS.md", () => {
+ expect(
+ filesRead.some((path) => path.includes("node_modules/leadtype/AGENTS.md"))
+ ).toBe(true);
+});
+
+test("agent read the bundle-package-docs guide", () => {
+ expect(
+ filesRead.some((path) =>
+ path.includes("node_modules/leadtype/docs/build/bundle-package-docs.md")
+ )
+ ).toBe(true);
+});
+
+test("package.json has AGENTS.md in files and a prepack script using --bundle", () => {
+ const pkgPath = "__agent_eval__/files/package.json";
+ if (!existsSync(pkgPath)) {
+ throw new Error(`package.json not copied out: ${pkgPath}`);
+ }
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf-8")) as {
+ files?: string[];
+ scripts?: Record;
+ };
+ expect(pkg.files ?? []).toContain("AGENTS.md");
+ const prepack = pkg.scripts?.prepack ?? "";
+ expect(prepack).toMatch(/leadtype/);
+ expect(prepack).toMatch(/--bundle/);
+});
+
+test("agent ran npm pack --dry-run to verify", () => {
+ expect(shellCommands.some((cmd) => /npm pack.*--dry-run/.test(cmd))).toBe(
+ true
+ );
+});
+
+test("a stub docs/index.mdx was created", () => {
+ expect(filesModified.some((path) => path.endsWith("docs/index.mdx"))).toBe(
+ true
+ );
+});
diff --git a/evals/evals/bundle-own-docs/PROMPT.md b/evals/evals/bundle-own-docs/PROMPT.md
new file mode 100644
index 0000000..2bfdb5f
--- /dev/null
+++ b/evals/evals/bundle-own-docs/PROMPT.md
@@ -0,0 +1,11 @@
+This is a stub library that wants to ship agent-readable docs inside its npm tarball so coding agents can discover them after `npm install`.
+
+Configure it:
+
+1. Update `package.json` so `AGENTS.md` ships in the published files.
+2. Add a `prepack` script that runs `leadtype generate --bundle` from the repo root (`../../`) into the package directory (`.`).
+3. Add a stub `docs/index.mdx` at the repo root with valid frontmatter (title, description, group) so the pipeline has something to convert.
+
+Run `npm pack --dry-run` and confirm `AGENTS.md` and at least one `.md` under `docs/` appear in the file list.
+
+A `leadtype` package is already installed. Use whatever resources it provides if helpful.
diff --git a/evals/evals/bundle-own-docs/package.json b/evals/evals/bundle-own-docs/package.json
new file mode 100644
index 0000000..70d4147
--- /dev/null
+++ b/evals/evals/bundle-own-docs/package.json
@@ -0,0 +1,15 @@
+{
+ "name": "stub-library",
+ "version": "0.0.0",
+ "private": false,
+ "type": "module",
+ "files": [
+ "dist"
+ ],
+ "scripts": {
+ "test": "vitest run"
+ },
+ "devDependencies": {
+ "vitest": "^2.1.8"
+ }
+}
diff --git a/evals/evals/explain-cli-flag/EVAL.ts b/evals/evals/explain-cli-flag/EVAL.ts
new file mode 100644
index 0000000..fa4f421
--- /dev/null
+++ b/evals/evals/explain-cli-flag/EVAL.ts
@@ -0,0 +1,39 @@
+import { existsSync, readFileSync } from "node:fs";
+import { expect, test } from "vitest";
+
+type Transcript = {
+ o11y: {
+ filesRead: string[];
+ } | null;
+};
+
+const transcript = JSON.parse(
+ readFileSync("__agent_eval__/results.json", "utf-8")
+) as Transcript;
+
+const filesRead = transcript.o11y?.filesRead ?? [];
+
+test("agent read AGENTS.md", () => {
+ expect(
+ filesRead.some((path) => path.includes("node_modules/leadtype/AGENTS.md"))
+ ).toBe(true);
+});
+
+test("agent read the CLI reference", () => {
+ expect(
+ filesRead.some((path) =>
+ path.includes("node_modules/leadtype/docs/reference/cli.md")
+ )
+ ).toBe(true);
+});
+
+test("answer mentions lastModified and lastAuthor", () => {
+ const answerPath = "__agent_eval__/files/ANSWER.md";
+ if (!existsSync(answerPath)) {
+ throw new Error(`ANSWER.md not produced: ${answerPath}`);
+ }
+ const answer = readFileSync(answerPath, "utf-8");
+ expect(answer).toMatch(/lastModified/);
+ expect(answer).toMatch(/lastAuthor/);
+ expect(answer).toMatch(/git/i);
+});
diff --git a/evals/evals/explain-cli-flag/PROMPT.md b/evals/evals/explain-cli-flag/PROMPT.md
new file mode 100644
index 0000000..eca7aca
--- /dev/null
+++ b/evals/evals/explain-cli-flag/PROMPT.md
@@ -0,0 +1,3 @@
+In one paragraph, write to `ANSWER.md` what the `--enrich-git` flag does on `leadtype generate`. Be specific: name the frontmatter fields it adds and where they come from.
+
+A `leadtype` package is already installed. Use whatever resources it provides if helpful.
diff --git a/evals/evals/explain-cli-flag/package.json b/evals/evals/explain-cli-flag/package.json
new file mode 100644
index 0000000..dfbf635
--- /dev/null
+++ b/evals/evals/explain-cli-flag/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "explain-cli-flag-fixture",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "test": "vitest run"
+ },
+ "devDependencies": {
+ "vitest": "^2.1.8"
+ }
+}
diff --git a/evals/evals/validate-in-ci/EVAL.ts b/evals/evals/validate-in-ci/EVAL.ts
new file mode 100644
index 0000000..0824e08
--- /dev/null
+++ b/evals/evals/validate-in-ci/EVAL.ts
@@ -0,0 +1,52 @@
+import { existsSync, readFileSync } from "node:fs";
+import { expect, test } from "vitest";
+
+type Transcript = {
+ o11y: {
+ filesRead: string[];
+ filesModified: string[];
+ } | null;
+};
+
+const transcript = JSON.parse(
+ readFileSync("__agent_eval__/results.json", "utf-8")
+) as Transcript;
+
+const filesRead = transcript.o11y?.filesRead ?? [];
+const filesModified = transcript.o11y?.filesModified ?? [];
+
+test("agent discovered the bundled AGENTS.md", () => {
+ const readAgentsMd = filesRead.some((path) =>
+ path.includes("node_modules/leadtype/AGENTS.md")
+ );
+ expect(readAgentsMd).toBe(true);
+});
+
+test("agent read either validate-in-ci or cli reference", () => {
+ const readRelevantTopic = filesRead.some(
+ (path) =>
+ path.includes("node_modules/leadtype/docs/build/validate-in-ci.md") ||
+ path.includes("node_modules/leadtype/docs/reference/cli.md")
+ );
+ expect(readRelevantTopic).toBe(true);
+});
+
+test("workflow file was created at the right path", () => {
+ expect(
+ filesModified.some((path) =>
+ path.endsWith(".github/workflows/lint-docs.yml")
+ )
+ ).toBe(true);
+});
+
+test("workflow uses the github format and strict flags", () => {
+ const workflowPath = "__agent_eval__/files/.github/workflows/lint-docs.yml";
+ if (!existsSync(workflowPath)) {
+ throw new Error(`Workflow not copied out of sandbox: ${workflowPath}`);
+ }
+ const source = readFileSync(workflowPath, "utf-8");
+ expect(source).toMatch(/leadtype lint/);
+ expect(source).toMatch(/--format\s+github/);
+ expect(source).toMatch(/--error-unknown/);
+ expect(source).toMatch(/pull_request/);
+});
diff --git a/evals/evals/validate-in-ci/PROMPT.md b/evals/evals/validate-in-ci/PROMPT.md
new file mode 100644
index 0000000..6978a7d
--- /dev/null
+++ b/evals/evals/validate-in-ci/PROMPT.md
@@ -0,0 +1,10 @@
+Add a GitHub Actions workflow at `.github/workflows/lint-docs.yml` that runs `leadtype lint` against the `docs/` directory on every pull request that touches docs files.
+
+Requirements:
+
+1. Trigger on `pull_request` events that change files matching `docs/**` or `**/*.mdx`.
+2. Use the GitHub Actions annotation format so violations show up as inline comments on the PR.
+3. Treat unknown frontmatter fields as errors (strict mode).
+4. Fail the job if there are any warnings.
+
+A `leadtype` package is already installed. Use whatever resources it provides if helpful.
diff --git a/evals/evals/validate-in-ci/package.json b/evals/evals/validate-in-ci/package.json
new file mode 100644
index 0000000..4fe188b
--- /dev/null
+++ b/evals/evals/validate-in-ci/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "validate-in-ci-fixture",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "test": "vitest run"
+ },
+ "devDependencies": {
+ "vitest": "^2.1.8"
+ }
+}
diff --git a/evals/evals/wire-content-negotiation/EVAL.ts b/evals/evals/wire-content-negotiation/EVAL.ts
new file mode 100644
index 0000000..14475dd
--- /dev/null
+++ b/evals/evals/wire-content-negotiation/EVAL.ts
@@ -0,0 +1,67 @@
+import { existsSync, readFileSync } from "node:fs";
+import { expect, test } from "vitest";
+
+type Transcript = {
+ o11y: {
+ filesRead: string[];
+ filesModified: string[];
+ shellCommands: { command: string }[];
+ totalToolCalls: number;
+ } | null;
+};
+
+const transcript = JSON.parse(
+ readFileSync("__agent_eval__/results.json", "utf-8")
+) as Transcript;
+
+const filesRead = transcript.o11y?.filesRead ?? [];
+const filesModified = transcript.o11y?.filesModified ?? [];
+
+test("agent discovered the bundled AGENTS.md", () => {
+ // The discovery signal: did the agent open AGENTS.md before grepping at random?
+ const readAgentsMd = filesRead.some((path) =>
+ path.includes("node_modules/leadtype/AGENTS.md")
+ );
+ expect(
+ readAgentsMd,
+ "agent did not read node_modules/leadtype/AGENTS.md"
+ ).toBe(true);
+});
+
+test("agent followed AGENTS.md to the connect-docs-site topic", () => {
+ const readTopic = filesRead.some((path) =>
+ path.includes("node_modules/leadtype/docs/build/connect-docs-site.md")
+ );
+ expect(
+ readTopic,
+ "agent did not read the connect-docs-site topic via AGENTS.md links"
+ ).toBe(true);
+});
+
+test("vite.config.ts was modified", () => {
+ expect(filesModified.some((path) => path.endsWith("vite.config.ts"))).toBe(
+ true
+ );
+});
+
+test("middleware sets charset=utf-8", () => {
+ // Reading the agent's output: charset must be set explicitly to avoid mojibake.
+ // The agent-eval framework copies modified files into __agent_eval__/files/
+ // when copyFiles: "changed" is set on the experiment.
+ const viteConfigPath = "__agent_eval__/files/vite.config.ts";
+ if (!existsSync(viteConfigPath)) {
+ throw new Error(
+ "vite.config.ts was not copied out of the sandbox; check experiment copyFiles config"
+ );
+ }
+ const source = readFileSync(viteConfigPath, "utf-8");
+ expect(source).toMatch(/charset=utf-8/i);
+});
+
+test("middleware rewrites /docs/* paths to .md", () => {
+ const viteConfigPath = "__agent_eval__/files/vite.config.ts";
+ const source = readFileSync(viteConfigPath, "utf-8");
+ expect(source).toMatch(/\/docs/);
+ expect(source).toMatch(/\.md/);
+ expect(source).toMatch(/text\/(markdown|plain)/i);
+});
diff --git a/evals/evals/wire-content-negotiation/PROMPT.md b/evals/evals/wire-content-negotiation/PROMPT.md
new file mode 100644
index 0000000..c6b4ae5
--- /dev/null
+++ b/evals/evals/wire-content-negotiation/PROMPT.md
@@ -0,0 +1,9 @@
+Add `Accept: text/markdown` content negotiation to this Vite docs app so coding agents can fetch the `.md` version of any page from the same URL humans visit at HTML.
+
+Specifically:
+
+1. Add a Vite plugin in `vite.config.ts` that, for any request under `/docs/*` with `Accept: text/markdown`, rewrites the URL to the `.md` file. Browsers (which send `text/html,*/*`) must keep getting HTML.
+2. Make sure the response advertises `Content-Type: text/markdown; charset=utf-8` — otherwise UTF-8 box-drawing characters and em dashes render as mojibake.
+3. Verify with `curl -I -H "Accept: text/markdown" http://localhost:5173/docs/quickstart` — the response should be `text/markdown; charset=utf-8`.
+
+A `leadtype` package is already installed. Use whatever resources it provides if helpful.
diff --git a/evals/evals/wire-content-negotiation/package.json b/evals/evals/wire-content-negotiation/package.json
new file mode 100644
index 0000000..9777730
--- /dev/null
+++ b/evals/evals/wire-content-negotiation/package.json
@@ -0,0 +1,12 @@
+{
+ "name": "wire-content-negotiation-fixture",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "test": "vitest run"
+ },
+ "devDependencies": {
+ "vite": "^7.0.0",
+ "vitest": "^2.1.8"
+ }
+}
diff --git a/evals/evals/wire-content-negotiation/vite.config.ts b/evals/evals/wire-content-negotiation/vite.config.ts
new file mode 100644
index 0000000..8008f9b
--- /dev/null
+++ b/evals/evals/wire-content-negotiation/vite.config.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vite";
+
+// Starter — agent should add a content-negotiation plugin here.
+export default defineConfig({
+ server: {
+ port: 5173,
+ },
+});
diff --git a/evals/experiments/bundled-docs-control.ts b/evals/experiments/bundled-docs-control.ts
new file mode 100644
index 0000000..4cfd9a9
--- /dev/null
+++ b/evals/experiments/bundled-docs-control.ts
@@ -0,0 +1,53 @@
+import { existsSync, readdirSync } from "node:fs";
+import { join } from "node:path";
+import { fileURLToPath } from "node:url";
+import type { ExperimentConfig } from "@vercel/agent-eval";
+
+const evalsRoot = fileURLToPath(new URL("..", import.meta.url));
+const tarballDir = join(evalsRoot, ".tarballs");
+
+function findLeadtypeTarball(): string {
+ if (!existsSync(tarballDir)) {
+ throw new Error(
+ `Run 'bun run pack-leadtype' before evals — no tarballs at ${tarballDir}`
+ );
+ }
+ const tarball = readdirSync(tarballDir).find(
+ (name) => name.startsWith("leadtype-") && name.endsWith(".tgz")
+ );
+ if (!tarball) {
+ throw new Error(`No leadtype-*.tgz found in ${tarballDir}`);
+ }
+ return join(tarballDir, tarball);
+}
+
+/**
+ * Control experiment: leadtype is installed, but AGENTS.md and the docs/
+ * directory are stripped immediately after install. The agent has to fall
+ * back to its training data, the package's source code, or web search.
+ *
+ * Pair-compare against bundled-docs.ts — same prompts, same models, same
+ * runs — to measure the lift from shipping bundled docs.
+ */
+export default {
+ agent: "vercel-ai-gateway/claude-code",
+ model: ["anthropic/claude-haiku-4-5", "openai/gpt-5.4-mini"],
+ runs: 3,
+ earlyExit: false,
+ evals: [
+ "wire-content-negotiation",
+ "validate-in-ci",
+ "explain-cli-flag",
+ "bundle-own-docs",
+ ],
+ setup: async ({ sandbox }) => {
+ const tarball = findLeadtypeTarball();
+ await sandbox.writeFile("/leadtype.tgz", tarball);
+ await sandbox.run("npm", ["install", "/leadtype.tgz"]);
+ // Strip the bundled docs the agent would otherwise discover.
+ await sandbox.run("rm", ["-f", "node_modules/leadtype/AGENTS.md"]);
+ await sandbox.run("rm", ["-rf", "node_modules/leadtype/docs"]);
+ },
+ timeout: 300,
+ copyFiles: "changed",
+} satisfies ExperimentConfig;
diff --git a/evals/experiments/bundled-docs.ts b/evals/experiments/bundled-docs.ts
new file mode 100644
index 0000000..cbd83eb
--- /dev/null
+++ b/evals/experiments/bundled-docs.ts
@@ -0,0 +1,51 @@
+import { existsSync, readdirSync } from "node:fs";
+import { join } from "node:path";
+import { fileURLToPath } from "node:url";
+import type { ExperimentConfig } from "@vercel/agent-eval";
+
+const evalsRoot = fileURLToPath(new URL("..", import.meta.url));
+const tarballDir = join(evalsRoot, ".tarballs");
+
+function findLeadtypeTarball(): string {
+ if (!existsSync(tarballDir)) {
+ throw new Error(
+ `Run 'bun run pack-leadtype' before evals — no tarballs at ${tarballDir}`
+ );
+ }
+ const tarball = readdirSync(tarballDir).find(
+ (name) => name.startsWith("leadtype-") && name.endsWith(".tgz")
+ );
+ if (!tarball) {
+ throw new Error(`No leadtype-*.tgz found in ${tarballDir}`);
+ }
+ return join(tarballDir, tarball);
+}
+
+/**
+ * Treatment experiment: leadtype is installed in the sandbox exactly like an
+ * end user would see it. AGENTS.md and docs/*.md are present at
+ * node_modules/leadtype/.
+ *
+ * The control experiment (bundled-docs-control.ts) is identical except it
+ * deletes those files post-install. The delta between the two pass rates is
+ * the discoverability lift from shipping AGENTS.md.
+ */
+export default {
+ agent: "vercel-ai-gateway/claude-code",
+ model: ["anthropic/claude-haiku-4-5", "openai/gpt-5.4-mini"],
+ runs: 3,
+ earlyExit: false,
+ evals: [
+ "wire-content-negotiation",
+ "validate-in-ci",
+ "explain-cli-flag",
+ "bundle-own-docs",
+ ],
+ setup: async ({ sandbox }) => {
+ const tarball = findLeadtypeTarball();
+ await sandbox.writeFile("/leadtype.tgz", tarball);
+ await sandbox.run("npm", ["install", "/leadtype.tgz"]);
+ },
+ timeout: 300,
+ copyFiles: "changed",
+} satisfies ExperimentConfig;
diff --git a/evals/package.json b/evals/package.json
new file mode 100644
index 0000000..026d241
--- /dev/null
+++ b/evals/package.json
@@ -0,0 +1,16 @@
+{
+ "name": "leadtype-evals",
+ "version": "0.0.0",
+ "private": true,
+ "description": "Agent discoverability evals for leadtype's bundled docs (AGENTS.md vs no-bundle control).",
+ "type": "module",
+ "scripts": {
+ "evals": "agent-eval",
+ "evals:dry": "agent-eval --dry",
+ "pack-leadtype": "cd ../packages/leadtype && npm pack --pack-destination ../../evals/.tarballs"
+ },
+ "devDependencies": {
+ "@vercel/agent-eval": "latest",
+ "vitest": "^2.1.8"
+ }
+}
diff --git a/packages/leadtype/AGENTS.md b/packages/leadtype/AGENTS.md
new file mode 100644
index 0000000..2b66a78
--- /dev/null
+++ b/packages/leadtype/AGENTS.md
@@ -0,0 +1,55 @@
+# Leadtype
+
+> A docs pipeline that turns one MDX source into a website, agent-readable bundles, and a search index.
+
+These docs ship inside the package so coding agents can read them offline. Open the topic file you need from the list below — paths are relative to this file.
+
+## Product Summary
+
+- Convert MDX into clean markdown that agents and tools can read.
+- Generate llms.txt and topic-scoped full-context bundles.
+- Build a static search index plus optional source-grounded answers.
+- Validate frontmatter, navigation, and internal links before publish.
+
+## Best Starting Points
+
+- [Leadtype](./docs/index.md): One MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.
+- [Quickstart](./docs/quickstart.md): Install leadtype, run it against a docs folder, and inspect the four artifacts it produces.
+- [How it works](./docs/how-it-works.md): The mental model: one MDX source, a remark pipeline, four artifacts, three audiences.
+- [Connect a docs site](./docs/build/connect-docs-site.md): Wire leadtype into a docs app build so it serves humans, agents, and search from one source.
+- [Bundle docs into a package](./docs/build/bundle-package-docs.md): Ship agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.
+
+## Get Started
+
+What leadtype is, how it fits together, and the five-minute happy path.
+
+- [Leadtype](./docs/index.md): One MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.
+- [How it works](./docs/how-it-works.md): The mental model: one MDX source, a remark pipeline, four artifacts, three audiences.
+- [Methodology](./docs/methodology.md): How leadtype differs from Fumadocs, Starlight, and Mintlify.
+- [Quickstart](./docs/quickstart.md): Install leadtype, run it against a docs folder, and inspect the four artifacts it produces.
+
+## Authoring
+
+The content contract: frontmatter, groups, and the MDX components the pipeline can flatten.
+
+- [Components](./docs/authoring/components.md): MDX components the pipeline knows how to flatten into agent-readable markdown.
+- [Frontmatter](./docs/authoring/frontmatter.md): Required fields, group semantics, and how authored MDX becomes a navigation tree.
+
+## Build
+
+Two journeys: ship docs inside an npm package, or wire leadtype into a docs site.
+
+- [Bundle docs into a package](./docs/build/bundle-package-docs.md): Ship agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.
+- [Connect a docs site](./docs/build/connect-docs-site.md): Wire leadtype into a docs app build so it serves humans, agents, and search from one source.
+- [Validate in CI](./docs/build/validate-in-ci.md): Run leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.
+
+## Reference
+
+CLI flags, conversion APIs, remark plugins, LLM bundles, search, and lint rules.
+
+- [CLI](./docs/reference/cli.md): leadtype generate and leadtype lint — flags, exit codes, and JSON output.
+- [Convert](./docs/reference/convert.md): MDX-to-markdown conversion APIs from leadtype/convert.
+- [Lint rules](./docs/reference/lint.md): Schema, link, and navigation checks. CLI and library API.
+- [LLM bundles](./docs/reference/llm.md): Generate llms.txt and topic-scoped full-context files for agents.
+- [Remark plugins](./docs/reference/remark.md): The default plugin stack that flattens MDX components into markdown.
+- [Search](./docs/reference/search.md): Static search index, runtime helpers, and source-grounded answer streaming.
diff --git a/packages/leadtype/README.md b/packages/leadtype/README.md
index b03099f..a637d65 100644
--- a/packages/leadtype/README.md
+++ b/packages/leadtype/README.md
@@ -17,23 +17,22 @@ pnpm add leadtype
## 30-second example
+For a hosted docs site:
+
```bash
-# In a repo with docs/*.mdx
npx leadtype generate --src . --out public --base-url https://docs.example.com
+# → public/llms.txt, public/docs/*.md, public/docs/llms-full/*.txt,
+# public/docs/search-index.json
```
-Output:
+For an npm-bundled doc set:
+```bash
+npx leadtype generate --bundle --src . --out packages/my-package
+# → packages/my-package/AGENTS.md, packages/my-package/docs/*.md
```
-public/
-├── llms.txt
-└── docs/
- ├── *.md
- ├── llms.txt
- ├── llms-full/.txt
- ├── search-index.json
- └── search-content.json
-```
+
+The website output is fetched by humans (HTML) and HTTP agents (`Accept: text/markdown` or `/llms.txt`). The bundled output is auto-discovered by [25+ coding agents](https://agents.md) (Claude Code, Codex, Cursor, Copilot, …) when the package is installed at `node_modules//AGENTS.md`.
## Documentation
@@ -52,7 +51,7 @@ Full docs at [docs.example.com](https://docs.example.com/docs). Highlights:
| `leadtype` | `defineDocsConfig` — the config helper. |
| `leadtype/convert` | MDX-to-markdown conversion. |
| `leadtype/remark` | `defaultRemarkPlugins` plus individual plugins. |
-| `leadtype/llm` | `generateLlmsTxt`, `generateLLMFullContextFiles`, `resolveDocsNavigation`. |
+| `leadtype/llm` | `generateLlmsTxt`, `generateLLMFullContextFiles`, `generateAgentsMd`, `resolveDocsNavigation`. |
| `leadtype/search` | Edge-safe search runtime, content readers, request guards. |
| `leadtype/search/node` | Build-time `generateDocsSearchFiles`. |
| `leadtype/search/vercel` | Vercel AI SDK / AI Gateway answer streaming and bash tools. |
@@ -64,14 +63,20 @@ The `leadtype` binary wraps `generate` and `lint`. Use the library entry points
## Bundled agent docs
-This package ships its own docs inside the published tarball at `node_modules/leadtype/docs/`:
+This package ships its own docs inside the published tarball:
-- `docs/llms.txt` — routing index
-- `docs/llms-full/*.txt` — per-leaf-group full content
-- `docs/*.md` — flattened markdown per page
-- `docs/search-index.json` + `docs/search-content.json`
+- `AGENTS.md` at the package root — auto-discovered by [25+ coding agents](https://agents.md) when leadtype is installed in any project.
+- `docs/*.md` — flattened markdown per page, organized by group.
+
+After `npm install leadtype`, point your project's root `AGENTS.md` at the bundled docs:
+
+```md
+When working with the `leadtype` library, read
+`node_modules/leadtype/AGENTS.md` first — it points at version-matched
+markdown topic files.
+```
-Agents and IDEs can read these offline. Set `LEADTYPE_AGENT_BASE_URL` before running `bun run docs:generate` so the URLs in `llms.txt` point to your hosted docs.
+The website-style outputs (`llms.txt`, `llms-full/*.txt`, `search-index.json`) are emitted only in default `leadtype generate` mode. They're served from a hosted docs site, not from the package tarball.
## License
diff --git a/packages/leadtype/package.json b/packages/leadtype/package.json
index 6550e55..f4029da 100644
--- a/packages/leadtype/package.json
+++ b/packages/leadtype/package.json
@@ -62,6 +62,7 @@
"files": [
"dist",
"docs",
+ "AGENTS.md",
"README.md"
],
"scripts": {
diff --git a/packages/leadtype/scripts/generate-docs.ts b/packages/leadtype/scripts/generate-docs.ts
index 903e30e..aa5af9c 100644
--- a/packages/leadtype/scripts/generate-docs.ts
+++ b/packages/leadtype/scripts/generate-docs.ts
@@ -1,13 +1,9 @@
-import { rm, writeFile } from "node:fs/promises";
+import { rm } from "node:fs/promises";
import { dirname, join, resolve } from "node:path";
import { fileURLToPath } from "node:url";
import docsConfig from "../../../docs/docs.config";
import { convertAllMdx } from "../src/convert/index";
-import {
- generateLLMFullContextFiles,
- generateLlmsTxt,
- resolveDocsNavigation,
-} from "../src/llm/index";
+import { generateAgentsMd, resolveDocsNavigation } from "../src/llm/index";
import { defaultRemarkPlugins } from "../src/remark/index";
const PACKAGE_ROOT = dirname(dirname(fileURLToPath(import.meta.url)));
@@ -15,20 +11,11 @@ const REPO_ROOT = resolve(PACKAGE_ROOT, "..", "..");
const SRC_DOCS_DIR = join(REPO_ROOT, "docs");
const OUT_DOCS_DIR = join(PACKAGE_ROOT, "docs");
-const fallbackBaseUrl = "https://example.invalid/leadtype";
-const configuredBaseUrl = process.env.LEADTYPE_AGENT_BASE_URL?.trim();
-const baseUrl = configuredBaseUrl || fallbackBaseUrl;
-
-if (!configuredBaseUrl) {
- process.stderr.write(
- `LEADTYPE_AGENT_BASE_URL not set; using ${fallbackBaseUrl} for generated package docs.\n`
- );
-}
-
// The output folder is entirely generated and gitignored — safe to nuke.
-// This also clears the root-level `llms.txt` / `llms-full.txt` byproducts
-// emitted by the llm helper at PACKAGE_ROOT.
+// Also clear the package-root AGENTS.md and any leftover `llms.txt` /
+// `llms-full.txt` from earlier (website-mode) builds.
await rm(OUT_DOCS_DIR, { recursive: true, force: true });
+await rm(join(PACKAGE_ROOT, "AGENTS.md"), { force: true });
await rm(join(PACKAGE_ROOT, "llms.txt"), { force: true });
await rm(join(PACKAGE_ROOT, "llms-full.txt"), { force: true });
@@ -38,29 +25,11 @@ await convertAllMdx({
remarkPlugins: defaultRemarkPlugins,
});
-// `generateLlmsTxt` and `generateLLMFullContextFiles` join `${dir}/docs/`
-// internally, so we pass the parents (REPO_ROOT, PACKAGE_ROOT) — they then
-// read source MDX from `/docs/` and write outputs to `/docs/`.
-await generateLlmsTxt({
- srcDir: REPO_ROOT,
- outDir: PACKAGE_ROOT,
- baseUrl,
- product: docsConfig.product,
- groups: docsConfig.groups,
-});
-
-await generateLLMFullContextFiles({
- outDir: PACKAGE_ROOT,
- baseUrl,
- product: { name: docsConfig.product.name },
- groups: docsConfig.groups,
-});
-
-// Surface unknown-group references early — the lint rule catches typos in
-// CI, but the build script also fails fast so a bad config can't ship.
+// Validate group references against docs.config.ts and fail fast on typos —
+// the lint rule covers this in CI, but the package build is also a gate so a
+// bad config can't ship.
const navigation = await resolveDocsNavigation({
srcDir: REPO_ROOT,
- baseUrl,
groups: docsConfig.groups,
});
if (navigation.unknown.length > 0) {
@@ -72,9 +41,15 @@ if (navigation.unknown.length > 0) {
process.exit(1);
}
-await writeFile(
- join(OUT_DOCS_DIR, "navigation.json"),
- `${JSON.stringify(navigation, null, 2)}\n`
-);
+// Emit AGENTS.md at the package root. Coding agents auto-discover this file
+// (Claude Code, Codex, Cursor, Copilot, Aider, etc.) when working in a repo
+// that depends on leadtype. Every link inside is a relative path to the
+// bundled `.md` topic — no URL fetches required.
+const { outputPath } = await generateAgentsMd({
+ srcDir: REPO_ROOT,
+ outDir: PACKAGE_ROOT,
+ product: docsConfig.product,
+ groups: docsConfig.groups,
+});
-process.stdout.write(`Generated docs in ${OUT_DOCS_DIR}\n`);
+process.stdout.write(`Generated ${outputPath} and ${OUT_DOCS_DIR}/*.md\n`);
diff --git a/packages/leadtype/src/cli.test.ts b/packages/leadtype/src/cli.test.ts
index 9a160aa..718ee31 100644
--- a/packages/leadtype/src/cli.test.ts
+++ b/packages/leadtype/src/cli.test.ts
@@ -343,6 +343,57 @@ This page is valid, but the output path is not a directory.
expect(leakedTempDirs).toEqual([]);
});
+ it("emits AGENTS.md and skips llms.txt in --bundle mode", async () => {
+ const outDir = await createTempDir();
+ const capture = createCapture();
+
+ const code = await runCli(
+ [
+ "generate",
+ "--bundle",
+ "--src",
+ repoRoot,
+ "--out",
+ outDir,
+ "--name",
+ "leadtype",
+ "--summary",
+ "Bundled docs for leadtype.",
+ "--format",
+ "json",
+ ],
+ capture.io
+ );
+
+ expect(code).toBe(0);
+ const result = JSON.parse(capture.stdout) as {
+ files: { agentsMd?: string; llmsTxt?: string };
+ mode: string;
+ };
+ expect(result.mode).toBe("bundle");
+ expect(result.files.agentsMd).toBe(path.join(outDir, "AGENTS.md"));
+ expect(result.files.llmsTxt).toBeUndefined();
+
+ // AGENTS.md exists, has the product header, and uses relative links.
+ expect(existsSync(path.join(outDir, "AGENTS.md"))).toBe(true);
+ const agentsMd = await readFile(path.join(outDir, "AGENTS.md"), "utf8");
+ expect(agentsMd).toContain("# leadtype");
+ expect(agentsMd).toContain("](./docs/");
+ // Bundle mode must NOT emit website artifacts.
+ expect(existsSync(path.join(outDir, "llms.txt"))).toBe(false);
+ expect(existsSync(path.join(outDir, "llms-full.txt"))).toBe(false);
+ expect(existsSync(path.join(outDir, "docs", "llms.txt"))).toBe(false);
+ expect(existsSync(path.join(outDir, "docs", "llms-full.txt"))).toBe(false);
+ expect(existsSync(path.join(outDir, "docs", "search-index.json"))).toBe(
+ false
+ );
+ // .md files should still ship.
+ expect(existsSync(path.join(outDir, "docs", "methodology.md"))).toBe(true);
+ expect(
+ existsSync(path.join(outDir, "docs", "build", "connect-docs-site.md"))
+ ).toBe(true);
+ });
+
it("fails clearly when the docs source directory is missing", async () => {
const tempDir = await createTempDir();
const capture = createCapture();
diff --git a/packages/leadtype/src/cli/generate.ts b/packages/leadtype/src/cli/generate.ts
index d4edc2b..9b6a9a4 100644
--- a/packages/leadtype/src/cli/generate.ts
+++ b/packages/leadtype/src/cli/generate.ts
@@ -6,7 +6,11 @@ import fg from "fast-glob";
import matter from "gray-matter";
import { convertAllMdx } from "../convert";
import type { DocsGroup, ProductInfo } from "../llm";
-import { generateLLMFullContextFiles, generateLlmsTxt } from "../llm";
+import {
+ generateAgentsMd,
+ generateLLMFullContextFiles,
+ generateLlmsTxt,
+} from "../llm";
import { defaultRemarkPlugins } from "../remark";
import type { GenerateDocsSearchFilesResult } from "../search/node";
import { generateDocsSearchFiles } from "../search/node";
@@ -22,6 +26,7 @@ type GenerateFormat = "json" | "text";
export type GenerateArgs = {
baseUrl?: string;
+ bundle: boolean;
docsDir: string;
enrichGit: boolean;
exclude: string[];
@@ -54,32 +59,42 @@ type GenerateFilters = {
type GenerateResult = {
docsDir: string;
files: {
- docsLlmsFullTxt: string;
- docsLlmsTxt: string;
- llmsTxt: string;
+ agentsMd?: string;
+ docsLlmsFullTxt?: string;
+ docsLlmsTxt?: string;
+ llmsTxt?: string;
searchContent?: string;
- searchIndex: string;
+ searchIndex?: string;
};
groups: DocsGroup[];
filters: GenerateFilters;
+ mode: "site" | "bundle";
outDir: string;
product: ProductInfo;
- search: GenerateDocsSearchFilesResult;
+ search?: GenerateDocsSearchFilesResult;
srcDir: string;
};
-const GENERATE_USAGE = `leadtype generate — convert MDX, generate LLM files, and build search artifacts
+const GENERATE_USAGE = `leadtype generate — convert MDX and produce site or package-bundle artifacts
Usage:
leadtype generate [options]
+By default, runs in site mode and writes:
+ llms.txt, docs/*.md, docs/llms-full/*.txt, docs/search-index.json
+
+With --bundle, runs in package mode and writes:
+ AGENTS.md, docs/*.md
+ (skips llms.txt, llms-full, and search artifacts — those are website-only)
+
Options:
--src Source repo/root directory (default: .)
--docs-dir Docs folder relative to --src (default: docs)
--out Output root directory (default: public)
- --base-url Base URL for generated links
- --name Product name for generated LLM files
- --summary Product summary for generated LLM files
+ --bundle Bundle mode for npm packages (AGENTS.md + docs/*.md)
+ --base-url Base URL for generated links (site mode)
+ --name Product name for generated index files
+ --summary Product summary for generated index files
--include Include MDX paths matching this docs-root-relative glob
--exclude Exclude MDX paths matching this docs-root-relative glob
--enrich-git Add lastModified and lastAuthor from git history
@@ -102,6 +117,7 @@ function isGenerateFormat(value: string): value is GenerateFormat {
export function parseGenerateArgs(argv: string[]): GenerateArgs {
const args: GenerateArgs = {
+ bundle: false,
docsDir: DEFAULT_DOCS_DIR,
enrichGit: false,
exclude: [],
@@ -134,6 +150,8 @@ export function parseGenerateArgs(argv: string[]): GenerateArgs {
args.exclude.push(readValue(argv, ++i, "--exclude"));
} else if (arg === "--enrich-git") {
args.enrichGit = true;
+ } else if (arg === "--bundle") {
+ args.bundle = true;
} else if (arg === "--format") {
const value = readValue(argv, ++i, "--format");
if (!isGenerateFormat(value)) {
@@ -371,42 +389,63 @@ export async function runGenerateCommand(
enrichFrontmatterFromGit: args.enrichGit,
});
- await generateLlmsTxt({
- srcDir: sourceMirror.srcDir,
- outDir,
- baseUrl: args.baseUrl,
- product,
- groups,
- });
-
- await generateLLMFullContextFiles({
- outDir,
- baseUrl: args.baseUrl,
- product: { name: product.name },
- groups,
- });
-
- const search = await generateDocsSearchFiles({
- outDir,
- baseUrl: args.baseUrl,
- });
-
- const result: GenerateResult = {
- docsDir,
- files: {
- docsLlmsFullTxt: path.join(outDir, "docs", "llms-full.txt"),
- docsLlmsTxt: path.join(outDir, "docs", "llms.txt"),
- llmsTxt: path.join(outDir, "llms.txt"),
- searchContent: search.contentOutputPath,
- searchIndex: search.outputPath,
- },
- filters: sourceMirror.filters,
- groups,
- outDir,
- product,
- search,
- srcDir,
- };
+ let result: GenerateResult;
+ if (args.bundle) {
+ const agents = await generateAgentsMd({
+ srcDir: sourceMirror.srcDir,
+ outDir,
+ product,
+ groups,
+ });
+ result = {
+ docsDir,
+ files: { agentsMd: agents.outputPath },
+ filters: sourceMirror.filters,
+ groups,
+ mode: "bundle",
+ outDir,
+ product,
+ srcDir,
+ };
+ } else {
+ await generateLlmsTxt({
+ srcDir: sourceMirror.srcDir,
+ outDir,
+ baseUrl: args.baseUrl,
+ product,
+ groups,
+ });
+
+ await generateLLMFullContextFiles({
+ outDir,
+ baseUrl: args.baseUrl,
+ product: { name: product.name },
+ groups,
+ });
+
+ const search = await generateDocsSearchFiles({
+ outDir,
+ baseUrl: args.baseUrl,
+ });
+
+ result = {
+ docsDir,
+ files: {
+ docsLlmsFullTxt: path.join(outDir, "docs", "llms-full.txt"),
+ docsLlmsTxt: path.join(outDir, "docs", "llms.txt"),
+ llmsTxt: path.join(outDir, "llms.txt"),
+ searchContent: search.contentOutputPath,
+ searchIndex: search.outputPath,
+ },
+ filters: sourceMirror.filters,
+ groups,
+ mode: "site",
+ outDir,
+ product,
+ search,
+ srcDir,
+ };
+ }
if (args.format === "json") {
io.stdout.write(`${renderGenerateResult(result)}\n`);
diff --git a/packages/leadtype/src/llm/index.ts b/packages/leadtype/src/llm/index.ts
index c060f9b..1976b1d 100644
--- a/packages/leadtype/src/llm/index.ts
+++ b/packages/leadtype/src/llm/index.ts
@@ -1,4 +1,6 @@
export {
+ type AgentsMdConfig,
+ type AgentsMdResult,
type CuratedLink,
type DocsConfig,
type DocsGroup,
@@ -6,6 +8,7 @@ export {
type DocsNavigationGroup,
type DocsNavigationPage,
defineDocsConfig,
+ generateAgentsMd,
generateLLMFullContextFiles,
generateLlmsTxt,
type LLMFullContextConfig,
diff --git a/packages/leadtype/src/llm/llm.ts b/packages/leadtype/src/llm/llm.ts
index 4dbfc5f..d1d23c4 100644
--- a/packages/leadtype/src/llm/llm.ts
+++ b/packages/leadtype/src/llm/llm.ts
@@ -821,6 +821,132 @@ export async function generateLLMFullContextFiles(
await writeGroupTree(resolved, config.product, markdownDocs, llmsFullDir);
}
+/* ---------------- AGENTS.md (offline package bundle) -------------------- */
+
+export type AgentsMdConfig = {
+ /** Repo root containing the `docs/` source. */
+ srcDir: string;
+ /** Output root. AGENTS.md is written at `/AGENTS.md`. */
+ outDir: string;
+ product: ProductInfo;
+ /** Group tree from `docs.config.ts`. Drives section structure. */
+ groups: DocsGroup[];
+ /**
+ * Subdirectory under `outDir` that holds the converted `.md` files.
+ * Used for the relative-path prefix in every link. Default: `docs`.
+ */
+ docsSubdir?: string;
+};
+
+export type AgentsMdResult = {
+ outputPath: string;
+};
+
+function relativeDocLink(relativePath: string, docsSubdir: string): string {
+ return `./${docsSubdir}/${relativePath}.md`;
+}
+
+function pageDescription(doc: SourceDoc, fallback?: string): string {
+ return (
+ normalizeDescription(doc.description) ||
+ fallback ||
+ `Reference page for ${doc.title.toLowerCase()}.`
+ );
+}
+
+/**
+ * Generate `AGENTS.md` at the package root for offline-readable docs that
+ * coding agents auto-discover (Claude Code, Codex, Cursor, etc.). Unlike
+ * `generateLlmsTxt`, every link is a **relative** filesystem path
+ * (`./docs//.md`) so the file works inside a published npm
+ * tarball at `node_modules//AGENTS.md`.
+ */
+export async function generateAgentsMd(
+ config: AgentsMdConfig
+): Promise {
+ const srcDir = path.resolve(config.srcDir);
+ const outDir = path.resolve(config.outDir);
+ const docsSubdir = config.docsSubdir ?? DOCS_DIRNAME;
+ // baseUrl is required by readSourceDocs for the SourceDoc.absoluteUrl
+ // field, but AGENTS.md output never reads that field — relative paths only.
+ // Pass through any configured fallback so SourceDoc objects are well-formed.
+ const baseUrl = normalizeBaseUrl(undefined);
+ const sourceDocs = await readSourceDocs(srcDir, baseUrl);
+ const resolved = resolveGroups(config.groups);
+ const membership = buildGroupMembership([...sourceDocs.values()], resolved);
+
+ const lines: string[] = [
+ `# ${config.product.name}`,
+ "",
+ `> ${config.product.summary}`,
+ "",
+ "These docs ship inside the package so coding agents can read them offline. Open the topic file you need from the list below — paths are relative to this file.",
+ ];
+
+ if (config.product.bullets && config.product.bullets.length > 0) {
+ lines.push("", "## Product Summary", "");
+ for (const bullet of config.product.bullets) {
+ lines.push(`- ${bullet}`);
+ }
+ }
+
+ const startingPoints = config.product.bestStartingPoints ?? [];
+ const renderedStarts: string[] = [];
+ for (const link of startingPoints) {
+ const sourceDoc = sourceDocs.get(link.urlPath);
+ if (!sourceDoc) {
+ // bestStartingPoints can reference URLs not present in source (e.g.
+ // /docs root). Skip those rather than emit a broken relative link.
+ continue;
+ }
+ const title = link.title ?? sourceDoc.title;
+ const description = link.description ?? pageDescription(sourceDoc);
+ renderedStarts.push(
+ `- [${title}](${relativeDocLink(sourceDoc.relativePath, docsSubdir)}): ${description}`
+ );
+ }
+ if (renderedStarts.length > 0) {
+ lines.push("", "## Best Starting Points", "", ...renderedStarts);
+ }
+
+ for (const group of resolved) {
+ const pages = pagesUnderGroup(group, membership);
+ if (pages.length === 0) {
+ continue;
+ }
+ lines.push("", `## ${group.title}`);
+ if (group.description) {
+ lines.push("", group.description);
+ }
+ lines.push("");
+ for (const page of pages) {
+ lines.push(
+ `- [${page.title}](${relativeDocLink(page.relativePath, docsSubdir)}): ${pageDescription(page)}`
+ );
+ }
+ }
+
+ if (membership.ungrouped.length > 0) {
+ lines.push("", "## Other", "");
+ for (const page of membership.ungrouped) {
+ lines.push(
+ `- [${page.title}](${relativeDocLink(page.relativePath, docsSubdir)}): ${pageDescription(page)}`
+ );
+ }
+ }
+
+ // Skip product.agentGuidance — it's written for the website's llms.txt
+ // routing flow ("open /docs/llms.txt then…") and would mislead an agent
+ // reading from node_modules. The preamble paragraph already covers offline
+ // navigation in format-agnostic terms.
+
+ const content = `${lines.join("\n")}\n`;
+ await mkdir(outDir, { recursive: true });
+ const outputPath = path.join(outDir, "AGENTS.md");
+ await writeFile(outputPath, content);
+ return { outputPath };
+}
+
/* ---------------- Navigation manifest ----------------------------------- */
export type DocsNavigationPage = {
From be8b4a6f22221d9048b12f2de25cd0f8a6d900ca Mon Sep 17 00:00:00 2001
From: Kaylee <65376239+KayleeWilliams@users.noreply.github.com>
Date: Sat, 9 May 2026 09:04:10 -0700
Subject: [PATCH 10/13] Replace agent-eval with custom AI SDK eval harness
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
agent-eval's Docker sandboxes were unworkable here: every fresh
node:24-slim container ran apt-get update + apt-get install -y
ca-certificates git before the agent could start, and the framework's
hardcoded image meant we couldn't skip it. With multiple containers
spinning up concurrently apt-get saturated bandwidth and routinely ran
past the 300s timeout. We watched 48 sandboxes hit timeout with zero
transcripts produced and 35+ stuck containers.
The whole isolation layer was overkill for our threat model — these are
our own fixtures. Switched to a custom harness on the AI SDK that:
- Uses Vercel AI Gateway (single AI_GATEWAY_API_KEY for all providers)
- Spins up an OS tempdir per (fixture × mode), no Docker
- Defines six AI SDK tools — read/write/list/glob/grep + a narrow npm
with subcommand allowlist (pack/install only) and scrubbed env. No
`bash` tool. Every tool path-scopes via resolveScoped() at the JS
level — no shell parsing, no command substitution, no env-var leak
- Records every tool call into a transcript JSON the EVAL.ts files
read via TRANSCRIPT_PATH env var
- Archives transcripts + modified files to evals/results///
for debugging
Smoke run on wire-content-negotiation with claude-haiku-4-5 confirms
the harness works end-to-end: agent runs in 246s, makes 49 tool calls,
reads node_modules/leadtype/AGENTS.md and follows it to write a correct
vite.config.ts. The harness correctly catches that Haiku didn't
navigate from AGENTS.md to the connect-docs-site topic — it skipped to
quickstart.md and improvised. That's the kind of measurement we wanted.
Path-escape unit tests (lib/tools.test.ts) verify resolveScoped rejects
../../../etc/passwd, /etc/passwd, and subdir/../.. — 9/9 pass.
---
.gitignore | 3 +-
evals/.env.example | 11 +-
evals/README.md | 87 ++++-
evals/bun.lock | 258 +++++++++++++
evals/evals/bundle-own-docs/EVAL.ts | 120 +++---
evals/evals/explain-cli-flag/EVAL.ts | 65 ++--
evals/evals/validate-in-ci/EVAL.ts | 90 ++---
evals/evals/wire-content-negotiation/EVAL.ts | 119 +++---
evals/experiments/bundled-docs-control.ts | 53 ---
evals/experiments/bundled-docs.ts | 51 ---
evals/lib/sandbox.ts | 97 +++++
evals/lib/tools.test.ts | 100 +++++
evals/lib/tools.ts | 342 +++++++++++++++++
evals/lib/transcript.ts | 56 +++
evals/package.json | 14 +-
evals/run-eval.ts | 370 +++++++++++++++++++
16 files changed, 1500 insertions(+), 336 deletions(-)
create mode 100644 evals/bun.lock
delete mode 100644 evals/experiments/bundled-docs-control.ts
delete mode 100644 evals/experiments/bundled-docs.ts
create mode 100644 evals/lib/sandbox.ts
create mode 100644 evals/lib/tools.test.ts
create mode 100644 evals/lib/tools.ts
create mode 100644 evals/lib/transcript.ts
create mode 100644 evals/run-eval.ts
diff --git a/.gitignore b/.gitignore
index b50f255..6f85112 100644
--- a/.gitignore
+++ b/.gitignore
@@ -38,7 +38,8 @@ yarn-error.log*
*.pem
.gstack/
-# Agent evals (@vercel/agent-eval)
+# Agent evals
evals/.tarballs/
+evals/results/
evals/__agent_eval__/
evals/**/__agent_eval__/
diff --git a/evals/.env.example b/evals/.env.example
index 73addd9..18c64aa 100644
--- a/evals/.env.example
+++ b/evals/.env.example
@@ -1,8 +1,5 @@
-# Required for @vercel/agent-eval. Copy to .env and fill in.
-# See https://github.com/vercel-labs/agent-eval
-
-# Vercel AI Gateway key — used to authenticate model calls during eval runs.
+# Vercel AI Gateway key — auths every model call from the harness.
+# The gateway brokers Anthropic, OpenAI, Google, etc. through one key, so
+# we don't need separate ANTHROPIC_API_KEY / OPENAI_API_KEY env vars.
+# Get one at https://vercel.com/dashboard/ai-gateway.
AI_GATEWAY_API_KEY=
-
-# Vercel platform token — used to provision sandboxes for agent execution.
-VERCEL_TOKEN=
diff --git a/evals/README.md b/evals/README.md
index 5843986..7698cc9 100644
--- a/evals/README.md
+++ b/evals/README.md
@@ -1,52 +1,103 @@
# leadtype agent evals
-Measure whether real coding agents discover and use leadtype's bundled docs (`AGENTS.md` + `docs/*.md`) when they're working in a project that depends on the package. Built on [`@vercel/agent-eval`](https://github.com/vercel-labs/agent-eval).
+Measure whether real coding agents (Claude, GPT) discover and use leadtype's bundled docs (`AGENTS.md` + `docs/*.md`) when they're working in a project that depends on the package. Custom harness on the Vercel AI SDK — no Docker, no Vercel platform dependency.
## What this answers
- **Discovery rate** — does the agent open `node_modules/leadtype/AGENTS.md` before guessing?
- **Pass rate** — can it complete leadtype-related tasks correctly?
-- **Control delta** — pass rate WITH bundled docs minus pass rate WITHOUT. The bundled docs' value, in numbers.
+- **Treatment vs control delta** — pass rate WITH bundled docs minus WITHOUT. The bundled docs' value, in numbers.
- **Per-topic hit rate** — which `.md` files actually get read.
+## How it works
+
+For each fixture × mode (treatment | control), the harness:
+
+1. Creates a tempdir, copies the fixture's starter files in.
+2. Runs `npm install ` so `node_modules/leadtype/` looks like a real install.
+3. In **control** mode, deletes `AGENTS.md` and `docs/` from the installed package — the agent has to fall back to its training data.
+4. Runs `generateText` from the AI SDK with a small set of path-scoped tools: `read`, `write`, `list`, `glob`, `grep`, plus a narrow `npm` tool (allowlist: `pack`, `install` only).
+5. Records every tool call into a transcript JSON.
+6. Spawns vitest against the fixture's `EVAL.ts`, which asserts on the transcript (e.g., "did the agent read `node_modules/leadtype/AGENTS.md`?").
+
+No shell, no Docker, no escape vector — every tool call resolves paths relative to the tempdir at the JS level (`resolveScoped` in `lib/tools.ts`). The agent literally cannot see anything outside the tempdir.
+
## Setup
```bash
cd evals
cp .env.example .env
-# fill in AI_GATEWAY_API_KEY and VERCEL_TOKEN
+# Fill in AI_GATEWAY_API_KEY. Models route through Vercel AI Gateway —
+# one key handles Anthropic, OpenAI, Google, etc.
bun install
-# Pack leadtype as a tarball that fixtures can install in-sandbox.
+# Pack leadtype as a tarball that the harness installs into each sandbox.
bun run pack-leadtype
```
## Run
```bash
-bun run evals:dry # preview what would run
-bun run evals # run all experiments
-bun run evals -- --filter bundled-docs # one experiment
+# Smoke test — one fixture, treatment mode, 1 run, default model.
+bun run evals -- --fixture wire-content-negotiation --mode treatment
+
+# Full matrix on the default model (claude-haiku-4-5).
+bun run evals
+
+# Flagship Anthropic model.
+bun run evals -- --model claude-opus-4-7
+
+# Flagship OpenAI model (needs OPENAI_API_KEY).
+bun run evals -- --model gpt-5.5
+
+# Stack repetitions.
+bun run evals -- --runs 3
```
+## CLI flags
+
+| Flag | Default | Description |
+| --- | --- | --- |
+| `--fixture ` | (all) | Run only one fixture from `evals//`. |
+| `--mode ` | both | `treatment` or `control`. |
+| `--model ` | `claude-haiku-4-5` | Any `@ai-sdk/anthropic` or `@ai-sdk/openai` model id. Strings starting with `gpt-` route to OpenAI; everything else to Anthropic. |
+| `--runs ` | `1` | Repetitions per (fixture × mode). |
+
## Layout
```
evals/
-├── experiments/
-│ ├── bundled-docs.ts # Treatment: leadtype installed normally
-│ └── bundled-docs-control.ts # Control: AGENTS.md + docs/ deleted
-└── evals/
- ├── wire-content-negotiation/ # Add Accept: text/markdown to a vite app
- ├── validate-in-ci/ # Add a leadtype lint GH Actions workflow
- ├── explain-cli-flag/ # Q&A about --enrich-git
- └── bundle-own-docs/ # Configure --bundle in another package
+├── lib/
+│ ├── tools.ts # 6 path-scoped AI SDK tools (read/write/list/glob/grep/npm)
+│ ├── tools.test.ts # path-escape unit tests
+│ ├── sandbox.ts # tempdir lifecycle, npm install, control-mode strip
+│ └── transcript.ts # transcript types + writer/reader
+├── evals/ # fixtures
+│ ├── wire-content-negotiation/ (PROMPT.md, EVAL.ts, vite.config.ts, package.json)
+│ ├── validate-in-ci/ (PROMPT.md, EVAL.ts, package.json)
+│ ├── explain-cli-flag/ (PROMPT.md, EVAL.ts, package.json)
+│ └── bundle-own-docs/ (PROMPT.md, EVAL.ts, package.json)
+└── run-eval.ts # entry — discovers fixtures, dispatches runs, prints summary
```
-Each fixture has `PROMPT.md` (the task), `EVAL.ts` (vitest assertions over the agent's transcript), and `package.json` (sandbox starter project).
+Each fixture's `PROMPT.md` is the task description. `EVAL.ts` reads the transcript via `readTranscript()` and asserts on `transcript.toolCalls` (e.g. did `read` tool open AGENTS.md?) plus the final state of files the agent wrote.
## Interpreting results
-After a run, `__agent_eval__/results.json` inside each sandbox holds the transcript. The `o11y` field has `filesRead`, `filesModified`, `shellCommands`, `toolCalls`, `webFetches`, etc. The `EVAL.ts` files assert against these.
+The summary table:
+
+```
+fixture treatment control delta discovered AGENTS.md (treatment)
+wire-content-negotiation 3/3 0/3 +100% 3/3
+validate-in-ci 3/3 2/3 +33% 3/3
+explain-cli-flag 3/3 0/3 +100% 3/3
+bundle-own-docs 2/3 0/3 +67% 3/3
+```
+
+A small delta on a fixture means the bundled docs aren't pulling their weight there — either the task is solvable from training data, or our docs page on that topic isn't earning agent visits. A 0/N treatment column means the AGENTS.md flow itself is broken (or the assertion is too strict).
+
+## Tests
-Compare bundled-docs vs bundled-docs-control to see the lift from shipping `AGENTS.md`. If the delta is small for a fixture, that fixture's docs page may not be earning its place — or the agent finds it via training data without needing the bundle.
+```bash
+bun test lib # unit tests for resolveScoped + read/write tools
+```
diff --git a/evals/bun.lock b/evals/bun.lock
new file mode 100644
index 0000000..5248d99
--- /dev/null
+++ b/evals/bun.lock
@@ -0,0 +1,258 @@
+{
+ "lockfileVersion": 1,
+ "configVersion": 1,
+ "workspaces": {
+ "": {
+ "name": "leadtype-evals",
+ "devDependencies": {
+ "ai": "^6.0.168",
+ "fast-glob": "3.3.3",
+ "vitest": "^2.1.8",
+ "zod": "^3.23.8",
+ },
+ },
+ },
+ "packages": {
+ "@ai-sdk/gateway": ["@ai-sdk/gateway@3.0.112", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27", "@vercel/oidc": "3.2.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-jiBao9pR4owWyjo0BnuNc7WSQBGOD0thysE4AFgZXaG+zMFbISQXUkJr7ePw/phBvePy7jE5FSA2Lf7lwqUiiQ=="],
+
+ "@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="],
+
+ "@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="],
+
+ "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.21.5", "", { "os": "aix", "cpu": "ppc64" }, "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ=="],
+
+ "@esbuild/android-arm": ["@esbuild/android-arm@0.21.5", "", { "os": "android", "cpu": "arm" }, "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg=="],
+
+ "@esbuild/android-arm64": ["@esbuild/android-arm64@0.21.5", "", { "os": "android", "cpu": "arm64" }, "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A=="],
+
+ "@esbuild/android-x64": ["@esbuild/android-x64@0.21.5", "", { "os": "android", "cpu": "x64" }, "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA=="],
+
+ "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.21.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ=="],
+
+ "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.21.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw=="],
+
+ "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.21.5", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g=="],
+
+ "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.21.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ=="],
+
+ "@esbuild/linux-arm": ["@esbuild/linux-arm@0.21.5", "", { "os": "linux", "cpu": "arm" }, "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA=="],
+
+ "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.21.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q=="],
+
+ "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.21.5", "", { "os": "linux", "cpu": "ia32" }, "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg=="],
+
+ "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg=="],
+
+ "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg=="],
+
+ "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.21.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w=="],
+
+ "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA=="],
+
+ "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.21.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A=="],
+
+ "@esbuild/linux-x64": ["@esbuild/linux-x64@0.21.5", "", { "os": "linux", "cpu": "x64" }, "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ=="],
+
+ "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.21.5", "", { "os": "none", "cpu": "x64" }, "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg=="],
+
+ "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.21.5", "", { "os": "openbsd", "cpu": "x64" }, "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow=="],
+
+ "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.21.5", "", { "os": "sunos", "cpu": "x64" }, "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg=="],
+
+ "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.21.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A=="],
+
+ "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.21.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA=="],
+
+ "@esbuild/win32-x64": ["@esbuild/win32-x64@0.21.5", "", { "os": "win32", "cpu": "x64" }, "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw=="],
+
+ "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="],
+
+ "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="],
+
+ "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="],
+
+ "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="],
+
+ "@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="],
+
+ "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.60.3", "", { "os": "android", "cpu": "arm" }, "sha512-x35CNW/ANXG3hE/EZpRU8MXX1JDN86hBb2wMGAtltkz7pc6cxgjpy1OMMfDosOQ+2hWqIkag/fGok1Yady9nGw=="],
+
+ "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.60.3", "", { "os": "android", "cpu": "arm64" }, "sha512-xw3xtkDApIOGayehp2+Rz4zimfkaX65r4t47iy+ymQB2G4iJCBBfj0ogVg5jpvjpn8UWn/+q9tprxleYeNp3Hw=="],
+
+ "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.60.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-vo6Y5Qfpx7/5EaamIwi0WqW2+zfiusVihKatLvtN1VFVy3D13uERk/6gZLU1UiHRL6fDXqj/ELIeVRGnvcTE1g=="],
+
+ "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.60.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-D+0QGcZhBzTN82weOnsSlY7V7+RMmPuF1CkbxyMAGE8+ZHeUjyb76ZiWmBlCu//AQQONvxcqRbwZTajZKqjuOw=="],
+
+ "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.60.3", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-6HnvHCT7fDyj6R0Ph7A6x8dQS/S38MClRWeDLqc0MdfWkxjiu1HSDYrdPhqSILzjTIC/pnXbbJbo+ft+gy/9hQ=="],
+
+ "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.60.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-KHLgC3WKlUYW3ShFKnnosZDOJ0xjg9zp7au3sIm2bs/tGBeC2ipmvRh/N7JKi0t9Ue20C0dpEshi8WUubg+cnA=="],
+
+ "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.60.3", "", { "os": "linux", "cpu": "arm" }, "sha512-DV6fJoxEYWJOvaZIsok7KrYl0tPvga5OZ2yvKHNNYyk/2roMLqQAbGhr78EQ5YhHpnhLKJD3S1WFusAkmUuV5g=="],
+
+ "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.60.3", "", { "os": "linux", "cpu": "arm" }, "sha512-mQKoJAzvuOs6F+TZybQO4GOTSMUu7v0WdxEk24krQ/uUxXoPTtHjuaUuPmFhtBcM4K0ons8nrE3JyhTuCFtT/w=="],
+
+ "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.60.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-Whjj2qoiJ6+OOJMGptTYazaJvjOJm+iKHpXQM1P3LzGjt7Ff++Tp7nH4N8J/BUA7R9IHfDyx4DJIflifwnbmIA=="],
+
+ "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.60.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-4YTNHKqGng5+yiZt3mg77nmyuCfmNfX4fPmyUapBcIk+BdwSwmCWGXOUxhXbBEkFHtoN5boLj/5NON+u5QC9tg=="],
+
+ "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.60.3", "", { "os": "linux", "cpu": "none" }, "sha512-SU3kNlhkpI4UqlUc2VXPGK9o886ZsSeGfMAX2ba2b8DKmMXq4AL7KUrkSWVbb7koVqx41Yczx6dx5PNargIrEA=="],
+
+ "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.60.3", "", { "os": "linux", "cpu": "none" }, "sha512-6lDLl5h4TXpB1mTf2rQWnAk/LcXrx9vBfu/DT5TIPhvMhRWaZ5MxkIc8u4lJAmBo6klTe1ywXIUHFjylW505sg=="],
+
+ "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.60.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-BMo8bOw8evlup/8G+cj5xWtPyp93xPdyoSN16Zy90Q2QZ0ZYRhCt6ZJSwbrRzG9HApFabjwj2p25TUPDWrhzqQ=="],
+
+ "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.60.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-E0L8X1dZN1/Rph+5VPF6Xj2G7JJvMACVXtamTJIDrVI44Y3K+G8gQaMEAavbqCGTa16InptiVrX6eM6pmJ+7qA=="],
+
+ "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.60.3", "", { "os": "linux", "cpu": "none" }, "sha512-oZJ/WHaVfHUiRAtmTAeo3DcevNsVvH8mbvodjZy7D5QKvCefO371SiKRpxoDcCxB3PTRTLayWBkvmDQKTcX/sw=="],
+
+ "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.60.3", "", { "os": "linux", "cpu": "none" }, "sha512-Dhbyh7j9FybM3YaTgaHmVALwA8AkUwTPccyCQ79TG9AJUsMQqgN1DDEZNr4+QUfwiWvLDumW5vdwzoeUF+TNxQ=="],
+
+ "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.60.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-cJd1X5XhHHlltkaypz1UcWLA8AcoIi1aWhsvaWDskD1oz2eKCypnqvTQ8ykMNI0RSmm7NkTdSqSSD7zM0xa6Ig=="],
+
+ "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.60.3", "", { "os": "linux", "cpu": "x64" }, "sha512-DAZDBHQfG2oQuhY7mc6I3/qB4LU2fQCjRvxbDwd/Jdvb9fypP4IJ4qmtu6lNjes6B531AI8cg1aKC2di97bUxA=="],
+
+ "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.60.3", "", { "os": "linux", "cpu": "x64" }, "sha512-cRxsE8c13mZOh3vP+wLDxpQBRrOHDIGOWyDL93Sy0Ga8y515fBcC2pjUfFwUe5T7tqvTvWbCpg1URM/AXdWIXA=="],
+
+ "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.60.3", "", { "os": "openbsd", "cpu": "x64" }, "sha512-QaWcIgRxqEdQdhJqW4DJctsH6HCmo5vHxY0krHSX4jMtOqfzC+dqDGuHM87bu4H8JBeibWx7jFz+h6/4C8wA5Q=="],
+
+ "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.60.3", "", { "os": "none", "cpu": "arm64" }, "sha512-AaXwSvUi3QIPtroAUw1t5yHGIyqKEXwH54WUocFolZhpGDruJcs8c+xPNDRn4XiQsS7MEwnYsHW2l0MBLDMkWg=="],
+
+ "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.60.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-65LAKM/bAWDqKNEelHlcHvm2V+Vfb8C6INFxQXRHCvaVN1rJfwr4NvdP4FyzUaLqWfaCGaadf6UbTm8xJeYfEg=="],
+
+ "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.60.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-EEM2gyhBF5MFnI6vMKdX1LAosE627RGBzIoGMdLloPZkXrUN0Ckqgr2Qi8+J3zip/8NVVro3/FjB+tjhZUgUHA=="],
+
+ "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.60.3", "", { "os": "win32", "cpu": "x64" }, "sha512-E5Eb5H/DpxaoXH++Qkv28RcUJboMopmdDUALBczvHMf7hNIxaDZqwY5lK12UK1BHacSmvupoEWGu+n993Z0y1A=="],
+
+ "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.60.3", "", { "os": "win32", "cpu": "x64" }, "sha512-hPt/bgL5cE+Qp+/TPHBqptcAgPzgj46mPcg/16zNUmbQk0j+mOEQV/+Lqu8QRtDV3Ek95Q6FeFITpuhl6OTsAA=="],
+
+ "@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="],
+
+ "@types/estree": ["@types/estree@1.0.9", "", {}, "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg=="],
+
+ "@types/node": ["@types/node@25.6.2", "", { "dependencies": { "undici-types": "~7.19.0" } }, "sha512-sokuT28dxf9JT5Kady1fsXOvI4HVpjZa95NKT5y9PNTIrs2AsobR4GFAA90ZG8M+nxVRLysCXsVj6eGC7Vbrlw=="],
+
+ "@vercel/oidc": ["@vercel/oidc@3.2.0", "", {}, "sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug=="],
+
+ "@vitest/expect": ["@vitest/expect@2.1.9", "", { "dependencies": { "@vitest/spy": "2.1.9", "@vitest/utils": "2.1.9", "chai": "^5.1.2", "tinyrainbow": "^1.2.0" } }, "sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw=="],
+
+ "@vitest/mocker": ["@vitest/mocker@2.1.9", "", { "dependencies": { "@vitest/spy": "2.1.9", "estree-walker": "^3.0.3", "magic-string": "^0.30.12" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^5.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg=="],
+
+ "@vitest/pretty-format": ["@vitest/pretty-format@2.1.9", "", { "dependencies": { "tinyrainbow": "^1.2.0" } }, "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ=="],
+
+ "@vitest/runner": ["@vitest/runner@2.1.9", "", { "dependencies": { "@vitest/utils": "2.1.9", "pathe": "^1.1.2" } }, "sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g=="],
+
+ "@vitest/snapshot": ["@vitest/snapshot@2.1.9", "", { "dependencies": { "@vitest/pretty-format": "2.1.9", "magic-string": "^0.30.12", "pathe": "^1.1.2" } }, "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ=="],
+
+ "@vitest/spy": ["@vitest/spy@2.1.9", "", { "dependencies": { "tinyspy": "^3.0.2" } }, "sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ=="],
+
+ "@vitest/utils": ["@vitest/utils@2.1.9", "", { "dependencies": { "@vitest/pretty-format": "2.1.9", "loupe": "^3.1.2", "tinyrainbow": "^1.2.0" } }, "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ=="],
+
+ "ai": ["ai@6.0.177", "", { "dependencies": { "@ai-sdk/gateway": "3.0.112", "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27", "@opentelemetry/api": "1.9.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-1xQtbeWwNcLyyM86ixZhkKvT+WRXc1lvarIKqPVtsyn8F9NDikwUMBqYu+aQKDgMht50SMXh4qboYuU8MeHZZA=="],
+
+ "assertion-error": ["assertion-error@2.0.1", "", {}, "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA=="],
+
+ "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="],
+
+ "cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="],
+
+ "chai": ["chai@5.3.3", "", { "dependencies": { "assertion-error": "^2.0.1", "check-error": "^2.1.1", "deep-eql": "^5.0.1", "loupe": "^3.1.0", "pathval": "^2.0.0" } }, "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw=="],
+
+ "check-error": ["check-error@2.1.3", "", {}, "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA=="],
+
+ "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
+
+ "deep-eql": ["deep-eql@5.0.2", "", {}, "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q=="],
+
+ "es-module-lexer": ["es-module-lexer@1.7.0", "", {}, "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA=="],
+
+ "esbuild": ["esbuild@0.21.5", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.21.5", "@esbuild/android-arm": "0.21.5", "@esbuild/android-arm64": "0.21.5", "@esbuild/android-x64": "0.21.5", "@esbuild/darwin-arm64": "0.21.5", "@esbuild/darwin-x64": "0.21.5", "@esbuild/freebsd-arm64": "0.21.5", "@esbuild/freebsd-x64": "0.21.5", "@esbuild/linux-arm": "0.21.5", "@esbuild/linux-arm64": "0.21.5", "@esbuild/linux-ia32": "0.21.5", "@esbuild/linux-loong64": "0.21.5", "@esbuild/linux-mips64el": "0.21.5", "@esbuild/linux-ppc64": "0.21.5", "@esbuild/linux-riscv64": "0.21.5", "@esbuild/linux-s390x": "0.21.5", "@esbuild/linux-x64": "0.21.5", "@esbuild/netbsd-x64": "0.21.5", "@esbuild/openbsd-x64": "0.21.5", "@esbuild/sunos-x64": "0.21.5", "@esbuild/win32-arm64": "0.21.5", "@esbuild/win32-ia32": "0.21.5", "@esbuild/win32-x64": "0.21.5" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw=="],
+
+ "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="],
+
+ "eventsource-parser": ["eventsource-parser@3.0.8", "", {}, "sha512-70QWGkr4snxr0OXLRWsFLeRBIRPuQOvt4s8QYjmUlmlkyTZkRqS7EDVRZtzU3TiyDbXSzaOeF0XUKy8PchzukQ=="],
+
+ "expect-type": ["expect-type@1.3.0", "", {}, "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA=="],
+
+ "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="],
+
+ "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="],
+
+ "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="],
+
+ "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
+
+ "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
+
+ "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="],
+
+ "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="],
+
+ "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="],
+
+ "json-schema": ["json-schema@0.4.0", "", {}, "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="],
+
+ "loupe": ["loupe@3.2.1", "", {}, "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ=="],
+
+ "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="],
+
+ "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="],
+
+ "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="],
+
+ "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
+
+ "nanoid": ["nanoid@3.3.12", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ=="],
+
+ "pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="],
+
+ "pathval": ["pathval@2.0.1", "", {}, "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ=="],
+
+ "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
+
+ "picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="],
+
+ "postcss": ["postcss@8.5.14", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg=="],
+
+ "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="],
+
+ "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="],
+
+ "rollup": ["rollup@4.60.3", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.60.3", "@rollup/rollup-android-arm64": "4.60.3", "@rollup/rollup-darwin-arm64": "4.60.3", "@rollup/rollup-darwin-x64": "4.60.3", "@rollup/rollup-freebsd-arm64": "4.60.3", "@rollup/rollup-freebsd-x64": "4.60.3", "@rollup/rollup-linux-arm-gnueabihf": "4.60.3", "@rollup/rollup-linux-arm-musleabihf": "4.60.3", "@rollup/rollup-linux-arm64-gnu": "4.60.3", "@rollup/rollup-linux-arm64-musl": "4.60.3", "@rollup/rollup-linux-loong64-gnu": "4.60.3", "@rollup/rollup-linux-loong64-musl": "4.60.3", "@rollup/rollup-linux-ppc64-gnu": "4.60.3", "@rollup/rollup-linux-ppc64-musl": "4.60.3", "@rollup/rollup-linux-riscv64-gnu": "4.60.3", "@rollup/rollup-linux-riscv64-musl": "4.60.3", "@rollup/rollup-linux-s390x-gnu": "4.60.3", "@rollup/rollup-linux-x64-gnu": "4.60.3", "@rollup/rollup-linux-x64-musl": "4.60.3", "@rollup/rollup-openbsd-x64": "4.60.3", "@rollup/rollup-openharmony-arm64": "4.60.3", "@rollup/rollup-win32-arm64-msvc": "4.60.3", "@rollup/rollup-win32-ia32-msvc": "4.60.3", "@rollup/rollup-win32-x64-gnu": "4.60.3", "@rollup/rollup-win32-x64-msvc": "4.60.3", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-pAQK9HalE84QSm4Po3EmWIZPd3FnjkShVkiMlz1iligWYkWQ7wHYd1PF/T7QZ5TVSD6uSTon5gBVMSM4JfBV+A=="],
+
+ "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="],
+
+ "siginfo": ["siginfo@2.0.0", "", {}, "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g=="],
+
+ "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
+
+ "stackback": ["stackback@0.0.2", "", {}, "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw=="],
+
+ "std-env": ["std-env@3.10.0", "", {}, "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg=="],
+
+ "tinybench": ["tinybench@2.9.0", "", {}, "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg=="],
+
+ "tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="],
+
+ "tinypool": ["tinypool@1.1.1", "", {}, "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg=="],
+
+ "tinyrainbow": ["tinyrainbow@1.2.0", "", {}, "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ=="],
+
+ "tinyspy": ["tinyspy@3.0.2", "", {}, "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q=="],
+
+ "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="],
+
+ "undici-types": ["undici-types@7.19.2", "", {}, "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg=="],
+
+ "vite": ["vite@5.4.21", "", { "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", "rollup": "^4.20.0" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || >=20.0.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.4.0" }, "optionalPeers": ["@types/node", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser"], "bin": { "vite": "bin/vite.js" } }, "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw=="],
+
+ "vite-node": ["vite-node@2.1.9", "", { "dependencies": { "cac": "^6.7.14", "debug": "^4.3.7", "es-module-lexer": "^1.5.4", "pathe": "^1.1.2", "vite": "^5.0.0" }, "bin": { "vite-node": "vite-node.mjs" } }, "sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA=="],
+
+ "vitest": ["vitest@2.1.9", "", { "dependencies": { "@vitest/expect": "2.1.9", "@vitest/mocker": "2.1.9", "@vitest/pretty-format": "^2.1.9", "@vitest/runner": "2.1.9", "@vitest/snapshot": "2.1.9", "@vitest/spy": "2.1.9", "@vitest/utils": "2.1.9", "chai": "^5.1.2", "debug": "^4.3.7", "expect-type": "^1.1.0", "magic-string": "^0.30.12", "pathe": "^1.1.2", "std-env": "^3.8.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.1", "tinypool": "^1.0.1", "tinyrainbow": "^1.2.0", "vite": "^5.0.0", "vite-node": "2.1.9", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@types/node": "^18.0.0 || >=20.0.0", "@vitest/browser": "2.1.9", "@vitest/ui": "2.1.9", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@types/node", "@vitest/browser", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q=="],
+
+ "why-is-node-running": ["why-is-node-running@2.3.0", "", { "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" } }, "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w=="],
+
+ "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
+
+ "rollup/@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="],
+ }
+}
diff --git a/evals/evals/bundle-own-docs/EVAL.ts b/evals/evals/bundle-own-docs/EVAL.ts
index d9c8a9f..40c21f4 100644
--- a/evals/evals/bundle-own-docs/EVAL.ts
+++ b/evals/evals/bundle-own-docs/EVAL.ts
@@ -1,61 +1,63 @@
import { existsSync, readFileSync } from "node:fs";
-import { expect, test } from "vitest";
-
-type Transcript = {
- o11y: {
- filesRead: string[];
- filesModified: string[];
- shellCommands: { command: string }[];
- } | null;
-};
-
-const transcript = JSON.parse(
- readFileSync("__agent_eval__/results.json", "utf-8")
-) as Transcript;
-
-const filesRead = transcript.o11y?.filesRead ?? [];
-const filesModified = transcript.o11y?.filesModified ?? [];
-const shellCommands = (transcript.o11y?.shellCommands ?? []).map(
- (entry) => entry.command
-);
-
-test("agent read AGENTS.md", () => {
- expect(
- filesRead.some((path) => path.includes("node_modules/leadtype/AGENTS.md"))
- ).toBe(true);
-});
-
-test("agent read the bundle-package-docs guide", () => {
- expect(
- filesRead.some((path) =>
- path.includes("node_modules/leadtype/docs/build/bundle-package-docs.md")
- )
- ).toBe(true);
-});
-
-test("package.json has AGENTS.md in files and a prepack script using --bundle", () => {
- const pkgPath = "__agent_eval__/files/package.json";
- if (!existsSync(pkgPath)) {
- throw new Error(`package.json not copied out: ${pkgPath}`);
- }
- const pkg = JSON.parse(readFileSync(pkgPath, "utf-8")) as {
- files?: string[];
- scripts?: Record;
- };
- expect(pkg.files ?? []).toContain("AGENTS.md");
- const prepack = pkg.scripts?.prepack ?? "";
- expect(prepack).toMatch(/leadtype/);
- expect(prepack).toMatch(/--bundle/);
-});
-
-test("agent ran npm pack --dry-run to verify", () => {
- expect(shellCommands.some((cmd) => /npm pack.*--dry-run/.test(cmd))).toBe(
- true
- );
-});
-
-test("a stub docs/index.mdx was created", () => {
- expect(filesModified.some((path) => path.endsWith("docs/index.mdx"))).toBe(
- true
- );
+import { dirname, resolve } from "node:path";
+import { describe, expect, it } from "vitest";
+import { readTranscript } from "../../lib/transcript";
+
+const transcript = await readTranscript();
+const projectRoot = process.env.TRANSCRIPT_PATH
+ ? resolve(dirname(process.env.TRANSCRIPT_PATH), "..")
+ : "";
+
+const reads = transcript.toolCalls
+ .filter((c) => c.tool === "read")
+ .map((c) => (c.args.path as string) ?? "");
+
+const npmCalls = transcript.toolCalls.filter((c) => c.tool === "npm");
+
+describe("bundle-own-docs", () => {
+ it("agent read AGENTS.md", () => {
+ expect(
+ reads.some((p) => p.includes("node_modules/leadtype/AGENTS.md"))
+ ).toBe(true);
+ });
+
+ it("agent read the bundle-package-docs guide", () => {
+ expect(
+ reads.some((p) =>
+ p.includes("node_modules/leadtype/docs/build/bundle-package-docs.md")
+ )
+ ).toBe(true);
+ });
+
+ it("package.json has AGENTS.md in files and a prepack script using --bundle", () => {
+ const pkgPath = resolve(projectRoot, "package.json");
+ if (!existsSync(pkgPath)) {
+ throw new Error(`package.json not at ${pkgPath}`);
+ }
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf-8")) as {
+ files?: string[];
+ scripts?: Record;
+ };
+ expect(pkg.files ?? []).toContain("AGENTS.md");
+ const prepack = pkg.scripts?.prepack ?? "";
+ expect(prepack).toMatch(/leadtype/);
+ expect(prepack).toMatch(/--bundle/);
+ });
+
+ it("agent ran npm pack --dry-run via the npm tool", () => {
+ expect(
+ npmCalls.some(
+ (c) =>
+ c.args.subcommand === "pack" &&
+ Array.isArray(c.args.args) &&
+ (c.args.args as string[]).includes("--dry-run")
+ )
+ ).toBe(true);
+ });
+
+ it("a stub docs/index.mdx was created", () => {
+ expect(
+ transcript.filesModified.some((p) => p.endsWith("docs/index.mdx"))
+ ).toBe(true);
+ });
});
diff --git a/evals/evals/explain-cli-flag/EVAL.ts b/evals/evals/explain-cli-flag/EVAL.ts
index fa4f421..7c2de34 100644
--- a/evals/evals/explain-cli-flag/EVAL.ts
+++ b/evals/evals/explain-cli-flag/EVAL.ts
@@ -1,39 +1,40 @@
import { existsSync, readFileSync } from "node:fs";
-import { expect, test } from "vitest";
+import { dirname, resolve } from "node:path";
+import { describe, expect, it } from "vitest";
+import { readTranscript } from "../../lib/transcript";
-type Transcript = {
- o11y: {
- filesRead: string[];
- } | null;
-};
+const transcript = await readTranscript();
+const projectRoot = process.env.TRANSCRIPT_PATH
+ ? resolve(dirname(process.env.TRANSCRIPT_PATH), "..")
+ : "";
-const transcript = JSON.parse(
- readFileSync("__agent_eval__/results.json", "utf-8")
-) as Transcript;
+const reads = transcript.toolCalls
+ .filter((c) => c.tool === "read")
+ .map((c) => (c.args.path as string) ?? "");
-const filesRead = transcript.o11y?.filesRead ?? [];
+describe("explain-cli-flag", () => {
+ it("agent read AGENTS.md", () => {
+ expect(
+ reads.some((p) => p.includes("node_modules/leadtype/AGENTS.md"))
+ ).toBe(true);
+ });
-test("agent read AGENTS.md", () => {
- expect(
- filesRead.some((path) => path.includes("node_modules/leadtype/AGENTS.md"))
- ).toBe(true);
-});
-
-test("agent read the CLI reference", () => {
- expect(
- filesRead.some((path) =>
- path.includes("node_modules/leadtype/docs/reference/cli.md")
- )
- ).toBe(true);
-});
+ it("agent read the CLI reference", () => {
+ expect(
+ reads.some((p) =>
+ p.includes("node_modules/leadtype/docs/reference/cli.md")
+ )
+ ).toBe(true);
+ });
-test("answer mentions lastModified and lastAuthor", () => {
- const answerPath = "__agent_eval__/files/ANSWER.md";
- if (!existsSync(answerPath)) {
- throw new Error(`ANSWER.md not produced: ${answerPath}`);
- }
- const answer = readFileSync(answerPath, "utf-8");
- expect(answer).toMatch(/lastModified/);
- expect(answer).toMatch(/lastAuthor/);
- expect(answer).toMatch(/git/i);
+ it("answer mentions lastModified and lastAuthor", () => {
+ const answerPath = resolve(projectRoot, "ANSWER.md");
+ if (!existsSync(answerPath)) {
+ throw new Error(`ANSWER.md not produced at ${answerPath}`);
+ }
+ const answer = readFileSync(answerPath, "utf-8");
+ expect(answer).toMatch(/lastModified/);
+ expect(answer).toMatch(/lastAuthor/);
+ expect(answer).toMatch(/git/i);
+ });
});
diff --git a/evals/evals/validate-in-ci/EVAL.ts b/evals/evals/validate-in-ci/EVAL.ts
index 0824e08..c69e80d 100644
--- a/evals/evals/validate-in-ci/EVAL.ts
+++ b/evals/evals/validate-in-ci/EVAL.ts
@@ -1,52 +1,54 @@
import { existsSync, readFileSync } from "node:fs";
-import { expect, test } from "vitest";
+import { dirname, resolve } from "node:path";
+import { describe, expect, it } from "vitest";
+import { readTranscript } from "../../lib/transcript";
-type Transcript = {
- o11y: {
- filesRead: string[];
- filesModified: string[];
- } | null;
-};
+const transcript = await readTranscript();
+const projectRoot = process.env.TRANSCRIPT_PATH
+ ? resolve(dirname(process.env.TRANSCRIPT_PATH), "..")
+ : "";
-const transcript = JSON.parse(
- readFileSync("__agent_eval__/results.json", "utf-8")
-) as Transcript;
+const reads = transcript.toolCalls
+ .filter((c) => c.tool === "read")
+ .map((c) => (c.args.path as string) ?? "");
-const filesRead = transcript.o11y?.filesRead ?? [];
-const filesModified = transcript.o11y?.filesModified ?? [];
+describe("validate-in-ci", () => {
+ it("agent discovered the bundled AGENTS.md", () => {
+ expect(
+ reads.some((p) => p.includes("node_modules/leadtype/AGENTS.md"))
+ ).toBe(true);
+ });
-test("agent discovered the bundled AGENTS.md", () => {
- const readAgentsMd = filesRead.some((path) =>
- path.includes("node_modules/leadtype/AGENTS.md")
- );
- expect(readAgentsMd).toBe(true);
-});
-
-test("agent read either validate-in-ci or cli reference", () => {
- const readRelevantTopic = filesRead.some(
- (path) =>
- path.includes("node_modules/leadtype/docs/build/validate-in-ci.md") ||
- path.includes("node_modules/leadtype/docs/reference/cli.md")
- );
- expect(readRelevantTopic).toBe(true);
-});
+ it("agent read either validate-in-ci or cli reference", () => {
+ expect(
+ reads.some(
+ (p) =>
+ p.includes("node_modules/leadtype/docs/build/validate-in-ci.md") ||
+ p.includes("node_modules/leadtype/docs/reference/cli.md")
+ )
+ ).toBe(true);
+ });
-test("workflow file was created at the right path", () => {
- expect(
- filesModified.some((path) =>
- path.endsWith(".github/workflows/lint-docs.yml")
- )
- ).toBe(true);
-});
+ it("workflow file was created at the right path", () => {
+ expect(
+ transcript.filesModified.some((p) =>
+ p.endsWith(".github/workflows/lint-docs.yml")
+ )
+ ).toBe(true);
+ });
-test("workflow uses the github format and strict flags", () => {
- const workflowPath = "__agent_eval__/files/.github/workflows/lint-docs.yml";
- if (!existsSync(workflowPath)) {
- throw new Error(`Workflow not copied out of sandbox: ${workflowPath}`);
- }
- const source = readFileSync(workflowPath, "utf-8");
- expect(source).toMatch(/leadtype lint/);
- expect(source).toMatch(/--format\s+github/);
- expect(source).toMatch(/--error-unknown/);
- expect(source).toMatch(/pull_request/);
+ it("workflow uses the github format and strict flags", () => {
+ const workflowPath = resolve(
+ projectRoot,
+ ".github/workflows/lint-docs.yml"
+ );
+ if (!existsSync(workflowPath)) {
+ throw new Error(`workflow not at ${workflowPath}`);
+ }
+ const source = readFileSync(workflowPath, "utf-8");
+ expect(source).toMatch(/leadtype lint/);
+ expect(source).toMatch(/--format\s+github/);
+ expect(source).toMatch(/--error-unknown/);
+ expect(source).toMatch(/pull_request/);
+ });
});
diff --git a/evals/evals/wire-content-negotiation/EVAL.ts b/evals/evals/wire-content-negotiation/EVAL.ts
index 14475dd..05f1d7d 100644
--- a/evals/evals/wire-content-negotiation/EVAL.ts
+++ b/evals/evals/wire-content-negotiation/EVAL.ts
@@ -1,67 +1,56 @@
import { existsSync, readFileSync } from "node:fs";
-import { expect, test } from "vitest";
-
-type Transcript = {
- o11y: {
- filesRead: string[];
- filesModified: string[];
- shellCommands: { command: string }[];
- totalToolCalls: number;
- } | null;
-};
-
-const transcript = JSON.parse(
- readFileSync("__agent_eval__/results.json", "utf-8")
-) as Transcript;
-
-const filesRead = transcript.o11y?.filesRead ?? [];
-const filesModified = transcript.o11y?.filesModified ?? [];
-
-test("agent discovered the bundled AGENTS.md", () => {
- // The discovery signal: did the agent open AGENTS.md before grepping at random?
- const readAgentsMd = filesRead.some((path) =>
- path.includes("node_modules/leadtype/AGENTS.md")
- );
- expect(
- readAgentsMd,
- "agent did not read node_modules/leadtype/AGENTS.md"
- ).toBe(true);
-});
-
-test("agent followed AGENTS.md to the connect-docs-site topic", () => {
- const readTopic = filesRead.some((path) =>
- path.includes("node_modules/leadtype/docs/build/connect-docs-site.md")
- );
- expect(
- readTopic,
- "agent did not read the connect-docs-site topic via AGENTS.md links"
- ).toBe(true);
-});
-
-test("vite.config.ts was modified", () => {
- expect(filesModified.some((path) => path.endsWith("vite.config.ts"))).toBe(
- true
- );
-});
-
-test("middleware sets charset=utf-8", () => {
- // Reading the agent's output: charset must be set explicitly to avoid mojibake.
- // The agent-eval framework copies modified files into __agent_eval__/files/
- // when copyFiles: "changed" is set on the experiment.
- const viteConfigPath = "__agent_eval__/files/vite.config.ts";
- if (!existsSync(viteConfigPath)) {
- throw new Error(
- "vite.config.ts was not copied out of the sandbox; check experiment copyFiles config"
- );
- }
- const source = readFileSync(viteConfigPath, "utf-8");
- expect(source).toMatch(/charset=utf-8/i);
-});
-
-test("middleware rewrites /docs/* paths to .md", () => {
- const viteConfigPath = "__agent_eval__/files/vite.config.ts";
- const source = readFileSync(viteConfigPath, "utf-8");
- expect(source).toMatch(/\/docs/);
- expect(source).toMatch(/\.md/);
- expect(source).toMatch(/text\/(markdown|plain)/i);
+import { dirname, resolve } from "node:path";
+import { describe, expect, it } from "vitest";
+import { readTranscript } from "../../lib/transcript";
+
+const transcript = await readTranscript();
+// TRANSCRIPT_PATH is /__transcript__/transcript.json — the project
+// root (where the agent wrote files) is two levels up from that file.
+const projectRoot = process.env.TRANSCRIPT_PATH
+ ? resolve(dirname(process.env.TRANSCRIPT_PATH), "..")
+ : "";
+
+const reads = transcript.toolCalls
+ .filter((c) => c.tool === "read")
+ .map((c) => (c.args.path as string) ?? "");
+
+describe("wire-content-negotiation", () => {
+ it("agent discovered the bundled AGENTS.md", () => {
+ expect(
+ reads.some((p) => p.includes("node_modules/leadtype/AGENTS.md")),
+ `agent did not read node_modules/leadtype/AGENTS.md (read paths: ${JSON.stringify(reads)})`
+ ).toBe(true);
+ });
+
+ it("agent followed AGENTS.md to the connect-docs-site topic", () => {
+ expect(
+ reads.some((p) =>
+ p.includes("node_modules/leadtype/docs/build/connect-docs-site.md")
+ ),
+ "agent did not read the connect-docs-site topic via AGENTS.md links"
+ ).toBe(true);
+ });
+
+ it("vite.config.ts was modified", () => {
+ expect(
+ transcript.filesModified.some((p) => p.endsWith("vite.config.ts"))
+ ).toBe(true);
+ });
+
+ it("middleware sets charset=utf-8", () => {
+ const viteConfigPath = resolve(projectRoot, "vite.config.ts");
+ if (!existsSync(viteConfigPath)) {
+ throw new Error(`vite.config.ts not at expected path ${viteConfigPath}`);
+ }
+ const source = readFileSync(viteConfigPath, "utf-8");
+ expect(source).toMatch(/charset=utf-8/i);
+ });
+
+ it("middleware rewrites /docs/* paths to .md", () => {
+ const viteConfigPath = resolve(projectRoot, "vite.config.ts");
+ const source = readFileSync(viteConfigPath, "utf-8");
+ expect(source).toMatch(/\/docs/);
+ expect(source).toMatch(/\.md/);
+ expect(source).toMatch(/text\/(markdown|plain)/i);
+ });
});
diff --git a/evals/experiments/bundled-docs-control.ts b/evals/experiments/bundled-docs-control.ts
deleted file mode 100644
index 4cfd9a9..0000000
--- a/evals/experiments/bundled-docs-control.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-import { existsSync, readdirSync } from "node:fs";
-import { join } from "node:path";
-import { fileURLToPath } from "node:url";
-import type { ExperimentConfig } from "@vercel/agent-eval";
-
-const evalsRoot = fileURLToPath(new URL("..", import.meta.url));
-const tarballDir = join(evalsRoot, ".tarballs");
-
-function findLeadtypeTarball(): string {
- if (!existsSync(tarballDir)) {
- throw new Error(
- `Run 'bun run pack-leadtype' before evals — no tarballs at ${tarballDir}`
- );
- }
- const tarball = readdirSync(tarballDir).find(
- (name) => name.startsWith("leadtype-") && name.endsWith(".tgz")
- );
- if (!tarball) {
- throw new Error(`No leadtype-*.tgz found in ${tarballDir}`);
- }
- return join(tarballDir, tarball);
-}
-
-/**
- * Control experiment: leadtype is installed, but AGENTS.md and the docs/
- * directory are stripped immediately after install. The agent has to fall
- * back to its training data, the package's source code, or web search.
- *
- * Pair-compare against bundled-docs.ts — same prompts, same models, same
- * runs — to measure the lift from shipping bundled docs.
- */
-export default {
- agent: "vercel-ai-gateway/claude-code",
- model: ["anthropic/claude-haiku-4-5", "openai/gpt-5.4-mini"],
- runs: 3,
- earlyExit: false,
- evals: [
- "wire-content-negotiation",
- "validate-in-ci",
- "explain-cli-flag",
- "bundle-own-docs",
- ],
- setup: async ({ sandbox }) => {
- const tarball = findLeadtypeTarball();
- await sandbox.writeFile("/leadtype.tgz", tarball);
- await sandbox.run("npm", ["install", "/leadtype.tgz"]);
- // Strip the bundled docs the agent would otherwise discover.
- await sandbox.run("rm", ["-f", "node_modules/leadtype/AGENTS.md"]);
- await sandbox.run("rm", ["-rf", "node_modules/leadtype/docs"]);
- },
- timeout: 300,
- copyFiles: "changed",
-} satisfies ExperimentConfig;
diff --git a/evals/experiments/bundled-docs.ts b/evals/experiments/bundled-docs.ts
deleted file mode 100644
index cbd83eb..0000000
--- a/evals/experiments/bundled-docs.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import { existsSync, readdirSync } from "node:fs";
-import { join } from "node:path";
-import { fileURLToPath } from "node:url";
-import type { ExperimentConfig } from "@vercel/agent-eval";
-
-const evalsRoot = fileURLToPath(new URL("..", import.meta.url));
-const tarballDir = join(evalsRoot, ".tarballs");
-
-function findLeadtypeTarball(): string {
- if (!existsSync(tarballDir)) {
- throw new Error(
- `Run 'bun run pack-leadtype' before evals — no tarballs at ${tarballDir}`
- );
- }
- const tarball = readdirSync(tarballDir).find(
- (name) => name.startsWith("leadtype-") && name.endsWith(".tgz")
- );
- if (!tarball) {
- throw new Error(`No leadtype-*.tgz found in ${tarballDir}`);
- }
- return join(tarballDir, tarball);
-}
-
-/**
- * Treatment experiment: leadtype is installed in the sandbox exactly like an
- * end user would see it. AGENTS.md and docs/*.md are present at
- * node_modules/leadtype/.
- *
- * The control experiment (bundled-docs-control.ts) is identical except it
- * deletes those files post-install. The delta between the two pass rates is
- * the discoverability lift from shipping AGENTS.md.
- */
-export default {
- agent: "vercel-ai-gateway/claude-code",
- model: ["anthropic/claude-haiku-4-5", "openai/gpt-5.4-mini"],
- runs: 3,
- earlyExit: false,
- evals: [
- "wire-content-negotiation",
- "validate-in-ci",
- "explain-cli-flag",
- "bundle-own-docs",
- ],
- setup: async ({ sandbox }) => {
- const tarball = findLeadtypeTarball();
- await sandbox.writeFile("/leadtype.tgz", tarball);
- await sandbox.run("npm", ["install", "/leadtype.tgz"]);
- },
- timeout: 300,
- copyFiles: "changed",
-} satisfies ExperimentConfig;
diff --git a/evals/lib/sandbox.ts b/evals/lib/sandbox.ts
new file mode 100644
index 0000000..a27f5ca
--- /dev/null
+++ b/evals/lib/sandbox.ts
@@ -0,0 +1,97 @@
+import { spawn } from "node:child_process";
+import { existsSync, readdirSync } from "node:fs";
+import { cp, mkdtemp, rm } from "node:fs/promises";
+import { tmpdir } from "node:os";
+import path from "node:path";
+import { fileURLToPath } from "node:url";
+import type { Mode } from "./transcript";
+
+const evalsRoot = fileURLToPath(new URL("..", import.meta.url));
+
+export function findLeadtypeTarball(): string {
+ const tarballDir = path.join(evalsRoot, ".tarballs");
+ if (!existsSync(tarballDir)) {
+ throw new Error(
+ `Run 'bun run pack-leadtype' before evals — no tarballs at ${tarballDir}`
+ );
+ }
+ const tarball = readdirSync(tarballDir).find(
+ (name) => name.startsWith("leadtype-") && name.endsWith(".tgz")
+ );
+ if (!tarball) {
+ throw new Error(`No leadtype-*.tgz found in ${tarballDir}`);
+ }
+ return path.join(tarballDir, tarball);
+}
+
+export type SandboxHandle = {
+ tempDir: string;
+ cleanup: () => Promise;
+};
+
+/**
+ * Create a tempdir, copy the fixture's starter files in (PROMPT.md and
+ * EVAL.ts are excluded — they belong to the harness, not the agent's
+ * project), `npm install` the leadtype tarball, and (in control mode)
+ * strip the bundled docs the agent would otherwise discover.
+ */
+export async function createSandbox(options: {
+ fixtureDir: string;
+ mode: Mode;
+}): Promise {
+ const { fixtureDir, mode } = options;
+ const tempDir = await mkdtemp(path.join(tmpdir(), "leadtype-eval-"));
+
+ await cp(fixtureDir, tempDir, {
+ recursive: true,
+ filter: (src) => {
+ const base = path.basename(src);
+ return base !== "PROMPT.md" && base !== "EVAL.ts";
+ },
+ });
+
+ const tarball = findLeadtypeTarball();
+ await npmInstall(tempDir, tarball);
+
+ if (mode === "control") {
+ await rm(path.join(tempDir, "node_modules", "leadtype", "AGENTS.md"), {
+ force: true,
+ });
+ await rm(path.join(tempDir, "node_modules", "leadtype", "docs"), {
+ force: true,
+ recursive: true,
+ });
+ }
+
+ return {
+ tempDir,
+ cleanup: async () => {
+ await rm(tempDir, { recursive: true, force: true });
+ },
+ };
+}
+
+function npmInstall(tempDir: string, tarball: string): Promise {
+ return new Promise((resolveSpawn, rejectSpawn) => {
+ const proc = spawn("npm", ["install", tarball], {
+ cwd: tempDir,
+ env: {
+ PATH: process.env.PATH ?? "/usr/bin:/bin",
+ NPM_CONFIG_LOGLEVEL: "error",
+ HOME: tempDir,
+ },
+ });
+ let stderr = "";
+ proc.stderr.on("data", (b) => {
+ stderr += b.toString();
+ });
+ proc.on("error", rejectSpawn);
+ proc.on("close", (code) => {
+ if (code === 0) {
+ resolveSpawn();
+ } else {
+ rejectSpawn(new Error(`npm install exited ${code}\n${stderr}`));
+ }
+ });
+ });
+}
diff --git a/evals/lib/tools.test.ts b/evals/lib/tools.test.ts
new file mode 100644
index 0000000..a592dfc
--- /dev/null
+++ b/evals/lib/tools.test.ts
@@ -0,0 +1,100 @@
+import { mkdtemp, rm, writeFile } from "node:fs/promises";
+import { tmpdir } from "node:os";
+import path from "node:path";
+import { afterEach, beforeEach, describe, expect, it } from "vitest";
+import { resolveScoped, scopedTools } from "./tools";
+import type { ToolCall } from "./transcript";
+
+let tempDir: string;
+
+beforeEach(async () => {
+ tempDir = await mkdtemp(path.join(tmpdir(), "tools-test-"));
+});
+
+afterEach(async () => {
+ await rm(tempDir, { force: true, recursive: true });
+});
+
+describe("resolveScoped", () => {
+ it("resolves a relative path inside the tempdir", () => {
+ const result = resolveScoped(tempDir, "subdir/file.txt");
+ expect(result).toBe(path.join(tempDir, "subdir", "file.txt"));
+ });
+
+ it("treats an absolute-looking path as relative to the tempdir", () => {
+ const result = resolveScoped(tempDir, "/some/file.txt");
+ expect(result).toBe(path.join(tempDir, "some", "file.txt"));
+ });
+
+ it("rejects ../../ traversal that escapes the root", () => {
+ expect(() => resolveScoped(tempDir, "../../../etc/passwd")).toThrow(
+ /path escape rejected/
+ );
+ });
+
+ it("rejects subdir/../.. style escapes", () => {
+ expect(() => resolveScoped(tempDir, "subdir/../..")).toThrow(
+ /path escape rejected/
+ );
+ });
+
+ it("rejects an empty path", () => {
+ expect(() => resolveScoped(tempDir, "")).toThrow(/path is required/);
+ });
+
+ it("allows the tempdir root itself", () => {
+ expect(resolveScoped(tempDir, ".")).toBe(path.resolve(tempDir));
+ });
+});
+
+describe("read tool", () => {
+ it("reads a file inside the tempdir and records the call", async () => {
+ await writeFile(path.join(tempDir, "hello.txt"), "world");
+ const transcript: ToolCall[] = [];
+ const filesModified = new Set();
+ const tools = scopedTools({ tempDir, transcript, filesModified });
+
+ const result = await tools.read.execute(
+ { path: "hello.txt" },
+ { toolCallId: "t1", messages: [] }
+ );
+
+ expect(result).toBe("world");
+ expect(transcript).toHaveLength(1);
+ expect(transcript[0]?.tool).toBe("read");
+ expect(transcript[0]?.args.path).toBe("hello.txt");
+ });
+
+ it("rejects a path that escapes the tempdir", async () => {
+ const transcript: ToolCall[] = [];
+ const filesModified = new Set();
+ const tools = scopedTools({ tempDir, transcript, filesModified });
+
+ await expect(
+ tools.read.execute(
+ { path: "../../../etc/passwd" },
+ { toolCallId: "t2", messages: [] }
+ )
+ ).rejects.toThrow(/path escape rejected/);
+ // Failed call is still recorded with an error summary.
+ expect(transcript).toHaveLength(1);
+ expect(transcript[0]?.resultSummary).toMatch(/error: path escape/);
+ });
+});
+
+describe("write tool", () => {
+ it("writes a file under the tempdir and tracks it in filesModified", async () => {
+ const transcript: ToolCall[] = [];
+ const filesModified = new Set();
+ const tools = scopedTools({ tempDir, transcript, filesModified });
+
+ await tools.write.execute(
+ { path: "out/sub/note.md", content: "hi" },
+ { toolCallId: "t3", messages: [] }
+ );
+
+ expect(filesModified.has("out/sub/note.md")).toBe(true);
+ expect(transcript).toHaveLength(1);
+ expect(transcript[0]?.tool).toBe("write");
+ });
+});
diff --git a/evals/lib/tools.ts b/evals/lib/tools.ts
new file mode 100644
index 0000000..5f1917c
--- /dev/null
+++ b/evals/lib/tools.ts
@@ -0,0 +1,342 @@
+import { spawn } from "node:child_process";
+import { mkdir, readdir, readFile, writeFile } from "node:fs/promises";
+import path from "node:path";
+import { tool } from "ai";
+import fg from "fast-glob";
+import { z } from "zod";
+import type { ToolCall } from "./transcript";
+
+const RESULT_SUMMARY_LIMIT = 200;
+
+/**
+ * Resolve an agent-supplied path inside the eval tempdir, rejecting any
+ * path that escapes the root. Treats absolute-looking paths as relative
+ * to the tempdir (strips leading slashes) so the agent can't reach
+ * `/etc/passwd` or `/Users/...` regardless of how it phrases the request.
+ */
+export function resolveScoped(tempDir: string, requested: string): string {
+ if (typeof requested !== "string" || requested.length === 0) {
+ throw new Error("path is required");
+ }
+ const cleaned = requested.replace(/^\/+/, "");
+ const resolved = path.resolve(tempDir, cleaned);
+ const root = path.resolve(tempDir);
+ // Allow exactly the root; require everything else to start with `/`.
+ if (resolved !== root && !resolved.startsWith(root + path.sep)) {
+ throw new Error(`path escape rejected: ${requested}`);
+ }
+ return resolved;
+}
+
+function summarize(value: string): string {
+ return value.length > RESULT_SUMMARY_LIMIT
+ ? `${value.slice(0, RESULT_SUMMARY_LIMIT)}…`
+ : value;
+}
+
+type ToolCtx = {
+ tempDir: string;
+ transcript: ToolCall[];
+ filesModified: Set;
+};
+
+async function recorded(
+ ctx: ToolCtx,
+ toolName: ToolCall["tool"],
+ args: Record,
+ fn: () => Promise,
+ summarizeResult?: (value: T) => string
+): Promise {
+ const start = Date.now();
+ let result: T;
+ let summary: string | undefined;
+ let errorMessage: string | undefined;
+ try {
+ result = await fn();
+ summary = summarizeResult ? summarizeResult(result) : undefined;
+ } catch (err) {
+ errorMessage = err instanceof Error ? err.message : String(err);
+ throw err;
+ } finally {
+ ctx.transcript.push({
+ tool: toolName,
+ args,
+ resultSummary: errorMessage ? `error: ${errorMessage}` : summary,
+ durationMs: Date.now() - start,
+ });
+ }
+ // biome-ignore lint/style/noNonNullAssertion: result is set unless the catch threw, and that throw rethrows
+ return result!;
+}
+
+const NPM_SUBCOMMANDS = new Set(["pack", "install"]);
+const NPM_ARG_PATTERN = /^-/;
+
+const GREP_HIT_LIMIT = 200;
+const TRUNCATION_NOTICE = `…(truncated at ${GREP_HIT_LIMIT} hits)`;
+
+async function grepInScope(opts: {
+ tempDir: string;
+ targetPath: string;
+ pattern: string;
+ flags: string;
+}): Promise {
+ const { tempDir, targetPath, pattern, flags } = opts;
+ const target = resolveScoped(tempDir, targetPath);
+ const re = new RegExp(pattern, flags);
+ const files = await fg("**/*", {
+ cwd: target,
+ absolute: false,
+ dot: false,
+ onlyFiles: true,
+ followSymbolicLinks: false,
+ });
+ const hits: string[] = [];
+ for (const file of files) {
+ const truncated = await collectFileHits({
+ tempDir,
+ target,
+ file,
+ regex: re,
+ hits,
+ });
+ if (truncated) {
+ return hits.join("\n");
+ }
+ }
+ return hits.length === 0 ? "(no matches)" : hits.join("\n");
+}
+
+async function collectFileHits(opts: {
+ tempDir: string;
+ target: string;
+ file: string;
+ regex: RegExp;
+ hits: string[];
+}): Promise {
+ const { tempDir, target, file, regex, hits } = opts;
+ const abs = path.join(target, file);
+ let content: string;
+ try {
+ content = await readFile(abs, "utf-8");
+ } catch {
+ // binary or unreadable file — skip silently.
+ return false;
+ }
+ const rel = path.relative(tempDir, abs).replaceAll(path.sep, "/");
+ const lines = content.split("\n");
+ for (let i = 0; i < lines.length; i++) {
+ if (regex.test(lines[i] ?? "")) {
+ hits.push(`${rel}:${i + 1}: ${lines[i]}`);
+ if (hits.length >= GREP_HIT_LIMIT) {
+ hits.push(TRUNCATION_NOTICE);
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+export function scopedTools(ctx: ToolCtx) {
+ const { tempDir } = ctx;
+ return {
+ read: tool({
+ description:
+ "Read the contents of a file inside the project. Path is resolved relative to the project root. Use this to inspect files like AGENTS.md, README.md, or any source file.",
+ inputSchema: z.object({
+ path: z.string().describe("File path relative to the project root"),
+ }),
+ execute: ({ path: requestedPath }) =>
+ recorded(
+ ctx,
+ "read",
+ { path: requestedPath },
+ async () => {
+ const target = resolveScoped(tempDir, requestedPath);
+ return await readFile(target, "utf-8");
+ },
+ summarize
+ ),
+ }),
+
+ write: tool({
+ description:
+ "Write a file inside the project, creating parent directories as needed. Overwrites existing content.",
+ inputSchema: z.object({
+ path: z.string().describe("File path relative to the project root"),
+ content: z.string().describe("Full file content to write"),
+ }),
+ execute: async ({ path: requestedPath, content }) =>
+ recorded(
+ ctx,
+ "write",
+ { path: requestedPath, contentLength: content.length },
+ async () => {
+ const target = resolveScoped(tempDir, requestedPath);
+ await mkdir(path.dirname(target), { recursive: true });
+ await writeFile(target, content, "utf-8");
+ ctx.filesModified.add(
+ path.relative(tempDir, target).replaceAll(path.sep, "/")
+ );
+ return { bytesWritten: Buffer.byteLength(content, "utf-8") };
+ },
+ (r) => `wrote ${r.bytesWritten} bytes`
+ ),
+ }),
+
+ list: tool({
+ description:
+ "List entries in a directory inside the project. Returns names with type (file or directory).",
+ inputSchema: z.object({
+ path: z
+ .string()
+ .default(".")
+ .describe(
+ "Directory path relative to the project root. Defaults to the root."
+ ),
+ }),
+ execute: ({ path: requestedPath }) =>
+ recorded(
+ ctx,
+ "list",
+ { path: requestedPath },
+ async () => {
+ const target = resolveScoped(tempDir, requestedPath);
+ const entries = await readdir(target, { withFileTypes: true });
+ return entries
+ .map(
+ (e) =>
+ `${e.isDirectory() ? "dir " : "file"} ${e.name}${e.isDirectory() ? "/" : ""}`
+ )
+ .join("\n");
+ },
+ summarize
+ ),
+ }),
+
+ glob: tool({
+ description:
+ "Find files in the project matching a glob pattern. Patterns are evaluated against the project root.",
+ inputSchema: z.object({
+ pattern: z
+ .string()
+ .describe(
+ "fast-glob pattern, e.g. '**/*.md', 'src/**/*.ts', 'node_modules/leadtype/docs/**/*.md'"
+ ),
+ }),
+ execute: ({ pattern }) =>
+ recorded(
+ ctx,
+ "glob",
+ { pattern },
+ async () => {
+ const matches = await fg(pattern, {
+ cwd: tempDir,
+ absolute: false,
+ dot: false,
+ followSymbolicLinks: false,
+ });
+ return matches.join("\n");
+ },
+ summarize
+ ),
+ }),
+
+ grep: tool({
+ description:
+ "Recursively search file contents for a regex inside the project. Returns matching files and lines.",
+ inputSchema: z.object({
+ pattern: z.string().describe("JavaScript regex source (no flags)"),
+ path: z
+ .string()
+ .default(".")
+ .describe(
+ "Subdirectory or file to scope the search to. Defaults to the project root."
+ ),
+ flags: z
+ .string()
+ .default("i")
+ .describe("Regex flags, e.g. 'i' for case-insensitive"),
+ }),
+ execute: ({ pattern, path: requestedPath, flags }) =>
+ recorded(
+ ctx,
+ "grep",
+ { pattern, path: requestedPath, flags },
+ () =>
+ grepInScope({
+ tempDir,
+ targetPath: requestedPath,
+ pattern,
+ flags,
+ }),
+ summarize
+ ),
+ }),
+
+ npm: tool({
+ description:
+ "Run a strict-allowlisted npm subcommand inside the project. Only `pack` and `install` are allowed; arguments must be flag-form (start with '-'). Use this for `npm pack --dry-run` or `npm install`.",
+ inputSchema: z.object({
+ subcommand: z
+ .enum(["pack", "install"])
+ .describe("npm subcommand. Only `pack` and `install` are allowed."),
+ args: z
+ .array(z.string())
+ .default([])
+ .describe(
+ "Additional arguments. Each must start with '-' (flag-form only)."
+ ),
+ }),
+ execute: ({ subcommand, args }) =>
+ recorded(
+ ctx,
+ "npm",
+ { subcommand, args },
+ async () => {
+ if (!NPM_SUBCOMMANDS.has(subcommand)) {
+ throw new Error(`npm subcommand not allowed: ${subcommand}`);
+ }
+ for (const arg of args) {
+ if (!NPM_ARG_PATTERN.test(arg)) {
+ throw new Error(
+ `npm arg must start with '-' (flag-form only): ${arg}`
+ );
+ }
+ }
+ return await new Promise((resolveSpawn, rejectSpawn) => {
+ const proc = spawn("npm", [subcommand, ...args], {
+ cwd: tempDir,
+ env: {
+ PATH: process.env.PATH ?? "/usr/bin:/bin",
+ NPM_CONFIG_LOGLEVEL: "error",
+ HOME: tempDir,
+ },
+ });
+ let stdout = "";
+ let stderr = "";
+ proc.stdout.on("data", (b) => {
+ stdout += b.toString();
+ });
+ proc.stderr.on("data", (b) => {
+ stderr += b.toString();
+ });
+ proc.on("error", rejectSpawn);
+ proc.on("close", (code) => {
+ if (code === 0) {
+ resolveSpawn(stdout || stderr);
+ } else {
+ rejectSpawn(
+ new Error(
+ `npm ${subcommand} exited ${code}\n${stderr || stdout}`
+ )
+ );
+ }
+ });
+ });
+ },
+ summarize
+ ),
+ }),
+ };
+}
diff --git a/evals/lib/transcript.ts b/evals/lib/transcript.ts
new file mode 100644
index 0000000..13296b9
--- /dev/null
+++ b/evals/lib/transcript.ts
@@ -0,0 +1,56 @@
+import { mkdir, readFile, writeFile } from "node:fs/promises";
+import path from "node:path";
+
+export type ToolCall = {
+ tool: "read" | "write" | "list" | "glob" | "grep" | "npm";
+ args: Record;
+ resultSummary?: string;
+ durationMs: number;
+};
+
+export type Mode = "treatment" | "control";
+export type Provider = "anthropic" | "openai";
+
+export type Transcript = {
+ fixture: string;
+ mode: Mode;
+ agent: { provider: Provider; model: string };
+ toolCalls: ToolCall[];
+ filesModified: string[];
+ finalText: string;
+ durationMs: number;
+ steps: number;
+ errors: string[];
+ tokens: { input: number; output: number };
+};
+
+const TRANSCRIPT_FILENAME = "transcript.json";
+
+export function transcriptPathFor(tempDir: string): string {
+ return path.join(tempDir, "__transcript__", TRANSCRIPT_FILENAME);
+}
+
+export async function writeTranscript(
+ tempDir: string,
+ transcript: Transcript
+): Promise {
+ const target = transcriptPathFor(tempDir);
+ await mkdir(path.dirname(target), { recursive: true });
+ await writeFile(target, `${JSON.stringify(transcript, null, 2)}\n`, "utf-8");
+ return target;
+}
+
+/**
+ * Read the transcript from the path advertised by the harness.
+ * EVAL.ts files use this; they receive TRANSCRIPT_PATH as an env var.
+ */
+export async function readTranscript(): Promise {
+ const fromEnv = process.env.TRANSCRIPT_PATH;
+ if (!fromEnv) {
+ throw new Error(
+ "TRANSCRIPT_PATH env var is not set. EVAL.ts must be run via the harness, which sets it."
+ );
+ }
+ const raw = await readFile(fromEnv, "utf-8");
+ return JSON.parse(raw) as Transcript;
+}
diff --git a/evals/package.json b/evals/package.json
index 026d241..d00acfb 100644
--- a/evals/package.json
+++ b/evals/package.json
@@ -2,15 +2,17 @@
"name": "leadtype-evals",
"version": "0.0.0",
"private": true,
- "description": "Agent discoverability evals for leadtype's bundled docs (AGENTS.md vs no-bundle control).",
+ "description": "Agent discoverability evals for leadtype's bundled docs (AGENTS.md vs no-bundle control). Custom harness on the Vercel AI SDK.",
"type": "module",
"scripts": {
- "evals": "agent-eval",
- "evals:dry": "agent-eval --dry",
- "pack-leadtype": "cd ../packages/leadtype && npm pack --pack-destination ../../evals/.tarballs"
+ "evals": "bun run run-eval.ts",
+ "test": "vitest run lib",
+ "pack-leadtype": "mkdir -p .tarballs && cd ../packages/leadtype && npm pack --pack-destination ../../evals/.tarballs"
},
"devDependencies": {
- "@vercel/agent-eval": "latest",
- "vitest": "^2.1.8"
+ "ai": "^6.0.168",
+ "fast-glob": "3.3.3",
+ "vitest": "^2.1.8",
+ "zod": "^3.23.8"
}
}
diff --git a/evals/run-eval.ts b/evals/run-eval.ts
new file mode 100644
index 0000000..f35c692
--- /dev/null
+++ b/evals/run-eval.ts
@@ -0,0 +1,370 @@
+#!/usr/bin/env bun
+import { spawn } from "node:child_process";
+import { existsSync, readdirSync } from "node:fs";
+import { readFile } from "node:fs/promises";
+import path from "node:path";
+import { fileURLToPath } from "node:url";
+import { gateway, generateText, stepCountIs } from "ai";
+import { createSandbox } from "./lib/sandbox";
+import { scopedTools } from "./lib/tools";
+import {
+ type Mode,
+ type Provider,
+ type ToolCall,
+ type Transcript,
+ transcriptPathFor,
+ writeTranscript,
+} from "./lib/transcript";
+
+const evalsRoot = fileURLToPath(new URL(".", import.meta.url));
+const fixturesRoot = path.join(evalsRoot, "evals");
+
+const SYSTEM_PROMPT = `You are an expert coding agent working inside a project that depends on the npm package \`leadtype\`. The project root is your working directory; every tool path is relative to it. You have a small set of tools — read, write, list, glob, grep, and a narrow npm tool that supports only \`pack\` and \`install\`. There is no shell.
+
+Solve the user's task as you normally would: explore relevant files first, then make the changes. When the task asks you to verify a result (e.g. with \`npm pack --dry-run\`), use the npm tool. When you are done, write a short final summary describing what you did.`;
+
+const STEP_LIMIT = 50;
+
+type CliArgs = {
+ fixture?: string;
+ mode?: Mode;
+ model: string;
+ runs: number;
+};
+
+function parseArgs(argv: string[]): CliArgs {
+ const args: CliArgs = { model: "claude-haiku-4-5", runs: 1 };
+ let i = 0;
+ while (i < argv.length) {
+ const a = argv[i];
+ i++;
+ if (a === "--fixture") {
+ args.fixture = argv[i++];
+ } else if (a === "--mode") {
+ const v = argv[i++];
+ if (v !== "treatment" && v !== "control") {
+ throw new Error(`--mode must be treatment|control, got ${v}`);
+ }
+ args.mode = v;
+ } else if (a === "--model") {
+ args.model = argv[i++] ?? args.model;
+ } else if (a === "--runs") {
+ args.runs = Number.parseInt(argv[i++] ?? "1", 10);
+ } else if (a === "--help" || a === "-h") {
+ printUsage();
+ process.exit(0);
+ } else if (a) {
+ throw new Error(`unknown flag: ${a}`);
+ }
+ }
+ return args;
+}
+
+function printUsage(): void {
+ process.stdout.write(`Usage: bun run run-eval.ts [options]
+
+Options:
+ --fixture Run only one fixture (default: all)
+ --mode Run only one mode: treatment|control (default: both)
+ --model Model id, e.g. claude-haiku-4-5, claude-opus-4-7,
+ gpt-5.5 (default: claude-haiku-4-5)
+ --runs Repetitions per (fixture × mode) combo (default: 1)
+ -h, --help Show this help
+`);
+}
+
+function discoverFixtures(): string[] {
+ if (!existsSync(fixturesRoot)) {
+ return [];
+ }
+ return readdirSync(fixturesRoot, { withFileTypes: true })
+ .filter((d) => d.isDirectory())
+ .map((d) => d.name)
+ .filter((name) => existsSync(path.join(fixturesRoot, name, "PROMPT.md")))
+ .sort();
+}
+
+function namespaceModelId(modelId: string): string {
+ if (modelId.includes("/")) {
+ return modelId;
+ }
+ if (modelId.startsWith("gpt-")) {
+ return `openai/${modelId}`;
+ }
+ return `anthropic/${modelId}`;
+}
+
+function getModel(modelId: string): {
+ provider: Provider;
+ // biome-ignore lint/suspicious/noExplicitAny: the AI SDK model handle is an opaque shape
+ model: any;
+} {
+ const namespaced = namespaceModelId(modelId);
+ const provider: Provider = namespaced.startsWith("openai/")
+ ? "openai"
+ : "anthropic";
+ return { provider, model: gateway(namespaced) };
+}
+
+type RunResult = {
+ fixture: string;
+ mode: Mode;
+ passed: boolean;
+ durationMs: number;
+ toolCalls: number;
+ discoveredAgentsMd: boolean;
+ evalOutput: string;
+};
+
+async function runOne(options: {
+ fixture: string;
+ mode: Mode;
+ modelId: string;
+ runIndex: number;
+ totalRuns: number;
+}): Promise {
+ const { fixture, mode, modelId, runIndex, totalRuns } = options;
+ const fixtureDir = path.join(fixturesRoot, fixture);
+ const promptText = await readFile(
+ path.join(fixtureDir, "PROMPT.md"),
+ "utf-8"
+ );
+
+ process.stdout.write(
+ `▶ ${fixture} / ${mode} [${runIndex}/${totalRuns}] (${modelId})\n`
+ );
+
+ const sandbox = await createSandbox({ fixtureDir, mode });
+ const start = Date.now();
+
+ const transcriptCalls: ToolCall[] = [];
+ const filesModified = new Set();
+ const tools = scopedTools({
+ tempDir: sandbox.tempDir,
+ transcript: transcriptCalls,
+ filesModified,
+ });
+
+ const { provider, model } = getModel(modelId);
+ const errors: string[] = [];
+ let finalText = "";
+ let steps = 0;
+ let inputTokens = 0;
+ let outputTokens = 0;
+ try {
+ const result = await generateText({
+ model,
+ system: SYSTEM_PROMPT,
+ prompt: promptText,
+ tools,
+ stopWhen: stepCountIs(STEP_LIMIT),
+ });
+ finalText = result.text ?? "";
+ steps = result.steps?.length ?? 0;
+ inputTokens = result.usage?.inputTokens ?? 0;
+ outputTokens = result.usage?.outputTokens ?? 0;
+ } catch (err) {
+ errors.push(err instanceof Error ? err.message : String(err));
+ }
+
+ const durationMs = Date.now() - start;
+ const transcript: Transcript = {
+ fixture,
+ mode,
+ agent: { provider, model: modelId },
+ toolCalls: transcriptCalls,
+ filesModified: [...filesModified].sort(),
+ finalText,
+ durationMs,
+ steps,
+ errors,
+ tokens: { input: inputTokens, output: outputTokens },
+ };
+ await writeTranscript(sandbox.tempDir, transcript);
+
+ const evalResult = await runVitest(fixture, sandbox.tempDir);
+
+ const discoveredAgentsMd = transcriptCalls.some((c) => {
+ if (c.tool !== "read") {
+ return false;
+ }
+ const p = (c.args.path as string | undefined) ?? "";
+ return p.includes("node_modules/leadtype/AGENTS.md");
+ });
+
+ process.stdout.write(
+ ` ${evalResult.passed ? "✓" : "✗"} ${(durationMs / 1000).toFixed(1)}s · ${transcriptCalls.length} tool calls · ${inputTokens}in/${outputTokens}out${
+ discoveredAgentsMd ? " · read AGENTS.md" : ""
+ }\n`
+ );
+ if (errors.length > 0) {
+ for (const e of errors) {
+ process.stdout.write(` ! ${e}\n`);
+ }
+ }
+ if (!evalResult.passed) {
+ // Print just the last chunk of vitest's output — it contains the
+ // assertion error in whatever format vitest is using today.
+ const tailLines = evalResult.output.split("\n").slice(-25).join("\n");
+ process.stdout.write(`${tailLines}\n`);
+ }
+
+ await archiveTranscript({
+ fixture,
+ mode,
+ runIndex,
+ tempDir: sandbox.tempDir,
+ transcript,
+ });
+ await sandbox.cleanup();
+
+ return {
+ fixture,
+ mode,
+ passed: evalResult.passed,
+ durationMs,
+ toolCalls: transcriptCalls.length,
+ discoveredAgentsMd,
+ evalOutput: evalResult.output,
+ };
+}
+
+async function archiveTranscript(opts: {
+ fixture: string;
+ mode: Mode;
+ runIndex: number;
+ tempDir: string;
+ transcript: Transcript;
+}): Promise {
+ const { fixture, mode, runIndex, tempDir, transcript } = opts;
+ const ts = new Date().toISOString().replace(/[.:]/g, "-");
+ const dir = path.join(
+ evalsRoot,
+ "results",
+ fixture,
+ mode,
+ `${ts}-run${runIndex}`
+ );
+ const fs = await import("node:fs/promises");
+ await fs.mkdir(dir, { recursive: true });
+ await fs.writeFile(
+ path.join(dir, "transcript.json"),
+ `${JSON.stringify(transcript, null, 2)}\n`
+ );
+ // Also list the modified files' content snapshots — helpful when an
+ // assertion that reads a file fails.
+ for (const rel of transcript.filesModified) {
+ try {
+ const src = path.join(tempDir, rel);
+ const content = await fs.readFile(src, "utf-8");
+ const dest = path.join(dir, "files", rel);
+ await fs.mkdir(path.dirname(dest), { recursive: true });
+ await fs.writeFile(dest, content);
+ } catch {
+ // Best effort; skip silently if a file vanished.
+ }
+ }
+}
+
+async function runVitest(
+ fixture: string,
+ tempDir: string
+): Promise<{ passed: boolean; output: string }> {
+ const evalFile = path.join(fixturesRoot, fixture, "EVAL.ts");
+ return await new Promise((resolveSpawn) => {
+ const proc = spawn("bun", ["x", "vitest", "run", evalFile], {
+ cwd: evalsRoot,
+ env: {
+ ...process.env,
+ TRANSCRIPT_PATH: transcriptPathFor(tempDir),
+ },
+ });
+ let output = "";
+ proc.stdout.on("data", (b) => {
+ output += b.toString();
+ });
+ proc.stderr.on("data", (b) => {
+ output += b.toString();
+ });
+ proc.on("close", (code) => {
+ resolveSpawn({ passed: code === 0, output });
+ });
+ });
+}
+
+function summarize(results: RunResult[]): void {
+ process.stdout.write("\n══ Summary ══\n");
+ const fixtures = [...new Set(results.map((r) => r.fixture))].sort();
+ process.stdout.write(
+ "fixture treatment control delta discovered AGENTS.md (treatment)\n"
+ );
+ for (const fixture of fixtures) {
+ const t = results.filter(
+ (r) => r.fixture === fixture && r.mode === "treatment"
+ );
+ const c = results.filter(
+ (r) => r.fixture === fixture && r.mode === "control"
+ );
+ const tPass = t.filter((r) => r.passed).length;
+ const cPass = c.filter((r) => r.passed).length;
+ const tDisc = t.filter((r) => r.discoveredAgentsMd).length;
+ const treatmentLabel = t.length > 0 ? `${tPass}/${t.length}` : "—";
+ const controlLabel = c.length > 0 ? `${cPass}/${c.length}` : "—";
+ const delta =
+ t.length > 0 && c.length > 0 ? tPass / t.length - cPass / c.length : 0;
+ const deltaLabel = `${delta >= 0 ? "+" : ""}${(delta * 100).toFixed(0)}%`;
+ const discLabel = t.length > 0 ? `${tDisc}/${t.length}` : "—";
+ process.stdout.write(
+ `${fixture.padEnd(34)}${treatmentLabel.padEnd(12)}${controlLabel.padEnd(10)}${deltaLabel.padEnd(8)}${discLabel}\n`
+ );
+ }
+
+ const totalRuns = results.length;
+ const passed = results.filter((r) => r.passed).length;
+ process.stdout.write(
+ `\nOverall: ${passed}/${totalRuns} passed (${((passed / totalRuns) * 100).toFixed(0)}%)\n`
+ );
+}
+
+async function main(): Promise {
+ const args = parseArgs(process.argv.slice(2));
+ const allFixtures = discoverFixtures();
+ if (allFixtures.length === 0) {
+ process.stderr.write(`No fixtures found under ${fixturesRoot}\n`);
+ process.exit(1);
+ }
+ const fixtures = args.fixture
+ ? [args.fixture].filter((f) => allFixtures.includes(f))
+ : allFixtures;
+ if (fixtures.length === 0) {
+ process.stderr.write(`Fixture not found: ${args.fixture}\n`);
+ process.exit(1);
+ }
+ const modes: Mode[] = args.mode ? [args.mode] : ["treatment", "control"];
+
+ const results: RunResult[] = [];
+ for (const fixture of fixtures) {
+ for (const mode of modes) {
+ for (let i = 1; i <= args.runs; i++) {
+ const result = await runOne({
+ fixture,
+ mode,
+ modelId: args.model,
+ runIndex: i,
+ totalRuns: args.runs,
+ });
+ results.push(result);
+ }
+ }
+ }
+ summarize(results);
+ const allPassed = results.every((r) => r.passed);
+ process.exit(allPassed ? 0 : 1);
+}
+
+main().catch((err) => {
+ process.stderr.write(
+ `${err instanceof Error ? (err.stack ?? err.message) : String(err)}\n`
+ );
+ process.exit(1);
+});
From 86eec4e8f842e9cabe7870a568eb4c560e50312f Mon Sep 17 00:00:00 2001
From: Kaylee <65376239+KayleeWilliams@users.noreply.github.com>
Date: Sat, 9 May 2026 09:51:22 -0700
Subject: [PATCH 11/13] Address code review feedback (8 fixes)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- site-header markdownHrefForPath: normalize trailing slash before checking
the /docs root so /docs/ resolves to /docs/index.md instead of /docs.md.
- biome.jsonc: refresh stale @vercel/agent-eval comment to reflect the
custom AI SDK harness that replaced it.
- how-it-works "What runs when": rewrite the step list to be mode-agnostic.
Site mode emits llms.txt + llms-full + search index; --bundle emits
AGENTS.md instead. Output dir is conditional on mode, not hardcoded to
public/docs/.
- 4 EVAL.ts files: replace `c.args.path as string ?? ""` with a runtime
typeof guard in the filter so reads only contains real strings.
- wire-content-negotiation/EVAL.ts: extract getViteConfigSource helper to
DRY up two tests that read vite.config.ts the same way.
- evals/lib/sandbox.ts: wrap the cp call in try/catch so failures include
fixtureDir → tempDir context with the original error as cause.
- evals/run-eval.ts (three sub-fixes):
- --runs validates positive integer (extracted parsePositiveInt helper);
--runs 0 / --runs notanumber now error clearly instead of producing
NaN summary math.
- runVitest gains a settle-once guard, an error listener on the spawn,
and a try/catch around spawn() so the promise can't hang on launch
failure.
- sandbox.cleanup() moved into a finally block so the tempdir is removed
even if runVitest or archiveTranscript throws.
- cli.test.ts bundle-mode test: also assert search-content.json is absent
alongside the existing search-index.json check.
Skipped 5 review findings with reasons (see plan file): vite.config.ts
setHeader patch (already correct — bind preserves this, return value
preserved, types narrowed before mutation), connect-docs-site.mdx "github"
capitalization (no plain-text reference exists; only the literal flag
value), PROMPT.md MD041 H1 headings (markdownlint not enforced; would
mutate agent input for no benefit), and two README docs.example.com
placeholders (no production domain registered yet).
Verified: 98/98 leadtype tests pass, 9/9 eval unit tests pass, ultracite
clean, typecheck clean.
---
apps/example/src/components/site-header.tsx | 10 +-
biome.jsonc | 8 +-
docs/how-it-works.mdx | 6 +-
evals/evals/bundle-own-docs/EVAL.ts | 4 +-
evals/evals/explain-cli-flag/EVAL.ts | 4 +-
evals/evals/validate-in-ci/EVAL.ts | 4 +-
evals/evals/wire-content-negotiation/EVAL.ts | 21 +--
evals/lib/sandbox.ts | 22 ++-
evals/run-eval.ts | 147 ++++++++++++-------
packages/leadtype/src/cli.test.ts | 3 +
10 files changed, 142 insertions(+), 87 deletions(-)
diff --git a/apps/example/src/components/site-header.tsx b/apps/example/src/components/site-header.tsx
index b987782..25ca5b8 100644
--- a/apps/example/src/components/site-header.tsx
+++ b/apps/example/src/components/site-header.tsx
@@ -32,16 +32,18 @@ function RobotIcon() {
const TRAILING_SLASH_PATTERN = /\/$/;
function markdownHrefForPath(pathname: string): string | null {
- if (!(pathname === "/docs" || pathname.startsWith("/docs/"))) {
+ // Normalize first so /docs/ falls into the same bucket as /docs.
+ const normalized = pathname.replace(TRAILING_SLASH_PATTERN, "");
+ if (!(normalized === "/docs" || normalized.startsWith("/docs/"))) {
return null;
}
- if (pathname.endsWith(".md")) {
+ if (normalized.endsWith(".md")) {
return null;
}
- if (pathname === "/docs") {
+ if (normalized === "/docs") {
return "/docs/index.md";
}
- return `${pathname.replace(TRAILING_SLASH_PATTERN, "")}.md`;
+ return `${normalized}.md`;
}
export function SiteHeader() {
diff --git a/biome.jsonc b/biome.jsonc
index 9a94d0e..ce57ff0 100644
--- a/biome.jsonc
+++ b/biome.jsonc
@@ -36,10 +36,10 @@
}
},
{
- // @vercel/agent-eval requires fixture files to be named EVAL.ts (uppercase)
- // and PROMPT.md. Eval test files are short, ad-hoc assertions over a
- // transcript — useTopLevelRegex / useConsistentTypeDefinitions don't
- // earn their lint cost here.
+ // Custom AI SDK eval harness. Fixture files use the EVAL.ts /
+ // PROMPT.md naming convention; eval tests are short, ad-hoc
+ // assertions over a transcript JSON, so useTopLevelRegex /
+ // useConsistentTypeDefinitions don't earn their lint cost here.
"includes": ["evals/**"],
"linter": {
"rules": {
diff --git a/docs/how-it-works.mdx b/docs/how-it-works.mdx
index 3cd7aec..357e07b 100644
--- a/docs/how-it-works.mdx
+++ b/docs/how-it-works.mdx
@@ -144,10 +144,10 @@ A few terms you will see throughout the docs.
The `leadtype generate` command runs in a fixed order — each stage depends on the previous one's output:
1. **Parse frontmatter** for every `.mdx` under `docs/`.
-2. **Convert** each file through the [default remark stack](/docs/reference/remark) and write `.md` to `public/docs/`.
+2. **Convert** each file through the [default remark stack](/docs/reference/remark) and write `.md` to the output directory (e.g. `public/docs/` in site mode, `/docs/` with `--bundle`).
3. **Resolve groups** from frontmatter, validate every page's `group:` matches a known slug.
-4. **Generate LLM bundles** by reading the converted markdown and grouping by leaf.
-5. **Build the search index** by chunking the converted markdown.
+4. In **site mode** (default): generate `llms.txt`, the `llms-full/.txt` topic bundles, and the BM25 search index from the converted markdown.
+5. With **`--bundle`**: write `AGENTS.md` at the output root with relative `./docs/.md` links. Skip `llms.txt`, `llms-full*`, and the search index — those are website-only.
If step 3 finds an unknown group, the run fails. That is by design — broken navigation is a content bug, not a render-time problem.
diff --git a/evals/evals/bundle-own-docs/EVAL.ts b/evals/evals/bundle-own-docs/EVAL.ts
index 40c21f4..e49f8ca 100644
--- a/evals/evals/bundle-own-docs/EVAL.ts
+++ b/evals/evals/bundle-own-docs/EVAL.ts
@@ -9,8 +9,8 @@ const projectRoot = process.env.TRANSCRIPT_PATH
: "";
const reads = transcript.toolCalls
- .filter((c) => c.tool === "read")
- .map((c) => (c.args.path as string) ?? "");
+ .filter((c) => c.tool === "read" && typeof c.args.path === "string")
+ .map((c) => c.args.path as string);
const npmCalls = transcript.toolCalls.filter((c) => c.tool === "npm");
diff --git a/evals/evals/explain-cli-flag/EVAL.ts b/evals/evals/explain-cli-flag/EVAL.ts
index 7c2de34..ca9aaea 100644
--- a/evals/evals/explain-cli-flag/EVAL.ts
+++ b/evals/evals/explain-cli-flag/EVAL.ts
@@ -9,8 +9,8 @@ const projectRoot = process.env.TRANSCRIPT_PATH
: "";
const reads = transcript.toolCalls
- .filter((c) => c.tool === "read")
- .map((c) => (c.args.path as string) ?? "");
+ .filter((c) => c.tool === "read" && typeof c.args.path === "string")
+ .map((c) => c.args.path as string);
describe("explain-cli-flag", () => {
it("agent read AGENTS.md", () => {
diff --git a/evals/evals/validate-in-ci/EVAL.ts b/evals/evals/validate-in-ci/EVAL.ts
index c69e80d..7805d6e 100644
--- a/evals/evals/validate-in-ci/EVAL.ts
+++ b/evals/evals/validate-in-ci/EVAL.ts
@@ -9,8 +9,8 @@ const projectRoot = process.env.TRANSCRIPT_PATH
: "";
const reads = transcript.toolCalls
- .filter((c) => c.tool === "read")
- .map((c) => (c.args.path as string) ?? "");
+ .filter((c) => c.tool === "read" && typeof c.args.path === "string")
+ .map((c) => c.args.path as string);
describe("validate-in-ci", () => {
it("agent discovered the bundled AGENTS.md", () => {
diff --git a/evals/evals/wire-content-negotiation/EVAL.ts b/evals/evals/wire-content-negotiation/EVAL.ts
index 05f1d7d..440f55c 100644
--- a/evals/evals/wire-content-negotiation/EVAL.ts
+++ b/evals/evals/wire-content-negotiation/EVAL.ts
@@ -11,8 +11,16 @@ const projectRoot = process.env.TRANSCRIPT_PATH
: "";
const reads = transcript.toolCalls
- .filter((c) => c.tool === "read")
- .map((c) => (c.args.path as string) ?? "");
+ .filter((c) => c.tool === "read" && typeof c.args.path === "string")
+ .map((c) => c.args.path as string);
+
+function getViteConfigSource(): string {
+ const viteConfigPath = resolve(projectRoot, "vite.config.ts");
+ if (!existsSync(viteConfigPath)) {
+ throw new Error(`vite.config.ts not at expected path ${viteConfigPath}`);
+ }
+ return readFileSync(viteConfigPath, "utf-8");
+}
describe("wire-content-negotiation", () => {
it("agent discovered the bundled AGENTS.md", () => {
@@ -38,17 +46,12 @@ describe("wire-content-negotiation", () => {
});
it("middleware sets charset=utf-8", () => {
- const viteConfigPath = resolve(projectRoot, "vite.config.ts");
- if (!existsSync(viteConfigPath)) {
- throw new Error(`vite.config.ts not at expected path ${viteConfigPath}`);
- }
- const source = readFileSync(viteConfigPath, "utf-8");
+ const source = getViteConfigSource();
expect(source).toMatch(/charset=utf-8/i);
});
it("middleware rewrites /docs/* paths to .md", () => {
- const viteConfigPath = resolve(projectRoot, "vite.config.ts");
- const source = readFileSync(viteConfigPath, "utf-8");
+ const source = getViteConfigSource();
expect(source).toMatch(/\/docs/);
expect(source).toMatch(/\.md/);
expect(source).toMatch(/text\/(markdown|plain)/i);
diff --git a/evals/lib/sandbox.ts b/evals/lib/sandbox.ts
index a27f5ca..24a3130 100644
--- a/evals/lib/sandbox.ts
+++ b/evals/lib/sandbox.ts
@@ -42,13 +42,21 @@ export async function createSandbox(options: {
const { fixtureDir, mode } = options;
const tempDir = await mkdtemp(path.join(tmpdir(), "leadtype-eval-"));
- await cp(fixtureDir, tempDir, {
- recursive: true,
- filter: (src) => {
- const base = path.basename(src);
- return base !== "PROMPT.md" && base !== "EVAL.ts";
- },
- });
+ try {
+ await cp(fixtureDir, tempDir, {
+ recursive: true,
+ filter: (src) => {
+ const base = path.basename(src);
+ return base !== "PROMPT.md" && base !== "EVAL.ts";
+ },
+ });
+ } catch (err) {
+ const message = err instanceof Error ? err.message : String(err);
+ throw new Error(
+ `Failed to copy fixture ${fixtureDir} → ${tempDir}: ${message}`,
+ { cause: err instanceof Error ? err : undefined }
+ );
+ }
const tarball = findLeadtypeTarball();
await npmInstall(tempDir, tarball);
diff --git a/evals/run-eval.ts b/evals/run-eval.ts
index f35c692..8fb00d6 100644
--- a/evals/run-eval.ts
+++ b/evals/run-eval.ts
@@ -32,6 +32,21 @@ type CliArgs = {
runs: number;
};
+function parsePositiveInt(value: string | undefined, flag: string): number {
+ const parsed = Number.parseInt(value ?? "1", 10);
+ if (!Number.isInteger(parsed) || parsed < 1) {
+ throw new Error(`${flag} must be a positive integer, got ${value}`);
+ }
+ return parsed;
+}
+
+function parseMode(value: string | undefined): Mode {
+ if (value !== "treatment" && value !== "control") {
+ throw new Error(`--mode must be treatment|control, got ${value}`);
+ }
+ return value;
+}
+
function parseArgs(argv: string[]): CliArgs {
const args: CliArgs = { model: "claude-haiku-4-5", runs: 1 };
let i = 0;
@@ -41,15 +56,11 @@ function parseArgs(argv: string[]): CliArgs {
if (a === "--fixture") {
args.fixture = argv[i++];
} else if (a === "--mode") {
- const v = argv[i++];
- if (v !== "treatment" && v !== "control") {
- throw new Error(`--mode must be treatment|control, got ${v}`);
- }
- args.mode = v;
+ args.mode = parseMode(argv[i++]);
} else if (a === "--model") {
args.model = argv[i++] ?? args.model;
} else if (a === "--runs") {
- args.runs = Number.parseInt(argv[i++] ?? "1", 10);
+ args.runs = parsePositiveInt(argv[i++], "--runs");
} else if (a === "--help" || a === "-h") {
printUsage();
process.exit(0);
@@ -182,51 +193,54 @@ async function runOne(options: {
};
await writeTranscript(sandbox.tempDir, transcript);
- const evalResult = await runVitest(fixture, sandbox.tempDir);
+ try {
+ const evalResult = await runVitest(fixture, sandbox.tempDir);
- const discoveredAgentsMd = transcriptCalls.some((c) => {
- if (c.tool !== "read") {
- return false;
- }
- const p = (c.args.path as string | undefined) ?? "";
- return p.includes("node_modules/leadtype/AGENTS.md");
- });
+ const discoveredAgentsMd = transcriptCalls.some((c) => {
+ if (c.tool !== "read") {
+ return false;
+ }
+ const p = (c.args.path as string | undefined) ?? "";
+ return p.includes("node_modules/leadtype/AGENTS.md");
+ });
- process.stdout.write(
- ` ${evalResult.passed ? "✓" : "✗"} ${(durationMs / 1000).toFixed(1)}s · ${transcriptCalls.length} tool calls · ${inputTokens}in/${outputTokens}out${
- discoveredAgentsMd ? " · read AGENTS.md" : ""
- }\n`
- );
- if (errors.length > 0) {
- for (const e of errors) {
- process.stdout.write(` ! ${e}\n`);
+ process.stdout.write(
+ ` ${evalResult.passed ? "✓" : "✗"} ${(durationMs / 1000).toFixed(1)}s · ${transcriptCalls.length} tool calls · ${inputTokens}in/${outputTokens}out${
+ discoveredAgentsMd ? " · read AGENTS.md" : ""
+ }\n`
+ );
+ if (errors.length > 0) {
+ for (const e of errors) {
+ process.stdout.write(` ! ${e}\n`);
+ }
+ }
+ if (!evalResult.passed) {
+ // Print just the last chunk of vitest's output — it contains the
+ // assertion error in whatever format vitest is using today.
+ const tailLines = evalResult.output.split("\n").slice(-25).join("\n");
+ process.stdout.write(`${tailLines}\n`);
}
- }
- if (!evalResult.passed) {
- // Print just the last chunk of vitest's output — it contains the
- // assertion error in whatever format vitest is using today.
- const tailLines = evalResult.output.split("\n").slice(-25).join("\n");
- process.stdout.write(`${tailLines}\n`);
- }
- await archiveTranscript({
- fixture,
- mode,
- runIndex,
- tempDir: sandbox.tempDir,
- transcript,
- });
- await sandbox.cleanup();
+ await archiveTranscript({
+ fixture,
+ mode,
+ runIndex,
+ tempDir: sandbox.tempDir,
+ transcript,
+ });
- return {
- fixture,
- mode,
- passed: evalResult.passed,
- durationMs,
- toolCalls: transcriptCalls.length,
- discoveredAgentsMd,
- evalOutput: evalResult.output,
- };
+ return {
+ fixture,
+ mode,
+ passed: evalResult.passed,
+ durationMs,
+ toolCalls: transcriptCalls.length,
+ discoveredAgentsMd,
+ evalOutput: evalResult.output,
+ };
+ } finally {
+ await sandbox.cleanup();
+ }
}
async function archiveTranscript(opts: {
@@ -272,13 +286,32 @@ async function runVitest(
): Promise<{ passed: boolean; output: string }> {
const evalFile = path.join(fixturesRoot, fixture, "EVAL.ts");
return await new Promise((resolveSpawn) => {
- const proc = spawn("bun", ["x", "vitest", "run", evalFile], {
- cwd: evalsRoot,
- env: {
- ...process.env,
- TRANSCRIPT_PATH: transcriptPathFor(tempDir),
- },
- });
+ let settled = false;
+ const settle = (result: { passed: boolean; output: string }) => {
+ if (settled) {
+ return;
+ }
+ settled = true;
+ resolveSpawn(result);
+ };
+
+ let proc: ReturnType;
+ try {
+ proc = spawn("bun", ["x", "vitest", "run", evalFile], {
+ cwd: evalsRoot,
+ env: {
+ ...process.env,
+ TRANSCRIPT_PATH: transcriptPathFor(tempDir),
+ },
+ });
+ } catch (err) {
+ settle({
+ passed: false,
+ output: `failed to spawn vitest: ${err instanceof Error ? err.message : String(err)}`,
+ });
+ return;
+ }
+
let output = "";
proc.stdout.on("data", (b) => {
output += b.toString();
@@ -286,8 +319,14 @@ async function runVitest(
proc.stderr.on("data", (b) => {
output += b.toString();
});
+ proc.on("error", (err) => {
+ settle({
+ passed: false,
+ output: `${output}\nspawn error: ${err.message}`,
+ });
+ });
proc.on("close", (code) => {
- resolveSpawn({ passed: code === 0, output });
+ settle({ passed: code === 0, output });
});
});
}
diff --git a/packages/leadtype/src/cli.test.ts b/packages/leadtype/src/cli.test.ts
index 718ee31..ff093b9 100644
--- a/packages/leadtype/src/cli.test.ts
+++ b/packages/leadtype/src/cli.test.ts
@@ -387,6 +387,9 @@ This page is valid, but the output path is not a directory.
expect(existsSync(path.join(outDir, "docs", "search-index.json"))).toBe(
false
);
+ expect(existsSync(path.join(outDir, "docs", "search-content.json"))).toBe(
+ false
+ );
// .md files should still ship.
expect(existsSync(path.join(outDir, "docs", "methodology.md"))).toBe(true);
expect(
From 680cca8fef8790b60071b504f05534a7a9533ad0 Mon Sep 17 00:00:00 2001
From: Kaylee <65376239+KayleeWilliams@users.noreply.github.com>
Date: Sat, 9 May 2026 10:18:55 -0700
Subject: [PATCH 12/13] Replace dynamic fs import in archiveTranscript with
top-level imports
---
evals/run-eval.ts | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/evals/run-eval.ts b/evals/run-eval.ts
index 8fb00d6..6a4fe26 100644
--- a/evals/run-eval.ts
+++ b/evals/run-eval.ts
@@ -1,7 +1,7 @@
#!/usr/bin/env bun
import { spawn } from "node:child_process";
import { existsSync, readdirSync } from "node:fs";
-import { readFile } from "node:fs/promises";
+import { mkdir, readFile, writeFile } from "node:fs/promises";
import path from "node:path";
import { fileURLToPath } from "node:url";
import { gateway, generateText, stepCountIs } from "ai";
@@ -259,9 +259,8 @@ async function archiveTranscript(opts: {
mode,
`${ts}-run${runIndex}`
);
- const fs = await import("node:fs/promises");
- await fs.mkdir(dir, { recursive: true });
- await fs.writeFile(
+ await mkdir(dir, { recursive: true });
+ await writeFile(
path.join(dir, "transcript.json"),
`${JSON.stringify(transcript, null, 2)}\n`
);
@@ -270,10 +269,10 @@ async function archiveTranscript(opts: {
for (const rel of transcript.filesModified) {
try {
const src = path.join(tempDir, rel);
- const content = await fs.readFile(src, "utf-8");
+ const content = await readFile(src, "utf-8");
const dest = path.join(dir, "files", rel);
- await fs.mkdir(path.dirname(dest), { recursive: true });
- await fs.writeFile(dest, content);
+ await mkdir(path.dirname(dest), { recursive: true });
+ await writeFile(dest, content);
} catch {
// Best effort; skip silently if a file vanished.
}
From fd59e7e065069e92af676982f21588cfbe2ad67d Mon Sep 17 00:00:00 2001
From: Kaylee <65376239+KayleeWilliams@users.noreply.github.com>
Date: Sat, 9 May 2026 10:50:00 -0700
Subject: [PATCH 13/13] Ignore generated package docs
---
packages/leadtype/.gitignore | 5 ++--
packages/leadtype/AGENTS.md | 55 ------------------------------------
2 files changed, 3 insertions(+), 57 deletions(-)
delete mode 100644 packages/leadtype/AGENTS.md
diff --git a/packages/leadtype/.gitignore b/packages/leadtype/.gitignore
index bd06996..1a5dc88 100644
--- a/packages/leadtype/.gitignore
+++ b/packages/leadtype/.gitignore
@@ -1,7 +1,8 @@
# Generated docs output. The MDX source lives at the repo-root /docs folder;
# `bun run docs:generate` (run as part of the package build) reads from there
-# and writes converted markdown + LLM bundles into /docs here. The folder
-# ships in the published tarball; nothing in it is committed.
+# and writes AGENTS.md plus converted markdown into this package. These files
+# ship in the published tarball; nothing in them is committed.
+/AGENTS.md
/docs/
# Root-level byproducts of the llm helper. Not published (not in package.json
# `files`); just regenerated alongside the docs/ output.
diff --git a/packages/leadtype/AGENTS.md b/packages/leadtype/AGENTS.md
deleted file mode 100644
index 2b66a78..0000000
--- a/packages/leadtype/AGENTS.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# Leadtype
-
-> A docs pipeline that turns one MDX source into a website, agent-readable bundles, and a search index.
-
-These docs ship inside the package so coding agents can read them offline. Open the topic file you need from the list below — paths are relative to this file.
-
-## Product Summary
-
-- Convert MDX into clean markdown that agents and tools can read.
-- Generate llms.txt and topic-scoped full-context bundles.
-- Build a static search index plus optional source-grounded answers.
-- Validate frontmatter, navigation, and internal links before publish.
-
-## Best Starting Points
-
-- [Leadtype](./docs/index.md): One MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.
-- [Quickstart](./docs/quickstart.md): Install leadtype, run it against a docs folder, and inspect the four artifacts it produces.
-- [How it works](./docs/how-it-works.md): The mental model: one MDX source, a remark pipeline, four artifacts, three audiences.
-- [Connect a docs site](./docs/build/connect-docs-site.md): Wire leadtype into a docs app build so it serves humans, agents, and search from one source.
-- [Bundle docs into a package](./docs/build/bundle-package-docs.md): Ship agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.
-
-## Get Started
-
-What leadtype is, how it fits together, and the five-minute happy path.
-
-- [Leadtype](./docs/index.md): One MDX source. A website for humans, llms.txt for agents, and a search index — all from a single pipeline.
-- [How it works](./docs/how-it-works.md): The mental model: one MDX source, a remark pipeline, four artifacts, three audiences.
-- [Methodology](./docs/methodology.md): How leadtype differs from Fumadocs, Starlight, and Mintlify.
-- [Quickstart](./docs/quickstart.md): Install leadtype, run it against a docs folder, and inspect the four artifacts it produces.
-
-## Authoring
-
-The content contract: frontmatter, groups, and the MDX components the pipeline can flatten.
-
-- [Components](./docs/authoring/components.md): MDX components the pipeline knows how to flatten into agent-readable markdown.
-- [Frontmatter](./docs/authoring/frontmatter.md): Required fields, group semantics, and how authored MDX becomes a navigation tree.
-
-## Build
-
-Two journeys: ship docs inside an npm package, or wire leadtype into a docs site.
-
-- [Bundle docs into a package](./docs/build/bundle-package-docs.md): Ship agent-readable docs inside an npm tarball so IDEs and coding agents can read them offline.
-- [Connect a docs site](./docs/build/connect-docs-site.md): Wire leadtype into a docs app build so it serves humans, agents, and search from one source.
-- [Validate in CI](./docs/build/validate-in-ci.md): Run leadtype lint in CI so frontmatter, navigation, and link issues fail PRs before publish.
-
-## Reference
-
-CLI flags, conversion APIs, remark plugins, LLM bundles, search, and lint rules.
-
-- [CLI](./docs/reference/cli.md): leadtype generate and leadtype lint — flags, exit codes, and JSON output.
-- [Convert](./docs/reference/convert.md): MDX-to-markdown conversion APIs from leadtype/convert.
-- [Lint rules](./docs/reference/lint.md): Schema, link, and navigation checks. CLI and library API.
-- [LLM bundles](./docs/reference/llm.md): Generate llms.txt and topic-scoped full-context files for agents.
-- [Remark plugins](./docs/reference/remark.md): The default plugin stack that flattens MDX components into markdown.
-- [Search](./docs/reference/search.md): Static search index, runtime helpers, and source-grounded answer streaming.