@@ -614,6 +614,13 @@ io.on('connection', (socket) => {
614614 // Workspace management handlers
615615 socket . on ( 'switch-workspace' , async ( { workspaceId } ) => {
616616 try {
617+ const previous = workspaceManager . getActiveWorkspace ?. ( ) || null ;
618+ activityFeed . track ( 'workspace.switch.requested' , {
619+ fromWorkspaceId : previous ?. id || null ,
620+ toWorkspaceId : String ( workspaceId || '' ) . trim ( ) || null ,
621+ socketId : socket . id
622+ } ) ;
623+
617624 logger . info ( 'Workspace switch requested' , { workspaceId } ) ;
618625
619626 const newWorkspace = await workspaceManager . switchWorkspace ( workspaceId ) ;
@@ -649,7 +656,18 @@ io.on('connection', (socket) => {
649656 }
650657
651658 logger . info ( 'Workspace switched successfully' , { workspace : newWorkspace . name } ) ;
659+ activityFeed . track ( 'workspace.switch.completed' , {
660+ fromWorkspaceId : previous ?. id || null ,
661+ toWorkspaceId : newWorkspace ?. id || null ,
662+ toWorkspaceName : newWorkspace ?. name || null ,
663+ socketId : socket . id
664+ } ) ;
652665 } catch ( error ) {
666+ activityFeed . track ( 'workspace.switch.failed' , {
667+ toWorkspaceId : String ( workspaceId || '' ) . trim ( ) || null ,
668+ socketId : socket . id ,
669+ error : error . message
670+ } ) ;
653671 logger . error ( 'Failed to switch workspace' , { error : error . message , stack : error . stack } ) ;
654672 socket . emit ( 'error' , { message : 'Failed to switch workspace' , error : error . message , stack : error . stack } ) ;
655673 }
@@ -673,6 +691,14 @@ io.on('connection', (socket) => {
673691 socket . on ( 'add-worktree-sessions' , async ( { worktreeId, worktreePath, repositoryName, repositoryType, repositoryRoot, startTier } ) => {
674692 try {
675693 logger . info ( 'Adding sessions for new worktree' , { worktreeId, worktreePath, repositoryName } ) ;
694+ activityFeed . track ( 'worktree.sessions.add.requested' , {
695+ worktreeId : String ( worktreeId || '' ) . trim ( ) || null ,
696+ worktreePath : String ( worktreePath || '' ) . trim ( ) || null ,
697+ repositoryName : String ( repositoryName || '' ) . trim ( ) || null ,
698+ repositoryType : String ( repositoryType || '' ) . trim ( ) || null ,
699+ startTier : startTier === undefined ? null : Number ( startTier ) ,
700+ socketId : socket . id
701+ } ) ;
676702
677703 // Create sessions for just this worktree
678704 const newSessions = await sessionManager . createSessionsForWorktree ( {
@@ -754,7 +780,19 @@ io.on('connection', (socket) => {
754780 worktreeId,
755781 sessionCount : Object . keys ( newSessions ) . length
756782 } ) ;
783+ activityFeed . track ( 'worktree.sessions.add.completed' , {
784+ worktreeId : String ( worktreeId || '' ) . trim ( ) || null ,
785+ sessionCount : Object . keys ( newSessions ) . length ,
786+ socketId : socket . id
787+ } ) ;
757788 } catch ( error ) {
789+ activityFeed . track ( 'worktree.sessions.add.failed' , {
790+ worktreeId : String ( worktreeId || '' ) . trim ( ) || null ,
791+ worktreePath : String ( worktreePath || '' ) . trim ( ) || null ,
792+ repositoryName : String ( repositoryName || '' ) . trim ( ) || null ,
793+ socketId : socket . id ,
794+ error : error . message
795+ } ) ;
758796 logger . error ( 'Failed to add worktree sessions' , { worktreeId, error : error . message } ) ;
759797 socket . emit ( 'error' , { message : 'Failed to add worktree sessions' , error : error . message } ) ;
760798 }
@@ -777,7 +815,18 @@ io.on('connection', (socket) => {
777815 }
778816
779817 logger . info ( 'Tab closed' , { tabId, closed } ) ;
818+ activityFeed . track ( 'tab.closed' , {
819+ tabId : String ( tabId || '' ) . trim ( ) || null ,
820+ closed,
821+ sessionCount : ids . length ,
822+ socketId : socket . id
823+ } ) ;
780824 } catch ( error ) {
825+ activityFeed . track ( 'tab.close.failed' , {
826+ tabId : String ( tabId || '' ) . trim ( ) || null ,
827+ socketId : socket . id ,
828+ error : error . message
829+ } ) ;
781830 logger . error ( 'Failed to close tab' , { tabId, error : error . message } ) ;
782831 }
783832 } ) ;
@@ -791,7 +840,13 @@ io.on('connection', (socket) => {
791840 if ( ok ) {
792841 io . emit ( 'session-closed' , { sessionId : id } ) ;
793842 }
843+ activityFeed . track ( 'session.closed' , { sessionId : id , ok : ! ! ok , socketId : socket . id } ) ;
794844 } catch ( error ) {
845+ activityFeed . track ( 'session.close.failed' , {
846+ sessionId : String ( sessionId || '' ) . trim ( ) || null ,
847+ socketId : socket . id ,
848+ error : error . message
849+ } ) ;
795850 logger . error ( 'Failed to destroy session' , { sessionId, error : error . message } ) ;
796851 }
797852 } ) ;
0 commit comments