code-context-engine 0.4.3__py3-none-any.whl → 0.4.5__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.
- {code_context_engine-0.4.3.dist-info → code_context_engine-0.4.5.dist-info}/METADATA +21 -3
- {code_context_engine-0.4.3.dist-info → code_context_engine-0.4.5.dist-info}/RECORD +9 -9
- context_engine/cli.py +2 -2
- context_engine/config.py +2 -5
- context_engine/dashboard/server.py +2 -1
- {code_context_engine-0.4.3.dist-info → code_context_engine-0.4.5.dist-info}/WHEEL +0 -0
- {code_context_engine-0.4.3.dist-info → code_context_engine-0.4.5.dist-info}/entry_points.txt +0 -0
- {code_context_engine-0.4.3.dist-info → code_context_engine-0.4.5.dist-info}/licenses/LICENSE +0 -0
- {code_context_engine-0.4.3.dist-info → code_context_engine-0.4.5.dist-info}/top_level.txt +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-context-engine
|
|
3
|
-
Version: 0.4.
|
|
4
|
-
Summary: Index your codebase. AI searches instead of re-reading files.
|
|
3
|
+
Version: 0.4.5
|
|
4
|
+
Summary: Index your codebase. AI searches instead of re-reading files. 93% token savings, benchmarked on FastAPI. Works with Claude Code, Cursor, VS Code, Gemini CLI, and Codex.
|
|
5
5
|
Author-email: Fazle Elahee <felahee@gmail.com>, Raj <rajkumar.sakti@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
7
7
|
Project-URL: Homepage, https://github.com/elara-labs/code-context-engine
|
|
8
8
|
Project-URL: Repository, https://github.com/elara-labs/code-context-engine
|
|
9
9
|
Project-URL: Issues, https://github.com/elara-labs/code-context-engine/issues
|
|
10
10
|
Keywords: claude,context,mcp,llm,code-indexing,vector-search
|
|
11
|
-
Classifier: Development Status ::
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
12
|
Classifier: Intended Audience :: Developers
|
|
13
13
|
Classifier: Programming Language :: Python :: 3
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
@@ -37,6 +37,7 @@ Requires-Dist: httpx>=0.27
|
|
|
37
37
|
Requires-Dist: fastapi>=0.110
|
|
38
38
|
Requires-Dist: uvicorn>=0.29
|
|
39
39
|
Requires-Dist: aiohttp>=3.9
|
|
40
|
+
Requires-Dist: psutil>=5.9
|
|
40
41
|
Provides-Extra: dev
|
|
41
42
|
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
42
43
|
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
|
|
@@ -57,6 +58,7 @@ Dynamic: license-file
|
|
|
57
58
|
</p>
|
|
58
59
|
|
|
59
60
|
<p align="center">
|
|
61
|
+
<a href="https://github.com/elara-labs/code-context-engine/actions/workflows/ci.yml"><img src="https://github.com/elara-labs/code-context-engine/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
60
62
|
<a href="https://pypi.org/project/code-context-engine/"><img src="https://img.shields.io/pypi/v/code-context-engine?color=blue&label=PyPI" alt="PyPI"></a>
|
|
61
63
|
<a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.11+-blue.svg" alt="Python 3.11+"></a>
|
|
62
64
|
<a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-compatible-green.svg" alt="MCP Compatible"></a>
|
|
@@ -87,6 +89,14 @@ Dynamic: license-file
|
|
|
87
89
|
|
|
88
90
|
---
|
|
89
91
|
|
|
92
|
+
## System requirements
|
|
93
|
+
|
|
94
|
+
- Python 3.11+
|
|
95
|
+
- A C compiler and `cmake` (needed to build tree-sitter grammars)
|
|
96
|
+
- **macOS:** `xcode-select --install`
|
|
97
|
+
- **Ubuntu/Debian:** `sudo apt install build-essential cmake`
|
|
98
|
+
- **Windows:** Visual Studio Build Tools (C++ workload)
|
|
99
|
+
|
|
90
100
|
## Install and see savings in 60 seconds
|
|
91
101
|
|
|
92
102
|
```bash
|
|
@@ -210,6 +220,14 @@ cce savings --all # see savings across all projects
|
|
|
210
220
|
|
|
211
221
|
---
|
|
212
222
|
|
|
223
|
+
## How is CCE different?
|
|
224
|
+
|
|
225
|
+
CCE is editor-agnostic, local-first, and gives you measurable token savings. Your code never leaves your machine. Unlike built-in indexing (Cursor, Continue), CCE works across Claude Code, VS Code, Cursor, Gemini CLI, and Codex with a single index. Unlike cloud tools (Greptile), it's free and private.
|
|
226
|
+
|
|
227
|
+
See the [full comparison with alternatives](docs/comparison.md) for an honest look at trade-offs.
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
213
231
|
## How it works (the short version)
|
|
214
232
|
|
|
215
233
|
1. **Index:** Tree-sitter parses your code into semantic chunks (functions, classes, modules). Stored as vector embeddings locally.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
code_context_engine-0.4.
|
|
1
|
+
code_context_engine-0.4.5.dist-info/licenses/LICENSE,sha256=vLbw0GGCVJSIRppMus7Oq0PyMDhDXz-dfvz2rPpWtjQ,1069
|
|
2
2
|
context_engine/__init__.py,sha256=qThGxB7xfZi5M9jDpUno0MKBp7KKrEOdH1hG4wHMuLc,193
|
|
3
|
-
context_engine/cli.py,sha256=
|
|
3
|
+
context_engine/cli.py,sha256=KcOO3WSbo8joKcSPJlKKhpVFsnLDIffKmqTLx5PGs14,113198
|
|
4
4
|
context_engine/cli_style.py,sha256=a3l3Smq1gIN2asbNalFUz0i_5x7Tmkp_wEhyGMoo8a4,2460
|
|
5
|
-
context_engine/config.py,sha256=
|
|
5
|
+
context_engine/config.py,sha256=2pCe-nJbB1IgrFwT3iMOmUSZMaaH2IBamm867CULdnY,7129
|
|
6
6
|
context_engine/editors.py,sha256=LT_WdYwyB1EeH1xsB6DDtJlbGMKXOTIVSOWXOOfXh1U,8970
|
|
7
7
|
context_engine/event_bus.py,sha256=g4r9QKuC-Y7RmrjOTlUrJSB-bBTpAqp0-_IXeMUg4wo,775
|
|
8
8
|
context_engine/models.py,sha256=XBbM0CUqNDQ5MOp6F3STST2qLqy2Zk0m050ZtWdXkrk,2048
|
|
@@ -19,7 +19,7 @@ context_engine/compression/prompts.py,sha256=jZnpqhr77uI9R3S0vm3Dj17JYy03AXq24E6
|
|
|
19
19
|
context_engine/compression/quality.py,sha256=F6fyxDdWjq-Hgtw4xFIaE4BqPoJw1W1EQSn3RXDgdHc,1676
|
|
20
20
|
context_engine/dashboard/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
21
|
context_engine/dashboard/_page.py,sha256=EdFBGlrL-6j3XVpi-TViFJjUHzMvTorH4CDos8w-oMI,70579
|
|
22
|
-
context_engine/dashboard/server.py,sha256=
|
|
22
|
+
context_engine/dashboard/server.py,sha256=N-QVaDCUL1h70QUgKrIy6QhQIedasf0KYHcV5LACZ0U,17437
|
|
23
23
|
context_engine/indexer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
24
|
context_engine/indexer/chunker.py,sha256=f0n7gJughdHP1fmMd1sbHAxLmVlCnIq6scHOeGFmBS8,6503
|
|
25
25
|
context_engine/indexer/embedder.py,sha256=jHCybuliTtVyHWJYokA8XfznaDX4I_OZH-_RGA4YDQc,5580
|
|
@@ -56,8 +56,8 @@ context_engine/storage/graph_store.py,sha256=mftuJFvlkFeBlzMsQorY5YS4l5wsDUxCMw5
|
|
|
56
56
|
context_engine/storage/local_backend.py,sha256=5MVoAn6Jkiltho-9BjClisLkyXMkSZZc2Z_h3N7Vfcg,4200
|
|
57
57
|
context_engine/storage/remote_backend.py,sha256=u77lnGIvqrL3PwInjT6nfRgyNn6oVxW92KUK66oWrvI,5504
|
|
58
58
|
context_engine/storage/vector_store.py,sha256=tA0ol_v5B2KRNMt2hE2kI4qnYe_AoYP_HSp1MvzcsFU,14704
|
|
59
|
-
code_context_engine-0.4.
|
|
60
|
-
code_context_engine-0.4.
|
|
61
|
-
code_context_engine-0.4.
|
|
62
|
-
code_context_engine-0.4.
|
|
63
|
-
code_context_engine-0.4.
|
|
59
|
+
code_context_engine-0.4.5.dist-info/METADATA,sha256=Xf-6Rk_H3Z0GjLZBQE0G1i1HgUquXbya5UuQiwskt14,18539
|
|
60
|
+
code_context_engine-0.4.5.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
61
|
+
code_context_engine-0.4.5.dist-info/entry_points.txt,sha256=DQuRWUuVFM7nPcXtDmJzlem7QA0IboD_4N8AnTtDD9Q,144
|
|
62
|
+
code_context_engine-0.4.5.dist-info/top_level.txt,sha256=X1-RUqb61WXBjy3JjsW2oXwfvqk2ydXKDNidxmw4CZ4,15
|
|
63
|
+
code_context_engine-0.4.5.dist-info/RECORD,,
|
context_engine/cli.py
CHANGED
|
@@ -1249,8 +1249,8 @@ def _run_savings_report(config, *, as_json: bool = False, all_projects: bool = F
|
|
|
1249
1249
|
baseline = max(full_file, raw) if full_file > 0 else raw
|
|
1250
1250
|
served = served_legacy
|
|
1251
1251
|
|
|
1252
|
-
tokens_saved = max(0, baseline - served)
|
|
1253
|
-
saved_pct = int(tokens_saved / baseline * 100) if baseline > 0 else 0
|
|
1252
|
+
tokens_saved = max(0, baseline - served) if queries > 0 else 0
|
|
1253
|
+
saved_pct = int(tokens_saved / baseline * 100) if baseline > 0 and queries > 0 else 0
|
|
1254
1254
|
|
|
1255
1255
|
q_label = "query" if queries == 1 else "queries"
|
|
1256
1256
|
|
context_engine/config.py
CHANGED
|
@@ -90,11 +90,8 @@ class Config:
|
|
|
90
90
|
storage_path: str = str(_CCE_HOME / "projects")
|
|
91
91
|
|
|
92
92
|
def detect_resource_profile(self) -> str:
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
ram_gb = psutil.virtual_memory().total / (1024 ** 3)
|
|
96
|
-
except ImportError:
|
|
97
|
-
ram_gb = 16
|
|
93
|
+
import psutil
|
|
94
|
+
ram_gb = psutil.virtual_memory().total / (1024 ** 3)
|
|
98
95
|
if ram_gb >= 32:
|
|
99
96
|
return "full"
|
|
100
97
|
if ram_gb >= 12:
|
|
@@ -142,8 +142,9 @@ def create_app(config: Config, project_dir: Path) -> FastAPI:
|
|
|
142
142
|
|
|
143
143
|
full_file = stats.get("full_file_tokens", 0)
|
|
144
144
|
served = stats.get("served_tokens", 0)
|
|
145
|
+
queries = stats.get("queries", 0)
|
|
145
146
|
baseline = full_file if full_file > 0 else stats.get("raw_tokens", 0)
|
|
146
|
-
saved_pct = max(0, int((1 - served / baseline) * 100)) if baseline > 0 else 0
|
|
147
|
+
saved_pct = max(0, int((1 - served / baseline) * 100)) if baseline > 0 and queries > 0 else 0
|
|
147
148
|
|
|
148
149
|
output_level = state.get("output_level", config.output_compression)
|
|
149
150
|
|
|
File without changes
|
{code_context_engine-0.4.3.dist-info → code_context_engine-0.4.5.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{code_context_engine-0.4.3.dist-info → code_context_engine-0.4.5.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|