- devlog entry: PROMPT_ONLY_RE 근본원인 분석 및 수정 (v0.5.45) - scratch files: 이전 세션 디버깅 스크립트 전체 정리
28 lines
1.5 KiB
Markdown
28 lines
1.5 KiB
Markdown
# PROMPT_ONLY_RE 근본원인 수정 (v0.5.45)
|
|
|
|
- **시간**: 2026-04-15 09:12~09:57
|
|
- **Commit**: `01539e9`
|
|
- **Vikunja**: #619 → 진행중
|
|
|
|
## 결정 사항
|
|
|
|
### Template Literal 안의 Regex 리터럴 이스케이핑 규칙
|
|
|
|
**혼동 포인트**: `observer-script.ts`의 전체 코드는 TypeScript template literal 안에 있다. 이 안에서 regex 리터럴(`/pattern/`)을 쓸 때:
|
|
|
|
- `\\s` (TS 소스 2-backslash) → template 출력 `\s` → **JS에서 invalid escape → 원본 보존** → regex `\s` = whitespace class ✅
|
|
- `\\\\s` (TS 소스 4-backslash) → template 출력 `\\s` → **JS에서 valid escape `\s`** → regex `\s` = whitespace class ✅
|
|
|
|
**결론**: 2중과 4중 **둘 다 작동**하지만, 4중이 의도적이고 명시적. 그러나 PROMPT_ONLY_RE는 **기존 4중에서 실패하고 있었으므로** 실제 원인은 다른 곳에 있었음 — `(.*[\\/>»$#]\\\\s*)` 패턴 자체가 `>` 다음에 `\\s*` 매칭이 아닌 `\\\\s*` 리터럴 매칭이 되고 있었던 것.
|
|
|
|
### http-bridge PROMPT_ONLY_RE 단순화
|
|
|
|
- 기존: `/^[\s\\\/]*[\w_.-]+\s*[>»$#]\s*$/` — `…`(U+2026 ellipsis) prefix 미지원
|
|
- 변경: `/^.*[>»$#]\s*$/` — prompt marker로 끝나는 모든 텍스트 스킵
|
|
- 트레이드오프: `echo >` 같은 극단적 edge case에서 false positive → 1% 미만 확률, 허용
|
|
|
|
## 미완료
|
|
|
|
- AG 재시작 후 v0.5.45 실제 동작 확인 필요 (현재 v0.5.44 메모리 로드 상태)
|
|
- `Running N commands` 4-backslash 패턴은 정상 동작 확인됨 — 그대로 유지
|