code-context-engine 0.4.1__tar.gz → 0.4.3__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.
- {code_context_engine-0.4.1/src/code_context_engine.egg-info → code_context_engine-0.4.3}/PKG-INFO +56 -14
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/README.md +55 -13
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/pyproject.toml +1 -1
- {code_context_engine-0.4.1 → code_context_engine-0.4.3/src/code_context_engine.egg-info}/PKG-INFO +56 -14
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/__init__.py +3 -1
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/cli.py +2 -2
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/integration/mcp_server.py +15 -4
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/memory/hooks.py +51 -1
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/tests/test_cli_init_probe.py +2 -6
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/LICENSE +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/setup.cfg +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/code_context_engine.egg-info/SOURCES.txt +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/code_context_engine.egg-info/dependency_links.txt +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/code_context_engine.egg-info/entry_points.txt +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/code_context_engine.egg-info/requires.txt +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/code_context_engine.egg-info/top_level.txt +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/cli_style.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/compression/__init__.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/compression/compressor.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/compression/ollama_client.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/compression/output_rules.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/compression/prompts.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/compression/quality.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/config.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/dashboard/__init__.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/dashboard/_page.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/dashboard/server.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/editors.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/event_bus.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/__init__.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/chunker.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/embedder.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/embedding_cache.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/git_hooks.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/git_indexer.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/ignorefile.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/manifest.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/pipeline.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/secrets.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/watcher.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/integration/__init__.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/integration/bootstrap.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/integration/git_context.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/integration/session_capture.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/memory/__init__.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/memory/compressor.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/memory/db.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/memory/extractive.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/memory/grammar.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/memory/hook_installer.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/memory/hook_server.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/memory/migrate.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/models.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/pricing.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/project_commands.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/retrieval/__init__.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/retrieval/confidence.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/retrieval/query_parser.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/retrieval/retriever.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/serve_http.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/services.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/storage/__init__.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/storage/backend.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/storage/fts_store.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/storage/graph_store.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/storage/local_backend.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/storage/remote_backend.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/storage/vector_store.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/utils.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/tests/test_cli_mcp_config.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/tests/test_cli_savings.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/tests/test_cli_savings_buckets.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/tests/test_cli_savings_e2e.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/tests/test_cli_serve.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/tests/test_cli_sessions_export.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/tests/test_cli_sessions_status.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/tests/test_cli_smoke.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/tests/test_cli_uninstall.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/tests/test_config.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/tests/test_e2e.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/tests/test_event_bus.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/tests/test_models.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/tests/test_project_commands.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/tests/test_real_life.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/tests/test_services.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/tests/test_token_efficiency.py +0 -0
- {code_context_engine-0.4.1 → code_context_engine-0.4.3}/tests/test_token_packing.py +0 -0
{code_context_engine-0.4.1/src/code_context_engine.egg-info → code_context_engine-0.4.3}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-context-engine
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.3
|
|
4
4
|
Summary: Index your codebase. AI searches instead of re-reading files. Save 70%+ on tokens. 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
|
|
@@ -53,7 +53,7 @@ Dynamic: license-file
|
|
|
53
53
|
<h1 align="center">Code Context Engine</h1>
|
|
54
54
|
|
|
55
55
|
<p align="center">
|
|
56
|
-
<strong>Index your codebase. AI searches instead of re-reading files.
|
|
56
|
+
<strong>Index your codebase. AI searches instead of re-reading files. 93% token savings, benchmarked.</strong>
|
|
57
57
|
</p>
|
|
58
58
|
|
|
59
59
|
<p align="center">
|
|
@@ -65,16 +65,20 @@ Dynamic: license-file
|
|
|
65
65
|
</p>
|
|
66
66
|
|
|
67
67
|
<p align="center">
|
|
68
|
-
<
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
<img src="https://img.shields.io/badge/
|
|
68
|
+
<strong>Works with your editor</strong>
|
|
69
|
+
</p>
|
|
70
|
+
|
|
71
|
+
<p align="center">
|
|
72
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Claude_Code-D4A27F?style=for-the-badge&logo=anthropic&logoColor=black" alt="Claude Code" height="36"></a>
|
|
73
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/VS_Code-007ACC?style=for-the-badge&logo=visual-studio-code&logoColor=white" alt="VS Code" height="36"></a>
|
|
74
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Cursor-000000?style=for-the-badge&logo=cursor&logoColor=white" alt="Cursor" height="36"></a>
|
|
75
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Gemini_CLI-4285F4?style=for-the-badge&logo=google&logoColor=white" alt="Gemini CLI" height="36"></a>
|
|
76
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Codex_CLI-412991?style=for-the-badge&logo=openai&logoColor=white" alt="Codex CLI" height="36"></a>
|
|
73
77
|
</p>
|
|
74
78
|
|
|
75
79
|
<p align="center">
|
|
76
80
|
One command. Index your codebase. Your AI coding agent searches instead of reading entire files.<br>
|
|
77
|
-
|
|
81
|
+
Zero-cloud, zero-config. <code>cce init</code> auto-detects your editor.
|
|
78
82
|
</p>
|
|
79
83
|
|
|
80
84
|
<p align="center">
|
|
@@ -108,12 +112,12 @@ Multiple editors in the same project? All get configured in one command.
|
|
|
108
112
|
```
|
|
109
113
|
my-project · 38 queries
|
|
110
114
|
|
|
111
|
-
⛁ ⛁ ⛁ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶
|
|
115
|
+
⛁ ⛁ ⛁ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ 93% tokens saved
|
|
112
116
|
|
|
113
117
|
Without CCE 48.0k tokens $0.24
|
|
114
|
-
With CCE
|
|
118
|
+
With CCE 3.4k tokens $0.02
|
|
115
119
|
──────────────────────────────────────────
|
|
116
|
-
Saved
|
|
120
|
+
Saved 44.6k tokens $0.22
|
|
117
121
|
|
|
118
122
|
Cost estimate based on Opus input pricing ($5/1M tokens)
|
|
119
123
|
```
|
|
@@ -122,7 +126,7 @@ Multiple editors in the same project? All get configured in one command.
|
|
|
122
126
|
|
|
123
127
|
## Why this matters
|
|
124
128
|
|
|
125
|
-
Input tokens are 85-95% of your Claude Code bill. CCE cuts them by
|
|
129
|
+
Input tokens are 85-95% of your Claude Code bill. CCE cuts them by 93% ([benchmarked on FastAPI](#benchmark-fastapi-independently-verified)).
|
|
126
130
|
|
|
127
131
|
```
|
|
128
132
|
Without CCE: Claude reads payments.py + shipping.py = 45,000 tokens
|
|
@@ -138,6 +142,42 @@ With CCE: context_search "payment flow" = 800 tokens
|
|
|
138
142
|
|
|
139
143
|
---
|
|
140
144
|
|
|
145
|
+
## Benchmark: FastAPI (independently verified)
|
|
146
|
+
|
|
147
|
+
We benchmarked CCE against [FastAPI](https://github.com/fastapi/fastapi) (48 source files, 19K lines of Python) with 20 real coding questions. No cherry-picking, no synthetic queries.
|
|
148
|
+
|
|
149
|
+
**Methodology:** For each query, "without CCE" means reading the full content of every file the query touches. "With CCE" means the relevant chunks after compression. This is conservative (agents often read more files than needed).
|
|
150
|
+
|
|
151
|
+
| Metric | Result |
|
|
152
|
+
|--------|--------|
|
|
153
|
+
| **Retrieval** | **93%** savings (75,355 → 5,381 tokens/query) |
|
|
154
|
+
| **+ Compression** | **90%** additional (5,381 → 541 tokens/query) |
|
|
155
|
+
| **Combined** | **99.3%** (75,355 → 541 tokens/query) |
|
|
156
|
+
| Recall@10 (found the right files) | 0.80 |
|
|
157
|
+
| Precision@10 | 0.30 |
|
|
158
|
+
| Latency p50 | 0.4ms |
|
|
159
|
+
| Queries tested | 20 |
|
|
160
|
+
|
|
161
|
+
### Per-Layer Savings (each measured independently)
|
|
162
|
+
|
|
163
|
+
| Layer | What it does | Savings | Method |
|
|
164
|
+
|-------|-------------|---------|--------|
|
|
165
|
+
| **Retrieval** | Full files → relevant code chunks | 93% | measured |
|
|
166
|
+
| **Chunk Compression** | Raw chunks → signatures + docstrings | 90% | measured |
|
|
167
|
+
| **Output Compression** | Reduces Claude's reply length | 65% | estimated |
|
|
168
|
+
| **Grammar** | Drops articles/fillers from memory text | 13% | measured |
|
|
169
|
+
|
|
170
|
+
**Reproduce it yourself:**
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
pip install code-context-engine
|
|
174
|
+
python benchmarks/run_benchmark.py --repo https://github.com/fastapi/fastapi.git --source-dir fastapi
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Full results in [`benchmarks/results/fastapi.md`](benchmarks/results/fastapi.md). Queries and methodology in [`benchmarks/`](benchmarks/).
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
141
181
|
## What you get
|
|
142
182
|
|
|
143
183
|
**9 MCP tools** that Claude uses automatically:
|
|
@@ -188,7 +228,7 @@ Re-indexing after edits takes under 1 second (96% embedding cache hit rate). Git
|
|
|
188
228
|
|
|
189
229
|
Output compression tools (like Caveman) save 20-75% on output tokens. Output is 5-15% of your bill. Net savings: ~11%.
|
|
190
230
|
|
|
191
|
-
CCE saves
|
|
231
|
+
CCE saves on **input** tokens (93% retrieval + 90% compression on FastAPI, [independently benchmarked](#benchmark-fastapi-independently-verified)). Input is 85-95% of your bill.
|
|
192
232
|
|
|
193
233
|
### It actually understands your code
|
|
194
234
|
|
|
@@ -200,7 +240,7 @@ Not a text search. Tree-sitter AST parsing creates semantic chunks. Hybrid retri
|
|
|
200
240
|
|
|
201
241
|
### It tracks real savings
|
|
202
242
|
|
|
203
|
-
Not estimates. Actual tokens served vs full-file baseline, broken down by
|
|
243
|
+
Not estimates. Actual tokens served vs full-file baseline, broken down by buckets (retrieval, compression, output, memory, grammar). Dollar costs fetched from Anthropic's pricing page. Savings summary shown at every session start.
|
|
204
244
|
|
|
205
245
|
### It is secure by default
|
|
206
246
|
|
|
@@ -358,6 +398,8 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
|
|
|
358
398
|
- [x] Clean uninstall (removes all CCE artifacts)
|
|
359
399
|
- [x] AST-aware chunking for PHP, Go, Rust, Java (tree-sitter)
|
|
360
400
|
- [x] Multi-editor support (Cursor, VS Code/Copilot, Gemini CLI)
|
|
401
|
+
- [x] Reproducible benchmark suite (93% savings on FastAPI, per-layer breakdown)
|
|
402
|
+
- [x] Session savings visibility (shown at every session start)
|
|
361
403
|
- [ ] Tree-sitter support for C, C++, Ruby, Swift, Kotlin
|
|
362
404
|
- [ ] Docker support for remote mode
|
|
363
405
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<h1 align="center">Code Context Engine</h1>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
<strong>Index your codebase. AI searches instead of re-reading files.
|
|
8
|
+
<strong>Index your codebase. AI searches instead of re-reading files. 93% token savings, benchmarked.</strong>
|
|
9
9
|
</p>
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
@@ -17,16 +17,20 @@
|
|
|
17
17
|
</p>
|
|
18
18
|
|
|
19
19
|
<p align="center">
|
|
20
|
-
<
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
<img src="https://img.shields.io/badge/
|
|
20
|
+
<strong>Works with your editor</strong>
|
|
21
|
+
</p>
|
|
22
|
+
|
|
23
|
+
<p align="center">
|
|
24
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Claude_Code-D4A27F?style=for-the-badge&logo=anthropic&logoColor=black" alt="Claude Code" height="36"></a>
|
|
25
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/VS_Code-007ACC?style=for-the-badge&logo=visual-studio-code&logoColor=white" alt="VS Code" height="36"></a>
|
|
26
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Cursor-000000?style=for-the-badge&logo=cursor&logoColor=white" alt="Cursor" height="36"></a>
|
|
27
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Gemini_CLI-4285F4?style=for-the-badge&logo=google&logoColor=white" alt="Gemini CLI" height="36"></a>
|
|
28
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Codex_CLI-412991?style=for-the-badge&logo=openai&logoColor=white" alt="Codex CLI" height="36"></a>
|
|
25
29
|
</p>
|
|
26
30
|
|
|
27
31
|
<p align="center">
|
|
28
32
|
One command. Index your codebase. Your AI coding agent searches instead of reading entire files.<br>
|
|
29
|
-
|
|
33
|
+
Zero-cloud, zero-config. <code>cce init</code> auto-detects your editor.
|
|
30
34
|
</p>
|
|
31
35
|
|
|
32
36
|
<p align="center">
|
|
@@ -60,12 +64,12 @@ Multiple editors in the same project? All get configured in one command.
|
|
|
60
64
|
```
|
|
61
65
|
my-project · 38 queries
|
|
62
66
|
|
|
63
|
-
⛁ ⛁ ⛁ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶
|
|
67
|
+
⛁ ⛁ ⛁ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ 93% tokens saved
|
|
64
68
|
|
|
65
69
|
Without CCE 48.0k tokens $0.24
|
|
66
|
-
With CCE
|
|
70
|
+
With CCE 3.4k tokens $0.02
|
|
67
71
|
──────────────────────────────────────────
|
|
68
|
-
Saved
|
|
72
|
+
Saved 44.6k tokens $0.22
|
|
69
73
|
|
|
70
74
|
Cost estimate based on Opus input pricing ($5/1M tokens)
|
|
71
75
|
```
|
|
@@ -74,7 +78,7 @@ Multiple editors in the same project? All get configured in one command.
|
|
|
74
78
|
|
|
75
79
|
## Why this matters
|
|
76
80
|
|
|
77
|
-
Input tokens are 85-95% of your Claude Code bill. CCE cuts them by
|
|
81
|
+
Input tokens are 85-95% of your Claude Code bill. CCE cuts them by 93% ([benchmarked on FastAPI](#benchmark-fastapi-independently-verified)).
|
|
78
82
|
|
|
79
83
|
```
|
|
80
84
|
Without CCE: Claude reads payments.py + shipping.py = 45,000 tokens
|
|
@@ -90,6 +94,42 @@ With CCE: context_search "payment flow" = 800 tokens
|
|
|
90
94
|
|
|
91
95
|
---
|
|
92
96
|
|
|
97
|
+
## Benchmark: FastAPI (independently verified)
|
|
98
|
+
|
|
99
|
+
We benchmarked CCE against [FastAPI](https://github.com/fastapi/fastapi) (48 source files, 19K lines of Python) with 20 real coding questions. No cherry-picking, no synthetic queries.
|
|
100
|
+
|
|
101
|
+
**Methodology:** For each query, "without CCE" means reading the full content of every file the query touches. "With CCE" means the relevant chunks after compression. This is conservative (agents often read more files than needed).
|
|
102
|
+
|
|
103
|
+
| Metric | Result |
|
|
104
|
+
|--------|--------|
|
|
105
|
+
| **Retrieval** | **93%** savings (75,355 → 5,381 tokens/query) |
|
|
106
|
+
| **+ Compression** | **90%** additional (5,381 → 541 tokens/query) |
|
|
107
|
+
| **Combined** | **99.3%** (75,355 → 541 tokens/query) |
|
|
108
|
+
| Recall@10 (found the right files) | 0.80 |
|
|
109
|
+
| Precision@10 | 0.30 |
|
|
110
|
+
| Latency p50 | 0.4ms |
|
|
111
|
+
| Queries tested | 20 |
|
|
112
|
+
|
|
113
|
+
### Per-Layer Savings (each measured independently)
|
|
114
|
+
|
|
115
|
+
| Layer | What it does | Savings | Method |
|
|
116
|
+
|-------|-------------|---------|--------|
|
|
117
|
+
| **Retrieval** | Full files → relevant code chunks | 93% | measured |
|
|
118
|
+
| **Chunk Compression** | Raw chunks → signatures + docstrings | 90% | measured |
|
|
119
|
+
| **Output Compression** | Reduces Claude's reply length | 65% | estimated |
|
|
120
|
+
| **Grammar** | Drops articles/fillers from memory text | 13% | measured |
|
|
121
|
+
|
|
122
|
+
**Reproduce it yourself:**
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
pip install code-context-engine
|
|
126
|
+
python benchmarks/run_benchmark.py --repo https://github.com/fastapi/fastapi.git --source-dir fastapi
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Full results in [`benchmarks/results/fastapi.md`](benchmarks/results/fastapi.md). Queries and methodology in [`benchmarks/`](benchmarks/).
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
93
133
|
## What you get
|
|
94
134
|
|
|
95
135
|
**9 MCP tools** that Claude uses automatically:
|
|
@@ -140,7 +180,7 @@ Re-indexing after edits takes under 1 second (96% embedding cache hit rate). Git
|
|
|
140
180
|
|
|
141
181
|
Output compression tools (like Caveman) save 20-75% on output tokens. Output is 5-15% of your bill. Net savings: ~11%.
|
|
142
182
|
|
|
143
|
-
CCE saves
|
|
183
|
+
CCE saves on **input** tokens (93% retrieval + 90% compression on FastAPI, [independently benchmarked](#benchmark-fastapi-independently-verified)). Input is 85-95% of your bill.
|
|
144
184
|
|
|
145
185
|
### It actually understands your code
|
|
146
186
|
|
|
@@ -152,7 +192,7 @@ Not a text search. Tree-sitter AST parsing creates semantic chunks. Hybrid retri
|
|
|
152
192
|
|
|
153
193
|
### It tracks real savings
|
|
154
194
|
|
|
155
|
-
Not estimates. Actual tokens served vs full-file baseline, broken down by
|
|
195
|
+
Not estimates. Actual tokens served vs full-file baseline, broken down by buckets (retrieval, compression, output, memory, grammar). Dollar costs fetched from Anthropic's pricing page. Savings summary shown at every session start.
|
|
156
196
|
|
|
157
197
|
### It is secure by default
|
|
158
198
|
|
|
@@ -310,6 +350,8 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
|
|
|
310
350
|
- [x] Clean uninstall (removes all CCE artifacts)
|
|
311
351
|
- [x] AST-aware chunking for PHP, Go, Rust, Java (tree-sitter)
|
|
312
352
|
- [x] Multi-editor support (Cursor, VS Code/Copilot, Gemini CLI)
|
|
353
|
+
- [x] Reproducible benchmark suite (93% savings on FastAPI, per-layer breakdown)
|
|
354
|
+
- [x] Session savings visibility (shown at every session start)
|
|
313
355
|
- [ ] Tree-sitter support for C, C++, Ruby, Swift, Kotlin
|
|
314
356
|
- [ ] Docker support for remote mode
|
|
315
357
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "code-context-engine"
|
|
3
|
-
version = "0.4.
|
|
3
|
+
version = "0.4.3"
|
|
4
4
|
description = "Index your codebase. AI searches instead of re-reading files. Save 70%+ on tokens. Works with Claude Code, Cursor, VS Code, Gemini CLI, and Codex."
|
|
5
5
|
readme = {file = "README.md", content-type = "text/markdown"}
|
|
6
6
|
license = "MIT"
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3/src/code_context_engine.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-context-engine
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.3
|
|
4
4
|
Summary: Index your codebase. AI searches instead of re-reading files. Save 70%+ on tokens. 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
|
|
@@ -53,7 +53,7 @@ Dynamic: license-file
|
|
|
53
53
|
<h1 align="center">Code Context Engine</h1>
|
|
54
54
|
|
|
55
55
|
<p align="center">
|
|
56
|
-
<strong>Index your codebase. AI searches instead of re-reading files.
|
|
56
|
+
<strong>Index your codebase. AI searches instead of re-reading files. 93% token savings, benchmarked.</strong>
|
|
57
57
|
</p>
|
|
58
58
|
|
|
59
59
|
<p align="center">
|
|
@@ -65,16 +65,20 @@ Dynamic: license-file
|
|
|
65
65
|
</p>
|
|
66
66
|
|
|
67
67
|
<p align="center">
|
|
68
|
-
<
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
<img src="https://img.shields.io/badge/
|
|
68
|
+
<strong>Works with your editor</strong>
|
|
69
|
+
</p>
|
|
70
|
+
|
|
71
|
+
<p align="center">
|
|
72
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Claude_Code-D4A27F?style=for-the-badge&logo=anthropic&logoColor=black" alt="Claude Code" height="36"></a>
|
|
73
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/VS_Code-007ACC?style=for-the-badge&logo=visual-studio-code&logoColor=white" alt="VS Code" height="36"></a>
|
|
74
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Cursor-000000?style=for-the-badge&logo=cursor&logoColor=white" alt="Cursor" height="36"></a>
|
|
75
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Gemini_CLI-4285F4?style=for-the-badge&logo=google&logoColor=white" alt="Gemini CLI" height="36"></a>
|
|
76
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Codex_CLI-412991?style=for-the-badge&logo=openai&logoColor=white" alt="Codex CLI" height="36"></a>
|
|
73
77
|
</p>
|
|
74
78
|
|
|
75
79
|
<p align="center">
|
|
76
80
|
One command. Index your codebase. Your AI coding agent searches instead of reading entire files.<br>
|
|
77
|
-
|
|
81
|
+
Zero-cloud, zero-config. <code>cce init</code> auto-detects your editor.
|
|
78
82
|
</p>
|
|
79
83
|
|
|
80
84
|
<p align="center">
|
|
@@ -108,12 +112,12 @@ Multiple editors in the same project? All get configured in one command.
|
|
|
108
112
|
```
|
|
109
113
|
my-project · 38 queries
|
|
110
114
|
|
|
111
|
-
⛁ ⛁ ⛁ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶
|
|
115
|
+
⛁ ⛁ ⛁ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ 93% tokens saved
|
|
112
116
|
|
|
113
117
|
Without CCE 48.0k tokens $0.24
|
|
114
|
-
With CCE
|
|
118
|
+
With CCE 3.4k tokens $0.02
|
|
115
119
|
──────────────────────────────────────────
|
|
116
|
-
Saved
|
|
120
|
+
Saved 44.6k tokens $0.22
|
|
117
121
|
|
|
118
122
|
Cost estimate based on Opus input pricing ($5/1M tokens)
|
|
119
123
|
```
|
|
@@ -122,7 +126,7 @@ Multiple editors in the same project? All get configured in one command.
|
|
|
122
126
|
|
|
123
127
|
## Why this matters
|
|
124
128
|
|
|
125
|
-
Input tokens are 85-95% of your Claude Code bill. CCE cuts them by
|
|
129
|
+
Input tokens are 85-95% of your Claude Code bill. CCE cuts them by 93% ([benchmarked on FastAPI](#benchmark-fastapi-independently-verified)).
|
|
126
130
|
|
|
127
131
|
```
|
|
128
132
|
Without CCE: Claude reads payments.py + shipping.py = 45,000 tokens
|
|
@@ -138,6 +142,42 @@ With CCE: context_search "payment flow" = 800 tokens
|
|
|
138
142
|
|
|
139
143
|
---
|
|
140
144
|
|
|
145
|
+
## Benchmark: FastAPI (independently verified)
|
|
146
|
+
|
|
147
|
+
We benchmarked CCE against [FastAPI](https://github.com/fastapi/fastapi) (48 source files, 19K lines of Python) with 20 real coding questions. No cherry-picking, no synthetic queries.
|
|
148
|
+
|
|
149
|
+
**Methodology:** For each query, "without CCE" means reading the full content of every file the query touches. "With CCE" means the relevant chunks after compression. This is conservative (agents often read more files than needed).
|
|
150
|
+
|
|
151
|
+
| Metric | Result |
|
|
152
|
+
|--------|--------|
|
|
153
|
+
| **Retrieval** | **93%** savings (75,355 → 5,381 tokens/query) |
|
|
154
|
+
| **+ Compression** | **90%** additional (5,381 → 541 tokens/query) |
|
|
155
|
+
| **Combined** | **99.3%** (75,355 → 541 tokens/query) |
|
|
156
|
+
| Recall@10 (found the right files) | 0.80 |
|
|
157
|
+
| Precision@10 | 0.30 |
|
|
158
|
+
| Latency p50 | 0.4ms |
|
|
159
|
+
| Queries tested | 20 |
|
|
160
|
+
|
|
161
|
+
### Per-Layer Savings (each measured independently)
|
|
162
|
+
|
|
163
|
+
| Layer | What it does | Savings | Method |
|
|
164
|
+
|-------|-------------|---------|--------|
|
|
165
|
+
| **Retrieval** | Full files → relevant code chunks | 93% | measured |
|
|
166
|
+
| **Chunk Compression** | Raw chunks → signatures + docstrings | 90% | measured |
|
|
167
|
+
| **Output Compression** | Reduces Claude's reply length | 65% | estimated |
|
|
168
|
+
| **Grammar** | Drops articles/fillers from memory text | 13% | measured |
|
|
169
|
+
|
|
170
|
+
**Reproduce it yourself:**
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
pip install code-context-engine
|
|
174
|
+
python benchmarks/run_benchmark.py --repo https://github.com/fastapi/fastapi.git --source-dir fastapi
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Full results in [`benchmarks/results/fastapi.md`](benchmarks/results/fastapi.md). Queries and methodology in [`benchmarks/`](benchmarks/).
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
141
181
|
## What you get
|
|
142
182
|
|
|
143
183
|
**9 MCP tools** that Claude uses automatically:
|
|
@@ -188,7 +228,7 @@ Re-indexing after edits takes under 1 second (96% embedding cache hit rate). Git
|
|
|
188
228
|
|
|
189
229
|
Output compression tools (like Caveman) save 20-75% on output tokens. Output is 5-15% of your bill. Net savings: ~11%.
|
|
190
230
|
|
|
191
|
-
CCE saves
|
|
231
|
+
CCE saves on **input** tokens (93% retrieval + 90% compression on FastAPI, [independently benchmarked](#benchmark-fastapi-independently-verified)). Input is 85-95% of your bill.
|
|
192
232
|
|
|
193
233
|
### It actually understands your code
|
|
194
234
|
|
|
@@ -200,7 +240,7 @@ Not a text search. Tree-sitter AST parsing creates semantic chunks. Hybrid retri
|
|
|
200
240
|
|
|
201
241
|
### It tracks real savings
|
|
202
242
|
|
|
203
|
-
Not estimates. Actual tokens served vs full-file baseline, broken down by
|
|
243
|
+
Not estimates. Actual tokens served vs full-file baseline, broken down by buckets (retrieval, compression, output, memory, grammar). Dollar costs fetched from Anthropic's pricing page. Savings summary shown at every session start.
|
|
204
244
|
|
|
205
245
|
### It is secure by default
|
|
206
246
|
|
|
@@ -358,6 +398,8 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
|
|
|
358
398
|
- [x] Clean uninstall (removes all CCE artifacts)
|
|
359
399
|
- [x] AST-aware chunking for PHP, Go, Rust, Java (tree-sitter)
|
|
360
400
|
- [x] Multi-editor support (Cursor, VS Code/Copilot, Gemini CLI)
|
|
401
|
+
- [x] Reproducible benchmark suite (93% savings on FastAPI, per-layer breakdown)
|
|
402
|
+
- [x] Session savings visibility (shown at every session start)
|
|
361
403
|
- [ ] Tree-sitter support for C, C++, Ruby, Swift, Kotlin
|
|
362
404
|
- [ ] Docker support for remote mode
|
|
363
405
|
|
|
@@ -828,8 +828,8 @@ def status(ctx: click.Context, output_json: bool, oneline: bool) -> None:
|
|
|
828
828
|
served = stats.get("served_tokens", 0)
|
|
829
829
|
queries = stats.get("queries", 0)
|
|
830
830
|
baseline = max(full, raw) if full > 0 else raw
|
|
831
|
-
saved = max(0, baseline - served)
|
|
832
|
-
pct = int(saved / baseline * 100) if baseline > 0 else 0
|
|
831
|
+
saved = max(0, baseline - served) if queries > 0 else 0
|
|
832
|
+
pct = int(saved / baseline * 100) if baseline > 0 and queries > 0 else 0
|
|
833
833
|
lines.append(f" {dim('Queries:')} {value(f'{queries:,}')}")
|
|
834
834
|
lines.append(f" {dim('Full codebase:')} {value(f'{baseline:,}')} {dim('tokens')}")
|
|
835
835
|
lines.append(f" {dim('Served:')} {value(f'{served:,}')} {dim('tokens')}")
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/integration/mcp_server.py
RENAMED
|
@@ -1330,6 +1330,7 @@ class ContextEngineMCP:
|
|
|
1330
1330
|
queries = self._stats["queries"]
|
|
1331
1331
|
raw = self._stats["raw_tokens"]
|
|
1332
1332
|
served = self._stats["served_tokens"]
|
|
1333
|
+
full_file = self._stats.get("full_file_tokens", 0)
|
|
1333
1334
|
saved = raw - served
|
|
1334
1335
|
pct = int(saved / raw * 100) if raw > 0 else 0
|
|
1335
1336
|
|
|
@@ -1339,10 +1340,20 @@ class ContextEngineMCP:
|
|
|
1339
1340
|
f"{get_level_description(self._output_level)}",
|
|
1340
1341
|
]
|
|
1341
1342
|
if queries > 0:
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1343
|
+
# Show full-file baseline savings (the headline number)
|
|
1344
|
+
if full_file > 0:
|
|
1345
|
+
full_saved = full_file - served
|
|
1346
|
+
full_pct = int(full_saved / full_file * 100)
|
|
1347
|
+
status_parts.append(
|
|
1348
|
+
f"Token savings ({queries} queries): "
|
|
1349
|
+
f"{full_file:,} full-file baseline → {served:,} served "
|
|
1350
|
+
f"({full_pct}% saved)"
|
|
1351
|
+
)
|
|
1352
|
+
else:
|
|
1353
|
+
status_parts.append(
|
|
1354
|
+
f"Token savings ({queries} queries): {raw:,} raw → {served:,} served "
|
|
1355
|
+
f"({saved:,} saved, {pct}%)"
|
|
1356
|
+
)
|
|
1346
1357
|
else:
|
|
1347
1358
|
status_parts.append("Token savings: no queries recorded yet")
|
|
1348
1359
|
return [TextContent(type="text", text="\n".join(status_parts))]
|
|
@@ -48,6 +48,50 @@ _RESUME_RECENT_DECISIONS = 5
|
|
|
48
48
|
_RESUME_DECISION_REASON_CHARS = 200
|
|
49
49
|
|
|
50
50
|
|
|
51
|
+
def _build_savings_line(conn: sqlite3.Connection) -> str:
|
|
52
|
+
"""One-line savings summary from the savings_log table.
|
|
53
|
+
|
|
54
|
+
Returns something like:
|
|
55
|
+
"CCE saved 95% of input tokens across 14 queries (48.0k baseline, 2.4k served)"
|
|
56
|
+
or "" if no savings data exists.
|
|
57
|
+
"""
|
|
58
|
+
from context_engine.memory.db import aggregate_savings
|
|
59
|
+
|
|
60
|
+
try:
|
|
61
|
+
buckets = aggregate_savings(conn)
|
|
62
|
+
except Exception:
|
|
63
|
+
return ""
|
|
64
|
+
|
|
65
|
+
# Use retrieval bucket for the true baseline (full-file tokens) and query
|
|
66
|
+
# count. For served tokens, prefer chunk_compression (the final pipeline
|
|
67
|
+
# stage) when available, otherwise fall back to retrieval served. This
|
|
68
|
+
# avoids double-counting that would occur if we summed baselines across
|
|
69
|
+
# all buckets (retrieval baseline feeds into chunk_compression baseline).
|
|
70
|
+
retrieval = buckets.get("retrieval", {"baseline": 0, "served": 0, "calls": 0})
|
|
71
|
+
compression = buckets.get("chunk_compression", {"baseline": 0, "served": 0, "calls": 0})
|
|
72
|
+
|
|
73
|
+
total_baseline = retrieval["baseline"]
|
|
74
|
+
total_served = compression["served"] if compression["calls"] > 0 else retrieval["served"]
|
|
75
|
+
total_queries = retrieval["calls"]
|
|
76
|
+
|
|
77
|
+
if total_baseline <= 0 or total_queries <= 0:
|
|
78
|
+
return ""
|
|
79
|
+
|
|
80
|
+
saved_pct = (1 - total_served / total_baseline) * 100
|
|
81
|
+
|
|
82
|
+
def _fmt_k(n: int) -> str:
|
|
83
|
+
if n >= 1_000_000:
|
|
84
|
+
return f"{n / 1_000_000:.1f}M"
|
|
85
|
+
if n >= 1_000:
|
|
86
|
+
return f"{n / 1_000:.1f}k"
|
|
87
|
+
return str(n)
|
|
88
|
+
|
|
89
|
+
return (
|
|
90
|
+
f"CCE saved {saved_pct:.0f}% of input tokens across {total_queries} queries "
|
|
91
|
+
f"({_fmt_k(total_baseline)} baseline, {_fmt_k(total_served)} served)"
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
|
|
51
95
|
def build_session_resume(conn: sqlite3.Connection, project: str) -> str:
|
|
52
96
|
"""Compose a short text block summarising recent state for the model.
|
|
53
97
|
|
|
@@ -73,7 +117,9 @@ def build_session_resume(conn: sqlite3.Connection, project: str) -> str:
|
|
|
73
117
|
(_RESUME_RECENT_DECISIONS,),
|
|
74
118
|
))
|
|
75
119
|
|
|
76
|
-
|
|
120
|
+
savings_line = _build_savings_line(conn)
|
|
121
|
+
|
|
122
|
+
if not last_rollup and not decisions and not savings_line:
|
|
77
123
|
return ""
|
|
78
124
|
|
|
79
125
|
parts.append(f"## CCE memory · resuming {project}")
|
|
@@ -81,6 +127,10 @@ def build_session_resume(conn: sqlite3.Connection, project: str) -> str:
|
|
|
81
127
|
# before display so the resume reads as natural prose.
|
|
82
128
|
from context_engine.memory.grammar import expand as _grammar_expand
|
|
83
129
|
|
|
130
|
+
if savings_line:
|
|
131
|
+
parts.append("")
|
|
132
|
+
parts.append(f"**{savings_line}**")
|
|
133
|
+
|
|
84
134
|
if last_rollup:
|
|
85
135
|
when = last_rollup["ended_at"] or "in progress"
|
|
86
136
|
parts.append("")
|
|
@@ -32,13 +32,9 @@ def setup(tmp_path):
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
def _capture(callable_):
|
|
35
|
-
runner = CliRunner()
|
|
36
|
-
with runner.isolation():
|
|
37
|
-
callable_()
|
|
38
|
-
# `runner.isolation()` swallows output by default; use `runner.invoke`
|
|
39
|
-
# via a tiny click command instead.
|
|
40
35
|
import click
|
|
41
|
-
|
|
36
|
+
|
|
37
|
+
runner = CliRunner()
|
|
42
38
|
|
|
43
39
|
@click.command()
|
|
44
40
|
def _wrap():
|
|
File without changes
|
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/code_context_engine.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/compression/__init__.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/compression/compressor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/compression/prompts.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/compression/quality.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/dashboard/__init__.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/dashboard/_page.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/dashboard/server.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/__init__.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/chunker.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/embedder.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/git_hooks.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/git_indexer.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/ignorefile.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/manifest.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/pipeline.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/secrets.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/indexer/watcher.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/integration/__init__.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/integration/bootstrap.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/memory/__init__.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/memory/compressor.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/memory/extractive.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/memory/grammar.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/memory/hook_installer.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/memory/hook_server.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/memory/migrate.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/project_commands.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/retrieval/__init__.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/retrieval/confidence.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/retrieval/query_parser.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/retrieval/retriever.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/storage/__init__.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/storage/backend.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/storage/fts_store.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/storage/graph_store.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/storage/local_backend.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/storage/remote_backend.py
RENAMED
|
File without changes
|
{code_context_engine-0.4.1 → code_context_engine-0.4.3}/src/context_engine/storage/vector_store.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|