generated from coulomb/repo-seed
Add llm-assisted discovery extraction
This commit is contained in:
@@ -13,6 +13,7 @@ from pathlib import Path
|
||||
from .loader import declaration_files, load_yaml
|
||||
from .graph import FabricGraph, build_graph
|
||||
from .graph_explorer import fabric_graph_explorer_payload
|
||||
from .llm_extraction import LLMExtractionConfig
|
||||
from .scanner import ScanOptions, scan_repo
|
||||
from .validation import validate_roots
|
||||
|
||||
@@ -73,6 +74,12 @@ def build_parser() -> argparse.ArgumentParser:
|
||||
scan.add_argument("--dry-run", action="store_true", help="Do not write anywhere except an explicit --output file.")
|
||||
scan.add_argument("--output", type=Path, default=None, help="Write the discovery snapshot JSON to a file.")
|
||||
scan.add_argument("--json", action="store_true", help="Print the discovery snapshot JSON to stdout.")
|
||||
scan.add_argument("--llm", action="store_true", help="Enable llm-connect assisted extraction.")
|
||||
scan.add_argument("--llm-provider", default="mock", help="llm-connect provider name.")
|
||||
scan.add_argument("--llm-model", default="mock", help="Model name passed to llm-connect.")
|
||||
scan.add_argument("--llm-temperature", type=float, default=0.0)
|
||||
scan.add_argument("--llm-max-tokens", type=int, default=1500)
|
||||
scan.add_argument("--llm-min-confidence", type=float, default=0.6)
|
||||
|
||||
registry = sub.add_parser("registry", help="Feed a running Railiance Fabric registry service.")
|
||||
registry_sub = registry.add_subparsers(dest="registry_command", required=True)
|
||||
@@ -392,8 +399,15 @@ def _scan_repo(args: argparse.Namespace) -> int:
|
||||
domain=args.domain,
|
||||
commit=args.commit,
|
||||
profile=args.profile,
|
||||
deterministic_only=True,
|
||||
llm_enabled=False,
|
||||
deterministic_only=not args.llm,
|
||||
llm_enabled=args.llm,
|
||||
llm_config=LLMExtractionConfig(
|
||||
provider=args.llm_provider,
|
||||
model=args.llm_model,
|
||||
temperature=args.llm_temperature,
|
||||
max_tokens=args.llm_max_tokens,
|
||||
min_confidence=args.llm_min_confidence,
|
||||
),
|
||||
)
|
||||
)
|
||||
payload = json.dumps(snapshot, indent=2, sort_keys=True)
|
||||
@@ -405,6 +419,8 @@ def _scan_repo(args: argparse.Namespace) -> int:
|
||||
return 0
|
||||
|
||||
candidates = snapshot["candidates"]
|
||||
review_count = len(snapshot.get("review_artifacts", []))
|
||||
review_summary = f", {review_count} review artifact(s)" if review_count else ""
|
||||
mode = "dry-run " if args.dry_run else ""
|
||||
print(
|
||||
f"{mode}scan {snapshot['source']['repo_slug']} "
|
||||
@@ -413,6 +429,7 @@ def _scan_repo(args: argparse.Namespace) -> int:
|
||||
f"{len(candidates['edges'])} edge(s), "
|
||||
f"{len(candidates['attributes'])} attribute(s), "
|
||||
f"{len(snapshot['replacement_scopes'])} replacement scope(s)"
|
||||
f"{review_summary}"
|
||||
)
|
||||
if args.output:
|
||||
print(f"wrote {args.output}")
|
||||
|
||||
Reference in New Issue
Block a user