@provartesting/provardx-cli 1.4.7 → 1.5.0-beta.1
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 +263 -9
- package/lib/commands/provar/automation/config/validate.js.map +1 -1
- package/lib/commands/provar/automation/project/validate.d.ts +14 -0
- package/lib/commands/provar/automation/project/validate.js +69 -0
- package/lib/commands/provar/automation/project/validate.js.map +1 -0
- package/lib/commands/provar/mcp/start.d.ts +16 -0
- package/lib/commands/provar/mcp/start.js +62 -0
- package/lib/commands/provar/mcp/start.js.map +1 -0
- package/lib/commands/provar/quality-hub/connect.d.ts +5 -0
- package/lib/commands/provar/quality-hub/connect.js +12 -0
- package/lib/commands/provar/quality-hub/connect.js.map +1 -0
- package/lib/commands/provar/quality-hub/display.d.ts +5 -0
- package/lib/commands/provar/quality-hub/display.js +12 -0
- package/lib/commands/provar/quality-hub/display.js.map +1 -0
- package/lib/commands/provar/quality-hub/open.d.ts +5 -0
- package/lib/commands/provar/quality-hub/open.js +12 -0
- package/lib/commands/provar/quality-hub/open.js.map +1 -0
- package/lib/commands/provar/quality-hub/test/run/abort.d.ts +5 -0
- package/lib/commands/provar/quality-hub/test/run/abort.js +12 -0
- package/lib/commands/provar/quality-hub/test/run/abort.js.map +1 -0
- package/lib/commands/provar/quality-hub/test/run/report.d.ts +5 -0
- package/lib/commands/provar/quality-hub/test/run/report.js +12 -0
- package/lib/commands/provar/quality-hub/test/run/report.js.map +1 -0
- package/lib/commands/provar/quality-hub/test/run.d.ts +5 -0
- package/lib/commands/provar/quality-hub/test/run.js +12 -0
- package/lib/commands/provar/quality-hub/test/run.js.map +1 -0
- package/lib/commands/provar/quality-hub/testcase/retrieve.d.ts +5 -0
- package/lib/commands/provar/quality-hub/testcase/retrieve.js +12 -0
- package/lib/commands/provar/quality-hub/testcase/retrieve.js.map +1 -0
- package/lib/mcp/licensing/algasClient.d.ts +19 -0
- package/lib/mcp/licensing/algasClient.js +153 -0
- package/lib/mcp/licensing/algasClient.js.map +1 -0
- package/lib/mcp/licensing/ideDetection.d.ts +22 -0
- package/lib/mcp/licensing/ideDetection.js +107 -0
- package/lib/mcp/licensing/ideDetection.js.map +1 -0
- package/lib/mcp/licensing/index.d.ts +5 -0
- package/lib/mcp/licensing/index.js +10 -0
- package/lib/mcp/licensing/index.js.map +1 -0
- package/lib/mcp/licensing/licenseCache.d.ts +20 -0
- package/lib/mcp/licensing/licenseCache.js +85 -0
- package/lib/mcp/licensing/licenseCache.js.map +1 -0
- package/lib/mcp/licensing/licenseError.d.ts +4 -0
- package/lib/mcp/licensing/licenseError.js +15 -0
- package/lib/mcp/licensing/licenseError.js.map +1 -0
- package/lib/mcp/licensing/licenseValidator.d.ts +33 -0
- package/lib/mcp/licensing/licenseValidator.js +110 -0
- package/lib/mcp/licensing/licenseValidator.js.map +1 -0
- package/lib/mcp/logging/logger.d.ts +7 -0
- package/lib/mcp/logging/logger.js +22 -0
- package/lib/mcp/logging/logger.js.map +1 -0
- package/lib/mcp/rules/page_object_validation_rules.json +344 -0
- package/lib/mcp/rules/provar_best_practices_rules.json +3192 -0
- package/lib/mcp/schemas/common.d.ts +20 -0
- package/lib/mcp/schemas/common.js +16 -0
- package/lib/mcp/schemas/common.js.map +1 -0
- package/lib/mcp/security/pathPolicy.d.ts +19 -0
- package/lib/mcp/security/pathPolicy.js +66 -0
- package/lib/mcp/security/pathPolicy.js.map +1 -0
- package/lib/mcp/server.d.ts +5 -0
- package/lib/mcp/server.js +62 -0
- package/lib/mcp/server.js.map +1 -0
- package/lib/mcp/tools/antTools.d.ts +21 -0
- package/lib/mcp/tools/antTools.js +614 -0
- package/lib/mcp/tools/antTools.js.map +1 -0
- package/lib/mcp/tools/automationTools.d.ts +15 -0
- package/lib/mcp/tools/automationTools.js +379 -0
- package/lib/mcp/tools/automationTools.js.map +1 -0
- package/lib/mcp/tools/bestPracticesEngine.d.ts +30 -0
- package/lib/mcp/tools/bestPracticesEngine.js +632 -0
- package/lib/mcp/tools/bestPracticesEngine.js.map +1 -0
- package/lib/mcp/tools/defectTools.d.ts +15 -0
- package/lib/mcp/tools/defectTools.js +211 -0
- package/lib/mcp/tools/defectTools.js.map +1 -0
- package/lib/mcp/tools/hierarchyValidate.d.ts +139 -0
- package/lib/mcp/tools/hierarchyValidate.js +540 -0
- package/lib/mcp/tools/hierarchyValidate.js.map +1 -0
- package/lib/mcp/tools/pageObjectGenerate.d.ts +3 -0
- package/lib/mcp/tools/pageObjectGenerate.js +153 -0
- package/lib/mcp/tools/pageObjectGenerate.js.map +1 -0
- package/lib/mcp/tools/pageObjectValidate.d.ts +18 -0
- package/lib/mcp/tools/pageObjectValidate.js +420 -0
- package/lib/mcp/tools/pageObjectValidate.js.map +1 -0
- package/lib/mcp/tools/projectInspect.d.ts +3 -0
- package/lib/mcp/tools/projectInspect.js +694 -0
- package/lib/mcp/tools/projectInspect.js.map +1 -0
- package/lib/mcp/tools/projectValidateFromPath.d.ts +3 -0
- package/lib/mcp/tools/projectValidateFromPath.js +153 -0
- package/lib/mcp/tools/projectValidateFromPath.js.map +1 -0
- package/lib/mcp/tools/propertiesTools.d.ts +7 -0
- package/lib/mcp/tools/propertiesTools.js +314 -0
- package/lib/mcp/tools/propertiesTools.js.map +1 -0
- package/lib/mcp/tools/qualityHubTools.d.ts +8 -0
- package/lib/mcp/tools/qualityHubTools.js +189 -0
- package/lib/mcp/tools/qualityHubTools.js.map +1 -0
- package/lib/mcp/tools/rcaTools.d.ts +4 -0
- package/lib/mcp/tools/rcaTools.js +620 -0
- package/lib/mcp/tools/rcaTools.js.map +1 -0
- package/lib/mcp/tools/sfSpawn.d.ts +28 -0
- package/lib/mcp/tools/sfSpawn.js +56 -0
- package/lib/mcp/tools/sfSpawn.js.map +1 -0
- package/lib/mcp/tools/testCaseGenerate.d.ts +3 -0
- package/lib/mcp/tools/testCaseGenerate.js +221 -0
- package/lib/mcp/tools/testCaseGenerate.js.map +1 -0
- package/lib/mcp/tools/testCaseValidate.d.ts +20 -0
- package/lib/mcp/tools/testCaseValidate.js +232 -0
- package/lib/mcp/tools/testCaseValidate.js.map +1 -0
- package/lib/mcp/tools/testPlanTools.d.ts +6 -0
- package/lib/mcp/tools/testPlanTools.js +311 -0
- package/lib/mcp/tools/testPlanTools.js.map +1 -0
- package/lib/mcp/tools/testPlanValidate.d.ts +2 -0
- package/lib/mcp/tools/testPlanValidate.js +75 -0
- package/lib/mcp/tools/testPlanValidate.js.map +1 -0
- package/lib/mcp/tools/testSuiteValidate.d.ts +2 -0
- package/lib/mcp/tools/testSuiteValidate.js +63 -0
- package/lib/mcp/tools/testSuiteValidate.js.map +1 -0
- package/lib/services/projectValidation.d.ts +119 -0
- package/lib/services/projectValidation.js +678 -0
- package/lib/services/projectValidation.js.map +1 -0
- package/messages/sf.provar.automation.project.validate.md +52 -0
- package/messages/sf.provar.mcp.start.md +74 -0
- package/oclif.manifest.json +1370 -1
- package/package.json +48 -26
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Stable error shape returned in every isError=true response */
|
|
2
|
+
export interface ErrorResponse {
|
|
3
|
+
error_code: string;
|
|
4
|
+
message: string;
|
|
5
|
+
retryable: boolean;
|
|
6
|
+
details?: Record<string, unknown>;
|
|
7
|
+
requestId: string;
|
|
8
|
+
}
|
|
9
|
+
/** Single validation finding produced by the PO / TC validators */
|
|
10
|
+
export interface ValidationIssue {
|
|
11
|
+
rule_id: string;
|
|
12
|
+
severity: 'ERROR' | 'WARNING' | 'INFO';
|
|
13
|
+
message: string;
|
|
14
|
+
applies_to: string;
|
|
15
|
+
suggestion?: string;
|
|
16
|
+
line_number?: number;
|
|
17
|
+
}
|
|
18
|
+
export declare function makeError(code: string, message: string, requestId: string, retryable?: boolean, details?: Record<string, unknown>): ErrorResponse;
|
|
19
|
+
/** Generate a correlation ID for each tool invocation */
|
|
20
|
+
export declare function makeRequestId(): string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Provar Limited.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
* Licensed under the BSD 3-Clause license.
|
|
5
|
+
* For full license text, see LICENSE.md file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
6
|
+
*/
|
|
7
|
+
/* eslint-disable camelcase */
|
|
8
|
+
import { randomUUID } from 'node:crypto';
|
|
9
|
+
export function makeError(code, message, requestId, retryable = false, details) {
|
|
10
|
+
return { error_code: code, message, retryable, details, requestId };
|
|
11
|
+
}
|
|
12
|
+
/** Generate a correlation ID for each tool invocation */
|
|
13
|
+
export function makeRequestId() {
|
|
14
|
+
return randomUUID();
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/mcp/schemas/common.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8BAA8B;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAqBzC,MAAM,UAAU,SAAS,CACvB,IAAY,EACZ,OAAe,EACf,SAAiB,EACjB,SAAS,GAAG,KAAK,EACjB,OAAiC;IAEjC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AACtE,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,aAAa;IAC3B,OAAO,UAAU,EAAE,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare class PathPolicyError extends Error {
|
|
2
|
+
readonly code: string;
|
|
3
|
+
constructor(code: string, message: string);
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Asserts that filePath is within at least one of allowedPaths.
|
|
7
|
+
*
|
|
8
|
+
* Throws PathPolicyError with code:
|
|
9
|
+
* - PATH_TRAVERSAL — path contains `..` segments
|
|
10
|
+
* - PATH_NOT_ALLOWED — resolved path is outside all allowed roots
|
|
11
|
+
*
|
|
12
|
+
* When allowedPaths is empty, all paths are permitted (unrestricted mode).
|
|
13
|
+
*
|
|
14
|
+
* Symlinks are resolved via fs.realpathSync so that a symlink inside an allowed
|
|
15
|
+
* directory pointing to a location outside it cannot bypass containment.
|
|
16
|
+
* If the path does not yet exist (e.g. an output file to be created), the parent
|
|
17
|
+
* directory is resolved instead and the basename re-attached.
|
|
18
|
+
*/
|
|
19
|
+
export declare function assertPathAllowed(filePath: string, allowedPaths: string[]): void;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Provar Limited.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
* Licensed under the BSD 3-Clause license.
|
|
5
|
+
* For full license text, see LICENSE.md file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
6
|
+
*/
|
|
7
|
+
import fs from 'node:fs';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
export class PathPolicyError extends Error {
|
|
10
|
+
code;
|
|
11
|
+
constructor(code, message) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.name = 'PathPolicyError';
|
|
14
|
+
this.code = code;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Asserts that filePath is within at least one of allowedPaths.
|
|
19
|
+
*
|
|
20
|
+
* Throws PathPolicyError with code:
|
|
21
|
+
* - PATH_TRAVERSAL — path contains `..` segments
|
|
22
|
+
* - PATH_NOT_ALLOWED — resolved path is outside all allowed roots
|
|
23
|
+
*
|
|
24
|
+
* When allowedPaths is empty, all paths are permitted (unrestricted mode).
|
|
25
|
+
*
|
|
26
|
+
* Symlinks are resolved via fs.realpathSync so that a symlink inside an allowed
|
|
27
|
+
* directory pointing to a location outside it cannot bypass containment.
|
|
28
|
+
* If the path does not yet exist (e.g. an output file to be created), the parent
|
|
29
|
+
* directory is resolved instead and the basename re-attached.
|
|
30
|
+
*/
|
|
31
|
+
export function assertPathAllowed(filePath, allowedPaths) {
|
|
32
|
+
// Check the original path for `..` segments before any normalization resolves them away
|
|
33
|
+
const rawSegments = filePath.split(/[/\\]+/).filter((s) => s.length > 0);
|
|
34
|
+
if (rawSegments.some((s) => s === '..')) {
|
|
35
|
+
throw new PathPolicyError('PATH_TRAVERSAL', `Path traversal detected: ${filePath}`);
|
|
36
|
+
}
|
|
37
|
+
// Resolve symlinks so a symlink inside an allowed dir that points outside cannot bypass
|
|
38
|
+
// the containment check. Fall back to lexical resolution when the path doesn't exist yet.
|
|
39
|
+
let resolved;
|
|
40
|
+
try {
|
|
41
|
+
resolved = fs.realpathSync(filePath);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// Path doesn't exist — resolve the parent (which should exist) to catch symlinks there
|
|
45
|
+
const parent = path.dirname(path.resolve(filePath));
|
|
46
|
+
try {
|
|
47
|
+
resolved = path.join(fs.realpathSync(parent), path.basename(filePath));
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
resolved = path.resolve(filePath);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const resolvedAllowed = allowedPaths.map((p) => {
|
|
54
|
+
try {
|
|
55
|
+
return fs.realpathSync(p);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return path.resolve(path.normalize(p));
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
if (resolvedAllowed.length > 0 &&
|
|
62
|
+
!resolvedAllowed.some((base) => resolved === base || resolved.startsWith(base + path.sep))) {
|
|
63
|
+
throw new PathPolicyError('PATH_NOT_ALLOWED', `Path "${resolved}" is not within allowed paths: [${resolvedAllowed.join(', ')}]`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=pathPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathPolicy.js","sourceRoot":"","sources":["../../../src/mcp/security/pathPolicy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxB,IAAI,CAAS;IAC7B,YAAmB,IAAY,EAAE,OAAe;QAC9C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,YAAsB;IACxE,wFAAwF;IACxF,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzE,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,eAAe,CAAC,gBAAgB,EAAE,4BAA4B,QAAQ,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,wFAAwF;IACxF,0FAA0F;IAC1F,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,uFAAuF;QACvF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IACE,eAAe,CAAC,MAAM,GAAG,CAAC;QAC1B,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAC1F,CAAC;QACD,MAAM,IAAI,eAAe,CACvB,kBAAkB,EAClB,SAAS,QAAQ,mCAAmC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAClF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Provar Limited.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
* Licensed under the BSD 3-Clause license.
|
|
5
|
+
* For full license text, see LICENSE.md file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
6
|
+
*/
|
|
7
|
+
import { createRequire } from 'node:module';
|
|
8
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
import { log } from './logging/logger.js';
|
|
11
|
+
const requireJson = createRequire(import.meta.url);
|
|
12
|
+
const SERVER_VERSION = requireJson('../../package.json').version;
|
|
13
|
+
import { registerProjectInspect } from './tools/projectInspect.js';
|
|
14
|
+
import { registerPageObjectGenerate } from './tools/pageObjectGenerate.js';
|
|
15
|
+
import { registerPageObjectValidate } from './tools/pageObjectValidate.js';
|
|
16
|
+
import { registerTestCaseGenerate } from './tools/testCaseGenerate.js';
|
|
17
|
+
import { registerTestCaseValidate } from './tools/testCaseValidate.js';
|
|
18
|
+
import { registerTestSuiteValidate } from './tools/testSuiteValidate.js';
|
|
19
|
+
import { registerTestPlanValidate } from './tools/testPlanValidate.js';
|
|
20
|
+
import { registerProjectValidateFromPath } from './tools/projectValidateFromPath.js';
|
|
21
|
+
import { registerAllPropertiesTools } from './tools/propertiesTools.js';
|
|
22
|
+
import { registerAllQualityHubTools } from './tools/qualityHubTools.js';
|
|
23
|
+
import { registerAllAutomationTools } from './tools/automationTools.js';
|
|
24
|
+
import { registerAllDefectTools } from './tools/defectTools.js';
|
|
25
|
+
import { registerAllAntTools } from './tools/antTools.js';
|
|
26
|
+
import { registerAllRcaTools } from './tools/rcaTools.js';
|
|
27
|
+
import { registerAllTestPlanTools } from './tools/testPlanTools.js';
|
|
28
|
+
export function createProvarMcpServer(config) {
|
|
29
|
+
log('info', 'Creating Provar MCP server', { allowedPaths: config.allowedPaths });
|
|
30
|
+
const server = new McpServer({
|
|
31
|
+
name: 'provar-mcp',
|
|
32
|
+
version: SERVER_VERSION,
|
|
33
|
+
});
|
|
34
|
+
// ── Sanity-check tool ────────────────────────────────────────────────────────
|
|
35
|
+
server.tool('provardx.ping', 'Sanity-check tool. Echoes back a message with a timestamp. Use this to verify the MCP server is reachable before calling other tools.', {
|
|
36
|
+
message: z.string().optional().default('ping').describe('Optional message to echo back'),
|
|
37
|
+
}, ({ message }) => {
|
|
38
|
+
const result = { pong: message, ts: new Date().toISOString(), server: `provar-mcp@${SERVER_VERSION}` };
|
|
39
|
+
return {
|
|
40
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
41
|
+
structuredContent: result,
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
// ── Provar tools ─────────────────────────────────────────────────────────────
|
|
45
|
+
registerProjectInspect(server, config);
|
|
46
|
+
registerPageObjectGenerate(server, config);
|
|
47
|
+
registerPageObjectValidate(server, config);
|
|
48
|
+
registerTestCaseGenerate(server, config);
|
|
49
|
+
registerTestCaseValidate(server, config);
|
|
50
|
+
registerTestSuiteValidate(server);
|
|
51
|
+
registerTestPlanValidate(server);
|
|
52
|
+
registerProjectValidateFromPath(server, config);
|
|
53
|
+
registerAllPropertiesTools(server, config);
|
|
54
|
+
registerAllQualityHubTools(server);
|
|
55
|
+
registerAllAutomationTools(server, config);
|
|
56
|
+
registerAllDefectTools(server);
|
|
57
|
+
registerAllAntTools(server, config);
|
|
58
|
+
registerAllRcaTools(server);
|
|
59
|
+
registerAllTestPlanTools(server, config);
|
|
60
|
+
return server;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { ServerConfig } from '../server.js';
|
|
3
|
+
import { type ValidationIssue } from '../schemas/common.js';
|
|
4
|
+
export declare function registerAntGenerate(server: McpServer, config: ServerConfig): void;
|
|
5
|
+
export declare function registerAntValidate(server: McpServer, config: ServerConfig): void;
|
|
6
|
+
export interface AntValidationResult {
|
|
7
|
+
is_valid: boolean;
|
|
8
|
+
validity_score: number;
|
|
9
|
+
provar_home: string | null;
|
|
10
|
+
project_path: string | null;
|
|
11
|
+
results_path: string | null;
|
|
12
|
+
web_browser: string | null;
|
|
13
|
+
test_environment: string | null;
|
|
14
|
+
fileset_count: number;
|
|
15
|
+
error_count: number;
|
|
16
|
+
warning_count: number;
|
|
17
|
+
issues: ValidationIssue[];
|
|
18
|
+
}
|
|
19
|
+
/** Pure function — exported for unit testing */
|
|
20
|
+
export declare function validateAntXml(xmlContent: string): AntValidationResult;
|
|
21
|
+
export declare function registerAllAntTools(server: McpServer, config: ServerConfig): void;
|