ADK.Artifact.Service behaviour (adk_ex v1.1.0)

Copy Markdown View Source

Behaviour for artifact storage backends.

Artifacts are versioned binary/text files associated with a session. Filenames starting with "user:" are user-scoped (shared across sessions).

Summary

Callbacks

Deletes an artifact. Version 0 or nil deletes all versions.

Lists artifact filenames for a session (includes user-scoped artifacts).

Loads an artifact part. Version 0 or nil loads the latest.

Saves a part as an artifact. Returns {:ok, version} on success.

Returns version numbers for a specific artifact, descending.

Types

opts()

@type opts() :: keyword()

Callbacks

delete(server, opts)

@callback delete(server :: GenServer.server(), opts()) :: :ok | {:error, term()}

Deletes an artifact. Version 0 or nil deletes all versions.

Options: :app_name, :user_id, :session_id, :filename, :version.

list(server, opts)

@callback list(server :: GenServer.server(), opts()) ::
  {:ok, [String.t()]} | {:error, term()}

Lists artifact filenames for a session (includes user-scoped artifacts).

Options: :app_name, :user_id, :session_id.

load(server, opts)

@callback load(server :: GenServer.server(), opts()) ::
  {:ok, ADK.Types.Part.t()} | {:error, term()}

Loads an artifact part. Version 0 or nil loads the latest.

Options: :app_name, :user_id, :session_id, :filename, :version.

save(server, opts)

@callback save(server :: GenServer.server(), opts()) ::
  {:ok, non_neg_integer()} | {:error, term()}

Saves a part as an artifact. Returns {:ok, version} on success.

Options: :app_name, :user_id, :session_id, :filename, :part. Optionally :version to overwrite a specific version.

versions(server, opts)

@callback versions(server :: GenServer.server(), opts()) ::
  {:ok, [non_neg_integer()]} | {:error, term()}

Returns version numbers for a specific artifact, descending.

Options: :app_name, :user_id, :session_id, :filename.