java-codebase-rag 0.5.1__py3-none-any.whl → 0.5.3__py3-none-any.whl

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.
build_ast_graph.py CHANGED
@@ -3422,12 +3422,10 @@ def incremental_rebuild(
3422
3422
  pass6_match_edges(tables, verbose=verbose)
3423
3423
  write_kuzu(kuzu_path, tables, source_root=source_root, verbose=verbose)
3424
3424
 
3425
- n_files = _init_hash_tracker(source_root, kuzu_path)
3426
-
3427
3425
  return IncrementalResult(
3428
3426
  mode="full_fallback",
3429
3427
  files_changed=0,
3430
- files_added=n_files,
3428
+ files_added=0,
3431
3429
  files_removed=0,
3432
3430
  dependents_reprocessed=0,
3433
3431
  elapsed_sec=time.time() - t_start,
@@ -3648,12 +3646,10 @@ def _fallback_to_full(source_root: Path, kuzu_path: Path, verbose: bool, t_start
3648
3646
  pass6_match_edges(tables, verbose=verbose)
3649
3647
  write_kuzu(kuzu_path, tables, source_root=source_root, verbose=verbose)
3650
3648
 
3651
- n_files = _init_hash_tracker(source_root, kuzu_path)
3652
-
3653
3649
  return IncrementalResult(
3654
3650
  mode="full_fallback",
3655
3651
  files_changed=0,
3656
- files_added=n_files,
3652
+ files_added=0,
3657
3653
  files_removed=0,
3658
3654
  dependents_reprocessed=0,
3659
3655
  elapsed_sec=time.time() - t_start,
@@ -3785,6 +3781,7 @@ def write_kuzu(
3785
3781
  _verbose_stderr_line(f"[graph] writing · routes/exposes written in {time.time() - t2:.2f}s")
3786
3782
  _write_meta(conn, tables, source_root)
3787
3783
  conn.close()
3784
+ _init_hash_tracker(source_root, db_path)
3788
3785
 
3789
3786
 
3790
3787
  # ---------- CLI ----------
@@ -128,6 +128,10 @@ def run_cocoindex_update(
128
128
  stdout="",
129
129
  stderr=f"java_index_flow_lancedb.py not found under {bd}",
130
130
  )
131
+ # Set CocoIndex concurrency limits to prevent "too many open files" error
132
+ # See: https://github.com/HumanBean17/java-codebase-rag/issues/293
133
+ env = env.copy()
134
+ env.setdefault("COCOINDEX_SOURCE_MAX_INFLIGHT_ROWS", "256")
131
135
  cmd: list[str] = [str(exe), "update", COCOINDEX_TARGET]
132
136
  if full_reprocess:
133
137
  cmd.extend(["--full-reprocess", "-f"])
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: java-codebase-rag
3
- Version: 0.5.1
3
+ Version: 0.5.3
4
4
  Summary: MCP server for semantic + structural search over Java codebases
5
5
  Author: HumanBean17
6
6
  License-Expression: MIT
@@ -84,6 +84,31 @@ pip install java-codebase-rag
84
84
  Python **3.11+** required. After install, `java-codebase-rag --help` should print the CLI groups.
85
85
  The package includes the CocoIndex lifecycle dependency used by `init`, `increment`, `reprocess`, and `erase`.
86
86
 
87
+ ### Interactive setup (recommended)
88
+
89
+ Run `java-codebase-rag install` from your Java project root to launch an interactive setup wizard that:
90
+
91
+ 1. Detects Java source directories (Maven/Gradle modules)
92
+ 2. Configures the embedding model (auto-downloads ~90MB or uses a local path)
93
+ 3. Selects agent hosts (Claude Code, Qwen Code, GigaCode)
94
+ 4. Deploys MCP registration, skill, and agent artifacts
95
+ 5. Generates `.java-codebase-rag.yml` configuration
96
+ 6. Runs `init` to build the index
97
+
98
+ ```bash
99
+ # Interactive mode
100
+ java-codebase-rag install
101
+
102
+ # Non-interactive mode (for CI/automation)
103
+ java-codebase-rag install --non-interactive --agent claude-code
104
+ ```
105
+
106
+ After `pip install --upgrade java-codebase-rag`, run `java-codebase-rag update` to refresh shipped artifacts.
107
+
108
+ ### Manual registration
109
+
110
+ If you prefer manual configuration, see [`docs/JAVA-CODEBASE-RAG-CLI.md`](./docs/JAVA-CODEBASE-RAG-CLI.md) for the full CLI reference.
111
+
87
112
  > **Stability disclaimer.** This package does **not** promise backward compatibility. MCP tool contracts, env vars, Lance/Kuzu schemas, config files, and Python APIs may change without a deprecation period. Track `main` and rebuild indexes when ontology or embedding settings change.
88
113
 
89
114
  ---
@@ -124,7 +149,9 @@ If vector hits come back and graph expansion adds neighbor symbols, the install
124
149
 
125
150
  ## Wire into an MCP host
126
151
 
127
- ### Claude Code
152
+ > **Quick setup:** Run `java-codebase-rag install` from your Java project root. The interactive wizard handles MCP registration, skill deployment, and configuration for Claude Code, Qwen Code, and GigaCode in one step.
153
+
154
+ ### Claude Code (manual)
128
155
 
129
156
  With the package installed, the console script `java-codebase-rag-mcp` is on your `PATH`. Register it project-scoped:
130
157
 
@@ -207,6 +234,8 @@ Run `java-codebase-rag --help` to list grouped subcommands. Operator playbook wi
207
234
 
208
235
  | Group | Subcommand | What it does |
209
236
  |---|---|---|
237
+ | 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. |
210
239
  | Lifecycle | `init` | First-time index. Refuses if artifacts already exist. |
211
240
  | Lifecycle | `increment` | CocoIndex catch-up + incremental Kuzu update. `--vectors-only` for Lance only. |
212
241
  | Lifecycle | `reprocess` | Full Lance + Kuzu rebuild. `--vectors-only` / `--graph-only` for a single phase. |
@@ -1,6 +1,6 @@
1
1
  ast_java.py,sha256=OKoH7oX6L7AEEd6UY-spK8BPtWYY1T_4esrTC5VtoK8,98881
2
2
  brownfield_events.py,sha256=yxXkKDgMb3VPtaiakGzncHM_EGnda8xIue6w90yYp8s,2055
3
- build_ast_graph.py,sha256=KY5rpqWR7UafvAcIv0ubSz6jiYA8I5ZGqm_SKIFJulE,148770
3
+ build_ast_graph.py,sha256=1uqgFK2ebBdEc2QcAYK5vU4afOb95jU3zht5FracCkI,148683
4
4
  chunk_heuristics.py,sha256=aQk2NOKxzUdqoUAJUO3G3LE0MN_bYZWNLQ0tkmj5uts,1813
5
5
  graph_enrich.py,sha256=m3cksCHLqLHhA0Y-TLodbm09YfSJZjlTDN0Z51DiP2c,63317
6
6
  index_common.py,sha256=HT6FKHFJ084eFvd3fR1j8z8gf4eWoPHVW8GXLpw464I,285
@@ -13,19 +13,19 @@ mcp_v2.py,sha256=JFe62sYzJ2XiE6L3wAH8XG9_Ya2oOeJQ_hkiTmXFnSE,79065
13
13
  path_filtering.py,sha256=-oX16SYLWYwX9pcV1fu3vbVTIhY1GzFflT7J1E2tqPY,17122
14
14
  pr_analysis.py,sha256=Zaq90xYgMgrReV3vCGcFhOkK61gIRMAAIgs7ev-rJG4,18410
15
15
  search_lancedb.py,sha256=-XgtpbJ_3zDLiZ_vGKXjaLpl7RlvgyzUb7oAGoWkXO0,36754
16
- server.py,sha256=c4Bo0FXPoKP2AwIVP_wiv0XENkmKchLHf0QrQPUUgq4,28645
16
+ server.py,sha256=1ZEDkRAOMs0ORncMh9CP2ICCTGEuAe2qmptytQ4QYYU,28862
17
17
  java_codebase_rag/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
18
18
  java_codebase_rag/cli.py,sha256=WW-DsskSGr-d0JXBLkj4IdAa2OsAcLz5e54_DWvD9Sk,33872
19
19
  java_codebase_rag/cli_format.py,sha256=arU7P9W6Fvm7X_wzR1wJ8EfyxK1rDP_ESEhdA0ub4Mo,2579
20
20
  java_codebase_rag/cli_progress.py,sha256=9jCqEagYOXs32SYVA31_sOCrONvYy7cl1CrdBD2Pg44,3168
21
21
  java_codebase_rag/config.py,sha256=1BkRQsdY2ohZ8IWmbTG3WHgotVVUIrRTN537A1QAoCQ,15352
22
22
  java_codebase_rag/installer.py,sha256=flj330ZPSBrO2iw_yuNFBILHOTVbarMufYwqjZ8JzN0,42778
23
- java_codebase_rag/pipeline.py,sha256=nMXwX9r7HG9yPstrm7y_vfOMUZuDmw5_1lJTAfR-jwI,9488
23
+ java_codebase_rag/pipeline.py,sha256=D9SNdffcmJLoKHnNZLWZzfor1fI4bkkpJkU0KFsqfdA,9722
24
24
  java_codebase_rag/install_data/agents/explorer-rag-enhanced.md,sha256=APl9d-No12qZNZLjU7mwNRwxHIgnT3ZtQZiD4clWlyU,14413
25
25
  java_codebase_rag/install_data/skills/explore-codebase/SKILL.md,sha256=pIM-Xdwq_fXkhhBJCdb-fA2nes5c_mMPcdUXb7Adyxo,12040
26
- java_codebase_rag-0.5.1.dist-info/licenses/LICENSE,sha256=gxvtiHtuviR_q8ZAjWw-QTcF3DyPzg6ZY-lQrr8OPpw,1068
27
- java_codebase_rag-0.5.1.dist-info/METADATA,sha256=fofzZGOJw9cWqjJ0pLv1pJC49TA4LZM4kmahoyek4bc,15457
28
- java_codebase_rag-0.5.1.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
29
- java_codebase_rag-0.5.1.dist-info/entry_points.txt,sha256=mVVQJa0n73OWfhHXYCDoPRrWin_LJhH2Rn0CkJ2iax4,101
30
- java_codebase_rag-0.5.1.dist-info/top_level.txt,sha256=5aIYoMkvJvvfXvf4iHn2OeSIM7PZXP-0j94eNESnwMw,242
31
- java_codebase_rag-0.5.1.dist-info/RECORD,,
26
+ java_codebase_rag-0.5.3.dist-info/licenses/LICENSE,sha256=gxvtiHtuviR_q8ZAjWw-QTcF3DyPzg6ZY-lQrr8OPpw,1068
27
+ java_codebase_rag-0.5.3.dist-info/METADATA,sha256=iI08-selyGz8kYjgqBsWbt4Z9e7MeQd_aF7kHFPu65Q,16807
28
+ java_codebase_rag-0.5.3.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
29
+ java_codebase_rag-0.5.3.dist-info/entry_points.txt,sha256=mVVQJa0n73OWfhHXYCDoPRrWin_LJhH2Rn0CkJ2iax4,101
30
+ java_codebase_rag-0.5.3.dist-info/top_level.txt,sha256=5aIYoMkvJvvfXvf4iHn2OeSIM7PZXP-0j94eNESnwMw,242
31
+ java_codebase_rag-0.5.3.dist-info/RECORD,,
server.py CHANGED
@@ -162,6 +162,9 @@ def _cocoindex_subprocess_env(project_root: Path) -> dict[str, str]:
162
162
  idx = os.environ.get("JAVA_CODEBASE_RAG_INDEX_DIR", "").strip()
163
163
  if idx:
164
164
  sub_env["JAVA_CODEBASE_RAG_INDEX_DIR"] = str(Path(idx).expanduser().resolve())
165
+ # Set CocoIndex concurrency limits to prevent "too many open files" error
166
+ # See: https://github.com/HumanBean17/java-codebase-rag/issues/293
167
+ sub_env.setdefault("COCOINDEX_SOURCE_MAX_INFLIGHT_ROWS", "256")
165
168
  return sub_env
166
169
 
167
170