sari 0.0.1__py3-none-any.whl → 0.0.2__py3-none-any.whl
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.
- app/config.py +16 -1
- deckard/version.py +1 -1
- {sari-0.0.1.dist-info → sari-0.0.2.dist-info}/METADATA +57 -55
- {sari-0.0.1.dist-info → sari-0.0.2.dist-info}/RECORD +8 -8
- {sari-0.0.1.dist-info → sari-0.0.2.dist-info}/WHEEL +0 -0
- {sari-0.0.1.dist-info → sari-0.0.2.dist-info}/entry_points.txt +0 -0
- {sari-0.0.1.dist-info → sari-0.0.2.dist-info}/licenses/LICENSE +0 -0
- {sari-0.0.1.dist-info → sari-0.0.2.dist-info}/top_level.txt +0 -0
app/config.py
CHANGED
|
@@ -62,7 +62,19 @@ class Config:
|
|
|
62
62
|
"db_path": str(WorkspaceManager.get_local_db_path(workspace_root)),
|
|
63
63
|
"include_ext": [".py", ".js", ".ts", ".java", ".kt", ".go", ".rs", ".md", ".json", ".yaml", ".yml", ".sh"],
|
|
64
64
|
"include_files": ["pom.xml", "package.json", "Dockerfile", "Makefile", "build.gradle", "settings.gradle"],
|
|
65
|
-
"exclude_dirs": [
|
|
65
|
+
"exclude_dirs": [
|
|
66
|
+
".git",
|
|
67
|
+
"node_modules",
|
|
68
|
+
"__pycache__",
|
|
69
|
+
".venv",
|
|
70
|
+
"venv",
|
|
71
|
+
"target",
|
|
72
|
+
"build",
|
|
73
|
+
"dist",
|
|
74
|
+
"coverage",
|
|
75
|
+
"vendor",
|
|
76
|
+
"data",
|
|
77
|
+
],
|
|
66
78
|
"exclude_globs": [
|
|
67
79
|
"*.min.js",
|
|
68
80
|
"*.min.css",
|
|
@@ -75,6 +87,9 @@ class Config:
|
|
|
75
87
|
"*.pyc",
|
|
76
88
|
"*.pyo",
|
|
77
89
|
"__pycache__/*",
|
|
90
|
+
"*.db",
|
|
91
|
+
"*.db-shm",
|
|
92
|
+
"*.db-wal",
|
|
78
93
|
],
|
|
79
94
|
"redact_enabled": True,
|
|
80
95
|
"commit_batch_size": 500,
|
deckard/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.0.
|
|
1
|
+
__version__ = "0.0.2"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sari
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.2
|
|
4
4
|
Summary: Sari - Local Search MCP Server
|
|
5
5
|
Author: Horadric
|
|
6
6
|
License: MIT License
|
|
@@ -66,23 +66,42 @@ Dynamic: license-file
|
|
|
66
66
|
|
|
67
67
|
## 🚀 성역 소환 주문 (설치 방법 - Installation)
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
> **중요:** `deckard` 모듈/엔트리포인트는 **호환용으로만 유지**됩니다.
|
|
70
|
+
> 앞으로는 **Sari 이름을 사용**해 주세요. (향후 버전에서 제거 예정)
|
|
71
|
+
|
|
72
|
+
설치 방식은 두 가지입니다.
|
|
73
|
+
|
|
74
|
+
1) **설정만 추가하면 자동 설치 (권장)**
|
|
75
|
+
2) **직접 설치 (오프라인/제한 환경용)**
|
|
76
|
+
|
|
77
|
+
### ✅ 1) 설정만 추가하면 자동 설치 (권장)
|
|
78
|
+
MCP 설정 파일에 아래 블록을 **직접 추가**하면, 실행 시 Sari가 자동 설치됩니다.
|
|
79
|
+
|
|
80
|
+
```toml
|
|
81
|
+
[mcp_servers.sari]
|
|
82
|
+
command = "bash"
|
|
83
|
+
args = ["-lc", "if [ -x ~/.local/share/sari/bootstrap.sh ]; then if [ \"${SARI_AUTO_UPDATE:-}\" = \"1\" ]; then if [ -n \"${SARI_VERSION:-}\" ]; then curl -fsSL https://raw.githubusercontent.com/BaeCheolHan/sari/v${SARI_VERSION}/install.py | python3 - -y --update; else curl -fsSL https://raw.githubusercontent.com/BaeCheolHan/sari/main/install.py | python3 - -y --update; fi; fi; exec ~/.local/share/sari/bootstrap.sh --transport stdio; else if [ -n \"${SARI_VERSION:-}\" ]; then curl -fsSL https://raw.githubusercontent.com/BaeCheolHan/sari/v${SARI_VERSION}/install.py | python3 - -y; else curl -fsSL https://raw.githubusercontent.com/BaeCheolHan/sari/main/install.py | python3 - -y; fi; exec ~/.local/share/sari/bootstrap.sh --transport stdio; fi"]
|
|
84
|
+
env = { DECKARD_WORKSPACE_ROOT = "/path/to/workspace", DECKARD_RESPONSE_COMPACT = "1", SARI_VERSION = "0.0.2", SARI_AUTO_UPDATE = "0" }
|
|
85
|
+
startup_timeout_sec = 60
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 🧰 2) 직접 설치 (오프라인/제한 환경용)
|
|
89
|
+
터미널(Terminal)에서 직접 설치도 가능합니다.
|
|
71
90
|
|
|
72
91
|
```bash
|
|
73
|
-
# macOS / Linux
|
|
92
|
+
# macOS / Linux
|
|
74
93
|
curl -fsSL https://raw.githubusercontent.com/BaeCheolHan/sari/main/install.py | python3 - -y
|
|
75
94
|
|
|
76
|
-
# Windows (
|
|
95
|
+
# Windows (PowerShell)
|
|
77
96
|
irm https://raw.githubusercontent.com/BaeCheolHan/sari/main/install.py | python - -y
|
|
78
97
|
```
|
|
79
98
|
|
|
80
99
|
### 📖 호라드림의 설치 계시 (How it works)
|
|
81
|
-
사리 선생님의 설치 마법은
|
|
100
|
+
사리 선생님의 설치 마법은 이렇게 동작합니다:
|
|
82
101
|
|
|
83
|
-
1.
|
|
84
|
-
2.
|
|
85
|
-
3.
|
|
102
|
+
1. **설정만 추가** → 실행 시 네트워크에서 자동 설치
|
|
103
|
+
2. 설치 위치는 항상 **전역 고정** (`~/.local/share/sari` / `%LOCALAPPDATA%\\sari`)
|
|
104
|
+
3. 데몬은 **항상 하나**로 유지
|
|
86
105
|
|
|
87
106
|
|
|
88
107
|
### 설치하면 어떤 마법이 일어나나요?
|
|
@@ -90,14 +109,11 @@ irm https://raw.githubusercontent.com/BaeCheolHan/sari/main/install.py | python
|
|
|
90
109
|
2. **비밀 거처 마련**: 도서관 주소를 만듭니다. (이사 비용은 무료입니다.)
|
|
91
110
|
- **macOS/Linux**: `~/.local/share/sari` (사과 마크가 찍힌 비밀 창고)
|
|
92
111
|
- **Windows**: `%LOCALAPPDATA%\sari` (창문이 달린 비밀 창고)
|
|
93
|
-
3. **통역기 연결**:
|
|
94
|
-
|
|
95
|
-
### 설정은 어디에 숨겨지나요? (쌍둥이 CLI 지원)
|
|
96
|
-
설치 스크립트(`install.py`)는 **설정이 지옥의 촉수처럼 흩어져 충돌**나는 것을 막기 위해 다음처럼 엄격하게 동작합니다.
|
|
112
|
+
3. **통역기 연결**: MCP 설정 블록만 추가하면 실행 시 자동으로 연결됩니다.
|
|
97
113
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
114
|
+
### 설정은 어디에 숨겨지나요? (수동 등록 방식)
|
|
115
|
+
**설정 파일은 자동으로 수정하지 않습니다.**
|
|
116
|
+
Codex/Gemini는 TOML, Cursor/Claude는 JSON 형식으로 동일 내용을 넣어주세요.
|
|
101
117
|
|
|
102
118
|
### 여러 워크스페이스를 동시에? (분신술의 대가)
|
|
103
119
|
- **설정은 워크스페이스별로 각자의 운명**을 가집니다.
|
|
@@ -108,21 +124,14 @@ irm https://raw.githubusercontent.com/BaeCheolHan/sari/main/install.py | python
|
|
|
108
124
|
|
|
109
125
|
---
|
|
110
126
|
|
|
111
|
-
## 🪄
|
|
127
|
+
## 🪄 설치 옵션 (대안)
|
|
112
128
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
**설치본 고정 모드**
|
|
117
|
-
설치본 경로 `~/.local/share/sari/bootstrap.sh`를 등록하면 **자동 업데이트 없이** 고정된 버전을 사용합니다. (변화를 거부하는 보수적인 사서 모드입니다.)
|
|
118
|
-
|
|
119
|
-
**자동 업데이트 기준**
|
|
120
|
-
레포 tag와 설치본 `VERSION`이 다르면, 레포의 `bootstrap.sh`가 `install.py`를 자동 실행합니다.
|
|
129
|
+
**오프라인/제한 환경용**
|
|
130
|
+
설정에서 `command`를 설치본 `bootstrap.sh`로 직접 지정하면 네트워크 없이 실행할 수 있습니다.
|
|
121
131
|
|
|
122
132
|
**bootstrap 스크립트 위치**
|
|
123
|
-
- **macOS/Linux
|
|
124
|
-
- **
|
|
125
|
-
- **Windows (설치본)**: `%LOCALAPPDATA%\sari\bootstrap.bat`
|
|
133
|
+
- **macOS/Linux**: `~/.local/share/sari/bootstrap.sh`
|
|
134
|
+
- **Windows**: `%LOCALAPPDATA%\\sari\\bootstrap.bat`
|
|
126
135
|
|
|
127
136
|
---
|
|
128
137
|
|
|
@@ -193,8 +202,8 @@ python3 ~/.local/share/sari/doctor.py
|
|
|
193
202
|
## 🧯 문제 해결 (Troubleshooting)
|
|
194
203
|
|
|
195
204
|
### Q. MCP 연결이 안 돼요
|
|
196
|
-
- `command`
|
|
197
|
-
|
|
205
|
+
- `command`가 `bash`인지, 그리고 네트워크가 허용되는지 확인하세요.
|
|
206
|
+
- 제한 환경이라면 **설치본 bootstrap 경로**로 전환하세요.
|
|
198
207
|
- 데몬 상태 확인:
|
|
199
208
|
```bash
|
|
200
209
|
# macOS/Linux
|
|
@@ -213,11 +222,14 @@ python3 ~/.local/share/sari/doctor.py
|
|
|
213
222
|
- 격리된 환경에서 실행하려면 `scripts/run_tests_isolated.sh`를 사용하세요. (HOME/registry/log/port 분리)
|
|
214
223
|
|
|
215
224
|
### Q. 업데이트가 안 되는 것 같아요
|
|
216
|
-
- **1‑Step 모드인지 확인**하세요 (레포 `bootstrap.sh` 사용).
|
|
217
225
|
- 설치본 `VERSION`을 확인하세요:
|
|
218
226
|
```bash
|
|
219
227
|
cat ~/.local/share/sari/VERSION
|
|
220
228
|
```
|
|
229
|
+
- 필요하면 강제 업데이트:
|
|
230
|
+
```bash
|
|
231
|
+
curl -fsSL https://raw.githubusercontent.com/BaeCheolHan/sari/main/install.py | python3 - --update -y
|
|
232
|
+
```
|
|
221
233
|
|
|
222
234
|
### Q. 설정 파일이 여기저기 생겼어요
|
|
223
235
|
- 사리 선생님은 **글로벌 설정과 프로젝트 설정이 뒤섞여 혼돈이 오는 걸 극도로 혐오합니다.**
|
|
@@ -332,45 +344,35 @@ Sari는 인덱싱 + FTS 기반 검색 구조라서 **“어떤 단계에서 쓰
|
|
|
332
344
|
{
|
|
333
345
|
"mcpServers": {
|
|
334
346
|
"sari": {
|
|
335
|
-
"command": "
|
|
336
|
-
"args": [
|
|
347
|
+
"command": "bash",
|
|
348
|
+
"args": [
|
|
349
|
+
"-lc",
|
|
350
|
+
"if [ -x ~/.local/share/sari/bootstrap.sh ]; then if [ \"${SARI_AUTO_UPDATE:-}\" = \"1\" ]; then if [ -n \"${SARI_VERSION:-}\" ]; then curl -fsSL https://raw.githubusercontent.com/BaeCheolHan/sari/v${SARI_VERSION}/install.py | python3 - -y --update; else curl -fsSL https://raw.githubusercontent.com/BaeCheolHan/sari/main/install.py | python3 - -y --update; fi; fi; exec ~/.local/share/sari/bootstrap.sh --transport stdio; else if [ -n \"${SARI_VERSION:-}\" ]; then curl -fsSL https://raw.githubusercontent.com/BaeCheolHan/sari/v${SARI_VERSION}/install.py | python3 - -y; else curl -fsSL https://raw.githubusercontent.com/BaeCheolHan/sari/main/install.py | python3 - -y; fi; exec ~/.local/share/sari/bootstrap.sh --transport stdio; fi"
|
|
351
|
+
],
|
|
352
|
+
"env": {
|
|
353
|
+
"DECKARD_WORKSPACE_ROOT": "/Users/[사용자명]/path/to/workspace",
|
|
354
|
+
"DECKARD_RESPONSE_COMPACT": "1"
|
|
355
|
+
}
|
|
337
356
|
}
|
|
338
357
|
}
|
|
339
358
|
}
|
|
340
359
|
```
|
|
341
360
|
|
|
342
361
|
### 🧩 Codex / Gemini 설정 예시 (config.toml)
|
|
343
|
-
> 아래는 **설치본 고정 모드** 예시입니다. 1‑Step 모드를 쓰려면 `command`를 레포 경로로 바꾸세요.
|
|
344
|
-
|
|
345
|
-
```toml
|
|
346
|
-
[mcp_servers.sari]
|
|
347
|
-
command = "/Users/[사용자명]/.local/share/sari/bootstrap.sh"
|
|
348
|
-
args = ["--workspace-root", "/Users/[사용자명]/path/to/workspace"]
|
|
349
|
-
env = { DECKARD_WORKSPACE_ROOT = "/Users/[사용자명]/path/to/workspace" }
|
|
350
|
-
startup_timeout_sec = 60
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
**1‑Step 모드 예시 (레포 bootstrap 사용)**
|
|
354
362
|
```toml
|
|
355
363
|
[mcp_servers.sari]
|
|
356
|
-
command = "
|
|
357
|
-
args = ["
|
|
358
|
-
env = { DECKARD_WORKSPACE_ROOT = "/Users/[사용자명]/path/to/workspace" }
|
|
364
|
+
command = "bash"
|
|
365
|
+
args = ["-lc", "if [ -x ~/.local/share/sari/bootstrap.sh ]; then if [ \"${SARI_AUTO_UPDATE:-}\" = \"1\" ]; then if [ -n \"${SARI_VERSION:-}\" ]; then curl -fsSL https://raw.githubusercontent.com/BaeCheolHan/sari/v${SARI_VERSION}/install.py | python3 - -y --update; else curl -fsSL https://raw.githubusercontent.com/BaeCheolHan/sari/main/install.py | python3 - -y --update; fi; fi; exec ~/.local/share/sari/bootstrap.sh --transport stdio; else if [ -n \"${SARI_VERSION:-}\" ]; then curl -fsSL https://raw.githubusercontent.com/BaeCheolHan/sari/v${SARI_VERSION}/install.py | python3 - -y; else curl -fsSL https://raw.githubusercontent.com/BaeCheolHan/sari/main/install.py | python3 - -y; fi; exec ~/.local/share/sari/bootstrap.sh --transport stdio; fi"]
|
|
366
|
+
env = { DECKARD_WORKSPACE_ROOT = "/Users/[사용자명]/path/to/workspace", DECKARD_RESPONSE_COMPACT = "1" }
|
|
359
367
|
startup_timeout_sec = 60
|
|
360
368
|
```
|
|
361
369
|
|
|
362
370
|
**필드별 상세 설명**
|
|
363
371
|
- `command`: 사리를 실행할 경로입니다.
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
- **설치본 고정 모드**: 설치본의 `bootstrap.sh` 경로
|
|
367
|
-
예) `~/.local/share/sari/bootstrap.sh`
|
|
368
|
-
- `args`: 실행 옵션을 리스트로 전달합니다.
|
|
369
|
-
- `--workspace-root <path>`: 인덱싱할 워크스페이스 루트 경로
|
|
370
|
-
- **생략 시**: 현재 실행 위치를 기준으로 동작하거나, `.codex-root`가 있는 상위 폴더를 기준으로 동작합니다.
|
|
372
|
+
- `command`: 기본은 `bash` (네트워크 자동 설치 방식).
|
|
373
|
+
- `args`: `curl | python3`로 설치 후 `bootstrap.sh` 실행.
|
|
371
374
|
- `env`: 환경 변수를 강제로 주입합니다.
|
|
372
375
|
- `DECKARD_WORKSPACE_ROOT`는 **workspace-root를 고정**하려고 넣습니다.
|
|
373
|
-
- `args`와 **동일한 값**을 넣는 것이 권장됩니다. (둘 중 하나만 있어도 동작합니다)
|
|
374
376
|
- `startup_timeout_sec`: 데몬 기동 대기 시간(초).
|
|
375
377
|
초기 인덱싱이 길다면 120~180으로 늘려보세요.
|
|
376
378
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
app/__init__.py,sha256=-Zt2MV-Li3EOuBnYI08TkMYVHWk6XpJQeT1Gab1a_aI,19
|
|
2
|
-
app/config.py,sha256=
|
|
2
|
+
app/config.py,sha256=2iWlV02ILanAICJCcIm-e0rit4Ysp4tY-EoW4nLtJ-w,10773
|
|
3
3
|
app/db.py,sha256=mr94cb1kmcHkq7eSdu6IoEZK2W0esig7amtLpST1C8U,37110
|
|
4
4
|
app/dedup_queue.py,sha256=9fsOTFP-x-wjEV6iVd09tP4PnsKMDn2njsGQ0s7AomA,2642
|
|
5
5
|
app/engine_registry.py,sha256=7DpQSNUEK_C44M-Do9t4Z5V1QWSoP8p9PW3NufEMCZ8,2028
|
|
@@ -17,7 +17,7 @@ app/workspace.py,sha256=yq-juoanQLJ5LDu2LQHkOPZ1p5MHXf1DidcP61GXs6Q,11567
|
|
|
17
17
|
deckard/__init__.py,sha256=OhcUiEPcHjh0myrcuwazFZyrdCQ0QLfrzxTNbWWE8mw,68
|
|
18
18
|
deckard/__main__.py,sha256=fdA1QWBe5LNX0fbtaJXa1-dwEhrg_4sS_5UnjaajcMo,80
|
|
19
19
|
deckard/main.py,sha256=9QI0SAlvuo_0wu5fZ9f2f73D9dufsSSV9bSUFgPCqj0,11740
|
|
20
|
-
deckard/version.py,sha256=
|
|
20
|
+
deckard/version.py,sha256=QvlVh4JTl3JL7jQAja76yKtT-IvF4631ASjWY1wS6AQ,22
|
|
21
21
|
mcp/__init__.py,sha256=NVtdzrA6BbLBbJUl3bK2t65aoJah4u5sRadZyOH8aTE,30
|
|
22
22
|
mcp/__main__.py,sha256=6qR-an64JuzaaU_d4mB523T5-1Ha2nD8CWfAmQGiIS8,472
|
|
23
23
|
mcp/cli.py,sha256=d5a9eiRi0zu7BgUUDU5k0kHfNzsP6OPrAY9NU9fSewk,15686
|
|
@@ -50,9 +50,9 @@ mcp/tools/search_symbols.py,sha256=W-p8VWqssFbFw00lugJHDI9bdxEWY8bL_wFfEHMekHE,2
|
|
|
50
50
|
mcp/tools/status.py,sha256=6SXoNiBAzzTG4FsCAyf3aWeV_rbWK4ER8sDUckm9nlM,5511
|
|
51
51
|
sari/__init__.py,sha256=wlHUPfOMCBE5NPgqb-H5lj23pLwxrRKNMjPZbIPM5Us,40
|
|
52
52
|
sari/__main__.py,sha256=8C3z0JhQTBtxEC01GkohYpc3ofNhwk7CrtXmN5NvD4c,87
|
|
53
|
-
sari-0.0.
|
|
54
|
-
sari-0.0.
|
|
55
|
-
sari-0.0.
|
|
56
|
-
sari-0.0.
|
|
57
|
-
sari-0.0.
|
|
58
|
-
sari-0.0.
|
|
53
|
+
sari-0.0.2.dist-info/licenses/LICENSE,sha256=ESYyLizI0WWtxMeS7rGVcX3ivMezm-HOd5WdeOh-9oU,1056
|
|
54
|
+
sari-0.0.2.dist-info/METADATA,sha256=oW3P0qbI7uzsewGGbQSzPPzPo7Cns2C3MA5GQQ9ekL8,28308
|
|
55
|
+
sari-0.0.2.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
56
|
+
sari-0.0.2.dist-info/entry_points.txt,sha256=ZSHntGWVUVAb2vN7AnZBZITPLX7ZIfVi5t0rcjfKCxc,43
|
|
57
|
+
sari-0.0.2.dist-info/top_level.txt,sha256=0alaBF9q33uHCFUfGHZKoKYKhGL3jaYEGpzjJewUv6U,21
|
|
58
|
+
sari-0.0.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|