Packages
claude_code
0.35.0
0.36.5
0.36.4
0.36.3
0.36.2
0.36.1
0.36.0
0.35.0
0.34.0
0.33.1
0.32.2
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.0
0.17.0
0.16.0
0.15.0
0.14.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.0
0.11.0
0.10.0
0.9.0
0.8.1
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Claude Agent SDK for Elixir – Build AI agents with Claude Code
Current section
Files
Jump to
Current section
Files
lib/claude_code/message/prompt_suggestion_message.ex
defmodule ClaudeCode.Message.PromptSuggestionMessage do
@moduledoc """
Represents a prompt suggestion message from the Claude CLI.
Emitted after each turn when the `promptSuggestions` option is enabled.
Contains a predicted next user prompt that can be shown as a suggestion
in UI applications.
## Fields
- `:suggestion` - The suggested next prompt
- `:uuid` - Message UUID
- `:session_id` - Session identifier
## JSON Format
```json
{
"type": "prompt_suggestion",
"suggestion": "Now add tests for the new function",
"uuid": "...",
"session_id": "..."
}
```
"""
use ClaudeCode.JSONEncoder
@enforce_keys [:type, :suggestion, :session_id]
defstruct [
:type,
:suggestion,
:uuid,
:session_id
]
@type t :: %__MODULE__{
type: :prompt_suggestion,
suggestion: String.t(),
uuid: String.t() | nil,
session_id: String.t()
}
@doc """
Creates a new PromptSuggestionMessage from JSON data.
## Examples
iex> PromptSuggestionMessage.new(%{
...> "type" => "prompt_suggestion",
...> "suggestion" => "Add tests for the new module",
...> "session_id" => "session-1"
...> })
{:ok, %PromptSuggestionMessage{type: :prompt_suggestion, ...}}
iex> PromptSuggestionMessage.new(%{"type" => "assistant"})
{:error, :invalid_message_type}
"""
@spec new(map()) :: {:ok, t()} | {:error, atom()}
def new(%{"type" => "prompt_suggestion", "suggestion" => suggestion, "session_id" => session_id} = json) do
{:ok,
%__MODULE__{
type: :prompt_suggestion,
suggestion: suggestion,
uuid: json["uuid"],
session_id: session_id
}}
end
def new(%{"type" => "prompt_suggestion"}), do: {:error, :missing_required_fields}
def new(_), do: {:error, :invalid_message_type}
end