@neobiotechlabs/neobiotech-dev-agent 0.1.7 → 0.1.8
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/dist/index.js +32504 -44
- package/dist/index.js.map +1 -1
- package/dist/utils/sync-version.js +20 -18
- package/package.json +5 -4
- package/dist/__tests__/adf.test.d.ts +0 -1
- package/dist/__tests__/adf.test.js +0 -68
- package/dist/__tests__/adf.test.js.map +0 -1
- package/dist/__tests__/annex-ii-template.test.d.ts +0 -1
- package/dist/__tests__/annex-ii-template.test.js +0 -39
- package/dist/__tests__/annex-ii-template.test.js.map +0 -1
- package/dist/__tests__/doc-render.test.d.ts +0 -1
- package/dist/__tests__/doc-render.test.js +0 -93
- package/dist/__tests__/doc-render.test.js.map +0 -1
- package/dist/__tests__/help.test.d.ts +0 -1
- package/dist/__tests__/help.test.js +0 -31
- package/dist/__tests__/help.test.js.map +0 -1
- package/dist/__tests__/jira-fields.test.d.ts +0 -1
- package/dist/__tests__/jira-fields.test.js +0 -81
- package/dist/__tests__/jira-fields.test.js.map +0 -1
- package/dist/__tests__/plugin-manifest.test.d.ts +0 -1
- package/dist/__tests__/plugin-manifest.test.js +0 -91
- package/dist/__tests__/plugin-manifest.test.js.map +0 -1
- package/dist/__tests__/setup.test.d.ts +0 -1
- package/dist/__tests__/setup.test.js +0 -7
- package/dist/__tests__/setup.test.js.map +0 -1
- package/dist/__tests__/sync-version.test.d.ts +0 -1
- package/dist/__tests__/sync-version.test.js +0 -37
- package/dist/__tests__/sync-version.test.js.map +0 -1
- package/dist/clients/risk-client.d.ts +0 -17
- package/dist/clients/risk-client.js +0 -54
- package/dist/clients/risk-client.js.map +0 -1
- package/dist/clients/xray-client.d.ts +0 -34
- package/dist/clients/xray-client.js +0 -127
- package/dist/clients/xray-client.js.map +0 -1
- package/dist/config/project-config.d.ts +0 -14
- package/dist/config/project-config.js +0 -45
- package/dist/config/project-config.js.map +0 -1
- package/dist/confluence-client.d.ts +0 -16
- package/dist/confluence-client.js +0 -97
- package/dist/confluence-client.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/jira-client.d.ts +0 -35
- package/dist/jira-client.js +0 -119
- package/dist/jira-client.js.map +0 -1
- package/dist/tools/annex-ii-template.d.ts +0 -30
- package/dist/tools/annex-ii-template.js +0 -129
- package/dist/tools/annex-ii-template.js.map +0 -1
- package/dist/tools/confluence.d.ts +0 -2
- package/dist/tools/confluence.js +0 -54
- package/dist/tools/confluence.js.map +0 -1
- package/dist/tools/cvss.d.ts +0 -2
- package/dist/tools/cvss.js +0 -59
- package/dist/tools/cvss.js.map +0 -1
- package/dist/tools/doc-render.d.ts +0 -2
- package/dist/tools/doc-render.js +0 -96
- package/dist/tools/doc-render.js.map +0 -1
- package/dist/tools/doc-validation.d.ts +0 -2
- package/dist/tools/doc-validation.js +0 -221
- package/dist/tools/doc-validation.js.map +0 -1
- package/dist/tools/help-data.d.ts +0 -7
- package/dist/tools/help-data.js +0 -144
- package/dist/tools/help-data.js.map +0 -1
- package/dist/tools/help.d.ts +0 -2
- package/dist/tools/help.js +0 -39
- package/dist/tools/help.js.map +0 -1
- package/dist/tools/iec.d.ts +0 -2
- package/dist/tools/iec.js +0 -203
- package/dist/tools/iec.js.map +0 -1
- package/dist/tools/init.d.ts +0 -2
- package/dist/tools/init.js +0 -38
- package/dist/tools/init.js.map +0 -1
- package/dist/tools/jira-crud.d.ts +0 -2
- package/dist/tools/jira-crud.js +0 -142
- package/dist/tools/jira-crud.js.map +0 -1
- package/dist/tools/risk.d.ts +0 -2
- package/dist/tools/risk.js +0 -172
- package/dist/tools/risk.js.map +0 -1
- package/dist/tools/traceability.d.ts +0 -2
- package/dist/tools/traceability.js +0 -85
- package/dist/tools/traceability.js.map +0 -1
- package/dist/tools/types.d.ts +0 -13
- package/dist/tools/types.js +0 -2
- package/dist/tools/types.js.map +0 -1
- package/dist/tools/usability.d.ts +0 -2
- package/dist/tools/usability.js +0 -149
- package/dist/tools/usability.js.map +0 -1
- package/dist/tools/xray.d.ts +0 -2
- package/dist/tools/xray.js +0 -35
- package/dist/tools/xray.js.map +0 -1
- package/dist/utils/adf.d.ts +0 -27
- package/dist/utils/adf.js +0 -104
- package/dist/utils/adf.js.map +0 -1
- package/dist/utils/cvss.d.ts +0 -15
- package/dist/utils/cvss.js +0 -86
- package/dist/utils/cvss.js.map +0 -1
- package/dist/utils/doc-render.d.ts +0 -28
- package/dist/utils/doc-render.js +0 -50
- package/dist/utils/doc-render.js.map +0 -1
- package/dist/utils/jira-fields.d.ts +0 -38
- package/dist/utils/jira-fields.js +0 -53
- package/dist/utils/jira-fields.js.map +0 -1
- package/dist/utils/sync-version.d.ts +0 -2
- package/dist/utils/sync-version.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sync-version.test.js","sourceRoot":"","sources":["../../src/__tests__/sync-version.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export declare class RiskClient {
|
|
2
|
-
private baseUrl;
|
|
3
|
-
private authHeader;
|
|
4
|
-
private riskAuthToken;
|
|
5
|
-
constructor(url: string, email: string, token: string, riskAuthToken: string);
|
|
6
|
-
activateRiskPanel(issueKey: string): Promise<boolean>;
|
|
7
|
-
setRiskValue(issueKey: string, riskConfig: {
|
|
8
|
-
endpoint: string;
|
|
9
|
-
author: string;
|
|
10
|
-
riskModelKey: string;
|
|
11
|
-
riskSetId: string;
|
|
12
|
-
classifiers: Record<string, {
|
|
13
|
-
id: string;
|
|
14
|
-
options: Record<string, string>;
|
|
15
|
-
}>;
|
|
16
|
-
}, classifierName: string, optionName: string): Promise<boolean>;
|
|
17
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import fetch from 'node-fetch';
|
|
2
|
-
export class RiskClient {
|
|
3
|
-
baseUrl;
|
|
4
|
-
authHeader;
|
|
5
|
-
riskAuthToken;
|
|
6
|
-
constructor(url, email, token, riskAuthToken) {
|
|
7
|
-
this.baseUrl = url.replace(/\/$/, '');
|
|
8
|
-
this.authHeader = `Basic ${Buffer.from(`${email}:${token}`).toString('base64')}`;
|
|
9
|
-
this.riskAuthToken = riskAuthToken;
|
|
10
|
-
}
|
|
11
|
-
async activateRiskPanel(issueKey) {
|
|
12
|
-
const appId = '306e01a8-5530-427d-b93a-f91f4898ff16';
|
|
13
|
-
const configId = '2a1d023a-d4a5-42c7-91e2-51a05b9eb9be';
|
|
14
|
-
const propertyKey = `ari:cloud:ecosystem::extension/${appId}/${configId}/static/rmp-risk-value-issue-panel`;
|
|
15
|
-
const resp = await fetch(`${this.baseUrl}/rest/api/2/issue/${issueKey}/properties/${propertyKey}`, {
|
|
16
|
-
method: 'PUT',
|
|
17
|
-
headers: {
|
|
18
|
-
'Accept': 'application/json',
|
|
19
|
-
'Content-Type': 'application/json',
|
|
20
|
-
'Authorization': this.authHeader,
|
|
21
|
-
},
|
|
22
|
-
body: JSON.stringify([{ added: Date.now(), id: '44c53f7b', collapsed: false }]),
|
|
23
|
-
});
|
|
24
|
-
return resp.ok;
|
|
25
|
-
}
|
|
26
|
-
async setRiskValue(issueKey, riskConfig, classifierName, optionName) {
|
|
27
|
-
const classifier = riskConfig.classifiers[classifierName];
|
|
28
|
-
if (!classifier)
|
|
29
|
-
throw new Error(`Unknown classifier: ${classifierName}`);
|
|
30
|
-
const optionId = classifier.options[optionName];
|
|
31
|
-
if (!optionId)
|
|
32
|
-
throw new Error(`Unknown option: ${optionName} for ${classifierName}`);
|
|
33
|
-
const payload = {
|
|
34
|
-
issueKey,
|
|
35
|
-
author: riskConfig.author,
|
|
36
|
-
riskModelKey: riskConfig.riskModelKey,
|
|
37
|
-
riskSetId: riskConfig.riskSetId,
|
|
38
|
-
classifierValuePayload: {
|
|
39
|
-
classifierId: classifier.id,
|
|
40
|
-
optionId,
|
|
41
|
-
},
|
|
42
|
-
};
|
|
43
|
-
const resp = await fetch(riskConfig.endpoint, {
|
|
44
|
-
method: 'POST',
|
|
45
|
-
headers: {
|
|
46
|
-
'x-trigger-authentication': this.riskAuthToken,
|
|
47
|
-
'Content-Type': 'application/json',
|
|
48
|
-
},
|
|
49
|
-
body: JSON.stringify(payload),
|
|
50
|
-
});
|
|
51
|
-
return resp.ok;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=risk-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"risk-client.js","sourceRoot":"","sources":["../../src/clients/risk-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MAAM,OAAO,UAAU;IACb,OAAO,CAAS;IAChB,UAAU,CAAS;IACnB,aAAa,CAAS;IAE9B,YAAY,GAAW,EAAE,KAAa,EAAE,KAAa,EAAE,aAAqB;QAC1E,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjF,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,QAAgB;QACtC,MAAM,KAAK,GAAG,sCAAsC,CAAC;QACrD,MAAM,QAAQ,GAAG,sCAAsC,CAAC;QACxD,MAAM,WAAW,GAAG,kCAAkC,KAAK,IAAI,QAAQ,oCAAoC,CAAC;QAE5G,MAAM,IAAI,GAAG,MAAM,KAAK,CACtB,GAAG,IAAI,CAAC,OAAO,qBAAqB,QAAQ,eAAe,WAAW,EAAE,EACxE;YACE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,QAAQ,EAAE,kBAAkB;gBAC5B,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,IAAI,CAAC,UAAU;aACjC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;SAChF,CACF,CAAC;QACF,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,QAAgB,EAChB,UAMC,EACD,cAAsB,EACtB,UAAkB;QAElB,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,cAAc,EAAE,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,UAAU,QAAQ,cAAc,EAAE,CAAC,CAAC;QAEtF,MAAM,OAAO,GAAG;YACd,QAAQ;YACR,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,sBAAsB,EAAE;gBACtB,YAAY,EAAE,UAAU,CAAC,EAAE;gBAC3B,QAAQ;aACT;SACF,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,0BAA0B,EAAE,IAAI,CAAC,aAAa;gBAC9C,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;CACF"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
interface XrayTestResult {
|
|
2
|
-
key: string;
|
|
3
|
-
summary: string;
|
|
4
|
-
status: string;
|
|
5
|
-
issue_id: string;
|
|
6
|
-
}
|
|
7
|
-
export declare class XrayClient {
|
|
8
|
-
private authUrl;
|
|
9
|
-
private apiBase;
|
|
10
|
-
private graphqlUrl;
|
|
11
|
-
private clientId;
|
|
12
|
-
private clientSecret;
|
|
13
|
-
private jiraAuthHeader;
|
|
14
|
-
private jiraBaseUrl;
|
|
15
|
-
private cachedToken;
|
|
16
|
-
private tokenExpiry;
|
|
17
|
-
constructor(clientId: string, clientSecret: string, jiraUrl: string, jiraEmail: string, jiraToken: string);
|
|
18
|
-
private getToken;
|
|
19
|
-
private xrayHeaders;
|
|
20
|
-
getTestKeys(testExecutionKey: string): Promise<{
|
|
21
|
-
test_execution: string;
|
|
22
|
-
total: number;
|
|
23
|
-
tests: XrayTestResult[];
|
|
24
|
-
}>;
|
|
25
|
-
exportCucumber(keys: string, outputDir: string): Promise<{
|
|
26
|
-
zip_path: string;
|
|
27
|
-
feature_dir: string;
|
|
28
|
-
files: string[];
|
|
29
|
-
count: number;
|
|
30
|
-
}>;
|
|
31
|
-
importResults(results: Record<string, unknown>): Promise<any>;
|
|
32
|
-
createTest(projectKey: string, summary: string, gherkin?: string, labels?: string[]): Promise<any>;
|
|
33
|
-
}
|
|
34
|
-
export {};
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import fetch from 'node-fetch';
|
|
2
|
-
import AdmZip from 'adm-zip';
|
|
3
|
-
import { writeFileSync, mkdirSync, readdirSync } from 'fs';
|
|
4
|
-
import { join } from 'path';
|
|
5
|
-
export class XrayClient {
|
|
6
|
-
authUrl = 'https://xray.cloud.getxray.app/api/v2/authenticate';
|
|
7
|
-
apiBase = 'https://xray.cloud.getxray.app/api/v2';
|
|
8
|
-
graphqlUrl = 'https://xray.cloud.getxray.app/api/v2/graphql';
|
|
9
|
-
clientId;
|
|
10
|
-
clientSecret;
|
|
11
|
-
jiraAuthHeader;
|
|
12
|
-
jiraBaseUrl;
|
|
13
|
-
cachedToken = null;
|
|
14
|
-
tokenExpiry = 0;
|
|
15
|
-
constructor(clientId, clientSecret, jiraUrl, jiraEmail, jiraToken) {
|
|
16
|
-
this.clientId = clientId;
|
|
17
|
-
this.clientSecret = clientSecret;
|
|
18
|
-
this.jiraBaseUrl = jiraUrl;
|
|
19
|
-
this.jiraAuthHeader = `Basic ${Buffer.from(`${jiraEmail}:${jiraToken}`).toString('base64')}`;
|
|
20
|
-
}
|
|
21
|
-
async getToken() {
|
|
22
|
-
if (this.cachedToken && Date.now() < this.tokenExpiry)
|
|
23
|
-
return this.cachedToken;
|
|
24
|
-
const resp = await fetch(this.authUrl, {
|
|
25
|
-
method: 'POST',
|
|
26
|
-
headers: { 'Content-Type': 'application/json' },
|
|
27
|
-
body: JSON.stringify({ client_id: this.clientId, client_secret: this.clientSecret }),
|
|
28
|
-
});
|
|
29
|
-
if (!resp.ok)
|
|
30
|
-
throw new Error(`Xray auth failed: ${resp.status} ${await resp.text()}`);
|
|
31
|
-
const raw = await resp.text();
|
|
32
|
-
this.cachedToken = raw.replace(/"/g, '');
|
|
33
|
-
this.tokenExpiry = Date.now() + 55 * 60 * 1000;
|
|
34
|
-
return this.cachedToken;
|
|
35
|
-
}
|
|
36
|
-
async xrayHeaders() {
|
|
37
|
-
return { 'Content-Type': 'application/json', 'Authorization': `Bearer ${await this.getToken()}` };
|
|
38
|
-
}
|
|
39
|
-
async getTestKeys(testExecutionKey) {
|
|
40
|
-
const jiraResp = await fetch(`${this.jiraBaseUrl}/rest/api/3/issue/${testExecutionKey}?fields=summary`, { headers: { Accept: 'application/json', Authorization: this.jiraAuthHeader } });
|
|
41
|
-
if (!jiraResp.ok)
|
|
42
|
-
throw new Error(`Jira fetch failed: ${jiraResp.status}`);
|
|
43
|
-
const jiraData = await jiraResp.json();
|
|
44
|
-
const issueId = jiraData.id;
|
|
45
|
-
const query = `query($issueId: String!) {
|
|
46
|
-
getTestExecution(issueId: $issueId) {
|
|
47
|
-
issueId
|
|
48
|
-
tests(limit: 100) {
|
|
49
|
-
total
|
|
50
|
-
results {
|
|
51
|
-
issueId
|
|
52
|
-
status { name color }
|
|
53
|
-
jira(fields: ["key", "summary"])
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}`;
|
|
58
|
-
const resp = await fetch(this.graphqlUrl, {
|
|
59
|
-
method: 'POST',
|
|
60
|
-
headers: await this.xrayHeaders(),
|
|
61
|
-
body: JSON.stringify({ query, variables: { issueId } }),
|
|
62
|
-
});
|
|
63
|
-
if (!resp.ok)
|
|
64
|
-
throw new Error(`Xray GraphQL failed: ${resp.status} ${await resp.text()}`);
|
|
65
|
-
const data = await resp.json();
|
|
66
|
-
const tests = data?.data?.getTestExecution?.tests?.results || [];
|
|
67
|
-
return {
|
|
68
|
-
test_execution: testExecutionKey,
|
|
69
|
-
total: data?.data?.getTestExecution?.tests?.total || 0,
|
|
70
|
-
tests: tests.map((t) => ({
|
|
71
|
-
key: t.jira?.key || '',
|
|
72
|
-
summary: t.jira?.summary || '',
|
|
73
|
-
status: t.status?.name || '',
|
|
74
|
-
issue_id: t.issueId || '',
|
|
75
|
-
})),
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
async exportCucumber(keys, outputDir) {
|
|
79
|
-
const resp = await fetch(`${this.apiBase}/export/cucumber?keys=${keys}`, {
|
|
80
|
-
headers: await this.xrayHeaders(),
|
|
81
|
-
});
|
|
82
|
-
if (!resp.ok)
|
|
83
|
-
throw new Error(`Cucumber export failed: ${resp.status} ${await resp.text()}`);
|
|
84
|
-
const buffer = Buffer.from(await resp.arrayBuffer());
|
|
85
|
-
mkdirSync(outputDir, { recursive: true });
|
|
86
|
-
const zipPath = join(outputDir, 'xray-features.zip');
|
|
87
|
-
writeFileSync(zipPath, buffer);
|
|
88
|
-
const zip = new AdmZip(zipPath);
|
|
89
|
-
zip.extractAllTo(outputDir, true);
|
|
90
|
-
const files = readdirSync(outputDir).filter(f => f.endsWith('.feature'));
|
|
91
|
-
return { zip_path: zipPath, feature_dir: outputDir, files, count: files.length };
|
|
92
|
-
}
|
|
93
|
-
async importResults(results) {
|
|
94
|
-
const resp = await fetch(`${this.apiBase}/import/execution`, {
|
|
95
|
-
method: 'POST',
|
|
96
|
-
headers: await this.xrayHeaders(),
|
|
97
|
-
body: JSON.stringify(results),
|
|
98
|
-
});
|
|
99
|
-
if (!resp.ok)
|
|
100
|
-
throw new Error(`Xray import failed: ${resp.status} ${await resp.text()}`);
|
|
101
|
-
return resp.json();
|
|
102
|
-
}
|
|
103
|
-
async createTest(projectKey, summary, gherkin, labels) {
|
|
104
|
-
const projResp = await fetch(`${this.jiraBaseUrl}/rest/api/3/project/${projectKey}`, {
|
|
105
|
-
headers: { Accept: 'application/json', Authorization: this.jiraAuthHeader },
|
|
106
|
-
});
|
|
107
|
-
if (!projResp.ok)
|
|
108
|
-
throw new Error(`Project fetch failed: ${projResp.status}`);
|
|
109
|
-
const projData = await projResp.json();
|
|
110
|
-
const projectId = projData.id;
|
|
111
|
-
const query = `mutation($issueType: String!, $projectId: String!, $summary: String!, $gherkin: String, $labels: [String]) {
|
|
112
|
-
createTest(issueType: $issueType, projectId: $projectId, summary: $summary, gherkin: $gherkin, labels: $labels) {
|
|
113
|
-
id
|
|
114
|
-
key
|
|
115
|
-
}
|
|
116
|
-
}`;
|
|
117
|
-
const resp = await fetch(this.graphqlUrl, {
|
|
118
|
-
method: 'POST',
|
|
119
|
-
headers: await this.xrayHeaders(),
|
|
120
|
-
body: JSON.stringify({ query, variables: { issueType: 'Test', projectId, summary, gherkin: gherkin || undefined, labels: labels || undefined } }),
|
|
121
|
-
});
|
|
122
|
-
if (!resp.ok)
|
|
123
|
-
throw new Error(`Xray createTest failed: ${resp.status} ${await resp.text()}`);
|
|
124
|
-
return resp.json();
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
//# sourceMappingURL=xray-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xray-client.js","sourceRoot":"","sources":["../../src/clients/xray-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export interface RiskManagementConfig {
|
|
2
|
-
endpoint: string;
|
|
3
|
-
author: string;
|
|
4
|
-
risk_model_key: string;
|
|
5
|
-
risk_sets: {
|
|
6
|
-
initial: string;
|
|
7
|
-
current: string;
|
|
8
|
-
};
|
|
9
|
-
classifiers: Record<string, {
|
|
10
|
-
id: string;
|
|
11
|
-
options: Record<string, string>;
|
|
12
|
-
}>;
|
|
13
|
-
}
|
|
14
|
-
export declare function getRiskConfig(_projectKey: string): RiskManagementConfig;
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
const RISK_DEFAULTS = {
|
|
2
|
-
endpoint: 'https://306e01a8-5530-427d-b93a-f91f4898ff16.hello.atlassian-dev.net/x1/p3_h8rdLbpp1-9mjDOXQiqJ4jL4',
|
|
3
|
-
author: '712020:baa962da-2822-4cc7-9659-2d780f703b3e',
|
|
4
|
-
risk_model_key: 'risk-model-9dc1c741-0858-4a96-65d6-5feaf052da71',
|
|
5
|
-
risk_sets: {
|
|
6
|
-
initial: '2f43f135-d043-84bd-4222-46ba4a309738',
|
|
7
|
-
current: 'f957cae9-a34c-30d7-557b-f7f29a414ba5',
|
|
8
|
-
},
|
|
9
|
-
classifiers: {
|
|
10
|
-
severity: {
|
|
11
|
-
id: '120dbe93-8a5c-89d9-398c-6fdefc8fa072',
|
|
12
|
-
options: {
|
|
13
|
-
negligible: '0750b204-3be7-14b2-34c9-5100846e99db',
|
|
14
|
-
minor: '70ccea9f-a585-d248-dbd0-e6eefcc683e8',
|
|
15
|
-
serious: 'a8b765c0-2e55-f6c4-25ff-1a4513c1cfd7',
|
|
16
|
-
critical: '587d166e-890a-5123-e179-15bafbd617e1',
|
|
17
|
-
catastrophic: '981fbfd5-604d-f9b9-6765-3405a165f401',
|
|
18
|
-
},
|
|
19
|
-
},
|
|
20
|
-
p1: {
|
|
21
|
-
id: 'c2c0af5d-74de-e463-ad13-ba80da1b6afd',
|
|
22
|
-
options: {
|
|
23
|
-
improvable: '3ac4a3b1-55ef-de93-3452-61c572a905a3',
|
|
24
|
-
remote: '2d173a68-c28f-d589-1300-bc127f962810',
|
|
25
|
-
occasional: '039596ac-784e-f0ac-50cf-d4d2cc96b096',
|
|
26
|
-
probable: '702cb81f-3bc6-d150-5cc3-daa04d3f0404',
|
|
27
|
-
frequent: '09fb301a-4448-d8aa-afd2-76d371f501f3',
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
p2: {
|
|
31
|
-
id: 'cdada7bb-cb4a-3b00-260b-5e5227e85a74',
|
|
32
|
-
options: {
|
|
33
|
-
improvable: '7e044b34-25c4-ffae-5237-48eebb190358',
|
|
34
|
-
remote: '58257cb8-59e2-5ec7-dd1d-9e966fb13589',
|
|
35
|
-
occasional: '6cf5ebce-3b07-69b1-b093-9e0ef9def95c',
|
|
36
|
-
probable: 'bbcbfdd1-0c02-6105-e8e4-f60ae6cacb5c',
|
|
37
|
-
frequent: 'e35de539-93d5-f854-c6ed-50067ad8599b',
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
},
|
|
41
|
-
};
|
|
42
|
-
export function getRiskConfig(_projectKey) {
|
|
43
|
-
return RISK_DEFAULTS;
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=project-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project-config.js","sourceRoot":"","sources":["../../src/config/project-config.ts"],"names":[],"mappings":"AAQA,MAAM,aAAa,GAAyB;IAC1C,QAAQ,EAAE,qGAAqG;IAC/G,MAAM,EAAE,6CAA6C;IACrD,cAAc,EAAE,iDAAiD;IACjE,SAAS,EAAE;QACT,OAAO,EAAE,sCAAsC;QAC/C,OAAO,EAAE,sCAAsC;KAChD;IACD,WAAW,EAAE;QACX,QAAQ,EAAE;YACR,EAAE,EAAE,sCAAsC;YAC1C,OAAO,EAAE;gBACP,UAAU,EAAE,sCAAsC;gBAClD,KAAK,EAAE,sCAAsC;gBAC7C,OAAO,EAAE,sCAAsC;gBAC/C,QAAQ,EAAE,sCAAsC;gBAChD,YAAY,EAAE,sCAAsC;aACrD;SACF;QACD,EAAE,EAAE;YACF,EAAE,EAAE,sCAAsC;YAC1C,OAAO,EAAE;gBACP,UAAU,EAAE,sCAAsC;gBAClD,MAAM,EAAE,sCAAsC;gBAC9C,UAAU,EAAE,sCAAsC;gBAClD,QAAQ,EAAE,sCAAsC;gBAChD,QAAQ,EAAE,sCAAsC;aACjD;SACF;QACD,EAAE,EAAE;YACF,EAAE,EAAE,sCAAsC;YAC1C,OAAO,EAAE;gBACP,UAAU,EAAE,sCAAsC;gBAClD,MAAM,EAAE,sCAAsC;gBAC9C,UAAU,EAAE,sCAAsC;gBAClD,QAAQ,EAAE,sCAAsC;gBAChD,QAAQ,EAAE,sCAAsC;aACjD;SACF;KACF;CACF,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export declare class ConfluenceClient {
|
|
2
|
-
private baseUrl;
|
|
3
|
-
private auth;
|
|
4
|
-
constructor(url: string, email: string, token: string);
|
|
5
|
-
private headers;
|
|
6
|
-
private authHeader;
|
|
7
|
-
getPage(pageId: string, expand?: string[]): Promise<unknown>;
|
|
8
|
-
search(cql: string, limit?: number): Promise<unknown>;
|
|
9
|
-
createPage(spaceKey: string, title: string, body: string, parentId?: string): Promise<unknown>;
|
|
10
|
-
updatePage(pageId: string, title: string, body: string, version: number): Promise<unknown>;
|
|
11
|
-
deletePage(pageId: string): Promise<{
|
|
12
|
-
success: boolean;
|
|
13
|
-
}>;
|
|
14
|
-
getSpaces(): Promise<unknown>;
|
|
15
|
-
getPageChildren(pageId: string, limit?: number): Promise<unknown>;
|
|
16
|
-
}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import fetch from 'node-fetch';
|
|
2
|
-
export class ConfluenceClient {
|
|
3
|
-
baseUrl;
|
|
4
|
-
auth;
|
|
5
|
-
constructor(url, email, token) {
|
|
6
|
-
this.baseUrl = url.replace(/\/$/, '');
|
|
7
|
-
this.auth = { username: email, password: token };
|
|
8
|
-
}
|
|
9
|
-
headers() {
|
|
10
|
-
return {
|
|
11
|
-
'Accept': 'application/json',
|
|
12
|
-
'Content-Type': 'application/json',
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
authHeader() {
|
|
16
|
-
return `Basic ${Buffer.from(`${this.auth.username}:${this.auth.password}`).toString('base64')}`;
|
|
17
|
-
}
|
|
18
|
-
async getPage(pageId, expand) {
|
|
19
|
-
const params = expand?.length ? `?expand=${expand.join(',')}` : '';
|
|
20
|
-
const resp = await fetch(`${this.baseUrl}/wiki/rest/api/content/${pageId}${params}`, { headers: { ...this.headers(), Authorization: this.authHeader() } });
|
|
21
|
-
if (!resp.ok)
|
|
22
|
-
throw new Error(`Confluence get ${resp.status}: ${await resp.text()}`);
|
|
23
|
-
return resp.json();
|
|
24
|
-
}
|
|
25
|
-
async search(cql, limit = 25) {
|
|
26
|
-
const resp = await fetch(`${this.baseUrl}/wiki/rest/api/content/search?cql=${encodeURIComponent(cql)}&limit=${limit}`, { headers: { ...this.headers(), Authorization: this.authHeader() } });
|
|
27
|
-
if (!resp.ok)
|
|
28
|
-
throw new Error(`Confluence search ${resp.status}: ${await resp.text()}`);
|
|
29
|
-
return resp.json();
|
|
30
|
-
}
|
|
31
|
-
async createPage(spaceKey, title, body, parentId) {
|
|
32
|
-
const payload = {
|
|
33
|
-
type: 'page',
|
|
34
|
-
title,
|
|
35
|
-
space: { key: spaceKey },
|
|
36
|
-
body: {
|
|
37
|
-
storage: {
|
|
38
|
-
value: body,
|
|
39
|
-
representation: 'storage',
|
|
40
|
-
},
|
|
41
|
-
},
|
|
42
|
-
};
|
|
43
|
-
if (parentId) {
|
|
44
|
-
payload.ancestors = [{ id: parentId }];
|
|
45
|
-
}
|
|
46
|
-
const resp = await fetch(`${this.baseUrl}/wiki/rest/api/content`, {
|
|
47
|
-
method: 'POST',
|
|
48
|
-
headers: { ...this.headers(), Authorization: this.authHeader() },
|
|
49
|
-
body: JSON.stringify(payload),
|
|
50
|
-
});
|
|
51
|
-
if (!resp.ok)
|
|
52
|
-
throw new Error(`Confluence create ${resp.status}: ${await resp.text()}`);
|
|
53
|
-
return resp.json();
|
|
54
|
-
}
|
|
55
|
-
async updatePage(pageId, title, body, version) {
|
|
56
|
-
const resp = await fetch(`${this.baseUrl}/wiki/rest/api/content/${pageId}`, {
|
|
57
|
-
method: 'PUT',
|
|
58
|
-
headers: { ...this.headers(), Authorization: this.authHeader() },
|
|
59
|
-
body: JSON.stringify({
|
|
60
|
-
type: 'page',
|
|
61
|
-
title,
|
|
62
|
-
version: { number: version + 1 },
|
|
63
|
-
body: {
|
|
64
|
-
storage: {
|
|
65
|
-
value: body,
|
|
66
|
-
representation: 'storage',
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
}),
|
|
70
|
-
});
|
|
71
|
-
if (!resp.ok)
|
|
72
|
-
throw new Error(`Confluence update ${resp.status}: ${await resp.text()}`);
|
|
73
|
-
return resp.json();
|
|
74
|
-
}
|
|
75
|
-
async deletePage(pageId) {
|
|
76
|
-
const resp = await fetch(`${this.baseUrl}/wiki/rest/api/content/${pageId}`, {
|
|
77
|
-
method: 'DELETE',
|
|
78
|
-
headers: { ...this.headers(), Authorization: this.authHeader() },
|
|
79
|
-
});
|
|
80
|
-
if (!resp.ok)
|
|
81
|
-
throw new Error(`Confluence delete ${resp.status}: ${await resp.text()}`);
|
|
82
|
-
return { success: true };
|
|
83
|
-
}
|
|
84
|
-
async getSpaces() {
|
|
85
|
-
const resp = await fetch(`${this.baseUrl}/wiki/rest/api/space?limit=100`, { headers: { ...this.headers(), Authorization: this.authHeader() } });
|
|
86
|
-
if (!resp.ok)
|
|
87
|
-
throw new Error(`Confluence spaces ${resp.status}: ${await resp.text()}`);
|
|
88
|
-
return resp.json();
|
|
89
|
-
}
|
|
90
|
-
async getPageChildren(pageId, limit = 25) {
|
|
91
|
-
const resp = await fetch(`${this.baseUrl}/wiki/rest/api/content/${pageId}/child/page?limit=${limit}`, { headers: { ...this.headers(), Authorization: this.authHeader() } });
|
|
92
|
-
if (!resp.ok)
|
|
93
|
-
throw new Error(`Confluence children ${resp.status}: ${await resp.text()}`);
|
|
94
|
-
return resp.json();
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
//# sourceMappingURL=confluence-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"confluence-client.js","sourceRoot":"","sources":["../src/confluence-client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
DELETED
package/dist/jira-client.d.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { textToAdf } from './utils/adf.js';
|
|
2
|
-
export declare class JiraClient {
|
|
3
|
-
private baseUrl;
|
|
4
|
-
private authHeader;
|
|
5
|
-
constructor(url: string, email: string, token: string);
|
|
6
|
-
private headers;
|
|
7
|
-
private request;
|
|
8
|
-
getIssue(key: string, fields?: string[]): Promise<any>;
|
|
9
|
-
search(jql: string, maxResults?: number, fields?: string[]): Promise<any>;
|
|
10
|
-
createIssue(fields: Record<string, unknown>): Promise<any>;
|
|
11
|
-
updateIssue(key: string, fields: Record<string, unknown>): Promise<any>;
|
|
12
|
-
addComment(key: string, body: string): Promise<any>;
|
|
13
|
-
createLink(linkType: string, inwardKey: string, outwardKey: string): Promise<any>;
|
|
14
|
-
deleteLink(linkId: string): Promise<any>;
|
|
15
|
-
getLinks(key: string): Promise<any>;
|
|
16
|
-
getTransitions(key: string): Promise<any>;
|
|
17
|
-
transition(key: string, transitionId: string): Promise<any>;
|
|
18
|
-
deleteIssue(key: string): Promise<any>;
|
|
19
|
-
getIssueTypeSchema(projectKey: string, issueTypeId?: string): Promise<{
|
|
20
|
-
issueTypes: {
|
|
21
|
-
id: any;
|
|
22
|
-
name: any;
|
|
23
|
-
fields: {
|
|
24
|
-
key: string;
|
|
25
|
-
name: any;
|
|
26
|
-
type: any;
|
|
27
|
-
custom: any;
|
|
28
|
-
inferredFormat: string;
|
|
29
|
-
required: any;
|
|
30
|
-
allowedValues: any;
|
|
31
|
-
}[];
|
|
32
|
-
}[];
|
|
33
|
-
}>;
|
|
34
|
-
}
|
|
35
|
-
export { textToAdf };
|
package/dist/jira-client.js
DELETED
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import fetch from 'node-fetch';
|
|
2
|
-
import { textToAdf } from './utils/adf.js';
|
|
3
|
-
import { inferFieldFormat } from './utils/jira-fields.js';
|
|
4
|
-
export class JiraClient {
|
|
5
|
-
baseUrl;
|
|
6
|
-
authHeader;
|
|
7
|
-
constructor(url, email, token) {
|
|
8
|
-
this.baseUrl = url.replace(/\/$/, '');
|
|
9
|
-
this.authHeader = `Basic ${Buffer.from(`${email}:${token}`).toString('base64')}`;
|
|
10
|
-
// node-fetch는 WHATWG 표준을 따라 301/302 리다이렉트 시 POST를 GET으로 변환한다.
|
|
11
|
-
// http URL에서 이슈 생성/수정(POST/PUT)이 조용히 실패하므로 https 사용을 권장.
|
|
12
|
-
if (/^http:\/\//i.test(this.baseUrl)) {
|
|
13
|
-
console.error(`[jira-mcp] WARNING: JIRA_URL이 http입니다 (${this.baseUrl}). 리다이렉트 시 POST가 GET으로 변환되어 이슈 생성/수정이 실패할 수 있습니다. https URL을 사용하세요.`);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
headers() {
|
|
17
|
-
return {
|
|
18
|
-
'Accept': 'application/json',
|
|
19
|
-
'Content-Type': 'application/json',
|
|
20
|
-
'Authorization': this.authHeader,
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
async request(path, options = {}) {
|
|
24
|
-
const resp = await fetch(`${this.baseUrl}/rest/api/3${path}`, {
|
|
25
|
-
method: options.method || 'GET',
|
|
26
|
-
headers: this.headers(),
|
|
27
|
-
body: options.body ? JSON.stringify(options.body) : undefined,
|
|
28
|
-
});
|
|
29
|
-
if (!resp.ok) {
|
|
30
|
-
const text = await resp.text();
|
|
31
|
-
if (resp.status === 204)
|
|
32
|
-
return null;
|
|
33
|
-
throw new Error(`Jira API ${resp.status}: ${text}`);
|
|
34
|
-
}
|
|
35
|
-
const text = await resp.text();
|
|
36
|
-
return text ? JSON.parse(text) : null;
|
|
37
|
-
}
|
|
38
|
-
async getIssue(key, fields) {
|
|
39
|
-
const params = fields ? `?fields=${fields.join(',')}` : '';
|
|
40
|
-
return this.request(`/issue/${key}${params}`);
|
|
41
|
-
}
|
|
42
|
-
async search(jql, maxResults = 50, fields) {
|
|
43
|
-
return this.request('/search/jql', {
|
|
44
|
-
method: 'POST',
|
|
45
|
-
body: { jql, maxResults, fields: fields || ['summary', 'status', 'issuetype', 'description', 'priority', 'labels'] },
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
async createIssue(fields) {
|
|
49
|
-
return this.request('/issue', { method: 'POST', body: { fields } });
|
|
50
|
-
}
|
|
51
|
-
async updateIssue(key, fields) {
|
|
52
|
-
return this.request(`/issue/${key}`, { method: 'PUT', body: { fields } });
|
|
53
|
-
}
|
|
54
|
-
async addComment(key, body) {
|
|
55
|
-
return this.request(`/issue/${key}/comment`, { method: 'POST', body: { body: textToAdf(body) } });
|
|
56
|
-
}
|
|
57
|
-
async createLink(linkType, inwardKey, outwardKey) {
|
|
58
|
-
return this.request('/issueLink', {
|
|
59
|
-
method: 'POST',
|
|
60
|
-
body: { type: { name: linkType }, inwardIssue: { key: inwardKey }, outwardIssue: { key: outwardKey } },
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
async deleteLink(linkId) {
|
|
64
|
-
return this.request(`/issueLink/${linkId}`, { method: 'DELETE' });
|
|
65
|
-
}
|
|
66
|
-
async getLinks(key) {
|
|
67
|
-
const data = await this.getIssue(key, ['issuelinks']);
|
|
68
|
-
return data.fields?.issuelinks || [];
|
|
69
|
-
}
|
|
70
|
-
async getTransitions(key) {
|
|
71
|
-
return this.request(`/issue/${key}/transitions`);
|
|
72
|
-
}
|
|
73
|
-
async transition(key, transitionId) {
|
|
74
|
-
return this.request(`/issue/${key}/transitions`, { method: 'POST', body: { transition: { id: transitionId } } });
|
|
75
|
-
}
|
|
76
|
-
async deleteIssue(key) {
|
|
77
|
-
return this.request(`/issue/${key}`, { method: 'DELETE' });
|
|
78
|
-
}
|
|
79
|
-
async getIssueTypeSchema(projectKey, issueTypeId) {
|
|
80
|
-
const [createmeta, fields] = await Promise.all([
|
|
81
|
-
this.request(`/issue/createmeta?projectKeys=${projectKey}${issueTypeId ? `&issuetypeIds=${issueTypeId}` : ''}&expand=projects.issuetypes.fields`),
|
|
82
|
-
this.request('/field'),
|
|
83
|
-
]);
|
|
84
|
-
const customFieldMap = new Map();
|
|
85
|
-
for (const f of fields) {
|
|
86
|
-
customFieldMap.set(f.id, { name: f.name, type: f.schema?.type || 'unknown', custom: f.schema?.custom });
|
|
87
|
-
}
|
|
88
|
-
const project = createmeta.projects?.[0];
|
|
89
|
-
if (!project)
|
|
90
|
-
return { issueTypes: [] };
|
|
91
|
-
return {
|
|
92
|
-
issueTypes: project.issuetypes.map(it => ({
|
|
93
|
-
id: it.id,
|
|
94
|
-
name: it.name,
|
|
95
|
-
fields: Object.entries(it.fields).map(([key, val]) => {
|
|
96
|
-
const meta = customFieldMap.get(key);
|
|
97
|
-
const type = val.schema?.type || meta?.type || 'unknown';
|
|
98
|
-
const custom = val.schema?.custom || meta?.custom;
|
|
99
|
-
const hasAllowedValues = !!(val.allowedValues?.length);
|
|
100
|
-
return {
|
|
101
|
-
key,
|
|
102
|
-
name: val.name || meta?.name || key,
|
|
103
|
-
type,
|
|
104
|
-
// createmeta의 type이 부정확할 수 있어(실제론 ADF인데 string으로 보고),
|
|
105
|
-
// /field의 schema.custom과 함께 inferredFormat 힌트를 제공한다.
|
|
106
|
-
custom,
|
|
107
|
-
inferredFormat: inferFieldFormat(type, custom, hasAllowedValues),
|
|
108
|
-
required: val.required || false,
|
|
109
|
-
allowedValues: val.allowedValues || undefined,
|
|
110
|
-
};
|
|
111
|
-
}),
|
|
112
|
-
})),
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
// 하위 호환: 기존에 jira-client.js에서 textToAdf를 import하던 코드(jira-crud, iec 등) 유지.
|
|
117
|
-
// 실제 구현은 utils/adf.ts에 있다 (순환 import 회피).
|
|
118
|
-
export { textToAdf };
|
|
119
|
-
//# sourceMappingURL=jira-client.js.map
|
package/dist/jira-client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jira-client.js","sourceRoot":"","sources":["../src/jira-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
export interface DocSection {
|
|
2
|
-
id: string;
|
|
3
|
-
title: string;
|
|
4
|
-
required: boolean;
|
|
5
|
-
description: string;
|
|
6
|
-
matchKeywords: string[];
|
|
7
|
-
expectedSubTypes?: string[];
|
|
8
|
-
requireApproval?: boolean;
|
|
9
|
-
}
|
|
10
|
-
export interface CompletenessResult {
|
|
11
|
-
section: DocSection;
|
|
12
|
-
status: 'found' | 'missing' | 'incomplete';
|
|
13
|
-
tickets: Array<{
|
|
14
|
-
key: string;
|
|
15
|
-
summary: string;
|
|
16
|
-
status: string;
|
|
17
|
-
issuetype: string;
|
|
18
|
-
}>;
|
|
19
|
-
issues: string[];
|
|
20
|
-
}
|
|
21
|
-
export declare const ANNEX_II_TEMPLATE: {
|
|
22
|
-
sections: DocSection[];
|
|
23
|
-
};
|
|
24
|
-
export declare function matchSection(summary: string): DocSection | undefined;
|
|
25
|
-
export declare function checkCompleteness(sections: DocSection[], tickets: Array<{
|
|
26
|
-
key: string;
|
|
27
|
-
summary: string;
|
|
28
|
-
status: string;
|
|
29
|
-
issuetype: string;
|
|
30
|
-
}>): CompletenessResult[];
|