code-context-control 2.53.0__py3-none-any.whl → 2.55.0__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.
- cli/c3.py +54 -17
- cli/commands/parser.py +1 -0
- cli/hub_server.py +4 -2
- cli/progress.py +49 -0
- {code_context_control-2.53.0.dist-info → code_context_control-2.55.0.dist-info}/METADATA +1 -1
- {code_context_control-2.53.0.dist-info → code_context_control-2.55.0.dist-info}/RECORD +20 -18
- oracle/services/chat_engine.py +161 -380
- services/claude_md.py +5 -4
- services/compressor.py +5 -13
- services/doc_index.py +21 -17
- services/embedding_index.py +49 -5
- services/indexer.py +58 -21
- services/protocol.py +37 -26
- services/scanner.py +155 -0
- services/session_manager.py +9 -4
- services/subprojects.py +3 -1
- {code_context_control-2.53.0.dist-info → code_context_control-2.55.0.dist-info}/WHEEL +0 -0
- {code_context_control-2.53.0.dist-info → code_context_control-2.55.0.dist-info}/entry_points.txt +0 -0
- {code_context_control-2.53.0.dist-info → code_context_control-2.55.0.dist-info}/licenses/LICENSE +0 -0
- {code_context_control-2.53.0.dist-info → code_context_control-2.55.0.dist-info}/top_level.txt +0 -0
cli/c3.py
CHANGED
|
@@ -92,7 +92,7 @@ console = Console() if HAS_RICH else None
|
|
|
92
92
|
# Config
|
|
93
93
|
CONFIG_DIR = ".c3"
|
|
94
94
|
CONFIG_FILE = ".c3/config.json"
|
|
95
|
-
__version__ = "2.
|
|
95
|
+
__version__ = "2.55.0"
|
|
96
96
|
|
|
97
97
|
|
|
98
98
|
def _command_deps() -> CommandDeps:
|
|
@@ -165,6 +165,7 @@ def _build_init_config(project_path: str) -> dict:
|
|
|
165
165
|
"project_path": project_path,
|
|
166
166
|
"version": __version__,
|
|
167
167
|
"index_auto_update": True,
|
|
168
|
+
"index_max_files": 2000,
|
|
168
169
|
"compression_mode": "smart",
|
|
169
170
|
"mcp": {"mode": "direct"},
|
|
170
171
|
"hybrid": deepcopy(HYBRID_DEFAULTS),
|
|
@@ -890,7 +891,7 @@ def _parse_cli_ide_arg(value: str) -> str:
|
|
|
890
891
|
return normalized
|
|
891
892
|
|
|
892
893
|
|
|
893
|
-
def _do_init(project_path: str, ide_name: str = None):
|
|
894
|
+
def _do_init(project_path: str, ide_name: str = None, no_embed: bool = False):
|
|
894
895
|
"""Run the core init steps (shared by new install and re-init after clear/reset)."""
|
|
895
896
|
config = _build_init_config(project_path)
|
|
896
897
|
save_config(config, project_path)
|
|
@@ -898,10 +899,27 @@ def _do_init(project_path: str, ide_name: str = None):
|
|
|
898
899
|
for subdir in _C3_INIT_SUBDIRS:
|
|
899
900
|
(Path(project_path) / CONFIG_DIR / subdir).mkdir(parents=True, exist_ok=True)
|
|
900
901
|
|
|
902
|
+
import time as _t
|
|
903
|
+
|
|
904
|
+
from cli.progress import ProgressLine
|
|
905
|
+
|
|
901
906
|
print("Building code index...")
|
|
907
|
+
_prog = ProgressLine()
|
|
908
|
+
_t0 = _t.perf_counter()
|
|
902
909
|
indexer = CodeIndex(project_path)
|
|
903
|
-
result = indexer.build_index(
|
|
904
|
-
|
|
910
|
+
result = indexer.build_index(
|
|
911
|
+
on_progress=lambda entries, files, chunks: _prog.update(
|
|
912
|
+
f" scanning: {entries:,} entries | {files:,} files | {chunks:,} chunks"))
|
|
913
|
+
_prog.done()
|
|
914
|
+
entries = result.get("entries_scanned", 0)
|
|
915
|
+
print(f" Indexed {result['files_indexed']} files, {result['chunks_created']} chunks "
|
|
916
|
+
f"in {_t.perf_counter() - _t0:.1f}s ({entries:,} entries scanned)")
|
|
917
|
+
capped = result.get("files_capped", 0)
|
|
918
|
+
if capped:
|
|
919
|
+
total = result["files_indexed"] + capped
|
|
920
|
+
print(f" [!] Indexed {result['files_indexed']} of {total} candidate files "
|
|
921
|
+
f"(cap: index_max_files={result.get('max_files')}).")
|
|
922
|
+
print(" Raise index_max_files in .c3/config.json for full coverage.")
|
|
905
923
|
|
|
906
924
|
# Build embedding index if Ollama is available (non-blocking on failure)
|
|
907
925
|
try:
|
|
@@ -912,13 +930,24 @@ def _do_init(project_path: str, ide_name: str = None):
|
|
|
912
930
|
ollama = OllamaClient(ollama_url)
|
|
913
931
|
embed_model = config.get("embed_model", "nomic-embed-text")
|
|
914
932
|
ei = EmbeddingIndex(project_path, ollama, embed_model=embed_model)
|
|
915
|
-
if
|
|
933
|
+
if no_embed:
|
|
934
|
+
print(" Embedding index skipped (--no-embed)")
|
|
935
|
+
elif ei.probe()["ready"]:
|
|
936
|
+
# probe() initializes the lazy backends; checking .ready on a
|
|
937
|
+
# fresh instance is always False and silently skipped the build.
|
|
916
938
|
print("Building embedding index...")
|
|
917
|
-
|
|
939
|
+
_t0 = _t.perf_counter()
|
|
940
|
+
_eprog = ProgressLine()
|
|
941
|
+
ei_result = ei.build(
|
|
942
|
+
indexer,
|
|
943
|
+
on_progress=lambda done, total, chunks: _eprog.update(
|
|
944
|
+
f" embedding: file {done}/{total} | {chunks:,} chunks"))
|
|
945
|
+
_eprog.done()
|
|
918
946
|
print(f" Embedded {ei_result.get('chunks_embedded', 0)} chunks "
|
|
919
|
-
f"({ei_result.get('files_processed', 0)} files)"
|
|
947
|
+
f"({ei_result.get('files_processed', 0)} files) "
|
|
948
|
+
f"in {_t.perf_counter() - _t0:.1f}s")
|
|
920
949
|
else:
|
|
921
|
-
print(" Embedding index skipped (
|
|
950
|
+
print(f" Embedding index skipped ({ei.unavailable_reason()})")
|
|
922
951
|
except Exception:
|
|
923
952
|
_log.debug("Embedding index build failed", exc_info=True)
|
|
924
953
|
|
|
@@ -926,15 +955,22 @@ def _do_init(project_path: str, ide_name: str = None):
|
|
|
926
955
|
try:
|
|
927
956
|
from services.doc_index import DocIndex
|
|
928
957
|
print("Building doc index...")
|
|
958
|
+
_t0 = _t.perf_counter()
|
|
959
|
+
_dprog = ProgressLine()
|
|
929
960
|
di = DocIndex(project_path)
|
|
930
|
-
di_result = di.build(
|
|
931
|
-
|
|
961
|
+
di_result = di.build(
|
|
962
|
+
on_progress=lambda done, total: _dprog.update(
|
|
963
|
+
f" docs: {done}/{total}"))
|
|
964
|
+
_dprog.done()
|
|
965
|
+
print(f" Indexed {di_result['docs_indexed']} docs, "
|
|
966
|
+
f"{di_result['chunks_created']} chunks in {_t.perf_counter() - _t0:.1f}s")
|
|
932
967
|
except Exception:
|
|
933
968
|
_log.debug("Doc index build failed", exc_info=True)
|
|
934
969
|
|
|
935
970
|
print("Building compression dictionary...")
|
|
936
971
|
protocol = CompressionProtocol(project_path)
|
|
937
|
-
|
|
972
|
+
# Mine the in-memory index instead of re-reading the whole tree.
|
|
973
|
+
new_terms = protocol.build_project_dictionary(code_index=indexer)
|
|
938
974
|
print(f" Added {len(new_terms)} project-specific terms")
|
|
939
975
|
|
|
940
976
|
from core.ide import detect_ide, load_ide_config
|
|
@@ -966,11 +1002,12 @@ def cmd_init(args):
|
|
|
966
1002
|
if requested_ide != "auto":
|
|
967
1003
|
requested_ide = normalize_ide_name(requested_ide)
|
|
968
1004
|
git_requested = getattr(args, "git", False)
|
|
1005
|
+
no_embed = bool(getattr(args, "no_embed", False))
|
|
969
1006
|
|
|
970
1007
|
# ── Brand-new install ──────────────────────────────────────
|
|
971
1008
|
if not c3_dir.exists() or not (c3_dir / "config.json").exists():
|
|
972
1009
|
print_header(f"Initializing C3 for: {project_path}")
|
|
973
|
-
_do_init(project_path, ide_name=requested_ide)
|
|
1010
|
+
_do_init(project_path, ide_name=requested_ide, no_embed=no_embed)
|
|
974
1011
|
try:
|
|
975
1012
|
from services.project_manager import ProjectManager
|
|
976
1013
|
ProjectManager().add_project(project_path)
|
|
@@ -1123,7 +1160,7 @@ def cmd_init(args):
|
|
|
1123
1160
|
ti_manifest = c3_dir / "transcript_index" / "manifest.json"
|
|
1124
1161
|
if ti_manifest.exists():
|
|
1125
1162
|
ti_manifest.write_text("{}", encoding="utf-8")
|
|
1126
|
-
_do_init(project_path, ide_name=requested_ide)
|
|
1163
|
+
_do_init(project_path, ide_name=requested_ide, no_embed=no_embed)
|
|
1127
1164
|
if git_requested:
|
|
1128
1165
|
_init_local_git_repo(project_path)
|
|
1129
1166
|
_run_install_mcp(project_path, requested_ide, mcp_mode=getattr(args, "mcp_mode", "direct"), banner="Updating MCP tools...")
|
|
@@ -1152,7 +1189,7 @@ def cmd_init(args):
|
|
|
1152
1189
|
# ── Non-interactive (--force) ──────────────────────────────
|
|
1153
1190
|
if getattr(args, "force", False):
|
|
1154
1191
|
print("\n[--force] Applying update...")
|
|
1155
|
-
_do_init(project_path, ide_name=requested_ide)
|
|
1192
|
+
_do_init(project_path, ide_name=requested_ide, no_embed=no_embed)
|
|
1156
1193
|
if git_requested:
|
|
1157
1194
|
_init_local_git_repo(project_path)
|
|
1158
1195
|
_run_install_mcp(project_path, requested_ide, mcp_mode=getattr(args, "mcp_mode", "direct"), banner="Updating MCP tools...")
|
|
@@ -1176,7 +1213,7 @@ def cmd_init(args):
|
|
|
1176
1213
|
|
|
1177
1214
|
if selected.startswith("Update"):
|
|
1178
1215
|
print()
|
|
1179
|
-
_do_init(project_path, ide_name=requested_ide)
|
|
1216
|
+
_do_init(project_path, ide_name=requested_ide, no_embed=no_embed)
|
|
1180
1217
|
if git_requested:
|
|
1181
1218
|
_init_local_git_repo(project_path)
|
|
1182
1219
|
_prompt_install_mcp(project_path, requested_ide, default_mode=getattr(args, "mcp_mode", "direct"), banner="Updating MCP tools...")
|
|
@@ -1192,7 +1229,7 @@ def cmd_init(args):
|
|
|
1192
1229
|
shutil.rmtree(target)
|
|
1193
1230
|
print(f" Removed .c3/{subdir}/")
|
|
1194
1231
|
print()
|
|
1195
|
-
_do_init(project_path, ide_name=requested_ide)
|
|
1232
|
+
_do_init(project_path, ide_name=requested_ide, no_embed=no_embed)
|
|
1196
1233
|
if git_requested:
|
|
1197
1234
|
_init_local_git_repo(project_path)
|
|
1198
1235
|
_prompt_install_mcp(project_path, requested_ide, default_mode=getattr(args, "mcp_mode", "direct"), banner="Updating MCP tools...")
|
|
@@ -1209,7 +1246,7 @@ def cmd_init(args):
|
|
|
1209
1246
|
shutil.rmtree(c3_dir)
|
|
1210
1247
|
print(" Deleted .c3/")
|
|
1211
1248
|
print()
|
|
1212
|
-
_do_init(project_path, ide_name=requested_ide)
|
|
1249
|
+
_do_init(project_path, ide_name=requested_ide, no_embed=no_embed)
|
|
1213
1250
|
if git_requested:
|
|
1214
1251
|
_init_local_git_repo(project_path)
|
|
1215
1252
|
_prompt_install_mcp(project_path, requested_ide, default_mode=getattr(args, "mcp_mode", "direct"), banner="Re-installing MCP tools...")
|
cli/commands/parser.py
CHANGED
|
@@ -24,6 +24,7 @@ def build_parser(version: str, parse_cli_ide_arg):
|
|
|
24
24
|
p_init.add_argument("--ide", default="auto", type=parse_cli_ide_arg, metavar="{auto,claude,vscode,cursor,codex,antigravity}", help="Target IDE for MCP config (default: auto-detect)")
|
|
25
25
|
p_init.add_argument("--mcp-mode", choices=["direct", "proxy"], default="direct", help="Default MCP mode if install is selected during init (default: direct)")
|
|
26
26
|
p_init.add_argument("--git", action="store_true", help="Initialize a local Git repository during init/update")
|
|
27
|
+
p_init.add_argument("--no-embed", action="store_true", help="Skip building the semantic embedding index during init")
|
|
27
28
|
p_init.add_argument("--permissions", choices=["read-only", "c3-strict", "standard", "permissive"], default=None, help="Apply Claude Code permission tier (Claude Code only, used with --force)")
|
|
28
29
|
p_init.add_argument("--include-mcp-wildcard", action="store_true", help="Add mcp__* wildcard so non-C3 MCP servers don't prompt per-call")
|
|
29
30
|
|
cli/hub_server.py
CHANGED
|
@@ -1027,8 +1027,10 @@ def api_run_component():
|
|
|
1027
1027
|
ollama = OllamaClient(ollama_url)
|
|
1028
1028
|
embed_model = cfg.get("embed_model", "nomic-embed-text")
|
|
1029
1029
|
ei = EmbeddingIndex(resolved, ollama, embed_model=embed_model)
|
|
1030
|
-
|
|
1031
|
-
|
|
1030
|
+
# probe() initializes lazy backends; a fresh instance's .ready
|
|
1031
|
+
# is always False and would skip the build unconditionally.
|
|
1032
|
+
if not ei.probe()["ready"]:
|
|
1033
|
+
return jsonify({"success": True, "output": f"Embedding index skipped ({ei.unavailable_reason()})."})
|
|
1032
1034
|
indexer = CodeIndex(resolved)
|
|
1033
1035
|
if not indexer.chunks:
|
|
1034
1036
|
indexer._load_index()
|
cli/progress.py
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Single-line TTY progress for long CLI phases (index/embedding builds).
|
|
3
|
+
|
|
4
|
+
Quiet when stdout is piped - CI logs and command substitutions see only
|
|
5
|
+
the final summary lines, never carriage-return spam.
|
|
6
|
+
"""
|
|
7
|
+
import sys
|
|
8
|
+
import time
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ProgressLine:
|
|
12
|
+
"""Rewrites one status line in place; time-throttled; TTY-only."""
|
|
13
|
+
|
|
14
|
+
def __init__(self, stream=None, min_interval: float = 0.1):
|
|
15
|
+
self.stream = stream if stream is not None else sys.stdout
|
|
16
|
+
self.min_interval = min_interval
|
|
17
|
+
self._last = 0.0
|
|
18
|
+
self._width = 0
|
|
19
|
+
try:
|
|
20
|
+
self._tty = bool(self.stream.isatty())
|
|
21
|
+
except Exception:
|
|
22
|
+
self._tty = False
|
|
23
|
+
|
|
24
|
+
def update(self, text: str) -> None:
|
|
25
|
+
if not self._tty:
|
|
26
|
+
return
|
|
27
|
+
now = time.monotonic()
|
|
28
|
+
if now - self._last < self.min_interval:
|
|
29
|
+
return
|
|
30
|
+
self._last = now
|
|
31
|
+
pad = ' ' * max(0, self._width - len(text))
|
|
32
|
+
try:
|
|
33
|
+
self.stream.write('\r' + text + pad)
|
|
34
|
+
self.stream.flush()
|
|
35
|
+
except Exception:
|
|
36
|
+
self._tty = False
|
|
37
|
+
return
|
|
38
|
+
self._width = len(text)
|
|
39
|
+
|
|
40
|
+
def done(self) -> None:
|
|
41
|
+
"""Clear the in-place line so the following prints start clean."""
|
|
42
|
+
if not self._tty or not self._width:
|
|
43
|
+
return
|
|
44
|
+
try:
|
|
45
|
+
self.stream.write('\r' + ' ' * self._width + '\r')
|
|
46
|
+
self.stream.flush()
|
|
47
|
+
except Exception:
|
|
48
|
+
pass
|
|
49
|
+
self._width = 0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-context-control
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.55.0
|
|
4
4
|
Summary: Local code-intelligence layer for AI coding tools (Claude Code, Codex, Copilot, Cursor, Antigravity). Retrieve less, read less, edit safer — and version the configs that shape your agent (CLAUDE.md, skills, hooks, MCP).
|
|
5
5
|
Author-email: Dimitri Tselenchuk <dtselenc@gmail.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
cli/__init__.py,sha256=ec66drCZGNMRU4V6ov0zVhYZph1us12Vn8OvG_LJyRY,22
|
|
2
2
|
cli/_hook_utils.py,sha256=tJ4ZmXD5Y-JjFWb0uoR7ycYklYFUMnnjF2G7BO-wyBI,12600
|
|
3
|
-
cli/c3.py,sha256=
|
|
3
|
+
cli/c3.py,sha256=vH0SuIP9w6imPbFVi8y-veKrAKfNYrYC0KYiA8ydb54,309220
|
|
4
4
|
cli/docs.html,sha256=bNymSz7LatnWHjxSXL92QSUtGvB3jBzNHbOV-bRpAOo,142507
|
|
5
5
|
cli/edits.html,sha256=UjAhoCmBmQ89cklGvJqzC6eyNP2tc8H6T-e01DVkLvE,43418
|
|
6
6
|
cli/hook_artifact.py,sha256=Se1CNBfoBFyvJQlRmYdNtdRXIkQp9zaF0O6ndRMo7ts,2198
|
|
@@ -18,17 +18,18 @@ cli/hook_read.py,sha256=ZWZldgqGSNz78COhlgETQ7yxdOW5vWIIHUet9gZKhxk,8176
|
|
|
18
18
|
cli/hook_session_stats.py,sha256=hZiX0r1SLOstu1PXvygWae0cIqHCcC3mb0SbFL6nCic,2083
|
|
19
19
|
cli/hook_terse_advisor.py,sha256=W_zaTfX2akgX-ifuUTsLu2H1atM8XmWt6jpPoeU7Pm0,6252
|
|
20
20
|
cli/hub.html,sha256=Hl-XPZGT1mMiKrbX9c5OsEw6mXEumwIB3vp1WlWaplM,183966
|
|
21
|
-
cli/hub_server.py,sha256=
|
|
21
|
+
cli/hub_server.py,sha256=5y6jIs2qaz5HoBdLXBl2yPtqIZ2VM17rJ4bWUOfUcSs,105443
|
|
22
22
|
cli/hub_ui.html,sha256=nnGqWhWGCLfNisGUnoAlQFcBr6wPNsq-AEOR7uFtVkE,2942
|
|
23
23
|
cli/mcp_proxy.py,sha256=92htuT-p0j-cDTbyqlIJpGoQ85_Aw7UuB8L_Toi_u20,17511
|
|
24
24
|
cli/mcp_server.py,sha256=YgzI2U1jW-ax9HCCVUwXeikMHDMlS4Qq-RdhnQuTvt4,40898
|
|
25
|
+
cli/progress.py,sha256=qTkNy0howOD3hXraMo4ok3dYTpBW5yG_tenKfF4UDM0,1470
|
|
25
26
|
cli/server.py,sha256=WOEPgptkJSVtS25IwrPdOMdbKOh79Sm6-vdQlTOk-sA,136012
|
|
26
27
|
cli/ui.html,sha256=xcdt74nlFEXx-0Bx6-Okw-WSVZPAXL0iukxU0ytI6CA,5694
|
|
27
28
|
cli/ui_legacy.html,sha256=cI8tC6RKmE2NIJOcsu7CY-zT4VznjcbD6NTjxb_fvUY,378460
|
|
28
29
|
cli/ui_nano.html,sha256=UAwQ6bbTOXAoGq191AZ7slhngR9edJSa3IhqpynveDg,27740
|
|
29
30
|
cli/commands/__init__.py,sha256=0Z8MABNzwSFJGT4Xv9R5AJVR8XxraTsuVTz5b0bShmo,38
|
|
30
31
|
cli/commands/common.py,sha256=fHZWzkd4OLl3vPWTTgaI5vaqMi3Ma3XqAu1Ds_-51_4,11299
|
|
31
|
-
cli/commands/parser.py,sha256=
|
|
32
|
+
cli/commands/parser.py,sha256=0ym7T3xjsQPhj2jm0_aUHCQGx6Whcp1m50gH5JDSFHw,25611
|
|
32
33
|
cli/guide/bitbucket.html,sha256=9vN1VPLmvTLrkqDSrqKmuy7z3BHEmQusY1jkAG0FjnI,33477
|
|
33
34
|
cli/guide/getting-started.html,sha256=5iS-_iAP1PboU9pFbMsfh8C9Du9usqOfIyawOc-X4Hg,19070
|
|
34
35
|
cli/guide/index.html,sha256=mUDUBX590TTappvrKT7_eXi0P8G-3YvHjGk9pCcwWzQ,21350
|
|
@@ -94,7 +95,7 @@ cli/ui/components/sessions.js,sha256=FIKtil76B8tCkAmcFV7hlj6GQ_DCJK2jCzvEmdK7NBE
|
|
|
94
95
|
cli/ui/components/settings.js,sha256=ATbAjBlVIwCNpxq7s191b49a_INQV38iwmySqtJLYwY,79066
|
|
95
96
|
cli/ui/components/sidebar.js,sha256=cAY_jwYB-o1X_wWn__VXlG4IegVObuE3NmVsuFWqxtg,7417
|
|
96
97
|
cli/ui/components/tasks.js,sha256=vyKQ3uwoppMwvdEaHlhWXW4oWcAisx4NveqzMhsYqHo,38438
|
|
97
|
-
code_context_control-2.
|
|
98
|
+
code_context_control-2.55.0.dist-info/licenses/LICENSE,sha256=l8Kh5QCNWNvR6kIt8L0BUZvc2LAFiHv2c-FnsGnUZf4,11301
|
|
98
99
|
core/__init__.py,sha256=TSDCEcM4V7gcZVM3w2ykJaqEUch4Dkon-rivV17T73s,2501
|
|
99
100
|
core/config.py,sha256=NUU1DuespWRotlJsv59CNnLiWTR4Bc7ysmD1UFA76RE,16429
|
|
100
101
|
core/ide.py,sha256=V6VVMVsFdmmcsMyxikjQp7z9xa42CWiHKS-ya-MAcG4,6172
|
|
@@ -109,7 +110,7 @@ oracle/services/__init__.py,sha256=Nb4POd1_YIwLVYsGfr-DiK-iKTelkU0fh9m7wjeLQHA,2
|
|
|
109
110
|
oracle/services/activity_reporter.py,sha256=ZAxNFyUy7QRP28anQLRbKEwm5SGG97KIQYFQDLjYqlM,11729
|
|
110
111
|
oracle/services/api_auth.py,sha256=1PW3pG--1DJb_F6qMhP3gBTYHxxPE2bsHmVmIhC81Y8,3566
|
|
111
112
|
oracle/services/c3_bridge.py,sha256=RqSw1tOoUDXA21fKDHmZ7s7qrIj3jiDYq8j8OvbxshA,17919
|
|
112
|
-
oracle/services/chat_engine.py,sha256=
|
|
113
|
+
oracle/services/chat_engine.py,sha256=zvjyFsXGwqRHsvggBwQ6L0hcOovQe0AKyOy2ZdOU0No,55974
|
|
113
114
|
oracle/services/chat_store.py,sha256=mizKwDyFGESKh63V-XgyNd3jQVrN2JCQc-7u8z3_1F4,6252
|
|
114
115
|
oracle/services/cross_memory.py,sha256=F8JeYkEFSwQL3iGS9KV1onaMSFj3opr6f3nCxwvznV0,5484
|
|
115
116
|
oracle/services/federated_graph.py,sha256=I9FWedcht6-FU2hoIlMHlXyjpwrspKueIN-jEYek6vg,19947
|
|
@@ -151,21 +152,21 @@ services/benchmark_dashboard.py,sha256=iR-DnqnoKbqHMJ4d-ZkIvJBYfzwTa7r-jzO6j2BYD
|
|
|
151
152
|
services/bitbucket_client.py,sha256=JByovvtVZ6F4NcU611KVuTgKlT1rIsX2A2VlBDfvRV8,17509
|
|
152
153
|
services/bitbucket_credentials.py,sha256=2qLA9pQMol4y95y4DJMNBsBBPUsJQCKbLFo2iiCnfvI,7364
|
|
153
154
|
services/circuit_breaker.py,sha256=ES6PpjL40gfDhtK88GeS6GFzsz5EOEEkZsB-DzX_tbw,3179
|
|
154
|
-
services/claude_md.py,sha256
|
|
155
|
-
services/compressor.py,sha256=
|
|
155
|
+
services/claude_md.py,sha256=-OwAv8cQRY8_i6tSsK5X-9rayZSJN_rrZMMjqJf3oEM,42728
|
|
156
|
+
services/compressor.py,sha256=AK31TqHFpkOD_Lqbp9aEOkOx7zENUwpsQHQ9B2imEHo,33081
|
|
156
157
|
services/context_snapshot.py,sha256=2f_bxY3xX4ZC653ncYno8YSeSTFSavwBjrorytHA0Ns,16879
|
|
157
158
|
services/conversation_store.py,sha256=-E2H6f9pMSOHiBjsq7tFUjrFAwWYExf7LJkibi5MRMA,35650
|
|
158
|
-
services/doc_index.py,sha256=
|
|
159
|
+
services/doc_index.py,sha256=ZEQD1kyGCAMm9AY4Kpi1zDWJTul-cAcAdi_4Md43Hpw,19205
|
|
159
160
|
services/e2e_benchmark.py,sha256=4pDXkOFjq5b2ZwDvMK0CWdUXQli5OE4cOh_OJs7W36c,132970
|
|
160
161
|
services/e2e_evaluator.py,sha256=FsB4vMzcFUcmicfIwRtA8JZ_XeMpuk2_-86F2iVNEDc,17783
|
|
161
162
|
services/e2e_tasks.py,sha256=Ln5VbGDIcS3NY3aml5ERbgjfjLxEslmRZ8AyaYxpWEo,34524
|
|
162
163
|
services/edit_ledger.py,sha256=LbFDAnqAWKXsc5pUdJ8zSk5-1MNUwJduK3MO8_HUm5E,29018
|
|
163
|
-
services/embedding_index.py,sha256
|
|
164
|
+
services/embedding_index.py,sha256=WVAmQkpvwbu2GaQfg4iPWyWiW8zQNN0ldQAo9ibsyBc,15908
|
|
164
165
|
services/error_reporting.py,sha256=HZ3ru8i5RLf8nq2R4iRnTs5sm1blUxknSbv5hdxuxs0,4139
|
|
165
166
|
services/file_memory.py,sha256=ero1EY_42z0ORzZaOyvRK7Pc_OYxvgijf4BaKhEBPuY,34241
|
|
166
167
|
services/git_context.py,sha256=FFdA8Y46op4DYsUnZsXLTqxIjgxb0q_d-hkFTbosC8Q,9518
|
|
167
168
|
services/hub_service.py,sha256=Ta2ExJP1sePxb7zcHooroYXJKsylm5Ea8vQvts6-cAw,21876
|
|
168
|
-
services/indexer.py,sha256=
|
|
169
|
+
services/indexer.py,sha256=00y47xufHFEotljPDH4RBbWcqAHmCpTouafiggGcP7I,29511
|
|
169
170
|
services/memory.py,sha256=UxlZ3BwYfTlq6Rlj5RPhNOw42bds-dSe5KAdA4TXBLE,13150
|
|
170
171
|
services/memory_consolidator.py,sha256=hHMps-01cbbHSI-A1LEKCo3k2PoLOa8a7-vyYEf8DUs,19679
|
|
171
172
|
services/memory_distiller.py,sha256=-07rtR3XhiZqKCUCFOcuAktfTJIbtcNqMj7rM35WXKg,26081
|
|
@@ -182,16 +183,17 @@ services/output_filter.py,sha256=lknQHs38JlRtXU4Ogoru6sveNokSKBQPfZXhf-fE0xM,217
|
|
|
182
183
|
services/parser.py,sha256=CPoIN1FmX7kK-55FnC3jvRy3NLjlnf1armTaD6o7GBg,55203
|
|
183
184
|
services/project_manager.py,sha256=LaNWqBeVMx6wcB6iiOQyRWSWhS-JXzfDApJmHFmTCy8,36477
|
|
184
185
|
services/project_runtime.py,sha256=yyftX48BFjq4B2KcR4KGszDAAa4xR6gn6j0SgTyro1s,11603
|
|
185
|
-
services/protocol.py,sha256=
|
|
186
|
+
services/protocol.py,sha256=XyUGjTHD9Zouw94IEqwH667pQ1TlroleLzlM3GRlEGk,12843
|
|
186
187
|
services/proxy_state.py,sha256=u5rd0k6CrOsywZA8FpRu_hMLwhR0TAJhZjy5MdWbCGc,6107
|
|
187
188
|
services/retention.py,sha256=I2_RV233kWBBXox5rc_w-1h1aPua93o9huuPf-pJVuE,18629
|
|
188
189
|
services/retrieval_broker.py,sha256=9X67VZ_6AkbAzopHuuMFKmP4CGZLnW576kjSKMenBnw,5261
|
|
189
190
|
services/router.py,sha256=Cz10nx2fKTbaGn14mSBePWIDrw5rdcs_1JFYXeik084,15626
|
|
190
191
|
services/runtime.py,sha256=b79gN0dFlzBO4rPaUMWier8FZFamMZlwIM3aywLmbB4,12840
|
|
192
|
+
services/scanner.py,sha256=1wnsH6WAoarf4L0MskRb8CBfjaF0pPw6ZYDX_4y2q3A,5985
|
|
191
193
|
services/session_benchmark.py,sha256=GX3H8OwKC0X9Kk5U-vfY6Y7qq9Qaz2HwadNA7mjO8RY,105047
|
|
192
|
-
services/session_manager.py,sha256=
|
|
194
|
+
services/session_manager.py,sha256=cVsL45nfkAZ5P-elwLMBoesQ9QGwZsCl4ND3tQJXMMI,51838
|
|
193
195
|
services/session_preloader.py,sha256=DsTAXMKVtrX9yu1sEFojYDi9-jkSAj1Ylt9JTy57Dow,9883
|
|
194
|
-
services/subprojects.py,sha256=
|
|
196
|
+
services/subprojects.py,sha256=KNA-qGVPsd7Tg92Pt_kLWMLyER2YHmdQWO44sOelTIg,25123
|
|
195
197
|
services/task_store.py,sha256=IHNeLipdyWtbWYu2-3ItIDeSDI9WoMKj6YwPPc1TgW0,46487
|
|
196
198
|
services/telemetry.py,sha256=KbWCe7F8lGY9DufVPWGyGFo-IBcPgWh0kd3ySJnIgFE,11377
|
|
197
199
|
services/text_index.py,sha256=r3o4CobTG9jAO9PWazgbWYLY9oi_FgEJ3xwEXrF4KM0,2783
|
|
@@ -224,8 +226,8 @@ tui/screens/search_view.py,sha256=MMHjVdlk3HZSuDBSvq8IGrqv_Mh5Us6YqXQ80bcWSMk,19
|
|
|
224
226
|
tui/screens/session_view.py,sha256=eZ1eDwHTvPOck1wCCviixtOaCxIkBT_95ytNNNriGNA,5991
|
|
225
227
|
tui/screens/stats.py,sha256=p81PjzdaIv7hllb8f45-rlVe4lJZwSdIMqu7e86_u5s,6223
|
|
226
228
|
tui/screens/ui_view.py,sha256=1QJCgLh2YfgWIpvzRG1KOGXYEaOYX6ojN61Azjf2oX0,2125
|
|
227
|
-
code_context_control-2.
|
|
228
|
-
code_context_control-2.
|
|
229
|
-
code_context_control-2.
|
|
230
|
-
code_context_control-2.
|
|
231
|
-
code_context_control-2.
|
|
229
|
+
code_context_control-2.55.0.dist-info/METADATA,sha256=t426vjB6vV4mHLBpU55F_4GZtuKXvIRZ-yLYqTsVGc8,24759
|
|
230
|
+
code_context_control-2.55.0.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
|
|
231
|
+
code_context_control-2.55.0.dist-info/entry_points.txt,sha256=7kX_WUsDCF2hbXzvbNyscyaBb9AeA-DJY5v_5hN0DlU,93
|
|
232
|
+
code_context_control-2.55.0.dist-info/top_level.txt,sha256=wRt41zBybVF3qAiNXHz9BURbkKvUvfhmWWtKMhaw6eE,29
|
|
233
|
+
code_context_control-2.55.0.dist-info/RECORD,,
|