@tienne/gestalt 0.85.0 → 0.86.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 +4 -3
- package/dist/plugin/review-agents/harness-reviewer/AGENT.md +21 -1
- package/dist/src/harness-review/collect.d.ts +1 -1
- package/dist/src/harness-review/collect.d.ts.map +1 -1
- package/dist/src/harness-review/collect.js +6 -1
- package/dist/src/harness-review/collect.js.map +1 -1
- package/dist/src/harness-review/rule-overlap.d.ts +3 -0
- package/dist/src/harness-review/rule-overlap.d.ts.map +1 -0
- package/dist/src/harness-review/rule-overlap.js +78 -0
- package/dist/src/harness-review/rule-overlap.js.map +1 -0
- package/dist/src/harness-review/types.d.ts +1 -1
- package/dist/src/harness-review/types.d.ts.map +1 -1
- package/dist/src/harness-review/types.js +1 -0
- package/dist/src/harness-review/types.js.map +1 -1
- package/dist/src/humanize/overlap.d.ts +116 -0
- package/dist/src/humanize/overlap.d.ts.map +1 -0
- package/dist/src/humanize/overlap.js +680 -0
- package/dist/src/humanize/overlap.js.map +1 -0
- package/package.json +4 -3
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.mcp.json +1 -1
- package/plugin/mcp.json +1 -1
- package/plugin/review-agents/harness-reviewer/AGENT.md +21 -1
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tienne/gestalt",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.86.0",
|
|
4
4
|
"description": "TypeScript AI Development Harness - Gestalt psychology-driven requirement clarification",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"scripts": {
|
|
29
29
|
"dev": "tsx bin/gestalt.ts",
|
|
30
30
|
"build": "tsc -p tsconfig.build.json",
|
|
31
|
-
"postbuild": "rm -rf dist/plugin && mkdir -p dist/plugin && cp -r plugin/agents plugin/role-agents plugin/review-agents plugin/personas plugin/skills dist/plugin/ && cp -r schemas dist/ && cp package.json dist/ && chmod +x dist/bin/gestalt.js && pnpm run verify:plugin && pnpm run verify:rules && pnpm run verify:output-style",
|
|
31
|
+
"postbuild": "rm -rf dist/plugin && mkdir -p dist/plugin && cp -r plugin/agents plugin/role-agents plugin/review-agents plugin/personas plugin/skills dist/plugin/ && cp -r schemas dist/ && cp package.json dist/ && chmod +x dist/bin/gestalt.js && pnpm run verify:plugin && pnpm run verify:rules && pnpm run verify:rule-overlap && pnpm run verify:output-style",
|
|
32
32
|
"verify:plugin": "tsx scripts/verify-plugin-assets.ts",
|
|
33
33
|
"prepublishOnly": "pnpm build",
|
|
34
34
|
"test": "vitest run",
|
|
@@ -43,7 +43,8 @@
|
|
|
43
43
|
"version:sync": "tsx scripts/sync-version.ts",
|
|
44
44
|
"postversion": "pnpm run version:sync && pnpm run build:output-style",
|
|
45
45
|
"verify:rules": "tsx scripts/verify-rule-refs.ts",
|
|
46
|
-
"
|
|
46
|
+
"verify:rule-overlap": "tsx scripts/verify-rule-overlap.ts",
|
|
47
|
+
"gate": "pnpm typecheck && pnpm verify:rules && pnpm verify:rule-overlap && pnpm lint && pnpm format:check && pnpm build && pnpm test",
|
|
47
48
|
"humanize:baseline": "tsx scripts/humanize-baseline.ts",
|
|
48
49
|
"build:output-style": "tsx scripts/build-output-style.ts",
|
|
49
50
|
"verify:output-style": "tsx scripts/build-output-style.ts --dry-run"
|
|
@@ -28,7 +28,7 @@ You are the Harness Reviewer agent.
|
|
|
28
28
|
|
|
29
29
|
| 필드 | 뜻 |
|
|
30
30
|
|---|---|
|
|
31
|
-
| `kind` | `selfContamination`, `copyDrift`, `ruleIdListGap`, `forwardRef`, `backwardRef`, `knowledgeDoc` 중 하나 |
|
|
31
|
+
| `kind` | `selfContamination`, `copyDrift`, `ruleIdListGap`, `ruleOverlap`, `forwardRef`, `backwardRef`, `knowledgeDoc` 중 하나 |
|
|
32
32
|
| `sourceFile`, `sourceLine` | 후보가 걸린 파일과 줄 |
|
|
33
33
|
| `targetRepo`, `targetPath` | 참조가 가리키는 레포와 경로. 레포 안 후보면 이 레포 이름입니다 |
|
|
34
34
|
| `matchedText` | 걸린 조각 |
|
|
@@ -101,6 +101,26 @@ You are the Harness Reviewer agent.
|
|
|
101
101
|
- 룰 문구만 다듬은 변경입니다. 뜻과 심각도가 그대로면 목록을 바꿀 까닭이 없습니다
|
|
102
102
|
- 테스트나 fixture에서 특정 룰만 골라 검사하는 목록입니다
|
|
103
103
|
|
|
104
|
+
### ruleOverlap — 룰북 룰끼리 겹치는 자리
|
|
105
|
+
|
|
106
|
+
룰북 PR에서 이번에 새로 생긴 문장이 다른 룰이나 같은 룰의 다른 조항과 겹치는 자리입니다. `matchedText` 앞의 `[코드]`가 무엇이 겹쳤는지 알려 줍니다. `contextLines`는 겹친 두 문장입니다.
|
|
107
|
+
|
|
108
|
+
`needsLlmJudgment`가 `false`인 후보는 탐지기로 확인이 끝났습니다. 처방이 다른 룰 탐지기에 걸리거나(`after-hit`), 형태로 빠진다고 적은 예외를 자기 탐지기가 잡거나(`form-exempt-hit`), 예외로 둔 말을 순서 문장 없이 다른 룰이 잡는(`exempt-hit-other`) 경우입니다. 룰북 문장을 고칠 자리라 결함으로 올립니다.
|
|
109
|
+
|
|
110
|
+
`true`인 후보는 질문입니다. 결함으로 올리는 자리입니다.
|
|
111
|
+
|
|
112
|
+
- `target-exempt-share`: 금지 예시가 같은 룰의 예외 조항으로 빠집니다. 금지 예시를 예외 기준에 그대로 대 보면 통과가 나옵니다
|
|
113
|
+
- `exceptions-no-order`: 새 예외와 기존 예외나 판정 기준이 같은 입력에 함께 걸리고 판정이 반대로 납니다. 그 입력을 하나 만들어 코멘트에 적습니다
|
|
114
|
+
- `cited-no-order`: 두 룰에 함께 걸리는 말이 있는데 어느 쪽으로 판정할지 없습니다. 그 말을 하나 대 보고 한쪽 룰의 예외가 다른 쪽 대상을 면제하는지 봅니다
|
|
115
|
+
- `shared-source`: 한쪽 처방대로 옮긴 결과가 다른 쪽 금지 예시가 됩니다
|
|
116
|
+
|
|
117
|
+
버리는 자리입니다.
|
|
118
|
+
|
|
119
|
+
- 두 문장이 이미 같은 문장 안에서 경계를 갈랐거나 다른 곳에 순서를 정한 문장이 있습니다
|
|
120
|
+
- 겹치는 입력을 직접 만들어 봤는데 두 룰 판정이 같은 쪽으로 납니다. 겹쳐도 모순이 아니면 코멘트를 안 냅니다
|
|
121
|
+
|
|
122
|
+
이 후보는 문장의 형태만 보고 넓게 모읍니다. 재현해 보니 문제없던 룰북 커밋 12개에서도 2개가 나왔습니다(`docs/experiments/2026-10-rule-overlap-check.md`). 그래서 반대 판정이 나는 입력을 대지 못하면 올리지 않습니다.
|
|
123
|
+
|
|
104
124
|
### forwardRef — 바뀐 문서가 가리키는 경로, 헤딩, 링크, PR이 실제로 있는지
|
|
105
125
|
|
|
106
126
|
**자기 레포부터 봅니다.** `docs/`, `README.md`, `src/` 같은 흔한 경로는 거의 모든 레포에 있습니다. 다른 레포에 있다고 맞다고 보거나 없다고 틀렸다고 보기 전에 플러그인 루트 기준으로 이 레포에 있는지 확인합니다.
|
|
@@ -5,7 +5,7 @@ import { type SkippedRepo } from './search-backend.js';
|
|
|
5
5
|
import { type Identifier, type ReferenceCandidate, type ReferenceCandidateKind, type SearchBackendKind } from './types.js';
|
|
6
6
|
export declare const COLLECT_BACKENDS: readonly ["local", "github"];
|
|
7
7
|
export type CollectBackend = (typeof COLLECT_BACKENDS)[number];
|
|
8
|
-
export declare const DETECTOR_NAMES: readonly ["relatedRepos", "identifiers", "selfContamination", "copyDrift", "ruleIdListGap", "forwardSearch", "backwardSearch", "selfReferences"];
|
|
8
|
+
export declare const DETECTOR_NAMES: readonly ["relatedRepos", "identifiers", "selfContamination", "copyDrift", "ruleIdListGap", "ruleOverlap", "forwardSearch", "backwardSearch", "selfReferences"];
|
|
9
9
|
export type DetectorName = (typeof DETECTOR_NAMES)[number];
|
|
10
10
|
export interface DetectorStatus {
|
|
11
11
|
status: 'ok' | 'skipped';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect.d.ts","sourceRoot":"","sources":["../../../src/harness-review/collect.ts"],"names":[],"mappings":"AAUA,OAAO,EAAS,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"collect.d.ts","sourceRoot":"","sources":["../../../src/harness-review/collect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 참조 후보 수집 오케스트레이터.
|
|
3
3
|
*
|
|
4
|
-
* review 스킬 1단계 뒤에 한 번 돌아 검출기
|
|
4
|
+
* review 스킬 1단계 뒤에 한 번 돌아 검출기 일곱 개의 결과를 JSON 하나로 묶는다. 판정은 하지 않는다.
|
|
5
5
|
* 검출기 하나가 예외를 던져도 그 검출기만 skipped로 적고 나머지는 끝까지 돈다. 후보 수집이
|
|
6
6
|
* 리뷰를 막으면 안 되기 때문이다(C0). 조회가 막혔거나 원격이 없으면 참조 검사 영역을 리뷰 불가로
|
|
7
7
|
* 표시해 스킬이 사용자에게 물을 수 있게 한다(C7).
|
|
@@ -16,6 +16,7 @@ import { GithubCodeSearchAdapter, orgWildcard } from './github-code-search.js';
|
|
|
16
16
|
import { extractIdentifiersFromGit, isHarnessPath, isRuleDocPath } from './identifiers.js';
|
|
17
17
|
import { detectRelatedRepos, readOriginRepo } from './related-repos.js';
|
|
18
18
|
import { findRuleIdListGapsFromGit } from './rule-id-lists.js';
|
|
19
|
+
import { findRuleOverlapFromGit } from './rule-overlap.js';
|
|
19
20
|
import { LocalCloneBackend } from './search-backend.js';
|
|
20
21
|
import { findSelfContamination } from './self-contamination.js';
|
|
21
22
|
import { findSelfReferences } from './self-references.js';
|
|
@@ -27,6 +28,7 @@ export const DETECTOR_NAMES = [
|
|
|
27
28
|
'selfContamination',
|
|
28
29
|
'copyDrift',
|
|
29
30
|
'ruleIdListGap',
|
|
31
|
+
'ruleOverlap',
|
|
30
32
|
'forwardSearch',
|
|
31
33
|
'backwardSearch',
|
|
32
34
|
'selfReferences',
|
|
@@ -156,6 +158,9 @@ export async function collectReferenceCandidates(opts) {
|
|
|
156
158
|
run('ruleIdListGap', () => {
|
|
157
159
|
addCandidates(findRuleIdListGapsFromGit(repoRoot, opts.base, opts.head, repo));
|
|
158
160
|
});
|
|
161
|
+
run('ruleOverlap', () => {
|
|
162
|
+
addCandidates(findRuleOverlapFromGit(repoRoot, opts.base, opts.head, repo));
|
|
163
|
+
});
|
|
159
164
|
// 역방향 검색은 관련 레포만 본다. 같은 레포 안에 남은 옛 이름은 여기서 찾는다
|
|
160
165
|
run('selfReferences', () => {
|
|
161
166
|
addCandidates(findSelfReferences({ repoRoot, base: opts.base, head: opts.head, repo, identifiers }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect.js","sourceRoot":"","sources":["../../../src/harness-review/collect.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"collect.js","sourceRoot":"","sources":["../../../src/harness-review/collect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-overlap.d.ts","sourceRoot":"","sources":["../../../src/harness-review/rule-overlap.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA4BrD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,kBAAkB,EAAE,CA6CtB"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 룰북 PR에서 룰끼리 겹치는 자리를 harness-reviewer 후보로 싣는다.
|
|
3
|
+
*
|
|
4
|
+
* 판정은 `src/humanize/overlap.ts`가 한다. 여기서는 base와 head의 룰북을 git에서 읽어
|
|
5
|
+
* 이번 변경에서 새로 생긴 문장이 낀 것만 후보로 바꾼다. 룰북 전체를 늘 걸면 오래된
|
|
6
|
+
* 겹침이 PR마다 다시 올라와서 리뷰어가 후보를 안 읽게 된다.
|
|
7
|
+
*/
|
|
8
|
+
import { execFileSync } from 'node:child_process';
|
|
9
|
+
import { dirname } from 'node:path';
|
|
10
|
+
import { changedSentences, checkOverlap, hasRuleTable, parseRuleEntries, RULE_DETECTORS, } from '../humanize/overlap.js';
|
|
11
|
+
/** 룰북이 사는 자리. 플러그인 공유 레퍼런스뿐이다 */
|
|
12
|
+
const RULEBOOK_DIR = /(?:^|\/)_shared\/references\/[^/]+\.md$/;
|
|
13
|
+
function rulebooksAt(git, ref, dirs) {
|
|
14
|
+
const entries = [];
|
|
15
|
+
for (const dir of dirs) {
|
|
16
|
+
let names;
|
|
17
|
+
try {
|
|
18
|
+
names = git('ls-tree', '--name-only', `${ref}:${dir}`).split('\n').filter(Boolean);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
// base에 없던 디렉토리면 그쪽 문장이 전부 새것이다
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
for (const name of names.filter((n) => n.endsWith('.md'))) {
|
|
25
|
+
const path = `${dir}/${name}`;
|
|
26
|
+
const text = git('show', `${ref}:${path}`);
|
|
27
|
+
if (hasRuleTable(text))
|
|
28
|
+
entries.push(...parseRuleEntries(text, path));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return entries;
|
|
32
|
+
}
|
|
33
|
+
export function findRuleOverlapFromGit(repoRoot, base, head, repoName) {
|
|
34
|
+
const git = (...args) => execFileSync('git', ['-c', 'core.quotepath=false', ...args], {
|
|
35
|
+
cwd: repoRoot,
|
|
36
|
+
encoding: 'utf-8',
|
|
37
|
+
maxBuffer: 64 * 1024 * 1024,
|
|
38
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
39
|
+
});
|
|
40
|
+
const changedFiles = git('diff', '--name-only', base, head)
|
|
41
|
+
.split('\n')
|
|
42
|
+
.filter((p) => RULEBOOK_DIR.test(p));
|
|
43
|
+
if (changedFiles.length === 0)
|
|
44
|
+
return [];
|
|
45
|
+
// 겹침은 파일을 넘나든다. 바뀐 룰북과 같은 디렉토리의 룰북을 함께 읽는다
|
|
46
|
+
const dirs = new Set(changedFiles.map((p) => dirname(p)));
|
|
47
|
+
const headEntries = rulebooksAt(git, head, dirs);
|
|
48
|
+
if (headEntries.length === 0)
|
|
49
|
+
return [];
|
|
50
|
+
const changed = changedSentences(rulebooksAt(git, base, dirs), headEntries);
|
|
51
|
+
if (changed.size === 0)
|
|
52
|
+
return [];
|
|
53
|
+
const report = checkOverlap(headEntries, RULE_DETECTORS, { changed });
|
|
54
|
+
const fromMatrix = report.findings
|
|
55
|
+
.filter((f) => f.level === 'error' && changed.has(f.example.sentence))
|
|
56
|
+
.map((f) => ({
|
|
57
|
+
kind: 'ruleOverlap',
|
|
58
|
+
sourceFile: headEntries.find((e) => e.id === f.ruleId)?.file ?? '',
|
|
59
|
+
sourceLine: f.example.line,
|
|
60
|
+
targetRepo: repoName,
|
|
61
|
+
targetPath: headEntries.find((e) => e.id === f.hitBy)?.file ?? '',
|
|
62
|
+
matchedText: `[${f.code}] ${f.message}`,
|
|
63
|
+
contextLines: [f.example.sentence],
|
|
64
|
+
needsLlmJudgment: false,
|
|
65
|
+
}));
|
|
66
|
+
const fromText = report.candidates.map((c) => ({
|
|
67
|
+
kind: 'ruleOverlap',
|
|
68
|
+
sourceFile: c.file,
|
|
69
|
+
sourceLine: c.line,
|
|
70
|
+
targetRepo: repoName,
|
|
71
|
+
targetPath: headEntries.find((e) => e.id === c.rules[1])?.file ?? c.file,
|
|
72
|
+
matchedText: `[${c.code}] ${c.question}`,
|
|
73
|
+
contextLines: c.evidence,
|
|
74
|
+
needsLlmJudgment: true,
|
|
75
|
+
}));
|
|
76
|
+
return [...fromMatrix, ...fromText];
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=rule-overlap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-overlap.js","sourceRoot":"","sources":["../../../src/harness-review/rule-overlap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const REFERENCE_CANDIDATE_KINDS: readonly ["selfContamination", "copyDrift", "forwardRef", "backwardRef", "knowledgeDoc", "ruleIdListGap"];
|
|
1
|
+
export declare const REFERENCE_CANDIDATE_KINDS: readonly ["selfContamination", "copyDrift", "forwardRef", "backwardRef", "knowledgeDoc", "ruleIdListGap", "ruleOverlap"];
|
|
2
2
|
export type ReferenceCandidateKind = (typeof REFERENCE_CANDIDATE_KINDS)[number];
|
|
3
3
|
export interface ReferenceCandidate {
|
|
4
4
|
kind: ReferenceCandidateKind;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/harness-review/types.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/harness-review/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/harness-review/types.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,mBAAmB;IACnB,WAAW;IACX,YAAY;IACZ,aAAa;IACb,cAAc;IACd,eAAe;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/harness-review/types.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,mBAAmB;IACnB,WAAW;IACX,YAAY;IACZ,aAAa;IACb,cAAc;IACd,eAAe;IACf,aAAa;CACL,CAAC;AAiBX,aAAa;AACb,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM;IACN,SAAS;IACT,QAAQ;IACR,WAAW;IACX,WAAW;IACX,gBAAgB;IAChB,YAAY;IACZ,aAAa;IACb,aAAa;IACb,eAAe;CACP,CAAC;AAIX,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAU,CAAC;AAIxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,KAAK,CAAU,CAAC;AAW9D,cAAc;AACd,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAU,CAAC;AAW3E,cAAc;AACd,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,CAAU,CAAC;AAoB3F,gBAAgB;AAChB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,cAAc,EAAE,YAAY,CAAU,CAAC;AAU5E,YAAY;AACZ,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAI/D,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,UAAU;IACV,WAAW;IACX,eAAe;IACf,kBAAkB;CACV,CAAC;AAIX;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,WAAW;IACX,kBAAkB;IAClB,mBAAmB;IACnB,iBAAiB;CACT,CAAC;AAIX,qDAAqD;AACrD,MAAM,UAAU,sBAAsB,CAAC,YAA8B;IACnE,OAAO,YAAY,KAAK,kBAAkB,IAAI,YAAY,KAAK,mBAAmB,CAAC;AACrF,CAAC;AAYD,oBAAoB;AACpB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAU,CAAC;AAI7D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,sBAAsB,EAAE,QAAQ,EAAE,oBAAoB,CAAU,CAAC;AAa/F,cAAc;AACd,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAU,CAAC;AAIzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,iBAAiB,CAAU,CAAC;AAerF,cAAc;AACd,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,cAAc,EAAE,WAAW,EAAE,MAAM,CAAU,CAAC;AAI1F,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,OAAO,CAAU,CAAC;AA6B1D,kBAAkB;AAClB,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,oBAAoB;IACpB,iBAAiB;IACjB,iBAAiB;IACjB,qBAAqB;IACrB,qBAAqB;IACrB,UAAU;CACF,CAAC;AASX,eAAe;AACf,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,aAAa,EAAE,eAAe,CAAU,CAAC;AAItE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,WAAW,CAAU,CAAC"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
export type ExampleKind = 'before' | 'after' | 'exempt';
|
|
2
|
+
export interface RuleExample {
|
|
3
|
+
ruleId: string;
|
|
4
|
+
kind: ExampleKind;
|
|
5
|
+
text: string;
|
|
6
|
+
/** 예시가 나온 문장. 후보 질문에 그대로 붙인다 */
|
|
7
|
+
sentence: string;
|
|
8
|
+
line: number;
|
|
9
|
+
}
|
|
10
|
+
export interface RuleEntry {
|
|
11
|
+
id: string;
|
|
12
|
+
file: string;
|
|
13
|
+
line: number;
|
|
14
|
+
/** 행과 그 룰에 딸린 문단의 문장 전부 */
|
|
15
|
+
sentences: RuleSentence[];
|
|
16
|
+
examples: RuleExample[];
|
|
17
|
+
}
|
|
18
|
+
export interface RuleSentence {
|
|
19
|
+
text: string;
|
|
20
|
+
line: number;
|
|
21
|
+
exception: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface DetectorSet {
|
|
24
|
+
/** 탐지기가 있는 룰 ID */
|
|
25
|
+
ids: readonly string[];
|
|
26
|
+
/** 걸린 룰 ID와 걸린 문자열 */
|
|
27
|
+
run: (text: string) => Array<{
|
|
28
|
+
ruleId: string;
|
|
29
|
+
samples: string[];
|
|
30
|
+
}>;
|
|
31
|
+
}
|
|
32
|
+
/** 이 레포 탐지기. 과거 커밋을 재현할 때는 그 커밋의 탐지기로 같은 꼴을 만들어 넘긴다 */
|
|
33
|
+
export declare const RULE_DETECTORS: DetectorSet;
|
|
34
|
+
export type FindingCode = 'after-hit' | 'before-miss' | 'exempt-hit-self' | 'form-exempt-hit' | 'exempt-hit-other' | 'before-hit-other';
|
|
35
|
+
export interface MatrixFinding {
|
|
36
|
+
code: FindingCode;
|
|
37
|
+
/** error는 게이트를 막는다. info는 리뷰 단계에 보이기만 한다 */
|
|
38
|
+
level: 'error' | 'info';
|
|
39
|
+
ruleId: string;
|
|
40
|
+
/** 걸린 탐지기 룰. before-miss는 자기 자신 */
|
|
41
|
+
hitBy: string;
|
|
42
|
+
example: RuleExample;
|
|
43
|
+
message: string;
|
|
44
|
+
}
|
|
45
|
+
export type CandidateCode = 'target-exempt-share' | 'exceptions-no-order' | 'cited-no-order' | 'shared-source';
|
|
46
|
+
export interface OverlapCandidate {
|
|
47
|
+
code: CandidateCode;
|
|
48
|
+
rules: string[];
|
|
49
|
+
file: string;
|
|
50
|
+
line: number;
|
|
51
|
+
/** 리뷰어에게 넘길 질문 */
|
|
52
|
+
question: string;
|
|
53
|
+
evidence: string[];
|
|
54
|
+
}
|
|
55
|
+
export interface Undecidable {
|
|
56
|
+
ruleId: string;
|
|
57
|
+
file: string;
|
|
58
|
+
line: number;
|
|
59
|
+
before: number;
|
|
60
|
+
exempt: number;
|
|
61
|
+
}
|
|
62
|
+
export interface OverlapReport {
|
|
63
|
+
findings: MatrixFinding[];
|
|
64
|
+
candidates: OverlapCandidate[];
|
|
65
|
+
undecidable: Undecidable[];
|
|
66
|
+
}
|
|
67
|
+
/** 룰 표를 가진 문서만 룰북으로 본다. 표 머리가 "| ID | 패턴 |"이다 */
|
|
68
|
+
export declare function hasRuleTable(markdown: string): boolean;
|
|
69
|
+
/** 문장 끝 마침표로 자른다. 괄호 안 마침표나 소수점은 안 자른다 */
|
|
70
|
+
export declare function sentencesOf(text: string): string[];
|
|
71
|
+
/**
|
|
72
|
+
* 룰북 하나를 룰 단위로 읽는다.
|
|
73
|
+
*
|
|
74
|
+
* 룰은 표의 행에만 있지 않다. 행이 길어지면 상세를 표 아래 문단으로 빼서, 겹침 사례의
|
|
75
|
+
* 절반이 그 문단에서 나왔다(ca3a2dbb의 '원본' 경계). 그래서 룰 하나만 부르는 헤딩 아래
|
|
76
|
+
* 문단과 볼드 도입구가 룰을 부르는 문단을 그 룰에 붙인다.
|
|
77
|
+
*/
|
|
78
|
+
export declare function parseRuleEntries(markdown: string, file: string): RuleEntry[];
|
|
79
|
+
/**
|
|
80
|
+
* 탐지기 행렬.
|
|
81
|
+
*
|
|
82
|
+
* - 처방(after)이 아무 탐지기에나 걸리면 룰북이 시키는 대로 고친 글이 다시 걸린다 (error)
|
|
83
|
+
* - 예외로 둔 말을 다른 룰 탐지기가 잡으면 두 룰이 같은 말에 반대로 판정한다.
|
|
84
|
+
* 둘 사이에 순서를 정한 문장이 없으면 error다
|
|
85
|
+
* - 형태로 빠진다고 적은 예외를 자기 탐지기가 잡으면 선언과 탐지기가 갈라진 것이다 (error)
|
|
86
|
+
* - 뜻으로 가르는 예외를 자기 탐지기가 잡는 건 룰북이 "넓게 건다"고 적어둔 룰이 많아 info다
|
|
87
|
+
* - 금지 예시를 자기 탐지기가 못 잡는 건 룰북이 탐지기 범위를 좁혀 적어둔 자리가 섞여 info다
|
|
88
|
+
* - 금지 예시가 다른 룰에도 걸리는 건 순서 문장이 없을 때만 보인다 (info)
|
|
89
|
+
*/
|
|
90
|
+
export declare function runMatrix(entries: RuleEntry[], detectors: DetectorSet): MatrixFinding[];
|
|
91
|
+
/** 내용어 낱말. 조사를 떼고 두 글자 이상만 남긴다 */
|
|
92
|
+
export declare function contentWords(text: string): string[];
|
|
93
|
+
export declare function hangulSkeleton(text: string): string;
|
|
94
|
+
/** 영어를 같은 뼈대로. 한국어 음차가 구분하지 않는 자음을 한데 모은다 */
|
|
95
|
+
export declare function latinSkeleton(text: string): string;
|
|
96
|
+
export interface CandidateOptions {
|
|
97
|
+
/**
|
|
98
|
+
* 이번 변경에서 새로 생긴 문장. 주면 그 문장이 끼는 후보만 남긴다.
|
|
99
|
+
* 안 주면 전부 낸다 — 룰북 전체를 훑을 때다.
|
|
100
|
+
*/
|
|
101
|
+
changed?: ReadonlySet<string>;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* 탐지기로 판정이 안 되는 겹침을 질문으로 뽑는다.
|
|
105
|
+
*
|
|
106
|
+
* 판정이 아니다. 같은 낱말이 금지와 예외에 함께 나온다고 다 모순은 아니다 —
|
|
107
|
+
* "원본"처럼 어느 쪽인지 가르는 문장이 이미 있을 수 있다. 그래서 리뷰어가 읽을
|
|
108
|
+
* 질문으로만 넘기고 게이트에 걸지 않는다.
|
|
109
|
+
*/
|
|
110
|
+
export declare function findCandidates(entries: RuleEntry[], options?: CandidateOptions): OverlapCandidate[];
|
|
111
|
+
/** 탐지기가 없어 자기 예시를 판정할 수 없는 룰. 건너뛰지 않고 목록으로 드러낸다 */
|
|
112
|
+
export declare function undecidableRules(entries: RuleEntry[], detectors: DetectorSet): Undecidable[];
|
|
113
|
+
/** 이번 변경에서 새로 생긴 문장. 문장 단위로 비교해야 긴 행 한 칸의 수정이 행 전체로 번지지 않는다 */
|
|
114
|
+
export declare function changedSentences(base: RuleEntry[], head: RuleEntry[]): Set<string>;
|
|
115
|
+
export declare function checkOverlap(entries: RuleEntry[], detectors: DetectorSet, options?: CandidateOptions): OverlapReport;
|
|
116
|
+
//# sourceMappingURL=overlap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlap.d.ts","sourceRoot":"","sources":["../../../src/humanize/overlap.ts"],"names":[],"mappings":"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"}
|