mirror of
https://github.com/vercel/streamdown.git
synced 2026-09-19 02:18:37 +08:00
e5deed330a
* Migrate docs site to package-based Geistdocs architecture Replace the vendored Geistdocs template in apps/website with the published @vercel/geistdocs package. The package now owns the shared runtime (layout, docs renderer, search, Ask AI chat, markdown routes, proxy, and MDX components) while the app keeps thin user-owned adapters. - Add @vercel/geistdocs 1.7.2 and bump Next.js to 16.2.6 (exact peer) - Delete ~50 vendored runtime files (components/geistdocs, hooks, custom chat UI, search/chat route implementations, feedback action) - Replace routes with package factories: createDocsPage, createChatRoute, createSearchRoute, createLlmsRoute, createDocsMarkdownRoute, createSitemapMarkdownRoute, createProxy - AI chat now uses the package-owned Ask AI (AI SDK v6 via the package) - Adopt the package geistdocs.css theme with @source entries for the geistdocs and streamdown dists; add a compat token layer in global.css for user-owned components - Add new /agents.md and /.well-known/mcp.json agent-readiness routes with Streamdown agent metadata in geistdocs.tsx - Keep the landing page, playground, KaTeX/Mermaid MDX pipeline, redirects, and workspace streamdown live demos intact - Prune dependencies now owned by the package (dexie, @orama/tokenizers, ai, @ai-sdk/react, etc.) and unused shadcn components * Polish homepage and migrate UI components to @vercel/geistdocs - Homepage background set to bg-background-200 (incl. body/overscroll) - Disable smooth-scroll animation on page navigation - Replace hero install button with For humans / For agents CommandPrompt - Remove hero "Read the docs" button - Remove "Powering AI experiences for" logo strip and assets - Remove homepage section gridlines/dividers - Homepage titles at font-weight 450 - Navbar border hidden at top, revealed on scroll (homepage only) - "Get started" code block uses Geist Shiki theme at 13px - Feature links restyled black + underlined (was blue) - Migrate Button/Badge/Input/Textarea/Popover to @vercel/geistdocs; delete local copies - Remove dead installer + input-group components Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: christopherkindl <53372002+christopherkindl@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
import type { DetectionMethod } from "@vercel/agent-readability";
|
|
import { siteId } from "@/geistdocs";
|
|
|
|
const PLATFORM_URL = "https://geistdocs.com/md-tracking";
|
|
|
|
interface TrackMdRequestParams {
|
|
acceptHeader: string | null;
|
|
/** Detection method used to identify the agent (only for agent-rewrite requests) */
|
|
detectionMethod?: DetectionMethod | null;
|
|
path: string;
|
|
referer: string | null;
|
|
/** How the markdown was requested: 'md-url' for direct .md URLs, 'header-negotiated' for Accept header, 'agent-rewrite' for detected AI agents */
|
|
requestType?: "md-url" | "header-negotiated" | "agent-rewrite";
|
|
userAgent: string | null;
|
|
}
|
|
|
|
/**
|
|
* Track a markdown page request via the geistdocs platform.
|
|
* Fire-and-forget: errors are logged but don't affect the response.
|
|
*/
|
|
export async function trackMdRequest({
|
|
path,
|
|
userAgent,
|
|
referer,
|
|
acceptHeader,
|
|
requestType,
|
|
detectionMethod,
|
|
}: TrackMdRequestParams): Promise<void> {
|
|
try {
|
|
const response = await fetch(PLATFORM_URL, {
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
body: JSON.stringify({
|
|
path,
|
|
siteId: siteId ?? "geistdocs-unknown",
|
|
userAgent,
|
|
referer,
|
|
acceptHeader,
|
|
requestType,
|
|
detectionMethod,
|
|
}),
|
|
});
|
|
|
|
if (!response.ok) {
|
|
console.error(
|
|
"MD tracking failed:",
|
|
response.status,
|
|
await response.text()
|
|
);
|
|
}
|
|
} catch (error) {
|
|
console.error("MD tracking error:", error);
|
|
}
|
|
}
|