Agent Skill
2/7/2026

typescript-strict-mode

TypeScript strict type checking guidelines for SEPilot Desktop. Use when creating types, writing functions, or refactoring code. Ensures all code has explicit types, avoids 'any', and passes type checking with strict mode enabled.

J
jhl
42GitHub Stars
1Views
npx skills add jhl-labs/sepilot_desktop

SKILL.md

Nametypescript-strict-mode
DescriptionTypeScript strict type checking guidelines for SEPilot Desktop. Use when creating types, writing functions, or refactoring code. Ensures all code has explicit types, avoids 'any', and passes type checking with strict mode enabled.

SEPilot Desktop

<div align="center">

The All-in-One AI Workspace

Thinking, Coding, Editor, Browser, Vision을 ν•˜λ‚˜λ‘œ ν†΅ν•©ν•œ ꢁ극의 λ°μŠ€ν¬ν†± AI μ›Œν¬μŠ€νŽ˜μ΄μŠ€

Version License

<p> <a href="https://www.typescriptlang.org/"><img src="https://img.shields.io/badge/TypeScript-5.4-blue" alt="TypeScript"></a> <a href="https://nextjs.org/"><img src="https://img.shields.io/badge/Next.js-14.0-black" alt="Next.js"></a> <a href="https://www.electronjs.org/"><img src="https://img.shields.io/badge/Electron-31.0-47848F" alt="Electron"></a> </p> <p> <a href="https://github.com/jhl-labs/sepilot_desktop/actions/workflows/ci.yml"><img src="https://github.com/jhl-labs/sepilot_desktop/actions/workflows/ci.yml/badge.svg" alt="CI"></a> <a href="https://github.com/jhl-labs/sepilot_desktop/actions/workflows/release.yml"><img src="https://github.com/jhl-labs/sepilot_desktop/actions/workflows/release.yml/badge.svg" alt="Release"></a> <a href="https://github.com/jhl-labs/sepilot_desktop/actions/workflows/deploy-pages.yml"><img src="https://github.com/jhl-labs/sepilot_desktop/actions/workflows/deploy-pages.yml/badge.svg" alt="Deploy Pages"></a> <br/> <a href="https://codecov.io/gh/jhl-labs/sepilot_desktop"><img src="https://codecov.io/gh/jhl-labs/sepilot_desktop/branch/main/graph/badge.svg?token=RTDC27F34B" alt="codecov"></a> <a href="https://github.com/jhl-labs/sepilot_desktop/actions/workflows/codeql.yml"><img src="https://github.com/jhl-labs/sepilot_desktop/actions/workflows/codeql.yml/badge.svg" alt="CodeQL"></a> <a href="https://github.com/jhl-labs/sepilot_desktop/actions/workflows/security-scan.yml"><img src="https://github.com/jhl-labs/sepilot_desktop/actions/workflows/security-scan.yml/badge.svg" alt="Security Scan"></a> </p> <p align="center"> <a href="https://codecov.io/gh/jhl-labs/sepilot_desktop"> <img src="https://codecov.io/gh/jhl-labs/sepilot_desktop/graphs/tree.svg?token=RTDC27F34B&width=600&height=120" alt="Codecov Tree" height="120"> </a> <br> <br> <a href="https://codecov.io/gh/jhl-labs/sepilot_desktop"> <img src="https://codecov.io/gh/jhl-labs/sepilot_desktop/graphs/sunburst.svg?token=RTDC27F34B&width=600&height=220" alt="Codecov Sunburst" height="220"> </a> </p>

English | ν•œκ΅­μ–΄

</div>

<a name="english"></a>

English

πŸš€ Overview

SEPilot Desktop is not just a chatbot. It is an integrated open-source desktop application that combines Thinking, Coding, Editor, Browser, and Vision into a seamless workflow. Experience the familiarity of ChatGPT with the power of a professional workspace.

✨ Key Features

πŸ’¬ Native Chat Experience

Familiarity of ChatGPT, flexibility beyond.

  • No Learning Curve: Provides the familiar interface you already know.
  • Model Hot-swap: Switch between GPT-4o, Claude 3.5, and local Ollama models with a single click.
  • Perfect Rendering: Beautiful Markdown, LaTeX support, and real-time streaming.
  • Secure: Chat history is safely stored in a local database.

🧠 Depth of Thought (Thinking Models)

Choose AI thinking process matching problem complexity.

  • Sequential Thinking: Step-by-step reasoning where AI self-verifies logical gaps before moving forward.
  • Tree of Thought: Generates multiple solution possibilities simultaneously (Branching) to find the optimal path.
  • Deep Thinking (Graph): Combines Sequential and Tree of Thought. Analyzes problems from 4 distinct perspectives (Analytical, Practical, Critical, Creative).

πŸ‘¨β€πŸ’» Autonomous Coding Agent (Beta)

Experimental autonomous coding support.

  • Think -> Action -> Observe: Repeats the cycle of thinking, file I/O, and result analysis.
  • Full Control: Can create/edit/delete files and execute terminal commands.
  • Auto-debugging: Automatically analyzes error logs and attempts to fix issues.

πŸ“ Full-featured Editor & Terminal

Power of VS Code, but lighter.

  • Monaco Editor: Built-in VS Code core with syntax highlighting, minimap, and multi-cursor support.
  • Integrated Terminal: Run npm install, git commit, or python scripts directly within the app.
  • AI Context Menu: Drag text to access Notion-style AI tools (Refactor, Translate, Fix Typos, etc.).

πŸ‘οΈ Vision Browser Agent

Understands as it sees, moves like a human.

  • Hybrid Control: Combines semantic DOM analysis with Vision (Set-of-Mark) to interact with complex web pages.
  • Automation: Supports over 27 browser actions including click, scroll, type, and navigation.

πŸ“š Knowledge Base (RAG)

Turn your documents into AI's knowledge.

  • Local RAG: Uses local SQLite-vec vector DB. Drag & drop Markdown/Text files to build a secure knowledge base.
  • Team Docs: Link GitHub repositories to auto-sync team documentation and code snippets.

🎨 Vision & Visualization

  • Vision Analysis: Paste images for instant analysis by Vision models (e.g., "Analyze this error log").
  • Image Generation: Integrate with Nano Banana and ComfyUI for complex image generation workflows.
  • Mermaid & Plotly: Generate diagrams from text and visualize CSV/Excel data with interactive charts.

πŸš€ Super Productivity

  • Quick Input: Call SEPilot instantly with a global shortcut without leaving your current app.
  • Quick Search: Ripgrep-powered search finds files and content in milliseconds.


πŸ—οΈ Tech Stack

  • Frontend: Next.js 14 (App Router), React 18, Tailwind CSS, shadcn/ui
  • Desktop: Electron 31, Context Bridge IPC, better-sqlite3
  • AI Core: LangGraph (Custom Implementation), OpenAI Compatible API, MCP (Model Context Protocol)
  • DevOps: TypeScript 5.4, ESLint, Prettier, electron-builder

πŸ“ Project Structure

sepilot_desktop/
β”œβ”€β”€ app/                          # Next.js App Router (Frontend entry point)
β”œβ”€β”€ components/                   # React UI components
β”œβ”€β”€ electron/                     # Electron Main Process (Backend)
β”œβ”€β”€ lib/                          # Shared libraries (core business logic)
β”œβ”€β”€ hooks/                        # Global React custom hooks
β”œβ”€β”€ types/                        # TypeScript type definitions
β”œβ”€β”€ resources/extensions/         # Extension source code (8 extensions)
β”œβ”€β”€ extensions/                   # Built .sepx package files (production)
β”œβ”€β”€ locales/                      # i18n resources (ko, en, zh)
β”œβ”€β”€ public/                       # Static assets
β”œβ”€β”€ assets/                       # Build assets (app icons)
β”œβ”€β”€ scripts/                      # Build & dev scripts
β”œβ”€β”€ tests/                        # Unit / integration tests
β”œβ”€β”€ e2e_tests/                    # E2E tests (Playwright)
β”œβ”€β”€ docs/                         # Project documentation
β”œβ”€β”€ release_notes/                # Version release notes
β”œβ”€β”€ builtin-skills/               # Built-in skill definitions
└── deepreview/                   # DeepReview materials

app/ β€” Next.js App Router

Frontend entry point based on Next.js App Router. Defines page routing and layouts.

app/
β”œβ”€β”€ layout.tsx              # Root layout (Providers, global config)
β”œβ”€β”€ page.tsx                # Main chat page
β”œβ”€β”€ globals.css             # Global CSS styles
β”œβ”€β”€ api/chat/stream/        # Streaming chat API route
β”œβ”€β”€ notification/           # Notification popup page
└── quick-input/            # Quick input popup page

components/ β€” React UI Components

All React components organized by feature domain.

components/
β”œβ”€β”€ ui/                     # shadcn/ui base components (Button, Dialog, Input, etc.)
β”œβ”€β”€ chat/                   # Chat UI (ChatArea, InputBox, MessageBubble, ToolApproval)
β”œβ”€β”€ layout/                 # Layout (MainLayout, Sidebar, ChatHistory, WikiTree)
β”œβ”€β”€ settings/               # Settings panel (LLM, MCP, Extension, Network, 20+ tabs)
β”œβ”€β”€ markdown/               # Markdown rendering (code highlighting, LaTeX)
β”œβ”€β”€ rag/                    # RAG document management UI
β”œβ”€β”€ mcp/                    # MCP server management UI
β”œβ”€β”€ skills/                 # Skills management UI
β”œβ”€β”€ persona/                # Persona management UI
β”œβ”€β”€ gallery/                # Image gallery
β”œβ”€β”€ providers/              # React Context Providers (Theme, I18n)
└── theme/                  # Theme components

electron/ β€” Electron Main Process

Electron backend process with IPC handlers, services, and utilities.

electron/
β”œβ”€β”€ main.ts                 # App entry (BrowserWindow, protocol, service init)
β”œβ”€β”€ preload.ts              # Preload script (exposes window.electronAPI)
β”œβ”€β”€ ipc/
β”‚   β”œβ”€β”€ index.ts            # IPC handler registration hub
β”‚   └── handlers/           # IPC handlers (35 files)
β”‚       β”œβ”€β”€ llm.ts          #   LLM streaming / chat
β”‚       β”œβ”€β”€ langgraph.ts    #   LangGraph agent execution
β”‚       β”œβ”€β”€ mcp.ts          #   MCP server management & tool calls
β”‚       β”œβ”€β”€ chat.ts         #   Conversation save / load / delete
β”‚       β”œβ”€β”€ file.ts         #   File system operations
β”‚       β”œβ”€β”€ browser-view.ts #   BrowserView tab management
β”‚       β”œβ”€β”€ terminal.ts     #   Terminal sessions (PTY)
β”‚       β”œβ”€β”€ vectordb.ts     #   Vector DB operations
β”‚       β”œβ”€β”€ extension-*.ts  #   Extension APIs (handlers, fs, llm, mcp, vectordb)
β”‚       └── ...             #   Others (auth, config, scheduler, skills, etc.)
β”œβ”€β”€ services/               # Backend services (15 files)
β”‚   β”œβ”€β”€ database.ts         #   SQLite database management
β”‚   β”œβ”€β”€ vectordb.ts         #   Vector DB service
β”‚   β”œβ”€β”€ pty-manager.ts      #   PTY terminal management
β”‚   β”œβ”€β”€ scheduler.ts        #   Task scheduler
β”‚   └── ...                 #   Others (logger, token-manager, webhook, etc.)
β”œβ”€β”€ agents/                 # Electron-side agents
└── utils/                  # Utilities (paths, update-checker)

lib/ β€” Shared Libraries

Core business logic shared between frontend and backend.

lib/
β”œβ”€β”€ langgraph/              # LangGraph agent system
β”‚   β”œβ”€β”€ base/               #   Base graph classes (BaseGraph, ThinkingGraph)
β”‚   β”œβ”€β”€ graphs/             #   Graph implementations (15: chat, agent, coding-agent, rag, etc.)
β”‚   β”œβ”€β”€ nodes/              #   Graph nodes (generate, retrieve, tools)
β”‚   β”œβ”€β”€ factory/            #   GraphFactory + GraphRegistry
β”‚   └── prompts/            #   System prompts
β”œβ”€β”€ llm/                    # LLM client
β”‚   β”œβ”€β”€ base.ts             #   BaseLLMProvider (abstract class)
β”‚   β”œβ”€β”€ client.ts           #   LLMClient singleton
β”‚   └── providers/          #   LLM providers (OpenAI-compatible, Ollama)
β”œβ”€β”€ mcp/                    # MCP (Model Context Protocol)
β”‚   β”œβ”€β”€ client.ts           #   MCP client (JSON-RPC 2.0)
β”‚   β”œβ”€β”€ server-manager.ts   #   MCP server lifecycle management
β”‚   └── tools/              #   MCP tools (Google Search, Browser, etc.)
β”œβ”€β”€ extensions/             # Extension system (18 files)
β”‚   β”œβ”€β”€ loader.ts           #   Renderer environment loader
β”‚   β”œβ”€β”€ loader-main.ts      #   Main Process loader
β”‚   β”œβ”€β”€ registry.ts         #   Extension registry
β”‚   └── context-factory.ts  #   Runtime context creation
β”œβ”€β”€ extension-sdk/          # Extension SDK (@sepilot/extension-sdk)
β”‚   └── src/                #   Types, hooks, IPC helpers, runtime API, UI
β”œβ”€β”€ store/                  # Zustand global state
β”‚   β”œβ”€β”€ chat-store.ts       #   Core state (conversations, messages, mode, extensions)
β”‚   └── extension-slices.ts #   Dynamic extension store slices
β”œβ”€β”€ hooks/                  # Library-level React hooks
β”œβ”€β”€ vectordb/               # Vector DB (embeddings, indexing, adapters)
β”œβ”€β”€ auth/                   # Authentication (GitHub OAuth)
β”œβ”€β”€ config/                 # Configuration (encryption, sync, migration)
β”œβ”€β”€ http/                   # HTTP client (proxy / SSL support)
β”œβ”€β”€ skills/                 # Skills management (manager, validator, loader)
β”œβ”€β”€ documents/              # Document processing (PDF, Word, Excel)
β”œβ”€β”€ github/                 # GitHub integration
β”œβ”€β”€ imagegen/               # Image generation
β”œβ”€β”€ comfyui/                # ComfyUI integration
β”œβ”€β”€ i18n/                   # Internationalization (i18next, ko/en/zh)
└── utils/                  # Common utilities (logger, token-counter, error-handler)

hooks/ β€” Global React Custom Hooks

General-purpose React custom hooks used across the entire app.

FileDescription
use-confirm-dialog.tsConfirmation dialog hook
use-file-clipboard.tsFile clipboard hook
use-file-system.tsFile system access hook
use-resize-observer.tsResize detection hook
use-theme-persistence.tsTheme persistence hook

types/ β€” TypeScript Type Definitions

Project-wide TypeScript types and interfaces.

FileDescription
index.tsCore types (Message, Conversation, LLMConfig, etc.)
electron.d.tswindow.electronAPI type declarations
ipc-channels.tsIPC channel name constants
persona.tsPersona types
skill.tsSkill types
scheduler.tsScheduler types
wiki-tree.tsWiki tree types

resources/extensions/ β€” Extension Source Code

8 extensions, each structured as an independent project.

ExtensionDescription
editor/Code editor (Monaco Editor)
browser/Web browser (BrowserView tabs)
terminal/Terminal (xterm.js + PTY)
architect/Architecture diagrams
presentation/Presentation creation
github-actions/GitHub Actions management
github-pr-review/GitHub PR review
github-project/GitHub Project management

Other Directories

DirectoryDescription
extensions/Built .sepx packages for production deployment
locales/i18n translation files (ko.json, en.json, zh.json)
public/Static assets (favicon, Monaco files, sql-wasm binaries)
assets/Build assets (app icon)
scripts/Build & dev scripts (Extension bundler, SDK build, Monaco copy, etc.)
tests/Unit / integration tests (Jest + React Testing Library)
e2e_tests/E2E tests (Playwright)
docs/Architecture docs, dev guides, Extension docs
release_notes/Version release notes (v0.5.0 ~ v0.9.1)
builtin-skills/Built-in AI skill definitions
deepreview/DeepReview training materials & workshops

πŸ“¦ Installation

Download the latest installer from Releases.

πŸ› οΈ Development Setup

For developers: See SETUP.md for detailed development environment setup instructions.

Quick start:

# Clone both repositories
git clone <sepilot_desktop-repo> sepilot_desktop
git clone <sepilot-extensions-repo> sepilot-extensions

# Install and run
cd sepilot_desktop
pnpm install
pnpm run dev

Note: The main app requires the sepilot-extensions directory at the same level for Extension source code.

Optional: Terminal Features (Windows)

Terminal features require native node modules. If you encounter build errors during pnpm install:

Option 1: Install Visual Studio Build Tools

  1. Download Build Tools for Visual Studio 2022
  2. Install with "Desktop development with C++" workload
  3. Run pnpm run rebuild:node-pty

Option 2: Continue without terminal features

  • The app works perfectly without terminal features
  • You can enable them later when needed

πŸ§ͺ Development & Testing

Running Tests

Unit Tests:

pnpm run test              # Run all unit tests
pnpm run test:frontend     # Frontend tests only
pnpm run test:backend      # Backend tests only
pnpm run test:coverage     # With coverage report

E2E Tests:

E2E tests require a display server. For headless environments (e.g., CI/CD):

# Install Xvfb (Ubuntu/Debian)
sudo apt-get install xvfb

# Install Xvfb (Fedora/RHEL)
sudo dnf install xorg-x11-server-Xvfb

# Run E2E tests
pnpm run test:e2e

For GUI environments (macOS, Windows, Linux Desktop), tests will run directly without Xvfb.

Test Coverage

View Coverage Reports:

We use Codecov for comprehensive test coverage tracking. Visit the dashboard to see:

  • Overall project coverage with interactive sunburst and tree visualizations
  • Component-specific coverage (Chat, LangGraph, MCP, RAG, Electron IPC)
  • Coverage trends over time
  • Pull request impact analysis

Local Coverage Reports:

# Generate coverage reports
pnpm run test:coverage             # All tests with coverage
pnpm run test:coverage:frontend    # Frontend only
pnpm run test:coverage:backend     # Backend only

# View HTML report (after running tests)
open coverage/lcov-report/index.html   # macOS
start coverage/lcov-report/index.html  # Windows
xdg-open coverage/lcov-report/index.html  # Linux

Coverage Targets:

ComponentTargetCurrent
Overall Project55%codecov
Frontend (UI)50%-
Backend (Core)55%-
Chat System60%-
LangGraph Agent65%-
MCP Integration60%-
Electron IPC70%-

Automated Coverage Checks:

  • βœ… PR Comments: Every pull request receives detailed coverage analysis
  • βœ… Status Checks: PRs must maintain coverage within threshold (Β±2-5%)
  • βœ… Component Tracking: Individual components tracked separately
  • βœ… Bundle Analysis: JavaScript bundle size monitoring
  • βœ… Test Results: Test pass/fail tracking integrated with coverage

<a name="korean"></a>

ν•œκ΅­μ–΄

πŸš€ κ°œμš”

SEPilot Desktop은 λ‹¨μˆœν•œ 챗봇이 μ•„λ‹™λ‹ˆλ‹€. Thinking, Coding, Editor, Browser, Vision이 μ™„λ²½ν•˜κ²Œ ν†΅ν•©λœ μ˜€ν”ˆμ†ŒμŠ€ λ°μŠ€ν¬ν†± μ• ν”Œλ¦¬μΌ€μ΄μ…˜μž…λ‹ˆλ‹€. ChatGPT와 같은 μ΅μˆ™ν•œ μ‚¬μš©μ„±μ— 전문적인 μ›Œν¬μŠ€νŽ˜μ΄μŠ€μ˜ κ°•λ ₯함을 λ”ν–ˆμŠ΅λ‹ˆλ‹€.

✨ μ£Όμš” κΈ°λŠ₯

πŸ’¬ λ„€μ΄ν‹°λΈŒ μ±„νŒ… κ²½ν—˜ (Native Chat Experience)

ChatGPT와 같은 νŽΈμ•ˆν•¨, κ·Έ μ΄μƒμ˜ μœ μ—°ν•¨.

  • μ΅μˆ™ν•œ UI: μƒˆλ‘œμš΄ 도ꡬλ₯Ό 배울 ν•„μš” 없이 λ°”λ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • λͺ¨λΈ ν•«μŠ€μ™‘: GPT-4o, Claude 3.5, Ollama 둜컬 λͺ¨λΈ 등을 클릭 ν•œ 번으둜 μ „ν™˜ν•©λ‹ˆλ‹€.
  • μ™„λ²½ν•œ λ Œλ”λ§: GitHub μŠ€νƒ€μΌμ˜ λ§ˆν¬λ‹€μš΄ λ Œλ”λ§κ³Ό μˆ˜μ‹(LaTeX) 지원.
  • λ³΄μ•ˆ: λͺ¨λ“  λŒ€ν™” λ‚΄μš©μ€ 둜컬 λ°μ΄ν„°λ² μ΄μŠ€μ— μ•ˆμ „ν•˜κ²Œ μ €μž₯λ©λ‹ˆλ‹€.

🧠 사고 λͺ¨λΈ (Depth of Thought)

문제의 λ³΅μž‘λ„μ— 맞좰 AI의 사고 방식을 μ„ νƒν•˜μ„Έμš”.

  • Sequential Thinking: 단계별(Step-by-Step)둜 논리λ₯Ό μ „κ°œν•˜λ©° 슀슀둜 ν—ˆμ μ„ κ²€μ¦ν•©λ‹ˆλ‹€.
  • Tree of Thought: μ—¬λŸ¬ ν•΄κ²° 경둜λ₯Ό λ™μ‹œμ— 탐색(Branching)ν•˜μ—¬ 졜적의 ν•΄λ₯Ό λ„μΆœν•©λ‹ˆλ‹€. λΈŒλ ˆμΈμŠ€ν† λ°μ— κ°•λ ₯ν•©λ‹ˆλ‹€.
  • Deep Thinking (Graph): 4κ°€μ§€ 관점(뢄석적, μ‹€μš©μ , λΉ„νŒμ , 창의적)으둜 문제λ₯Ό μž…μ²΄μ μœΌλ‘œ λΆ„μ„ν•˜κ³  κ²€μ¦ν•©λ‹ˆλ‹€.

πŸ‘¨β€πŸ’» 자율 μ½”λ”© μ—μ΄μ „νŠΈ (Coding Agent)

μ‹€ν—˜μ μΈ 자율 μ½”λ”© 지원.

  • Think -> Action -> Observe: μƒκ°ν•˜κ³ , νŒŒμΌμ„ μˆ˜ν–‰ν•˜κ³ , κ²°κ³Όλ₯Ό ν™•μΈν•˜λŠ” μ£ΌκΈ°λ₯Ό λ°˜λ³΅ν•©λ‹ˆλ‹€.
  • μ™„μ „ν•œ μ œμ–΄: 파일 생성/μˆ˜μ •/μ‚­μ œ κΆŒν•œκ³Ό 터미널 λͺ…λ Ήμ–΄ μ‹€ν–‰ λŠ₯λ ₯을 κ°€μ§‘λ‹ˆλ‹€.
  • μžλ™ 디버깅: μ—λŸ¬ λ°œμƒ μ‹œ 둜그λ₯Ό λΆ„μ„ν•˜μ—¬ 슀슀둜 μ½”λ“œλ₯Ό μˆ˜μ •(Self-correction)ν•©λ‹ˆλ‹€.

πŸ“ ν’€ ν”Όμ²˜ 에디터 & 터미널

VS Code의 κ°•λ ₯함을 κ·ΈλŒ€λ‘œ, 더 κ°€λ³κ²Œ.

  • Monaco Editor: VS Code의 핡심 엔진을 νƒ‘μž¬ν•˜μ—¬ ꡬ문 κ°•μ‘°, λ―Έλ‹ˆλ§΅, λ©€ν‹° μ»€μ„œ 등을 μ§€μ›ν•©λ‹ˆλ‹€.
  • λ‚΄μž₯ 터미널: μ•± λ‚΄μ—μ„œ λ°”λ‘œ npm install, git commit 등을 μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • AI μ»¨ν…μŠ€νŠΈ 메뉴: ν…μŠ€νŠΈλ₯Ό λ“œλž˜κ·Έν•˜λ©΄ Notion μŠ€νƒ€μΌμ˜ AI 메뉴(λ¦¬νŒ©ν† λ§, 주석 생성 λ“±)κ°€ λ‚˜νƒ€λ‚©λ‹ˆλ‹€.

πŸ‘οΈ λΉ„μ „ λΈŒλΌμš°μ € μ—μ΄μ „νŠΈ (Vision Browser Agent)

λ³΄μ΄λŠ” λŒ€λ‘œ μ΄ν•΄ν•˜κ³ , μ‚¬λžŒμ²˜λŸΌ μ›€μ§μž…λ‹ˆλ‹€.

  • ν•˜μ΄λΈŒλ¦¬λ“œ μ œμ–΄: DOM 뢄석과 Vision AI(Set-of-Mark)λ₯Ό κ²°ν•©ν•˜μ—¬ λ³΅μž‘ν•œ μ›Ή νŽ˜μ΄μ§€λ„ μ •ν™•ν•˜κ²Œ μ œμ–΄ν•©λ‹ˆλ‹€.
  • λΈŒλΌμš°μ € μžλ™ν™”: 클릭, 슀크둀, 타이핑 λ“± 27개 μ΄μƒμ˜ λΈŒλΌμš°μ € μ•‘μ…˜μ„ μ§€μ›ν•©λ‹ˆλ‹€.

πŸ“š 지식 기반 (RAG)

λ‹Ήμ‹ μ˜ λ¬Έμ„œλ₯Ό AI의 μ§€μ‹μœΌλ‘œ.

  • 둜컬 RAG: 둜컬 SQLite-vec 벑터 DBλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. λ§ˆν¬λ‹€μš΄/ν…μŠ€νŠΈ νŒŒμΌμ„ λ“œλž˜κ·Έν•˜μ—¬ μ•ˆμ „ν•œ 개인 지식 μ €μž₯μ†Œλ₯Ό κ΅¬μΆ•ν•˜μ„Έμš”.
  • νŒ€ λ¬Έμ„œ: GitHub μ €μž₯μ†Œλ₯Ό μ—°κ²°ν•˜μ—¬ νŒ€μ˜ μœ„ν‚€λ‚˜ μ½”λ“œλ₯Ό μžλ™μœΌλ‘œ λ™κΈ°ν™”ν•˜κ³  κ³΅μœ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

🎨 λΉ„μ „ & μ‹œκ°ν™”

  • λΉ„μ „ 뢄석: μ΄λ―Έμ§€λ‚˜ μ—λŸ¬ μŠ€ν¬λ¦°μƒ·μ„ λΆ™μ—¬λ„£μœΌλ©΄ Qwen2-VL λͺ¨λΈμ΄ μ¦‰μ‹œ λΆ„μ„ν•©λ‹ˆλ‹€.
  • 이미지 생성: ComfyUI, Nano Banana와 μ—°λ™ν•˜μ—¬ λ³΅μž‘ν•œ λ…Έλ“œ 기반 이미지 생성 μ›Œν¬ν”Œλ‘œμš°λ₯Ό μ œμ–΄ν•©λ‹ˆλ‹€.
  • Mermaid & Plotly: ν…μŠ€νŠΈλ‘œ λ‹€μ΄μ–΄κ·Έλž¨μ„ μš”μ²­ν•˜κ±°λ‚˜, μ—‘μ…€/CSV 데이터λ₯Ό μΈν„°λž™ν‹°λΈŒ 차트둜 μ‹œκ°ν™”ν•©λ‹ˆλ‹€.

πŸš€ μ΄ˆμƒμ‚°μ„± (Super Productivity)

  • Quick Input: 단좕킀 ν•˜λ‚˜λ‘œ μ–΄λ””μ„œλ“  SEPilot을 ν˜ΈμΆœν•˜μ—¬ λΉ λ₯΄κ²Œ μ§ˆλ¬Έν•˜μ„Έμš”.
  • Quick Search: Ripgrep 엔진을 νƒ‘μž¬ν•˜μ—¬ 수만 개의 νŒŒμΌμ„ 0.1초 λ§Œμ— κ²€μƒ‰ν•©λ‹ˆλ‹€.

  • Quick Search: Ripgrep 엔진을 νƒ‘μž¬ν•˜μ—¬ 수만 개의 νŒŒμΌμ„ 0.1초 λ§Œμ— κ²€μƒ‰ν•©λ‹ˆλ‹€.

πŸ—οΈ 기술 μŠ€νƒ

  • Frontend: Next.js 14 (App Router), React 18, Tailwind CSS, shadcn/ui
  • Desktop: Electron 31, Context Bridge IPC, better-sqlite3
  • AI Core: LangGraph (Custom Implementation), OpenAI Compatible API, MCP (Model Context Protocol)
  • DevOps: TypeScript 5.4, ESLint, Prettier, electron-builder

πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰

sepilot_desktop/
β”œβ”€β”€ app/                          # Next.js App Router (ν”„λ‘ νŠΈμ—”λ“œ μ§„μž…μ )
β”œβ”€β”€ components/                   # React UI μ»΄ν¬λ„ŒνŠΈ
β”œβ”€β”€ electron/                     # Electron Main Process (λ°±μ—”λ“œ)
β”œβ”€β”€ lib/                          # 곡유 라이브러리 (핡심 λΉ„μ¦ˆλ‹ˆμŠ€ 둜직)
β”œβ”€β”€ hooks/                        # μ „μ—­ React μ»€μŠ€ν…€ ν›…
β”œβ”€β”€ types/                        # TypeScript νƒ€μž… μ •μ˜
β”œβ”€β”€ resources/extensions/         # Extension μ†ŒμŠ€ μ½”λ“œ (8개)
β”œβ”€β”€ extensions/                   # λΉŒλ“œλœ .sepx νŒ¨ν‚€μ§€ 파일 (ν”„λ‘œλ•μ…˜μš©)
β”œβ”€β”€ locales/                      # λ‹€κ΅­μ–΄ λ¦¬μ†ŒμŠ€ (ko, en, zh)
β”œβ”€β”€ public/                       # 정적 μžμ‚°
β”œβ”€β”€ assets/                       # λΉŒλ“œ μžμ‚° (μ•± μ•„μ΄μ½˜)
β”œβ”€β”€ scripts/                      # λΉŒλ“œ 및 개발 슀크립트
β”œβ”€β”€ tests/                        # λ‹¨μœ„ / 톡합 ν…ŒμŠ€νŠΈ
β”œβ”€β”€ e2e_tests/                    # E2E ν…ŒμŠ€νŠΈ (Playwright)
β”œβ”€β”€ docs/                         # ν”„λ‘œμ νŠΈ λ¬Έμ„œ
β”œβ”€β”€ release_notes/                # 버전별 릴리슀 λ…ΈνŠΈ
β”œβ”€β”€ builtin-skills/               # λ‚΄μž₯ μŠ€ν‚¬ μ •μ˜
└── deepreview/                   # DeepReview ꡐ윑 자료

app/ β€” Next.js App Router

Next.js App Router 기반 ν”„λ‘ νŠΈμ—”λ“œ μ§„μž…μ μž…λ‹ˆλ‹€. νŽ˜μ΄μ§€ λΌμš°νŒ…κ³Ό λ ˆμ΄μ•„μ›ƒμ„ μ •μ˜ν•©λ‹ˆλ‹€.

app/
β”œβ”€β”€ layout.tsx              # Root λ ˆμ΄μ•„μ›ƒ (Provider, κΈ€λ‘œλ²Œ μ„€μ •)
β”œβ”€β”€ page.tsx                # 메인 μ±„νŒ… νŽ˜μ΄μ§€
β”œβ”€β”€ globals.css             # κΈ€λ‘œλ²Œ CSS μŠ€νƒ€μΌ
β”œβ”€β”€ api/chat/stream/        # 슀트리밍 μ±„νŒ… API Route
β”œβ”€β”€ notification/           # μ•Œλ¦Ό νŒμ—… νŽ˜μ΄μ§€
└── quick-input/            # λΉ λ₯Έ μž…λ ₯ νŒμ—… νŽ˜μ΄μ§€

components/ β€” React UI μ»΄ν¬λ„ŒνŠΈ

λͺ¨λ“  React μ»΄ν¬λ„ŒνŠΈκ°€ κΈ°λŠ₯λ³„λ‘œ λΆ„λ₯˜λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

components/
β”œβ”€β”€ ui/                     # shadcn/ui κΈ°λ³Έ μ»΄ν¬λ„ŒνŠΈ (Button, Dialog, Input λ“±)
β”œβ”€β”€ chat/                   # μ±„νŒ… UI (ChatArea, InputBox, MessageBubble, ToolApproval)
β”œβ”€β”€ layout/                 # λ ˆμ΄μ•„μ›ƒ (MainLayout, Sidebar, ChatHistory, WikiTree)
β”œβ”€β”€ settings/               # μ„€μ • νŒ¨λ„ (LLM, MCP, Extension, Network λ“± 20+ νƒ­)
β”œβ”€β”€ markdown/               # Markdown λ Œλ”λ§ (μ½”λ“œ ν•˜μ΄λΌμ΄νŒ…, LaTeX)
β”œβ”€β”€ rag/                    # RAG λ¬Έμ„œ 관리 UI
β”œβ”€β”€ mcp/                    # MCP μ„œλ²„ 관리 UI
β”œβ”€β”€ skills/                 # μŠ€ν‚¬ 관리 UI
β”œβ”€β”€ persona/                # 페λ₯΄μ†Œλ‚˜ 관리 UI
β”œβ”€β”€ gallery/                # 이미지 가러리
β”œβ”€β”€ providers/              # React Context Provider (Theme, I18n)
└── theme/                  # ν…Œλ§ˆ κ΄€λ ¨ μ»΄ν¬λ„ŒνŠΈ

electron/ β€” Electron Main Process

Electron λ°±μ—”λ“œ ν”„λ‘œμ„ΈμŠ€μž…λ‹ˆλ‹€. IPC ν•Έλ“€λŸ¬, μ„œλΉ„μŠ€, μœ ν‹Έλ¦¬ν‹°λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.

electron/
β”œβ”€β”€ main.ts                 # μ•± μ§„μž…μ  (BrowserWindow, ν”„λ‘œν† μ½œ 등둝, μ„œλΉ„μŠ€ μ΄ˆκΈ°ν™”)
β”œβ”€β”€ preload.ts              # Preload 슀크립트 (window.electronAPI λ…ΈμΆœ)
β”œβ”€β”€ ipc/
β”‚   β”œβ”€β”€ index.ts            # IPC ν•Έλ“€λŸ¬ 등둝 총괄
β”‚   └── handlers/           # IPC ν•Έλ“€λŸ¬ (35개 파일)
β”‚       β”œβ”€β”€ llm.ts          #   LLM 슀트리밍/μ±„νŒ…
β”‚       β”œβ”€β”€ langgraph.ts    #   LangGraph μ—μ΄μ „νŠΈ μ‹€ν–‰
β”‚       β”œβ”€β”€ mcp.ts          #   MCP μ„œλ²„ 관리 및 도ꡬ 호좜
β”‚       β”œβ”€β”€ chat.ts         #   λŒ€ν™” μ €μž₯/λ‘œλ“œ/μ‚­μ œ
β”‚       β”œβ”€β”€ file.ts         #   파일 μ‹œμŠ€ν…œ μž‘μ—…
β”‚       β”œβ”€β”€ browser-view.ts #   BrowserView νƒ­ 관리
β”‚       β”œβ”€β”€ terminal.ts     #   터미널 μ„Έμ…˜ (PTY)
β”‚       β”œβ”€β”€ vectordb.ts     #   벑터 DB μž‘μ—…
β”‚       β”œβ”€β”€ extension-*.ts  #   Extension μ „μš© API (handlers, fs, llm, mcp, vectordb)
β”‚       └── ...             #   기타 (auth, config, scheduler, skills λ“±)
β”œβ”€β”€ services/               # λ°±μ—”λ“œ μ„œλΉ„μŠ€ (15개 파일)
β”‚   β”œβ”€β”€ database.ts         #   SQLite λ°μ΄ν„°λ² μ΄μŠ€ 관리
β”‚   β”œβ”€β”€ vectordb.ts         #   벑터 DB μ„œλΉ„μŠ€
β”‚   β”œβ”€β”€ pty-manager.ts      #   PTY 터미널 관리
β”‚   β”œβ”€β”€ scheduler.ts        #   μž‘μ—… μŠ€μΌ€μ€„λŸ¬
β”‚   └── ...                 #   기타 (logger, token-manager, webhook λ“±)
β”œβ”€β”€ agents/                 # Electron μΈ‘ μ—μ΄μ „νŠΈ
└── utils/                  # μœ ν‹Έλ¦¬ν‹° (paths, update-checker)

lib/ β€” 곡유 라이브러리

ν”„λ‘ νŠΈμ—”λ“œμ™€ λ°±μ—”λ“œμ—μ„œ κ³΅μœ ν•˜λŠ” 핡심 λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μž…λ‹ˆλ‹€.

lib/
β”œβ”€β”€ langgraph/              # LangGraph μ—μ΄μ „νŠΈ μ‹œμŠ€ν…œ
β”‚   β”œβ”€β”€ base/               #   κΈ°λ³Έ κ·Έλž˜ν”„ 클래슀 (BaseGraph, ThinkingGraph)
β”‚   β”œβ”€β”€ graphs/             #   κ·Έλž˜ν”„ κ΅¬ν˜„μ²΄ (15개: chat, agent, coding-agent, rag λ“±)
β”‚   β”œβ”€β”€ nodes/              #   κ·Έλž˜ν”„ λ…Έλ“œ (generate, retrieve, tools)
β”‚   β”œβ”€β”€ factory/            #   GraphFactory + GraphRegistry
β”‚   └── prompts/            #   μ‹œμŠ€ν…œ ν”„λ‘¬ν”„νŠΈ
β”œβ”€β”€ llm/                    # LLM ν΄λΌμ΄μ–ΈνŠΈ
β”‚   β”œβ”€β”€ base.ts             #   BaseLLMProvider (좔상 클래슀)
β”‚   β”œβ”€β”€ client.ts           #   LLMClient 싱글톀
β”‚   └── providers/          #   LLM 제곡자 (OpenAI ν˜Έν™˜, Ollama)
β”œβ”€β”€ mcp/                    # MCP (Model Context Protocol)
β”‚   β”œβ”€β”€ client.ts           #   MCP ν΄λΌμ΄μ–ΈνŠΈ (JSON-RPC 2.0)
β”‚   β”œβ”€β”€ server-manager.ts   #   MCP μ„œλ²„ 생λͺ…μ£ΌκΈ° 관리
β”‚   └── tools/              #   MCP 도ꡬ (Google Search, Browser λ“±)
β”œβ”€β”€ extensions/             # Extension μ‹œμŠ€ν…œ (18개 파일)
β”‚   β”œβ”€β”€ loader.ts           #   Renderer ν™˜κ²½ λ‘œλ”
β”‚   β”œβ”€β”€ loader-main.ts      #   Main Process λ‘œλ”
β”‚   β”œβ”€β”€ registry.ts         #   Extension λ ˆμ§€μŠ€νŠΈλ¦¬
β”‚   └── context-factory.ts  #   λŸ°νƒ€μž„ μ»¨ν…μŠ€νŠΈ 생성
β”œβ”€β”€ extension-sdk/          # Extension SDK (@sepilot/extension-sdk)
β”‚   └── src/                #   νƒ€μž…, ν›…, IPC 헬퍼, λŸ°νƒ€μž„ API, UI
β”œβ”€β”€ store/                  # Zustand μ „μ—­ μƒνƒœ
β”‚   β”œβ”€β”€ chat-store.ts       #   핡심 μƒνƒœ (λŒ€ν™”, λ©”μ‹œμ§€, λͺ¨λ“œ, Extension 슬라이슀)
β”‚   └── extension-slices.ts #   동적 Extension Store 슬라이슀
β”œβ”€β”€ hooks/                  # 라이브러리 레벨 React ν›…
β”œβ”€β”€ vectordb/               # 벑터 DB (μž„λ² λ”©, 인덱싱, μ–΄λŒ‘ν„°)
β”œβ”€β”€ auth/                   # 인증 (GitHub OAuth)
β”œβ”€β”€ config/                 # μ„€μ • 관리 (μ•”ν˜Έν™”, 동기화, λ§ˆμ΄κ·Έλ ˆμ΄μ…˜)
β”œβ”€β”€ http/                   # HTTP ν΄λΌμ΄μ–ΈνŠΈ (ν”„λ‘μ‹œ/SSL 지원)
β”œβ”€β”€ skills/                 # μŠ€ν‚¬ 관리 (manager, validator, loader)
β”œβ”€β”€ documents/              # λ¬Έμ„œ 처리 (PDF, Word, Excel)
β”œβ”€β”€ github/                 # GitHub 톡합
β”œβ”€β”€ imagegen/               # 이미지 생성
β”œβ”€β”€ comfyui/                # ComfyUI 톡합
β”œβ”€β”€ i18n/                   # κ΅­μ œν™” (i18next, ν•œ/영/쀑)
└── utils/                  # 곡톡 μœ ν‹Έλ¦¬ν‹° (logger, token-counter, error-handler)

hooks/ β€” μ „μ—­ React μ»€μŠ€ν…€ ν›…

μ•± μ „μ²΄μ—μ„œ μ‚¬μš©λ˜λŠ” λ²”μš© React μ»€μŠ€ν…€ ν›…μž…λ‹ˆλ‹€.

νŒŒμΌμ„€λͺ…
use-confirm-dialog.ts확인 λ‹€μ΄μ–Όλ‘œκ·Έ ν›…
use-file-clipboard.ts파일 ν΄λ¦½λ³΄λ“œ ν›…
use-file-system.ts파일 μ‹œμŠ€ν…œ μ ‘κ·Ό ν›…
use-resize-observer.tsλ¦¬μ‚¬μ΄μ¦ˆ 감지 ν›…
use-theme-persistence.tsν…Œλ§ˆ μ˜μ†ν™” ν›…

types/ β€” TypeScript νƒ€μž… μ •μ˜

ν”„λ‘œμ νŠΈ μ „μ—­μ—μ„œ μ‚¬μš©λ˜λŠ” TypeScript νƒ€μž…κ³Ό μΈν„°νŽ˜μ΄μŠ€μž…λ‹ˆλ‹€.

νŒŒμΌμ„€λͺ…
index.ts핡심 νƒ€μž… (Message, Conversation, LLMConfig λ“±)
electron.d.tswindow.electronAPI νƒ€μž… μ„ μ–Έ
ipc-channels.tsIPC 채널λͺ… μƒμˆ˜
persona.ts페λ₯΄μ†Œλ‚˜ νƒ€μž…
skill.tsμŠ€ν‚¬ νƒ€μž…
scheduler.tsμŠ€μΌ€μ€„λŸ¬ νƒ€μž…
wiki-tree.tsWiki 트리 νƒ€μž…

resources/extensions/ β€” Extension μ†ŒμŠ€ μ½”λ“œ

8개의 Extension이 각각 독립적인 ν”„λ‘œμ νŠΈλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

Extensionμ„€λͺ…
editor/μ½”λ“œ 에디터 (Monaco Editor 기반)
browser/μ›Ή λΈŒλΌμš°μ € (BrowserView νƒ­ 관리)
terminal/터미널 (xterm.js + PTY)
architect/μ•„ν‚€ν…μ²˜ λ‹€μ΄μ–΄κ·Έλž¨
presentation/ν”„λ ˆμ  ν…Œμ΄μ…˜ 생성
github-actions/GitHub Actions 관리
github-pr-review/GitHub PR 리뷰
github-project/GitHub Project 관리

기타 디렉토리

디렉토리섀λͺ…
extensions/ν”„λ‘œλ•μ…˜ 배포용 λΉŒλ“œλœ .sepx νŒ¨ν‚€μ§€
locales/λ‹€κ΅­μ–΄ λ²ˆμ—­ 파일 (ko.json, en.json, zh.json)
public/정적 μžμ‚° (favicon, Monaco 파일, sql-wasm λ°”μ΄λ„ˆλ¦¬)
assets/λΉŒλ“œ μžμ‚° (μ•± μ•„μ΄μ½˜)
scripts/λΉŒλ“œ/개발 슀크립트 (Extension λ²ˆλ“€λŸ¬, SDK λΉŒλ“œ, Monaco 볡사 λ“±)
tests/λ‹¨μœ„/톡합 ν…ŒμŠ€νŠΈ (Jest + React Testing Library)
e2e_tests/E2E ν…ŒμŠ€νŠΈ (Playwright)
docs/μ•„ν‚€ν…μ²˜ λ¬Έμ„œ, 개발 κ°€μ΄λ“œ, Extension λ¬Έμ„œ
release_notes/버전별 릴리슀 λ…ΈνŠΈ (v0.5.0 ~ v0.9.1)
builtin-skills/AI μ—μ΄μ „νŠΈ λ‚΄μž₯ μŠ€ν‚¬ μ •μ˜
deepreview/DeepReview ꡐ윑 자료 및 μ›Œν¬μƒ΅

πŸ“¦ μ„€μΉ˜

Releases νŽ˜μ΄μ§€μ—μ„œ μ΅œμ‹  μ„€μΉ˜ νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œν•˜μ„Έμš”.

πŸ› οΈ 개발 ν™˜κ²½ μ„€μ •

개발자용: μƒμ„Έν•œ 개발 ν™˜κ²½ 섀정은 SETUP.mdλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

λΉ λ₯Έ μ‹œμž‘:

# 두 μ €μž₯μ†Œ λͺ¨λ‘ 클둠
git clone <sepilot_desktop-repo> sepilot_desktop
git clone <sepilot-extensions-repo> sepilot-extensions

# μ„€μΉ˜ 및 μ‹€ν–‰
cd sepilot_desktop
pnpm install
pnpm run dev

μ€‘μš”: 메인 앱은 Extension μ†ŒμŠ€μ½”λ“œλ₯Ό μœ„ν•΄ 같은 λ ˆλ²¨μ— sepilot-extensions 디렉토리가 ν•„μš”ν•©λ‹ˆλ‹€.

πŸ§ͺ 개발 & ν…ŒμŠ€νŠΈ

ν…ŒμŠ€νŠΈ μ‹€ν–‰

λ‹¨μœ„ ν…ŒμŠ€νŠΈ:

pnpm run test              # λͺ¨λ“  λ‹¨μœ„ ν…ŒμŠ€νŠΈ μ‹€ν–‰
pnpm run test:frontend     # ν”„λ‘ νŠΈμ—”λ“œ ν…ŒμŠ€νŠΈλ§Œ
pnpm run test:backend      # λ°±μ—”λ“œ ν…ŒμŠ€νŠΈλ§Œ
pnpm run test:coverage     # 컀버리지 리포트 포함

E2E ν…ŒμŠ€νŠΈ:

E2E ν…ŒμŠ€νŠΈλŠ” λ””μŠ€ν”Œλ ˆμ΄ μ„œλ²„κ°€ ν•„μš”ν•©λ‹ˆλ‹€. ν—€λ“œλ¦¬μŠ€ ν™˜κ²½(CI/CD)μ—μ„œλŠ”:

# Xvfb μ„€μΉ˜ (Ubuntu/Debian)
sudo apt-get install xvfb

# Xvfb μ„€μΉ˜ (Fedora/RHEL)
sudo dnf install xorg-x11-server-Xvfb

# E2E ν…ŒμŠ€νŠΈ μ‹€ν–‰
pnpm run test:e2e

GUI ν™˜κ²½(macOS, Windows, Linux λ°μŠ€ν¬ν†±)μ—μ„œλŠ” Xvfb 없이 λ°”λ‘œ μ‹€ν–‰λ©λ‹ˆλ‹€.

ν…ŒμŠ€νŠΈ 컀버리지

컀버리지 리포트 확인:

Codecovλ₯Ό μ‚¬μš©ν•˜μ—¬ 포괄적인 ν…ŒμŠ€νŠΈ 컀버리지λ₯Ό μΆ”μ ν•©λ‹ˆλ‹€. λŒ€μ‹œλ³΄λ“œμ—μ„œ λ‹€μŒμ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€:

  • λŒ€ν™”ν˜• μ„ λ²„μŠ€νŠΈ 및 트리 μ‹œκ°ν™”λ₯Ό ν†΅ν•œ 전체 ν”„λ‘œμ νŠΈ 컀버리지
  • μ»΄ν¬λ„ŒνŠΈλ³„ 컀버리지 (Chat, LangGraph, MCP, RAG, Electron IPC)
  • μ‹œκ°„λ³„ 컀버리지 좔이
  • Pull Request 영ν–₯ 뢄석

둜컬 컀버리지 리포트:

# 컀버리지 리포트 생성
pnpm run test:coverage             # λͺ¨λ“  ν…ŒμŠ€νŠΈ + 컀버리지
pnpm run test:coverage:frontend    # ν”„λ‘ νŠΈμ—”λ“œλ§Œ
pnpm run test:coverage:backend     # λ°±μ—”λ“œλ§Œ

# HTML 리포트 보기 (ν…ŒμŠ€νŠΈ μ‹€ν–‰ ν›„)
open coverage/lcov-report/index.html   # macOS
start coverage/lcov-report/index.html  # Windows
xdg-open coverage/lcov-report/index.html  # Linux

컀버리지 λͺ©ν‘œ:

μ»΄ν¬λ„ŒνŠΈλͺ©ν‘œν˜„μž¬
전체 ν”„λ‘œμ νŠΈ55%codecov
ν”„λ‘ νŠΈμ—”λ“œ (UI)50%-
λ°±μ—”λ“œ (Core)55%-
Chat μ‹œμŠ€ν…œ60%-
LangGraph Agent65%-
MCP 톡합60%-
Electron IPC70%-

μžλ™ 컀버리지 체크:

  • βœ… PR μ½”λ©˜νŠΈ: λͺ¨λ“  Pull Request에 μƒμ„Έν•œ 컀버리지 뢄석 제곡
  • βœ… Status Checks: PR은 μž„κ³„κ°’(Β±2-5%) λ‚΄μ—μ„œ 컀버리지 μœ μ§€ ν•„μˆ˜
  • βœ… μ»΄ν¬λ„ŒνŠΈ 좔적: κ°œλ³„ μ»΄ν¬λ„ŒνŠΈλ₯Ό λ³„λ„λ‘œ 좔적
  • βœ… λ²ˆλ“€ 뢄석: JavaScript λ²ˆλ“€ 크기 λͺ¨λ‹ˆν„°λ§
  • βœ… ν…ŒμŠ€νŠΈ κ²°κ³Ό: ν…ŒμŠ€νŠΈ 톡과/μ‹€νŒ¨ 좔적이 컀버리지와 톡합

πŸ“„ License

This project is licensed under a custom license. See the LICENSE file for details.

Skills Info
Original Name:typescript-strict-modeAuthor:jhl