CaffeinatedCoding commited on
Commit
a86bc1d
·
verified ·
1 Parent(s): 766aa62

Upload folder using huggingface_hub

Browse files
Files changed (2) hide show
  1. api/main.py +28 -16
  2. src/court/orchestrator.py +16 -11
api/main.py CHANGED
@@ -414,12 +414,18 @@ def court_argue(request: ArgueRequest):
414
  if not request.session_id or not request.argument.strip():
415
  raise HTTPException(status_code=400, detail="Session ID and argument required")
416
 
417
- result = process_user_argument(request.session_id, request.argument)
418
-
419
- if "error" in result:
420
- raise HTTPException(status_code=400, detail=result["error"])
421
-
422
- return result
 
 
 
 
 
 
423
 
424
 
425
  @app.post("/court/object")
@@ -444,16 +450,22 @@ def court_document(request: DocumentRequest):
444
  """Generate and produce a legal document."""
445
  from src.court.orchestrator import process_document_request
446
 
447
- result = process_document_request(
448
- request.session_id,
449
- request.doc_type,
450
- request.for_side,
451
- )
452
-
453
- if "error" in result:
454
- raise HTTPException(status_code=400, detail=result["error"])
455
-
456
- return result
 
 
 
 
 
 
457
 
458
 
459
  @app.post("/court/end")
 
414
  if not request.session_id or not request.argument.strip():
415
  raise HTTPException(status_code=400, detail="Session ID and argument required")
416
 
417
+ try:
418
+ result = process_user_argument(request.session_id, request.argument)
419
+
420
+ if "error" in result:
421
+ raise HTTPException(status_code=400, detail=result["error"])
422
+
423
+ return result
424
+ except HTTPException:
425
+ raise
426
+ except Exception as e:
427
+ logger.error(f"Court argue endpoint error: {e}", exc_info=True)
428
+ raise HTTPException(status_code=500, detail=str(e))
429
 
430
 
431
  @app.post("/court/object")
 
450
  """Generate and produce a legal document."""
451
  from src.court.orchestrator import process_document_request
452
 
453
+ try:
454
+ result = process_document_request(
455
+ request.session_id,
456
+ request.doc_type,
457
+ request.for_side,
458
+ )
459
+
460
+ if "error" in result:
461
+ raise HTTPException(status_code=400, detail=result["error"])
462
+
463
+ return result
464
+ except HTTPException:
465
+ raise
466
+ except Exception as e:
467
+ logger.error(f"Court document endpoint error: {e}", exc_info=True)
468
+ raise HTTPException(status_code=500, detail=str(e))
469
 
470
 
471
  @app.post("/court/end")
src/court/orchestrator.py CHANGED
@@ -19,6 +19,7 @@ This module owns the 3-LLM-calls-per-round budget.
19
 
20
  import logging
21
  import json
 
22
  from typing import Dict, List, Optional, Tuple
23
 
24
  from src.court.session import (
@@ -117,16 +118,20 @@ def process_user_argument(
117
  phase = session["phase"]
118
 
119
  # Route to appropriate handler
120
- if phase == "briefing":
121
- return _handle_briefing(session_id, user_argument, session)
122
- elif phase == "rounds":
123
- return _handle_round(session_id, user_argument, session)
124
- elif phase == "cross_examination":
125
- return _handle_cross_exam_answer(session_id, user_argument, session)
126
- elif phase == "closing":
127
- return _handle_closing(session_id, user_argument, session)
128
- else:
129
- return {"error": f"Cannot process argument in phase: {phase}"}
 
 
 
 
130
 
131
 
132
  def _handle_briefing(session_id: str, user_argument: str, session: Dict) -> Dict:
@@ -680,7 +685,7 @@ Generate the complete document."""
680
  "type": doc_type,
681
  "for_side": for_side,
682
  "content": document_text,
683
- "generated_at": __import__("datetime").datetime.now(__import__("datetime").timezone.utc).isoformat(),
684
  "round": session.get("current_round", 0),
685
  }
686
 
 
19
 
20
  import logging
21
  import json
22
+ from datetime import datetime, timezone
23
  from typing import Dict, List, Optional, Tuple
24
 
25
  from src.court.session import (
 
118
  phase = session["phase"]
119
 
120
  # Route to appropriate handler
121
+ try:
122
+ if phase == "briefing":
123
+ return _handle_briefing(session_id, user_argument, session)
124
+ elif phase == "rounds":
125
+ return _handle_round(session_id, user_argument, session)
126
+ elif phase == "cross_examination":
127
+ return _handle_cross_exam_answer(session_id, user_argument, session)
128
+ elif phase == "closing":
129
+ return _handle_closing(session_id, user_argument, session)
130
+ else:
131
+ return {"error": f"Cannot process argument in phase: {phase}"}
132
+ except Exception as e:
133
+ logger.error(f"process_user_argument failed in phase {phase}: {e}", exc_info=True)
134
+ return {"error": str(e)}
135
 
136
 
137
  def _handle_briefing(session_id: str, user_argument: str, session: Dict) -> Dict:
 
685
  "type": doc_type,
686
  "for_side": for_side,
687
  "content": document_text,
688
+ "generated_at": datetime.now(timezone.utc).isoformat(),
689
  "round": session.get("current_round", 0),
690
  }
691