feat: v2.2.92 → v2.2.158 — god-file 분해 + Stocks feature + 대화 연속성

R56–R59: agent.ts 2731→1529줄 god-file 분해 (25 modules)
  · attrParsers + LLM 메서드 8개 (callNonStreaming, streamChatOnce 등)
  · executeActions 415줄 → 8 handler 그룹 (file/run/list/brain/calendar/sheets/tasks)
  · handlePrompt 1100줄 → 7 phase 모듈 (system prompt + budget + autoContinue 등)

R50–R55: extension.ts 1145→349줄 (telegram/settings/provider commands 분리)

Stocks feature 신규: /stocks slash command (v2.2.152~158)
  · .astra/stocks.json 저장소 + Yahoo Finance 현재가 갱신
  · 8 키워드 필터 (ROE/성장성/유동성/수익성/영업효율/기술력/안정성/PBR)
  · Naver 시가총액 페이지 JSON API (m.stock.naver.com) 발굴
  · LLM Top 5 매력도 분석 + Telegram 자동 보고서
  · KST 09:00/15:00 watcher 자동 모니터링

대화 연속성 (v2.2.150~157):
  · [PRIOR TURN CONCLUSION] block 으로 직전 결론 anchor
  · thin follow-up 분류 → boilerplate 헤더 suppression
  · slash 명령 결과 chatHistory mirror (capture wrapper)
  · echo/parrot 금지 system prompt rule

기타: /stocks 슬래시 자동완성 dropdown UI, Naver JSON API 전환 (cheerio 제거)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
g1nation
2026-05-25 09:59:32 +09:00
parent 4153f640c2
commit 0a97324f1b
149 changed files with 14628 additions and 6927 deletions
+33
View File
@@ -2136,3 +2136,36 @@
}
.records-line .rl-latest { color: var(--border-bright); overflow: hidden; text-overflow: ellipsis; }
.records-line .hdr-dropdown { flex-shrink: 0; }
/* Slash 명령 자동완성 dropdown — input 바로 위에 floating. */
.slash-suggest {
position: absolute;
bottom: 100%;
left: 12px;
right: 12px;
margin-bottom: 6px;
background: var(--bg-secondary, #2a2a2a);
border: 1px solid var(--border, #444);
border-radius: 6px;
box-shadow: 0 4px 12px rgba(0,0,0,0.3);
max-height: 240px;
overflow-y: auto;
z-index: 100;
font-size: 13px;
}
.slash-suggest .ss-item {
padding: 6px 12px;
cursor: pointer;
display: flex;
gap: 10px;
align-items: baseline;
border-bottom: 1px solid var(--border-faint, #333);
}
.slash-suggest .ss-item:last-child { border-bottom: none; }
.slash-suggest .ss-item.active { background: var(--accent-faint, #094771); }
.slash-suggest .ss-item:hover { background: var(--bg-hover, #353535); }
.slash-suggest .ss-name { font-weight: 600; color: var(--accent, #4ec9b0); flex-shrink: 0; }
.slash-suggest .ss-desc { color: var(--text-dim, #999); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.slash-suggest .ss-empty { padding: 8px 12px; color: var(--text-dim, #999); font-style: italic; }
/* input-box 가 position:relative 여야 absolute 가 제대로 anchored. */
.input-box { position: relative; }