hawkeye-mcp-server 2.0.4 → 2.0.6
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 +60 -0
- package/build/services/guidance.service.js +3 -4
- package/build/services/guidance.service.js.map +1 -1
- package/build/services/investigation-tracker.d.ts +74 -0
- package/build/services/investigation-tracker.js +120 -0
- package/build/services/investigation-tracker.js.map +1 -0
- package/build/tools/create-manual-investigation.js +61 -25
- package/build/tools/create-manual-investigation.js.map +1 -1
- package/build/tools/get-status.js +77 -0
- package/build/tools/get-status.js.map +1 -1
- package/build/workers/stream-consumer.d.ts +6 -0
- package/build/workers/stream-consumer.js +144 -0
- package/build/workers/stream-consumer.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,66 @@ 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.6] - 2025-11-23
|
|
9
|
+
|
|
10
|
+
### 🎉 Fixed - Background Stream Processing
|
|
11
|
+
|
|
12
|
+
This release fixes the critical streaming issue where the `/v1/inference/session` API response was not being consumed, causing "stream has been aborted" errors.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- **Worker Thread Stream Consumer**: New background worker that consumes streaming responses
|
|
17
|
+
- Created `src/workers/stream-consumer.ts` - Dedicated worker thread for stream consumption
|
|
18
|
+
- Created `src/services/investigation-tracker.ts` - In-memory state tracker for ongoing investigations
|
|
19
|
+
- Worker processes SSE stream data and updates tracker in real-time
|
|
20
|
+
|
|
21
|
+
- **Live Progress Tracking**: Investigations now tracked in-memory with real-time updates
|
|
22
|
+
- `investigationTracker` stores progress updates, status, and completion messages
|
|
23
|
+
- Progress updates available immediately when polling with `hawkeye_get_investigation_status`
|
|
24
|
+
- Tracks: starting → in_progress → completed/failed states
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
|
|
28
|
+
- **`create-manual-investigation` now spawns worker thread**:
|
|
29
|
+
- Creates session via `/v1/inference/new_session`
|
|
30
|
+
- Spawns background worker to consume `/v1/inference/session` stream
|
|
31
|
+
- Returns immediately with session_uuid
|
|
32
|
+
- Worker handles all streaming data asynchronously
|
|
33
|
+
|
|
34
|
+
- **`get-investigation-status` enhanced**:
|
|
35
|
+
- First checks in-memory tracker for live progress
|
|
36
|
+
- Falls back to API query if not tracked
|
|
37
|
+
- Returns progress percentage based on progress update count
|
|
38
|
+
- Shows current step from latest progress message
|
|
39
|
+
|
|
40
|
+
### Technical Details
|
|
41
|
+
|
|
42
|
+
- **Root Cause**: `/v1/inference/session` returns a **stream** of `ProcessPromptResponse` objects
|
|
43
|
+
- **Previous Behavior**: Stream was opened but never consumed, causing connection errors
|
|
44
|
+
- **New Behavior**: Worker thread consumes entire stream in background, updating shared state
|
|
45
|
+
- **Architecture**:
|
|
46
|
+
- Main thread: Returns immediately to MCP client
|
|
47
|
+
- Worker thread: Consumes stream, sends messages back to main thread
|
|
48
|
+
- Shared state: `investigationTracker` Map stores live progress
|
|
49
|
+
- Polling: LLM polls every 10-15 seconds to get latest state
|
|
50
|
+
|
|
51
|
+
### Fixed
|
|
52
|
+
|
|
53
|
+
- ✅ "stream has been aborted" errors when creating manual investigations
|
|
54
|
+
- ✅ Blocking behavior while waiting for stream to complete
|
|
55
|
+
- ✅ No feedback during investigation progress
|
|
56
|
+
- ✅ MCP protocol limitation (no streaming to client) now handled elegantly
|
|
57
|
+
|
|
58
|
+
## [2.0.5] - 2025-11-23
|
|
59
|
+
|
|
60
|
+
### Fixed
|
|
61
|
+
|
|
62
|
+
- **Removed remaining `wait_for_completion` references from guidance service documentation**
|
|
63
|
+
- Removed references at line 253 in connection sync best practices
|
|
64
|
+
- Removed references at line 530 in onboarding workflow instructions
|
|
65
|
+
- These were documentation strings that suggested using the removed parameter
|
|
66
|
+
- Ensures LLMs no longer see any mentions of `wait_for_completion` in help/guidance
|
|
67
|
+
|
|
8
68
|
## [2.0.2] - 2025-11-23
|
|
9
69
|
|
|
10
70
|
### 🚨 BREAKING CHANGE: Removed wait_for_completion
|
|
@@ -195,7 +195,7 @@ Each connection type has specific configuration requirements (API keys, credenti
|
|
|
195
195
|
- **ERROR**: Sync failed (check credentials/permissions)
|
|
196
196
|
|
|
197
197
|
**Best Practice:**
|
|
198
|
-
Use hawkeye_wait_for_connection_sync
|
|
198
|
+
Use hawkeye_wait_for_connection_sync to automatically poll until the connection is synced.`,
|
|
199
199
|
related_tools: [
|
|
200
200
|
'hawkeye_get_connection_info',
|
|
201
201
|
'hawkeye_wait_for_connection_sync',
|
|
@@ -467,9 +467,8 @@ Use hawkeye_list_project_instructions to see existing instructions, and hawkeye_
|
|
|
467
467
|
- Etc.
|
|
468
468
|
|
|
469
469
|
**Phase 3: Wait for Sync (15-30 minutes)**
|
|
470
|
-
5. Use hawkeye_wait_for_connection_sync for each connection
|
|
471
|
-
-
|
|
472
|
-
- Or check status with hawkeye_get_connection_info
|
|
470
|
+
5. Use hawkeye_wait_for_connection_sync for each connection to auto-poll
|
|
471
|
+
- Or check status manually with hawkeye_get_connection_info
|
|
473
472
|
|
|
474
473
|
**Phase 4: Add to Project (2 minutes)**
|
|
475
474
|
6. Use hawkeye_add_connection_to_project to add all connections to your project
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guidance.service.js","sourceRoot":"","sources":["../../src/services/guidance.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"guidance.service.js","sourceRoot":"","sources":["../../src/services/guidance.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
|
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},
|
|
74
|
-
// Step 2:
|
|
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
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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
|
-
|
|
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":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
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":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iCAAiC,EAAE,MAAM,wBAAwB,CAAC;AAG3E,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"get-status.js","sourceRoot":"","sources":["../../src/tools/get-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
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
|
+
// Notify parent that we're starting
|
|
12
|
+
parentPort?.postMessage({ type: 'status', status: 'starting' });
|
|
13
|
+
const client = axios.create({
|
|
14
|
+
baseURL: data.baseUrl,
|
|
15
|
+
headers: {
|
|
16
|
+
Authorization: `Bearer ${data.authToken}`,
|
|
17
|
+
'Content-Type': 'application/json',
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
const response = await client.post('/v1/inference/session', {
|
|
21
|
+
action: 'ACTION_NEXT',
|
|
22
|
+
session_uuid: data.sessionUuid,
|
|
23
|
+
project_uuid: data.projectUuid,
|
|
24
|
+
messages: [
|
|
25
|
+
{
|
|
26
|
+
content: {
|
|
27
|
+
content_type: 'CONTENT_TYPE_CHAT_PROMPT',
|
|
28
|
+
parts: [data.prompt],
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
request: {
|
|
33
|
+
request_id: data.requestId,
|
|
34
|
+
},
|
|
35
|
+
prompt_options: {
|
|
36
|
+
disable_replay: false,
|
|
37
|
+
source_focus_categories: [],
|
|
38
|
+
},
|
|
39
|
+
}, {
|
|
40
|
+
responseType: 'stream',
|
|
41
|
+
timeout: 600000, // 10 minutes
|
|
42
|
+
});
|
|
43
|
+
parentPort?.postMessage({ type: 'status', status: 'streaming' });
|
|
44
|
+
let buffer = '';
|
|
45
|
+
let messageCount = 0;
|
|
46
|
+
let endTurn = false;
|
|
47
|
+
// Process stream chunks
|
|
48
|
+
response.data.on('data', (chunk) => {
|
|
49
|
+
const chunkStr = chunk.toString();
|
|
50
|
+
buffer += chunkStr;
|
|
51
|
+
// Split by newlines
|
|
52
|
+
const lines = buffer.split('\n');
|
|
53
|
+
buffer = lines.pop() || ''; // Keep incomplete line in buffer
|
|
54
|
+
for (let line of lines) {
|
|
55
|
+
if (!line.trim())
|
|
56
|
+
continue;
|
|
57
|
+
// Handle SSE format: "data: {...}"
|
|
58
|
+
if (line.startsWith('data: ')) {
|
|
59
|
+
line = line.substring(6);
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
const message = JSON.parse(line);
|
|
63
|
+
messageCount++;
|
|
64
|
+
if (message.message?.content) {
|
|
65
|
+
const contentType = message.message.content.content_type;
|
|
66
|
+
const parts = message.message.content.parts || [];
|
|
67
|
+
// Send progress update to parent
|
|
68
|
+
if (contentType === 'CONTENT_TYPE_PROGRESS_STATUS' && parts.length > 0) {
|
|
69
|
+
parentPort?.postMessage({
|
|
70
|
+
type: 'progress',
|
|
71
|
+
update: {
|
|
72
|
+
timestamp: new Date().toISOString(),
|
|
73
|
+
message: parts[0],
|
|
74
|
+
type: 'progress',
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
else if (contentType === 'CONTENT_TYPE_INTERIM_ANALYSIS' && parts.length > 0) {
|
|
79
|
+
parentPort?.postMessage({
|
|
80
|
+
type: 'progress',
|
|
81
|
+
update: {
|
|
82
|
+
timestamp: new Date().toISOString(),
|
|
83
|
+
message: parts[0],
|
|
84
|
+
type: 'analysis',
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
else if (contentType === 'CONTENT_TYPE_CHAT_COMPLETION' && parts.length > 0) {
|
|
89
|
+
parentPort?.postMessage({
|
|
90
|
+
type: 'completion',
|
|
91
|
+
message: parts[0],
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
// Check for end turn
|
|
95
|
+
if (message.message.end_turn) {
|
|
96
|
+
endTurn = true;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Check for errors
|
|
100
|
+
if (message.message?.status && message.message.status.code !== 0) {
|
|
101
|
+
parentPort?.postMessage({
|
|
102
|
+
type: 'error',
|
|
103
|
+
error: message.message.status.message || 'Unknown error',
|
|
104
|
+
hint: message.message.status.hint,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
catch (e) {
|
|
109
|
+
// Skip invalid JSON
|
|
110
|
+
if (line.length > 0 && line !== '{}') {
|
|
111
|
+
console.error('[Worker] Skipping invalid JSON:', line.substring(0, 100));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
response.data.on('end', () => {
|
|
117
|
+
parentPort?.postMessage({
|
|
118
|
+
type: 'completed',
|
|
119
|
+
messageCount,
|
|
120
|
+
endTurn,
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
response.data.on('error', (error) => {
|
|
124
|
+
parentPort?.postMessage({
|
|
125
|
+
type: 'error',
|
|
126
|
+
error: error.message,
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
parentPort?.postMessage({
|
|
132
|
+
type: 'error',
|
|
133
|
+
error: error.message || String(error),
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// Start consuming the stream
|
|
138
|
+
consumeStream().catch((error) => {
|
|
139
|
+
parentPort?.postMessage({
|
|
140
|
+
type: 'error',
|
|
141
|
+
error: error.message || String(error),
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
//# 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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"}
|