java-codebase-rag 0.9.5__tar.gz → 0.9.7__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.9.5 → java_codebase_rag-0.9.7}/PKG-INFO +1 -1
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7}/pyproject.toml +4 -29
- java_codebase_rag-0.9.7/src/java_codebase_rag/absence/__init__.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/absence}/absence_diagnosis.py +4 -4
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/absence}/absence_types.py +1 -1
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/absence}/absence_vocab.py +11 -6
- java_codebase_rag-0.9.7/src/java_codebase_rag/analysis/__init__.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/analysis}/pr_analysis.py +1 -1
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/analysis}/resolve_service.py +7 -7
- java_codebase_rag-0.9.7/src/java_codebase_rag/ast/__init__.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/ast}/ast_java.py +4 -4
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag/cli.py +12 -12
- java_codebase_rag-0.9.7/src/java_codebase_rag/graph/__init__.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/graph}/build_ast_graph.py +6 -6
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/graph}/graph_enrich.py +3 -3
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/graph}/graph_types.py +2 -2
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/graph}/java_ontology.py +1 -1
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/graph}/ladybug_queries.py +2 -2
- java_codebase_rag-0.9.7/src/java_codebase_rag/index/__init__.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/index}/java_index_flow_lancedb.py +4 -4
- java_codebase_rag-0.9.7/src/java_codebase_rag/install_data/__init__.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag/jrag.py +18 -18
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag/jrag_envelope.py +17 -4
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag/jrag_hints.py +1 -1
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag/jrag_render.py +1 -1
- java_codebase_rag-0.9.7/src/java_codebase_rag/mcp/__init__.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/mcp}/mcp_hints.py +1 -1
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/mcp}/mcp_v2.py +26 -12
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/mcp}/server.py +40 -23
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag/pipeline.py +15 -6
- java_codebase_rag-0.9.7/src/java_codebase_rag/search/__init__.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/search}/search_lancedb.py +4 -4
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/search}/search_lexical.py +3 -3
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag.egg-info/PKG-INFO +1 -1
- java_codebase_rag-0.9.7/src/java_codebase_rag.egg-info/SOURCES.txt +60 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag.egg-info/entry_points.txt +1 -1
- java_codebase_rag-0.9.7/src/java_codebase_rag.egg-info/top_level.txt +1 -0
- java_codebase_rag-0.9.5/java_codebase_rag.egg-info/SOURCES.txt +0 -133
- java_codebase_rag-0.9.5/java_codebase_rag.egg-info/top_level.txt +0 -24
- java_codebase_rag-0.9.5/tests/test_absence_diagnosis.py +0 -615
- java_codebase_rag-0.9.5/tests/test_absence_mcp_integration.py +0 -218
- java_codebase_rag-0.9.5/tests/test_absence_types.py +0 -240
- java_codebase_rag-0.9.5/tests/test_absence_vocab.py +0 -375
- java_codebase_rag-0.9.5/tests/test_agent_skills_static.py +0 -279
- java_codebase_rag-0.9.5/tests/test_assign_endpoint_client_extraction.py +0 -198
- java_codebase_rag-0.9.5/tests/test_ast_graph_build.py +0 -707
- java_codebase_rag-0.9.5/tests/test_ast_java_calls.py +0 -351
- java_codebase_rag-0.9.5/tests/test_ast_java_capabilities.py +0 -150
- java_codebase_rag-0.9.5/tests/test_ast_java_thread_safety.py +0 -66
- java_codebase_rag-0.9.5/tests/test_bank_chat_brownfield_integration.py +0 -95
- java_codebase_rag-0.9.5/tests/test_brownfield_clients.py +0 -374
- java_codebase_rag-0.9.5/tests/test_brownfield_events.py +0 -56
- java_codebase_rag-0.9.5/tests/test_brownfield_overrides.py +0 -592
- java_codebase_rag-0.9.5/tests/test_brownfield_routes.py +0 -344
- java_codebase_rag-0.9.5/tests/test_call_edge_matching.py +0 -121
- java_codebase_rag-0.9.5/tests/test_call_edges_e2e.py +0 -209
- java_codebase_rag-0.9.5/tests/test_call_graph_receiver_resolution.py +0 -159
- java_codebase_rag-0.9.5/tests/test_call_graph_smoke_roundtrip.py +0 -366
- java_codebase_rag-0.9.5/tests/test_call_invariant.py +0 -34
- java_codebase_rag-0.9.5/tests/test_cli_progress_stdout_invariant.py +0 -296
- java_codebase_rag-0.9.5/tests/test_cli_quiet_parity.py +0 -172
- java_codebase_rag-0.9.5/tests/test_client_hint_recovery.py +0 -126
- java_codebase_rag-0.9.5/tests/test_client_node_extraction.py +0 -254
- java_codebase_rag-0.9.5/tests/test_client_role_rename.py +0 -158
- java_codebase_rag-0.9.5/tests/test_config.py +0 -781
- java_codebase_rag-0.9.5/tests/test_cross_service_resolution_flag.py +0 -263
- java_codebase_rag-0.9.5/tests/test_edge_navigation_doc.py +0 -34
- java_codebase_rag-0.9.5/tests/test_fd_limit.py +0 -90
- java_codebase_rag-0.9.5/tests/test_feign_not_exposer.py +0 -164
- java_codebase_rag-0.9.5/tests/test_generated_detection.py +0 -218
- java_codebase_rag-0.9.5/tests/test_generated_filter.py +0 -247
- java_codebase_rag-0.9.5/tests/test_generated_surface.py +0 -291
- java_codebase_rag-0.9.5/tests/test_graph_enrich.py +0 -117
- java_codebase_rag-0.9.5/tests/test_graph_generated_node.py +0 -204
- java_codebase_rag-0.9.5/tests/test_graph_only_boot.py +0 -161
- java_codebase_rag-0.9.5/tests/test_incremental_graph.py +0 -1684
- java_codebase_rag-0.9.5/tests/test_install_data_sync.py +0 -249
- java_codebase_rag-0.9.5/tests/test_installer.py +0 -1784
- java_codebase_rag-0.9.5/tests/test_installer_integration.py +0 -135
- java_codebase_rag-0.9.5/tests/test_installer_surface.py +0 -911
- java_codebase_rag-0.9.5/tests/test_java_codebase_rag_cli.py +0 -1631
- java_codebase_rag-0.9.5/tests/test_jrag_auto_scope.py +0 -271
- java_codebase_rag-0.9.5/tests/test_jrag_enum_choices.py +0 -76
- java_codebase_rag-0.9.5/tests/test_jrag_envelope.py +0 -711
- java_codebase_rag-0.9.5/tests/test_jrag_envelope_absence.py +0 -305
- java_codebase_rag-0.9.5/tests/test_jrag_listing.py +0 -458
- java_codebase_rag-0.9.5/tests/test_jrag_locate.py +0 -515
- java_codebase_rag-0.9.5/tests/test_jrag_orientation.py +0 -1129
- java_codebase_rag-0.9.5/tests/test_jrag_render.py +0 -854
- java_codebase_rag-0.9.5/tests/test_jrag_status.py +0 -218
- java_codebase_rag-0.9.5/tests/test_jrag_token_budget.py +0 -127
- java_codebase_rag-0.9.5/tests/test_jrag_traversal_compose.py +0 -727
- java_codebase_rag-0.9.5/tests/test_jrag_traversal_direct.py +0 -1000
- java_codebase_rag-0.9.5/tests/test_ladybug_queries.py +0 -576
- java_codebase_rag-0.9.5/tests/test_lance_optimize.py +0 -281
- java_codebase_rag-0.9.5/tests/test_lancedb_e2e.py +0 -388
- java_codebase_rag-0.9.5/tests/test_lancedb_generated_column.py +0 -143
- java_codebase_rag-0.9.5/tests/test_mcp_hints.py +0 -1322
- java_codebase_rag-0.9.5/tests/test_mcp_server_project_root.py +0 -126
- java_codebase_rag-0.9.5/tests/test_mcp_tools.py +0 -113
- java_codebase_rag-0.9.5/tests/test_mcp_v2.py +0 -2022
- java_codebase_rag-0.9.5/tests/test_mcp_v2_compose.py +0 -996
- java_codebase_rag-0.9.5/tests/test_meta_chain_core.py +0 -74
- java_codebase_rag-0.9.5/tests/test_microservice_scope.py +0 -270
- java_codebase_rag-0.9.5/tests/test_outgoing_call_extraction.py +0 -196
- java_codebase_rag-0.9.5/tests/test_packaging_metadata.py +0 -52
- java_codebase_rag-0.9.5/tests/test_path_filtering.py +0 -356
- java_codebase_rag-0.9.5/tests/test_pipeline.py +0 -103
- java_codebase_rag-0.9.5/tests/test_pr_analysis.py +0 -415
- java_codebase_rag-0.9.5/tests/test_progress.py +0 -463
- java_codebase_rag-0.9.5/tests/test_resolve_routes_messaging_layer_c.py +0 -102
- java_codebase_rag-0.9.5/tests/test_resolve_service.py +0 -220
- java_codebase_rag-0.9.5/tests/test_route_extraction.py +0 -415
- java_codebase_rag-0.9.5/tests/test_schema_consistency.py +0 -111
- java_codebase_rag-0.9.5/tests/test_search_lancedb.py +0 -558
- java_codebase_rag-0.9.5/tests/test_search_lancedb_capability.py +0 -127
- java_codebase_rag-0.9.5/tests/test_search_lexical.py +0 -339
- java_codebase_rag-0.9.5/tests/test_string_value_atoms.py +0 -23
- java_codebase_rag-0.9.5/tests/test_vectors_progress.py +0 -349
- java_codebase_rag-0.9.5/tests/test_version_flag.py +0 -39
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7}/LICENSE +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7}/README.md +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7}/setup.cfg +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag/__init__.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag/_fdlimit.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag/_stdio.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag/_version.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/ast}/brownfield_events.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/ast}/chunk_heuristics.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag/cli_format.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag/cli_progress.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag/config.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/graph}/path_filtering.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/index}/java_index_v1_common.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag/install_data/agents/explorer-rag-cli.md +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag/install_data/agents/explorer-rag-enhanced.md +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag/install_data/skills/explore-codebase/SKILL.md +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag/install_data/skills/explore-codebase-cli/SKILL.md +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag/installer.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag/lance_optimize.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag/progress.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/search}/index_common.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/search}/search_scoring.py +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag.egg-info/dependency_links.txt +0 -0
- {java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src}/java_codebase_rag.egg-info/requires.txt +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "java-codebase-rag"
|
|
7
|
-
version = "0.9.
|
|
7
|
+
version = "0.9.7"
|
|
8
8
|
description = "MCP server for semantic + structural search over Java codebases"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -64,36 +64,11 @@ Issues = "https://github.com/HumanBean17/java-codebase-rag/issues"
|
|
|
64
64
|
|
|
65
65
|
[project.scripts]
|
|
66
66
|
java-codebase-rag = "java_codebase_rag.cli:_console_script_main"
|
|
67
|
-
java-codebase-rag-mcp = "server:main"
|
|
67
|
+
java-codebase-rag-mcp = "java_codebase_rag.mcp.server:main"
|
|
68
68
|
jrag = "java_codebase_rag.jrag:_console_script_main"
|
|
69
69
|
|
|
70
|
-
[tool.setuptools]
|
|
71
|
-
|
|
72
|
-
py-modules = [
|
|
73
|
-
"absence_types",
|
|
74
|
-
"absence_vocab",
|
|
75
|
-
"absence_diagnosis",
|
|
76
|
-
"ast_java",
|
|
77
|
-
"brownfield_events",
|
|
78
|
-
"build_ast_graph",
|
|
79
|
-
"chunk_heuristics",
|
|
80
|
-
"graph_enrich",
|
|
81
|
-
"graph_types",
|
|
82
|
-
"index_common",
|
|
83
|
-
"java_index_flow_lancedb",
|
|
84
|
-
"java_index_v1_common",
|
|
85
|
-
"java_ontology",
|
|
86
|
-
"ladybug_queries",
|
|
87
|
-
"mcp_hints",
|
|
88
|
-
"mcp_v2",
|
|
89
|
-
"path_filtering",
|
|
90
|
-
"pr_analysis",
|
|
91
|
-
"resolve_service",
|
|
92
|
-
"search_lancedb",
|
|
93
|
-
"search_lexical",
|
|
94
|
-
"search_scoring",
|
|
95
|
-
"server",
|
|
96
|
-
]
|
|
70
|
+
[tool.setuptools.packages.find]
|
|
71
|
+
where = ["src"]
|
|
97
72
|
|
|
98
73
|
[tool.ruff]
|
|
99
74
|
line-length = 100
|
|
File without changes
|
|
@@ -30,7 +30,7 @@ from collections import Counter
|
|
|
30
30
|
from difflib import SequenceMatcher
|
|
31
31
|
from typing import Any, Literal
|
|
32
32
|
|
|
33
|
-
from absence_types import (
|
|
33
|
+
from java_codebase_rag.absence.absence_types import (
|
|
34
34
|
AbsenceDiagnosis,
|
|
35
35
|
AbsenceProof,
|
|
36
36
|
ExternalIdentity,
|
|
@@ -38,9 +38,9 @@ from absence_types import (
|
|
|
38
38
|
FilterRelaxationDim,
|
|
39
39
|
VocabularyContext,
|
|
40
40
|
)
|
|
41
|
-
from absence_vocab import SymbolRecord, VocabularyIndex, _normalize_name
|
|
42
|
-
from graph_types import NodeRef
|
|
43
|
-
from mcp_hints import _IDENTIFIER_FILTER_FIELDS
|
|
41
|
+
from java_codebase_rag.absence.absence_vocab import SymbolRecord, VocabularyIndex, _normalize_name
|
|
42
|
+
from java_codebase_rag.graph.graph_types import NodeRef
|
|
43
|
+
from java_codebase_rag.mcp.mcp_hints import _IDENTIFIER_FILTER_FIELDS
|
|
44
44
|
|
|
45
45
|
log = logging.getLogger(__name__)
|
|
46
46
|
|
{java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/absence}/absence_vocab.py
RENAMED
|
@@ -204,7 +204,7 @@ class VocabularyIndex:
|
|
|
204
204
|
VocabIndexStale: If sidecar format_version or ontology_version
|
|
205
205
|
doesn't match expected
|
|
206
206
|
"""
|
|
207
|
-
from ast_java import ONTOLOGY_VERSION
|
|
207
|
+
from java_codebase_rag.ast.ast_java import ONTOLOGY_VERSION
|
|
208
208
|
|
|
209
209
|
with open(path, encoding="utf-8") as f:
|
|
210
210
|
data = json.load(f)
|
|
@@ -304,7 +304,7 @@ class VocabularyIndex:
|
|
|
304
304
|
Returns:
|
|
305
305
|
(is_external, reason) tuple
|
|
306
306
|
"""
|
|
307
|
-
from ladybug_queries import _is_external_fqn, _EXTERNAL_PREFIXES
|
|
307
|
+
from java_codebase_rag.graph.ladybug_queries import _is_external_fqn, _EXTERNAL_PREFIXES
|
|
308
308
|
|
|
309
309
|
# First, check if it's an external prefix (highest priority)
|
|
310
310
|
if _is_external_fqn(name):
|
|
@@ -354,7 +354,7 @@ def get_vocabulary_index(graph: Any, cfg: Any) -> VocabularyIndex:
|
|
|
354
354
|
Returns:
|
|
355
355
|
VocabularyIndex (cached or newly built)
|
|
356
356
|
"""
|
|
357
|
-
from ast_java import ONTOLOGY_VERSION
|
|
357
|
+
from java_codebase_rag.ast.ast_java import ONTOLOGY_VERSION
|
|
358
358
|
|
|
359
359
|
# Determine graph db path for cache key
|
|
360
360
|
db_path = graph.db_path if hasattr(graph, 'db_path') else str(cfg.ladybug_path)
|
|
@@ -375,8 +375,13 @@ def get_vocabulary_index(graph: Any, cfg: Any) -> VocabularyIndex:
|
|
|
375
375
|
# (JSONDecodeError/KeyError) — all subsumed by Exception; rebuild.
|
|
376
376
|
log.debug(f"Vocab index missing/stale/corrupt ({e}), rebuilding from graph")
|
|
377
377
|
|
|
378
|
-
# Build from graph
|
|
379
|
-
|
|
378
|
+
# Build from graph. Coerce q to int (mirror absence_diagnosis.py's
|
|
379
|
+
# int(getattr(cfg, ...)) pattern): a non-int cfg.absence_ngram_q (e.g. a
|
|
380
|
+
# MagicMock cfg from a leaked test mock, or a YAML string) would otherwise
|
|
381
|
+
# crash _qgrams at `len(text) < q` ('int < MagicMock'). Default 3 = the
|
|
382
|
+
# config default for absence_ngram_q.
|
|
383
|
+
q = int(getattr(cfg, "absence_ngram_q", 3) or 3)
|
|
384
|
+
index = VocabularyIndex.build(graph, q=q)
|
|
380
385
|
|
|
381
386
|
# Save to sidecar (best-effort)
|
|
382
387
|
try:
|
|
@@ -403,7 +408,7 @@ def reset_cache() -> None:
|
|
|
403
408
|
|
|
404
409
|
def _row_to_symbol_record(row: dict[str, Any]) -> SymbolRecord:
|
|
405
410
|
"""Convert a Ladybug row to a SymbolRecord."""
|
|
406
|
-
from ladybug_queries import _type_part_fqn
|
|
411
|
+
from java_codebase_rag.graph.ladybug_queries import _type_part_fqn
|
|
407
412
|
|
|
408
413
|
fqn = row.get("fqn") or ""
|
|
409
414
|
name = row.get("name") or ""
|
|
File without changes
|
{java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/analysis}/pr_analysis.py
RENAMED
|
@@ -12,7 +12,7 @@ from typing import Any
|
|
|
12
12
|
from unidiff import PatchSet
|
|
13
13
|
from unidiff.errors import UnidiffParseError
|
|
14
14
|
|
|
15
|
-
from ladybug_queries import SymbolHit, find_symbols_in_file_range, _row_to_symbol
|
|
15
|
+
from java_codebase_rag.graph.ladybug_queries import SymbolHit, find_symbols_in_file_range, _row_to_symbol
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
@dataclass
|
|
@@ -10,10 +10,10 @@ from typing import Any, Literal
|
|
|
10
10
|
|
|
11
11
|
from pydantic import BaseModel, ConfigDict, Field
|
|
12
12
|
|
|
13
|
-
from absence_types import AbsenceDiagnosis
|
|
14
|
-
from absence_diagnosis import diagnose
|
|
15
|
-
from absence_vocab import get_vocabulary_index
|
|
16
|
-
from graph_types import (
|
|
13
|
+
from java_codebase_rag.absence.absence_types import AbsenceDiagnosis
|
|
14
|
+
from java_codebase_rag.absence.absence_diagnosis import diagnose
|
|
15
|
+
from java_codebase_rag.absence.absence_vocab import get_vocabulary_index
|
|
16
|
+
from java_codebase_rag.graph.graph_types import (
|
|
17
17
|
NodeRef,
|
|
18
18
|
StructuredHint,
|
|
19
19
|
_hints_or_skip,
|
|
@@ -21,9 +21,9 @@ from graph_types import (
|
|
|
21
21
|
_to_structured_hints,
|
|
22
22
|
set_hints_enabled,
|
|
23
23
|
)
|
|
24
|
-
from java_ontology import ResolveReason
|
|
25
|
-
from ladybug_queries import LadybugGraph
|
|
26
|
-
from mcp_hints import MCP_HINTS_STRUCTURED_FIELD_DESCRIPTION
|
|
24
|
+
from java_codebase_rag.graph.java_ontology import ResolveReason
|
|
25
|
+
from java_codebase_rag.graph.ladybug_queries import LadybugGraph
|
|
26
|
+
from java_codebase_rag.mcp.mcp_hints import MCP_HINTS_STRUCTURED_FIELD_DESCRIPTION
|
|
27
27
|
|
|
28
28
|
__all__ = [
|
|
29
29
|
"resolve_v2",
|
|
File without changes
|
|
@@ -20,7 +20,7 @@ from typing import Iterable
|
|
|
20
20
|
|
|
21
21
|
import tree_sitter_java as _ts_java
|
|
22
22
|
|
|
23
|
-
from brownfield_events import (
|
|
23
|
+
from java_codebase_rag.ast.brownfield_events import (
|
|
24
24
|
emit_brownfield_exclusivity_shadowing,
|
|
25
25
|
emit_brownfield_method_string_literal,
|
|
26
26
|
)
|
|
@@ -1617,7 +1617,7 @@ def _parse_codebase_http_client_annotation(
|
|
|
1617
1617
|
val, vkind = _annotation_value(pairs["clientKind"], src)
|
|
1618
1618
|
if val and vkind == "enum":
|
|
1619
1619
|
kind_val = str(val)
|
|
1620
|
-
from java_ontology import VALID_CLIENT_KINDS # deferred: java_ontology imports ast_java
|
|
1620
|
+
from java_codebase_rag.graph.java_ontology import VALID_CLIENT_KINDS # deferred: java_ontology imports ast_java
|
|
1621
1621
|
if kind_val in VALID_CLIENT_KINDS:
|
|
1622
1622
|
client_kind = kind_val
|
|
1623
1623
|
else:
|
|
@@ -1697,7 +1697,7 @@ def _parse_codebase_producer_annotation(
|
|
|
1697
1697
|
val, vkind = _annotation_value(kind_node, src)
|
|
1698
1698
|
if val and vkind == "enum":
|
|
1699
1699
|
kind_val = str(val)
|
|
1700
|
-
from java_ontology import VALID_PRODUCER_KINDS # deferred: java_ontology imports ast_java
|
|
1700
|
+
from java_codebase_rag.graph.java_ontology import VALID_PRODUCER_KINDS # deferred: java_ontology imports ast_java
|
|
1701
1701
|
if kind_val in VALID_PRODUCER_KINDS:
|
|
1702
1702
|
client_kind = kind_val
|
|
1703
1703
|
else:
|
|
@@ -1868,7 +1868,7 @@ def _collect_outgoing_calls(
|
|
|
1868
1868
|
file_rel: str,
|
|
1869
1869
|
) -> list[OutgoingCallDecl]:
|
|
1870
1870
|
del project_root
|
|
1871
|
-
from java_ontology import ( # deferred: java_ontology imports ast_java
|
|
1871
|
+
from java_codebase_rag.graph.java_ontology import ( # deferred: java_ontology imports ast_java
|
|
1872
1872
|
CLIENT_KIND_FEIGN_METHOD,
|
|
1873
1873
|
CLIENT_KIND_REST_TEMPLATE,
|
|
1874
1874
|
CLIENT_KIND_WEB_CLIENT,
|
|
@@ -36,7 +36,7 @@ from java_codebase_rag.pipeline import (
|
|
|
36
36
|
run_cocoindex_update,
|
|
37
37
|
run_incremental_graph,
|
|
38
38
|
)
|
|
39
|
-
from java_ontology import VALID_UNRESOLVED_CALL_REASONS
|
|
39
|
+
from java_codebase_rag.graph.java_ontology import VALID_UNRESOLVED_CALL_REASONS
|
|
40
40
|
|
|
41
41
|
LADYBUG_INCREMENTAL_TRACKING_ISSUE_URL = "https://github.com/HumanBean17/java-codebase-rag/issues/73"
|
|
42
42
|
|
|
@@ -602,7 +602,7 @@ def _cmd_reprocess(args: argparse.Namespace) -> int:
|
|
|
602
602
|
_emit_reprocess_outcome(payload, selective_tty_mode="graph" if ok else None)
|
|
603
603
|
return _reprocess_exit_code(payload)
|
|
604
604
|
|
|
605
|
-
import server # lazy: pulls sentence_transformers/torch/lancedb/ladybug
|
|
605
|
+
from java_codebase_rag.mcp import server # lazy: pulls sentence_transformers/torch/lancedb/ladybug
|
|
606
606
|
|
|
607
607
|
result = asyncio.run(
|
|
608
608
|
server.run_refresh_pipeline(
|
|
@@ -677,7 +677,7 @@ def _cmd_erase(args: argparse.Namespace) -> int:
|
|
|
677
677
|
# tree_sitter (~54ms), and these filenames are only needed on the erase path.
|
|
678
678
|
# Keeping it out of the top-level import lets `java-codebase-rag --help` (and
|
|
679
679
|
# every other command) stay fast -- see the lazy-import invariant atop this file.
|
|
680
|
-
from build_ast_graph import BUILDER_OWNED_INDEX_FILES
|
|
680
|
+
from java_codebase_rag.graph.build_ast_graph import BUILDER_OWNED_INDEX_FILES
|
|
681
681
|
builder_paths = [cfg.ladybug_path.parent / name for name in BUILDER_OWNED_INDEX_FILES]
|
|
682
682
|
operator_paths = [cfg.index_dir / name for name in OPERATOR_OWNED_INDEX_FILES]
|
|
683
683
|
to_describe: list[Path] = [
|
|
@@ -768,12 +768,12 @@ def _cmd_erase(args: argparse.Namespace) -> int:
|
|
|
768
768
|
|
|
769
769
|
|
|
770
770
|
def _cmd_meta(args: argparse.Namespace) -> int:
|
|
771
|
-
import server # lazy
|
|
771
|
+
from java_codebase_rag.mcp import server # lazy
|
|
772
772
|
|
|
773
773
|
cfg = _resolved_from_ns(args)
|
|
774
774
|
_startup_hints(cfg)
|
|
775
775
|
cfg.apply_to_os_environ()
|
|
776
|
-
from ladybug_queries import LadybugGraph # lazy
|
|
776
|
+
from java_codebase_rag.graph.ladybug_queries import LadybugGraph # lazy
|
|
777
777
|
|
|
778
778
|
LadybugGraph._instance = None
|
|
779
779
|
LadybugGraph._instance_path = None
|
|
@@ -792,7 +792,7 @@ def _cmd_meta(args: argparse.Namespace) -> int:
|
|
|
792
792
|
|
|
793
793
|
|
|
794
794
|
def _cmd_tables(args: argparse.Namespace) -> int:
|
|
795
|
-
import server # lazy
|
|
795
|
+
from java_codebase_rag.mcp import server # lazy
|
|
796
796
|
|
|
797
797
|
cfg = _resolved_from_ns(args)
|
|
798
798
|
_startup_hints(cfg)
|
|
@@ -803,8 +803,8 @@ def _cmd_tables(args: argparse.Namespace) -> int:
|
|
|
803
803
|
|
|
804
804
|
|
|
805
805
|
def _cmd_diagnose_ignore(args: argparse.Namespace) -> int:
|
|
806
|
-
import server # lazy
|
|
807
|
-
from path_filtering import LayeredIgnore # lazy
|
|
806
|
+
from java_codebase_rag.mcp import server # lazy
|
|
807
|
+
from java_codebase_rag.graph.path_filtering import LayeredIgnore # lazy
|
|
808
808
|
|
|
809
809
|
cfg = _resolved_from_ns(args)
|
|
810
810
|
_startup_hints(cfg)
|
|
@@ -833,7 +833,7 @@ def _cmd_unresolved_calls_list(args: argparse.Namespace) -> int:
|
|
|
833
833
|
cfg = _resolved_from_ns(args)
|
|
834
834
|
_startup_hints(cfg)
|
|
835
835
|
cfg.apply_to_os_environ()
|
|
836
|
-
from ladybug_queries import LadybugGraph # lazy
|
|
836
|
+
from java_codebase_rag.graph.ladybug_queries import LadybugGraph # lazy
|
|
837
837
|
|
|
838
838
|
if not LadybugGraph.exists():
|
|
839
839
|
_emit({"success": False, "message": "LadybugDB graph not found"})
|
|
@@ -854,7 +854,7 @@ def _cmd_unresolved_calls_stats(args: argparse.Namespace) -> int:
|
|
|
854
854
|
cfg = _resolved_from_ns(args)
|
|
855
855
|
_startup_hints(cfg)
|
|
856
856
|
cfg.apply_to_os_environ()
|
|
857
|
-
from ladybug_queries import LadybugGraph # lazy
|
|
857
|
+
from java_codebase_rag.graph.ladybug_queries import LadybugGraph # lazy
|
|
858
858
|
|
|
859
859
|
if not LadybugGraph.exists():
|
|
860
860
|
_emit({"success": False, "message": "LadybugDB graph not found"})
|
|
@@ -878,8 +878,8 @@ def _cmd_analyze_pr(args: argparse.Namespace) -> int:
|
|
|
878
878
|
if not diff_text.strip():
|
|
879
879
|
_emit({"success": False, "message": "Diff is empty"})
|
|
880
880
|
return 1
|
|
881
|
-
import pr_analysis # lazy
|
|
882
|
-
from ladybug_queries import LadybugGraph # lazy
|
|
881
|
+
from java_codebase_rag.analysis import pr_analysis # lazy
|
|
882
|
+
from java_codebase_rag.graph.ladybug_queries import LadybugGraph # lazy
|
|
883
883
|
|
|
884
884
|
if not LadybugGraph.exists():
|
|
885
885
|
_emit({"success": False, "message": "LadybugDB graph not found"})
|
|
File without changes
|
{java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/graph}/build_ast_graph.py
RENAMED
|
@@ -41,7 +41,7 @@ from pathlib import Path
|
|
|
41
41
|
import ladybug
|
|
42
42
|
import pyarrow as pa
|
|
43
43
|
|
|
44
|
-
from ast_java import (
|
|
44
|
+
from java_codebase_rag.ast.ast_java import (
|
|
45
45
|
ONTOLOGY_VERSION,
|
|
46
46
|
CallSite,
|
|
47
47
|
JavaFileAst,
|
|
@@ -52,7 +52,7 @@ from ast_java import (
|
|
|
52
52
|
lombok_required_args_annotations,
|
|
53
53
|
parse_java,
|
|
54
54
|
)
|
|
55
|
-
from graph_enrich import (
|
|
55
|
+
from java_codebase_rag.graph.graph_enrich import (
|
|
56
56
|
_load_config_cross_service_resolution,
|
|
57
57
|
classify_java_file,
|
|
58
58
|
collect_annotation_meta_chain,
|
|
@@ -67,8 +67,8 @@ from graph_enrich import (
|
|
|
67
67
|
resolve_routes_for_method,
|
|
68
68
|
symbol_id,
|
|
69
69
|
)
|
|
70
|
-
from path_filtering import LayeredIgnore, iter_java_source_files
|
|
71
|
-
from java_ontology import (
|
|
70
|
+
from java_codebase_rag.graph.path_filtering import LayeredIgnore, iter_java_source_files
|
|
71
|
+
from java_codebase_rag.graph.java_ontology import (
|
|
72
72
|
CLIENT_KIND_FEIGN_METHOD,
|
|
73
73
|
CLIENT_KIND_REST_TEMPLATE,
|
|
74
74
|
VALID_CLIENT_KINDS,
|
|
@@ -4256,8 +4256,8 @@ def _try_build_vocabulary_index(db_path: Path, source_root: Path, verbose: bool)
|
|
|
4256
4256
|
verbose: Whether to emit verbose progress
|
|
4257
4257
|
"""
|
|
4258
4258
|
try:
|
|
4259
|
-
from absence_vocab import VocabularyIndex, VOCAB_INDEX_FILENAME
|
|
4260
|
-
from ladybug_queries import LadybugGraph
|
|
4259
|
+
from java_codebase_rag.absence.absence_vocab import VocabularyIndex, VOCAB_INDEX_FILENAME
|
|
4260
|
+
from java_codebase_rag.graph.ladybug_queries import LadybugGraph
|
|
4261
4261
|
|
|
4262
4262
|
t0 = time.time()
|
|
4263
4263
|
if verbose:
|
{java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/graph}/graph_enrich.py
RENAMED
|
@@ -25,7 +25,7 @@ from dataclasses import dataclass, field, replace
|
|
|
25
25
|
from functools import lru_cache
|
|
26
26
|
from pathlib import Path
|
|
27
27
|
from typing import Any, TypeVar
|
|
28
|
-
from ast_java import (
|
|
28
|
+
from java_codebase_rag.ast.ast_java import (
|
|
29
29
|
AnnotationRef,
|
|
30
30
|
JavaFileAst,
|
|
31
31
|
MethodDecl,
|
|
@@ -43,7 +43,7 @@ from ast_java import (
|
|
|
43
43
|
_METHOD_ANN_TO_CAPABILITY,
|
|
44
44
|
_TYPE_ANN_TO_CAPABILITY,
|
|
45
45
|
)
|
|
46
|
-
from java_ontology import (
|
|
46
|
+
from java_codebase_rag.graph.java_ontology import (
|
|
47
47
|
CLIENT_KIND_REST_TEMPLATE,
|
|
48
48
|
VALID_CAPABILITIES,
|
|
49
49
|
VALID_CLIENT_KINDS,
|
|
@@ -52,7 +52,7 @@ from java_ontology import (
|
|
|
52
52
|
VALID_ROUTE_FRAMEWORKS,
|
|
53
53
|
VALID_ROUTE_KINDS,
|
|
54
54
|
)
|
|
55
|
-
from path_filtering import LayeredIgnore, iter_java_source_files
|
|
55
|
+
from java_codebase_rag.graph.path_filtering import LayeredIgnore, iter_java_source_files
|
|
56
56
|
|
|
57
57
|
__all__ = [
|
|
58
58
|
"AnnotationDecl",
|
{java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/graph}/graph_types.py
RENAMED
|
@@ -10,8 +10,8 @@ from typing import Any, Literal
|
|
|
10
10
|
|
|
11
11
|
from pydantic import BaseModel
|
|
12
12
|
|
|
13
|
-
from ladybug_queries import LadybugGraph
|
|
14
|
-
from mcp_hints import generate_hints
|
|
13
|
+
from java_codebase_rag.graph.ladybug_queries import LadybugGraph
|
|
14
|
+
from java_codebase_rag.mcp.mcp_hints import generate_hints
|
|
15
15
|
|
|
16
16
|
__all__ = [
|
|
17
17
|
"NodeRef",
|
{java_codebase_rag-0.9.5 → java_codebase_rag-0.9.7/src/java_codebase_rag/graph}/ladybug_queries.py
RENAMED
|
@@ -6,7 +6,7 @@ so the MCP server can serialize them without further mapping.
|
|
|
6
6
|
The Ladybug database is opened read-only and cached per-process. This module is
|
|
7
7
|
intentionally dependency-light: nothing here imports LanceDB or sentence-transformers.
|
|
8
8
|
|
|
9
|
-
Cypher pitfalls (see also ``
|
|
9
|
+
Cypher pitfalls (see also ``CLAUDE.md``): avoid ``label(e) IN $list`` in ``WHERE`` for
|
|
10
10
|
relationship-type filters; use OR of ``label(e) = $param`` with bound parameters.
|
|
11
11
|
Typed unions ``-[e:A|B]-`` require every ``RETURN`` column on ``e`` to exist on all
|
|
12
12
|
listed rel types, or the binder may fail.
|
|
@@ -24,7 +24,7 @@ from typing import Any, Literal
|
|
|
24
24
|
|
|
25
25
|
import ladybug
|
|
26
26
|
|
|
27
|
-
from ast_java import ONTOLOGY_VERSION as _ONTOLOGY_VERSION
|
|
27
|
+
from java_codebase_rag.ast.ast_java import ONTOLOGY_VERSION as _ONTOLOGY_VERSION
|
|
28
28
|
|
|
29
29
|
log = logging.getLogger(__name__)
|
|
30
30
|
|
|
File without changes
|
|
@@ -41,7 +41,7 @@ from cocoindex.resources.file import PatternFilePathMatcher
|
|
|
41
41
|
|
|
42
42
|
from java_codebase_rag.config import resolved_sbert_model_for_process_env
|
|
43
43
|
from java_codebase_rag.lance_optimize import LANCE_TABLE_NAMES
|
|
44
|
-
from java_index_v1_common import (
|
|
44
|
+
from java_codebase_rag.index.java_index_v1_common import (
|
|
45
45
|
JAVA_CHUNK,
|
|
46
46
|
SBERT_MODEL,
|
|
47
47
|
SQL_CHUNK,
|
|
@@ -49,9 +49,9 @@ from java_index_v1_common import (
|
|
|
49
49
|
chunk_key_range,
|
|
50
50
|
position_to_json,
|
|
51
51
|
)
|
|
52
|
-
from path_filtering import LayeredIgnore
|
|
53
|
-
from ast_java import ONTOLOGY_VERSION, parse_java
|
|
54
|
-
from graph_enrich import (
|
|
52
|
+
from java_codebase_rag.graph.path_filtering import LayeredIgnore
|
|
53
|
+
from java_codebase_rag.ast.ast_java import ONTOLOGY_VERSION, parse_java
|
|
54
|
+
from java_codebase_rag.graph.graph_enrich import (
|
|
55
55
|
classify_java_file,
|
|
56
56
|
collect_annotation_meta_chain,
|
|
57
57
|
enrich_chunk,
|
|
File without changes
|
|
@@ -134,7 +134,7 @@ def _apply_auto_scope(args: argparse.Namespace, cfg, graph) -> None:
|
|
|
134
134
|
source_root = cfg.source_root if cfg.source_root else None
|
|
135
135
|
if not source_root:
|
|
136
136
|
return
|
|
137
|
-
from graph_enrich import detect_microservice_from_path
|
|
137
|
+
from java_codebase_rag.graph.graph_enrich import detect_microservice_from_path
|
|
138
138
|
|
|
139
139
|
candidate = detect_microservice_from_path(Path.cwd(), Path(source_root))
|
|
140
140
|
if not candidate:
|
|
@@ -1217,7 +1217,7 @@ def _load_graph(cfg): # type: ignore[no-untyped-def]
|
|
|
1217
1217
|
* ontology-mismatch (``RuntimeError`` from ``LadybugGraph.get``) ->
|
|
1218
1218
|
``_IndexStale`` (caught in ``main`` -> envelope with a rebuild hint).
|
|
1219
1219
|
"""
|
|
1220
|
-
from ladybug_queries import LadybugGraph
|
|
1220
|
+
from java_codebase_rag.graph.ladybug_queries import LadybugGraph
|
|
1221
1221
|
|
|
1222
1222
|
ladybug_path = str(cfg.ladybug_path)
|
|
1223
1223
|
if not LadybugGraph.exists(ladybug_path):
|
|
@@ -1233,8 +1233,8 @@ def _load_graph(cfg): # type: ignore[no-untyped-def]
|
|
|
1233
1233
|
|
|
1234
1234
|
def _cmd_vocab_index(args: argparse.Namespace) -> int:
|
|
1235
1235
|
"""Rebuild the vocabulary index sidecar from the Ladybug graph."""
|
|
1236
|
-
from ast_java import ONTOLOGY_VERSION
|
|
1237
|
-
from absence_vocab import VocabularyIndex, VOCAB_INDEX_FILENAME
|
|
1236
|
+
from java_codebase_rag.ast.ast_java import ONTOLOGY_VERSION
|
|
1237
|
+
from java_codebase_rag.absence.absence_vocab import VocabularyIndex, VOCAB_INDEX_FILENAME
|
|
1238
1238
|
|
|
1239
1239
|
cfg = _resolve_cfg(args)
|
|
1240
1240
|
try:
|
|
@@ -1565,7 +1565,7 @@ def _build_node_filter_or_error(filter_dict: dict):
|
|
|
1565
1565
|
A bad enum (e.g. ``--role FOO``) should be a user-facing validation error,
|
|
1566
1566
|
not an internal crash. Returns ``(node_filter, None)`` on success.
|
|
1567
1567
|
"""
|
|
1568
|
-
import mcp_v2
|
|
1568
|
+
from java_codebase_rag.mcp import mcp_v2
|
|
1569
1569
|
|
|
1570
1570
|
from java_codebase_rag.jrag_envelope import Envelope
|
|
1571
1571
|
from pydantic import ValidationError
|
|
@@ -1591,7 +1591,7 @@ def _cmd_find_filter_mode(
|
|
|
1591
1591
|
limit: int,
|
|
1592
1592
|
) -> int:
|
|
1593
1593
|
"""Find filter mode: build NodeFilter and call find_v2."""
|
|
1594
|
-
import mcp_v2
|
|
1594
|
+
from java_codebase_rag.mcp import mcp_v2
|
|
1595
1595
|
|
|
1596
1596
|
from java_codebase_rag.jrag_envelope import Envelope, next_actions_hook, normalize_enum, to_envelope_rows
|
|
1597
1597
|
from java_codebase_rag.jrag_render import render
|
|
@@ -1674,7 +1674,7 @@ def _cmd_find_filter_mode(
|
|
|
1674
1674
|
|
|
1675
1675
|
|
|
1676
1676
|
def _cmd_inspect(args: argparse.Namespace) -> int:
|
|
1677
|
-
import mcp_v2
|
|
1677
|
+
from java_codebase_rag.mcp import mcp_v2
|
|
1678
1678
|
|
|
1679
1679
|
from java_codebase_rag.jrag_envelope import Envelope, next_actions_hook, resolve_query
|
|
1680
1680
|
from java_codebase_rag.jrag_render import render
|
|
@@ -2574,7 +2574,7 @@ def _cmd_callees(args: argparse.Namespace) -> int:
|
|
|
2574
2574
|
# Producer root -> ASYNC_CALLS out (Producer -> :Route, the kafka_topic
|
|
2575
2575
|
# Route this producer publishes to — NOT a :Producer node).
|
|
2576
2576
|
if node.kind in ("client", "producer"):
|
|
2577
|
-
import mcp_v2
|
|
2577
|
+
from java_codebase_rag.mcp import mcp_v2
|
|
2578
2578
|
|
|
2579
2579
|
edge_types = ["HTTP_CALLS"] if node.kind == "client" else ["ASYNC_CALLS"]
|
|
2580
2580
|
out = mcp_v2.neighbors_v2(
|
|
@@ -2710,7 +2710,7 @@ def _cmd_callees(args: argparse.Namespace) -> int:
|
|
|
2710
2710
|
|
|
2711
2711
|
|
|
2712
2712
|
def _cmd_hierarchy(args: argparse.Namespace) -> int:
|
|
2713
|
-
import mcp_v2
|
|
2713
|
+
from java_codebase_rag.mcp import mcp_v2
|
|
2714
2714
|
|
|
2715
2715
|
cfg, graph, rc = _load_graph_or_error(args)
|
|
2716
2716
|
if rc:
|
|
@@ -2863,7 +2863,7 @@ def _cmd_subclasses(args: argparse.Namespace) -> int:
|
|
|
2863
2863
|
|
|
2864
2864
|
|
|
2865
2865
|
def _cmd_overrides(args: argparse.Namespace) -> int:
|
|
2866
|
-
import mcp_v2
|
|
2866
|
+
from java_codebase_rag.mcp import mcp_v2
|
|
2867
2867
|
|
|
2868
2868
|
cfg, graph, rc = _load_graph_or_error(args)
|
|
2869
2869
|
if rc:
|
|
@@ -2916,7 +2916,7 @@ def _cmd_overrides(args: argparse.Namespace) -> int:
|
|
|
2916
2916
|
|
|
2917
2917
|
|
|
2918
2918
|
def _cmd_overridden_by(args: argparse.Namespace) -> int:
|
|
2919
|
-
import mcp_v2
|
|
2919
|
+
from java_codebase_rag.mcp import mcp_v2
|
|
2920
2920
|
|
|
2921
2921
|
cfg, graph, rc = _load_graph_or_error(args)
|
|
2922
2922
|
if rc:
|
|
@@ -3224,7 +3224,7 @@ def _cmd_flow(args: argparse.Namespace) -> int:
|
|
|
3224
3224
|
|
|
3225
3225
|
|
|
3226
3226
|
def _cmd_dependencies(args: argparse.Namespace) -> int:
|
|
3227
|
-
import mcp_v2
|
|
3227
|
+
from java_codebase_rag.mcp import mcp_v2
|
|
3228
3228
|
|
|
3229
3229
|
cfg, graph, rc = _load_graph_or_error(args)
|
|
3230
3230
|
if rc:
|
|
@@ -3559,7 +3559,7 @@ def _cmd_outline(args: argparse.Namespace) -> int:
|
|
|
3559
3559
|
start_line<1). ``--limit`` caps the entry count (the file's symbol table
|
|
3560
3560
|
is otherwise unbounded); ``truncated`` is set when more entries exist.
|
|
3561
3561
|
"""
|
|
3562
|
-
from ladybug_queries import find_symbols_in_file_range
|
|
3562
|
+
from java_codebase_rag.graph.ladybug_queries import find_symbols_in_file_range
|
|
3563
3563
|
|
|
3564
3564
|
from java_codebase_rag.jrag_envelope import Envelope, mark_truncated, next_actions_hook
|
|
3565
3565
|
from java_codebase_rag.jrag_render import render
|
|
@@ -3629,8 +3629,8 @@ def _cmd_imports(args: argparse.Namespace) -> int:
|
|
|
3629
3629
|
a node per import: resolved graph Symbol when resolve_v2 hits (status=one),
|
|
3630
3630
|
or an unresolved placeholder carrying the raw FQN otherwise.
|
|
3631
3631
|
"""
|
|
3632
|
-
from ast_java import parse_java
|
|
3633
|
-
from resolve_service import resolve_v2
|
|
3632
|
+
from java_codebase_rag.ast.ast_java import parse_java
|
|
3633
|
+
from java_codebase_rag.analysis.resolve_service import resolve_v2
|
|
3634
3634
|
|
|
3635
3635
|
from java_codebase_rag.jrag_envelope import Envelope, next_actions_hook
|
|
3636
3636
|
from java_codebase_rag.jrag_render import render
|
|
@@ -4195,7 +4195,7 @@ def _zero_result_guidance(args: argparse.Namespace, graph) -> str | None:
|
|
|
4195
4195
|
empty (truly no matches for this query), or the probe itself errored
|
|
4196
4196
|
(non-fatal — the empty result still renders).
|
|
4197
4197
|
"""
|
|
4198
|
-
import mcp_v2
|
|
4198
|
+
from java_codebase_rag.mcp import mcp_v2
|
|
4199
4199
|
from collections import Counter
|
|
4200
4200
|
|
|
4201
4201
|
from java_codebase_rag.jrag_envelope import normalize_enum
|
|
@@ -4250,7 +4250,7 @@ def _cmd_search(args: argparse.Namespace) -> int:
|
|
|
4250
4250
|
truncation, and renders. --fuzzy is rejected IN-HANDLER (not argparse-exit)
|
|
4251
4251
|
so the error carries the canonical envelope shape.
|
|
4252
4252
|
"""
|
|
4253
|
-
import mcp_v2
|
|
4253
|
+
from java_codebase_rag.mcp import mcp_v2
|
|
4254
4254
|
|
|
4255
4255
|
from java_codebase_rag.jrag_envelope import Envelope, mark_truncated, next_actions_hook, normalize_enum
|
|
4256
4256
|
from java_codebase_rag.jrag_render import render
|
|
@@ -4375,7 +4375,7 @@ def _cmd_search(args: argparse.Namespace) -> int:
|
|
|
4375
4375
|
# explain renderer from there would crash `jrag search ... --explain` on the
|
|
4376
4376
|
# exact Intel install that runs the lexical path. search_scoring is
|
|
4377
4377
|
# dependency-free and always installed, so the explain import works everywhere.
|
|
4378
|
-
from search_scoring import explain_score_components
|
|
4378
|
+
from java_codebase_rag.search.search_scoring import explain_score_components
|
|
4379
4379
|
comps = d.get("score_components")
|
|
4380
4380
|
d["explain"] = explain_score_components(
|
|
4381
4381
|
comps,
|
|
@@ -16,10 +16,11 @@ from __future__ import annotations
|
|
|
16
16
|
import json
|
|
17
17
|
import re
|
|
18
18
|
from dataclasses import dataclass, field
|
|
19
|
+
from pathlib import Path
|
|
19
20
|
from typing import Any, Literal
|
|
20
21
|
|
|
21
|
-
from absence_types import AbsenceDiagnosis
|
|
22
|
-
from graph_types import NodeRef
|
|
22
|
+
from java_codebase_rag.absence.absence_types import AbsenceDiagnosis
|
|
23
|
+
from java_codebase_rag.graph.graph_types import NodeRef
|
|
23
24
|
|
|
24
25
|
__all__ = [
|
|
25
26
|
"Envelope",
|
|
@@ -274,10 +275,22 @@ def simple_name(node_dict: dict[str, Any]) -> str:
|
|
|
274
275
|
|
|
275
276
|
``NodeRef`` carries no ``name`` field; the rendering layer derives a short
|
|
276
277
|
label from the FQN on demand. Empty/missing FQN returns "".
|
|
278
|
+
|
|
279
|
+
File/package Symbol nodes are the exception: their ``fqn`` is a filesystem
|
|
280
|
+
path (e.g. ``chat-assign/.../AssignConfiguration.java``), so the dot-split
|
|
281
|
+
would yield the file *extension* (``java``) instead of a name. When the fqn
|
|
282
|
+
is a path (contains ``/`` — the indexer POSIX-normalizes via ``.as_posix()``
|
|
283
|
+
so backslashes don't occur) we return the basename. Route fqns
|
|
284
|
+
(``"GET /api/x"``) also contain ``/`` but carry a space, so they're excluded
|
|
285
|
+
here and stay on the dot-split path.
|
|
277
286
|
"""
|
|
278
287
|
fqn = str(node_dict.get("fqn") or "")
|
|
279
288
|
if not fqn:
|
|
280
289
|
return ""
|
|
290
|
+
if "/" in fqn and " " not in fqn:
|
|
291
|
+
base = Path(fqn).name
|
|
292
|
+
if base:
|
|
293
|
+
return base
|
|
281
294
|
return fqn.rsplit(".", 1)[-1]
|
|
282
295
|
|
|
283
296
|
|
|
@@ -532,10 +545,10 @@ def resolve_query(
|
|
|
532
545
|
means ``--service`` disambiguates which microservice's route is selected.
|
|
533
546
|
"""
|
|
534
547
|
# Lazy imports — keeps build_parser() / `jrag --help` free of resolve/ladybug.
|
|
535
|
-
from resolve_service import resolve_v2
|
|
548
|
+
from java_codebase_rag.analysis.resolve_service import resolve_v2
|
|
536
549
|
|
|
537
550
|
if graph is None:
|
|
538
|
-
from ladybug_queries import LadybugGraph
|
|
551
|
+
from java_codebase_rag.graph.ladybug_queries import LadybugGraph
|
|
539
552
|
|
|
540
553
|
graph = LadybugGraph.get(str(cfg.ladybug_path))
|
|
541
554
|
|
|
@@ -143,7 +143,7 @@ def next_actions(
|
|
|
143
143
|
# EDGE_SCHEMA is the canonical label set; we use it to skip labels we don't
|
|
144
144
|
# recognize (avoids emitting hints for spurious / future edge types the
|
|
145
145
|
# command map doesn't cover).
|
|
146
|
-
from java_ontology import EDGE_SCHEMA
|
|
146
|
+
from java_codebase_rag.graph.java_ontology import EDGE_SCHEMA
|
|
147
147
|
|
|
148
148
|
# Known virtual labels not in EDGE_SCHEMA (describe-time rollup constructs).
|
|
149
149
|
_VIRTUAL_LABELS = frozenset({"OVERRIDDEN_BY"})
|