Documentation Index
Fetch the complete documentation index at: https://docs.litigationlabs.io/llms.txt
Use this file to discover all available pages before exploring further.
API Routes
Authentication API
GET/POST /api/auth/[...nextauth]
NextAuth.js authentication handler supporting multiple providers.
Supported Providers: Email (Magic Links), Google OAuth, Apple Sign In, Lit Gator (Development/Preview mode).
Usage:
Scenarios API
GET /api/scenarios
Retrieves all available trial scenarios.
Response:
200 Success, 500 Server error.
Sessions API
GET /api/sessions
Retrieves courtroom session(s) based on query parameters.
Query Parameters:
sessionId(string, optional) — Specific session IDscenarioId(string, optional) — User’s session for a scenariorecent(boolean, optional) — Get user’s recent sessions
POST /api/sessions
Creates a new courtroom session.
Request Body:
Courtroom Turn API
POST /api/courtroom/turn
Processes a player’s turn in the courtroom simulation.
Request Body:
- Player submits a question (
userUtterance) - Opposing Counsel evaluates for objections
- If objection raised, Judge rules (sustain/overrule)
- If sustained, question is blocked; if overruled, witness answers
- Witness agent generates response based on scenario data
- Score is calculated based on key facts elicited
- Updated session and events are returned
Library Functions
callAgentThroughGateway (lib/courtroom/gateway.ts)
Calls an AI agent through the Vercel AI Gateway.
handleTurn (lib/courtroom/orchestrator.ts)
Orchestrates a complete turn in the courtroom simulation.
Prompt Builders (lib/courtroom/prompts.ts)
buildOCSystemPrompt(scenario, session)— System prompt for Opposing Counsel agent.buildJudgeSystemPrompt(scenario, session)— System prompt for Judge agent.buildWitnessSystemPrompt(scenario, witness, session)— System prompt for Witness agent.
Scoring (lib/courtroom/scoring.ts)
Payload Functions (lib/payload.ts)
listScenarios()— Retrieves all available scenarios.getScenarioById(id)— Retrieves a specific scenario by ID or slug.createSession({ scenarioId, userId })— Creates a new courtroom session.getSessionById(id)— Retrieves a session by its sessionId.getUserSessionForScenario({ userId, scenarioId })— Gets the most recent session for a user + scenario combination.getUserRecentSessions({ userId, limit })— Gets recent sessions for a user.saveSession(session)— Saves/updates a courtroom session.
Core Types
CourtroomSession
Scenario
CourtEvent
Other Types
Phase:"pretrial" | "opening" | "direct" | "cross" | "sidebar" | "bench_ruling" | "ended"RoleTurn:"player" | "opposing_counsel" | "judge"ScoreState:{ points, keyFactsHit?, deductions?, details? }WitnessProfile:{ id, name, role?, affidavit?, tendencies?, keyFacts? }KeyFact:{ label, weight?, tags? }