java-codebase-rag 0.3.1__tar.gz → 0.4.0__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 (79) hide show
  1. {java_codebase_rag-0.3.1/java_codebase_rag.egg-info → java_codebase_rag-0.4.0}/PKG-INFO +10 -4
  2. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/README.md +4 -3
  3. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/ast_java.py +1 -1
  4. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/build_ast_graph.py +833 -64
  5. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/graph_enrich.py +32 -0
  6. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/java_codebase_rag/cli.py +74 -5
  7. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/java_codebase_rag/config.py +70 -2
  8. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/java_codebase_rag/pipeline.py +55 -0
  9. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0/java_codebase_rag.egg-info}/PKG-INFO +10 -4
  10. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/java_codebase_rag.egg-info/SOURCES.txt +4 -0
  11. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/java_codebase_rag.egg-info/requires.txt +6 -0
  12. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/pyproject.toml +9 -1
  13. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/server.py +58 -6
  14. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_agent_skills_static.py +7 -7
  15. java_codebase_rag-0.4.0/tests/test_config.py +241 -0
  16. java_codebase_rag-0.4.0/tests/test_incremental_graph.py +780 -0
  17. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_java_codebase_rag_cli.py +127 -4
  18. java_codebase_rag-0.4.0/tests/test_mcp_server_project_root.py +25 -0
  19. java_codebase_rag-0.4.0/tests/test_microservice_scope.py +145 -0
  20. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/LICENSE +0 -0
  21. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/brownfield_events.py +0 -0
  22. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/chunk_heuristics.py +0 -0
  23. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/index_common.py +0 -0
  24. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/java_codebase_rag/__init__.py +0 -0
  25. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/java_codebase_rag/cli_format.py +0 -0
  26. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/java_codebase_rag/cli_progress.py +0 -0
  27. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/java_codebase_rag.egg-info/dependency_links.txt +0 -0
  28. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/java_codebase_rag.egg-info/entry_points.txt +0 -0
  29. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/java_codebase_rag.egg-info/top_level.txt +0 -0
  30. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/java_index_flow_lancedb.py +0 -0
  31. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/java_index_v1_common.py +0 -0
  32. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/java_ontology.py +0 -0
  33. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/kuzu_queries.py +0 -0
  34. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/mcp_hints.py +0 -0
  35. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/mcp_v2.py +0 -0
  36. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/path_filtering.py +0 -0
  37. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/pr_analysis.py +0 -0
  38. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/search_lancedb.py +0 -0
  39. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/setup.cfg +0 -0
  40. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_assign_endpoint_client_extraction.py +0 -0
  41. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_ast_graph_build.py +0 -0
  42. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_ast_java_calls.py +0 -0
  43. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_ast_java_capabilities.py +0 -0
  44. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_bank_chat_brownfield_integration.py +0 -0
  45. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_brownfield_clients.py +0 -0
  46. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_brownfield_events.py +0 -0
  47. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_brownfield_overrides.py +0 -0
  48. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_brownfield_routes.py +0 -0
  49. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_call_edge_matching.py +0 -0
  50. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_call_edges_e2e.py +0 -0
  51. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_call_graph_receiver_resolution.py +0 -0
  52. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_call_graph_smoke_roundtrip.py +0 -0
  53. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_call_invariant.py +0 -0
  54. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_cli_progress_stdout_invariant.py +0 -0
  55. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_cli_quiet_parity.py +0 -0
  56. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_client_hint_recovery.py +0 -0
  57. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_client_node_extraction.py +0 -0
  58. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_client_role_rename.py +0 -0
  59. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_cross_service_resolution_flag.py +0 -0
  60. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_edge_navigation_doc.py +0 -0
  61. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_feign_not_exposer.py +0 -0
  62. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_graph_enrich.py +0 -0
  63. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_kuzu_queries.py +0 -0
  64. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_lancedb_e2e.py +0 -0
  65. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_mcp_hints.py +0 -0
  66. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_mcp_tools.py +0 -0
  67. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_mcp_v2.py +0 -0
  68. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_mcp_v2_compose.py +0 -0
  69. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_meta_chain_core.py +0 -0
  70. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_outgoing_call_extraction.py +0 -0
  71. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_packaging_metadata.py +0 -0
  72. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_path_filtering.py +0 -0
  73. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_pr_analysis.py +0 -0
  74. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_resolve_routes_messaging_layer_c.py +0 -0
  75. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_route_extraction.py +0 -0
  76. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_schema_consistency.py +0 -0
  77. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_search_lancedb.py +0 -0
  78. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_search_lancedb_capability.py +0 -0
  79. {java_codebase_rag-0.3.1 → java_codebase_rag-0.4.0}/tests/test_string_value_atoms.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: java-codebase-rag
3
- Version: 0.3.1
3
+ Version: 0.4.0
4
4
  Summary: MCP server for semantic + structural search over Java codebases
5
5
  Author: HumanBean17
6
6
  License-Expression: MIT
@@ -29,7 +29,12 @@ Requires-Dist: PyYAML<7,>=6.0.3
29
29
  Requires-Dist: sentence-transformers<6,>=5.4.0
30
30
  Requires-Dist: tree-sitter<0.26,>=0.25.2
31
31
  Requires-Dist: tree-sitter-java<0.24,>=0.23.5
32
+ Requires-Dist: pydantic<3,>=2.0
32
33
  Requires-Dist: unidiff<1,>=0.7.3
34
+ Provides-Extra: dev
35
+ Requires-Dist: pytest>=7; extra == "dev"
36
+ Requires-Dist: pytest-asyncio>=0.21; extra == "dev"
37
+ Requires-Dist: ruff>=0.4; extra == "dev"
33
38
  Dynamic: license-file
34
39
 
35
40
  # java-codebase-rag
@@ -126,7 +131,9 @@ With the package installed, the console script `java-codebase-rag-mcp` is on you
126
131
  claude mcp add --transport stdio java-codebase-rag -- java-codebase-rag-mcp
127
132
  ```
128
133
 
129
- Then set env vars (`JAVA_CODEBASE_RAG_INDEX_DIR`, `JAVA_CODEBASE_RAG_SOURCE_ROOT`, `SBERT_MODEL`, …) in `.mcp.json` or your shell profile. For a project-scoped `.mcp.json` template, see [`mcp.json.example`](./mcp.json.example). Official docs: [Claude Code settings](https://docs.anthropic.com/en/docs/claude-code/settings).
134
+ **Zero-env-var configuration:** The tool automatically walks up the directory tree to find `.java-codebase-rag.yml`, so you don't need to set `JAVA_CODEBASE_RAG_SOURCE_ROOT` when working from within a project. Just place the config file at your project root and the tool will find it. See [`mcp.json.example`](./mcp.json.example) for the minimal configuration.
135
+
136
+ If you need to override defaults, you can set env vars (`JAVA_CODEBASE_RAG_INDEX_DIR`, `JAVA_CODEBASE_RAG_SOURCE_ROOT`, `SBERT_MODEL`, …) in `.mcp.json` or your shell profile. For a full configuration template, see [`mcp.json.example`](./mcp.json.example). Official docs: [Claude Code settings](https://docs.anthropic.com/en/docs/claude-code/settings).
130
137
 
131
138
  ### Claude Desktop
132
139
 
@@ -200,7 +207,7 @@ Run `java-codebase-rag --help` to list grouped subcommands. Operator playbook wi
200
207
  | Group | Subcommand | What it does |
201
208
  |---|---|---|
202
209
  | Lifecycle | `init` | First-time index. Refuses if artifacts already exist. |
203
- | Lifecycle | `increment` | CocoIndex catch-up (Lance only); Kuzu stays stale until `reprocess`. |
210
+ | Lifecycle | `increment` | CocoIndex catch-up + incremental Kuzu update. `--vectors-only` for Lance only. |
204
211
  | Lifecycle | `reprocess` | Full Lance + Kuzu rebuild. `--vectors-only` / `--graph-only` for a single phase. |
205
212
  | Lifecycle | `erase` | Delete index artifacts. Requires `--yes` or TTY confirm. |
206
213
  | Introspection | `meta`, `tables`, `diagnose-ignore`, `unresolved-calls` | Health, table listing, ignore-layer diagnostics, receiver-failure call sites. |
@@ -244,5 +251,4 @@ The default embedding model is `sentence-transformers/all-MiniLM-L6-v2` (downloa
244
251
 
245
252
  - `get_service_topology` — microservice-level summary aggregating `HTTP_CALLS` / `ASYNC_CALLS`.
246
253
  - Agentic routing layer (query classifier → vector / graph / both).
247
- - Incremental Kuzu updates (per-changed-file) — see [`propose/TIER2-INCREMENTAL-REBUILD-PROPOSE.md`](./propose/TIER2-INCREMENTAL-REBUILD-PROPOSE.md) and [`propose/INDEX-AUTO-MODE-PROPOSE.md`](./propose/INDEX-AUTO-MODE-PROPOSE.md).
248
254
  - Optional `codegraph_nodes` LanceDB table embedding symbol summaries so the graph itself is vector-searchable.
@@ -92,7 +92,9 @@ With the package installed, the console script `java-codebase-rag-mcp` is on you
92
92
  claude mcp add --transport stdio java-codebase-rag -- java-codebase-rag-mcp
93
93
  ```
94
94
 
95
- Then set env vars (`JAVA_CODEBASE_RAG_INDEX_DIR`, `JAVA_CODEBASE_RAG_SOURCE_ROOT`, `SBERT_MODEL`, …) in `.mcp.json` or your shell profile. For a project-scoped `.mcp.json` template, see [`mcp.json.example`](./mcp.json.example). Official docs: [Claude Code settings](https://docs.anthropic.com/en/docs/claude-code/settings).
95
+ **Zero-env-var configuration:** The tool automatically walks up the directory tree to find `.java-codebase-rag.yml`, so you don't need to set `JAVA_CODEBASE_RAG_SOURCE_ROOT` when working from within a project. Just place the config file at your project root and the tool will find it. See [`mcp.json.example`](./mcp.json.example) for the minimal configuration.
96
+
97
+ If you need to override defaults, you can set env vars (`JAVA_CODEBASE_RAG_INDEX_DIR`, `JAVA_CODEBASE_RAG_SOURCE_ROOT`, `SBERT_MODEL`, …) in `.mcp.json` or your shell profile. For a full configuration template, see [`mcp.json.example`](./mcp.json.example). Official docs: [Claude Code settings](https://docs.anthropic.com/en/docs/claude-code/settings).
96
98
 
97
99
  ### Claude Desktop
98
100
 
@@ -166,7 +168,7 @@ Run `java-codebase-rag --help` to list grouped subcommands. Operator playbook wi
166
168
  | Group | Subcommand | What it does |
167
169
  |---|---|---|
168
170
  | Lifecycle | `init` | First-time index. Refuses if artifacts already exist. |
169
- | Lifecycle | `increment` | CocoIndex catch-up (Lance only); Kuzu stays stale until `reprocess`. |
171
+ | Lifecycle | `increment` | CocoIndex catch-up + incremental Kuzu update. `--vectors-only` for Lance only. |
170
172
  | Lifecycle | `reprocess` | Full Lance + Kuzu rebuild. `--vectors-only` / `--graph-only` for a single phase. |
171
173
  | Lifecycle | `erase` | Delete index artifacts. Requires `--yes` or TTY confirm. |
172
174
  | Introspection | `meta`, `tables`, `diagnose-ignore`, `unresolved-calls` | Health, table listing, ignore-layer diagnostics, receiver-failure call sites. |
@@ -210,5 +212,4 @@ The default embedding model is `sentence-transformers/all-MiniLM-L6-v2` (downloa
210
212
 
211
213
  - `get_service_topology` — microservice-level summary aggregating `HTTP_CALLS` / `ASYNC_CALLS`.
212
214
  - Agentic routing layer (query classifier → vector / graph / both).
213
- - Incremental Kuzu updates (per-changed-file) — see [`propose/TIER2-INCREMENTAL-REBUILD-PROPOSE.md`](./propose/TIER2-INCREMENTAL-REBUILD-PROPOSE.md) and [`propose/INDEX-AUTO-MODE-PROPOSE.md`](./propose/INDEX-AUTO-MODE-PROPOSE.md).
214
215
  - Optional `codegraph_nodes` LanceDB table embedding symbol summaries so the graph itself is vector-searchable.
@@ -83,7 +83,7 @@ _DTO_LOMBOK_ANNOTATIONS: frozenset[str] = frozenset({
83
83
  # Phase 11: `EDGE_SCHEMA` in `java_ontology.py` (canonical edge navigation schema; v14 re-index).
84
84
  # Phase 12: CALLS `callee_declaring_role`, supertype-walk dedup, pass3 unresolved counters (v15 re-index).
85
85
  # Bumps whenever extraction / enrichment semantics change.
86
- ONTOLOGY_VERSION = 16
86
+ ONTOLOGY_VERSION = 17
87
87
 
88
88
  ROLE_ANNOTATIONS: dict[str, str] = {
89
89
  # Spring Web