hawkeye-mcp-server 1.0.0
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 +123 -0
- package/INSTALLATION.md +734 -0
- package/LICENSE +21 -0
- package/README.md +289 -0
- package/SPECIFICATION.md +1073 -0
- package/USAGE.md +849 -0
- package/build/config/config.d.ts +58 -0
- package/build/config/config.js +100 -0
- package/build/config/config.js.map +1 -0
- package/build/index.d.ts +6 -0
- package/build/index.js +138 -0
- package/build/index.js.map +1 -0
- package/build/services/auth.service.d.ts +34 -0
- package/build/services/auth.service.js +96 -0
- package/build/services/auth.service.js.map +1 -0
- package/build/services/project.service.d.ts +50 -0
- package/build/services/project.service.js +136 -0
- package/build/services/project.service.js.map +1 -0
- package/build/services/session.service.d.ts +68 -0
- package/build/services/session.service.js +357 -0
- package/build/services/session.service.js.map +1 -0
- package/build/tools/continue-investigation.d.ts +10 -0
- package/build/tools/continue-investigation.js +84 -0
- package/build/tools/continue-investigation.js.map +1 -0
- package/build/tools/get-incident-report.d.ts +10 -0
- package/build/tools/get-incident-report.js +62 -0
- package/build/tools/get-incident-report.js.map +1 -0
- package/build/tools/get-session-report.d.ts +25 -0
- package/build/tools/get-session-report.js +46 -0
- package/build/tools/get-session-report.js.map +1 -0
- package/build/tools/get-session-summary.d.ts +22 -0
- package/build/tools/get-session-summary.js +41 -0
- package/build/tools/get-session-summary.js.map +1 -0
- package/build/tools/get-status.d.ts +10 -0
- package/build/tools/get-status.js +129 -0
- package/build/tools/get-status.js.map +1 -0
- package/build/tools/index.d.ts +29 -0
- package/build/tools/index.js +349 -0
- package/build/tools/index.js.map +1 -0
- package/build/tools/inspect-session.d.ts +28 -0
- package/build/tools/inspect-session.js +51 -0
- package/build/tools/inspect-session.js.map +1 -0
- package/build/tools/investigate-alert.d.ts +10 -0
- package/build/tools/investigate-alert.js +122 -0
- package/build/tools/investigate-alert.js.map +1 -0
- package/build/tools/list-sessions.d.ts +49 -0
- package/build/tools/list-sessions.js +79 -0
- package/build/tools/list-sessions.js.map +1 -0
- package/build/types/errors.d.ts +61 -0
- package/build/types/errors.js +76 -0
- package/build/types/errors.js.map +1 -0
- package/build/types/hawkeye.d.ts +238 -0
- package/build/types/hawkeye.js +8 -0
- package/build/types/hawkeye.js.map +1 -0
- package/build/types/mcp.d.ts +125 -0
- package/build/types/mcp.js +6 -0
- package/build/types/mcp.js.map +1 -0
- package/build/utils/errors.d.ts +20 -0
- package/build/utils/errors.js +125 -0
- package/build/utils/errors.js.map +1 -0
- package/build/utils/http-client.d.ts +51 -0
- package/build/utils/http-client.js +133 -0
- package/build/utils/http-client.js.map +1 -0
- package/build/utils/logger.d.ts +35 -0
- package/build/utils/logger.js +77 -0
- package/build/utils/logger.js.map +1 -0
- package/build/utils/validation.d.ts +134 -0
- package/build/utils/validation.js +68 -0
- package/build/utils/validation.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool: hawkeye_inspect_session
|
|
3
|
+
* Gets detailed information about a session including all prompt cycles
|
|
4
|
+
*/
|
|
5
|
+
import { ToolServices } from './index.js';
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
/**
|
|
8
|
+
* Input validation schema
|
|
9
|
+
*/
|
|
10
|
+
declare const InspectSessionInputSchema: z.ZodObject<{
|
|
11
|
+
session_uuid: z.ZodString;
|
|
12
|
+
project_uuid: z.ZodOptional<z.ZodString>;
|
|
13
|
+
organization_uuid: z.ZodOptional<z.ZodString>;
|
|
14
|
+
}, "strip", z.ZodTypeAny, {
|
|
15
|
+
session_uuid: string;
|
|
16
|
+
project_uuid?: string | undefined;
|
|
17
|
+
organization_uuid?: string | undefined;
|
|
18
|
+
}, {
|
|
19
|
+
session_uuid: string;
|
|
20
|
+
project_uuid?: string | undefined;
|
|
21
|
+
organization_uuid?: string | undefined;
|
|
22
|
+
}>;
|
|
23
|
+
export type InspectSessionInput = z.infer<typeof InspectSessionInputSchema>;
|
|
24
|
+
/**
|
|
25
|
+
* Inspect session to get detailed information
|
|
26
|
+
*/
|
|
27
|
+
export declare function inspectSession(services: ToolServices, args: unknown): Promise<any>;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool: hawkeye_inspect_session
|
|
3
|
+
* Gets detailed information about a session including all prompt cycles
|
|
4
|
+
*/
|
|
5
|
+
import { getConfig } from '../config/config.js';
|
|
6
|
+
import { logger } from '../utils/logger.js';
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
/**
|
|
9
|
+
* Input validation schema
|
|
10
|
+
*/
|
|
11
|
+
const InspectSessionInputSchema = z.object({
|
|
12
|
+
session_uuid: z.string(),
|
|
13
|
+
project_uuid: z.string().optional(),
|
|
14
|
+
organization_uuid: z.string().optional(),
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* Inspect session to get detailed information
|
|
18
|
+
*/
|
|
19
|
+
export async function inspectSession(services, args) {
|
|
20
|
+
const config = getConfig();
|
|
21
|
+
const input = InspectSessionInputSchema.parse(args);
|
|
22
|
+
logger.info('Inspecting session', { sessionUuid: input.session_uuid });
|
|
23
|
+
// Get project UUID (use default if not provided)
|
|
24
|
+
const projectUuid = input.project_uuid || (await services.projectService.getDefaultProject()).uuid;
|
|
25
|
+
const organizationUuid = input.organization_uuid || config.defaultOrganizationUuid;
|
|
26
|
+
// Inspect the session
|
|
27
|
+
const sessionDetails = await services.sessionService.inspectSession(input.session_uuid, projectUuid, organizationUuid);
|
|
28
|
+
logger.info('Session inspection complete');
|
|
29
|
+
// Format the response
|
|
30
|
+
const session_info = sessionDetails.session_info || {
|
|
31
|
+
session_uuid: sessionDetails.session_uuid || sessionDetails.uuid || input.session_uuid,
|
|
32
|
+
name: sessionDetails.name || '',
|
|
33
|
+
create_time: sessionDetails.create_time || sessionDetails.created_at || '',
|
|
34
|
+
last_update: sessionDetails.last_update || sessionDetails.updated_at || '',
|
|
35
|
+
};
|
|
36
|
+
const prompt_cycles = sessionDetails.prompt_cycle || [];
|
|
37
|
+
return {
|
|
38
|
+
session_info,
|
|
39
|
+
prompt_cycles: prompt_cycles.map((cycle) => ({
|
|
40
|
+
id: cycle.id,
|
|
41
|
+
status: cycle.status,
|
|
42
|
+
request: cycle.request,
|
|
43
|
+
final_answer: cycle.final_answer,
|
|
44
|
+
chain_of_thoughts: cycle.chain_of_thoughts || [],
|
|
45
|
+
sources: cycle.sources || [],
|
|
46
|
+
follow_up_suggestions: cycle.follow_up_suggestions || [],
|
|
47
|
+
})),
|
|
48
|
+
prompt_cycle_count: prompt_cycles.length,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=inspect-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect-session.js","sourceRoot":"","sources":["../../src/tools/inspect-session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAsB,EACtB,IAAa;IAEb,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEpD,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IAEvE,iDAAiD;IACjD,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC,MAAM,QAAQ,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC;IACnG,MAAM,gBAAgB,GAAG,KAAK,CAAC,iBAAiB,IAAI,MAAM,CAAC,uBAAuB,CAAC;IAEnF,sBAAsB;IACtB,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,cAAc,CACjE,KAAK,CAAC,YAAY,EAClB,WAAW,EACX,gBAAgB,CACjB,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAE3C,sBAAsB;IACtB,MAAM,YAAY,GAAG,cAAc,CAAC,YAAY,IAAI;QAClD,YAAY,EAAE,cAAc,CAAC,YAAY,IAAI,cAAc,CAAC,IAAI,IAAI,KAAK,CAAC,YAAY;QACtF,IAAI,EAAE,cAAc,CAAC,IAAI,IAAI,EAAE;QAC/B,WAAW,EAAE,cAAc,CAAC,WAAW,IAAI,cAAc,CAAC,UAAU,IAAI,EAAE;QAC1E,WAAW,EAAE,cAAc,CAAC,WAAW,IAAI,cAAc,CAAC,UAAU,IAAI,EAAE;KAC3E,CAAC;IAEF,MAAM,aAAa,GAAG,cAAc,CAAC,YAAY,IAAI,EAAE,CAAC;IAExD,OAAO;QACL,YAAY;QACZ,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC;YAChD,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,IAAI,EAAE;YAChD,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;YAC5B,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,IAAI,EAAE;SACzD,CAAC,CAAC;QACH,kBAAkB,EAAE,aAAa,CAAC,MAAM;KACzC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool: hawkeye_investigate_alert
|
|
3
|
+
* Finds existing RCA or creates new investigation for an alert ID
|
|
4
|
+
*/
|
|
5
|
+
import { ToolServices } from './index.js';
|
|
6
|
+
import { InvestigateAlertOutput } from '../types/mcp.js';
|
|
7
|
+
/**
|
|
8
|
+
* Investigate an alert by ID
|
|
9
|
+
*/
|
|
10
|
+
export declare function investigateAlert(services: ToolServices, args: unknown): Promise<InvestigateAlertOutput>;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool: hawkeye_investigate_alert
|
|
3
|
+
* Finds existing RCA or creates new investigation for an alert ID
|
|
4
|
+
*/
|
|
5
|
+
import { InvestigateAlertInputSchema } from '../utils/validation.js';
|
|
6
|
+
import { getConfig } from '../config/config.js';
|
|
7
|
+
import { logger } from '../utils/logger.js';
|
|
8
|
+
/**
|
|
9
|
+
* Investigate an alert by ID
|
|
10
|
+
*/
|
|
11
|
+
export async function investigateAlert(services, args) {
|
|
12
|
+
const config = getConfig();
|
|
13
|
+
const input = InvestigateAlertInputSchema.parse(args);
|
|
14
|
+
logger.info('Investigating alert', { alertId: input.alert_id });
|
|
15
|
+
// Get project UUID (use default if not provided)
|
|
16
|
+
const projectUuid = input.project_uuid || (await services.projectService.getDefaultProject()).uuid;
|
|
17
|
+
const organizationUuid = config.defaultOrganizationUuid;
|
|
18
|
+
// Step 1: Search for existing sessions with this alert ID
|
|
19
|
+
logger.info('Searching for existing sessions', { alertId: input.alert_id, projectUuid });
|
|
20
|
+
const existingSessions = await services.sessionService.findSessionsByAlertId(input.alert_id, projectUuid, organizationUuid);
|
|
21
|
+
// If we found existing session(s), return the most recent one
|
|
22
|
+
if (existingSessions.length > 0) {
|
|
23
|
+
logger.info(`Found ${existingSessions.length} existing session(s) for alert`);
|
|
24
|
+
// Sort by updated_at to get the most recent
|
|
25
|
+
const latestSession = existingSessions.sort((a, b) => {
|
|
26
|
+
const aTime = a.last_update || a.updated_at || a.create_time || a.created_at || '';
|
|
27
|
+
const bTime = b.last_update || b.updated_at || b.create_time || b.created_at || '';
|
|
28
|
+
return new Date(bTime).getTime() - new Date(aTime).getTime();
|
|
29
|
+
})[0];
|
|
30
|
+
const sessionUuid = latestSession.session_uuid || latestSession.uuid || '';
|
|
31
|
+
logger.info('Using most recent session', { sessionUuid });
|
|
32
|
+
// Inspect the session to get full details
|
|
33
|
+
const sessionDetails = await services.sessionService.inspectSession(sessionUuid, projectUuid, organizationUuid);
|
|
34
|
+
// Check if investigation is complete
|
|
35
|
+
const isComplete = sessionDetails.final_answer !== undefined && sessionDetails.final_answer !== null;
|
|
36
|
+
return {
|
|
37
|
+
status: isComplete ? 'completed' : 'in_progress',
|
|
38
|
+
session_uuid: sessionUuid,
|
|
39
|
+
investigation_results: isComplete ? formatInvestigationResults(sessionDetails) : undefined,
|
|
40
|
+
message: isComplete
|
|
41
|
+
? `Found completed investigation for alert ${input.alert_id}`
|
|
42
|
+
: `Found in-progress investigation for alert ${input.alert_id}. Use hawkeye_get_investigation_status to check progress.`,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// Step 2: No existing session found, create a new investigation
|
|
46
|
+
logger.info('No existing session found, creating new investigation');
|
|
47
|
+
// Create a new session
|
|
48
|
+
const session = await services.sessionService.createSession(projectUuid, organizationUuid);
|
|
49
|
+
const sessionUuid = session.session_uuid || session.uuid || '';
|
|
50
|
+
logger.info('Created new session', { sessionUuid });
|
|
51
|
+
// Send investigation prompt
|
|
52
|
+
const investigationPrompt = `Investigate alert: ${input.alert_id}
|
|
53
|
+
|
|
54
|
+
Please provide a root cause analysis for this alert, including:
|
|
55
|
+
1. What triggered the alert
|
|
56
|
+
2. The root cause of the issue
|
|
57
|
+
3. Impact assessment
|
|
58
|
+
4. Recommended remediation steps
|
|
59
|
+
5. Prevention strategies`;
|
|
60
|
+
await services.sessionService.sendPrompt(sessionUuid, projectUuid, investigationPrompt);
|
|
61
|
+
logger.info('Investigation prompt sent');
|
|
62
|
+
// If wait_for_completion is true, poll for results
|
|
63
|
+
if (input.wait_for_completion) {
|
|
64
|
+
logger.info('Waiting for investigation to complete', {
|
|
65
|
+
maxWaitSeconds: input.max_wait_seconds,
|
|
66
|
+
});
|
|
67
|
+
const maxAttempts = Math.ceil(input.max_wait_seconds / (config.pollIntervalMs / 1000));
|
|
68
|
+
try {
|
|
69
|
+
const completedSession = await services.sessionService.pollForCompletion(sessionUuid, projectUuid, organizationUuid, maxAttempts, config.pollIntervalMs);
|
|
70
|
+
return {
|
|
71
|
+
status: 'completed',
|
|
72
|
+
session_uuid: sessionUuid,
|
|
73
|
+
investigation_results: formatInvestigationResults(completedSession),
|
|
74
|
+
message: `Investigation completed for alert ${input.alert_id}`,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
// Timeout or error during polling
|
|
79
|
+
return {
|
|
80
|
+
status: 'in_progress',
|
|
81
|
+
session_uuid: sessionUuid,
|
|
82
|
+
message: `Investigation started but not yet complete. Use hawkeye_get_investigation_status with session_uuid: ${sessionUuid} to check progress.`,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Return immediately without waiting
|
|
87
|
+
return {
|
|
88
|
+
status: 'new_investigation',
|
|
89
|
+
session_uuid: sessionUuid,
|
|
90
|
+
message: `New investigation started for alert ${input.alert_id}. Use hawkeye_get_investigation_status with session_uuid: ${sessionUuid} to check progress.`,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Format investigation results from session details
|
|
95
|
+
*/
|
|
96
|
+
function formatInvestigationResults(session) {
|
|
97
|
+
return {
|
|
98
|
+
final_answer: session.final_answer,
|
|
99
|
+
chain_of_thoughts: session.chain_of_thoughts || [],
|
|
100
|
+
sources: session.sources || [],
|
|
101
|
+
follow_up_suggestions: generateFollowUpSuggestions(session),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Generate follow-up suggestions based on investigation results
|
|
106
|
+
*/
|
|
107
|
+
function generateFollowUpSuggestions(session) {
|
|
108
|
+
const suggestions = [];
|
|
109
|
+
if (session.final_answer) {
|
|
110
|
+
suggestions.push('Can you provide more details about the root cause?');
|
|
111
|
+
suggestions.push('What are the exact steps to remediate this issue?');
|
|
112
|
+
suggestions.push('How can we prevent this from happening again?');
|
|
113
|
+
}
|
|
114
|
+
if (session.chain_of_thoughts && session.chain_of_thoughts.length > 0) {
|
|
115
|
+
suggestions.push('Can you explain the investigation process in more detail?');
|
|
116
|
+
}
|
|
117
|
+
if (session.sources && session.sources.length > 0) {
|
|
118
|
+
suggestions.push('Which logs or metrics were most relevant to this investigation?');
|
|
119
|
+
}
|
|
120
|
+
return suggestions;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=investigate-alert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"investigate-alert.js","sourceRoot":"","sources":["../../src/tools/investigate-alert.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool: hawkeye_list_sessions
|
|
3
|
+
* Lists investigation sessions for a project with pagination and date filtering
|
|
4
|
+
*/
|
|
5
|
+
import { ToolServices } from './index.js';
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
/**
|
|
8
|
+
* Input validation schema
|
|
9
|
+
*/
|
|
10
|
+
declare const ListSessionsInputSchema: z.ZodObject<{
|
|
11
|
+
project_uuid: z.ZodOptional<z.ZodString>;
|
|
12
|
+
page: z.ZodOptional<z.ZodNumber>;
|
|
13
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
14
|
+
date_from: z.ZodOptional<z.ZodString>;
|
|
15
|
+
date_to: z.ZodOptional<z.ZodString>;
|
|
16
|
+
organization_uuid: z.ZodOptional<z.ZodString>;
|
|
17
|
+
investigation_status: z.ZodOptional<z.ZodString>;
|
|
18
|
+
session_type: z.ZodOptional<z.ZodString>;
|
|
19
|
+
only_uninvestigated: z.ZodOptional<z.ZodBoolean>;
|
|
20
|
+
hide_grouped_incidents: z.ZodOptional<z.ZodBoolean>;
|
|
21
|
+
}, "strip", z.ZodTypeAny, {
|
|
22
|
+
project_uuid?: string | undefined;
|
|
23
|
+
organization_uuid?: string | undefined;
|
|
24
|
+
investigation_status?: string | undefined;
|
|
25
|
+
session_type?: string | undefined;
|
|
26
|
+
limit?: number | undefined;
|
|
27
|
+
page?: number | undefined;
|
|
28
|
+
date_from?: string | undefined;
|
|
29
|
+
date_to?: string | undefined;
|
|
30
|
+
only_uninvestigated?: boolean | undefined;
|
|
31
|
+
hide_grouped_incidents?: boolean | undefined;
|
|
32
|
+
}, {
|
|
33
|
+
project_uuid?: string | undefined;
|
|
34
|
+
organization_uuid?: string | undefined;
|
|
35
|
+
investigation_status?: string | undefined;
|
|
36
|
+
session_type?: string | undefined;
|
|
37
|
+
limit?: number | undefined;
|
|
38
|
+
page?: number | undefined;
|
|
39
|
+
date_from?: string | undefined;
|
|
40
|
+
date_to?: string | undefined;
|
|
41
|
+
only_uninvestigated?: boolean | undefined;
|
|
42
|
+
hide_grouped_incidents?: boolean | undefined;
|
|
43
|
+
}>;
|
|
44
|
+
export type ListSessionsInput = z.infer<typeof ListSessionsInputSchema>;
|
|
45
|
+
/**
|
|
46
|
+
* List sessions with pagination and filtering
|
|
47
|
+
*/
|
|
48
|
+
export declare function listSessions(services: ToolServices, args: unknown): Promise<any>;
|
|
49
|
+
export {};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool: hawkeye_list_sessions
|
|
3
|
+
* Lists investigation sessions for a project with pagination and date filtering
|
|
4
|
+
*/
|
|
5
|
+
import { getConfig } from '../config/config.js';
|
|
6
|
+
import { logger } from '../utils/logger.js';
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
/**
|
|
9
|
+
* Input validation schema
|
|
10
|
+
*/
|
|
11
|
+
const ListSessionsInputSchema = z.object({
|
|
12
|
+
project_uuid: z.string().optional(),
|
|
13
|
+
page: z.number().int().positive().optional(),
|
|
14
|
+
limit: z.number().int().positive().max(100).optional(),
|
|
15
|
+
date_from: z.string().optional(),
|
|
16
|
+
date_to: z.string().optional(),
|
|
17
|
+
organization_uuid: z.string().optional(),
|
|
18
|
+
investigation_status: z.string().optional(),
|
|
19
|
+
session_type: z.string().optional(),
|
|
20
|
+
only_uninvestigated: z.boolean().optional(),
|
|
21
|
+
hide_grouped_incidents: z.boolean().optional(),
|
|
22
|
+
});
|
|
23
|
+
/**
|
|
24
|
+
* List sessions with pagination and filtering
|
|
25
|
+
*/
|
|
26
|
+
export async function listSessions(services, args) {
|
|
27
|
+
const config = getConfig();
|
|
28
|
+
const input = ListSessionsInputSchema.parse(args);
|
|
29
|
+
logger.info('Listing sessions', {
|
|
30
|
+
projectUuid: input.project_uuid,
|
|
31
|
+
page: input.page,
|
|
32
|
+
limit: input.limit,
|
|
33
|
+
onlyUninvestigated: input.only_uninvestigated,
|
|
34
|
+
});
|
|
35
|
+
// Get project UUID (use default if not provided)
|
|
36
|
+
const projectUuid = input.project_uuid || (await services.projectService.getDefaultProject()).uuid;
|
|
37
|
+
const organizationUuid = input.organization_uuid || config.defaultOrganizationUuid;
|
|
38
|
+
// Handle convenience parameter for uninvestigated incidents
|
|
39
|
+
let investigationStatus = input.investigation_status;
|
|
40
|
+
let sessionType = input.session_type;
|
|
41
|
+
if (input.only_uninvestigated === true) {
|
|
42
|
+
investigationStatus = 'INVESTIGATION_STATUS_NOT_STARTED';
|
|
43
|
+
sessionType = 'SESSION_TYPE_INCIDENT';
|
|
44
|
+
}
|
|
45
|
+
// List sessions with pagination
|
|
46
|
+
const sessions = await services.sessionService.listSessionsWithPagination(projectUuid, organizationUuid, {
|
|
47
|
+
page: input.page,
|
|
48
|
+
limit: input.limit,
|
|
49
|
+
dateFrom: input.date_from,
|
|
50
|
+
dateTo: input.date_to,
|
|
51
|
+
investigationStatus,
|
|
52
|
+
sessionType,
|
|
53
|
+
hideGroupedIncidents: input.hide_grouped_incidents,
|
|
54
|
+
});
|
|
55
|
+
logger.info(`Found ${sessions.length} sessions`);
|
|
56
|
+
return {
|
|
57
|
+
sessions: sessions.map((s) => ({
|
|
58
|
+
session_uuid: s.session_uuid || s.uuid,
|
|
59
|
+
name: s.name,
|
|
60
|
+
create_time: s.create_time || s.created_at,
|
|
61
|
+
last_update: s.last_update || s.updated_at,
|
|
62
|
+
prompt_cycle_count: s.prompt_cycle_ids?.length || s.prompt_cycle_count || 0,
|
|
63
|
+
incident_info: s.incident_info,
|
|
64
|
+
})),
|
|
65
|
+
page: input.page || 1,
|
|
66
|
+
limit: input.limit || 50,
|
|
67
|
+
count: sessions.length,
|
|
68
|
+
project_uuid: projectUuid,
|
|
69
|
+
filters_applied: {
|
|
70
|
+
date_from: input.date_from,
|
|
71
|
+
date_to: input.date_to,
|
|
72
|
+
investigation_status: investigationStatus,
|
|
73
|
+
session_type: sessionType,
|
|
74
|
+
only_uninvestigated: input.only_uninvestigated,
|
|
75
|
+
hide_grouped_incidents: input.hide_grouped_incidents,
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=list-sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-sessions.js","sourceRoot":"","sources":["../../src/tools/list-sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error type definitions for Hawkeye MCP Server
|
|
3
|
+
*/
|
|
4
|
+
export type ErrorType = 'authentication' | 'api' | 'validation' | 'investigation' | 'unknown';
|
|
5
|
+
/**
|
|
6
|
+
* Base error class for Hawkeye MCP errors
|
|
7
|
+
*/
|
|
8
|
+
export declare class HawkeyeError extends Error {
|
|
9
|
+
readonly type: ErrorType;
|
|
10
|
+
readonly details?: any;
|
|
11
|
+
readonly recoverySuggestions?: string[];
|
|
12
|
+
constructor(type: ErrorType, message: string, details?: any, recoverySuggestions?: string[]);
|
|
13
|
+
/**
|
|
14
|
+
* Convert to JSON format for MCP tool responses
|
|
15
|
+
*/
|
|
16
|
+
toJSON(): {
|
|
17
|
+
error: {
|
|
18
|
+
type: ErrorType;
|
|
19
|
+
message: string;
|
|
20
|
+
details: any;
|
|
21
|
+
recovery_suggestions: string[] | undefined;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Authentication-related errors
|
|
27
|
+
*/
|
|
28
|
+
export declare class AuthenticationError extends HawkeyeError {
|
|
29
|
+
constructor(message: string, details?: any, recoverySuggestions?: string[]);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* API-related errors (network, HTTP status codes, etc.)
|
|
33
|
+
*/
|
|
34
|
+
export declare class ApiError extends HawkeyeError {
|
|
35
|
+
readonly statusCode?: number;
|
|
36
|
+
readonly response?: any;
|
|
37
|
+
constructor(message: string, statusCode?: number, response?: any, recoverySuggestions?: string[]);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Validation errors (invalid inputs, schema violations, etc.)
|
|
41
|
+
*/
|
|
42
|
+
export declare class ValidationError extends HawkeyeError {
|
|
43
|
+
constructor(message: string, details?: any, recoverySuggestions?: string[]);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Investigation-related errors (session creation, timeouts, etc.)
|
|
47
|
+
*/
|
|
48
|
+
export declare class InvestigationError extends HawkeyeError {
|
|
49
|
+
constructor(message: string, details?: any, recoverySuggestions?: string[]);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Error response format for MCP tools
|
|
53
|
+
*/
|
|
54
|
+
export interface ErrorResponse {
|
|
55
|
+
error: {
|
|
56
|
+
type: ErrorType;
|
|
57
|
+
message: string;
|
|
58
|
+
details?: any;
|
|
59
|
+
recovery_suggestions?: string[];
|
|
60
|
+
};
|
|
61
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error type definitions for Hawkeye MCP Server
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Base error class for Hawkeye MCP errors
|
|
6
|
+
*/
|
|
7
|
+
export class HawkeyeError extends Error {
|
|
8
|
+
type;
|
|
9
|
+
details;
|
|
10
|
+
recoverySuggestions;
|
|
11
|
+
constructor(type, message, details, recoverySuggestions) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.name = 'HawkeyeError';
|
|
14
|
+
this.type = type;
|
|
15
|
+
this.details = details;
|
|
16
|
+
this.recoverySuggestions = recoverySuggestions;
|
|
17
|
+
// Maintain proper stack trace for V8
|
|
18
|
+
if (Error.captureStackTrace) {
|
|
19
|
+
Error.captureStackTrace(this, HawkeyeError);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Convert to JSON format for MCP tool responses
|
|
24
|
+
*/
|
|
25
|
+
toJSON() {
|
|
26
|
+
return {
|
|
27
|
+
error: {
|
|
28
|
+
type: this.type,
|
|
29
|
+
message: this.message,
|
|
30
|
+
details: this.details,
|
|
31
|
+
recovery_suggestions: this.recoverySuggestions,
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Authentication-related errors
|
|
38
|
+
*/
|
|
39
|
+
export class AuthenticationError extends HawkeyeError {
|
|
40
|
+
constructor(message, details, recoverySuggestions) {
|
|
41
|
+
super('authentication', message, details, recoverySuggestions);
|
|
42
|
+
this.name = 'AuthenticationError';
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* API-related errors (network, HTTP status codes, etc.)
|
|
47
|
+
*/
|
|
48
|
+
export class ApiError extends HawkeyeError {
|
|
49
|
+
statusCode;
|
|
50
|
+
response;
|
|
51
|
+
constructor(message, statusCode, response, recoverySuggestions) {
|
|
52
|
+
super('api', message, { statusCode, response }, recoverySuggestions);
|
|
53
|
+
this.name = 'ApiError';
|
|
54
|
+
this.statusCode = statusCode;
|
|
55
|
+
this.response = response;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Validation errors (invalid inputs, schema violations, etc.)
|
|
60
|
+
*/
|
|
61
|
+
export class ValidationError extends HawkeyeError {
|
|
62
|
+
constructor(message, details, recoverySuggestions) {
|
|
63
|
+
super('validation', message, details, recoverySuggestions);
|
|
64
|
+
this.name = 'ValidationError';
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Investigation-related errors (session creation, timeouts, etc.)
|
|
69
|
+
*/
|
|
70
|
+
export class InvestigationError extends HawkeyeError {
|
|
71
|
+
constructor(message, details, recoverySuggestions) {
|
|
72
|
+
super('investigation', message, details, recoverySuggestions);
|
|
73
|
+
this.name = 'InvestigationError';
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrB,IAAI,CAAY;IAChB,OAAO,CAAO;IACd,mBAAmB,CAAY;IAE/C,YACE,IAAe,EACf,OAAe,EACf,OAAa,EACb,mBAA8B;QAE9B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAE/C,qCAAqC;QACrC,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO;YACL,KAAK,EAAE;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,oBAAoB,EAAE,IAAI,CAAC,mBAAmB;aAC/C;SACF,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,YAAY;IACnD,YAAY,OAAe,EAAE,OAAa,EAAE,mBAA8B;QACxE,KAAK,CAAC,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,YAAY;IACxB,UAAU,CAAU;IACpB,QAAQ,CAAO;IAE/B,YACE,OAAe,EACf,UAAmB,EACnB,QAAc,EACd,mBAA8B;QAE9B,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,mBAAmB,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC/C,YAAY,OAAe,EAAE,OAAa,EAAE,mBAA8B;QACxE,KAAK,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAClD,YAAY,OAAe,EAAE,OAAa,EAAE,mBAA8B;QACxE,KAAK,CAAC,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF"}
|