From f257e385dba0b870b8b24a5afad10e8116e44588 Mon Sep 17 00:00:00 2001 From: CREDO23 Date: Wed, 1 Jul 2026 17:08:58 +0200 Subject: [PATCH] feat(capabilities): register web.discover verb --- .../app/capabilities/web/__init__.py | 5 +++-- .../capabilities/web/discover/definition.py | 18 ++++++++++++++++++ .../tests/unit/capabilities/test_registry.py | 10 ++++++++++ 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 surfsense_backend/app/capabilities/web/discover/definition.py diff --git a/surfsense_backend/app/capabilities/web/__init__.py b/surfsense_backend/app/capabilities/web/__init__.py index d6df4107d..f3710d1cf 100644 --- a/surfsense_backend/app/capabilities/web/__init__.py +++ b/surfsense_backend/app/capabilities/web/__init__.py @@ -1,5 +1,6 @@ -"""``web.*`` namespace: the generic web scraping verbs.""" +"""``web.*`` namespace: the generic web scraping + discovery verbs.""" from __future__ import annotations -from app.capabilities.web.scrape import definition # noqa: F401 — registers web.scrape +from app.capabilities.web.discover import definition as _discover # noqa: F401 +from app.capabilities.web.scrape import definition as _scrape # noqa: F401 diff --git a/surfsense_backend/app/capabilities/web/discover/definition.py b/surfsense_backend/app/capabilities/web/discover/definition.py new file mode 100644 index 000000000..1c3b4ec28 --- /dev/null +++ b/surfsense_backend/app/capabilities/web/discover/definition.py @@ -0,0 +1,18 @@ +"""``web.discover`` capability registration (free — see 04-capabilities open item).""" + +from __future__ import annotations + +from app.capabilities.store import register_capability +from app.capabilities.types import Capability +from app.capabilities.web.discover.executor import build_discover_executor +from app.capabilities.web.discover.schemas import DiscoverInput, DiscoverOutput + +WEB_DISCOVER = Capability( + name="web.discover", + input_schema=DiscoverInput, + output_schema=DiscoverOutput, + executor=build_discover_executor(), + billing_unit=None, +) + +register_capability(WEB_DISCOVER) diff --git a/surfsense_backend/tests/unit/capabilities/test_registry.py b/surfsense_backend/tests/unit/capabilities/test_registry.py index d0c6a08c4..3b941224c 100644 --- a/surfsense_backend/tests/unit/capabilities/test_registry.py +++ b/surfsense_backend/tests/unit/capabilities/test_registry.py @@ -9,6 +9,7 @@ from app.capabilities import ( ) from app.capabilities.store import get_capability from app.capabilities.types import BillingUnit +from app.capabilities.web.discover.schemas import DiscoverInput, DiscoverOutput from app.capabilities.web.scrape.schemas import ScrapeInput, ScrapeOutput pytestmark = pytest.mark.unit @@ -21,3 +22,12 @@ def test_web_scrape_is_registered_with_its_schemas_and_billing_unit(): assert cap.input_schema is ScrapeInput assert cap.output_schema is ScrapeOutput assert cap.billing_unit is BillingUnit.WEB_CRAWL + + +def test_web_discover_is_registered_and_free(): + cap = get_capability("web.discover") + + assert cap.name == "web.discover" + assert cap.input_schema is DiscoverInput + assert cap.output_schema is DiscoverOutput + assert cap.billing_unit is None