@@ -101,6 +101,8 @@ func New(sessionStore session.Store, runConfig config.RuntimeConfig, teams map[s
101101 group .DELETE ("/agents" , s .deleteAgent )
102102 // List all sessions
103103 group .GET ("/sessions" , s .getSessions )
104+ // Get sessions by agent filename
105+ group .GET ("/sessions/agent/:id" , s .getSessionsByAgent )
104106 // Get a session by id
105107 group .GET ("/sessions/:id" , s .getSession )
106108 // Resume a session by id
@@ -769,6 +771,32 @@ func (s *Server) getSessions(c echo.Context) error {
769771 return c .JSON (http .StatusOK , responses )
770772}
771773
774+ func (s * Server ) getSessionsByAgent (c echo.Context ) error {
775+ agentFilename := c .Param ("id" )
776+ if agentFilename == "" {
777+ return c .JSON (http .StatusBadRequest , map [string ]string {"error" : "id parameter is required" })
778+ }
779+
780+ sessions , err := s .sessionStore .GetSessionsByAgent (c .Request ().Context (), agentFilename )
781+ if err != nil {
782+ return c .JSON (http .StatusInternalServerError , map [string ]string {"error" : "failed to get sessions for agent" })
783+ }
784+
785+ responses := make ([]api.SessionsResponse , len (sessions ))
786+ for i , sess := range sessions {
787+ responses [i ] = api.SessionsResponse {
788+ ID : sess .ID ,
789+ Title : sess .Title ,
790+ CreatedAt : sess .CreatedAt .Format (time .RFC3339 ),
791+ NumMessages : len (sess .GetAllMessages ()),
792+ InputTokens : sess .InputTokens ,
793+ OutputTokens : sess .OutputTokens ,
794+ GetMostRecentAgentFilename : sess .GetMostRecentAgentFilename (),
795+ }
796+ }
797+ return c .JSON (http .StatusOK , responses )
798+ }
799+
772800func (s * Server ) createSession (c echo.Context ) error {
773801 var sessionTemplate session.Session
774802 if err := c .Bind (& sessionTemplate ); err != nil {
0 commit comments