AgentSessionManager.Persistence.ArtifactRegistry (AgentSessionManager v0.8.0)

Copy Markdown View Source

Tracks artifact metadata in the asm_artifacts table.

Provides registration, lookup, and statistics for artifacts stored in any backing store (S3, local filesystem, etc.).

The registry only manages metadata — actual artifact content is handled by the ArtifactStore port.

Usage

{:ok, registry} = ArtifactRegistry.start_link(repo: MyApp.Repo)

# Register an artifact after storing it
:ok = ArtifactRegistry.register(registry, %{
  session_id: "ses_123",
  run_id: "run_456",
  key: "patches/fix.diff",
  byte_size: 1234,
  checksum_sha256: "abc123...",
  storage_backend: "s3",
  storage_ref: "s3://bucket/patches/fix.diff"
})

# List artifacts for a session
{:ok, artifacts} = ArtifactRegistry.list_by_session(registry, "ses_123")

Summary

Functions

Returns a specification to start this module under a supervisor.

Soft-delete an artifact by key.

Get artifact metadata by key.

List artifacts for a session.

Register artifact metadata.

Get aggregate stats for a session's artifacts.

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

delete(server, key)

@spec delete(GenServer.server(), String.t()) ::
  :ok | {:error, AgentSessionManager.Core.Error.t()}

Soft-delete an artifact by key.

get_by_key(server, key)

@spec get_by_key(GenServer.server(), String.t()) ::
  {:ok, map() | nil} | {:error, AgentSessionManager.Core.Error.t()}

Get artifact metadata by key.

list_by_session(server, session_id, opts \\ [])

@spec list_by_session(GenServer.server(), String.t(), keyword()) ::
  {:ok, [map()]} | {:error, AgentSessionManager.Core.Error.t()}

List artifacts for a session.

register(server, attrs)

@spec register(GenServer.server(), map()) ::
  :ok | {:error, AgentSessionManager.Core.Error.t()}

Register artifact metadata.

session_stats(server, session_id)

@spec session_stats(GenServer.server(), String.t()) ::
  {:ok, map()} | {:error, AgentSessionManager.Core.Error.t()}

Get aggregate stats for a session's artifacts.

start_link(opts)