@tienne/gestalt 0.74.0 → 0.75.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 (83) hide show
  1. package/dist/package.json +1 -1
  2. package/dist/plugin/role-agents/_shared/references/ai-tell-quick-rules.md +18 -5
  3. package/dist/plugin/role-agents/_shared/references/author-voice.md +3 -3
  4. package/dist/plugin/role-agents/change-context-writer/AGENT.md +1 -1
  5. package/dist/plugin/role-agents/code-review-responder/AGENT.md +25 -0
  6. package/dist/plugin/role-agents/code-review-writer/AGENT.md +34 -11
  7. package/dist/plugin/role-agents/explainer/references/audience.md +4 -4
  8. package/dist/plugin/role-agents/humanize-monolith/AGENT.md +1 -1
  9. package/dist/plugin/role-agents/impact-writer/references/voice.md +1 -0
  10. package/dist/plugin/role-agents/jira-writer/AGENT.md +1 -1
  11. package/dist/plugin/role-agents/slack-messenger/references/voice-sample.md +1 -1
  12. package/dist/plugin/skills/_shared/agent-delegation.md +1 -1
  13. package/dist/plugin/skills/local-pr/SKILL.md +1 -1
  14. package/dist/plugin/skills/pr/SKILL.md +1 -1
  15. package/dist/plugin/skills/review/SKILL.md +61 -8
  16. package/dist/plugin/skills/review-reply/SKILL.md +46 -5
  17. package/dist/plugin/skills/ship/SKILL.md +7 -7
  18. package/dist/src/cli/commands/explain-eval.d.ts +1 -1
  19. package/dist/src/cli/commands/explain-eval.js +1 -1
  20. package/dist/src/cli/commands/humanize-scan.d.ts +7 -0
  21. package/dist/src/cli/commands/humanize-scan.d.ts.map +1 -1
  22. package/dist/src/cli/commands/humanize-scan.js +16 -2
  23. package/dist/src/cli/commands/humanize-scan.js.map +1 -1
  24. package/dist/src/cli/commands/pr.d.ts +2 -2
  25. package/dist/src/cli/commands/pr.js +6 -6
  26. package/dist/src/cli/commands/pr.js.map +1 -1
  27. package/dist/src/events/store.js +1 -1
  28. package/dist/src/explain/check.js +4 -4
  29. package/dist/src/explain/terms.js +3 -3
  30. package/dist/src/humanize/detectors.d.ts +67 -8
  31. package/dist/src/humanize/detectors.d.ts.map +1 -1
  32. package/dist/src/humanize/detectors.js +142 -33
  33. package/dist/src/humanize/detectors.js.map +1 -1
  34. package/dist/src/humanize/index.d.ts +1 -1
  35. package/dist/src/humanize/index.d.ts.map +1 -1
  36. package/dist/src/humanize/index.js +1 -1
  37. package/dist/src/humanize/index.js.map +1 -1
  38. package/dist/src/humanize/rules.d.ts +2 -0
  39. package/dist/src/humanize/rules.d.ts.map +1 -1
  40. package/dist/src/humanize/rules.js.map +1 -1
  41. package/dist/src/humanize/scan.d.ts +17 -10
  42. package/dist/src/humanize/scan.d.ts.map +1 -1
  43. package/dist/src/humanize/scan.js +31 -1
  44. package/dist/src/humanize/scan.js.map +1 -1
  45. package/dist/src/local-pr/engine.d.ts +2 -2
  46. package/dist/src/local-pr/engine.js +2 -2
  47. package/dist/src/local-pr/git.d.ts +9 -8
  48. package/dist/src/local-pr/git.d.ts.map +1 -1
  49. package/dist/src/local-pr/git.js +9 -8
  50. package/dist/src/local-pr/git.js.map +1 -1
  51. package/dist/src/local-pr/registry.d.ts +1 -1
  52. package/dist/src/local-pr/registry.js +1 -1
  53. package/dist/src/local-pr/repository.d.ts +2 -2
  54. package/dist/src/local-pr/repository.js +2 -2
  55. package/dist/src/mcp/schemas.js +1 -1
  56. package/dist/src/mcp/schemas.js.map +1 -1
  57. package/dist/src/mcp/tools/pr.d.ts +1 -1
  58. package/dist/src/mcp/tools/pr.d.ts.map +1 -1
  59. package/dist/src/mcp/tools/pr.js +3 -3
  60. package/dist/src/mcp/tools/pr.js.map +1 -1
  61. package/dist/src/mcp/tools/review-passthrough.js +2 -2
  62. package/dist/src/review/passthrough-engine.js +1 -1
  63. package/dist/src/review/passthrough-engine.js.map +1 -1
  64. package/package.json +1 -1
  65. package/plugin/.codex-plugin/plugin.json +1 -1
  66. package/plugin/.mcp.json +1 -1
  67. package/plugin/mcp.json +1 -1
  68. package/plugin/role-agents/_shared/references/ai-tell-quick-rules.md +18 -5
  69. package/plugin/role-agents/_shared/references/author-voice.md +3 -3
  70. package/plugin/role-agents/change-context-writer/AGENT.md +1 -1
  71. package/plugin/role-agents/code-review-responder/AGENT.md +25 -0
  72. package/plugin/role-agents/code-review-writer/AGENT.md +34 -11
  73. package/plugin/role-agents/explainer/references/audience.md +4 -4
  74. package/plugin/role-agents/humanize-monolith/AGENT.md +1 -1
  75. package/plugin/role-agents/impact-writer/references/voice.md +1 -0
  76. package/plugin/role-agents/jira-writer/AGENT.md +1 -1
  77. package/plugin/role-agents/slack-messenger/references/voice-sample.md +1 -1
  78. package/plugin/skills/_shared/agent-delegation.md +1 -1
  79. package/plugin/skills/local-pr/SKILL.md +1 -1
  80. package/plugin/skills/pr/SKILL.md +1 -1
  81. package/plugin/skills/review/SKILL.md +61 -8
  82. package/plugin/skills/review-reply/SKILL.md +46 -5
  83. package/plugin/skills/ship/SKILL.md +7 -7
@@ -4,24 +4,29 @@
4
4
  * 여기 있는 건 정규식으로 셀 수 있는 룰뿐이다. D-5 의인화 주어처럼 뜻을 봐야 판단되는
5
5
  * 룰은 일부러 뺐다 — 멀쩡한 문장에서 검사가 멈추면 아무도 안 쓴다.
6
6
  *
7
- * 전부 정확히 걸러내지는 못한다. 잘못 감지나 미탐이 남는 갈래는자리 주석이 어디까지 잡고
7
+ * 전부 정확히 걸러내지는 못한다. 잘못 감지나 미탐이 남는 자리는 그 주석이 어디까지 잡고
8
8
  * 어디부터 놓치는지 적고 코퍼스가 그 경계를 잡는다.
9
9
  * 탐지기가 없는 룰은 모델이 자체검증으로 본다.
10
10
  */
11
11
  const SAMPLE_CAP = 3;
12
12
  const SAMPLE_MAX = 80;
13
13
  /**
14
- * 룰을 적용할 산문 줄만 남긴다.
14
+ * 입력을 산문 줄과 표 줄로 가른다.
15
15
  *
16
16
  * 코드펜스는 언어 태그가 붙었을 때만 코드로 본다. 태그 없는 펜스에는 실행 코드가 아니라
17
17
  * 서브에이전트가 지시로 읽는 한글 산문이 들어 있어서, 통째로 빼면 그 안의 S1이 그대로 빠져나간다.
18
18
  * 인용줄도 마커만 떼고 산문으로 본다 — 스킬 문서 상단 규칙 블록이 전부 인용이라 빼면 검사가 비는다.
19
- * 표는 항목 압축이라 그대로 뺀다.
19
+ *
20
+ * **표 줄을 여기서 함께 가른다.** 표만 따로 훑으려고 원문을 다시 파싱하면 이 fence 판정이
21
+ * 두 곳으로 갈라진다. 실제로 그렇게 만들었다가 태그 붙은 펜스 안의 표 예시가 어휘 룰에
22
+ * 걸렸다 — 문서가 표를 코드로 인용한 자리인데 검사는 진짜 표로 봤다.
20
23
  */
21
- export function proseLines(text, options = {}) {
22
- const lines = [];
24
+ export function splitLines(text, options = {}) {
25
+ const prose = [];
26
+ const table = [];
23
27
  let inFence = false;
24
28
  let fenceIsCode = false;
29
+ let droppedQuotes = 0;
25
30
  text.split('\n').forEach((raw, index) => {
26
31
  const trimmed = raw.trimStart();
27
32
  if (trimmed.startsWith('```')) {
@@ -32,24 +37,36 @@ export function proseLines(text, options = {}) {
32
37
  }
33
38
  if (inFence && fenceIsCode)
34
39
  return;
35
- if (trimmed.startsWith('|'))
40
+ if (trimmed.startsWith('|')) {
41
+ table.push({ text: raw, number: index + 1 });
36
42
  return;
43
+ }
37
44
  if (trimmed.startsWith('>')) {
38
- if (options.excludeQuotes)
45
+ if (options.excludeQuotes) {
46
+ droppedQuotes += 1;
39
47
  return;
40
- lines.push({ text: raw.replace(/^\s*>+\s?/, ''), number: index + 1 });
48
+ }
49
+ prose.push({ text: raw.replace(/^\s*>+\s?/, ''), number: index + 1 });
41
50
  return;
42
51
  }
43
- lines.push({ text: raw, number: index + 1 });
52
+ prose.push({ text: raw, number: index + 1 });
44
53
  });
45
- return lines;
54
+ return { prose, table, droppedQuotes };
46
55
  }
47
- function proseOnly(text, options = {}) {
48
- return proseLines(text, options)
56
+ /** 룰을 적용할 산문 줄만 남긴다. 표는 항목 압축이라 여기서 빠진다 */
57
+ export function proseLines(text, options = {}) {
58
+ return splitLines(text, options).prose;
59
+ }
60
+ /** 이미 가른 산문 줄을 룰이 볼 텍스트로 잇는다. 인라인 백틱은 인용이라 지운다 */
61
+ function joinProse(lines) {
62
+ return lines
49
63
  .map((line) => line.text)
50
64
  .join('\n')
51
65
  .replace(/`[^`\n]+`/g, ' ');
52
66
  }
67
+ function proseOnly(text, options = {}) {
68
+ return joinProse(proseLines(text, options));
69
+ }
53
70
  /**
54
71
  * 보고문에 실릴 조각을 눌러 둔다.
55
72
  *
@@ -97,24 +114,24 @@ export function splitSentences(text) {
97
114
  const NOT_HANGUL = '(?![가-힣])';
98
115
  const JOSA = '(?:는|도|만|요)?';
99
116
  /**
100
- * I-6 의 "산출" 갈래. 뒤에 무엇이 오는지로 판정 자리와 파생명사를 가른다.
117
+ * I-6 의 "산출" 분기. 뒤에 무엇이 오는지로 판정 자리와 파생명사를 가른다.
101
118
  *
102
119
  * 닫힌 목록인 이유는 반대쪽이 안 닫히기 때문이다. 산출 뒤에 붙는 파생어(산출물,
103
120
  * 산출량, 산출도구, 산출로직)는 합성 가능한 명사라 끝이 없는데, 활용 어미와 조사는
104
121
  * 한국어 형태론상 유한하다. 막을 것보다 열 것을 세는 쪽이 닫힌다.
105
122
  *
106
- * 오른쪽을 막는 갈래는 둘이다. 활용형 하, 한, 할, 함, 해는 뒤 글자를 함께 봐서
123
+ * 오른쪽을 막는 분기는 둘이다. 활용형 하, 한, 할, 함, 해는 뒤 글자를 함께 봐서
107
124
  * "산출하위", "산출한계", "산출할당량", "산출함수", "산출해상도"를 뺀다.
108
- * 조사 갈래(은, 는, 이, 을, 과, 와, 에, 도, 만, 로)는 통째로 NOT_HANGUL 을 붙여
125
+ * 조사 분기(은, 는, 이, 을, 과, 와, 에, 도, 만, 로)는 통째로 NOT_HANGUL 을 붙여
109
126
  * "산출도구", "산출로직", "산출과정"을 뺀다.
110
127
  * 했, 되, 된, 될, 됐, 돼는 합성어 첫 글자로 쓰일 일이 없어 안 막는다.
111
- * 에서, 까지, 부터는 두 글자라 같은 이유로 안 막는다. 그래서 이 갈래만 "산출에서는"처럼
128
+ * 에서, 까지, 부터는 두 글자라 같은 이유로 안 막는다. 그래서 이 분기만 "산출에서는"처럼
112
129
  * 보조사가 더 붙은 꼴을 잡는다.
113
130
  *
114
131
  * 어미를 하나 늘릴 때는 이 배열에 줄을 더하고 코퍼스에도 hit 과 반대편 miss 를 함께
115
132
  * 넣는다. 넓히면 합성어가 다시 열리는지는 코퍼스가 잡아 준다.
116
133
  *
117
- * 조사 갈래를 문자 클래스로 옮기면서 "으"를 뺐다. "산출으로"는 비문이라 잡을 자리가 아니다.
134
+ * 조사 분기를 문자 클래스로 옮기면서 "으"를 뺐다. "산출으로"는 비문이라 잡을 자리가 아니다.
118
135
  */
119
136
  const SANCHUL = [
120
137
  '하[여는지고자기며면니게였죠다라세려겠신십]',
@@ -142,7 +159,12 @@ const DETECTORS = [
142
159
  matcher('A-19', new RegExp(`[가-힣]\\s*(?:에서의|에로의|으로의|로의|에의|으로부터의)${NOT_HANGUL}`, 'g')),
143
160
  // 미덕(virtue)과 불투명(opaque)은 한국어에서 제 뜻으로도 쓰여 정규식이 잘못 감지한다. 표에만 두고 모델이 본다
144
161
  // 의미론은 조사가 붙어 오므로 NOT_HANGUL을 못 쓴다. 형용사로 굳은 "의미론적"만 뺀다
145
- matcher('B-5', /물질화|내구성\s*있|의미론(?!적)/g),
162
+ // "죽임"은 명사형만 건다 — "프로세스를 죽인다"는 실무에서 굳은 정상 용법이다
163
+ // branch 를 옮긴 "갈래"는 앞말로 못 가른다. "두 갈래"가 코드 분기와 분류 양쪽에 다 나온다.
164
+ // 그래서 분류 뜻이 확실한 연어만 빼고 나머지를 전부 건다 — 갈리다, 흩어지다, 나뉘다,
165
+ // 나눠지다, 묶다에 갈래별과 "갈래에 몰아"다. 이 목록은 아래 정규식과 한 벌로 움직인다.
166
+ // 분류 뜻으로 남은 자리는 걸린 채로 두고 파일별 베이스라인이 받는다 — F-10·I-5 와 같은 방식이다
167
+ matcher('B-5', /물질화|내구성\s*있|의미론(?!적)|돌연변이|죽임|갈래(?!로\s*(?:갈리|흩어|나뉘|나눠|묶)|별|에\s*몰아)/g),
146
168
  matcher('C-11', /[가-힣](?:하고|하며|되고|되며|고|며|지만|면서|아서|어서),/g),
147
169
  matcher('C-12', /[가-힣A-Za-z0-9]·[가-힣A-Za-z0-9]/g),
148
170
  matcher('D-1', /(?:결론적으로|요약하자면|요약하면|정리하자면|정리하면|종합하면|이를\s*통해)/g),
@@ -161,7 +183,7 @@ const DETECTORS = [
161
183
  // 문자 클래스로 "보" 한 글자만 보면 그 둘이 그대로 걸린다.
162
184
  // 다만 "재보고 있-"은 진행형과 형태가 같아 열어 뒀다
163
185
  matcher('F-8', /(?:근거|의견|판단|영향|의미|가치|리스크)(?:를|을)\s*(?:재(?=봤|봐|보니|보면|본다|보았|보고\s*있|본(?![가-힣]))|달아(?=[봤봐본보았뒀둔두])|달았)/g),
164
- // 두 갈래를 한 룰이 본다. 룰북 F-10이 자물쇠 갈래를 F-7에서 넘겨받은 자리다.
186
+ // 두 분기를 한 룰이 본다. 룰북 F-10이 자물쇠 분기를 F-7에서 넘겨받은 자리다.
165
187
  //
166
188
  // `못 박-`은 어간까지만 열고 어미는 안 가린다 — "못 박았다", "못박아주세요", "못박은"이
167
189
  // 전부 걸린다. 띄어쓰기는 없어도 되고 하나까지 허용한다. 부정 부사가 앞에 붙은 "잘못
@@ -170,9 +192,9 @@ const DETECTORS = [
170
192
  // 룰이 가르는 축은 누가 정하는 자리냐인데 그건 형태로 안 보인다. 사람들이 협의해 정한
171
193
  // "팀이 일정을 못 박았다"도 여기 걸린다. 걸린 자리는 사람이 룰북 축으로 다시 본다 —
172
194
  // I-5가 같은 방식이다.
173
- // 형태로 빠지는 건 앞에 "못"이 없는 하드코딩 갈래("이 값 그냥 박아두죠")뿐이다.
195
+ // 형태로 빠지는 건 앞에 "못"이 없는 하드코딩 분기("이 값 그냥 박아두죠")뿐이다.
174
196
  //
175
- // 자물쇠 갈래에서 명사형 "잠금"이 빠지는 건 문자 클래스에 "금"이 없어서다. 뒤의 선읽기가
197
+ // 자물쇠 분기에서 명사형 "잠금"이 빠지는 건 문자 클래스에 "금"이 없어서다. 뒤의 선읽기가
176
198
  // 하는 일은 그게 아니라 "잠긴파일"처럼 붙여 쓴 꼴을 막는 것뿐이다 — 띄어 쓴 "잠긴 파일"은
177
199
  // 공백을 못 넘어 그대로 걸린다. F-7에서 옮겨오며 이 경계도 함께 왔다.
178
200
  // 문이나 물처럼 실제 물체를 대상으로 쓴 자리도 목적어를 안 가려서 함께 걸린다. 룰북이
@@ -184,7 +206,7 @@ const DETECTORS = [
184
206
  // "그"만 공백을 요구한다. 안 그러면 "그건"("것은"의 준말)이 걸리는데,
185
207
  // author-voice.md 가 그건 그대로 두라고 예외로 적어둔 자리다.
186
208
  //
187
- // 마지막 갈래는 한글 한 글자 + 공백 + 건 + 조사면 다 건다. 수량인지 사무투 분류사인지,
209
+ // 마지막 분기는 한글 한 글자 + 공백 + 건 + 조사면 다 건다. 수량인지 사무투 분류사인지,
188
210
  // 곧 "코멘트 여섯 건은"도 "확인이 필요한 게 두 건은"도 같이 걸린다.
189
211
  // 준말 "것은"은 뒤에 조사가 안 붙어서 빠진다 — "놓친 건 맞아요"는 공백이 있어도 조사가 없다.
190
212
  // 붙여 쓴 "그건"은 위의 공백 요구가 막는다.
@@ -197,7 +219,7 @@ const DETECTORS = [
197
219
  //
198
220
  // 활용형을 지적하-까지 그냥 열면 "원칙 위반을 지적하고" 같은 일반 동사가 걸린다.
199
221
  // 그래서 뒤에 오는 명사로 묶는데, 그것만으로는 3인칭 서술을 못 가른다 —
200
- // 그래서 주어 없는 갈래에도 lookbehind 를 붙였다. 앞이 한글 + 이, 가, 은, 는이면
222
+ // 그래서 주어 없는 분기에도 lookbehind 를 붙였다. 앞이 한글 + 이, 가, 은, 는이면
201
223
  // 3인칭 주어로 보고 뺀다 — "논문이 지적했던 부분", "논문은 지적했던 부분"이 빠지고
202
224
  // 주어를 생략한 "지적했던 부분"은 남는다.
203
225
  //
@@ -213,15 +235,15 @@ const DETECTORS = [
213
235
  // 더 좁은 문자 클래스로 의미 경계를 흉내 내면 반대편이 열린다. 더 좁히지 않는다.
214
236
  //
215
237
  // 그 lookbehind 는 "우리가", "저는"처럼 1인칭 화자의 꼬리도 함께 막는다. 그건 잡아야
216
- // 하는 자리라 화자 갈래를 앞에 둬서 거기서 먼저 걸리게 한다. 그래서 화자 목록에
238
+ // 하는 자리라 화자 분기를 앞에 둬서 거기서 먼저 걸리게 한다. 그래서 화자 목록에
217
239
  // 1인칭 대명사와 주격, 주제격 조사의 조합 여덟을 다 적는다 — 하나라도 빠뜨리면
218
240
  // lookbehind 가 그 자리를 3인칭으로 오인한다. 실제로 "가" 꼴만 적었을 때
219
241
  // "저는 지적했던 부분"이 통째로 빠졌다.
220
242
  //
221
- // 두 갈래의 활용형이 다르다. 화자 갈래는 한, 했던, 했었던을 열고 주어 없는 갈래는
243
+ // 두 분기의 활용형이 다르다. 화자 분기는 한, 했던, 했었던을 열고 주어 없는 분기는
222
244
  // 했던과 했었던만 연다. 주어가 없으면 "지적한"이 일반 동사와 구별이 안 돼서다.
223
245
  //
224
- // 화자 갈래는 왼쪽을 lookbehind 로 막는다. 안 막으면 "문제가", "주제가"의 꼬리가
246
+ // 화자 분기는 왼쪽을 lookbehind 로 막는다. 안 막으면 "문제가", "주제가"의 꼬리가
225
247
  // 화자로 읽힌다. 단독 "제"는 "실제", "규제"의 꼬리까지 먹어서 아예 뺐다.
226
248
  //
227
249
  // 화자와 "지적" 사이는 토큰 셋까지 허용한다 — "제가 리뷰에서 여러 번 지적한 부분"이
@@ -258,8 +280,22 @@ const DETECTORS = [
258
280
  sentenceInitial('H-3', ['이는', '이\\s*점에서', '이\\s*관점에서', '이\\s*말은']),
259
281
  ];
260
282
  export const DETECTABLE_RULE_IDS = DETECTORS.map((d) => d.ruleId);
261
- export function detect(text, ruleIds) {
262
- return detectOn(proseOnly(text), ruleIds);
283
+ /**
284
+ * 가른 줄에 룰을 걸어 산문과 표 결과를 합친다.
285
+ *
286
+ * detect 와 scanProse 가 같은 병합 규칙을 써야 한다 — 앞은 검사기가, 뒤는 게시 게이트가
287
+ * 쓰는 자리라 여기가 두 벌이 되면 두 경로가 조용히 갈라진다. 이 리뷰가 막으려던 게
288
+ * 정확히 그 갈라짐이다. 산문 텍스트도 함께 돌려줘 맞춤법 검사가 다시 안 잇게 한다.
289
+ */
290
+ function assemble(split, ruleIds, options = {}) {
291
+ const prose = joinProse(split.prose);
292
+ return {
293
+ detections: mergeDetections(detectOn(prose, ruleIds), options.skipTables ? [] : detectInTables(split.table, ruleIds)),
294
+ prose,
295
+ };
296
+ }
297
+ export function detect(text, ruleIds, options = {}) {
298
+ return assemble(splitLines(text, options), ruleIds, options).detections;
263
299
  }
264
300
  function detectOn(prose, ruleIds) {
265
301
  const wanted = ruleIds ? new Set(ruleIds) : null;
@@ -382,15 +418,88 @@ export function structureStats(text) {
382
418
  links: (text.match(/\[[^\]]+\]\([^)]+\)/g) ?? []).length,
383
419
  };
384
420
  }
421
+ /**
422
+ * 표 셀 안에서도 틀린 어휘 룰.
423
+ *
424
+ * 표를 산문에서 뺀 건 항목을 압축하는 자리라서다 — E-8 명사구 종결과 F-6 복합명사는
425
+ * 표 셀에서 정상 문법이다. 어휘가 틀린 건 자리를 안 가린다. 생물학 용어로 옮긴 mutant 는
426
+ * 표 안이라고 맞는 말이 되지 않는다.
427
+ *
428
+ * **여기 없는 어휘 룰은 빠진 이유가 각각 다르다.** C-12 가운뎃점은 룰북이 표를 예외로 적어 뒀다.
429
+ * B-3 음차는 탐지기 자체가 없어 넣어도 교집합에서 떨어진다 — 목록에 두면 표를 본다고
430
+ * 읽히지만 실제로는 한 건도 안 걸리는 죽은 항목이 된다. F-10과 I-5, I-6, D-1 은 표 셀에서
431
+ * 어떻게 걸리는지 코퍼스로 확인한 적이 없어 미뤘다. 넣을 때는 코퍼스 케이스를 함께 넣는다.
432
+ *
433
+ * **룰 문서의 예시 표는 이 스캔이 못 가린다.** ai-tell-quick-rules.md 의 대체어 표는
434
+ * "쓰지 말 것" 칸에 금지어를 그대로 적는 게 존재 이유인데 여기서는 위반으로 걸린다.
435
+ * 검사기가 경로를 모르므로 부르는 쪽이 끈다 — `humanize-scan --skip-tables` 와
436
+ * `verify-rule-refs.ts` 의 `isRulebook()` 이 그 자리다.
437
+ */
438
+ export const TABLE_SCANNED_RULE_IDS = ['B-5', 'D-3', 'D-4', 'F-7'];
439
+ /** 셀을 나눌 때 GFM 이스케이프 파이프를 살려 두는 자리표 */
440
+ const ESCAPED_PIPE = '\u0000pipe\u0000';
441
+ /**
442
+ * 표 줄에서 셀 구분자와 정렬행을 걷어낸다.
443
+ *
444
+ * 정렬행은 줄 전체 모양으로만 가른다. 표에서 몇 번째 줄인지는 안 보므로 모든 셀이
445
+ * `-` 나 공백뿐인 데이터 행도 함께 빠진다 — 플레이스홀더로 `-` 만 적은 행이 그렇다.
446
+ * 흔한 꼴이 아니라 그대로 뒀다.
447
+ */
448
+ export function tableCells(lines) {
449
+ return lines
450
+ .map((line) => line.text.trim())
451
+ .filter((line) => !/^\|[\s:|-]*\|?$/.test(line))
452
+ .map((line) => line
453
+ .replace(/\\\|/g, ESCAPED_PIPE)
454
+ .replace(/^\||\|$/g, '')
455
+ .split('|')
456
+ .join(' ')
457
+ .split(ESCAPED_PIPE)
458
+ .join('|'))
459
+ .join('\n');
460
+ }
461
+ /** 표 셀을 어휘 룰로만 훑는다. 호출자가 룰을 좁혔으면 그 교집합만 본다 */
462
+ function detectInTables(lines, ruleIds) {
463
+ const wanted = ruleIds
464
+ ? TABLE_SCANNED_RULE_IDS.filter((id) => ruleIds.includes(id))
465
+ : TABLE_SCANNED_RULE_IDS;
466
+ if (wanted.length === 0 || lines.length === 0)
467
+ return [];
468
+ return detectOn(tableCells(lines).replace(/`[^`\n]+`/g, ' '), wanted);
469
+ }
470
+ /** 같은 룰이 산문과 표 양쪽에서 걸리면 건수를 합치고 사례를 이어 붙인다 */
471
+ function mergeDetections(base, extra) {
472
+ const byRule = new Map(base.map((d) => [d.ruleId, { ...d, samples: [...d.samples] }]));
473
+ for (const found of extra) {
474
+ const seen = byRule.get(found.ruleId);
475
+ if (!seen) {
476
+ byRule.set(found.ruleId, { ...found, samples: [...found.samples] });
477
+ continue;
478
+ }
479
+ seen.count += found.count;
480
+ seen.samples = [...new Set([...seen.samples, ...found.samples])].slice(0, SAMPLE_CAP);
481
+ }
482
+ return [...byRule.values()];
483
+ }
385
484
  /**
386
485
  * 어투와 맞춤법을 한 산문 위에서 함께 본다.
387
486
  *
388
487
  * detect 와 spacingIssues 를 따로 부르면 줄 분할과 인용 제거가 두 번 돈다. 비용은 작지만
389
- * (500KB 입력에서 12%) 진짜 문제는 나중에 한쪽만 산문 기준이 바뀌면 어투와 맞춤법이 서로
390
- * 다른 텍스트를 보게 되는 것이다. 산문 정의를 여기 한 군데로 모은다.
488
+ * 진짜 문제는 나중에 한쪽만 산문 기준이 바뀌면 어투와 맞춤법이 서로 다른 텍스트를 보게 되는
489
+ * 것이다. 산문 정의를 여기 한 군데로 모은다. 그래서 splitLines 도 한 번만 돌려 나눠 쓴다.
391
490
  */
392
- export function scanProse(text, ruleIds) {
393
- const prose = proseOnly(text);
394
- return { detections: detectOn(prose, ruleIds), spacing: spacingOn(prose) };
491
+ export function scanProse(text, ruleIds, options = {}) {
492
+ const split = splitLines(text, options);
493
+ const { detections, prose } = assemble(split, ruleIds, options);
494
+ return {
495
+ detections,
496
+ spacing: spacingOn(prose),
497
+ // 인용이 남은 산문보다 많다. 0건과 뜻이 정반대라 부르는 쪽이 갈라 읽어야 한다.
498
+ //
499
+ // **이 판정은 코멘트 하나를 통째로 넘길 때만 뜻이 선다.** 여러 코멘트를 이어 붙여
500
+ // 넘기면 한 코멘트를 전부 인용으로 감싸도 다른 코멘트의 산문에 묻혀 안 걸린다.
501
+ // 게이트가 코멘트마다 따로 부르는 이유다 (review 와 review-reply SKILL.md)
502
+ allQuoted: split.droppedQuotes > split.prose.filter((line) => line.text.trim().length > 0).length,
503
+ };
395
504
  }
396
505
  //# sourceMappingURL=detectors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"detectors.js","sourceRoot":"","sources":["../../../src/humanize/detectors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detectors.js","sourceRoot":"","sources":["../../../src/humanize/detectors.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,5 @@ export { parseRuleBook, parseRegister, ruleLabel, s1Ids, type RuleScanOptions, c
2
2
  export { detect, countByRule, protectedTokens, missingProtectedTokens, structureStats, splitSentences, reportRegisterStats, spacingIssues, scanProse, DETECTABLE_RULE_IDS, type Detection, type ReportRegisterStats, type SpacingIssue, type StructureStats, } from './detectors.js';
3
3
  export { changeRate, type ChangeRateOptions } from './change-rate.js';
4
4
  export { runCheck, prescan, decide, formatReport, EXIT_CODE, THRESHOLD, MAX_ATTEMPTS, type CheckReport, type PrescanReport, type Decision, type NextAction, type RunCheckOptions, type RunCheckWithPrescan, type AxisResult, type Verdict, } from './check.js';
5
- export { scan, formatScan, type ScanReport, type ScanHit, type ScanOptions } from './scan.js';
5
+ export { scan, formatScan, isRulebookPath, type ScanReport, type ScanHit, type ScanOptions, } from './scan.js';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/humanize/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,SAAS,EACT,KAAK,EACL,KAAK,eAAe,EACpB,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,KAAK,QAAQ,EACb,KAAK,QAAQ,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,MAAM,EACN,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EACL,QAAQ,EACR,OAAO,EACP,MAAM,EACN,YAAY,EACZ,SAAS,EACT,SAAS,EACT,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,OAAO,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/humanize/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,SAAS,EACT,KAAK,EACL,KAAK,eAAe,EACpB,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,KAAK,QAAQ,EACb,KAAK,QAAQ,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,MAAM,EACN,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EACL,QAAQ,EACR,OAAO,EACP,MAAM,EACN,YAAY,EACZ,SAAS,EACT,SAAS,EACT,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,OAAO,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,IAAI,EACJ,UAAU,EACV,cAAc,EACd,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,WAAW,GACjB,MAAM,WAAW,CAAC"}
@@ -2,5 +2,5 @@ export { parseRuleBook, parseRegister, ruleLabel, s1Ids, citedRuleIds, expandIdR
2
2
  export { detect, countByRule, protectedTokens, missingProtectedTokens, structureStats, splitSentences, reportRegisterStats, spacingIssues, scanProse, DETECTABLE_RULE_IDS, } from './detectors.js';
3
3
  export { changeRate } from './change-rate.js';
4
4
  export { runCheck, prescan, decide, formatReport, EXIT_CODE, THRESHOLD, MAX_ATTEMPTS, } from './check.js';
5
- export { scan, formatScan } from './scan.js';
5
+ export { scan, formatScan, isRulebookPath, } from './scan.js';
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/humanize/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,SAAS,EACT,KAAK,EAEL,YAAY,EACZ,cAAc,EACd,gBAAgB,GAKjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,MAAM,EACN,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,mBAAmB,GAKpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAA0B,MAAM,kBAAkB,CAAC;AACtE,OAAO,EACL,QAAQ,EACR,OAAO,EACP,MAAM,EACN,YAAY,EACZ,SAAS,EACT,SAAS,EACT,YAAY,GASb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAmD,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/humanize/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,SAAS,EACT,KAAK,EAEL,YAAY,EACZ,cAAc,EACd,gBAAgB,GAKjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,MAAM,EACN,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,mBAAmB,GAKpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAA0B,MAAM,kBAAkB,CAAC;AACtE,OAAO,EACL,QAAQ,EACR,OAAO,EACP,MAAM,EACN,YAAY,EACZ,SAAS,EACT,SAAS,EACT,YAAY,GASb,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,IAAI,EACJ,UAAU,EACV,cAAc,GAIf,MAAM,WAAW,CAAC"}
@@ -42,6 +42,8 @@ export declare function s1Ids(book: RuleBook, register: Register): string[];
42
42
  export interface RuleScanOptions {
43
43
  register?: Register;
44
44
  book?: RuleBook;
45
+ /** 표 셀을 안 본다. 룰 문서처럼 표에 금지어를 예시로 적는 파일에서 켠다 */
46
+ skipTables?: boolean;
45
47
  }
46
48
  /** CLI 인자를 말투로 읽는다. 모르는 값은 doc이다 — 검사를 막을 이유가 없다 */
47
49
  export declare function parseRegister(value: string | undefined): Register;
@@ -1 +1 @@
1
- {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../src/humanize/rules.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1C,+BAA+B;AAC/B,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEjD,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,iCAAiC;IACjC,YAAY,EAAE,QAAQ,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,yBAAyB;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAID,eAAO,MAAM,gBAAgB,QAG5B,CAAC;AAeF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAmBrD;AAED,4CAA4C;AAC5C,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAEvD;AAED,wBAAgB,aAAa,CAAC,IAAI,GAAE,MAAyB,GAAG,QAAQ,CA6CvE;AAgCD,yCAAyC;AACzC,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAK5D;AAED,0BAA0B;AAC1B,wBAAgB,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAAE,CAKlE;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,oDAAoD;AACpD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAEjE"}
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../src/humanize/rules.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1C,+BAA+B;AAC/B,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEjD,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,iCAAiC;IACjC,YAAY,EAAE,QAAQ,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,yBAAyB;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAID,eAAO,MAAM,gBAAgB,QAG5B,CAAC;AAeF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAmBrD;AAED,4CAA4C;AAC5C,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAEvD;AAED,wBAAgB,aAAa,CAAC,IAAI,GAAE,MAAyB,GAAG,QAAQ,CA6CvE;AAgCD,yCAAyC;AACzC,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAK5D;AAED,0BAA0B;AAC1B,wBAAgB,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAAE,CAKlE;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,oDAAoD;AACpD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAEjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/humanize/rules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/humanize/rules.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,3 @@
1
- /**
2
- * 윤문 전에 원문을 훑어 "이번에 볼 룰"만 추린다.
3
- *
4
- * 룰북은 예순 개를 넘겼다. 매번 전부 펼치면 모델이 나눠 쓰는 주의가 룰마다 얇아진다.
5
- * 실제로 걸린 서너 개는 안 걸린 쉰 개에 묻힌다. 스캔은 그 반대로 간다 —
6
- * 걸린 룰만 처방과 함께 내놓는다. 나머지는 아예 말하지 않는다.
7
- *
8
- * 탐지기가 없는 S1은 목록으로만 넘긴다. 코드가 못 가리는 자리를 가린다고 하면
9
- * 그게 더 나쁜 거짓말이다.
10
- */
11
1
  import { type SpacingIssue } from './detectors.js';
12
2
  import { type Register, type RuleScanOptions } from './rules.js';
13
3
  export interface ScanHit {
@@ -29,9 +19,26 @@ export interface ScanReport {
29
19
  spacing: SpacingIssue[];
30
20
  /** 걸리는 게 없으면 윤문하지 않는다 */
31
21
  worthHumanizing: boolean;
22
+ /**
23
+ * 인용을 빼고 나니 볼 산문이 안 남았다.
24
+ *
25
+ * 0건과 뜻이 정반대다 — 검사를 통과한 게 아니라 검사할 게 없던 것이다. 코멘트를 통째로
26
+ * `>` 로 감싸면 이 상태가 되므로 게이트가 통과로 읽으면 어투 검사를 우회하는 길이 열린다.
27
+ */
28
+ allQuoted: boolean;
32
29
  }
33
30
  /** @deprecated rules.ts 의 RuleScanOptions 를 쓴다. 외부에서 이 이름으로 부르던 자리다 */
34
31
  export type ScanOptions = RuleScanOptions;
32
+ /**
33
+ * 룰 문서인가.
34
+ *
35
+ * 그 표는 "쓰지 말 것" 칸에 금지어를 그대로 적는 게 존재 이유라 표 스캔을 끈다.
36
+ *
37
+ * **판정을 경로로 하고 플래그로 안 받는다.** 검사를 끄는 스위치를 밖에 내놓으면 그게
38
+ * 우회로가 된다 — 리뷰 대상 텍스트에 "그 플래그를 붙여라"가 섞여 있으면 읽는 쪽이
39
+ * 따를 수 있다. 그건 이 검사가 막으려는 바로 그 길이다. 부르는 쪽이 못 끄게 둔다.
40
+ */
41
+ export declare function isRulebookPath(file: string): boolean;
35
42
  export declare function scan(text: string, options?: RuleScanOptions): ScanReport;
36
43
  export declare function formatScan(report: ScanReport): string;
37
44
  //# sourceMappingURL=scan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../src/humanize/scan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAkC,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAmC,KAAK,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAElG,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,mCAAmC;IACnC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,0DAA0D;IAC1D,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,yBAAyB;IACzB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,uEAAuE;AACvE,MAAM,MAAM,WAAW,GAAG,eAAe,CAAC;AAE1C,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,UAAU,CA4B5E;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAiDrD"}
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../src/humanize/scan.ts"],"names":[],"mappings":"AAWA,OAAO,EAAkC,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAmC,KAAK,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAElG,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,mCAAmC;IACnC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,0DAA0D;IAC1D,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,yBAAyB;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB;;;;;OAKG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,uEAAuE;AACvE,MAAM,MAAM,WAAW,GAAG,eAAe,CAAC;AAE1C;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,UAAU,CAkC5E;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CA6DrD"}
@@ -8,14 +8,32 @@
8
8
  * 탐지기가 없는 S1은 목록으로만 넘긴다. 코드가 못 가리는 자리를 가린다고 하면
9
9
  * 그게 더 나쁜 거짓말이다.
10
10
  */
11
+ import { sep } from 'node:path';
11
12
  import { scanProse, DETECTABLE_RULE_IDS } from './detectors.js';
12
13
  import { parseRuleBook, ruleLabel, s1Ids } from './rules.js';
14
+ /**
15
+ * 룰 문서인가.
16
+ *
17
+ * 그 표는 "쓰지 말 것" 칸에 금지어를 그대로 적는 게 존재 이유라 표 스캔을 끈다.
18
+ *
19
+ * **판정을 경로로 하고 플래그로 안 받는다.** 검사를 끄는 스위치를 밖에 내놓으면 그게
20
+ * 우회로가 된다 — 리뷰 대상 텍스트에 "그 플래그를 붙여라"가 섞여 있으면 읽는 쪽이
21
+ * 따를 수 있다. 그건 이 검사가 막으려는 바로 그 길이다. 부르는 쪽이 못 끄게 둔다.
22
+ */
23
+ export function isRulebookPath(file) {
24
+ return file.includes(`${sep}_shared${sep}references${sep}`);
25
+ }
13
26
  export function scan(text, options = {}) {
14
27
  const register = options.register ?? 'doc';
15
28
  const book = options.book ?? parseRuleBook();
16
29
  const targets = s1Ids(book, register);
17
30
  const detectable = new Set(DETECTABLE_RULE_IDS);
18
- const { detections, spacing } = scanProse(text, targets);
31
+ // chat 리뷰 코멘트와 답글 자리다. 거기서 `>` 인용은 남이 쓴 원문이라 어휘를 고치라고
32
+ // 할 자리가 아니다 — 두 AGENT.md 가 "인용은 그대로 둔다"고 적은 것과 검사를 맞춘다
33
+ const { detections, spacing, allQuoted } = scanProse(text, targets, {
34
+ excludeQuotes: register === 'chat',
35
+ skipTables: options.skipTables,
36
+ });
19
37
  const hits = detections
20
38
  .map((found) => ({
21
39
  ruleId: found.ruleId,
@@ -33,6 +51,7 @@ export function scan(text, options = {}) {
33
51
  unverifiable: targets.filter((id) => !detectable.has(id)),
34
52
  spacing,
35
53
  worthHumanizing: s1Total > 0,
54
+ allQuoted,
36
55
  };
37
56
  }
38
57
  export function formatScan(report) {
@@ -42,6 +61,17 @@ export function formatScan(report) {
42
61
  ` 처방: ${issue.fix}`,
43
62
  ]);
44
63
  const spacingBlock = spacing.length > 0 ? ['', '맞춤법 (등급과 무관하게 그냥 고친다)', ...spacing] : [];
64
+ if (report.allQuoted) {
65
+ return [
66
+ `[스캔] ${report.register} 기준 검사할 산문이 없다`,
67
+ '',
68
+ '원문이 전부 인용줄이라 볼 게 남지 않았다. 0건과 뜻이 정반대다 — 통과가 아니라',
69
+ '검사가 안 된 것이다. 코멘트를 통째로 인용으로 감싸면 이 상태가 된다.',
70
+ '',
71
+ '자기 문장을 인용 밖에 두고 다시 스캔한다.',
72
+ ...spacingBlock,
73
+ ].join('\n');
74
+ }
45
75
  if (!report.worthHumanizing) {
46
76
  // 직접 확인할 룰을 먼저 세운다. "윤문하지 않는다"를 앞에 두면 그 한 줄만 읽고
47
77
  // 비탐지 룰 확인을 건너뛰게 된다 — 탐지기가 0건이라고 글이 깨끗한 건 아니다.
@@ -1 +1 @@
1
- {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../src/humanize/scan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../src/humanize/scan.ts"],"names":[],"mappings":"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"}
@@ -37,7 +37,7 @@ export declare class LocalPrEngine {
37
37
  * 떼어 놓은 워크트리를 지운다.
38
38
  *
39
39
  * 지킬 변경이 있으면 지우지 않고 그 사실을 돌려준다. 부르는 쪽은 결과의 `status`로
40
- * 갈래를 탄다. PR head를 함께 넘겨야 그 자리에서 쌓은 커밋을 가려낼 수 있다.
40
+ * 분기한다. PR head를 함께 넘겨야 그 자리에서 쌓은 커밋을 가려낼 수 있다.
41
41
  */
42
42
  removeCheckout(prId: string, options?: {
43
43
  force?: boolean;
@@ -166,7 +166,7 @@ export interface PruneResult {
166
166
  /**
167
167
  * 종료 코드를 달고 다니는 오류.
168
168
  *
169
- * 부르는 쪽이 에이전트라 stdout을 안 읽고도 갈래를 타야 한다.
169
+ * 부르는 쪽이 에이전트라 stdout을 안 읽고도 분기해야 한다.
170
170
  * 3은 못 찾음, 4는 상태 충돌이다.
171
171
  */
172
172
  export declare class PrError extends Error {
@@ -74,7 +74,7 @@ export class LocalPrEngine {
74
74
  * 떼어 놓은 워크트리를 지운다.
75
75
  *
76
76
  * 지킬 변경이 있으면 지우지 않고 그 사실을 돌려준다. 부르는 쪽은 결과의 `status`로
77
- * 갈래를 탄다. PR head를 함께 넘겨야 그 자리에서 쌓은 커밋을 가려낼 수 있다.
77
+ * 분기한다. PR head를 함께 넘겨야 그 자리에서 쌓은 커밋을 가려낼 수 있다.
78
78
  */
79
79
  removeCheckout(prId, options = {}) {
80
80
  const pr = this.require(prId);
@@ -359,7 +359,7 @@ export class LocalPrEngine {
359
359
  /**
360
360
  * 종료 코드를 달고 다니는 오류.
361
361
  *
362
- * 부르는 쪽이 에이전트라 stdout을 안 읽고도 갈래를 타야 한다.
362
+ * 부르는 쪽이 에이전트라 stdout을 안 읽고도 분기해야 한다.
363
363
  * 3은 못 찾음, 4는 상태 충돌이다.
364
364
  */
365
365
  export class PrError extends Error {