# Guava v0.34.0 - Table of Contents

> Elixir SDK for the Guava voice-agent platform.

## Pages

- [Guava (Elixir)](readme.md)
- [Parity with the Python SDK](parity.md)

- Guides
  - [Architecture](architecture.md)
  - [Getting started](getting-started.md)
  - [Agents](agents.md)
  - [Calls](calls.md)
  - [Tasks &amp; Fields](tasks-and-fields.md)
  - [Handlers](handlers.md)
  - [Channels](channels.md)
  - [Campaigns](campaigns.md)
  - [Messaging (SMS)](messaging.md)
  - [Client](client.md)
  - [RAG &amp; LLM helpers](rag-and-llm.md)
  - [Testing](testing.md)
  - [Deployment](deployment.md)
  - [Local development](local-development.md)

## Modules

- [Guava](Guava.md): The Elixir SDK for the [Guava](https://goguava.ai) voice-agent platform.
- [Guava.Agent](Guava.Agent.md): Behaviour for a voice agent, in the spirit of `GenServer`/`Phoenix.LiveView`:
`use Guava.Agent`, give it a persona, and implement only the callbacks you need.
- [Guava.Auth](Guava.Auth.md): Authentication strategies for the Guava API.
- [Guava.Auth.APIKey](Guava.Auth.APIKey.md): API-key authentication.
- [Guava.Auth.CLI](Guava.Auth.CLI.md): CLI-session authentication with OAuth token refresh.
- [Guava.Auth.Deploy](Guava.Auth.Deploy.md): Guava-deploy token-file authentication.
- [Guava.Call](Guava.Call.md): A handle to a live call, passed to your `Guava.Agent` handlers.
- [Guava.CallInfo](Guava.CallInfo.md): Information about an incoming or outgoing call.
- [Guava.CallInfo.PSTN](Guava.CallInfo.PSTN.md): A public-switched-telephone-network (phone) call.
- [Guava.CallInfo.Sip](Guava.CallInfo.Sip.md): A SIP call.
- [Guava.CallInfo.WebRTC](Guava.CallInfo.WebRTC.md): A browser (WebRTC) call.
- [Guava.Campaign](Guava.Campaign.md): An outbound calling campaign.
- [Guava.Campaigns](Guava.Campaigns.md): List, fetch, and manage outbound campaigns and their contacts.

- [Guava.Channel](Guava.Channel.md): A supervised channel connecting an agent module to callers. Use it as a child
spec in your own supervision tree
- [Guava.Client](Guava.Client.md): Account-level client for Guava's HTTP API.
- [Guava.Commands](Guava.Commands.md): Client-to-server commands sent over a call's WebSocket connection.
- [Guava.Commands.AcceptInbound](Guava.Commands.AcceptInbound.md): Accept the current inbound call.
- [Guava.Commands.ActionCandidate](Guava.Commands.ActionCandidate.md): A candidate action returned in an action suggestion.
- [Guava.Commands.ActionSuggestion](Guava.Commands.ActionSuggestion.md): Suggest zero or more actions in response to an action request.
- [Guava.Commands.AnswerQuestion](Guava.Commands.AnswerQuestion.md): Answer a question the agent relayed to the developer's system.
- [Guava.Commands.ChoiceResult](Guava.Commands.ChoiceResult.md): Return matched/other choices for a searchable-field query.
- [Guava.Commands.ExpertError](Guava.Commands.ExpertError.md): Inform the agent that a developer callback errored.
- [Guava.Commands.ListenInbound](Guava.Commands.ListenInbound.md): Register this connection as an inbound listener.
- [Guava.Commands.ReadScript](Guava.Commands.ReadScript.md): Have the agent read a script verbatim.
- [Guava.Commands.ReconnectOutboundSession](Guava.Commands.ReconnectOutboundSession.md): Reconnect to an in-progress outbound session.
- [Guava.Commands.RegisteredHooks](Guava.Commands.RegisteredHooks.md): Inform the server which developer callbacks are registered.
- [Guava.Commands.RejectInbound](Guava.Commands.RejectInbound.md): Reject the current inbound call.
- [Guava.Commands.RetryTask](Guava.Commands.RetryTask.md): Ask the agent to retry the current task.
- [Guava.Commands.SendCallerText](Guava.Commands.SendCallerText.md): Send a text message to the caller.
- [Guava.Commands.SendInstruction](Guava.Commands.SendInstruction.md): Send a free-form instruction to steer the agent.
- [Guava.Commands.SetAgentDTMF](Guava.Commands.SetAgentDTMF.md): Enable or disable the agent's ability to press DTMF digits.
- [Guava.Commands.SetLanguageMode](Guava.Commands.SetLanguageMode.md): Set the primary and secondary spoken languages.
- [Guava.Commands.SetPersona](Guava.Commands.SetPersona.md): Set the agent's persona (name, organization, purpose, voice).
- [Guava.Commands.SetTask](Guava.Commands.SetTask.md): Assign a task (objective + checklist of action items) to the agent.
- [Guava.Commands.SetVariable](Guava.Commands.SetVariable.md): Store a JSON-serializable call-scoped variable.
- [Guava.Commands.StartOutboundCall](Guava.Commands.StartOutboundCall.md): Start an outbound PSTN call.
- [Guava.Commands.Transfer](Guava.Commands.Transfer.md): Transfer the call to another destination.
- [Guava.Config](Guava.Config.md): Resolves the Guava base URL and locates the CLI config file.
- [Guava.Contact](Guava.Contact.md): A campaign contact to dial.
- [Guava.DateRangeParser](Guava.DateRangeParser.md): Parse natural-language time expressions into concrete date ranges via the LLM endpoint.
- [Guava.DatetimeFilter](Guava.DatetimeFilter.md): Filter ISO-8601 datetime slots by natural-language query, via the LLM endpoint.
- [Guava.DocumentQA](Guava.DocumentQA.md): Question-answering over documents.
- [Guava.Events](Guava.Events.md): Server-to-client events received over a call's WebSocket connection.
- [Guava.Events.ActionItemCompleted](Guava.Events.ActionItemCompleted.md): A field/action item was collected.
- [Guava.Events.ActionRequest](Guava.Events.ActionRequest.md): The caller requested an action. Expects an action suggestion.
- [Guava.Events.AgentQuestion](Guava.Events.AgentQuestion.md): The caller asked a question relayed to the developer's system. Expects an answer.
- [Guava.Events.AgentSpeech](Guava.Events.AgentSpeech.md): The agent said something.
- [Guava.Events.BotSessionEnded](Guava.Events.BotSessionEnded.md): The bot session ended.
- [Guava.Events.CallerSpeech](Guava.Events.CallerSpeech.md): The caller said something. Utterances sharing an id supersede earlier ones.
- [Guava.Events.ChoiceQuery](Guava.Events.ChoiceQuery.md): A searchable-field query needs matching choices.
- [Guava.Events.DTMFPressed](Guava.Events.DTMFPressed.md): A DTMF keypad digit was pressed.
- [Guava.Events.Error](Guava.Events.Error.md): An error occurred during the call.
- [Guava.Events.Escalate](Guava.Events.Escalate.md): An escalation was requested by a human or the agent.
- [Guava.Events.ExecuteAction](Guava.Events.ExecuteAction.md): The agent wants the developer to execute an action.
- [Guava.Events.InboundCall](Guava.Events.InboundCall.md): An inbound call has arrived.
- [Guava.Events.Intent](Guava.Events.Intent.md): The caller declared an intent (legacy).
- [Guava.Events.OutboundCallConnected](Guava.Events.OutboundCallConnected.md): An outbound call connected.
- [Guava.Events.OutboundCallFailed](Guava.Events.OutboundCallFailed.md): An outbound call failed to connect.
- [Guava.Events.OutboundSessionStarted](Guava.Events.OutboundSessionStarted.md): Deprecated. Retained for compatibility with older servers.
- [Guava.Events.SocketHealth](Guava.Events.SocketHealth.md): A socket health heartbeat.
- [Guava.Events.TaskCompleted](Guava.Events.TaskCompleted.md): A task finished.
- [Guava.Events.Warning](Guava.Events.Warning.md): A warning occurred during the call.
- [Guava.Field](Guava.Field.md): A structured-data collection instruction given to the agent during a call.
- [Guava.IncomingCallAction](Guava.IncomingCallAction.md): The action to take for an incoming call: accept or decline.
- [Guava.IncomingCallAction.Accept](Guava.IncomingCallAction.Accept.md): Accept an incoming call.
- [Guava.IncomingCallAction.Decline](Guava.IncomingCallAction.Decline.md): Decline an incoming call.
- [Guava.IntentRecognizer](Guava.IntentRecognizer.md): Match a caller intent against a fixed set of choices using the Guava LLM
endpoint, constrained so only the provided choices can be returned.

- [Guava.LLM](Guava.LLM.md): Thin wrapper over Guava's server-side LLM endpoint (`v1/llm/generate`).
- [Guava.PhoneNumberInfo](Guava.PhoneNumberInfo.md): Information about a phone number on your Guava account.
- [Guava.RAG](Guava.RAG.md): Retrieval-augmented-generation helpers.
- [Guava.RAG.EmbeddingModel](Guava.RAG.EmbeddingModel.md): Behaviour for an embedding model used by vector-store implementations.
- [Guava.RAG.GenerationModel](Guava.RAG.GenerationModel.md): Behaviour for a QA generation model backing local-mode `Guava.DocumentQA`.

- [Guava.RAG.ServerRAG](Guava.RAG.ServerRAG.md): RAG via the Guava server API (`v1/rag/*`). Uploads plain-text documents; the
server stores and answers over them. Handles content-addressed keys and
namespace scoping.

- [Guava.RAG.VectorStore](Guava.RAG.VectorStore.md): Behaviour for a vector store backing local-mode `Guava.DocumentQA`.
- [Guava.Say](Guava.Say.md): A checklist item instructing the agent to say a statement verbatim.
- [Guava.SerializableField](Guava.SerializableField.md): Wire representation of a `Guava.Field`.
- [Guava.Socket](Guava.Socket.md): A reliable, self-reconnecting GuavaSocket connection.
- [Guava.Socket.Protocol](Guava.Socket.Protocol.md): The GuavaSocket framing protocol: a reliable-messaging layer carried as JSON
text frames over a WebSocket. Mirrors `guava.socket.protocol`.

- [Guava.Socket.Reliable](Guava.Socket.Reliable.md): Pure state machine for the GuavaSocket reliable-messaging layer.
- [Guava.SuggestedAction](Guava.SuggestedAction.md): An action suggested in response to a caller's request, returned from an
`on_action_request` handler.

- [Guava.Testing](Guava.Testing.md): Drive an agent module against Guava's `v1/test-agent` endpoint — no phone needed.
- [Guava.Testing.Session](Guava.Testing.Session.md): Drives an agent under test against Guava's `v1/test-agent` endpoint.
- [Guava.Todo](Guava.Todo.md): A free-form checklist item describing something for the agent to do.
- [Guava.Types](Guava.Types.md): Shared value types, enums, and validators used across the wire protocol.
- [Guava.Usage](Guava.Usage.md): Optional, opt-in usage reporting (uploads batched method-call/exception events
to `v1/upload-telemetry`).

- Exceptions
  - [Guava.Error](Guava.Error.md): The single error type raised/returned across the SDK.

