CrownyAI 제어서버 /eval /find /click_text 추가
개요
Tradovate 같은 커스텀 요소(비-표준 button) 자동조작을 위해 /read_page 의 좌표클릭 한계(요소 5개만 탐지, 레이아웃 취약)를 보완하는 견고한 JS 기반 명령 3종을 CrownyAI 로컬 제어서버(127.0.0.1 전용,
crowny-ai.h §8 계약)에 추가했다.
무엇을 했는지
/eval {js} — 활성 탭 JS 평가 → {ok,result,type}(객체는 JSON.stringify 문자열로 담김), 예외는 {ok:false,error}.
/find {text[,tag][,all]} — 텍스트 일치/포함 요소 탐색(리프 우선, 뷰포트 좌표) → {ok,found,elements:[{tag,text,x,y,w,h,visible}]}.
/click_text {text[,tag][,index]} — /find 매칭 요소 JS 합성 클릭(el.click()+dispatchEvent 폴백) → {ok,matched,text,x,y,via}, 미발견 시 {ok:false,reason:"not_found"}(조용한 무동작 금지).
- 보안 불변: 127.0.0.1 전용, system()/NSTask/체계() 0, CROWNY_CTL_TOKEN 헤더검사·CROWNY_CTL 게이트 기존 로직 그대로.
관련 파일
/Users/ef/CrownyBrowser/native/crowny-ai-control.m — ctlEval/ctlFind/ctlClickText 구현 + ctlDispatch 라우팅 3건 추가.
/Users/ef/CrownyBrowser/native/제어서버.한선 — 정본 동반: 명령판정 3건, 결과타입유효/텍스트매치(포함하나 사용)/인덱스보정/클릭텍스트판정/탐색상한 순수판정 + 자체시험(69/69 PASS).
검증
- 컴파일:
hanseonc_high 제어서버.한선 → crownyc run = 69/69 티 ALL_PASS.
make ai 에러 0(기존 무관 경고만) → install-ai-app.sh 설치+ad-hoc 재서명 성공.
- strings 심볼가드:
/eval /find /click_text not_found 실행번들에 확인.
- 검증용 인스턴스(CROWNY_CTL_PORT=9846, pid 27148, 9841과 별도) 실측: example.com 로드 →
/eval document.title="Example Domain" 및 객체 JSON.stringify 확인 → /find "Learn more" 좌표(290,215) 획득 → /click_text 클릭 → /health URL이 iana.org/help/example-domains로 변경 확인(실제 네비게이션). 검증 종료 시 9846 인스턴스만 kill, 9841(사용자 세션) 무접촉 확인.
잔여 이슈
- Tradovate 실페이지(Buy Mkt/Sell Mkt 등 커스텀 요소)에서의 실측은 미수행(장중 실주문 위험으로 지시에 따라 금지) — 다음 세션에서 데모/페이퍼 계좌로 /find, /click_text 검증 필요.
- crowny-ai.h §8 계약 문서·mcp/mcp-server.js 에 신규 3명령 노출은 미착수(범위 밖, 필요 시 별도 트랙).