accessflow-mcp-server 1.0.14 → 1.1.0-beta.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 +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +66 -0
- package/dist/index.js.map +1 -0
- package/dist/services/apiSchemas.d.ts +200 -0
- package/dist/services/apiSchemas.d.ts.map +1 -0
- package/dist/services/apiSchemas.js +95 -0
- package/dist/services/apiSchemas.js.map +1 -0
- package/dist/services/apiService.d.ts +37 -0
- package/dist/services/apiService.d.ts.map +1 -0
- package/dist/services/apiService.js +198 -0
- package/dist/services/apiService.js.map +1 -0
- package/dist/services/loggerService.d.ts +3 -0
- package/dist/services/loggerService.d.ts.map +1 -0
- package/dist/services/loggerService.js +38 -0
- package/dist/services/loggerService.js.map +1 -0
- package/dist/services/rulesService.d.ts +10 -0
- package/dist/services/rulesService.d.ts.map +1 -0
- package/dist/services/rulesService.js +70 -0
- package/dist/services/rulesService.js.map +1 -0
- package/dist/tools/getIssueRemediation.d.ts +16 -0
- package/dist/tools/getIssueRemediation.d.ts.map +1 -0
- package/dist/tools/getIssueRemediation.js +77 -0
- package/dist/tools/getIssueRemediation.js.map +1 -0
- package/dist/tools/getMostUrgentIssues.d.ts +7 -0
- package/dist/tools/getMostUrgentIssues.d.ts.map +1 -0
- package/dist/tools/getMostUrgentIssues.js +94 -0
- package/dist/tools/getMostUrgentIssues.js.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +21 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/resolveIssue.d.ts +16 -0
- package/dist/tools/resolveIssue.d.ts.map +1 -0
- package/dist/tools/resolveIssue.js +70 -0
- package/dist/tools/resolveIssue.js.map +1 -0
- package/dist/tools/toolRegistry.d.ts +19 -0
- package/dist/tools/toolRegistry.d.ts.map +1 -0
- package/dist/tools/toolRegistry.js +9 -0
- package/dist/tools/toolRegistry.js.map +1 -0
- package/dist/types/issues.d.ts +32 -0
- package/dist/types/issues.d.ts.map +1 -0
- package/dist/types/issues.js +6 -0
- package/dist/types/issues.js.map +1 -0
- package/dist/types/remediation.d.ts +24 -0
- package/dist/types/remediation.d.ts.map +1 -0
- package/dist/types/remediation.js +6 -0
- package/dist/types/remediation.js.map +1 -0
- package/dist/utils/domains.d.ts +2 -0
- package/dist/utils/domains.d.ts.map +1 -0
- package/dist/utils/domains.js +14 -0
- package/dist/utils/domains.js.map +1 -0
- package/dist/utils/issues.d.ts +16 -0
- package/dist/utils/issues.d.ts.map +1 -0
- package/dist/utils/issues.js +24 -0
- package/dist/utils/issues.js.map +1 -0
- package/dist/utils/middleware.d.ts +14 -0
- package/dist/utils/middleware.d.ts.map +1 -0
- package/dist/utils/middleware.js +37 -0
- package/dist/utils/middleware.js.map +1 -0
- package/dist/utils/remediation.d.ts +27 -0
- package/dist/utils/remediation.d.ts.map +1 -0
- package/dist/utils/remediation.js +139 -0
- package/dist/utils/remediation.js.map +1 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +14 -0
- package/dist/utils.js.map +1 -0
- package/package.json +48 -14
- package/TOOL_REFERENCE.md +0 -126
- package/assets/MCP_banner.png +0 -0
- package/bin/flow-mcp +0 -4
- package/build/index.d.ts +0 -12
- package/build/index.d.ts.map +0 -1
- package/build/index.js +0 -95
- package/build/index.js.map +0 -1
- package/build/prompts/formatUrgentIssues.d.ts +0 -4
- package/build/prompts/formatUrgentIssues.d.ts.map +0 -1
- package/build/prompts/formatUrgentIssues.js +0 -78
- package/build/prompts/formatUrgentIssues.js.map +0 -1
- package/build/prompts/index.d.ts +0 -4
- package/build/prompts/index.d.ts.map +0 -1
- package/build/prompts/index.js +0 -12
- package/build/prompts/index.js.map +0 -1
- package/build/prompts/types.d.ts +0 -22
- package/build/prompts/types.d.ts.map +0 -1
- package/build/prompts/types.js +0 -2
- package/build/prompts/types.js.map +0 -1
- package/build/rules.json +0 -4591
- package/build/services/accessflow.d.ts +0 -6
- package/build/services/accessflow.d.ts.map +0 -1
- package/build/services/accessflow.js +0 -8
- package/build/services/accessflow.js.map +0 -1
- package/build/tools/getIssueRemediation.d.ts +0 -4
- package/build/tools/getIssueRemediation.d.ts.map +0 -1
- package/build/tools/getIssueRemediation.js +0 -165
- package/build/tools/getIssueRemediation.js.map +0 -1
- package/build/tools/getMostUrgentIssues.d.ts +0 -4
- package/build/tools/getMostUrgentIssues.d.ts.map +0 -1
- package/build/tools/getMostUrgentIssues.js +0 -106
- package/build/tools/getMostUrgentIssues.js.map +0 -1
- package/build/tools/index.d.ts +0 -9
- package/build/tools/index.d.ts.map +0 -1
- package/build/tools/index.js +0 -19
- package/build/tools/index.js.map +0 -1
- package/build/tools/types.d.ts +0 -19
- package/build/tools/types.d.ts.map +0 -1
- package/build/tools/types.js +0 -2
- package/build/tools/types.js.map +0 -1
- package/build/utils/config.d.ts +0 -8
- package/build/utils/config.d.ts.map +0 -1
- package/build/utils/config.js +0 -26
- package/build/utils/config.js.map +0 -1
- package/build/utils/database.d.ts +0 -13
- package/build/utils/database.d.ts.map +0 -1
- package/build/utils/database.js +0 -64
- package/build/utils/database.js.map +0 -1
- package/build/utils/domain.d.ts +0 -2
- package/build/utils/domain.d.ts.map +0 -1
- package/build/utils/domain.js +0 -11
- package/build/utils/domain.js.map +0 -1
- package/build/utils/logger.d.ts +0 -18
- package/build/utils/logger.d.ts.map +0 -1
- package/build/utils/logger.js +0 -51
- package/build/utils/logger.js.map +0 -1
- package/build/utils/responses.d.ts +0 -19
- package/build/utils/responses.d.ts.map +0 -1
- package/build/utils/responses.js +0 -41
- package/build/utils/responses.js.map +0 -1
- package/build/utils/validation.d.ts +0 -7
- package/build/utils/validation.d.ts.map +0 -1
- package/build/utils/validation.js +0 -47
- package/build/utils/validation.js.map +0 -1
- package/mcp-config.json +0 -11
- package/src/index.ts +0 -125
- package/src/services/accessflow.ts +0 -9
- package/src/tools/getIssueRemediation.ts +0 -218
- package/src/tools/getMostUrgentIssues.ts +0 -144
- package/src/tools/index.ts +0 -33
- package/src/tools/types.ts +0 -20
- package/src/utils/domain.ts +0 -13
- package/test.mjs +0 -63
- package/tsconfig.json +0 -20
- /package/{src → dist/data}/rules.json +0 -0
package/README.md
CHANGED
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import 'dotenv/config';
|
|
2
|
+
import { FastMCP } from 'fastmcp';
|
|
3
|
+
import packageJson from '../package.json' with { type: 'json' };
|
|
4
|
+
import { registerTools } from './tools/index.js';
|
|
5
|
+
import { sanitizeDomain } from './utils/domains.js';
|
|
6
|
+
import { ApiService } from './services/apiService.js';
|
|
7
|
+
import { logger } from './services/loggerService.js';
|
|
8
|
+
class FlowMcpServer {
|
|
9
|
+
options;
|
|
10
|
+
server;
|
|
11
|
+
domain;
|
|
12
|
+
environment;
|
|
13
|
+
apiKey;
|
|
14
|
+
apiService;
|
|
15
|
+
constructor() {
|
|
16
|
+
this.options = {
|
|
17
|
+
name: 'accessFlow MCP Server',
|
|
18
|
+
version: packageJson.version,
|
|
19
|
+
};
|
|
20
|
+
this.server = new FastMCP(this.options);
|
|
21
|
+
this.domain = sanitizeDomain(process.env.DOMAIN || '');
|
|
22
|
+
this.environment =
|
|
23
|
+
process.env.ENVIRONMENT || 'https://accessflow.accessibe.com'; // Default to production environment
|
|
24
|
+
this.apiKey = process.env.API_KEY || '';
|
|
25
|
+
const nonProdUserName = process.env.NON_PROD_USER_NAME;
|
|
26
|
+
const nonProdPassword = process.env.NON_PROD_PASSWORD;
|
|
27
|
+
this.apiService = new ApiService(this.environment, this.domain, this.apiKey, nonProdUserName, nonProdPassword);
|
|
28
|
+
}
|
|
29
|
+
async init() {
|
|
30
|
+
registerTools(this.server, this.apiService);
|
|
31
|
+
// Start the FastMCP server
|
|
32
|
+
await this.server.start({
|
|
33
|
+
transportType: 'stdio',
|
|
34
|
+
});
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
async stop() {
|
|
38
|
+
if (this.server)
|
|
39
|
+
await this.server.stop();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async function startServer() {
|
|
43
|
+
const server = new FlowMcpServer();
|
|
44
|
+
// Handle graceful shutdown
|
|
45
|
+
process.on('SIGINT', async () => {
|
|
46
|
+
await server.stop();
|
|
47
|
+
process.exit(0);
|
|
48
|
+
});
|
|
49
|
+
process.on('SIGTERM', async () => {
|
|
50
|
+
await server.stop();
|
|
51
|
+
process.exit(0);
|
|
52
|
+
});
|
|
53
|
+
try {
|
|
54
|
+
await server.init();
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
logger.error({
|
|
58
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
59
|
+
stack: error instanceof Error ? error.stack : undefined,
|
|
60
|
+
}, 'Failed to start Flow MCP Server');
|
|
61
|
+
// Exit code 1 will indicate failure to the parent process
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
startServer();
|
|
66
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod validation schemas for API responses
|
|
3
|
+
* These schemas match the server-side BasicIssueSchema and IssueSchema
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
export declare const Device: z.ZodEnum<["desktop", "mobile", "cross"]>;
|
|
7
|
+
export declare const ResolutionType: z.ZodEnum<["none", "resolved", "dismissed", "falsePositive"]>;
|
|
8
|
+
export declare const SeveritySchema: z.ZodEnum<["extreme", "high", "medium", "low"]>;
|
|
9
|
+
export declare const WCAGLevelSchema: z.ZodEnum<["A", "AA", "AAA"]>;
|
|
10
|
+
export declare const AltTextFeedbackSchema: z.ZodEnum<["positive", "negative"]>;
|
|
11
|
+
export declare const DismissedReason: z.ZodEnum<["duplicate", "falsePositive", "notApplicable", "willNotFix"]>;
|
|
12
|
+
export declare const DismissedReasonSchema: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
13
|
+
comment: z.ZodOptional<z.ZodString>;
|
|
14
|
+
type: z.ZodOptional<z.ZodEnum<["duplicate", "falsePositive", "notApplicable", "willNotFix"]>>;
|
|
15
|
+
}, "strip", z.ZodTypeAny, {
|
|
16
|
+
comment?: string | undefined;
|
|
17
|
+
type?: "falsePositive" | "duplicate" | "notApplicable" | "willNotFix" | undefined;
|
|
18
|
+
}, {
|
|
19
|
+
comment?: string | undefined;
|
|
20
|
+
type?: "falsePositive" | "duplicate" | "notApplicable" | "willNotFix" | undefined;
|
|
21
|
+
}>>>;
|
|
22
|
+
export declare const LastStatusChangeLogSchema: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
23
|
+
autoResolved: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
24
|
+
date: z.ZodOptional<z.ZodString>;
|
|
25
|
+
status: z.ZodOptional<z.ZodNullable<z.ZodEnum<["none", "resolved", "dismissed", "falsePositive"]>>>;
|
|
26
|
+
userId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
27
|
+
userName: z.ZodOptional<z.ZodString>;
|
|
28
|
+
}, "strip", z.ZodTypeAny, {
|
|
29
|
+
status?: "none" | "resolved" | "dismissed" | "falsePositive" | null | undefined;
|
|
30
|
+
autoResolved?: boolean | null | undefined;
|
|
31
|
+
date?: string | undefined;
|
|
32
|
+
userId?: string | null | undefined;
|
|
33
|
+
userName?: string | undefined;
|
|
34
|
+
}, {
|
|
35
|
+
status?: "none" | "resolved" | "dismissed" | "falsePositive" | null | undefined;
|
|
36
|
+
autoResolved?: boolean | null | undefined;
|
|
37
|
+
date?: string | undefined;
|
|
38
|
+
userId?: string | null | undefined;
|
|
39
|
+
userName?: string | undefined;
|
|
40
|
+
}>>>;
|
|
41
|
+
export declare const AltTextSuggestionSchema: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString, "many">>>;
|
|
42
|
+
export declare const FalsePositiveAiValidationSchema: z.ZodObject<{
|
|
43
|
+
feedback: z.ZodDefault<z.ZodNullable<z.ZodObject<{
|
|
44
|
+
helpful: z.ZodBoolean;
|
|
45
|
+
userId: z.ZodString;
|
|
46
|
+
userText: z.ZodString;
|
|
47
|
+
}, "strip", z.ZodTypeAny, {
|
|
48
|
+
userId: string;
|
|
49
|
+
helpful: boolean;
|
|
50
|
+
userText: string;
|
|
51
|
+
}, {
|
|
52
|
+
userId: string;
|
|
53
|
+
helpful: boolean;
|
|
54
|
+
userText: string;
|
|
55
|
+
}>>>;
|
|
56
|
+
type: z.ZodEnum<["falsePositive"]>;
|
|
57
|
+
isFalsePositive: z.ZodBoolean;
|
|
58
|
+
reasoning: z.ZodString;
|
|
59
|
+
}, "strip", z.ZodTypeAny, {
|
|
60
|
+
type: "falsePositive";
|
|
61
|
+
feedback: {
|
|
62
|
+
userId: string;
|
|
63
|
+
helpful: boolean;
|
|
64
|
+
userText: string;
|
|
65
|
+
} | null;
|
|
66
|
+
isFalsePositive: boolean;
|
|
67
|
+
reasoning: string;
|
|
68
|
+
}, {
|
|
69
|
+
type: "falsePositive";
|
|
70
|
+
isFalsePositive: boolean;
|
|
71
|
+
reasoning: string;
|
|
72
|
+
feedback?: {
|
|
73
|
+
userId: string;
|
|
74
|
+
helpful: boolean;
|
|
75
|
+
userText: string;
|
|
76
|
+
} | null | undefined;
|
|
77
|
+
}>;
|
|
78
|
+
export declare const BasicIssueSchema: z.ZodObject<{
|
|
79
|
+
displayName: z.ZodString;
|
|
80
|
+
severity: z.ZodEnum<["extreme", "high", "medium", "low"]>;
|
|
81
|
+
WCAGLevel: z.ZodEnum<["A", "AA", "AAA"]>;
|
|
82
|
+
siteOccurrences: z.ZodNumber;
|
|
83
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
84
|
+
displayName: z.ZodString;
|
|
85
|
+
severity: z.ZodEnum<["extreme", "high", "medium", "low"]>;
|
|
86
|
+
WCAGLevel: z.ZodEnum<["A", "AA", "AAA"]>;
|
|
87
|
+
siteOccurrences: z.ZodNumber;
|
|
88
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
89
|
+
displayName: z.ZodString;
|
|
90
|
+
severity: z.ZodEnum<["extreme", "high", "medium", "low"]>;
|
|
91
|
+
WCAGLevel: z.ZodEnum<["A", "AA", "AAA"]>;
|
|
92
|
+
siteOccurrences: z.ZodNumber;
|
|
93
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
94
|
+
export declare const DetailedIssueSchema: z.ZodObject<{
|
|
95
|
+
displayName: z.ZodString;
|
|
96
|
+
severity: z.ZodEnum<["extreme", "high", "medium", "low"]>;
|
|
97
|
+
WCAGLevel: z.ZodEnum<["A", "AA", "AAA"]>;
|
|
98
|
+
siteOccurrences: z.ZodNumber;
|
|
99
|
+
HTML: z.ZodString;
|
|
100
|
+
confidence: z.ZodNumber;
|
|
101
|
+
modified: z.ZodString;
|
|
102
|
+
occurrences: z.ZodNumber;
|
|
103
|
+
webpath: z.ZodOptional<z.ZodString>;
|
|
104
|
+
selector: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
105
|
+
relatedRuleId: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
|
|
106
|
+
$oid: z.ZodString;
|
|
107
|
+
}, "strip", z.ZodTypeAny, {
|
|
108
|
+
$oid: string;
|
|
109
|
+
}, {
|
|
110
|
+
$oid: string;
|
|
111
|
+
}>]>>;
|
|
112
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
113
|
+
displayName: z.ZodString;
|
|
114
|
+
severity: z.ZodEnum<["extreme", "high", "medium", "low"]>;
|
|
115
|
+
WCAGLevel: z.ZodEnum<["A", "AA", "AAA"]>;
|
|
116
|
+
siteOccurrences: z.ZodNumber;
|
|
117
|
+
HTML: z.ZodString;
|
|
118
|
+
confidence: z.ZodNumber;
|
|
119
|
+
modified: z.ZodString;
|
|
120
|
+
occurrences: z.ZodNumber;
|
|
121
|
+
webpath: z.ZodOptional<z.ZodString>;
|
|
122
|
+
selector: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
123
|
+
relatedRuleId: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
|
|
124
|
+
$oid: z.ZodString;
|
|
125
|
+
}, "strip", z.ZodTypeAny, {
|
|
126
|
+
$oid: string;
|
|
127
|
+
}, {
|
|
128
|
+
$oid: string;
|
|
129
|
+
}>]>>;
|
|
130
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
131
|
+
displayName: z.ZodString;
|
|
132
|
+
severity: z.ZodEnum<["extreme", "high", "medium", "low"]>;
|
|
133
|
+
WCAGLevel: z.ZodEnum<["A", "AA", "AAA"]>;
|
|
134
|
+
siteOccurrences: z.ZodNumber;
|
|
135
|
+
HTML: z.ZodString;
|
|
136
|
+
confidence: z.ZodNumber;
|
|
137
|
+
modified: z.ZodString;
|
|
138
|
+
occurrences: z.ZodNumber;
|
|
139
|
+
webpath: z.ZodOptional<z.ZodString>;
|
|
140
|
+
selector: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
141
|
+
relatedRuleId: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
|
|
142
|
+
$oid: z.ZodString;
|
|
143
|
+
}, "strip", z.ZodTypeAny, {
|
|
144
|
+
$oid: string;
|
|
145
|
+
}, {
|
|
146
|
+
$oid: string;
|
|
147
|
+
}>]>>;
|
|
148
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
149
|
+
export declare const UrgentIssuesResponseSchema: z.ZodObject<{
|
|
150
|
+
issues: z.ZodArray<z.ZodObject<{
|
|
151
|
+
displayName: z.ZodString;
|
|
152
|
+
severity: z.ZodEnum<["extreme", "high", "medium", "low"]>;
|
|
153
|
+
WCAGLevel: z.ZodEnum<["A", "AA", "AAA"]>;
|
|
154
|
+
siteOccurrences: z.ZodNumber;
|
|
155
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
156
|
+
displayName: z.ZodString;
|
|
157
|
+
severity: z.ZodEnum<["extreme", "high", "medium", "low"]>;
|
|
158
|
+
WCAGLevel: z.ZodEnum<["A", "AA", "AAA"]>;
|
|
159
|
+
siteOccurrences: z.ZodNumber;
|
|
160
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
161
|
+
displayName: z.ZodString;
|
|
162
|
+
severity: z.ZodEnum<["extreme", "high", "medium", "low"]>;
|
|
163
|
+
WCAGLevel: z.ZodEnum<["A", "AA", "AAA"]>;
|
|
164
|
+
siteOccurrences: z.ZodNumber;
|
|
165
|
+
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
166
|
+
}, "strip", z.ZodTypeAny, {
|
|
167
|
+
issues: z.objectOutputType<{
|
|
168
|
+
displayName: z.ZodString;
|
|
169
|
+
severity: z.ZodEnum<["extreme", "high", "medium", "low"]>;
|
|
170
|
+
WCAGLevel: z.ZodEnum<["A", "AA", "AAA"]>;
|
|
171
|
+
siteOccurrences: z.ZodNumber;
|
|
172
|
+
}, z.ZodTypeAny, "passthrough">[];
|
|
173
|
+
}, {
|
|
174
|
+
issues: z.objectInputType<{
|
|
175
|
+
displayName: z.ZodString;
|
|
176
|
+
severity: z.ZodEnum<["extreme", "high", "medium", "low"]>;
|
|
177
|
+
WCAGLevel: z.ZodEnum<["A", "AA", "AAA"]>;
|
|
178
|
+
siteOccurrences: z.ZodNumber;
|
|
179
|
+
}, z.ZodTypeAny, "passthrough">[];
|
|
180
|
+
}>;
|
|
181
|
+
export declare const ResolveIssueRequestSchema: z.ZodObject<{
|
|
182
|
+
displayName: z.ZodString;
|
|
183
|
+
}, "strip", z.ZodTypeAny, {
|
|
184
|
+
displayName: string;
|
|
185
|
+
}, {
|
|
186
|
+
displayName: string;
|
|
187
|
+
}>;
|
|
188
|
+
export declare const ResolveIssueResponseSchema: z.ZodObject<{
|
|
189
|
+
success: z.ZodLiteral<true>;
|
|
190
|
+
}, "strip", z.ZodTypeAny, {
|
|
191
|
+
success: true;
|
|
192
|
+
}, {
|
|
193
|
+
success: true;
|
|
194
|
+
}>;
|
|
195
|
+
export type Severity = z.infer<typeof SeveritySchema>;
|
|
196
|
+
export type WCAGLevel = z.infer<typeof WCAGLevelSchema>;
|
|
197
|
+
export type ApiIssue = z.infer<typeof BasicIssueSchema>;
|
|
198
|
+
export type ApiUrgentIssuesResponse = z.infer<typeof UrgentIssuesResponseSchema>;
|
|
199
|
+
export type ApiIssueRemediation = z.infer<typeof DetailedIssueSchema>;
|
|
200
|
+
//# sourceMappingURL=apiSchemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiSchemas.d.ts","sourceRoot":"","sources":["../../src/services/apiSchemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,MAAM,2CAAyC,CAAC;AAC7D,eAAO,MAAM,cAAc,+DAKzB,CAAC;AACH,eAAO,MAAM,cAAc,iDAA+C,CAAC;AAC3E,eAAO,MAAM,eAAe,+BAA6B,CAAC;AAC1D,eAAO,MAAM,qBAAqB,qCAAmC,CAAC;AACtE,eAAO,MAAM,eAAe,0EAK1B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;IAMrB,CAAC;AAEd,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;IASzB,CAAC;AAEd,eAAO,MAAM,uBAAuB,+DAGvB,CAAC;AAEd,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY1C,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;gCASb,CAAC;AAEjB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAoBhB,CAAC;AAEjB,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAErC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;EAEpC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;EAErC,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AACxD,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAC3C,OAAO,0BAA0B,CAClC,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod validation schemas for API responses
|
|
3
|
+
* These schemas match the server-side BasicIssueSchema and IssueSchema
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
export const Device = z.enum(['desktop', 'mobile', 'cross']);
|
|
7
|
+
export const ResolutionType = z.enum([
|
|
8
|
+
'none',
|
|
9
|
+
'resolved',
|
|
10
|
+
'dismissed',
|
|
11
|
+
'falsePositive',
|
|
12
|
+
]);
|
|
13
|
+
export const SeveritySchema = z.enum(['extreme', 'high', 'medium', 'low']);
|
|
14
|
+
export const WCAGLevelSchema = z.enum(['A', 'AA', 'AAA']);
|
|
15
|
+
export const AltTextFeedbackSchema = z.enum(['positive', 'negative']);
|
|
16
|
+
export const DismissedReason = z.enum([
|
|
17
|
+
'duplicate',
|
|
18
|
+
'falsePositive',
|
|
19
|
+
'notApplicable',
|
|
20
|
+
'willNotFix',
|
|
21
|
+
]);
|
|
22
|
+
export const DismissedReasonSchema = z
|
|
23
|
+
.object({
|
|
24
|
+
comment: z.string().optional(),
|
|
25
|
+
type: DismissedReason.optional(),
|
|
26
|
+
})
|
|
27
|
+
.nullable()
|
|
28
|
+
.optional();
|
|
29
|
+
export const LastStatusChangeLogSchema = z
|
|
30
|
+
.object({
|
|
31
|
+
autoResolved: z.boolean().nullable().optional(),
|
|
32
|
+
date: z.string().optional(),
|
|
33
|
+
status: ResolutionType.nullable().optional(),
|
|
34
|
+
userId: z.string().nullable().optional(),
|
|
35
|
+
userName: z.string().optional(),
|
|
36
|
+
})
|
|
37
|
+
.nullable()
|
|
38
|
+
.optional();
|
|
39
|
+
export const AltTextSuggestionSchema = z
|
|
40
|
+
.array(z.string())
|
|
41
|
+
.nullable()
|
|
42
|
+
.optional();
|
|
43
|
+
export const FalsePositiveAiValidationSchema = z.object({
|
|
44
|
+
feedback: z
|
|
45
|
+
.object({
|
|
46
|
+
helpful: z.boolean(),
|
|
47
|
+
userId: z.string(),
|
|
48
|
+
userText: z.string(),
|
|
49
|
+
})
|
|
50
|
+
.nullable()
|
|
51
|
+
.default(null),
|
|
52
|
+
type: z.enum(['falsePositive']),
|
|
53
|
+
isFalsePositive: z.boolean(),
|
|
54
|
+
reasoning: z.string(),
|
|
55
|
+
});
|
|
56
|
+
export const BasicIssueSchema = z
|
|
57
|
+
.object({
|
|
58
|
+
// REQUIRED: Critical fields for MCP (must not be null)
|
|
59
|
+
displayName: z.string(),
|
|
60
|
+
severity: SeveritySchema,
|
|
61
|
+
WCAGLevel: WCAGLevelSchema,
|
|
62
|
+
siteOccurrences: z.number(),
|
|
63
|
+
})
|
|
64
|
+
// allow extra fields from API
|
|
65
|
+
.passthrough();
|
|
66
|
+
export const DetailedIssueSchema = z
|
|
67
|
+
.object({
|
|
68
|
+
// REQUIRED: Critical fields for MCP (must not be null)
|
|
69
|
+
displayName: z.string(),
|
|
70
|
+
severity: SeveritySchema,
|
|
71
|
+
WCAGLevel: WCAGLevelSchema,
|
|
72
|
+
siteOccurrences: z.number(),
|
|
73
|
+
HTML: z.string(),
|
|
74
|
+
confidence: z.number(),
|
|
75
|
+
modified: z.string(),
|
|
76
|
+
occurrences: z.number(),
|
|
77
|
+
// OPTIONAL: Used but have fallbacks in code
|
|
78
|
+
webpath: z.string().optional(),
|
|
79
|
+
selector: z.string().nullable().optional(),
|
|
80
|
+
relatedRuleId: z
|
|
81
|
+
.union([z.string(), z.object({ $oid: z.string() })])
|
|
82
|
+
.optional(),
|
|
83
|
+
})
|
|
84
|
+
// allow extra fields from API
|
|
85
|
+
.passthrough();
|
|
86
|
+
export const UrgentIssuesResponseSchema = z.object({
|
|
87
|
+
issues: z.array(BasicIssueSchema),
|
|
88
|
+
});
|
|
89
|
+
export const ResolveIssueRequestSchema = z.object({
|
|
90
|
+
displayName: z.string(),
|
|
91
|
+
});
|
|
92
|
+
export const ResolveIssueResponseSchema = z.object({
|
|
93
|
+
success: z.literal(true),
|
|
94
|
+
});
|
|
95
|
+
//# sourceMappingURL=apiSchemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiSchemas.js","sourceRoot":"","sources":["../../src/services/apiSchemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type ApiIssue, type ApiIssueRemediation } from './apiSchemas.js';
|
|
2
|
+
export interface ApiRequestOptions {
|
|
3
|
+
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
4
|
+
headers?: Record<string, string>;
|
|
5
|
+
body?: unknown;
|
|
6
|
+
}
|
|
7
|
+
export declare class ApiError extends Error {
|
|
8
|
+
readonly statusCode: number;
|
|
9
|
+
readonly statusText: string;
|
|
10
|
+
constructor(message: string, statusCode: number, statusText: string);
|
|
11
|
+
}
|
|
12
|
+
export declare class ApiService {
|
|
13
|
+
private readonly baseUrl;
|
|
14
|
+
private readonly defaultHeaders;
|
|
15
|
+
readonly domain: string;
|
|
16
|
+
readonly apiKey: string;
|
|
17
|
+
constructor(environment: string, domain: string, apiKey: string, nonProdUserName?: string, nonProdPassword?: string);
|
|
18
|
+
/**
|
|
19
|
+
* Makes an HTTP request to the API
|
|
20
|
+
*/
|
|
21
|
+
request<T>(endpoint: string, options?: ApiRequestOptions): Promise<T>;
|
|
22
|
+
/**
|
|
23
|
+
* Makes a GET request that returns null for 404 errors instead of throwing
|
|
24
|
+
*/
|
|
25
|
+
getOrNull<T>(endpoint: string, headers?: Record<string, string>): Promise<T | null>;
|
|
26
|
+
get<T>(endpoint: string, headers?: Record<string, string>): Promise<T>;
|
|
27
|
+
post<T>(endpoint: string, body?: unknown, headers?: Record<string, string>): Promise<T>;
|
|
28
|
+
put<T>(endpoint: string, body?: unknown, headers?: Record<string, string>): Promise<T>;
|
|
29
|
+
getUrgentIssues(limit?: number): Promise<ApiIssue[]>;
|
|
30
|
+
getIssueRemediation(issueDisplayName: string): Promise<ApiIssueRemediation | null>;
|
|
31
|
+
resolveIssue(issueDisplayName: string): Promise<{
|
|
32
|
+
success: boolean;
|
|
33
|
+
message: string;
|
|
34
|
+
issueDisplayName: string;
|
|
35
|
+
}>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=apiService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiService.d.ts","sourceRoot":"","sources":["../../src/services/apiService.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,QAAQ,EACb,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,QAAS,SAAQ,KAAK;aAGf,UAAU,EAAE,MAAM;aAClB,UAAU,EAAE,MAAM;gBAFlC,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM;CAKrC;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;IACxD,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAG7B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,eAAe,CAAC,EAAE,MAAM,EACxB,eAAe,CAAC,EAAE,MAAM;IA2C1B;;OAEG;IACG,OAAO,CAAC,CAAC,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,CAAC,CAAC;IA4Fb;;OAEG;IACG,SAAS,CAAC,CAAC,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAoBd,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAQtE,IAAI,CAAC,CAAC,EACV,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC;IAWP,GAAG,CAAC,CAAC,EACT,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC;IAWP,eAAe,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAUxD,mBAAmB,CACvB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAchC,YAAY,CAChB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;CAiB5E"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { logger } from './loggerService.js';
|
|
2
|
+
import { UrgentIssuesResponseSchema, DetailedIssueSchema, ResolveIssueRequestSchema, ResolveIssueResponseSchema, } from './apiSchemas.js';
|
|
3
|
+
export class ApiError extends Error {
|
|
4
|
+
statusCode;
|
|
5
|
+
statusText;
|
|
6
|
+
constructor(message, statusCode, statusText) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.statusCode = statusCode;
|
|
9
|
+
this.statusText = statusText;
|
|
10
|
+
this.name = 'ApiError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class ApiService {
|
|
14
|
+
baseUrl;
|
|
15
|
+
defaultHeaders;
|
|
16
|
+
domain;
|
|
17
|
+
apiKey;
|
|
18
|
+
constructor(environment, domain, apiKey, nonProdUserName, nonProdPassword) {
|
|
19
|
+
this.domain = domain;
|
|
20
|
+
this.apiKey = apiKey;
|
|
21
|
+
// Ensure environment has protocol and ends properly
|
|
22
|
+
const sanitizedEnvironment = environment.startsWith('http')
|
|
23
|
+
? environment
|
|
24
|
+
: `https://${environment}`;
|
|
25
|
+
this.baseUrl = sanitizedEnvironment.replace(/\/$/, '');
|
|
26
|
+
// Check if this is a non-production environment
|
|
27
|
+
const isTestEnvironment = sanitizedEnvironment
|
|
28
|
+
.toLowerCase()
|
|
29
|
+
.match(/\.acsb-test\.com\/?$/);
|
|
30
|
+
const headers = {
|
|
31
|
+
'x-api-key': apiKey,
|
|
32
|
+
'x-accessflow-domain': domain,
|
|
33
|
+
'Content-Type': 'application/json',
|
|
34
|
+
};
|
|
35
|
+
// add Basic Authentication for non-production/test environments
|
|
36
|
+
if (isTestEnvironment) {
|
|
37
|
+
const user = nonProdUserName;
|
|
38
|
+
const pass = nonProdPassword;
|
|
39
|
+
if (user && pass) {
|
|
40
|
+
const basicAuth = Buffer.from(`${user}:${pass}`).toString('base64');
|
|
41
|
+
headers['Authorization'] = `Basic ${basicAuth}`;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
logger.error({
|
|
45
|
+
user: user ? '[PROVIDED]' : undefined,
|
|
46
|
+
pass: pass ? '[PROVIDED]' : undefined,
|
|
47
|
+
}, 'Basic Auth credentials missing for test environment');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
this.defaultHeaders = headers;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Makes an HTTP request to the API
|
|
54
|
+
*/
|
|
55
|
+
async request(endpoint, options = {}) {
|
|
56
|
+
const url = `${this.baseUrl}${endpoint.startsWith('/') ? endpoint : `/${endpoint}`}`;
|
|
57
|
+
const method = options.method || 'GET';
|
|
58
|
+
const headers = {
|
|
59
|
+
...this.defaultHeaders,
|
|
60
|
+
...options.headers,
|
|
61
|
+
};
|
|
62
|
+
const fetchOptions = {
|
|
63
|
+
method,
|
|
64
|
+
headers,
|
|
65
|
+
};
|
|
66
|
+
if (options.body && method !== 'GET') {
|
|
67
|
+
fetchOptions.body = JSON.stringify(options.body);
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
const response = await fetch(url, fetchOptions);
|
|
71
|
+
if (!response.ok) {
|
|
72
|
+
// Try to get error details from response body
|
|
73
|
+
let errorDetails = '';
|
|
74
|
+
try {
|
|
75
|
+
const errorBody = await response.text();
|
|
76
|
+
if (errorBody) {
|
|
77
|
+
try {
|
|
78
|
+
const parsed = JSON.parse(errorBody);
|
|
79
|
+
errorDetails = ` Response: ${JSON.stringify(parsed, null, 2)}`;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
errorDetails = ` Response body: ${errorBody.substring(0, 500)}`;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// Ignore errors reading response body
|
|
88
|
+
}
|
|
89
|
+
const apiError = new ApiError(`API request failed: ${response.status} ${response.statusText}. URL: ${url}${errorDetails}`, response.status, response.statusText);
|
|
90
|
+
logger.error({
|
|
91
|
+
url,
|
|
92
|
+
method,
|
|
93
|
+
statusCode: response.status,
|
|
94
|
+
statusText: response.statusText,
|
|
95
|
+
errorDetails,
|
|
96
|
+
}, 'API reuest failed');
|
|
97
|
+
throw apiError;
|
|
98
|
+
}
|
|
99
|
+
// Handle empty responses
|
|
100
|
+
const contentType = response.headers.get('content-type');
|
|
101
|
+
if (!contentType || !contentType.includes('application/json')) {
|
|
102
|
+
return {};
|
|
103
|
+
}
|
|
104
|
+
const result = (await response.json());
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
if (error instanceof ApiError) {
|
|
109
|
+
throw error;
|
|
110
|
+
}
|
|
111
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
112
|
+
logger.error({
|
|
113
|
+
url,
|
|
114
|
+
method,
|
|
115
|
+
error: errorMessage,
|
|
116
|
+
stack: error instanceof Error ? error.stack : undefined,
|
|
117
|
+
}, 'Network error in API request');
|
|
118
|
+
throw new ApiError(`Failed to fetch from API: ${errorMessage}`, 0, 'Network Error');
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Makes a GET request that returns null for 404 errors instead of throwing
|
|
123
|
+
*/
|
|
124
|
+
async getOrNull(endpoint, headers) {
|
|
125
|
+
try {
|
|
126
|
+
return await this.get(endpoint, headers);
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
if (error instanceof ApiError && error.statusCode === 404) {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
logger.error({
|
|
133
|
+
endpoint,
|
|
134
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
135
|
+
}, 'Error in getOrNull');
|
|
136
|
+
throw error;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
async get(endpoint, headers) {
|
|
140
|
+
const options = { method: 'GET' };
|
|
141
|
+
if (headers) {
|
|
142
|
+
options.headers = headers;
|
|
143
|
+
}
|
|
144
|
+
return this.request(endpoint, options);
|
|
145
|
+
}
|
|
146
|
+
async post(endpoint, body, headers) {
|
|
147
|
+
const options = { method: 'POST' };
|
|
148
|
+
if (body) {
|
|
149
|
+
options.body = body;
|
|
150
|
+
}
|
|
151
|
+
if (headers) {
|
|
152
|
+
options.headers = headers;
|
|
153
|
+
}
|
|
154
|
+
return this.request(endpoint, options);
|
|
155
|
+
}
|
|
156
|
+
async put(endpoint, body, headers) {
|
|
157
|
+
const options = { method: 'PUT' };
|
|
158
|
+
if (body) {
|
|
159
|
+
options.body = body;
|
|
160
|
+
}
|
|
161
|
+
if (headers) {
|
|
162
|
+
options.headers = headers;
|
|
163
|
+
}
|
|
164
|
+
return this.request(endpoint, options);
|
|
165
|
+
}
|
|
166
|
+
async getUrgentIssues(limit = 10) {
|
|
167
|
+
const response = await this.get(`/api/v6/mcp/urgent-issues?limit=${limit}`);
|
|
168
|
+
// Validate response with server schema
|
|
169
|
+
const parsedResponse = UrgentIssuesResponseSchema.parse(response);
|
|
170
|
+
return parsedResponse.issues;
|
|
171
|
+
}
|
|
172
|
+
async getIssueRemediation(issueDisplayName) {
|
|
173
|
+
try {
|
|
174
|
+
const response = await this.get(`/api/v6/mcp/${encodeURIComponent(issueDisplayName)}`);
|
|
175
|
+
return DetailedIssueSchema.parse(response);
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
if (error instanceof ApiError && error.statusCode === 404) {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
throw error;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
async resolveIssue(issueDisplayName) {
|
|
185
|
+
const requestBody = ResolveIssueRequestSchema.parse({
|
|
186
|
+
displayName: issueDisplayName,
|
|
187
|
+
});
|
|
188
|
+
const response = await this.put('/api/v6/mcp/resolve-issue', requestBody);
|
|
189
|
+
const parsedResponse = ResolveIssueResponseSchema.parse(response);
|
|
190
|
+
// Return consistent format with additional context
|
|
191
|
+
return {
|
|
192
|
+
success: parsedResponse.success,
|
|
193
|
+
message: 'Issue resolved successfully',
|
|
194
|
+
issueDisplayName: issueDisplayName,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=apiService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiService.js","sourceRoot":"","sources":["../../src/services/apiService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loggerService.d.ts","sourceRoot":"","sources":["../../src/services/loggerService.ts"],"names":[],"mappings":"AACA,OAAO,IAAmC,MAAM,MAAM,CAAC;AA8CvD,eAAO,MAAM,MAAM,aAAsB,CAAC"}
|