// @ts-check import { defineConfig } from "astro/config" import starlight from "@astrojs/starlight" import solidJs from "@astrojs/solid-js" import cloudflare from "@astrojs/cloudflare" import theme from "toolbeam-docs-theme" import config from "./config.mjs" import { rehypeHeadingIds } from "@astrojs/markdown-remark" import rehypeAutolinkHeadings from "rehype-autolink-headings" import { spawnSync } from "child_process" // https://astro.build/config export default defineConfig({ site: config.url, base: "/docs", output: "server", adapter: cloudflare({ imageService: "passthrough", }), devToolbar: { enabled: false, }, server: { host: "0.0.0.0", }, markdown: { rehypePlugins: [rehypeHeadingIds, [rehypeAutolinkHeadings, { behavior: "wrap" }]], }, build: {}, integrations: [ configSchema(), solidJs(), starlight({ title: "OpenCode", defaultLocale: "root", locales: { root: { label: "English", lang: "en", dir: "ltr", }, ar: { label: "العربية", lang: "ar", dir: "rtl", }, bs: { label: "Bosanski", lang: "bs-BA", dir: "ltr", }, da: { label: "Dansk", lang: "da-DK", dir: "ltr", }, de: { label: "Deutsch", lang: "de-DE", dir: "ltr", }, es: { label: "Espa\u00f1ol", lang: "es-ES", dir: "ltr", }, fr: { label: "Fran\u00e7ais", lang: "fr-FR", dir: "ltr", }, it: { label: "Italiano", lang: "it-IT", dir: "ltr", }, ja: { label: "日本語", lang: "ja-JP", dir: "ltr", }, ko: { label: "한국어", lang: "ko-KR", dir: "ltr", }, nb: { label: "Norsk Bokm\u00e5l", lang: "nb-NO", dir: "ltr", }, pl: { label: "Polski", lang: "pl-PL", dir: "ltr", }, "pt-br": { label: "Portugu\u00eas (Brasil)", lang: "pt-BR", dir: "ltr", }, ru: { label: "Русский", lang: "ru-RU", dir: "ltr", }, th: { label: "ไทย", lang: "th-TH", dir: "ltr", }, tr: { label: "T\u00fcrk\u00e7e", lang: "tr-TR", dir: "ltr", }, "zh-cn": { label: "简体中文", lang: "zh-CN", dir: "ltr", }, "zh-tw": { label: "繁體中文", lang: "zh-TW", dir: "ltr", }, }, favicon: "/favicon-v3.svg", head: [ { tag: "link", attrs: { rel: "icon", href: "/favicon-v3.ico", sizes: "32x32", }, }, { tag: "link", attrs: { rel: "icon", type: "image/png", href: "/favicon-96x96-v3.png", sizes: "96x96", }, }, { tag: "link", attrs: { rel: "apple-touch-icon", href: "/apple-touch-icon-v3.png", sizes: "180x180", }, }, ], lastUpdated: true, expressiveCode: { themes: ["github-light", "github-dark"] }, social: [ { icon: "github", label: "GitHub", href: config.github }, { icon: "discord", label: "Discord", href: config.discord }, ], editLink: { baseUrl: `${config.github}/edit/dev/packages/web/`, }, markdown: { headingLinks: false, }, customCss: ["./src/styles/custom.css"], logo: { light: "./src/assets/logo-light.svg", dark: "./src/assets/logo-dark.svg", replacesTitle: true, }, sidebar: [ "", "config", "providers", "network", "enterprise", "troubleshooting", { label: "Windows", translations: { en: "Windows", ar: "Windows", "bs-BA": "Windows", "da-DK": "Windows", "de-DE": "Windows", "es-ES": "Windows", "fr-FR": "Windows", "it-IT": "Windows", "ja-JP": "Windows", "ko-KR": "Windows", "nb-NO": "Windows", "pl-PL": "Windows", "pt-BR": "Windows", "ru-RU": "Windows", "th-TH": "Windows", "tr-TR": "Windows", "zh-CN": "Windows", "zh-TW": "Windows", }, link: "windows-wsl", }, { label: "Usage", translations: { en: "Usage", ar: "الاستخدام", "bs-BA": "Korištenje", "da-DK": "Brug", "de-DE": "Nutzung", "es-ES": "Uso", "fr-FR": "Utilisation", "it-IT": "Utilizzo", "ja-JP": "使い方", "ko-KR": "사용", "nb-NO": "Bruk", "pl-PL": "Użycie", "pt-BR": "Uso", "ru-RU": "Использование", "th-TH": "การใช้งาน", "tr-TR": "Kullanım", "zh-CN": "使用", "zh-TW": "使用", }, items: ["tui", "cli", "web", "ide", "zen", "share", "github", "gitlab"], }, { label: "Configure", translations: { en: "Configure", ar: "الإعداد", "bs-BA": "Podešavanje", "da-DK": "Konfiguration", "de-DE": "Konfiguration", "es-ES": "Configuración", "fr-FR": "Configuration", "it-IT": "Configurazione", "ja-JP": "設定", "ko-KR": "구성", "nb-NO": "Konfigurasjon", "pl-PL": "Konfiguracja", "pt-BR": "Configuração", "ru-RU": "Настройка", "th-TH": "การกำหนดค่า", "tr-TR": "Yapılandırma", "zh-CN": "配置", "zh-TW": "設定", }, items: [ "tools", "rules", "agents", "models", "themes", "keybinds", "commands", "formatters", "permissions", "lsp", "mcp-servers", "acp", "skills", "custom-tools", ], }, { label: "Develop", translations: { en: "Develop", ar: "التطوير", "bs-BA": "Razvoj", "da-DK": "Udvikling", "de-DE": "Entwicklung", "es-ES": "Desarrollo", "fr-FR": "Développement", "it-IT": "Sviluppo", "ja-JP": "開発", "ko-KR": "개발", "nb-NO": "Utvikling", "pl-PL": "Rozwój", "pt-BR": "Desenvolvimento", "ru-RU": "Разработка", "th-TH": "การพัฒนา", "tr-TR": "Geliştirme", "zh-CN": "开发", "zh-TW": "開發", }, items: ["sdk", "server", "plugins", "ecosystem"], }, ], components: { Hero: "./src/components/Hero.astro", Head: "./src/components/Head.astro", Header: "./src/components/Header.astro", Footer: "./src/components/Footer.astro", SiteTitle: "./src/components/SiteTitle.astro", }, plugins: [ theme({ headerLinks: config.headerLinks, }), ], }), ], }) function configSchema() { return { name: "configSchema", hooks: { "astro:build:done": async () => { console.log("generating config schema") spawnSync("../opencode/script/schema.ts", ["./dist/config.json", "./dist/tui.json"]) }, }, } }