PromptBuilder
Overview
ACP::PromptBuilder provides a builder pattern for constructing arrays of ContentBlock objects. It supports text, images, audio, embedded resources, and resource links.
Constructor
ACP::PromptBuilder.new
Creates a new empty builder.
Methods
#text
builder.text(content : String) : ACP::PromptBuilder
Adds a text content block. Returns self for chaining.
#image
builder.image(
data : String,
mime_type : String? = nil
) : ACP::PromptBuilder
Adds a base64-encoded image content block.
#audio
builder.audio(
data : String,
mime_type : String? = nil
) : ACP::PromptBuilder
Adds a base64-encoded audio content block.
#resource
builder.resource(
uri : String,
text : String,
mime_type : String? = nil
) : ACP::PromptBuilder
Adds an embedded resource content block with inline text content.
#resource_link(path)
builder.resource_link(
path : String,
mime_type : String? = nil
) : ACP::PromptBuilder
Adds a resource link from a file path. Automatically converts to a file:// URI.
#resource_link(uri, name)
builder.resource_link(
uri : String,
name : String,
mime_type : String? = nil
) : ACP::PromptBuilder
Adds a resource link with an explicit URI and display name.
#build
builder.build : Array(ACP::Protocol::ContentBlock)
Returns the assembled array of content blocks.
#size
builder.size : Int32
Returns the number of content blocks.
#empty?
builder.empty? : Bool
Returns true if no content blocks have been added.
Example
builder = ACP::PromptBuilder.new
builder
.text("Review the following files for security issues:")
.resource_link("/src/auth.cr", "text/x-crystal")
.resource_link("/src/api.cr", "text/x-crystal")
.text("Focus on input validation and SQL injection risks.")
blocks = builder.build
result = session.prompt(blocks)