# `Vibe.Goals.Goal`
[🔗](https://github.com/elixir-vibe/vibe/blob/v0.2.3/lib/vibe/goals/goal.ex#L1)

Persisted long-running goal for a Vibe session.

# `status`

```elixir
@type status() ::
  :active | :paused | :blocked | :usage_limited | :budget_limited | :complete
```

# `t`

```elixir
@type t() :: %Vibe.Goals.Goal{
  created_at: DateTime.t(),
  goal_id: String.t(),
  objective: String.t(),
  session_id: String.t(),
  status: status(),
  time_used_seconds: non_neg_integer(),
  token_budget: pos_integer() | nil,
  tokens_used: non_neg_integer(),
  updated_at: DateTime.t()
}
```

# `active?`

```elixir
@spec active?(t() | nil) :: boolean()
```

# `status`

```elixir
@spec status(atom() | String.t()) :: {:ok, status()} | {:error, term()}
```

# `statuses`

```elixir
@spec statuses() :: [status()]
```

---

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