ltcai 0.1.3 → 0.1.8

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.
package/README.md CHANGED
@@ -10,11 +10,117 @@ LTCAI # → http://localhost:4825
10
10
 
11
11
  ---
12
12
 
13
+ ## v0.1.8 변경사항
14
+
15
+ ### Added
16
+ - **PWA (Progressive Web App)** — iPad / Android / Galaxy Tab 홈화면 설치 지원
17
+ - `manifest.json` + Service Worker (`sw.js`) + 아이콘 4종 (192px, 512px, apple-touch-icon 180px, favicon 32px)
18
+ - iOS Safari: 공유 버튼 → "홈 화면에 추가" → 앱처럼 전체화면 실행
19
+ - Android Chrome: 주소창 "설치" 버튼 → 홈화면 앱
20
+ - `viewport-fit=cover` — iPhone Dynamic Island / 노치 안전영역 확장
21
+ - **서버 네트워크 공개 바인딩** — 기본 host `0.0.0.0`으로 변경
22
+ - 같은 Wi-Fi에서 모든 기기(`http://<Mac IP>:4825`)로 바로 접근 가능
23
+ - 시작 배너에 로컬 URL + 네트워크 IP 자동 출력
24
+ - **Windows 서버 호환성**
25
+ - `computer_screenshot`: macOS `screencapture` → Windows/Linux `pyautogui` fallback
26
+ - `computer_open_app` / `computer_open_url`: `open -a` / `cmd /c start` / `xdg-open` 플랫폼 자동 분기
27
+
28
+ ---
29
+
30
+ ## v0.1.7 변경사항
31
+
32
+ ### Added
33
+ - **모바일 반응형 UI** — 폰/태블릿 화면 크기에 자동 대응
34
+ - 사이드바 슬라이드 드로어 (☰ 햄버거 버튼, 오버레이 탭으로 닫기)
35
+ - iOS 소프트 키보드 대응 (`100dvh`), 노치/홈바 안전영역 (`safe-area-inset`)
36
+ - ops-strip 카드 가로 스크롤 압축, textarea 자동 줌 방지
37
+ - 브레이크포인트 3단계: 900px / 768px / 480px
38
+
39
+ ---
40
+
41
+ ## v0.1.6 변경사항
42
+
43
+ ### Added
44
+ - **LATTICEAI_ENABLE_GRAPH** 환경변수 — Data Graph를 퍼블릭 배포에서 완전히 비활성화하는 토글 (기본값 `true`)
45
+ - `false` 설정 시 모든 그래프 API 404, 인제스트 건너뜀, 사이드바 버튼 자동 숨김
46
+
47
+ ---
48
+
49
+ ## v0.1.5 변경사항
50
+
51
+ ### Added
52
+ - **Data Graph** — 채팅·AI 답변·업로드 문서를 SQLite 지식 그래프로 자동 구조화, `/graph`에서 Canvas 기반 Force-directed 시각화
53
+ - **Graph RAG** — 그래프 검색 결과를 채팅 컨텍스트에 자동 주입하여 이전 대화·문서 참조 강화
54
+ - **Telegram 원격 제어** — 인라인 키보드 메뉴로 상태 조회, 모델 관리, 스크린샷, 그래프 통계 원격 제어
55
+ - 어드민 세션 핸드오프 보안 강화 — URL 파라미터 → `sessionStorage` 1회 읽기 방식으로 교체
56
+
57
+ ---
58
+
59
+ ## v0.1.4 변경사항
60
+
61
+ ### Added
62
+ - 세션 영속성 — 서버 재시작 후에도 로그인 유지
63
+ - SSO 로그인 — Entra ID / Okta OIDC 지원 (`OIDC_DISCOVERY_URL`, `OIDC_CLIENT_ID`, `OIDC_CLIENT_SECRET`)
64
+ - 채팅 히스토리 검색 — 사이드바 검색창으로 대화 내용 키워드 검색
65
+ - 대화 삭제 — 사이드바 각 대화에 삭제 버튼
66
+ - MCP 서버 관리 UI — 사이드바 "MCP 관리" 버튼으로 설치/목록 모달
67
+ - VS Code 인라인 Diff 뷰 — Edit Selection 결과를 diff로 먼저 확인 후 Apply/Discard
68
+ - VS Code 현재 파일 첨부 — `Lattice AI: Attach Current File to Chat` 명령 추가
69
+
70
+ ---
71
+
72
+ ## v0.1.3 변경사항
73
+
74
+ ### Added
75
+ - 프로필 수정 (`PATCH /account/profile`) — 이름·닉네임 변경
76
+ - 회원가입 폼 — 비밀번호 확인 필드, 인라인 에러 메시지
77
+ - 어드민 패널 초대 링크 섹션 — 원클릭 복사
78
+ - 어드민 대시보드 메시지 활동 차트 (Chart.js, 최근 14일)
79
+ - 웹 UI 한국어 / 영어 전환 (`🌐 Languages` 버튼, localStorage 저장)
80
+
81
+ ### Fixed
82
+ - 로그아웃 시 `/logout` API 호출로 서버 세션 쿠키 정상 만료
83
+ - 인증(`account.html`)과 채팅(`chat.html`) UI 분리 — 레거시 파일 제거
84
+ - 채팅 헤더에서 언어 선택 드롭다운이 ops-strip을 가리는 문제 수정
85
+
86
+ ---
87
+
88
+ ## v0.1.1 변경사항
89
+
90
+ ### Added
91
+ - 비밀번호 변경 API (`POST /account/change-password`)
92
+ - 웹 UI 비밀번호 변경 모달 (헤더 계정 아이콘)
93
+
94
+ ---
95
+
96
+ ## v0.1.0 변경사항
97
+
98
+ ### Added
99
+ - FastAPI 브릿지 서버 (port 4825)
100
+ - Apple Silicon MLX 로컬 모델 지원 (Gemma 4, Qwen 2.5 등)
101
+ - 클라우드 모델 지원 (OpenAI, Groq, Together, OpenRouter 등)
102
+ - VS Code / Cursor / Antigravity 확장
103
+ - Telegram 봇 (로컬 AI 미러 + Codex 클라우드 봇)
104
+ - 어드민 패널 (`/admin`)
105
+ - P-Reinforce 지식 정원 엔진
106
+ - MCP 서버 연동
107
+ - Ollama / vLLM / LM Studio / llama.cpp 연동
108
+
109
+ ### Security
110
+ - 모든 민감 엔드포인트 인증 적용
111
+ - SameSite=Lax 쿠키 (CSRF 방어)
112
+ - scrypt 비밀번호 해싱
113
+ - tempfile 레이스 컨디션 수정
114
+ - `run_command()` 위험 플래그 차단
115
+
116
+ ---
117
+
13
118
  ## 아키텍처
14
119
 
15
120
  ```
16
121
  Lattice AI/
17
122
  ├── server.py # FastAPI 브릿지 서버 (port 4825)
123
+ ├── knowledge_graph.py # SQLite Data Graph + Graph RAG 저장소
18
124
  ├── llm_router.py # 로컬/클라우드 모델 라우터
19
125
  ├── tools.py # 워크스페이스 도구 (파일, 터미널, 스크린샷 등)
20
126
  ├── p_reinforce.py # P-Reinforce 지식 정원 엔진
@@ -140,6 +246,7 @@ docker run --rm -p 4825:4825 \
140
246
  - `LATTICEAI_MODE=public` 설정
141
247
  - 클라우드 API 키 설정 (`OPENAI_API_KEY` 등)
142
248
  - `LATTICEAI_INVITE_CODE`를 비공개 값으로 설정
249
+ - `LATTICEAI_ENABLE_GRAPH=false` — Data Graph를 공개 서버에서 숨기려면 설정
143
250
  - `/data`에 영구 볼륨 마운트
144
251
  - HTTPS 리버스 프록시 앞에 두기 (nginx, Caddy 등)
145
252
 
@@ -296,6 +403,20 @@ curl -X POST localhost:4825/garden \
296
403
 
297
404
  ---
298
405
 
406
+ ## Data Graph / Graph RAG
407
+
408
+ 웹 채팅과 AI 답변, 업로드 문서(PDF/DOCX/XLSX/PPTX/TXT/CSV)를 `~/.ltcai/knowledge_graph.sqlite`에 자동 저장합니다.
409
+
410
+ - 채팅/AI 답변: `Message`, `AIResponse`, `Person`, `Conversation`, `Topic`, `Decision`, `Task`
411
+ - 문서 업로드: `File`, `Chunk`, `Page`, `Slide`, `Sheet`, `Image`, `Topic`
412
+ - 원본 파일 blob: `~/.ltcai/knowledge_graph_blobs/`
413
+ - 시각화: `http://localhost:4825/graph`
414
+ - API: `/knowledge-graph/graph`, `/knowledge-graph/search`, `/knowledge-graph/context`
415
+
416
+ `/clear`, `/clear_all`, 대화 삭제는 사용자 채팅창만 정리합니다. Data Graph/RAG 데이터와 관리자 감사 로그는 보존됩니다.
417
+
418
+ ---
419
+
299
420
  ## API 엔드포인트
300
421
 
301
422
  | Method | Path | 설명 |
@@ -0,0 +1,149 @@
1
+ # Lattice AI — Operations Guide
2
+
3
+ ## 1. 데이터 파일 위치
4
+
5
+ | 파일 | 용도 |
6
+ |------|------|
7
+ | `~/.ltcai/users.json` | 사용자 계정 (bcrypt 해시 저장) |
8
+ | `~/.ltcai/history.json` | 대화 히스토리 |
9
+ | `~/.ltcai/audit.json` | 감사 로그 (agent 실행, 사용자 변경 등) |
10
+ | `~/.ltcai/brain/` | Knowledge Graph 노드 (Markdown) |
11
+ | `~/ltcai-agent/` | Agent workspace (agent가 생성한 파일) |
12
+
13
+ ## 2. 백업 및 복구
14
+
15
+ ### 2.1 전체 백업
16
+ ```bash
17
+ tar -czf ltcai-backup-$(date +%Y%m%d).tar.gz ~/.ltcai ~/ltcai-agent
18
+ ```
19
+
20
+ ### 2.2 복구
21
+ ```bash
22
+ tar -xzf ltcai-backup-YYYYMMDD.tar.gz -C ~
23
+ ```
24
+
25
+ ### 2.3 히스토리만 초기화
26
+ ```bash
27
+ rm ~/.ltcai/history.json
28
+ ```
29
+
30
+ ### 2.4 감사 로그 보관 (90일 보관 예시)
31
+ ```bash
32
+ # crontab -e 에 추가
33
+ 0 2 * * * find ~/.ltcai -name "audit*.json" -mtime +90 -delete
34
+ ```
35
+
36
+ ## 3. 로그 관리
37
+
38
+ 서버 로그는 stdout/stderr로 출력됩니다. systemd 환경에서는 journald가 관리합니다.
39
+
40
+ ### 3.1 로그 확인
41
+ ```bash
42
+ # systemd 사용 시
43
+ journalctl -u ltcai -f
44
+
45
+ # 직접 실행 시 파일로 redirect
46
+ LTCAI > /var/log/ltcai.log 2>&1
47
+ ```
48
+
49
+ ### 3.2 로그 보관
50
+ `logrotate` 예시 (`/etc/logrotate.d/ltcai`):
51
+ ```
52
+ /var/log/ltcai.log {
53
+ daily
54
+ rotate 30
55
+ compress
56
+ missingok
57
+ notifempty
58
+ }
59
+ ```
60
+
61
+ ## 4. 감사 로그 이벤트 유형
62
+
63
+ | event_type | 발생 시점 |
64
+ |------------|-----------|
65
+ | `login` | 로그인 성공/실패 |
66
+ | `user_update` | 관리자가 사용자 수정 |
67
+ | `user_delete` | 관리자가 사용자 삭제 |
68
+ | `history_delete` | 대화 히스토리 삭제 |
69
+ | `agent_exec` | Agent가 medium/high risk 도구 실행 |
70
+ | `agent_blocked` | Agent가 시스템 경로 쓰기 시도하여 차단됨 |
71
+ | `model_load` | 모델 로드 |
72
+ | `model_switch` | 모델 전환 |
73
+
74
+ ### 4.1 감사 로그 조회
75
+ ```bash
76
+ python3 -c "
77
+ import json, sys
78
+ events = json.load(open('~/.ltcai/audit.json'.replace('~', __import__('os').path.expanduser('~'))))
79
+ for e in events[-20:]:
80
+ print(e['timestamp'], e['event_type'], e.get('user_email',''))
81
+ "
82
+ ```
83
+
84
+ ## 5. 사용자 관리
85
+
86
+ ### 5.1 첫 번째 사용자 (admin) 생성
87
+ 서버 첫 실행 시 `/register` API 또는 웹 UI를 통해 등록합니다.
88
+ 최초 등록 사용자는 자동으로 `admin` 역할이 부여됩니다.
89
+
90
+ ### 5.2 사용자 목록 확인 (admin 전용)
91
+ ```
92
+ GET /admin/users
93
+ Cookie: session_id=<admin-session>
94
+ ```
95
+
96
+ ### 5.3 비밀번호 정책
97
+ - 최소 8자
98
+ - bcrypt (cost 12) 해시로 저장
99
+ - 평문은 저장되지 않음
100
+
101
+ ## 6. 업그레이드 마이그레이션
102
+
103
+ ### 6.1 npm 패키지 업그레이드
104
+ ```bash
105
+ npm install -g ltcai@latest
106
+ ```
107
+
108
+ ### 6.2 PyPI 패키지 업그레이드
109
+ ```bash
110
+ pip install --upgrade ltcai
111
+ ```
112
+
113
+ ### 6.3 데이터 마이그레이션 주의사항
114
+ - `users.json` 스키마 변경 시: 서버가 자동으로 누락 필드를 기본값으로 보완합니다.
115
+ - `history.json` 스키마 변경 시: 하위 호환성 유지. 구버전 레코드는 무시됩니다.
116
+ - `brain/` Knowledge Graph: Markdown 파일 기반이므로 별도 마이그레이션 없음.
117
+
118
+ ## 7. 공개 서버 체크리스트
119
+
120
+ 공개 인터넷에 노출할 경우 반드시 확인:
121
+
122
+ - [ ] `LATTICEAI_SECRET_KEY` 환경변수 설정 (32자 이상 랜덤 문자열)
123
+ - [ ] `LATTICEAI_ENABLE_GRAPH=false` (불필요 시 Graph 비활성화)
124
+ - [ ] `HTTPS` 종단 프록시 설정 (nginx / Caddy)
125
+ - [ ] `CSRF_TRUSTED_ORIGINS` 화이트리스트 설정
126
+ - [ ] `ALLOWED_COMMANDS` 검토 — python3/node 등 불필요한 실행 도구 제거
127
+ - [ ] 방화벽으로 8899 포트를 프록시만 접근 허용
128
+
129
+ ## 8. 사용자 데이터 격리
130
+
131
+ - 대화 히스토리는 `user_email` 필드로 필터링됩니다.
132
+ - Agent workspace (`~/ltcai-agent/`)는 현재 단일 공유 디렉토리입니다.
133
+ 멀티 유저 환경에서는 `~/ltcai-agent/<email>/` 구조로 분리를 권장합니다.
134
+ - Knowledge Graph (`brain/`) 역시 단일 공유 공간입니다.
135
+
136
+ ## 9. 서버 시작 / 종료
137
+
138
+ ```bash
139
+ # 시작
140
+ LTCAI
141
+
142
+ # 환경변수와 함께 시작
143
+ LATTICEAI_SECRET_KEY=xxx LATTICEAI_ENABLE_GRAPH=true LTCAI
144
+
145
+ # 종료
146
+ Ctrl+C 또는 kill <pid>
147
+ ```
148
+
149
+ 서버는 종료 시 진행 중인 HTTP 요청을 완료한 후 종료됩니다 (graceful shutdown — uvicorn 기본 동작).