@@ -28,6 +28,7 @@ const {
2828 sendTelegramMessageMock,
2929 sendTelegramChatActionMock,
3030 routeTurnWithResponsesMock,
31+ classifyTurnWithResponsesMock,
3132 summarizeConversationMemoryWithResponsesMock,
3233 respondToConversationTurnWithResponsesMock,
3334 recoverConfirmedMutationWithResponsesMock
@@ -36,6 +37,7 @@ const {
3637 sendTelegramMessageMock : vi . fn ( ) ,
3738 sendTelegramChatActionMock : vi . fn ( ) ,
3839 routeTurnWithResponsesMock : vi . fn ( ) ,
40+ classifyTurnWithResponsesMock : vi . fn ( ) ,
3941 summarizeConversationMemoryWithResponsesMock : vi . fn ( ) ,
4042 respondToConversationTurnWithResponsesMock : vi . fn ( ) ,
4143 recoverConfirmedMutationWithResponsesMock : vi . fn ( )
@@ -80,6 +82,7 @@ vi.mock("@atlas/integrations", async () => {
8082 editTelegramMessage : editTelegramMessageMock ,
8183 respondToConversationTurnWithResponses : respondToConversationTurnWithResponsesMock ,
8284 recoverConfirmedMutationWithResponses : recoverConfirmedMutationWithResponsesMock ,
85+ classifyTurnWithResponses : classifyTurnWithResponsesMock ,
8386 routeTurnWithResponses : routeTurnWithResponsesMock ,
8487 sendTelegramChatAction : sendTelegramChatActionMock ,
8588 sendTelegramMessage : sendTelegramMessageMock ,
@@ -147,7 +150,8 @@ function buildRoutedTurn(input: {
147150 ? { mutationInputSource : "recovered_proposal" as const }
148151 : input . action === "execute_mutation"
149152 ? { mutationInputSource : "direct_user_turn" as const }
150- : { } )
153+ : { } ) ,
154+ committedSlots : { }
151155 }
152156 } ;
153157}
@@ -275,13 +279,19 @@ beforeEach(async () => {
275279 sendTelegramMessageMock . mockReset ( ) ;
276280 sendTelegramChatActionMock . mockReset ( ) ;
277281 routeTurnWithResponsesMock . mockReset ( ) ;
282+ classifyTurnWithResponsesMock . mockReset ( ) ;
278283 summarizeConversationMemoryWithResponsesMock . mockReset ( ) ;
279284 respondToConversationTurnWithResponsesMock . mockReset ( ) ;
280285 recoverConfirmedMutationWithResponsesMock . mockReset ( ) ;
281286 routeTurnWithResponsesMock . mockResolvedValue ( {
282287 route : "mutation" ,
283288 reason : "Direct scheduling request."
284289 } ) ;
290+ classifyTurnWithResponsesMock . mockResolvedValue ( {
291+ turnType : "planning_request" ,
292+ confidence : 0.92 ,
293+ reasoning : "User wants to schedule or plan something."
294+ } ) ;
285295 summarizeConversationMemoryWithResponsesMock . mockResolvedValue ( {
286296 summary : "Recent conversation summary."
287297 } ) ;
@@ -522,6 +532,11 @@ describe("telegram webhook route", () => {
522532 const conversationResponder = vi . fn ( async ( ) => ( {
523533 reply : "What time tomorrow should I schedule the dentist?"
524534 } ) ) ;
535+ classifyTurnWithResponsesMock . mockResolvedValue ( {
536+ turnType : "planning_request" ,
537+ confidence : 0.55 ,
538+ reasoning : "Mixed-intent message with ambiguous scheduling request."
539+ } ) ;
525540
526541 const response = await handleTelegramWebhook (
527542 buildRequest ( {
0 commit comments