""" server/app.py — Step 4: Create Server FastAPI application for the Cross-Session Continuity environment. Uses openenv.core's create_app() factory, which wires up: POST /reset — start a new episode POST /step — execute an action GET /state — current episode state GET /health — health check WS /ws — WebSocket session (stateful) GET /docs — Swagger UI Run with: uvicorn server.app:app --host 0.0.0.0 --port 7860 """ import sys import os _HERE = os.path.dirname(os.path.abspath(__file__)) _ROOT = os.path.dirname(_HERE) if _ROOT not in sys.path: sys.path.insert(0, _ROOT) try: from openenv.core.env_server.http_server import create_app except Exception as e: raise ImportError( "openenv-core is required. Install with: pip install openenv-core" ) from e try: from models import ContinuityAction, ContinuityObservation from server.env import CrossSessionContinuityEnv except ImportError: from models import ContinuityAction, ContinuityObservation # type: ignore from server.env import CrossSessionContinuityEnv # type: ignore from fastapi.responses import HTMLResponse app = create_app( CrossSessionContinuityEnv, ContinuityAction, ContinuityObservation, env_name="cross-session-continuity-env", max_concurrent_envs=1, ) _LANDING_HTML = """
An OpenEnv-compliant RL environment where an LLM agent must complete a coding task across two sessions with zero shared memory. Session 1 writes a structured handoff note; Session 2 starts cold with only that note.
GET /healthServer health checkGET /docsInteractive API (Swagger)POST /resetStart a new episodePOST /stepExecute an actionWS /wsWebSocket (stateful session)GET /stateCurrent episode stateQuick start:
pip install openenv-core
from client import ContinuityEnvClient, ContinuityAction
with ContinuityEnvClient(
base_url="https://aswini-kumar-cross-session-continuity-env.hf.space"
) as env:
obs = env.reset(difficulty="easy", seed=42)
result = env.step(ContinuityAction(tool="run_tests"))
print(result.observation.output)
Tools:
read_file
write_file
run_tests
write_handoff
parse_handoff
submit