java-codebase-rag 0.11.2__py3-none-any.whl → 0.12.0__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.
Files changed (37) hide show
  1. java_codebase_rag/_deprecation.py +103 -0
  2. java_codebase_rag/_version.py +2 -2
  3. java_codebase_rag/ast/ast_java.py +22 -0
  4. java_codebase_rag/ast/ast_kotlin.py +1794 -0
  5. java_codebase_rag/ast/chunk_heuristics.py +26 -5
  6. java_codebase_rag/ast/language.py +117 -0
  7. java_codebase_rag/cli.py +17 -17
  8. java_codebase_rag/cli_dispatch.py +251 -0
  9. java_codebase_rag/config.py +8 -8
  10. java_codebase_rag/eval/runner.py +3 -3
  11. java_codebase_rag/graph/build_ast_graph.py +130 -8
  12. java_codebase_rag/graph/graph_enrich.py +8 -5
  13. java_codebase_rag/graph/ladybug_queries.py +1 -1
  14. java_codebase_rag/graph/path_filtering.py +39 -7
  15. java_codebase_rag/index/java_index_flow_lancedb.py +160 -15
  16. java_codebase_rag/install_data/agents/explorer-rag-cli.md +6 -4
  17. java_codebase_rag/install_data/agents/explorer-rag-enhanced.md +4 -4
  18. java_codebase_rag/install_data/skills/explore-codebase/SKILL.md +4 -4
  19. java_codebase_rag/install_data/skills/explore-codebase-cli/SKILL.md +5 -5
  20. java_codebase_rag/installer.py +15 -15
  21. java_codebase_rag/jrag.py +25 -11
  22. java_codebase_rag/lance_optimize.py +7 -7
  23. java_codebase_rag/mcp/mcp_v2.py +2 -2
  24. java_codebase_rag/mcp/server.py +6 -4
  25. java_codebase_rag/pipeline.py +4 -4
  26. java_codebase_rag/progress.py +1 -1
  27. java_codebase_rag/search/search_lexical.py +1 -1
  28. java_codebase_rag/search/search_scoring.py +19 -5
  29. java_codebase_rag/watch/lock.py +1 -1
  30. java_codebase_rag/watch/watcher.py +45 -21
  31. {java_codebase_rag-0.11.2.dist-info → java_codebase_rag-0.12.0.dist-info}/METADATA +31 -22
  32. {java_codebase_rag-0.11.2.dist-info → java_codebase_rag-0.12.0.dist-info}/RECORD +36 -32
  33. java_codebase_rag-0.12.0.dist-info/entry_points.txt +5 -0
  34. java_codebase_rag-0.11.2.dist-info/entry_points.txt +0 -4
  35. {java_codebase_rag-0.11.2.dist-info → java_codebase_rag-0.12.0.dist-info}/WHEEL +0 -0
  36. {java_codebase_rag-0.11.2.dist-info → java_codebase_rag-0.12.0.dist-info}/licenses/LICENSE +0 -0
  37. {java_codebase_rag-0.11.2.dist-info → java_codebase_rag-0.12.0.dist-info}/top_level.txt +0 -0
@@ -3,10 +3,11 @@
3
3
  ``SourceWatcher`` observes the project source tree and, after a debounce window,
4
4
  re-runs the minimal reindex for the changed file types:
5
5
 
6
- * a ``.java`` change -> vectors THEN graph. The graph reindex runs as a
7
- subprocess under a copy-on-write snapshot (design §4.7) so concurrent graph
8
- reads keep being served from a sidecar copy while the single-writer
9
- subprocess overwrites the original. ``ladybug`` has no transactions and is
6
+ * a source-language change (``.java``; ``.kt`` when the kotlin grammar is
7
+ importable) -> vectors THEN graph. The graph reindex runs as a subprocess
8
+ under a copy-on-write snapshot (design §4.7) so concurrent graph reads keep
9
+ being served from a sidecar copy while the single-writer subprocess
10
+ overwrites the original. ``ladybug`` has no transactions and is
10
11
  single-writer, which is why graph builds are subprocesses and reads are
11
12
  served from a copy.
12
13
  * a matching ``.sql`` / ``.yml`` / ``.yaml`` resource change -> vectors only
@@ -20,7 +21,8 @@ the watchdog observer thread is never blocked.
20
21
  The cocoindex flow indexes three sets (``**/*.java``,
21
22
  ``**/src/main/resources/db/migration/*.sql``,
22
23
  ``**/src/main/resources/application*.yml``/``.yaml``). There is NO shared
23
- iterator (``iter_java_source_files`` yields ``.java`` only), so the watcher
24
+ iterator (``iter_source_files`` yields the registered source suffixes —
25
+ ``.java`` and ``.kt`` when the Kotlin grammar is installed), so the watcher
24
26
  defines this UNION and classifies each event path into a reindex kind.
25
27
 
26
28
  All status is reported via ``on_event(kind, detail)`` callbacks (kinds:
@@ -39,6 +41,7 @@ from watchdog.events import FileSystemEventHandler
39
41
  from watchdog.observers import Observer
40
42
  from watchdog.observers.polling import PollingObserver
41
43
 
44
+ from java_codebase_rag.ast.language import LANG_BACKENDS, backend_for
42
45
  from java_codebase_rag.graph.path_filtering import LayeredIgnore
43
46
  from java_codebase_rag.pipeline import (
44
47
  run_cocoindex_update,
@@ -52,9 +55,19 @@ if TYPE_CHECKING:
52
55
 
53
56
  log = logging.getLogger(__name__)
54
57
 
55
- # Suffixes the watcher treats as java sources. The non-java resource types are
56
- # matched by the glob helpers below (the cocoindex set has no shared iterator).
57
- INDEXED_SUFFIXES: tuple[str, ...] = (".java",)
58
+ # Suffixes the watcher treats as source files — derived from the language
59
+ # backend registry so this never drifts from what the graph builder parses.
60
+ # ``(".java", ".kt")`` when the kotlin grammar is importable; just
61
+ # ``(".java",)`` on a grammar-absent (e.g. graph-only) install. The non-source
62
+ # resource types (sql/yaml) are matched by the glob helpers below (the cocoindex
63
+ # set has no shared iterator).
64
+ INDEXED_SUFFIXES: tuple[str, ...] = tuple(
65
+ suffix for backend in LANG_BACKENDS.values() for suffix in backend.suffixes
66
+ )
67
+ # Reindex kinds that trigger a graph rebuild. The graph indexes every registered
68
+ # source language (java today, kotlin too when its grammar imports), so this is
69
+ # the set of backend ``language_id``s. sql/yaml are vectors-only (no graph row).
70
+ _GRAPH_INDEXED_KINDS: frozenset[str] = frozenset(LANG_BACKENDS.keys())
58
71
  _YAML_SUFFIXES: tuple[str, ...] = (".yml", ".yaml")
59
72
 
60
73
  # Project-relative anchored prefixes for the two non-java resource globs:
@@ -207,13 +220,15 @@ class SourceWatcher:
207
220
 
208
221
  # -- event classification (observer thread) ------------------------------
209
222
  #
210
- # The watcher fires on exactly the cocoindex-indexed set (``.java`` plus the
211
- # SQL/YAML resource patterns below) filtered through ``LayeredIgnore``.
212
- # ``target/generated-sources/**/*.java`` therefore correctly fires: generated
213
- # sources are first-class, cocoindex does NOT exclude ``target/``, so the
214
- # watcher must fire to keep them fresh. ``LayeredIgnore.is_ignored`` does NOT
215
- # prune build-output dirs (``target/``/``build``/``out``) -- that pruning lives
216
- # in ``iter_java_source_files``'s ``os.walk`` (``_is_build_output_dir``), used
223
+ # The watcher fires on exactly the indexed set: the source languages claimed
224
+ # by ``LANG_BACKENDS`` (``.java``; ``.kt`` when the kotlin grammar imports)
225
+ # plus the SQL/YAML resource patterns below, filtered through
226
+ # ``LayeredIgnore``. ``target/generated-sources/**/*.java`` therefore
227
+ # correctly fires: generated sources are first-class, cocoindex does NOT
228
+ # exclude ``target/``, so the watcher must fire to keep them fresh.
229
+ # ``LayeredIgnore.is_ignored`` does NOT prune build-output dirs
230
+ # (``target/``/``build``/``out``) -- that pruning lives in
231
+ # ``iter_source_files``'s ``os.walk`` (``_is_build_output_dir``), used
217
232
  # by the graph builder, not by cocoindex. (Compiled ``.class`` output under
218
233
  # ``target/`` doesn't match the ``.java`` suffix anyway.)
219
234
 
@@ -238,9 +253,16 @@ class SourceWatcher:
238
253
  rel = path.resolve().relative_to(self._source_root_resolved).as_posix()
239
254
  except ValueError:
240
255
  return set()
256
+ # Source languages (.java, .kt when registered) dispatch via the backend
257
+ # registry: a change yields its backend's ``language_id`` reindex kind,
258
+ # which triggers the graph rebuild (the subprocess graph builder re-walks
259
+ # the tree and parses each file through ``backend_for`` — so a ``.kt``
260
+ # change reprocesses via KotlinBackend). Unknown suffixes are not source
261
+ # files and fall through to the resource-glob checks below.
262
+ backend = backend_for(path)
263
+ if backend is not None:
264
+ return {backend.language_id}
241
265
  suffix = path.suffix.lower()
242
- if suffix == ".java":
243
- return {"java"}
244
266
  if suffix == ".sql":
245
267
  return {"sql"} if _is_migration_sql(rel) else set()
246
268
  if suffix in _YAML_SUFFIXES:
@@ -289,7 +311,8 @@ class SourceWatcher:
289
311
  # -- reindex (runs on the debounce worker thread) ------------------------
290
312
 
291
313
  def reindex(self, kinds: set[str]) -> None:
292
- """Run one debounced reindex: vectors always (when installed); graph only when java changed.
314
+ """Run one debounced reindex: vectors always (when installed); graph only when a
315
+ registered source language (java/kotlin) changed.
293
316
 
294
317
  COW lifecycle (design §4.7): the graph subprocess writes the ORIGINAL
295
318
  graph while reads are served from a sidecar copy. ``begin_graph_snapshot``
@@ -324,9 +347,10 @@ class SourceWatcher:
324
347
  vres = None
325
348
 
326
349
  graph_rc = 0
327
- if "java" in kinds:
328
- # Graph indexes java only; reindex under a COW snapshot so graph
329
- # reads continue (from the sidecar) during the subprocess write.
350
+ if kinds & _GRAPH_INDEXED_KINDS:
351
+ # The graph indexes every registered source language (java,
352
+ # kotlin when its grammar imports); reindex under a COW snapshot
353
+ # so graph reads continue (from the sidecar) during the write.
330
354
  self._emit("graph", {"kinds": kind_list})
331
355
  try:
332
356
  # begin/commit paired in this try/finally. begin_graph_snapshot
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: java-codebase-rag
3
- Version: 0.11.2
4
- Summary: MCP server for semantic + structural search over Java codebases
3
+ Version: 0.12.0
4
+ Summary: jrag (formerly java-codebase-rag) — MCP server + jrag CLI for semantic + structural search over Java/Kotlin codebases
5
5
  Author: HumanBean17
6
6
  License-Expression: MIT
7
- Project-URL: Homepage, https://github.com/HumanBean17/java-codebase-rag
8
- Project-URL: Repository, https://github.com/HumanBean17/java-codebase-rag
9
- Project-URL: Issues, https://github.com/HumanBean17/java-codebase-rag/issues
10
- Keywords: mcp,java,rag,code-search,graph,lancedb,ladybug
7
+ Project-URL: Homepage, https://github.com/HumanBean17/jrag
8
+ Project-URL: Repository, https://github.com/HumanBean17/jrag
9
+ Project-URL: Issues, https://github.com/HumanBean17/jrag/issues
10
+ Keywords: jrag,java,mcp,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
@@ -35,6 +35,7 @@ Requires-Dist: rich<16,>=14
35
35
  Requires-Dist: sentence-transformers<6,>=5.4.0; sys_platform != "darwin" or platform_machine != "x86_64"
36
36
  Requires-Dist: tree-sitter<0.26,>=0.25.2
37
37
  Requires-Dist: tree-sitter-java<0.24,>=0.23.5
38
+ Requires-Dist: tree-sitter-kotlin<2,>=1.1.0
38
39
  Requires-Dist: unidiff<1,>=0.7.3
39
40
  Requires-Dist: watchdog<7,>=6
40
41
  Provides-Extra: dev
@@ -44,7 +45,7 @@ Requires-Dist: pytest-xdist>=3; extra == "dev"
44
45
  Requires-Dist: ruff>=0.4; extra == "dev"
45
46
  Dynamic: license-file
46
47
 
47
- # java-codebase-rag
48
+ # jrag
48
49
 
49
50
  A graph-native code intelligence layer for Java microservice estates, surfaced through the **`jrag` CLI** — one command per engineering intent. A **legacy MCP server** (`search` / `find` / `describe` / `neighbors` / `resolve`) is also available for existing setups. Both are thin surfaces over the same **AST Graph**: a deterministic property graph extracted from Java source with tree-sitter, stored **locally** in **LadybugDB** (graph) alongside a **LanceDB** vector index (chunks). There is no server to host and no cloud round-trip — the index lives on your disk and your source never leaves the machine. Both surfaces collapse onto three primitive operations: **locate**, **inspect**, **walk**.
50
51
 
@@ -82,15 +83,17 @@ The rest of this README is the install, the tool/command orientation, and the re
82
83
  ## Install
83
84
 
84
85
  ```bash
85
- pip install java-codebase-rag
86
+ pip install jrag-cli
86
87
  ```
87
88
 
88
- Python **3.11+** required, on **Linux, macOS, and Windows**. On Linux, Windows, and **Apple Silicon** Macs every native dependency (LanceDB, LadybugDB, CocoIndex) ships a wheel and you get the full semantic + graph search. **Intel Macs (x86_64) install graph-only**: PyTorch ≥2.3 and LanceDB ≥0.26 dropped macOS Intel wheels, so the vector stack is auto-excluded via PEP 508 markers — `pip install java-codebase-rag` works out of the box, the graph layer (`find` / `describe` / `neighbors` / `resolve`) is fully usable, and the `search` tool falls back to **lexical search** over the symbol graph — BM25-ranked over a LadybugDB full-text index (same tool contract, keyword-ranked instead of semantic; an advisory notes the mode). Semantic/vector search needs Apple Silicon, Linux, or Windows. After install, `java-codebase-rag --help` should print the CLI groups.
89
+ Python **3.11+** required, on **Linux, macOS, and Windows**. On Linux, Windows, and **Apple Silicon** Macs every native dependency (LanceDB, LadybugDB, CocoIndex) ships a wheel and you get the full semantic + graph search. **Intel Macs (x86_64) install graph-only**: PyTorch ≥2.3 and LanceDB ≥0.26 dropped macOS Intel wheels, so the vector stack is auto-excluded via PEP 508 markers — `pip install jrag-cli` works out of the box, the graph layer (`find` / `describe` / `neighbors` / `resolve`) is fully usable, and the `search` tool falls back to **lexical search** over the symbol graph — BM25-ranked over a LadybugDB full-text index (same tool contract, keyword-ranked instead of semantic; an advisory notes the mode). Semantic/vector search needs Apple Silicon, Linux, or Windows. After install, `jrag --help` should print the CLI groups.
89
90
  The package includes the CocoIndex lifecycle dependency used by `init`, `increment`, `reprocess`, and `erase` on platforms that have it (it is absent on Intel Mac).
90
91
 
92
+ **Kotlin (`.kt`) is indexed alongside Java (`.java`)** — both feed one merged AST graph (a Kotlin class can implement a Java interface and vice versa). Kotlin parsing requires the `tree-sitter-kotlin` grammar; if it fails to import, `.kt` files are skipped and Java-only indexing proceeds. **Intel Mac note:** `tree-sitter-kotlin` currently ships a macOS x86_64 wheel, so Kotlin indexing works there today; if a future release drops that wheel, Kotlin indexing degrades off on Intel Mac while the Java graph keeps working. See `docs/CODEBASE_REQUIREMENTS.md` A.1 for the v1 Kotlin limitations (extension-function calls unresolved; non-Spring frameworks out of scope; generated-code classification Java-only).
93
+
91
94
  ### Interactive setup (recommended)
92
95
 
93
- Run `java-codebase-rag install` from your Java project root to launch an interactive setup wizard that:
96
+ Run `jrag install` from your Java project root to launch an interactive setup wizard that:
94
97
 
95
98
  1. Detects Java source directories (Maven/Gradle modules)
96
99
  2. Configures the embedding model (auto-downloads ~90MB or uses a local path)
@@ -101,19 +104,19 @@ Run `java-codebase-rag install` from your Java project root to launch an interac
101
104
 
102
105
  ```bash
103
106
  # Interactive mode
104
- java-codebase-rag install
107
+ jrag install
105
108
 
106
109
  # Non-interactive mode (for CI/automation)
107
- java-codebase-rag install --non-interactive --agent claude-code
110
+ jrag install --non-interactive --agent claude-code
108
111
  ```
109
112
 
110
- After `pip install --upgrade java-codebase-rag`, run `java-codebase-rag update` to refresh shipped artifacts and catch up the index (Lance + graph).
113
+ After `pip install --upgrade jrag-cli`, run `jrag update` to refresh shipped artifacts and catch up the index (Lance + graph).
111
114
 
112
115
  All indexing lifecycle commands (`init`, `increment`, `reprocess`, `install`, `update`) show a unified `Vectors → Optimize → Graph` progress bar on stderr during the index build (powered by `rich`); pass `--quiet` to suppress it.
113
116
 
114
117
  ### Manual registration
115
118
 
116
- If you prefer manual configuration, see [`docs/JAVA-CODEBASE-RAG-CLI.md`](./docs/JAVA-CODEBASE-RAG-CLI.md) for the full CLI reference.
119
+ If you prefer manual configuration, see [`docs/JRAG-CLI.md`](./docs/JRAG-CLI.md) for the full CLI reference.
117
120
 
118
121
  > **Stability disclaimer.** This package does **not** promise backward compatibility. MCP tool contracts, env vars, Lance/LadybugDB schemas, config files, and Python APIs may change without a deprecation period. Track `main` and rebuild indexes when ontology or embedding settings change.
119
122
 
@@ -121,7 +124,7 @@ If you prefer manual configuration, see [`docs/JAVA-CODEBASE-RAG-CLI.md`](./docs
121
124
 
122
125
  ## Tools & commands at a glance
123
126
 
124
- `jrag` is the default and recommended surface (`java-codebase-rag install --surface cli`). The **MCP server** (`--surface mcp`) is kept as a **legacy** option for existing setups. Both surfaces walk the same LanceDB vectors + LadybugDB **AST Graph**. Switch an existing install later with `java-codebase-rag update --surface mcp|cli`.
127
+ `jrag` is the default and recommended surface (`jrag install --surface cli`). The **MCP server** (`--surface mcp`) is kept as a **legacy** option for existing setups. Both surfaces walk the same LanceDB vectors + LadybugDB **AST Graph**. Switch an existing install later with `jrag update --surface mcp|cli`.
125
128
 
126
129
  **CLI surface — `jrag`, one command per engineering intent**
127
130
 
@@ -213,7 +216,7 @@ The operator-facing surface is small: pick an index dir, pick an embedding model
213
216
 
214
217
  ## CLI cheat sheet
215
218
 
216
- Run `java-codebase-rag --help` to list grouped subcommands. Operator playbook with workflows, exit codes, and env alignment lives in [`docs/JAVA-CODEBASE-RAG-CLI.md`](./docs/JAVA-CODEBASE-RAG-CLI.md).
219
+ Run `jrag --help` to list grouped subcommands. Operator playbook with workflows, exit codes, and env alignment lives in [`docs/JRAG-CLI.md`](./docs/JRAG-CLI.md).
217
220
 
218
221
  | Group | Subcommand | What it does |
219
222
  |---|---|---|
@@ -230,8 +233,8 @@ Run `java-codebase-rag --help` to list grouped subcommands. Operator playbook wi
230
233
 
231
234
  ## jrag — agent CLI
232
235
 
233
- `jrag` is a separate console script (alongside `java-codebase-rag`) built for AI
234
- coding agents. It gives the agent **one command per engineering intent** and
236
+ `jrag` is the unified console script (operator + agent verbs) built for AI
237
+ coding agents and operators alike. It gives the agent **one command per engineering intent** and
235
238
  takes human-readable identifiers (FQN / simple name / route path / topic) —
236
239
  never raw node IDs. Every `<query>` command resolves the identifier via
237
240
  `resolve_v2` as the first step; on `many` it returns candidates and stops, on
@@ -285,7 +288,7 @@ A missing or stale index produces an actionable `status: error` envelope (exit
285
288
  2) rather than a traceback:
286
289
 
287
290
  ```
288
- error: No index at /path/to/code_graph.lbug. Run: java-codebase-rag init --source-root <root>
291
+ error: No index at /path/to/code_graph.lbug. Run: jrag init --source-root <root>
289
292
  ```
290
293
 
291
294
  See [`plans/active/PLAN-JRAG-CLI.md`](./plans/active/PLAN-JRAG-CLI.md) for the
@@ -300,7 +303,7 @@ full design and per-PR breakdown.
300
303
  | [`docs/paper/paper.pdf`](./docs/paper/paper.pdf) | Architecture report — design rationale, GPS metaphor, three-layer architecture, design principles, future work. |
301
304
  | [`docs/AGENT-GUIDE.md`](./docs/AGENT-GUIDE.md) | Agent-facing guide. Copy-paste into `QWEN.md` / `CLAUDE.md` / `AGENTS.md`. |
302
305
  | [`docs/CONFIGURATION.md`](./docs/CONFIGURATION.md) | Environment variables, project YAML, graph ontology, brownfield overrides, ignore patterns. |
303
- | [`docs/JAVA-CODEBASE-RAG-CLI.md`](./docs/JAVA-CODEBASE-RAG-CLI.md) | CLI operator playbook: workflows, exit codes, env alignment. |
306
+ | [`docs/JRAG-CLI.md`](./docs/JRAG-CLI.md) | CLI operator playbook: workflows, exit codes, env alignment. |
304
307
  | [`docs/EDGE-NAVIGATION.md`](./docs/EDGE-NAVIGATION.md) | MCP-traversable edges, directions, dot-key composition. |
305
308
  | [`skills/`](./skills/) | `/explore-codebase-cli` (CLI surface) + `/explore-codebase` (legacy MCP surface) skills — operating manuals for hosts with skill discovery (alternative to copy-pasting AGENT-GUIDE). See [`skills/README.md`](./skills/README.md). |
306
309
  | [`docs/MANUAL-VERIFICATION-CHECKLIST.md`](./docs/MANUAL-VERIFICATION-CHECKLIST.md) | 7-phase agent-driven verification after indexing your project. |
@@ -312,8 +315,8 @@ full design and per-PR breakdown.
312
315
  ## Install from source (contributors)
313
316
 
314
317
  ```bash
315
- git clone https://github.com/HumanBean17/java-codebase-rag
316
- cd java-codebase-rag
318
+ git clone https://github.com/HumanBean17/jrag
319
+ cd jrag
317
320
  python3 -m venv .venv
318
321
  .venv/bin/pip install -e ".[dev]"
319
322
  ```
@@ -329,3 +332,9 @@ The default embedding model is `sentence-transformers/all-MiniLM-L6-v2` (downloa
329
332
  - `get_service_topology` — microservice-level summary aggregating `HTTP_CALLS` / `ASYNC_CALLS`.
330
333
  - Agentic routing layer (query classifier → vector / graph / both).
331
334
  - Optional `codegraph_nodes` LanceDB table embedding symbol summaries so the graph itself is vector-searchable.
335
+
336
+ ---
337
+
338
+ ## Built on
339
+
340
+ The indexing pipeline runs on [**CocoIndex**](https://github.com/cocoindex-io/cocoindex) — an open-source data indexing framework that powers the vector store lifecycle (`init`, `increment`, `reprocess`, `erase`) behind every `jrag` index.
@@ -1,19 +1,21 @@
1
1
  java_codebase_rag/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
2
+ java_codebase_rag/_deprecation.py,sha256=qOxHM4AYUUBQPIgTMXODPmnxjrpMoYweMzjOoqBkQKc,4196
2
3
  java_codebase_rag/_fdlimit.py,sha256=vkwjsPbZfxzZ2DZTPWO5DxtuNlLzOADzIq07iYX7GCU,2465
3
4
  java_codebase_rag/_stdio.py,sha256=TDNbpt2EP0_Zd622ihdlKwlMfxkKHWOfgLVcU6TcNbo,1458
4
- java_codebase_rag/_version.py,sha256=Dnoh_a-c13fqPQ-HV9CsSPbFUkihUJl_z5CACW4qDyA,1365
5
- java_codebase_rag/cli.py,sha256=Sf5HWQ607cg8LoZ-xlNpKKK-RslOjj5DDDsZDpHnUj8,47721
5
+ java_codebase_rag/_version.py,sha256=-6MchHEyRglldb52uN12r226NUEVAmks9PTK8U1t_Yc,1347
6
+ java_codebase_rag/cli.py,sha256=nLBnGbbZhNNB6aO85LpnKdLJ9pBrWjaPhQcY1-kEb_I,47500
7
+ java_codebase_rag/cli_dispatch.py,sha256=hYBVV5KAiftcdF9Kh3E_tIYBaeFfWAnr0ATQvxH01Ok,9690
6
8
  java_codebase_rag/cli_format.py,sha256=CT7-xdwZ0bMCdP68_UOwkvm-mnLluU3LutlM-mDNk60,1839
7
9
  java_codebase_rag/cli_progress.py,sha256=q6Wh97yzLGs1B8UFk_WAKivfQu7Y5RnUUE-T2YHWkIs,3237
8
- java_codebase_rag/config.py,sha256=4rlRQUj0gFM-StUvhMD61uB2hZd2zqVHeNNBRXJMfN4,33283
9
- java_codebase_rag/installer.py,sha256=c-_tR1Ct_O3yhmruFRnDoM1Wilz-igD9qdkDPsNqLMI,79934
10
- java_codebase_rag/jrag.py,sha256=MXYtat1I9724shynBxSnYl7INNKNzhDaecwVCnXFS3E,197628
10
+ java_codebase_rag/config.py,sha256=Snlj6z8pJD6OYZL8pz6bATunulyhJLpVymUORY2QUjA,33179
11
+ java_codebase_rag/installer.py,sha256=efxkNxbcoxKFzqTe9-IeVlRlMxlcsYZY9Kve_HPxJO4,79734
12
+ java_codebase_rag/jrag.py,sha256=t_QXmh-jmw1P7T7XaIydARNnxd12mpL6_5xSv0uWaSI,198220
11
13
  java_codebase_rag/jrag_envelope.py,sha256=I5q7E3DmuJBnDl1iv7bW2NucPJ2YxlmNEtM2dau18Vw,48730
12
14
  java_codebase_rag/jrag_hints.py,sha256=aazBRI3pOeyq2IjQuoMzDkA-1cB_tTGbVcguX3BzOiQ,9286
13
15
  java_codebase_rag/jrag_render.py,sha256=xYK-0YmUMwEb4w4o6rjkrn-maHhY2oEqKgLqKQqaliE,42829
14
- java_codebase_rag/lance_optimize.py,sha256=zLAJzWaLc4CONyure5_Bw5WhEgXF5tlQgYMJmFN3zrg,11970
15
- java_codebase_rag/pipeline.py,sha256=e8IzuAsSglqWyfRXqAqq0u23oH9l_kWsZbk5j929KQA,21419
16
- java_codebase_rag/progress.py,sha256=2IxdMALDM0wAQCyJrrfZ975zM_85C-4BfHxf4AtYifE,23212
16
+ java_codebase_rag/lance_optimize.py,sha256=0yaCEgLc6MiBJpG2N1cNXQIEtKvBz2fSHQjDDRf9B-4,11879
17
+ java_codebase_rag/pipeline.py,sha256=fwTAuIsMBGUGBWnp2xi9brlY8zTzJ1Szh6bztQ4jKg8,21367
18
+ java_codebase_rag/progress.py,sha256=73uuL-wZYcdkkKCgRwdzVturT5FH1Ek2-PdxYHKg7ZI,23199
17
19
  java_codebase_rag/read_payloads.py,sha256=CCNdFYp_JDRQGnQh3mm9POUq4jG_FL2YsVARITsgsaU,31711
18
20
  java_codebase_rag/absence/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
21
  java_codebase_rag/absence/absence_diagnosis.py,sha256=RJNlycQY28fL5h1e7Kupaff-xabLzfzbbXLM-VSReBc,27631
@@ -23,49 +25,51 @@ java_codebase_rag/analysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
23
25
  java_codebase_rag/analysis/pr_analysis.py,sha256=A-nE5sftlcg02esQ-ZQxZvvepEUy07zbVUG-b-bgJlo,19711
24
26
  java_codebase_rag/analysis/resolve_service.py,sha256=vVnCRXDQlFhQfIZljh4Jk5lL63IXC7lEArRWk0Hcs34,28715
25
27
  java_codebase_rag/ast/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
- java_codebase_rag/ast/ast_java.py,sha256=ikMDBZGMYe0E2Doe6nf-Zw3k4MnwoNYvLqg3xsnfxmI,99614
28
+ java_codebase_rag/ast/ast_java.py,sha256=UZtCtbt9DcC9QpDu4kThxWgALKyveyiBrbmxZCbWjlE,100738
29
+ java_codebase_rag/ast/ast_kotlin.py,sha256=qDyqvdE5ORO9nJ2gXe_13ZJFI88IHpkoe52OK6R3vdA,70564
27
30
  java_codebase_rag/ast/brownfield_events.py,sha256=yxXkKDgMb3VPtaiakGzncHM_EGnda8xIue6w90yYp8s,2055
28
- java_codebase_rag/ast/chunk_heuristics.py,sha256=aQk2NOKxzUdqoUAJUO3G3LE0MN_bYZWNLQ0tkmj5uts,1813
31
+ java_codebase_rag/ast/chunk_heuristics.py,sha256=sn0SvGPkXChM_Dxn7bIRZOWPfCAUviPntRa8t-U894s,2992
32
+ java_codebase_rag/ast/language.py,sha256=6WssjRjYsqXX_64QVca65g_qMqVr5OPjUtHDjKmMy1Y,4259
29
33
  java_codebase_rag/eval/__init__.py,sha256=V49SsVzkfHmVhRGMl9KbzMlxDSI8aHZA1YmxzgzNtYo,30
30
34
  java_codebase_rag/eval/ground_truth.py,sha256=q0gzsCF6hqR-NcMRNDDMUlvOA13RCcGcVLWWqlA4syY,3246
31
35
  java_codebase_rag/eval/metrics.py,sha256=nEDbN3VjYLUwyAvNcd8w4Kmjm0PlgX_Mt6cfOmH7f9k,3118
32
- java_codebase_rag/eval/runner.py,sha256=k_A5TLi16qeqT8WQ2lGqtioDXBlSzjsj0mLv-7Tml1o,20193
36
+ java_codebase_rag/eval/runner.py,sha256=6RzoWcYcf2ZHmytzq8wXEUqogkx580kqFW7BNmWSjWk,20154
33
37
  java_codebase_rag/graph/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
- java_codebase_rag/graph/build_ast_graph.py,sha256=-MitMiz23HjiRHTt9MDA39Q9gLTCE07QoFxGa2Xl4uI,181704
35
- java_codebase_rag/graph/graph_enrich.py,sha256=51Q8aE0Mw09SVYBESd3H57IftsOpfkwgJV2ibt0RzwE,72598
38
+ java_codebase_rag/graph/build_ast_graph.py,sha256=U1JRR9PMmM9-oLttmYBsDrNVuA6KY58tDsl_TZhu0Bc,189081
39
+ java_codebase_rag/graph/graph_enrich.py,sha256=GxptfAhc3Gd7liXtrn7m3rYQNMD57HFflRMPRrvDsQE,72725
36
40
  java_codebase_rag/graph/graph_types.py,sha256=VKTnJZL1_J4bsLGdXIKCsD0FkW6uvqoG8oJfvChm_SI,9057
37
41
  java_codebase_rag/graph/java_ontology.py,sha256=Fa6iCsrBLPc2lCl-6VR2qHN4Q9Ix8Gps3thQhIEGjrM,17241
38
- java_codebase_rag/graph/ladybug_queries.py,sha256=3P5DVMacylxC9OQp_--v0EHMmaKN4LZx7DesxptizIg,103063
39
- java_codebase_rag/graph/path_filtering.py,sha256=R--XzI51LXBu5IBKMCnJWbkNr6I5d-SDmltyQQnWco0,17674
42
+ java_codebase_rag/graph/ladybug_queries.py,sha256=qdneNIYtJvNkMBfWub4hsB7iemXnfdiVbaZoWakplgk,103050
43
+ java_codebase_rag/graph/path_filtering.py,sha256=odOH1lZXh3_uumcc8gvpE96ffUpGkRmUFDUL_vwaFVc,19099
40
44
  java_codebase_rag/index/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- java_codebase_rag/index/java_index_flow_lancedb.py,sha256=4uLZ6nbtbGy0RM5nrTLfVzakPs1VGaJAmS1WqV-Wsy8,29381
45
+ java_codebase_rag/index/java_index_flow_lancedb.py,sha256=NnZkVhka_Ubbndv-rhvosyXZHxD028yDxsa7xTYFb_M,36159
42
46
  java_codebase_rag/index/java_index_v1_common.py,sha256=nF1KrSqboF_RRvWerG9knRRFmWwsrG_CvhgnsoZ8KqA,1154
43
47
  java_codebase_rag/install_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
- java_codebase_rag/install_data/agents/explorer-rag-cli.md,sha256=1lcITd8RkL7b6T0YmOGuohcRYcz3KSFVVXi0WO-uYJE,11159
45
- java_codebase_rag/install_data/agents/explorer-rag-enhanced.md,sha256=gZsNFbuK0lSnOIlplbbS_muz2ozokJqvFUv65QM0NDM,10406
46
- java_codebase_rag/install_data/skills/explore-codebase/SKILL.md,sha256=A-v2dueVnxwBzBlxoRjZ2zOJk8DranLQ1TElwn94h0s,11529
47
- java_codebase_rag/install_data/skills/explore-codebase-cli/SKILL.md,sha256=9YLsboYyera9NCNzFoa5ZhnprsGMfo3jMSqxcXS7-eo,10926
48
+ java_codebase_rag/install_data/agents/explorer-rag-cli.md,sha256=wWhK4gJkxBlW6gTB1mSdUpMqfGHrnNoEqNakPBkZLEg,11683
49
+ java_codebase_rag/install_data/agents/explorer-rag-enhanced.md,sha256=q3tOSGHpnqYr06w48V9rMZxPAqGEDnvgio2Ih8JC0fY,10354
50
+ java_codebase_rag/install_data/skills/explore-codebase/SKILL.md,sha256=uDz1eIDENx9nF-8qzHjktqVS7G8G9BiN2pX7cYTsfmg,11477
51
+ java_codebase_rag/install_data/skills/explore-codebase-cli/SKILL.md,sha256=b-Ot3e0J4wv-RyJ6eevjrj7arY_R-Wzb-DSghneQxMU,11244
48
52
  java_codebase_rag/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
53
  java_codebase_rag/mcp/mcp_hints.py,sha256=eJzm_HpfaEKblT4-FW_9bgvDemZYs3E6exGeznflrXM,42536
50
- java_codebase_rag/mcp/mcp_v2.py,sha256=q6FInC0gu9snU_4Rm2fNjrJx0uzF0RVPKJz4_hPqur8,80448
51
- java_codebase_rag/mcp/server.py,sha256=DJGlx8U5SD4Pe6Ro71OeFHi6HsYZ4r4uINn7R7uSKk4,40935
54
+ java_codebase_rag/mcp/mcp_v2.py,sha256=70POeJ_O5U_Jjf0SGH9lyK1f5XCIRl25KRSrDxkUZuk,80422
55
+ java_codebase_rag/mcp/server.py,sha256=w7q6z_yIbaFYd83KjSkY5XIR6-jL0_7Q-qWjMF31D-Y,40980
52
56
  java_codebase_rag/search/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
57
  java_codebase_rag/search/index_common.py,sha256=HT6FKHFJ084eFvd3fR1j8z8gf4eWoPHVW8GXLpw464I,285
54
58
  java_codebase_rag/search/search_lancedb.py,sha256=MxfTivzeMbScmYIf9s8nKSGCmNr5gMGDXldZotAfW-8,49368
55
- java_codebase_rag/search/search_lexical.py,sha256=iVui6KneEiVA1TRkA5UhO8XI9toayMDOCU-tXYjwRe8,19961
56
- java_codebase_rag/search/search_scoring.py,sha256=OsaX6zWyl4BIcqB7nRJRjp3SBEatmGAQ5EZEtQDaww0,20804
59
+ java_codebase_rag/search/search_lexical.py,sha256=wVG4tZ2pc7zX4vWewqj9ONMoZ0cZRJkcMZa3fEKUw6o,19935
60
+ java_codebase_rag/search/search_scoring.py,sha256=SaLYiZP_udyAYUSfLhehX4J1Do8uA8kSlFoiLWYle6s,21374
57
61
  java_codebase_rag/watch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
62
  java_codebase_rag/watch/client.py,sha256=PO1uyllGZWoYgYYgm6vToCvaILkp0coXfXCEitzWXMU,9258
59
63
  java_codebase_rag/watch/daemon.py,sha256=JusMIL_cWxnJXaC0Ix4pOhl-GKMH7Cj5ZBH9CSJtGyo,17633
60
- java_codebase_rag/watch/lock.py,sha256=E4WuEO_yGWpU1AeOOU91A9d1k4j71iIG9IMHfzorYPo,7564
64
+ java_codebase_rag/watch/lock.py,sha256=-TlYIeXSOqxFKvPxFT9LH1aka5-YRNd5BHnJ1s9V9-M,7551
61
65
  java_codebase_rag/watch/paths.py,sha256=UXmw19O2ILr0_yWgeyd-j6Qn2y0MO4ejspfLBcLol0w,2368
62
66
  java_codebase_rag/watch/protocol.py,sha256=Vj16d0d0eA7XiLFX6o7JMY-I-mGva9VRxC41ZSbDVy4,3061
63
67
  java_codebase_rag/watch/server.py,sha256=GUyCDmbl30wm9GhWTBh-K_BEhFSCHiM2kahmncMGf5E,11168
64
68
  java_codebase_rag/watch/warm.py,sha256=EN_39jVV1Kohsq8OI2LqGdTz_X-OCy4s4GWykiDAK7k,5113
65
- java_codebase_rag/watch/watcher.py,sha256=71L-KAhcLFuP2kIApvUZEDfSfm4doLvEyLKMaX-XxB0,16225
66
- java_codebase_rag-0.11.2.dist-info/licenses/LICENSE,sha256=gxvtiHtuviR_q8ZAjWw-QTcF3DyPzg6ZY-lQrr8OPpw,1068
67
- java_codebase_rag-0.11.2.dist-info/METADATA,sha256=4bS4oryZBR91DidJ9ar-X28F50O5XsVGM4j-xBzpGog,20573
68
- java_codebase_rag-0.11.2.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
69
- java_codebase_rag-0.11.2.dist-info/entry_points.txt,sha256=pa6yYHbHG7ZZ7G9ZJgYK1Fz6eR9okldPLo7qLY2THuo,190
70
- java_codebase_rag-0.11.2.dist-info/top_level.txt,sha256=u2i_IKLLOkYyNE32m4TIED0vtKtQDdPEVqRtNuhC1Hk,18
71
- java_codebase_rag-0.11.2.dist-info/RECORD,,
69
+ java_codebase_rag/watch/watcher.py,sha256=M9MKBI2P8w3Os2I9JM_0oElk5eeJ-DCC5vB3aAoRrdQ,17827
70
+ java_codebase_rag-0.12.0.dist-info/licenses/LICENSE,sha256=gxvtiHtuviR_q8ZAjWw-QTcF3DyPzg6ZY-lQrr8OPpw,1068
71
+ java_codebase_rag-0.12.0.dist-info/METADATA,sha256=Q4UEAjZ79KdVbd21YblRK0vmkgWmEZwREJ-OfE8P_YM,21365
72
+ java_codebase_rag-0.12.0.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
73
+ java_codebase_rag-0.12.0.dist-info/entry_points.txt,sha256=S7ng8YydbGe97wugiCOgfI8xu04aKuLzSioSNH1rmcQ,252
74
+ java_codebase_rag-0.12.0.dist-info/top_level.txt,sha256=u2i_IKLLOkYyNE32m4TIED0vtKtQDdPEVqRtNuhC1Hk,18
75
+ java_codebase_rag-0.12.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ [console_scripts]
2
+ java-codebase-rag = java_codebase_rag.cli_dispatch:_console_script_main
3
+ java-codebase-rag-mcp = java_codebase_rag.mcp.server:main
4
+ jrag = java_codebase_rag.cli_dispatch:_console_script_main
5
+ jrag-mcp = java_codebase_rag.mcp.server:main
@@ -1,4 +0,0 @@
1
- [console_scripts]
2
- java-codebase-rag = java_codebase_rag.cli:_console_script_main
3
- java-codebase-rag-mcp = java_codebase_rag.mcp.server:main
4
- jrag = java_codebase_rag.jrag:_console_script_main