{"owner":"langbot-app","repo":"LangBot","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md"],"skills":{"AGENTS.md":"# AGENTS.md\n\nThis file guides code agents working in the LangBot main repository. `CLAUDE.md` is a symlink to this file.\n\nRead `ARCHITECTURE.md` before non-trivial backend, frontend, runtime, plugin, Box, MCP, persistence, or cross-repo SDK changes. This file is the working checklist; `ARCHITECTURE.md` is the system map.\n\n## Quick Facts\n\n- Python backend: `>=3.11,<4.0`, dependencies managed by `uv`.\n- Frontend: `web/` is Vite + React Router 7 + shadcn/ui + Tailwind, managed by `pnpm`.\n- Backend framework: Quart served by Hypercorn on `api.port`, default `5300`.\n- Frontend dev server: `web/` on `3000`, with `VITE_API_BASE_URL` pointing at the backend.\n- Plugin/Box/runtime contracts live in sibling repo `langbot-plugin-sdk`, pinned as `langbot-plugin` in `pyproject.toml`.\n\n## Essential Commands\n\n```bash\nuv sync --dev\nuv run main.py\nuv run pre-commit install\n\ncd web\npnpm install\npnpm dev\npnpm build\n```\n\nUseful focused tests:\n\n```bash\nuv run pytest tests/unit_tests -q\nuv run pytest tests/integration -q\nuv run pytest tests/integration/persistence -q\nuv run pytest tests/manual/mcp_smoke.py\n\ncd web\npnpm lint\npnpm test:e2e\n```\n\nRun the narrowest useful test first, then broader checks when confidence is needed.\n\n## Where to Look\n\n- Architecture map: `ARCHITECTURE.md`.\n- Dev environment guide: https://docs.langbot.app/zh/develop/dev-config.\n- Plugin runtime / CLI / SDK debugging: https://docs.langbot.app/zh/develop/plugin-runtime.\n- API-key auth: `docs/API_KEY_AUTH.md`.\n- Box deep-dive notes: `docs/review/box-architecture.md` and related files.\n- In-repo skills: `skills/` is the single source of truth for LangBot agent skills.\n- SDK repo: `../langbot-plugin-sdk/` when changing shared entities, plugin APIs, action protocol, `lbp rt`, or `lbp box`.\n\n## Cross-Repo SDK Work\n\nWhen changing SDK contracts used by LangBot:\n\n```bash\n# from langbot-plugin-sdk, with LangBot's .venv active\nuv pip install .\n\n# from LangBot, preserve the locally installed SDK\nuv run --no-sync main.py\n```\n\nFor standalone runtime debugging:\n\n```bash\n# in langbot-plugin-sdk\nuv run --no-sync lbp rt\nuv run --no-sync lbp box\n\n# in LangBot\nuv run --no-sync main.py --standalone-runtime\nuv run --no-sync main.py --standalone-box\n```\n\nConfig keys to verify in `data/config.yaml` / `src/langbot/templates/config.yaml`:\n\n- Plugin runtime: `plugin.runtime_ws_url`, default Docker host `langbot_plugin_runtime:5400/control/ws`.\n- Box runtime: `box.enabled`, `box.backend`, `box.runtime.endpoint`, Docker host `langbot_box:5410`.\n- API/MCP auth: `api.global_api_key`.\n\n## Change Rules\n\n- HTTP API changes that should be agent-accessible must update the matching MCP tool in `src/langbot/pkg/api/mcp/server.py` and the relevant skill under `skills/` in the same pass.\n- New schema changes use Alembic under `src/langbot/pkg/persistence/alembic/versions/`; do not add legacy `dbmXXX` migrations.\n- New platform behavior belongs in platform adapters only for platform translation; pipeline/business logic belongs in `pkg/pipeline/` or services.\n- User-facing strings must support i18n (`en_US`, `zh_Hans`; include `ja_JP` where the repo already does).\n- Code comments and docstrings must be English.\n- Keep compatibility and security in mind; LangBot is used in both self-hosted/community and toB deployments.\n- Commit message format: `<type>(<scope>): <subject>`.\n\n## Runtime Pitfalls\n\n- Local stdio Plugin Runtime disconnects do not auto-reconnect; restart LangBot if that path breaks.\n- Orphan runtime processes on `5400`/`5401` commonly break plugin debugging.\n- Use `uv run --no-sync` after locally installing the SDK, or `uv` may restore the pinned package.\n- A false Box “no backend” often means Docker is running but the current user lacks Docker socket permission.\n- Do not confuse external MCP servers LangBot connects to (`pkg/provider/tools/loaders/mcp.py`) with LangBot's own `/mcp` server (`pkg/api/mcp/`).\n- `CLAUDE.md` is a symlink to this file; edit `AGENTS.md`, not the symlink.\n\n## Principles\n\n- Keep it simple, stupid.\n- Entities should not be multiplied unnecessarily.\n- 八荣八耻\n\n    以瞎猜接口为耻，以认真查询为荣。\n    以模糊执行为耻，以寻求确认为荣。\n    以臆想业务为耻，以人类确认为荣。\n    以创造接口为耻，以复用现有为荣。\n    以跳过验证为耻，以主动测试为荣。\n    以破坏架构为耻，以遵循规范为荣。\n    以假装理解为耻，以诚实无知为荣。\n    以盲目修改为耻，以谨慎重构为荣。\n"},"files":{"AGENTS.md":"# AGENTS.md\n\nThis file guides code agents working in the LangBot main repository. `CLAUDE.md` is a symlink to this file.\n\nRead `ARCHITECTURE.md` before non-trivial backend, frontend, runtime, plugin, Box, MCP, persistence, or cross-repo SDK changes. This file is the working checklist; `ARCHITECTURE.md` is the system map.\n\n## Quick Facts\n\n- Python backend: `>=3.11,<4.0`, dependencies managed by `uv`.\n- Frontend: `web/` is Vite + React Router 7 + shadcn/ui + Tailwind, managed by `pnpm`.\n- Backend framework: Quart served by Hypercorn on `api.port`, default `5300`.\n- Frontend dev server: `web/` on `3000`, with `VITE_API_BASE_URL` pointing at the backend.\n- Plugin/Box/runtime contracts live in sibling repo `langbot-plugin-sdk`, pinned as `langbot-plugin` in `pyproject.toml`.\n\n## Essential Commands\n\n```bash\nuv sync --dev\nuv run main.py\nuv run pre-commit install\n\ncd web\npnpm install\npnpm dev\npnpm build\n```\n\nUseful focused tests:\n\n```bash\nuv run pytest tests/unit_tests -q\nuv run pytest tests/integration -q\nuv run pytest tests/integration/persistence -q\nuv run pytest tests/manual/mcp_smoke.py\n\ncd web\npnpm lint\npnpm test:e2e\n```\n\nRun the narrowest useful test first, then broader checks when confidence is needed.\n\n## Where to Look\n\n- Architecture map: `ARCHITECTURE.md`.\n- Dev environment guide: https://docs.langbot.app/zh/develop/dev-config.\n- Plugin runtime / CLI / SDK debugging: https://docs.langbot.app/zh/develop/plugin-runtime.\n- API-key auth: `docs/API_KEY_AUTH.md`.\n- Box deep-dive notes: `docs/review/box-architecture.md` and related files.\n- In-repo skills: `skills/` is the single source of truth for LangBot agent skills.\n- SDK repo: `../langbot-plugin-sdk/` when changing shared entities, plugin APIs, action protocol, `lbp rt`, or `lbp box`.\n\n## Cross-Repo SDK Work\n\nWhen changing SDK contracts used by LangBot:\n\n```bash\n# from langbot-plugin-sdk, with LangBot's .venv active\nuv pip install .\n\n# from LangBot, preserve the locally installed SDK\nuv run --no-sync main.py\n```\n\nFor standalone runtime debugging:\n\n```bash\n# in langbot-plugin-sdk\nuv run --no-sync lbp rt\nuv run --no-sync lbp box\n\n# in LangBot\nuv run --no-sync main.py --standalone-runtime\nuv run --no-sync main.py --standalone-box\n```\n\nConfig keys to verify in `data/config.yaml` / `src/langbot/templates/config.yaml`:\n\n- Plugin runtime: `plugin.runtime_ws_url`, default Docker host `langbot_plugin_runtime:5400/control/ws`.\n- Box runtime: `box.enabled`, `box.backend`, `box.runtime.endpoint`, Docker host `langbot_box:5410`.\n- API/MCP auth: `api.global_api_key`.\n\n## Change Rules\n\n- HTTP API changes that should be agent-accessible must update the matching MCP tool in `src/langbot/pkg/api/mcp/server.py` and the relevant skill under `skills/` in the same pass.\n- New schema changes use Alembic under `src/langbot/pkg/persistence/alembic/versions/`; do not add legacy `dbmXXX` migrations.\n- New platform behavior belongs in platform adapters only for platform translation; pipeline/business logic belongs in `pkg/pipeline/` or services.\n- User-facing strings must support i18n (`en_US`, `zh_Hans`; include `ja_JP` where the repo already does).\n- Code comments and docstrings must be English.\n- Keep compatibility and security in mind; LangBot is used in both self-hosted/community and toB deployments.\n- Commit message format: `<type>(<scope>): <subject>`.\n\n## Runtime Pitfalls\n\n- Local stdio Plugin Runtime disconnects do not auto-reconnect; restart LangBot if that path breaks.\n- Orphan runtime processes on `5400`/`5401` commonly break plugin debugging.\n- Use `uv run --no-sync` after locally installing the SDK, or `uv` may restore the pinned package.\n- A false Box “no backend” often means Docker is running but the current user lacks Docker socket permission.\n- Do not confuse external MCP servers LangBot connects to (`pkg/provider/tools/loaders/mcp.py`) with LangBot's own `/mcp` server (`pkg/api/mcp/`).\n- `CLAUDE.md` is a symlink to this file; edit `AGENTS.md`, not the symlink.\n\n## Principles\n\n- Keep it simple, stupid.\n- Entities should not be multiplied unnecessarily.\n- 八荣八耻\n\n    以瞎猜接口为耻，以认真查询为荣。\n    以模糊执行为耻，以寻求确认为荣。\n    以臆想业务为耻，以人类确认为荣。\n    以创造接口为耻，以复用现有为荣。\n    以跳过验证为耻，以主动测试为荣。\n    以破坏架构为耻，以遵循规范为荣。\n    以假装理解为耻，以诚实无知为荣。\n    以盲目修改为耻，以谨慎重构为荣。\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","title":"AGENTS.md","content":"# AGENTS.md\n\nThis file guides code agents working in the LangBot main repository. `CLAUDE.md` is a symlink to this file.\n\nRead `ARCHITECTURE.md` before non-trivial backend, frontend, runtime, plugin, Box, MCP, persistence, or cross-repo SDK changes. This file is the working checklist; `ARCHITECTURE.md` is the system map.\n\n## Quick Facts\n\n- Python backend: `>=3.11,<4.0`, dependencies managed by `uv`.\n- Frontend: `web/` is Vite + React Router 7 + shadcn/ui + Tailwind, managed by `pnpm`.\n- Backend framework: Quart served by Hypercorn on `api.port`, default `5300`.\n- Frontend dev server: `web/` on `3000`, with `VITE_API_BASE_URL` pointing at the backend.\n- Plugin/Box/runtime contracts live in sibling repo `langbot-plugin-sdk`, pinned as `langbot-plugin` in `pyproject.toml`.\n\n## Essential Commands\n\n```bash\nuv sync --dev\nuv run main.py\nuv run pre-commit install\n\ncd web\npnpm install\npnpm dev\npnpm build\n```\n\nUseful focused tests:\n\n```bash\nuv run pytest tests/unit_tests -q\nuv run pytest tests/integration -q\nuv run pytest tests/integration/persistence -q\nuv run pytest tests/manual/mcp_smoke.py\n\ncd web\npnpm lint\npnpm test:e2e\n```\n\nRun the narrowest useful test first, then broader checks when confidence is needed.\n\n## Where to Look\n\n- Architecture map: `ARCHITECTURE.md`.\n- Dev environment guide: https://docs.langbot.app/zh/develop/dev-config.\n- Plugin runtime / CLI / SDK debugging: https://docs.langbot.app/zh/develop/plugin-runtime.\n- API-key auth: `docs/API_KEY_AUTH.md`.\n- Box deep-dive notes: `docs/review/box-architecture.md` and related files.\n- In-repo skills: `skills/` is the single source of truth for LangBot agent skills.\n- SDK repo: `../langbot-plugin-sdk/` when changing shared entities, plugin APIs, action protocol, `lbp rt`, or `lbp box`.\n\n## Cross-Repo SDK Work\n\nWhen changing SDK contracts used by LangBot:\n\n```bash\n# from langbot-plugin-sdk, with LangBot's .venv active\nuv pip install .\n\n# from LangBot, preserve the locally installed SDK\nuv run --no-sync main.py\n```\n\nFor standalone runtime debugging:\n\n```bash\n# in langbot-plugin-sdk\nuv run --no-sync lbp rt\nuv run --no-sync lbp box\n\n# in LangBot\nuv run --no-sync main.py --standalone-runtime\nuv run --no-sync main.py --standalone-box\n```\n\nConfig keys to verify in `data/config.yaml` / `src/langbot/templates/config.yaml`:\n\n- Plugin runtime: `plugin.runtime_ws_url`, default Docker host `langbot_plugin_runtime:5400/control/ws`.\n- Box runtime: `box.enabled`, `box.backend`, `box.runtime.endpoint`, Docker host `langbot_box:5410`.\n- API/MCP auth: `api.global_api_key`.\n\n## Change Rules\n\n- HTTP API changes that should be agent-accessible must update the matching MCP tool in `src/langbot/pkg/api/mcp/server.py` and the relevant skill under `skills/` in the same pass.\n- New schema changes use Alembic under `src/langbot/pkg/persistence/alembic/versions/`; do not add legacy `dbmXXX` migrations.\n- New platform behavior belongs in platform adapters only for platform translation; pipeline/business logic belongs in `pkg/pipeline/` or services.\n- User-facing strings must support i18n (`en_US`, `zh_Hans`; include `ja_JP` where the repo already does).\n- Code comments and docstrings must be English.\n- Keep compatibility and security in mind; LangBot is used in both self-hosted/community and toB deployments.\n- Commit message format: `<type>(<scope>): <subject>`.\n\n## Runtime Pitfalls\n\n- Local stdio Plugin Runtime disconnects do not auto-reconnect; restart LangBot if that path breaks.\n- Orphan runtime processes on `5400`/`5401` commonly break plugin debugging.\n- Use `uv run --no-sync` after locally installing the SDK, or `uv` may restore the pinned package.\n- A false Box “no backend” often means Docker is running but the current user lacks Docker socket permission.\n- Do not confuse external MCP servers LangBot connects to (`pkg/provider/tools/loaders/mcp.py`) with LangBot's own `/mcp` server (`pkg/api/mcp/`).\n- `CLAUDE.md` is a symlink to this file; edit `AGENTS.md`, not the symlink.\n\n## Principles\n\n- Keep it simple, stupid.\n- Entities should not be multiplied unnecessarily.\n- 八荣八耻\n\n    以瞎猜接口为耻，以认真查询为荣。\n    以模糊执行为耻，以寻求确认为荣。\n    以臆想业务为耻，以人类确认为荣。\n    以创造接口为耻，以复用现有为荣。\n    以跳过验证为耻，以主动测试为荣。\n    以破坏架构为耻，以遵循规范为荣。\n    以假装理解为耻，以诚实无知为荣。\n    以盲目修改为耻，以谨慎重构为荣。\n","category":"root","tokens":1062}]}