31 lines
1.0 KiB
Python
31 lines
1.0 KiB
Python
"""Shared constants and helpers for hub (agent/skill) methods."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import re
|
|
from typing import Optional
|
|
|
|
from langsmith import utils as ls_utils
|
|
|
|
REPO_HANDLE_PATTERN = re.compile(r"^[a-z][a-z0-9-_]*$")
|
|
PLATFORM_HUB = "/v1/platform/hub/repos"
|
|
HUB = "/repos"
|
|
|
|
|
|
def build_commit_url(host: str, owner: str, name: str, commit_hash: str) -> str:
|
|
"""Build the URL for a hub directory commit."""
|
|
return f"{host}/hub/{owner}/{name}:{commit_hash[:8]}"
|
|
|
|
|
|
def resolve_owner_for_url(owner: str, tenant_handle: Optional[str]) -> str:
|
|
"""Resolve internal owner sentinel to a user-visible owner in URLs."""
|
|
if owner == "-" and tenant_handle:
|
|
return tenant_handle
|
|
return owner
|
|
|
|
|
|
def validate_parent_commit(parent_commit: Optional[str]) -> None:
|
|
"""Raise ``LangSmithUserError`` if ``parent_commit`` is set but malformed."""
|
|
if parent_commit is not None and not (8 <= len(parent_commit) <= 64):
|
|
raise ls_utils.LangSmithUserError("parent_commit must be 8-64 characters.")
|