hawkeye-mcp-server 1.0.0 → 1.0.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.
- package/INSTALLATION.md +118 -0
- package/README.md +22 -1
- package/build/tools/index.js +11 -7
- package/build/tools/index.js.map +1 -1
- package/build/tools/list-sessions.d.ts +3 -0
- package/build/tools/list-sessions.js +49 -10
- package/build/tools/list-sessions.js.map +1 -1
- package/package.json +1 -1
package/INSTALLATION.md
CHANGED
|
@@ -11,6 +11,7 @@ Complete installation instructions for the Hawkeye MCP Server across all platfor
|
|
|
11
11
|
- [Method 3: Local Development Setup](#method-3-local-development-setup)
|
|
12
12
|
- [Configuration](#configuration)
|
|
13
13
|
- [Integration with AI Agents](#integration-with-ai-agents)
|
|
14
|
+
- [Claude Code](#claude-code)
|
|
14
15
|
- [Claude Desktop](#claude-desktop)
|
|
15
16
|
- [Cursor.ai](#cursorai)
|
|
16
17
|
- [Continue.dev](#continuedev)
|
|
@@ -261,6 +262,123 @@ set HAWKEYE_BASE_URL=https://app.neubird.ai/api
|
|
|
261
262
|
|
|
262
263
|
## Integration with AI Agents
|
|
263
264
|
|
|
265
|
+
### Claude Code
|
|
266
|
+
|
|
267
|
+
Claude Code is Anthropic's official CLI tool that brings Claude's coding capabilities to your terminal with MCP server support.
|
|
268
|
+
|
|
269
|
+
#### Installation (All Platforms)
|
|
270
|
+
|
|
271
|
+
1. **Install Claude Code**
|
|
272
|
+
|
|
273
|
+
Follow the official installation guide at: https://github.com/anthropics/claude-code
|
|
274
|
+
|
|
275
|
+
Or use npm:
|
|
276
|
+
```bash
|
|
277
|
+
npm install -g @anthropic/claude-code
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
2. **Locate Configuration File**
|
|
281
|
+
|
|
282
|
+
Claude Code uses MCP configuration files located at:
|
|
283
|
+
|
|
284
|
+
**macOS/Linux:**
|
|
285
|
+
```bash
|
|
286
|
+
~/.config/claude-code/mcp_settings.json
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
**Windows:**
|
|
290
|
+
```
|
|
291
|
+
%APPDATA%\claude-code\mcp_settings.json
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
3. **Add Hawkeye MCP Server**
|
|
295
|
+
|
|
296
|
+
Edit the configuration file and add the Hawkeye server:
|
|
297
|
+
|
|
298
|
+
```json
|
|
299
|
+
{
|
|
300
|
+
"mcpServers": {
|
|
301
|
+
"hawkeye": {
|
|
302
|
+
"command": "npx",
|
|
303
|
+
"args": ["hawkeye-mcp-server"],
|
|
304
|
+
"env": {
|
|
305
|
+
"HAWKEYE_EMAIL": "your-email@example.com",
|
|
306
|
+
"HAWKEYE_PASSWORD": "your-password",
|
|
307
|
+
"HAWKEYE_BASE_URL": "https://app.neubird.ai/api"
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
**Alternative (if installed globally):**
|
|
315
|
+
|
|
316
|
+
```json
|
|
317
|
+
{
|
|
318
|
+
"mcpServers": {
|
|
319
|
+
"hawkeye": {
|
|
320
|
+
"command": "hawkeye-mcp",
|
|
321
|
+
"args": [],
|
|
322
|
+
"env": {
|
|
323
|
+
"HAWKEYE_EMAIL": "your-email@example.com",
|
|
324
|
+
"HAWKEYE_PASSWORD": "your-password",
|
|
325
|
+
"HAWKEYE_BASE_URL": "https://app.neubird.ai/api"
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
4. **Verify Installation**
|
|
333
|
+
|
|
334
|
+
Start Claude Code and test the integration:
|
|
335
|
+
|
|
336
|
+
```bash
|
|
337
|
+
# Start Claude Code
|
|
338
|
+
claude-code
|
|
339
|
+
|
|
340
|
+
# Then ask Claude to use Hawkeye
|
|
341
|
+
> List all my Hawkeye projects
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
You should see Claude using the `hawkeye_list_projects` tool.
|
|
345
|
+
|
|
346
|
+
#### Claude Code-Specific Features
|
|
347
|
+
|
|
348
|
+
- **Terminal Integration**: Investigate incidents directly from your terminal
|
|
349
|
+
- **Command Line Workflows**: Perfect for automating incident investigation in scripts
|
|
350
|
+
- **Real-time Streaming**: See investigation progress as it happens
|
|
351
|
+
- **Project Context**: Claude Code can use your current directory context alongside Hawkeye data
|
|
352
|
+
|
|
353
|
+
#### Example Workflow in Claude Code
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
# Start Claude Code in your project directory
|
|
357
|
+
cd /path/to/your/project
|
|
358
|
+
claude-code
|
|
359
|
+
|
|
360
|
+
# Ask about incidents
|
|
361
|
+
> Show me all P1 incidents from the last 24 hours
|
|
362
|
+
|
|
363
|
+
# Investigate a specific incident
|
|
364
|
+
> Investigate the most recent incident
|
|
365
|
+
|
|
366
|
+
# Get analytics
|
|
367
|
+
> What's our current MTTR across all projects?
|
|
368
|
+
|
|
369
|
+
# Continue investigation with follow-up
|
|
370
|
+
> Can you dig deeper into the network issues?
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
#### Tips for Claude Code Users
|
|
374
|
+
|
|
375
|
+
1. **Set Default Project**: Add `HAWKEYE_DEFAULT_PROJECT_UUID` to avoid specifying project each time
|
|
376
|
+
2. **Enable Debug Logging**: Set `HAWKEYE_LOG_LEVEL=debug` to see detailed MCP communication
|
|
377
|
+
3. **Compact Mode**: When listing many incidents, responses automatically use compact mode to save tokens
|
|
378
|
+
4. **Date Filtering**: Use date ranges to narrow down large result sets
|
|
379
|
+
|
|
380
|
+
---
|
|
381
|
+
|
|
264
382
|
### Claude Desktop
|
|
265
383
|
|
|
266
384
|
Claude Desktop is Anthropic's desktop application that supports MCP servers.
|
package/README.md
CHANGED
|
@@ -46,7 +46,27 @@ export HAWKEYE_PASSWORD="your-password"
|
|
|
46
46
|
export HAWKEYE_BASE_URL="https://your-instance.app.neubird.ai/api"
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
2. Configure your AI agent
|
|
49
|
+
2. Configure your AI agent:
|
|
50
|
+
|
|
51
|
+
**For Claude Code** (Recommended - add to `~/.config/claude-code/mcp_settings.json`):
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"mcpServers": {
|
|
56
|
+
"hawkeye": {
|
|
57
|
+
"command": "npx",
|
|
58
|
+
"args": ["hawkeye-mcp-server"],
|
|
59
|
+
"env": {
|
|
60
|
+
"HAWKEYE_EMAIL": "your-email@example.com",
|
|
61
|
+
"HAWKEYE_PASSWORD": "your-password",
|
|
62
|
+
"HAWKEYE_BASE_URL": "https://your-instance.app.neubird.ai/api"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**For Claude Desktop** (add to `~/Library/Application Support/Claude/claude_desktop_config.json`):
|
|
50
70
|
|
|
51
71
|
```json
|
|
52
72
|
{
|
|
@@ -171,6 +191,7 @@ See the [API Reference](./SPECIFICATION.md) for detailed documentation on each t
|
|
|
171
191
|
|
|
172
192
|
The Hawkeye MCP Server works with any MCP-compatible AI agent:
|
|
173
193
|
|
|
194
|
+
- ✅ **Claude Code** (CLI tool - macOS, Windows, Linux) - **Recommended for developers**
|
|
174
195
|
- ✅ **Claude Desktop** (macOS, Windows)
|
|
175
196
|
- ✅ **Cursor.ai** (macOS, Windows, Linux)
|
|
176
197
|
- ✅ **Continue.dev** (VS Code extension)
|
package/build/tools/index.js
CHANGED
|
@@ -68,13 +68,13 @@ function getInvestigateAlertTool() {
|
|
|
68
68
|
return {
|
|
69
69
|
tool: {
|
|
70
70
|
name: 'hawkeye_investigate_alert',
|
|
71
|
-
description: '
|
|
71
|
+
description: 'START a new investigation for an uninvestigated incident/alert. Use this tool when you want to investigate an incident for the first time (e.g., from the uninvestigated incidents list). This tool takes an alert_id and creates a new RCA investigation. Do NOT use this for follow-up questions on existing investigations - use hawkeye_continue_investigation instead.',
|
|
72
72
|
inputSchema: {
|
|
73
73
|
type: 'object',
|
|
74
74
|
properties: {
|
|
75
75
|
alert_id: {
|
|
76
76
|
type: 'string',
|
|
77
|
-
description: 'Full alert ID (
|
|
77
|
+
description: 'Full alert ID from the incident (found in incident_info.id field when listing sessions). Format: /subscriptions/.../alerts/... or similar cloud provider alert identifier',
|
|
78
78
|
},
|
|
79
79
|
project_uuid: {
|
|
80
80
|
type: 'string',
|
|
@@ -141,17 +141,17 @@ function getContinueInvestigationTool() {
|
|
|
141
141
|
return {
|
|
142
142
|
tool: {
|
|
143
143
|
name: 'hawkeye_continue_investigation',
|
|
144
|
-
description: '
|
|
144
|
+
description: 'Ask follow-up questions on an ALREADY STARTED investigation. Use this tool ONLY when you have a session_uuid from a previous investigation and want to dig deeper or ask additional questions. Do NOT use this to start a new investigation for an uninvestigated incident - use hawkeye_investigate_alert instead. This requires an existing session that has already been investigated.',
|
|
145
145
|
inputSchema: {
|
|
146
146
|
type: 'object',
|
|
147
147
|
properties: {
|
|
148
148
|
session_uuid: {
|
|
149
149
|
type: 'string',
|
|
150
|
-
description: 'UUID of
|
|
150
|
+
description: 'UUID of an EXISTING investigation session (from a previously completed investigation, not from uninvestigated incidents list)',
|
|
151
151
|
},
|
|
152
152
|
follow_up_prompt: {
|
|
153
153
|
type: 'string',
|
|
154
|
-
description: 'The follow-up question or additional context',
|
|
154
|
+
description: 'The follow-up question or additional context to explore further in the investigation',
|
|
155
155
|
},
|
|
156
156
|
project_uuid: {
|
|
157
157
|
type: 'string',
|
|
@@ -184,7 +184,7 @@ function getListSessionsTool() {
|
|
|
184
184
|
return {
|
|
185
185
|
tool: {
|
|
186
186
|
name: 'hawkeye_list_sessions',
|
|
187
|
-
description: 'Lists investigation sessions for a project with pagination and date filtering support',
|
|
187
|
+
description: 'Lists investigation sessions for a project with pagination and date filtering support. When listing uninvestigated incidents (only_uninvestigated=true), use the incident_info.id (alert_id) with hawkeye_investigate_alert to start a new investigation. The session_uuid from uninvestigated incidents should NOT be used with hawkeye_continue_investigation.',
|
|
188
188
|
inputSchema: {
|
|
189
189
|
type: 'object',
|
|
190
190
|
properties: {
|
|
@@ -214,7 +214,7 @@ function getListSessionsTool() {
|
|
|
214
214
|
},
|
|
215
215
|
only_uninvestigated: {
|
|
216
216
|
type: 'boolean',
|
|
217
|
-
description: 'Convenience parameter: when true,
|
|
217
|
+
description: 'Convenience parameter: when true, returns incidents that have NOT been investigated yet. These are new incidents awaiting investigation. To investigate them, extract the incident_info.id (alert_id) and use hawkeye_investigate_alert, NOT hawkeye_continue_investigation.',
|
|
218
218
|
},
|
|
219
219
|
investigation_status: {
|
|
220
220
|
type: 'string',
|
|
@@ -228,6 +228,10 @@ function getListSessionsTool() {
|
|
|
228
228
|
type: 'boolean',
|
|
229
229
|
description: 'If true, hides incidents that have been grouped together. Default: false',
|
|
230
230
|
},
|
|
231
|
+
compact: {
|
|
232
|
+
type: 'boolean',
|
|
233
|
+
description: 'If true, returns compact format with minimal incident details to save tokens. Automatically enabled for >10 results. Set to false to get full incident details. Default: auto (true for >10 results)',
|
|
234
|
+
},
|
|
231
235
|
},
|
|
232
236
|
},
|
|
233
237
|
},
|
package/build/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2BH;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,gBAAgB;QAChB,mBAAmB,EAAE;QAErB,gBAAgB;QAChB,uBAAuB,EAAE;QACzB,0BAA0B,EAAE;QAC5B,4BAA4B,EAAE;QAE9B,iDAAiD;QACjD,mBAAmB,EAAE;QACrB,qBAAqB,EAAE;QACvB,oBAAoB,EAAE;QACtB,qBAAqB,EAAE;QACvB,qBAAqB,EAAE;KACxB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB;IAC1B,OAAO;QACL,IAAI,EAAE;YACJ,IAAI,EAAE,uBAAuB;YAC7B,WAAW,EAAE,iEAAiE;YAC9E,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,gBAAgB,EAAE;wBAChB,IAAI,EAAE,SAAS;wBACf,WAAW,EAAE,uCAAuC;wBACpD,OAAO,EAAE,KAAK;qBACf;iBACF;aACF;SACF;QACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;YAChC,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;YAC3E,MAAM,KAAK,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAExD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACpF,MAAM,kBAAkB,GAAG,QAAQ,CAAC,cAAc,CAAC,qBAAqB,EAAE,CAAC;YAE3E,OAAO;gBACL,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC7B,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,cAAc,EAAE,CAAC,CAAC,cAAc;oBAChC,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,UAAU,EAAE,CAAC,CAAC,UAAU;iBACzB,CAAC,CAAC;gBACH,eAAe,EAAE,kBAAkB,IAAI,SAAS;aACjD,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB;IAC9B,OAAO;QACL,IAAI,EAAE;YACJ,IAAI,EAAE,2BAA2B;YACjC,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ declare const ListSessionsInputSchema: z.ZodObject<{
|
|
|
18
18
|
session_type: z.ZodOptional<z.ZodString>;
|
|
19
19
|
only_uninvestigated: z.ZodOptional<z.ZodBoolean>;
|
|
20
20
|
hide_grouped_incidents: z.ZodOptional<z.ZodBoolean>;
|
|
21
|
+
compact: z.ZodOptional<z.ZodBoolean>;
|
|
21
22
|
}, "strip", z.ZodTypeAny, {
|
|
22
23
|
project_uuid?: string | undefined;
|
|
23
24
|
organization_uuid?: string | undefined;
|
|
@@ -29,6 +30,7 @@ declare const ListSessionsInputSchema: z.ZodObject<{
|
|
|
29
30
|
date_to?: string | undefined;
|
|
30
31
|
only_uninvestigated?: boolean | undefined;
|
|
31
32
|
hide_grouped_incidents?: boolean | undefined;
|
|
33
|
+
compact?: boolean | undefined;
|
|
32
34
|
}, {
|
|
33
35
|
project_uuid?: string | undefined;
|
|
34
36
|
organization_uuid?: string | undefined;
|
|
@@ -40,6 +42,7 @@ declare const ListSessionsInputSchema: z.ZodObject<{
|
|
|
40
42
|
date_to?: string | undefined;
|
|
41
43
|
only_uninvestigated?: boolean | undefined;
|
|
42
44
|
hide_grouped_incidents?: boolean | undefined;
|
|
45
|
+
compact?: boolean | undefined;
|
|
43
46
|
}>;
|
|
44
47
|
export type ListSessionsInput = z.infer<typeof ListSessionsInputSchema>;
|
|
45
48
|
/**
|
|
@@ -19,7 +19,25 @@ const ListSessionsInputSchema = z.object({
|
|
|
19
19
|
session_type: z.string().optional(),
|
|
20
20
|
only_uninvestigated: z.boolean().optional(),
|
|
21
21
|
hide_grouped_incidents: z.boolean().optional(),
|
|
22
|
+
compact: z.boolean().optional().describe('If true, returns compact format with minimal incident details to save tokens. Recommended for large result sets. Default: true for >10 results'),
|
|
22
23
|
});
|
|
24
|
+
/**
|
|
25
|
+
* Create a compact summary of incident info to reduce token usage
|
|
26
|
+
*/
|
|
27
|
+
function compactIncidentInfo(incidentInfo) {
|
|
28
|
+
if (!incidentInfo)
|
|
29
|
+
return null;
|
|
30
|
+
return {
|
|
31
|
+
id: incidentInfo.id,
|
|
32
|
+
title: incidentInfo.title,
|
|
33
|
+
priority: incidentInfo.priority,
|
|
34
|
+
status: incidentInfo.status,
|
|
35
|
+
create_time: incidentInfo.create_time,
|
|
36
|
+
source: incidentInfo.source,
|
|
37
|
+
// Count grouped incidents instead of including full details
|
|
38
|
+
grouped_incident_count: incidentInfo.grouped_incidents?.length || 0,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
23
41
|
/**
|
|
24
42
|
* List sessions with pagination and filtering
|
|
25
43
|
*/
|
|
@@ -53,19 +71,28 @@ export async function listSessions(services, args) {
|
|
|
53
71
|
hideGroupedIncidents: input.hide_grouped_incidents,
|
|
54
72
|
});
|
|
55
73
|
logger.info(`Found ${sessions.length} sessions`);
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
74
|
+
// Auto-enable compact mode for large result sets to save tokens
|
|
75
|
+
// Use compact if: explicitly set to true, OR (not explicitly set to false AND >10 results)
|
|
76
|
+
const shouldUseCompact = input.compact === true ||
|
|
77
|
+
(input.compact !== false && sessions.length > 10);
|
|
78
|
+
const actualLimit = input.limit || 50;
|
|
79
|
+
// Map sessions with optional compact format
|
|
80
|
+
const mappedSessions = sessions.map((s) => ({
|
|
81
|
+
session_uuid: s.session_uuid || s.uuid,
|
|
82
|
+
name: s.name,
|
|
83
|
+
create_time: s.create_time || s.created_at,
|
|
84
|
+
last_update: s.last_update || s.updated_at,
|
|
85
|
+
prompt_cycle_count: s.prompt_cycle_ids?.length || s.prompt_cycle_count || 0,
|
|
86
|
+
incident_info: shouldUseCompact ? compactIncidentInfo(s.incident_info) : s.incident_info,
|
|
87
|
+
}));
|
|
88
|
+
// Build response with helpful pagination info
|
|
89
|
+
const response = {
|
|
90
|
+
sessions: mappedSessions,
|
|
65
91
|
page: input.page || 1,
|
|
66
|
-
limit:
|
|
92
|
+
limit: actualLimit,
|
|
67
93
|
count: sessions.length,
|
|
68
94
|
project_uuid: projectUuid,
|
|
95
|
+
compact_mode: shouldUseCompact,
|
|
69
96
|
filters_applied: {
|
|
70
97
|
date_from: input.date_from,
|
|
71
98
|
date_to: input.date_to,
|
|
@@ -75,5 +102,17 @@ export async function listSessions(services, args) {
|
|
|
75
102
|
hide_grouped_incidents: input.hide_grouped_incidents,
|
|
76
103
|
},
|
|
77
104
|
};
|
|
105
|
+
// Add helpful pagination hints if there are many results
|
|
106
|
+
if (sessions.length >= actualLimit) {
|
|
107
|
+
response.pagination_hint = `Showing ${sessions.length} results (limit: ${actualLimit}). Use 'page' parameter to see more results, or add date filters to narrow down the search.`;
|
|
108
|
+
}
|
|
109
|
+
if (shouldUseCompact) {
|
|
110
|
+
response.compact_hint = 'Using compact format to reduce token usage. Set compact=false to get full incident details.';
|
|
111
|
+
}
|
|
112
|
+
// Add investigation hint for uninvestigated incidents
|
|
113
|
+
if (input.only_uninvestigated && sessions.length > 0) {
|
|
114
|
+
response.investigation_hint = 'These are UNINVESTIGATED incidents. To investigate one, use hawkeye_investigate_alert with the incident_info.id (alert_id) field, NOT hawkeye_continue_investigation. Example: hawkeye_investigate_alert with alert_id from incident_info.id';
|
|
115
|
+
}
|
|
116
|
+
return response;
|
|
78
117
|
}
|
|
79
118
|
//# sourceMappingURL=list-sessions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-sessions.js","sourceRoot":"","sources":["../../src/tools/list-sessions.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,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACtD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC3C,sBAAsB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"list-sessions.js","sourceRoot":"","sources":["../../src/tools/list-sessions.ts"],"names":[],"mappings":"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"}
|