@tienne/gestalt 0.122.0 → 0.124.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/dist/package.json +1 -1
- package/dist/plugin/.codex-plugin/plugin.json +1 -1
- package/dist/plugin/skills/_shared/pr-base.md +169 -0
- package/dist/plugin/skills/_shared/proactive-routing.md +1 -1
- package/dist/plugin/skills/jira-create/SKILL.md +39 -4
- package/dist/plugin/skills/pr/SKILL.md +32 -12
- package/dist/plugin/skills/review/SKILL.md +94 -29
- package/dist/plugin/skills/review/references/approve-when-no-blocking.md +7 -0
- package/dist/plugin/skills/review/references/post-confirm.md +30 -0
- package/dist/plugin/skills/review/references/result-lines.md +32 -0
- package/dist/plugin/skills/review/references/user-profile.md +19 -0
- package/dist/plugin/skills/review-loop/SKILL.md +83 -20
- package/dist/plugin/skills/review-reply/SKILL.md +4 -0
- package/dist/plugin/skills/ship/SKILL.md +276 -29
- package/dist/src/architecture/ir-schema.d.ts +26 -26
- package/dist/src/cli/commands/profile.d.ts +13 -0
- package/dist/src/cli/commands/profile.d.ts.map +1 -0
- package/dist/src/cli/commands/profile.js +26 -0
- package/dist/src/cli/commands/profile.js.map +1 -0
- package/dist/src/cli/commands/ship.d.ts +35 -0
- package/dist/src/cli/commands/ship.d.ts.map +1 -0
- package/dist/src/cli/commands/ship.js +146 -0
- package/dist/src/cli/commands/ship.js.map +1 -0
- package/dist/src/cli/index.d.ts.map +1 -1
- package/dist/src/cli/index.js +52 -0
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/core/config.d.ts +12 -12
- package/dist/src/core/types.d.ts +64 -0
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/user-profile.d.ts +29 -0
- package/dist/src/core/user-profile.d.ts.map +1 -0
- package/dist/src/core/user-profile.js +97 -0
- package/dist/src/core/user-profile.js.map +1 -0
- package/dist/src/digest/blocks.d.ts +34 -34
- package/dist/src/digest/comments.d.ts +6 -6
- package/dist/src/digest/lens-schema.d.ts +2 -2
- package/dist/src/digest/lint-lens-context.d.ts +4 -4
- package/dist/src/digest/schema.d.ts +55 -55
- package/dist/src/lens/attach.d.ts +10 -10
- package/dist/src/mcp/schemas.d.ts +238 -225
- package/dist/src/mcp/schemas.d.ts.map +1 -1
- package/dist/src/mcp/schemas.js +86 -16
- package/dist/src/mcp/schemas.js.map +1 -1
- package/dist/src/mcp/tools/review-passthrough.d.ts.map +1 -1
- package/dist/src/mcp/tools/review-passthrough.js +61 -2
- package/dist/src/mcp/tools/review-passthrough.js.map +1 -1
- package/dist/src/mcp/tools/status.d.ts +1 -1
- package/dist/src/research/schema.d.ts +66 -66
- package/dist/src/research/target.d.ts +6 -6
- package/dist/src/review/consensus-input.d.ts +11 -0
- package/dist/src/review/consensus-input.d.ts.map +1 -0
- package/dist/src/review/consensus-input.js +102 -0
- package/dist/src/review/consensus-input.js.map +1 -0
- package/dist/src/review/passthrough-engine.d.ts +9 -2
- package/dist/src/review/passthrough-engine.d.ts.map +1 -1
- package/dist/src/review/passthrough-engine.js +58 -10
- package/dist/src/review/passthrough-engine.js.map +1 -1
- package/dist/src/review/verification.d.ts +48 -7
- package/dist/src/review/verification.d.ts.map +1 -1
- package/dist/src/review/verification.js +109 -23
- package/dist/src/review/verification.js.map +1 -1
- package/dist/src/review/verifier-record.d.ts +55 -0
- package/dist/src/review/verifier-record.d.ts.map +1 -0
- package/dist/src/review/verifier-record.js +228 -0
- package/dist/src/review/verifier-record.js.map +1 -0
- package/dist/src/ship/checkpoint.d.ts +145 -0
- package/dist/src/ship/checkpoint.d.ts.map +1 -0
- package/dist/src/ship/checkpoint.js +282 -0
- package/dist/src/ship/checkpoint.js.map +1 -0
- package/dist/src/ship/ci.d.ts +110 -0
- package/dist/src/ship/ci.d.ts.map +1 -0
- package/dist/src/ship/ci.js +270 -0
- package/dist/src/ship/ci.js.map +1 -0
- package/package.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.mcp.json +1 -1
- package/plugin/mcp.json +1 -1
- package/plugin/skills/_shared/pr-base.md +169 -0
- package/plugin/skills/_shared/proactive-routing.md +1 -1
- package/plugin/skills/jira-create/SKILL.md +39 -4
- package/plugin/skills/pr/SKILL.md +32 -12
- package/plugin/skills/review/SKILL.md +94 -29
- package/plugin/skills/review/references/approve-when-no-blocking.md +7 -0
- package/plugin/skills/review/references/post-confirm.md +30 -0
- package/plugin/skills/review/references/result-lines.md +32 -0
- package/plugin/skills/review/references/user-profile.md +19 -0
- package/plugin/skills/review-loop/SKILL.md +83 -20
- package/plugin/skills/review-reply/SKILL.md +4 -0
- package/plugin/skills/ship/SKILL.md +276 -29
|
@@ -485,8 +485,8 @@ export declare const targetSchema: z.ZodObject<{
|
|
|
485
485
|
value: z.ZodString;
|
|
486
486
|
method: z.ZodEnum<["internal", "proxy", "business", "market", "case", "assumption"]>;
|
|
487
487
|
}, "strip", z.ZodTypeAny, {
|
|
488
|
-
value: string;
|
|
489
488
|
id: string;
|
|
489
|
+
value: string;
|
|
490
490
|
evidence: ({
|
|
491
491
|
type: "capture";
|
|
492
492
|
captureId: string;
|
|
@@ -506,8 +506,8 @@ export declare const targetSchema: z.ZodObject<{
|
|
|
506
506
|
basis: "absent" | "observation" | "company-statement" | "interpretation" | "unconfirmed";
|
|
507
507
|
note?: string | undefined;
|
|
508
508
|
}, {
|
|
509
|
-
value: string;
|
|
510
509
|
id: string;
|
|
510
|
+
value: string;
|
|
511
511
|
method: "internal" | "proxy" | "business" | "market" | "case" | "assumption";
|
|
512
512
|
label: string;
|
|
513
513
|
basis: "absent" | "observation" | "company-statement" | "interpretation" | "unconfirmed";
|
|
@@ -527,8 +527,8 @@ export declare const targetSchema: z.ZodObject<{
|
|
|
527
527
|
url: string;
|
|
528
528
|
})[] | undefined;
|
|
529
529
|
}>, {
|
|
530
|
-
value: string;
|
|
531
530
|
id: string;
|
|
531
|
+
value: string;
|
|
532
532
|
evidence: ({
|
|
533
533
|
type: "capture";
|
|
534
534
|
captureId: string;
|
|
@@ -548,8 +548,8 @@ export declare const targetSchema: z.ZodObject<{
|
|
|
548
548
|
basis: "absent" | "observation" | "company-statement" | "interpretation" | "unconfirmed";
|
|
549
549
|
note?: string | undefined;
|
|
550
550
|
}, {
|
|
551
|
-
value: string;
|
|
552
551
|
id: string;
|
|
552
|
+
value: string;
|
|
553
553
|
method: "internal" | "proxy" | "business" | "market" | "case" | "assumption";
|
|
554
554
|
label: string;
|
|
555
555
|
basis: "absent" | "observation" | "company-statement" | "interpretation" | "unconfirmed";
|
|
@@ -680,8 +680,8 @@ export declare const targetSchema: z.ZodObject<{
|
|
|
680
680
|
denominator: string;
|
|
681
681
|
};
|
|
682
682
|
steps: {
|
|
683
|
-
value: string;
|
|
684
683
|
id: string;
|
|
684
|
+
value: string;
|
|
685
685
|
evidence: ({
|
|
686
686
|
type: "capture";
|
|
687
687
|
captureId: string;
|
|
@@ -779,8 +779,8 @@ export declare const targetSchema: z.ZodObject<{
|
|
|
779
779
|
denominator: string;
|
|
780
780
|
};
|
|
781
781
|
steps?: {
|
|
782
|
-
value: string;
|
|
783
782
|
id: string;
|
|
783
|
+
value: string;
|
|
784
784
|
method: "internal" | "proxy" | "business" | "market" | "case" | "assumption";
|
|
785
785
|
label: string;
|
|
786
786
|
basis: "absent" | "observation" | "company-statement" | "interpretation" | "unconfirmed";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ReviewConsensusInput, ReviewConsensusResult, ReviewResult } from '../core/types.js';
|
|
2
|
+
import { type Result } from '../core/result.js';
|
|
3
|
+
/**
|
|
4
|
+
* review_consensus 입력의 빈 칸을 세션에 남은 review_submit 기록으로 채운다.
|
|
5
|
+
*
|
|
6
|
+
* 메인이 빠뜨리기 쉬운 칸은 대부분 엔진이 이미 아는 값이다. 그걸 이유로 호출을 거부하면 같은
|
|
7
|
+
* 내용을 한 번 더 보내는 왕복만 생긴다. 판정에 쓰이는 값(mergedIssues의 severity, 뺀 이슈의
|
|
8
|
+
* 원본)은 여기서 만들지 않는다. overallApproved는 엔진이 판정한 뒤 따로 넣는다.
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveConsensusInput(input: ReviewConsensusInput, reviewResults: ReviewResult[]): Result<Omit<ReviewConsensusResult, 'overallApproved'>>;
|
|
11
|
+
//# sourceMappingURL=consensus-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consensus-input.d.ts","sourceRoot":"","sources":["../../../src/review/consensus-input.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EAErB,YAAY,EACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,mBAAmB,CAAC;AAWzD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,oBAAoB,EAC3B,aAAa,EAAE,YAAY,EAAE,GAC5B,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAC,CAwCxD"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { ok, err } from '../core/result.js';
|
|
2
|
+
import { ambiguousSourceMessage, findOriginals, givenReportedBy, hasContent, isUndroppable, pickFillSource, resolveDroppedIssues, } from './verification.js';
|
|
3
|
+
/**
|
|
4
|
+
* review_consensus 입력의 빈 칸을 세션에 남은 review_submit 기록으로 채운다.
|
|
5
|
+
*
|
|
6
|
+
* 메인이 빠뜨리기 쉬운 칸은 대부분 엔진이 이미 아는 값이다. 그걸 이유로 호출을 거부하면 같은
|
|
7
|
+
* 내용을 한 번 더 보내는 왕복만 생긴다. 판정에 쓰이는 값(mergedIssues의 severity, 뺀 이슈의
|
|
8
|
+
* 원본)은 여기서 만들지 않는다. overallApproved는 엔진이 판정한 뒤 따로 넣는다.
|
|
9
|
+
*/
|
|
10
|
+
export function resolveConsensusInput(input, reviewResults) {
|
|
11
|
+
const problems = [];
|
|
12
|
+
const mergedIssues = [];
|
|
13
|
+
for (const issue of input.mergedIssues) {
|
|
14
|
+
let reportedBy = givenReportedBy(issue.reportedBy);
|
|
15
|
+
if (reportedBy === undefined) {
|
|
16
|
+
const source = pickFillSource(undefined, findOriginals({ id: issue.id }, reviewResults));
|
|
17
|
+
if (source === 'ambiguous') {
|
|
18
|
+
problems.push(`mergedIssues의 ${ambiguousSourceMessage(issue.id)}.`);
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
reportedBy = source?.reportedBy;
|
|
22
|
+
}
|
|
23
|
+
if (reportedBy === undefined) {
|
|
24
|
+
problems.push(`mergedIssues의 ${issue.id}: reportedBy가 비었는데 같은 id나 \`<reportedBy>:<원래 id>\` 꼴의 review_submit 원본이 없어 채울 수 없다. 그 의견을 낸 에이전트 이름 하나를 적는다.`);
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
mergedIssues.push({ ...issue, reportedBy });
|
|
28
|
+
}
|
|
29
|
+
problems.push(...unlinkedUndroppable(mergedIssues, reviewResults));
|
|
30
|
+
const dropped = resolveDroppedIssues(input, reviewResults);
|
|
31
|
+
if (!dropped.ok)
|
|
32
|
+
problems.push(dropped.error.message);
|
|
33
|
+
if (problems.length > 0)
|
|
34
|
+
return err(new Error(problems.join('\n\n')));
|
|
35
|
+
const votes = lastVotes(reviewResults);
|
|
36
|
+
const droppedIssues = dropped.ok ? dropped.value : undefined;
|
|
37
|
+
return ok({
|
|
38
|
+
mergedIssues,
|
|
39
|
+
approvedBy: input.approvedBy ?? votes.filter((v) => v.approved).map((v) => v.agentName),
|
|
40
|
+
blockedBy: input.blockedBy ?? votes.filter((v) => !v.approved).map((v) => v.agentName),
|
|
41
|
+
summary: input.summary !== undefined && hasContent(input.summary)
|
|
42
|
+
? input.summary
|
|
43
|
+
: countSummary(mergedIssues, droppedIssues?.length ?? 0),
|
|
44
|
+
...(droppedIssues ? { droppedIssues } : {}),
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
const SEVERITY_RANK = { warning: 0, high: 1, critical: 2 };
|
|
48
|
+
/**
|
|
49
|
+
* critical이나 security 원본마다 mergedIssues에 그대로 이어져 있는지 본다. 어긋나면 문구를 돌려준다.
|
|
50
|
+
*
|
|
51
|
+
* 이 검사는 제안 검증 기록과 상관없이 돈다. 기록이 있어도 합의를 비워 보내면 그 원본은 아무
|
|
52
|
+
* 대조도 안 받고 판정에서 사라진다. droppedIssues는 이런 이슈를 못 빼게 막아 둔 자리인데 합의를
|
|
53
|
+
* 비우면 그 금지를 건너뛰게 된다.
|
|
54
|
+
*
|
|
55
|
+
* 이어졌는지만 보면 severity나 category를 낮춰 같은 id로 보내는 길이 열린다. isUndroppable만
|
|
56
|
+
* 보는 것도 모자라다. 그 술어는 critical이거나 security category인 이슈를 모두 통과시켜서
|
|
57
|
+
* security/high를 security/warning으로 낮춘 이슈가 그대로 지나간다. 판정은 critical과 high만
|
|
58
|
+
* 세므로 approve로 뒤집힌다. 그래서 원본에 이어 준 이슈 가운데 critical이나 security이면서
|
|
59
|
+
* severity가 원본 이상인 것이 하나는 남아 있어야 통과시킨다. 검증기는 severity를 바꾸는 자리가
|
|
60
|
+
* 아니라서 revise 판정이어도 예외를 두지 않는다.
|
|
61
|
+
*
|
|
62
|
+
* 같은 리뷰어가 여러 번 냈으면 마지막 제출만 보지 않고 전부 훑는다. 마지막 제출만 보면 이슈를
|
|
63
|
+
* 비운 재제출 하나로 critical 원본이 지워진다. 새 id로 합친 이슈는 원본과 이을 수 없으므로 이
|
|
64
|
+
* 두 종류만 같은 id나 `<reportedBy>:<원래 id>` 꼴로 두게 한다.
|
|
65
|
+
*/
|
|
66
|
+
function unlinkedUndroppable(mergedIssues, reviewResults) {
|
|
67
|
+
const linkPairs = mergedIssues.map((issue) => ({
|
|
68
|
+
issue,
|
|
69
|
+
originals: findOriginals(issue, reviewResults),
|
|
70
|
+
}));
|
|
71
|
+
const problems = [];
|
|
72
|
+
for (const result of reviewResults) {
|
|
73
|
+
for (const orig of result.issues) {
|
|
74
|
+
if (!isUndroppable(orig))
|
|
75
|
+
continue;
|
|
76
|
+
const linkedIssues = linkPairs
|
|
77
|
+
.filter((pair) => pair.originals.includes(orig))
|
|
78
|
+
.map((pair) => pair.issue);
|
|
79
|
+
const keptIssue = linkedIssues.some((issue) => isUndroppable(issue) && SEVERITY_RANK[issue.severity] >= SEVERITY_RANK[orig.severity]);
|
|
80
|
+
if (keptIssue)
|
|
81
|
+
continue;
|
|
82
|
+
const originLabel = `${orig.reportedBy}:${orig.id}: ${orig.severity}/${orig.category}`;
|
|
83
|
+
problems.push(linkedIssues.length === 0
|
|
84
|
+
? `${originLabel} 원본이 mergedIssues에 없다. 같은 id나 \`<reportedBy>:<원래 id>\` 꼴로 mergedIssues에 둔다. critical이나 security 원본은 다른 이슈에 접지 않고 따로 둔다.`
|
|
85
|
+
: `${originLabel} 원본이 mergedIssues에서 ${linkedIssues.map((i) => `${i.severity}/${i.category}`).join(', ')}로 낮아졌다. critical이나 security 원본은 severity는 원본 이상으로 두고 critical이거나 security category인 채로 잇는다.`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return problems;
|
|
89
|
+
}
|
|
90
|
+
/** 같은 리뷰어가 두 번 냈으면 마지막 제출을 그 리뷰어의 판정으로 본다. 이슈 대조는 이 규칙을 안 쓴다 */
|
|
91
|
+
function lastVotes(reviewResults) {
|
|
92
|
+
const votes = new Map();
|
|
93
|
+
for (const result of reviewResults)
|
|
94
|
+
votes.set(result.agentName, result.approved);
|
|
95
|
+
return [...votes].map(([agentName, approved]) => ({ agentName, approved }));
|
|
96
|
+
}
|
|
97
|
+
function countSummary(issues, droppedCount) {
|
|
98
|
+
const count = (severity) => issues.filter((i) => i.severity === severity).length;
|
|
99
|
+
const dropped = droppedCount > 0 ? `, 뺀 이슈 ${droppedCount}개` : '';
|
|
100
|
+
return `이슈 ${issues.length}개(critical ${count('critical')}, high ${count('high')}, warning ${count('warning')})${dropped}. 요약이 비어 엔진이 이슈 수로 채웠다.`;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=consensus-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consensus-input.js","sourceRoot":"","sources":["../../../src/review/consensus-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ReviewSession, ReviewResult,
|
|
1
|
+
import type { ReviewSession, ReviewResult, ReviewConsensusInput, ReviewReport, ReviewIssue, ReviewContext, ExecuteSession, AgentDefinition, ContinuityVerdict, ContinuityDriftFinding, ReviewVerifierRecord } from '../core/types.js';
|
|
2
2
|
import { type Result } from '../core/result.js';
|
|
3
3
|
import { type ReviewMatchContext } from './agent-matcher.js';
|
|
4
4
|
import type { EventStore } from '../events/store.js';
|
|
@@ -42,7 +42,14 @@ export declare class PassthroughReviewEngine {
|
|
|
42
42
|
submittedCount: number;
|
|
43
43
|
expectedCount: number;
|
|
44
44
|
}>;
|
|
45
|
-
|
|
45
|
+
/**
|
|
46
|
+
* 제안 검증 응답을 읽어 세션에 남긴다. 응답을 못 읽어도 거부하지 않는다 — 서브에이전트
|
|
47
|
+
* 실패도 기록으로 남아야 review_publish가 정당한 생략으로 가를 수 있다. 다만 빈 응답은
|
|
48
|
+
* 기록하지 않고 거부한다. 검증기를 안 띄우고 빈 문자열만 넘겨도 실패가 되면 그게 가장 싼
|
|
49
|
+
* 건너뛰기 길이 된다.
|
|
50
|
+
*/
|
|
51
|
+
submitVerification(sessionId: string, verifierOutput: string): Result<ReviewVerifierRecord>;
|
|
52
|
+
submitConsensus(sessionId: string, input: ReviewConsensusInput, continuityVerdict?: ContinuityVerdict): Result<{
|
|
46
53
|
approved: boolean;
|
|
47
54
|
report: ReviewReport;
|
|
48
55
|
needsFix: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passthrough-engine.d.ts","sourceRoot":"","sources":["../../../src/review/passthrough-engine.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,
|
|
1
|
+
{"version":3,"file":"passthrough-engine.d.ts","sourceRoot":"","sources":["../../../src/review/passthrough-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,9 @@ import { ReviewReportGenerator } from './report-generator.js';
|
|
|
8
8
|
import { logger } from '../core/logger.js';
|
|
9
9
|
import { EventType } from '../events/types.js';
|
|
10
10
|
import { isConsensusApproved } from '../local-pr/policy.js';
|
|
11
|
-
import {
|
|
11
|
+
import { hasContent, verificationStats } from './verification.js';
|
|
12
|
+
import { resolveConsensusInput } from './consensus-input.js';
|
|
13
|
+
import { checkConsensusAgainstVerifier, parseVerifierOutput, stripCodeFences, summarizeVerifierRecord, verifierAtConsensus, } from './verifier-record.js';
|
|
12
14
|
const MAX_REVIEW_ATTEMPTS = 3;
|
|
13
15
|
// 매칭 프롬프트로 요구만 하면 호출자가 빼먹어도 그대로 합의까지 간다. 합의 입구에서 막아야 강제가 된다
|
|
14
16
|
function checkMissingRequiredReviews(session) {
|
|
@@ -198,8 +200,35 @@ Review the code changes from your assigned perspective. Focus on issues that mat
|
|
|
198
200
|
expectedCount: session.matchedAgents.length,
|
|
199
201
|
});
|
|
200
202
|
}
|
|
203
|
+
// ─── review_verify ────────────────────────────────────────────
|
|
204
|
+
/**
|
|
205
|
+
* 제안 검증 응답을 읽어 세션에 남긴다. 응답을 못 읽어도 거부하지 않는다 — 서브에이전트
|
|
206
|
+
* 실패도 기록으로 남아야 review_publish가 정당한 생략으로 가를 수 있다. 다만 빈 응답은
|
|
207
|
+
* 기록하지 않고 거부한다. 검증기를 안 띄우고 빈 문자열만 넘겨도 실패가 되면 그게 가장 싼
|
|
208
|
+
* 건너뛰기 길이 된다.
|
|
209
|
+
*/
|
|
210
|
+
submitVerification(sessionId, verifierOutput) {
|
|
211
|
+
const session = this.sessions.get(sessionId);
|
|
212
|
+
if (!session)
|
|
213
|
+
return err(new Error(`Review session not found: ${sessionId}`));
|
|
214
|
+
if (!hasContent(stripCodeFences(verifierOutput))) {
|
|
215
|
+
return err(new Error('검증기 응답이 비었다. suggestion-verifier를 한 번 다시 띄워 그 응답을 넘긴다. ' +
|
|
216
|
+
'두 번째도 비면 그 사실을 적은 글을 넘긴다. 실패로 기록되고 초안 그대로 게시된다.'));
|
|
217
|
+
}
|
|
218
|
+
const record = parseVerifierOutput(verifierOutput, session.reviewResults.length);
|
|
219
|
+
session.verifier = record;
|
|
220
|
+
session.updatedAt = new Date().toISOString();
|
|
221
|
+
logger.info('review.verified', {
|
|
222
|
+
module: 'review',
|
|
223
|
+
sessionId,
|
|
224
|
+
status: record.status,
|
|
225
|
+
failure: record.failure,
|
|
226
|
+
...summarizeVerifierRecord(record),
|
|
227
|
+
});
|
|
228
|
+
return ok(record);
|
|
229
|
+
}
|
|
201
230
|
// ─── review_consensus ─────────────────────────────────────────
|
|
202
|
-
submitConsensus(sessionId,
|
|
231
|
+
submitConsensus(sessionId, input, continuityVerdict) {
|
|
203
232
|
const session = this.sessions.get(sessionId);
|
|
204
233
|
if (!session)
|
|
205
234
|
return err(new Error(`Review session not found: ${sessionId}`));
|
|
@@ -213,17 +242,36 @@ Review the code changes from your assigned perspective. Focus on issues that mat
|
|
|
213
242
|
});
|
|
214
243
|
return err(new Error(missingProblem));
|
|
215
244
|
}
|
|
216
|
-
|
|
217
|
-
|
|
245
|
+
// 뺀 이슈 검사도 여기서 돈다. 빈 칸을 채우기 전에 원본으로 금지 여부부터 본다
|
|
246
|
+
const resolved = resolveConsensusInput(input, session.reviewResults);
|
|
247
|
+
if (!resolved.ok) {
|
|
248
|
+
logger.warn('review.consensus_rejected', {
|
|
249
|
+
module: 'review',
|
|
250
|
+
sessionId,
|
|
251
|
+
reason: 'unresolvable_input',
|
|
252
|
+
droppedCount: input.droppedIssues?.length ?? 0,
|
|
253
|
+
});
|
|
254
|
+
return err(resolved.error);
|
|
255
|
+
}
|
|
256
|
+
const verifier = verifierAtConsensus(session);
|
|
257
|
+
const verifierProblem = checkConsensusAgainstVerifier(verifier, resolved.value);
|
|
258
|
+
if (verifierProblem) {
|
|
218
259
|
logger.warn('review.consensus_rejected', {
|
|
219
260
|
module: 'review',
|
|
220
261
|
sessionId,
|
|
221
|
-
|
|
262
|
+
reason: 'verifier_mismatch',
|
|
263
|
+
verifier: verifier.status,
|
|
222
264
|
});
|
|
223
|
-
return err(new Error(
|
|
265
|
+
return err(new Error(verifierProblem));
|
|
224
266
|
}
|
|
267
|
+
// 두 심급을 합친 경계는 정책이 정한다. review_publish가 PR에 남길 판정도 같은
|
|
268
|
+
// 함수를 부른다 — 따로 세면 파이프라인은 통과인데 PR은 리젝인 상태가 생긴다.
|
|
269
|
+
// 입력의 overallApproved는 쓰지 않는다
|
|
270
|
+
const approved = isConsensusApproved(resolved.value.mergedIssues, continuityVerdict);
|
|
271
|
+
const consensus = { ...resolved.value, overallApproved: approved };
|
|
225
272
|
session.consensus = consensus;
|
|
226
273
|
session.continuityVerdict = continuityVerdict;
|
|
274
|
+
session.verifierAtConsensus = verifier;
|
|
227
275
|
session.status = 'consensus';
|
|
228
276
|
session.updatedAt = new Date().toISOString();
|
|
229
277
|
const criticalHighIssues = consensus.mergedIssues.filter((i) => i.severity === 'critical' || i.severity === 'high');
|
|
@@ -231,14 +279,11 @@ Review the code changes from your assigned perspective. Focus on issues that mat
|
|
|
231
279
|
const defectApproved = criticalHighIssues.length === 0;
|
|
232
280
|
const continuityBlocks = continuityVerdict ? !continuityVerdict.coherent : false;
|
|
233
281
|
const escalate = continuityVerdict?.escalate ?? false;
|
|
234
|
-
// 두 심급을 합친 경계는 정책이 정한다. review_publish가 PR에 남길 판정도 같은
|
|
235
|
-
// 함수를 부른다 — 따로 세면 파이프라인은 통과인데 PR은 리젝인 상태가 생긴다
|
|
236
|
-
const approved = isConsensusApproved(consensus.mergedIssues, continuityVerdict);
|
|
237
282
|
const needsFix = !approved;
|
|
238
283
|
// review_fix 루프는 결함만 해결한다. 결함이 없고 정합 심급만 Block이면
|
|
239
284
|
// 자동 수정 대상이 아니므로 canFix=false (escalate 신호로 라우팅).
|
|
240
285
|
const canFix = !defectApproved && session.currentAttempt < session.maxAttempts;
|
|
241
|
-
const report = this.reportGenerator.generate(
|
|
286
|
+
const report = this.reportGenerator.generate(consensus, session.currentAttempt + 1, continuityVerdict, session.repoRoot);
|
|
242
287
|
session.reports.push(report);
|
|
243
288
|
const verification = verificationStats(consensus);
|
|
244
289
|
this.emitEvent(sessionId, EventType.REVIEW_CONSENSUS_COMPLETED, {
|
|
@@ -252,6 +297,7 @@ Review the code changes from your assigned perspective. Focus on issues that mat
|
|
|
252
297
|
escalate,
|
|
253
298
|
// 제안 검증이 라운드 수를 줄였는지 나중에 재려고 남긴다
|
|
254
299
|
verification,
|
|
300
|
+
verifier: verifier.status,
|
|
255
301
|
});
|
|
256
302
|
if (approved) {
|
|
257
303
|
session.status = 'passed';
|
|
@@ -410,6 +456,8 @@ Fix these issues while maintaining code integrity. Run structural checks after f
|
|
|
410
456
|
session.reviewResults = [];
|
|
411
457
|
session.consensus = undefined;
|
|
412
458
|
session.continuityVerdict = undefined;
|
|
459
|
+
session.verifier = undefined;
|
|
460
|
+
session.verifierAtConsensus = undefined;
|
|
413
461
|
session.status = 'started';
|
|
414
462
|
session.updatedAt = new Date().toISOString();
|
|
415
463
|
this.emitEvent(sessionId, EventType.REVIEW_FIX_COMPLETED, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passthrough-engine.js","sourceRoot":"","sources":["../../../src/review/passthrough-engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"passthrough-engine.js","sourceRoot":"","sources":["../../../src/review/passthrough-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAejC,OAAO,EAAe,EAAE,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,GAErB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAA0B,MAAM,mBAAmB,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EACL,6BAA6B,EAC7B,mBAAmB,EACnB,eAAe,EACf,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAmB9B,4DAA4D;AAC5D,SAAS,2BAA2B,CAAC,OAAsB;IACzD,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,EAAE,cAAc,IAAI,EAAE,CAAC;IACnE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACzE,IAAI,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,OAAO,CACL,8BAA8B,gBAAgB,sBAAsB;QACpE,4BAA4B,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,gBAAgB,GAAG;QACxF,qDAAqD,CACtD,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,uBAAuB;IAMd;IALZ,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC5C,gBAAgB,GAAG,IAAI,sBAAsB,EAAE,CAAC;IAChD,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;IACxC,eAAe,GAAG,IAAI,qBAAqB,EAAE,CAAC;IAEtD,YAAoB,UAAuB;QAAvB,eAAU,GAAV,UAAU,CAAa;IAAG,CAAC;IAE/C,iEAAiE;IACjE,WAAW,CACT,MAE+D,EAC/D,UAA6B,EAC7B,YAA+B,EAC/B,UAAiC,EAAE;QAEnC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAC7B,IAAI,aAA4B,CAAC;QACjC,IAAI,gBAAwB,CAAC;QAC7B,IAAI,QAA4B,CAAC;QACjC,gDAAgD;QAChD,MAAM,IAAI,GAAG,gBAAgB,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAElE,IAAI,gBAAgB,IAAI,MAAM,EAAE,CAAC;YAC/B,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAC3C,MAAM,CAAC,cAAc,CAAC,IAAI,EAC1B,MAAM,CAAC,cAAc,CAAC,WAAW,CAClC,CAAC;YACF,gBAAgB,GAAG,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC;YACnD,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC5E,8DAA8D;YAC9D,gBAAgB,GAAG,EAAE,CAAC;YACtB,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC7B,CAAC;QAED,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,QAAQ;YACvB,CAAC,CAAC,CAAC,OAAe,EAAE,EAAE;gBAClB,IAAI,CAAC;oBACH,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;gBACxD,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,SAAS,CAAC;gBACnB,CAAC;YACH,CAAC;YACH,CAAC,CAAC,SAAS,CAAC;QACd,aAAa,CAAC,cAAc,GAAG,oBAAoB,CAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAE1F,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,oBAAoB,CACzD,aAAa,EACb,UAAU,EACV,YAAY,CACb,CAAC;QAEF,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAkB;YAC7B,SAAS;YACT,gBAAgB;YAChB,MAAM,EAAE,SAAS;YACjB,cAAc,EAAE,CAAC;YACjB,WAAW,EAAE,mBAAmB;YAChC,aAAa;YACb,QAAQ;YACR,IAAI;YACJ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,wDAAwD;YACxD,aAAa,EAAE,oBAAoB,CAAC,EAAE,EAAE,YAAY,CAAC,cAAc,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBACnF,SAAS;aACV,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3B,aAAa,EAAE,EAAE;YACjB,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEtC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC5B,MAAM,EAAE,QAAQ;YAChB,SAAS;YACT,YAAY,EAAE,aAAa,CAAC,YAAY,CAAC,MAAM;YAC/C,eAAe,EAAE,aAAa,CAAC,eAAe,CAAC,MAAM;YACrD,IAAI,EAAE,gBAAgB,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;SACxD,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,EAAE;YAClD,gBAAgB;YAChB,YAAY,EAAE,aAAa,CAAC,YAAY,CAAC,MAAM;YAC/C,eAAe,EAAE,aAAa,CAAC,eAAe,CAAC,MAAM;YACrD,4CAA4C;YAC5C,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BvB,CAAC;QAEC,MAAM,gBAAgB,GACpB,aAAa,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YAC7D,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAClE,CAAC,CAAC,UAAU,CAAC;QAEjB,MAAM,eAAe,GACnB,aAAa,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;YACtC,CAAC,CAAC,6BAA6B,aAAa,CAAC,eAAe,CAAC,MAAM,OAAO,aAAa,CAAC,eAAe;iBAClG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;iBACtB,IAAI,CAAC,IAAI,CAAC,IAAI;YACnB,CAAC,CAAC,EAAE,CAAC;QAET,sDAAsD;QACtD,MAAM,UAAU,GAAG,QAAQ;YACzB,CAAC,CAAC,0BAA0B,QAAQ,0CAA0C,QAAQ,uCAAuC;YAC7H,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,YAAY,GAAG;;iBAER,aAAa,CAAC,IAAI,EAAE,IAAI,IAAI,oBAAoB;;qBAE5C,aAAa,CAAC,YAAY,CAAC,MAAM;EACpD,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;EAC5D,eAAe;;EAEf,gBAAgB;;;;oKAIkJ,UAAU,EAAE,CAAC;QAE7K,OAAO,EAAE,CAAC;YACR,SAAS;YACT,kBAAkB,EAAE;gBAClB,YAAY;gBACZ,YAAY;gBACZ,YAAY;gBACZ,aAAa;aACd;SACF,CAAC,CAAC;IACL,CAAC;IAED,iEAAiE;IACjE,YAAY,CACV,SAAiB,EACjB,SAAiB,EACjB,MAAoB;QAEpB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC,CAAC;QAE9E,2BAA2B;QAC3B,MAAM,YAAY,GAAiB;YACjC,GAAG,MAAM;YACT,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACpC,GAAG,KAAK;gBACR,UAAU,EAAE,SAAS;aACtB,CAAC,CAAC;SACJ,CAAC;QAEF,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC;QAC7B,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE7C,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC9B,MAAM,EAAE,QAAQ;YAChB,SAAS;YACT,SAAS;YACT,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;YAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,gBAAgB,EAAE;YACpD,SAAS;YACT,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;YAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC,CAAC;QAEH,OAAO,EAAE,CAAC;YACR,YAAY,EAAE,KAAK,EAAE,gDAAgD;YACrE,cAAc,EAAE,OAAO,CAAC,aAAa,CAAC,MAAM;YAC5C,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC,MAAM;SAC5C,CAAC,CAAC;IACL,CAAC;IAED,iEAAiE;IACjE;;;;;OAKG;IACH,kBAAkB,CAAC,SAAiB,EAAE,cAAsB;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;YACjD,OAAO,GAAG,CACR,IAAI,KAAK,CACP,yDAAyD;gBACvD,iDAAiD,CACpD,CACF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,cAAc,EAAE,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACjF,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;QAC1B,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE7C,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC7B,MAAM,EAAE,QAAQ;YAChB,SAAS;YACT,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,GAAG,uBAAuB,CAAC,MAAM,CAAC;SACnC,CAAC,CAAC;QAEH,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IAED,iEAAiE;IACjE,eAAe,CACb,SAAiB,EACjB,KAA2B,EAC3B,iBAAqC;QAUrC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC,CAAC;QAE9E,8CAA8C;QAC9C,MAAM,cAAc,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;gBACvC,MAAM,EAAE,QAAQ;gBAChB,SAAS;gBACT,MAAM,EAAE,yBAAyB;aAClC,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;gBACvC,MAAM,EAAE,QAAQ;gBAChB,SAAS;gBACT,MAAM,EAAE,oBAAoB;gBAC5B,YAAY,EAAE,KAAK,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC;aAC/C,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAED,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,eAAe,GAAG,6BAA6B,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChF,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;gBACvC,MAAM,EAAE,QAAQ;gBAChB,SAAS;gBACT,MAAM,EAAE,mBAAmB;gBAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM;aAC1B,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,sDAAsD;QACtD,+CAA+C;QAC/C,8BAA8B;QAC9B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;QACrF,MAAM,SAAS,GAA0B,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC;QAE1F,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;QAC9B,OAAO,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC9C,OAAO,CAAC,mBAAmB,GAAG,QAAQ,CAAC;QACvC,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC;QAC7B,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE7C,MAAM,kBAAkB,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,CACtD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAC1D,CAAC;QACF,kCAAkC;QAClC,MAAM,cAAc,GAAG,kBAAkB,CAAC,MAAM,KAAK,CAAC,CAAC;QACvD,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;QACjF,MAAM,QAAQ,GAAG,iBAAiB,EAAE,QAAQ,IAAI,KAAK,CAAC;QACtD,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC;QAC3B,iDAAiD;QACjD,kDAAkD;QAClD,MAAM,MAAM,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;QAE/E,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAC1C,SAAS,EACT,OAAO,CAAC,cAAc,GAAG,CAAC,EAC1B,iBAAiB,EACjB,OAAO,CAAC,QAAQ,CACjB,CAAC;QACF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE7B,MAAM,YAAY,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElD,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,0BAA0B,EAAE;YAC9D,WAAW,EAAE,SAAS,CAAC,YAAY,CAAC,MAAM;YAC1C,iBAAiB,EAAE,kBAAkB,CAAC,MAAM;YAC5C,QAAQ;YACR,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;YACzE,UAAU,EAAE,iBAAiB,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC;YACxD,QAAQ;YACR,iCAAiC;YACjC,YAAY;YACZ,QAAQ,EAAE,QAAQ,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE;gBAC3B,MAAM,EAAE,QAAQ;gBAChB,SAAS;gBACT,OAAO,EAAE,OAAO,CAAC,cAAc,GAAG,CAAC;gBACnC,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM;aACpF,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,aAAa,EAAE;gBACjD,OAAO,EAAE,OAAO,CAAC,cAAc,GAAG,CAAC;gBACnC,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM;aACpF,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,gBAAgB,IAAI,QAAQ,IAAI,cAAc,EAAE,CAAC;YAC1D,yDAAyD;YACzD,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAC9B,MAAM,EAAE,QAAQ;gBAChB,SAAS;gBACT,OAAO,EAAE,OAAO,CAAC,cAAc,GAAG,CAAC;gBACnC,UAAU,EAAE,iBAAiB,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC;aACzD,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,gBAAgB,EAAE;gBACpD,OAAO,EAAE,OAAO,CAAC,cAAc,GAAG,CAAC;gBACnC,UAAU,EAAE,iBAAiB,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC;gBACxD,OAAO,EAAE,iBAAiB,EAAE,OAAO,IAAI,EAAE;aAC1C,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBAC5B,MAAM,EAAE,QAAQ;gBAChB,SAAS;gBACT,iBAAiB,EAAE,kBAAkB,CAAC,MAAM;gBAC5C,gBAAgB;gBAChB,OAAO,EAAE,OAAO,CAAC,cAAc,GAAG,CAAC;gBACnC,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,CAAC;YACR,QAAQ;YACR,MAAM;YACN,QAAQ;YACR,MAAM;YACN,iBAAiB,EAAE,kBAAkB,CAAC,MAAM;YAC5C,QAAQ;YACR,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAED,iEAAiE;IACjE,QAAQ,CACN,SAAiB;QAEjB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,OAAO,CAAC,SAAS;YAAE,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAEhF,OAAO,CAAC,cAAc,EAAE,CAAC;QACzB,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE7C,iCAAiC;QACjC,IAAI,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YACjD,OAAO,CAAC,MAAM,GAAG,oBAAoB,CAAC;YAEtC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAC1C,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,cAAc,EACtB,SAAS,EACT,OAAO,CAAC,QAAQ,CACjB,CAAC;YACF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE7B,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAC3D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAC1D,CAAC,MAAM,CAAC;YAET,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAC9B,MAAM,EAAE,QAAQ;gBAChB,SAAS;gBACT,OAAO,EAAE,OAAO,CAAC,cAAc;gBAC/B,eAAe;aAChB,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,aAAa,EAAE;gBACjD,OAAO,EAAE,OAAO,CAAC,cAAc;gBAC/B,MAAM,EAAE,uBAAuB;gBAC/B,eAAe;aAChB,CAAC,CAAC;YAEH,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAa,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;QAE1B,MAAM,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAC9D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAC1D,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAChC,MAAM,EAAE,QAAQ;YAChB,SAAS;YACT,OAAO,EAAE,OAAO,CAAC,cAAc;YAC/B,UAAU,EAAE,kBAAkB,CAAC,MAAM;SACtC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,kBAAkB,EAAE;YACtD,OAAO,EAAE,OAAO,CAAC,cAAc;YAC/B,UAAU,EAAE,kBAAkB,CAAC,MAAM;SACtC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;EAqBvB,CAAC;QAEC,MAAM,SAAS,GAAG,kBAAkB;aACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,mBAAmB,CAAC,CAAC,UAAU,EAAE,CAAC;YACnI,kDAAkD;YAClD,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,EAAE,SAAS,IAAI,EAAE,CAAC;YAClD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACxC,OAAO,GAAG,IAAI,4CAA4C,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClH,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,oDAAoD;QACpD,kDAAkD;QAClD,2CAA2C;QAC3C,MAAM,YAAY,GAChB,OAAO,CAAC,iBAAiB;YACzB,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ;YACnC,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ;YACjC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,aAAa;YACzC,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,UAAU,GACd,YAAY,CAAC,MAAM,GAAG,CAAC;YACrB,CAAC,CAAC,6CAA6C,YAAY,CAAC,MAAM,MAAM;gBACtE,YAAY;qBACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;qBACtE,IAAI,CAAC,IAAI,CAAC;YACf,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,SAAS,GAAG,sCAAsC,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,WAAW;;qBAEpF,kBAAkB,CAAC,MAAM;EAC5C,SAAS,GAAG,UAAU;;uFAE+D,CAAC;QAEpF,OAAO,EAAE,CAAC;YACR,YAAY;YACZ,SAAS;YACT,MAAM,EAAE,kBAAkB;YAC1B,aAAa,EAAE,YAAY;YAC3B,OAAO,EAAE,OAAO,CAAC,cAAc;YAC/B,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,SAAiB;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC,CAAC;QAE9E,2DAA2D;QAC3D,OAAO,CAAC,aAAa,GAAG,EAAE,CAAC;QAC3B,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;QAC9B,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACtC,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC7B,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACxC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;QAC3B,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE7C,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,oBAAoB,EAAE;YACxD,OAAO,EAAE,OAAO,CAAC,cAAc;SAChC,CAAC,CAAC;QAEH,OAAO,EAAE,CAAC;YACR,gBAAgB,EAAE,IAAI;YACtB,OAAO,EAAE,OAAO,CAAC,cAAc;SAChC,CAAC,CAAC;IACL,CAAC;IAED,iEAAiE;IACjE,UAAU,CAAC,SAAiB;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC;QACxE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YAAY;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACrC,CAAC;IAEO,SAAS,CAAC,SAAiB,EAAE,SAAoB,EAAE,OAAgB;QACzE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;CACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { ReviewConsensusResult, ReviewIssue, ReviewResult } from '../core/types.js';
|
|
1
|
+
import type { DroppedReviewIssue, ReviewConsensusInput, ReviewConsensusResult, ReviewIssue, ReviewResult } from '../core/types.js';
|
|
2
|
+
import { type Result } from '../core/result.js';
|
|
2
3
|
/**
|
|
3
4
|
* 제안 검증이 판정에서 뺄 수 없는 이슈인가.
|
|
4
5
|
*
|
|
@@ -7,8 +8,9 @@ import type { ReviewConsensusResult, ReviewIssue, ReviewResult } from '../core/t
|
|
|
7
8
|
* category에 `secur`나 `appsec`이 들어 있으면 자리와 구분자와 상관없이 security로 본다.
|
|
8
9
|
* 접두만 보면 `app-security`, 콜론만 보면 `security/xss`처럼 모양만 바꾼 이슈가 빠져나간다.
|
|
9
10
|
* 넓게 막는 쪽이 싸다.
|
|
11
|
+
* 비어 있는 칸은 금지 근거가 못 된다. 그 자리는 review_submit 원본 대조가 맡는다.
|
|
10
12
|
*/
|
|
11
|
-
export declare function isUndroppable(issue: Pick<ReviewIssue, 'severity' | 'category'
|
|
13
|
+
export declare function isUndroppable(issue: Partial<Pick<ReviewIssue, 'severity' | 'category'>>): boolean;
|
|
12
14
|
export interface VerificationStats {
|
|
13
15
|
keep: number;
|
|
14
16
|
revise: number;
|
|
@@ -18,13 +20,52 @@ export interface VerificationStats {
|
|
|
18
20
|
}
|
|
19
21
|
/** 엔진 이벤트와 consensus 응답, 리포트가 같은 수를 쓰도록 한 자리에서 센다 */
|
|
20
22
|
export declare function verificationStats(consensus: Pick<ReviewConsensusResult, 'mergedIssues' | 'droppedIssues'>): VerificationStats;
|
|
23
|
+
/** id와 reportedBy는 대소문자와 앞뒤 공백을 빼고 비교한다. 표기만 바꿔 대조를 피하지 못하게 */
|
|
24
|
+
export declare function norm(value: string): string;
|
|
21
25
|
/**
|
|
22
|
-
*
|
|
26
|
+
* 이슈의 review_submit 원본 후보를 찾는다. 앞에 올수록 더 확실한 후보다.
|
|
27
|
+
*
|
|
28
|
+
* 메인이 id를 고유화하는 꼴(`<reportedBy>:<원래 id>`)과 맞는 원본이 있으면 그것을 본다.
|
|
29
|
+
* 그 접두와 이슈의 reportedBy가 어긋나면 reportedBy 쪽 리뷰어의 같은 id 원본도 후보에 넣는다.
|
|
30
|
+
* 어느 쪽이 맞는지 가릴 수 없으면 둘 다 보는 게 안전해서다.
|
|
31
|
+
* 접두 꼴 원본이 없으면 id가 같은 원본을 reportedBy와 상관없이 전부 후보로 둔다. 병합하면서 대표
|
|
32
|
+
* reportedBy를 바꾸는 일이 흔해서 reportedBy까지 맞추라고 하면 그 자리로 금지를 피할 수 있다.
|
|
33
|
+
*/
|
|
34
|
+
export declare function findOriginals(issue: Pick<ReviewIssue, 'id'> & {
|
|
35
|
+
reportedBy?: string;
|
|
36
|
+
}, reviewResults: ReviewResult[]): ReviewIssue[];
|
|
37
|
+
/**
|
|
38
|
+
* 글자나 숫자가 하나라도 있는 값인가. 공백과 제로폭 문자, 한글 채움 문자, 기호만 있는 값은 이유나
|
|
39
|
+
* 증거로 치지 않는다. 검증기 응답이 비었는지 가를 때도 쓴다.
|
|
40
|
+
*
|
|
41
|
+
* 한글 채움 문자는 글자 범주(Lo)라서 정규식만으로는 내용으로 잡히는데 화면에는 안 보인다.
|
|
42
|
+
* 화면에 안 보이게 처리되는 글자(Default_Ignorable_Code_Point)를 먼저 걷어낸다.
|
|
43
|
+
*/
|
|
44
|
+
export declare function hasContent(text: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* 적어 보낸 reportedBy를 쓸 수 있는 값으로 고른다. 글자나 숫자가 없는 값은 안 적은 것으로 본다.
|
|
47
|
+
* 제로폭 문자만 있는 값이 눈에 안 보이는 작성자로 게시되지 않게 hasContent로 가른다.
|
|
48
|
+
* mergedIssues와 droppedIssues가 같은 규칙으로 채우도록 두 쪽이 이 함수를 같이 쓴다.
|
|
49
|
+
*/
|
|
50
|
+
export declare function givenReportedBy(value: string | undefined): string | undefined;
|
|
51
|
+
/**
|
|
52
|
+
* 빈 칸을 채울 review_submit 원본 하나를 고른다.
|
|
53
|
+
*
|
|
54
|
+
* reportedBy를 적었으면 그 리뷰어의 원본만 쓴다. 비웠는데 후보가 여러 리뷰어에 걸쳐 있으면
|
|
55
|
+
* 고르지 않는다. 리뷰어마다 `issue-1` 같은 흔한 id를 쓰면 첫 후보로 채운 작성자와 본문이 다른
|
|
56
|
+
* 리뷰어 것이 된다. 금지 판단은 여기와 상관없이 후보 전체로 한다.
|
|
57
|
+
*/
|
|
58
|
+
export declare function pickFillSource(reportedBy: string | undefined, originals: ReviewIssue[]): ReviewIssue | 'ambiguous' | undefined;
|
|
59
|
+
/** 같은 id의 원본이 여러 리뷰어에게 있어 채울 원본을 못 고를 때의 안내 */
|
|
60
|
+
export declare function ambiguousSourceMessage(id: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* droppedIssues의 빈 칸을 원본에서 채우고 우회로로 쓰이지 않았는지 본다.
|
|
23
63
|
*
|
|
24
64
|
* 애매하면 거부한다. 후보 원본 중 하나라도 금지 대상이면 막는다.
|
|
25
|
-
* 병합하면서 severity나 category를
|
|
26
|
-
* 대조한다. 원본 후보가 하나도
|
|
27
|
-
*
|
|
65
|
+
* 병합하면서 severity나 category를 바꾸거나 비워 금지를 피하는 길도 막으려고 review_submit
|
|
66
|
+
* 원본과 대조한다. 원본 후보가 하나도 없으면 적어 보낸 값으로만 판단한다. 그때 빈 칸이 있으면
|
|
67
|
+
* 채울 근거가 없으니 거부한다. 메인이 id를 다른 꼴로 바꿨을 수도 있는데 칸을 다 적은 정상
|
|
68
|
+
* 호출까지 막으면 이 검사를 끄자는 쪽으로 가게 된다.
|
|
28
69
|
*/
|
|
29
|
-
export declare function
|
|
70
|
+
export declare function resolveDroppedIssues(consensus: Pick<ReviewConsensusInput, 'mergedIssues' | 'droppedIssues'>, reviewResults: ReviewResult[]): Result<DroppedReviewIssue[] | undefined>;
|
|
30
71
|
//# sourceMappingURL=verification.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../../src/review/verification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../../src/review/verification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAElB,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,EACX,YAAY,EACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,mBAAmB,CAAC;AAEzD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,CAAC,CAAC,GAAG,OAAO,CAGjG;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,qDAAqD;AACrD,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,cAAc,GAAG,eAAe,CAAC,GACvE,iBAAiB,CAgBnB;AAED,+DAA+D;AAC/D,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EACxD,aAAa,EAAE,YAAY,EAAE,GAC5B,WAAW,EAAE,CAaf;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAE7E;AAWD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,EAAE,WAAW,EAAE,GACvB,WAAW,GAAG,WAAW,GAAG,SAAS,CAOvC;AAED,+CAA+C;AAC/C,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEzD;AA8BD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,IAAI,CAAC,oBAAoB,EAAE,cAAc,GAAG,eAAe,CAAC,EACvE,aAAa,EAAE,YAAY,EAAE,GAC5B,MAAM,CAAC,kBAAkB,EAAE,GAAG,SAAS,CAAC,CAwD1C"}
|