code-context-engine 0.4.18__tar.gz → 0.4.19__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 (91) hide show
  1. {code_context_engine-0.4.18/src/code_context_engine.egg-info → code_context_engine-0.4.19}/PKG-INFO +33 -9
  2. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/README.md +29 -6
  3. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/pyproject.toml +33 -3
  4. {code_context_engine-0.4.18 → code_context_engine-0.4.19/src/code_context_engine.egg-info}/PKG-INFO +33 -9
  5. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/code_context_engine.egg-info/SOURCES.txt +1 -0
  6. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/code_context_engine.egg-info/requires.txt +1 -0
  7. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/cli.py +52 -35
  8. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/editors.py +13 -1
  9. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/event_bus.py +0 -1
  10. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/indexer/embedding_cache.py +2 -1
  11. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/indexer/git_hooks.py +7 -3
  12. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/indexer/pipeline.py +0 -1
  13. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/integration/bootstrap.py +1 -1
  14. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/integration/mcp_server.py +0 -1
  15. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/memory/compressor.py +70 -1
  16. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/memory/db.py +6 -4
  17. code_context_engine-0.4.19/src/context_engine/memory/decision_extractor.py +91 -0
  18. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/memory/hooks.py +0 -1
  19. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/storage/backend.py +1 -1
  20. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/storage/fts_store.py +2 -1
  21. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/storage/graph_store.py +4 -3
  22. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/storage/remote_backend.py +1 -1
  23. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/storage/vector_store.py +9 -7
  24. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/utils.py +20 -10
  25. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_cli_savings_e2e.py +1 -2
  26. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_cli_smoke.py +2 -2
  27. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_cli_uninstall.py +0 -1
  28. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_config.py +0 -3
  29. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_e2e.py +1 -2
  30. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_event_bus.py +0 -1
  31. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_project_commands.py +0 -3
  32. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_real_life.py +0 -4
  33. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_services.py +0 -2
  34. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_token_efficiency.py +0 -1
  35. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_token_packing.py +0 -1
  36. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/LICENSE +0 -0
  37. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/setup.cfg +0 -0
  38. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/code_context_engine.egg-info/dependency_links.txt +0 -0
  39. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/code_context_engine.egg-info/entry_points.txt +0 -0
  40. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/code_context_engine.egg-info/top_level.txt +0 -0
  41. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/__init__.py +0 -0
  42. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/cli_style.py +0 -0
  43. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/compression/__init__.py +0 -0
  44. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/compression/compressor.py +0 -0
  45. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/compression/ollama_client.py +0 -0
  46. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/compression/output_rules.py +0 -0
  47. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/compression/prompts.py +0 -0
  48. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/compression/quality.py +0 -0
  49. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/config.py +0 -0
  50. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/dashboard/__init__.py +0 -0
  51. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/dashboard/_page.py +0 -0
  52. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/dashboard/server.py +0 -0
  53. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/indexer/__init__.py +0 -0
  54. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/indexer/chunker.py +0 -0
  55. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/indexer/embedder.py +0 -0
  56. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/indexer/git_indexer.py +0 -0
  57. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/indexer/ignorefile.py +0 -0
  58. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/indexer/manifest.py +0 -0
  59. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/indexer/secrets.py +0 -0
  60. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/indexer/watcher.py +0 -0
  61. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/integration/__init__.py +0 -0
  62. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/integration/git_context.py +0 -0
  63. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/integration/session_capture.py +0 -0
  64. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/memory/__init__.py +0 -0
  65. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/memory/extractive.py +0 -0
  66. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/memory/grammar.py +0 -0
  67. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/memory/hook_installer.py +0 -0
  68. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/memory/hook_server.py +0 -0
  69. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/memory/migrate.py +0 -0
  70. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/models.py +0 -0
  71. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/pricing.py +0 -0
  72. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/project_commands.py +0 -0
  73. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/retrieval/__init__.py +0 -0
  74. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/retrieval/confidence.py +0 -0
  75. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/retrieval/query_parser.py +0 -0
  76. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/retrieval/retriever.py +0 -0
  77. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/serve_http.py +0 -0
  78. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/services.py +0 -0
  79. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/storage/__init__.py +0 -0
  80. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/src/context_engine/storage/local_backend.py +0 -0
  81. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_cli_init_probe.py +0 -0
  82. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_cli_mcp_config.py +0 -0
  83. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_cli_safe_cwd.py +0 -0
  84. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_cli_savings.py +0 -0
  85. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_cli_savings_buckets.py +0 -0
  86. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_cli_serve.py +0 -0
  87. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_cli_sessions_export.py +0 -0
  88. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_cli_sessions_status.py +0 -0
  89. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_editors_codex.py +0 -0
  90. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_editors_opencode.py +0 -0
  91. {code_context_engine-0.4.18 → code_context_engine-0.4.19}/tests/test_models.py +0 -0
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-context-engine
3
- Version: 0.4.18
4
- Summary: Index your codebase. AI searches instead of re-reading files. 94% token savings, benchmarked on FastAPI. Works with Claude Code, Cursor, VS Code, Gemini CLI, Codex, and OpenCode.
3
+ Version: 0.4.19
4
+ Summary: Save 94% on Claude Code tokens. Index your codebase locally, AI agents search instead of reading files. Reduce Claude API costs, save tokens on Cursor, VS Code, Gemini CLI. Free, open source MCP server.
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
- Keywords: claude,context,mcp,llm,code-indexing,vector-search
10
+ Keywords: claude-code,save-tokens,token-savings,mcp-server,claude,cursor,code-indexing,reduce-ai-costs,llm,vector-search,ai-coding
11
11
  Classifier: Development Status :: 4 - Beta
12
12
  Classifier: Intended Audience :: Developers
13
13
  Classifier: Programming Language :: Python :: 3
@@ -44,6 +44,7 @@ Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
44
44
  Requires-Dist: pytest-aiohttp>=1.0; extra == "dev"
45
45
  Requires-Dist: pytest-cov>=5.0; extra == "dev"
46
46
  Requires-Dist: pytest-xdist>=3.5; extra == "dev"
47
+ Requires-Dist: ruff>=0.13; extra == "dev"
47
48
  Provides-Extra: http
48
49
  Dynamic: license-file
49
50
 
@@ -57,6 +58,10 @@ Dynamic: license-file
57
58
  <strong>Index your codebase. AI searches instead of re-reading files.<br>94% token savings, reproducibly benchmarked.</strong>
58
59
  </p>
59
60
 
61
+ <p align="center">
62
+ <a href="https://elara-labs.github.io/code-context-engine/">Website</a> · <a href="https://elara-labs.github.io/code-context-engine/blog/what-is-code-context-engine.html">Guide</a> · <a href="https://elara-labs.github.io/code-context-engine/blog/benchmark-fastapi.html">Benchmark</a> · <a href="https://github.com/elara-labs/code-context-engine">GitHub</a>
63
+ </p>
64
+
60
65
  <br>
61
66
 
62
67
  <p align="center">
@@ -80,7 +85,8 @@ Dynamic: license-file
80
85
  <a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Cursor-000?style=for-the-badge" alt="Cursor"></a>&nbsp;
81
86
  <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"></a>&nbsp;
82
87
  <a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Codex_CLI-412991?style=for-the-badge" alt="Codex CLI"></a>&nbsp;
83
- <a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/OpenCode-22C55E?style=for-the-badge&logo=gnometerminal&logoColor=white" alt="OpenCode"></a>
88
+ <a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/OpenCode-22C55E?style=for-the-badge&logo=gnometerminal&logoColor=white" alt="OpenCode"></a>&nbsp;
89
+ <a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Tabnine-4B32C3?style=for-the-badge&logo=tabnine&logoColor=white" alt="Tabnine"></a>
84
90
  </p>
85
91
 
86
92
  <p align="center">
@@ -154,6 +160,7 @@ Restart your editor. Done. Every question now hits the index instead of re-readi
154
160
  | Gemini CLI | `.gemini/settings.json` | `GEMINI.md` |
155
161
  | OpenAI Codex | `~/.codex/config.toml` (user-global, per-project section) | |
156
162
  | OpenCode | `opencode.json` | |
163
+ | Tabnine | `.tabnine/agent/settings.json` | `TABNINE.md` |
157
164
 
158
165
  Multiple editors in the same project? All get configured in one command.
159
166
 
@@ -196,7 +203,9 @@ With CCE: context_search "payment flow" = 800 tokens
196
203
 
197
204
  We benchmarked CCE against [FastAPI](https://github.com/fastapi/fastapi) (53 source files, 180K tokens) with 20 real coding questions. No cherry-picking, no synthetic queries.
198
205
 
199
- **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).
206
+ **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.
207
+
208
+ **Important baseline note:** The 94% number is measured against full-file reads, not against what Claude Code actually does. In practice, Claude Code already uses grep, partial file reads, and targeted tools, so the real-world savings compared to normal Claude Code behavior will be lower than 94%. We use full-file as the baseline because it's reproducible and deterministic (no agent behavior variability). The benchmark measures CCE's retrieval efficiency, not a head-to-head comparison with Claude Code's built-in exploration.
200
209
 
201
210
  | Metric | Result |
202
211
  |--------|--------|
@@ -426,7 +435,7 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
426
435
 
427
436
  ## Supported Languages
428
437
 
429
- **AST-aware chunking (10 extensions):**
438
+ **AST-aware chunking (tree-sitter parsed, 10 extensions):**
430
439
 
431
440
  | Language | Extensions |
432
441
  |----------|-----------|
@@ -438,7 +447,20 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
438
447
  | Rust | `.rs` |
439
448
  | Java | `.java` |
440
449
 
441
- **Fallback chunking:** All other text files (Markdown, YAML, config, etc.) chunked by line range.
450
+ **Language-aware fallback chunking (40+ extensions):**
451
+
452
+ | Category | Languages |
453
+ |----------|-----------|
454
+ | Web | HTML, CSS, SCSS, LESS, Vue, Svelte |
455
+ | Systems | C, C++, C#, Zig, Nim |
456
+ | Mobile | Swift, Kotlin, Dart |
457
+ | Functional | Haskell, Scala, Clojure, Elixir, Erlang, F# |
458
+ | Scripting | Ruby, Perl, Lua, R, Bash/Zsh |
459
+ | Data/Config | JSON, YAML, TOML, XML, SQL, GraphQL, Protobuf |
460
+ | DevOps | Terraform, HCL, Dockerfile |
461
+ | Docs | Markdown |
462
+
463
+ All other text files are chunked by line range. Binary files are skipped.
442
464
 
443
465
  ---
444
466
 
@@ -446,12 +468,14 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
446
468
 
447
469
  | Page | Content |
448
470
  |------|---------|
471
+ | [What is CCE? (Complete Guide)](https://elara-labs.github.io/code-context-engine/blog/what-is-code-context-engine.html) | Setup, tools, how it works, FAQ |
472
+ | [How to Save Claude Code Tokens](https://elara-labs.github.io/code-context-engine/blog/save-claude-code-tokens.html) | Cost breakdown and savings guide |
473
+ | [Benchmark Deep Dive](https://elara-labs.github.io/code-context-engine/blog/benchmark-fastapi.html) | Full FastAPI benchmark methodology |
474
+ | [Comparison with Alternatives](https://elara-labs.github.io/code-context-engine/comparison.html) | CCE vs Cursor, Aider, Continue, Greptile |
449
475
  | [Examples](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Examples.md) | Real conversations with Claude |
450
476
  | [How It Works](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/How-It-Works.md) | Full 9-stage pipeline |
451
477
  | [CLI Reference](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/CLI-Reference.md) | Every command with output |
452
478
  | [Configuration](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Configuration.md) | All config options |
453
- | [Project Commands](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Project-Commands.md) | Rules and preferences for Claude |
454
- | [Tech Stack](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Tech-Stack.md) | Every library and why |
455
479
 
456
480
  ---
457
481
 
@@ -8,6 +8,10 @@
8
8
  <strong>Index your codebase. AI searches instead of re-reading files.<br>94% token savings, reproducibly benchmarked.</strong>
9
9
  </p>
10
10
 
11
+ <p align="center">
12
+ <a href="https://elara-labs.github.io/code-context-engine/">Website</a> · <a href="https://elara-labs.github.io/code-context-engine/blog/what-is-code-context-engine.html">Guide</a> · <a href="https://elara-labs.github.io/code-context-engine/blog/benchmark-fastapi.html">Benchmark</a> · <a href="https://github.com/elara-labs/code-context-engine">GitHub</a>
13
+ </p>
14
+
11
15
  <br>
12
16
 
13
17
  <p align="center">
@@ -31,7 +35,8 @@
31
35
  <a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Cursor-000?style=for-the-badge" alt="Cursor"></a>&nbsp;
32
36
  <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"></a>&nbsp;
33
37
  <a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Codex_CLI-412991?style=for-the-badge" alt="Codex CLI"></a>&nbsp;
34
- <a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/OpenCode-22C55E?style=for-the-badge&logo=gnometerminal&logoColor=white" alt="OpenCode"></a>
38
+ <a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/OpenCode-22C55E?style=for-the-badge&logo=gnometerminal&logoColor=white" alt="OpenCode"></a>&nbsp;
39
+ <a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Tabnine-4B32C3?style=for-the-badge&logo=tabnine&logoColor=white" alt="Tabnine"></a>
35
40
  </p>
36
41
 
37
42
  <p align="center">
@@ -105,6 +110,7 @@ Restart your editor. Done. Every question now hits the index instead of re-readi
105
110
  | Gemini CLI | `.gemini/settings.json` | `GEMINI.md` |
106
111
  | OpenAI Codex | `~/.codex/config.toml` (user-global, per-project section) | |
107
112
  | OpenCode | `opencode.json` | |
113
+ | Tabnine | `.tabnine/agent/settings.json` | `TABNINE.md` |
108
114
 
109
115
  Multiple editors in the same project? All get configured in one command.
110
116
 
@@ -147,7 +153,9 @@ With CCE: context_search "payment flow" = 800 tokens
147
153
 
148
154
  We benchmarked CCE against [FastAPI](https://github.com/fastapi/fastapi) (53 source files, 180K tokens) with 20 real coding questions. No cherry-picking, no synthetic queries.
149
155
 
150
- **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).
156
+ **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.
157
+
158
+ **Important baseline note:** The 94% number is measured against full-file reads, not against what Claude Code actually does. In practice, Claude Code already uses grep, partial file reads, and targeted tools, so the real-world savings compared to normal Claude Code behavior will be lower than 94%. We use full-file as the baseline because it's reproducible and deterministic (no agent behavior variability). The benchmark measures CCE's retrieval efficiency, not a head-to-head comparison with Claude Code's built-in exploration.
151
159
 
152
160
  | Metric | Result |
153
161
  |--------|--------|
@@ -377,7 +385,7 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
377
385
 
378
386
  ## Supported Languages
379
387
 
380
- **AST-aware chunking (10 extensions):**
388
+ **AST-aware chunking (tree-sitter parsed, 10 extensions):**
381
389
 
382
390
  | Language | Extensions |
383
391
  |----------|-----------|
@@ -389,7 +397,20 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
389
397
  | Rust | `.rs` |
390
398
  | Java | `.java` |
391
399
 
392
- **Fallback chunking:** All other text files (Markdown, YAML, config, etc.) chunked by line range.
400
+ **Language-aware fallback chunking (40+ extensions):**
401
+
402
+ | Category | Languages |
403
+ |----------|-----------|
404
+ | Web | HTML, CSS, SCSS, LESS, Vue, Svelte |
405
+ | Systems | C, C++, C#, Zig, Nim |
406
+ | Mobile | Swift, Kotlin, Dart |
407
+ | Functional | Haskell, Scala, Clojure, Elixir, Erlang, F# |
408
+ | Scripting | Ruby, Perl, Lua, R, Bash/Zsh |
409
+ | Data/Config | JSON, YAML, TOML, XML, SQL, GraphQL, Protobuf |
410
+ | DevOps | Terraform, HCL, Dockerfile |
411
+ | Docs | Markdown |
412
+
413
+ All other text files are chunked by line range. Binary files are skipped.
393
414
 
394
415
  ---
395
416
 
@@ -397,12 +418,14 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
397
418
 
398
419
  | Page | Content |
399
420
  |------|---------|
421
+ | [What is CCE? (Complete Guide)](https://elara-labs.github.io/code-context-engine/blog/what-is-code-context-engine.html) | Setup, tools, how it works, FAQ |
422
+ | [How to Save Claude Code Tokens](https://elara-labs.github.io/code-context-engine/blog/save-claude-code-tokens.html) | Cost breakdown and savings guide |
423
+ | [Benchmark Deep Dive](https://elara-labs.github.io/code-context-engine/blog/benchmark-fastapi.html) | Full FastAPI benchmark methodology |
424
+ | [Comparison with Alternatives](https://elara-labs.github.io/code-context-engine/comparison.html) | CCE vs Cursor, Aider, Continue, Greptile |
400
425
  | [Examples](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Examples.md) | Real conversations with Claude |
401
426
  | [How It Works](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/How-It-Works.md) | Full 9-stage pipeline |
402
427
  | [CLI Reference](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/CLI-Reference.md) | Every command with output |
403
428
  | [Configuration](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Configuration.md) | All config options |
404
- | [Project Commands](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Project-Commands.md) | Rules and preferences for Claude |
405
- | [Tech Stack](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Tech-Stack.md) | Every library and why |
406
429
 
407
430
  ---
408
431
 
@@ -1,14 +1,14 @@
1
1
  [project]
2
2
  name = "code-context-engine"
3
- version = "0.4.18"
4
- description = "Index your codebase. AI searches instead of re-reading files. 94% token savings, benchmarked on FastAPI. Works with Claude Code, Cursor, VS Code, Gemini CLI, Codex, and OpenCode."
3
+ version = "0.4.19"
4
+ description = "Save 94% on Claude Code tokens. Index your codebase locally, AI agents search instead of reading files. Reduce Claude API costs, save tokens on Cursor, VS Code, Gemini CLI. Free, open source MCP server."
5
5
  readme = {file = "README.md", content-type = "text/markdown"}
6
6
  license = "MIT"
7
7
  authors = [
8
8
  {name = "Fazle Elahee", email = "felahee@gmail.com"},
9
9
  {name = "Raj", email = "rajkumar.sakti@gmail.com"},
10
10
  ]
11
- keywords = ["claude", "context", "mcp", "llm", "code-indexing", "vector-search"]
11
+ keywords = ["claude-code", "save-tokens", "token-savings", "mcp-server", "claude", "cursor", "code-indexing", "reduce-ai-costs", "llm", "vector-search", "ai-coding"]
12
12
  classifiers = [
13
13
  "Development Status :: 4 - Beta",
14
14
  "Intended Audience :: Developers",
@@ -57,6 +57,7 @@ dev = [
57
57
  "pytest-aiohttp>=1.0",
58
58
  "pytest-cov>=5.0",
59
59
  "pytest-xdist>=3.5",
60
+ "ruff>=0.13",
60
61
  ]
61
62
  http = [] # back-compat: aiohttp is now a core dependency
62
63
 
@@ -94,4 +95,33 @@ dev = [
94
95
  "pytest-asyncio>=1.3.0",
95
96
  "pytest-aiohttp>=1.0",
96
97
  "pytest-xdist>=3.5",
98
+ "ruff>=0.13",
97
99
  ]
100
+
101
+ [tool.ruff]
102
+ line-length = 100
103
+ target-version = "py311"
104
+ extend-exclude = ["dist", "build", ".venv"]
105
+
106
+ [tool.ruff.lint]
107
+ # Default ruleset — pycodestyle errors (E) + pyflakes (F). Conservative
108
+ # starting point; can be expanded later (I/imports, B/bugbear, UP/pyupgrade)
109
+ # once the team is comfortable with the baseline. Selected rules are the
110
+ # ones that catch real bugs (unused imports, undefined names, redefined
111
+ # symbols) rather than stylistic preferences.
112
+ select = ["E", "F", "W"]
113
+ # E501 (line-too-long) is enforced via `line-length` above; default is 88
114
+ # but we use 100 to match the existing codebase. Ignore a few rules that
115
+ # are noisy in async/test code:
116
+ ignore = [
117
+ "E501", # line-too-long: handled by formatter, not all old code wrapped
118
+ "E402", # module-import-not-at-top: legitimate inside conditional imports
119
+ "E741", # ambiguous-variable-name (l/I/O): one-off in third-party-style code
120
+ ]
121
+
122
+ [tool.ruff.lint.per-file-ignores]
123
+ # Tests import fixtures and helpers that look unused but trigger collection.
124
+ "tests/**" = ["F811"]
125
+ # __init__.py files are allowed to re-export (those imports look unused but
126
+ # are part of the public surface of the package).
127
+ "**/__init__.py" = ["F401"]
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-context-engine
3
- Version: 0.4.18
4
- Summary: Index your codebase. AI searches instead of re-reading files. 94% token savings, benchmarked on FastAPI. Works with Claude Code, Cursor, VS Code, Gemini CLI, Codex, and OpenCode.
3
+ Version: 0.4.19
4
+ Summary: Save 94% on Claude Code tokens. Index your codebase locally, AI agents search instead of reading files. Reduce Claude API costs, save tokens on Cursor, VS Code, Gemini CLI. Free, open source MCP server.
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
- Keywords: claude,context,mcp,llm,code-indexing,vector-search
10
+ Keywords: claude-code,save-tokens,token-savings,mcp-server,claude,cursor,code-indexing,reduce-ai-costs,llm,vector-search,ai-coding
11
11
  Classifier: Development Status :: 4 - Beta
12
12
  Classifier: Intended Audience :: Developers
13
13
  Classifier: Programming Language :: Python :: 3
@@ -44,6 +44,7 @@ Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
44
44
  Requires-Dist: pytest-aiohttp>=1.0; extra == "dev"
45
45
  Requires-Dist: pytest-cov>=5.0; extra == "dev"
46
46
  Requires-Dist: pytest-xdist>=3.5; extra == "dev"
47
+ Requires-Dist: ruff>=0.13; extra == "dev"
47
48
  Provides-Extra: http
48
49
  Dynamic: license-file
49
50
 
@@ -57,6 +58,10 @@ Dynamic: license-file
57
58
  <strong>Index your codebase. AI searches instead of re-reading files.<br>94% token savings, reproducibly benchmarked.</strong>
58
59
  </p>
59
60
 
61
+ <p align="center">
62
+ <a href="https://elara-labs.github.io/code-context-engine/">Website</a> · <a href="https://elara-labs.github.io/code-context-engine/blog/what-is-code-context-engine.html">Guide</a> · <a href="https://elara-labs.github.io/code-context-engine/blog/benchmark-fastapi.html">Benchmark</a> · <a href="https://github.com/elara-labs/code-context-engine">GitHub</a>
63
+ </p>
64
+
60
65
  <br>
61
66
 
62
67
  <p align="center">
@@ -80,7 +85,8 @@ Dynamic: license-file
80
85
  <a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Cursor-000?style=for-the-badge" alt="Cursor"></a>&nbsp;
81
86
  <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"></a>&nbsp;
82
87
  <a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Codex_CLI-412991?style=for-the-badge" alt="Codex CLI"></a>&nbsp;
83
- <a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/OpenCode-22C55E?style=for-the-badge&logo=gnometerminal&logoColor=white" alt="OpenCode"></a>
88
+ <a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/OpenCode-22C55E?style=for-the-badge&logo=gnometerminal&logoColor=white" alt="OpenCode"></a>&nbsp;
89
+ <a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Tabnine-4B32C3?style=for-the-badge&logo=tabnine&logoColor=white" alt="Tabnine"></a>
84
90
  </p>
85
91
 
86
92
  <p align="center">
@@ -154,6 +160,7 @@ Restart your editor. Done. Every question now hits the index instead of re-readi
154
160
  | Gemini CLI | `.gemini/settings.json` | `GEMINI.md` |
155
161
  | OpenAI Codex | `~/.codex/config.toml` (user-global, per-project section) | |
156
162
  | OpenCode | `opencode.json` | |
163
+ | Tabnine | `.tabnine/agent/settings.json` | `TABNINE.md` |
157
164
 
158
165
  Multiple editors in the same project? All get configured in one command.
159
166
 
@@ -196,7 +203,9 @@ With CCE: context_search "payment flow" = 800 tokens
196
203
 
197
204
  We benchmarked CCE against [FastAPI](https://github.com/fastapi/fastapi) (53 source files, 180K tokens) with 20 real coding questions. No cherry-picking, no synthetic queries.
198
205
 
199
- **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).
206
+ **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.
207
+
208
+ **Important baseline note:** The 94% number is measured against full-file reads, not against what Claude Code actually does. In practice, Claude Code already uses grep, partial file reads, and targeted tools, so the real-world savings compared to normal Claude Code behavior will be lower than 94%. We use full-file as the baseline because it's reproducible and deterministic (no agent behavior variability). The benchmark measures CCE's retrieval efficiency, not a head-to-head comparison with Claude Code's built-in exploration.
200
209
 
201
210
  | Metric | Result |
202
211
  |--------|--------|
@@ -426,7 +435,7 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
426
435
 
427
436
  ## Supported Languages
428
437
 
429
- **AST-aware chunking (10 extensions):**
438
+ **AST-aware chunking (tree-sitter parsed, 10 extensions):**
430
439
 
431
440
  | Language | Extensions |
432
441
  |----------|-----------|
@@ -438,7 +447,20 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
438
447
  | Rust | `.rs` |
439
448
  | Java | `.java` |
440
449
 
441
- **Fallback chunking:** All other text files (Markdown, YAML, config, etc.) chunked by line range.
450
+ **Language-aware fallback chunking (40+ extensions):**
451
+
452
+ | Category | Languages |
453
+ |----------|-----------|
454
+ | Web | HTML, CSS, SCSS, LESS, Vue, Svelte |
455
+ | Systems | C, C++, C#, Zig, Nim |
456
+ | Mobile | Swift, Kotlin, Dart |
457
+ | Functional | Haskell, Scala, Clojure, Elixir, Erlang, F# |
458
+ | Scripting | Ruby, Perl, Lua, R, Bash/Zsh |
459
+ | Data/Config | JSON, YAML, TOML, XML, SQL, GraphQL, Protobuf |
460
+ | DevOps | Terraform, HCL, Dockerfile |
461
+ | Docs | Markdown |
462
+
463
+ All other text files are chunked by line range. Binary files are skipped.
442
464
 
443
465
  ---
444
466
 
@@ -446,12 +468,14 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
446
468
 
447
469
  | Page | Content |
448
470
  |------|---------|
471
+ | [What is CCE? (Complete Guide)](https://elara-labs.github.io/code-context-engine/blog/what-is-code-context-engine.html) | Setup, tools, how it works, FAQ |
472
+ | [How to Save Claude Code Tokens](https://elara-labs.github.io/code-context-engine/blog/save-claude-code-tokens.html) | Cost breakdown and savings guide |
473
+ | [Benchmark Deep Dive](https://elara-labs.github.io/code-context-engine/blog/benchmark-fastapi.html) | Full FastAPI benchmark methodology |
474
+ | [Comparison with Alternatives](https://elara-labs.github.io/code-context-engine/comparison.html) | CCE vs Cursor, Aider, Continue, Greptile |
449
475
  | [Examples](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Examples.md) | Real conversations with Claude |
450
476
  | [How It Works](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/How-It-Works.md) | Full 9-stage pipeline |
451
477
  | [CLI Reference](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/CLI-Reference.md) | Every command with output |
452
478
  | [Configuration](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Configuration.md) | All config options |
453
- | [Project Commands](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Project-Commands.md) | Rules and preferences for Claude |
454
- | [Tech Stack](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Tech-Stack.md) | Every library and why |
455
479
 
456
480
  ---
457
481
 
@@ -47,6 +47,7 @@ src/context_engine/integration/session_capture.py
47
47
  src/context_engine/memory/__init__.py
48
48
  src/context_engine/memory/compressor.py
49
49
  src/context_engine/memory/db.py
50
+ src/context_engine/memory/decision_extractor.py
50
51
  src/context_engine/memory/extractive.py
51
52
  src/context_engine/memory/grammar.py
52
53
  src/context_engine/memory/hook_installer.py
@@ -25,5 +25,6 @@ pytest-asyncio>=0.23
25
25
  pytest-aiohttp>=1.0
26
26
  pytest-cov>=5.0
27
27
  pytest-xdist>=3.5
28
+ ruff>=0.13
28
29
 
29
30
  [http]