java-codebase-rag 0.5.2__py3-none-any.whl → 0.6.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.
- ast_java.py +1 -1
- build_ast_graph.py +142 -90
- graph_enrich.py +3 -3
- java_codebase_rag/_fdlimit.py +48 -0
- java_codebase_rag/cli.py +31 -28
- java_codebase_rag/config.py +28 -8
- java_codebase_rag/installer.py +99 -10
- java_codebase_rag/lance_optimize.py +148 -0
- java_codebase_rag/pipeline.py +64 -6
- {java_codebase_rag-0.5.2.dist-info → java_codebase_rag-0.6.0.dist-info}/METADATA +5 -5
- java_codebase_rag-0.6.0.dist-info/RECORD +33 -0
- {java_codebase_rag-0.5.2.dist-info → java_codebase_rag-0.6.0.dist-info}/top_level.txt +1 -1
- java_index_flow_lancedb.py +22 -4
- java_ontology.py +1 -1
- kuzu_queries.py → ladybug_queries.py +62 -56
- mcp_v2.py +16 -16
- pr_analysis.py +1 -1
- search_lancedb.py +8 -8
- server.py +47 -14
- java_codebase_rag-0.5.2.dist-info/RECORD +0 -31
- {java_codebase_rag-0.5.2.dist-info → java_codebase_rag-0.6.0.dist-info}/WHEEL +0 -0
- {java_codebase_rag-0.5.2.dist-info → java_codebase_rag-0.6.0.dist-info}/entry_points.txt +0 -0
- {java_codebase_rag-0.5.2.dist-info → java_codebase_rag-0.6.0.dist-info}/licenses/LICENSE +0 -0
mcp_v2.py
CHANGED
|
@@ -30,7 +30,7 @@ from sentence_transformers import SentenceTransformer
|
|
|
30
30
|
from index_common import SBERT_MODEL
|
|
31
31
|
from java_codebase_rag.config import resolved_sbert_model_for_process_env
|
|
32
32
|
from java_ontology import EDGE_SCHEMA, ResolveReason
|
|
33
|
-
from
|
|
33
|
+
from ladybug_queries import LadybugGraph, OVERRIDE_AXIS_COMPOSED_EDGE_TYPES
|
|
34
34
|
from mcp_hints import generate_hints, MCP_HINTS_STRUCTURED_FIELD_DESCRIPTION
|
|
35
35
|
from search_lancedb import TABLES, run_search
|
|
36
36
|
|
|
@@ -604,7 +604,7 @@ def _node_kind_from_id(
|
|
|
604
604
|
|
|
605
605
|
|
|
606
606
|
def _resolve_node_kind(
|
|
607
|
-
graph:
|
|
607
|
+
graph: LadybugGraph,
|
|
608
608
|
node_id: str,
|
|
609
609
|
) -> Literal["symbol", "route", "client", "producer", "unresolved_call_site"]:
|
|
610
610
|
try:
|
|
@@ -733,7 +733,7 @@ def _node_ref_from_row(kind: Literal["symbol", "route", "client", "producer"], r
|
|
|
733
733
|
|
|
734
734
|
|
|
735
735
|
def _load_node_record(
|
|
736
|
-
graph:
|
|
736
|
+
graph: LadybugGraph, node_id: str, kind: Literal["symbol", "route", "client", "producer"],
|
|
737
737
|
) -> dict[str, Any] | None:
|
|
738
738
|
if kind == "symbol":
|
|
739
739
|
projection = (
|
|
@@ -807,7 +807,7 @@ def _merge_overrides_edge_summary(
|
|
|
807
807
|
|
|
808
808
|
|
|
809
809
|
def _edge_summary_for_node(
|
|
810
|
-
graph:
|
|
810
|
+
graph: LadybugGraph, node_id: str, *, kind: str, row: dict[str, Any]
|
|
811
811
|
) -> dict[str, dict[str, int]]:
|
|
812
812
|
summary = dict(graph.edge_counts_for(node_id))
|
|
813
813
|
sym_kind = str(row.get("kind") or "")
|
|
@@ -887,7 +887,7 @@ def search_v2(
|
|
|
887
887
|
offset: int = 0,
|
|
888
888
|
path_contains: str | None = None,
|
|
889
889
|
filter: NodeFilter | dict[str, Any] | str | None = None,
|
|
890
|
-
graph:
|
|
890
|
+
graph: LadybugGraph | None = None,
|
|
891
891
|
) -> SearchOutput:
|
|
892
892
|
try:
|
|
893
893
|
raw_filter = _coerce_filter(filter)
|
|
@@ -967,10 +967,10 @@ def find_v2(
|
|
|
967
967
|
filter: NodeFilter | dict[str, Any] | str,
|
|
968
968
|
limit: int = 25,
|
|
969
969
|
offset: int = 0,
|
|
970
|
-
graph:
|
|
970
|
+
graph: LadybugGraph | None = None,
|
|
971
971
|
) -> FindOutput:
|
|
972
972
|
try:
|
|
973
|
-
g = graph or
|
|
973
|
+
g = graph or LadybugGraph.get()
|
|
974
974
|
raw_filter = _coerce_filter(filter)
|
|
975
975
|
if raw_filter is None:
|
|
976
976
|
raw_filter = {}
|
|
@@ -1063,10 +1063,10 @@ _DESCRIBE_UCS_ID_MESSAGE = (
|
|
|
1063
1063
|
def describe_v2(
|
|
1064
1064
|
id: str | None = None,
|
|
1065
1065
|
fqn: str | None = None,
|
|
1066
|
-
graph:
|
|
1066
|
+
graph: LadybugGraph | None = None,
|
|
1067
1067
|
) -> DescribeOutput:
|
|
1068
1068
|
try:
|
|
1069
|
-
g = graph or
|
|
1069
|
+
g = graph or LadybugGraph.get()
|
|
1070
1070
|
has_id = bool(id and str(id).strip())
|
|
1071
1071
|
has_fqn = bool(fqn and str(fqn).strip())
|
|
1072
1072
|
if not has_id and not has_fqn:
|
|
@@ -1171,7 +1171,7 @@ def _resolve_parse_microservice_route(identifier: str) -> tuple[str, str, str] |
|
|
|
1171
1171
|
|
|
1172
1172
|
|
|
1173
1173
|
def _resolve_symbol_candidates(
|
|
1174
|
-
g:
|
|
1174
|
+
g: LadybugGraph,
|
|
1175
1175
|
identifier: str,
|
|
1176
1176
|
) -> list[tuple[NodeRef, ResolveReason, int]]:
|
|
1177
1177
|
out: list[tuple[NodeRef, ResolveReason, int]] = []
|
|
@@ -1213,7 +1213,7 @@ def _resolve_symbol_candidates(
|
|
|
1213
1213
|
|
|
1214
1214
|
|
|
1215
1215
|
def _resolve_route_candidates(
|
|
1216
|
-
g:
|
|
1216
|
+
g: LadybugGraph,
|
|
1217
1217
|
identifier: str,
|
|
1218
1218
|
) -> list[tuple[NodeRef, ResolveReason, int]]:
|
|
1219
1219
|
out: list[tuple[NodeRef, ResolveReason, int]] = []
|
|
@@ -1265,7 +1265,7 @@ def _resolve_route_candidates(
|
|
|
1265
1265
|
|
|
1266
1266
|
|
|
1267
1267
|
def _resolve_client_candidates(
|
|
1268
|
-
g:
|
|
1268
|
+
g: LadybugGraph,
|
|
1269
1269
|
identifier: str,
|
|
1270
1270
|
) -> list[tuple[NodeRef, ResolveReason, int]]:
|
|
1271
1271
|
out: list[tuple[NodeRef, ResolveReason, int]] = []
|
|
@@ -1304,7 +1304,7 @@ def _resolve_client_candidates(
|
|
|
1304
1304
|
|
|
1305
1305
|
|
|
1306
1306
|
def _resolve_producer_candidates(
|
|
1307
|
-
g:
|
|
1307
|
+
g: LadybugGraph,
|
|
1308
1308
|
identifier: str,
|
|
1309
1309
|
) -> list[tuple[NodeRef, ResolveReason, int]]:
|
|
1310
1310
|
out: list[tuple[NodeRef, ResolveReason, int]] = []
|
|
@@ -1462,7 +1462,7 @@ def _resolve_finalize_success(
|
|
|
1462
1462
|
def resolve_v2(
|
|
1463
1463
|
identifier: str,
|
|
1464
1464
|
hint_kind: Literal["symbol", "route", "client", "producer"] | None = None,
|
|
1465
|
-
graph:
|
|
1465
|
+
graph: LadybugGraph | None = None,
|
|
1466
1466
|
) -> ResolveOutput:
|
|
1467
1467
|
try:
|
|
1468
1468
|
trimmed, err = _resolve_validate_identifier(identifier)
|
|
@@ -1481,7 +1481,7 @@ def resolve_v2(
|
|
|
1481
1481
|
if "*" in trimmed or "?" in trimmed:
|
|
1482
1482
|
return _resolve_finalize_success(trimmed, hint_kind, [])
|
|
1483
1483
|
|
|
1484
|
-
g = graph or
|
|
1484
|
+
g = graph or LadybugGraph.get()
|
|
1485
1485
|
raw: list[tuple[NodeRef, ResolveReason, int]] = []
|
|
1486
1486
|
for kind in _resolve_kinds_to_search(hint_kind):
|
|
1487
1487
|
if kind == "symbol":
|
|
@@ -1726,7 +1726,7 @@ def neighbors_v2(
|
|
|
1726
1726
|
declares_composed = [k for k in composed_keys if k in _MEMBER_COMPOSED_EDGE_TYPES]
|
|
1727
1727
|
override_composed = [k for k in composed_keys if k in _OVERRIDE_COMPOSED_EDGE_TYPES]
|
|
1728
1728
|
ordered_composed = declares_composed + override_composed
|
|
1729
|
-
g = graph or
|
|
1729
|
+
g = graph or LadybugGraph.get()
|
|
1730
1730
|
try:
|
|
1731
1731
|
raw_filter = _coerce_filter(filter)
|
|
1732
1732
|
nf = (
|
pr_analysis.py
CHANGED
|
@@ -12,7 +12,7 @@ from typing import Any
|
|
|
12
12
|
from unidiff import PatchSet
|
|
13
13
|
from unidiff.errors import UnidiffParseError
|
|
14
14
|
|
|
15
|
-
from
|
|
15
|
+
from ladybug_queries import SymbolHit, find_symbols_in_file_range, _row_to_symbol
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
@dataclass
|
search_lancedb.py
CHANGED
|
@@ -675,16 +675,16 @@ def _graph_expand_merge(
|
|
|
675
675
|
limit: int,
|
|
676
676
|
extra_predicates: list[str],
|
|
677
677
|
expand_depth: int,
|
|
678
|
-
|
|
678
|
+
ladybug_path: str | None,
|
|
679
679
|
) -> list[dict]:
|
|
680
680
|
"""Expand vector top-k through the Kuzu graph and fuse (RRF) with the original list."""
|
|
681
681
|
# Lazy import so the module works without kuzu installed when graph_expand=False.
|
|
682
682
|
try:
|
|
683
|
-
from
|
|
683
|
+
from ladybug_queries import LadybugGraph
|
|
684
684
|
except Exception:
|
|
685
685
|
return vector_rows
|
|
686
686
|
|
|
687
|
-
if not
|
|
687
|
+
if not LadybugGraph.exists(ladybug_path):
|
|
688
688
|
return vector_rows
|
|
689
689
|
|
|
690
690
|
seed_fqns = sorted({r.get("primary_type_fqn") for r in vector_rows if r.get("primary_type_fqn")})
|
|
@@ -692,7 +692,7 @@ def _graph_expand_merge(
|
|
|
692
692
|
return vector_rows
|
|
693
693
|
|
|
694
694
|
try:
|
|
695
|
-
graph =
|
|
695
|
+
graph = LadybugGraph.get(ladybug_path)
|
|
696
696
|
structural = graph.expand_fqns(seed_fqns, depth=expand_depth)
|
|
697
697
|
method_pairs = graph.expand_methods(
|
|
698
698
|
seed_fqns, depth=expand_depth, exclude_external=True,
|
|
@@ -804,7 +804,7 @@ def run_search(
|
|
|
804
804
|
package_prefix: str | None = None,
|
|
805
805
|
graph_expand: bool = False,
|
|
806
806
|
expand_depth: int = 1,
|
|
807
|
-
|
|
807
|
+
ladybug_path: str | None = None,
|
|
808
808
|
context_neighbors: int = 0,
|
|
809
809
|
role_in: list[str] | None = None,
|
|
810
810
|
exclude_roles: list[str] | None = None,
|
|
@@ -890,7 +890,7 @@ def run_search(
|
|
|
890
890
|
limit=need,
|
|
891
891
|
extra_predicates=extra_java,
|
|
892
892
|
expand_depth=expand_depth,
|
|
893
|
-
|
|
893
|
+
ladybug_path=ladybug_path,
|
|
894
894
|
)
|
|
895
895
|
|
|
896
896
|
window = rows[offset : offset + limit]
|
|
@@ -966,7 +966,7 @@ def main() -> None:
|
|
|
966
966
|
parser.add_argument("--package-prefix", default=None)
|
|
967
967
|
parser.add_argument("--graph-expand", action="store_true")
|
|
968
968
|
parser.add_argument("--expand-depth", type=int, default=1)
|
|
969
|
-
parser.add_argument("--
|
|
969
|
+
parser.add_argument("--ladybug-path", default=None)
|
|
970
970
|
parser.add_argument(
|
|
971
971
|
"--context-neighbors", type=int, default=0,
|
|
972
972
|
help="Attach N adjacent chunks per hit as surrounding context (Java only).",
|
|
@@ -1010,7 +1010,7 @@ def main() -> None:
|
|
|
1010
1010
|
package_prefix=args.package_prefix,
|
|
1011
1011
|
graph_expand=args.graph_expand,
|
|
1012
1012
|
expand_depth=args.expand_depth,
|
|
1013
|
-
|
|
1013
|
+
ladybug_path=args.ladybug_path,
|
|
1014
1014
|
context_neighbors=args.context_neighbors,
|
|
1015
1015
|
)
|
|
1016
1016
|
except Exception as e:
|
server.py
CHANGED
|
@@ -16,23 +16,25 @@ from java_codebase_rag.cli_progress import (
|
|
|
16
16
|
emit_vectors_finish,
|
|
17
17
|
emit_vectors_start,
|
|
18
18
|
)
|
|
19
|
+
from java_codebase_rag._fdlimit import raise_fd_limit
|
|
19
20
|
from java_codebase_rag.config import (
|
|
21
|
+
cocoindex_subprocess_env_defaults,
|
|
20
22
|
discover_project_root,
|
|
21
23
|
emit_legacy_env_hints_if_present,
|
|
22
24
|
resolved_sbert_model_for_process_env,
|
|
23
25
|
resolve_operator_config,
|
|
24
26
|
)
|
|
25
|
-
from
|
|
27
|
+
from ladybug_queries import LadybugGraph, resolve_ladybug_path
|
|
26
28
|
from mcp.server.fastmcp import FastMCP
|
|
27
29
|
from pydantic import BaseModel, Field
|
|
28
30
|
from search_lancedb import TABLES
|
|
29
31
|
|
|
30
32
|
_COCOINDEX_TARGET = "java_index_flow_lancedb.py:JavaCodeIndexLance"
|
|
31
33
|
_INSTRUCTIONS = (
|
|
32
|
-
"Java codebase graph navigator (LanceDB +
|
|
34
|
+
"Java codebase graph navigator (LanceDB + Ladybug). "
|
|
33
35
|
"Tools: search (NL/code locate), find (structured NodeFilter), describe (one node + edge_summary: stored edge-label counts and optional composed keys for type Symbols and override-axis virtual keys for method Symbols), "
|
|
34
36
|
"neighbors (one hop; you MUST pass direction in|out AND edge_types list — no defaults), "
|
|
35
|
-
"resolve (identifier-shaped lookup for symbol/route/client/producer — three statuses one|many
|
|
37
|
+
"resolve (identifier-shaped lookup for symbol/route/client/producer — three statuses one|many/none). "
|
|
36
38
|
"NodeFilter `filter` is a JSON object (preferred); a JSON-encoded string is also accepted as a fallback. "
|
|
37
39
|
"Unknown filter keys and populated fields not applicable to the effective node kind fail with success=false and message. "
|
|
38
40
|
"Edge labels: EXTENDS, IMPLEMENTS, INJECTS, OVERRIDES, DECLARES, DECLARES_CLIENT, DECLARES_PRODUCER, CALLS, EXPOSES, HTTP_CALLS, ASYNC_CALLS; "
|
|
@@ -85,6 +87,7 @@ class RefreshIndexOutput(BaseModel):
|
|
|
85
87
|
graph_stdout: str = ""
|
|
86
88
|
graph_stderr: str = ""
|
|
87
89
|
phases_run: list[Literal["vectors", "graph"]] = Field(default_factory=list)
|
|
90
|
+
optimize_error: str | None = None
|
|
88
91
|
|
|
89
92
|
|
|
90
93
|
class IndexInfoOutput(BaseModel):
|
|
@@ -162,36 +165,40 @@ def _cocoindex_subprocess_env(project_root: Path) -> dict[str, str]:
|
|
|
162
165
|
idx = os.environ.get("JAVA_CODEBASE_RAG_INDEX_DIR", "").strip()
|
|
163
166
|
if idx:
|
|
164
167
|
sub_env["JAVA_CODEBASE_RAG_INDEX_DIR"] = str(Path(idx).expanduser().resolve())
|
|
168
|
+
# Cap CocoIndex concurrency to avoid EMFILE ("too many open files") under
|
|
169
|
+
# default OS fd limits. See: https://github.com/HumanBean17/java-codebase-rag/issues/306
|
|
170
|
+
for _k, _v in cocoindex_subprocess_env_defaults().items():
|
|
171
|
+
sub_env.setdefault(_k, _v)
|
|
165
172
|
return sub_env
|
|
166
173
|
|
|
167
174
|
|
|
168
175
|
def _graph_enabled() -> bool:
|
|
169
|
-
return
|
|
176
|
+
return LadybugGraph.exists()
|
|
170
177
|
|
|
171
178
|
|
|
172
179
|
def _graph_meta_output() -> GraphMetaOutput:
|
|
173
|
-
if not
|
|
180
|
+
if not LadybugGraph.exists():
|
|
174
181
|
return GraphMetaOutput(
|
|
175
182
|
success=True,
|
|
176
183
|
enabled=False,
|
|
177
|
-
db_path=
|
|
178
|
-
message="
|
|
184
|
+
db_path=resolve_ladybug_path(),
|
|
185
|
+
message="Ladybug graph not present; run java-codebase-rag reprocess or build_ast_graph.py",
|
|
179
186
|
)
|
|
180
187
|
try:
|
|
181
|
-
graph =
|
|
188
|
+
graph = LadybugGraph.get()
|
|
182
189
|
meta = graph.meta()
|
|
183
190
|
except Exception as e:
|
|
184
191
|
return GraphMetaOutput(
|
|
185
192
|
success=False,
|
|
186
193
|
enabled=_graph_enabled(),
|
|
187
|
-
db_path=
|
|
188
|
-
message=f"
|
|
194
|
+
db_path=resolve_ladybug_path(),
|
|
195
|
+
message=f"Ladybug open failed: {e}",
|
|
189
196
|
)
|
|
190
197
|
if "error" in meta:
|
|
191
198
|
return GraphMetaOutput(
|
|
192
199
|
success=False,
|
|
193
200
|
enabled=_graph_enabled(),
|
|
194
|
-
db_path=meta.get("db_path",
|
|
201
|
+
db_path=meta.get("db_path", resolve_ladybug_path()),
|
|
195
202
|
message=str(meta["error"]),
|
|
196
203
|
)
|
|
197
204
|
try:
|
|
@@ -209,7 +216,7 @@ def _graph_meta_output() -> GraphMetaOutput:
|
|
|
209
216
|
return GraphMetaOutput(
|
|
210
217
|
success=True,
|
|
211
218
|
enabled=_graph_enabled(),
|
|
212
|
-
db_path=meta.get("db_path",
|
|
219
|
+
db_path=meta.get("db_path", resolve_ladybug_path()),
|
|
213
220
|
ontology_version=int(meta.get("ontology_version") or 0),
|
|
214
221
|
built_at=int(meta.get("built_at") or 0),
|
|
215
222
|
source_root=str(meta.get("source_root") or ""),
|
|
@@ -323,9 +330,29 @@ async def run_refresh_pipeline(*, quiet: bool = False, verbose: bool = True) ->
|
|
|
323
330
|
graph_code: int | None = None
|
|
324
331
|
graph_out = ""
|
|
325
332
|
graph_err = ""
|
|
333
|
+
optimize_error: str | None = None
|
|
326
334
|
if ok:
|
|
327
335
|
if not quiet:
|
|
328
336
|
print(file=sys.stderr, flush=True)
|
|
337
|
+
# Serialized post-flow Lance optimize: the flow disabled its background
|
|
338
|
+
# optimize, so with cocoindex returned exit 0 there are no concurrent
|
|
339
|
+
# writers — this is the safe window to compact. An optimize failure is
|
|
340
|
+
# surfaced via optimize_error / stderr and must NOT flip the success of
|
|
341
|
+
# a vectors phase that succeeded; the index is still searchable.
|
|
342
|
+
try:
|
|
343
|
+
from java_codebase_rag.lance_optimize import optimize_lance_tables
|
|
344
|
+
|
|
345
|
+
idx_raw = os.environ.get("JAVA_CODEBASE_RAG_INDEX_DIR", "").strip()
|
|
346
|
+
if idx_raw and not idx_raw.startswith(("s3://", "gs://", "az://")):
|
|
347
|
+
idx_dir = Path(idx_raw).expanduser().resolve()
|
|
348
|
+
elif idx_raw:
|
|
349
|
+
idx_dir = Path(idx_raw)
|
|
350
|
+
else:
|
|
351
|
+
idx_dir = (root / ".java-codebase-rag").resolve()
|
|
352
|
+
await optimize_lance_tables(idx_dir, quiet=quiet)
|
|
353
|
+
except Exception as exc:
|
|
354
|
+
optimize_error = f"lance optimize failed: {exc}"
|
|
355
|
+
print(f"java-codebase-rag: {optimize_error}", file=sys.stderr)
|
|
329
356
|
builder = Path(__file__).resolve().parent / "build_ast_graph.py"
|
|
330
357
|
if builder.is_file():
|
|
331
358
|
try:
|
|
@@ -334,8 +361,8 @@ async def run_refresh_pipeline(*, quiet: bool = False, verbose: bool = True) ->
|
|
|
334
361
|
str(builder),
|
|
335
362
|
"--source-root",
|
|
336
363
|
str(root),
|
|
337
|
-
"--
|
|
338
|
-
|
|
364
|
+
"--ladybug-path",
|
|
365
|
+
resolve_ladybug_path(),
|
|
339
366
|
]
|
|
340
367
|
if not quiet:
|
|
341
368
|
graph_args.append("--verbose")
|
|
@@ -362,6 +389,10 @@ async def run_refresh_pipeline(*, quiet: bool = False, verbose: bool = True) ->
|
|
|
362
389
|
message = f"cocoindex exit {proc.returncode}"
|
|
363
390
|
elif graph_code is not None and graph_code != 0:
|
|
364
391
|
message = f"graph builder exit {graph_code}"
|
|
392
|
+
# Surface a post-flow optimize failure in the message too (success is not
|
|
393
|
+
# flipped — the vectors phase succeeded and the index is still usable).
|
|
394
|
+
if optimize_error is not None:
|
|
395
|
+
message = optimize_error if message is None else f"{message}; {optimize_error}"
|
|
365
396
|
return RefreshIndexOutput(
|
|
366
397
|
success=ok and (graph_code is None or graph_code == 0),
|
|
367
398
|
exit_code=proc.returncode,
|
|
@@ -372,6 +403,7 @@ async def run_refresh_pipeline(*, quiet: bool = False, verbose: bool = True) ->
|
|
|
372
403
|
graph_stdout=graph_out[-4000:] if len(graph_out) > 4000 else graph_out,
|
|
373
404
|
graph_stderr=graph_err[-4000:] if len(graph_err) > 4000 else graph_err,
|
|
374
405
|
phases_run=phases_run,
|
|
406
|
+
optimize_error=optimize_error,
|
|
375
407
|
)
|
|
376
408
|
|
|
377
409
|
|
|
@@ -619,6 +651,7 @@ def create_mcp_server() -> FastMCP:
|
|
|
619
651
|
|
|
620
652
|
|
|
621
653
|
def main() -> None:
|
|
654
|
+
raise_fd_limit()
|
|
622
655
|
emit_legacy_env_hints_if_present()
|
|
623
656
|
|
|
624
657
|
# Load YAML config and apply embedding settings to environment
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
ast_java.py,sha256=OKoH7oX6L7AEEd6UY-spK8BPtWYY1T_4esrTC5VtoK8,98881
|
|
2
|
-
brownfield_events.py,sha256=yxXkKDgMb3VPtaiakGzncHM_EGnda8xIue6w90yYp8s,2055
|
|
3
|
-
build_ast_graph.py,sha256=1uqgFK2ebBdEc2QcAYK5vU4afOb95jU3zht5FracCkI,148683
|
|
4
|
-
chunk_heuristics.py,sha256=aQk2NOKxzUdqoUAJUO3G3LE0MN_bYZWNLQ0tkmj5uts,1813
|
|
5
|
-
graph_enrich.py,sha256=m3cksCHLqLHhA0Y-TLodbm09YfSJZjlTDN0Z51DiP2c,63317
|
|
6
|
-
index_common.py,sha256=HT6FKHFJ084eFvd3fR1j8z8gf4eWoPHVW8GXLpw464I,285
|
|
7
|
-
java_index_flow_lancedb.py,sha256=LMmfMSdE2d-ujxuJ2-hss7BhkrUMxHNyZuqsiGITuAI,12057
|
|
8
|
-
java_index_v1_common.py,sha256=nF1KrSqboF_RRvWerG9knRRFmWwsrG_CvhgnsoZ8KqA,1154
|
|
9
|
-
java_ontology.py,sha256=nM-oY8_91rmUudv9hAss1AMus9BFY9s5tTpAWjlCz00,16424
|
|
10
|
-
kuzu_queries.py,sha256=9bQzrU311AOw_BcUp_KSGiZgPVSaLSU7y63XfcT_vqI,90137
|
|
11
|
-
mcp_hints.py,sha256=3swh05LSiWur3tm3-yssndBsLxIxFhy501kBtJI8jJ0,42509
|
|
12
|
-
mcp_v2.py,sha256=JFe62sYzJ2XiE6L3wAH8XG9_Ya2oOeJQ_hkiTmXFnSE,79065
|
|
13
|
-
path_filtering.py,sha256=-oX16SYLWYwX9pcV1fu3vbVTIhY1GzFflT7J1E2tqPY,17122
|
|
14
|
-
pr_analysis.py,sha256=Zaq90xYgMgrReV3vCGcFhOkK61gIRMAAIgs7ev-rJG4,18410
|
|
15
|
-
search_lancedb.py,sha256=-XgtpbJ_3zDLiZ_vGKXjaLpl7RlvgyzUb7oAGoWkXO0,36754
|
|
16
|
-
server.py,sha256=c4Bo0FXPoKP2AwIVP_wiv0XENkmKchLHf0QrQPUUgq4,28645
|
|
17
|
-
java_codebase_rag/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
18
|
-
java_codebase_rag/cli.py,sha256=WW-DsskSGr-d0JXBLkj4IdAa2OsAcLz5e54_DWvD9Sk,33872
|
|
19
|
-
java_codebase_rag/cli_format.py,sha256=arU7P9W6Fvm7X_wzR1wJ8EfyxK1rDP_ESEhdA0ub4Mo,2579
|
|
20
|
-
java_codebase_rag/cli_progress.py,sha256=9jCqEagYOXs32SYVA31_sOCrONvYy7cl1CrdBD2Pg44,3168
|
|
21
|
-
java_codebase_rag/config.py,sha256=1BkRQsdY2ohZ8IWmbTG3WHgotVVUIrRTN537A1QAoCQ,15352
|
|
22
|
-
java_codebase_rag/installer.py,sha256=flj330ZPSBrO2iw_yuNFBILHOTVbarMufYwqjZ8JzN0,42778
|
|
23
|
-
java_codebase_rag/pipeline.py,sha256=nMXwX9r7HG9yPstrm7y_vfOMUZuDmw5_1lJTAfR-jwI,9488
|
|
24
|
-
java_codebase_rag/install_data/agents/explorer-rag-enhanced.md,sha256=APl9d-No12qZNZLjU7mwNRwxHIgnT3ZtQZiD4clWlyU,14413
|
|
25
|
-
java_codebase_rag/install_data/skills/explore-codebase/SKILL.md,sha256=pIM-Xdwq_fXkhhBJCdb-fA2nes5c_mMPcdUXb7Adyxo,12040
|
|
26
|
-
java_codebase_rag-0.5.2.dist-info/licenses/LICENSE,sha256=gxvtiHtuviR_q8ZAjWw-QTcF3DyPzg6ZY-lQrr8OPpw,1068
|
|
27
|
-
java_codebase_rag-0.5.2.dist-info/METADATA,sha256=LrlQYmOpTRNtx7q4-sr2yO8dCc5RHy4FgDY5GzvsoR8,16807
|
|
28
|
-
java_codebase_rag-0.5.2.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
29
|
-
java_codebase_rag-0.5.2.dist-info/entry_points.txt,sha256=mVVQJa0n73OWfhHXYCDoPRrWin_LJhH2Rn0CkJ2iax4,101
|
|
30
|
-
java_codebase_rag-0.5.2.dist-info/top_level.txt,sha256=5aIYoMkvJvvfXvf4iHn2OeSIM7PZXP-0j94eNESnwMw,242
|
|
31
|
-
java_codebase_rag-0.5.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|