| 123456789101112131415161718192021222324252627282930313233343536373839 |
- """Pluggable hook for publishing agent run artifacts after each run.
- Framework stays free of infrastructure packages. Infra registers a publisher
- via ``set_run_artifact_publisher`` (see agent_logging under the infra package).
- """
- from __future__ import annotations
- from collections.abc import Callable
- from typing import TYPE_CHECKING
- if TYPE_CHECKING:
- from supply_agent.logging.logger import AgentLogger
- RunArtifactPublisher = Callable[["AgentLogger"], str | None]
- _publisher: RunArtifactPublisher | None = None
- def set_run_artifact_publisher(publisher: RunArtifactPublisher | None) -> None:
- """Install or clear the post-run artifact publisher callback."""
- global _publisher
- _publisher = publisher
- def get_run_artifact_publisher() -> RunArtifactPublisher | None:
- return _publisher
- def publish_run_artifacts(agent_logger: AgentLogger) -> str | None:
- """
- Invoke the registered publisher, if any.
- Returns the public artifact URL, or None when no publisher is registered
- or publishing is skipped / failed.
- """
- if _publisher is None:
- return None
- return _publisher(agent_logger)
|