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

Function v2_create_session

app/api/agentops/api/routes/v2.py:194–288  ·  view source on GitHub ↗
(request: Request, supabase: AsyncSupabaseClient)

Source from the content-addressed store, hash-verified

192
193@router.post("/create_session")
194async def v2_create_session(request: Request, supabase: AsyncSupabaseClient):
195 try:
196 api_key = request.headers.get("X-Agentops-Api-Key")
197 parent_key = request.headers.get("X-Agentops-Parent-Key")
198
199 validate_uuid(api_key)
200
201 tasks = [
202 supabase.table("projects").select("id").eq("api_key", api_key).execute(),
203 request.json(),
204 ]
205
206 if parent_key:
207 tasks.append(supabase.table("projects").select("id").eq("api_key", parent_key).execute())
208 project_response, data, project_secondary_response = await asyncio.gather(*tasks)
209 project_secondary = (
210 project_secondary_response.data[0] if project_secondary_response.data else None
211 )
212 else:
213 project_response, data = await asyncio.gather(*tasks)
214 project_secondary = None
215
216 project = project_response.data[0] if project_response.data else None
217
218 logger.debug(data)
219
220 if project is None:
221 raise RuntimeError("Invalid API Key")
222
223 session = {
224 "id": data["session"]["session_id"],
225 "project_id": project["id"],
226 "init_timestamp": data["session"].get("init_timestamp", None)
227 or datetime.now(timezone.utc).isoformat(),
228 "end_timestamp": data["session"].get("end_timestamp", None),
229 "tags": data["session"].get("tags", None),
230 "end_state": data["session"].get("end_state", None),
231 "end_state_reason": data["session"].get("end_state_reason", None),
232 "video": data["session"].get("video", None),
233 "host_env": data["session"].get("host_env", None),
234 }
235
236 if project_secondary:
237 session["project_id_secondary"] = project_secondary["id"]
238
239 await supabase.table("sessions").insert(session).execute()
240 await supabase.table("stats").insert({"session_id": session["id"]}).execute()
241 await export.create_session(session)
242
243 token = generate_jwt(session["id"], jwt_secret)
244 logger.info(colored(f"Completed request for {session['id']}", "yellow"))
245 return JSONResponse(
246 {
247 "status": "Success",
248 "jwt": token,
249 "session_url": f'{app_url}/drilldown?session_id={data["session"]["session_id"]}',
250 }
251 )

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…