refactor(openclaw): remove REST facade (port 8004), unify on WebSocket
Remove the redundant OpenClaw REST service (port 8004) since frontend already uses WebSocket via Gateway (port 8765) → OpenClaw (port 18789). Deleted: - backend/apps/openclaw_service.py - backend/api/openclaw.py - backend/tests/test_openclaw_service_app.py - backend/tests/test_service_clients.py - shared/client/openclaw_client.py Updated: - backend/apps/__init__.py — remove openclaw_app exports - backend/api/__init__.py — remove openclaw_router - shared/client/__init__.py — remove OpenClawServiceClient - backend/services/gateway_openclaw_handlers.py — update docstring - start.sh — remove port 8004 service startup Architecture: - Before: Frontend → HTTP :8004 → subprocess openclaw CLI - After: Frontend → WS :8765 → Gateway → WS :18789 → OpenClaw Constraint: Frontend already uses WebSocket exclusively Confidence: high Scope-risk: low (frontend unchanged)
This commit is contained in:
@@ -5,8 +5,6 @@ from .agent_service import app as agent_app
|
||||
from .agent_service import create_app as create_agent_app
|
||||
from .news_service import app as news_app
|
||||
from .news_service import create_app as create_news_app
|
||||
from .openclaw_service import app as openclaw_app
|
||||
from .openclaw_service import create_app as create_openclaw_app
|
||||
from .runtime_service import app as runtime_app
|
||||
from .runtime_service import create_app as create_runtime_app
|
||||
from .trading_service import app as trading_app
|
||||
@@ -23,8 +21,6 @@ __all__ = [
|
||||
"create_agent_app",
|
||||
"news_app",
|
||||
"create_news_app",
|
||||
"openclaw_app",
|
||||
"create_openclaw_app",
|
||||
"runtime_app",
|
||||
"create_runtime_app",
|
||||
"trading_app",
|
||||
|
||||
@@ -1,65 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Read-only OpenClaw CLI FastAPI surface.
|
||||
|
||||
COMPATIBILITY_SURFACE: deferred
|
||||
OWNER: runtime-team
|
||||
SEE: docs/legacy-inventory.md#openclaw-dual-integration
|
||||
|
||||
This is the REST facade (port 8004) for OpenClaw integration.
|
||||
For the WebSocket gateway integration, see:
|
||||
- backend/services/gateway_openclaw_handlers.py
|
||||
- shared/client/openclaw_websocket_client.py
|
||||
|
||||
Key differences:
|
||||
- REST facade: typed Pydantic models, request/response, polling
|
||||
- WebSocket: event-driven, real-time updates, bidirectional
|
||||
|
||||
Decision needed: which surface becomes the long-term contract?
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from fastapi import Depends, FastAPI
|
||||
|
||||
from backend.api import openclaw_router
|
||||
from backend.apps.cors import add_cors_middleware
|
||||
from backend.api.openclaw import get_openclaw_cli_service
|
||||
|
||||
|
||||
def create_app() -> FastAPI:
|
||||
"""Create the OpenClaw service app."""
|
||||
app = FastAPI(
|
||||
title="大时代 OpenClaw Service",
|
||||
description="Read-only OpenClaw CLI integration service surface",
|
||||
version="0.1.0",
|
||||
)
|
||||
|
||||
add_cors_middleware(app)
|
||||
|
||||
@app.get("/health")
|
||||
async def health_check(
|
||||
service=Depends(get_openclaw_cli_service),
|
||||
) -> dict[str, object]:
|
||||
return service.health()
|
||||
|
||||
@app.get("/api/status")
|
||||
async def api_status(
|
||||
service=Depends(get_openclaw_cli_service),
|
||||
) -> dict[str, object]:
|
||||
return {
|
||||
"status": "operational",
|
||||
"service": "openclaw-service",
|
||||
"openclaw": service.health(),
|
||||
}
|
||||
|
||||
app.include_router(openclaw_router)
|
||||
return app
|
||||
|
||||
|
||||
app = create_app()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import uvicorn
|
||||
|
||||
uvicorn.run(app, host="0.0.0.0", port=8004)
|
||||
Reference in New Issue
Block a user