elenchus_end_session
End a verification session by submitting a final verdict (PASS, FAIL, or CONDITIONAL) to close the adversarial analysis process.
Instructions
End the verification session with a final verdict.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID | |
| verdict | Yes | Final verdict: must be exactly "PASS", "FAIL", or "CONDITIONAL" |
Implementation Reference
- src/tools/session-lifecycle.ts:817-844 (handler)Main handler function that ends a session: updates status to 'converged', computes summary (totalRounds, totalIssues, resolvedIssues, unresolvedIssues, issuesBySeverity), cleans up caches (session, mediator, role, pipeline state), and returns the result.
export async function endSession( args: z.infer<typeof EndSessionSchema> ): Promise<{ sessionId: string; verdict: string; summary: object } | null> { const session = await getSession(args.sessionId); if (!session) return null; await updateSessionStatus(session.id, 'converged'); const result = { sessionId: session.id, verdict: args.verdict, summary: { totalRounds: session.currentRound, totalIssues: session.issues.length, resolvedIssues: session.issues.filter(i => i.status === 'RESOLVED').length, unresolvedIssues: session.issues.filter(i => i.status !== 'RESOLVED').length, issuesBySeverity: getIssuesSummary(session).bySeverity } }; // [FIX: REL-02] Clean up memory caches deleteSessionFromCache(session.id); deleteMediatorState(session.id); deleteRoleState(session.id); deletePipelineState(session.id); return result; } - src/tools/schemas.ts:143-146 (schema)Input schema for end_session tool: validates sessionId (string) and verdict (enum: PASS, FAIL, CONDITIONAL with custom error messaging).
export const EndSessionSchema = z.object({ sessionId: z.string().describe('Session ID'), verdict: VerdictEnum.describe('Final verdict: must be exactly "PASS", "FAIL", or "CONDITIONAL"') }); - src/tools/output-schemas.ts:168-179 (schema)Output schema for end_session: returns sessionId, verdict, and summary with totalRounds, totalIssues, resolvedIssues, unresolvedIssues, issuesByCategory, issuesBySeverity.
export const EndSessionOutputSchema = z.object({ sessionId: z.string(), verdict: z.enum(['PASS', 'FAIL', 'CONDITIONAL']), summary: z.object({ totalRounds: z.number(), totalIssues: z.number(), resolvedIssues: z.number(), unresolvedIssues: z.number(), issuesByCategory: z.record(z.number()), issuesBySeverity: z.record(z.number()) }) }).nullable(); - src/tools/session-lifecycle.ts:873-878 (registration)Tool registration mapping the name 'elenchus_end_session' to its description, schema (EndSessionSchema), and handler (endSession).
elenchus_end_session: { description: 'End the verification session with a final verdict.', schema: EndSessionSchema, handler: endSession } }; - src/tools/index.ts:27-27 (registration)Re-export of the endSession handler from session-lifecycle, making it available for external consumers of the tools module.
export { startSession, getContext, submitRound, endSession } from './session-lifecycle.js';