shell-mirror 1.5.42 → 1.5.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/public/app/dashboard.js +28 -7
- package/public/app/terminal.html +1 -1
- package/public/app/terminal.js +24 -4
package/package.json
CHANGED
package/public/app/dashboard.js
CHANGED
|
@@ -413,20 +413,26 @@ class ShellMirrorDashboard {
|
|
|
413
413
|
|
|
414
414
|
// Action handlers
|
|
415
415
|
async connectToAgent(agentId) {
|
|
416
|
+
console.log('[DASHBOARD] 🔍 DEBUG: connectToAgent called with agentId:', agentId);
|
|
417
|
+
console.log('[DASHBOARD] 🔍 DEBUG: Current agentSessions:', this.agentSessions);
|
|
418
|
+
|
|
416
419
|
// Check if there are existing sessions for this agent
|
|
417
420
|
const sessions = this.agentSessions[agentId] || [];
|
|
421
|
+
console.log('[DASHBOARD] 🔍 DEBUG: Sessions for agent:', sessions);
|
|
422
|
+
|
|
418
423
|
const activeSessions = sessions.filter(s => s.status === 'active');
|
|
424
|
+
console.log('[DASHBOARD] 🔍 DEBUG: Active sessions:', activeSessions);
|
|
419
425
|
|
|
420
426
|
if (activeSessions.length > 0) {
|
|
421
427
|
// Reconnect to the most recently active session
|
|
422
428
|
const mostRecentSession = activeSessions.reduce((latest, session) =>
|
|
423
429
|
session.lastActivity > latest.lastActivity ? session : latest
|
|
424
430
|
);
|
|
425
|
-
console.log(`[DASHBOARD] Reconnecting to existing session: ${mostRecentSession.id}`);
|
|
431
|
+
console.log(`[DASHBOARD] ✅ Reconnecting to existing session: ${mostRecentSession.id}`);
|
|
426
432
|
window.location.href = `/app/terminal.html?agent=${agentId}&session=${mostRecentSession.id}`;
|
|
427
433
|
} else {
|
|
428
434
|
// No existing sessions, create new one
|
|
429
|
-
console.log(`[DASHBOARD] Creating new session for agent: ${agentId}`);
|
|
435
|
+
console.log(`[DASHBOARD] 🆕 Creating new session for agent: ${agentId}`);
|
|
430
436
|
window.location.href = `/app/terminal.html?agent=${agentId}`;
|
|
431
437
|
}
|
|
432
438
|
}
|
|
@@ -532,28 +538,43 @@ class ShellMirrorDashboard {
|
|
|
532
538
|
// Session storage management
|
|
533
539
|
loadSessionsFromStorage() {
|
|
534
540
|
try {
|
|
541
|
+
console.log('[DASHBOARD] 🔍 DEBUG: Loading sessions from localStorage');
|
|
535
542
|
const storedSessions = localStorage.getItem('shell-mirror-sessions');
|
|
543
|
+
console.log('[DASHBOARD] 🔍 DEBUG: Raw stored sessions:', storedSessions);
|
|
544
|
+
|
|
536
545
|
if (storedSessions) {
|
|
537
546
|
const sessionData = JSON.parse(storedSessions);
|
|
547
|
+
console.log('[DASHBOARD] 🔍 DEBUG: Parsed session data:', sessionData);
|
|
538
548
|
|
|
539
549
|
// Filter out old sessions (older than 24 hours)
|
|
540
550
|
const now = Date.now();
|
|
541
551
|
const maxAge = 24 * 60 * 60 * 1000; // 24 hours
|
|
542
552
|
|
|
543
553
|
Object.keys(sessionData).forEach(agentId => {
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
);
|
|
554
|
+
console.log('[DASHBOARD] 🔍 DEBUG: Processing agent:', agentId);
|
|
555
|
+
const allSessions = sessionData[agentId];
|
|
556
|
+
console.log('[DASHBOARD] 🔍 DEBUG: All sessions for agent:', allSessions);
|
|
557
|
+
|
|
558
|
+
const validSessions = allSessions.filter(session => {
|
|
559
|
+
const age = now - session.lastActivity;
|
|
560
|
+
const isValid = age < maxAge;
|
|
561
|
+
console.log('[DASHBOARD] 🔍 DEBUG: Session', session.id, 'age:', age, 'valid:', isValid);
|
|
562
|
+
return isValid;
|
|
563
|
+
});
|
|
564
|
+
|
|
565
|
+
console.log('[DASHBOARD] 🔍 DEBUG: Valid sessions for agent:', validSessions);
|
|
547
566
|
|
|
548
567
|
if (validSessions.length > 0) {
|
|
549
568
|
this.agentSessions[agentId] = validSessions;
|
|
550
569
|
}
|
|
551
570
|
});
|
|
552
571
|
|
|
553
|
-
console.log('[DASHBOARD] Loaded sessions from storage:', this.agentSessions);
|
|
572
|
+
console.log('[DASHBOARD] ✅ Loaded sessions from storage:', this.agentSessions);
|
|
573
|
+
} else {
|
|
574
|
+
console.log('[DASHBOARD] ⚠️ No stored sessions found in localStorage');
|
|
554
575
|
}
|
|
555
576
|
} catch (error) {
|
|
556
|
-
console.error('[DASHBOARD] Error loading sessions from storage:', error);
|
|
577
|
+
console.error('[DASHBOARD] ❌ Error loading sessions from storage:', error);
|
|
557
578
|
}
|
|
558
579
|
}
|
|
559
580
|
|
package/public/app/terminal.html
CHANGED
package/public/app/terminal.js
CHANGED
|
@@ -84,10 +84,14 @@ window.addEventListener('load', () => {
|
|
|
84
84
|
const agentId = urlParams.get('agent');
|
|
85
85
|
const sessionId = urlParams.get('session');
|
|
86
86
|
|
|
87
|
+
console.log('[CLIENT] 🔍 DEBUG: URL params - agent:', agentId, 'session:', sessionId);
|
|
88
|
+
console.log('[CLIENT] 🔍 DEBUG: Full URL:', window.location.href);
|
|
89
|
+
|
|
87
90
|
if (agentId) {
|
|
88
91
|
AGENT_ID = agentId;
|
|
89
92
|
SELECTED_AGENT = { id: agentId, agentId: agentId };
|
|
90
93
|
requestedSessionId = sessionId; // Store for session request
|
|
94
|
+
console.log('[CLIENT] 🔍 DEBUG: Set requestedSessionId to:', requestedSessionId);
|
|
91
95
|
console.log('[CLIENT] 🔗 Connecting to agent:', agentId, sessionId ? `session: ${sessionId}` : '(new session)');
|
|
92
96
|
startConnection();
|
|
93
97
|
} else {
|
|
@@ -174,6 +178,8 @@ async function initialize() {
|
|
|
174
178
|
|
|
175
179
|
// Build session request
|
|
176
180
|
let sessionRequest = null;
|
|
181
|
+
console.log('[CLIENT] 🔍 DEBUG: Building session request, requestedSessionId:', requestedSessionId);
|
|
182
|
+
|
|
177
183
|
if (requestedSessionId) {
|
|
178
184
|
sessionRequest = { sessionId: requestedSessionId };
|
|
179
185
|
console.log(`[CLIENT] 🎯 Requesting existing session: ${requestedSessionId}`);
|
|
@@ -221,6 +227,7 @@ async function initialize() {
|
|
|
221
227
|
isNewSession: nextData.isNewSession || false
|
|
222
228
|
};
|
|
223
229
|
console.log('[CLIENT] 📋 Session assigned:', currentSession);
|
|
230
|
+
console.log('[CLIENT] 🔍 Agent ID for storage:', AGENT_ID);
|
|
224
231
|
|
|
225
232
|
// Update UI to show session info
|
|
226
233
|
updateSessionDisplay();
|
|
@@ -705,7 +712,13 @@ function handleSessionMessage(message) {
|
|
|
705
712
|
// Session storage helper
|
|
706
713
|
function saveSessionToLocalStorage(agentId, sessionInfo) {
|
|
707
714
|
try {
|
|
715
|
+
console.log('[CLIENT] 🔍 DEBUG: Saving session to localStorage');
|
|
716
|
+
console.log('[CLIENT] 🔍 DEBUG: AgentID:', agentId);
|
|
717
|
+
console.log('[CLIENT] 🔍 DEBUG: SessionInfo:', sessionInfo);
|
|
718
|
+
|
|
708
719
|
const storedSessions = localStorage.getItem('shell-mirror-sessions');
|
|
720
|
+
console.log('[CLIENT] 🔍 DEBUG: Current stored sessions:', storedSessions);
|
|
721
|
+
|
|
709
722
|
let sessionData = storedSessions ? JSON.parse(storedSessions) : {};
|
|
710
723
|
|
|
711
724
|
if (!sessionData[agentId]) {
|
|
@@ -716,17 +729,24 @@ function saveSessionToLocalStorage(agentId, sessionInfo) {
|
|
|
716
729
|
sessionData[agentId] = sessionData[agentId].filter(s => s.id !== sessionInfo.id);
|
|
717
730
|
|
|
718
731
|
// Add updated session info
|
|
719
|
-
|
|
732
|
+
const sessionToStore = {
|
|
720
733
|
id: sessionInfo.id,
|
|
721
734
|
name: sessionInfo.name,
|
|
722
735
|
lastActivity: Date.now(),
|
|
723
736
|
createdAt: sessionInfo.createdAt || Date.now(),
|
|
724
737
|
status: 'active'
|
|
725
|
-
}
|
|
738
|
+
};
|
|
739
|
+
|
|
740
|
+
sessionData[agentId].push(sessionToStore);
|
|
726
741
|
|
|
727
742
|
localStorage.setItem('shell-mirror-sessions', JSON.stringify(sessionData));
|
|
728
|
-
console.log('[CLIENT] 💾 Session saved to storage:',
|
|
743
|
+
console.log('[CLIENT] 💾 Session saved to storage:', sessionToStore);
|
|
744
|
+
console.log('[CLIENT] 🔍 DEBUG: Final stored data:', JSON.stringify(sessionData));
|
|
745
|
+
|
|
746
|
+
// Verify the save worked
|
|
747
|
+
const verification = localStorage.getItem('shell-mirror-sessions');
|
|
748
|
+
console.log('[CLIENT] ✅ DEBUG: Verification read:', verification);
|
|
729
749
|
} catch (error) {
|
|
730
|
-
console.error('[CLIENT] Error saving session to storage:', error);
|
|
750
|
+
console.error('[CLIENT] ❌ Error saving session to storage:', error);
|
|
731
751
|
}
|
|
732
752
|
}
|