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.
Files changed (90) hide show
  1. {java_codebase_rag-0.5.3/java_codebase_rag.egg-info → java_codebase_rag-0.6.1}/PKG-INFO +6 -5
  2. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/README.md +2 -2
  3. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/ast_java.py +24 -7
  4. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/build_ast_graph.py +153 -94
  5. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/graph_enrich.py +3 -3
  6. java_codebase_rag-0.6.1/java_codebase_rag/_fdlimit.py +48 -0
  7. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag/cli.py +31 -28
  8. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag/config.py +40 -10
  9. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag/installer.py +99 -10
  10. java_codebase_rag-0.6.1/java_codebase_rag/lance_optimize.py +148 -0
  11. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag/pipeline.py +63 -9
  12. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1/java_codebase_rag.egg-info}/PKG-INFO +6 -5
  13. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag.egg-info/SOURCES.txt +6 -2
  14. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag.egg-info/requires.txt +2 -1
  15. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag.egg-info/top_level.txt +1 -1
  16. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_index_flow_lancedb.py +22 -4
  17. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_ontology.py +5 -2
  18. java_codebase_rag-0.5.3/kuzu_queries.py → java_codebase_rag-0.6.1/ladybug_queries.py +62 -56
  19. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/mcp_v2.py +51 -26
  20. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/pr_analysis.py +1 -1
  21. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/pyproject.toml +5 -4
  22. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/search_lancedb.py +8 -8
  23. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/server.py +116 -68
  24. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_assign_endpoint_client_extraction.py +6 -6
  25. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_ast_graph_build.py +68 -51
  26. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_bank_chat_brownfield_integration.py +16 -16
  27. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_brownfield_clients.py +69 -12
  28. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_brownfield_routes.py +14 -14
  29. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_call_edges_e2e.py +28 -28
  30. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_call_graph_receiver_resolution.py +11 -11
  31. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_call_graph_smoke_roundtrip.py +49 -49
  32. java_codebase_rag-0.6.1/tests/test_call_invariant.py +34 -0
  33. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_cli_quiet_parity.py +4 -4
  34. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_client_hint_recovery.py +7 -7
  35. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_client_node_extraction.py +6 -6
  36. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_client_role_rename.py +18 -18
  37. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_config.py +71 -4
  38. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_cross_service_resolution_flag.py +19 -19
  39. java_codebase_rag-0.6.1/tests/test_fd_limit.py +78 -0
  40. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_feign_not_exposer.py +14 -14
  41. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_incremental_graph.py +419 -78
  42. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_installer.py +91 -0
  43. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_java_codebase_rag_cli.py +84 -29
  44. java_codebase_rag-0.5.3/tests/test_kuzu_queries.py → java_codebase_rag-0.6.1/tests/test_ladybug_queries.py +103 -103
  45. java_codebase_rag-0.6.1/tests/test_lance_optimize.py +165 -0
  46. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_lancedb_e2e.py +23 -13
  47. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_mcp_hints.py +155 -155
  48. java_codebase_rag-0.6.1/tests/test_mcp_server_project_root.py +81 -0
  49. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_mcp_tools.py +17 -0
  50. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_mcp_v2.py +274 -274
  51. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_mcp_v2_compose.py +151 -151
  52. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_microservice_scope.py +20 -13
  53. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_pr_analysis.py +24 -24
  54. java_codebase_rag-0.5.3/tests/test_call_invariant.py +0 -34
  55. java_codebase_rag-0.5.3/tests/test_mcp_server_project_root.py +0 -25
  56. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/LICENSE +0 -0
  57. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/brownfield_events.py +0 -0
  58. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/chunk_heuristics.py +0 -0
  59. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/index_common.py +0 -0
  60. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag/__init__.py +0 -0
  61. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag/cli_format.py +0 -0
  62. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag/cli_progress.py +0 -0
  63. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag/install_data/agents/explorer-rag-enhanced.md +0 -0
  64. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag/install_data/skills/explore-codebase/SKILL.md +0 -0
  65. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag.egg-info/dependency_links.txt +0 -0
  66. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_codebase_rag.egg-info/entry_points.txt +0 -0
  67. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/java_index_v1_common.py +0 -0
  68. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/mcp_hints.py +0 -0
  69. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/path_filtering.py +0 -0
  70. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/setup.cfg +0 -0
  71. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_agent_skills_static.py +0 -0
  72. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_ast_java_calls.py +0 -0
  73. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_ast_java_capabilities.py +0 -0
  74. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_brownfield_events.py +0 -0
  75. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_brownfield_overrides.py +0 -0
  76. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_call_edge_matching.py +0 -0
  77. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_cli_progress_stdout_invariant.py +0 -0
  78. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_edge_navigation_doc.py +0 -0
  79. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_graph_enrich.py +0 -0
  80. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_installer_integration.py +0 -0
  81. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_meta_chain_core.py +0 -0
  82. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_outgoing_call_extraction.py +0 -0
  83. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_packaging_metadata.py +0 -0
  84. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_path_filtering.py +0 -0
  85. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_resolve_routes_messaging_layer_c.py +0 -0
  86. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_route_extraction.py +0 -0
  87. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_schema_consistency.py +0 -0
  88. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_search_lancedb.py +0 -0
  89. {java_codebase_rag-0.5.3 → java_codebase_rag-0.6.1}/tests/test_search_lancedb_capability.py +0 -0
  90. {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.5.3
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,kuzu
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: kuzu<0.12,>=0.11.3
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 Kuzu column.
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, _kind = _annotation_value(pairs["clientKind"], src)
1646
- if val and _kind == "enum":
1647
- client_kind = str(val)
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, _kind = _annotation_value(kind_node, src)
1718
- if val and _kind == "enum":
1719
- client_kind = str(val)
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)