342 lines
12 KiB
TypeScript
342 lines
12 KiB
TypeScript
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"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
});
|