2828import com .agentclientprotocol .sdk .agent .support .resolver .CancelNotificationResolver ;
2929import com .agentclientprotocol .sdk .agent .support .resolver .CapabilitiesResolver ;
3030import com .agentclientprotocol .sdk .agent .support .resolver .CloseSessionRequestResolver ;
31+ import com .agentclientprotocol .sdk .agent .support .resolver .DeleteSessionRequestResolver ;
3132import com .agentclientprotocol .sdk .agent .support .resolver .ForkSessionRequestResolver ;
3233import com .agentclientprotocol .sdk .agent .support .resolver .InitializeRequestResolver ;
3334import com .agentclientprotocol .sdk .agent .support .resolver .ListSessionsRequestResolver ;
3435import com .agentclientprotocol .sdk .agent .support .resolver .LoadSessionRequestResolver ;
36+ import com .agentclientprotocol .sdk .agent .support .resolver .LogoutRequestResolver ;
3537import com .agentclientprotocol .sdk .agent .support .resolver .NewSessionRequestResolver ;
3638import com .agentclientprotocol .sdk .agent .support .resolver .PromptContextResolver ;
3739import com .agentclientprotocol .sdk .agent .support .resolver .PromptRequestResolver ;
4244import com .agentclientprotocol .sdk .agent .support .resolver .SetSessionModelRequestResolver ;
4345import com .agentclientprotocol .sdk .annotation .Cancel ;
4446import com .agentclientprotocol .sdk .annotation .CloseSession ;
47+ import com .agentclientprotocol .sdk .annotation .DeleteSession ;
4548import com .agentclientprotocol .sdk .annotation .ForkSession ;
4649import com .agentclientprotocol .sdk .annotation .Initialize ;
4750import com .agentclientprotocol .sdk .annotation .ListSessions ;
4851import com .agentclientprotocol .sdk .annotation .LoadSession ;
52+ import com .agentclientprotocol .sdk .annotation .Logout ;
4953import com .agentclientprotocol .sdk .annotation .NewSession ;
5054import com .agentclientprotocol .sdk .annotation .Prompt ;
5155import com .agentclientprotocol .sdk .annotation .ResumeSession ;
@@ -201,6 +205,12 @@ private void wireHandlers(AcpAgent.SyncAgentBuilder agentBuilder) {
201205 java .util .UUID .randomUUID ().toString (), null , null ));
202206 }
203207
208+ // Logout handler
209+ AcpHandlerMethod logoutHandler = handlers .get ("logout" );
210+ if (logoutHandler != null ) {
211+ agentBuilder .logoutHandler (req -> invokeHandler (logoutHandler , req , null , null , null ));
212+ }
213+
204214 // LoadSession handler
205215 AcpHandlerMethod loadSessionHandler = handlers .get ("session/load" );
206216 if (loadSessionHandler != null ) {
@@ -241,6 +251,13 @@ private void wireHandlers(AcpAgent.SyncAgentBuilder agentBuilder) {
241251 req -> invokeHandler (closeSessionHandler , req , req .sessionId (), null , null ));
242252 }
243253
254+ // DeleteSession handler
255+ AcpHandlerMethod deleteSessionHandler = handlers .get ("session/delete" );
256+ if (deleteSessionHandler != null ) {
257+ agentBuilder .deleteSessionHandler (
258+ req -> invokeHandler (deleteSessionHandler , req , req .sessionId (), null , null ));
259+ }
260+
244261 // ResumeSession handler
245262 AcpHandlerMethod resumeSessionHandler = handlers .get ("session/resume" );
246263 if (resumeSessionHandler != null ) {
@@ -465,6 +482,10 @@ private void discoverHandlers(Class<?> agentClass, Supplier<Object> beanSupplier
465482 handlers .put ("initialize" , new AcpHandlerMethod (beanSupplier , method , "initialize" ));
466483 log .debug ("Discovered @Initialize handler: {}" , method .getName ());
467484 }
485+ if (method .isAnnotationPresent (Logout .class )) {
486+ handlers .put ("logout" , new AcpHandlerMethod (beanSupplier , method , "logout" ));
487+ log .debug ("Discovered @Logout handler: {}" , method .getName ());
488+ }
468489 if (method .isAnnotationPresent (NewSession .class )) {
469490 handlers .put ("session/new" , new AcpHandlerMethod (beanSupplier , method , "session/new" ));
470491 log .debug ("Discovered @NewSession handler: {}" , method .getName ());
@@ -493,6 +514,10 @@ private void discoverHandlers(Class<?> agentClass, Supplier<Object> beanSupplier
493514 handlers .put ("session/close" , new AcpHandlerMethod (beanSupplier , method , "session/close" ));
494515 log .debug ("Discovered @CloseSession handler: {}" , method .getName ());
495516 }
517+ if (method .isAnnotationPresent (DeleteSession .class )) {
518+ handlers .put ("session/delete" , new AcpHandlerMethod (beanSupplier , method , "session/delete" ));
519+ log .debug ("Discovered @DeleteSession handler: {}" , method .getName ());
520+ }
496521 if (method .isAnnotationPresent (ResumeSession .class )) {
497522 handlers .put ("session/resume" , new AcpHandlerMethod (beanSupplier , method , "session/resume" ));
498523 log .debug ("Discovered @ResumeSession handler: {}" , method .getName ());
@@ -517,13 +542,15 @@ private void addDefaultResolvers() {
517542 // Built-in resolvers (order matters - first match wins)
518543 // Custom resolvers added via builder go first
519544 argumentResolvers .addResolver (new InitializeRequestResolver ());
545+ argumentResolvers .addResolver (new LogoutRequestResolver ());
520546 argumentResolvers .addResolver (new NewSessionRequestResolver ());
521547 argumentResolvers .addResolver (new LoadSessionRequestResolver ());
522548 argumentResolvers .addResolver (new PromptRequestResolver ());
523549 argumentResolvers .addResolver (new SetSessionModeRequestResolver ());
524550 argumentResolvers .addResolver (new SetSessionModelRequestResolver ());
525551 argumentResolvers .addResolver (new ListSessionsRequestResolver ());
526552 argumentResolvers .addResolver (new CloseSessionRequestResolver ());
553+ argumentResolvers .addResolver (new DeleteSessionRequestResolver ());
527554 argumentResolvers .addResolver (new ResumeSessionRequestResolver ());
528555 argumentResolvers .addResolver (new ForkSessionRequestResolver ());
529556 argumentResolvers .addResolver (new SetSessionConfigOptionRequestResolver ());
0 commit comments