@smartbear/mcp 0.8.0 → 0.10.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/README.md +29 -4
- package/dist/api-hub/client/api.js +239 -10
- package/dist/api-hub/client/configuration.js +5 -0
- package/dist/api-hub/client/index.js +1 -0
- package/dist/api-hub/client/portal-types.js +126 -0
- package/dist/api-hub/client/registry-types.js +8 -0
- package/dist/api-hub/client/tools.js +78 -15
- package/dist/api-hub/client/user-management-types.js +24 -0
- package/dist/api-hub/client.js +34 -0
- package/dist/bugsnag/client/api/CurrentUser.js +12 -49
- package/dist/bugsnag/client/api/Error.js +29 -142
- package/dist/bugsnag/client/api/Project.js +52 -113
- package/dist/bugsnag/client/api/api.js +3743 -0
- package/dist/bugsnag/client/api/base.js +97 -34
- package/dist/bugsnag/client/api/configuration.js +26 -0
- package/dist/bugsnag/client/api/index.js +2 -0
- package/dist/bugsnag/client/filters.js +28 -0
- package/dist/bugsnag/client.js +104 -155
- package/dist/collaborator/client.js +364 -0
- package/dist/common/server.js +73 -23
- package/dist/common/types.js +6 -1
- package/dist/index.js +9 -1
- package/dist/pactflow/client/prompt-utils.js +2 -1
- package/dist/pactflow/client/tools.js +4 -4
- package/dist/pactflow/client/utils.js +5 -4
- package/dist/pactflow/client.js +10 -9
- package/dist/qmetry/client/api/client-api.js +21 -16
- package/dist/qmetry/client/api/error-handler.js +329 -0
- package/dist/qmetry/client/auto-resolve.js +96 -0
- package/dist/qmetry/client/handlers.js +33 -2
- package/dist/qmetry/client/issues.js +123 -0
- package/dist/qmetry/client/project.js +73 -0
- package/dist/qmetry/client/requirement.js +76 -0
- package/dist/qmetry/client/testcase.js +122 -6
- package/dist/qmetry/client/testsuite.js +272 -0
- package/dist/qmetry/client/tools/index.js +17 -0
- package/dist/qmetry/client/tools/issue-tools.js +545 -0
- package/dist/qmetry/client/tools/project-tools.js +348 -0
- package/dist/qmetry/client/tools/requirement-tools.js +530 -0
- package/dist/qmetry/client/tools/testcase-tools.js +526 -0
- package/dist/qmetry/client/tools/testsuite-tools.js +772 -0
- package/dist/qmetry/client/tools/types.js +1 -0
- package/dist/qmetry/client/utils.js +16 -0
- package/dist/qmetry/client.js +27 -17
- package/dist/qmetry/config/constants.js +28 -0
- package/dist/qmetry/config/rest-endpoints.js +30 -0
- package/dist/qmetry/types/common.js +599 -9
- package/dist/qmetry/types/issues.js +16 -0
- package/dist/qmetry/types/project.js +17 -0
- package/dist/qmetry/types/requirements.js +19 -0
- package/dist/qmetry/types/testcase.js +20 -0
- package/dist/qmetry/types/testsuite.js +44 -0
- package/dist/reflect/client.js +7 -6
- package/dist/zephyr/client.js +7 -1
- package/dist/zephyr/common/api-client.js +8 -0
- package/dist/zephyr/common/auth-service.js +1 -0
- package/dist/zephyr/common/rest-api-schemas.js +5173 -0
- package/dist/zephyr/tool/project/get-project.js +39 -0
- package/dist/zephyr/tool/project/get-projects.js +7 -13
- package/dist/zephyr/tool/test-cycle/get-test-cycles.js +72 -0
- package/package.json +1 -1
- package/dist/bugsnag/client/api/filters.js +0 -167
- package/dist/bugsnag/client/configuration.js +0 -10
- package/dist/bugsnag/client/index.js +0 -2
- package/dist/qmetry/client/tools.js +0 -222
- package/dist/zephyr/common/types.js +0 -35
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { QMETRY_DEFAULTS } from "../config/constants.js";
|
|
2
|
+
/**
|
|
3
|
+
* Shared utility functions for QMetry client modules
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Resolves default values for baseUrl and project parameters
|
|
7
|
+
* @param baseUrl - Optional base URL, defaults to QMETRY_DEFAULTS.BASE_URL
|
|
8
|
+
* @param project - Optional project key, defaults to QMETRY_DEFAULTS.PROJECT_KEY
|
|
9
|
+
* @returns Object with resolved baseUrl and project values
|
|
10
|
+
*/
|
|
11
|
+
export function resolveDefaults(baseUrl, project) {
|
|
12
|
+
return {
|
|
13
|
+
resolvedBaseUrl: baseUrl || QMETRY_DEFAULTS.BASE_URL,
|
|
14
|
+
resolvedProject: project || QMETRY_DEFAULTS.PROJECT_KEY,
|
|
15
|
+
};
|
|
16
|
+
}
|
package/dist/qmetry/client.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { autoResolveViewIdAndFolderPath, findAutoResolveConfig, } from "./client/auto-resolve.js";
|
|
1
2
|
import { QMETRY_HANDLER_MAP } from "./client/handlers.js";
|
|
2
3
|
import { getProjectInfo } from "./client/project.js";
|
|
3
|
-
import { TOOLS } from "./client/tools.js";
|
|
4
|
-
import { QMETRY_DEFAULTS
|
|
4
|
+
import { TOOLS } from "./client/tools/index.js";
|
|
5
|
+
import { QMETRY_DEFAULTS } from "./config/constants.js";
|
|
5
6
|
export class QmetryClient {
|
|
6
7
|
name = "QMetry";
|
|
7
8
|
prefix = "qmetry";
|
|
@@ -49,31 +50,40 @@ export class QmetryClient {
|
|
|
49
50
|
register(tool, (args) => handleAsync(async () => {
|
|
50
51
|
const a = args;
|
|
51
52
|
const { baseUrl, projectKey } = resolveContext(a);
|
|
52
|
-
//
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
// Dynamic auto-resolve for modules that support viewId, folderPath, and folderID
|
|
54
|
+
const autoResolveConfig = findAutoResolveConfig(tool.handler);
|
|
55
|
+
if (autoResolveConfig) {
|
|
56
|
+
// Check if we need to auto-resolve viewId, folderPath, or folderID
|
|
57
|
+
const needsViewIdResolve = !a.viewId && autoResolveConfig.viewIdPath;
|
|
58
|
+
const needsFolderPathResolve = a.folderPath === undefined;
|
|
59
|
+
const needsFolderIdResolve = autoResolveConfig.folderIdField &&
|
|
60
|
+
!a[autoResolveConfig.folderIdField];
|
|
61
|
+
// Explicit condition for auto-resolving tcFolderID for Create Test Case
|
|
62
|
+
const needsTcFolderIdAutoResolve = autoResolveConfig.folderIdField === "tcFolderID" && !a.tcFolderID;
|
|
63
|
+
// Explicit condition for auto-resolving parentFolderId for Create Test Suite
|
|
64
|
+
const needsParentFolderIdAutoResolve = autoResolveConfig.folderIdField === "parentFolderId" &&
|
|
65
|
+
!a.parentFolderId;
|
|
66
|
+
if (needsViewIdResolve ||
|
|
67
|
+
needsFolderPathResolve ||
|
|
68
|
+
needsFolderIdResolve ||
|
|
69
|
+
needsTcFolderIdAutoResolve ||
|
|
70
|
+
needsParentFolderIdAutoResolve) {
|
|
57
71
|
let projectInfo;
|
|
58
72
|
try {
|
|
59
73
|
projectInfo = (await getProjectInfo(this.token, baseUrl, projectKey));
|
|
60
74
|
}
|
|
61
75
|
catch (err) {
|
|
62
|
-
throw new Error(`Failed to auto-resolve viewId/folderPath for project ${projectKey}. ` +
|
|
76
|
+
throw new Error(`Failed to auto-resolve viewId/folderPath/folderID for ${autoResolveConfig.moduleName} in project ${projectKey}. ` +
|
|
63
77
|
`Please provide them manually or check project access. ` +
|
|
64
78
|
`Error: ${err instanceof Error ? err.message : String(err)}`);
|
|
65
79
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
if (folderPath === undefined) {
|
|
70
|
-
folderPath = "";
|
|
71
|
-
}
|
|
80
|
+
// Apply auto-resolution using the dynamic configuration
|
|
81
|
+
Object.assign(a, autoResolveViewIdAndFolderPath(a, projectInfo, autoResolveConfig));
|
|
72
82
|
}
|
|
73
|
-
a.viewId = viewId;
|
|
74
|
-
a.folderPath = folderPath;
|
|
75
83
|
}
|
|
76
|
-
|
|
84
|
+
// Extract projectKey and baseUrl from arguments to prevent them from being sent in request body
|
|
85
|
+
const { projectKey: _, baseUrl: __, ...cleanArgs } = a;
|
|
86
|
+
const result = await handlerFn(this.token, baseUrl, projectKey, cleanArgs);
|
|
77
87
|
// Use custom formatter if available, otherwise return JSON
|
|
78
88
|
const formatted = tool.formatResponse
|
|
79
89
|
? tool.formatResponse(result)
|
|
@@ -3,10 +3,38 @@ export const QMETRY_DEFAULTS = {
|
|
|
3
3
|
PROJECT_KEY: "default",
|
|
4
4
|
};
|
|
5
5
|
export const QMetryToolsHandlers = {
|
|
6
|
+
FETCH_PROJECTS: "getProjects",
|
|
6
7
|
SET_PROJECT_INFO: "setProjectInfo",
|
|
7
8
|
FETCH_PROJECT_INFO: "getProjectInfo",
|
|
9
|
+
FETCH_RELEASES_CYCLES: "getReleasesCycles",
|
|
10
|
+
FETCH_BUILDS: "getBuilds",
|
|
11
|
+
FETCH_PLATFORMS: "getPlatforms",
|
|
12
|
+
CREATE_TEST_CASE: "createTestCases",
|
|
13
|
+
UPDATE_TEST_CASE: "updateTestCase",
|
|
8
14
|
FETCH_TEST_CASES: "getTestCases",
|
|
9
15
|
FETCH_TEST_CASE_DETAILS: "getTestCaseDetails",
|
|
10
16
|
FETCH_TEST_CASE_VERSION_DETAILS: "getTestCaseVersionDetails",
|
|
11
17
|
FETCH_TEST_CASE_STEPS: "getTestCaseSteps",
|
|
18
|
+
FETCH_TEST_CASE_EXECUTIONS: "getTestCaseExecutions",
|
|
19
|
+
LINK_REQUIREMENT_TO_TESTCASE: "linkRequirementToTestCase",
|
|
20
|
+
FETCH_REQUIREMENTS: "getRequirements",
|
|
21
|
+
FETCH_REQUIREMENT_DETAILS: "getRequirementDetails",
|
|
22
|
+
FETCH_TESTCASES_LINKED_TO_REQUIREMENT: "getTestCasesLinkedToRequirement",
|
|
23
|
+
FETCH_REQUIREMENTS_LINKED_TO_TESTCASE: "getRequirementsLinkedToTestCase",
|
|
24
|
+
CREATE_TEST_SUITE: "createTestSuite",
|
|
25
|
+
UPDATE_TEST_SUITE: "updateTestSuite",
|
|
26
|
+
FETCH_TEST_SUITES: "getTestSuites",
|
|
27
|
+
FETCH_TESTSUITES_FOR_TESTCASE: "getTestSuitesForTestCase",
|
|
28
|
+
FETCH_TESTCASES_BY_TESTSUITE: "getTestCasesByTestSuite",
|
|
29
|
+
FETCH_EXECUTIONS_BY_TESTSUITE: "getExecutionsByTestSuite",
|
|
30
|
+
FETCH_TESTCASE_RUNS_BY_TESTSUITE_RUN: "getTestCaseRunsByTestSuiteRun",
|
|
31
|
+
FETCH_LINKED_ISSUES_BY_TESTCASE_RUN: "getLinkedIssuesByTestCaseRun",
|
|
32
|
+
FETCH_ISSUES_LINKED_TO_TESTCASE: "getIssuesLinkedToTestCase",
|
|
33
|
+
LINK_TESTCASES_TO_TESTSUITE: "linkTestCasesToTestSuite",
|
|
34
|
+
REQUIREMENTS_LINKED_TESTCASES_TO_TESTSUITE: "reqLinkedTestCasesToTestSuite",
|
|
35
|
+
CREATE_ISSUE: "createIssue",
|
|
36
|
+
UPDATE_ISSUE: "updateIssue",
|
|
37
|
+
FETCH_ISSUES: "getIssues",
|
|
38
|
+
LINK_ISSUES_TO_TESTCASE_RUN: "linkIssuesToTestcaseRun",
|
|
39
|
+
LINK_PLATFORMS_TO_TESTSUITE: "linkPlatformsToTestSuite",
|
|
12
40
|
};
|
|
@@ -1,11 +1,41 @@
|
|
|
1
1
|
export const QMETRY_PATHS = {
|
|
2
2
|
PROJECT: {
|
|
3
|
+
GET_PROJECTS: "/rest/admin/project/list",
|
|
3
4
|
GET_INFO: "/rest/admin/project/getinfo",
|
|
5
|
+
GET_RELEASES_CYCLES: "/rest/admin/scope/tree",
|
|
6
|
+
GET_BUILD: "/rest/admin/drop/list",
|
|
7
|
+
GET_PLATFORMS: "/rest/admin/platform/list",
|
|
4
8
|
},
|
|
5
9
|
TESTCASE: {
|
|
6
10
|
GET_TC_LIST: "/rest/testcases/list/viewColumns",
|
|
7
11
|
GET_TC_DETAILS: "/rest/testcases/getVersionDetail",
|
|
8
12
|
GET_TC_DETAILS_BY_VERSION: "/rest/testcases/list",
|
|
9
13
|
GET_TC_STEPS: "/rest/testcases/steps/list",
|
|
14
|
+
GET_TC_EXECUTIONS: "/rest/testcases/execution",
|
|
15
|
+
GET_TC_LINKED_TO_RQ: "/rest/testcases/list/forRQ",
|
|
16
|
+
CREATE_UPDATE_TC: "/rest/testcases",
|
|
17
|
+
LINKED_RQ_TO_TC: "/rest/testcases/link/requirements",
|
|
18
|
+
},
|
|
19
|
+
REQUIREMENT: {
|
|
20
|
+
GET_RQ_LIST: "/rest/requirements/list/viewColumns",
|
|
21
|
+
GET_RQ_DETAILS: "/rest/requirements/detail/data",
|
|
22
|
+
GET_RQ_LINKED_TO_TC: "/rest/requirements/list/forTC",
|
|
23
|
+
},
|
|
24
|
+
TESTSUITE: {
|
|
25
|
+
CREATE_UPDATE_TS: "/rest/testsuites",
|
|
26
|
+
GET_TS_LIST_FOR_TC: "/rest/testsuites/list/forTC",
|
|
27
|
+
GET_TS_LIST: "/rest/testsuites/list/viewColumns",
|
|
28
|
+
GET_TESTCASES_BY_TESTSUITE: "/rest/testcases/list/forTS",
|
|
29
|
+
LINKED_TESTCASES_TO_TESTSUITE: "/rest/testsuites/dolink/TCs",
|
|
30
|
+
GET_EXECUTIONS_BY_TESTSUITE: "/rest/execution/list/platformHome",
|
|
31
|
+
GET_TESTCASE_RUNS_BY_TESTSUITE_RUN: "/rest/execution/list/viewColumns",
|
|
32
|
+
GET_LINKED_ISSUES_BY_TESTCASE_RUN: "/rest/execution/issue/list/forTCRun",
|
|
33
|
+
LINK_PLATFORMS_TO_TESTSUITE: "/rest/testsuites/link/platforms",
|
|
34
|
+
},
|
|
35
|
+
ISSUES: {
|
|
36
|
+
GET_ISSUES_LIST: "/rest/issues/list/viewColumns",
|
|
37
|
+
CREATE_UPDATE_ISSUE: "/rest/issues",
|
|
38
|
+
GET_ISSUES_LINKED_TO_TC: "/rest/issues/list/ForTC",
|
|
39
|
+
LINK_ISSUES_TO_TESTCASE_RUN: "/rest/execution/link/issue",
|
|
10
40
|
},
|
|
11
41
|
};
|