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
+35
View File
@@ -19,6 +19,41 @@ export function getBridgeBaseUrl(): string {
return url.replace(/\/$/, '');
}
/**
* Datacollect Bridge API endpoints — 한 곳에서 관리.
*
* 이전엔 슬래시 명령마다 endpoint 문자열이 hardcoded 였음 → bridge API 버전이
* 바뀌면 5+ 곳을 동시 수정. 이 객체로 모아 한 곳만 바꾸면 됨.
*
* 카테고리:
* - research: NotebookLM Deep Research 워크플로
* - youtube: yt-dlp + youtube-transcript-api 기반 영상 분석
* - web: Playwright 기반 웹 페이지 추출·벤치마크
* - wiki: 생성된 위키 문서 디스크 저장
* - lm: 사용자의 LM Studio / Ollama 로 LLM 호출 프록시
*/
export const BRIDGE_API = {
research: {
start: '/api/research/start',
status: '/api/research/status',
import: '/api/research/import',
synthesize: '/api/research/synthesize',
},
youtube: {
extract: '/api/youtube/extract',
},
web: {
benchmarkScan: '/api/web-benchmark/scan',
extract: '/api/web-extract',
},
wiki: {
save: '/api/wiki/save',
},
lm: {
proxy: '/api/lm',
},
} as const;
export interface BridgeFetchOptions {
timeoutMs?: number;
signal?: AbortSignal;