diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 00000000..b2cfbb4a --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,64 @@ +name: Deploy ReMe documentation + +on: + push: + branches: [main] + paths: + - "github-pages/**" + - "docs/**" + - "README.md" + - "README_ZH.md" + - "skills/reme_memory/SKILL.md" + - "AGENTS.md" + - ".github/workflows/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 + uses: actions/checkout@v6 + + - name: Setup Node.js + uses: actions/setup-node@v6 + with: + node-version: "22.13" + cache: npm + cache-dependency-path: github-pages/package-lock.json + + - name: Install dependencies + working-directory: github-pages + run: npm ci + + - name: Build documentation + working-directory: github-pages + run: npm run build + + - name: Configure Pages + uses: actions/configure-pages@v5 + + - name: Upload Pages artifact + uses: actions/upload-pages-artifact@v4 + with: + path: github-pages/dist + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy + id: deployment + uses: actions/deploy-pages@v4 diff --git a/README.md b/README.md index 816b0dec..7474a1f0 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ PyPI Downloads GitHub commit activity License - Documentation + Documentation English 简体中文 GitHub Stars @@ -422,7 +422,7 @@ are mainly for maintenance, debugging, or advanced integration. Run `reme help` - **Pre-submit checks**: Before submitting a PR, try to run `pre-commit run --all-files` and `pytest`. If tests that depend on LLMs, embeddings, or external services cannot run, explain that in the PR. - **Get help**: Use [GitHub Issues](https://github.com/agentscope-ai/ReMe/issues) for bugs and feature requests. Project - documentation is available at [https://docs.agentscope.io/reme](https://docs.agentscope.io/reme). + documentation is available at [https://reme.agentscope.io](https://reme.agentscope.io). ### Contributors @@ -438,7 +438,7 @@ Thanks to everyone who has contributed to ReMe: @software{ReMe2026, title = {Remember me, Refine me: Memory Management Kit for Agents}, author = {ReMe Team}, - url = {https://docs.agentscope.io/reme}, + url = {https://reme.agentscope.io}, year = {2026} } ``` diff --git a/README_ZH.md b/README_ZH.md index 1add2f23..a5b07396 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -8,7 +8,7 @@ PyPI Downloads GitHub commit activity License - 文档 + 文档 English 简体中文 GitHub Stars @@ -398,7 +398,7 @@ frontmatter 和文件操作接口主要用于维护、调试或高级集成。 - **提交前检查**:提交 PR 前请尽量运行 `pre-commit run --all-files` 和 `pytest`;如有依赖 LLM、embedding 或外部服务的测试无法运行,请在 PR 中说明。 - **获取帮助**:如需反馈 Bug 或功能请求,请使用 [GitHub Issues](https://github.com/agentscope-ai/ReMe/issues);项目文档见 - [https://docs.agentscope.io/reme](https://docs.agentscope.io/reme)。 + [https://reme.agentscope.io](https://reme.agentscope.io)。 ### 贡献者 @@ -414,7 +414,7 @@ frontmatter 和文件操作接口主要用于维护、调试或高级集成。 @software{ReMe2026, title = {Remember me, Refine me: Memory Management Kit for Agents}, author = {ReMe Team}, - url = {https://docs.agentscope.io/reme}, + url = {https://reme.agentscope.io}, year = {2026} } ``` diff --git a/docs/en/contributing.md b/docs/en/contributing.md index 571af317..8671c292 100644 --- a/docs/en/contributing.md +++ b/docs/en/contributing.md @@ -218,7 +218,7 @@ Documentation should: - Bugs and feature requests: [GitHub Issues](https://github.com/agentscope-ai/ReMe/issues) - Project home: [GitHub Repository](https://github.com/agentscope-ai/ReMe) -- Documentation site: [https://docs.agentscope.io/reme](https://docs.agentscope.io/reme) +- Documentation site: [https://reme.agentscope.io](https://reme.agentscope.io) --- diff --git a/docs/en/reme-blog.md b/docs/en/reme-blog.md index 32fd8b56..5fbb1234 100644 --- a/docs/en/reme-blog.md +++ b/docs/en/reme-blog.md @@ -14,7 +14,7 @@ That is exactly what ReMe sets out to do. GitHub: [https://github.com/agentscope-ai/ReMe](https://github.com/agentscope-ai/ReMe) -Documentation: [https://docs.agentscope.io/reme](https://docs.agentscope.io/reme) +Documentation: [https://reme.agentscope.io](https://reme.agentscope.io)

ReMe self-evolving personal knowledge base and public benchmark results diff --git a/docs/zh/contributing.md b/docs/zh/contributing.md index 068f501e..495db1f0 100644 --- a/docs/zh/contributing.md +++ b/docs/zh/contributing.md @@ -199,7 +199,7 @@ docs/ - Bugs 和功能请求:[GitHub Issues](https://github.com/agentscope-ai/ReMe/issues) - 项目主页:[GitHub Repository](https://github.com/agentscope-ai/ReMe) -- 文档站点:[https://docs.agentscope.io/reme](https://docs.agentscope.io/reme) +- 文档站点:[https://reme.agentscope.io](https://reme.agentscope.io) --- diff --git a/docs/zh/reme-blog.md b/docs/zh/reme-blog.md index 0a2a8d82..b07e4649 100644 --- a/docs/zh/reme-blog.md +++ b/docs/zh/reme-blog.md @@ -15,7 +15,7 @@ Markdown 记忆,并从中提炼值得继续关注的线索。** 项目地址:[https://github.com/agentscope-ai/ReMe](https://github.com/agentscope-ai/ReMe) -项目文档:[https://docs.agentscope.io/reme](https://docs.agentscope.io/reme) +项目文档:[https://reme.agentscope.io](https://reme.agentscope.io)

ReMe 自进化个人知识库与公开基准结果 diff --git a/github-pages/.gitignore b/github-pages/.gitignore new file mode 100644 index 00000000..e61f3496 --- /dev/null +++ b/github-pages/.gitignore @@ -0,0 +1,3 @@ +node_modules/ +dist/ +.generated/ diff --git a/github-pages/README.md b/github-pages/README.md new file mode 100644 index 00000000..391d7733 --- /dev/null +++ b/github-pages/README.md @@ -0,0 +1,86 @@ +# ReMe GitHub Pages + +This directory contains the standalone Vite documentation site published at . The +GitHub Pages fallback is . It does not depend on the ReMe Studio application in +`website/`. + +## Requirements + +- Node.js 22.13 or newer +- npm + +## Local development + +From the repository root: + +```bash +cd github-pages +npm install +npm run dev +``` + +Open the URL printed by Vite, normally . The development server watches the frontend source. +When a repository Markdown file changes, restart the development command to regenerate the documentation content. + +For subsequent installs or CI-compatible dependency installation, use: + +```bash +npm ci +``` + +## Preview the production build + +Build and start the preview server: + +```bash +npm run build +npm run preview +``` + +Open the URL printed by Vite, normally . Production assets use relative paths so the same build +works on both the custom domain and the GitHub Pages project path. + +The generated `dist/` and `.generated/` directories are disposable build output and are excluded from Git. + +## Documentation sources + +The build script reads the canonical repository files directly. Do not edit generated copies under `.generated/` or +`dist/`. + +- `README.md` and `README_ZH.md`: project introductions +- `docs/en/` and `docs/zh/`: English and Chinese guides +- `docs/figure/`: documentation images +- `skills/reme_memory/SKILL.md`: ReMe Memory skill guide +- `AGENTS.md`: repository development guide + +To add or reorganize a document in the site navigation, update +[`scripts/generate-content.mjs`](./scripts/generate-content.mjs). Presentation and interaction code lives in `src/`. + +## Project structure + +```text +github-pages/ +├── index.html +├── package.json +├── scripts/ +│ └── generate-content.mjs +├── src/ +│ ├── main.js +│ └── styles.css +└── vite.config.js +``` + +## Deployment + +The repository workflow `.github/workflows/pages.yml` builds this directory and publishes `dist/` to GitHub Pages. +It runs after relevant documentation or site files change on `main`, and it can also be started manually from the +GitHub Actions page. + +The repository's **Settings → Pages → Build and deployment → Source** must be set to **GitHub Actions**. Its custom +domain must be set to `reme.agentscope.io`; `public/CNAME` preserves that domain in the published artifact. + +Useful links: + +- ReMe documentation: +- GitHub Pages fallback: +- ReMe repository: diff --git a/github-pages/index.html b/github-pages/index.html new file mode 100644 index 00000000..3655d5ee --- /dev/null +++ b/github-pages/index.html @@ -0,0 +1,17 @@ + + + + + + + + ReMe Documentation + + +

+ + + diff --git a/github-pages/package-lock.json b/github-pages/package-lock.json new file mode 100644 index 00000000..526dddd0 --- /dev/null +++ b/github-pages/package-lock.json @@ -0,0 +1,1157 @@ +{ + "name": "reme-github-pages", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "reme-github-pages", + "version": "0.1.0", + "dependencies": { + "dompurify": "^3.2.6", + "marked": "^16.2.1" + }, + "devDependencies": { + "vite": "^7.1.1" + }, + "engines": { + "node": ">=22.13.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz", + "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/android-arm/-/android-arm-0.28.2.tgz", + "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz", + "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/android-x64/-/android-x64-0.28.2.tgz", + "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz", + "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz", + "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz", + "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz", + "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz", + "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz", + "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz", + "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz", + "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz", + "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz", + "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz", + "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz", + "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz", + "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz", + "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz", + "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz", + "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz", + "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz", + "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz", + "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz", + "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz", + "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz", + "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@napi-rs/lzma-linux-x64-gnu": { + "version": "1.5.1", + "resolved": "https://registry.anpm.alibaba-inc.com/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz", + "integrity": "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^22.20 || ^24.12 || >=25" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.4.tgz", + "integrity": "sha512-RrPokAb7dmbxFoeO3TloqHyOjgye8RkBhSqmp4aJMIex4c9r46ZstPnleDQOq1t46VOVjwIuwNogIqbodV1Vvg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.4.tgz", + "integrity": "sha512-JKuJc+pnpks2pjy7L/N3v/cAkZxYlnmuZoD840ldbMI5KDbC4iO9NKwPKYdjYFCMAIIlBzYSFHxIJVYzRo2/8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.4.tgz", + "integrity": "sha512-krw5uS2STmvJ02x0uTXHbqQNuz+9eZ1iw+qXk9dmW2gvV4jV7O2hEoOnuhFrpOPiel1mBFtqbxYZZtC46hXLOw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.4.tgz", + "integrity": "sha512-wsTxtgApb4PrOsNJIm0FZ1h3WvCC+k9uxLJ4ad75hgoS4NiRes2SoJFlDAyMwiUY8IssDqGcHbXuN0sx1tfF1A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.4.tgz", + "integrity": "sha512-GUOnQlyZe3yAXhWOtOMsn5Qkrv5E5mZXa0thbARWi5Ei2szlVXJFQhddZ4HbAzh8q92w5twp+CQvs/eFanz9YQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.4.tgz", + "integrity": "sha512-/Y7f3QuxjzPKsjA/rfEDa3+0vXqyjmJ50Ln8dPpCmWkKTrUoWHG1cWhTqaAMLob2m2nESWuC7yGrREz019Ztqg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.4.tgz", + "integrity": "sha512-81wiiX3v7aqy+T+bT61TJ78yJjRquqFFTTbAPt08imfQQzkPIW8t6aJbkTagtCCrXMNc9D66+geqlK7ydLPNqA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.4.tgz", + "integrity": "sha512-9kmDIvNZqdoHOBZgNtpTBeLWYO/LVipM3H/j62P8848/l/VPEQL6N3uxU9pvP1oZAsXyC2MEnFP3ovRjo7WYNQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.4.tgz", + "integrity": "sha512-CcnXHWnXg69g+DX5VWL3FHts3qMRN2uVEHX+BZvGLdd07/gXkn3ePjYtO1LDJvxkGKVHMclKBRa1QUTH+6toYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.4.tgz", + "integrity": "sha512-iFOibiHnTRuhrWLlRsOQFdZJJIa7S8OwkneJr4ocALP16u5yk6lWLINFwhHaEqBFMsKDUZofLkGos7+CPzGB3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.4.tgz", + "integrity": "sha512-XnWYMI7euHlb5a871xPja+Gm7DRCFU+FGRrtS2sMq9N8FvqtpagUy6gD4YOemC5MRk9xbh8+jYMEJbigFQwsgA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.4.tgz", + "integrity": "sha512-qGDAlO0U8xedCcsdRm9oaoQY8DAx/QT7uIxJWhCdx0ceIWX783UC9QSYkdpzAe29wNiVfp24+bZdQmn49o45SQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.4.tgz", + "integrity": "sha512-ru4H6ezD7ysA5EiEK6qkkaEb4modH8CTej6kUy/gQi20u3kB3G7Zn8snXXkeJSCOFKG/rbPPtM/+9Wgas1961w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.4.tgz", + "integrity": "sha512-2W4MO5WQVJnbJaZdvDb9rhBDuFU1nKIepPFpJUBsTh2k1YY2g+ODViaWuyOAjQ5cOP7NvrvLzt3wvHOoiAvc7w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.4.tgz", + "integrity": "sha512-+fxjfuoAmVMCYV5QyjoIpu0cp5DOiOTeqYFk1AVaxGr+/ravWLX89XfQmptsoWcaVy/TGf2hexzbUOrCQIL1CQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.4.tgz", + "integrity": "sha512-jTn8JfHGL4djjFxPuM06LmNUJDsst2jeVlsd9OmIH6zc5sC9K6rIuO4YajXatLUpBmBKl6b35ro1QZocLi+tcA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.4.tgz", + "integrity": "sha512-oCJCJL4pXsoDcP2QZ+JVlPTIRc6266zsIaeJJsWImmF7HO0W8nb6HuSgZlMWxJwaPf8ehbSw8yo0EUw925hKsA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.4.tgz", + "integrity": "sha512-W69hukhZ3KKNRCaMIEzKvcFye42hh0FE1+YoYaf5+Ikacuftoco6yO/xouz0hc5d5W/s3yBro5jRiuEE/Q5vUw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.4.tgz", + "integrity": "sha512-qiXbGG2jkjXhzXpsFZSR2Xpb8DN/UaxYsbb/STbuR/6fpaDgRmmaq1B/LmtF2wQFOFOSsK2jdE0RZ3a0zHn4QA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.4.tgz", + "integrity": "sha512-nWeM//hxv8mIo6jD7Hu4o48DVmV9pbV6gsKaWU+4NFyqHoPKwrkRiZGLKUhOBk8qNmDmpwFtPKg80Bo/Tn4xiQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.4.tgz", + "integrity": "sha512-s62SQ/vgsRSvMwDkOEfTqfgASF0f26ZNaQuTA6Aok5lrikf89yI2W0gFHvZb2Jpgc6N8JnOKZgCK2iciO3CsxQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.4.tgz", + "integrity": "sha512-J6wGf8TVGbXJq+HH+ttTvrcfNKPbuZecV6KT1B8I18BC5IURUh5kl4Yl5OEP5eFIUoI5BWxCsyYMhFsDx8kekw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.4.tgz", + "integrity": "sha512-zmfrQd/0wu6oJs8Vq8KwY/YtsKSsLtKe/HwAP4Wqy8LhWjeT55fHRAkOhYQ12wI3ayS4Tt12d5CDRD7N96SAYQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.4.tgz", + "integrity": "sha512-qPzHqdj9rfUD+w79dtE07zi/kFwKyCJqplp5K5ygeLTp7jLpAoc16OAH39HSmRC9UpozaecsleI8uAdEj6v2yw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.4.tgz", + "integrity": "sha512-zD6NdeWEByGE9QF9vCrlJ5YQB4oq9q91kPZS37Jwj5hOkvR1lTBSpsKhKDw4IJtbQ35LsTS1HD9DZYGKIshU1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.anpm.alibaba-inc.com/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.anpm.alibaba-inc.com/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/dompurify": { + "version": "3.4.13", + "resolved": "https://registry.anpm.alibaba-inc.com/dompurify/-/dompurify-3.4.13.tgz", + "integrity": "sha512-2vmYIoqjze2d+kakP8S/nS5shfsl587kzwEjcGlTdiksUVgFHnFCsLYDVj/JNqJVOQZGSYBTmuycv0PodwmnMQ==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/esbuild": { + "version": "0.28.2", + "resolved": "https://registry.anpm.alibaba-inc.com/esbuild/-/esbuild-0.28.2.tgz", + "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.2", + "@esbuild/android-arm": "0.28.2", + "@esbuild/android-arm64": "0.28.2", + "@esbuild/android-x64": "0.28.2", + "@esbuild/darwin-arm64": "0.28.2", + "@esbuild/darwin-x64": "0.28.2", + "@esbuild/freebsd-arm64": "0.28.2", + "@esbuild/freebsd-x64": "0.28.2", + "@esbuild/linux-arm": "0.28.2", + "@esbuild/linux-arm64": "0.28.2", + "@esbuild/linux-ia32": "0.28.2", + "@esbuild/linux-loong64": "0.28.2", + "@esbuild/linux-mips64el": "0.28.2", + "@esbuild/linux-ppc64": "0.28.2", + "@esbuild/linux-riscv64": "0.28.2", + "@esbuild/linux-s390x": "0.28.2", + "@esbuild/linux-x64": "0.28.2", + "@esbuild/netbsd-arm64": "0.28.2", + "@esbuild/netbsd-x64": "0.28.2", + "@esbuild/openbsd-arm64": "0.28.2", + "@esbuild/openbsd-x64": "0.28.2", + "@esbuild/openharmony-arm64": "0.28.2", + "@esbuild/sunos-x64": "0.28.2", + "@esbuild/win32-arm64": "0.28.2", + "@esbuild/win32-ia32": "0.28.2", + "@esbuild/win32-x64": "0.28.2" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.anpm.alibaba-inc.com/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.anpm.alibaba-inc.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/marked": { + "version": "16.4.2", + "resolved": "https://registry.anpm.alibaba-inc.com/marked/-/marked-16.4.2.tgz", + "integrity": "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/nanoid": { + "version": "3.3.18", + "resolved": "https://registry.anpm.alibaba-inc.com/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.anpm.alibaba-inc.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.anpm.alibaba-inc.com/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.26", + "resolved": "https://registry.anpm.alibaba-inc.com/postcss/-/postcss-8.5.26.tgz", + "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.17", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rollup": { + "version": "4.62.4", + "resolved": "https://registry.anpm.alibaba-inc.com/rollup/-/rollup-4.62.4.tgz", + "integrity": "sha512-RXOqwaPsBGjMNMa4sQjDjHieHEZDFoj/Rdr46l2MU5DfEs16wHJPC2RPTPHWhNl+M3aI472LLqFkFKut4SblOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.9" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@napi-rs/lzma-linux-x64-gnu": "1.5.1", + "@rollup/rollup-android-arm-eabi": "4.62.4", + "@rollup/rollup-android-arm64": "4.62.4", + "@rollup/rollup-darwin-arm64": "4.62.4", + "@rollup/rollup-darwin-x64": "4.62.4", + "@rollup/rollup-freebsd-arm64": "4.62.4", + "@rollup/rollup-freebsd-x64": "4.62.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.62.4", + "@rollup/rollup-linux-arm-musleabihf": "4.62.4", + "@rollup/rollup-linux-arm64-gnu": "4.62.4", + "@rollup/rollup-linux-arm64-musl": "4.62.4", + "@rollup/rollup-linux-loong64-gnu": "4.62.4", + "@rollup/rollup-linux-loong64-musl": "4.62.4", + "@rollup/rollup-linux-ppc64-gnu": "4.62.4", + "@rollup/rollup-linux-ppc64-musl": "4.62.4", + "@rollup/rollup-linux-riscv64-gnu": "4.62.4", + "@rollup/rollup-linux-riscv64-musl": "4.62.4", + "@rollup/rollup-linux-s390x-gnu": "4.62.4", + "@rollup/rollup-linux-x64-gnu": "4.62.4", + "@rollup/rollup-linux-x64-musl": "4.62.4", + "@rollup/rollup-openbsd-x64": "4.62.4", + "@rollup/rollup-openharmony-arm64": "4.62.4", + "@rollup/rollup-win32-arm64-msvc": "4.62.4", + "@rollup/rollup-win32-ia32-msvc": "4.62.4", + "@rollup/rollup-win32-x64-gnu": "4.62.4", + "@rollup/rollup-win32-x64-msvc": "4.62.4", + "fsevents": "~2.3.2" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.anpm.alibaba-inc.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.anpm.alibaba-inc.com/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/vite": { + "version": "7.3.6", + "resolved": "https://registry.anpm.alibaba-inc.com/vite/-/vite-7.3.6.tgz", + "integrity": "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0 || ^0.28.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + } + } +} diff --git a/github-pages/package.json b/github-pages/package.json new file mode 100644 index 00000000..e3f19c24 --- /dev/null +++ b/github-pages/package.json @@ -0,0 +1,21 @@ +{ + "name": "reme-github-pages", + "version": "0.1.0", + "private": true, + "type": "module", + "engines": { + "node": ">=22.13.0" + }, + "scripts": { + "dev": "node scripts/generate-content.mjs && vite", + "build": "node scripts/generate-content.mjs && vite build", + "preview": "vite preview" + }, + "dependencies": { + "dompurify": "^3.2.6", + "marked": "^16.2.1" + }, + "devDependencies": { + "vite": "^7.1.1" + } +} diff --git a/github-pages/public/CNAME b/github-pages/public/CNAME new file mode 100644 index 00000000..202b17c5 --- /dev/null +++ b/github-pages/public/CNAME @@ -0,0 +1 @@ +reme.agentscope.io diff --git a/github-pages/public/favicon.svg b/github-pages/public/favicon.svg new file mode 100644 index 00000000..2ea375b3 --- /dev/null +++ b/github-pages/public/favicon.svg @@ -0,0 +1,19 @@ + + ReMe Documentation + + + + + + + + R + diff --git a/github-pages/scripts/generate-content.mjs b/github-pages/scripts/generate-content.mjs new file mode 100644 index 00000000..f8fedf14 --- /dev/null +++ b/github-pages/scripts/generate-content.mjs @@ -0,0 +1,147 @@ +import { cp, mkdir, readFile, rm, writeFile } from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const siteDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); +const repoDir = path.resolve(siteDir, ".."); +const outputDir = path.join(siteDir, ".generated", "content"); + +const topicOrder = [ + "quick_start", + "memory_as_file", + "memory_search", + "auto_memory", + "auto_resource", + "auto_link", + "auto_dream", + "proactive", + "reme_scene", + "framework", + "reme-blog", + "contributing", +]; + +const groups = { + quick_start: "start", + memory_as_file: "fundamentals", + memory_search: "fundamentals", + auto_memory: "automation", + auto_resource: "automation", + auto_link: "automation", + auto_dream: "automation", + proactive: "automation", + reme_scene: "concepts", + framework: "concepts", + "reme-blog": "concepts", + contributing: "development", +}; + +const localizedTitles = { + quick_start: { zh: "快速开始", en: "Quick Start" }, + memory_as_file: { zh: "文件即记忆", en: "Memory as File" }, + memory_search: { zh: "记忆检索", en: "Memory Search" }, + auto_memory: { zh: "自动记忆", en: "Auto Memory" }, + auto_resource: { zh: "自动资料整理", en: "Auto Resource" }, + auto_link: { zh: "自动关联", en: "Auto Link" }, + auto_dream: { zh: "自动沉淀", en: "Auto Dream" }, + proactive: { zh: "主动发现", en: "Proactive" }, + reme_scene: { zh: "ReMe 应用场景", en: "ReMe Application Scenarios" }, + framework: { zh: "ReMe 代码框架", en: "ReMe Framework" }, + "reme-blog": { zh: "ReMe 博客", en: "ReMe Blog" }, + contributing: { zh: "开源与贡献", en: "Open Source and Contributing" }, +}; + +const sharedDocuments = [ + { + id: "reme-memory-skill", + path: "skills/reme_memory/SKILL.md", + sourcePath: "skills/reme_memory/SKILL.md", + titles: { + zh: "ReMe 记忆技能", + en: "ReMe Memory Skill", + }, + description: "Bootstrap, retrieve, write, and consolidate memory from an agent.", + group: "integration", + language: "shared", + }, + { + id: "agents-guide", + path: "AGENTS.md", + sourcePath: "AGENTS.md", + titles: { + zh: "Agent 开发指南", + en: "Agent Development Guide", + }, + description: "Repository contracts, lifecycle rules, safety boundaries, and validation.", + group: "development", + language: "shared", + }, +]; + +async function markdownTitle(filePath) { + const source = await readFile(filePath, "utf8"); + return source.match(/^#\s+(.+)$/m)?.[1]?.replace(/[`*_]/g, "") || path.basename(filePath, ".md"); +} + +async function buildManifest() { + const documents = [ + { + id: "readme-zh", + path: "README_ZH.md", + sourcePath: "README_ZH.md", + title: "ReMe 项目介绍", + description: "核心理念、快速开始、使用场景与社区入口。", + group: "overview", + language: "zh", + }, + { + id: "readme-en", + path: "README.md", + sourcePath: "README.md", + title: "Introducing ReMe", + description: "Core ideas, quick start, use cases, and community resources.", + group: "overview", + language: "en", + }, + ]; + + for (const language of ["zh", "en"]) { + for (const topic of topicOrder) { + const sourcePath = `docs/${language}/${topic}.md`; + documents.push({ + id: `${language}-${topic}`, + path: sourcePath, + sourcePath, + title: localizedTitles[topic]?.[language] || (await markdownTitle(path.join(repoDir, sourcePath))), + description: "", + group: groups[topic], + language, + }); + } + } + + return [...documents, ...sharedDocuments]; +} + +await rm(path.join(siteDir, ".generated"), { recursive: true, force: true }); +await mkdir(outputDir, { recursive: true }); +await cp(path.join(siteDir, "public", "favicon.svg"), path.join(siteDir, ".generated", "favicon.svg")); +await cp(path.join(siteDir, "public", "CNAME"), path.join(siteDir, ".generated", "CNAME")); + +for (const file of ["README.md", "README_ZH.md", "AGENTS.md"]) { + await cp(path.join(repoDir, file), path.join(outputDir, file)); +} +await cp(path.join(repoDir, "docs"), path.join(outputDir, "docs"), { + recursive: true, + filter: (source) => path.basename(source) !== ".DS_Store", +}); +await mkdir(path.join(outputDir, "skills", "reme_memory"), { recursive: true }); +await cp( + path.join(repoDir, "skills", "reme_memory", "SKILL.md"), + path.join(outputDir, "skills", "reme_memory", "SKILL.md"), +); + +await writeFile( + path.join(outputDir, "manifest.json"), + `${JSON.stringify({ documents: await buildManifest() }, null, 2)}\n`, +); diff --git a/github-pages/src/main.js b/github-pages/src/main.js new file mode 100644 index 00000000..23f60b4d --- /dev/null +++ b/github-pages/src/main.js @@ -0,0 +1,340 @@ +import DOMPurify from "dompurify"; +import { marked } from "marked"; +import "./styles.css"; + +const baseUrl = import.meta.env.BASE_URL; +const repositoryUrl = "https://github.com/agentscope-ai/ReMe"; +const officialDocsUrl = "https://reme.agentscope.io"; + +const copy = { + zh: { + docs: "文档", + search: "搜索文档…", + noResults: "没有找到匹配的文档", + menu: "打开导航", + toc: "本页目录", + edit: "在 GitHub 查看源文件", + officialDocs: "官方文档", + groups: { + overview: "项目介绍", + start: "开始使用", + fundamentals: "核心原理", + automation: "自动化能力", + concepts: "架构与场景", + integration: "Agent 集成", + development: "开发者规范", + }, + }, + en: { + docs: "Documentation", + search: "Search documentation…", + noResults: "No matching documents", + menu: "Open navigation", + toc: "On this page", + edit: "View source on GitHub", + officialDocs: "Official docs", + groups: { + overview: "Introduction", + start: "Get started", + fundamentals: "Fundamentals", + automation: "Automation", + concepts: "Architecture & scenarios", + integration: "Agent integration", + development: "Development", + }, + }, +}; + +const state = { + language: localStorage.getItem("reme-docs-language") || "zh", + documents: [], + activeDocument: null, + query: "", +}; + +const app = document.querySelector("#app"); + +app.innerHTML = ` +
+ + R + ReMe + + + + +
+
+ +
+
+
+ +
+ +`; + +const sidebar = app.querySelector(".sidebar"); +const documentNav = app.querySelector(".document-nav"); +const article = app.querySelector(".article"); +const toc = app.querySelector(".toc"); +const searchInput = app.querySelector("input[type='search']"); +const menuButton = app.querySelector(".menu-button"); +const backdrop = app.querySelector(".sidebar-backdrop"); + +function slugify(value) { + return value + .toLowerCase() + .trim() + .replace(/<[^>]+>/g, "") + .replace(/[^\p{Letter}\p{Number}]+/gu, "-") + .replace(/^-|-$/g, ""); +} + +function resolveDocumentPath(currentPath, target) { + const cleanTarget = target.split("#")[0].split("?")[0]; + const currentParts = currentPath.split("/"); + currentParts.pop(); + for (const part of cleanTarget.split("/")) { + if (!part || part === ".") continue; + if (part === "..") currentParts.pop(); + else currentParts.push(part); + } + return currentParts.join("/"); +} + +function configureMarkdown(document) { + const renderer = new marked.Renderer(); + const headingIds = new Map(); + + renderer.heading = ({ tokens, depth }) => { + const text = tokens.map((token) => token.text || token.raw || "").join(""); + const baseSlug = slugify(text) || "section"; + const count = headingIds.get(baseSlug) || 0; + headingIds.set(baseSlug, count + 1); + const id = count ? `${baseSlug}-${count + 1}` : baseSlug; + return `${text}`; + }; + + renderer.image = ({ href, title, text }) => { + const url = /^(https?:|data:)/.test(href) + ? href + : `${baseUrl}content/${resolveDocumentPath(document.path, href)}`; + const titleAttribute = title ? ` title="${title}"` : ""; + return `${text}`; + }; + + renderer.link = ({ href, title, tokens }) => { + const label = tokens.map((token) => token.text || token.raw || "").join(""); + const titleAttribute = title ? ` title="${title}"` : ""; + if (href.startsWith("#")) return `${label}`; + if (!/^(https?:|mailto:)/.test(href)) { + const resolved = resolveDocumentPath(document.path, href); + const localDocument = state.documents.find((item) => item.path === resolved); + if (localDocument) return `${label}`; + return `${label}`; + } + return `${label}`; + }; + + marked.use({ renderer, gfm: true, breaks: false }); +} + +function availableDocuments() { + return state.documents.filter( + (document) => document.language === state.language || document.language === "shared", + ); +} + +function documentTitle(document) { + return document.titles?.[state.language] || document.title; +} + +function renderChrome() { + const labels = copy[state.language]; + app.querySelector("[data-copy='docs']").textContent = labels.docs; + app.querySelector("[data-copy='officialDocs']").textContent = `${labels.officialDocs} ↗`; + searchInput.placeholder = labels.search; + menuButton.textContent = labels.menu; + document.documentElement.lang = state.language === "zh" ? "zh-CN" : "en"; + app.querySelectorAll("[data-language]").forEach((button) => { + button.classList.toggle("active", button.dataset.language === state.language); + }); +} + +function renderNavigation() { + const labels = copy[state.language]; + const query = state.query.trim().toLocaleLowerCase(); + const filtered = availableDocuments().filter((document) => + `${documentTitle(document)} ${document.title || ""} ${document.description}`.toLocaleLowerCase().includes(query), + ); + const groups = [...new Set(filtered.map((document) => document.group))]; + + if (!filtered.length) { + documentNav.innerHTML = `

${labels.noResults}

`; + return; + } + + documentNav.innerHTML = groups + .map( + (group) => ` + `, + ) + .join(""); +} + +function renderToc() { + const headings = [...article.querySelectorAll("h2, h3")]; + if (!headings.length) { + toc.innerHTML = ""; + return; + } + toc.innerHTML = ` +

${copy[state.language].toc}

+ ${headings + .map( + (heading) => `${heading.childNodes[0]?.textContent || heading.textContent}`, + ) + .join("")} + `; +} + +function rewriteRenderedUrls(document) { + article.querySelectorAll("img[src]").forEach((image) => { + const source = image.getAttribute("src"); + if (source && !/^(https?:|data:|\/)/.test(source)) { + image.src = `${baseUrl}content/${resolveDocumentPath(document.path, source)}`; + } + }); + + article.querySelectorAll("a[href]").forEach((link) => { + const href = link.getAttribute("href"); + if (!href || /^(https?:|mailto:|#|\/)/.test(href) || link.dataset.doc) return; + const resolved = resolveDocumentPath(document.path, href); + const localDocument = state.documents.find((item) => item.path === resolved); + if (localDocument) { + link.href = `?doc=${localDocument.id}`; + link.dataset.doc = localDocument.id; + link.removeAttribute("target"); + return; + } + link.href = `${repositoryUrl}/blob/main/${resolved}`; + link.target = "_blank"; + link.rel = "noreferrer"; + }); +} + +async function openDocument(id, pushHistory = true) { + const fallbackId = state.language === "zh" ? "readme-zh" : "readme-en"; + const document = state.documents.find((item) => item.id === id) || state.documents.find((item) => item.id === fallbackId); + state.activeDocument = document; + article.dataset.group = document.group; + renderNavigation(); + article.innerHTML = `
`; + + const response = await fetch(`${baseUrl}content/${document.path}`); + if (!response.ok) throw new Error(`Unable to load ${document.path}`); + configureMarkdown(document); + const markdown = await response.text(); + const body = DOMPurify.sanitize(await marked.parse(markdown), { + ADD_ATTR: ["target"], + }); + article.innerHTML = ` +
+ ${copy[state.language].groups[document.group]} + · + ${document.sourcePath} +
+
${body}
+ + `; + rewriteRenderedUrls(document); + renderToc(); + closeMenu(); + if (pushHistory) history.pushState({ doc: document.id }, "", `?doc=${document.id}`); + window.scrollTo({ top: 0, behavior: "instant" }); +} + +function closeMenu() { + sidebar.classList.remove("open"); + backdrop.classList.remove("visible"); + menuButton.setAttribute("aria-expanded", "false"); +} + +function toggleMenu() { + const open = !sidebar.classList.contains("open"); + sidebar.classList.toggle("open", open); + backdrop.classList.toggle("visible", open); + menuButton.setAttribute("aria-expanded", String(open)); +} + +app.addEventListener("click", (event) => { + const documentLink = event.target.closest("[data-doc]"); + if (documentLink) { + event.preventDefault(); + openDocument(documentLink.dataset.doc); + } + if (event.target.closest("[data-action='menu']")) toggleMenu(); + const languageButton = event.target.closest("[data-language]"); + if (languageButton && languageButton.dataset.language !== state.language) { + state.language = languageButton.dataset.language; + localStorage.setItem("reme-docs-language", state.language); + state.query = ""; + searchInput.value = ""; + renderChrome(); + openDocument(state.language === "zh" ? "readme-zh" : "readme-en"); + } +}); + +searchInput.addEventListener("input", () => { + state.query = searchInput.value; + renderNavigation(); +}); + +document.addEventListener("keydown", (event) => { + if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === "k") { + event.preventDefault(); + searchInput.focus(); + } + if (event.key === "Escape") closeMenu(); +}); + +backdrop.addEventListener("click", closeMenu); +window.addEventListener("popstate", (event) => openDocument(event.state?.doc || new URLSearchParams(location.search).get("doc"), false)); + +const manifest = await fetch(`${baseUrl}content/manifest.json`).then((response) => response.json()); +state.documents = manifest.documents; +renderChrome(); +await openDocument(new URLSearchParams(location.search).get("doc"), false); diff --git a/github-pages/src/styles.css b/github-pages/src/styles.css new file mode 100644 index 00000000..d19696f0 --- /dev/null +++ b/github-pages/src/styles.css @@ -0,0 +1,160 @@ +:root { + color: #17221d; + background: #f4f7f5; + font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; + font-synthesis: none; + text-rendering: optimizeLegibility; + --ink: #17221d; + --muted: #65716a; + --line: #dce5e0; + --paper: #ffffff; + --green: #087f6a; + --blue: #3156d9; + --green-soft: #e5f5ef; + --code: #f3f5f2; +} + +* { box-sizing: border-box; } +html { scroll-behavior: smooth; scroll-padding-top: 92px; } +body { + margin: 0; + min-width: 320px; + background: + radial-gradient(circle at 8% 9%, rgba(27, 193, 164, 0.06), transparent 26rem), + #f4f7f5; +} +button, input { font: inherit; } +a { color: inherit; } + +.topbar { + position: fixed; + inset: 0 0 auto 0; + z-index: 30; + height: 66px; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 28px; + border-bottom: 1px solid rgba(213, 225, 219, 0.85); + background: rgba(250, 252, 251, 0.88); + backdrop-filter: blur(18px) saturate(140%); +} + +.brand { display: flex; align-items: center; gap: 11px; color: var(--ink); text-decoration: none; font-weight: 760; } +.brand-mark { + display: grid; + place-items: center; + width: 34px; + height: 34px; + border-radius: 11px; + color: white; + background: linear-gradient(145deg, #19c9b0, #3156d9 82%); + box-shadow: 0 7px 18px rgba(24, 123, 114, 0.2); + font-family: Georgia, serif; + font-size: 21px; +} +.brand-divider { width: 1px; height: 20px; background: var(--line); margin-left: 2px; } +.brand-section { color: var(--muted); font-weight: 520; } +.top-actions { display: flex; align-items: center; gap: 18px; } +.github-link, .official-docs-link { color: #37443d; text-decoration: none; font-size: 13px; font-weight: 650; } +.github-link:hover, .official-docs-link:hover { color: var(--green); } +.official-docs-link { padding: 8px 12px; border: 1px solid #d7e5df; border-radius: 9px; background: rgba(255, 255, 255, 0.72); } +.language-switch { display: flex; padding: 3px; border: 1px solid var(--line); border-radius: 9px; background: #f5f7f4; } +.language-switch button { padding: 5px 9px; border: 0; border-radius: 6px; color: var(--muted); background: transparent; cursor: pointer; font-size: 12px; font-weight: 700; } +.language-switch button.active { color: var(--ink); background: white; box-shadow: 0 1px 3px rgba(20, 40, 30, 0.1); } +.menu-button { display: none; border: 1px solid var(--line); border-radius: 8px; background: white; padding: 7px 10px; cursor: pointer; } + +.docs-shell { display: grid; grid-template-columns: 276px minmax(0, 1fr) 224px; max-width: 1540px; min-height: 100vh; margin: 0 auto; padding-top: 66px; } +.sidebar { position: sticky; top: 66px; height: calc(100vh - 66px); padding: 25px 20px 18px; overflow-y: auto; border-right: 1px solid var(--line); background: rgba(247, 250, 248, 0.78); } +.search-box { display: flex; align-items: center; gap: 8px; height: 41px; padding: 0 11px; border: 1px solid #d8e3dd; border-radius: 11px; color: #7a857e; background: rgba(255, 255, 255, 0.84); box-shadow: 0 5px 18px rgba(29, 65, 48, 0.035); } +.search-box:focus-within { border-color: #78aa8e; box-shadow: 0 0 0 3px rgba(22, 120, 76, 0.1); } +.search-box input { width: 100%; border: 0; outline: 0; color: var(--ink); background: transparent; font-size: 13px; } +.search-box kbd { padding: 2px 5px; border: 1px solid var(--line); border-radius: 4px; background: #f7f8f6; font-size: 10px; } +.document-nav { padding: 12px 0 52px; } +.nav-group { margin-top: 21px; } +.nav-group h2 { margin: 0 10px 7px; color: #8a948e; font-size: 10px; font-weight: 800; letter-spacing: 0.11em; text-transform: uppercase; } +.nav-group a { position: relative; display: block; padding: 7px 10px 7px 13px; border-radius: 8px; color: #536058; text-decoration: none; font-size: 13px; line-height: 1.4; } +.nav-group a:hover { color: var(--ink); background: #f0f3ef; } +.nav-group a.active { color: #086b5a; background: linear-gradient(90deg, #dff3ec, #eaf6f2); font-weight: 700; } +.nav-group a.active::before { position: absolute; top: 9px; bottom: 9px; left: 0; width: 3px; border-radius: 3px; background: linear-gradient(#17b79d, #3470d8); content: ""; } +.empty-state { padding: 24px 10px; color: var(--muted); font-size: 13px; } +.sidebar-footer { position: sticky; bottom: -18px; display: flex; align-items: center; gap: 8px; margin: 0 -20px; padding: 14px 22px 18px; border-top: 1px solid var(--line); color: #7c8880; background: #f7faf8; font: 600 10px/1.2 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: 0.04em; text-transform: uppercase; } +.status-dot { width: 6px; height: 6px; border-radius: 50%; background: #29a869; box-shadow: 0 0 0 3px #dff3e8; } + +.article-wrap { min-width: 0; padding: 58px clamp(32px, 5.8vw, 86px) 100px; background: rgba(255, 255, 255, 0.94); } +.article { width: 100%; max-width: 820px; margin: 0 auto; } +.article-meta { display: flex; gap: 8px; margin-bottom: 22px; color: #7d8d84; font: 600 11px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; } +.article-meta span:first-child { padding: 3px 8px; border-radius: 999px; color: #08705e; background: #e6f5ef; } +.markdown-body { color: #27332d; font-size: 16px; line-height: 1.78; } +.markdown-body > :first-child { margin-top: 0; } +.markdown-body h1 { margin: 0 0 30px; color: #112019; font-size: clamp(36px, 5vw, 54px); line-height: 1.06; letter-spacing: -0.04em; } +.markdown-body h2 { margin: 58px 0 18px; padding-top: 4px; color: #14241c; font-size: 27px; line-height: 1.25; letter-spacing: -0.02em; } +.markdown-body h3 { margin: 35px 0 12px; color: #1f3027; font-size: 20px; line-height: 1.35; } +.markdown-body p, .markdown-body ul, .markdown-body ol { margin: 14px 0; } +.markdown-body li { margin: 5px 0; } +.markdown-body a { color: var(--green); text-decoration-color: #9cc8ae; text-underline-offset: 3px; } +.markdown-body a:hover { text-decoration-color: var(--green); } +.markdown-body img { display: block; max-width: 100%; height: auto; margin: 30px auto; border-radius: 14px; } +/* README badges are linked images. Keep them in a compact row instead of applying the figure layout above. */ +.article[data-group="overview"] .markdown-body > p:has(> a > img[src*="img.shields.io"]) { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 7px; + max-width: 690px; + margin: 20px auto; +} +.article[data-group="overview"] .markdown-body > p > a > img[src*="img.shields.io"] { + display: inline-block; + width: auto; + max-height: 24px; + margin: 0; + border-radius: 4px; + vertical-align: middle; +} +.markdown-body p[align="center"] { text-align: center; } +.article[data-group="overview"] .markdown-body > p:first-child img { max-width: min(470px, 72%); margin-top: 8px; filter: drop-shadow(0 18px 25px rgba(44, 85, 164, 0.1)); } +.markdown-body code { padding: 2px 5px; border-radius: 5px; background: var(--code); color: #315844; font: 0.88em/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; } +.markdown-body pre { margin: 24px 0; padding: 19px 21px; overflow-x: auto; border: 1px solid #dce5e0; border-radius: 12px; background: linear-gradient(145deg, #f5f8f6, #f8faf9); box-shadow: inset 3px 0 0 #7bd0b6; } +.markdown-body pre code { padding: 0; color: #263b30; background: none; font-size: 13px; } +.markdown-body blockquote { margin: 24px 0; padding: 4px 20px; border-left: 3px solid #68aa85; color: #53635a; background: #f5faf7; } +.markdown-body table { display: block; width: 100%; margin: 24px 0; overflow-x: auto; border-collapse: collapse; font-size: 14px; } +.markdown-body th, .markdown-body td { padding: 10px 13px; border: 1px solid var(--line); text-align: left; } +.markdown-body th { background: #f4f6f3; } +.markdown-body hr { margin: 44px 0; border: 0; border-top: 1px solid var(--line); } +.article-footer { margin-top: 70px; padding-top: 20px; border-top: 1px solid var(--line); } +.article-footer a { color: var(--muted); text-decoration: none; font-size: 13px; } +.article-footer a:hover { color: var(--green); } +.loading-line { width: 55%; height: 12px; margin-top: 40px; border-radius: 9px; background: linear-gradient(90deg, #edf0ec, #f8faf7, #edf0ec); background-size: 200% 100%; animation: loading 1.2s infinite; } +@keyframes loading { to { background-position: -200% 0; } } + +.toc-panel { position: sticky; top: 66px; height: calc(100vh - 66px); padding: 58px 24px; overflow-y: auto; border-left: 1px solid #e9efeb; background: rgba(252, 253, 252, 0.92); } +.toc h2 { margin: 0 0 12px; color: #8a948e; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; } +.toc a { display: block; padding: 5px 0; color: #7a857e; text-decoration: none; font-size: 12px; line-height: 1.45; } +.toc a:hover { color: var(--green); } +.toc .toc-h3 { padding-left: 12px; } +.sidebar-backdrop { display: none; } + +@media (max-width: 1120px) { + .docs-shell { grid-template-columns: 250px minmax(0, 1fr); } + .toc-panel { display: none; } +} + +@media (max-width: 760px) { + .topbar { height: 60px; padding: 0 16px; } + .brand-section, .brand-divider, .github-link { display: none; } + .official-docs-link { font-size: 12px; } + .menu-button { display: block; max-width: 112px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .top-actions { gap: 9px; } + .docs-shell { display: block; padding-top: 60px; } + .sidebar { position: fixed; z-index: 25; top: 60px; bottom: 0; left: 0; width: min(310px, 86vw); height: auto; transform: translateX(-105%); transition: transform 180ms ease; box-shadow: 16px 0 35px rgba(20, 40, 30, 0.12); } + .sidebar.open { transform: translateX(0); } + .sidebar-backdrop { position: fixed; z-index: 20; inset: 60px 0 0; width: 100%; border: 0; background: rgba(18, 30, 23, 0.35); } + .sidebar-backdrop.visible { display: block; } + .article-wrap { padding: 38px 20px 72px; } + .article-meta { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } + .markdown-body { font-size: 15px; } + .markdown-body h1 { font-size: 34px; } + .markdown-body h2 { margin-top: 46px; font-size: 24px; } + .article[data-group="overview"] .markdown-body > p:first-child img { max-width: 84%; } +} diff --git a/github-pages/vite.config.js b/github-pages/vite.config.js new file mode 100644 index 00000000..1445f872 --- /dev/null +++ b/github-pages/vite.config.js @@ -0,0 +1,10 @@ +import { defineConfig } from "vite"; + +export default defineConfig({ + base: "./", + publicDir: ".generated", + build: { + outDir: "dist", + emptyOutDir: true, + }, +}); diff --git a/pyproject.toml b/pyproject.toml index 4cad90e4..364a6106 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -68,7 +68,7 @@ full = [ [project.urls] Homepage = "https://github.com/agentscope-ai/ReMe" -Documentation = "https://docs.agentscope.io/reme" +Documentation = "https://reme.agentscope.io" Repository = "https://github.com/agentscope-ai/ReMe" [project.scripts]