@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.
Files changed (153) hide show
  1. package/CLAUDE.md +2 -2
  2. package/README.ko.md +3 -1
  3. package/README.md +3 -1
  4. package/dist/package.json +1 -1
  5. package/dist/plugin/review-agents/harness-reviewer/AGENT.md +211 -0
  6. package/dist/plugin/role-agents/_shared/references/ai-tell-quick-rules.md +4 -1
  7. package/dist/plugin/role-agents/_shared/references/comment-rules.md +3 -3
  8. package/dist/plugin/role-agents/_shared/references/rule-path-walk.md +1 -1
  9. package/dist/plugin/role-agents/_shared/references/style-guide.md +1 -0
  10. package/dist/plugin/role-agents/_shared/references/truncation-rules.md +1 -1
  11. package/dist/plugin/role-agents/suggestion-verifier/AGENT.md +7 -1
  12. package/dist/plugin/skills/_shared/proactive-routing.md +1 -0
  13. package/dist/plugin/skills/_shared/rule-sources.md +1 -1
  14. package/dist/plugin/skills/agent/SKILL.md +2 -0
  15. package/dist/plugin/skills/review/SKILL.md +343 -7
  16. package/dist/plugin/skills/review-loop/SKILL.md +124 -2
  17. package/dist/plugin/skills/ship/SKILL.md +40 -1
  18. package/dist/schemas/gestalt.schema.json +12 -0
  19. package/dist/src/cli/commands/approve-gate.d.ts +24 -0
  20. package/dist/src/cli/commands/approve-gate.d.ts.map +1 -0
  21. package/dist/src/cli/commands/approve-gate.js +90 -0
  22. package/dist/src/cli/commands/approve-gate.js.map +1 -0
  23. package/dist/src/cli/commands/harness-refs-cross-pr.d.ts +218 -0
  24. package/dist/src/cli/commands/harness-refs-cross-pr.d.ts.map +1 -0
  25. package/dist/src/cli/commands/harness-refs-cross-pr.js +934 -0
  26. package/dist/src/cli/commands/harness-refs-cross-pr.js.map +1 -0
  27. package/dist/src/cli/commands/harness-refs.d.ts +19 -0
  28. package/dist/src/cli/commands/harness-refs.d.ts.map +1 -0
  29. package/dist/src/cli/commands/harness-refs.js +51 -0
  30. package/dist/src/cli/commands/harness-refs.js.map +1 -0
  31. package/dist/src/cli/index.d.ts.map +1 -1
  32. package/dist/src/cli/index.js +97 -0
  33. package/dist/src/cli/index.js.map +1 -1
  34. package/dist/src/core/config.d.ts +3 -0
  35. package/dist/src/core/config.d.ts.map +1 -1
  36. package/dist/src/core/config.js +23 -0
  37. package/dist/src/core/config.js.map +1 -1
  38. package/dist/src/core/types.d.ts +2 -0
  39. package/dist/src/core/types.d.ts.map +1 -1
  40. package/dist/src/harness-review/approve-gate.d.ts +53 -0
  41. package/dist/src/harness-review/approve-gate.d.ts.map +1 -0
  42. package/dist/src/harness-review/approve-gate.js +148 -0
  43. package/dist/src/harness-review/approve-gate.js.map +1 -0
  44. package/dist/src/harness-review/backward-search.d.ts +50 -0
  45. package/dist/src/harness-review/backward-search.d.ts.map +1 -0
  46. package/dist/src/harness-review/backward-search.js +183 -0
  47. package/dist/src/harness-review/backward-search.js.map +1 -0
  48. package/dist/src/harness-review/collect.d.ts +75 -0
  49. package/dist/src/harness-review/collect.d.ts.map +1 -0
  50. package/dist/src/harness-review/collect.js +253 -0
  51. package/dist/src/harness-review/collect.js.map +1 -0
  52. package/dist/src/harness-review/copy-drift.d.ts +83 -0
  53. package/dist/src/harness-review/copy-drift.d.ts.map +1 -0
  54. package/dist/src/harness-review/copy-drift.js +477 -0
  55. package/dist/src/harness-review/copy-drift.js.map +1 -0
  56. package/dist/src/harness-review/follow-up-marker.d.ts +29 -0
  57. package/dist/src/harness-review/follow-up-marker.d.ts.map +1 -0
  58. package/dist/src/harness-review/follow-up-marker.js +143 -0
  59. package/dist/src/harness-review/follow-up-marker.js.map +1 -0
  60. package/dist/src/harness-review/forward-search.d.ts +30 -0
  61. package/dist/src/harness-review/forward-search.d.ts.map +1 -0
  62. package/dist/src/harness-review/forward-search.js +381 -0
  63. package/dist/src/harness-review/forward-search.js.map +1 -0
  64. package/dist/src/harness-review/github-backend.d.ts +42 -0
  65. package/dist/src/harness-review/github-backend.d.ts.map +1 -0
  66. package/dist/src/harness-review/github-backend.js +130 -0
  67. package/dist/src/harness-review/github-backend.js.map +1 -0
  68. package/dist/src/harness-review/github-code-search.d.ts +46 -0
  69. package/dist/src/harness-review/github-code-search.d.ts.map +1 -0
  70. package/dist/src/harness-review/github-code-search.js +94 -0
  71. package/dist/src/harness-review/github-code-search.js.map +1 -0
  72. package/dist/src/harness-review/identifiers.d.ts +75 -0
  73. package/dist/src/harness-review/identifiers.d.ts.map +1 -0
  74. package/dist/src/harness-review/identifiers.js +678 -0
  75. package/dist/src/harness-review/identifiers.js.map +1 -0
  76. package/dist/src/harness-review/placeholders.d.ts +44 -0
  77. package/dist/src/harness-review/placeholders.d.ts.map +1 -0
  78. package/dist/src/harness-review/placeholders.js +138 -0
  79. package/dist/src/harness-review/placeholders.js.map +1 -0
  80. package/dist/src/harness-review/related-pr.d.ts +133 -0
  81. package/dist/src/harness-review/related-pr.d.ts.map +1 -0
  82. package/dist/src/harness-review/related-pr.js +553 -0
  83. package/dist/src/harness-review/related-pr.js.map +1 -0
  84. package/dist/src/harness-review/related-repos.d.ts +69 -0
  85. package/dist/src/harness-review/related-repos.d.ts.map +1 -0
  86. package/dist/src/harness-review/related-repos.js +430 -0
  87. package/dist/src/harness-review/related-repos.js.map +1 -0
  88. package/dist/src/harness-review/remote-url.d.ts +8 -0
  89. package/dist/src/harness-review/remote-url.d.ts.map +1 -0
  90. package/dist/src/harness-review/remote-url.js +35 -0
  91. package/dist/src/harness-review/remote-url.js.map +1 -0
  92. package/dist/src/harness-review/replay.d.ts +163 -0
  93. package/dist/src/harness-review/replay.d.ts.map +1 -0
  94. package/dist/src/harness-review/replay.js +575 -0
  95. package/dist/src/harness-review/replay.js.map +1 -0
  96. package/dist/src/harness-review/rule-id-lists.d.ts +38 -0
  97. package/dist/src/harness-review/rule-id-lists.d.ts.map +1 -0
  98. package/dist/src/harness-review/rule-id-lists.js +189 -0
  99. package/dist/src/harness-review/rule-id-lists.js.map +1 -0
  100. package/dist/src/harness-review/search-backend.d.ts +59 -0
  101. package/dist/src/harness-review/search-backend.d.ts.map +1 -0
  102. package/dist/src/harness-review/search-backend.js +178 -0
  103. package/dist/src/harness-review/search-backend.js.map +1 -0
  104. package/dist/src/harness-review/self-contamination.d.ts +83 -0
  105. package/dist/src/harness-review/self-contamination.d.ts.map +1 -0
  106. package/dist/src/harness-review/self-contamination.js +560 -0
  107. package/dist/src/harness-review/self-contamination.js.map +1 -0
  108. package/dist/src/harness-review/self-references.d.ts +20 -0
  109. package/dist/src/harness-review/self-references.d.ts.map +1 -0
  110. package/dist/src/harness-review/self-references.js +173 -0
  111. package/dist/src/harness-review/self-references.js.map +1 -0
  112. package/dist/src/harness-review/three-state.d.ts +79 -0
  113. package/dist/src/harness-review/three-state.d.ts.map +1 -0
  114. package/dist/src/harness-review/three-state.js +238 -0
  115. package/dist/src/harness-review/three-state.js.map +1 -0
  116. package/dist/src/harness-review/types.d.ts +148 -0
  117. package/dist/src/harness-review/types.d.ts.map +1 -0
  118. package/dist/src/harness-review/types.js +74 -0
  119. package/dist/src/harness-review/types.js.map +1 -0
  120. package/dist/src/humanize/detectors.d.ts.map +1 -1
  121. package/dist/src/humanize/detectors.js +3 -1
  122. package/dist/src/humanize/detectors.js.map +1 -1
  123. package/dist/src/index.d.ts +1 -0
  124. package/dist/src/index.d.ts.map +1 -1
  125. package/dist/src/index.js +1 -0
  126. package/dist/src/index.js.map +1 -1
  127. package/dist/src/mcp/tools/review-passthrough.js +7 -1
  128. package/dist/src/mcp/tools/review-passthrough.js.map +1 -1
  129. package/dist/src/review/agent-matcher.d.ts +16 -1
  130. package/dist/src/review/agent-matcher.d.ts.map +1 -1
  131. package/dist/src/review/agent-matcher.js +31 -4
  132. package/dist/src/review/agent-matcher.js.map +1 -1
  133. package/dist/src/review/passthrough-engine.d.ts.map +1 -1
  134. package/dist/src/review/passthrough-engine.js +40 -2
  135. package/dist/src/review/passthrough-engine.js.map +1 -1
  136. package/package.json +1 -1
  137. package/plugin/.codex-plugin/plugin.json +1 -1
  138. package/plugin/.mcp.json +1 -1
  139. package/plugin/mcp.json +1 -1
  140. package/plugin/review-agents/harness-reviewer/AGENT.md +211 -0
  141. package/plugin/role-agents/_shared/references/ai-tell-quick-rules.md +4 -1
  142. package/plugin/role-agents/_shared/references/comment-rules.md +3 -3
  143. package/plugin/role-agents/_shared/references/rule-path-walk.md +1 -1
  144. package/plugin/role-agents/_shared/references/style-guide.md +1 -0
  145. package/plugin/role-agents/_shared/references/truncation-rules.md +1 -1
  146. package/plugin/role-agents/suggestion-verifier/AGENT.md +7 -1
  147. package/plugin/skills/_shared/proactive-routing.md +1 -0
  148. package/plugin/skills/_shared/rule-sources.md +1 -1
  149. package/plugin/skills/agent/SKILL.md +2 -0
  150. package/plugin/skills/review/SKILL.md +343 -7
  151. package/plugin/skills/review-loop/SKILL.md +124 -2
  152. package/plugin/skills/ship/SKILL.md +40 -1
  153. 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":"AAAA,OAAO,EAAS,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAW,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEjG;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,sDAAsD;AACtD,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,sBAAsB;AACtB,eAAO,MAAM,cAAc,KAAK,CAAC;AAIjC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,iCAAkC,CAAC;AAChE,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,uEAAuE;AACvE,MAAM,WAAW,SAAS;IACxB,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wDAAwD;AACxD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC;AAExC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,GAAG,qBAAqB,GAAG,YAAY,GAAG,SAAS,CAAC;IACvE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,IAAI,EAAE,qBAAqB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,iDAAiD;IACjD,eAAe,EAAE,OAAO,CAAC;IACzB,sBAAsB;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,SAAS,CAAC;IACnB,IAAI,EAAE,aAAa,CAAC;IACpB,8EAA8E;IAC9E,YAAY,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;IAC1E,gBAAgB,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAC9C,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAqBD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,oBAAoB,CAqQhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,aAAa,GAClB,gBAAgB,CAKlB;AAED,6DAA6D;AAC7D,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,SAAS,kBAAkB,EAAE,GACxC,kBAAkB,EAAE,CAEtB;AAKD,kDAAkD;AAClD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,CAc/E;AAkBD,0CAA0C;AAC1C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAQxD"}