@tienne/gestalt 0.83.1 → 0.84.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/CLAUDE.md +2 -2
- package/README.ko.md +3 -1
- package/README.md +3 -1
- package/dist/package.json +1 -1
- package/dist/plugin/review-agents/harness-reviewer/AGENT.md +211 -0
- package/dist/plugin/role-agents/_shared/references/ai-tell-quick-rules.md +4 -1
- package/dist/plugin/role-agents/_shared/references/comment-rules.md +3 -3
- package/dist/plugin/role-agents/_shared/references/rule-path-walk.md +1 -1
- package/dist/plugin/role-agents/_shared/references/style-guide.md +1 -0
- package/dist/plugin/role-agents/_shared/references/truncation-rules.md +1 -1
- package/dist/plugin/role-agents/suggestion-verifier/AGENT.md +7 -1
- package/dist/plugin/skills/_shared/proactive-routing.md +1 -0
- package/dist/plugin/skills/_shared/rule-sources.md +1 -1
- package/dist/plugin/skills/agent/SKILL.md +2 -0
- package/dist/plugin/skills/review/SKILL.md +343 -7
- package/dist/plugin/skills/review-loop/SKILL.md +124 -2
- package/dist/plugin/skills/ship/SKILL.md +40 -1
- package/dist/schemas/gestalt.schema.json +12 -0
- package/dist/src/cli/commands/approve-gate.d.ts +24 -0
- package/dist/src/cli/commands/approve-gate.d.ts.map +1 -0
- package/dist/src/cli/commands/approve-gate.js +90 -0
- package/dist/src/cli/commands/approve-gate.js.map +1 -0
- package/dist/src/cli/commands/harness-refs-cross-pr.d.ts +218 -0
- package/dist/src/cli/commands/harness-refs-cross-pr.d.ts.map +1 -0
- package/dist/src/cli/commands/harness-refs-cross-pr.js +934 -0
- package/dist/src/cli/commands/harness-refs-cross-pr.js.map +1 -0
- package/dist/src/cli/commands/harness-refs.d.ts +19 -0
- package/dist/src/cli/commands/harness-refs.d.ts.map +1 -0
- package/dist/src/cli/commands/harness-refs.js +51 -0
- package/dist/src/cli/commands/harness-refs.js.map +1 -0
- package/dist/src/cli/index.d.ts.map +1 -1
- package/dist/src/cli/index.js +97 -0
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/core/config.d.ts +3 -0
- package/dist/src/core/config.d.ts.map +1 -1
- package/dist/src/core/config.js +23 -0
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/types.d.ts +2 -0
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/harness-review/approve-gate.d.ts +53 -0
- package/dist/src/harness-review/approve-gate.d.ts.map +1 -0
- package/dist/src/harness-review/approve-gate.js +148 -0
- package/dist/src/harness-review/approve-gate.js.map +1 -0
- package/dist/src/harness-review/backward-search.d.ts +50 -0
- package/dist/src/harness-review/backward-search.d.ts.map +1 -0
- package/dist/src/harness-review/backward-search.js +183 -0
- package/dist/src/harness-review/backward-search.js.map +1 -0
- package/dist/src/harness-review/collect.d.ts +75 -0
- package/dist/src/harness-review/collect.d.ts.map +1 -0
- package/dist/src/harness-review/collect.js +253 -0
- package/dist/src/harness-review/collect.js.map +1 -0
- package/dist/src/harness-review/copy-drift.d.ts +83 -0
- package/dist/src/harness-review/copy-drift.d.ts.map +1 -0
- package/dist/src/harness-review/copy-drift.js +477 -0
- package/dist/src/harness-review/copy-drift.js.map +1 -0
- package/dist/src/harness-review/follow-up-marker.d.ts +29 -0
- package/dist/src/harness-review/follow-up-marker.d.ts.map +1 -0
- package/dist/src/harness-review/follow-up-marker.js +143 -0
- package/dist/src/harness-review/follow-up-marker.js.map +1 -0
- package/dist/src/harness-review/forward-search.d.ts +30 -0
- package/dist/src/harness-review/forward-search.d.ts.map +1 -0
- package/dist/src/harness-review/forward-search.js +381 -0
- package/dist/src/harness-review/forward-search.js.map +1 -0
- package/dist/src/harness-review/github-backend.d.ts +42 -0
- package/dist/src/harness-review/github-backend.d.ts.map +1 -0
- package/dist/src/harness-review/github-backend.js +130 -0
- package/dist/src/harness-review/github-backend.js.map +1 -0
- package/dist/src/harness-review/github-code-search.d.ts +46 -0
- package/dist/src/harness-review/github-code-search.d.ts.map +1 -0
- package/dist/src/harness-review/github-code-search.js +94 -0
- package/dist/src/harness-review/github-code-search.js.map +1 -0
- package/dist/src/harness-review/identifiers.d.ts +75 -0
- package/dist/src/harness-review/identifiers.d.ts.map +1 -0
- package/dist/src/harness-review/identifiers.js +678 -0
- package/dist/src/harness-review/identifiers.js.map +1 -0
- package/dist/src/harness-review/placeholders.d.ts +44 -0
- package/dist/src/harness-review/placeholders.d.ts.map +1 -0
- package/dist/src/harness-review/placeholders.js +138 -0
- package/dist/src/harness-review/placeholders.js.map +1 -0
- package/dist/src/harness-review/related-pr.d.ts +133 -0
- package/dist/src/harness-review/related-pr.d.ts.map +1 -0
- package/dist/src/harness-review/related-pr.js +553 -0
- package/dist/src/harness-review/related-pr.js.map +1 -0
- package/dist/src/harness-review/related-repos.d.ts +69 -0
- package/dist/src/harness-review/related-repos.d.ts.map +1 -0
- package/dist/src/harness-review/related-repos.js +430 -0
- package/dist/src/harness-review/related-repos.js.map +1 -0
- package/dist/src/harness-review/remote-url.d.ts +8 -0
- package/dist/src/harness-review/remote-url.d.ts.map +1 -0
- package/dist/src/harness-review/remote-url.js +35 -0
- package/dist/src/harness-review/remote-url.js.map +1 -0
- package/dist/src/harness-review/replay.d.ts +163 -0
- package/dist/src/harness-review/replay.d.ts.map +1 -0
- package/dist/src/harness-review/replay.js +575 -0
- package/dist/src/harness-review/replay.js.map +1 -0
- package/dist/src/harness-review/rule-id-lists.d.ts +38 -0
- package/dist/src/harness-review/rule-id-lists.d.ts.map +1 -0
- package/dist/src/harness-review/rule-id-lists.js +189 -0
- package/dist/src/harness-review/rule-id-lists.js.map +1 -0
- package/dist/src/harness-review/search-backend.d.ts +59 -0
- package/dist/src/harness-review/search-backend.d.ts.map +1 -0
- package/dist/src/harness-review/search-backend.js +178 -0
- package/dist/src/harness-review/search-backend.js.map +1 -0
- package/dist/src/harness-review/self-contamination.d.ts +83 -0
- package/dist/src/harness-review/self-contamination.d.ts.map +1 -0
- package/dist/src/harness-review/self-contamination.js +560 -0
- package/dist/src/harness-review/self-contamination.js.map +1 -0
- package/dist/src/harness-review/self-references.d.ts +20 -0
- package/dist/src/harness-review/self-references.d.ts.map +1 -0
- package/dist/src/harness-review/self-references.js +173 -0
- package/dist/src/harness-review/self-references.js.map +1 -0
- package/dist/src/harness-review/three-state.d.ts +79 -0
- package/dist/src/harness-review/three-state.d.ts.map +1 -0
- package/dist/src/harness-review/three-state.js +238 -0
- package/dist/src/harness-review/three-state.js.map +1 -0
- package/dist/src/harness-review/types.d.ts +148 -0
- package/dist/src/harness-review/types.d.ts.map +1 -0
- package/dist/src/harness-review/types.js +74 -0
- package/dist/src/harness-review/types.js.map +1 -0
- package/dist/src/humanize/detectors.d.ts.map +1 -1
- package/dist/src/humanize/detectors.js +3 -1
- package/dist/src/humanize/detectors.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/tools/review-passthrough.js +7 -1
- package/dist/src/mcp/tools/review-passthrough.js.map +1 -1
- package/dist/src/review/agent-matcher.d.ts +16 -1
- package/dist/src/review/agent-matcher.d.ts.map +1 -1
- package/dist/src/review/agent-matcher.js +31 -4
- package/dist/src/review/agent-matcher.js.map +1 -1
- package/dist/src/review/passthrough-engine.d.ts.map +1 -1
- package/dist/src/review/passthrough-engine.js +40 -2
- package/dist/src/review/passthrough-engine.js.map +1 -1
- 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/review-agents/harness-reviewer/AGENT.md +211 -0
- package/plugin/role-agents/_shared/references/ai-tell-quick-rules.md +4 -1
- package/plugin/role-agents/_shared/references/comment-rules.md +3 -3
- package/plugin/role-agents/_shared/references/rule-path-walk.md +1 -1
- package/plugin/role-agents/_shared/references/style-guide.md +1 -0
- package/plugin/role-agents/_shared/references/truncation-rules.md +1 -1
- package/plugin/role-agents/suggestion-verifier/AGENT.md +7 -1
- package/plugin/skills/_shared/proactive-routing.md +1 -0
- package/plugin/skills/_shared/rule-sources.md +1 -1
- package/plugin/skills/agent/SKILL.md +2 -0
- package/plugin/skills/review/SKILL.md +343 -7
- package/plugin/skills/review-loop/SKILL.md +124 -2
- package/plugin/skills/ship/SKILL.md +40 -1
- package/schemas/gestalt.schema.json +12 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifiers.js","sourceRoot":"","sources":["../../../src/harness-review/identifiers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { Placeholder } from './types.js';
|
|
2
|
+
export interface PlaceholderRepo {
|
|
3
|
+
/** 'owner/name' 또는 이름. 결과의 resolvedRepo에 그대로 실린다 */
|
|
4
|
+
repo: string;
|
|
5
|
+
dir: string;
|
|
6
|
+
}
|
|
7
|
+
export type PlaceholderReason = 'ownRepo' | 'unique' | 'ambiguous' | 'unmatched' | 'noPath';
|
|
8
|
+
export interface ResolvedPlaceholder extends Placeholder {
|
|
9
|
+
/** 토큰 뒤에 적힌 경로들. 토큰 자체는 뗀 상대 경로다 */
|
|
10
|
+
paths: string[];
|
|
11
|
+
/** 경로가 실제로 있는 레포 전부 */
|
|
12
|
+
matchedRepos: string[];
|
|
13
|
+
reason: PlaceholderReason;
|
|
14
|
+
/** multiple이나 none이라 값을 정하는 자리를 LLM이 읽어야 한다 */
|
|
15
|
+
needsLlmJudgment: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface PlaceholderRef {
|
|
18
|
+
token: string;
|
|
19
|
+
path: string;
|
|
20
|
+
line: number;
|
|
21
|
+
}
|
|
22
|
+
export interface ResolvePlaceholdersInput {
|
|
23
|
+
/** 해석 대상 문서가 든 레포(플러그인 루트가 속한 레포) */
|
|
24
|
+
ownRepo: PlaceholderRepo;
|
|
25
|
+
/** 관련 레포. ownRepo가 섞여 있어도 무시한다 */
|
|
26
|
+
otherRepos: PlaceholderRepo[];
|
|
27
|
+
/** ownRepo.dir 기준 상대 경로. 없으면 md 파일을 훑어 토큰이 있는 것만 본다 */
|
|
28
|
+
files?: string[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 어느 레포에나 있는 문서 이름. 자기 레포에 있다는 사실이 증거가 못 되므로 자기 레포 우선 규칙을 적용하지 않는다.
|
|
32
|
+
* 여기에만 맞는 파일이면 다른 레포에 없을 때 단독으로 풀린다.
|
|
33
|
+
*/
|
|
34
|
+
export declare const GENERIC_DOC_NAMES: ReadonlySet<string>;
|
|
35
|
+
export declare function extractPlaceholderRefs(text: string): PlaceholderRef[];
|
|
36
|
+
/**
|
|
37
|
+
* 파일마다, 그 파일에 나온 토큰마다 한 건씩 돌려준다. 같은 파일 안의 같은 토큰은 경로를 모아 한 번에 푼다.
|
|
38
|
+
* 서로 다른 파일의 같은 토큰은 각자 풀리므로 다른 레포로 갈 수 있다.
|
|
39
|
+
*/
|
|
40
|
+
export declare function resolvePlaceholders(input: ResolvePlaceholdersInput): ResolvedPlaceholder[];
|
|
41
|
+
/** task-11 같은 호출부가 문서 안 `{REPO_ROOT}/x` 언급을 어느 레포로 볼지 찾을 때 쓴다 */
|
|
42
|
+
export declare function lookupPlaceholder(results: ResolvedPlaceholder[], definingFile: string, token: string): ResolvedPlaceholder | undefined;
|
|
43
|
+
export declare function placeholdersNeedingJudgment(results: ResolvedPlaceholder[]): ResolvedPlaceholder[];
|
|
44
|
+
//# sourceMappingURL=placeholders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placeholders.d.ts","sourceRoot":"","sources":["../../../src/harness-review/placeholders.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE5F,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,oCAAoC;IACpC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,uBAAuB;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,+CAA+C;IAC/C,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACvC,qCAAqC;IACrC,OAAO,EAAE,eAAe,CAAC;IACzB,kCAAkC;IAClC,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAQhD,CAAC;AAeH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CASrE;AA0ED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,mBAAmB,EAAE,CAoB1F;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAAE,EAC9B,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,GACZ,mBAAmB,GAAG,SAAS,CAEjC;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CAEjG"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 자리표시자 파일 단위 해석.
|
|
3
|
+
*
|
|
4
|
+
* `{REPO_ROOT}`, `{DESIGN_ROOT}`, `$REPO_ROOT`는 같은 토큰이어도 파일마다 다른 레포를 가리킨다.
|
|
5
|
+
* 그래서 토큰 하나로 레포를 정하지 않고 그 파일이 토큰 뒤에 적은 경로들이 실제로 있는 레포를 찾는다.
|
|
6
|
+
* 자기 레포에 경로가 있으면 거기서 끝낸다. 다른 레포에도 같은 경로가 있는 흔한 경우의 오탐을 막으려는 순서다.
|
|
7
|
+
* 여러 레포에 맞거나 하나도 안 맞으면 코드가 정하지 않고 LLM 판정 후보로 넘긴다.
|
|
8
|
+
*/
|
|
9
|
+
import { existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
10
|
+
import { join } from 'node:path';
|
|
11
|
+
/**
|
|
12
|
+
* 어느 레포에나 있는 문서 이름. 자기 레포에 있다는 사실이 증거가 못 되므로 자기 레포 우선 규칙을 적용하지 않는다.
|
|
13
|
+
* 여기에만 맞는 파일이면 다른 레포에 없을 때 단독으로 풀린다.
|
|
14
|
+
*/
|
|
15
|
+
export const GENERIC_DOC_NAMES = new Set([
|
|
16
|
+
'readme.md',
|
|
17
|
+
'license',
|
|
18
|
+
'license.md',
|
|
19
|
+
'changelog.md',
|
|
20
|
+
'contributing.md',
|
|
21
|
+
'code_of_conduct.md',
|
|
22
|
+
'security.md',
|
|
23
|
+
]);
|
|
24
|
+
const SKIP_DIRS = new Set(['node_modules', '.git', '.gestalt', '.gestalt-test', 'dist']);
|
|
25
|
+
// {NAME_ROOT}, ${NAME_ROOT}, $NAME_ROOT 뒤에 `/경로`가 이어지는 꼴
|
|
26
|
+
const TOKEN_PATH = /(\{[A-Z][A-Z0-9_]*_ROOT\}|\$\{[A-Z][A-Z0-9_]*_ROOT\}|\$[A-Z][A-Z0-9_]*_ROOT)(\/[\w@.\-/]*)?/g;
|
|
27
|
+
function cleanPath(raw) {
|
|
28
|
+
return raw
|
|
29
|
+
.replace(/^\/+/, '')
|
|
30
|
+
.replace(/[.,;:)\]]+$/, '')
|
|
31
|
+
.replace(/\/+$/, '');
|
|
32
|
+
}
|
|
33
|
+
export function extractPlaceholderRefs(text) {
|
|
34
|
+
const refs = [];
|
|
35
|
+
const lines = text.split('\n');
|
|
36
|
+
for (let i = 0; i < lines.length; i++) {
|
|
37
|
+
for (const m of lines[i].matchAll(TOKEN_PATH)) {
|
|
38
|
+
refs.push({ token: m[1], path: cleanPath(m[2] ?? ''), line: i + 1 });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return refs;
|
|
42
|
+
}
|
|
43
|
+
function isGenericDoc(path) {
|
|
44
|
+
const base = path.split('/').pop() ?? path;
|
|
45
|
+
return GENERIC_DOC_NAMES.has(base.toLowerCase());
|
|
46
|
+
}
|
|
47
|
+
function reposHaving(paths, repos) {
|
|
48
|
+
return repos.filter((r) => paths.every((p) => existsSync(join(r.dir, p)))).map((r) => r.repo);
|
|
49
|
+
}
|
|
50
|
+
function resolveOne(token, definingFile, paths, ownRepo, others) {
|
|
51
|
+
const base = { token, definingFile, paths };
|
|
52
|
+
if (paths.length === 0) {
|
|
53
|
+
return {
|
|
54
|
+
...base,
|
|
55
|
+
resolutionStatus: 'none',
|
|
56
|
+
matchedRepos: [],
|
|
57
|
+
reason: 'noPath',
|
|
58
|
+
needsLlmJudgment: true,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const ownHas = reposHaving(paths, [ownRepo]).length > 0;
|
|
62
|
+
if (ownHas && !paths.every(isGenericDoc)) {
|
|
63
|
+
return {
|
|
64
|
+
...base,
|
|
65
|
+
resolutionStatus: 'single',
|
|
66
|
+
resolvedRepo: ownRepo.repo,
|
|
67
|
+
matchedRepos: [ownRepo.repo],
|
|
68
|
+
reason: 'ownRepo',
|
|
69
|
+
needsLlmJudgment: false,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const matched = reposHaving(paths, [ownRepo, ...others]);
|
|
73
|
+
if (matched.length === 1) {
|
|
74
|
+
return {
|
|
75
|
+
...base,
|
|
76
|
+
resolutionStatus: 'single',
|
|
77
|
+
resolvedRepo: matched[0],
|
|
78
|
+
matchedRepos: matched,
|
|
79
|
+
reason: matched[0] === ownRepo.repo ? 'ownRepo' : 'unique',
|
|
80
|
+
needsLlmJudgment: false,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
...base,
|
|
85
|
+
resolutionStatus: matched.length === 0 ? 'none' : 'multiple',
|
|
86
|
+
matchedRepos: matched,
|
|
87
|
+
reason: matched.length === 0 ? 'unmatched' : 'ambiguous',
|
|
88
|
+
needsLlmJudgment: true,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function listMarkdown(dir) {
|
|
92
|
+
const out = [];
|
|
93
|
+
const entries = readdirSync(dir, { recursive: true, withFileTypes: true });
|
|
94
|
+
for (const e of entries) {
|
|
95
|
+
if (!e.isFile() || !e.name.endsWith('.md'))
|
|
96
|
+
continue;
|
|
97
|
+
const abs = join(e.parentPath, e.name);
|
|
98
|
+
const rel = abs.slice(dir.length + 1);
|
|
99
|
+
if (rel.split('/').some((seg) => SKIP_DIRS.has(seg)))
|
|
100
|
+
continue;
|
|
101
|
+
out.push(rel);
|
|
102
|
+
}
|
|
103
|
+
return out.sort();
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* 파일마다, 그 파일에 나온 토큰마다 한 건씩 돌려준다. 같은 파일 안의 같은 토큰은 경로를 모아 한 번에 푼다.
|
|
107
|
+
* 서로 다른 파일의 같은 토큰은 각자 풀리므로 다른 레포로 갈 수 있다.
|
|
108
|
+
*/
|
|
109
|
+
export function resolvePlaceholders(input) {
|
|
110
|
+
const { ownRepo } = input;
|
|
111
|
+
const others = input.otherRepos.filter((r) => r.repo !== ownRepo.repo);
|
|
112
|
+
const files = input.files ?? listMarkdown(ownRepo.dir);
|
|
113
|
+
const results = [];
|
|
114
|
+
for (const file of files) {
|
|
115
|
+
const abs = join(ownRepo.dir, file);
|
|
116
|
+
if (!existsSync(abs))
|
|
117
|
+
continue;
|
|
118
|
+
const byToken = new Map();
|
|
119
|
+
for (const ref of extractPlaceholderRefs(readFileSync(abs, 'utf-8'))) {
|
|
120
|
+
const set = byToken.get(ref.token) ?? new Set();
|
|
121
|
+
if (ref.path)
|
|
122
|
+
set.add(ref.path);
|
|
123
|
+
byToken.set(ref.token, set);
|
|
124
|
+
}
|
|
125
|
+
for (const [token, paths] of byToken) {
|
|
126
|
+
results.push(resolveOne(token, file, [...paths].sort(), ownRepo, others));
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return results;
|
|
130
|
+
}
|
|
131
|
+
/** task-11 같은 호출부가 문서 안 `{REPO_ROOT}/x` 언급을 어느 레포로 볼지 찾을 때 쓴다 */
|
|
132
|
+
export function lookupPlaceholder(results, definingFile, token) {
|
|
133
|
+
return results.find((r) => r.definingFile === definingFile && r.token === token);
|
|
134
|
+
}
|
|
135
|
+
export function placeholdersNeedingJudgment(results) {
|
|
136
|
+
return results.filter((r) => r.needsLlmJudgment);
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=placeholders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placeholders.js","sourceRoot":"","sources":["../../../src/harness-review/placeholders.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { type GhRunner } from '../review-loop/fetch.js';
|
|
2
|
+
import { type BlockReason } from './github-backend.js';
|
|
3
|
+
import type { ConfirmationType, FoundByType, RelatedPR, RelatedRepo } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* 머지된 연관 PR 후보를 거슬러 찾는 기간. 이번 PR 생성 시각에서 센다. 실행 시각에서 세면
|
|
6
|
+
* 오래 열린 PR이나 재현 실행에서 같은 시기에 머지된 PR이 전부 빠진다.
|
|
7
|
+
* 사용자 결정으로 30일에 고정했고 설정으로 열지 않는다.
|
|
8
|
+
* 0이나 끄기 값을 받을 자리를 두면 그게 탐색을 끄는 스위치가 된다.
|
|
9
|
+
*/
|
|
10
|
+
export declare const MERGED_LOOKBACK_DAYS = 30;
|
|
11
|
+
/** "비슷한 시기"의 폭. 이번 PR 생성 시각 앞뒤로 이만큼 안에 만들어진 PR만 본다 */
|
|
12
|
+
export declare const SAME_AUTHOR_NEARBY_DAYS = 14;
|
|
13
|
+
/**
|
|
14
|
+
* 참조 대상을 건드리는 열린 PR 중 이번 PR보다 이만큼 먼저 열린 건 연관 후보로 안 본다.
|
|
15
|
+
* 이번 작업이 시작되기 전부터 열려 있던 PR이라, 파일이 겹쳐도 함께 진행한 작업이 아니다.
|
|
16
|
+
* 몇 달째 열린 PR 하나가 그 파일을 건드리는 모든 PR에 후보로 붙는 걸 막는다.
|
|
17
|
+
* 머지된 PR은 이번 PR 앞뒤로 이만큼 안에 열린 것만 본다. 뒤쪽을 막지 않으면 오래 열린 PR이나
|
|
18
|
+
* 재현 실행에서 최근 머지된 PR이 조회 결과를 다 채워 같은 시기 PR이 밀려난다.
|
|
19
|
+
*/
|
|
20
|
+
export declare const TOUCHES_TARGET_MAX_AGE_DAYS = 30;
|
|
21
|
+
/**
|
|
22
|
+
* 한 단계에서 상세 조회까지 가는 후보 상한. 검색은 열린 PR과 머지된 PR로 나눠 두 번 하고
|
|
23
|
+
* 이 상한도 각각에 건다. 합쳐서 자르면 열린 PR이 먼저 차서 머지된 PR이 밀려난다
|
|
24
|
+
*/
|
|
25
|
+
export declare const MAX_CANDIDATES_PER_STEP = 30;
|
|
26
|
+
/**
|
|
27
|
+
* 검색 한 번에 받아오는 결과 수. 상세 조회 상한보다 넉넉히 받아 생성일 거리로 줄 세운 뒤 자른다.
|
|
28
|
+
* GitHub 검색 기본 순서(best-match)대로 자르면 가까운 PR이 뒤로 밀려 빠진다
|
|
29
|
+
*/
|
|
30
|
+
export declare const SEARCH_FETCH_LIMIT = 100;
|
|
31
|
+
/** 본문에서 따라가는 링크 상한 */
|
|
32
|
+
export declare const MAX_BODY_LINKS = 20;
|
|
33
|
+
/**
|
|
34
|
+
* 확정 기준 표의 열. ship은 내 PR이라 ⓐ 승인 단계에서 한 줄로 확인받고
|
|
35
|
+
* review-loop는 남의 PR이라 작성자에게 질문으로 넘긴다.
|
|
36
|
+
*/
|
|
37
|
+
export declare const RELATED_PR_MODES: readonly ["ship", "reviewLoop"];
|
|
38
|
+
export type RelatedPrMode = (typeof RELATED_PR_MODES)[number];
|
|
39
|
+
/** 이번에 보는 PR. ship은 아직 GitHub PR이 없을 수 있어 number와 createdAt을 비워도 된다 */
|
|
40
|
+
export interface CurrentPr {
|
|
41
|
+
/** 'owner/name' */
|
|
42
|
+
repo: string;
|
|
43
|
+
number?: number;
|
|
44
|
+
title: string;
|
|
45
|
+
body: string;
|
|
46
|
+
author: string;
|
|
47
|
+
branch: string;
|
|
48
|
+
createdAt?: string;
|
|
49
|
+
}
|
|
50
|
+
/** 참조 대상 파일. 역방향 검색(task-10) 결과의 repo와 path를 그대로 넘긴다 */
|
|
51
|
+
export interface ReferenceTarget {
|
|
52
|
+
repo: string;
|
|
53
|
+
path: string;
|
|
54
|
+
}
|
|
55
|
+
export interface RelatedPrCandidate extends RelatedPR {
|
|
56
|
+
url: string;
|
|
57
|
+
author: string;
|
|
58
|
+
branch: string;
|
|
59
|
+
/** 판정 근거. 우리가 만든 문장이고 PR 본문을 옮겨 적지 않는다 */
|
|
60
|
+
evidence: string[];
|
|
61
|
+
signals: RelatedPrSignals;
|
|
62
|
+
}
|
|
63
|
+
export interface RelatedPrSignals {
|
|
64
|
+
bodyLink: boolean;
|
|
65
|
+
sharedTicketKeys: string[];
|
|
66
|
+
sameAuthor: boolean;
|
|
67
|
+
sameBranch: boolean;
|
|
68
|
+
touchedTargets: string[];
|
|
69
|
+
}
|
|
70
|
+
export type RelatedPrStep = FoundByType;
|
|
71
|
+
export interface RelatedPrSkip {
|
|
72
|
+
step: RelatedPrStep;
|
|
73
|
+
repo?: string;
|
|
74
|
+
number?: number;
|
|
75
|
+
reason: BlockReason | 'outsideRelatedRepos' | 'unparsable' | 'unknown';
|
|
76
|
+
detail: string;
|
|
77
|
+
}
|
|
78
|
+
export interface RelatedPrNotice {
|
|
79
|
+
repo: string;
|
|
80
|
+
number: number;
|
|
81
|
+
/** 지시로 위장한 문구가 있었다는 사실만 싣는다. 문구는 따르지 않는다 */
|
|
82
|
+
kind: 'instructionLikeText';
|
|
83
|
+
detail: string;
|
|
84
|
+
}
|
|
85
|
+
export interface FindRelatedPrsResult {
|
|
86
|
+
mode: RelatedPrMode;
|
|
87
|
+
candidates: RelatedPrCandidate[];
|
|
88
|
+
skipped: RelatedPrSkip[];
|
|
89
|
+
notices: RelatedPrNotice[];
|
|
90
|
+
/** 레포를 넘는 연관 PR이 있는데 본문에 링크가 없다. 추가 제안 코멘트 자리 */
|
|
91
|
+
suggestBodyLink: boolean;
|
|
92
|
+
/** 이번 PR에서 읽은 티켓 키 */
|
|
93
|
+
ticketKeys: string[];
|
|
94
|
+
}
|
|
95
|
+
export interface FindRelatedPrsOptions {
|
|
96
|
+
current: CurrentPr;
|
|
97
|
+
mode: RelatedPrMode;
|
|
98
|
+
/** 'owner/name' 또는 detectRelatedRepos()의 RelatedRepo. 이 목록 밖의 PR은 따라가지 않는다 */
|
|
99
|
+
relatedRepos: ReadonlyArray<string | Pick<RelatedRepo, 'owner' | 'name'>>;
|
|
100
|
+
referenceTargets?: readonly ReferenceTarget[];
|
|
101
|
+
gh?: GhRunner;
|
|
102
|
+
now?: Date;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* 이번 PR의 연관 PR을 찾아 확정 수준을 매긴다.
|
|
106
|
+
*
|
|
107
|
+
* 순서는 본문 링크, 같은 티켓 키, 참조 대상을 건드리는 열린 PR, 같은 작성자의 비슷한 시기 PR이다.
|
|
108
|
+
* 같은 PR이 여러 단계에 걸리면 먼저 찾은 단계가 foundBy가 되고 신호는 합친다.
|
|
109
|
+
*
|
|
110
|
+
* PR 본문과 제목은 링크와 티켓 키를 정규식으로 뽑는 데만 쓴다. 거기 적힌 문장은
|
|
111
|
+
* 탐색 범위도 확정 수준도 바꾸지 못한다 (untrusted-input.md).
|
|
112
|
+
*/
|
|
113
|
+
export declare function findRelatedPrs(opts: FindRelatedPrsOptions): FindRelatedPrsResult;
|
|
114
|
+
/**
|
|
115
|
+
* 확정 기준 표. ship과 review-loop가 갈리는 자리가 여기 하나다.
|
|
116
|
+
* - 본문 링크: 양쪽 다 확정
|
|
117
|
+
* - 같은 작성자 + 같은 티켓: 양쪽 다 확정. review-loop는 근거를 리포트에 싣는다
|
|
118
|
+
* - 같은 작성자 + 같은 브랜치명: ship만 확정
|
|
119
|
+
* - 그 밖(참조 대상만 건드림, 같은 작성자만 등): ship은 ⓐ에서 확인, review-loop는 작성자 질문
|
|
120
|
+
* 확정 못 한 후보가 이미 기본 브랜치에 머지됐으면 findRelatedPrs가 inDefaultBranch로 바꾼다.
|
|
121
|
+
* 기본 브랜치 조회가 gh를 타야 해서 이 함수 밖에 둔다
|
|
122
|
+
*/
|
|
123
|
+
export declare function decideConfirmation(signals: RelatedPrSignals, mode: RelatedPrMode): ConfirmationType;
|
|
124
|
+
/** 답 전까지 판정 근거로 쓰면 안 되는 후보를 거른다. confirmed만 세 상태 판정으로 넘긴다 */
|
|
125
|
+
export declare function confirmedRelatedPrs(candidates: readonly RelatedPrCandidate[]): RelatedPrCandidate[];
|
|
126
|
+
/** 본문에서 PR 링크를 뽑는다. 전체 URL과 owner/name#N 꼴만 본다 */
|
|
127
|
+
export declare function extractPrLinks(text: string): {
|
|
128
|
+
repo: string;
|
|
129
|
+
number: number;
|
|
130
|
+
}[];
|
|
131
|
+
/** 텍스트에서 티켓 키(PROJ-123 꼴)를 나온 순서대로 뽑는다 */
|
|
132
|
+
export declare function extractTicketKeys(text: string): string[];
|
|
133
|
+
//# sourceMappingURL=related-pr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"related-pr.d.ts","sourceRoot":"","sources":["../../../src/harness-review/related-pr.ts"],"names":[],"mappings":"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"}
|