vexor 0.21.1__tar.gz → 0.23.0rc1__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.
Files changed (37) hide show
  1. {vexor-0.21.1 → vexor-0.23.0rc1}/PKG-INFO +41 -5
  2. {vexor-0.21.1 → vexor-0.23.0rc1}/README.md +39 -3
  3. {vexor-0.21.1 → vexor-0.23.0rc1}/plugins/vexor/.claude-plugin/plugin.json +1 -1
  4. {vexor-0.21.1 → vexor-0.23.0rc1}/pyproject.toml +1 -1
  5. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/__init__.py +17 -2
  6. vexor-0.23.0rc1/vexor/api.py +1131 -0
  7. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/cache.py +140 -16
  8. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/cli.py +59 -2
  9. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/config.py +197 -9
  10. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/providers/openai.py +14 -4
  11. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/search.py +16 -1
  12. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/config_service.py +30 -2
  13. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/content_extract_service.py +6 -0
  14. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/index_service.py +56 -4
  15. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/init_service.py +12 -2
  16. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/search_service.py +105 -30
  17. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/text.py +17 -3
  18. vexor-0.21.1/vexor/api.py +0 -366
  19. {vexor-0.21.1 → vexor-0.23.0rc1}/.gitignore +0 -0
  20. {vexor-0.21.1 → vexor-0.23.0rc1}/LICENSE +0 -0
  21. {vexor-0.21.1 → vexor-0.23.0rc1}/gui/README.md +0 -0
  22. {vexor-0.21.1 → vexor-0.23.0rc1}/plugins/vexor/README.md +0 -0
  23. {vexor-0.21.1 → vexor-0.23.0rc1}/plugins/vexor/skills/vexor-cli/SKILL.md +0 -0
  24. {vexor-0.21.1 → vexor-0.23.0rc1}/plugins/vexor/skills/vexor-cli/references/install-vexor.md +0 -0
  25. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/__main__.py +0 -0
  26. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/modes.py +0 -0
  27. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/output.py +0 -0
  28. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/providers/__init__.py +0 -0
  29. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/providers/gemini.py +0 -0
  30. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/providers/local.py +0 -0
  31. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/__init__.py +0 -0
  32. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/cache_service.py +0 -0
  33. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/js_parser.py +0 -0
  34. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/keyword_service.py +0 -0
  35. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/skill_service.py +0 -0
  36. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/system_service.py +0 -0
  37. {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vexor
3
- Version: 0.21.1
3
+ Version: 0.23.0rc1
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
@@ -22,7 +22,7 @@ Classifier: Topic :: Text Processing :: Indexing
22
22
  Classifier: Topic :: Utilities
23
23
  Requires-Python: >=3.9
24
24
  Requires-Dist: charset-normalizer>=3.3.0
25
- Requires-Dist: google-genai>=0.5.0
25
+ Requires-Dist: google-genai>=1.57.0
26
26
  Requires-Dist: numpy>=1.23.0
27
27
  Requires-Dist: openai>=1.0.0
28
28
  Requires-Dist: pathspec>=0.12.1
@@ -64,6 +64,7 @@ Description-Content-Type: text/markdown
64
64
  [![CI](https://img.shields.io/github/actions/workflow/status/scarletkc/vexor/publish.yml?branch=main)](https://github.com/scarletkc/vexor/actions/workflows/publish.yml)
65
65
  [![Codecov](https://img.shields.io/codecov/c/github/scarletkc/vexor/main)](https://codecov.io/github/scarletkc/vexor)
66
66
  [![License](https://img.shields.io/github/license/scarletkc/vexor.svg)](https://github.com/scarletkc/vexor/blob/main/LICENSE)
67
+ [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/scarletkc/vexor)
67
68
 
68
69
  </div>
69
70
 
@@ -76,6 +77,13 @@ It supports configurable embedding and reranking providers, and exposes the same
76
77
  Vexor Demo Video
77
78
  </video>
78
79
 
80
+ ## Featured In
81
+
82
+ Vexor has been recognized and featured by the community:
83
+
84
+ - **[Ruan Yifeng's Weekly (Issue #379)](https://github.com/ruanyf/weekly/blob/master/docs/issue-379.md#ai-%E7%9B%B8%E5%85%B3)** - A leading tech newsletter in the Chinese developer community.
85
+ - **[Awesome Claude Skills](https://github.com/VoltAgent/awesome-claude-skills?tab=readme-ov-file#development-and-testing)** - Curated list of best-in-class skills for AI agents.
86
+
79
87
  ## Why Vexor?
80
88
 
81
89
  When you remember what a file *does* but forget its name or location, Vexor finds it instantly—no grep patterns or directory traversal needed.
@@ -164,12 +172,15 @@ Skill source: [`plugins/vexor/skills/vexor-cli`](https://github.com/scarletkc/ve
164
172
  ## Configuration
165
173
 
166
174
  ```bash
167
- vexor config --set-provider openai # default; also supports gemini/custom/local
175
+ vexor config --set-provider openai # default; also supports gemini/voyageai/custom/local
168
176
  vexor config --set-model text-embedding-3-small
177
+ vexor config --set-provider voyageai # uses voyage defaults when model/base_url are unset
169
178
  vexor config --set-batch-size 0 # 0 = single request
170
179
  vexor config --set-embed-concurrency 4 # parallel embedding requests
171
180
  vexor config --set-extract-concurrency 4 # parallel file extraction workers
172
181
  vexor config --set-extract-backend auto # auto|thread|process (default: auto)
182
+ vexor config --set-embedding-dimensions 1024 # optional, model/provider dependent
183
+ vexor config --clear-embedding-dimensions # reset to model default dimension
173
184
  vexor config --set-auto-index true # auto-index before search (default)
174
185
  vexor config --rerank bm25 # optional BM25 rerank for top-k results
175
186
  vexor config --rerank flashrank # FlashRank rerank (requires optional extra)
@@ -195,7 +206,7 @@ Config stored in `~/.vexor/config.json`.
195
206
  ```bash
196
207
  vexor config --set-api-key "YOUR_KEY"
197
208
  ```
198
- Or via environment: `VEXOR_API_KEY`, `OPENAI_API_KEY`, or `GOOGLE_GENAI_API_KEY`.
209
+ Or via environment: `VEXOR_API_KEY`, `OPENAI_API_KEY`, `GOOGLE_GENAI_API_KEY`, or `VOYAGE_API_KEY`.
199
210
 
200
211
  ### Rerank
201
212
 
@@ -215,11 +226,30 @@ Recommended defaults:
215
226
 
216
227
  ### Providers: Remote vs Local
217
228
 
218
- Vexor supports both remote API providers (`openai`, `gemini`, `custom`) and a local provider (`local`):
229
+ Vexor supports both remote API providers (`openai`, `gemini`, `voyageai`, `custom`) and a local provider (`local`):
219
230
  - Remote providers use `api_key` and optional `base_url`.
231
+ - `voyageai` defaults to `https://api.voyageai.com/v1` when `base_url` is not set.
220
232
  - `custom` is OpenAI-compatible and requires both `model` and `base_url`.
221
233
  - Local provider ignores `api_key/base_url` and only uses `model` plus `local_cuda` (CPU/GPU switch).
222
234
 
235
+ ### Embedding Dimensions
236
+
237
+ Embedding dimensions are optional. If unset, the provider/model default is used.
238
+ Custom dimensions are validated for:
239
+ - OpenAI `text-embedding-3-*`
240
+ - Voyage `voyage-3*` and `voyage-code-3*`
241
+
242
+ ```bash
243
+ vexor config --set-embedding-dimensions 1024
244
+ vexor config --clear-embedding-dimensions
245
+ ```
246
+
247
+ If you change dimensions after an index is built, rebuild the index:
248
+
249
+ ```bash
250
+ vexor index --path .
251
+ ```
252
+
223
253
  ### Local Model (Offline)
224
254
 
225
255
  Install the lightweight local backend:
@@ -315,8 +345,14 @@ Porcelain output fields: `rank`, `similarity`, `path`, `chunk_index`, `start_lin
315
345
 
316
346
  See [docs](https://github.com/scarletkc/vexor/tree/main/docs) for more details.
317
347
 
348
+ ## Contributing
349
+
318
350
  Contributions, issues, and PRs welcome! Star if you find it helpful.
319
351
 
352
+ ## Star History
353
+
354
+ [![Star History Chart](https://api.star-history.com/svg?repos=scarletkc/vexor&type=date&legend=top-left)](https://www.star-history.com/#scarletkc/vexor&type=date&legend=top-left)
355
+
320
356
  ## License
321
357
 
322
358
  [MIT](http://github.com/scarletkc/vexor/blob/main/LICENSE)
@@ -9,6 +9,7 @@
9
9
  [![CI](https://img.shields.io/github/actions/workflow/status/scarletkc/vexor/publish.yml?branch=main)](https://github.com/scarletkc/vexor/actions/workflows/publish.yml)
10
10
  [![Codecov](https://img.shields.io/codecov/c/github/scarletkc/vexor/main)](https://codecov.io/github/scarletkc/vexor)
11
11
  [![License](https://img.shields.io/github/license/scarletkc/vexor.svg)](https://github.com/scarletkc/vexor/blob/main/LICENSE)
12
+ [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/scarletkc/vexor)
12
13
 
13
14
  </div>
14
15
 
@@ -21,6 +22,13 @@ It supports configurable embedding and reranking providers, and exposes the same
21
22
  Vexor Demo Video
22
23
  </video>
23
24
 
25
+ ## Featured In
26
+
27
+ Vexor has been recognized and featured by the community:
28
+
29
+ - **[Ruan Yifeng's Weekly (Issue #379)](https://github.com/ruanyf/weekly/blob/master/docs/issue-379.md#ai-%E7%9B%B8%E5%85%B3)** - A leading tech newsletter in the Chinese developer community.
30
+ - **[Awesome Claude Skills](https://github.com/VoltAgent/awesome-claude-skills?tab=readme-ov-file#development-and-testing)** - Curated list of best-in-class skills for AI agents.
31
+
24
32
  ## Why Vexor?
25
33
 
26
34
  When you remember what a file *does* but forget its name or location, Vexor finds it instantly—no grep patterns or directory traversal needed.
@@ -109,12 +117,15 @@ Skill source: [`plugins/vexor/skills/vexor-cli`](https://github.com/scarletkc/ve
109
117
  ## Configuration
110
118
 
111
119
  ```bash
112
- vexor config --set-provider openai # default; also supports gemini/custom/local
120
+ vexor config --set-provider openai # default; also supports gemini/voyageai/custom/local
113
121
  vexor config --set-model text-embedding-3-small
122
+ vexor config --set-provider voyageai # uses voyage defaults when model/base_url are unset
114
123
  vexor config --set-batch-size 0 # 0 = single request
115
124
  vexor config --set-embed-concurrency 4 # parallel embedding requests
116
125
  vexor config --set-extract-concurrency 4 # parallel file extraction workers
117
126
  vexor config --set-extract-backend auto # auto|thread|process (default: auto)
127
+ vexor config --set-embedding-dimensions 1024 # optional, model/provider dependent
128
+ vexor config --clear-embedding-dimensions # reset to model default dimension
118
129
  vexor config --set-auto-index true # auto-index before search (default)
119
130
  vexor config --rerank bm25 # optional BM25 rerank for top-k results
120
131
  vexor config --rerank flashrank # FlashRank rerank (requires optional extra)
@@ -140,7 +151,7 @@ Config stored in `~/.vexor/config.json`.
140
151
  ```bash
141
152
  vexor config --set-api-key "YOUR_KEY"
142
153
  ```
143
- Or via environment: `VEXOR_API_KEY`, `OPENAI_API_KEY`, or `GOOGLE_GENAI_API_KEY`.
154
+ Or via environment: `VEXOR_API_KEY`, `OPENAI_API_KEY`, `GOOGLE_GENAI_API_KEY`, or `VOYAGE_API_KEY`.
144
155
 
145
156
  ### Rerank
146
157
 
@@ -160,11 +171,30 @@ Recommended defaults:
160
171
 
161
172
  ### Providers: Remote vs Local
162
173
 
163
- Vexor supports both remote API providers (`openai`, `gemini`, `custom`) and a local provider (`local`):
174
+ Vexor supports both remote API providers (`openai`, `gemini`, `voyageai`, `custom`) and a local provider (`local`):
164
175
  - Remote providers use `api_key` and optional `base_url`.
176
+ - `voyageai` defaults to `https://api.voyageai.com/v1` when `base_url` is not set.
165
177
  - `custom` is OpenAI-compatible and requires both `model` and `base_url`.
166
178
  - Local provider ignores `api_key/base_url` and only uses `model` plus `local_cuda` (CPU/GPU switch).
167
179
 
180
+ ### Embedding Dimensions
181
+
182
+ Embedding dimensions are optional. If unset, the provider/model default is used.
183
+ Custom dimensions are validated for:
184
+ - OpenAI `text-embedding-3-*`
185
+ - Voyage `voyage-3*` and `voyage-code-3*`
186
+
187
+ ```bash
188
+ vexor config --set-embedding-dimensions 1024
189
+ vexor config --clear-embedding-dimensions
190
+ ```
191
+
192
+ If you change dimensions after an index is built, rebuild the index:
193
+
194
+ ```bash
195
+ vexor index --path .
196
+ ```
197
+
168
198
  ### Local Model (Offline)
169
199
 
170
200
  Install the lightweight local backend:
@@ -260,8 +290,14 @@ Porcelain output fields: `rank`, `similarity`, `path`, `chunk_index`, `start_lin
260
290
 
261
291
  See [docs](https://github.com/scarletkc/vexor/tree/main/docs) for more details.
262
292
 
293
+ ## Contributing
294
+
263
295
  Contributions, issues, and PRs welcome! Star if you find it helpful.
264
296
 
297
+ ## Star History
298
+
299
+ [![Star History Chart](https://api.star-history.com/svg?repos=scarletkc/vexor&type=date&legend=top-left)](https://www.star-history.com/#scarletkc/vexor&type=date&legend=top-left)
300
+
265
301
  ## License
266
302
 
267
303
  [MIT](http://github.com/scarletkc/vexor/blob/main/LICENSE)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vexor",
3
- "version": "0.21.1",
3
+ "version": "0.23.0rc1",
4
4
  "description": "A vector-powered CLI for semantic search over files (Vexor skill bundle).",
5
5
  "author": {
6
6
  "name": "scarletkc"
@@ -27,7 +27,7 @@ classifiers = [
27
27
  "Topic :: Scientific/Engineering :: Information Analysis",
28
28
  ]
29
29
  dependencies = [
30
- "google-genai>=0.5.0",
30
+ "google-genai>=1.57.0",
31
31
  "openai>=1.0.0",
32
32
  "python-dotenv>=1.0.0",
33
33
  "pathspec>=0.12.1",
@@ -2,20 +2,35 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from .api import VexorError, clear_index, index, search, set_config_json, set_data_dir
5
+ from .api import (
6
+ InMemoryIndex,
7
+ VexorClient,
8
+ VexorError,
9
+ clear_index,
10
+ config_context,
11
+ index,
12
+ index_in_memory,
13
+ search,
14
+ set_config_json,
15
+ set_data_dir,
16
+ )
6
17
 
7
18
  __all__ = [
8
19
  "__version__",
20
+ "InMemoryIndex",
21
+ "VexorClient",
9
22
  "VexorError",
10
23
  "clear_index",
24
+ "config_context",
11
25
  "get_version",
12
26
  "index",
27
+ "index_in_memory",
13
28
  "search",
14
29
  "set_config_json",
15
30
  "set_data_dir",
16
31
  ]
17
32
 
18
- __version__ = "0.21.1"
33
+ __version__ = "0.23.0rc1"
19
34
 
20
35
 
21
36
  def get_version() -> str: