# `Agentic.Loop.Profile`

Defines loop profiles -- named compositions of stages and config.

Each profile is a set of stages that compose to form a specific agent behavior.
Adding a new agent "mode" is just defining a new profile.

## LLM Profiles

- `:agentic` -- Full pipeline with tool use, progress tracking, context management
- `:agentic_planned` -- Two-phase: plan then execute with tracking and verification
- `:turn_by_turn` -- LLM proposes chunks, human approves/edits before execution
- `:conversational` -- Simple call-respond loop, no tool execution

## CLI / Local Agent Profiles

- `:claude_code` -- Claude Code CLI via local agent protocol
- `:opencode` -- OpenCode CLI via local agent protocol
- `:codex` -- Codex CLI via local agent protocol

## ACP Profiles

- `:acp` -- Agent Client Protocol (JSON-RPC 2.0 over stdio)
- `{:acp, agent_name}` -- ACP with a specific named agent

# `protocol_name`

```elixir
@type protocol_name() :: :llm | :claude_code | :opencode | atom()
```

# `config`

Returns the default config for the given profile.

# `resolve_from_capabilities`

Resolve which profile to use based on model capabilities.

If the model supports tool_use, use the agentic profile.
Otherwise, use conversational.

# `stages`

Returns the stage list for the given profile.

---

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