feat: implement GEWU service and local agent workflows
CI / quality (push) Canceled after 0s

This commit is contained in:
vasily committed 2026-10-14 19:21:35 +08:00
1 parent 4db3f45164
commit d25c04cdd2
175 files changed
+56243 -15

No files matched your search

+84
View File
@@ -0,0 +1,84 @@
import json
from pathlib import Path
from typing import cast
import pytest
from gewu.application.identity import Principal
from gewu.application.registry import LocalProjectRegistry
from gewu.application.search import CanonicalSearchService, SearchError, SearchIndex
from gewu.domain.contracts import ProjectRecord, ProjectStatus, Scope
def _service() -> CanonicalSearchService:
return CanonicalSearchService(
index=cast(SearchIndex, object()),
project_ids_provider=lambda: ("dome-performance", "interactive-video"),
canonical_head=lambda: "a" * 40,
default_includes_provider=lambda project_id: (
("interactive-video", "shared") if project_id == "dome-performance" else ()
),
)
def _principal(*projects: str) -> Principal:
return Principal("reader", "reader-key", frozenset({"viewer"}), frozenset(projects))
def test_single_project_scope_resolves_defaults_and_shared() -> None:
resolved = _service()._resolve_scope(
Scope(projects=("dome-performance",)),
_principal("dome-performance", "interactive-video", "shared"),
)
assert resolved == ("dome-performance", "interactive-video")
def test_explicit_empty_includes_suppresses_project_defaults() -> None:
resolved = _service()._resolve_scope(
Scope(projects=("dome-performance",), include_projects=(), include_shared=False),
_principal("dome-performance", "interactive-video", "shared"),
)
assert resolved == ("dome-performance",)
def test_default_includes_must_be_authorized() -> None:
with pytest.raises(SearchError, match="cannot read every requested project") as error:
_service()._resolve_scope(
Scope(projects=("dome-performance",)), _principal("dome-performance", "shared")
)
assert error.value.status_code == 403
def test_explicit_include_projects_override_defaults() -> None:
resolved = _service()._resolve_scope(
Scope(projects=("dome-performance",), include_projects=("interactive-video",)),
_principal("dome-performance", "interactive-video", "shared"),
)
assert resolved == ("dome-performance", "interactive-video")
def test_local_project_registry_exposes_validated_default_includes(tmp_path: Path) -> None:
project = ProjectRecord(
project_id="dome-performance",
title="Dome",
status=ProjectStatus.ACTIVE,
north_star="Build useful dome experiences.",
key_questions=("What works?",),
default_includes=("interactive-video", "shared"),
autonomy_policy_id="dome-policy",
)
registry_file = tmp_path / "registry.json"
registry_file.write_text(
json.dumps(
{"schema_version": 1, "projects": [project.model_dump(mode="json")], "policies": []}
),
encoding="utf-8",
)
registry = LocalProjectRegistry(registry_file)
assert registry.default_includes("dome-performance") == ("interactive-video",)