code-context-engine 0.4.7__py3-none-any.whl → 0.4.9__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-context-engine
3
- Version: 0.4.7
3
+ Version: 0.4.9
4
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, and Codex.
5
5
  Author-email: Fazle Elahee <felahee@gmail.com>, Raj <rajkumar.sakti@gmail.com>
6
6
  License-Expression: MIT
@@ -61,6 +61,9 @@ Dynamic: license-file
61
61
  <a href="https://github.com/elara-labs/code-context-engine/actions/workflows/ci.yml"><img src="https://github.com/elara-labs/code-context-engine/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
62
62
  <a href="https://pypi.org/project/code-context-engine/"><img src="https://img.shields.io/pypi/v/code-context-engine?color=blue&label=PyPI" alt="PyPI"></a>
63
63
  <a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.11+-blue.svg" alt="Python 3.11+"></a>
64
+ <img src="https://img.shields.io/badge/macOS-000000?logo=apple&logoColor=white" alt="macOS">
65
+ <img src="https://img.shields.io/badge/Linux-FCC624?logo=linux&logoColor=black" alt="Linux">
66
+ <img src="https://img.shields.io/badge/Windows-0078D6?logo=windows&logoColor=white" alt="Windows">
64
67
  <a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-compatible-green.svg" alt="MCP Compatible"></a>
65
68
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="MIT License"></a>
66
69
  <a href="https://github.com/elara-labs/code-context-engine"><img src="https://img.shields.io/github/stars/elara-labs/code-context-engine?style=social" alt="Stars"></a>
@@ -91,11 +94,17 @@ Dynamic: license-file
91
94
 
92
95
  ## System requirements
93
96
 
94
- - Python 3.11+
97
+ - Python 3.11+ (tested on 3.11, 3.12, 3.13)
95
98
  - A C compiler and `cmake` (needed to build tree-sitter grammars)
96
- - **macOS:** `xcode-select --install`
97
- - **Ubuntu/Debian:** `sudo apt install build-essential cmake`
98
- - **Windows:** Visual Studio Build Tools (C++ workload)
99
+
100
+ | Platform | Setup |
101
+ |----------|-------|
102
+ | **macOS** | `xcode-select --install` (provides compiler and cmake) |
103
+ | **Ubuntu/Debian** | `sudo apt install build-essential cmake` |
104
+ | **Fedora/RHEL** | `sudo dnf install gcc gcc-c++ cmake` |
105
+ | **Windows** | Install [Visual Studio Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) (C++ workload) and [CMake](https://cmake.org/download/) |
106
+
107
+ Tested on all three platforms in CI (macOS, Linux, Windows × Python 3.11/3.12/3.13).
99
108
 
100
109
  ## Install and see savings in 60 seconds
101
110
 
@@ -1,6 +1,6 @@
1
- code_context_engine-0.4.7.dist-info/licenses/LICENSE,sha256=vLbw0GGCVJSIRppMus7Oq0PyMDhDXz-dfvz2rPpWtjQ,1069
1
+ code_context_engine-0.4.9.dist-info/licenses/LICENSE,sha256=vLbw0GGCVJSIRppMus7Oq0PyMDhDXz-dfvz2rPpWtjQ,1069
2
2
  context_engine/__init__.py,sha256=qThGxB7xfZi5M9jDpUno0MKBp7KKrEOdH1hG4wHMuLc,193
3
- context_engine/cli.py,sha256=3m4UHGkURqlhnyr6AslU7fuansvD6TMR2VDrPjd0Yhc,113375
3
+ context_engine/cli.py,sha256=gALUIyDu0rUSLHSqqsD1tm3s4XCO9q4LuwBnCNoGT8g,113468
4
4
  context_engine/cli_style.py,sha256=a3l3Smq1gIN2asbNalFUz0i_5x7Tmkp_wEhyGMoo8a4,2460
5
5
  context_engine/config.py,sha256=2pCe-nJbB1IgrFwT3iMOmUSZMaaH2IBamm867CULdnY,7129
6
6
  context_engine/editors.py,sha256=LT_WdYwyB1EeH1xsB6DDtJlbGMKXOTIVSOWXOOfXh1U,8970
@@ -18,7 +18,7 @@ context_engine/compression/output_rules.py,sha256=M68k2BnQ64mPBjj0nX2EjQl0vizQf3
18
18
  context_engine/compression/prompts.py,sha256=jZnpqhr77uI9R3S0vm3Dj17JYy03AXq24E6HQTPXy-A,711
19
19
  context_engine/compression/quality.py,sha256=F6fyxDdWjq-Hgtw4xFIaE4BqPoJw1W1EQSn3RXDgdHc,1676
20
20
  context_engine/dashboard/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
- context_engine/dashboard/_page.py,sha256=EdFBGlrL-6j3XVpi-TViFJjUHzMvTorH4CDos8w-oMI,70579
21
+ context_engine/dashboard/_page.py,sha256=2LOz6GxVFHdNyd6iGV-u6sbwCnTrw2p_cVUY-LyZEWU,70600
22
22
  context_engine/dashboard/server.py,sha256=N-QVaDCUL1h70QUgKrIy6QhQIedasf0KYHcV5LACZ0U,17437
23
23
  context_engine/indexer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
24
  context_engine/indexer/chunker.py,sha256=f0n7gJughdHP1fmMd1sbHAxLmVlCnIq6scHOeGFmBS8,6503
@@ -34,7 +34,7 @@ context_engine/indexer/watcher.py,sha256=uILU_29M7J4VNv94nEQL7KKVyWSNee6JCA7lzXt
34
34
  context_engine/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
35
  context_engine/integration/bootstrap.py,sha256=nD7brJXAgEgO6MTtIu6rui-DlewS9hzpVga55_bRhZs,3272
36
36
  context_engine/integration/git_context.py,sha256=nAUOh1w7IU2Ph6MWbnfhSEnZ99-hRP424X0Ziy3aW3Q,4252
37
- context_engine/integration/mcp_server.py,sha256=rcBwwn_UOTzRggjzEMVsW9XptALFkyV9XS9Z6gNeyjU,80116
37
+ context_engine/integration/mcp_server.py,sha256=uiPZ6jRwEOZSfbquGrEECZw_06kofaHJ7Wmx44PaRj4,80225
38
38
  context_engine/integration/session_capture.py,sha256=azc0I2PoQQ-0gsmTFy254na_Ez3ADHJ5IdOKU5oFIEU,12440
39
39
  context_engine/memory/__init__.py,sha256=-mzH2HLbjF6mlyzlt0IZoezDPLHBTJmIXFlsn8cjeQA,299
40
40
  context_engine/memory/compressor.py,sha256=qSXPE67dTNnhf7M5lKpIetpa-s0rpoa22AQljQRv52Q,13257
@@ -56,8 +56,8 @@ context_engine/storage/graph_store.py,sha256=mftuJFvlkFeBlzMsQorY5YS4l5wsDUxCMw5
56
56
  context_engine/storage/local_backend.py,sha256=5MVoAn6Jkiltho-9BjClisLkyXMkSZZc2Z_h3N7Vfcg,4200
57
57
  context_engine/storage/remote_backend.py,sha256=u77lnGIvqrL3PwInjT6nfRgyNn6oVxW92KUK66oWrvI,5504
58
58
  context_engine/storage/vector_store.py,sha256=tA0ol_v5B2KRNMt2hE2kI4qnYe_AoYP_HSp1MvzcsFU,14704
59
- code_context_engine-0.4.7.dist-info/METADATA,sha256=y1s4obqropdElXBz-hOgndbJNzVPyIltX4bq4VaC9Yo,18507
60
- code_context_engine-0.4.7.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
61
- code_context_engine-0.4.7.dist-info/entry_points.txt,sha256=DQuRWUuVFM7nPcXtDmJzlem7QA0IboD_4N8AnTtDD9Q,144
62
- code_context_engine-0.4.7.dist-info/top_level.txt,sha256=X1-RUqb61WXBjy3JjsW2oXwfvqk2ydXKDNidxmw4CZ4,15
63
- code_context_engine-0.4.7.dist-info/RECORD,,
59
+ code_context_engine-0.4.9.dist-info/METADATA,sha256=tniZIYdEE8b87x-lmx8feDMEwp_plrVH4vdbqfK2CGs,19160
60
+ code_context_engine-0.4.9.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
61
+ code_context_engine-0.4.9.dist-info/entry_points.txt,sha256=DQuRWUuVFM7nPcXtDmJzlem7QA0IboD_4N8AnTtDD9Q,144
62
+ code_context_engine-0.4.9.dist-info/top_level.txt,sha256=X1-RUqb61WXBjy3JjsW2oXwfvqk2ydXKDNidxmw4CZ4,15
63
+ code_context_engine-0.4.9.dist-info/RECORD,,
context_engine/cli.py CHANGED
@@ -445,7 +445,8 @@ def _show_welcome_banner(config) -> None:
445
445
  if queries > 0:
446
446
  left_lines.append(f" {G}●{R} Savings {GB}{saved_pct}%{R} over {C}{queries}{R} queries")
447
447
  elif full_file > 0:
448
- left_lines.append(f" {D}○ Savings no queries yet{R}")
448
+ left_lines.append(f" {D}○ Savings waiting for first search{R}")
449
+ left_lines.append(f" {D}stats update after context_search calls{R}")
449
450
  else:
450
451
  left_lines.append(f" {Y}○ Not indexed{R}")
451
452
  left_lines.append(f" {D}run: cce init{R}")
@@ -1229,7 +1229,7 @@ async function loadOverviewPanels() {
1229
1229
  );
1230
1230
  } else {
1231
1231
  document.getElementById('chart-token-savings').innerHTML =
1232
- '<div class="empty"><span class="empty-title">No queries yet</span><span class="empty-hint">Run context_search via MCP to start tracking</span></div>';
1232
+ '<div class="empty"><span class="empty-title">Waiting for first search</span><span class="empty-hint">Stats populate automatically after context_search calls</span></div>';
1233
1233
  }
1234
1234
 
1235
1235
  // ── File Health Donut ──
@@ -1355,7 +1355,10 @@ class ContextEngineMCP:
1355
1355
  f"({saved:,} saved, {pct}%)"
1356
1356
  )
1357
1357
  else:
1358
- status_parts.append("Token savings: no queries recorded yet")
1358
+ status_parts.append(
1359
+ "Token savings: waiting for first context_search call. "
1360
+ "Stats populate automatically after searches."
1361
+ )
1359
1362
  return [TextContent(type="text", text="\n".join(status_parts))]
1360
1363
 
1361
1364
  async def _handle_reindex(self, args):