2626import com .agentclientprotocol .sdk .agent .support .interceptor .InterceptorChain ;
2727import com .agentclientprotocol .sdk .agent .support .resolver .ArgumentResolver ;
2828import com .agentclientprotocol .sdk .agent .support .resolver .ArgumentResolverComposite ;
29+ import com .agentclientprotocol .sdk .agent .support .resolver .CancelNotificationResolver ;
2930import com .agentclientprotocol .sdk .agent .support .resolver .CapabilitiesResolver ;
3031import com .agentclientprotocol .sdk .agent .support .resolver .InitializeRequestResolver ;
32+ import com .agentclientprotocol .sdk .agent .support .resolver .LoadSessionRequestResolver ;
3133import com .agentclientprotocol .sdk .agent .support .resolver .NewSessionRequestResolver ;
3234import com .agentclientprotocol .sdk .agent .support .resolver .PromptContextResolver ;
3335import com .agentclientprotocol .sdk .agent .support .resolver .PromptRequestResolver ;
3436import com .agentclientprotocol .sdk .agent .support .resolver .SessionIdResolver ;
37+ import com .agentclientprotocol .sdk .agent .support .resolver .SetSessionModeRequestResolver ;
38+ import com .agentclientprotocol .sdk .agent .support .resolver .SetSessionModelRequestResolver ;
39+ import com .agentclientprotocol .sdk .annotation .Cancel ;
3540import com .agentclientprotocol .sdk .annotation .Initialize ;
41+ import com .agentclientprotocol .sdk .annotation .LoadSession ;
3642import com .agentclientprotocol .sdk .annotation .NewSession ;
3743import com .agentclientprotocol .sdk .annotation .Prompt ;
44+ import com .agentclientprotocol .sdk .annotation .SetSessionMode ;
45+ import com .agentclientprotocol .sdk .annotation .SetSessionModel ;
3846import com .agentclientprotocol .sdk .capabilities .NegotiatedCapabilities ;
3947import com .agentclientprotocol .sdk .spec .AcpAgentTransport ;
48+ import com .agentclientprotocol .sdk .spec .AcpSchema .CancelNotification ;
4049import com .agentclientprotocol .sdk .spec .AcpSchema .InitializeRequest ;
4150import com .agentclientprotocol .sdk .spec .AcpSchema .InitializeResponse ;
51+ import com .agentclientprotocol .sdk .spec .AcpSchema .LoadSessionRequest ;
52+ import com .agentclientprotocol .sdk .spec .AcpSchema .LoadSessionResponse ;
4253import com .agentclientprotocol .sdk .spec .AcpSchema .NewSessionRequest ;
4354import com .agentclientprotocol .sdk .spec .AcpSchema .NewSessionResponse ;
4455import com .agentclientprotocol .sdk .spec .AcpSchema .PromptRequest ;
4556import com .agentclientprotocol .sdk .spec .AcpSchema .PromptResponse ;
57+ import com .agentclientprotocol .sdk .spec .AcpSchema .SetSessionModeRequest ;
58+ import com .agentclientprotocol .sdk .spec .AcpSchema .SetSessionModeResponse ;
59+ import com .agentclientprotocol .sdk .spec .AcpSchema .SetSessionModelRequest ;
60+ import com .agentclientprotocol .sdk .spec .AcpSchema .SetSessionModelResponse ;
4661
4762import org .slf4j .Logger ;
4863import org .slf4j .LoggerFactory ;
@@ -188,6 +203,12 @@ private void wireHandlers(AcpAgent.SyncAgentBuilder agentBuilder) {
188203 java .util .UUID .randomUUID ().toString (), null , null ));
189204 }
190205
206+ // LoadSession handler
207+ AcpHandlerMethod loadSessionHandler = handlers .get ("session/load" );
208+ if (loadSessionHandler != null ) {
209+ agentBuilder .loadSessionHandler (req -> invokeHandler (loadSessionHandler , req , req .sessionId (), null , null ));
210+ }
211+
191212 // Prompt handler
192213 AcpHandlerMethod promptHandler = handlers .get ("session/prompt" );
193214 if (promptHandler != null ) {
@@ -196,6 +217,26 @@ private void wireHandlers(AcpAgent.SyncAgentBuilder agentBuilder) {
196217 return invokeHandler (promptHandler , req , req .sessionId (), syncContext , caps );
197218 });
198219 }
220+
221+ // SetSessionMode handler
222+ AcpHandlerMethod setModeHandler = handlers .get ("session/set_mode" );
223+ if (setModeHandler != null ) {
224+ agentBuilder .setSessionModeHandler (req -> invokeHandler (setModeHandler , req , req .sessionId (), null , null ));
225+ }
226+
227+ // SetSessionModel handler
228+ AcpHandlerMethod setModelHandler = handlers .get ("session/set_model" );
229+ if (setModelHandler != null ) {
230+ agentBuilder .setSessionModelHandler (req -> invokeHandler (setModelHandler , req , req .sessionId (), null , null ));
231+ }
232+
233+ // Cancel handler
234+ AcpHandlerMethod cancelHandler = handlers .get ("session/cancel" );
235+ if (cancelHandler != null ) {
236+ agentBuilder .cancelHandler (notification -> {
237+ invokeHandler (cancelHandler , notification , notification .sessionId (), null , null );
238+ });
239+ }
199240 }
200241
201242 @ SuppressWarnings ("unchecked" )
@@ -396,10 +437,26 @@ private void discoverHandlers(Class<?> agentClass, Supplier<Object> beanSupplier
396437 handlers .put ("session/new" , new AcpHandlerMethod (beanSupplier , method , "session/new" ));
397438 log .debug ("Discovered @NewSession handler: {}" , method .getName ());
398439 }
440+ if (method .isAnnotationPresent (LoadSession .class )) {
441+ handlers .put ("session/load" , new AcpHandlerMethod (beanSupplier , method , "session/load" ));
442+ log .debug ("Discovered @LoadSession handler: {}" , method .getName ());
443+ }
399444 if (method .isAnnotationPresent (Prompt .class )) {
400445 handlers .put ("session/prompt" , new AcpHandlerMethod (beanSupplier , method , "session/prompt" ));
401446 log .debug ("Discovered @Prompt handler: {}" , method .getName ());
402447 }
448+ if (method .isAnnotationPresent (SetSessionMode .class )) {
449+ handlers .put ("session/set_mode" , new AcpHandlerMethod (beanSupplier , method , "session/set_mode" ));
450+ log .debug ("Discovered @SetSessionMode handler: {}" , method .getName ());
451+ }
452+ if (method .isAnnotationPresent (SetSessionModel .class )) {
453+ handlers .put ("session/set_model" , new AcpHandlerMethod (beanSupplier , method , "session/set_model" ));
454+ log .debug ("Discovered @SetSessionModel handler: {}" , method .getName ());
455+ }
456+ if (method .isAnnotationPresent (Cancel .class )) {
457+ handlers .put ("session/cancel" , new AcpHandlerMethod (beanSupplier , method , "session/cancel" ));
458+ log .debug ("Discovered @Cancel handler: {}" , method .getName ());
459+ }
403460 }
404461 }
405462
@@ -408,7 +465,11 @@ private void addDefaultResolvers() {
408465 // Custom resolvers added via builder go first
409466 argumentResolvers .addResolver (new InitializeRequestResolver ());
410467 argumentResolvers .addResolver (new NewSessionRequestResolver ());
468+ argumentResolvers .addResolver (new LoadSessionRequestResolver ());
411469 argumentResolvers .addResolver (new PromptRequestResolver ());
470+ argumentResolvers .addResolver (new SetSessionModeRequestResolver ());
471+ argumentResolvers .addResolver (new SetSessionModelRequestResolver ());
472+ argumentResolvers .addResolver (new CancelNotificationResolver ());
412473 argumentResolvers .addResolver (new PromptContextResolver ());
413474 argumentResolvers .addResolver (new SessionIdResolver ());
414475 argumentResolvers .addResolver (new CapabilitiesResolver ());
0 commit comments