@@ -701,6 +701,67 @@ void testParseSystemMessageEvent() {
701701 assertEquals ("system.message" , event .getType ());
702702 }
703703
704+ @ Test
705+ void testParseSessionShutdownEvent () {
706+ String json = """
707+ {
708+ "type": "session.shutdown",
709+ "data": {
710+ "shutdownType": "routine",
711+ "totalPremiumRequests": 5,
712+ "totalApiDurationMs": 1234.5,
713+ "sessionStartTime": 1612345678000,
714+ "codeChanges": {
715+ "linesAdded": 10,
716+ "linesRemoved": 3,
717+ "filesModified": ["file1.java", "file2.java"]
718+ },
719+ "modelMetrics": {},
720+ "currentModel": "gpt-4"
721+ }
722+ }
723+ """ ;
724+
725+ AbstractSessionEvent event = SessionEventParser .parse (json );
726+ assertNotNull (event );
727+ assertInstanceOf (SessionShutdownEvent .class , event );
728+ assertEquals ("session.shutdown" , event .getType ());
729+
730+ SessionShutdownEvent shutdownEvent = (SessionShutdownEvent ) event ;
731+ assertEquals (SessionShutdownEvent .ShutdownType .ROUTINE , shutdownEvent .getData ().getShutdownType ());
732+ assertEquals (5 , shutdownEvent .getData ().getTotalPremiumRequests ());
733+ assertEquals ("gpt-4" , shutdownEvent .getData ().getCurrentModel ());
734+ assertNotNull (shutdownEvent .getData ().getCodeChanges ());
735+ assertEquals (10 , shutdownEvent .getData ().getCodeChanges ().getLinesAdded ());
736+ }
737+
738+ @ Test
739+ void testParseSkillInvokedEvent () {
740+ String json = """
741+ {
742+ "type": "skill.invoked",
743+ "data": {
744+ "name": "code-review",
745+ "path": "/path/to/skill",
746+ "content": "Skill instructions here",
747+ "allowedTools": ["view", "edit", "grep"]
748+ }
749+ }
750+ """ ;
751+
752+ AbstractSessionEvent event = SessionEventParser .parse (json );
753+ assertNotNull (event );
754+ assertInstanceOf (SkillInvokedEvent .class , event );
755+ assertEquals ("skill.invoked" , event .getType ());
756+
757+ SkillInvokedEvent skillEvent = (SkillInvokedEvent ) event ;
758+ assertEquals ("code-review" , skillEvent .getData ().getName ());
759+ assertEquals ("/path/to/skill" , skillEvent .getData ().getPath ());
760+ assertEquals ("Skill instructions here" , skillEvent .getData ().getContent ());
761+ assertNotNull (skillEvent .getData ().getAllowedTools ());
762+ assertEquals (3 , skillEvent .getData ().getAllowedTools ().size ());
763+ }
764+
704765 // =========================================================================
705766 // Edge Cases
706767 // =========================================================================
0 commit comments