Restructure web app directories

This commit is contained in:
武阳
2026-05-06 12:01:22 +08:00
parent 2ea3a63447
commit 4e9ea0e3bb
12 changed files with 22 additions and 12 deletions
+1
View File
@@ -19,6 +19,7 @@ archive/
.claude.json .claude.json
.port_sessions/ .port_sessions/
tasks/ tasks/
router_session_parquet/
# Environment files # Environment files
.env .env
+1 -1
View File
@@ -822,7 +822,7 @@ Mirrored / scaffold areas needing real implementation:
- [ ] Token budget calculations - [ ] Token budget calculations
### Tier 3 — Nice-to-Have Features ### Tier 3 — Nice-to-Have Features
- [x] Local web GUI (FastAPI + vanilla JS SPA) → `src/gui/__main__.py`, `src/gui/server.py`, `src/gui/static/*`; launch with `python -m src.gui` or `claw-code-gui` - [x] Local web GUI (FastAPI + vanilla JS SPA) → `src/gui/__main__.py`, `backend/api/server.py`, `frontend/legacy-static/*`; launch with `python -m src.gui` or `claw-code-gui`
- [ ] TUI/Ink component library - [ ] TUI/Ink component library
- [ ] Voice mode - [ ] Voice mode
- [ ] VIM mode and keybinding system - [ ] VIM mode and keybinding system
+1 -1
View File
@@ -545,7 +545,7 @@ workspace 可以通过 `.claw-policy.json` / `.codex-policy.json` / `.claw-hooks
有,但只对 bundled skill 生效: 有,但只对 bundled skill 生效:
- `format_skills_for_system_prompt()` 把 skill 列表渲染进系统提示,帮助模型“知道”有哪些 skill,见 `src/bundled_skills.py:268-289` - `format_skills_for_system_prompt()` 把 skill 列表渲染进系统提示,帮助模型“知道”有哪些 skill,见 `src/bundled_skills.py:268-289`
- GUI 也有 `/api/skills` 列表,见 `src/gui/server.py` - GUI 也有 `/api/skills` 列表,见 `backend/api/server.py`
但它没有: 但它没有:
+1
View File
@@ -0,0 +1 @@
"""Backend API package for the claw-code agent workbench."""
+1
View File
@@ -0,0 +1 @@
"""HTTP API layer for the claw-code agent workbench."""
+6 -6
View File
@@ -17,22 +17,22 @@ from fastapi.responses import FileResponse, JSONResponse
from fastapi.staticfiles import StaticFiles from fastapi.staticfiles import StaticFiles
from pydantic import BaseModel, Field from pydantic import BaseModel, Field
from ..agent_runtime import LocalCodingAgent from src.agent_runtime import LocalCodingAgent
from ..agent_slash_commands import get_slash_command_specs from src.agent_slash_commands import get_slash_command_specs
from ..agent_types import ( from src.agent_types import (
AgentPermissions, AgentPermissions,
AgentRuntimeConfig, AgentRuntimeConfig,
ModelConfig, ModelConfig,
) )
from ..bundled_skills import get_bundled_skills from src.bundled_skills import get_bundled_skills
from ..session_store import ( from src.session_store import (
DEFAULT_AGENT_SESSION_DIR, DEFAULT_AGENT_SESSION_DIR,
StoredAgentSession, StoredAgentSession,
load_agent_session, load_agent_session,
) )
STATIC_DIR = Path(__file__).parent / 'static' STATIC_DIR = Path(__file__).resolve().parents[2] / 'frontend' / 'legacy-static'
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
+8 -2
View File
@@ -36,6 +36,13 @@ dependencies = [
"fastapi>=0.110", "fastapi>=0.110",
"uvicorn>=0.27", "uvicorn>=0.27",
"pydantic>=2.5", "pydantic>=2.5",
"openpyxl>=3.1",
"pyarrow>=15",
]
[project.optional-dependencies]
dev = [
"httpx>=0.28",
] ]
[project.urls] [project.urls]
@@ -51,11 +58,10 @@ include-package-data = true
[tool.setuptools.packages.find] [tool.setuptools.packages.find]
where = ["."] where = ["."]
include = ["src*"] include = ["src*", "backend*"]
[tool.setuptools.package-data] [tool.setuptools.package-data]
src = [ src = [
"reference_data/*.json", "reference_data/*.json",
"gui/static/*",
"skills/bundled/*/SKILL.md", "skills/bundled/*/SKILL.md",
] ]
+2 -1
View File
@@ -9,8 +9,9 @@ from pathlib import Path
import uvicorn import uvicorn
from backend.api.server import AgentState, create_app
from ..session_store import DEFAULT_AGENT_SESSION_DIR from ..session_store import DEFAULT_AGENT_SESSION_DIR
from .server import AgentState, create_app
def main() -> None: def main() -> None:
+1 -1
View File
@@ -15,7 +15,7 @@ from pathlib import Path
from fastapi.testclient import TestClient from fastapi.testclient import TestClient
from src.gui.server import AgentState, create_app from backend.api.server import AgentState, create_app
def _build_client(tmp: Path) -> tuple[TestClient, AgentState]: def _build_client(tmp: Path) -> tuple[TestClient, AgentState]: