# `ASM.Extensions.Workspace.Backend`
[🔗](https://github.com/nshkrdotcom/agent_session_manager/blob/v0.9.2/lib/asm/extensions/workspace/backend.ex#L1)

Behavior contract for workspace snapshot backends.

# `diff`

```elixir
@callback diff(
  ASM.Extensions.Workspace.Snapshot.t(),
  ASM.Extensions.Workspace.Snapshot.t(),
  keyword()
) ::
  {:ok, ASM.Extensions.Workspace.Diff.t()} | {:error, ASM.Error.t()}
```

# `rollback`

```elixir
@callback rollback(
  ASM.Extensions.Workspace.Snapshot.t(),
  keyword()
) :: :ok | {:error, ASM.Error.t()}
```

# `snapshot`

```elixir
@callback snapshot(
  String.t(),
  keyword()
) :: {:ok, ASM.Extensions.Workspace.Snapshot.t()} | {:error, ASM.Error.t()}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
