@loadmill/mcp 0.0.2-rc.4 → 0.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/dist/constants.d.ts +2 -0
- package/dist/constants.js +5 -1
- package/dist/constants.js.map +1 -1
- package/dist/http-request.js +1 -3
- package/dist/http-request.js.map +1 -1
- package/dist/mcp-handler.js +111 -10
- package/dist/mcp-handler.js.map +1 -1
- package/dist/mcp-server.js +1 -0
- package/dist/mcp-server.js.map +1 -1
- package/dist/tools.js +55 -3
- package/dist/tools.js.map +1 -1
- package/dist/utils.d.ts +2 -0
- package/dist/utils.js +41 -0
- package/dist/utils.js.map +1 -0
- package/package.json +1 -1
package/dist/constants.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export declare const MCP_SERVER_NAME = "loadmill-mcp-server";
|
|
2
2
|
export declare const MCP_SERVER_VERSION = "0.0.1";
|
|
3
3
|
export declare const SEARCH_TEST_SUITES = "search_test_suites";
|
|
4
|
+
export declare const SEARCH_TEST_SUITE_RUNS = "search_test_suite_runs";
|
|
4
5
|
export declare const RUN_TEST_SUITE = "run_test_suite";
|
|
5
6
|
export declare const GET_TEST_SUITE_RUN = "get_test_suite_run";
|
|
7
|
+
export declare const GET_TEST_SUITE_FLOW_RUN = "get_test_suite_flow_run";
|
|
6
8
|
export declare const SEARCH_TEST_PLAN = "search_test_plans";
|
|
7
9
|
export declare const RUN_TEST_PLAN = "run_test_plans";
|
|
8
10
|
export declare const GET_TEST_PLAN_RUN = "get_test_plan_run";
|
package/dist/constants.js
CHANGED
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AVALIABLE_TOOLS = exports.GET_LABELS = exports.GET_TEST_PLAN_RUN = exports.RUN_TEST_PLAN = exports.SEARCH_TEST_PLAN = exports.GET_TEST_SUITE_RUN = exports.RUN_TEST_SUITE = exports.SEARCH_TEST_SUITES = exports.MCP_SERVER_VERSION = exports.MCP_SERVER_NAME = void 0;
|
|
3
|
+
exports.AVALIABLE_TOOLS = exports.GET_LABELS = exports.GET_TEST_PLAN_RUN = exports.RUN_TEST_PLAN = exports.SEARCH_TEST_PLAN = exports.GET_TEST_SUITE_FLOW_RUN = exports.GET_TEST_SUITE_RUN = exports.RUN_TEST_SUITE = exports.SEARCH_TEST_SUITE_RUNS = exports.SEARCH_TEST_SUITES = exports.MCP_SERVER_VERSION = exports.MCP_SERVER_NAME = void 0;
|
|
4
4
|
exports.MCP_SERVER_NAME = 'loadmill-mcp-server';
|
|
5
5
|
exports.MCP_SERVER_VERSION = '0.0.1';
|
|
6
6
|
//tools
|
|
7
7
|
exports.SEARCH_TEST_SUITES = 'search_test_suites';
|
|
8
|
+
exports.SEARCH_TEST_SUITE_RUNS = 'search_test_suite_runs';
|
|
8
9
|
exports.RUN_TEST_SUITE = 'run_test_suite';
|
|
9
10
|
exports.GET_TEST_SUITE_RUN = 'get_test_suite_run';
|
|
11
|
+
exports.GET_TEST_SUITE_FLOW_RUN = 'get_test_suite_flow_run';
|
|
10
12
|
exports.SEARCH_TEST_PLAN = 'search_test_plans';
|
|
11
13
|
exports.RUN_TEST_PLAN = 'run_test_plans';
|
|
12
14
|
exports.GET_TEST_PLAN_RUN = 'get_test_plan_run';
|
|
13
15
|
exports.GET_LABELS = 'get_labels';
|
|
14
16
|
exports.AVALIABLE_TOOLS = [
|
|
15
17
|
exports.SEARCH_TEST_SUITES,
|
|
18
|
+
exports.SEARCH_TEST_SUITE_RUNS,
|
|
16
19
|
exports.RUN_TEST_SUITE,
|
|
17
20
|
exports.GET_TEST_SUITE_RUN,
|
|
21
|
+
exports.GET_TEST_SUITE_FLOW_RUN,
|
|
18
22
|
exports.GET_LABELS,
|
|
19
23
|
exports.SEARCH_TEST_PLAN,
|
|
20
24
|
exports.RUN_TEST_PLAN,
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AACa,QAAA,eAAe,GAAG,qBAAqB,CAAC;AACxC,QAAA,kBAAkB,GAAG,OAAO,CAAC;AAE1C,OAAO;AACM,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAC1C,QAAA,cAAc,GAAG,gBAAgB,CAAC;AAClC,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAC1C,QAAA,gBAAgB,GAAG,mBAAmB,CAAC;AACvC,QAAA,aAAa,GAAG,gBAAgB,CAAC;AACjC,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AACxC,QAAA,UAAU,GAAG,YAAY,CAAC;AAE1B,QAAA,eAAe,GAAG;IAC7B,0BAAkB;IAClB,sBAAc;IACd,0BAAkB;IAClB,kBAAU;IACV,wBAAgB;IAChB,qBAAa;IACb,yBAAiB;CAClB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AACa,QAAA,eAAe,GAAG,qBAAqB,CAAC;AACxC,QAAA,kBAAkB,GAAG,OAAO,CAAC;AAE1C,OAAO;AACM,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAC1C,QAAA,sBAAsB,GAAG,wBAAwB,CAAC;AAClD,QAAA,cAAc,GAAG,gBAAgB,CAAC;AAClC,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAC1C,QAAA,uBAAuB,GAAG,yBAAyB,CAAC;AACpD,QAAA,gBAAgB,GAAG,mBAAmB,CAAC;AACvC,QAAA,aAAa,GAAG,gBAAgB,CAAC;AACjC,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AACxC,QAAA,UAAU,GAAG,YAAY,CAAC;AAE1B,QAAA,eAAe,GAAG;IAC7B,0BAAkB;IAClB,8BAAsB;IACtB,sBAAc;IACd,0BAAkB;IAClB,+BAAuB;IACvB,kBAAU;IACV,wBAAgB;IAChB,qBAAa;IACb,yBAAiB;CAClB,CAAC"}
|
package/dist/http-request.js
CHANGED
|
@@ -30,9 +30,7 @@ const _executeRequest = async (options) => {
|
|
|
30
30
|
let request = superagent_1.default[method](url)
|
|
31
31
|
.auth(LOADMILL_API_TOKEN)
|
|
32
32
|
.timeout(DEFAULT_TIMEOUT_MS);
|
|
33
|
-
|
|
34
|
-
request = request.query(query);
|
|
35
|
-
}
|
|
33
|
+
request = request.query({ 'source': 'mcp', ...(query || {}) });
|
|
36
34
|
if (body) {
|
|
37
35
|
request = request.send(body);
|
|
38
36
|
}
|
package/dist/http-request.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-request.js","sourceRoot":"","sources":["../src/http-request.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAoC;AAEpC,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,KAAK,CAAC,CAAC,aAAa;AAC/E,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,WAAW;AACxC,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;AAEnD,MAAM,eAAe,GAAG,KAAK,EAAE,OAA2B,EAAE,EAAE;IACnE,IAAI;QACF,OAAO,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;KACvC;IACD,OAAO,GAAG,EAAE;QACV,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,eAAe,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QACnH,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;YACrB,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,eAAe,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;YAC1G,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;YAC7B,OAAO,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;SACvC;QACD,MAAM,GAAG,CAAC;KACX;AACH,CAAC,CAAC;AAfW,QAAA,eAAe,mBAe1B;AAEF,MAAM,eAAe,GAAG,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC5D,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAC/D,IAAI,OAAO,GAAG,oBAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;SAClC,IAAI,CAAC,kBAAkB,CAAC;SACxB,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE/B,
|
|
1
|
+
{"version":3,"file":"http-request.js","sourceRoot":"","sources":["../src/http-request.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAoC;AAEpC,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,KAAK,CAAC,CAAC,aAAa;AAC/E,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,WAAW;AACxC,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;AAEnD,MAAM,eAAe,GAAG,KAAK,EAAE,OAA2B,EAAE,EAAE;IACnE,IAAI;QACF,OAAO,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;KACvC;IACD,OAAO,GAAG,EAAE;QACV,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,eAAe,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QACnH,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;YACrB,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,eAAe,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;YAC1G,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;YAC7B,OAAO,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;SACvC;QACD,MAAM,GAAG,CAAC;KACX;AACH,CAAC,CAAC;AAfW,QAAA,eAAe,mBAe1B;AAEF,MAAM,eAAe,GAAG,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC5D,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAC/D,IAAI,OAAO,GAAG,oBAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;SAClC,IAAI,CAAC,kBAAkB,CAAC;SACxB,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE/B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAE/D,IAAI,IAAI,EAAE;QACR,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;IAED,OAAO,MAAM,OAAO,CAAC;AACvB,CAAC,CAAC;AAEF,0BAA0B;AAC1B,MAAM,YAAY,GAAG,CAAC,GAAG,EAAW,EAAE;IACpC,OAAO,GAAG,CAAC,OAAO;QAChB,GAAG,CAAC,IAAI,KAAK,cAAc;QAC3B,GAAG,CAAC,IAAI,KAAK,cAAc;QAC3B,GAAG,CAAC,IAAI,KAAK,WAAW;QACxB,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAS/E,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,0BAAW,CAAA;IACX,4BAAa,CAAA;IACb,0BAAW,CAAA;IACX,gCAAiB,CAAA;IACjB,8BAAe,CAAA;AACjB,CAAC,EANW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAMtB"}
|
package/dist/mcp-handler.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.handlers = void 0;
|
|
|
4
4
|
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
5
5
|
const constants_js_1 = require("./constants.js");
|
|
6
6
|
const tools_js_1 = require("./tools.js");
|
|
7
|
+
const utils_js_1 = require("./utils.js");
|
|
7
8
|
exports.handlers = [
|
|
8
9
|
{
|
|
9
10
|
schema: types_js_1.ListToolsRequestSchema,
|
|
@@ -35,7 +36,32 @@ exports.handlers = [
|
|
|
35
36
|
},
|
|
36
37
|
},
|
|
37
38
|
{
|
|
38
|
-
name:
|
|
39
|
+
name: constants_js_1.SEARCH_TEST_SUITE_RUNS,
|
|
40
|
+
title: 'Search Test Suite Runs',
|
|
41
|
+
description: 'A tool to search for Loadmill test suite runs. Returns a list of test suite runs',
|
|
42
|
+
inputSchema: {
|
|
43
|
+
type: 'object',
|
|
44
|
+
properties: {
|
|
45
|
+
search: {
|
|
46
|
+
type: 'string',
|
|
47
|
+
description: 'free text filter to search for test suites',
|
|
48
|
+
},
|
|
49
|
+
page: {
|
|
50
|
+
type: 'integer',
|
|
51
|
+
description: 'page number for pagination',
|
|
52
|
+
},
|
|
53
|
+
labels: {
|
|
54
|
+
type: 'array',
|
|
55
|
+
items: {
|
|
56
|
+
type: 'string',
|
|
57
|
+
description: 'filter suites that have flows with these labels',
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: constants_js_1.RUN_TEST_SUITE,
|
|
39
65
|
title: 'Run Test Suite',
|
|
40
66
|
description: 'A tool to run a Loadmill test suite. Returns the id of the running suite',
|
|
41
67
|
inputSchema: {
|
|
@@ -49,9 +75,10 @@ exports.handlers = [
|
|
|
49
75
|
},
|
|
50
76
|
},
|
|
51
77
|
{
|
|
52
|
-
name:
|
|
78
|
+
name: constants_js_1.GET_TEST_SUITE_RUN,
|
|
53
79
|
title: 'Get Test Suite Run',
|
|
54
|
-
description:
|
|
80
|
+
description: `A tool to get a Loadmill test suite run by its ID.
|
|
81
|
+
Returns the run details including the testSuiteFlowRuns list that can be fetched later and is useful for understanding the flow of the test run.`,
|
|
55
82
|
inputSchema: {
|
|
56
83
|
type: 'object',
|
|
57
84
|
properties: {
|
|
@@ -62,6 +89,21 @@ exports.handlers = [
|
|
|
62
89
|
},
|
|
63
90
|
},
|
|
64
91
|
},
|
|
92
|
+
{
|
|
93
|
+
name: constants_js_1.GET_TEST_SUITE_FLOW_RUN,
|
|
94
|
+
title: 'Get Test Suite Flow Run',
|
|
95
|
+
description: `A tool to get a Loadmill test suite flow run by its ID.
|
|
96
|
+
Returns the run details. Use this when investigating the test run results.`,
|
|
97
|
+
inputSchema: {
|
|
98
|
+
type: 'object',
|
|
99
|
+
properties: {
|
|
100
|
+
flowRunId: {
|
|
101
|
+
type: 'string',
|
|
102
|
+
description: 'ID of the test suite flow run to fetch',
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
},
|
|
65
107
|
{
|
|
66
108
|
name: constants_js_1.SEARCH_TEST_PLAN,
|
|
67
109
|
title: 'Search Test Plans',
|
|
@@ -77,13 +119,6 @@ exports.handlers = [
|
|
|
77
119
|
type: 'integer',
|
|
78
120
|
description: 'page number for pagination',
|
|
79
121
|
},
|
|
80
|
-
labels: {
|
|
81
|
-
type: 'array',
|
|
82
|
-
items: {
|
|
83
|
-
type: 'string',
|
|
84
|
-
description: 'filter suites that have flows with these labels',
|
|
85
|
-
},
|
|
86
|
-
},
|
|
87
122
|
},
|
|
88
123
|
},
|
|
89
124
|
},
|
|
@@ -98,6 +133,18 @@ exports.handlers = [
|
|
|
98
133
|
type: 'string',
|
|
99
134
|
description: 'ID of the test plan to run',
|
|
100
135
|
},
|
|
136
|
+
labels: {
|
|
137
|
+
type: 'array',
|
|
138
|
+
items: {
|
|
139
|
+
type: 'string',
|
|
140
|
+
description: 'filter suites that have flows with these labels',
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
overrideParameters: {
|
|
144
|
+
type: 'string',
|
|
145
|
+
description: `Parameters to override in the test plan.
|
|
146
|
+
A string of comma separated list of key-value pairs, e.g. "param1=value1,param2=value2".`,
|
|
147
|
+
},
|
|
101
148
|
},
|
|
102
149
|
},
|
|
103
150
|
},
|
|
@@ -141,6 +188,32 @@ exports.handlers = [
|
|
|
141
188
|
return await tool(request.params);
|
|
142
189
|
},
|
|
143
190
|
},
|
|
191
|
+
{
|
|
192
|
+
schema: types_js_1.ListPromptsRequestSchema,
|
|
193
|
+
handler: async (_request) => {
|
|
194
|
+
return { prompts };
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
schema: types_js_1.GetPromptRequestSchema,
|
|
199
|
+
handler: async (req) => {
|
|
200
|
+
const { name, arguments: args = {} } = req.params;
|
|
201
|
+
const prompt = prompts.find((p) => p.name === name);
|
|
202
|
+
if (!prompt) {
|
|
203
|
+
throw new Error(`Unknown prompt: ${name}`);
|
|
204
|
+
}
|
|
205
|
+
const required = (prompt.inputSchema?.required ?? []);
|
|
206
|
+
const missing = required.filter((k) => args[k] === undefined);
|
|
207
|
+
if (missing.length) {
|
|
208
|
+
throw new Error(`Missing required prompt arguments: ${missing.join(', ')}`);
|
|
209
|
+
}
|
|
210
|
+
const messages = prompt.messages.map((m) => ({
|
|
211
|
+
role: m.role,
|
|
212
|
+
content: (0, utils_js_1.fillTemplate)(m.content, args),
|
|
213
|
+
}));
|
|
214
|
+
return { messages };
|
|
215
|
+
},
|
|
216
|
+
},
|
|
144
217
|
{
|
|
145
218
|
schema: types_js_1.ListResourcesRequestSchema,
|
|
146
219
|
handler: async (_request) => {
|
|
@@ -154,4 +227,32 @@ exports.handlers = [
|
|
|
154
227
|
},
|
|
155
228
|
},
|
|
156
229
|
];
|
|
230
|
+
const prompts = [
|
|
231
|
+
{
|
|
232
|
+
name: 'investigate_failed_test',
|
|
233
|
+
description: 'Analyze failed test results and suggest next steps',
|
|
234
|
+
messages: [
|
|
235
|
+
{
|
|
236
|
+
role: 'system',
|
|
237
|
+
content: 'You are a QA investigator. Explain failures clearly and suggest next steps.',
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
role: 'user',
|
|
241
|
+
content: `The test '{{test_description}}' has failed.\n\n
|
|
242
|
+
Result:\n{{result}}\n\n
|
|
243
|
+
RedactableResult (extended data):\n{{redactableResult}}\n\n
|
|
244
|
+
Please explain the cause and suggest how to fix it.`,
|
|
245
|
+
},
|
|
246
|
+
],
|
|
247
|
+
inputSchema: {
|
|
248
|
+
type: 'object',
|
|
249
|
+
properties: {
|
|
250
|
+
test_description: { type: 'string' },
|
|
251
|
+
result: { type: 'string' },
|
|
252
|
+
redactableResult: { type: 'string' },
|
|
253
|
+
},
|
|
254
|
+
required: ['test_description', 'result', 'redactableResult'],
|
|
255
|
+
},
|
|
256
|
+
},
|
|
257
|
+
];
|
|
157
258
|
//# sourceMappingURL=mcp-handler.js.map
|
package/dist/mcp-handler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-handler.js","sourceRoot":"","sources":["../src/mcp-handler.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"mcp-handler.js","sourceRoot":"","sources":["../src/mcp-handler.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp-server.js
CHANGED
package/dist/mcp-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";;;AAAA,wEAAmE;AACnE,2CAAkE;AAClE,qDAA4C;AAE5C,IAAI,MAAc,CAAC;AAGnB,MAAM,UAAU,GAAG,GAAG,EAAE;IACtB,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,GAAG,aAAa,EAAE,CAAC;KAC1B;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,GAAG,EAAE;IACzB,MAAM,GAAG,IAAI,iBAAM,CACjB;QACE,IAAI,EAAE,2BAAe;QACrB,OAAO,EAAE,8BAAkB;KAC5B,EACD;QACE,YAAY,EAAE;YACZ,SAAS,EAAE,EAAE;YACb,KAAK,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";;;AAAA,wEAAmE;AACnE,2CAAkE;AAClE,qDAA4C;AAE5C,IAAI,MAAc,CAAC;AAGnB,MAAM,UAAU,GAAG,GAAG,EAAE;IACtB,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,GAAG,aAAa,EAAE,CAAC;KAC1B;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,GAAG,EAAE;IACzB,MAAM,GAAG,IAAI,iBAAM,CACjB;QACE,IAAI,EAAE,2BAAe;QACrB,OAAO,EAAE,8BAAkB;KAC5B,EACD;QACE,YAAY,EAAE;YACZ,SAAS,EAAE,EAAE;YACb,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;SACZ;KACF,CACF,CAAC;IAGF,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,EAAE;IACnC,yBAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEW,QAAA,SAAS,GAAG,UAAU,EAAE,CAAC"}
|
package/dist/tools.js
CHANGED
|
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.toolsTasks = void 0;
|
|
4
4
|
const http_request_js_1 = require("./http-request.js");
|
|
5
5
|
const constants_js_1 = require("./constants.js");
|
|
6
|
-
const
|
|
6
|
+
const utils_js_1 = require("./utils.js");
|
|
7
|
+
const LOADMILL_URL = process.env.LOADMILL_URL || 'https://app.loadmill.com';
|
|
7
8
|
const BASE_URL = LOADMILL_URL + '/api';
|
|
8
9
|
// todo make sure all return in the same allowed pattern
|
|
9
10
|
exports.toolsTasks = {
|
|
@@ -29,6 +30,28 @@ exports.toolsTasks = {
|
|
|
29
30
|
}],
|
|
30
31
|
};
|
|
31
32
|
},
|
|
33
|
+
[constants_js_1.SEARCH_TEST_SUITE_RUNS]: async (params) => {
|
|
34
|
+
const args = params.arguments;
|
|
35
|
+
// eslint-disable-next-line no-console
|
|
36
|
+
console.log('Searching test suites with args:', args);
|
|
37
|
+
const response = await (0, http_request_js_1.sendHttpRequest)({
|
|
38
|
+
method: http_request_js_1.HttpMethods.GET,
|
|
39
|
+
url: `${BASE_URL}/test-suites-runs/flows`,
|
|
40
|
+
query: {
|
|
41
|
+
search: args.search || '',
|
|
42
|
+
filter: args.filter || 'All',
|
|
43
|
+
fromDateFilter: args.fromDateFilter || '',
|
|
44
|
+
toDateFilter: args.toDateFilter || '',
|
|
45
|
+
labels: args.labels || [],
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
return {
|
|
49
|
+
content: [{
|
|
50
|
+
type: 'text',
|
|
51
|
+
text: JSON.stringify(response, null, 2),
|
|
52
|
+
}],
|
|
53
|
+
};
|
|
54
|
+
},
|
|
32
55
|
[constants_js_1.RUN_TEST_SUITE]: async (params) => {
|
|
33
56
|
const args = params.arguments;
|
|
34
57
|
// eslint-disable-next-line no-console
|
|
@@ -59,6 +82,21 @@ exports.toolsTasks = {
|
|
|
59
82
|
}],
|
|
60
83
|
};
|
|
61
84
|
},
|
|
85
|
+
[constants_js_1.GET_TEST_SUITE_FLOW_RUN]: async (params) => {
|
|
86
|
+
const args = params.arguments;
|
|
87
|
+
// eslint-disable-next-line no-console
|
|
88
|
+
console.log('Getting test suite flow run with args:', args);
|
|
89
|
+
const response = await (0, http_request_js_1.sendHttpRequest)({
|
|
90
|
+
method: http_request_js_1.HttpMethods.GET,
|
|
91
|
+
url: `${BASE_URL}/test-suites-runs/flows/${args.flowRunId}`,
|
|
92
|
+
});
|
|
93
|
+
return {
|
|
94
|
+
content: [{
|
|
95
|
+
type: 'text',
|
|
96
|
+
text: JSON.stringify(response, null, 2),
|
|
97
|
+
}],
|
|
98
|
+
};
|
|
99
|
+
},
|
|
62
100
|
[constants_js_1.SEARCH_TEST_PLAN]: async (params) => {
|
|
63
101
|
const args = params.arguments;
|
|
64
102
|
// eslint-disable-next-line no-console
|
|
@@ -71,7 +109,6 @@ exports.toolsTasks = {
|
|
|
71
109
|
filter: args.filter || 'All',
|
|
72
110
|
fromDateFilter: args.fromDateFilter || '',
|
|
73
111
|
toDateFilter: args.toDateFilter || '',
|
|
74
|
-
labels: args.labels || [],
|
|
75
112
|
},
|
|
76
113
|
});
|
|
77
114
|
return {
|
|
@@ -85,9 +122,16 @@ exports.toolsTasks = {
|
|
|
85
122
|
const args = params.arguments;
|
|
86
123
|
// eslint-disable-next-line no-console
|
|
87
124
|
console.log('Running test plan with args:', args);
|
|
125
|
+
// AI decides to use both for some reason
|
|
126
|
+
const overrideParameters = args.overrideParameters && (0, utils_js_1.toLoadmillParams)(args.overrideParameters);
|
|
127
|
+
const parameters = args.parameters && (0, utils_js_1.toLoadmillParams)(args.parameters);
|
|
88
128
|
const response = await (0, http_request_js_1.sendHttpRequest)({
|
|
89
129
|
method: http_request_js_1.HttpMethods.POST,
|
|
90
130
|
url: `${BASE_URL}/test-plans/${args.id}/run`,
|
|
131
|
+
body: {
|
|
132
|
+
labels: args.labels || [],
|
|
133
|
+
overrideParameters: overrideParameters || parameters || {},
|
|
134
|
+
},
|
|
91
135
|
});
|
|
92
136
|
return {
|
|
93
137
|
content: [{
|
|
@@ -119,10 +163,18 @@ exports.toolsTasks = {
|
|
|
119
163
|
method: http_request_js_1.HttpMethods.GET,
|
|
120
164
|
url: `${BASE_URL}/labels`,
|
|
121
165
|
});
|
|
166
|
+
// drop the colors
|
|
167
|
+
const res = JSON.parse(response.text);
|
|
168
|
+
const labels = res.teamLabels.map(tl => {
|
|
169
|
+
return {
|
|
170
|
+
id: tl.id,
|
|
171
|
+
description: tl.description,
|
|
172
|
+
};
|
|
173
|
+
});
|
|
122
174
|
return {
|
|
123
175
|
content: [{
|
|
124
176
|
type: 'text',
|
|
125
|
-
text: JSON.stringify(
|
|
177
|
+
text: JSON.stringify(labels, null, 2),
|
|
126
178
|
}],
|
|
127
179
|
};
|
|
128
180
|
},
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":";;;AAAA,uDAAiE;AACjE,
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":";;;AAAA,uDAAiE;AACjE,iDAUwB;AACxB,yCAA8C;AAM9C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,0BAA0B,CAAC;AAC5E,MAAM,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAC;AAEvC,wDAAwD;AAC3C,QAAA,UAAU,GAAc;IACnC,CAAC,iCAAkB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;QAC9B,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,IAAI,CAAC,CAAC;QAEtD,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAe,EAAC;YACrC,MAAM,EAAE,6BAAW,CAAC,GAAG;YACvB,GAAG,EAAE,GAAG,QAAQ,cAAc;YAC9B,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;gBACzB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;gBAC5B,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,EAAE;gBACzC,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE;gBACrC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;aAC1B;SACF,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;iBACxC,CAAC;SACH,CAAC;IACJ,CAAC;IACD,CAAC,qCAAsB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACzC,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;QAC9B,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,IAAI,CAAC,CAAC;QAEtD,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAe,EAAC;YACrC,MAAM,EAAE,6BAAW,CAAC,GAAG;YACvB,GAAG,EAAE,GAAG,QAAQ,yBAAyB;YACzC,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;gBACzB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;gBAC5B,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,EAAE;gBACzC,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE;gBACrC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;aAC1B;SACF,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;iBACxC,CAAC;SACH,CAAC;IACJ,CAAC;IACD,CAAC,6BAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;QAC9B,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC;QAEnD,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAe,EAAC;YACrC,MAAM,EAAE,6BAAW,CAAC,IAAI;YACxB,GAAG,EAAE,GAAG,QAAQ,gBAAgB,IAAI,CAAC,EAAE,MAAM;SAC9C,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;iBACxC,CAAC;SACH,CAAC;IACJ,CAAC;IACD,CAAC,iCAAkB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;QAC9B,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,IAAI,CAAC,CAAC;QAEvD,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAe,EAAC;YACrC,MAAM,EAAE,6BAAW,CAAC,GAAG;YACvB,GAAG,EAAE,GAAG,QAAQ,qBAAqB,IAAI,CAAC,EAAE,EAAE;SAC/C,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;iBACxC,CAAC;SACH,CAAC;IACJ,CAAC;IACD,CAAC,sCAAuB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;QAC9B,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,IAAI,CAAC,CAAC;QAE5D,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAe,EAAC;YACrC,MAAM,EAAE,6BAAW,CAAC,GAAG;YACvB,GAAG,EAAE,GAAG,QAAQ,2BAA2B,IAAI,CAAC,SAAS,EAAE;SAC5D,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;iBACxC,CAAC;SACH,CAAC;IACJ,CAAC;IACD,CAAC,+BAAgB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;QAC9B,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,IAAI,CAAC,CAAC;QAErD,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAe,EAAC;YACrC,MAAM,EAAE,6BAAW,CAAC,GAAG;YACvB,GAAG,EAAE,GAAG,QAAQ,aAAa;YAC7B,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;gBACzB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;gBAC5B,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,EAAE;gBACzC,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE;aACtC;SACF,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;iBACxC,CAAC;SACH,CAAC;IACJ,CAAC;IACD,CAAC,4BAAa,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAChC,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;QAC9B,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC;QAElD,yCAAyC;QACzC,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAA,2BAAgB,EAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChG,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAA,2BAAgB,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAExE,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAe,EAAC;YACrC,MAAM,EAAE,6BAAW,CAAC,IAAI;YACxB,GAAG,EAAE,GAAG,QAAQ,eAAe,IAAI,CAAC,EAAE,MAAM;YAC5C,IAAI,EAAE;gBACJ,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;gBACzB,kBAAkB,EAAE,kBAAkB,IAAI,UAAU,IAAI,EAAE;aAC3D;SACF,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;iBACxC,CAAC;SACH,CAAC;IACJ,CAAC;IACD,CAAC,gCAAiB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACpC,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;QAC9B,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,IAAI,CAAC,CAAC;QAEtD,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAe,EAAC;YACrC,MAAM,EAAE,6BAAW,CAAC,GAAG;YACvB,GAAG,EAAE,GAAG,QAAQ,oBAAoB,IAAI,CAAC,EAAE,EAAE;SAC9C,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;iBACxC,CAAC;SACH,CAAC;IACJ,CAAC;IACD,CAAC,yBAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;QAC9B,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;QAE/C,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAe,EAAC;YACrC,MAAM,EAAE,6BAAW,CAAC,GAAG;YACvB,GAAG,EAAE,GAAG,QAAQ,SAAS;SAC1B,CAAC,CAAC;QAEH,kBAAkB;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YACrC,OAAO;gBACL,EAAE,EAAE,EAAE,CAAC,EAAE;gBACT,WAAW,EAAE,EAAE,CAAC,WAAW;aAC5B,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC"}
|
package/dist/utils.d.ts
ADDED
package/dist/utils.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fillTemplate = exports.toLoadmillParams = void 0;
|
|
4
|
+
const toLoadmillParams = (rawParams = '') => {
|
|
5
|
+
const parameters = {};
|
|
6
|
+
if (Array.isArray(rawParams)) { // AI shenaniganz
|
|
7
|
+
rawParams = rawParams.join(',');
|
|
8
|
+
}
|
|
9
|
+
rawParams.split(',').forEach(pair => {
|
|
10
|
+
if (!pair) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const pivot = pair.indexOf('=');
|
|
14
|
+
if (pivot <= 0) {
|
|
15
|
+
throw new Error(`Invalid parameter assignment: ${pair}`);
|
|
16
|
+
}
|
|
17
|
+
const name = pair.slice(0, pivot);
|
|
18
|
+
parameters[name] = pair.slice(pivot + 1, pair.length);
|
|
19
|
+
});
|
|
20
|
+
return parameters;
|
|
21
|
+
};
|
|
22
|
+
exports.toLoadmillParams = toLoadmillParams;
|
|
23
|
+
function toStr(v) {
|
|
24
|
+
if (typeof v === 'string') {
|
|
25
|
+
return v;
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
return JSON.stringify(v, null, 2);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return String(v);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function fillTemplate(tpl, args) {
|
|
35
|
+
return tpl.replace(/{{\s*([\w]+)\s*}}/g, (_, key) => {
|
|
36
|
+
const val = args?.[key];
|
|
37
|
+
return val === undefined || val === null ? '' : toStr(val);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
exports.fillTemplate = fillTemplate;
|
|
41
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AACO,MAAM,gBAAgB,GAAG,CAAC,YAAoB,EAAE,EAAE,EAAE;IACzD,MAAM,UAAU,GAAG,EAAE,CAAC;IAEtB,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,iBAAiB;QAC/C,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACjC;IAED,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAClC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEhC,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,EAAE,CAAC,CAAC;SAC1D;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAClC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAvBW,QAAA,gBAAgB,oBAuB3B;AAEF,SAAS,KAAK,CAAC,CAAU;IACvB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;QACzB,OAAO,CAAC,CAAC;KACV;IACD,IAAI;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;KACnC;IAAC,MAAM;QACN,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;KAClB;AACH,CAAC;AAED,SAAgB,YAAY,CAAC,GAAW,EAAE,IAA6B;IACrE,OAAO,GAAG,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QAClD,MAAM,GAAG,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC;AALD,oCAKC"}
|