LemonCore.Checkpoint (lemon_core v0.1.0)

View Source

Shared checkpoint store and filesystem rollback operations.

Summary

Types

checkpoint()

@type checkpoint() :: %{
  id: String.t(),
  session_id: String.t(),
  timestamp: String.t(),
  state: map(),
  context: map(),
  todos: list(),
  requirements: map() | nil,
  metadata: map()
}

filesystem_snapshot()

@type filesystem_snapshot() :: %{
  path: String.t(),
  exists: boolean(),
  type: String.t() | nil,
  size: non_neg_integer() | nil,
  mode: non_neg_integer() | nil,
  content_b64: String.t() | nil
}

Functions

checkpoint_dir()

@spec checkpoint_dir() :: String.t()

Directory checkpoints are written to; see LemonCore.Paths.checkpoint_dir/1.

create(session_id, opts \\ [])

@spec create(
  String.t(),
  keyword()
) :: {:ok, checkpoint()} | {:error, term()}

create_filesystem(session_id, paths, opts \\ [])

@spec create_filesystem(String.t(), [String.t()], keyword()) ::
  {:ok, checkpoint()} | {:error, term()}

delete(checkpoint_id, opts \\ [])

@spec delete(
  String.t(),
  keyword()
) :: :ok | {:error, term()}

delete_all(session_id)

@spec delete_all(String.t()) :: {:ok, non_neg_integer()}

diff_filesystem(checkpoint_id, opts \\ [])

@spec diff_filesystem(
  String.t(),
  keyword()
) :: {:ok, map()} | {:error, term()}

exists?(checkpoint_id)

@spec exists?(String.t()) :: boolean()

get_latest(session_id)

@spec get_latest(String.t()) :: {:ok, checkpoint()} | {:error, :not_found}

list(session_id)

@spec list(String.t()) :: [checkpoint()]

load(checkpoint_id)

@spec load(String.t()) :: {:ok, checkpoint()} | {:error, term()}

prune(session_id, keep \\ 10)

@spec prune(String.t(), non_neg_integer()) :: {:ok, non_neg_integer()}

restore_filesystem(checkpoint_id, opts \\ [])

@spec restore_filesystem(
  String.t(),
  keyword()
) :: {:ok, map()} | {:error, term()}

stats(session_id)

@spec stats(String.t()) :: map()