java-codebase-rag 0.5.3__tar.gz → 0.6.1__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.5.3/java_codebase_rag.egg-info → java_codebase_rag-0.6.1}/PKG-INFO +6 -5
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/README.md +2 -2
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/ast_java.py +24 -7
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/build_ast_graph.py +153 -94
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/graph_enrich.py +3 -3
- java_codebase_rag-0.6.1/java_codebase_rag/_fdlimit.py +48 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag/cli.py +31 -28
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag/config.py +40 -10
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag/installer.py +99 -10
- java_codebase_rag-0.6.1/java_codebase_rag/lance_optimize.py +148 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag/pipeline.py +63 -9
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1/java_codebase_rag.egg-info}/PKG-INFO +6 -5
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag.egg-info/SOURCES.txt +6 -2
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag.egg-info/requires.txt +2 -1
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag.egg-info/top_level.txt +1 -1
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_index_flow_lancedb.py +22 -4
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_ontology.py +5 -2
- java_codebase_rag-0.5.3/kuzu_queries.py → java_codebase_rag-0.6.1/ladybug_queries.py +62 -56
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/mcp_v2.py +51 -26
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/pr_analysis.py +1 -1
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/pyproject.toml +5 -4
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/search_lancedb.py +8 -8
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/server.py +116 -68
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_assign_endpoint_client_extraction.py +6 -6
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_ast_graph_build.py +68 -51
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_bank_chat_brownfield_integration.py +16 -16
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_brownfield_clients.py +69 -12
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_brownfield_routes.py +14 -14
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_call_edges_e2e.py +28 -28
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_call_graph_receiver_resolution.py +11 -11
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_call_graph_smoke_roundtrip.py +49 -49
- java_codebase_rag-0.6.1/tests/test_call_invariant.py +34 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_cli_quiet_parity.py +4 -4
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_client_hint_recovery.py +7 -7
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_client_node_extraction.py +6 -6
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_client_role_rename.py +18 -18
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_config.py +71 -4
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_cross_service_resolution_flag.py +19 -19
- java_codebase_rag-0.6.1/tests/test_fd_limit.py +78 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_feign_not_exposer.py +14 -14
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_incremental_graph.py +419 -78
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_installer.py +91 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_java_codebase_rag_cli.py +84 -29
- java_codebase_rag-0.5.3/tests/test_kuzu_queries.py → java_codebase_rag-0.6.1/tests/test_ladybug_queries.py +103 -103
- java_codebase_rag-0.6.1/tests/test_lance_optimize.py +165 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_lancedb_e2e.py +23 -13
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_mcp_hints.py +155 -155
- java_codebase_rag-0.6.1/tests/test_mcp_server_project_root.py +81 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_mcp_tools.py +17 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_mcp_v2.py +274 -274
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_mcp_v2_compose.py +151 -151
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_microservice_scope.py +20 -13
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_pr_analysis.py +24 -24
- java_codebase_rag-0.5.3/tests/test_call_invariant.py +0 -34
- java_codebase_rag-0.5.3/tests/test_mcp_server_project_root.py +0 -25
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/LICENSE +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/brownfield_events.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/chunk_heuristics.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/index_common.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag/__init__.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag/cli_format.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag/cli_progress.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag/install_data/agents/explorer-rag-enhanced.md +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag/install_data/skills/explore-codebase/SKILL.md +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag.egg-info/dependency_links.txt +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag.egg-info/entry_points.txt +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_index_v1_common.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/mcp_hints.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/path_filtering.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/setup.cfg +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_agent_skills_static.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_ast_java_calls.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_ast_java_capabilities.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_brownfield_events.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_brownfield_overrides.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_call_edge_matching.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_cli_progress_stdout_invariant.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_edge_navigation_doc.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_graph_enrich.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_installer_integration.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_meta_chain_core.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_outgoing_call_extraction.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_packaging_metadata.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_path_filtering.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_resolve_routes_messaging_layer_c.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_route_extraction.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_schema_consistency.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_search_lancedb.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_search_lancedb_capability.py +0 -0
- {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_string_value_atoms.py +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: java-codebase-rag
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.1
|
|
4
4
|
Summary: MCP server for semantic + structural search over Java codebases
|
|
5
5
|
Author: HumanBean17
|
|
6
6
|
License-Expression: MIT
|
|
7
7
|
Project-URL: Homepage, https://github.com/HumanBean17/java-codebase-rag
|
|
8
8
|
Project-URL: Repository, https://github.com/HumanBean17/java-codebase-rag
|
|
9
9
|
Project-URL: Issues, https://github.com/HumanBean17/java-codebase-rag/issues
|
|
10
|
-
Keywords: mcp,java,rag,code-search,graph,lancedb,
|
|
10
|
+
Keywords: mcp,java,rag,code-search,graph,lancedb,ladybug
|
|
11
11
|
Classifier: Development Status :: 3 - Alpha
|
|
12
12
|
Classifier: Intended Audience :: Developers
|
|
13
13
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -19,7 +19,7 @@ Requires-Python: >=3.11
|
|
|
19
19
|
Description-Content-Type: text/markdown
|
|
20
20
|
License-File: LICENSE
|
|
21
21
|
Requires-Dist: cocoindex[lancedb]<2,>=1.0.0a43
|
|
22
|
-
Requires-Dist:
|
|
22
|
+
Requires-Dist: ladybug<0.18,>=0.17.1
|
|
23
23
|
Requires-Dist: lancedb<0.31,>=0.25.3
|
|
24
24
|
Requires-Dist: mcp<2,>=1.27.0
|
|
25
25
|
Requires-Dist: numpy<2.5,>=1.26.4
|
|
@@ -35,6 +35,7 @@ Requires-Dist: unidiff<1,>=0.7.3
|
|
|
35
35
|
Provides-Extra: dev
|
|
36
36
|
Requires-Dist: pytest>=7; extra == "dev"
|
|
37
37
|
Requires-Dist: pytest-asyncio>=0.21; extra == "dev"
|
|
38
|
+
Requires-Dist: pytest-xdist>=3; extra == "dev"
|
|
38
39
|
Requires-Dist: ruff>=0.4; extra == "dev"
|
|
39
40
|
Dynamic: license-file
|
|
40
41
|
|
|
@@ -103,7 +104,7 @@ java-codebase-rag install
|
|
|
103
104
|
java-codebase-rag install --non-interactive --agent claude-code
|
|
104
105
|
```
|
|
105
106
|
|
|
106
|
-
After `pip install --upgrade java-codebase-rag`, run `java-codebase-rag update` to refresh shipped artifacts.
|
|
107
|
+
After `pip install --upgrade java-codebase-rag`, run `java-codebase-rag update` to refresh shipped artifacts and catch up the index (Lance + graph).
|
|
107
108
|
|
|
108
109
|
### Manual registration
|
|
109
110
|
|
|
@@ -235,7 +236,7 @@ Run `java-codebase-rag --help` to list grouped subcommands. Operator playbook wi
|
|
|
235
236
|
| Group | Subcommand | What it does |
|
|
236
237
|
|---|---|---|
|
|
237
238
|
| Setup | `install` | Interactive setup wizard: config, MCP registration, skill/agent deployment, indexing. |
|
|
238
|
-
| Setup | `update` | Refresh shipped artifacts (skill, agent, MCP entry) after pip upgrade. |
|
|
239
|
+
| Setup | `update` | Refresh shipped artifacts (skill, agent, MCP entry) + incremental Lance/graph catch-up after pip upgrade. |
|
|
239
240
|
| Lifecycle | `init` | First-time index. Refuses if artifacts already exist. |
|
|
240
241
|
| Lifecycle | `increment` | CocoIndex catch-up + incremental Kuzu update. `--vectors-only` for Lance only. |
|
|
241
242
|
| Lifecycle | `reprocess` | Full Lance + Kuzu rebuild. `--vectors-only` / `--graph-only` for a single phase. |
|
|
@@ -63,7 +63,7 @@ java-codebase-rag install
|
|
|
63
63
|
java-codebase-rag install --non-interactive --agent claude-code
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
-
After `pip install --upgrade java-codebase-rag`, run `java-codebase-rag update` to refresh shipped artifacts.
|
|
66
|
+
After `pip install --upgrade java-codebase-rag`, run `java-codebase-rag update` to refresh shipped artifacts and catch up the index (Lance + graph).
|
|
67
67
|
|
|
68
68
|
### Manual registration
|
|
69
69
|
|
|
@@ -195,7 +195,7 @@ Run `java-codebase-rag --help` to list grouped subcommands. Operator playbook wi
|
|
|
195
195
|
| Group | Subcommand | What it does |
|
|
196
196
|
|---|---|---|
|
|
197
197
|
| Setup | `install` | Interactive setup wizard: config, MCP registration, skill/agent deployment, indexing. |
|
|
198
|
-
| Setup | `update` | Refresh shipped artifacts (skill, agent, MCP entry) after pip upgrade. |
|
|
198
|
+
| Setup | `update` | Refresh shipped artifacts (skill, agent, MCP entry) + incremental Lance/graph catch-up after pip upgrade. |
|
|
199
199
|
| Lifecycle | `init` | First-time index. Refuses if artifacts already exist. |
|
|
200
200
|
| Lifecycle | `increment` | CocoIndex catch-up + incremental Kuzu update. `--vectors-only` for Lance only. |
|
|
201
201
|
| Lifecycle | `reprocess` | Full Lance + Kuzu rebuild. `--vectors-only` / `--graph-only` for a single phase. |
|
|
@@ -13,6 +13,7 @@ Python with no tree-sitter dependency.
|
|
|
13
13
|
from __future__ import annotations
|
|
14
14
|
|
|
15
15
|
import posixpath
|
|
16
|
+
import sys
|
|
16
17
|
from dataclasses import dataclass, field
|
|
17
18
|
from functools import lru_cache
|
|
18
19
|
from typing import Iterable
|
|
@@ -325,7 +326,7 @@ class RouteDecl:
|
|
|
325
326
|
filename: str
|
|
326
327
|
start_line: int
|
|
327
328
|
end_line: int
|
|
328
|
-
# brownfield / B2a composition (graph_enrich.resolve_routes_for_method); not a
|
|
329
|
+
# brownfield / B2a composition (graph_enrich.resolve_routes_for_method); not a graph column.
|
|
329
330
|
route_source_layer: str = "builtin"
|
|
330
331
|
|
|
331
332
|
|
|
@@ -1642,9 +1643,17 @@ def _parse_codebase_http_client_annotation(
|
|
|
1642
1643
|
pairs, _ = _annotation_kv_nodes(ann, src)
|
|
1643
1644
|
client_kind = ""
|
|
1644
1645
|
if "clientKind" in pairs:
|
|
1645
|
-
val,
|
|
1646
|
-
if val and
|
|
1647
|
-
|
|
1646
|
+
val, vkind = _annotation_value(pairs["clientKind"], src)
|
|
1647
|
+
if val and vkind == "enum":
|
|
1648
|
+
kind_val = str(val)
|
|
1649
|
+
from java_ontology import VALID_CLIENT_KINDS # deferred: java_ontology imports ast_java
|
|
1650
|
+
if kind_val in VALID_CLIENT_KINDS:
|
|
1651
|
+
client_kind = kind_val
|
|
1652
|
+
else:
|
|
1653
|
+
print(
|
|
1654
|
+
f"[lancedb-mcp] CodebaseHttpClient: invalid clientKind {kind_val!r} — ignored",
|
|
1655
|
+
file=sys.stderr,
|
|
1656
|
+
)
|
|
1648
1657
|
target_service = ""
|
|
1649
1658
|
if "targetService" in pairs:
|
|
1650
1659
|
atoms = _string_value_atoms(pairs["targetService"], src, ctx)
|
|
@@ -1714,9 +1723,17 @@ def _parse_codebase_producer_annotation(
|
|
|
1714
1723
|
client_kind = "kafka_send"
|
|
1715
1724
|
kind_node = pairs.get("producerKind") or pairs.get("clientKind")
|
|
1716
1725
|
if kind_node is not None:
|
|
1717
|
-
val,
|
|
1718
|
-
if val and
|
|
1719
|
-
|
|
1726
|
+
val, vkind = _annotation_value(kind_node, src)
|
|
1727
|
+
if val and vkind == "enum":
|
|
1728
|
+
kind_val = str(val)
|
|
1729
|
+
from java_ontology import VALID_PRODUCER_KINDS # deferred: java_ontology imports ast_java
|
|
1730
|
+
if kind_val in VALID_PRODUCER_KINDS:
|
|
1731
|
+
client_kind = kind_val
|
|
1732
|
+
else:
|
|
1733
|
+
print(
|
|
1734
|
+
f"[lancedb-mcp] CodebaseProducer: invalid producerKind {kind_val!r} — ignored",
|
|
1735
|
+
file=sys.stderr,
|
|
1736
|
+
)
|
|
1720
1737
|
topic = ""
|
|
1721
1738
|
if "topic" in pairs:
|
|
1722
1739
|
atoms = _string_value_atoms(pairs["topic"], src, ctx)
|