// Package llm provides LLM backends for the 9P filesystem.
package llm
import "context"
// Backend defines the interface for LLM backends.
// Both API and CLI clients implement this interface.
type Backend interface {
// Model returns the current model name
Model() string
// SetModel sets the model for subsequent requests
SetModel(model string)
// Temperature returns the current temperature
Temperature() float64
// SetTemperature sets the temperature (0.0-2.0)
SetTemperature(temp float64) error
// SystemPrompt returns the current system prompt
SystemPrompt() string
// SetSystemPrompt sets the system prompt
SetSystemPrompt(prompt string)
// LastTokens returns token count from last response
LastTokens() int
// Messages returns conversation history
Messages() []Message
// MessagesJSON returns conversation history as JSON
MessagesJSON() ([]byte, error)
// AddSystemMessage adds a system message to conversation history
AddSystemMessage(content string)
// Reset clears conversation history (but preserves system prompt)
Reset()
// Ask sends a prompt and returns the response (blocking)
Ask(ctx context.Context, prompt string) (string, error)
// StartStream begins streaming a response
StartStream(ctx context.Context, prompt string) error
// ReadStreamChunk reads the next streaming chunk
ReadStreamChunk() (string, bool)
// IsStreaming returns whether a stream is in progress
IsStreaming() bool
// WaitStream waits for stream to complete
WaitStream()
}
// Verify that both clients implement Backend
var _ Backend = (*Client)(nil)
var _ Backend = (*CLIClient)(nil)