@brutalist/mcp 0.6.0 → 0.6.2

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 (71) hide show
  1. package/README.md +3 -1
  2. package/dist/brutalist-server.d.ts +5 -0
  3. package/dist/brutalist-server.d.ts.map +1 -1
  4. package/dist/brutalist-server.js +295 -92
  5. package/dist/brutalist-server.js.map +1 -1
  6. package/dist/cli-agents.d.ts +7 -3
  7. package/dist/cli-agents.d.ts.map +1 -1
  8. package/dist/cli-agents.js +316 -56
  9. package/dist/cli-agents.js.map +1 -1
  10. package/dist/streaming/circuit-breaker.d.ts +186 -0
  11. package/dist/streaming/circuit-breaker.d.ts.map +1 -0
  12. package/dist/streaming/circuit-breaker.js +463 -0
  13. package/dist/streaming/circuit-breaker.js.map +1 -0
  14. package/dist/streaming/intelligent-buffer.d.ts +141 -0
  15. package/dist/streaming/intelligent-buffer.d.ts.map +1 -0
  16. package/dist/streaming/intelligent-buffer.js +555 -0
  17. package/dist/streaming/intelligent-buffer.js.map +1 -0
  18. package/dist/streaming/output-parser.d.ts +89 -0
  19. package/dist/streaming/output-parser.d.ts.map +1 -0
  20. package/dist/streaming/output-parser.js +349 -0
  21. package/dist/streaming/output-parser.js.map +1 -0
  22. package/dist/streaming/progress-tracker.d.ts +149 -0
  23. package/dist/streaming/progress-tracker.d.ts.map +1 -0
  24. package/dist/streaming/progress-tracker.js +519 -0
  25. package/dist/streaming/progress-tracker.js.map +1 -0
  26. package/dist/streaming/session-manager.d.ts +238 -0
  27. package/dist/streaming/session-manager.d.ts.map +1 -0
  28. package/dist/streaming/session-manager.js +546 -0
  29. package/dist/streaming/session-manager.js.map +1 -0
  30. package/dist/streaming/sse-transport.d.ts +95 -0
  31. package/dist/streaming/sse-transport.d.ts.map +1 -0
  32. package/dist/streaming/sse-transport.js +319 -0
  33. package/dist/streaming/sse-transport.js.map +1 -0
  34. package/dist/streaming/streaming-orchestrator.d.ts +153 -0
  35. package/dist/streaming/streaming-orchestrator.d.ts.map +1 -0
  36. package/dist/streaming/streaming-orchestrator.js +436 -0
  37. package/dist/streaming/streaming-orchestrator.js.map +1 -0
  38. package/dist/test-utils/process-manager.d.ts +61 -0
  39. package/dist/test-utils/process-manager.d.ts.map +1 -0
  40. package/dist/test-utils/process-manager.js +262 -0
  41. package/dist/test-utils/process-manager.js.map +1 -0
  42. package/dist/test-utils/server-harness.d.ts +73 -0
  43. package/dist/test-utils/server-harness.d.ts.map +1 -0
  44. package/dist/test-utils/server-harness.js +297 -0
  45. package/dist/test-utils/server-harness.js.map +1 -0
  46. package/dist/test-utils/streaming-fuzz.d.ts +57 -0
  47. package/dist/test-utils/streaming-fuzz.d.ts.map +1 -0
  48. package/dist/test-utils/streaming-fuzz.js +287 -0
  49. package/dist/test-utils/streaming-fuzz.js.map +1 -0
  50. package/dist/test-utils/test-isolation.d.ts +70 -0
  51. package/dist/test-utils/test-isolation.d.ts.map +1 -0
  52. package/dist/test-utils/test-isolation.js +193 -0
  53. package/dist/test-utils/test-isolation.js.map +1 -0
  54. package/dist/tool-definitions.d.ts.map +1 -1
  55. package/dist/tool-definitions.js +12 -6
  56. package/dist/tool-definitions.js.map +1 -1
  57. package/dist/types/brutalist.d.ts +3 -3
  58. package/dist/types/brutalist.d.ts.map +1 -1
  59. package/dist/types/tool-config.d.ts +0 -1
  60. package/dist/types/tool-config.d.ts.map +1 -1
  61. package/dist/types/tool-config.js +0 -1
  62. package/dist/types/tool-config.js.map +1 -1
  63. package/dist/utils/pagination.d.ts +3 -3
  64. package/dist/utils/pagination.d.ts.map +1 -1
  65. package/dist/utils/pagination.js +24 -6
  66. package/dist/utils/pagination.js.map +1 -1
  67. package/dist/utils/response-cache.d.ts +23 -7
  68. package/dist/utils/response-cache.d.ts.map +1 -1
  69. package/dist/utils/response-cache.js +202 -62
  70. package/dist/utils/response-cache.js.map +1 -1
  71. package/package.json +13 -3
@@ -0,0 +1,238 @@
1
+ import { EventEmitter } from 'events';
2
+ import { StreamingEvent } from '../cli-agents.js';
3
+ import { IntelligentBuffer, EventBatch } from './intelligent-buffer.js';
4
+ /**
5
+ * Session manager statistics
6
+ */
7
+ export interface SessionManagerStats {
8
+ activeSessions: number;
9
+ totalEvents: number;
10
+ memoryUsage: number;
11
+ totalSubscribers: number;
12
+ uptime: number;
13
+ }
14
+ /**
15
+ * Session state tracking for analysis
16
+ */
17
+ export interface AnalysisState {
18
+ status: 'starting' | 'running' | 'paused' | 'complete' | 'failed';
19
+ activeAgents: Set<string>;
20
+ completedAgents: Set<string>;
21
+ failedAgents: Set<string>;
22
+ findings: StreamingEvent[];
23
+ startTime: number;
24
+ endTime?: number;
25
+ progress: {
26
+ totalPhases: number;
27
+ currentPhase: number;
28
+ phaseName: string;
29
+ phaseProgress: number;
30
+ };
31
+ metrics: {
32
+ totalEvents: number;
33
+ findingsCount: number;
34
+ errorsCount: number;
35
+ avgResponseTime: number;
36
+ };
37
+ }
38
+ /**
39
+ * Session context with full lifecycle management
40
+ */
41
+ export interface SessionContext {
42
+ id: string;
43
+ startTime: number;
44
+ lastActivity: number;
45
+ subscribers: Set<StreamingSubscriber>;
46
+ eventBuffer: IntelligentBuffer;
47
+ metadata: Record<string, any>;
48
+ analysis: AnalysisState;
49
+ connectionCount: number;
50
+ maxConnections: number;
51
+ resources: {
52
+ memoryUsage: number;
53
+ eventCount: number;
54
+ connectionTime: number;
55
+ };
56
+ cleanup?: {
57
+ ttl: number;
58
+ scheduled: boolean;
59
+ timer?: NodeJS.Timeout;
60
+ };
61
+ }
62
+ /**
63
+ * Streaming subscriber interface
64
+ */
65
+ export interface StreamingSubscriber {
66
+ id: string;
67
+ sessionId: string;
68
+ type: 'sse' | 'websocket' | 'polling';
69
+ emit(event: StreamingEvent): Promise<void>;
70
+ emitBatch(batch: EventBatch): Promise<void>;
71
+ close(): void;
72
+ isConnected(): boolean;
73
+ getConnectionInfo(): {
74
+ connectedAt: number;
75
+ lastActivity: number;
76
+ eventsDelivered: number;
77
+ errorsCount: number;
78
+ };
79
+ }
80
+ /**
81
+ * Session lifecycle events
82
+ */
83
+ export interface SessionEvents {
84
+ 'session:created': (context: SessionContext) => void;
85
+ 'session:destroyed': (sessionId: string) => void;
86
+ 'session:activity': (sessionId: string, activity: string) => void;
87
+ 'session:error': (sessionId: string, error: Error) => void;
88
+ 'subscriber:connected': (sessionId: string, subscriber: StreamingSubscriber) => void;
89
+ 'subscriber:disconnected': (sessionId: string, subscriberId: string) => void;
90
+ 'analysis:started': (sessionId: string, agents: string[]) => void;
91
+ 'analysis:progress': (sessionId: string, progress: AnalysisState['progress']) => void;
92
+ 'analysis:completed': (sessionId: string, results: AnalysisState) => void;
93
+ 'analysis:failed': (sessionId: string, error: Error) => void;
94
+ }
95
+ /**
96
+ * Session configuration options
97
+ */
98
+ export interface SessionConfig {
99
+ ttl?: number;
100
+ maxConnections?: number;
101
+ maxMemoryMB?: number;
102
+ maxEvents?: number;
103
+ autoCleanup?: boolean;
104
+ bufferConfig?: {
105
+ enableCoalescence: boolean;
106
+ adaptiveThrottling: boolean;
107
+ backpressureThreshold: number;
108
+ };
109
+ }
110
+ /**
111
+ * Session channel manager with comprehensive lifecycle management
112
+ *
113
+ * Features:
114
+ * - Session isolation with secure access control
115
+ * - Automatic resource cleanup and garbage collection
116
+ * - Connection pooling and limits
117
+ * - Real-time monitoring and metrics
118
+ * - Event buffering and delivery guarantees
119
+ * - Analysis state tracking
120
+ * - Graceful error handling and recovery
121
+ */
122
+ export declare class SessionChannelManager extends EventEmitter {
123
+ private sessions;
124
+ private cleanupTimers;
125
+ private globalBuffer;
126
+ private startTime;
127
+ private readonly config;
128
+ private readonly DEFAULT_CONFIG;
129
+ private metrics;
130
+ constructor(config?: SessionConfig);
131
+ /**
132
+ * Create new session with full context
133
+ */
134
+ createSession(sessionId?: string, metadata?: Record<string, any>): SessionContext;
135
+ /**
136
+ * Get session context with access validation
137
+ */
138
+ getSession(sessionId: string, requireActive?: boolean): SessionContext | null;
139
+ /**
140
+ * Subscribe to session events with connection management
141
+ */
142
+ subscribe(sessionId: string, subscriber: StreamingSubscriber): Promise<boolean>;
143
+ /**
144
+ * Unsubscribe from session events
145
+ */
146
+ unsubscribe(sessionId: string, subscriberId: string): boolean;
147
+ /**
148
+ * Emit event to session with intelligent buffering
149
+ */
150
+ emitToSession(sessionId: string, event: StreamingEvent): Promise<void>;
151
+ /**
152
+ * Start analysis tracking for session
153
+ */
154
+ startAnalysis(sessionId: string, agents: string[]): boolean;
155
+ /**
156
+ * Complete analysis for session
157
+ */
158
+ completeAnalysis(sessionId: string): boolean;
159
+ /**
160
+ * Fail analysis for session
161
+ */
162
+ failAnalysis(sessionId: string, error: Error): boolean;
163
+ /**
164
+ * Destroy session and cleanup resources
165
+ */
166
+ destroySession(sessionId: string): boolean;
167
+ /**
168
+ * Get all active sessions
169
+ */
170
+ getActiveSessions(): SessionContext[];
171
+ /**
172
+ * Get session statistics
173
+ */
174
+ /**
175
+ * Get global system metrics
176
+ */
177
+ getGlobalMetrics(): any;
178
+ /**
179
+ * Check if session exists
180
+ */
181
+ hasSession(sessionId: string): boolean;
182
+ /**
183
+ * Get session statistics
184
+ */
185
+ getSessionStats(sessionId: string): {
186
+ eventsEmitted: number;
187
+ bufferStats: {
188
+ flushCount: number;
189
+ };
190
+ } | null;
191
+ /**
192
+ * End analysis for session
193
+ */
194
+ endAnalysis(sessionId: string): boolean;
195
+ /**
196
+ * Complete session (alias for endAnalysis)
197
+ */
198
+ completeSession(sessionId: string): boolean;
199
+ /**
200
+ * Get global statistics
201
+ */
202
+ getGlobalStats(): SessionManagerStats;
203
+ /**
204
+ * Shutdown session manager
205
+ */
206
+ shutdown(): void;
207
+ /**
208
+ * Cleanup all resources
209
+ */
210
+ destroy(): void;
211
+ /**
212
+ * Update analysis state based on events
213
+ */
214
+ private updateAnalysisState;
215
+ /**
216
+ * Schedule session cleanup
217
+ */
218
+ private scheduleCleanup;
219
+ /**
220
+ * Setup global event handlers
221
+ */
222
+ private setupEventHandlers;
223
+ /**
224
+ * Deliver event batch to session subscribers
225
+ */
226
+ private deliverBatch;
227
+ /**
228
+ * Start periodic maintenance tasks
229
+ */
230
+ private startMaintenance;
231
+ /**
232
+ * Update internal metrics
233
+ */
234
+ private updateMetrics;
235
+ }
236
+ export declare const SessionManager: typeof SessionChannelManager;
237
+ export type SessionManager = SessionChannelManager;
238
+ //# sourceMappingURL=session-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/streaming/session-manager.ts"],"names":[],"mappings":"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"}