Artifacts
Library Artifacts: agent-produced deliverables (reports, dashboards, plans, PDFs, documents). Metadata lives in Mongo and content in S3 with SSE-KMS; callers always go through this resource, never the S3 keys.
Access it as client.artifacts on a Strongly client, or the same path on AsyncStrongly with await. All methods exist on both with identical signatures.
Quick start
from strongly import Strongly
client = Strongly()
# List (auto-paginates as you iterate) # filters: search, artifact_type, tags, producer_agent_id, producer_skill_id
for artifact in client.artifacts.list():
print(artifact.id)
# Create
created = client.artifacts.create(
title="...",
artifact_type="...",
content_type="...",
content="...",
)
print(created.id)
# Read it back
fetched = client.artifacts.retrieve(created.id)
# Delete (returns None; raises on failure)
client.artifacts.delete(created.id)
Methods
Core
list
list(*, search: Optional[str] = None, artifact_type: Optional[str] = None, tags: Optional[List[str]] = None, producer_agent_id: Optional[str] = None, producer_skill_id: Optional[str] = None, limit: Optional[int] = None) -> SyncPaginator[Artifact]
List artifacts visible to the caller, with pagination and filters.
Args: search: Full-text search over title and summary. artifact_type: Filter by artifact type. tags: Filter by tags. producer_agent_id: Restrict to artifacts produced by an agent. producer_skill_id: Restrict to artifacts produced by a skill. limit: Maximum number of items to return (default: all matching items).
Returns:
A paginator yielding Artifact objects.
create
create(*, title: str, artifact_type: str, content_type: str, content: str, summary: Optional[str] = None, tags: Optional[Sequence[str]] = None) -> Artifact
Create an artifact.
Args:
title: Human-readable artifact title.
artifact_type: The artifact type (e.g. report, dashboard).
content_type: MIME content type of the payload.
content: The artifact payload (base64 for binary, plain string for text).
summary: Optional short summary.
tags: Optional tags.
Returns:
The created Artifact.
retrieve
retrieve(artifact_id: str) -> Artifact
Retrieve a single artifact by id.
update
update(artifact_id: str, *, title: Optional[str] = None, summary: Optional[str] = None, tags: Optional[Sequence[str]] = None) -> Artifact
Update editable artifact metadata (title, summary, tags).
delete
delete(artifact_id: str) -> None
Delete an artifact. Raises on failure; returns nothing.
Sharing & scope
share
share(artifact_id: str, user_id: str) -> Dict[str, Any]
Grant user_id access to this artifact (iterate for bulk share).
unshare
unshare(artifact_id: str, user_id: str) -> Dict[str, Any]
Revoke user_id's access to this artifact.
toggle_public
toggle_public(artifact_id: str) -> Dict[str, Any]
Flip the public visibility flag (owner/admin only).
toggle_org_share
toggle_org_share(artifact_id: str) -> Dict[str, Any]
Flip org-wide visibility (distinct from fully public).
update_scope
update_scope(artifact_id: str, *, scope: Optional[Dict[str, Any]] = None) -> Dict[str, Any]
Re-scope an artifact (owner-only). An empty scope moves it to user-global.
Other
download_url
download_url(artifact_id: str, *, ttl_seconds: Optional[int] = None) -> ArtifactDownloadUrl
Return a short-lived pre-signed URL for the artifact content.
Default TTL is 5 minutes; pass ttl_seconds up to 900 (15 minutes)
when the downstream consumer needs longer.
refresh_size
refresh_size(artifact_id: str) -> Artifact
Re-read the S3 object size and refresh contentSizeBytes (idempotent).