From 7ec797119e828c55a601916b1d8a224cf0292b3f Mon Sep 17 00:00:00 2001 From: molebox Date: Wed, 8 Jul 2026 14:20:54 +0200 Subject: [PATCH 1/4] refactor(docs): migrate chat-sdk.dev to @vercel/geistdocs Replace the locally-copied geistdocs runtime in apps/docs with the published @vercel/geistdocs package, keeping site-specific content, custom sections, and established public contracts local. Package-backed now: docs page + layouts (createDocsPage, GeistdocsDocsLayout/HomeLayout), navbar/footer/provider, search (createSearchRoute), Ask AI (createChatRoute, AI SDK v6), per-page markdown (createDocsMarkdownRoute), sitemap.md (createSitemapMarkdownRoute, now with an Adapters section), a new /agents.md surface (createAgentsRoute), proxy (createProxy with explicit markdownRoutes for /docs and /adapters), MDX defaults, design tokens/styles, and icon/logo assets. Kept local by design: the curated /llms.txt index and /llms-full.txt corpus (referenced by the published SKILL.md artifacts and tests), the adapters section (README fetching, OG images, JSON-LD, feature matrices, adapters.mdx markdown route), RSS, and the OG image route. Also: removes 13 now-unused dependencies (ai@5, @ai-sdk/react@2, dexie, jotai, cmdk, vaul, mermaid, etc.), slims the local CSS to overrides on top of @vercel/geistdocs/styles.css, and updates the docs-llms integration test to assert on the new proxy shape. Signed-off-by: molebox --- .../adapters/components/readme-content.tsx | 2 +- apps/docs/app/[lang]/agents.md/route.ts | 6 + .../docs/app/[lang]/docs/[[...slug]]/page.tsx | 157 +- apps/docs/app/[lang]/layout.tsx | 12 +- .../app/[lang]/llms.mdx/[[...slug]]/route.ts | 33 +- apps/docs/app/[lang]/rss.xml/route.ts | 12 +- apps/docs/app/[lang]/sitemap.md/route.ts | 213 +-- apps/docs/app/actions/feedback/emotions.ts | 18 - apps/docs/app/actions/feedback/index.ts | 45 - apps/docs/app/api/chat/route.ts | 133 +- apps/docs/app/api/chat/tools.ts | 208 --- apps/docs/app/api/chat/types.ts | 26 - apps/docs/app/api/chat/utils.ts | 56 - apps/docs/app/api/search/route.ts | 54 +- apps/docs/app/global.css | 6 +- apps/docs/app/styles/geistdocs.css | 565 +------- .../components/ai-elements/conversation.tsx | 100 -- apps/docs/components/ai-elements/message.tsx | 337 ----- .../components/ai-elements/open-in-chat.tsx | 365 ----- .../components/ai-elements/prompt-input.tsx | 1263 ----------------- apps/docs/components/ai-elements/shimmer.tsx | 64 - apps/docs/components/ai-elements/sources.tsx | 77 - .../components/ai-elements/suggestion.tsx | 56 - .../icons/icon-arrow-up-right-small.tsx | 35 - .../icons/icon-arrow-up-right.tsx | 27 - .../geistcn-assets/icons/icon-check.tsx | 27 - .../icons/icon-chevron-down-small.tsx | 30 - .../icons/icon-chevron-right.tsx | 27 - .../geistcn-assets/icons/icon-copy.tsx | 27 - .../geistcn-assets/icons/icon-file-text.tsx | 25 - .../geistcn-assets/icons/icon-menu-alt.tsx | 27 - .../icons/icon-slash-forward.tsx | 36 - .../geistcn-assets/icons/index.tsx | 13 - .../geistcn-assets/logos/index.tsx | 14 - .../geistcn-assets/logos/logo-ai-elements.tsx | 29 - .../geistcn-assets/logos/logo-ai-sdk.tsx | 38 - .../geistcn-assets/logos/logo-chat-sdk.tsx | 42 - .../geistcn-assets/logos/logo-eve.tsx | 36 - .../geistcn-assets/logos/logo-flags-sdk.tsx | 42 - .../geistcn-assets/logos/logo-icon-vercel.tsx | 31 - .../geistcn-assets/logos/logo-streamdown.tsx | 29 - .../geistcn-assets/logos/logo-vercel-oss.tsx | 24 - .../logos/logo-workflow-sdk.tsx | 73 - .../geistdocs/adapters-docs-layout.tsx | 42 +- .../components/geistdocs/adapters-sidebar.tsx | 153 -- apps/docs/components/geistdocs/ask-ai.tsx | 33 - apps/docs/components/geistdocs/callout.tsx | 40 - apps/docs/components/geistdocs/chat.tsx | 454 ------ .../components/geistdocs/code-block-tabs.tsx | 61 - apps/docs/components/geistdocs/code-block.tsx | 134 -- apps/docs/components/geistdocs/copy-chat.tsx | 56 - apps/docs/components/geistdocs/copy-page.tsx | 27 - .../components/geistdocs/desktop-menu.tsx | 81 -- .../docs/components/geistdocs/docs-layout.tsx | 42 +- .../docs/components/geistdocs/edit-source.tsx | 34 - apps/docs/components/geistdocs/feedback.tsx | 139 -- apps/docs/components/geistdocs/footer.tsx | 30 - .../components/geistdocs/github-button.tsx | 19 - .../docs/components/geistdocs/home-layout.tsx | 44 +- apps/docs/components/geistdocs/icons.tsx | 13 - .../geistdocs/language-selector.tsx | 43 - .../components/geistdocs/mdx-components.tsx | 83 +- apps/docs/components/geistdocs/mermaid.tsx | 68 - .../components/geistdocs/message-metadata.tsx | 73 - .../components/geistdocs/mobile-docs-bar.tsx | 81 -- .../docs/components/geistdocs/mobile-menu.tsx | 150 -- .../docs/components/geistdocs/navbar-logo.tsx | 122 -- apps/docs/components/geistdocs/navbar.tsx | 22 - .../components/geistdocs/open-in-chat.tsx | 49 - apps/docs/components/geistdocs/provider.tsx | 66 +- apps/docs/components/geistdocs/rss-button.tsx | 10 - apps/docs/components/geistdocs/scroll-top.tsx | 21 - apps/docs/components/geistdocs/search.tsx | 84 -- apps/docs/components/geistdocs/sidebar.tsx | 149 -- .../geistdocs/theme-aware-image.tsx | 22 - .../components/geistdocs/theme-toggle.tsx | 35 - apps/docs/components/geistdocs/video.tsx | 16 - apps/docs/components/ui/button-group.tsx | 83 -- apps/docs/components/ui/collapsible.tsx | 33 - apps/docs/components/ui/command-prompt.tsx | 4 +- apps/docs/components/ui/command.tsx | 184 --- apps/docs/components/ui/dialog.tsx | 143 -- apps/docs/components/ui/drawer.tsx | 135 -- apps/docs/components/ui/dropdown-menu.tsx | 257 ---- apps/docs/components/ui/hover-card.tsx | 44 - apps/docs/components/ui/kbd.tsx | 28 - apps/docs/components/ui/navigation-menu.tsx | 205 --- apps/docs/components/ui/popover.tsx | 48 - apps/docs/components/ui/scroll-area.tsx | 58 - apps/docs/components/ui/select.tsx | 187 --- apps/docs/components/ui/separator.tsx | 28 - apps/docs/components/ui/sheet.tsx | 139 -- apps/docs/components/ui/sonner.tsx | 40 - apps/docs/components/ui/spinner.tsx | 16 - apps/docs/components/ui/tooltip.tsx | 61 - apps/docs/geistdocs.tsx | 47 +- apps/docs/hooks/geistdocs/use-chat.ts | 23 - apps/docs/hooks/geistdocs/use-sidebar.ts | 13 - apps/docs/lib/geistdocs/config.tsx | 55 + apps/docs/lib/geistdocs/db.ts | 21 - apps/docs/lib/geistdocs/docs-jsonld.ts | 19 +- apps/docs/lib/geistdocs/i18n.ts | 5 - apps/docs/lib/geistdocs/md-tracking.ts | 14 +- apps/docs/lib/geistdocs/source.ts | 58 +- apps/docs/package.json | 14 +- apps/docs/proxy.ts | 115 +- apps/docs/source.config.ts | 60 +- .../integration-tests/src/docs-llms.test.ts | 24 +- pnpm-lock.yaml | 385 +++-- 109 files changed, 531 insertions(+), 8951 deletions(-) create mode 100644 apps/docs/app/[lang]/agents.md/route.ts delete mode 100644 apps/docs/app/actions/feedback/emotions.ts delete mode 100644 apps/docs/app/actions/feedback/index.ts delete mode 100644 apps/docs/app/api/chat/tools.ts delete mode 100644 apps/docs/app/api/chat/types.ts delete mode 100644 apps/docs/app/api/chat/utils.ts delete mode 100644 apps/docs/components/ai-elements/conversation.tsx delete mode 100644 apps/docs/components/ai-elements/message.tsx delete mode 100644 apps/docs/components/ai-elements/open-in-chat.tsx delete mode 100644 apps/docs/components/ai-elements/prompt-input.tsx delete mode 100644 apps/docs/components/ai-elements/shimmer.tsx delete mode 100644 apps/docs/components/ai-elements/sources.tsx delete mode 100644 apps/docs/components/ai-elements/suggestion.tsx delete mode 100644 apps/docs/components/geistcn-fallbacks/geistcn-assets/icons/icon-arrow-up-right-small.tsx delete mode 100644 apps/docs/components/geistcn-fallbacks/geistcn-assets/icons/icon-arrow-up-right.tsx delete mode 100644 apps/docs/components/geistcn-fallbacks/geistcn-assets/icons/icon-check.tsx delete mode 100644 apps/docs/components/geistcn-fallbacks/geistcn-assets/icons/icon-chevron-down-small.tsx delete mode 100644 apps/docs/components/geistcn-fallbacks/geistcn-assets/icons/icon-chevron-right.tsx delete mode 100644 apps/docs/components/geistcn-fallbacks/geistcn-assets/icons/icon-copy.tsx delete mode 100644 apps/docs/components/geistcn-fallbacks/geistcn-assets/icons/icon-file-text.tsx delete mode 100644 apps/docs/components/geistcn-fallbacks/geistcn-assets/icons/icon-menu-alt.tsx delete mode 100644 apps/docs/components/geistcn-fallbacks/geistcn-assets/icons/icon-slash-forward.tsx delete mode 100644 apps/docs/components/geistcn-fallbacks/geistcn-assets/icons/index.tsx delete mode 100644 apps/docs/components/geistcn-fallbacks/geistcn-assets/logos/index.tsx delete mode 100644 apps/docs/components/geistcn-fallbacks/geistcn-assets/logos/logo-ai-elements.tsx delete mode 100644 apps/docs/components/geistcn-fallbacks/geistcn-assets/logos/logo-ai-sdk.tsx delete mode 100644 apps/docs/components/geistcn-fallbacks/geistcn-assets/logos/logo-chat-sdk.tsx delete mode 100644 apps/docs/components/geistcn-fallbacks/geistcn-assets/logos/logo-eve.tsx delete mode 100644 apps/docs/components/geistcn-fallbacks/geistcn-assets/logos/logo-flags-sdk.tsx delete mode 100644 apps/docs/components/geistcn-fallbacks/geistcn-assets/logos/logo-icon-vercel.tsx delete mode 100644 apps/docs/components/geistcn-fallbacks/geistcn-assets/logos/logo-streamdown.tsx delete mode 100644 apps/docs/components/geistcn-fallbacks/geistcn-assets/logos/logo-vercel-oss.tsx delete mode 100644 apps/docs/components/geistcn-fallbacks/geistcn-assets/logos/logo-workflow-sdk.tsx delete mode 100644 apps/docs/components/geistdocs/adapters-sidebar.tsx delete mode 100644 apps/docs/components/geistdocs/ask-ai.tsx delete mode 100644 apps/docs/components/geistdocs/callout.tsx delete mode 100644 apps/docs/components/geistdocs/chat.tsx delete mode 100644 apps/docs/components/geistdocs/code-block-tabs.tsx delete mode 100644 apps/docs/components/geistdocs/code-block.tsx delete mode 100644 apps/docs/components/geistdocs/copy-chat.tsx delete mode 100644 apps/docs/components/geistdocs/copy-page.tsx delete mode 100644 apps/docs/components/geistdocs/desktop-menu.tsx delete mode 100644 apps/docs/components/geistdocs/edit-source.tsx delete mode 100644 apps/docs/components/geistdocs/feedback.tsx delete mode 100644 apps/docs/components/geistdocs/footer.tsx delete mode 100644 apps/docs/components/geistdocs/github-button.tsx delete mode 100644 apps/docs/components/geistdocs/icons.tsx delete mode 100644 apps/docs/components/geistdocs/language-selector.tsx delete mode 100644 apps/docs/components/geistdocs/mermaid.tsx delete mode 100644 apps/docs/components/geistdocs/message-metadata.tsx delete mode 100644 apps/docs/components/geistdocs/mobile-docs-bar.tsx delete mode 100644 apps/docs/components/geistdocs/mobile-menu.tsx delete mode 100644 apps/docs/components/geistdocs/navbar-logo.tsx delete mode 100644 apps/docs/components/geistdocs/navbar.tsx delete mode 100644 apps/docs/components/geistdocs/open-in-chat.tsx delete mode 100644 apps/docs/components/geistdocs/rss-button.tsx delete mode 100644 apps/docs/components/geistdocs/scroll-top.tsx delete mode 100644 apps/docs/components/geistdocs/search.tsx delete mode 100644 apps/docs/components/geistdocs/sidebar.tsx delete mode 100644 apps/docs/components/geistdocs/theme-aware-image.tsx delete mode 100644 apps/docs/components/geistdocs/theme-toggle.tsx delete mode 100644 apps/docs/components/geistdocs/video.tsx delete mode 100644 apps/docs/components/ui/button-group.tsx delete mode 100644 apps/docs/components/ui/collapsible.tsx delete mode 100644 apps/docs/components/ui/command.tsx delete mode 100644 apps/docs/components/ui/dialog.tsx delete mode 100644 apps/docs/components/ui/drawer.tsx delete mode 100644 apps/docs/components/ui/dropdown-menu.tsx delete mode 100644 apps/docs/components/ui/hover-card.tsx delete mode 100644 apps/docs/components/ui/kbd.tsx delete mode 100644 apps/docs/components/ui/navigation-menu.tsx delete mode 100644 apps/docs/components/ui/popover.tsx delete mode 100644 apps/docs/components/ui/scroll-area.tsx delete mode 100644 apps/docs/components/ui/select.tsx delete mode 100644 apps/docs/components/ui/separator.tsx delete mode 100644 apps/docs/components/ui/sheet.tsx delete mode 100644 apps/docs/components/ui/sonner.tsx delete mode 100644 apps/docs/components/ui/spinner.tsx delete mode 100644 apps/docs/components/ui/tooltip.tsx delete mode 100644 apps/docs/hooks/geistdocs/use-chat.ts delete mode 100644 apps/docs/hooks/geistdocs/use-sidebar.ts create mode 100644 apps/docs/lib/geistdocs/config.tsx delete mode 100644 apps/docs/lib/geistdocs/db.ts diff --git a/apps/docs/app/[lang]/adapters/components/readme-content.tsx b/apps/docs/app/[lang]/adapters/components/readme-content.tsx index 02a8387d1..f92b3fed0 100644 --- a/apps/docs/app/[lang]/adapters/components/readme-content.tsx +++ b/apps/docs/app/[lang]/adapters/components/readme-content.tsx @@ -2,9 +2,9 @@ import { cjk } from "@streamdown/cjk"; import { code } from "@streamdown/code"; +import { Callout } from "@vercel/geistdocs/components/callout"; import type { ComponentProps } from "react"; import { defaultRemarkPlugins, Streamdown } from "streamdown"; -import { Callout } from "@/components/geistdocs/callout"; const GFM_ALERT_PATTERN = /^\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\][ \t]*\r?\n?/; diff --git a/apps/docs/app/[lang]/agents.md/route.ts b/apps/docs/app/[lang]/agents.md/route.ts new file mode 100644 index 000000000..ca644fab3 --- /dev/null +++ b/apps/docs/app/[lang]/agents.md/route.ts @@ -0,0 +1,6 @@ +import { createAgentsRoute } from "@vercel/geistdocs/routes/agents"; +import { config } from "@/lib/geistdocs/config"; + +export const { GET, generateStaticParams, revalidate } = createAgentsRoute({ + config, +}); diff --git a/apps/docs/app/[lang]/docs/[[...slug]]/page.tsx b/apps/docs/app/[lang]/docs/[[...slug]]/page.tsx index aaa5ba81d..5bd276c5c 100644 --- a/apps/docs/app/[lang]/docs/[[...slug]]/page.tsx +++ b/apps/docs/app/[lang]/docs/[[...slug]]/page.tsx @@ -1,115 +1,60 @@ -import { createRelativeLink } from "fumadocs-ui/mdx"; +import { MobileDocsBar } from "@vercel/geistdocs/mobile-docs-bar"; +import { createDocsPage } from "@vercel/geistdocs/pages/docs"; import type { Metadata } from "next"; -import { notFound } from "next/navigation"; -import { AskAI } from "@/components/geistdocs/ask-ai"; -import { CopyPage } from "@/components/geistdocs/copy-page"; -import { - DocsBody, - DocsDescription, - DocsPage, - DocsTitle, -} from "@/components/geistdocs/docs-page"; -import { EditSource } from "@/components/geistdocs/edit-source"; -import { Feedback } from "@/components/geistdocs/feedback"; import { getMDXComponents } from "@/components/geistdocs/mdx-components"; -import { MobileDocsBar } from "@/components/geistdocs/mobile-docs-bar"; -import { OpenInChat } from "@/components/geistdocs/open-in-chat"; -import { ScrollTop } from "@/components/geistdocs/scroll-top"; -import { Separator } from "@/components/ui/separator"; -import { getLLMText, getPageImage, source } from "@/lib/geistdocs/source"; +import { config } from "@/lib/geistdocs/config"; import { getDocsJsonLd } from "@/lib/geistdocs/docs-jsonld"; +import { geistdocsSource } from "@/lib/geistdocs/source"; -const Page = async ({ params }: PageProps<"/[lang]/docs/[[...slug]]">) => { - const { slug, lang } = await params; - const page = source.getPage(slug, lang); - - if (!page) { - notFound(); - } - - const markdown = await getLLMText(page); - const MDX = page.data.body; - const slugPath = slug?.join("/"); - const markdownPath = slugPath ? `/docs/${slugPath}.md` : "/docs.md"; - const jsonLd = getDocsJsonLd(page); - - return ( - - - - - - - - - - ), - }} - tableOfContentPopover={{ enabled: false }} - toc={page.data.toc} - > - - {jsonLd ? ( -