code-context-engine 0.4.18__tar.gz → 0.4.20__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 (92) hide show
  1. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/PKG-INFO +45 -13
  2. code_context_engine-0.4.18/src/code_context_engine.egg-info/PKG-INFO → code_context_engine-0.4.20/README.md +39 -58
  3. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/pyproject.toml +38 -4
  4. code_context_engine-0.4.18/README.md → code_context_engine-0.4.20/src/code_context_engine.egg-info/PKG-INFO +90 -9
  5. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/code_context_engine.egg-info/SOURCES.txt +1 -0
  6. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/code_context_engine.egg-info/requires.txt +4 -1
  7. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/cli.py +143 -50
  8. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/config.py +7 -0
  9. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/editors.py +13 -1
  10. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/event_bus.py +0 -1
  11. code_context_engine-0.4.20/src/context_engine/indexer/embedder.py +539 -0
  12. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/indexer/embedding_cache.py +2 -1
  13. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/indexer/git_hooks.py +23 -5
  14. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/indexer/manifest.py +27 -0
  15. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/indexer/pipeline.py +45 -4
  16. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/indexer/watcher.py +35 -4
  17. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/integration/bootstrap.py +1 -1
  18. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/integration/mcp_server.py +62 -16
  19. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/memory/compressor.py +70 -1
  20. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/memory/db.py +6 -4
  21. code_context_engine-0.4.20/src/context_engine/memory/decision_extractor.py +91 -0
  22. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/memory/hook_installer.py +35 -0
  23. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/memory/hook_server.py +25 -9
  24. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/memory/hooks.py +0 -1
  25. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/project_commands.py +6 -0
  26. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/storage/backend.py +1 -1
  27. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/storage/fts_store.py +2 -1
  28. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/storage/graph_store.py +4 -3
  29. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/storage/remote_backend.py +1 -1
  30. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/storage/vector_store.py +9 -7
  31. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/utils.py +20 -10
  32. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_savings_e2e.py +1 -2
  33. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_smoke.py +2 -2
  34. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_uninstall.py +0 -1
  35. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_config.py +0 -3
  36. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_e2e.py +1 -2
  37. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_event_bus.py +0 -1
  38. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_project_commands.py +15 -3
  39. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_real_life.py +0 -4
  40. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_services.py +0 -2
  41. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_token_efficiency.py +0 -1
  42. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_token_packing.py +0 -1
  43. code_context_engine-0.4.18/src/context_engine/indexer/embedder.py +0 -158
  44. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/LICENSE +0 -0
  45. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/setup.cfg +0 -0
  46. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/code_context_engine.egg-info/dependency_links.txt +0 -0
  47. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/code_context_engine.egg-info/entry_points.txt +0 -0
  48. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/code_context_engine.egg-info/top_level.txt +0 -0
  49. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/__init__.py +0 -0
  50. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/cli_style.py +0 -0
  51. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/compression/__init__.py +0 -0
  52. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/compression/compressor.py +0 -0
  53. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/compression/ollama_client.py +0 -0
  54. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/compression/output_rules.py +0 -0
  55. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/compression/prompts.py +0 -0
  56. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/compression/quality.py +0 -0
  57. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/dashboard/__init__.py +0 -0
  58. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/dashboard/_page.py +0 -0
  59. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/dashboard/server.py +0 -0
  60. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/indexer/__init__.py +0 -0
  61. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/indexer/chunker.py +0 -0
  62. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/indexer/git_indexer.py +0 -0
  63. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/indexer/ignorefile.py +0 -0
  64. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/indexer/secrets.py +0 -0
  65. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/integration/__init__.py +0 -0
  66. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/integration/git_context.py +0 -0
  67. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/integration/session_capture.py +0 -0
  68. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/memory/__init__.py +0 -0
  69. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/memory/extractive.py +0 -0
  70. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/memory/grammar.py +0 -0
  71. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/memory/migrate.py +0 -0
  72. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/models.py +0 -0
  73. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/pricing.py +0 -0
  74. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/retrieval/__init__.py +0 -0
  75. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/retrieval/confidence.py +0 -0
  76. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/retrieval/query_parser.py +0 -0
  77. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/retrieval/retriever.py +0 -0
  78. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/serve_http.py +0 -0
  79. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/services.py +0 -0
  80. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/storage/__init__.py +0 -0
  81. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/storage/local_backend.py +0 -0
  82. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_init_probe.py +0 -0
  83. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_mcp_config.py +0 -0
  84. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_safe_cwd.py +0 -0
  85. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_savings.py +0 -0
  86. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_savings_buckets.py +0 -0
  87. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_serve.py +0 -0
  88. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_sessions_export.py +0 -0
  89. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_sessions_status.py +0 -0
  90. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_editors_codex.py +0 -0
  91. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_editors_opencode.py +0 -0
  92. {code_context_engine-0.4.18 → code_context_engine-0.4.20}/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.20
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
@@ -21,7 +21,6 @@ License-File: LICENSE
21
21
  Requires-Dist: click>=8.1
22
22
  Requires-Dist: pyyaml>=6.0
23
23
  Requires-Dist: sqlite-vec>=0.1.6
24
- Requires-Dist: fastembed>=0.4
25
24
  Requires-Dist: numpy>=1.24
26
25
  Requires-Dist: tree-sitter>=0.22
27
26
  Requires-Dist: tree-sitter-python>=0.21
@@ -44,7 +43,10 @@ Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
44
43
  Requires-Dist: pytest-aiohttp>=1.0; extra == "dev"
45
44
  Requires-Dist: pytest-cov>=5.0; extra == "dev"
46
45
  Requires-Dist: pytest-xdist>=3.5; extra == "dev"
46
+ Requires-Dist: ruff>=0.13; extra == "dev"
47
47
  Provides-Extra: http
48
+ Provides-Extra: local
49
+ Requires-Dist: fastembed>=0.4; extra == "local"
48
50
  Dynamic: license-file
49
51
 
50
52
  <p align="center">
@@ -57,6 +59,10 @@ Dynamic: license-file
57
59
  <strong>Index your codebase. AI searches instead of re-reading files.<br>94% token savings, reproducibly benchmarked.</strong>
58
60
  </p>
59
61
 
62
+ <p align="center">
63
+ <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>
64
+ </p>
65
+
60
66
  <br>
61
67
 
62
68
  <p align="center">
@@ -80,7 +86,8 @@ Dynamic: license-file
80
86
  <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
87
  <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
88
  <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>
89
+ <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;
90
+ <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
91
  </p>
85
92
 
86
93
  <p align="center">
@@ -142,6 +149,12 @@ cd /path/to/your/project
142
149
  cce init # index, install hooks, register MCP server
143
150
  ```
144
151
 
152
+ **Embedding backends:** CCE auto-detects the best available backend. If you have Ollama running, it uses `nomic-embed-text` with zero extra dependencies. For offline/local embedding without Ollama, install the `[local]` extra:
153
+
154
+ ```bash
155
+ uv tool install "code-context-engine[local]" # includes fastembed + ONNX Runtime
156
+ ```
157
+
145
158
  Restart your editor. Done. Every question now hits the index instead of re-reading files.
146
159
 
147
160
  `cce init` auto-detects your editor and writes the right config:
@@ -154,6 +167,7 @@ Restart your editor. Done. Every question now hits the index instead of re-readi
154
167
  | Gemini CLI | `.gemini/settings.json` | `GEMINI.md` |
155
168
  | OpenAI Codex | `~/.codex/config.toml` (user-global, per-project section) | |
156
169
  | OpenCode | `opencode.json` | |
170
+ | Tabnine | `.tabnine/agent/settings.json` | `TABNINE.md` |
157
171
 
158
172
  Multiple editors in the same project? All get configured in one command.
159
173
 
@@ -196,7 +210,9 @@ With CCE: context_search "payment flow" = 800 tokens
196
210
 
197
211
  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
212
 
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).
213
+ **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.
214
+
215
+ **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
216
 
201
217
  | Metric | Result |
202
218
  |--------|--------|
@@ -416,17 +432,18 @@ Tell Claude: "switch to max compression" or "turn off compression". Code blocks
416
432
 
417
433
  | Component | Size |
418
434
  |-----------|------|
419
- | Installed package | ~189 MB (ONNX Runtime is 66 MB of that) |
420
- | Embedding model (one-time download) | ~60 MB |
435
+ | Core install (Ollama backend) | ~17 MB |
436
+ | With `[local]` extra (fastembed + ONNX) | ~189 MB |
437
+ | Embedding model (one-time download) | ~60 MB (fastembed) or managed by Ollama |
421
438
  | Index per project (small/medium/large) | 5-60 MB |
422
439
 
423
- No GPU required. Embedding model runs on CPU via ONNX Runtime.
440
+ No GPU required. With Ollama, embeddings are handled by the Ollama server. With the `[local]` extra, the embedding model runs on CPU via ONNX Runtime.
424
441
 
425
442
  ---
426
443
 
427
444
  ## Supported Languages
428
445
 
429
- **AST-aware chunking (10 extensions):**
446
+ **AST-aware chunking (tree-sitter parsed, 10 extensions):**
430
447
 
431
448
  | Language | Extensions |
432
449
  |----------|-----------|
@@ -438,7 +455,20 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
438
455
  | Rust | `.rs` |
439
456
  | Java | `.java` |
440
457
 
441
- **Fallback chunking:** All other text files (Markdown, YAML, config, etc.) chunked by line range.
458
+ **Language-aware fallback chunking (40+ extensions):**
459
+
460
+ | Category | Languages |
461
+ |----------|-----------|
462
+ | Web | HTML, CSS, SCSS, LESS, Vue, Svelte |
463
+ | Systems | C, C++, C#, Zig, Nim |
464
+ | Mobile | Swift, Kotlin, Dart |
465
+ | Functional | Haskell, Scala, Clojure, Elixir, Erlang, F# |
466
+ | Scripting | Ruby, Perl, Lua, R, Bash/Zsh |
467
+ | Data/Config | JSON, YAML, TOML, XML, SQL, GraphQL, Protobuf |
468
+ | DevOps | Terraform, HCL, Dockerfile |
469
+ | Docs | Markdown |
470
+
471
+ All other text files are chunked by line range. Binary files are skipped.
442
472
 
443
473
  ---
444
474
 
@@ -446,12 +476,14 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
446
476
 
447
477
  | Page | Content |
448
478
  |------|---------|
479
+ | [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 |
480
+ | [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 |
481
+ | [Benchmark Deep Dive](https://elara-labs.github.io/code-context-engine/blog/benchmark-fastapi.html) | Full FastAPI benchmark methodology |
482
+ | [Comparison with Alternatives](https://elara-labs.github.io/code-context-engine/comparison.html) | CCE vs Cursor, Aider, Continue, Greptile |
449
483
  | [Examples](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Examples.md) | Real conversations with Claude |
450
484
  | [How It Works](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/How-It-Works.md) | Full 9-stage pipeline |
451
485
  | [CLI Reference](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/CLI-Reference.md) | Every command with output |
452
486
  | [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
487
 
456
488
  ---
457
489
 
@@ -1,52 +1,3 @@
1
- Metadata-Version: 2.4
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.
5
- Author-email: Fazle Elahee <felahee@gmail.com>, Raj <rajkumar.sakti@gmail.com>
6
- License-Expression: MIT
7
- Project-URL: Homepage, https://github.com/elara-labs/code-context-engine
8
- Project-URL: Repository, https://github.com/elara-labs/code-context-engine
9
- Project-URL: Issues, https://github.com/elara-labs/code-context-engine/issues
10
- Keywords: claude,context,mcp,llm,code-indexing,vector-search
11
- Classifier: Development Status :: 4 - Beta
12
- Classifier: Intended Audience :: Developers
13
- Classifier: Programming Language :: Python :: 3
14
- Classifier: Programming Language :: Python :: 3.11
15
- Classifier: Programming Language :: Python :: 3.12
16
- Classifier: Programming Language :: Python :: 3.13
17
- Classifier: Topic :: Software Development :: Libraries
18
- Requires-Python: >=3.11
19
- Description-Content-Type: text/markdown
20
- License-File: LICENSE
21
- Requires-Dist: click>=8.1
22
- Requires-Dist: pyyaml>=6.0
23
- Requires-Dist: sqlite-vec>=0.1.6
24
- Requires-Dist: fastembed>=0.4
25
- Requires-Dist: numpy>=1.24
26
- Requires-Dist: tree-sitter>=0.22
27
- Requires-Dist: tree-sitter-python>=0.21
28
- Requires-Dist: tree-sitter-javascript>=0.21
29
- Requires-Dist: tree-sitter-typescript>=0.21
30
- Requires-Dist: tree-sitter-php>=0.23
31
- Requires-Dist: tree-sitter-go>=0.23
32
- Requires-Dist: tree-sitter-rust>=0.23
33
- Requires-Dist: tree-sitter-java>=0.23
34
- Requires-Dist: watchdog>=4.0
35
- Requires-Dist: mcp>=1.0
36
- Requires-Dist: httpx>=0.27
37
- Requires-Dist: fastapi>=0.110
38
- Requires-Dist: uvicorn>=0.29
39
- Requires-Dist: aiohttp>=3.9
40
- Requires-Dist: psutil>=5.9
41
- Provides-Extra: dev
42
- Requires-Dist: pytest>=8.0; extra == "dev"
43
- Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
44
- Requires-Dist: pytest-aiohttp>=1.0; extra == "dev"
45
- Requires-Dist: pytest-cov>=5.0; extra == "dev"
46
- Requires-Dist: pytest-xdist>=3.5; extra == "dev"
47
- Provides-Extra: http
48
- Dynamic: license-file
49
-
50
1
  <p align="center">
51
2
  <img src="https://raw.githubusercontent.com/elara-labs/code-context-engine/main/docs/logo.svg" alt="Code Context Engine" width="140">
52
3
  </p>
@@ -57,6 +8,10 @@ Dynamic: license-file
57
8
  <strong>Index your codebase. AI searches instead of re-reading files.<br>94% token savings, reproducibly benchmarked.</strong>
58
9
  </p>
59
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
+
60
15
  <br>
61
16
 
62
17
  <p align="center">
@@ -80,7 +35,8 @@ Dynamic: license-file
80
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;
81
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;
82
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;
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>
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>
84
40
  </p>
85
41
 
86
42
  <p align="center">
@@ -142,6 +98,12 @@ cd /path/to/your/project
142
98
  cce init # index, install hooks, register MCP server
143
99
  ```
144
100
 
101
+ **Embedding backends:** CCE auto-detects the best available backend. If you have Ollama running, it uses `nomic-embed-text` with zero extra dependencies. For offline/local embedding without Ollama, install the `[local]` extra:
102
+
103
+ ```bash
104
+ uv tool install "code-context-engine[local]" # includes fastembed + ONNX Runtime
105
+ ```
106
+
145
107
  Restart your editor. Done. Every question now hits the index instead of re-reading files.
146
108
 
147
109
  `cce init` auto-detects your editor and writes the right config:
@@ -154,6 +116,7 @@ Restart your editor. Done. Every question now hits the index instead of re-readi
154
116
  | Gemini CLI | `.gemini/settings.json` | `GEMINI.md` |
155
117
  | OpenAI Codex | `~/.codex/config.toml` (user-global, per-project section) | |
156
118
  | OpenCode | `opencode.json` | |
119
+ | Tabnine | `.tabnine/agent/settings.json` | `TABNINE.md` |
157
120
 
158
121
  Multiple editors in the same project? All get configured in one command.
159
122
 
@@ -196,7 +159,9 @@ With CCE: context_search "payment flow" = 800 tokens
196
159
 
197
160
  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
161
 
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).
162
+ **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.
163
+
164
+ **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
165
 
201
166
  | Metric | Result |
202
167
  |--------|--------|
@@ -416,17 +381,18 @@ Tell Claude: "switch to max compression" or "turn off compression". Code blocks
416
381
 
417
382
  | Component | Size |
418
383
  |-----------|------|
419
- | Installed package | ~189 MB (ONNX Runtime is 66 MB of that) |
420
- | Embedding model (one-time download) | ~60 MB |
384
+ | Core install (Ollama backend) | ~17 MB |
385
+ | With `[local]` extra (fastembed + ONNX) | ~189 MB |
386
+ | Embedding model (one-time download) | ~60 MB (fastembed) or managed by Ollama |
421
387
  | Index per project (small/medium/large) | 5-60 MB |
422
388
 
423
- No GPU required. Embedding model runs on CPU via ONNX Runtime.
389
+ No GPU required. With Ollama, embeddings are handled by the Ollama server. With the `[local]` extra, the embedding model runs on CPU via ONNX Runtime.
424
390
 
425
391
  ---
426
392
 
427
393
  ## Supported Languages
428
394
 
429
- **AST-aware chunking (10 extensions):**
395
+ **AST-aware chunking (tree-sitter parsed, 10 extensions):**
430
396
 
431
397
  | Language | Extensions |
432
398
  |----------|-----------|
@@ -438,7 +404,20 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
438
404
  | Rust | `.rs` |
439
405
  | Java | `.java` |
440
406
 
441
- **Fallback chunking:** All other text files (Markdown, YAML, config, etc.) chunked by line range.
407
+ **Language-aware fallback chunking (40+ extensions):**
408
+
409
+ | Category | Languages |
410
+ |----------|-----------|
411
+ | Web | HTML, CSS, SCSS, LESS, Vue, Svelte |
412
+ | Systems | C, C++, C#, Zig, Nim |
413
+ | Mobile | Swift, Kotlin, Dart |
414
+ | Functional | Haskell, Scala, Clojure, Elixir, Erlang, F# |
415
+ | Scripting | Ruby, Perl, Lua, R, Bash/Zsh |
416
+ | Data/Config | JSON, YAML, TOML, XML, SQL, GraphQL, Protobuf |
417
+ | DevOps | Terraform, HCL, Dockerfile |
418
+ | Docs | Markdown |
419
+
420
+ All other text files are chunked by line range. Binary files are skipped.
442
421
 
443
422
  ---
444
423
 
@@ -446,12 +425,14 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
446
425
 
447
426
  | Page | Content |
448
427
  |------|---------|
428
+ | [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 |
429
+ | [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 |
430
+ | [Benchmark Deep Dive](https://elara-labs.github.io/code-context-engine/blog/benchmark-fastapi.html) | Full FastAPI benchmark methodology |
431
+ | [Comparison with Alternatives](https://elara-labs.github.io/code-context-engine/comparison.html) | CCE vs Cursor, Aider, Continue, Greptile |
449
432
  | [Examples](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Examples.md) | Real conversations with Claude |
450
433
  | [How It Works](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/How-It-Works.md) | Full 9-stage pipeline |
451
434
  | [CLI Reference](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/CLI-Reference.md) | Every command with output |
452
435
  | [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
436
 
456
437
  ---
457
438
 
@@ -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.20"
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",
@@ -23,7 +23,6 @@ dependencies = [
23
23
  "click>=8.1",
24
24
  "pyyaml>=6.0",
25
25
  "sqlite-vec>=0.1.6",
26
- "fastembed>=0.4",
27
26
  "numpy>=1.24",
28
27
  "tree-sitter>=0.22",
29
28
  "tree-sitter-python>=0.21",
@@ -57,8 +56,14 @@ dev = [
57
56
  "pytest-aiohttp>=1.0",
58
57
  "pytest-cov>=5.0",
59
58
  "pytest-xdist>=3.5",
59
+ "ruff>=0.13",
60
60
  ]
61
61
  http = [] # back-compat: aiohttp is now a core dependency
62
+ # Local on-device embedding via fastembed (ONNX). ~172 MB install
63
+ # footprint; needed only if you don't have Ollama running. Without
64
+ # this extra, CCE auto-detects Ollama at localhost:11434 and uses
65
+ # nomic-embed-text via /api/embed.
66
+ local = ["fastembed>=0.4"]
62
67
 
63
68
  [project.scripts]
64
69
  cce = "context_engine.cli:main"
@@ -94,4 +99,33 @@ dev = [
94
99
  "pytest-asyncio>=1.3.0",
95
100
  "pytest-aiohttp>=1.0",
96
101
  "pytest-xdist>=3.5",
102
+ "ruff>=0.13",
97
103
  ]
104
+
105
+ [tool.ruff]
106
+ line-length = 100
107
+ target-version = "py311"
108
+ extend-exclude = ["dist", "build", ".venv"]
109
+
110
+ [tool.ruff.lint]
111
+ # Default ruleset — pycodestyle errors (E) + pyflakes (F). Conservative
112
+ # starting point; can be expanded later (I/imports, B/bugbear, UP/pyupgrade)
113
+ # once the team is comfortable with the baseline. Selected rules are the
114
+ # ones that catch real bugs (unused imports, undefined names, redefined
115
+ # symbols) rather than stylistic preferences.
116
+ select = ["E", "F", "W"]
117
+ # E501 (line-too-long) is enforced via `line-length` above; default is 88
118
+ # but we use 100 to match the existing codebase. Ignore a few rules that
119
+ # are noisy in async/test code:
120
+ ignore = [
121
+ "E501", # line-too-long: handled by formatter, not all old code wrapped
122
+ "E402", # module-import-not-at-top: legitimate inside conditional imports
123
+ "E741", # ambiguous-variable-name (l/I/O): one-off in third-party-style code
124
+ ]
125
+
126
+ [tool.ruff.lint.per-file-ignores]
127
+ # Tests import fixtures and helpers that look unused but trigger collection.
128
+ "tests/**" = ["F811"]
129
+ # __init__.py files are allowed to re-export (those imports look unused but
130
+ # are part of the public surface of the package).
131
+ "**/__init__.py" = ["F401"]
@@ -1,3 +1,54 @@
1
+ Metadata-Version: 2.4
2
+ Name: code-context-engine
3
+ Version: 0.4.20
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
+ Author-email: Fazle Elahee <felahee@gmail.com>, Raj <rajkumar.sakti@gmail.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/elara-labs/code-context-engine
8
+ Project-URL: Repository, https://github.com/elara-labs/code-context-engine
9
+ Project-URL: Issues, https://github.com/elara-labs/code-context-engine/issues
10
+ Keywords: claude-code,save-tokens,token-savings,mcp-server,claude,cursor,code-indexing,reduce-ai-costs,llm,vector-search,ai-coding
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Topic :: Software Development :: Libraries
18
+ Requires-Python: >=3.11
19
+ Description-Content-Type: text/markdown
20
+ License-File: LICENSE
21
+ Requires-Dist: click>=8.1
22
+ Requires-Dist: pyyaml>=6.0
23
+ Requires-Dist: sqlite-vec>=0.1.6
24
+ Requires-Dist: numpy>=1.24
25
+ Requires-Dist: tree-sitter>=0.22
26
+ Requires-Dist: tree-sitter-python>=0.21
27
+ Requires-Dist: tree-sitter-javascript>=0.21
28
+ Requires-Dist: tree-sitter-typescript>=0.21
29
+ Requires-Dist: tree-sitter-php>=0.23
30
+ Requires-Dist: tree-sitter-go>=0.23
31
+ Requires-Dist: tree-sitter-rust>=0.23
32
+ Requires-Dist: tree-sitter-java>=0.23
33
+ Requires-Dist: watchdog>=4.0
34
+ Requires-Dist: mcp>=1.0
35
+ Requires-Dist: httpx>=0.27
36
+ Requires-Dist: fastapi>=0.110
37
+ Requires-Dist: uvicorn>=0.29
38
+ Requires-Dist: aiohttp>=3.9
39
+ Requires-Dist: psutil>=5.9
40
+ Provides-Extra: dev
41
+ Requires-Dist: pytest>=8.0; extra == "dev"
42
+ Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
43
+ Requires-Dist: pytest-aiohttp>=1.0; extra == "dev"
44
+ Requires-Dist: pytest-cov>=5.0; extra == "dev"
45
+ Requires-Dist: pytest-xdist>=3.5; extra == "dev"
46
+ Requires-Dist: ruff>=0.13; extra == "dev"
47
+ Provides-Extra: http
48
+ Provides-Extra: local
49
+ Requires-Dist: fastembed>=0.4; extra == "local"
50
+ Dynamic: license-file
51
+
1
52
  <p align="center">
2
53
  <img src="https://raw.githubusercontent.com/elara-labs/code-context-engine/main/docs/logo.svg" alt="Code Context Engine" width="140">
3
54
  </p>
@@ -8,6 +59,10 @@
8
59
  <strong>Index your codebase. AI searches instead of re-reading files.<br>94% token savings, reproducibly benchmarked.</strong>
9
60
  </p>
10
61
 
62
+ <p align="center">
63
+ <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>
64
+ </p>
65
+
11
66
  <br>
12
67
 
13
68
  <p align="center">
@@ -31,7 +86,8 @@
31
86
  <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
87
  <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
88
  <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>
89
+ <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;
90
+ <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
91
  </p>
36
92
 
37
93
  <p align="center">
@@ -93,6 +149,12 @@ cd /path/to/your/project
93
149
  cce init # index, install hooks, register MCP server
94
150
  ```
95
151
 
152
+ **Embedding backends:** CCE auto-detects the best available backend. If you have Ollama running, it uses `nomic-embed-text` with zero extra dependencies. For offline/local embedding without Ollama, install the `[local]` extra:
153
+
154
+ ```bash
155
+ uv tool install "code-context-engine[local]" # includes fastembed + ONNX Runtime
156
+ ```
157
+
96
158
  Restart your editor. Done. Every question now hits the index instead of re-reading files.
97
159
 
98
160
  `cce init` auto-detects your editor and writes the right config:
@@ -105,6 +167,7 @@ Restart your editor. Done. Every question now hits the index instead of re-readi
105
167
  | Gemini CLI | `.gemini/settings.json` | `GEMINI.md` |
106
168
  | OpenAI Codex | `~/.codex/config.toml` (user-global, per-project section) | |
107
169
  | OpenCode | `opencode.json` | |
170
+ | Tabnine | `.tabnine/agent/settings.json` | `TABNINE.md` |
108
171
 
109
172
  Multiple editors in the same project? All get configured in one command.
110
173
 
@@ -147,7 +210,9 @@ With CCE: context_search "payment flow" = 800 tokens
147
210
 
148
211
  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
212
 
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).
213
+ **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.
214
+
215
+ **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
216
 
152
217
  | Metric | Result |
153
218
  |--------|--------|
@@ -367,17 +432,18 @@ Tell Claude: "switch to max compression" or "turn off compression". Code blocks
367
432
 
368
433
  | Component | Size |
369
434
  |-----------|------|
370
- | Installed package | ~189 MB (ONNX Runtime is 66 MB of that) |
371
- | Embedding model (one-time download) | ~60 MB |
435
+ | Core install (Ollama backend) | ~17 MB |
436
+ | With `[local]` extra (fastembed + ONNX) | ~189 MB |
437
+ | Embedding model (one-time download) | ~60 MB (fastembed) or managed by Ollama |
372
438
  | Index per project (small/medium/large) | 5-60 MB |
373
439
 
374
- No GPU required. Embedding model runs on CPU via ONNX Runtime.
440
+ No GPU required. With Ollama, embeddings are handled by the Ollama server. With the `[local]` extra, the embedding model runs on CPU via ONNX Runtime.
375
441
 
376
442
  ---
377
443
 
378
444
  ## Supported Languages
379
445
 
380
- **AST-aware chunking (10 extensions):**
446
+ **AST-aware chunking (tree-sitter parsed, 10 extensions):**
381
447
 
382
448
  | Language | Extensions |
383
449
  |----------|-----------|
@@ -389,7 +455,20 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
389
455
  | Rust | `.rs` |
390
456
  | Java | `.java` |
391
457
 
392
- **Fallback chunking:** All other text files (Markdown, YAML, config, etc.) chunked by line range.
458
+ **Language-aware fallback chunking (40+ extensions):**
459
+
460
+ | Category | Languages |
461
+ |----------|-----------|
462
+ | Web | HTML, CSS, SCSS, LESS, Vue, Svelte |
463
+ | Systems | C, C++, C#, Zig, Nim |
464
+ | Mobile | Swift, Kotlin, Dart |
465
+ | Functional | Haskell, Scala, Clojure, Elixir, Erlang, F# |
466
+ | Scripting | Ruby, Perl, Lua, R, Bash/Zsh |
467
+ | Data/Config | JSON, YAML, TOML, XML, SQL, GraphQL, Protobuf |
468
+ | DevOps | Terraform, HCL, Dockerfile |
469
+ | Docs | Markdown |
470
+
471
+ All other text files are chunked by line range. Binary files are skipped.
393
472
 
394
473
  ---
395
474
 
@@ -397,12 +476,14 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
397
476
 
398
477
  | Page | Content |
399
478
  |------|---------|
479
+ | [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 |
480
+ | [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 |
481
+ | [Benchmark Deep Dive](https://elara-labs.github.io/code-context-engine/blog/benchmark-fastapi.html) | Full FastAPI benchmark methodology |
482
+ | [Comparison with Alternatives](https://elara-labs.github.io/code-context-engine/comparison.html) | CCE vs Cursor, Aider, Continue, Greptile |
400
483
  | [Examples](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Examples.md) | Real conversations with Claude |
401
484
  | [How It Works](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/How-It-Works.md) | Full 9-stage pipeline |
402
485
  | [CLI Reference](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/CLI-Reference.md) | Every command with output |
403
486
  | [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
487
 
407
488
  ---
408
489
 
@@ -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
@@ -1,7 +1,6 @@
1
1
  click>=8.1
2
2
  pyyaml>=6.0
3
3
  sqlite-vec>=0.1.6
4
- fastembed>=0.4
5
4
  numpy>=1.24
6
5
  tree-sitter>=0.22
7
6
  tree-sitter-python>=0.21
@@ -25,5 +24,9 @@ pytest-asyncio>=0.23
25
24
  pytest-aiohttp>=1.0
26
25
  pytest-cov>=5.0
27
26
  pytest-xdist>=3.5
27
+ ruff>=0.13
28
28
 
29
29
  [http]
30
+
31
+ [local]
32
+ fastembed>=0.4