heuristic 42/100
static flags 20
llm malicious (0.95) via fast-track
// offending code· 3 files flaggedpatterns: 20
--- package/auto_setup.py (excerpt) ---
"""
Lattice AI — Zero-Config Auto Setup
===================================
명세: ``lattice_ai_full_spec.pptx`` 슬라이드 16·17 (자동 환경 매트릭스 + 5단계 흐름)
5단계
-----
① PROBE OS · CPU · GPU · RAM · 디스크 · 가속 SDK 감지
② RECOMMEND 사양 점수 → 최적 모델 / 런타임 / 양자화 자동 선택
③ INSTALL OS별 패키지 매니저 어댑터 호출 (winget · brew · apt · 스토어)
④ VERIFY 추론 토큰/초 측정, 첫 응답 지연, 메모리 누수 점검
⑤ PRESET 기본/고급 모드 분기 + 단축키·MCP·테마 적용
원칙
----
- **표준 라이브러리 only.** 외부 패키지 import 는 모두 try/except 로 감싼다.
- **변경하지 않는다, 추천만 한다.** INSTALL 단계는 *실행 명령어* 를 생성하고
돌려보낼 뿐, ``--apply`` 플래그 없이는 시스템을 건드리지 않는다.
- **모든 출력은 JSON-직렬화 가능**해야 UI(설치 마법사 화면) 에서 그대로 표시 가능.
사용
----
```bash
python3 auto_setup.py probe # 1단계만
python3 auto_setup.py recommend # 1+2단계
python3 auto_setup.py plan # 1+2+3 (설치 계획 출력)
python3 auto_setup.py plan --apply # 실제 설치 실행 (위험)
python3 auto_setup.py verify # 4단계 단독
python3 auto_setup.py preset # 5단계
python3 auto_setup.py all # 전체 흐름
```
"""
from __future__ import annotations
import argparse
import json
import os
import platform
import shutil
import subprocess
import sys
import time
from dataclasses import asdict, dataclass, field
from pathlib import Path
from typing import Any, Dict, List, Optional, Tuple
__all__ = [
"SystemProfile", "Recommendation", "InstallPlan",
"probe", "recommend", "plan", "verify", "preset", "run_all",
]
# ── 1. PROBE ─────────────────────────────────────
--- package/codex_telegram_bot.py (excerpt) ---
import asyncio
import json
import logging
import os
from pathlib import Path
import httpx
from openai import AsyncOpenAI
def load_env_file(path=".env"):
env_path = Path(path)
if not env_path.exists():
return
for raw_line in env_path.read_text(encoding="utf-8").splitlines():
line = raw_line.strip()
if not line or line.startswith("#") or "=" not in line:
continue
key, value = line.split("=", 1)
os.environ.setdefault(key.strip(), value.strip().strip('"').strip("'"))
load_env_file()
TELEGRAM_TOKEN = os.getenv("CODEX_TELEGRAM_BOT_TOKEN", "")
TELEGRAM_API_URL = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}"
OPENAI_MODEL = os.getenv("CODEX_OPENAI_MODEL", "gpt-5.4")
STATE_FILE = Path(os.getenv("CODEX_TELEGRAM_STATE_FILE", "codex_telegram_state.json"))
GITHUB_TOKEN = os.getenv("GITHUB_TOKEN", "")
GITHUB_REPO = os.getenv("GITHUB_REPO", "")
SYSTEM_PROMPT = """You are Lattice AI, the user's Codex development partner.
Discuss architecture, implementation plans, code reviews, and GitHub-ready changes.
Keep Korean responses concise and actionable.
When the user asks for changes that should land in the repository, propose a clear patch plan.
Use /issue to create GitHub issues when the user wants work tracked in git.
Do not claim that local Mac files were changed unless a GitHub action or explicit repository operation completed."""
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("codex_telegram_bot")
o
--- package/kg_schema.py (excerpt) ---
"""
Lattice AI — Knowledge Graph v2 schema (PPT spec aligned)
=========================================================
명세: ``lattice_ai_full_spec.pptx`` 슬라이드 20~22 (Node / Edge / Data Model)
목적
----
기존 ``knowledge_graph.py`` 의 자유 문자열 노드/엣지 타입을 **명시 enum + Pydantic
모델 + SQLite v2 스키마** 로 정식화한다. embedding · confidence · evidence ·
owner/visibility · createdBy 필드를 1급 시민으로 승격해서, semantic search
(SIMILAR_TO 엣지 추론) 와 multi-tenant 권한 모델의 기반을 만든다.
설계 원칙
---------
1. **기존 코드를 깨지 않는다**: 새 테이블 이름은 ``nodes_v2`` / ``edges_v2``
로 분리. 기존 ``nodes`` / ``edges`` 와 공존한다. 마이그레이션은 별도
유틸리티(`migrate_legacy_to_v2()`) 로 수행.
2. **표준 라이브러리만 사용**: Pydantic 이 없는 환경에서도 dataclass 로
동작하도록 ``from dataclasses import dataclass`` 를 사용한다.
타입 검증은 ``validate()`` 메서드에서 수동.
3. **embedding 은 옵셔널이지만 권장**: 차원은 환경 변수
``LATTICEAI_EMBED_DIM`` (기본 1024). bytes blob 으로 저장.
4. **마이그레이션 매핑은 명시적**: 한글 동사 → 영문 enum 표가 코드 안에 들어
있어서 어떤 옛 라벨이 어디로 매핑되는지 한눈에 보인다.
사용 예
-------
```python
from kg_schema import (
KGStoreV2, Node, Edge, NodeType, EdgeType,
)
store = KGStoreV2("/Users/me/.ltcai/kg_v2.db")
store.init_schema()
n1 = Node(
type=NodeType.FILE,
label="LatticeAI_기획서.pdf",
attrs={"mime": "application/pdf", "pageCount": 24, "lang": "ko"},
owner_id="user_seoljun",
)
n2 = Node(type=NodeType.CONCEPT, label="MCP")
store.upsert_node(n1)
store.upsert_node(n2)
store.upsert_edge(Edge(
source=n1.id, target=n2.id,
type=EdgeType.MENTIONS,
weight=0.82, confidence=0.91,
evidence=["c