feat: expose repository navigation queries
Assistant: codex Assistant-Model: gpt-5.6-sol Assistant-Session: 01a0230c-b06c-7641-808a-e191b6d1da49
This commit is contained in:
parent
283bbf048e
commit
e3e542f76c
9 changed files with 446 additions and 3 deletions
|
|
@ -27,6 +27,8 @@ CORE_TOOL_NAMES = frozenset({
|
|||
"register_repo",
|
||||
"update_repo_path",
|
||||
"list_domain_repos",
|
||||
"query_repository_navigation",
|
||||
"get_repository_navigation_facet",
|
||||
"check_repo_doi",
|
||||
"get_doi_summary",
|
||||
"register_service",
|
||||
|
|
@ -298,6 +300,50 @@ class HubCoreMCPServer:
|
|||
def list_domain_repos(domain_slug: str) -> str:
|
||||
return self._json(self._get("/repos/", {"domain": domain_slug}))
|
||||
|
||||
@register("query_repository_navigation")
|
||||
def query_repository_navigation(
|
||||
primary_domain: list[str] | None = None,
|
||||
secondary_domain: list[str] | None = None,
|
||||
category: list[str] | None = None,
|
||||
capability_tag: list[str] | None = None,
|
||||
business_stake: list[str] | None = None,
|
||||
business_mechanic: list[str] | None = None,
|
||||
cursor: str | None = None,
|
||||
limit: int = 100,
|
||||
) -> str:
|
||||
"""Navigate repositories across any combination of classification facets."""
|
||||
return self._json(
|
||||
self._get(
|
||||
"/ports/projections/repository-navigation/repositories",
|
||||
{
|
||||
"primary_domain": primary_domain,
|
||||
"secondary_domain": secondary_domain,
|
||||
"category": category,
|
||||
"capability_tag": capability_tag,
|
||||
"business_stake": business_stake,
|
||||
"business_mechanic": business_mechanic,
|
||||
"cursor": cursor,
|
||||
"limit": limit,
|
||||
},
|
||||
)
|
||||
)
|
||||
|
||||
@register("get_repository_navigation_facet")
|
||||
def get_repository_navigation_facet(
|
||||
facet_kind: str,
|
||||
facet_value: str,
|
||||
cursor: str | None = None,
|
||||
limit: int = 100,
|
||||
) -> str:
|
||||
"""Navigate one domain, category, tag, stake, or mechanic facet."""
|
||||
return self._json(
|
||||
self._get(
|
||||
"/ports/projections/repository-navigation/"
|
||||
f"facets/{facet_kind}/{facet_value}",
|
||||
{"cursor": cursor, "limit": limit},
|
||||
)
|
||||
)
|
||||
|
||||
@register("check_repo_doi")
|
||||
def check_repo_doi(repo_slug: str, force_refresh: bool = False) -> str:
|
||||
return self._json(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue