Skip to main content
v1

Request Lifecycle

This page is the quick lifecycle view. For the full interactive debug tree, open /docs/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

PolicyEnforcementStep, ResetResolvedIntentStep, FallbackIntentStateStep, AddContainerDataStep, and McpToolStep are route-conditional and run only when config/session conditions match.

Audit Trail

Every step above emits an audit event. Use /audit/{id}/trace and then open /docs/deep-dive/request-lifecycle for the full interactive step tree and method-level trace.