Current section

Files

Jump to
agent_session_manager lib asm extensions workspace snapshot.ex
Raw

lib/asm/extensions/workspace/snapshot.ex

defmodule ASM.Extensions.Workspace.Snapshot do
@moduledoc """
Immutable workspace snapshot descriptor.
"""
@enforce_keys [:id, :backend, :root, :fingerprint, :captured_at]
defstruct [:id, :backend, :root, :fingerprint, :captured_at, metadata: %{}]
@type backend_kind :: :git | :hash
@type t :: %__MODULE__{
id: String.t(),
backend: backend_kind(),
root: String.t(),
fingerprint: String.t(),
captured_at: DateTime.t(),
metadata: map()
}
@spec to_map(t()) :: map()
def to_map(%__MODULE__{} = snapshot) do
%{
id: snapshot.id,
backend: snapshot.backend,
root: snapshot.root,
fingerprint: snapshot.fingerprint,
captured_at: snapshot.captured_at,
metadata: snapshot.metadata
}
end
end