types

package
v0.21.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 6, 2026 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrDangerBlocked indicates that a command or input was intercepted and blocked by the WAF (Detector).
	ErrDangerBlocked = errors.New("danger event blocked: input matched forbidden patterns")

	// ErrInvalidConfig indicates that the provided configuration is invalid or missing required fields.
	ErrInvalidConfig = errors.New("invalid execution configuration")

	// ErrSessionNotFound indicates that the requested session does not exist in the pool.
	ErrSessionNotFound = errors.New("session not found")

	// ErrSessionDead indicates that the session is no longer alive and cannot be used.
	ErrSessionDead = errors.New("session is dead")

	// ErrTimeout indicates that an operation timed out before completion.
	ErrTimeout = errors.New("operation timed out")

	// ErrInputTooLarge indicates that the input exceeds the maximum allowed size.
	ErrInputTooLarge = errors.New("input exceeds maximum allowed size")

	// ErrProcessStart indicates that the CLI process failed to start.
	ErrProcessStart = errors.New("failed to start CLI process")

	// ErrPipeClosed indicates that the pipe (stdin/stdout/stderr) is closed.
	ErrPipeClosed = errors.New("pipe is closed")
)

Standard Sentinel Errors for the HotPlex SDK

Functions

func SummarizeInput

func SummarizeInput(input map[string]any) string

SummarizeInput creates a human-readable summary of tool input. Uses rune-level truncation to avoid creating invalid UTF-8.

func TruncateString

func TruncateString(s string, maxLen int) string

TruncateString truncates a string to a maximum length for logging. Uses rune-level truncation to avoid creating invalid UTF-8.

Types

type AssistantMessage

type AssistantMessage struct {
	ID      string         `json:"id,omitempty"`      // Unique message ID
	Type    string         `json:"type,omitempty"`    // Typically "message"
	Role    string         `json:"role,omitempty"`    // Typically "assistant"
	Content []ContentBlock `json:"content,omitempty"` // Sequence of text and tool blocks
}

AssistantMessage represents the structured message emitted by the model.

type Config

type Config struct {
	WorkDir          string // Absolute path to the isolated sandbox directory where CLI operations occur
	SessionID        string // Unique identifier used to route the request to a persistent process in the pool
	TaskInstructions string // Per-task instructions or objective prepended to the user prompt
	WAFApproved      bool   // When true, Engine skips WAF check (already approved by chatapps layer)
}

Config defines the execution context for a single HotPlex interaction cycle (turn).

type ContentBlock

type ContentBlock struct {
	Type      string         `json:"type"`                  // Block type: "text", "tool_use", "tool_result"
	Text      string         `json:"text,omitempty"`        // Raw text content (for type="text")
	Name      string         `json:"name,omitempty"`        // Tool name (for type="tool_use")
	ID        string         `json:"id,omitempty"`          // Block identifier
	ToolUseID string         `json:"tool_use_id,omitempty"` // References the original tool_use (for type="tool_result")
	Input     map[string]any `json:"input,omitempty"`       // Tool input JSON (for type="tool_use")
	Content   string         `json:"content,omitempty"`     // Result content (for type="tool_result")
	IsError   bool           `json:"is_error,omitempty"`    // Whether the tool result indicates a failure
}

ContentBlock represents an atomic unit of model output (text or tool call).

func (*ContentBlock) GetUnifiedToolID

func (b *ContentBlock) GetUnifiedToolID() string

GetUnifiedToolID returns a tool identifier suitable for matching calls with results.

type MessageType added in v0.21.0

type MessageType string

MessageType 统一消息类型定义 (全项目共享,DRY 原则)

const (
	// ✅ 可存储类型 (白名单)
	MessageTypeUserInput     MessageType = "user_input"
	MessageTypeFinalResponse MessageType = "final_response"

	// ❌ 不可存储类型 (中间过程,自动过滤)
	MessageTypeThinking            MessageType = "thinking"
	MessageTypeAction              MessageType = "action"
	MessageTypeToolUse             MessageType = "tool_use"
	MessageTypeToolResult          MessageType = "tool_result"
	MessageTypeStatus              MessageType = "status"
	MessageTypeError               MessageType = "error"
	MessageTypePlanMode            MessageType = "plan_mode"
	MessageTypeExitPlanMode        MessageType = "exit_plan_mode"
	MessageTypeAskUserQuestion     MessageType = "ask_user_question"
	MessageTypeDangerBlock         MessageType = "danger_block"
	MessageTypeSessionStats        MessageType = "session_stats"
	MessageTypeCommandProgress     MessageType = "command_progress"
	MessageTypeCommandComplete     MessageType = "command_complete"
	MessageTypeSystem              MessageType = "system"
	MessageTypeUser                MessageType = "user"
	MessageTypeStepStart           MessageType = "step_start"
	MessageTypeStepFinish          MessageType = "step_finish"
	MessageTypeRaw                 MessageType = "raw"
	MessageTypeSessionStart        MessageType = "session_start"
	MessageTypeEngineStarting      MessageType = "engine_starting"
	MessageTypeUserMessageReceived MessageType = "user_message_received"
	MessageTypePermissionRequest   MessageType = "permission_request"
	MessageTypeAnswer              MessageType = "answer"
)

func (MessageType) IsIntermediate added in v0.21.0

func (t MessageType) IsIntermediate() bool

IsIntermediate 判断是否为中间过程消息

func (MessageType) IsStorable added in v0.21.0

func (t MessageType) IsStorable() bool

IsStorable 判断消息类型是否可存储 (单一事实来源)

type StreamMessage

type StreamMessage struct {
	Message      *AssistantMessage `json:"message,omitempty"`        // Details of an assistant-generated message
	Input        map[string]any    `json:"input,omitempty"`          // Arguments passed to a tool invocation
	Type         string            `json:"type"`                     // Event category: "assistant", "tool_use", "result", "thought", etc.
	Timestamp    string            `json:"timestamp,omitempty"`      // ISO8601 timestamp of the event
	SessionID    string            `json:"session_id,omitempty"`     // The persistent session identifier in the CLI's internal DB
	Role         string            `json:"role,omitempty"`           // Message role: "user", "assistant", or "system"
	Name         string            `json:"name,omitempty"`           // Name of the tool being used or the block type
	Output       string            `json:"output,omitempty"`         // Raw string output from a tool or assistant
	Status       string            `json:"status,omitempty"`         // Lifecycle status of the event (e.g., "running", "success")
	Error        string            `json:"error,omitempty"`          // Detailed error message if an operation fails
	Content      []ContentBlock    `json:"content,omitempty"`        // Hierarchical content blocks (text, tool_use, etc.)
	Duration     int               `json:"duration_ms,omitempty"`    // Execution time in milliseconds for "result" messages
	Subtype      string            `json:"subtype,omitempty"`        // Fine-grained type classification (e.g., for "result" events)
	IsError      bool              `json:"is_error,omitempty"`       // Flag indicating if the overall turn resulted in an error
	TotalCostUSD float64           `json:"total_cost_usd,omitempty"` // Cumulative cost of the turn in USD
	Usage        *UsageStats       `json:"usage,omitempty"`          // Precise token consumption for the turn
	Result       string            `json:"result,omitempty"`         // Final summarized result of the execution
}

StreamMessage represents a single event in the stream-json format emitted by the Claude Code CLI. This is the internal wire protocol used for communication between the CLI and the SDK.

func (*StreamMessage) GetContentBlocks

func (m *StreamMessage) GetContentBlocks() []ContentBlock

GetContentBlocks returns the primary content blocks of the message, handling nested assistant structures.

type UsageStats

type UsageStats struct {
	InputTokens           int32 `json:"input_tokens"`                          // Total tokens in the prompt (including system and context)
	OutputTokens          int32 `json:"output_tokens"`                         // Total tokens generated by the model
	CacheWriteInputTokens int32 `json:"cache_creation_input_tokens,omitempty"` // Tokens saved to the provider's prompt cache
	CacheReadInputTokens  int32 `json:"cache_read_input_tokens,omitempty"`     // Tokens retrieved from the provider's prompt cache
}

UsageStats represents the token consumption breakdown for a single execution turn.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL