java-codebase-rag 0.10.1__tar.gz → 0.10.2__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.
- {java_codebase_rag-0.10.1/src/java_codebase_rag.egg-info → java_codebase_rag-0.10.2}/PKG-INFO +1 -1
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/pyproject.toml +1 -1
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/mcp/mcp_v2.py +44 -9
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2/src/java_codebase_rag.egg-info}/PKG-INFO +1 -1
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/LICENSE +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/README.md +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/setup.cfg +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/__init__.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/_fdlimit.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/_stdio.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/_version.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/absence/__init__.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/absence/absence_diagnosis.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/absence/absence_types.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/absence/absence_vocab.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/analysis/__init__.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/analysis/pr_analysis.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/analysis/resolve_service.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/ast/__init__.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/ast/ast_java.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/ast/brownfield_events.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/ast/chunk_heuristics.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/cli.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/cli_format.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/cli_progress.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/config.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/graph/__init__.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/graph/build_ast_graph.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/graph/graph_enrich.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/graph/graph_types.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/graph/java_ontology.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/graph/ladybug_queries.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/graph/path_filtering.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/index/__init__.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/index/java_index_flow_lancedb.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/index/java_index_v1_common.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/install_data/__init__.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/install_data/agents/explorer-rag-cli.md +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/install_data/agents/explorer-rag-enhanced.md +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/install_data/skills/explore-codebase/SKILL.md +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/install_data/skills/explore-codebase-cli/SKILL.md +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/installer.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/jrag.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/jrag_envelope.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/jrag_hints.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/jrag_render.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/lance_optimize.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/mcp/__init__.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/mcp/mcp_hints.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/mcp/server.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/pipeline.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/progress.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/read_payloads.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/search/__init__.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/search/index_common.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/search/search_lancedb.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/search/search_lexical.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/search/search_scoring.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/watch/__init__.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/watch/client.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/watch/daemon.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/watch/lock.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/watch/paths.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/watch/protocol.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/watch/server.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/watch/warm.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/watch/watcher.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag.egg-info/SOURCES.txt +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag.egg-info/dependency_links.txt +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag.egg-info/entry_points.txt +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag.egg-info/requires.txt +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag.egg-info/top_level.txt +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/tests/test_config_watch.py +0 -0
- {java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/tests/test_docs_watch.py +0 -0
|
@@ -50,15 +50,49 @@ from java_codebase_rag.graph.ladybug_queries import LadybugGraph, OVERRIDE_AXIS_
|
|
|
50
50
|
from java_codebase_rag.mcp.mcp_hints import MCP_HINTS_STRUCTURED_FIELD_DESCRIPTION
|
|
51
51
|
|
|
52
52
|
# The vector stack (lancedb/torch, reached via search_lancedb) is optional — it is absent on
|
|
53
|
-
# graph-only installs (macOS Intel).
|
|
54
|
-
#
|
|
55
|
-
#
|
|
56
|
-
#
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
53
|
+
# graph-only installs (macOS Intel). It is imported LAZILY on the first ``search_v2`` call via
|
|
54
|
+
# ``_ensure_vector_backend``, NOT at module load. Reason: ``search_lancedb`` imports
|
|
55
|
+
# ``sentence_transformers``/``torch`` at its own top level (~2.8s), and the warm ``jrag watch``
|
|
56
|
+
# client reconstructs ``SearchOutput`` from this module (see ``watch/client._reconstruct``)
|
|
57
|
+
# without ever calling the vector backend — an eager import here would force every warm CLI
|
|
58
|
+
# read to pay that ~2.8s, masking the daemon's win.
|
|
59
|
+
#
|
|
60
|
+
# ``run_search`` uses a distinct ``_NOT_LOADED`` sentinel (not ``None``) for the unloaded state,
|
|
61
|
+
# so ``None`` unambiguously means "lexical/disabled". This lets tests force the lexical path by
|
|
62
|
+
# monkeypatching ``run_search=None`` (``_ensure_vector_backend`` treats that as authoritative and
|
|
63
|
+
# will not overwrite it), while a non-None monkeypatch drives the vector path. ``TABLES`` is
|
|
64
|
+
# ``{}`` until first successful load (only read in the vector path, where it is guaranteed set).
|
|
65
|
+
_NOT_LOADED = object()
|
|
66
|
+
run_search: Any = _NOT_LOADED
|
|
67
|
+
TABLES: dict = {}
|
|
68
|
+
_vector_backend_lock = threading.Lock()
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def _ensure_vector_backend() -> None:
|
|
72
|
+
"""Populate ``run_search``/``TABLES`` from ``search_lancedb`` on first use.
|
|
73
|
+
|
|
74
|
+
No-op once ``run_search`` has left the ``_NOT_LOADED`` state — real callable (vector path),
|
|
75
|
+
``None`` (graph-only install or a test-forced lexical mode), or a test monkeypatch.
|
|
76
|
+
Thread-safe (double-checked locking): the MCP server dispatches ``search_v2`` via
|
|
77
|
+
``asyncio.to_thread``, so two concurrent first-batch searches could otherwise race the
|
|
78
|
+
sentinel mutation. On ImportError (graph-only) ``run_search`` becomes ``None`` and
|
|
79
|
+
``search_v2`` takes the lexical fallback path. A non-ImportError propagates (caught by
|
|
80
|
+
``search_v2``'s outer handler) and leaves ``run_search`` as ``_NOT_LOADED`` so the next
|
|
81
|
+
call retries rather than poisoning the process.
|
|
82
|
+
"""
|
|
83
|
+
global run_search, TABLES
|
|
84
|
+
if run_search is not _NOT_LOADED:
|
|
85
|
+
return
|
|
86
|
+
with _vector_backend_lock:
|
|
87
|
+
if run_search is not _NOT_LOADED:
|
|
88
|
+
return
|
|
89
|
+
try:
|
|
90
|
+
from java_codebase_rag.search.search_lancedb import TABLES as _TABLES, run_search as _run_search
|
|
91
|
+
except ImportError: # graph-only install: no torch/lancedb — lexical fallback
|
|
92
|
+
run_search = None
|
|
93
|
+
else:
|
|
94
|
+
run_search = _run_search
|
|
95
|
+
TABLES = _TABLES
|
|
62
96
|
__all__ = [
|
|
63
97
|
"search_v2",
|
|
64
98
|
"find_v2",
|
|
@@ -913,6 +947,7 @@ def search_v2(
|
|
|
913
947
|
if nf and (err := _nodefilter_applicability_error("symbol", nf)):
|
|
914
948
|
_log_fail_loud("applicability")
|
|
915
949
|
return SearchOutput(success=False, message=err, advisories=[], limit=None, offset=None)
|
|
950
|
+
_ensure_vector_backend()
|
|
916
951
|
advisories: list[str] = []
|
|
917
952
|
lexical_mode = run_search is None
|
|
918
953
|
if lexical_mode:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/absence/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/absence/absence_types.py
RENAMED
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/absence/absence_vocab.py
RENAMED
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/analysis/__init__.py
RENAMED
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/analysis/pr_analysis.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/ast/brownfield_events.py
RENAMED
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/ast/chunk_heuristics.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/graph/__init__.py
RENAMED
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/graph/build_ast_graph.py
RENAMED
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/graph/graph_enrich.py
RENAMED
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/graph/graph_types.py
RENAMED
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/graph/java_ontology.py
RENAMED
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/graph/ladybug_queries.py
RENAMED
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/graph/path_filtering.py
RENAMED
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/index/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/install_data/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/jrag_envelope.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/lance_optimize.py
RENAMED
|
File without changes
|
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/mcp/mcp_hints.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/read_payloads.py
RENAMED
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/search/__init__.py
RENAMED
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/search/index_common.py
RENAMED
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/search/search_lancedb.py
RENAMED
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/search/search_lexical.py
RENAMED
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/search/search_scoring.py
RENAMED
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/watch/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/watch/protocol.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag/watch/watcher.py
RENAMED
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag.egg-info/requires.txt
RENAMED
|
File without changes
|
{java_codebase_rag-0.10.1 → java_codebase_rag-0.10.2}/src/java_codebase_rag.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|