generated from coulomb/repo-seed
Finalize repo-scoping runtime rename
This commit is contained in:
@@ -1,18 +1,18 @@
|
||||
from repo_registry.acceptance.agentic import (
|
||||
from repo_scoping.acceptance.agentic import (
|
||||
AgenticReviewer,
|
||||
AgenticReviewDecision,
|
||||
AgenticReviewRequest,
|
||||
validate_agentic_review_decision,
|
||||
validate_agentic_review_decisions,
|
||||
)
|
||||
from repo_registry.acceptance.criteria import (
|
||||
from repo_scoping.acceptance.criteria import (
|
||||
active_quality_criteria_version,
|
||||
criteria_registry_dict,
|
||||
criteria_registry_json,
|
||||
criteria_registry_markdown,
|
||||
load_quality_criteria,
|
||||
)
|
||||
from repo_registry.acceptance.gates import (
|
||||
from repo_scoping.acceptance.gates import (
|
||||
blocking_quality_gate_outcomes,
|
||||
evaluate_candidate_capability_quality,
|
||||
evaluate_candidate_graph_quality,
|
||||
|
||||
@@ -4,8 +4,8 @@ from dataclasses import dataclass
|
||||
from typing import Any
|
||||
from typing import Protocol
|
||||
|
||||
from repo_registry.acceptance.gates import QualityGateOutcome
|
||||
from repo_registry.core.models import CandidateGraph, Repository
|
||||
from repo_scoping.acceptance.gates import QualityGateOutcome
|
||||
from repo_scoping.core.models import CandidateGraph, Repository
|
||||
|
||||
AGENTIC_REVIEW_ACTIONS = {
|
||||
"approve",
|
||||
|
||||
@@ -2,12 +2,12 @@ from __future__ import annotations
|
||||
|
||||
from dataclasses import asdict, dataclass
|
||||
|
||||
from repo_registry.acceptance.criteria import (
|
||||
from repo_scoping.acceptance.criteria import (
|
||||
QualityCriteriaRegistry,
|
||||
QualityCriterion,
|
||||
load_quality_criteria,
|
||||
)
|
||||
from repo_registry.core.models import (
|
||||
from repo_scoping.core.models import (
|
||||
CandidateCapability,
|
||||
CandidateFeature,
|
||||
CandidateGraph,
|
||||
|
||||
@@ -3,7 +3,7 @@ from __future__ import annotations
|
||||
import re
|
||||
from dataclasses import dataclass, field, replace
|
||||
|
||||
from repo_registry.core.models import ContentChunk, ObservedFact, Repository, SourceReference
|
||||
from repo_scoping.core.models import ContentChunk, ObservedFact, Repository, SourceReference
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
@@ -59,18 +59,18 @@ REPO_SCOPING_NATIVE_CAPABILITY_SEEDS = [
|
||||
(
|
||||
"Create and update repository records",
|
||||
"api",
|
||||
["src/repo_registry/core/service.py", "src/repo_registry/web_api/app.py"],
|
||||
["src/repo_scoping/core/service.py", "src/repo_scoping/web_api/app.py"],
|
||||
),
|
||||
(
|
||||
"Resolve local or remote Git checkouts",
|
||||
"backend",
|
||||
["src/repo_registry/repo_ingestion/git.py", "tests/test_git_ingestion.py"],
|
||||
["src/repo_scoping/repo_ingestion/git.py", "tests/test_git_ingestion.py"],
|
||||
),
|
||||
(
|
||||
"Import repository metadata",
|
||||
"backend",
|
||||
[
|
||||
"src/repo_registry/repo_ingestion/metadata.py",
|
||||
"src/repo_scoping/repo_ingestion/metadata.py",
|
||||
"tests/test_repository_metadata.py",
|
||||
],
|
||||
),
|
||||
@@ -84,17 +84,17 @@ REPO_SCOPING_NATIVE_CAPABILITY_SEEDS = [
|
||||
(
|
||||
"Detect source languages, manifests, docs, tests, config, and interfaces",
|
||||
"backend",
|
||||
["src/repo_registry/repo_scanning/scanner.py", "tests/test_repository_scanner.py"],
|
||||
["src/repo_scoping/repo_scanning/scanner.py", "tests/test_repository_scanner.py"],
|
||||
),
|
||||
(
|
||||
"Classify source roles for facts",
|
||||
"backend",
|
||||
["src/repo_registry/repo_scanning/scanner.py", "docs/characteristic-evidence-model.md"],
|
||||
["src/repo_scoping/repo_scanning/scanner.py", "docs/characteristic-evidence-model.md"],
|
||||
),
|
||||
(
|
||||
"Preserve analysis snapshots and fact records",
|
||||
"storage",
|
||||
["src/repo_registry/storage/sqlite.py", "migrations/0001_initial.sql"],
|
||||
["src/repo_scoping/storage/sqlite.py", "migrations/0001_initial.sql"],
|
||||
),
|
||||
],
|
||||
},
|
||||
@@ -106,14 +106,14 @@ REPO_SCOPING_NATIVE_CAPABILITY_SEEDS = [
|
||||
(
|
||||
"Create source-linked content chunks from observed facts",
|
||||
"backend",
|
||||
["src/repo_registry/content_indexing/extractor.py", "tests/test_content_indexing.py"],
|
||||
["src/repo_scoping/content_indexing/extractor.py", "tests/test_content_indexing.py"],
|
||||
),
|
||||
(
|
||||
"Carry source-role metadata into downstream generation",
|
||||
"backend",
|
||||
[
|
||||
"src/repo_registry/content_indexing/extractor.py",
|
||||
"src/repo_registry/llm_extraction/extractor.py",
|
||||
"src/repo_scoping/content_indexing/extractor.py",
|
||||
"src/repo_scoping/llm_extraction/extractor.py",
|
||||
],
|
||||
),
|
||||
],
|
||||
@@ -127,8 +127,8 @@ REPO_SCOPING_NATIVE_CAPABILITY_SEEDS = [
|
||||
"Build candidate abilities, capabilities, features, and evidence",
|
||||
"backend",
|
||||
[
|
||||
"src/repo_registry/candidate_graph/generator.py",
|
||||
"src/repo_registry/candidate_graph/normalization.py",
|
||||
"src/repo_scoping/candidate_graph/generator.py",
|
||||
"src/repo_scoping/candidate_graph/normalization.py",
|
||||
"tests/test_candidate_graph.py",
|
||||
],
|
||||
),
|
||||
@@ -136,8 +136,8 @@ REPO_SCOPING_NATIVE_CAPABILITY_SEEDS = [
|
||||
"Optionally map structured LLM extraction into candidates",
|
||||
"integration",
|
||||
[
|
||||
"src/repo_registry/llm_extraction/extractor.py",
|
||||
"src/repo_registry/llm_extraction/mapper.py",
|
||||
"src/repo_scoping/llm_extraction/extractor.py",
|
||||
"src/repo_scoping/llm_extraction/mapper.py",
|
||||
"tests/test_llm_extraction.py",
|
||||
],
|
||||
),
|
||||
@@ -152,20 +152,20 @@ REPO_SCOPING_NATIVE_CAPABILITY_SEEDS = [
|
||||
"Edit, reject, merge, and relink candidate graph entries",
|
||||
"api",
|
||||
[
|
||||
"src/repo_registry/core/service.py",
|
||||
"src/repo_registry/web_api/app.py",
|
||||
"src/repo_scoping/core/service.py",
|
||||
"src/repo_scoping/web_api/app.py",
|
||||
"tests/test_registry_service.py",
|
||||
],
|
||||
),
|
||||
(
|
||||
"Publish approved characteristic maps after review",
|
||||
"storage",
|
||||
["src/repo_registry/core/service.py", "src/repo_registry/storage/sqlite.py"],
|
||||
["src/repo_scoping/core/service.py", "src/repo_scoping/storage/sqlite.py"],
|
||||
),
|
||||
(
|
||||
"Record review decisions and expectation gaps",
|
||||
"audit",
|
||||
["src/repo_registry/core/service.py", "src/repo_registry/web_api/schemas.py"],
|
||||
["src/repo_scoping/core/service.py", "src/repo_scoping/web_api/schemas.py"],
|
||||
),
|
||||
],
|
||||
},
|
||||
@@ -177,17 +177,17 @@ REPO_SCOPING_NATIVE_CAPABILITY_SEEDS = [
|
||||
(
|
||||
"Search approved abilities, capabilities, features, and evidence",
|
||||
"api",
|
||||
["src/repo_registry/core/service.py", "tests/test_registry_service.py"],
|
||||
["src/repo_scoping/core/service.py", "tests/test_registry_service.py"],
|
||||
),
|
||||
(
|
||||
"Compare repositories and identify capability gaps",
|
||||
"api",
|
||||
["src/repo_registry/core/service.py", "src/repo_registry/web_api/app.py"],
|
||||
["src/repo_scoping/core/service.py", "src/repo_scoping/web_api/app.py"],
|
||||
),
|
||||
(
|
||||
"Export repository profiles",
|
||||
"api",
|
||||
["src/repo_registry/web_api/app.py", "docs/api-contract.md"],
|
||||
["src/repo_scoping/web_api/app.py", "docs/api-contract.md"],
|
||||
),
|
||||
],
|
||||
},
|
||||
@@ -200,7 +200,7 @@ REPO_SCOPING_NATIVE_CAPABILITY_SEEDS = [
|
||||
"Render SCOPE.md from approved characteristics",
|
||||
"backend",
|
||||
[
|
||||
"src/repo_registry/scope/generator.py",
|
||||
"src/repo_scoping/scope/generator.py",
|
||||
"tests/test_scope_generator.py",
|
||||
"docs/scope-md-spec.md",
|
||||
],
|
||||
@@ -209,8 +209,8 @@ REPO_SCOPING_NATIVE_CAPABILITY_SEEDS = [
|
||||
"Diff, validate, and write scope files",
|
||||
"api",
|
||||
[
|
||||
"src/repo_registry/scope/validator.py",
|
||||
"src/repo_registry/web_api/app.py",
|
||||
"src/repo_scoping/scope/validator.py",
|
||||
"src/repo_scoping/web_api/app.py",
|
||||
],
|
||||
),
|
||||
],
|
||||
@@ -224,7 +224,7 @@ REPO_SCOPING_NATIVE_CAPABILITY_SEEDS = [
|
||||
"Model dependencies between facts, evidence, features, capabilities, abilities, and scope",
|
||||
"backend",
|
||||
[
|
||||
"src/repo_registry/core/service.py",
|
||||
"src/repo_scoping/core/service.py",
|
||||
"docs/dependency-aware-scope-propagation.md",
|
||||
"docs/dependency-visualization-exploration.md",
|
||||
],
|
||||
@@ -232,7 +232,7 @@ REPO_SCOPING_NATIVE_CAPABILITY_SEEDS = [
|
||||
(
|
||||
"Render dependency graph views and profiles",
|
||||
"ui",
|
||||
["src/repo_registry/web_ui/views.py", "tests/test_web_api.py"],
|
||||
["src/repo_scoping/web_ui/views.py", "tests/test_web_api.py"],
|
||||
),
|
||||
],
|
||||
},
|
||||
@@ -245,7 +245,7 @@ REPO_SCOPING_NATIVE_CAPABILITY_SEEDS = [
|
||||
"Return compact JSON scope context by repository slug",
|
||||
"api",
|
||||
[
|
||||
"src/repo_registry/web_api/app.py",
|
||||
"src/repo_scoping/web_api/app.py",
|
||||
"docs/schemas/repo-scope-context-response.json",
|
||||
"tests/test_scope_context_api.py",
|
||||
],
|
||||
@@ -661,7 +661,7 @@ class CandidateGraphGenerator:
|
||||
identity = f"{repository.name} {repository.url} {repository.description or ''}".lower()
|
||||
if "repo-scoping" in identity or "repository scoping" in identity:
|
||||
return True
|
||||
return any(fact.path.startswith("src/repo_registry/") for fact in facts)
|
||||
return any(fact.path.startswith("src/repo_scoping/") for fact in facts)
|
||||
|
||||
def _facts_for_paths(
|
||||
self,
|
||||
|
||||
@@ -3,13 +3,13 @@ from __future__ import annotations
|
||||
import re
|
||||
from dataclasses import replace
|
||||
|
||||
from repo_registry.candidate_graph.generator import (
|
||||
from repo_scoping.candidate_graph.generator import (
|
||||
CandidateAbilityDraft,
|
||||
CandidateCapabilityDraft,
|
||||
CandidateEvidenceDraft,
|
||||
CandidateFeatureDraft,
|
||||
)
|
||||
from repo_registry.core.models import SourceReference
|
||||
from repo_scoping.core.models import SourceReference
|
||||
|
||||
|
||||
STOP_WORDS = {
|
||||
|
||||
@@ -6,24 +6,24 @@ from dataclasses import asdict
|
||||
from pathlib import Path
|
||||
from typing import Sequence
|
||||
|
||||
from repo_registry.acceptance import (
|
||||
from repo_scoping.acceptance import (
|
||||
criteria_registry_json,
|
||||
criteria_registry_markdown,
|
||||
load_quality_criteria,
|
||||
)
|
||||
from repo_registry.core.models import CharacteristicRebuildResult, Repository
|
||||
from repo_registry.core.service import RegistryService
|
||||
from repo_registry.llm_extraction import LLMCandidateExtractor, create_llm_connect_adapter
|
||||
from repo_registry.repo_ingestion.git import GitIngestionService
|
||||
from repo_registry.self_scoping.assessment import artifact_json, export_assessment_artifact
|
||||
from repo_registry.self_scoping.comparison import (
|
||||
from repo_scoping.core.models import CharacteristicRebuildResult, Repository
|
||||
from repo_scoping.core.service import RegistryService
|
||||
from repo_scoping.llm_extraction import LLMCandidateExtractor, create_llm_connect_adapter
|
||||
from repo_scoping.repo_ingestion.git import GitIngestionService
|
||||
from repo_scoping.self_scoping.assessment import artifact_json, export_assessment_artifact
|
||||
from repo_scoping.self_scoping.comparison import (
|
||||
compare_assessment_to_golden,
|
||||
comparison_json,
|
||||
comparison_markdown,
|
||||
load_json,
|
||||
)
|
||||
from repo_registry.storage.sqlite import NotFoundError, RegistryStore
|
||||
from repo_registry.web_api.app import Settings
|
||||
from repo_scoping.storage.sqlite import NotFoundError, RegistryStore
|
||||
from repo_scoping.web_api.app import Settings
|
||||
|
||||
|
||||
def build_parser() -> argparse.ArgumentParser:
|
||||
@@ -56,8 +56,8 @@ def build_parser() -> argparse.ArgumentParser:
|
||||
action="store_true",
|
||||
help="Confirm a destructive all-repository rebuild.",
|
||||
)
|
||||
rebuild.add_argument("--database-path", help="Override REPO_REGISTRY_DATABASE_PATH.")
|
||||
rebuild.add_argument("--checkout-root", help="Override REPO_REGISTRY_CHECKOUT_ROOT.")
|
||||
rebuild.add_argument("--database-path", help="Override REPO_SCOPING_DATABASE_PATH.")
|
||||
rebuild.add_argument("--checkout-root", help="Override REPO_SCOPING_CHECKOUT_ROOT.")
|
||||
export = subparsers.add_parser(
|
||||
"export-assessment",
|
||||
help="Export a completed analysis run as a self-scoping assessment artifact.",
|
||||
@@ -87,8 +87,8 @@ def build_parser() -> argparse.ArgumentParser:
|
||||
)
|
||||
export.add_argument("--reviewer", default="codex", help="Reviewer name recorded in the artifact.")
|
||||
export.add_argument("--summary", help="Assessment summary override.")
|
||||
export.add_argument("--database-path", help="Override REPO_REGISTRY_DATABASE_PATH.")
|
||||
export.add_argument("--checkout-root", help="Override REPO_REGISTRY_CHECKOUT_ROOT.")
|
||||
export.add_argument("--database-path", help="Override REPO_SCOPING_DATABASE_PATH.")
|
||||
export.add_argument("--checkout-root", help="Override REPO_SCOPING_CHECKOUT_ROOT.")
|
||||
compare = subparsers.add_parser(
|
||||
"compare-assessment",
|
||||
help="Compare a self-scoping assessment artifact against a golden profile.",
|
||||
@@ -155,8 +155,8 @@ def build_parser() -> argparse.ArgumentParser:
|
||||
action="store_true",
|
||||
help="Return exit code 1 only when comparison status is regression.",
|
||||
)
|
||||
self_assess.add_argument("--database-path", help="Override REPO_REGISTRY_DATABASE_PATH.")
|
||||
self_assess.add_argument("--checkout-root", help="Override REPO_REGISTRY_CHECKOUT_ROOT.")
|
||||
self_assess.add_argument("--database-path", help="Override REPO_SCOPING_DATABASE_PATH.")
|
||||
self_assess.add_argument("--checkout-root", help="Override REPO_SCOPING_CHECKOUT_ROOT.")
|
||||
self_assess.set_defaults(no_llm=True)
|
||||
criteria = subparsers.add_parser(
|
||||
"list-quality-criteria",
|
||||
@@ -177,8 +177,8 @@ def build_parser() -> argparse.ArgumentParser:
|
||||
"list-legacy-auto-approvals",
|
||||
help="List historical trusted deterministic auto-approval records.",
|
||||
)
|
||||
legacy.add_argument("--database-path", help="Override REPO_REGISTRY_DATABASE_PATH.")
|
||||
legacy.add_argument("--checkout-root", help="Override REPO_REGISTRY_CHECKOUT_ROOT.")
|
||||
legacy.add_argument("--database-path", help="Override REPO_SCOPING_DATABASE_PATH.")
|
||||
legacy.add_argument("--checkout-root", help="Override REPO_SCOPING_CHECKOUT_ROOT.")
|
||||
legacy.add_argument("--output", help="Write inventory output to this path instead of stdout.")
|
||||
legacy.add_argument(
|
||||
"--format",
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
from repo_registry.content_indexing.extractor import ContentChunkCandidate, ContentExtractor
|
||||
from repo_scoping.content_indexing.extractor import ContentChunkCandidate, ContentExtractor
|
||||
|
||||
__all__ = ["ContentChunkCandidate", "ContentExtractor"]
|
||||
|
||||
@@ -3,7 +3,7 @@ from __future__ import annotations
|
||||
from dataclasses import dataclass, field
|
||||
from pathlib import Path
|
||||
|
||||
from repo_registry.core.models import ObservedFact
|
||||
from repo_scoping.core.models import ObservedFact
|
||||
|
||||
|
||||
INDEXED_FACT_KINDS = {
|
||||
|
||||
@@ -5,7 +5,7 @@ import logging
|
||||
from typing import Any
|
||||
|
||||
|
||||
LOGGER_NAME = "repo_registry.operations"
|
||||
LOGGER_NAME = "repo_scoping.operations"
|
||||
|
||||
|
||||
def log_operation(event: str, **fields: Any) -> None:
|
||||
|
||||
@@ -4,7 +4,7 @@ from collections.abc import Sequence
|
||||
from dataclasses import asdict, replace
|
||||
from typing import Any
|
||||
|
||||
from repo_registry.acceptance import (
|
||||
from repo_scoping.acceptance import (
|
||||
AgenticReviewDecision,
|
||||
AgenticReviewer,
|
||||
AgenticReviewRequest,
|
||||
@@ -14,7 +14,7 @@ from repo_registry.acceptance import (
|
||||
evaluate_candidate_graph_quality,
|
||||
validate_agentic_review_decisions,
|
||||
)
|
||||
from repo_registry.core.models import (
|
||||
from repo_scoping.core.models import (
|
||||
AbilitySummary,
|
||||
AnalysisRunDiff,
|
||||
AnalysisRunDiffItem,
|
||||
@@ -43,17 +43,17 @@ from repo_registry.core.models import (
|
||||
TrustedAutoApprovalMigrationRecord,
|
||||
enrich_review_decision,
|
||||
)
|
||||
from repo_registry.candidate_graph.generator import CandidateGraphGenerator
|
||||
from repo_registry.candidate_graph.normalization import normalize_candidate_drafts
|
||||
from repo_registry.content_indexing.extractor import ContentExtractor
|
||||
from repo_registry.core.logging import log_operation
|
||||
from repo_registry.llm_extraction.extractor import LLMCandidateExtractor
|
||||
from repo_registry.llm_extraction.mapper import LLMExtractionMapper
|
||||
from repo_registry.repo_ingestion.git import GitIngestionService
|
||||
from repo_registry.repo_ingestion.metadata import RepositoryMetadataExtractor
|
||||
from repo_registry.repo_scanning.scanner import DeterministicScanner
|
||||
from repo_registry.semantic import EmbeddingProvider, cosine_similarity
|
||||
from repo_registry.storage.sqlite import NotFoundError, RegistryStore
|
||||
from repo_scoping.candidate_graph.generator import CandidateGraphGenerator
|
||||
from repo_scoping.candidate_graph.normalization import normalize_candidate_drafts
|
||||
from repo_scoping.content_indexing.extractor import ContentExtractor
|
||||
from repo_scoping.core.logging import log_operation
|
||||
from repo_scoping.llm_extraction.extractor import LLMCandidateExtractor
|
||||
from repo_scoping.llm_extraction.mapper import LLMExtractionMapper
|
||||
from repo_scoping.repo_ingestion.git import GitIngestionService
|
||||
from repo_scoping.repo_ingestion.metadata import RepositoryMetadataExtractor
|
||||
from repo_scoping.repo_scanning.scanner import DeterministicScanner
|
||||
from repo_scoping.semantic import EmbeddingProvider, cosine_similarity
|
||||
from repo_scoping.storage.sqlite import NotFoundError, RegistryStore
|
||||
|
||||
|
||||
class RegistryService:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from repo_registry.llm_extraction.extractor import (
|
||||
from repo_scoping.llm_extraction.extractor import (
|
||||
ExtractedAbility,
|
||||
ExtractedCapability,
|
||||
ExtractedEvidence,
|
||||
@@ -7,7 +7,7 @@ from repo_registry.llm_extraction.extractor import (
|
||||
LLMExtractionError,
|
||||
create_llm_connect_adapter,
|
||||
)
|
||||
from repo_registry.llm_extraction.mapper import LLMExtractionMapper
|
||||
from repo_scoping.llm_extraction.mapper import LLMExtractionMapper
|
||||
|
||||
__all__ = [
|
||||
"ExtractedAbility",
|
||||
|
||||
@@ -4,7 +4,7 @@ import json
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Any, Protocol
|
||||
|
||||
from repo_registry.core.models import ContentChunk, Repository
|
||||
from repo_scoping.core.models import ContentChunk, Repository
|
||||
|
||||
|
||||
class LLMExtractionError(ValueError):
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from repo_registry.candidate_graph.generator import (
|
||||
from repo_scoping.candidate_graph.generator import (
|
||||
CandidateAbilityDraft,
|
||||
CandidateCapabilityDraft,
|
||||
CandidateEvidenceDraft,
|
||||
CandidateFeatureDraft,
|
||||
)
|
||||
from repo_registry.core.models import ContentChunk, ObservedFact, SourceReference
|
||||
from repo_registry.llm_extraction.extractor import ExtractedAbility
|
||||
from repo_scoping.core.models import ContentChunk, ObservedFact, SourceReference
|
||||
from repo_scoping.llm_extraction.extractor import ExtractedAbility
|
||||
|
||||
|
||||
class LLMExtractionMapper:
|
||||
|
||||
@@ -19,10 +19,16 @@ class RepositoryMetadataExtractor:
|
||||
pyproject = self._from_pyproject(root)
|
||||
package = self._from_package_json(root)
|
||||
readme = self._from_readme(root)
|
||||
fallback_name = self._name_from_url_or_path(url)
|
||||
source_name = self._source_name(url) or self._source_name(str(root))
|
||||
|
||||
return RepositoryMetadata(
|
||||
name=pyproject.name or package.name or readme.name or fallback_name,
|
||||
name=(
|
||||
source_name
|
||||
or pyproject.name
|
||||
or package.name
|
||||
or readme.name
|
||||
or "repository"
|
||||
),
|
||||
description=(
|
||||
pyproject.description
|
||||
or package.description
|
||||
@@ -77,10 +83,13 @@ class RepositoryMetadataExtractor:
|
||||
return RepositoryMetadata(name=title, description=None)
|
||||
return RepositoryMetadata(name="", description=None)
|
||||
|
||||
def _name_from_url_or_path(self, value: str) -> str:
|
||||
def _source_name(self, value: str) -> str:
|
||||
parsed = urlparse(value)
|
||||
path = parsed.path if parsed.scheme else value
|
||||
name = Path(path.rstrip("/")).name or "repository"
|
||||
name = Path(path.rstrip("/")).name
|
||||
if name.endswith(".git"):
|
||||
name = name[:-4]
|
||||
return name or "repository"
|
||||
normalized = name.strip()
|
||||
if normalized.lower() in {"", ".", "repo", "repository", "source", "checkout"}:
|
||||
return ""
|
||||
return normalized
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from repo_registry.scope.generator import ScopeGenerator
|
||||
from repo_registry.scope.validator import ScopeValidator
|
||||
from repo_scoping.scope.generator import ScopeGenerator
|
||||
from repo_scoping.scope.validator import ScopeValidator
|
||||
|
||||
__all__ = ["ScopeGenerator", "ScopeValidator"]
|
||||
|
||||
@@ -3,8 +3,8 @@ from __future__ import annotations
|
||||
import re
|
||||
from dataclasses import asdict
|
||||
|
||||
from repo_registry.core.service import RegistryService
|
||||
from repo_registry.storage.sqlite import NotFoundError
|
||||
from repo_scoping.core.service import RegistryService
|
||||
from repo_scoping.storage.sqlite import NotFoundError
|
||||
|
||||
|
||||
SCOPE_SECTIONS = [
|
||||
|
||||
@@ -4,7 +4,7 @@ import re
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
|
||||
from repo_registry.scope.generator import SCOPE_SECTIONS, ScopeGenerator
|
||||
from repo_scoping.scope.generator import SCOPE_SECTIONS, ScopeGenerator
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from repo_registry.self_scoping.assessment import export_assessment_artifact
|
||||
from repo_registry.self_scoping.comparison import compare_assessment_to_golden
|
||||
from repo_registry.self_scoping.review_store import (
|
||||
from repo_scoping.self_scoping.assessment import export_assessment_artifact
|
||||
from repo_scoping.self_scoping.comparison import compare_assessment_to_golden
|
||||
from repo_scoping.self_scoping.review_store import (
|
||||
record_assessment_outcome,
|
||||
record_assessment_pair_outcome,
|
||||
)
|
||||
|
||||
@@ -9,12 +9,12 @@ from importlib import metadata
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
from repo_registry.acceptance import (
|
||||
from repo_scoping.acceptance import (
|
||||
active_quality_criteria_version,
|
||||
evaluate_candidate_graph_quality,
|
||||
quality_gate_outcome_dicts,
|
||||
)
|
||||
from repo_registry.core.models import (
|
||||
from repo_scoping.core.models import (
|
||||
Ability,
|
||||
CandidateAbility,
|
||||
CandidateCapability,
|
||||
@@ -26,7 +26,7 @@ from repo_registry.core.models import (
|
||||
ReviewDecision,
|
||||
SourceReference,
|
||||
)
|
||||
from repo_registry.core.service import RegistryService
|
||||
from repo_scoping.core.service import RegistryService
|
||||
|
||||
|
||||
SCHEMA_VERSION = "self-scoping-assessment/v1"
|
||||
@@ -151,7 +151,7 @@ def _engine_identity(scanner_version: str, engine_root: Path) -> dict[str, Any]:
|
||||
|
||||
def _package_version() -> str:
|
||||
try:
|
||||
return metadata.version("repo-registry")
|
||||
return metadata.version("repo-scoping")
|
||||
except metadata.PackageNotFoundError:
|
||||
return "unknown"
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ from typing import Any
|
||||
from uuid import uuid4
|
||||
|
||||
|
||||
SELF_SCOPING_ROOT_ENV = "REPO_REGISTRY_SELF_SCOPING_ROOT"
|
||||
SELF_SCOPING_ROOT_ENV = "REPO_SCOPING_SELF_SCOPING_ROOT"
|
||||
OUTCOME_SCHEMA_VERSION = "self-scoping-review-outcome/v1"
|
||||
ALLOWED_OUTCOMES = {
|
||||
"prefer_golden",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from repo_registry.semantic.embeddings import (
|
||||
from repo_scoping.semantic.embeddings import (
|
||||
EmbeddingProvider,
|
||||
HashingEmbeddingProvider,
|
||||
cosine_similarity,
|
||||
|
||||
@@ -4,7 +4,7 @@ import json
|
||||
import sqlite3
|
||||
from pathlib import Path
|
||||
|
||||
from repo_registry.core.models import (
|
||||
from repo_scoping.core.models import (
|
||||
Ability,
|
||||
AbilitySummary,
|
||||
AnalysisRun,
|
||||
@@ -30,10 +30,10 @@ from repo_registry.core.models import (
|
||||
SourceReference,
|
||||
confidence_label,
|
||||
)
|
||||
from repo_registry.core.logging import log_operation
|
||||
from repo_registry.content_indexing.extractor import ContentChunkCandidate
|
||||
from repo_registry.candidate_graph.generator import CandidateAbilityDraft
|
||||
from repo_registry.repo_scanning.scanner import FactCandidate, ScanResult
|
||||
from repo_scoping.core.logging import log_operation
|
||||
from repo_scoping.content_indexing.extractor import ContentChunkCandidate
|
||||
from repo_scoping.candidate_graph.generator import CandidateAbilityDraft
|
||||
from repo_scoping.repo_scanning.scanner import FactCandidate, ScanResult
|
||||
|
||||
|
||||
class NotFoundError(ValueError):
|
||||
|
||||
@@ -12,19 +12,19 @@ from fastapi.responses import PlainTextResponse
|
||||
from pydantic import Field
|
||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
|
||||
from repo_registry.acceptance import (
|
||||
from repo_scoping.acceptance import (
|
||||
criteria_registry_dict,
|
||||
evaluate_candidate_graph_quality,
|
||||
load_quality_criteria,
|
||||
quality_gate_outcome_dicts,
|
||||
)
|
||||
from repo_registry.core.service import RegistryService
|
||||
from repo_registry.llm_extraction import LLMCandidateExtractor, create_llm_connect_adapter
|
||||
from repo_registry.repo_ingestion.git import GitIngestionService
|
||||
from repo_registry.semantic import HashingEmbeddingProvider
|
||||
from repo_registry.scope import ScopeGenerator, ScopeValidator
|
||||
from repo_registry.storage.sqlite import NotFoundError, RegistryStore
|
||||
from repo_registry.web_api.schemas import (
|
||||
from repo_scoping.core.service import RegistryService
|
||||
from repo_scoping.llm_extraction import LLMCandidateExtractor, create_llm_connect_adapter
|
||||
from repo_scoping.repo_ingestion.git import GitIngestionService
|
||||
from repo_scoping.semantic import HashingEmbeddingProvider
|
||||
from repo_scoping.scope import ScopeGenerator, ScopeValidator
|
||||
from repo_scoping.storage.sqlite import NotFoundError, RegistryStore
|
||||
from repo_scoping.web_api.schemas import (
|
||||
AbilityCreate,
|
||||
AbilitySummaryResponse,
|
||||
AbilityUpdate,
|
||||
@@ -86,9 +86,9 @@ def slugify(value: str) -> str:
|
||||
|
||||
|
||||
class Settings(BaseSettings):
|
||||
model_config = SettingsConfigDict(env_prefix="REPO_REGISTRY_")
|
||||
model_config = SettingsConfigDict(env_prefix="REPO_SCOPING_")
|
||||
|
||||
database_path: str = Field(default="var/repo-registry.sqlite3")
|
||||
database_path: str = Field(default="var/repo-scoping.sqlite3")
|
||||
checkout_root: str = Field(default="var/checkouts")
|
||||
llm_enabled: bool = Field(default=True)
|
||||
llm_provider: str | None = Field(default=None)
|
||||
@@ -103,7 +103,7 @@ def get_settings() -> Settings:
|
||||
|
||||
|
||||
def get_service(settings: Settings = Depends(get_settings)) -> RegistryService:
|
||||
logging.getLogger("repo_registry.operations").setLevel(
|
||||
logging.getLogger("repo_scoping.operations").setLevel(
|
||||
getattr(logging, settings.log_level.upper(), logging.INFO)
|
||||
)
|
||||
database_path = Path(settings.database_path)
|
||||
@@ -165,7 +165,7 @@ app = FastAPI(
|
||||
)
|
||||
|
||||
|
||||
from repo_registry.web_ui.views import router as ui_router
|
||||
from repo_scoping.web_ui.views import router as ui_router
|
||||
|
||||
app.include_router(ui_router)
|
||||
|
||||
|
||||
@@ -9,13 +9,13 @@ from urllib.parse import quote_plus, urlparse
|
||||
from fastapi import APIRouter, Depends, Form, HTTPException, Query
|
||||
from fastapi.responses import HTMLResponse, PlainTextResponse, RedirectResponse
|
||||
|
||||
from repo_registry.acceptance import (
|
||||
from repo_scoping.acceptance import (
|
||||
evaluate_candidate_graph_quality,
|
||||
quality_gate_outcome_dicts,
|
||||
)
|
||||
from repo_registry.core.service import RegistryService
|
||||
from repo_registry.self_scoping.comparison import compare_assessment_to_golden
|
||||
from repo_registry.self_scoping.review_store import (
|
||||
from repo_scoping.core.service import RegistryService
|
||||
from repo_scoping.self_scoping.comparison import compare_assessment_to_golden
|
||||
from repo_scoping.self_scoping.review_store import (
|
||||
ALLOWED_OUTCOMES,
|
||||
list_assessment_artifacts,
|
||||
list_golden_profiles,
|
||||
@@ -24,8 +24,8 @@ from repo_registry.self_scoping.review_store import (
|
||||
record_assessment_outcome,
|
||||
record_assessment_pair_outcome,
|
||||
)
|
||||
from repo_registry.storage.sqlite import NotFoundError
|
||||
from repo_registry.web_api.app import get_service
|
||||
from repo_scoping.storage.sqlite import NotFoundError
|
||||
from repo_scoping.web_api.app import get_service
|
||||
|
||||
|
||||
router = APIRouter(include_in_schema=False)
|
||||
|
||||
Reference in New Issue
Block a user