MCPcopy Create free account
hub / github.com/AgentOps-AI/agentops / create_session

Function create_session

app/api/agentops/api/routes/v2.py:28–119  ·  view source on GitHub ↗

Create a new session

(request: Request, supabase: AsyncSupabaseClient)

Source from the content-addressed store, hash-verified

26
27@router.post("/sessions")
28async def create_session(request: Request, supabase: AsyncSupabaseClient):
29 """Create a new session"""
30 try:
31 api_key = request.headers.get("X-Agentops-Api-Key")
32 parent_key = request.headers.get("X-Agentops-Parent-Key")
33
34 validate_uuid(api_key)
35 tasks = [
36 supabase.table("projects").select("*").eq("api_key", api_key).limit(1).single().execute(),
37 request.json(),
38 ]
39
40 if parent_key:
41 tasks.append(
42 supabase.table("projects").select("*").eq("api_key", parent_key).limit(1).single().execute()
43 )
44 project, data, project_secondary = await asyncio.gather(*tasks)
45 else:
46 project, data = await asyncio.gather(*tasks)
47 project_secondary = None
48
49 logger.debug(data)
50
51 if project is None:
52 raise RuntimeError("Invalid API Key")
53
54 session = {
55 "id": data["session"]["session_id"],
56 "project_id": project["id"],
57 "init_timestamp": data["session"]["init_timestamp"],
58 "end_timestamp": data["session"].get("end_timestamp", None),
59 "tags": data["session"].get("tags", None),
60 "end_state": data["session"].get("end_state", None),
61 "end_state_reason": data["session"].get("end_state_reason", None),
62 "video": data["session"].get("video", None),
63 "host_env": data["session"].get("host_env", None),
64 }
65
66 if project_secondary:
67 session["project_id_secondary"] = project_secondary["id"]
68
69 await supabase.table("sessions").insert(session).execute()
70 await supabase.table("stats").insert({"session_id": session["id"]}).execute()
71 await export.create_session(session)
72
73 token = generate_jwt(session["id"], jwt_secret)
74 logger.info(colored(f"Completed request for {session['id']}", "yellow"))
75 return JSONResponse(
76 {
77 "status": "Success",
78 "jwt": token,
79 "session_url": f'{app_url}/drilldown?session_id={data["session"]["session_id"]}',
80 },
81 status_code=200,
82 )
83 except ExpiredJWTError:
84 logger.warning("Expired JWT")
85 return JSONResponse({"path": request.url.path, "message": "Expired Token"}, status_code=401)

Callers

nothing calls this directly

Calls 6

validate_uuidFunction · 0.90
generate_jwtFunction · 0.90
jsonMethod · 0.80
insertMethod · 0.80
getMethod · 0.45
selectMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…