From 3a44af046ad5ff94841d0d9bc4988a1a88cbd8f8 Mon Sep 17 00:00:00 2001 From: orangeboyChen Date: Fri, 4 Sep 2026 12:02:02 +0800 Subject: [PATCH 01/18] docs: add vitepress github pages site --- .github/dependabot.yml | 11 + .github/workflows/docs-pages.yml | 57 +++++ .gitignore | 3 + README.md | 52 ++++- docs/.vitepress/config.ts | 32 +++ docs/bun.lock | 358 +++++++++++++++++++++++++++++++ docs/guide/quick-start.md | 39 ++++ docs/index.md | 41 ++++ docs/package.json | 13 ++ eslint.config.ts | 2 + package.json | 3 + tsconfig.json | 2 +- vitest.config.ts | 2 + 13 files changed, 610 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/docs-pages.yml create mode 100644 docs/.vitepress/config.ts create mode 100644 docs/bun.lock create mode 100644 docs/guide/quick-start.md create mode 100644 docs/index.md create mode 100644 docs/package.json diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 5718028..797a74e 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -99,3 +99,14 @@ updates: - github/* - docker/* - oven-sh/* + + - package-ecosystem: bun + directory: /docs + schedule: + interval: weekly + day: monday + time: '03:00' + timezone: Asia/Shanghai + open-pull-requests-limit: 5 + commit-message: + prefix: chore(deps) diff --git a/.github/workflows/docs-pages.yml b/.github/workflows/docs-pages.yml new file mode 100644 index 0000000..7f84ab1 --- /dev/null +++ b/.github/workflows/docs-pages.yml @@ -0,0 +1,57 @@ +name: Deploy Documentation + +on: + push: + branches: [main] + paths: + - 'docs/**' + - '.github/workflows/docs-pages.yml' + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Bun + uses: oven-sh/setup-bun@v2 + with: + bun-version: 1.3.14 + + - name: Install documentation dependencies + working-directory: docs + run: bun install + + - name: Build documentation + working-directory: docs + run: bun run build + + - name: Configure Pages + uses: actions/configure-pages@v5 + + - name: Upload Pages artifact + uses: actions/upload-pages-artifact@v3 + with: + path: docs/.vitepress/dist + + deploy: + needs: build + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index 4e4b8bc..5e44ee7 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,9 @@ node_modules/ # Next.js / TypeScript build outputs .next/ +docs/.vitepress/cache/ +docs/.vitepress/dist/ +docs/node_modules/ out/ dist/ build/ diff --git a/README.md b/README.md index 534ca17..3c53694 100644 --- a/README.md +++ b/README.md @@ -24,13 +24,17 @@ docker run -d \ ghcr.io/orangeboychen/codebuddy2api:latest ``` -Open `http://127.0.0.1:8001/` after startup. +Open `http://127.0.0.1:8001/dashboard` after startup. + +The Docker image contains only the Next.js API service and admin console. A +future static product demo can live independently under `docs/` and be +published to GitHub Pages; it is not part of the Docker runtime or image. ## Storage Backends Persistence is now routed through a storage abstraction layer. Business modules do not read or write files directly. -- Default backend: `file` +- Default backend: `file` (zero-configuration, backwards-compatible mode) - Optional database backends: `pg`, `sqlite` - Backend selection: - explicit `CODEBUDDY_STORAGE_BACKEND=file|pg|sqlite` @@ -38,6 +42,21 @@ Persistence is now routed through a storage abstraction layer. Business modules - otherwise auto-switch to `pg` when `CODEBUDDY_STORAGE_PG_URL` or `DATABASE_URL` is set - otherwise fall back to `file` +SQLite is the recommended persistent backend for a single application +instance. It keeps runtime data in one local database file and avoids the +multiple-JSON-file consistency limitations of the file backend. The current +default remains `file` so existing deployments continue to start without an +encryption key or migration step. To opt into SQLite: + +```bash +CODEBUDDY_STORAGE_BACKEND=sqlite +CODEBUDDY_STORAGE_SQLITE_PATH=.codebuddy_data/storage.sqlite +CODEBUDDY_STORAGE_ENCRYPTION_KEY='replace-with-a-long-random-secret' +``` + +SQLite is local and single-instance. Use PostgreSQL when multiple application +instances need to share persistence. + ### File Backend The file backend now writes into a dedicated data directory instead of a `config/` tree: @@ -65,7 +84,7 @@ Optional overrides: When `pg` or `sqlite` storage is active, runtime persistence is stored in a database instead of local files. - PostgreSQL uses `DATABASE_URL` or `CODEBUDDY_STORAGE_PG_URL` and the `codebuddy2api` schema -- SQLite uses `CODEBUDDY_STORAGE_SQLITE_PATH`; the default is `.codebuddy_data/storage.sqlite` +- SQLite uses `CODEBUDDY_STORAGE_SQLITE_PATH`; the default path is `.codebuddy_data/storage.sqlite` - `CODEBUDDY_STORAGE_ENCRYPTION_KEY` is required for either database backend and encrypts sensitive stored documents In database mode, local files are not used for normal runtime persistence. Runtime @@ -99,7 +118,7 @@ mkdir -p .codebuddy_data .codebuddy_creds bun run dev ``` -Then open `http://127.0.0.1:3000/`. +Then open `http://127.0.0.1:3000/dashboard`. Use the admin console to complete the CodeBuddy OAuth flow or add credentials manually. Local settings and console data are stored under `.codebuddy_data/`; credentials are stored under `.codebuddy_creds/`. @@ -228,6 +247,31 @@ bun run test -- tests/server/units.test.ts ## Deployment Notes +### GitHub Pages Demo + +The documentation site is intentionally separate from the server application. +Its VitePress source and build configuration live under `docs/`, and +`.github/workflows/docs-pages.yml` publishes only the generated static assets +to GitHub Pages. Changes to `app/`, server code, or the Dockerfile do not +rebuild or replace the published site unless the documentation or its workflow +changes. + +The published site is documentation only. Any interactive API example should +use mock responses by default; a live API mode must require a user-provided API +key and a CORS-enabled API endpoint. Server credentials must never be bundled +into static assets. + +Run the documentation site locally from the repository root: + +```bash +bun install +bun install --cwd docs +bun run docs:dev +``` + +Build or preview the static site with `bun run docs:build` or +`bun run docs:preview`. + ### Docker Compose ```bash diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts new file mode 100644 index 0000000..daa8204 --- /dev/null +++ b/docs/.vitepress/config.ts @@ -0,0 +1,32 @@ +import { defineConfig } from 'vitepress'; + +export default defineConfig({ + base: '/codebuddy2api/', + description: 'Documentation for CodeBuddy2API.', + lang: 'zh-CN', + title: 'CodeBuddy2API', + themeConfig: { + footer: { + message: 'Released under the MIT License.', + }, + nav: [ + { text: '指南', link: '/guide/quick-start' }, + { + text: 'GitHub', + link: 'https://github.com/orangeboyChen/codebuddy2api', + }, + ], + sidebar: [ + { + items: [{ text: '快速开始', link: '/guide/quick-start' }], + text: '指南', + }, + ], + socialLinks: [ + { + icon: 'github', + link: 'https://github.com/orangeboyChen/codebuddy2api', + }, + ], + }, +}); diff --git a/docs/bun.lock b/docs/bun.lock new file mode 100644 index 0000000..b48b802 --- /dev/null +++ b/docs/bun.lock @@ -0,0 +1,358 @@ +{ + "lockfileVersion": 1, + "workspaces": { + "": { + "name": "codebuddy2api-docs", + "devDependencies": { + "vitepress": "^1.6.4", + }, + }, + }, + "packages": { + "@algolia/abtesting": ["@algolia/abtesting@1.23.0", "", { "dependencies": { "@algolia/client-common": "5.57.0", "@algolia/requester-browser-xhr": "5.57.0", "@algolia/requester-fetch": "5.57.0", "@algolia/requester-node-http": "5.57.0" } }, "sha512-j45MBISstltys9QyQ4xf6quRiN1g7vMuwQL9VM4dx8YuRZvCQ173b9royZAx6iAbRX3IB1VnG1z//NuwyQ8jpQ=="], + + "@algolia/autocomplete-core": ["@algolia/autocomplete-core@1.17.7", "", { "dependencies": { "@algolia/autocomplete-plugin-algolia-insights": "1.17.7", "@algolia/autocomplete-shared": "1.17.7" } }, "sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q=="], + + "@algolia/autocomplete-plugin-algolia-insights": ["@algolia/autocomplete-plugin-algolia-insights@1.17.7", "", { "dependencies": { "@algolia/autocomplete-shared": "1.17.7" }, "peerDependencies": { "search-insights": ">= 1 < 3" } }, "sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A=="], + + "@algolia/autocomplete-preset-algolia": ["@algolia/autocomplete-preset-algolia@1.17.7", "", { "dependencies": { "@algolia/autocomplete-shared": "1.17.7" }, "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", "algoliasearch": ">= 4.9.1 < 6" } }, "sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA=="], + + "@algolia/autocomplete-shared": ["@algolia/autocomplete-shared@1.17.7", "", { "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", "algoliasearch": ">= 4.9.1 < 6" } }, "sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg=="], + + "@algolia/client-abtesting": ["@algolia/client-abtesting@5.57.0", "", { "dependencies": { "@algolia/client-common": "5.57.0", "@algolia/requester-browser-xhr": "5.57.0", "@algolia/requester-fetch": "5.57.0", "@algolia/requester-node-http": "5.57.0" } }, "sha512-JVFFujiZUCguk5tz3LZr4fTQxqpIrj4/Jw3SI7kMljSqtfLxYn/s/TWH0J2s4iNfsDpxPhgFGMotCpmDI4kZ8w=="], + + "@algolia/client-analytics": ["@algolia/client-analytics@5.57.0", "", { "dependencies": { "@algolia/client-common": "5.57.0", "@algolia/requester-browser-xhr": "5.57.0", "@algolia/requester-fetch": "5.57.0", "@algolia/requester-node-http": "5.57.0" } }, "sha512-6KqECK4ED3JJQEoDrQWnGPQzElA828xAD4qK5ceawNNyP/LcSvzAoLHjFkoTPksZ/kxj6VUtCRH+IHZesLltng=="], + + "@algolia/client-common": ["@algolia/client-common@5.57.0", "", {}, "sha512-uqpGF3oXYsoCbQq5d7BzNrNTfIfuvJyGP1CKvSW27T9boUg7KOwyxsAw1AX0a3jSW2HrYEJ/NN+Z4MiGivbpeQ=="], + + "@algolia/client-insights": ["@algolia/client-insights@5.57.0", "", { "dependencies": { "@algolia/client-common": "5.57.0", "@algolia/requester-browser-xhr": "5.57.0", "@algolia/requester-fetch": "5.57.0", "@algolia/requester-node-http": "5.57.0" } }, "sha512-u5NboJVJXDEFplvNnqqX4CxkXPYysjJRj47hOSh9329H8kG5gFLKJBIiS5utMQ+GZm8xQl3Te7NInDk6elEADQ=="], + + "@algolia/client-personalization": ["@algolia/client-personalization@5.57.0", "", { "dependencies": { "@algolia/client-common": "5.57.0", "@algolia/requester-browser-xhr": "5.57.0", "@algolia/requester-fetch": "5.57.0", "@algolia/requester-node-http": "5.57.0" } }, "sha512-uzc0b2LmHAK9/QID4xeo35OG84AkZl4YewkCqawqAOGLjT2eZpM/OZx45ESygMHG30Ws+ZTSdluPtMJcUnrbWQ=="], + + "@algolia/client-query-suggestions": ["@algolia/client-query-suggestions@5.57.0", "", { "dependencies": { "@algolia/client-common": "5.57.0", "@algolia/requester-browser-xhr": "5.57.0", "@algolia/requester-fetch": "5.57.0", "@algolia/requester-node-http": "5.57.0" } }, "sha512-dIAhnM6ue/ssa5PjgNfu4g8A4yTojl9ZOUzZU3wIaIKRerL2R/3Emuf9n/D6ICXXP167KC6XCeC7nliSw7cuSw=="], + + "@algolia/client-search": ["@algolia/client-search@5.57.0", "", { "dependencies": { "@algolia/client-common": "5.57.0", "@algolia/requester-browser-xhr": "5.57.0", "@algolia/requester-fetch": "5.57.0", "@algolia/requester-node-http": "5.57.0" } }, "sha512-2TTPTTKSJmCptvhCm4Xf3bBYMqZni+Pgc2hVdqc4l9wsBpSJNVTVIKpnd10OubUgkGcmppVDj1XQqYaf6EnPSQ=="], + + "@algolia/ingestion": ["@algolia/ingestion@1.57.0", "", { "dependencies": { "@algolia/client-common": "5.57.0", "@algolia/requester-browser-xhr": "5.57.0", "@algolia/requester-fetch": "5.57.0", "@algolia/requester-node-http": "5.57.0" } }, "sha512-W4JseHKt+pzOxlFV+T3MWEG0h4Z2Se5zjoXUD0ewlw8aOWMG/yjRdopUdLQsXULepB/My2tDuZjkwk2sMfsUrQ=="], + + "@algolia/monitoring": ["@algolia/monitoring@1.57.0", "", { "dependencies": { "@algolia/client-common": "5.57.0", "@algolia/requester-browser-xhr": "5.57.0", "@algolia/requester-fetch": "5.57.0", "@algolia/requester-node-http": "5.57.0" } }, "sha512-BrxJVE0/eLinEPICCD7BKN/2xnt0nkjge70u8zzE2ISP3fuB3tjLgcwpanUycvlHBFLI4gK0l5ol54p6IYuR/Q=="], + + "@algolia/recommend": ["@algolia/recommend@5.57.0", "", { "dependencies": { "@algolia/client-common": "5.57.0", "@algolia/requester-browser-xhr": "5.57.0", "@algolia/requester-fetch": "5.57.0", "@algolia/requester-node-http": "5.57.0" } }, "sha512-Gc29jkeiLKlVfHvyrIgyUHHE+aYTdXEeLfK42rjr5/1TTVsYwUJz0XkvoIBIqfMjcDg6gXeHb1jTUZ0H+SYIlQ=="], + + "@algolia/requester-browser-xhr": ["@algolia/requester-browser-xhr@5.57.0", "", { "dependencies": { "@algolia/client-common": "5.57.0" } }, "sha512-PIPnPN7MP3fp2VAi01BVXhCWmD366ZB2Hkq5TlYKtThd4KxUtMmaaNDpFgVCTXtSIqWVZLJntOHRvxg/sIPd8Q=="], + + "@algolia/requester-fetch": ["@algolia/requester-fetch@5.57.0", "", { "dependencies": { "@algolia/client-common": "5.57.0" } }, "sha512-AX3RlOudXMdTwtwUqdAf5hAVLvXfOZZH1FZh6ALDdrhVLT0TtAIe48N6nYcWcTnwoTxK/wDIQqZ19IMjK8zJAA=="], + + "@algolia/requester-node-http": ["@algolia/requester-node-http@5.57.0", "", { "dependencies": { "@algolia/client-common": "5.57.0" } }, "sha512-cWZc1dKb7wy9/wPpwMtL1y89gK2G7y2A47Coa7zwf1ydtIeJm4+S+XxoQ2b/ZRiQnrC1YHavLjYUPDCdnT7Khg=="], + + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], + + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="], + + "@babel/parser": ["@babel/parser@7.29.8", "", { "dependencies": { "@babel/types": "^7.29.8" }, "bin": "./bin/babel-parser.js" }, "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA=="], + + "@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], + + "@docsearch/css": ["@docsearch/css@3.8.2", "", {}, "sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ=="], + + "@docsearch/js": ["@docsearch/js@3.8.2", "", { "dependencies": { "@docsearch/react": "3.8.2", "preact": "^10.0.0" } }, "sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ=="], + + "@docsearch/react": ["@docsearch/react@3.8.2", "", { "dependencies": { "@algolia/autocomplete-core": "1.17.7", "@algolia/autocomplete-preset-algolia": "1.17.7", "@docsearch/css": "3.8.2", "algoliasearch": "^5.14.2" }, "peerDependencies": { "@types/react": ">= 16.8.0 < 19.0.0", "react": ">= 16.8.0 < 19.0.0", "react-dom": ">= 16.8.0 < 19.0.0", "search-insights": ">= 1 < 3" }, "optionalPeers": ["@types/react", "react", "react-dom", "search-insights"] }, "sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg=="], + + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.21.5", "", { "os": "aix", "cpu": "ppc64" }, "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ=="], + + "@esbuild/android-arm": ["@esbuild/android-arm@0.21.5", "", { "os": "android", "cpu": "arm" }, "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg=="], + + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.21.5", "", { "os": "android", "cpu": "arm64" }, "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A=="], + + "@esbuild/android-x64": ["@esbuild/android-x64@0.21.5", "", { "os": "android", "cpu": "x64" }, "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA=="], + + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.21.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ=="], + + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.21.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw=="], + + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.21.5", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g=="], + + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.21.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ=="], + + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.21.5", "", { "os": "linux", "cpu": "arm" }, "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA=="], + + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.21.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q=="], + + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.21.5", "", { "os": "linux", "cpu": "ia32" }, "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg=="], + + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg=="], + + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg=="], + + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.21.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w=="], + + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA=="], + + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.21.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A=="], + + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.21.5", "", { "os": "linux", "cpu": "x64" }, "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ=="], + + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.21.5", "", { "os": "none", "cpu": "x64" }, "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg=="], + + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.21.5", "", { "os": "openbsd", "cpu": "x64" }, "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow=="], + + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.21.5", "", { "os": "sunos", "cpu": "x64" }, "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg=="], + + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.21.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A=="], + + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.21.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA=="], + + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.21.5", "", { "os": "win32", "cpu": "x64" }, "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw=="], + + "@iconify-json/simple-icons": ["@iconify-json/simple-icons@1.2.94", "", { "dependencies": { "@iconify/types": "*" } }, "sha512-l8UWzVxKaqZd9ABsE/M/9p6NyGkQnmCnOoZyhQmjlXCtY5PuL2rcWxOFk2l9pk7ux3ERMPkTLE4jl6kQpTkwxA=="], + + "@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="], + + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.6.0", "", {}, "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw=="], + + "@napi-rs/lzma-linux-x64-gnu": ["@napi-rs/lzma-linux-x64-gnu@1.5.1", "", { "os": "linux", "cpu": "x64" }, "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ=="], + + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.63.1", "", { "os": "android", "cpu": "arm" }, "sha512-UZ8sUxPTiHWYX9QNdJedb1kDZSpS1t/VPWBWGSgqHNi9w3Cu6IXvu2mzbhiTiPvtrqgTQJ+zqiAq2iPIPilpaQ=="], + + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.63.1", "", { "os": "android", "cpu": "arm64" }, "sha512-cQ4nFQABN5cDvDpbvJ7bMStCpnaVxynZrRMfUJYgxcIk9Sh54FIO1vtfkg0B69REjER77ioZ/ov+eAApx/KmLQ=="], + + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.63.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-FQNqd1lRy/0QhDk3xeRIkSBiCpXCiDnZO3YLVdcDKN1UBiKToNftCzcXYNLshmPDUMlu2TdeS8tGcsU6f3YF1Q=="], + + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.63.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-pvD16V939D3CloK0+qikpGaxiPrDUXTe7Y5cWOMkMSy7m1cawa8EGy/kXYi/G/cKAC4HDAbSnzCIk1WmsoOKXg=="], + + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.63.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-pcFGeL2345VwdTnJhA6zLbew+YgWB0qBG2+dMtXjCicf6+rm6kO6cOoh5VnTe0ZMrMRgRyuHmCJxZWrIdzYuOw=="], + + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.63.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mRJlqSRulVzcKq/LKA6ICSIc3K/l4fzlVn/gePn2nXIHy8seRi5z/eeRE0d/XMBxcMldiXtQTSpRj0tkkC3g8Q=="], + + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.63.1", "", { "os": "linux", "cpu": "arm" }, "sha512-YDUNvVM85TI3g/1OpnqKP1h4NeW/j64DfWMf+G3M809xNk1bJSnpFp4sh83NpmVE5DXnkh8ULor4LTVZKoYLHw=="], + + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.63.1", "", { "os": "linux", "cpu": "arm" }, "sha512-7Mcn71p9ZuQFAj+h+dhQXy/yeLePRS2yKRnmW1DijA9thKO5qap0GNOIQK4yQ6iP3SU0Mrb/yWo8h8vgRba8lw=="], + + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.63.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-4YiLQTX6U4CSl0L9cluep9A9W6UmTfqBDc2/CH6wlu54pl4E7Jn3cOD8oxzvBDEGk/JMKgJ47C8g+radF7mwvg=="], + + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.63.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-2ra8F7w8OquwZN9z2/fKFnli69wa8PLwaVzRMIPGb13ByMJwC28Fbp8YcVGoUhlYMTt7j5j9bNgpysrN2UM+vw=="], + + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.63.1", "", { "os": "linux", "cpu": "none" }, "sha512-Sy20ncyhjmBP0Ml+UvQbimjlk6VFgjW5uNP+qqwHB00mTE8Bl2C1TuHTlRwK2YoXeZbee5lP2XevBWVkAQAtSQ=="], + + "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.63.1", "", { "os": "linux", "cpu": "none" }, "sha512-noITLp8oNjYliPnGWmLyelIHwULGqbHloQHGw1rtxbWhTuWooRpnZarZQJ1y9EUC4szuCusCc+HEpUtxpIwYvA=="], + + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.63.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-hlxxXd+F1mWiAcaFR7Sv9ZQT6m6UfI8+Vy/kFJzztq2pDMU/0wZ9sish0iszNZvsQDo8Gc0i5yuFEOz5dDf6fA=="], + + "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.63.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-EF7OpqQTQ/BvGqLzUi4rEHuagCV9MugAUXSHemwPW5vxZ75RR+jxO/2j95Ph2dalMpFHSVECjRoioHZgA9zOYA=="], + + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.63.1", "", { "os": "linux", "cpu": "none" }, "sha512-wQO3JesW9PRkwlabQ27y7sPfVOOTLRG73I4F2UYHG5PXun3J9U3y+b7ezVKSYbsvSKGQ1k1cq8Qlun4C9kLt3w=="], + + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.63.1", "", { "os": "linux", "cpu": "none" }, "sha512-ouAGwhO6wHRXdnOVCOsB0tRFkA7nhNB2Nwax6oECXN0YiN8EYUTBAOudADOB1PI+yDL61TeNx/u7MVCzksNbkQ=="], + + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.63.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-q2R38Sn+1J8RxhfJ+T54wSWmyKXWec+9jgDfqO2AtArEqHO5R2aeayp5H5OYLr5UYDVGsVaZPEFUooMhYCdz5A=="], + + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.63.1", "", { "os": "linux", "cpu": "x64" }, "sha512-gfI5T24WLLuFfSKw7Go/zDXjAAV0fny0swTaDv+WjK7vqcw4cRhFfdsyKL1n+ukI+ooBxn3bVQnyrn06WpI50w=="], + + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.63.1", "", { "os": "linux", "cpu": "x64" }, "sha512-4h6XqthmB4Hspji84wvgk+ElodTsGj+dbZqHJHHtKxj4mYq0ANSEEPX9ys3moJueqsRjwpaJYH7874Itwnj2ow=="], + + "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.63.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-dlfCOa87o1VAYegLQ9EKilx2JCeRofiyPGhTCmqnuXZ6bMPiycO1rq1+sKoulAp7pGLIsTIw+1x5R+zgh5LhhA=="], + + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.63.1", "", { "os": "none", "cpu": "arm64" }, "sha512-cjkLbOlfcm3QGhMM1J5zaZjsw1GggbN6rw9UTSSRrPrR1KkcXnN7Uq9rPw34xImQ9VOY9GN+6u2Zj80B9ptkcw=="], + + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.63.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-Li1KdUnWGE4N3e1F/B4RTB1ms+nG4WBgjByO46pkeBVX/2UBsY53xf5vK9WygVmnH3RwncIST7lkSdLSY6P9lg=="], + + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.63.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-t4ZYOSoLTgwhuFMrmTMLx/+i1DQVK7HYqMc6kY46EApwi8X0nIVphzdNoThU3xt6n+N5urG1/gxBdCaKDLavfg=="], + + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.63.1", "", { "os": "win32", "cpu": "x64" }, "sha512-RgroPfMmKlD1RzSDxvwgcPiy2HNQKoYV7OmwIXDsk73uKW5t6B/V8KIy27SMv/FNXFo/oSBtWc9J0X7t91ezZg=="], + + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.63.1", "", { "os": "win32", "cpu": "x64" }, "sha512-at8QVep6S3h5Y6gSbdGU06bRY5WJkf6WUduM9YtvYMbYhB1MOFfUgc6kehitQXzOtMSaT70q7f9ydPhpqu821w=="], + + "@shikijs/core": ["@shikijs/core@2.5.0", "", { "dependencies": { "@shikijs/engine-javascript": "2.5.0", "@shikijs/engine-oniguruma": "2.5.0", "@shikijs/types": "2.5.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.4" } }, "sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg=="], + + "@shikijs/engine-javascript": ["@shikijs/engine-javascript@2.5.0", "", { "dependencies": { "@shikijs/types": "2.5.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^3.1.0" } }, "sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w=="], + + "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@2.5.0", "", { "dependencies": { "@shikijs/types": "2.5.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw=="], + + "@shikijs/langs": ["@shikijs/langs@2.5.0", "", { "dependencies": { "@shikijs/types": "2.5.0" } }, "sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w=="], + + "@shikijs/themes": ["@shikijs/themes@2.5.0", "", { "dependencies": { "@shikijs/types": "2.5.0" } }, "sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw=="], + + "@shikijs/transformers": ["@shikijs/transformers@2.5.0", "", { "dependencies": { "@shikijs/core": "2.5.0", "@shikijs/types": "2.5.0" } }, "sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg=="], + + "@shikijs/types": ["@shikijs/types@2.5.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw=="], + + "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="], + + "@types/estree": ["@types/estree@1.0.9", "", {}, "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg=="], + + "@types/hast": ["@types/hast@3.0.5", "", { "dependencies": { "@types/unist": "*" } }, "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g=="], + + "@types/linkify-it": ["@types/linkify-it@5.0.0", "", {}, "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q=="], + + "@types/markdown-it": ["@types/markdown-it@14.2.0", "", { "dependencies": { "@types/linkify-it": "^5", "@types/mdurl": "^2" } }, "sha512-NoQ2yGlLWj4wpxMs+TYmRKk3thDrQ97agr7sFqfLsAlvoS8SNQuTrlObhFqG9iugdTtgOE9jpJ6FNM4ZGsa5xQ=="], + + "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], + + "@types/mdurl": ["@types/mdurl@2.0.0", "", {}, "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg=="], + + "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], + + "@types/web-bluetooth": ["@types/web-bluetooth@0.0.21", "", {}, "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA=="], + + "@ungap/structured-clone": ["@ungap/structured-clone@1.4.0", "", {}, "sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ=="], + + "@vitejs/plugin-vue": ["@vitejs/plugin-vue@5.2.4", "", { "peerDependencies": { "vite": "^5.0.0 || ^6.0.0", "vue": "^3.2.25" } }, "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA=="], + + "@vue/compiler-core": ["@vue/compiler-core@3.5.42", "", { "dependencies": { "@babel/parser": "^7.29.8", "@vue/shared": "3.5.42", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "sha512-2Ye1ilMtKXxl8qZUrQ5j0CdgenFp/HFQmta6rfRyfEsTG69L6Wk+tWuNoHYHMx9E8tF2Slvdg1FuwDvAXdy1LQ=="], + + "@vue/compiler-dom": ["@vue/compiler-dom@3.5.42", "", { "dependencies": { "@vue/compiler-core": "3.5.42", "@vue/shared": "3.5.42" } }, "sha512-qbhQZEFmycr+ni/qyuccS4sucNN7VAbDfbkvNxWOX2VfgFm90MNs3/UhRNKoPMEIVn0F8gdlYjLPvqxHwHeQOA=="], + + "@vue/compiler-sfc": ["@vue/compiler-sfc@3.5.42", "", { "dependencies": { "@babel/parser": "^7.29.8", "@vue/compiler-core": "3.5.42", "@vue/compiler-dom": "3.5.42", "@vue/compiler-ssr": "3.5.42", "@vue/shared": "3.5.42", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", "postcss": "^8.5.19", "source-map-js": "^1.2.1" } }, "sha512-fkCAFB4okcAANGMThboWnScp/gzWjU0ZSkVnjTIiplmMDq2uq0tIB3j+xVu4rhv5rvOgBySCysudmbMd6xRRqw=="], + + "@vue/compiler-ssr": ["@vue/compiler-ssr@3.5.42", "", { "dependencies": { "@vue/compiler-dom": "3.5.42", "@vue/shared": "3.5.42" } }, "sha512-xmLk3wLkbizPAiLyomjgFFosf2ys9b5Ghb+oh/k2tnvipNz8OFrQOiTcWCzyK7MpBp9KkyGtfvgfLUivbmuGYA=="], + + "@vue/devtools-api": ["@vue/devtools-api@7.7.10", "", { "dependencies": { "@vue/devtools-kit": "^7.7.10" } }, "sha512-KxtEpUOOpFz/qOGRrAwA36QF7DqIA+FXgCYit9mk9wjbaZt0sXOFz81ElOZtKA4HbWHUdwNjZHBFsFFyp5BZiA=="], + + "@vue/devtools-kit": ["@vue/devtools-kit@7.7.10", "", { "dependencies": { "@vue/devtools-shared": "^7.7.10", "birpc": "^2.3.0", "hookable": "^5.5.3", "mitt": "^3.0.1", "perfect-debounce": "^1.0.0", "speakingurl": "^14.0.1", "superjson": "^2.2.2" } }, "sha512-3WNi2Kq4tbpVbmhml7RiphmAt0279oh3fKNeWMQIrltfX8Q91b4i5PL8DtyNKdwmcsGrV4fg+erwWOmD05CLIw=="], + + "@vue/devtools-shared": ["@vue/devtools-shared@7.7.10", "", { "dependencies": { "rfdc": "^1.4.1" } }, "sha512-wOPslzB8vTvpxwdaOcR2qAbwmuSP0L+rhpoC6Cf56V3Jip+HWb7PQQXOUPgBNQARpXsbQX/+mvi8kKucmBGRwQ=="], + + "@vue/reactivity": ["@vue/reactivity@3.5.42", "", { "dependencies": { "@vue/shared": "3.5.42" } }, "sha512-TzNNfKpb7hDxbQltwAut8VDQA5YP+BuRlxntHUuRjyKwlMvmAPbs3unhCvieijifY6vFfVBwsS7wG/C7uq+bEQ=="], + + "@vue/runtime-core": ["@vue/runtime-core@3.5.42", "", { "dependencies": { "@vue/reactivity": "3.5.42", "@vue/shared": "3.5.42" } }, "sha512-9uACtuHs7vJGkm5Bp3xu4xRDLFTIYy5DgxpToVjqGIAhAEKwQfsaLvKINhM6nFVp6bZPRFGdDqd1g52MqKsotA=="], + + "@vue/runtime-dom": ["@vue/runtime-dom@3.5.42", "", { "dependencies": { "@vue/reactivity": "3.5.42", "@vue/runtime-core": "3.5.42", "@vue/shared": "3.5.42", "csstype": "^3.2.3" } }, "sha512-rsCmhiWLaRxGltLwhlCWyYkFn7WAbKRh0q17eZ1A6Dq6eqc2ACQ61IIryxz0LrsvCzHSilLA9JHovVwM8CNE2g=="], + + "@vue/server-renderer": ["@vue/server-renderer@3.5.42", "", { "dependencies": { "@vue/compiler-ssr": "3.5.42", "@vue/runtime-dom": "3.5.42", "@vue/shared": "3.5.42" } }, "sha512-2++5dUyYS4gvo7xQXSECUDhB7TS0aOl5SeVfC5qSq1Jgfhjvegw1zqhwTIR3imZ+QYPJQw9gfcFvXGAjGZ7ajQ=="], + + "@vue/shared": ["@vue/shared@3.5.42", "", {}, "sha512-2rPxex1jQf4jvl9MOHl6YaXCPcrNqz/FstMOEh3QWY+/OME9nQTvl9WYeCwhW7AFjaR0SnngZGlp/wkR6rkI6g=="], + + "@vueuse/core": ["@vueuse/core@12.8.2", "", { "dependencies": { "@types/web-bluetooth": "^0.0.21", "@vueuse/metadata": "12.8.2", "@vueuse/shared": "12.8.2", "vue": "^3.5.13" } }, "sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ=="], + + "@vueuse/integrations": ["@vueuse/integrations@12.8.2", "", { "dependencies": { "@vueuse/core": "12.8.2", "@vueuse/shared": "12.8.2", "vue": "^3.5.13" }, "peerDependencies": { "async-validator": "^4", "axios": "^1", "change-case": "^5", "drauu": "^0.4", "focus-trap": "^7", "fuse.js": "^7", "idb-keyval": "^6", "jwt-decode": "^4", "nprogress": "^0.2", "qrcode": "^1.5", "sortablejs": "^1", "universal-cookie": "^7" }, "optionalPeers": ["async-validator", "axios", "change-case", "drauu", "focus-trap", "fuse.js", "idb-keyval", "jwt-decode", "nprogress", "qrcode", "sortablejs", "universal-cookie"] }, "sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g=="], + + "@vueuse/metadata": ["@vueuse/metadata@12.8.2", "", {}, "sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A=="], + + "@vueuse/shared": ["@vueuse/shared@12.8.2", "", { "dependencies": { "vue": "^3.5.13" } }, "sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w=="], + + "algoliasearch": ["algoliasearch@5.57.0", "", { "dependencies": { "@algolia/abtesting": "1.23.0", "@algolia/client-abtesting": "5.57.0", "@algolia/client-analytics": "5.57.0", "@algolia/client-common": "5.57.0", "@algolia/client-insights": "5.57.0", "@algolia/client-personalization": "5.57.0", "@algolia/client-query-suggestions": "5.57.0", "@algolia/client-search": "5.57.0", "@algolia/ingestion": "1.57.0", "@algolia/monitoring": "1.57.0", "@algolia/recommend": "5.57.0", "@algolia/requester-browser-xhr": "5.57.0", "@algolia/requester-fetch": "5.57.0", "@algolia/requester-node-http": "5.57.0" } }, "sha512-HpND7MBGctOAkd1GoQoDZCGoCpqNTS5NG1LuhElFet3RdLJkwnyTYZXZhXwtpAQPrI36fqQ3eT6KQrdKDTKu3A=="], + + "birpc": ["birpc@2.9.0", "", {}, "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw=="], + + "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], + + "character-entities-html4": ["character-entities-html4@2.1.0", "", {}, "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="], + + "character-entities-legacy": ["character-entities-legacy@3.0.0", "", {}, "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="], + + "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], + + "copy-anything": ["copy-anything@4.1.0", "", {}, "sha512-ufbM3smX/Jbnpk5wcQjzd1MgBpzmqfNETUAyZNrGwU9foRlyHoGzMMBBCRzEhQLBjZfFDE1W2ufPXX2vdWkV8Q=="], + + "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], + + "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], + + "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], + + "emoji-regex-xs": ["emoji-regex-xs@1.0.0", "", {}, "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg=="], + + "entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="], + + "esbuild": ["esbuild@0.21.5", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.21.5", "@esbuild/android-arm": "0.21.5", "@esbuild/android-arm64": "0.21.5", "@esbuild/android-x64": "0.21.5", "@esbuild/darwin-arm64": "0.21.5", "@esbuild/darwin-x64": "0.21.5", "@esbuild/freebsd-arm64": "0.21.5", "@esbuild/freebsd-x64": "0.21.5", "@esbuild/linux-arm": "0.21.5", "@esbuild/linux-arm64": "0.21.5", "@esbuild/linux-ia32": "0.21.5", "@esbuild/linux-loong64": "0.21.5", "@esbuild/linux-mips64el": "0.21.5", "@esbuild/linux-ppc64": "0.21.5", "@esbuild/linux-riscv64": "0.21.5", "@esbuild/linux-s390x": "0.21.5", "@esbuild/linux-x64": "0.21.5", "@esbuild/netbsd-x64": "0.21.5", "@esbuild/openbsd-x64": "0.21.5", "@esbuild/sunos-x64": "0.21.5", "@esbuild/win32-arm64": "0.21.5", "@esbuild/win32-ia32": "0.21.5", "@esbuild/win32-x64": "0.21.5" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw=="], + + "estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], + + "focus-trap": ["focus-trap@7.8.0", "", { "dependencies": { "tabbable": "^6.4.0" } }, "sha512-/yNdlIkpWbM0ptxno3ONTuf+2g318kh2ez3KSeZN5dZ8YC6AAmgeWz+GasYYiBJPFaYcSAPeu4GfhUaChzIJXA=="], + + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "hast-util-to-html": ["hast-util-to-html@9.0.5", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", "zwitch": "^2.0.4" } }, "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw=="], + + "hast-util-whitespace": ["hast-util-whitespace@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="], + + "hookable": ["hookable@5.5.3", "", {}, "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="], + + "html-void-elements": ["html-void-elements@3.0.0", "", {}, "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="], + + "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], + + "mark.js": ["mark.js@8.11.1", "", {}, "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ=="], + + "mdast-util-to-hast": ["mdast-util-to-hast@13.2.1", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@ungap/structured-clone": "^1.0.0", "devlop": "^1.0.0", "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA=="], + + "micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + + "micromark-util-encode": ["micromark-util-encode@2.0.1", "", {}, "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="], + + "micromark-util-sanitize-uri": ["micromark-util-sanitize-uri@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ=="], + + "micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + + "micromark-util-types": ["micromark-util-types@2.0.2", "", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="], + + "minisearch": ["minisearch@7.2.0", "", {}, "sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg=="], + + "mitt": ["mitt@3.0.1", "", {}, "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="], + + "nanoid": ["nanoid@3.3.18", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w=="], + + "oniguruma-to-es": ["oniguruma-to-es@3.1.1", "", { "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^6.0.1", "regex-recursion": "^6.0.2" } }, "sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ=="], + + "perfect-debounce": ["perfect-debounce@1.0.0", "", {}, "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA=="], + + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "postcss": ["postcss@8.5.28", "", { "dependencies": { "nanoid": "^3.3.18", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A=="], + + "preact": ["preact@10.29.8", "", { "peerDependencies": { "preact-render-to-string": ">=5" }, "optionalPeers": ["preact-render-to-string"] }, "sha512-ej2aVZ+vZ8WO7tvlQWRM9N63A0KzF9q4mWJfDUHgYaIofWY9hu74QdnQrjoPMmZi2/nZ5gN0bJCQF49xQqx09Q=="], + + "property-information": ["property-information@7.2.0", "", {}, "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg=="], + + "regex": ["regex@6.1.0", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg=="], + + "regex-recursion": ["regex-recursion@6.0.2", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg=="], + + "regex-utilities": ["regex-utilities@2.3.0", "", {}, "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng=="], + + "rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="], + + "rollup": ["rollup@4.63.1", "", { "dependencies": { "@types/estree": "1.0.9" }, "optionalDependencies": { "@napi-rs/lzma-linux-x64-gnu": "1.5.1", "@rollup/rollup-android-arm-eabi": "4.63.1", "@rollup/rollup-android-arm64": "4.63.1", "@rollup/rollup-darwin-arm64": "4.63.1", "@rollup/rollup-darwin-x64": "4.63.1", "@rollup/rollup-freebsd-arm64": "4.63.1", "@rollup/rollup-freebsd-x64": "4.63.1", "@rollup/rollup-linux-arm-gnueabihf": "4.63.1", "@rollup/rollup-linux-arm-musleabihf": "4.63.1", "@rollup/rollup-linux-arm64-gnu": "4.63.1", "@rollup/rollup-linux-arm64-musl": "4.63.1", "@rollup/rollup-linux-loong64-gnu": "4.63.1", "@rollup/rollup-linux-loong64-musl": "4.63.1", "@rollup/rollup-linux-ppc64-gnu": "4.63.1", "@rollup/rollup-linux-ppc64-musl": "4.63.1", "@rollup/rollup-linux-riscv64-gnu": "4.63.1", "@rollup/rollup-linux-riscv64-musl": "4.63.1", "@rollup/rollup-linux-s390x-gnu": "4.63.1", "@rollup/rollup-linux-x64-gnu": "4.63.1", "@rollup/rollup-linux-x64-musl": "4.63.1", "@rollup/rollup-openbsd-x64": "4.63.1", "@rollup/rollup-openharmony-arm64": "4.63.1", "@rollup/rollup-win32-arm64-msvc": "4.63.1", "@rollup/rollup-win32-ia32-msvc": "4.63.1", "@rollup/rollup-win32-x64-gnu": "4.63.1", "@rollup/rollup-win32-x64-msvc": "4.63.1", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-3Df9jsstwhccuEfmAMi9l8XUh/GOkVObmFTU7CCVBysEbcOZLl84jCtaAZMcPiMz2EGKsATzQcU+Xr3n/wU6cg=="], + + "search-insights": ["search-insights@2.17.3", "", {}, "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ=="], + + "shiki": ["shiki@2.5.0", "", { "dependencies": { "@shikijs/core": "2.5.0", "@shikijs/engine-javascript": "2.5.0", "@shikijs/engine-oniguruma": "2.5.0", "@shikijs/langs": "2.5.0", "@shikijs/themes": "2.5.0", "@shikijs/types": "2.5.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ=="], + + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + + "space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], + + "speakingurl": ["speakingurl@14.0.1", "", {}, "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ=="], + + "stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], + + "superjson": ["superjson@2.2.6", "", { "dependencies": { "copy-anything": "^4" } }, "sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA=="], + + "tabbable": ["tabbable@6.5.0", "", {}, "sha512-wieBHXygIm7OyQOu5hQlkk62/WyCFYGlWg7L6/ZCUZwx0o398Zkn4pVmMyfYhfMG8kGrj/Krt8eIk6UKC6VzwA=="], + + "trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], + + "unist-util-is": ["unist-util-is@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g=="], + + "unist-util-position": ["unist-util-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="], + + "unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="], + + "unist-util-visit": ["unist-util-visit@5.1.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg=="], + + "unist-util-visit-parents": ["unist-util-visit-parents@6.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="], + + "vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="], + + "vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="], + + "vite": ["vite@5.4.21", "", { "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", "rollup": "^4.20.0" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || >=20.0.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.4.0" }, "optionalPeers": ["@types/node", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser"], "bin": { "vite": "bin/vite.js" } }, "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw=="], + + "vitepress": ["vitepress@1.6.4", "", { "dependencies": { "@docsearch/css": "3.8.2", "@docsearch/js": "3.8.2", "@iconify-json/simple-icons": "^1.2.21", "@shikijs/core": "^2.1.0", "@shikijs/transformers": "^2.1.0", "@shikijs/types": "^2.1.0", "@types/markdown-it": "^14.1.2", "@vitejs/plugin-vue": "^5.2.1", "@vue/devtools-api": "^7.7.0", "@vue/shared": "^3.5.13", "@vueuse/core": "^12.4.0", "@vueuse/integrations": "^12.4.0", "focus-trap": "^7.6.4", "mark.js": "8.11.1", "minisearch": "^7.1.1", "shiki": "^2.1.0", "vite": "^5.4.14", "vue": "^3.5.13" }, "peerDependencies": { "markdown-it-mathjax3": "^4", "postcss": "^8" }, "optionalPeers": ["markdown-it-mathjax3", "postcss"], "bin": { "vitepress": "bin/vitepress.js" } }, "sha512-+2ym1/+0VVrbhNyRoFFesVvBvHAVMZMK0rw60E3X/5349M1GuVdKeazuksqopEdvkKwKGs21Q729jX81/bkBJg=="], + + "vue": ["vue@3.5.42", "", { "dependencies": { "@vue/compiler-dom": "3.5.42", "@vue/compiler-sfc": "3.5.42", "@vue/runtime-dom": "3.5.42", "@vue/server-renderer": "3.5.42", "@vue/shared": "3.5.42" }, "peerDependencies": { "typescript": "*" }, "optionalPeers": ["typescript"] }, "sha512-4RyHQTbQvOPs3MfvUO1Sg0YRrKNnA0mAVtvpd12Tg1fKDN7OHBUl1IqSn8zGJjK9nI3NkNp8cgTpVrSZC5TTcA=="], + + "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], + } +} diff --git a/docs/guide/quick-start.md b/docs/guide/quick-start.md new file mode 100644 index 0000000..58649f2 --- /dev/null +++ b/docs/guide/quick-start.md @@ -0,0 +1,39 @@ +# 快速开始 + +## 本地运行 + +需要 Bun 1.3.14+ 和 Node.js 20+: + +```bash +bun install +bun install --cwd docs +bun run docs:dev +``` + +然后访问 `http://127.0.0.1:3000/dashboard`。 + +## Docker 运行 + +```bash +docker run -d \ + --name codebuddy2api \ + --restart unless-stopped \ + -p 8001:8001 \ + -v "$(pwd)/.codebuddy_data:/app/.codebuddy_data" \ + -v "$(pwd)/.codebuddy_creds:/app/.codebuddy_creds" \ + ghcr.io/orangeboyChen/codebuddy2api:latest +``` + +管理控制台地址为 `http://127.0.0.1:8001/dashboard`。 + +## 存储选择 + +当前默认后端是 `file`,适合零配置启动和兼容已有部署。单实例生产环境推荐使用 SQLite: + +```dotenv +CODEBUDDY_STORAGE_BACKEND=sqlite +CODEBUDDY_STORAGE_SQLITE_PATH=.codebuddy_data/storage.sqlite +CODEBUDDY_STORAGE_ENCRYPTION_KEY=replace-with-a-long-random-secret +``` + +多实例部署请使用 PostgreSQL。数据库后端需要设置 `CODEBUDDY_STORAGE_ENCRYPTION_KEY`。 diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..1833b3b --- /dev/null +++ b/docs/index.md @@ -0,0 +1,41 @@ +--- +layout: home + +hero: + name: CodeBuddy2API + text: OpenAI-compatible CodeBuddy gateway + tagline: Self-host CodeBuddy behind a familiar API surface. + actions: + - theme: brand + text: 快速开始 + link: /guide/quick-start + - theme: alt + text: 查看 GitHub + link: https://github.com/orangeboyChen/codebuddy2api + +features: + - title: 多协议兼容 + details: 同时提供 OpenAI-compatible 和 Anthropic-compatible API。 + - title: 内置管理控制台 + details: 管理凭据、访问密钥、用量、调试日志和运行时设置。 + - title: 灵活存储 + details: 默认零配置文件存储,也支持 SQLite 和 PostgreSQL。 +--- + +## 这是什么? + +CodeBuddy2API 将 CodeBuddy 接入常见的 LLM 客户端和 SDK。你可以在本地、Docker 或 Kubernetes 中运行它,并通过统一的 API 地址接入现有工具。 + +## 开始使用 + +```bash +docker run -d \ + --name codebuddy2api \ + --restart unless-stopped \ + -p 8001:8001 \ + -v "$(pwd)/.codebuddy_data:/app/.codebuddy_data" \ + -v "$(pwd)/.codebuddy_creds:/app/.codebuddy_creds" \ + ghcr.io/orangeboychen/codebuddy2api:latest +``` + +启动后访问 `http://127.0.0.1:8001/dashboard`。 diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 0000000..f48a600 --- /dev/null +++ b/docs/package.json @@ -0,0 +1,13 @@ +{ + "name": "codebuddy2api-docs", + "private": true, + "type": "module", + "scripts": { + "dev": "vitepress dev .", + "build": "vitepress build .", + "preview": "vitepress preview ." + }, + "devDependencies": { + "vitepress": "^1.6.4" + } +} diff --git a/eslint.config.ts b/eslint.config.ts index f326561..f4b1e8f 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -11,6 +11,8 @@ const eslintConfig = [ globalIgnores([ '.next/**', 'coverage/**', + 'docs/.vitepress/**', + '**/node_modules/**', 'node_modules/**', 'next-env.d.ts', 'tsconfig.tsbuildinfo', diff --git a/package.json b/package.json index f465ba7..68d9dfa 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,9 @@ "private": true, "scripts": { "dev": "next dev", + "docs:dev": "cd docs && bun run dev", + "docs:build": "cd docs && bun run build", + "docs:preview": "cd docs && bun run preview", "prepare": "husky", "build": "next build", "test:e2e": "playwright test", diff --git a/tsconfig.json b/tsconfig.json index a25b618..2986fe8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -30,5 +30,5 @@ ".next/types/**/*.ts", ".next/dev/types/**/*.ts" ], - "exclude": ["node_modules"] + "exclude": ["node_modules", "docs"] } diff --git a/vitest.config.ts b/vitest.config.ts index 2ae9e34..6d56f34 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -28,6 +28,8 @@ const vitestConfig = defineConfig({ exclude: [ '.next/**', 'coverage/**', + 'docs/.vitepress/**', + '**/node_modules/**', 'dist/**', 'e2e/**', 'node_modules/**', From 1118927e125fd83a016c5685cd89a34664b96784 Mon Sep 17 00:00:00 2001 From: orangeboyChen Date: Fri, 4 Sep 2026 12:34:58 +0800 Subject: [PATCH 02/18] docs: add localized console guides --- README.md | 275 +++------------------------- docs/.vitepress/config.ts | 86 ++++++++- docs/en/guide/account-status.md | 12 ++ docs/en/guide/api-test.md | 11 ++ docs/en/guide/credentials.md | 19 ++ docs/en/guide/dashboard.md | 18 ++ docs/en/guide/debug.md | 12 ++ docs/en/guide/quick-start.md | 18 ++ docs/en/guide/settings.md | 13 ++ docs/en/guide/usage.md | 17 ++ docs/en/index.md | 29 +++ docs/guide/account-status.md | 5 + docs/guide/api-test.md | 9 + docs/guide/credentials.md | 9 + docs/guide/dashboard.md | 9 + docs/guide/debug.md | 9 + docs/guide/quick-start.md | 6 +- docs/guide/settings.md | 5 + docs/guide/usage.md | 7 + docs/index.md | 15 +- docs/ja/guide/account-status.md | 5 + docs/ja/guide/api-test.md | 11 ++ docs/ja/guide/credentials.md | 11 ++ docs/ja/guide/dashboard.md | 18 ++ docs/ja/guide/debug.md | 9 + docs/ja/guide/quick-start.md | 18 ++ docs/ja/guide/settings.md | 5 + docs/ja/guide/usage.md | 9 + docs/ja/index.md | 28 +++ docs/public/codebuddy-dashboard.png | Bin 0 -> 549080 bytes package.json | 2 +- 31 files changed, 439 insertions(+), 261 deletions(-) create mode 100644 docs/en/guide/account-status.md create mode 100644 docs/en/guide/api-test.md create mode 100644 docs/en/guide/credentials.md create mode 100644 docs/en/guide/dashboard.md create mode 100644 docs/en/guide/debug.md create mode 100644 docs/en/guide/quick-start.md create mode 100644 docs/en/guide/settings.md create mode 100644 docs/en/guide/usage.md create mode 100644 docs/en/index.md create mode 100644 docs/guide/account-status.md create mode 100644 docs/guide/api-test.md create mode 100644 docs/guide/credentials.md create mode 100644 docs/guide/dashboard.md create mode 100644 docs/guide/debug.md create mode 100644 docs/guide/settings.md create mode 100644 docs/guide/usage.md create mode 100644 docs/ja/guide/account-status.md create mode 100644 docs/ja/guide/api-test.md create mode 100644 docs/ja/guide/credentials.md create mode 100644 docs/ja/guide/dashboard.md create mode 100644 docs/ja/guide/debug.md create mode 100644 docs/ja/guide/quick-start.md create mode 100644 docs/ja/guide/settings.md create mode 100644 docs/ja/guide/usage.md create mode 100644 docs/ja/index.md create mode 100644 docs/public/codebuddy-dashboard.png diff --git a/README.md b/README.md index 3c53694..babb42e 100644 --- a/README.md +++ b/README.md @@ -2,289 +2,60 @@ [![CI](https://github.com/orangeboyChen/codebuddy2api/actions/workflows/ci-main.yml/badge.svg?branch=main)](https://github.com/orangeboyChen/codebuddy2api/actions/workflows/ci-main.yml) [![codecov](https://codecov.io/gh/orangeboyChen/codebuddy2api/graph/badge.svg?token=SJP5CBSQ16)](https://codecov.io/gh/orangeboyChen/codebuddy2api) -[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/orangeboyChen/codebuddy2api) -Proxy CodeBuddy through OpenAI-compatible and Anthropic-compatible APIs, with a built-in admin console for credentials, access keys, usage, debug traces, and runtime settings. - -

- CodeBuddy2API -

+CodeBuddy2API is a self-hosted CodeBuddy gateway with OpenAI-compatible and +Anthropic-compatible APIs, plus an admin console for credentials, access keys, +usage, debugging, and runtime settings. > Forked from [Sliverkiss/CodeBuddy2api](https://github.com/Sliverkiss/CodeBuddy2api). ## Quick Start +The following Docker command uses SQLite, recommended for a single instance. +Replace the encryption key with a long random value before production use. + ```bash docker run -d \ --name codebuddy2api \ --restart unless-stopped \ -p 8001:8001 \ + -e CODEBUDDY_STORAGE_BACKEND=sqlite \ + -e CODEBUDDY_STORAGE_ENCRYPTION_KEY='replace-with-a-long-random-secret' \ -v "$(pwd)/.codebuddy_data:/app/.codebuddy_data" \ -v "$(pwd)/.codebuddy_creds:/app/.codebuddy_creds" \ ghcr.io/orangeboychen/codebuddy2api:latest ``` -Open `http://127.0.0.1:8001/dashboard` after startup. - -The Docker image contains only the Next.js API service and admin console. A -future static product demo can live independently under `docs/` and be -published to GitHub Pages; it is not part of the Docker runtime or image. - -## Storage Backends - -Persistence is now routed through a storage abstraction layer. Business modules do not read or write files directly. - -- Default backend: `file` (zero-configuration, backwards-compatible mode) -- Optional database backends: `pg`, `sqlite` -- Backend selection: - - explicit `CODEBUDDY_STORAGE_BACKEND=file|pg|sqlite` - - explicit `CODEBUDDY_STORAGE_PERSISTENCE=file|pg|sqlite` - - otherwise auto-switch to `pg` when `CODEBUDDY_STORAGE_PG_URL` or `DATABASE_URL` is set - - otherwise fall back to `file` - -SQLite is the recommended persistent backend for a single application -instance. It keeps runtime data in one local database file and avoids the -multiple-JSON-file consistency limitations of the file backend. The current -default remains `file` so existing deployments continue to start without an -encryption key or migration step. To opt into SQLite: - -```bash -CODEBUDDY_STORAGE_BACKEND=sqlite -CODEBUDDY_STORAGE_SQLITE_PATH=.codebuddy_data/storage.sqlite -CODEBUDDY_STORAGE_ENCRYPTION_KEY='replace-with-a-long-random-secret' -``` - -SQLite is local and single-instance. Use PostgreSQL when multiple application -instances need to share persistence. - -### File Backend - -The file backend now writes into a dedicated data directory instead of a `config/` tree: - -- `.codebuddy_data/runtime.json` -- `.codebuddy_data/access-keys.json` -- `.codebuddy_data/debug-settings.json` -- `.codebuddy_data/debug-logs.json` -- `.codebuddy_data/usage-history.json` -- `.codebuddy_data/admin-auth.json` -- `.codebuddy_creds/*.json` - -Usage records, debug records, and credential rotation checkpoints are flushed in -batches (at most once per second or after 100 pending records). File storage is -therefore intended for a single application instance; multiple instances can -overwrite each other's JSON documents. - -Optional overrides: - -- `CODEBUDDY_STORAGE_FILE_DIR` changes the file-backend data directory -- `CODEBUDDY_CONFIG_PATH` is kept only for legacy compatibility with the old runtime config file path - -### Database Backends - -When `pg` or `sqlite` storage is active, runtime persistence is stored in a database instead of local files. - -- PostgreSQL uses `DATABASE_URL` or `CODEBUDDY_STORAGE_PG_URL` and the `codebuddy2api` schema -- SQLite uses `CODEBUDDY_STORAGE_SQLITE_PATH`; the default path is `.codebuddy_data/storage.sqlite` -- `CODEBUDDY_STORAGE_ENCRYPTION_KEY` is required for either database backend and encrypts sensitive stored documents - -In database mode, local files are not used for normal runtime persistence. Runtime -configuration, credentials, access keys, and debug settings can be read as an -optional one-time legacy import source during initialization. Historical usage -and debug log JSON files are not imported. - -Usage and debug records are stored as append-only, indexed event rows with retention -pruning. PostgreSQL supports concurrent application instances. SQLite is a local, -single-instance backend. Credential rotation checkpoints remain eventually -consistent, so PostgreSQL replicas can occasionally select the same credential. - -The application runs the bundled Drizzle migrations during database-backend -initialization, so deployments do not require a separate schema-creation step. -Keep legacy files available for the first application start so its idempotent -import can copy configuration, credentials, access keys, and admin state. Only -set `CODEBUDDY_STORAGE_IMPORT_LEGACY_FILES=false` after that start has completed. +Open `http://127.0.0.1:8001/dashboard`, add a CodeBuddy credential, then create +an access key for API clients. Use PostgreSQL instead of SQLite for multiple +application instances. -## Run Locally +## Documentation -### Requirements +- [中文文档](https://orangeboychen.github.io/codebuddy2api/) +- [English documentation](https://orangeboychen.github.io/codebuddy2api/en/) +- [日本語ドキュメント](https://orangeboychen.github.io/codebuddy2api/ja/) -- Bun 1.3.14+ -- Node.js 20+ - -### Development Mode - -```bash -bun install -mkdir -p .codebuddy_data .codebuddy_creds -bun run dev -``` - -Then open `http://127.0.0.1:3000/dashboard`. - -Use the admin console to complete the CodeBuddy OAuth flow or add credentials manually. Local settings and console data are stored under `.codebuddy_data/`; credentials are stored under `.codebuddy_creds/`. - -### Production-like Local Run +Run the documentation site locally from the repository root: ```bash bun install -mkdir -p .codebuddy_data .codebuddy_creds -bun run build -bun start -``` - -Then open `http://127.0.0.1:8001/`. - -## Admin Console - -The admin console uses stable routes and supports English, Japanese, and Simplified Chinese. - -- console route: `http://:8001/dashboard` -- login route: `http://:8001/login` -- locale persistence: cookie-based, no locale path prefixes -- mobile tab bar supports horizontal scrolling -- authenticated admins can log out from the top-right action - -### Admin Authentication - -Admin authentication is optional. - -- If no admin password and no passkey are configured, the admin console remains open. -- Once an admin password or passkey is configured, `/admin-api/*` requires the admin session cookie. -- Session transport: HTTP-only cookie -- Session TTL: 8 hours - -### Password Login - -- first-time bootstrap: `POST /admin-api/auth/setup` -- sign-in: `POST /admin-api/auth/session` -- sign-out: `DELETE /admin-api/auth/session` - -### Passkey Login - -Passkey endpoints are available under `/admin-api/auth/passkeys/*`. - -- registration options: `POST /admin-api/auth/passkeys/registration/options` -- registration verify: `POST /admin-api/auth/passkeys/registration/verify` -- authentication options: `POST /admin-api/auth/passkeys/authentication/options` -- authentication verify: `POST /admin-api/auth/passkeys/authentication/verify` - -Passkeys use WebAuthn and therefore depend on both a valid origin and a valid RP ID. - -- `expectedOrigin` is derived from the live request protocol and host, including `x-forwarded-proto` and `x-forwarded-host` when present. -- `CODEBUDDY_ADMIN_PASSKEY_RP_ID` optionally overrides the WebAuthn RP ID used for admin passkey registration and authentication. -- If `CODEBUDDY_ADMIN_PASSKEY_RP_ID` is empty, the server falls back to the current request hostname with the port removed. -- The RP ID must be a hostname only, with no scheme, port, or path. Typical values are `example.com`, `admin.example.com`, or `localhost`. -- The RP ID must match the browser-visible origin domain or be a registrable parent-domain suffix accepted by the browser for that origin. If it does not match, passkey registration or authentication will fail. -- Production deployments should use HTTPS on the hostname the browser actually visits. If TLS terminates at a reverse proxy or ingress, forwarded host/protocol headers must reflect that public origin. -- `http://localhost` remains usable for local browser testing because browsers treat localhost as a secure-context exception. Plain HTTP on non-localhost hosts is not sufficient for WebAuthn. - -## Public APIs - -Base path: - -```text -http://:8001/v1 +bun install --cwd docs +bun run docs:dev ``` -Supported endpoints: - -- `POST /v1/chat/completions` -- `POST /v1/responses` -- `POST /v1/messages` -- `GET /v1/models` - -### Authentication - -- inference routes accept managed access keys -- send either `Authorization: Bearer ` or `x-api-key: ` -- `/admin-api/*` is controlled separately by the admin session cookie when admin auth is configured - -## Runtime Settings - -Settings resolve in this order: - -1. persisted admin settings -2. environment variables -3. built-in defaults - -Current persisted runtime settings: - -- `CODEBUDDY_ADMIN_PASSKEY_RP_ID` -- `CODEBUDDY_API_ENDPOINT` -- `CODEBUDDY_AUTH_MODE` -- `CODEBUDDY_INTERNET_ENVIRONMENT` -- `CODEBUDDY_LOG_LEVEL` - -Models are discovered from CodeBuddy for each active credential. The credentials page shows one row per credential with its supported models and a refresh action. `/v1/models` only merges models from credentials bound to the requesting API key. - -## Logging - -The server now includes key runtime and security logging for upstream failures and admin-sensitive flows. - -- debug snapshots redact tokens, cookies, API keys, auth headers, and user identifiers -- unreadable access-key storage is surfaced as a 503 instead of silently degrading +Use `bun run docs:build` to build the static site and `bun run docs:preview` to +preview it. ## Development -Primary quality gates: - ```bash +bun install bun run lint bun run format:check bun run typecheck -bun run test -bun run build -``` - -Targeted suites used during this refactor: - -```bash -bun run test -- tests/admin/console.test.tsx -bun run test -- tests/server/runtime.test.ts -bun run test -- tests/server/debug-usage.test.ts -bun run test -- tests/server/access-keys-credentials.test.ts -bun run test -- tests/server/units.test.ts -``` - -## Deployment Notes - -### GitHub Pages Demo - -The documentation site is intentionally separate from the server application. -Its VitePress source and build configuration live under `docs/`, and -`.github/workflows/docs-pages.yml` publishes only the generated static assets -to GitHub Pages. Changes to `app/`, server code, or the Dockerfile do not -rebuild or replace the published site unless the documentation or its workflow -changes. - -The published site is documentation only. Any interactive API example should -use mock responses by default; a live API mode must require a user-provided API -key and a CORS-enabled API endpoint. Server credentials must never be bundled -into static assets. - -Run the documentation site locally from the repository root: - -```bash -bun install -bun install --cwd docs -bun run docs:dev -``` - -Build or preview the static site with `bun run docs:build` or -`bun run docs:preview`. - -### Docker Compose - -```bash -cp .env.example .env -mkdir -p .codebuddy_data .codebuddy_creds -docker compose -f deploy/docker-compose.yml up -d -``` - -### Kubernetes - -```bash -kubectl apply -f deploy/k8s/codebuddy2api.yaml -kubectl port-forward service/codebuddy2api 8001:8001 +bun run test:coverage +bunx next build --webpack ``` ## License diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index daa8204..ce74c74 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -2,8 +2,13 @@ import { defineConfig } from 'vitepress'; export default defineConfig({ base: '/codebuddy2api/', - description: 'Documentation for CodeBuddy2API.', + description: 'CodeBuddy2API 使用文档。', lang: 'zh-CN', + locales: { + root: { label: '简体中文', lang: 'zh-CN' }, + en: { label: 'English', lang: 'en-US', link: '/en/' }, + ja: { label: '日本語', lang: 'ja-JP', link: '/ja/' }, + }, title: 'CodeBuddy2API', themeConfig: { footer: { @@ -18,7 +23,22 @@ export default defineConfig({ ], sidebar: [ { - items: [{ text: '快速开始', link: '/guide/quick-start' }], + items: [ + { text: '快速开始', link: '/guide/quick-start' }, + { + collapsed: false, + items: [ + { text: 'Dashboard', link: '/guide/dashboard' }, + { text: 'Usage', link: '/guide/usage' }, + { text: 'Credentials', link: '/guide/credentials' }, + { text: 'Account Status', link: '/guide/account-status' }, + { text: 'API Test', link: '/guide/api-test' }, + { text: 'Debug', link: '/guide/debug' }, + { text: 'Settings', link: '/guide/settings' }, + ], + text: '管理控制台', + }, + ], text: '指南', }, ], @@ -28,5 +48,67 @@ export default defineConfig({ link: 'https://github.com/orangeboyChen/codebuddy2api', }, ], + locales: { + en: { + nav: [ + { text: 'Guide', link: '/en/guide/quick-start' }, + { + text: 'GitHub', + link: 'https://github.com/orangeboyChen/codebuddy2api', + }, + ], + sidebar: [ + { + items: [ + { text: 'Quick Start', link: '/en/guide/quick-start' }, + { + collapsed: false, + items: [ + { text: 'Dashboard', link: '/en/guide/dashboard' }, + { text: 'Usage', link: '/en/guide/usage' }, + { text: 'Credentials', link: '/en/guide/credentials' }, + { text: 'Account Status', link: '/en/guide/account-status' }, + { text: 'API Test', link: '/en/guide/api-test' }, + { text: 'Debug', link: '/en/guide/debug' }, + { text: 'Settings', link: '/en/guide/settings' }, + ], + text: 'Admin Console', + }, + ], + text: 'Guide', + }, + ], + }, + ja: { + nav: [ + { text: 'ガイド', link: '/ja/guide/quick-start' }, + { + text: 'GitHub', + link: 'https://github.com/orangeboyChen/codebuddy2api', + }, + ], + sidebar: [ + { + items: [ + { text: 'クイックスタート', link: '/ja/guide/quick-start' }, + { + collapsed: false, + items: [ + { text: 'Dashboard', link: '/ja/guide/dashboard' }, + { text: 'Usage', link: '/ja/guide/usage' }, + { text: 'Credentials', link: '/ja/guide/credentials' }, + { text: 'Account Status', link: '/ja/guide/account-status' }, + { text: 'API Test', link: '/ja/guide/api-test' }, + { text: 'Debug', link: '/ja/guide/debug' }, + { text: 'Settings', link: '/ja/guide/settings' }, + ], + text: '管理コンソール', + }, + ], + text: 'ガイド', + }, + ], + }, + }, }, }); diff --git a/docs/en/guide/account-status.md b/docs/en/guide/account-status.md new file mode 100644 index 0000000..889841a --- /dev/null +++ b/docs/en/guide/account-status.md @@ -0,0 +1,12 @@ +# Account Status + +Account Status is the health check for each CodeBuddy account. + +For every account, review the email or user ID, expiration state, and available models. + +When a request fails: + +1. Check whether the account is expired. +2. Re-authorize it from **Credentials** if necessary. +3. Confirm that the requested model is listed for the account. +4. Open **Debug** for the upstream error details. diff --git a/docs/en/guide/api-test.md b/docs/en/guide/api-test.md new file mode 100644 index 0000000..cfb9378 --- /dev/null +++ b/docs/en/guide/api-test.md @@ -0,0 +1,11 @@ +# API Test + +API Test sends a request from the admin console without configuring an external SDK. + +1. Select a non-expired credential. +2. Select one of its discovered models. +3. Enter a message. +4. Turn streaming on or off. +5. Click **Send** and inspect the response panel. + +Use this page to verify credentials and model access before troubleshooting a client integration. External clients should call `/v1/chat/completions`, `/v1/responses`, or `/v1/messages` with a managed access key. diff --git a/docs/en/guide/credentials.md b/docs/en/guide/credentials.md new file mode 100644 index 0000000..8a98820 --- /dev/null +++ b/docs/en/guide/credentials.md @@ -0,0 +1,19 @@ +# Credentials + +Credentials are the CodeBuddy accounts used by the proxy. + +## Add an account + +1. Open **Credentials**. +2. Start the CodeBuddy OAuth flow or add a credential through the available login action. +3. Complete authorization in the browser. +4. Return to the console and refresh the list. + +## Create an API access key + +1. Open the access-key section on the Credentials page. +2. Give the key a recognizable name. +3. Copy the secret immediately; it is only shown when created or explicitly revealed. +4. Send it as `Authorization: Bearer ` or `x-api-key: `. + +Never put a credential file or access key in the documentation site, source repository, or client-side demo code. diff --git a/docs/en/guide/dashboard.md b/docs/en/guide/dashboard.md new file mode 100644 index 0000000..d1a6640 --- /dev/null +++ b/docs/en/guide/dashboard.md @@ -0,0 +1,18 @@ +# Dashboard + +Dashboard is the first page to check after deployment. + +## What it shows + +- **Credential totals**: total and currently valid CodeBuddy accounts. +- **API endpoint**: the `/v1` base URL used by clients. +- **Recent usage**: request and token summaries for the selected period. + +## Typical workflow + +1. Open `/dashboard` and confirm the service is reachable. +2. If the valid credential count is zero, open **Credentials** and authorize an account. +3. Copy the API endpoint shown on the page. +4. Create an access key under **Credentials**, then configure your SDK with the endpoint and key. + +Dashboard is a read-only overview; use the other console tabs to make changes. diff --git a/docs/en/guide/debug.md b/docs/en/guide/debug.md new file mode 100644 index 0000000..fff5f4c --- /dev/null +++ b/docs/en/guide/debug.md @@ -0,0 +1,12 @@ +# Debug + +Debug records sanitized proxy activity for troubleshooting. + +## Capture a problem + +1. Enable debug logging and choose a retention limit. +2. Reproduce the failing request once. +3. Return to **Debug** and open the newest entry. +4. Compare the request method, model, status, duration, and error summary. + +Tokens, cookies, API keys, authorization headers, and user identifiers are redacted. Debug logs are diagnostic data, not a replacement for application metrics. diff --git a/docs/en/guide/quick-start.md b/docs/en/guide/quick-start.md new file mode 100644 index 0000000..0e16e20 --- /dev/null +++ b/docs/en/guide/quick-start.md @@ -0,0 +1,18 @@ +# Quick Start + +## Docker with SQLite + +```bash +docker run -d --name codebuddy2api --restart unless-stopped -p 8001:8001 \ + -e CODEBUDDY_STORAGE_BACKEND=sqlite \ + -e CODEBUDDY_STORAGE_ENCRYPTION_KEY='replace-with-a-long-random-secret' \ + -v "$(pwd)/.codebuddy_data:/app/.codebuddy_data" \ + -v "$(pwd)/.codebuddy_creds:/app/.codebuddy_creds" \ + ghcr.io/orangeboychen/codebuddy2api:latest +``` + +Open `http://127.0.0.1:8001/dashboard`. SQLite is recommended for a single instance; use PostgreSQL for multiple instances. + +## Local documentation + +From the repository root, run `bun install`, `bun install --cwd docs`, then `bun run docs:dev`. diff --git a/docs/en/guide/settings.md b/docs/en/guide/settings.md new file mode 100644 index 0000000..40abb6b --- /dev/null +++ b/docs/en/guide/settings.md @@ -0,0 +1,13 @@ +# Settings + +Settings controls runtime behavior without rebuilding the container. + +Common fields include: + +- **CodeBuddy API endpoint**: upstream service URL. +- **Authentication mode**: automatic or token-based upstream authentication. +- **Network environment**: internal, IOA, or public routing. +- **Log level**: server logging verbosity. +- **Admin passkey RP ID**: hostname used by WebAuthn passkeys. + +Change one setting at a time, save it, and verify the result in **Dashboard**, **API Test**, or **Debug**. The passkey RP ID must be a hostname only and must match the browser-visible origin. diff --git a/docs/en/guide/usage.md b/docs/en/guide/usage.md new file mode 100644 index 0000000..f0a430e --- /dev/null +++ b/docs/en/guide/usage.md @@ -0,0 +1,17 @@ +# Usage + +Usage helps you understand traffic and token consumption. + +## Filter the report + +1. Choose a time range. +2. Optionally filter by credential or access key. +3. Read the summary cards for calls, total tokens, and cache-hit tokens. + +## Investigate a spike + +1. Start with the call and token trend charts. +2. Select the model or credential with the largest change in the table. +3. Compare the result with **Debug** logs to connect usage to individual requests. + +Usage data is stored by the configured storage backend and is retained according to the server settings. diff --git a/docs/en/index.md b/docs/en/index.md new file mode 100644 index 0000000..e3eea28 --- /dev/null +++ b/docs/en/index.md @@ -0,0 +1,29 @@ +--- +layout: home + +hero: + name: CodeBuddy2API + text: CodeBuddy management and API service + tagline: Self-host CodeBuddy and manage credentials, keys, and usage. + image: + src: /codebuddy2api/codebuddy-dashboard.png + alt: CodeBuddy admin console + actions: + - theme: brand + text: Get started + link: /en/guide/quick-start + - theme: alt + text: View on GitHub + link: https://github.com/orangeboyChen/codebuddy2api + +features: + - title: Compatible APIs + details: OpenAI-compatible and Anthropic-compatible endpoints. + - title: Admin console + details: Manage credentials, access keys, usage, debug logs, and settings. + - title: Flexible storage + details: Zero-config file storage, SQLite for single instances, and PostgreSQL for multiple instances. +--- + +CodeBuddy2API provides a self-hosted gateway and admin console for CodeBuddy. +Run it locally, with Docker, or on Kubernetes. diff --git a/docs/guide/account-status.md b/docs/guide/account-status.md new file mode 100644 index 0000000..365f7be --- /dev/null +++ b/docs/guide/account-status.md @@ -0,0 +1,5 @@ +# Account Status + +Account Status 用于快速检查每个账号的状态。 + +查看账号邮箱、用户 ID、过期状态和可用模型。遇到请求失败时,先在这里确认凭据没有过期,再检查 Debug 日志。 diff --git a/docs/guide/api-test.md b/docs/guide/api-test.md new file mode 100644 index 0000000..c7a99d0 --- /dev/null +++ b/docs/guide/api-test.md @@ -0,0 +1,9 @@ +# API Test + +API Test 可以在管理控制台内发送一次测试请求。 + +1. 选择有效凭据和模型。 +2. 输入消息并选择是否使用流式响应。 +3. 点击发送,在结果区域查看响应。 + +客户端接入时,使用 `/v1` 作为 base URL,并通过 `Authorization: Bearer ` 认证。 diff --git a/docs/guide/credentials.md b/docs/guide/credentials.md new file mode 100644 index 0000000..da3d366 --- /dev/null +++ b/docs/guide/credentials.md @@ -0,0 +1,9 @@ +# Credentials + +Credentials 用于管理 CodeBuddy 账号。 + +1. 点击添加或登录,按页面提示完成 OAuth 流程。 +2. 刷新模型列表,确认账号支持的模型。 +3. 对过期账号重新授权,或删除不再使用的凭据。 + +凭据保存在服务端,不会发送到 GitHub Pages 文档站。 diff --git a/docs/guide/dashboard.md b/docs/guide/dashboard.md new file mode 100644 index 0000000..19a80b1 --- /dev/null +++ b/docs/guide/dashboard.md @@ -0,0 +1,9 @@ +# Dashboard + +Dashboard 是总览页,用来确认服务是否正常运行。 + +1. 查看凭据总数和有效凭据数。 +2. 查看近期请求量和 token 使用量。 +3. 复制 API 基础地址,供客户端配置使用。 + +如果没有有效凭据,请先打开 Credentials 完成 CodeBuddy 登录。 diff --git a/docs/guide/debug.md b/docs/guide/debug.md new file mode 100644 index 0000000..aa9d012 --- /dev/null +++ b/docs/guide/debug.md @@ -0,0 +1,9 @@ +# Debug + +Debug 用于查看代理请求和上游响应的脱敏日志。 + +1. 开启调试记录并设置保留数量。 +2. 重现一次请求问题。 +3. 查看状态码、耗时、模型和错误摘要。 + +日志会隐藏 API key、token、cookie 和用户标识等敏感信息。 diff --git a/docs/guide/quick-start.md b/docs/guide/quick-start.md index 58649f2..db49e30 100644 --- a/docs/guide/quick-start.md +++ b/docs/guide/quick-start.md @@ -12,13 +12,15 @@ bun run docs:dev 然后访问 `http://127.0.0.1:3000/dashboard`。 -## Docker 运行 +## Docker 运行(SQLite) ```bash docker run -d \ --name codebuddy2api \ --restart unless-stopped \ -p 8001:8001 \ + -e CODEBUDDY_STORAGE_BACKEND=sqlite \ + -e CODEBUDDY_STORAGE_ENCRYPTION_KEY='replace-with-a-long-random-secret' \ -v "$(pwd)/.codebuddy_data:/app/.codebuddy_data" \ -v "$(pwd)/.codebuddy_creds:/app/.codebuddy_creds" \ ghcr.io/orangeboyChen/codebuddy2api:latest @@ -28,7 +30,7 @@ docker run -d \ ## 存储选择 -当前默认后端是 `file`,适合零配置启动和兼容已有部署。单实例生产环境推荐使用 SQLite: +当前默认后端仍是 `file`,用于兼容已有部署。单实例生产环境推荐显式启用 SQLite: ```dotenv CODEBUDDY_STORAGE_BACKEND=sqlite diff --git a/docs/guide/settings.md b/docs/guide/settings.md new file mode 100644 index 0000000..ec676d9 --- /dev/null +++ b/docs/guide/settings.md @@ -0,0 +1,5 @@ +# Settings + +Settings 用于修改运行时配置。 + +常用设置包括 CodeBuddy API endpoint、认证模式、网络环境、日志级别和管理员 Passkey RP ID。修改后重新打开相关页面确认配置已生效。 diff --git a/docs/guide/usage.md b/docs/guide/usage.md new file mode 100644 index 0000000..16f70fb --- /dev/null +++ b/docs/guide/usage.md @@ -0,0 +1,7 @@ +# Usage + +Usage 用于分析调用情况。 + +1. 选择时间范围、凭据或访问密钥。 +2. 查看调用次数、总 token 和缓存命中 token。 +3. 使用趋势图定位流量变化,再用明细表查看模型维度。 diff --git a/docs/index.md b/docs/index.md index 1833b3b..6086f2b 100644 --- a/docs/index.md +++ b/docs/index.md @@ -3,11 +3,14 @@ layout: home hero: name: CodeBuddy2API - text: OpenAI-compatible CodeBuddy gateway - tagline: Self-host CodeBuddy behind a familiar API surface. + text: CodeBuddy 管理与 API 服务 + tagline: 自托管 CodeBuddy,统一管理凭据、密钥和用量。 + image: + src: /codebuddy2api/codebuddy-dashboard.png + alt: CodeBuddy 管理界面 actions: - theme: brand - text: 快速开始 + text: 开始使用 link: /guide/quick-start - theme: alt text: 查看 GitHub @@ -24,7 +27,7 @@ features: ## 这是什么? -CodeBuddy2API 将 CodeBuddy 接入常见的 LLM 客户端和 SDK。你可以在本地、Docker 或 Kubernetes 中运行它,并通过统一的 API 地址接入现有工具。 +CodeBuddy2API 提供 CodeBuddy 的 OpenAI-compatible 和 Anthropic-compatible API,并配套一个管理控制台。你可以在本地、Docker 或 Kubernetes 中运行它。 ## 开始使用 @@ -33,9 +36,13 @@ docker run -d \ --name codebuddy2api \ --restart unless-stopped \ -p 8001:8001 \ + -e CODEBUDDY_STORAGE_BACKEND=sqlite \ + -e CODEBUDDY_STORAGE_ENCRYPTION_KEY='replace-with-a-long-random-secret' \ -v "$(pwd)/.codebuddy_data:/app/.codebuddy_data" \ -v "$(pwd)/.codebuddy_creds:/app/.codebuddy_creds" \ ghcr.io/orangeboychen/codebuddy2api:latest ``` 启动后访问 `http://127.0.0.1:8001/dashboard`。 + +SQLite 是单实例部署的推荐选择。多实例部署请改用 PostgreSQL。 diff --git a/docs/ja/guide/account-status.md b/docs/ja/guide/account-status.md new file mode 100644 index 0000000..f91bd80 --- /dev/null +++ b/docs/ja/guide/account-status.md @@ -0,0 +1,5 @@ +# Account Status + +Account Status は CodeBuddy アカウントごとの状態確認ページです。 + +メールアドレスまたはユーザー ID、期限切れ状態、利用可能なモデルを確認できます。リクエストが失敗した場合は、期限切れでないこと、モデルが一覧にあることを確認してから **Debug** を開きます。 diff --git a/docs/ja/guide/api-test.md b/docs/ja/guide/api-test.md new file mode 100644 index 0000000..0e23c2d --- /dev/null +++ b/docs/ja/guide/api-test.md @@ -0,0 +1,11 @@ +# API Test + +API Test では外部 SDK を使わずにコンソールからリクエストを送信できます。 + +1. 有効な認証情報を選択します。 +2. 利用可能なモデルを選択します。 +3. メッセージを入力します。 +4. ストリーミングのオン・オフを選択します。 +5. **Send** を押して結果を確認します。 + +外部クライアントは管理アクセスキーで `/v1/chat/completions`、`/v1/responses`、または `/v1/messages` を呼び出します。 diff --git a/docs/ja/guide/credentials.md b/docs/ja/guide/credentials.md new file mode 100644 index 0000000..38c1f18 --- /dev/null +++ b/docs/ja/guide/credentials.md @@ -0,0 +1,11 @@ +# Credentials + +Credentials はプロキシが使用する CodeBuddy アカウントを管理します。 + +1. **Credentials** を開きます。 +2. OAuth ログインを開始し、ブラウザで認証を完了します。 +3. コンソールに戻り、一覧を更新します。 +4. 期限切れのアカウントは再認証します。 +5. アクセスキーを作成し、表示された秘密値を安全な場所へ一度だけ保存します。 + +API クライアントは `Authorization: Bearer ` または `x-api-key: ` を送信します。認証情報ファイルやキーを静的ドキュメントへ含めないでください。 diff --git a/docs/ja/guide/dashboard.md b/docs/ja/guide/dashboard.md new file mode 100644 index 0000000..061139b --- /dev/null +++ b/docs/ja/guide/dashboard.md @@ -0,0 +1,18 @@ +# Dashboard + +Dashboard はデプロイ後に最初に確認するページです。 + +## 表示内容 + +- **認証情報数**:登録済みのアカウント数と有効なアカウント数。 +- **API エンドポイント**:クライアントが使う `/v1` のベース URL。 +- **利用状況**:選択期間のリクエスト数とトークン概要。 + +## 基本手順 + +1. `/dashboard` を開き、サービスに接続できることを確認します。 +2. 有効な認証情報が 0 件なら **Credentials** でアカウントを認証します。 +3. 画面に表示された API エンドポイントをコピーします。 +4. **Credentials** でアクセスキーを作成し、SDK に URL とキーを設定します。 + +Dashboard は概要表示用です。変更は他のコンソールタブで行います。 diff --git a/docs/ja/guide/debug.md b/docs/ja/guide/debug.md new file mode 100644 index 0000000..b8c5c59 --- /dev/null +++ b/docs/ja/guide/debug.md @@ -0,0 +1,9 @@ +# Debug + +Debug はプロキシの動作をサニタイズして記録するトラブルシューティング用ページです。 + +1. デバッグ記録を有効にし、保持件数を設定します。 +2. 問題のリクエストを一度再現します。 +3. 最新ログを開き、メソッド、モデル、ステータス、時間、エラー概要を確認します。 + +トークン、Cookie、API キー、認証ヘッダー、ユーザー識別子はマスクされます。 diff --git a/docs/ja/guide/quick-start.md b/docs/ja/guide/quick-start.md new file mode 100644 index 0000000..9aa63b3 --- /dev/null +++ b/docs/ja/guide/quick-start.md @@ -0,0 +1,18 @@ +# クイックスタート + +## SQLite を使った Docker 起動 + +```bash +docker run -d --name codebuddy2api --restart unless-stopped -p 8001:8001 \ + -e CODEBUDDY_STORAGE_BACKEND=sqlite \ + -e CODEBUDDY_STORAGE_ENCRYPTION_KEY='replace-with-a-long-random-secret' \ + -v "$(pwd)/.codebuddy_data:/app/.codebuddy_data" \ + -v "$(pwd)/.codebuddy_creds:/app/.codebuddy_creds" \ + ghcr.io/orangeboyChen/codebuddy2api:latest +``` + +`http://127.0.0.1:8001/dashboard` を開きます。単一インスタンスには SQLite、複数インスタンスには PostgreSQL を推奨します。 + +## ドキュメントのローカル起動 + +リポジトリのルートで `bun install`、`bun install --cwd docs`、`bun run docs:dev` を実行します。 diff --git a/docs/ja/guide/settings.md b/docs/ja/guide/settings.md new file mode 100644 index 0000000..bed5a2d --- /dev/null +++ b/docs/ja/guide/settings.md @@ -0,0 +1,5 @@ +# Settings + +Settings ではコンテナを再ビルドせずに実行時設定を変更できます。 + +主な項目は CodeBuddy API endpoint、認証モード、ネットワーク環境、ログレベル、管理者 Passkey RP ID です。1 項目ずつ保存し、**Dashboard**、**API Test**、**Debug** で反映結果を確認してください。Passkey RP ID はスキームやポートを含まないホスト名にします。 diff --git a/docs/ja/guide/usage.md b/docs/ja/guide/usage.md new file mode 100644 index 0000000..793e751 --- /dev/null +++ b/docs/ja/guide/usage.md @@ -0,0 +1,9 @@ +# Usage + +Usage ではトラフィックとトークン消費を確認できます。 + +1. 期間を選択します。 +2. 必要に応じて認証情報またはアクセスキーで絞り込みます。 +3. 呼び出し数、総トークン数、キャッシュヒットトークンを確認します。 +4. グラフで変化を見つけ、表でモデルや認証情報を特定します。 +5. 詳細な原因は **Debug** のログと照合します。 diff --git a/docs/ja/index.md b/docs/ja/index.md new file mode 100644 index 0000000..69fdf49 --- /dev/null +++ b/docs/ja/index.md @@ -0,0 +1,28 @@ +--- +layout: home + +hero: + name: CodeBuddy2API + text: CodeBuddy 管理・API サービス + tagline: CodeBuddy をセルフホストし、認証情報・キー・利用量を管理します。 + image: + src: /codebuddy2api/codebuddy-dashboard.png + alt: CodeBuddy 管理コンソール + actions: + - theme: brand + text: はじめる + link: /ja/guide/quick-start + - theme: alt + text: GitHub + link: https://github.com/orangeboyChen/codebuddy2api + +features: + - title: 互換 API + details: OpenAI 互換と Anthropic 互換のエンドポイントを提供します。 + - title: 管理コンソール + details: 認証情報、アクセスキー、利用量、デバッグログ、設定を管理します。 + - title: 柔軟なストレージ + details: ゼロ設定のファイル、単一インスタンス向け SQLite、複数インスタンス向け PostgreSQL。 +--- + +CodeBuddy2API は CodeBuddy 向けのセルフホスト型ゲートウェイと管理コンソールです。ローカル、Docker、Kubernetes で実行できます。 diff --git a/docs/public/codebuddy-dashboard.png b/docs/public/codebuddy-dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..6ae5347ff141032ddb1947732b6f4dd5d8d36765 GIT binary patch literal 549080 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

tUNv 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