agent-ecosystem/landing/product-docs/.vitepress/config.ts

342 lines
12 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import {
transformerNotationDiff,
transformerNotationErrorLevel,
transformerNotationFocus,
transformerNotationHighlight
} from "@shikijs/transformers";
import { fileURLToPath } from "node:url";
import { defineConfig, type DefaultTheme } from "vitepress";
import llmstxt, { copyOrDownloadAsMarkdownButtons } from "vitepress-plugin-llms";
const REPO = "777genius/agent-teams-ai";
const SITE_TITLE = "Agent Teams Docs";
const SITE_DESCRIPTION = "Documentation for Agent Teams, a local desktop app for AI agent orchestration.";
const trimTrailingSlash = (value: string) => value.replace(/\/+$/, "");
const normalizeBase = (value: string) => {
const trimmed = value.trim();
if (!trimmed || trimmed === "/") return "/";
return `/${trimmed.replace(/^\/+|\/+$/g, "")}/`;
};
const withTrailingSlash = (value: string) => `${trimTrailingSlash(value)}/`;
const appBase = normalizeBase(process.env.NUXT_APP_BASE_URL || "/");
const base = appBase === "/" ? "/docs/" : `${appBase}docs/`;
const siteUrl = trimTrailingSlash(
process.env.NUXT_PUBLIC_SITE_URL || "https://777genius.github.io/agent-teams-ai"
);
const publicBaseUrl =
appBase === "/" || siteUrl.endsWith(trimTrailingSlash(appBase))
? withTrailingSlash(siteUrl)
: `${withTrailingSlash(siteUrl)}${appBase.replace(/^\/+/, "")}`;
const docsUrl = `${publicBaseUrl}docs/`;
const downloadUrl = `${publicBaseUrl}download/`;
const ruDownloadUrl = `${publicBaseUrl}ru/download/`;
const landingPublicDir = fileURLToPath(new URL("../../public", import.meta.url));
const rootGuide: DefaultTheme.SidebarItem[] = [
{
text: "Start",
items: [
{ text: "Quickstart", link: "/guide/quickstart" },
{ text: "Installation", link: "/guide/installation" }
]
},
{
text: "Workflows",
items: [
{ text: "Runtime setup", link: "/guide/runtime-setup" },
{ text: "Agent workflow", link: "/guide/agent-workflow" },
{ text: "MCP integration", link: "/guide/mcp-integration" },
{ text: "Code review", link: "/guide/code-review" }
]
},
{
text: "Team Management",
items: [
{ text: "Create a team", link: "/guide/create-team" },
{ text: "Team brief examples", link: "/guide/team-brief-examples" },
{ text: "Git and worktree strategy", link: "/guide/git-worktree-strategy" },
{ text: "Troubleshooting", link: "/guide/troubleshooting" }
]
},
{
text: "Developers",
items: [{ text: "Developer hub", link: "/developers/" }]
},
{
text: "Reference",
items: [
{ text: "Concepts", link: "/reference/concepts" },
{ text: "Providers and runtimes", link: "/reference/providers-runtimes" },
{ text: "Contributor architecture", link: "/reference/contributor-architecture" },
{ text: "Release notes", link: "/reference/release-notes" },
{ text: "Privacy and local data", link: "/reference/privacy-local-data" },
{ text: "FAQ", link: "/reference/faq" }
]
}
];
const ruGuide: DefaultTheme.SidebarItem[] = [
{
text: "Старт",
items: [
{ text: "Быстрый старт", link: "/ru/guide/quickstart" },
{ text: "Установка", link: "/ru/guide/installation" }
]
},
{
text: "Рабочие процессы",
items: [
{ text: "Настройка рантайма", link: "/ru/guide/runtime-setup" },
{ text: "Работа агентов", link: "/ru/guide/agent-workflow" },
{ text: "MCP integration", link: "/ru/guide/mcp-integration" },
{ text: "Код-ревью", link: "/ru/guide/code-review" }
]
},
{
text: "Управление командами",
items: [
{ text: "Создание команды", link: "/ru/guide/create-team" },
{ text: "Team brief examples", link: "/ru/guide/team-brief-examples" },
{ text: "Git and worktree strategy", link: "/ru/guide/git-worktree-strategy" },
{ text: "Диагностика", link: "/ru/guide/troubleshooting" }
]
},
{
text: "Разработчикам",
items: [{ text: "Хаб разработчика", link: "/ru/developers/" }]
},
{
text: "Справочник",
items: [
{ text: "Концепции", link: "/ru/reference/concepts" },
{ text: "Провайдеры и рантаймы", link: "/ru/reference/providers-runtimes" },
{ text: "Архитектура для контрибьюторов", link: "/ru/reference/contributor-architecture" },
{ text: "Релизы", link: "/ru/reference/release-notes" },
{ text: "Приватность и локальные данные", link: "/ru/reference/privacy-local-data" },
{ text: "FAQ", link: "/ru/reference/faq" }
]
}
];
const rootNav: DefaultTheme.NavItem[] = [
{ text: "Guide", link: "/guide/quickstart", activeMatch: "^/guide/(?!troubleshooting(?:/|$))" },
{ text: "Developers", link: "/developers/", activeMatch: "^/developers/" },
{ text: "Reference", link: "/reference/concepts", activeMatch: "^/reference/" },
{
text: "Troubleshooting",
link: "/guide/troubleshooting",
activeMatch: "^/guide/troubleshooting(?:/|$)"
},
{ text: "Download", link: downloadUrl, target: "_self", noIcon: true }
];
const ruNav: DefaultTheme.NavItem[] = [
{
text: "Руководство",
link: "/ru/guide/quickstart",
activeMatch: "^/ru/guide/(?!troubleshooting(?:/|$))"
},
{ text: "Разработчикам", link: "/ru/developers/", activeMatch: "^/ru/developers/" },
{ text: "Справочник", link: "/ru/reference/concepts", activeMatch: "^/ru/reference/" },
{
text: "Диагностика",
link: "/ru/guide/troubleshooting",
activeMatch: "^/ru/guide/troubleshooting(?:/|$)"
},
{ text: "Скачать", link: ruDownloadUrl, target: "_self", noIcon: true }
];
export default defineConfig({
lang: "en-US",
title: SITE_TITLE,
description: SITE_DESCRIPTION,
base,
cleanUrls: true,
lastUpdated: true,
sitemap: {
hostname: docsUrl,
lastmodDateOnly: true
},
head: [
["link", { rel: "icon", type: "image/png", href: `${base}logo-192.png` }],
["link", { rel: "canonical", href: docsUrl }],
["meta", { name: "robots", content: "index, follow" }],
["meta", { name: "author", content: "777genius" }],
["meta", { name: "generator", content: "VitePress" }],
["meta", { name: "color-scheme", content: "light dark" }],
["meta", { name: "theme-color", content: "#f8fafc", media: "(prefers-color-scheme: light)" }],
["meta", { name: "theme-color", content: "#0a0a0f", media: "(prefers-color-scheme: dark)" }],
["meta", { property: "og:type", content: "website" }],
["meta", { property: "og:title", content: SITE_TITLE }],
["meta", { property: "og:description", content: SITE_DESCRIPTION }],
["meta", { property: "og:url", content: docsUrl }],
["meta", { property: "og:image", content: `${publicBaseUrl}og-image.png` }],
["meta", { property: "og:image:width", content: "1200" }],
["meta", { property: "og:image:height", content: "630" }],
["meta", { property: "og:site_name", content: "Agent Teams" }],
["meta", { property: "og:locale", content: "en_US" }],
["meta", { name: "twitter:card", content: "summary_large_image" }],
["meta", { name: "twitter:title", content: SITE_TITLE }],
["meta", { name: "twitter:description", content: SITE_DESCRIPTION }],
["meta", { name: "twitter:image", content: `${publicBaseUrl}og-image.png` }],
[
"script",
{ type: "application/ld+json" },
JSON.stringify({
"@context": "https://schema.org",
"@type": "SoftwareApplication",
name: "Agent Teams",
description: SITE_DESCRIPTION,
url: publicBaseUrl,
applicationCategory: "DeveloperApplication",
operatingSystem: "macOS, Windows, Linux",
offers: { "@type": "Offer", price: "0", priceCurrency: "USD" }
})
]
],
vite: {
publicDir: landingPublicDir,
plugins: [llmstxt()],
optimizeDeps: {
include: ["medium-zoom", "vitepress-codeblock-collapse"]
}
},
markdown: {
codeTransformers: [
transformerNotationDiff(),
transformerNotationFocus(),
transformerNotationHighlight(),
transformerNotationErrorLevel()
],
config(md) {
md.use(copyOrDownloadAsMarkdownButtons);
}
},
themeConfig: {
logo: {
light: "/logo-192.png",
dark: "/logo-192.png",
alt: "Agent Teams"
},
siteTitle: "Agent Teams",
outline: {
level: [2, 3],
label: "On this page"
},
externalLinkIcon: true,
darkModeSwitchLabel: "Appearance",
lightModeSwitchTitle: "Switch to light theme",
darkModeSwitchTitle: "Switch to dark theme",
search: {
provider: "local",
options: {
translations: {
button: {
buttonText: "Search...",
buttonAriaLabel: "Search documentation"
},
modal: {
noResultsText: "No results found",
footer: {
selectText: "to select",
navigateText: "to navigate",
closeText: "to close"
}
}
}
}
},
lastUpdated: {
text: "Last updated",
formatOptions: {
dateStyle: "medium",
timeStyle: "short",
forceLocale: true
}
},
nav: rootNav,
sidebar: {
"/ru/": ruGuide,
"/": rootGuide
},
socialLinks: [{ icon: "github", link: `https://github.com/${REPO}` }],
editLink: {
pattern: `https://github.com/${REPO}/edit/main/landing/product-docs/:path`,
text: "Edit this page on GitHub"
},
footer: {
message: "Free and open source.",
copyright: "Copyright © 777genius"
}
},
locales: {
root: {
label: "English",
lang: "en-US",
themeConfig: {
nav: rootNav,
docFooter: {
prev: "Previous",
next: "Next"
}
}
},
ru: {
label: "Русский",
lang: "ru-RU",
title: "Документация Agent Teams",
description: "Документация Agent Teams, локального desktop-приложения для оркестрации AI-агентов.",
themeConfig: {
nav: ruNav,
outline: {
level: [2, 3],
label: "На этой странице"
},
darkModeSwitchLabel: "Оформление",
lightModeSwitchTitle: "Переключить на светлую тему",
darkModeSwitchTitle: "Переключить на тёмную тему",
search: {
provider: "local",
options: {
translations: {
button: {
buttonText: "Поиск по документации",
buttonAriaLabel: "поиск по документации"
},
modal: {
noResultsText: "Результаты не найдены",
footer: {
selectText: "для выбора",
navigateText: "для навигации",
closeText: "для закрытия"
}
}
}
}
},
lastUpdated: {
text: "Обновлено",
formatOptions: {
dateStyle: "medium",
timeStyle: "short",
forceLocale: true
}
},
editLink: {
pattern: `https://github.com/${REPO}/edit/main/landing/product-docs/:path`,
text: "Редактировать на GitHub"
},
docFooter: {
prev: "Назад",
next: "Дальше"
},
footer: {
message: "Бесплатно и с открытым кодом.",
copyright: "Copyright © 777genius"
}
}
}
}
});