Skip to main content
v2

Request Lifecycle

This page is the quick lifecycle view. For the full interactive debug tree, open /docs/v2/deep-dive/request-lifecycle.

1. API Entry Point

The journey begins when a client sends a POST request to /api/v1/conversation/message.

ConversationController.message
package: com.github.salilvnair.convengine.api.controllerfile: src/main/java/com/github/salilvnair/convengine/api/controller/ConversationController.java
JAVA
@PostMapping("/message")
public ConversationResponse message(@RequestBody ConversationRequest request) {
EngineContext engineContext = EngineContext.builder()
.conversationId(request.getConversationId())
.userText(request.getMessage())
.inputParams(request.getInputParams())
.build();

EngineResult result = engine.process(engineContext);

return mapToResponse(result);
}

2. Engine Processing

DefaultConversationalEngine.process
package: com.github.salilvnair.convengine.engine.providerfile: src/main/java/com/github/salilvnair/convengine/engine/provider/DefaultConversationalEngine.java
JAVA
@Override
public EngineResult process(EngineContext engineContext) {
EngineSession session = sessionFactory.open(engineContext);
session.setConversationHistory(historyProvider.lastTurns(session.getConversationId(), 10));
EnginePipeline pipeline = pipelineFactory.create();
return pipeline.execute(session);
}

3. The Pipeline (Step-by-Step)

Core path vs conditional steps

DialogueActStep, InteractionPolicyStep, CorrectionStep, ActionLifecycleStep, DisambiguationStep, PendingActionStep, ToolOrchestrationStep, McpToolStep, StateGraphStep, and MemoryStep are route-conditional and execute only when their prerequisites are met.

Audit Trail + Real-world trace

Every step emits audit events. Use /audit/{id}/trace, then open /docs/v2/deep-dive/request-lifecycle and /docs/v2/deep-dive/examples to compare turn-by-turn real-world traces.