stringray-ai 1.0.37 → 1.0.39

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.
Files changed (115) hide show
  1. package/dist/plugin/architectural-integrity.d.ts +21 -0
  2. package/dist/plugin/architectural-integrity.d.ts.map +1 -0
  3. package/dist/plugin/architectural-integrity.js +81 -0
  4. package/dist/plugin/architectural-integrity.js.map +1 -0
  5. package/dist/plugin/boot-orchestrator.d.ts +100 -0
  6. package/dist/plugin/boot-orchestrator.d.ts.map +1 -0
  7. package/dist/plugin/boot-orchestrator.js +606 -0
  8. package/dist/plugin/boot-orchestrator.js.map +1 -0
  9. package/dist/plugin/codex-injector.d.ts +72 -0
  10. package/dist/plugin/codex-injector.d.ts.map +1 -0
  11. package/dist/plugin/codex-injector.js +387 -0
  12. package/dist/plugin/codex-injector.js.map +1 -0
  13. package/dist/plugin/delegation/index.d.ts +16 -0
  14. package/dist/plugin/delegation/index.d.ts.map +1 -0
  15. package/dist/plugin/delegation/index.js +13 -0
  16. package/dist/plugin/delegation/index.js.map +1 -0
  17. package/dist/plugin/delegation/session-coordinator.d.ts +121 -0
  18. package/dist/plugin/delegation/session-coordinator.d.ts.map +1 -0
  19. package/dist/plugin/delegation/session-coordinator.js +346 -0
  20. package/dist/plugin/delegation/session-coordinator.js.map +1 -0
  21. package/dist/plugin/index.d.ts +3 -0
  22. package/dist/plugin/index.d.ts.map +1 -0
  23. package/dist/plugin/index.js +3 -0
  24. package/dist/plugin/index.js.map +1 -0
  25. package/dist/plugin/monitoring/memory-monitor.d.ts +113 -0
  26. package/dist/plugin/monitoring/memory-monitor.d.ts.map +1 -0
  27. package/dist/plugin/monitoring/memory-monitor.js +283 -0
  28. package/dist/plugin/monitoring/memory-monitor.js.map +1 -0
  29. package/dist/plugin/postprocessor/PostProcessor.d.ts +90 -0
  30. package/dist/plugin/postprocessor/PostProcessor.d.ts.map +1 -0
  31. package/dist/plugin/postprocessor/PostProcessor.js +631 -0
  32. package/dist/plugin/postprocessor/PostProcessor.js.map +1 -0
  33. package/dist/plugin/postprocessor/analysis/FailureAnalysisEngine.d.ts +40 -0
  34. package/dist/plugin/postprocessor/analysis/FailureAnalysisEngine.d.ts.map +1 -0
  35. package/dist/plugin/postprocessor/analysis/FailureAnalysisEngine.js +244 -0
  36. package/dist/plugin/postprocessor/analysis/FailureAnalysisEngine.js.map +1 -0
  37. package/dist/plugin/postprocessor/autofix/AutoFixEngine.d.ts +50 -0
  38. package/dist/plugin/postprocessor/autofix/AutoFixEngine.d.ts.map +1 -0
  39. package/dist/plugin/postprocessor/autofix/AutoFixEngine.js +246 -0
  40. package/dist/plugin/postprocessor/autofix/AutoFixEngine.js.map +1 -0
  41. package/dist/plugin/postprocessor/autofix/FixValidator.d.ts +27 -0
  42. package/dist/plugin/postprocessor/autofix/FixValidator.d.ts.map +1 -0
  43. package/dist/plugin/postprocessor/autofix/FixValidator.js +158 -0
  44. package/dist/plugin/postprocessor/autofix/FixValidator.js.map +1 -0
  45. package/dist/plugin/postprocessor/config.d.ts +7 -0
  46. package/dist/plugin/postprocessor/config.d.ts.map +1 -0
  47. package/dist/plugin/postprocessor/config.js +66 -0
  48. package/dist/plugin/postprocessor/config.js.map +1 -0
  49. package/dist/plugin/postprocessor/escalation/EscalationEngine.d.ts +73 -0
  50. package/dist/plugin/postprocessor/escalation/EscalationEngine.d.ts.map +1 -0
  51. package/dist/plugin/postprocessor/escalation/EscalationEngine.js +249 -0
  52. package/dist/plugin/postprocessor/escalation/EscalationEngine.js.map +1 -0
  53. package/dist/plugin/postprocessor/monitoring/MonitoringEngine.d.ts +19 -0
  54. package/dist/plugin/postprocessor/monitoring/MonitoringEngine.d.ts.map +1 -0
  55. package/dist/plugin/postprocessor/monitoring/MonitoringEngine.js +120 -0
  56. package/dist/plugin/postprocessor/monitoring/MonitoringEngine.js.map +1 -0
  57. package/dist/plugin/postprocessor/redeploy/RedeployCoordinator.d.ts +92 -0
  58. package/dist/plugin/postprocessor/redeploy/RedeployCoordinator.d.ts.map +1 -0
  59. package/dist/plugin/postprocessor/redeploy/RedeployCoordinator.js +319 -0
  60. package/dist/plugin/postprocessor/redeploy/RedeployCoordinator.js.map +1 -0
  61. package/dist/plugin/postprocessor/success/SuccessHandler.d.ts +61 -0
  62. package/dist/plugin/postprocessor/success/SuccessHandler.d.ts.map +1 -0
  63. package/dist/plugin/postprocessor/success/SuccessHandler.js +148 -0
  64. package/dist/plugin/postprocessor/success/SuccessHandler.js.map +1 -0
  65. package/dist/plugin/postprocessor/triggers/APITrigger.d.ts +13 -0
  66. package/dist/plugin/postprocessor/triggers/APITrigger.d.ts.map +1 -0
  67. package/dist/plugin/postprocessor/triggers/APITrigger.js +20 -0
  68. package/dist/plugin/postprocessor/triggers/APITrigger.js.map +1 -0
  69. package/dist/plugin/postprocessor/triggers/GitHookTrigger.d.ts +17 -0
  70. package/dist/plugin/postprocessor/triggers/GitHookTrigger.d.ts.map +1 -0
  71. package/dist/plugin/postprocessor/triggers/GitHookTrigger.js +285 -0
  72. package/dist/plugin/postprocessor/triggers/GitHookTrigger.js.map +1 -0
  73. package/dist/plugin/postprocessor/triggers/WebhookTrigger.d.ts +13 -0
  74. package/dist/plugin/postprocessor/triggers/WebhookTrigger.d.ts.map +1 -0
  75. package/dist/plugin/postprocessor/triggers/WebhookTrigger.js +21 -0
  76. package/dist/plugin/postprocessor/triggers/WebhookTrigger.js.map +1 -0
  77. package/dist/plugin/postprocessor/types.d.ts +198 -0
  78. package/dist/plugin/postprocessor/types.d.ts.map +1 -0
  79. package/dist/plugin/postprocessor/types.js +5 -0
  80. package/dist/plugin/postprocessor/types.js.map +1 -0
  81. package/dist/plugin/security/security-auditor.d.ts +57 -0
  82. package/dist/plugin/security/security-auditor.d.ts.map +1 -0
  83. package/dist/plugin/security/security-auditor.js +583 -0
  84. package/dist/plugin/security/security-auditor.js.map +1 -0
  85. package/dist/plugin/security/security-hardener.d.ts +63 -0
  86. package/dist/plugin/security/security-hardener.d.ts.map +1 -0
  87. package/dist/plugin/security/security-hardener.js +181 -0
  88. package/dist/plugin/security/security-hardener.js.map +1 -0
  89. package/dist/plugin/security/security-headers.d.ts +52 -0
  90. package/dist/plugin/security/security-headers.d.ts.map +1 -0
  91. package/dist/plugin/security/security-headers.js +118 -0
  92. package/dist/plugin/security/security-headers.js.map +1 -0
  93. package/dist/plugin/session/session-cleanup-manager.d.ts +118 -0
  94. package/dist/plugin/session/session-cleanup-manager.d.ts.map +1 -0
  95. package/dist/plugin/session/session-cleanup-manager.js +324 -0
  96. package/dist/plugin/session/session-cleanup-manager.js.map +1 -0
  97. package/dist/plugin/session/session-monitor.d.ts +99 -0
  98. package/dist/plugin/session/session-monitor.d.ts.map +1 -0
  99. package/dist/plugin/session/session-monitor.js +363 -0
  100. package/dist/plugin/session/session-monitor.js.map +1 -0
  101. package/dist/plugin/session/session-state-manager.d.ts +142 -0
  102. package/dist/plugin/session/session-state-manager.d.ts.map +1 -0
  103. package/dist/plugin/session/session-state-manager.js +504 -0
  104. package/dist/plugin/session/session-state-manager.js.map +1 -0
  105. package/dist/plugin/strray-activation.d.ts +18 -0
  106. package/dist/plugin/strray-activation.d.ts.map +1 -0
  107. package/dist/plugin/strray-activation.js +114 -0
  108. package/dist/plugin/strray-activation.js.map +1 -0
  109. package/dist/plugin/validation/report-content-validator.d.ts +43 -0
  110. package/dist/plugin/validation/report-content-validator.d.ts.map +1 -0
  111. package/dist/plugin/validation/report-content-validator.js +219 -0
  112. package/dist/plugin/validation/report-content-validator.js.map +1 -0
  113. package/package.json +1 -1
  114. package/scripts/test-complex-orchestration.mjs +1 -1
  115. package/scripts/test-simple-prompt.mjs +1 -1
@@ -0,0 +1,363 @@
1
+ /**
2
+ * StringRay Framework v1.0.0 - Session Monitor
3
+ *
4
+ * Provides real-time monitoring of sessions with health checks,
5
+ * performance tracking, and alerting capabilities.
6
+ *
7
+ * @version 1.0.0
8
+ * @since 2026-01-07
9
+ */
10
+ export class SessionMonitor {
11
+ stateManager;
12
+ sessionCoordinator;
13
+ cleanupManager;
14
+ config;
15
+ healthChecks = new Map();
16
+ metricsHistory = new Map();
17
+ activeAlerts = new Map();
18
+ healthCheckInterval;
19
+ metricsInterval;
20
+ constructor(stateManager, sessionCoordinator, cleanupManager, config = {}) {
21
+ this.stateManager = stateManager;
22
+ this.sessionCoordinator = sessionCoordinator;
23
+ this.cleanupManager = cleanupManager;
24
+ this.config = {
25
+ healthCheckIntervalMs: 30000,
26
+ metricsCollectionIntervalMs: 60000,
27
+ alertThresholds: {
28
+ maxResponseTime: 5000,
29
+ maxErrorRate: 0.1,
30
+ maxMemoryUsage: 100 * 1024 * 1024,
31
+ minCoordinationEfficiency: 0.8,
32
+ maxConflicts: 10,
33
+ },
34
+ enableAlerts: true,
35
+ enableMetrics: true,
36
+ ...config,
37
+ };
38
+ this.initialize();
39
+ }
40
+ initialize() {
41
+ console.log("📊 Session Monitor: Initializing...");
42
+ this.loadPersistedData();
43
+ if (this.config.enableAlerts) {
44
+ this.startHealthChecks();
45
+ }
46
+ if (this.config.enableMetrics) {
47
+ this.startMetricsCollection();
48
+ }
49
+ console.log("✅ Session Monitor: Initialized");
50
+ }
51
+ registerSession(sessionId) {
52
+ const health = {
53
+ sessionId,
54
+ status: "unknown",
55
+ lastCheck: 0,
56
+ responseTime: 0,
57
+ errorCount: 0,
58
+ activeAgents: 0,
59
+ memoryUsage: 0,
60
+ issues: [],
61
+ };
62
+ this.healthChecks.set(sessionId, health);
63
+ this.metricsHistory.set(sessionId, []);
64
+ this.persistHealthData();
65
+ console.log(`📊 Session Monitor: Registered session ${sessionId}`);
66
+ }
67
+ unregisterSession(sessionId) {
68
+ this.healthChecks.delete(sessionId);
69
+ this.metricsHistory.delete(sessionId);
70
+ for (const [alertId, alert] of this.activeAlerts) {
71
+ if (alert.sessionId === sessionId) {
72
+ alert.resolved = true;
73
+ alert.resolvedAt = Date.now();
74
+ }
75
+ }
76
+ this.persistHealthData();
77
+ console.log(`📊 Session Monitor: Unregistered session ${sessionId}`);
78
+ }
79
+ async performHealthCheck(sessionId) {
80
+ const startTime = Date.now();
81
+ const health = this.healthChecks.get(sessionId);
82
+ if (!health) {
83
+ throw new Error(`Session ${sessionId} not registered for monitoring`);
84
+ }
85
+ const issues = [];
86
+ let status = "healthy";
87
+ try {
88
+ const sessionStatus = this.sessionCoordinator.getSessionStatus(sessionId);
89
+ if (!sessionStatus) {
90
+ // Session was cleaned up but monitor wasn't notified - auto-unregister silently
91
+ console.log(`🧹 Session Monitor: Auto-unregistering cleaned up session ${sessionId}`);
92
+ this.unregisterSession(sessionId);
93
+ // Return a basic health status for the cleaned up session
94
+ return {
95
+ sessionId,
96
+ status: "unknown",
97
+ lastCheck: Date.now(),
98
+ responseTime: 0,
99
+ errorCount: 0,
100
+ activeAgents: 0,
101
+ memoryUsage: 0,
102
+ issues: ["Session was cleaned up"],
103
+ };
104
+ }
105
+ else {
106
+ health.activeAgents = sessionStatus.agentCount;
107
+ // Simplified health checks for now
108
+ // TODO: Implement comprehensive session health monitoring
109
+ }
110
+ const metadata = this.cleanupManager?.getSessionMetadata(sessionId);
111
+ if (metadata) {
112
+ health.memoryUsage = metadata.memoryUsage;
113
+ health.activeAgents = metadata.agentCount;
114
+ if (metadata.memoryUsage > this.config.alertThresholds.maxMemoryUsage) {
115
+ issues.push(`High memory usage: ${Math.round(metadata.memoryUsage / 1024 / 1024)}MB`);
116
+ status = "degraded";
117
+ }
118
+ }
119
+ else {
120
+ // Calculate real session metrics when metadata not available
121
+ health.memoryUsage = this.calculateSessionMemoryUsage(sessionId);
122
+ health.activeAgents = sessionStatus.agentCount;
123
+ }
124
+ // Check for coordination issues
125
+ const conflictCount = this.countSessionConflicts(sessionId);
126
+ if (conflictCount > this.config.alertThresholds.maxConflicts) {
127
+ issues.push(`High conflict rate: ${conflictCount} unresolved conflicts`);
128
+ status = "degraded";
129
+ }
130
+ // Check for communication delays
131
+ const avgResponseTime = this.calculateAverageResponseTime(sessionId);
132
+ if (avgResponseTime > this.config.alertThresholds.maxResponseTime) {
133
+ issues.push(`Slow response time: ${avgResponseTime}ms average`);
134
+ status = "degraded";
135
+ }
136
+ }
137
+ catch (error) {
138
+ issues.push(`Health check failed: ${error}`);
139
+ status = "critical";
140
+ health.errorCount++;
141
+ }
142
+ const responseTime = Date.now() - startTime;
143
+ if (responseTime > this.config.alertThresholds.maxResponseTime) {
144
+ issues.push(`Slow response time: ${responseTime}ms`);
145
+ status = "degraded";
146
+ }
147
+ health.status = status;
148
+ health.lastCheck = Date.now();
149
+ health.responseTime = responseTime;
150
+ health.issues = issues;
151
+ this.persistHealthData();
152
+ if (issues.length > 0 && this.config.enableAlerts) {
153
+ this.generateAlerts(sessionId, issues, status);
154
+ }
155
+ return { ...health };
156
+ }
157
+ collectMetrics(sessionId) {
158
+ const sessionStatus = this.sessionCoordinator.getSessionStatus(sessionId);
159
+ if (!sessionStatus)
160
+ return null;
161
+ const metadata = this.cleanupManager?.getSessionMetadata(sessionId);
162
+ const metrics = {
163
+ timestamp: Date.now(),
164
+ sessionId,
165
+ totalInteractions: 0, // TODO: Implement interaction tracking
166
+ successfulInteractions: 0,
167
+ failedInteractions: 0,
168
+ averageResponseTime: 0,
169
+ conflictResolutionRate: 1.0, // Simplified
170
+ coordinationEfficiency: 1.0,
171
+ memoryUsage: metadata?.memoryUsage || 0,
172
+ agentCount: sessionStatus.agentCount,
173
+ };
174
+ const history = this.metricsHistory.get(sessionId) || [];
175
+ history.push(metrics);
176
+ if (history.length > 100) {
177
+ history.shift();
178
+ }
179
+ this.metricsHistory.set(sessionId, history);
180
+ this.persistMetricsData();
181
+ return metrics;
182
+ }
183
+ getHealthStatus(sessionId) {
184
+ return this.healthChecks.get(sessionId) || null;
185
+ }
186
+ getMetricsHistory(sessionId, limit = 50) {
187
+ const history = this.metricsHistory.get(sessionId) || [];
188
+ return history.slice(-limit);
189
+ }
190
+ getActiveAlerts(sessionId) {
191
+ const alerts = Array.from(this.activeAlerts.values());
192
+ if (sessionId) {
193
+ return alerts.filter((alert) => alert.sessionId === sessionId);
194
+ }
195
+ return alerts;
196
+ }
197
+ resolveAlert(alertId) {
198
+ const alert = this.activeAlerts.get(alertId);
199
+ if (alert) {
200
+ alert.resolved = true;
201
+ alert.resolvedAt = Date.now();
202
+ this.activeAlerts.delete(alertId);
203
+ this.persistAlertData();
204
+ console.log(`📊 Session Monitor: Resolved alert ${alertId}`);
205
+ return true;
206
+ }
207
+ return false;
208
+ }
209
+ getMonitoringStats() {
210
+ let healthy = 0;
211
+ let degraded = 0;
212
+ let critical = 0;
213
+ for (const health of this.healthChecks.values()) {
214
+ switch (health.status) {
215
+ case "healthy":
216
+ healthy++;
217
+ break;
218
+ case "degraded":
219
+ degraded++;
220
+ break;
221
+ case "critical":
222
+ critical++;
223
+ break;
224
+ }
225
+ }
226
+ let totalMetrics = 0;
227
+ for (const history of this.metricsHistory.values()) {
228
+ totalMetrics += history.length;
229
+ }
230
+ return {
231
+ totalSessions: this.healthChecks.size,
232
+ healthySessions: healthy,
233
+ degradedSessions: degraded,
234
+ criticalSessions: critical,
235
+ activeAlerts: this.activeAlerts.size,
236
+ totalMetricsPoints: totalMetrics,
237
+ };
238
+ }
239
+ startHealthChecks() {
240
+ this.healthCheckInterval = setInterval(async () => {
241
+ for (const sessionId of this.healthChecks.keys()) {
242
+ try {
243
+ await this.performHealthCheck(sessionId);
244
+ }
245
+ catch (error) {
246
+ console.error(`❌ Session Monitor: Health check failed for ${sessionId}:`, error);
247
+ }
248
+ }
249
+ }, this.config.healthCheckIntervalMs);
250
+ console.log(`⏰ Session Monitor: Health checks started (interval: ${this.config.healthCheckIntervalMs}ms)`);
251
+ }
252
+ startMetricsCollection() {
253
+ this.metricsInterval = setInterval(() => {
254
+ for (const sessionId of this.metricsHistory.keys()) {
255
+ try {
256
+ this.collectMetrics(sessionId);
257
+ }
258
+ catch (error) {
259
+ console.error(`❌ Session Monitor: Metrics collection failed for ${sessionId}:`, error);
260
+ }
261
+ }
262
+ }, this.config.metricsCollectionIntervalMs);
263
+ console.log(`⏰ Session Monitor: Metrics collection started (interval: ${this.config.metricsCollectionIntervalMs}ms)`);
264
+ }
265
+ generateAlerts(sessionId, issues, status) {
266
+ const severity = status === "critical" ? "high" : status === "degraded" ? "medium" : "low";
267
+ for (const issue of issues) {
268
+ const alert = {
269
+ id: `alert_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
270
+ sessionId,
271
+ type: "health",
272
+ severity,
273
+ message: issue,
274
+ timestamp: Date.now(),
275
+ resolved: false,
276
+ };
277
+ this.activeAlerts.set(alert.id, alert);
278
+ console.log(`🚨 Session Monitor: Alert generated for ${sessionId}: ${issue}`);
279
+ }
280
+ this.persistAlertData();
281
+ }
282
+ loadPersistedData() {
283
+ const healthData = this.stateManager.get("monitor:health");
284
+ if (healthData) {
285
+ for (const [sessionId, health] of Object.entries(healthData)) {
286
+ this.healthChecks.set(sessionId, health);
287
+ }
288
+ }
289
+ const metricsData = this.stateManager.get("monitor:metrics");
290
+ if (metricsData) {
291
+ for (const [sessionId, history] of Object.entries(metricsData)) {
292
+ this.metricsHistory.set(sessionId, history);
293
+ }
294
+ }
295
+ const alertData = this.stateManager.get("monitor:alerts");
296
+ if (alertData) {
297
+ for (const [alertId, alert] of Object.entries(alertData)) {
298
+ this.activeAlerts.set(alertId, alert);
299
+ }
300
+ }
301
+ }
302
+ persistHealthData() {
303
+ const healthData = Object.fromEntries(this.healthChecks);
304
+ this.stateManager.set("monitor:health", healthData);
305
+ }
306
+ persistMetricsData() {
307
+ const metricsData = Object.fromEntries(this.metricsHistory);
308
+ this.stateManager.set("monitor:metrics", metricsData);
309
+ }
310
+ persistAlertData() {
311
+ const alertData = Object.fromEntries(this.activeAlerts);
312
+ this.stateManager.set("monitor:alerts", alertData);
313
+ }
314
+ shutdown() {
315
+ if (this.healthCheckInterval) {
316
+ clearInterval(this.healthCheckInterval);
317
+ this.healthCheckInterval = undefined;
318
+ }
319
+ if (this.metricsInterval) {
320
+ clearInterval(this.metricsInterval);
321
+ this.metricsInterval = undefined;
322
+ }
323
+ console.log("🛑 Session Monitor: Shutdown complete");
324
+ }
325
+ calculateSessionMemoryUsage(sessionId) {
326
+ // Estimate memory usage based on session activity
327
+ const metrics = this.collectMetrics(sessionId);
328
+ if (!metrics)
329
+ return 0;
330
+ // Base memory + per-interaction overhead
331
+ const baseMemory = 1024 * 1024; // 1MB base
332
+ const perInteractionMemory = 8 * 1024; // 8KB per interaction
333
+ const totalInteractions = metrics.totalInteractions;
334
+ return baseMemory + totalInteractions * perInteractionMemory;
335
+ }
336
+ countSessionConflicts(sessionId) {
337
+ // Estimate conflicts based on failed interactions
338
+ const metrics = this.collectMetrics(sessionId);
339
+ if (!metrics)
340
+ return 0;
341
+ // Conflicts are estimated as failed interactions that might indicate coordination issues
342
+ return Math.floor(metrics.failedInteractions * 0.1); // Assume 10% of failures are conflicts
343
+ }
344
+ calculateAverageResponseTime(sessionId) {
345
+ // Calculate average response time from recent metrics
346
+ const history = this.getMetricsHistory(sessionId, 10); // Last 10 metrics
347
+ if (history.length === 0)
348
+ return 0;
349
+ const totalResponseTime = history.reduce((sum, metric) => {
350
+ // Estimate response time based on coordination efficiency
351
+ // This is a simplified calculation
352
+ return (sum +
353
+ (metric.successfulInteractions > 0
354
+ ? 1000 / metric.successfulInteractions
355
+ : 1000));
356
+ }, 0);
357
+ return totalResponseTime / history.length;
358
+ }
359
+ }
360
+ export const createSessionMonitor = (stateManager, sessionCoordinator, cleanupManager, config) => {
361
+ return new SessionMonitor(stateManager, sessionCoordinator, cleanupManager, config);
362
+ };
363
+ //# sourceMappingURL=session-monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-monitor.js","sourceRoot":"","sources":["../../../src/session/session-monitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * StringRay Framework v1.0.0 - Session State Manager
3
+ *
4
+ * Manages cross-session state sharing, dependency tracking,
5
+ * and coordination for complex workflows.
6
+ *
7
+ * @version 1.0.0
8
+ * @since 2026-01-07
9
+ */
10
+ import { StringRayStateManager } from "../state/state-manager";
11
+ import { SessionCoordinator } from "../delegation/session-coordinator";
12
+ export interface SessionDependency {
13
+ sessionId: string;
14
+ dependsOn: string[];
15
+ dependedBy: string[];
16
+ state: "pending" | "active" | "completed" | "failed";
17
+ priority: number;
18
+ metadata: Record<string, any>;
19
+ }
20
+ export interface SessionGroup {
21
+ groupId: string;
22
+ sessionIds: string[];
23
+ coordinatorSession: string;
24
+ state: "forming" | "active" | "completing" | "completed" | "failed";
25
+ sharedState: Map<string, any>;
26
+ createdAt: number;
27
+ completedAt?: number;
28
+ }
29
+ export interface MigrationPlan {
30
+ sessionId: string;
31
+ targetCoordinator: string;
32
+ stateTransfer: Map<string, any>;
33
+ migrationSteps: string[];
34
+ rollbackSteps: string[];
35
+ }
36
+ export interface FailoverConfig {
37
+ sessionId: string;
38
+ backupCoordinators: string[];
39
+ failoverThreshold: number;
40
+ autoFailover: boolean;
41
+ }
42
+ export declare class SessionStateManager {
43
+ private stateManager;
44
+ private sessionCoordinator;
45
+ private dependencies;
46
+ private sessionGroups;
47
+ private failoverConfigs;
48
+ constructor(stateManager: StringRayStateManager, sessionCoordinator: SessionCoordinator);
49
+ /**
50
+ * Share state between sessions
51
+ */
52
+ shareState(fromSessionId: string, toSessionId: string, key: string, value: any): boolean;
53
+ /**
54
+ * Broadcast state to multiple sessions
55
+ */
56
+ broadcastState(fromSessionId: string, targetSessionIds: string[], key: string, value: any): number;
57
+ /**
58
+ * Register session dependency
59
+ */
60
+ registerDependency(sessionId: string, dependsOn: string[], metadata?: Record<string, any>): void;
61
+ /**
62
+ * Update dependency state
63
+ */
64
+ updateDependencyState(sessionId: string, state: SessionDependency["state"]): void;
65
+ /**
66
+ * Get dependency chain for a session
67
+ */
68
+ getDependencyChain(sessionId: string): {
69
+ dependencies: string[];
70
+ dependents: string[];
71
+ canStart: boolean;
72
+ };
73
+ /**
74
+ * Create session group for complex workflows
75
+ */
76
+ createSessionGroup(groupId: string, sessionIds: string[], coordinatorSession: string): SessionGroup;
77
+ /**
78
+ * Update session group state
79
+ */
80
+ updateSessionGroupState(groupId: string, state: SessionGroup["state"]): void;
81
+ /**
82
+ * Share state within a session group
83
+ */
84
+ shareGroupState(groupId: string, key: string, value: any, fromSessionId: string): boolean;
85
+ /**
86
+ * Get session group state
87
+ */
88
+ getGroupState(groupId: string, key: string): any;
89
+ /**
90
+ * Plan session migration
91
+ */
92
+ planMigration(sessionId: string, targetCoordinator: string): MigrationPlan;
93
+ /**
94
+ * Validate migration plan before execution
95
+ */
96
+ validateMigrationPlan(plan: MigrationPlan): Promise<{
97
+ valid: boolean;
98
+ errors: string[];
99
+ warnings: string[];
100
+ }>;
101
+ /**
102
+ * Validate rollback capability for a migration plan
103
+ */
104
+ validateRollbackCapability(plan: MigrationPlan): {
105
+ canRollback: boolean;
106
+ reason?: string;
107
+ };
108
+ /**
109
+ * Find orphaned agents in dependency graph
110
+ */
111
+ findOrphanedAgents(allAgents: string[], dependencies: any): string[];
112
+ /**
113
+ * Execute session migration
114
+ */
115
+ executeMigration(plan: MigrationPlan): Promise<boolean>;
116
+ /**
117
+ * Configure failover for a session
118
+ */
119
+ configureFailover(sessionId: string, backupCoordinators: string[], failoverThreshold: number, autoFailover: boolean): void;
120
+ /**
121
+ * Execute failover for a session
122
+ */
123
+ executeFailover(sessionId: string): Promise<boolean>;
124
+ /**
125
+ * Get coordination statistics
126
+ */
127
+ getCoordinationStats(): {
128
+ totalDependencies: number;
129
+ activeDependencies: number;
130
+ totalGroups: number;
131
+ activeGroups: number;
132
+ failoverConfigs: number;
133
+ };
134
+ private propagateDependencyUpdate;
135
+ private rollbackMigration;
136
+ private persistDependencies;
137
+ private persistSessionGroups;
138
+ private persistFailoverConfigs;
139
+ shutdown(): void;
140
+ }
141
+ export declare const createSessionStateManager: (stateManager: StringRayStateManager, sessionCoordinator: SessionCoordinator) => SessionStateManager;
142
+ //# sourceMappingURL=session-state-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-state-manager.d.ts","sourceRoot":"","sources":["../../../src/session/session-state-manager.ts"],"names":[],"mappings":"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"}