hawkeye-mcp-server 2.0.5 → 2.0.7

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/CHANGELOG.md CHANGED
@@ -5,6 +5,83 @@ All notable changes to the Hawkeye MCP Server will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.0.7] - 2025-11-23
9
+
10
+ ### Added
11
+
12
+ - **Enhanced Debug Logging**: Added comprehensive logging throughout worker thread stream consumer
13
+ - Worker lifecycle logs (start, connection, completion)
14
+ - Chunk reception and processing logs
15
+ - Progress update logs with message previews
16
+ - Error logs with full stack traces
17
+ - Session UUID included in all worker log messages for traceability
18
+
19
+ ### Changed
20
+
21
+ - **Improved Debugging**: All worker thread operations now log to stderr for troubleshooting
22
+ - Logs include: Base URL, project UUID, stream connection status
23
+ - Each log prefixed with `[Worker <session_uuid>]` for easy filtering
24
+ - Chunk size and message count tracking
25
+ - Stream end notifications with statistics
26
+
27
+ ### Documentation
28
+
29
+ - **Added Claude Code Logging Reference**: New `CLAUDE_CODE_LOGGING.md` document
30
+ - Comprehensive guide to finding and reading Claude Code logs
31
+ - MCP server logging configuration and testing
32
+ - Quick reference commands for log searching
33
+ - Locations of conversation logs and MCP server output
34
+
35
+ ## [2.0.6] - 2025-11-23
36
+
37
+ ### 🎉 Fixed - Background Stream Processing
38
+
39
+ This release fixes the critical streaming issue where the `/v1/inference/session` API response was not being consumed, causing "stream has been aborted" errors.
40
+
41
+ ### Added
42
+
43
+ - **Worker Thread Stream Consumer**: New background worker that consumes streaming responses
44
+ - Created `src/workers/stream-consumer.ts` - Dedicated worker thread for stream consumption
45
+ - Created `src/services/investigation-tracker.ts` - In-memory state tracker for ongoing investigations
46
+ - Worker processes SSE stream data and updates tracker in real-time
47
+
48
+ - **Live Progress Tracking**: Investigations now tracked in-memory with real-time updates
49
+ - `investigationTracker` stores progress updates, status, and completion messages
50
+ - Progress updates available immediately when polling with `hawkeye_get_investigation_status`
51
+ - Tracks: starting → in_progress → completed/failed states
52
+
53
+ ### Changed
54
+
55
+ - **`create-manual-investigation` now spawns worker thread**:
56
+ - Creates session via `/v1/inference/new_session`
57
+ - Spawns background worker to consume `/v1/inference/session` stream
58
+ - Returns immediately with session_uuid
59
+ - Worker handles all streaming data asynchronously
60
+
61
+ - **`get-investigation-status` enhanced**:
62
+ - First checks in-memory tracker for live progress
63
+ - Falls back to API query if not tracked
64
+ - Returns progress percentage based on progress update count
65
+ - Shows current step from latest progress message
66
+
67
+ ### Technical Details
68
+
69
+ - **Root Cause**: `/v1/inference/session` returns a **stream** of `ProcessPromptResponse` objects
70
+ - **Previous Behavior**: Stream was opened but never consumed, causing connection errors
71
+ - **New Behavior**: Worker thread consumes entire stream in background, updating shared state
72
+ - **Architecture**:
73
+ - Main thread: Returns immediately to MCP client
74
+ - Worker thread: Consumes stream, sends messages back to main thread
75
+ - Shared state: `investigationTracker` Map stores live progress
76
+ - Polling: LLM polls every 10-15 seconds to get latest state
77
+
78
+ ### Fixed
79
+
80
+ - ✅ "stream has been aborted" errors when creating manual investigations
81
+ - ✅ Blocking behavior while waiting for stream to complete
82
+ - ✅ No feedback during investigation progress
83
+ - ✅ MCP protocol limitation (no streaming to client) now handled elegantly
84
+
8
85
  ## [2.0.5] - 2025-11-23
9
86
 
10
87
  ### Fixed
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Investigation Tracker Service
3
+ * Manages in-memory state for ongoing/completed investigations
4
+ * Used by worker threads to update progress that can be polled by get-investigation-status
5
+ */
6
+ export interface InvestigationState {
7
+ session_uuid: string;
8
+ project_uuid: string;
9
+ status: 'starting' | 'in_progress' | 'completed' | 'failed';
10
+ started_at: Date;
11
+ completed_at?: Date;
12
+ progress_updates: ProgressUpdate[];
13
+ completion_message?: string;
14
+ error?: string;
15
+ rca?: any;
16
+ }
17
+ export interface ProgressUpdate {
18
+ timestamp: Date;
19
+ message: string;
20
+ type: 'progress' | 'analysis' | 'completion';
21
+ }
22
+ /**
23
+ * Global in-memory store for investigation states
24
+ * Keyed by session_uuid
25
+ */
26
+ declare class InvestigationTracker {
27
+ private investigations;
28
+ /**
29
+ * Create a new investigation entry
30
+ */
31
+ create(session_uuid: string, project_uuid: string): void;
32
+ /**
33
+ * Update investigation status
34
+ */
35
+ updateStatus(session_uuid: string, status: InvestigationState['status']): void;
36
+ /**
37
+ * Add a progress update
38
+ */
39
+ addProgress(session_uuid: string, update: ProgressUpdate): void;
40
+ /**
41
+ * Set completion message
42
+ */
43
+ setCompletion(session_uuid: string, message: string): void;
44
+ /**
45
+ * Set error
46
+ */
47
+ setError(session_uuid: string, error: string): void;
48
+ /**
49
+ * Set RCA data
50
+ */
51
+ setRCA(session_uuid: string, rca: any): void;
52
+ /**
53
+ * Get investigation state
54
+ */
55
+ get(session_uuid: string): InvestigationState | undefined;
56
+ /**
57
+ * Check if investigation exists
58
+ */
59
+ has(session_uuid: string): boolean;
60
+ /**
61
+ * Remove investigation from tracker (cleanup)
62
+ */
63
+ remove(session_uuid: string): void;
64
+ /**
65
+ * Get all active investigations
66
+ */
67
+ getActive(): InvestigationState[];
68
+ /**
69
+ * Cleanup completed/failed investigations older than TTL
70
+ */
71
+ cleanup(ttlMs?: number): void;
72
+ }
73
+ export declare const investigationTracker: InvestigationTracker;
74
+ export {};
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Investigation Tracker Service
3
+ * Manages in-memory state for ongoing/completed investigations
4
+ * Used by worker threads to update progress that can be polled by get-investigation-status
5
+ */
6
+ /**
7
+ * Global in-memory store for investigation states
8
+ * Keyed by session_uuid
9
+ */
10
+ class InvestigationTracker {
11
+ investigations = new Map();
12
+ /**
13
+ * Create a new investigation entry
14
+ */
15
+ create(session_uuid, project_uuid) {
16
+ this.investigations.set(session_uuid, {
17
+ session_uuid,
18
+ project_uuid,
19
+ status: 'starting',
20
+ started_at: new Date(),
21
+ progress_updates: [],
22
+ });
23
+ }
24
+ /**
25
+ * Update investigation status
26
+ */
27
+ updateStatus(session_uuid, status) {
28
+ const state = this.investigations.get(session_uuid);
29
+ if (state) {
30
+ state.status = status;
31
+ if (status === 'completed' || status === 'failed') {
32
+ state.completed_at = new Date();
33
+ }
34
+ }
35
+ }
36
+ /**
37
+ * Add a progress update
38
+ */
39
+ addProgress(session_uuid, update) {
40
+ const state = this.investigations.get(session_uuid);
41
+ if (state) {
42
+ state.progress_updates.push(update);
43
+ // Update status if we got progress
44
+ if (state.status === 'starting') {
45
+ state.status = 'in_progress';
46
+ }
47
+ }
48
+ }
49
+ /**
50
+ * Set completion message
51
+ */
52
+ setCompletion(session_uuid, message) {
53
+ const state = this.investigations.get(session_uuid);
54
+ if (state) {
55
+ state.completion_message = message;
56
+ state.status = 'completed';
57
+ state.completed_at = new Date();
58
+ }
59
+ }
60
+ /**
61
+ * Set error
62
+ */
63
+ setError(session_uuid, error) {
64
+ const state = this.investigations.get(session_uuid);
65
+ if (state) {
66
+ state.error = error;
67
+ state.status = 'failed';
68
+ state.completed_at = new Date();
69
+ }
70
+ }
71
+ /**
72
+ * Set RCA data
73
+ */
74
+ setRCA(session_uuid, rca) {
75
+ const state = this.investigations.get(session_uuid);
76
+ if (state) {
77
+ state.rca = rca;
78
+ }
79
+ }
80
+ /**
81
+ * Get investigation state
82
+ */
83
+ get(session_uuid) {
84
+ return this.investigations.get(session_uuid);
85
+ }
86
+ /**
87
+ * Check if investigation exists
88
+ */
89
+ has(session_uuid) {
90
+ return this.investigations.has(session_uuid);
91
+ }
92
+ /**
93
+ * Remove investigation from tracker (cleanup)
94
+ */
95
+ remove(session_uuid) {
96
+ this.investigations.delete(session_uuid);
97
+ }
98
+ /**
99
+ * Get all active investigations
100
+ */
101
+ getActive() {
102
+ return Array.from(this.investigations.values()).filter((inv) => inv.status === 'starting' || inv.status === 'in_progress');
103
+ }
104
+ /**
105
+ * Cleanup completed/failed investigations older than TTL
106
+ */
107
+ cleanup(ttlMs = 3600000) {
108
+ const now = Date.now();
109
+ for (const [uuid, state] of this.investigations.entries()) {
110
+ if ((state.status === 'completed' || state.status === 'failed') &&
111
+ state.completed_at &&
112
+ now - state.completed_at.getTime() > ttlMs) {
113
+ this.investigations.delete(uuid);
114
+ }
115
+ }
116
+ }
117
+ }
118
+ // Global singleton instance
119
+ export const investigationTracker = new InvestigationTracker();
120
+ //# sourceMappingURL=investigation-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"investigation-tracker.js","sourceRoot":"","sources":["../../src/services/investigation-tracker.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,14 @@
3
3
  * Creates a new manual investigation from a user-provided prompt
4
4
  */
5
5
  import { z } from 'zod';
6
+ import { Worker } from 'worker_threads';
7
+ import { fileURLToPath } from 'url';
8
+ import { dirname, join } from 'path';
6
9
  import { logger } from '../utils/logger.js';
10
+ import { investigationTracker } from '../services/investigation-tracker.js';
11
+ import { getConfig } from '../config/config.js';
12
+ const __filename = fileURLToPath(import.meta.url);
13
+ const __dirname = dirname(__filename);
7
14
  export const CreateManualInvestigationInputSchema = z.object({
8
15
  prompt: z.string().min(10, 'Prompt must be at least 10 characters').describe('Detailed investigation prompt including: specific services/resources, time frame, and symptoms/issues observed. Be as specific as possible for best results.'),
9
16
  project_uuid: z.string().optional().describe('Optional: project UUID. If not provided, will use default project'),
@@ -49,7 +56,7 @@ export async function createManualInvestigation(services, args) {
49
56
  // Ensure we're authenticated
50
57
  await services.authService.getAccessToken();
51
58
  try {
52
- logger.info('Creating manual investigation (non-blocking)...');
59
+ logger.info('Creating manual investigation with background stream consumer...');
53
60
  // Step 1: Create a new session (returns immediately)
54
61
  const requestId = `req_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
55
62
  const gendbSpecUuid = `gendb_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
@@ -70,37 +77,66 @@ export async function createManualInvestigation(services, args) {
70
77
  if (!sessionUuid) {
71
78
  throw new Error('Failed to create session - no session_uuid or uuid in response');
72
79
  }
73
- logger.info(`Session created: ${sessionUuid}, now submitting prompt...`);
74
- // Step 2: Submit prompt to the session (non-blocking)
80
+ logger.info(`Session created: ${sessionUuid}, spawning stream consumer worker...`);
81
+ // Step 2: Register investigation in tracker
82
+ investigationTracker.create(sessionUuid, projectUuid);
83
+ // Step 3: Get auth token for worker
84
+ const authToken = await services.authService.getAccessToken();
85
+ // Step 4: Spawn worker thread to consume the stream
75
86
  const promptRequestId = `req_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
76
- await services.httpClient.post('/v1/inference/session', {
77
- action: 'ACTION_NEXT',
78
- session_uuid: sessionUuid,
79
- project_uuid: projectUuid,
80
- messages: [
81
- {
82
- content: {
83
- content_type: 'CONTENT_TYPE_CHAT_PROMPT',
84
- parts: [input.prompt],
85
- },
86
- },
87
- ],
88
- request: {
89
- request_id: promptRequestId,
90
- },
91
- prompt_options: {
92
- disable_replay: false,
93
- source_focus_categories: [],
87
+ const workerPath = join(__dirname, '../workers/stream-consumer.js');
88
+ const config = getConfig();
89
+ const worker = new Worker(workerPath, {
90
+ workerData: {
91
+ baseUrl: config.baseUrl,
92
+ authToken,
93
+ sessionUuid,
94
+ projectUuid,
95
+ prompt: input.prompt,
96
+ requestId: promptRequestId,
94
97
  },
95
- }, {
96
- timeout: 5000, // Just needs to submit the prompt, not wait for completion
97
98
  });
98
- logger.info(`Prompt submitted to session: ${sessionUuid}`);
99
+ // Listen to worker messages and update tracker
100
+ worker.on('message', (msg) => {
101
+ if (msg.type === 'status') {
102
+ investigationTracker.updateStatus(sessionUuid, msg.status === 'streaming' ? 'in_progress' : 'starting');
103
+ }
104
+ else if (msg.type === 'progress') {
105
+ investigationTracker.addProgress(sessionUuid, {
106
+ timestamp: new Date(msg.update.timestamp),
107
+ message: msg.update.message,
108
+ type: msg.update.type,
109
+ });
110
+ }
111
+ else if (msg.type === 'completion') {
112
+ investigationTracker.setCompletion(sessionUuid, msg.message);
113
+ }
114
+ else if (msg.type === 'error') {
115
+ investigationTracker.setError(sessionUuid, msg.error);
116
+ logger.error(`Worker error for session ${sessionUuid}:`, msg.error);
117
+ }
118
+ else if (msg.type === 'completed') {
119
+ logger.info(`Stream consumer completed for session ${sessionUuid}`, {
120
+ messageCount: msg.messageCount,
121
+ endTurn: msg.endTurn,
122
+ });
123
+ }
124
+ });
125
+ worker.on('error', (error) => {
126
+ investigationTracker.setError(sessionUuid, error.message);
127
+ logger.error(`Worker thread error for session ${sessionUuid}:`, error);
128
+ });
129
+ worker.on('exit', (code) => {
130
+ if (code !== 0) {
131
+ logger.warn(`Worker thread exited with code ${code} for session ${sessionUuid}`);
132
+ }
133
+ });
134
+ logger.info(`Worker spawned for session: ${sessionUuid}`);
99
135
  // Always return immediately
100
136
  return {
101
137
  session_uuid: sessionUuid,
102
138
  status: 'in_progress',
103
- message: 'Investigation started in the background. Investigations typically take 2-5 minutes to complete.',
139
+ message: 'Investigation started in the background. Stream is being consumed by a worker thread. Investigations typically take 2-5 minutes to complete.',
104
140
  next_steps: [
105
141
  'Poll for progress using: hawkeye_get_investigation_status with this session_uuid',
106
142
  'Check every 10-15 seconds until status is "completed"',
@@ -1 +1 @@
1
- {"version":3,"file":"create-manual-investigation.js","sourceRoot":"","sources":["../../src/tools/create-manual-investigation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-manual-investigation.js","sourceRoot":"","sources":["../../src/tools/create-manual-investigation.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  import { GetInvestigationStatusInputSchema } from '../utils/validation.js';
6
6
  import { getConfig } from '../config/config.js';
7
7
  import { logger } from '../utils/logger.js';
8
+ import { investigationTracker } from '../services/investigation-tracker.js';
8
9
  /**
9
10
  * Get investigation status
10
11
  */
@@ -12,6 +13,42 @@ export async function getInvestigationStatus(services, args) {
12
13
  const config = getConfig();
13
14
  const input = GetInvestigationStatusInputSchema.parse(args);
14
15
  logger.info('Getting investigation status', { sessionUuid: input.session_uuid });
16
+ // FIRST: Check if this investigation is being tracked in-memory (from worker thread)
17
+ const trackedState = investigationTracker.get(input.session_uuid);
18
+ if (trackedState) {
19
+ logger.info('Found tracked investigation state', {
20
+ session_uuid: input.session_uuid,
21
+ status: trackedState.status,
22
+ progress_updates: trackedState.progress_updates.length,
23
+ });
24
+ // Return status from tracked state
25
+ const progressPercentage = calculateTrackedProgress(trackedState);
26
+ const currentStep = getTrackedCurrentStep(trackedState);
27
+ // If completed and RCA available, include it
28
+ const investigationResults = trackedState.status === 'completed' && input.include_full_details && trackedState.rca
29
+ ? {
30
+ final_answer: trackedState.completion_message || '',
31
+ chain_of_thoughts: [],
32
+ sources: [],
33
+ follow_up_suggestions: [],
34
+ }
35
+ : undefined;
36
+ return {
37
+ session_uuid: input.session_uuid,
38
+ status: trackedState.status === 'starting' || trackedState.status === 'in_progress'
39
+ ? 'in_progress'
40
+ : trackedState.status === 'completed'
41
+ ? 'completed'
42
+ : 'failed',
43
+ progress_percentage: progressPercentage,
44
+ current_step: currentStep,
45
+ investigation_results: investigationResults,
46
+ created_at: trackedState.started_at.toISOString(),
47
+ updated_at: trackedState.completed_at?.toISOString() || new Date().toISOString(),
48
+ };
49
+ }
50
+ // FALLBACK: If not tracked, query the API (old behavior)
51
+ logger.info('Investigation not in tracker, querying API', { sessionUuid: input.session_uuid });
15
52
  // Get project UUID (use default if not provided)
16
53
  const projectUuid = input.project_uuid || (await services.projectService.getDefaultProject()).uuid;
17
54
  const organizationUuid = config.defaultOrganizationUuid;
@@ -37,6 +74,46 @@ export async function getInvestigationStatus(services, args) {
37
74
  updated_at: sessionDetails.last_update || sessionDetails.updated_at || '',
38
75
  };
39
76
  }
77
+ /**
78
+ * Calculate progress from tracked state
79
+ */
80
+ function calculateTrackedProgress(state) {
81
+ if (state.status === 'completed') {
82
+ return 100;
83
+ }
84
+ if (state.status === 'failed') {
85
+ return undefined;
86
+ }
87
+ // Estimate based on progress updates
88
+ const updateCount = state.progress_updates.length;
89
+ if (updateCount === 0) {
90
+ return 5; // Just started
91
+ }
92
+ // Typical investigation has 10-15 progress updates
93
+ const estimatedTotal = 12;
94
+ const progress = Math.min(Math.round((updateCount / estimatedTotal) * 100), 95);
95
+ return progress;
96
+ }
97
+ /**
98
+ * Get current step from tracked state
99
+ */
100
+ function getTrackedCurrentStep(state) {
101
+ if (state.status === 'completed') {
102
+ return 'Investigation complete';
103
+ }
104
+ if (state.status === 'failed') {
105
+ return `Failed: ${state.error}`;
106
+ }
107
+ if (state.status === 'starting') {
108
+ return 'Starting investigation...';
109
+ }
110
+ // Get the latest progress update
111
+ if (state.progress_updates.length > 0) {
112
+ const latest = state.progress_updates[state.progress_updates.length - 1];
113
+ return humanizeProgressMessage(latest.message);
114
+ }
115
+ return 'Processing...';
116
+ }
40
117
  /**
41
118
  * Determine investigation status from session details
42
119
  */
@@ -1 +1 @@
1
- {"version":3,"file":"get-status.js","sourceRoot":"","sources":["../../src/tools/get-status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-status.js","sourceRoot":"","sources":["../../src/tools/get-status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Worker Thread: Stream Consumer
3
+ * Consumes the streaming response from /v1/inference/session
4
+ * Updates the investigation tracker as progress comes in
5
+ */
6
+ export {};
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Worker Thread: Stream Consumer
3
+ * Consumes the streaming response from /v1/inference/session
4
+ * Updates the investigation tracker as progress comes in
5
+ */
6
+ import { parentPort, workerData } from 'worker_threads';
7
+ import axios from 'axios';
8
+ const data = workerData;
9
+ async function consumeStream() {
10
+ try {
11
+ console.error(`[Worker ${data.sessionUuid}] Starting stream consumer`);
12
+ console.error(`[Worker ${data.sessionUuid}] Base URL: ${data.baseUrl}`);
13
+ console.error(`[Worker ${data.sessionUuid}] Project: ${data.projectUuid}`);
14
+ // Notify parent that we're starting
15
+ parentPort?.postMessage({ type: 'status', status: 'starting' });
16
+ const client = axios.create({
17
+ baseURL: data.baseUrl,
18
+ headers: {
19
+ Authorization: `Bearer ${data.authToken}`,
20
+ 'Content-Type': 'application/json',
21
+ },
22
+ });
23
+ console.error(`[Worker ${data.sessionUuid}] Posting to /v1/inference/session`);
24
+ const response = await client.post('/v1/inference/session', {
25
+ action: 'ACTION_NEXT',
26
+ session_uuid: data.sessionUuid,
27
+ project_uuid: data.projectUuid,
28
+ messages: [
29
+ {
30
+ content: {
31
+ content_type: 'CONTENT_TYPE_CHAT_PROMPT',
32
+ parts: [data.prompt],
33
+ },
34
+ },
35
+ ],
36
+ request: {
37
+ request_id: data.requestId,
38
+ },
39
+ prompt_options: {
40
+ disable_replay: false,
41
+ source_focus_categories: [],
42
+ },
43
+ }, {
44
+ responseType: 'stream',
45
+ timeout: 600000, // 10 minutes
46
+ });
47
+ console.error(`[Worker ${data.sessionUuid}] Stream connected, starting to consume`);
48
+ parentPort?.postMessage({ type: 'status', status: 'streaming' });
49
+ let buffer = '';
50
+ let messageCount = 0;
51
+ let endTurn = false;
52
+ // Process stream chunks
53
+ response.data.on('data', (chunk) => {
54
+ console.error(`[Worker ${data.sessionUuid}] Received chunk of ${chunk.length} bytes`);
55
+ const chunkStr = chunk.toString();
56
+ buffer += chunkStr;
57
+ // Split by newlines
58
+ const lines = buffer.split('\n');
59
+ buffer = lines.pop() || ''; // Keep incomplete line in buffer
60
+ for (let line of lines) {
61
+ if (!line.trim())
62
+ continue;
63
+ // Handle SSE format: "data: {...}"
64
+ if (line.startsWith('data: ')) {
65
+ line = line.substring(6);
66
+ }
67
+ try {
68
+ const message = JSON.parse(line);
69
+ messageCount++;
70
+ if (message.message?.content) {
71
+ const contentType = message.message.content.content_type;
72
+ const parts = message.message.content.parts || [];
73
+ // Send progress update to parent
74
+ if (contentType === 'CONTENT_TYPE_PROGRESS_STATUS' && parts.length > 0) {
75
+ console.error(`[Worker ${data.sessionUuid}] Progress: ${parts[0].substring(0, 100)}`);
76
+ parentPort?.postMessage({
77
+ type: 'progress',
78
+ update: {
79
+ timestamp: new Date().toISOString(),
80
+ message: parts[0],
81
+ type: 'progress',
82
+ },
83
+ });
84
+ }
85
+ else if (contentType === 'CONTENT_TYPE_INTERIM_ANALYSIS' && parts.length > 0) {
86
+ console.error(`[Worker ${data.sessionUuid}] Analysis update received`);
87
+ parentPort?.postMessage({
88
+ type: 'progress',
89
+ update: {
90
+ timestamp: new Date().toISOString(),
91
+ message: parts[0],
92
+ type: 'analysis',
93
+ },
94
+ });
95
+ }
96
+ else if (contentType === 'CONTENT_TYPE_CHAT_COMPLETION' && parts.length > 0) {
97
+ console.error(`[Worker ${data.sessionUuid}] Completion received`);
98
+ parentPort?.postMessage({
99
+ type: 'completion',
100
+ message: parts[0],
101
+ });
102
+ }
103
+ // Check for end turn
104
+ if (message.message.end_turn) {
105
+ endTurn = true;
106
+ }
107
+ }
108
+ // Check for errors
109
+ if (message.message?.status && message.message.status.code !== 0) {
110
+ parentPort?.postMessage({
111
+ type: 'error',
112
+ error: message.message.status.message || 'Unknown error',
113
+ hint: message.message.status.hint,
114
+ });
115
+ }
116
+ }
117
+ catch (e) {
118
+ // Skip invalid JSON
119
+ if (line.length > 0 && line !== '{}') {
120
+ console.error('[Worker] Skipping invalid JSON:', line.substring(0, 100));
121
+ }
122
+ }
123
+ }
124
+ });
125
+ response.data.on('end', () => {
126
+ console.error(`[Worker ${data.sessionUuid}] Stream ended. Messages: ${messageCount}, EndTurn: ${endTurn}`);
127
+ parentPort?.postMessage({
128
+ type: 'completed',
129
+ messageCount,
130
+ endTurn,
131
+ });
132
+ });
133
+ response.data.on('error', (error) => {
134
+ parentPort?.postMessage({
135
+ type: 'error',
136
+ error: error.message,
137
+ });
138
+ });
139
+ }
140
+ catch (error) {
141
+ console.error(`[Worker ${data.sessionUuid}] ERROR:`, error.message || String(error));
142
+ console.error(`[Worker ${data.sessionUuid}] Stack:`, error.stack);
143
+ parentPort?.postMessage({
144
+ type: 'error',
145
+ error: error.message || String(error),
146
+ });
147
+ }
148
+ }
149
+ // Start consuming the stream
150
+ consumeStream().catch((error) => {
151
+ parentPort?.postMessage({
152
+ type: 'error',
153
+ error: error.message || String(error),
154
+ });
155
+ });
156
+ //# sourceMappingURL=stream-consumer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-consumer.js","sourceRoot":"","sources":["../../src/workers/stream-consumer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hawkeye-mcp-server",
3
- "version": "2.0.5",
3
+ "version": "2.0.7",
4
4
  "description": "MCP Server for Hawkeye automated incident investigation and root cause analysis",
5
5
  "private": false,
6
6
  "type": "module",