vexor 0.20.0__tar.gz → 0.21.0__tar.gz
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.
- {vexor-0.20.0 → vexor-0.21.0}/PKG-INFO +15 -13
- {vexor-0.20.0 → vexor-0.21.0}/README.md +14 -12
- {vexor-0.20.0 → vexor-0.21.0}/plugins/vexor/.claude-plugin/plugin.json +1 -1
- {vexor-0.20.0 → vexor-0.21.0}/vexor/__init__.py +1 -1
- {vexor-0.20.0 → vexor-0.21.0}/vexor/api.py +26 -0
- {vexor-0.20.0 → vexor-0.21.0}/vexor/cache.py +470 -274
- {vexor-0.20.0 → vexor-0.21.0}/vexor/cli.py +53 -0
- {vexor-0.20.0 → vexor-0.21.0}/vexor/config.py +54 -1
- {vexor-0.20.0 → vexor-0.21.0}/vexor/providers/gemini.py +79 -13
- {vexor-0.20.0 → vexor-0.21.0}/vexor/providers/openai.py +79 -13
- {vexor-0.20.0 → vexor-0.21.0}/vexor/services/config_service.py +14 -0
- {vexor-0.20.0 → vexor-0.21.0}/vexor/services/index_service.py +132 -5
- {vexor-0.20.0 → vexor-0.21.0}/vexor/services/search_service.py +94 -27
- {vexor-0.20.0 → vexor-0.21.0}/vexor/text.py +10 -0
- {vexor-0.20.0 → vexor-0.21.0}/.gitignore +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/LICENSE +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/gui/README.md +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/plugins/vexor/README.md +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/plugins/vexor/skills/vexor-cli/SKILL.md +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/plugins/vexor/skills/vexor-cli/references/install-vexor.md +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/pyproject.toml +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/vexor/__main__.py +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/vexor/modes.py +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/vexor/output.py +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/vexor/providers/__init__.py +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/vexor/providers/local.py +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/vexor/search.py +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/vexor/services/__init__.py +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/vexor/services/cache_service.py +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/vexor/services/content_extract_service.py +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/vexor/services/init_service.py +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/vexor/services/js_parser.py +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/vexor/services/keyword_service.py +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/vexor/services/skill_service.py +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/vexor/services/system_service.py +0 -0
- {vexor-0.20.0 → vexor-0.21.0}/vexor/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: vexor
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.21.0
|
|
4
4
|
Summary: A vector-powered CLI for semantic search over files.
|
|
5
5
|
Project-URL: Repository, https://github.com/scarletkc/vexor
|
|
6
6
|
Author: scarletkc
|
|
@@ -150,13 +150,26 @@ for hit in response.results:
|
|
|
150
150
|
By default it reads `~/.vexor/config.json`. For runtime config overrides, cache
|
|
151
151
|
controls, and per-call options, see [`docs/api/python.md`](https://github.com/scarletkc/vexor/tree/main/docs/api/python.md).
|
|
152
152
|
|
|
153
|
+
## AI Agent Skill
|
|
154
|
+
|
|
155
|
+
This repo includes a skill for AI agents to use Vexor effectively:
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
vexor install --skills claude # Claude Code
|
|
159
|
+
vexor install --skills codex # Codex
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Skill source: [`plugins/vexor/skills/vexor-cli`](https://github.com/scarletkc/vexor/raw/refs/heads/main/plugins/vexor/skills/vexor-cli/SKILL.md)
|
|
163
|
+
|
|
153
164
|
## Configuration
|
|
154
165
|
|
|
155
166
|
```bash
|
|
156
167
|
vexor config --set-provider openai # default; also supports gemini/custom/local
|
|
157
168
|
vexor config --set-model text-embedding-3-small
|
|
158
169
|
vexor config --set-batch-size 0 # 0 = single request
|
|
159
|
-
vexor config --set-embed-concurrency
|
|
170
|
+
vexor config --set-embed-concurrency 4 # parallel embedding requests
|
|
171
|
+
vexor config --set-extract-concurrency 4 # parallel file extraction workers
|
|
172
|
+
vexor config --set-extract-backend auto # auto|thread|process (default: auto)
|
|
160
173
|
vexor config --set-auto-index true # auto-index before search (default)
|
|
161
174
|
vexor config --rerank bm25 # optional BM25 rerank for top-k results
|
|
162
175
|
vexor config --rerank flashrank # FlashRank rerank (requires optional extra)
|
|
@@ -298,17 +311,6 @@ Re-running `vexor index` only re-embeds changed files; >50% changes trigger full
|
|
|
298
311
|
|
|
299
312
|
Porcelain output fields: `rank`, `similarity`, `path`, `chunk_index`, `start_line`, `end_line`, `preview` (line fields are `-` when unavailable).
|
|
300
313
|
|
|
301
|
-
## AI Agent Skill
|
|
302
|
-
|
|
303
|
-
This repo includes a skill for AI agents to use Vexor effectively:
|
|
304
|
-
|
|
305
|
-
```bash
|
|
306
|
-
vexor install --skills claude # Claude Code
|
|
307
|
-
vexor install --skills codex # Codex
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
Skill source: [`plugins/vexor/skills/vexor-cli`](https://github.com/scarletkc/vexor/raw/refs/heads/main/plugins/vexor/skills/vexor-cli/SKILL.md)
|
|
311
|
-
|
|
312
314
|
## Documentation
|
|
313
315
|
|
|
314
316
|
See [docs](https://github.com/scarletkc/vexor/tree/main/docs) for more details.
|
|
@@ -95,13 +95,26 @@ for hit in response.results:
|
|
|
95
95
|
By default it reads `~/.vexor/config.json`. For runtime config overrides, cache
|
|
96
96
|
controls, and per-call options, see [`docs/api/python.md`](https://github.com/scarletkc/vexor/tree/main/docs/api/python.md).
|
|
97
97
|
|
|
98
|
+
## AI Agent Skill
|
|
99
|
+
|
|
100
|
+
This repo includes a skill for AI agents to use Vexor effectively:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
vexor install --skills claude # Claude Code
|
|
104
|
+
vexor install --skills codex # Codex
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Skill source: [`plugins/vexor/skills/vexor-cli`](https://github.com/scarletkc/vexor/raw/refs/heads/main/plugins/vexor/skills/vexor-cli/SKILL.md)
|
|
108
|
+
|
|
98
109
|
## Configuration
|
|
99
110
|
|
|
100
111
|
```bash
|
|
101
112
|
vexor config --set-provider openai # default; also supports gemini/custom/local
|
|
102
113
|
vexor config --set-model text-embedding-3-small
|
|
103
114
|
vexor config --set-batch-size 0 # 0 = single request
|
|
104
|
-
vexor config --set-embed-concurrency
|
|
115
|
+
vexor config --set-embed-concurrency 4 # parallel embedding requests
|
|
116
|
+
vexor config --set-extract-concurrency 4 # parallel file extraction workers
|
|
117
|
+
vexor config --set-extract-backend auto # auto|thread|process (default: auto)
|
|
105
118
|
vexor config --set-auto-index true # auto-index before search (default)
|
|
106
119
|
vexor config --rerank bm25 # optional BM25 rerank for top-k results
|
|
107
120
|
vexor config --rerank flashrank # FlashRank rerank (requires optional extra)
|
|
@@ -243,17 +256,6 @@ Re-running `vexor index` only re-embeds changed files; >50% changes trigger full
|
|
|
243
256
|
|
|
244
257
|
Porcelain output fields: `rank`, `similarity`, `path`, `chunk_index`, `start_line`, `end_line`, `preview` (line fields are `-` when unavailable).
|
|
245
258
|
|
|
246
|
-
## AI Agent Skill
|
|
247
|
-
|
|
248
|
-
This repo includes a skill for AI agents to use Vexor effectively:
|
|
249
|
-
|
|
250
|
-
```bash
|
|
251
|
-
vexor install --skills claude # Claude Code
|
|
252
|
-
vexor install --skills codex # Codex
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
Skill source: [`plugins/vexor/skills/vexor-cli`](https://github.com/scarletkc/vexor/raw/refs/heads/main/plugins/vexor/skills/vexor-cli/SKILL.md)
|
|
256
|
-
|
|
257
259
|
## Documentation
|
|
258
260
|
|
|
259
261
|
See [docs](https://github.com/scarletkc/vexor/tree/main/docs) for more details.
|
|
@@ -42,6 +42,8 @@ class RuntimeSettings:
|
|
|
42
42
|
model_name: str
|
|
43
43
|
batch_size: int
|
|
44
44
|
embed_concurrency: int
|
|
45
|
+
extract_concurrency: int
|
|
46
|
+
extract_backend: str
|
|
45
47
|
base_url: str | None
|
|
46
48
|
api_key: str | None
|
|
47
49
|
local_cuda: bool
|
|
@@ -90,6 +92,8 @@ def search(
|
|
|
90
92
|
model: str | None = None,
|
|
91
93
|
batch_size: int | None = None,
|
|
92
94
|
embed_concurrency: int | None = None,
|
|
95
|
+
extract_concurrency: int | None = None,
|
|
96
|
+
extract_backend: str | None = None,
|
|
93
97
|
base_url: str | None = None,
|
|
94
98
|
api_key: str | None = None,
|
|
95
99
|
local_cuda: bool | None = None,
|
|
@@ -121,6 +125,8 @@ def search(
|
|
|
121
125
|
model=model,
|
|
122
126
|
batch_size=batch_size,
|
|
123
127
|
embed_concurrency=embed_concurrency,
|
|
128
|
+
extract_concurrency=extract_concurrency,
|
|
129
|
+
extract_backend=extract_backend,
|
|
124
130
|
base_url=base_url,
|
|
125
131
|
api_key=api_key,
|
|
126
132
|
local_cuda=local_cuda,
|
|
@@ -141,6 +147,8 @@ def search(
|
|
|
141
147
|
model_name=settings.model_name,
|
|
142
148
|
batch_size=settings.batch_size,
|
|
143
149
|
embed_concurrency=settings.embed_concurrency,
|
|
150
|
+
extract_concurrency=settings.extract_concurrency,
|
|
151
|
+
extract_backend=settings.extract_backend,
|
|
144
152
|
provider=settings.provider,
|
|
145
153
|
base_url=settings.base_url,
|
|
146
154
|
api_key=settings.api_key,
|
|
@@ -170,6 +178,8 @@ def index(
|
|
|
170
178
|
model: str | None = None,
|
|
171
179
|
batch_size: int | None = None,
|
|
172
180
|
embed_concurrency: int | None = None,
|
|
181
|
+
extract_concurrency: int | None = None,
|
|
182
|
+
extract_backend: str | None = None,
|
|
173
183
|
base_url: str | None = None,
|
|
174
184
|
api_key: str | None = None,
|
|
175
185
|
local_cuda: bool | None = None,
|
|
@@ -190,6 +200,8 @@ def index(
|
|
|
190
200
|
model=model,
|
|
191
201
|
batch_size=batch_size,
|
|
192
202
|
embed_concurrency=embed_concurrency,
|
|
203
|
+
extract_concurrency=extract_concurrency,
|
|
204
|
+
extract_backend=extract_backend,
|
|
193
205
|
base_url=base_url,
|
|
194
206
|
api_key=api_key,
|
|
195
207
|
local_cuda=local_cuda,
|
|
@@ -208,6 +220,8 @@ def index(
|
|
|
208
220
|
model_name=settings.model_name,
|
|
209
221
|
batch_size=settings.batch_size,
|
|
210
222
|
embed_concurrency=settings.embed_concurrency,
|
|
223
|
+
extract_concurrency=settings.extract_concurrency,
|
|
224
|
+
extract_backend=settings.extract_backend,
|
|
211
225
|
provider=settings.provider,
|
|
212
226
|
base_url=settings.base_url,
|
|
213
227
|
api_key=settings.api_key,
|
|
@@ -282,6 +296,8 @@ def _resolve_settings(
|
|
|
282
296
|
model: str | None,
|
|
283
297
|
batch_size: int | None,
|
|
284
298
|
embed_concurrency: int | None,
|
|
299
|
+
extract_concurrency: int | None,
|
|
300
|
+
extract_backend: str | None,
|
|
285
301
|
base_url: str | None,
|
|
286
302
|
api_key: str | None,
|
|
287
303
|
local_cuda: bool | None,
|
|
@@ -313,11 +329,21 @@ def _resolve_settings(
|
|
|
313
329
|
embed_value = (
|
|
314
330
|
embed_concurrency if embed_concurrency is not None else config.embed_concurrency
|
|
315
331
|
)
|
|
332
|
+
extract_value = (
|
|
333
|
+
extract_concurrency
|
|
334
|
+
if extract_concurrency is not None
|
|
335
|
+
else config.extract_concurrency
|
|
336
|
+
)
|
|
337
|
+
extract_backend_value = (
|
|
338
|
+
extract_backend if extract_backend is not None else config.extract_backend
|
|
339
|
+
)
|
|
316
340
|
return RuntimeSettings(
|
|
317
341
|
provider=provider_value,
|
|
318
342
|
model_name=model_name,
|
|
319
343
|
batch_size=batch_value,
|
|
320
344
|
embed_concurrency=embed_value,
|
|
345
|
+
extract_concurrency=extract_value,
|
|
346
|
+
extract_backend=extract_backend_value,
|
|
321
347
|
base_url=base_url if base_url is not None else config.base_url,
|
|
322
348
|
api_key=api_key if api_key is not None else config.api_key,
|
|
323
349
|
local_cuda=bool(local_cuda if local_cuda is not None else config.local_cuda),
|