Documentation
¶
Index ¶
- Constants
- Variables
- func IsActiveRunState(raw string) bool
- func NewQueuedTurnID() (string, error)
- func NewRunID() (string, error)
- func NewThreadID() (string, error)
- func RunDesktopModelSourceConnector(ctx context.Context, opts DesktopModelSourceConnectorOptions) error
- func SanitizeActivityTimelineBlockJSON(raw json.RawMessage) (json.RawMessage, error)
- func SanitizeActivityTimelineBlockValue(value any) (any, error)
- func SanitizeActivityTimelineMessageJSON(raw string) (json.RawMessage, error)
- func SkillErrorCode(err error) string
- func SkillErrorStatus(err error) int
- func StripTargetToolArgs(args map[string]any) map[string]any
- type AIRuntimeStatus
- type ActiveThreadRun
- type ActivityTimelineBlock
- type AppendThreadMessageRequest
- type ApplyPatchResult
- type ContentPart
- type ContextActionContextItem
- type ContextActionEnvelope
- type ContextActionExecutionHint
- type ContextActionPresentation
- type ContextActionSource
- type ContextActionTarget
- type CreateThreadRequest
- type CreateThreadResponse
- type DefaultModeToolFilter
- type DesktopModelSourceConnectorOptions
- type DesktopModelSourceModel
- type DesktopModelSourceModelSnapshot
- type DesktopModelSourceRPCError
- type DesktopModelSourceRPCFrame
- type DesktopModelSourceSession
- type DesktopModelSourceStartupReport
- type DesktopModelSourceStatus
- type ExitPlanModeArgs
- type ExitPlanModeResult
- type ExitPlanPromptRef
- type FileEditArgs
- type FileMutationResult
- type FileReadArgs
- type FileReadResult
- type FileWriteArgs
- type FlowerActivityFileAction
- type FlowerApprovalAction
- type FlowerApprovalState
- type FlowerApprovalStatus
- type FlowerApprovalSummary
- type FlowerFileActionOpenRequest
- type FlowerFileActionOpenTarget
- type FlowerLiveActivityUpdatedPayload
- type FlowerLiveApprovalPayload
- type FlowerLiveBlock
- type FlowerLiveBootstrapResponse
- type FlowerLiveEvent
- type FlowerLiveEventsResponse
- type FlowerLiveInputRequestedPayload
- type FlowerLiveInputResolvedPayload
- type FlowerLiveKind
- type FlowerLiveMaterializedState
- type FlowerLiveMessageBlockDeltaPayload
- type FlowerLiveMessageBlockSetPayload
- type FlowerLiveMessageBlockStartedPayload
- type FlowerLiveMessageCommittedPayload
- type FlowerLiveMessageDraft
- type FlowerLiveMessageFailedPayload
- type FlowerLiveMessageStartedPayload
- type FlowerLiveResyncRequiredPayload
- type FlowerLiveRunStartedPayload
- type FlowerLiveRunState
- type FlowerLiveRunStatusChangedPayload
- type FlowerLiveThreadPatch
- type FlowerLiveThreadPatchedPayload
- type FlowerLiveTimelineReplacedPayload
- type FlowerLiveUsageUpdatedPayload
- type FlowerSafeTarget
- type FlowerThreadReadRecord
- type FlowerThreadReadSnapshot
- type FlowerThreadReadView
- type FlowerTimelineMessage
- type FollowupAttachmentView
- type FollowupItemView
- type InMemoryToolRegistry
- type ListFollowupsResponse
- type ListRunEventsQuery
- type ListRunEventsResponse
- type ListThreadMessagesResponse
- type ListThreadsResponse
- type LocalToolExecutionOptions
- type LocalToolExecutionResult
- type LoopDetector
- type Message
- type ModeFlags
- type ModeToolFilter
- type Model
- type ModelGateway
- type ModelGatewayRequest
- type ModelGatewayResult
- type ModelGatewayState
- type ModelSelectInput
- type ModelSelector
- type ModelsResponse
- type Options
- type PartialToolCall
- type PartialUsage
- type PatchFollowupRequest
- type PatchThreadRequest
- type ProviderControls
- type RealtimeEvent
- type RealtimeEventType
- type RealtimeLifecyclePhase
- type RealtimeStreamKind
- type ReorderFollowupsRequest
- type RequestUserInputAction
- type RequestUserInputAnswer
- type RequestUserInputChoice
- type RequestUserInputPrompt
- type RequestUserInputQuestion
- type RequestUserInputResolvedQuestion
- type RequestUserInputResponse
- type RequestUserInputResponseRecord
- type RequestUserInputSecretAnswer
- type RunAttachmentIn
- type RunEventView
- type RunHistoryMsg
- type RunInput
- type RunOptions
- type RunRequest
- type RunStartRequest
- type RunState
- type SendUserTurnRequest
- type SendUserTurnResponse
- type Service
- func (s *Service) ActiveRunCount(endpointID string) int
- func (s *Service) AppendThreadMessage(ctx context.Context, meta *session.Meta, threadID string, role string, ...) error
- func (s *Service) BrowseSkillFile(skillPath string, file string, encoding string, maxBytes int) (*SkillBrowseFileResult, error)
- func (s *Service) BrowseSkillTree(skillPath string, dir string) (*SkillBrowseTreeResult, error)
- func (s *Service) CancelRun(meta *session.Meta, runID string) error
- func (s *Service) CancelThread(meta *session.Meta, threadID string) error
- func (s *Service) Close() error
- func (s *Service) CreateSkill(scope string, name string, description string, body string) (*SkillCatalog, error)
- func (s *Service) CreateThread(ctx context.Context, meta *session.Meta, title string, modelID string, ...) (*ThreadView, error)
- func (s *Service) DeleteFollowup(ctx context.Context, meta *session.Meta, threadID string, followupID string) error
- func (s *Service) DeleteSkill(scope string, name string) (*SkillCatalog, error)
- func (s *Service) DeleteThread(ctx context.Context, meta *session.Meta, threadID string, force bool) error
- func (s *Service) DesktopModelSourceBindingSnapshot() runtimeservice.Binding
- func (s *Service) DesktopModelSourceBindingStatus(ctx context.Context) runtimeservice.Binding
- func (s *Service) DetachRealtimeSink(streamServer *rpc.Server)
- func (s *Service) DisconnectDesktopModelSource() *AIRuntimeStatus
- func (s *Service) Enabled() bool
- func (s *Service) ForkThread(ctx context.Context, meta *session.Meta, sourceThreadID string, title string) (*ThreadView, error)
- func (s *Service) GetFlowerThreadLiveBootstrap(ctx context.Context, meta *session.Meta, threadID string) (*FlowerLiveBootstrapResponse, error)
- func (s *Service) GetFlowerThreadMetadata(ctx context.Context, endpointID string, threadID string) (*threadstore.FlowerThreadMetadata, error)
- func (s *Service) GetTerminalToolOutput(ctx context.Context, meta *session.Meta, runID string, toolID string) (*TerminalToolOutput, error)
- func (s *Service) GetThread(ctx context.Context, meta *session.Meta, threadID string) (*ThreadView, error)
- func (s *Service) GetThreadTodos(ctx context.Context, meta *session.Meta, threadID string) (*ThreadTodosView, error)
- func (s *Service) GetToolDetail(ctx context.Context, meta *session.Meta, runID string, toolID string) (*ToolDetail, error)
- func (s *Service) HasActiveThread(threadID string) bool
- func (s *Service) HasActiveThreadForEndpoint(endpointID string, threadID string) bool
- func (s *Service) ImportGitHubSkills(req SkillGitHubImportRequest) (*SkillGitHubImportResult, error)
- func (s *Service) ListActiveThreadRuns(endpointID string) []ActiveThreadRun
- func (s *Service) ListFlowerThreadLiveEvents(ctx context.Context, meta *session.Meta, threadID string, afterSeq int64, ...) (*FlowerLiveEventsResponse, error)
- func (s *Service) ListFollowups(ctx context.Context, meta *session.Meta, threadID string, limit int) (*ListFollowupsResponse, error)
- func (s *Service) ListGitHubSkillCatalog(req SkillGitHubCatalogRequest) (*SkillGitHubCatalog, error)
- func (s *Service) ListModels() (*ModelsResponse, error)
- func (s *Service) ListRecentThreadToolCalls(ctx context.Context, meta *session.Meta, threadID string, limit int) ([]threadstore.ToolCallRecord, error)
- func (s *Service) ListRunEvents(ctx context.Context, meta *session.Meta, runID string, limit int) (*ListRunEventsResponse, error)
- func (s *Service) ListRunEventsWithQuery(ctx context.Context, meta *session.Meta, runID string, ...) (*ListRunEventsResponse, error)
- func (s *Service) ListSkillSources() (*SkillSourcesView, error)
- func (s *Service) ListSkillsCatalog() (*SkillCatalog, error)
- func (s *Service) ListThreadMessages(ctx context.Context, meta *session.Meta, threadID string, limit int, ...) (*ListThreadMessagesResponse, error)
- func (s *Service) ListThreads(ctx context.Context, meta *session.Meta, limit int, cursor string) (*ListThreadsResponse, error)
- func (s *Service) OpenUpload(ctx context.Context, endpointID string, uploadID string) (*UploadResponse, string, error)
- func (s *Service) PatchSkillToggles(patches []SkillTogglePatch) (*SkillCatalog, error)
- func (s *Service) PrepareDesktopModelSource(session DesktopModelSourceSession) (*AIRuntimeStatus, error)
- func (s *Service) RegisterRPC(r *rpc.Router, meta *session.Meta, streamServer *rpc.Server)
- func (s *Service) RegisterRPCWithAccessGate(r *rpc.Router, meta *session.Meta, streamServer *rpc.Server, ...)
- func (s *Service) ReinstallSkills(paths []string, overwrite bool) (*SkillReinstallResult, error)
- func (s *Service) ReloadSkillsCatalog() (*SkillCatalog, error)
- func (s *Service) RenameThread(ctx context.Context, meta *session.Meta, threadID string, title string) error
- func (s *Service) ReorderFollowups(ctx context.Context, meta *session.Meta, threadID string, ...) error
- func (s *Service) ResolveFlowerFileActionOpenTarget(ctx context.Context, meta *session.Meta, req FlowerFileActionOpenRequest) (FlowerFileActionOpenTarget, error)
- func (s *Service) RuntimeStatus(ctx context.Context) *AIRuntimeStatus
- func (s *Service) SaveUpload(ctx context.Context, endpointID string, r io.Reader, name string, ...) (*UploadResponse, error)
- func (s *Service) SendUserTurn(ctx context.Context, meta *session.Meta, req SendUserTurnRequest) (SendUserTurnResponse, error)
- func (s *Service) ServeDesktopModelSourceRPC(ctx context.Context, session DesktopModelSourceSession, ws *websocket.Conn, ...) error
- func (s *Service) SetCurrentModelID(modelID string, persist func(next *config.AIConfig) error) error
- func (s *Service) SetThreadExecutionMode(ctx context.Context, meta *session.Meta, threadID string, executionMode string) error
- func (s *Service) SetThreadModel(ctx context.Context, meta *session.Meta, threadID string, modelID string) error
- func (s *Service) SetThreadPinned(ctx context.Context, meta *session.Meta, threadID string, pinned bool) (*ThreadView, error)
- func (s *Service) StartRun(ctx context.Context, meta *session.Meta, runID string, req RunStartRequest, ...) error
- func (s *Service) StartRunDetached(meta *session.Meta, runID string, req RunStartRequest) error
- func (s *Service) StartRunDetachedWithPersisted(meta *session.Meta, runID string, req RunStartRequest, ...) error
- func (s *Service) StopThread(ctx context.Context, meta *session.Meta, threadID string) (StopThreadResponse, error)
- func (s *Service) SubmitFlowerApproval(meta *session.Meta, req SubmitFlowerApprovalRequest) (*SubmitFlowerApprovalResponse, error)
- func (s *Service) SubmitRequestUserInputResponse(ctx context.Context, meta *session.Meta, ...) (SubmitRequestUserInputResponseResponse, error)
- func (s *Service) SubscribeSummary(endpointID string, streamServer *rpc.Server) ([]ActiveThreadRun, error)
- func (s *Service) SubscribeThread(endpointID string, threadID string, streamServer *rpc.Server) (string, error)
- func (s *Service) ToolTargetPolicy() ToolTargetPolicy
- func (s *Service) UpdateConfig(next *config.AIConfig, persist func() error) error
- func (s *Service) UpdateFilesystemScope(scope *filesystemscope.Registry) error
- func (s *Service) UpdateFollowup(ctx context.Context, meta *session.Meta, threadID string, followupID string, ...) error
- func (s *Service) UpsertFlowerThreadMetadata(ctx context.Context, rec threadstore.FlowerThreadMetadata) error
- func (s *Service) ValidateGitHubSkillImport(req SkillGitHubImportRequest) (*SkillGitHubValidateResult, error)
- func (s *Service) ValidateWorkingDir(workingDir string) (string, error)
- type SkillActivation
- type SkillBrowseFileResult
- type SkillBrowseTreeEntry
- type SkillBrowseTreeResult
- type SkillCatalog
- type SkillCatalogEntry
- type SkillCatalogNotice
- type SkillError
- type SkillGitHubAuth
- type SkillGitHubCatalog
- type SkillGitHubCatalogItem
- type SkillGitHubCatalogRequest
- type SkillGitHubCatalogSource
- type SkillGitHubImportItem
- type SkillGitHubImportRequest
- type SkillGitHubImportResult
- type SkillGitHubResolvedSkill
- type SkillGitHubValidateResult
- type SkillMCPDependency
- type SkillMeta
- type SkillReinstallItem
- type SkillReinstallResult
- type SkillSourceRecord
- type SkillSourceType
- type SkillSourcesView
- type SkillTogglePatch
- type SourceRef
- type StopThreadRequest
- type StopThreadResponse
- type StreamEvent
- type StreamEventType
- type SubmitFlowerApprovalRequest
- type SubmitFlowerApprovalResponse
- type SubmitRequestUserInputResponseRequest
- type SubmitRequestUserInputResponseResponse
- type TargetToolCall
- type TargetToolExecutor
- type TargetToolResult
- type TerminalToolOutput
- type ThreadTodosView
- type ThreadView
- type TodoItem
- type TodoSummary
- type ToolApprovalRequest
- type ToolCall
- type ToolDef
- type ToolDetail
- type ToolHandler
- type ToolRegistry
- type ToolResult
- type ToolTargetPolicy
- type TurnBudgets
- type TurnSnapshot
- type TurnUsage
- type UploadResponse
Constants ¶
const ( AskUserReasonUserDecisionRequired = "user_decision_required" AskUserReasonPermissionBlocked = "permission_blocked" AskUserReasonMissingExternalInput = "missing_external_input" AskUserReasonConflictingWork = "conflicting_constraints" AskUserReasonSafetyConfirmation = "safety_confirmation" )
const ( DesktopModelSourceProviderType = "desktop_model_source" DesktopModelSourceProtocolVersion = "redeven-desktop-model-source-rpc-v1" DesktopModelSourceDefaultSource = "desktop_local_environment" )
const ( // Type IDs must stay in sync with // internal/envapp/ui_src/src/ui/protocol/redeven_v1/typeIds.ts. TypeID_AI_SEND_USER_TURN uint32 = 6001 TypeID_AI_SUBSCRIBE_SUMMARY uint32 = 6003 TypeID_AI_EVENT_NOTIFY uint32 = 6004 // notify (agent -> client) TypeID_AI_MESSAGES_LIST uint32 = 6006 TypeID_AI_SUBSCRIBE_THREAD uint32 = 6009 TypeID_AI_STOP_THREAD uint32 = 6011 TypeID_AI_SUBMIT_REQUEST_USER_INPUT_RESPONSE uint32 = 6012 )
const ( ErrCodeAISkillsInvalidScope = "AI_SKILLS_INVALID_SCOPE" ErrCodeAISkillsInvalidSource = "AI_SKILLS_INVALID_SOURCE" ErrCodeAISkillsInvalidPath = "AI_SKILLS_INVALID_PATH" ErrCodeAISkillsPathEscape = "AI_SKILLS_PATH_ESCAPE" ErrCodeAISkillsSkillExists = "AI_SKILLS_SKILL_EXISTS" ErrCodeAISkillsSkillNotFound = "AI_SKILLS_SKILL_NOT_FOUND" ErrCodeAISkillsFrontmatterBad = "AI_SKILLS_FRONTMATTER_INVALID" ErrCodeAISkillsGitHubFetchFailed = "AI_SKILLS_GITHUB_FETCH_FAILED" ErrCodeAISkillsGitFallbackFailed = "AI_SKILLS_GIT_FALLBACK_FAILED" ErrCodeAISkillsArchiveInvalid = "AI_SKILLS_ARCHIVE_INVALID" ErrCodeAISkillsBrowseForbidden = "AI_SKILLS_BROWSE_FORBIDDEN" ErrCodeAISkillsFileTooLarge = "AI_SKILLS_FILE_TOO_LARGE" ErrCodeAISkillsInternal = "AI_SKILLS_INTERNAL_ERROR" )
const ( ToolTargetModeLocalRuntime = "local_runtime" ToolTargetModeExplicitTarget = "explicit_target" )
const ( TaskComplexitySimple = "simple" TaskComplexityStandard = "standard" TaskComplexityComplex = "complex" )
const ( TodoStatusPending = "pending" TodoStatusInProgress = "in_progress" TodoStatusCompleted = "completed" TodoStatusCancelled = "cancelled" )
const ContextActionSchemaVersion = 2
const FlowerLiveSchemaVersion int64 = 1
Variables ¶
var ( ErrFlowerFileActionInvalid = errors.New("flower file action is invalid") ErrFlowerFileActionNotFound = errors.New("flower file action was not found") )
var ( ErrNotConfigured = errors.New("ai not configured") ErrRunActive = errors.New("run already active") ErrThreadBusy = errors.New("thread already active") ErrModelLockViolation = errors.New("model lock violation") ErrModelSwitchRequiresExplicitRestart = errors.New("model switch requires explicit restart") )
var ErrFollowupsRevisionChanged = errors.New("followups revision changed")
var ErrInvalidContextAction = errors.New("invalid context action")
var ErrInvalidFollowupLane = errors.New("invalid followup lane")
var ErrRunChanged = errors.New("run changed")
var ErrWaitingPromptChanged = errors.New("waiting prompt changed")
var ErrWaitingUserQueueConflict = errors.New("waiting-user queue request conflicts with waiting response")
Functions ¶
func IsActiveRunState ¶
func NewQueuedTurnID ¶
func NewThreadID ¶
NewThreadID generates a cryptographically random thread id.
func RunDesktopModelSourceConnector ¶ added in v0.6.8
func RunDesktopModelSourceConnector(ctx context.Context, opts DesktopModelSourceConnectorOptions) error
func SanitizeActivityTimelineBlockJSON ¶ added in v0.7.1
func SanitizeActivityTimelineBlockJSON(raw json.RawMessage) (json.RawMessage, error)
func SanitizeActivityTimelineBlockValue ¶ added in v0.7.1
func SanitizeActivityTimelineMessageJSON ¶ added in v0.7.1
func SanitizeActivityTimelineMessageJSON(raw string) (json.RawMessage, error)
func SkillErrorCode ¶
func SkillErrorStatus ¶
Types ¶
type AIRuntimeStatus ¶ added in v0.6.4
type AIRuntimeStatus struct {
RemoteConfigured bool `json:"remote_configured"`
DesktopModelSource *DesktopModelSourceStatus `json:"desktop_model_source,omitempty"`
}
type ActiveThreadRun ¶
ActiveThreadRun is returned in subscribe snapshots so late subscribers can discover currently running threads before live events arrive.
type ActivityTimelineBlock ¶ added in v0.6.10
type ActivityTimelineBlock struct {
Type string `json:"type"`
FileActions map[string]FlowerActivityFileAction `json:"file_actions,omitempty"`
observation.ActivityTimeline
}
type ApplyPatchResult ¶ added in v0.7.1
type ApplyPatchResult struct {
FilesChanged int `json:"files_changed"`
Hunks int `json:"hunks"`
Additions int `json:"additions"`
Deletions int `json:"deletions"`
InputFormat string `json:"input_format"`
NormalizedFormat string `json:"normalized_format"`
Files []patchFileSummary `json:"files"`
Mutations []FileMutationResult `json:"mutations"`
}
type ContentPart ¶
type ContentPart struct {
Type string `json:"type"`
Text string `json:"text,omitempty"`
FileURI string `json:"file_uri,omitempty"`
MimeType string `json:"mime_type,omitempty"`
ToolCallID string `json:"tool_call_id,omitempty"`
ToolUseID string `json:"tool_use_id,omitempty"`
ToolName string `json:"tool_name,omitempty"`
ArgsJSON string `json:"args_json,omitempty"`
JSON []byte `json:"json,omitempty"`
}
type ContextActionContextItem ¶ added in v0.7.1
type ContextActionContextItem struct {
Kind string `json:"kind"`
Path string `json:"path,omitempty"`
IsDirectory bool `json:"is_directory,omitempty"`
RootLabel string `json:"root_label,omitempty"`
Selection string `json:"selection,omitempty"`
SelectionChars int `json:"selection_chars,omitempty"`
WorkingDir string `json:"working_dir,omitempty"`
PID int `json:"pid,omitempty"`
Name string `json:"name,omitempty"`
Username string `json:"username,omitempty"`
CPUPercent float64 `json:"cpu_percent,omitempty"`
MemoryBytes int64 `json:"memory_bytes,omitempty"`
Platform string `json:"platform,omitempty"`
CapturedAtMs int64 `json:"captured_at_ms,omitempty"`
Title string `json:"title,omitempty"`
Detail string `json:"detail,omitempty"`
Content string `json:"content,omitempty"`
}
type ContextActionEnvelope ¶ added in v0.7.1
type ContextActionEnvelope struct {
SchemaVersion int `json:"schema_version"`
ActionID string `json:"action_id"`
Provider string `json:"provider,omitempty"`
Target ContextActionTarget `json:"target"`
Source ContextActionSource `json:"source"`
ExecutionContext *ContextActionExecutionHint `json:"execution_context,omitempty"`
Context []ContextActionContextItem `json:"context"`
Presentation ContextActionPresentation `json:"presentation"`
SuggestedWorkingDir string `json:"suggested_working_dir_abs,omitempty"`
}
type ContextActionExecutionHint ¶ added in v0.7.1
type ContextActionPresentation ¶ added in v0.7.1
type ContextActionSource ¶ added in v0.7.1
type ContextActionTarget ¶ added in v0.7.1
type CreateThreadRequest ¶
type CreateThreadResponse ¶
type CreateThreadResponse struct {
Thread ThreadView `json:"thread"`
}
type DefaultModeToolFilter ¶
type DefaultModeToolFilter struct{}
func (DefaultModeToolFilter) FilterToolsForMode ¶
func (f DefaultModeToolFilter) FilterToolsForMode(mode string, all []ToolDef) []ToolDef
type DesktopModelSourceConnectorOptions ¶ added in v0.6.8
type DesktopModelSourceModel ¶ added in v0.6.8
type DesktopModelSourceModel struct {
ID string `json:"id"`
Label string `json:"label,omitempty"`
Provider string `json:"provider,omitempty"`
ContextWindow int `json:"context_window,omitempty"`
MaxOutputTokens int `json:"max_output_tokens,omitempty"`
EffectiveContextWindowPercent int `json:"effective_context_window_percent,omitempty"`
InputModalities []string `json:"input_modalities,omitempty"`
SupportsImageInput bool `json:"supports_image_input,omitempty"`
}
type DesktopModelSourceModelSnapshot ¶ added in v0.6.8
type DesktopModelSourceModelSnapshot struct {
Configured bool `json:"configured"`
CurrentModel string `json:"current_model"`
Models []DesktopModelSourceModel `json:"models"`
MissingKeyProviderIDs []string `json:"missing_key_provider_ids,omitempty"`
}
type DesktopModelSourceRPCError ¶ added in v0.6.8
type DesktopModelSourceRPCError struct {
Code string `json:"code,omitempty"`
Message string `json:"message,omitempty"`
}
func (*DesktopModelSourceRPCError) Error ¶ added in v0.6.8
func (e *DesktopModelSourceRPCError) Error() string
type DesktopModelSourceRPCFrame ¶ added in v0.6.8
type DesktopModelSourceRPCFrame struct {
ProtocolVersion string `json:"protocol_version,omitempty"`
ID string `json:"id,omitempty"`
Type string `json:"type"`
Method string `json:"method,omitempty"`
Params json.RawMessage `json:"params,omitempty"`
Event *StreamEvent `json:"event,omitempty"`
Result json.RawMessage `json:"result,omitempty"`
Error *DesktopModelSourceRPCError `json:"error,omitempty"`
}
type DesktopModelSourceSession ¶ added in v0.6.8
type DesktopModelSourceStartupReport ¶ added in v0.6.8
type DesktopModelSourceStatus ¶ added in v0.6.8
type DesktopModelSourceStatus struct {
BindingState string `json:"binding_state,omitempty"`
Connected bool `json:"connected"`
Available bool `json:"available"`
ModelSource string `json:"model_source,omitempty"`
SessionID string `json:"session_id,omitempty"`
ExpiresAtUnixMS int64 `json:"expires_at_unix_ms,omitempty"`
ConnectedAtUnixMS int64 `json:"connected_at_unix_ms,omitempty"`
ModelCount int `json:"model_count"`
MissingKeyProviderIDs []string `json:"missing_key_provider_ids,omitempty"`
LastError string `json:"last_error,omitempty"`
}
type ExitPlanModeArgs ¶
type ExitPlanModeArgs struct {
Summary string `json:"summary,omitempty"`
AllowedPrompts []ExitPlanPromptRef `json:"allowed_prompts,omitempty"`
}
type ExitPlanModeResult ¶
type ExitPlanModeResult struct {
Summary string `json:"summary,omitempty"`
}
type ExitPlanPromptRef ¶
type FileEditArgs ¶
type FileMutationResult ¶
type FileMutationResult struct {
FilePath string `json:"file_path"`
DisplayName string `json:"display_name"`
OldPath string `json:"old_path,omitempty"`
NewPath string `json:"new_path,omitempty"`
ChangeType string `json:"change_type"`
Additions int `json:"additions,omitempty"`
Deletions int `json:"deletions,omitempty"`
UnifiedDiff string `json:"unified_diff,omitempty"`
Truncated bool `json:"truncated,omitempty"`
}
type FileReadArgs ¶
type FileReadResult ¶
type FileReadResult struct {
FilePath string `json:"file_path"`
DisplayName string `json:"display_name"`
Content string `json:"content"`
LineOffset int `json:"line_offset,omitempty"`
LineCount int `json:"line_count,omitempty"`
TotalLines int `json:"total_lines,omitempty"`
Truncated bool `json:"truncated,omitempty"`
}
type FileWriteArgs ¶
type FlowerActivityFileAction ¶ added in v0.7.1
type FlowerApprovalAction ¶ added in v0.7.1
type FlowerApprovalAction struct {
ActionID string `json:"action_id"`
RunID string `json:"run_id"`
TurnID string `json:"turn_id,omitempty"`
StepID string `json:"step_id,omitempty"`
ToolID string `json:"tool_id"`
ToolName string `json:"tool_name"`
State FlowerApprovalState `json:"state"`
Status FlowerApprovalStatus `json:"status"`
Revision int64 `json:"revision"`
RequestedAtMs int64 `json:"requested_at_unix_ms"`
ResolvedAtMs int64 `json:"resolved_at_unix_ms,omitempty"`
ExpiresAtMs int64 `json:"expires_at_unix_ms,omitempty"`
CanApprove bool `json:"can_approve"`
ExpectedSeq int64 `json:"expected_seq,omitempty"`
ReadOnlyReason string `json:"read_only_reason,omitempty"`
Summary FlowerApprovalSummary `json:"summary"`
}
type FlowerApprovalState ¶ added in v0.7.1
type FlowerApprovalState string
const ( FlowerApprovalStateRequested FlowerApprovalState = "requested" FlowerApprovalStateApproved FlowerApprovalState = "approved" FlowerApprovalStateRejected FlowerApprovalState = "rejected" FlowerApprovalStateTimedOut FlowerApprovalState = "timed_out" FlowerApprovalStateCanceled FlowerApprovalState = "canceled" )
type FlowerApprovalStatus ¶ added in v0.7.1
type FlowerApprovalStatus string
const ( FlowerApprovalStatusPending FlowerApprovalStatus = "pending" FlowerApprovalStatusResolved FlowerApprovalStatus = "resolved" )
type FlowerApprovalSummary ¶ added in v0.7.1
type FlowerApprovalSummary struct {
Label string `json:"label"`
Description string `json:"description,omitempty"`
Effects []string `json:"effects,omitempty"`
Flags []string `json:"flags,omitempty"`
Targets []FlowerSafeTarget `json:"targets,omitempty"`
}
type FlowerFileActionOpenRequest ¶ added in v0.7.1
type FlowerFileActionOpenTarget ¶ added in v0.7.1
type FlowerFileActionOpenTarget struct {
ActionID string `json:"action_id"`
Action string `json:"action"`
Path string `json:"path"`
}
func ResolveFlowerFileActionOpenTargetFromMessages ¶ added in v0.7.1
func ResolveFlowerFileActionOpenTargetFromMessages(values []any, req FlowerFileActionOpenRequest) (FlowerFileActionOpenTarget, bool, error)
type FlowerLiveActivityUpdatedPayload ¶ added in v0.7.1
type FlowerLiveApprovalPayload ¶ added in v0.7.1
type FlowerLiveApprovalPayload struct {
Action FlowerApprovalAction `json:"action"`
}
type FlowerLiveBlock ¶ added in v0.7.1
type FlowerLiveBlock struct {
Type string `json:"type"`
Content string `json:"content,omitempty"`
Block json.RawMessage `json:"block,omitempty"`
}
type FlowerLiveBootstrapResponse ¶ added in v0.7.1
type FlowerLiveBootstrapResponse struct {
SchemaVersion int64 `json:"schema_version"`
EndpointID string `json:"endpoint_id"`
ThreadID string `json:"thread_id"`
Cursor int64 `json:"cursor"`
RetainedFromSeq int64 `json:"retained_from_seq"`
Thread ThreadView `json:"thread"`
TimelineMessages []FlowerTimelineMessage `json:"timeline_messages"`
LiveState FlowerLiveMaterializedState `json:"live_state"`
ReadStatus FlowerThreadReadView `json:"read_status"`
GeneratedAtMs int64 `json:"generated_at_unix_ms"`
}
type FlowerLiveEvent ¶ added in v0.7.1
type FlowerLiveEvent struct {
SchemaVersion int64 `json:"schema_version"`
Seq int64 `json:"seq"`
EndpointID string `json:"endpoint_id"`
ThreadID string `json:"thread_id"`
RunID string `json:"run_id,omitempty"`
TurnID string `json:"turn_id,omitempty"`
TraceID string `json:"trace_id,omitempty"`
Step string `json:"step,omitempty"`
AtUnixMs int64 `json:"at_unix_ms"`
Kind FlowerLiveKind `json:"kind"`
Payload json.RawMessage `json:"payload"`
}
type FlowerLiveEventsResponse ¶ added in v0.7.1
type FlowerLiveEventsResponse struct {
Events []FlowerLiveEvent `json:"events"`
NextCursor int64 `json:"next_cursor"`
HasMore bool `json:"has_more,omitempty"`
RetainedFromSeq int64 `json:"retained_from_seq"`
}
type FlowerLiveInputRequestedPayload ¶ added in v0.7.1
type FlowerLiveInputRequestedPayload struct {
Request RequestUserInputPrompt `json:"request"`
}
type FlowerLiveInputResolvedPayload ¶ added in v0.7.1
type FlowerLiveInputResolvedPayload struct {
PromptID string `json:"prompt_id"`
}
type FlowerLiveKind ¶ added in v0.7.1
type FlowerLiveKind string
const ( FlowerLiveRunStarted FlowerLiveKind = "run.started" FlowerLiveRunStatusChanged FlowerLiveKind = "run.status_changed" FlowerLiveThreadPatched FlowerLiveKind = "thread.patched" FlowerLiveMessageStarted FlowerLiveKind = "message.started" FlowerLiveMessageBlockStart FlowerLiveKind = "message.block_started" FlowerLiveMessageBlockDelta FlowerLiveKind = "message.block_delta" FlowerLiveMessageBlockSet FlowerLiveKind = "message.block_set" FlowerLiveMessageCommitted FlowerLiveKind = "message.committed" FlowerLiveMessageFailed FlowerLiveKind = "message.failed" FlowerLiveActivityUpdated FlowerLiveKind = "activity.updated" FlowerLiveApprovalRequested FlowerLiveKind = "approval.requested" FlowerLiveApprovalResolved FlowerLiveKind = "approval.resolved" FlowerLiveInputRequested FlowerLiveKind = "input.requested" FlowerLiveInputResolved FlowerLiveKind = "input.resolved" FlowerLiveUsageUpdated FlowerLiveKind = "usage.updated" FlowerLiveTimelineReplaced FlowerLiveKind = "timeline.replaced" FlowerLiveResyncRequired FlowerLiveKind = "stream.resync_required" )
type FlowerLiveMaterializedState ¶ added in v0.7.1
type FlowerLiveMaterializedState struct {
ThreadPatch FlowerLiveThreadPatch `json:"thread_patch"`
Messages map[string]FlowerLiveMessageDraft `json:"-"`
Runs map[string]FlowerLiveRunState `json:"runs"`
ApprovalActions map[string]FlowerApprovalAction `json:"approval_actions"`
InputRequests map[string]RequestUserInputPrompt `json:"input_requests"`
}
type FlowerLiveMessageBlockDeltaPayload ¶ added in v0.7.1
type FlowerLiveMessageBlockSetPayload ¶ added in v0.7.1
type FlowerLiveMessageBlockStartedPayload ¶ added in v0.7.1
type FlowerLiveMessageCommittedPayload ¶ added in v0.7.1
type FlowerLiveMessageCommittedPayload struct {
MessageID string `json:"message_id"`
Message json.RawMessage `json:"message"`
}
type FlowerLiveMessageDraft ¶ added in v0.7.1
type FlowerLiveMessageDraft struct {
MessageID string `json:"message_id"`
Role string `json:"role"`
Status string `json:"status"`
CreatedAtMs int64 `json:"created_at_ms"`
Blocks []FlowerLiveBlock `json:"blocks"`
}
type FlowerLiveMessageFailedPayload ¶ added in v0.7.1
type FlowerLiveMessageStartedPayload ¶ added in v0.7.1
type FlowerLiveResyncRequiredPayload ¶ added in v0.7.1
type FlowerLiveResyncRequiredPayload struct {
Reason string `json:"reason"`
}
type FlowerLiveRunStartedPayload ¶ added in v0.7.1
type FlowerLiveRunState ¶ added in v0.7.1
type FlowerLiveRunStatusChangedPayload ¶ added in v0.7.1
type FlowerLiveRunStatusChangedPayload struct {
RunID string `json:"run_id"`
Status string `json:"status"`
ErrorCode string `json:"error_code,omitempty"`
Error string `json:"error,omitempty"`
WaitingPrompt *RequestUserInputPrompt `json:"waiting_prompt,omitempty"`
}
type FlowerLiveThreadPatch ¶ added in v0.7.1
type FlowerLiveThreadPatch struct {
ThreadID string `json:"thread_id,omitempty"`
Title string `json:"title,omitempty"`
ModelID string `json:"model_id,omitempty"`
ModelLocked *bool `json:"model_locked,omitempty"`
ExecutionMode string `json:"execution_mode,omitempty"`
WorkingDir string `json:"working_dir,omitempty"`
QueuedTurnCount *int `json:"queued_turn_count,omitempty"`
RunStatus string `json:"run_status,omitempty"`
RunUpdatedAtUnixMs int64 `json:"run_updated_at_unix_ms,omitempty"`
RunErrorCode string `json:"run_error_code,omitempty"`
RunError string `json:"run_error,omitempty"`
WaitingPrompt *RequestUserInputPrompt `json:"waiting_prompt,omitempty"`
LastContextRunID string `json:"last_context_run_id,omitempty"`
PinnedAtUnixMs int64 `json:"pinned_at_unix_ms,omitempty"`
CreatedAtUnixMs int64 `json:"created_at_unix_ms,omitempty"`
UpdatedAtUnixMs int64 `json:"updated_at_unix_ms,omitempty"`
LastMessageAtUnixMs int64 `json:"last_message_at_unix_ms,omitempty"`
LastMessagePreview string `json:"last_message_preview,omitempty"`
ReadStatus *FlowerThreadReadView `json:"read_status,omitempty"`
}
type FlowerLiveThreadPatchedPayload ¶ added in v0.7.1
type FlowerLiveThreadPatchedPayload struct {
Patch FlowerLiveThreadPatch `json:"patch"`
}
type FlowerLiveTimelineReplacedPayload ¶ added in v0.7.1
type FlowerLiveTimelineReplacedPayload struct {
Messages []FlowerTimelineMessage `json:"messages"`
}
type FlowerLiveUsageUpdatedPayload ¶ added in v0.7.1
type FlowerSafeTarget ¶ added in v0.7.1
type FlowerThreadReadRecord ¶ added in v0.7.1
type FlowerThreadReadRecord struct {
LastSeenActivityRevision int64 `json:"last_seen_activity_revision"`
LastReadMessageAtUnixMs int64 `json:"last_read_message_at_unix_ms"`
LastSeenActivitySignature string `json:"last_seen_activity_signature"`
LastSeenWaitingPromptID string `json:"last_seen_waiting_prompt_id,omitempty"`
}
type FlowerThreadReadSnapshot ¶ added in v0.7.1
type FlowerThreadReadView ¶ added in v0.7.1
type FlowerThreadReadView struct {
IsUnread bool `json:"is_unread"`
Snapshot FlowerThreadReadSnapshot `json:"snapshot"`
ReadState FlowerThreadReadRecord `json:"read_state"`
}
type FlowerTimelineMessage ¶ added in v0.7.1
type FlowerTimelineMessage struct {
MessageID string `json:"id"`
Role string `json:"role"`
Content string `json:"content"`
Status string `json:"status"`
CreatedAtMs int64 `json:"created_at_ms"`
Blocks []any `json:"blocks,omitempty"`
ContextAction any `json:"context_action,omitempty"`
Live bool `json:"live"`
ActiveCursor bool `json:"active_cursor"`
}
type FollowupAttachmentView ¶
type FollowupItemView ¶
type FollowupItemView struct {
FollowupID string `json:"followup_id"`
Lane string `json:"lane"`
MessageID string `json:"message_id"`
Text string `json:"text"`
ModelID string `json:"model_id,omitempty"`
ExecutionMode string `json:"execution_mode,omitempty"`
Position int `json:"position"`
CreatedAtUnixMs int64 `json:"created_at_unix_ms"`
Attachments []FollowupAttachmentView `json:"attachments,omitempty"`
}
type InMemoryToolRegistry ¶
type InMemoryToolRegistry struct {
// contains filtered or unexported fields
}
func NewInMemoryToolRegistry ¶
func NewInMemoryToolRegistry() *InMemoryToolRegistry
func (*InMemoryToolRegistry) Register ¶
func (r *InMemoryToolRegistry) Register(tool ToolDef, handler ToolHandler) error
func (*InMemoryToolRegistry) Snapshot ¶
func (r *InMemoryToolRegistry) Snapshot() []ToolDef
func (*InMemoryToolRegistry) Unregister ¶
func (r *InMemoryToolRegistry) Unregister(name string) error
type ListFollowupsResponse ¶
type ListFollowupsResponse struct {
Revision int64 `json:"revision"`
PausedReason string `json:"paused_reason,omitempty"`
Queued []FollowupItemView `json:"queued"`
Drafts []FollowupItemView `json:"drafts"`
}
type ListRunEventsQuery ¶
type ListRunEventsResponse ¶
type ListRunEventsResponse struct {
Events []RunEventView `json:"events"`
NextCursor int64 `json:"next_cursor,omitempty"`
HasMore bool `json:"has_more,omitempty"`
}
type ListThreadsResponse ¶
type ListThreadsResponse struct {
Threads []ThreadView `json:"threads"`
NextCursor string `json:"next_cursor,omitempty"`
}
type LocalToolExecutionOptions ¶ added in v0.7.1
type LocalToolExecutionOptions struct {
Logger *slog.Logger
StateDir string
AgentHomeDir string
WorkingDir string
FilesystemScope *filesystemscope.Registry
Shell string
AIConfig *config.AIConfig
SessionMeta *session.Meta
ToolCallID string
ToolName string
Arguments json.RawMessage
Timeout time.Duration
}
type LocalToolExecutionResult ¶ added in v0.7.1
type LocalToolExecutionResult struct {
ToolCallID string `json:"tool_call_id"`
ToolName string `json:"tool_name"`
Result any `json:"result,omitempty"`
}
func ExecuteLocalTool ¶ added in v0.7.1
func ExecuteLocalTool(ctx context.Context, opts LocalToolExecutionOptions) (LocalToolExecutionResult, error)
type LoopDetector ¶
type Message ¶
type Message struct {
Role string `json:"role"`
Content []ContentPart `json:"content"`
}
type ModeToolFilter ¶
type Model ¶
type Model struct {
ID string `json:"id"`
Label string `json:"label,omitempty"`
Source string `json:"source,omitempty"`
SourceLabel string `json:"source_label,omitempty"`
ContextWindow int `json:"context_window,omitempty"`
MaxOutputTokens int `json:"max_output_tokens,omitempty"`
InputModalities []string `json:"input_modalities,omitempty"`
SupportsImageInput bool `json:"supports_image_input,omitempty"`
}
type ModelGateway ¶ added in v0.7.1
type ModelGateway interface {
StreamTurn(ctx context.Context, req ModelGatewayRequest, onEvent func(StreamEvent)) (ModelGatewayResult, error)
}
ModelGateway streams one provider request for a Floret projected turn.
type ModelGatewayRequest ¶ added in v0.7.1
type ModelGatewayRequest struct {
Model string `json:"model"`
Messages []Message `json:"messages"`
Tools []ToolDef `json:"tools"`
Budgets TurnBudgets `json:"budgets"`
ModeFlags ModeFlags `json:"mode_flags"`
ProviderControls ProviderControls `json:"provider_controls,omitempty"`
WebSearchMode string `json:"web_search_mode,omitempty"`
}
type ModelGatewayResult ¶ added in v0.7.1
type ModelGatewayResult struct {
FinishReason string `json:"finish_reason"`
Text string `json:"text,omitempty"`
Reasoning string `json:"reasoning,omitempty"`
ToolCalls []ToolCall `json:"tool_calls,omitempty"`
Sources []SourceRef `json:"sources,omitempty"`
Usage TurnUsage `json:"usage,omitempty"`
ProviderState *ModelGatewayState `json:"provider_state,omitempty"`
RawProviderDiag map[string]any `json:"raw_provider_diag,omitempty"`
StreamEvents []StreamEvent `json:"stream_events,omitempty"`
ToolResults []ToolResult `json:"tool_results,omitempty"`
}
type ModelGatewayState ¶ added in v0.7.1
type ModelSelectInput ¶
type ModelSelector ¶
type ModelsResponse ¶
type ModelsResponse struct {
CurrentModel string `json:"current_model"`
Models []Model `json:"models"`
Runtime *AIRuntimeStatus `json:"runtime,omitempty"`
}
func NewModelsResponse ¶ added in v0.6.10
func NewModelsResponse(runtime *AIRuntimeStatus) *ModelsResponse
NewModelsResponse keeps the public models contract stable for empty results.
type Options ¶
type Options struct {
Logger *slog.Logger
StateDir string
AgentHomeDir string
Shell string
FilesystemScope *filesystemscope.Registry
Config *config.AIConfig
ToolTargetPolicy ToolTargetPolicy
TargetToolExecutor TargetToolExecutor
ToolTargetPolicyForRun func(meta *session.Meta, thread threadstore.Thread, flowerMeta *threadstore.FlowerThreadMetadata) ToolTargetPolicy
// PersistOpTimeout is the per-operation timeout for threadstore persistence
// (SQLite reads/writes). It must NOT be tied to a run's overall lifetime, since
// runs can take much longer than persistence should ever be allowed to block.
//
// When zero, it defaults to 10 seconds.
PersistOpTimeout time.Duration
// RunMaxWallTime is the hard cap for a single run's lifetime.
//
// When zero, it defaults to 15 minutes.
RunMaxWallTime time.Duration
// RunIdleTimeout cancels a run if no runtime stream activity is observed for the duration.
//
// When zero, it defaults to 2 minutes.
RunIdleTimeout time.Duration
// ToolApprovalTimeout is the max time a run waits for user approval for high-risk tools.
//
// When zero, it defaults to 10 minutes.
ToolApprovalTimeout time.Duration
// StreamWriteTimeout is the best-effort per-frame write deadline for the NDJSON stream.
//
// When zero, it defaults to 5 seconds.
StreamWriteTimeout time.Duration
// ResolveProviderAPIKey returns the API key for the given provider id.
//
// It should read from a local secrets store, not from config.json.
ResolveProviderAPIKey func(providerID string) (string, bool, error)
// ResolveWebSearchProviderAPIKey returns the API key for a provider-scoped web search backend.
//
// It should read from a local secrets store, not from config.json.
ResolveWebSearchProviderAPIKey func(providerID string) (string, bool, error)
}
type PartialToolCall ¶
type PartialUsage ¶
type PatchFollowupRequest ¶
type PatchFollowupRequest struct {
Text *string `json:"text,omitempty"`
}
type PatchThreadRequest ¶
type ProviderControls ¶
type ProviderControls struct {
ThinkingBudgetTokens int `json:"thinking_budget_tokens,omitempty"`
DisableReasoning bool `json:"disable_reasoning,omitempty"`
CacheControl string `json:"cache_control,omitempty"`
ResponseFormat string `json:"response_format,omitempty"`
PreviousResponseID string `json:"previous_response_id,omitempty"`
Temperature *float64 `json:"temperature,omitempty"`
TopP *float64 `json:"top_p,omitempty"`
}
type RealtimeEvent ¶
type RealtimeEvent struct {
EventType RealtimeEventType `json:"event_type"`
EndpointID string `json:"endpoint_id"`
ThreadID string `json:"thread_id"`
RunID string `json:"run_id"`
AtUnixMs int64 `json:"at_unix_ms"`
StreamKind RealtimeStreamKind `json:"stream_kind,omitempty"`
Phase RealtimeLifecyclePhase `json:"phase,omitempty"`
Diag map[string]any `json:"diag,omitempty"`
StreamEvent any `json:"stream_event,omitempty"`
RunStatus string `json:"run_status,omitempty"`
RunErrorCode string `json:"run_error_code,omitempty"`
RunError string `json:"run_error,omitempty"`
WaitingPrompt *RequestUserInputPrompt `json:"waiting_prompt,omitempty"`
// Transcript message events (EventType=transcript_message).
MessageRowID int64 `json:"message_row_id,omitempty"`
MessageJSON json.RawMessage `json:"message_json,omitempty"`
// Thread summary events (EventType=thread_summary).
Title string `json:"title,omitempty"`
UpdatedAtUnixMs int64 `json:"updated_at_unix_ms,omitempty"`
LastMessagePreview string `json:"last_message_preview,omitempty"`
LastMessageAtUnixMs int64 `json:"last_message_at_unix_ms,omitempty"`
ActiveRunID string `json:"active_run_id,omitempty"`
LastContextRunID string `json:"last_context_run_id,omitempty"`
ExecutionMode string `json:"execution_mode,omitempty"`
QueuedTurnCount int `json:"queued_turn_count,omitempty"`
// Transcript reset events (EventType=transcript_reset).
ResetReason string `json:"reset_reason,omitempty"`
ResetCheckpointID string `json:"reset_checkpoint_id,omitempty"`
}
RealtimeEvent is emitted by the agent for cross-session AI chat collaboration.
JSON fields use snake_case because this payload is transported over Redeven RPC wire.
type RealtimeEventType ¶
type RealtimeEventType string
RealtimeEventType defines the high-level AI event category sent over Flowersec RPC notify.
const ( RealtimeEventTypeStream RealtimeEventType = "stream_event" RealtimeEventTypeThreadState RealtimeEventType = "thread_state" RealtimeEventTypeTranscript RealtimeEventType = "transcript_message" RealtimeEventTypeTranscriptReset RealtimeEventType = "transcript_reset" RealtimeEventTypeThreadSummary RealtimeEventType = "thread_summary" )
type RealtimeLifecyclePhase ¶
type RealtimeLifecyclePhase string
RealtimeLifecyclePhase marks lifecycle transitions.
const ( RealtimePhaseStart RealtimeLifecyclePhase = "start" RealtimePhaseStateChange RealtimeLifecyclePhase = "state_change" RealtimePhaseEnd RealtimeLifecyclePhase = "end" RealtimePhaseError RealtimeLifecyclePhase = "error" )
type RealtimeStreamKind ¶
type RealtimeStreamKind string
RealtimeStreamKind is a low-cardinality stream category for diagnostics/UI routing.
const ( RealtimeStreamKindLifecycle RealtimeStreamKind = "lifecycle" RealtimeStreamKindAssistant RealtimeStreamKind = "assistant" RealtimeStreamKindTool RealtimeStreamKind = "tool" RealtimeStreamKindContext RealtimeStreamKind = "context" )
type ReorderFollowupsRequest ¶
type RequestUserInputAction ¶
type RequestUserInputAnswer ¶
type RequestUserInputChoice ¶
type RequestUserInputPrompt ¶
type RequestUserInputPrompt struct {
PromptID string `json:"prompt_id"`
MessageID string `json:"message_id"`
ToolID string `json:"tool_id"`
ToolName string `json:"tool_name"`
ReasonCode string `json:"reason_code,omitempty"`
RequiredFromUser []string `json:"required_from_user,omitempty"`
EvidenceRefs []string `json:"evidence_refs,omitempty"`
Questions []RequestUserInputQuestion `json:"questions,omitempty"`
PublicSummary string `json:"public_summary,omitempty"`
ContainsSecret bool `json:"contains_secret,omitempty"`
}
type RequestUserInputQuestion ¶
type RequestUserInputQuestion struct {
ID string `json:"id"`
Header string `json:"header"`
Question string `json:"question"`
IsSecret bool `json:"is_secret"`
ResponseMode string `json:"response_mode,omitempty"`
ChoicesExhaustive *bool `json:"choices_exhaustive,omitempty"`
WriteLabel string `json:"write_label,omitempty"`
WritePlaceholder string `json:"write_placeholder,omitempty"`
Choices []RequestUserInputChoice `json:"choices,omitempty"`
}
type RequestUserInputResolvedQuestion ¶
type RequestUserInputResolvedQuestion struct {
QuestionID string `json:"question_id"`
Header string `json:"header,omitempty"`
Question string `json:"question,omitempty"`
SelectedChoiceID string `json:"selected_choice_id,omitempty"`
SelectedChoiceLabel string `json:"selected_choice_label,omitempty"`
Text string `json:"text,omitempty"`
PublicSummary string `json:"public_summary,omitempty"`
ContainsSecret bool `json:"contains_secret,omitempty"`
}
type RequestUserInputResponse ¶
type RequestUserInputResponse struct {
PromptID string `json:"prompt_id"`
Answers map[string]RequestUserInputAnswer `json:"answers"`
}
type RequestUserInputResponseRecord ¶
type RequestUserInputResponseRecord struct {
PromptID string `json:"prompt_id"`
ToolID string `json:"tool_id,omitempty"`
ReasonCode string `json:"reason_code,omitempty"`
Responses []RequestUserInputResolvedQuestion `json:"responses,omitempty"`
PublicSummary string `json:"public_summary,omitempty"`
ContainsSecret bool `json:"contains_secret,omitempty"`
ResponseMessageID string `json:"response_message_id,omitempty"`
}
type RunAttachmentIn ¶
type RunEventView ¶
type RunHistoryMsg ¶
type RunInput ¶
type RunInput struct {
// MessageID is an optional client-supplied id for the user input message persisted in the transcript.
//
// When set, the agent will prefer this id over generating a new one so the UI can keep a stable
// message id across optimistic rendering, realtime events, and history backfill.
MessageID string `json:"message_id,omitempty"`
Text string `json:"text"`
Attachments []RunAttachmentIn `json:"attachments"`
ContextAction *ContextActionEnvelope `json:"context_action,omitempty"`
StructuredResponse *RequestUserInputResponseRecord `json:"-"`
SecretAnswers []RequestUserInputSecretAnswer `json:"-"`
}
type RunOptions ¶
type RunOptions struct {
// ReasoningOnly relaxes tool-pressure heuristics while preserving the same Floret turn flow.
ReasoningOnly bool `json:"reasoning_only,omitempty"`
// RequireUserConfirmOnTaskComplete forces explicit user confirmation when model emits task_complete.
RequireUserConfirmOnTaskComplete bool `json:"require_user_confirm_on_task_complete,omitempty"`
// NoUserInteraction disables ask_user and approval waits for autonomous runs.
NoUserInteraction bool `json:"no_user_interaction,omitempty"`
// ToolAllowlist is an internal runtime guard that limits the visible tool surface
// for the current run. It is intended for runtime-owned callers such as evals and
// subagents rather than general user-facing requests.
ToolAllowlist []string `json:"tool_allowlist,omitempty"`
// ForceReadonlyExec is an internal runtime guard that blocks mutating
// terminal.exec invocations for the current run.
ForceReadonlyExec bool `json:"force_readonly_exec,omitempty"`
// Mode overrides runtime mode for this run (act|plan).
Mode string `json:"mode,omitempty"`
// Provider controls.
ThinkingBudgetTokens int `json:"thinking_budget_tokens,omitempty"`
CacheControl string `json:"cache_control,omitempty"`
ResponseFormat string `json:"response_format,omitempty"`
Temperature *float64 `json:"temperature,omitempty"`
TopP *float64 `json:"top_p,omitempty"`
// Optional hard budgets (0 means unset).
MaxInputTokens int `json:"max_input_tokens,omitempty"`
MaxOutputTokens int `json:"max_output_tokens,omitempty"`
MaxCostUSD float64 `json:"max_cost_usd,omitempty"`
// CompactionThreshold controls when runtime compaction is triggered.
// Value is a fraction in range [0,1]. 0 means use runtime default.
CompactionThreshold float64 `json:"compaction_threshold,omitempty"`
}
type RunRequest ¶
type RunRequest struct {
Model string `json:"model"`
Objective string `json:"objective,omitempty"`
History []RunHistoryMsg `json:"history"`
Input RunInput `json:"input"`
Options RunOptions `json:"options"`
ContextPack contextmodel.PromptPack `json:"-"`
ModelCapability contextmodel.ModelCapability `json:"-"`
}
RunRequest is the internal run request for Go runtime execution (includes history).
type RunStartRequest ¶
type RunStartRequest struct {
ThreadID string `json:"thread_id"`
Model string `json:"model"`
Input RunInput `json:"input"`
Options RunOptions `json:"options"`
}
RunStartRequest is the HTTP request body for starting an AI run.
Notes: - thread_id is mandatory; the agent builds history from the persisted thread store. - history must NOT be provided by clients (agent is the source of truth).
type RunState ¶
type RunState string
RunState is the normalized state machine for a single AI run.
const ( RunStateIdle RunState = "idle" RunStateAccepted RunState = "accepted" RunStateRunning RunState = "running" RunStateWaitingApproval RunState = "waiting_approval" RunStateRecovering RunState = "recovering" RunStateFinalizing RunState = "finalizing" RunStateWaitingUser RunState = "waiting_user" RunStateSuccess RunState = "success" RunStateFailed RunState = "failed" RunStateCanceled RunState = "canceled" RunStateTimedOut RunState = "timed_out" )
func NormalizeRunState ¶
type SendUserTurnRequest ¶
type SendUserTurnRequest struct {
ThreadID string `json:"thread_id"`
Model string `json:"model,omitempty"`
Input RunInput `json:"input"`
Options RunOptions `json:"options"`
ExpectedRunID string `json:"expected_run_id,omitempty"`
QueueAfterWaitingUser bool `json:"queue_after_waiting_user,omitempty"`
SourceFollowupID string `json:"source_followup_id,omitempty"`
}
type SendUserTurnResponse ¶
type SendUserTurnResponse struct {
RunID string `json:"run_id"`
Kind string `json:"kind"` // "start" | "queued"
QueueID string `json:"queue_id,omitempty"`
QueuePosition int `json:"queue_position,omitempty"`
ConsumedWaitingPromptID string `json:"consumed_waiting_prompt_id,omitempty"`
AppliedExecutionMode string `json:"applied_execution_mode,omitempty"`
}
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
func NewService ¶
func (*Service) ActiveRunCount ¶
ActiveRunCount returns the number of active runs for the given endpoint.
When endpointID is empty, it returns the global active run count.
func (*Service) AppendThreadMessage ¶
func (*Service) BrowseSkillFile ¶
func (*Service) BrowseSkillTree ¶
func (s *Service) BrowseSkillTree(skillPath string, dir string) (*SkillBrowseTreeResult, error)
func (*Service) CancelThread ¶
func (*Service) CreateSkill ¶
func (*Service) CreateThread ¶
func (*Service) DeleteFollowup ¶
func (*Service) DeleteSkill ¶
func (s *Service) DeleteSkill(scope string, name string) (*SkillCatalog, error)
func (*Service) DeleteThread ¶
func (*Service) DesktopModelSourceBindingSnapshot ¶ added in v0.6.8
func (s *Service) DesktopModelSourceBindingSnapshot() runtimeservice.Binding
func (*Service) DesktopModelSourceBindingStatus ¶ added in v0.6.8
func (s *Service) DesktopModelSourceBindingStatus(ctx context.Context) runtimeservice.Binding
func (*Service) DetachRealtimeSink ¶
func (*Service) DisconnectDesktopModelSource ¶ added in v0.6.8
func (s *Service) DisconnectDesktopModelSource() *AIRuntimeStatus
func (*Service) ForkThread ¶ added in v0.7.1
func (*Service) GetFlowerThreadLiveBootstrap ¶ added in v0.7.1
func (*Service) GetFlowerThreadMetadata ¶ added in v0.7.1
func (s *Service) GetFlowerThreadMetadata(ctx context.Context, endpointID string, threadID string) (*threadstore.FlowerThreadMetadata, error)
func (*Service) GetTerminalToolOutput ¶
func (*Service) GetThreadTodos ¶
func (*Service) GetToolDetail ¶ added in v0.6.10
func (*Service) HasActiveThread ¶
func (*Service) HasActiveThreadForEndpoint ¶
func (*Service) ImportGitHubSkills ¶
func (s *Service) ImportGitHubSkills(req SkillGitHubImportRequest) (*SkillGitHubImportResult, error)
func (*Service) ListActiveThreadRuns ¶
func (s *Service) ListActiveThreadRuns(endpointID string) []ActiveThreadRun
func (*Service) ListFlowerThreadLiveEvents ¶ added in v0.7.1
func (*Service) ListFollowups ¶
func (*Service) ListGitHubSkillCatalog ¶
func (s *Service) ListGitHubSkillCatalog(req SkillGitHubCatalogRequest) (*SkillGitHubCatalog, error)
func (*Service) ListModels ¶
func (s *Service) ListModels() (*ModelsResponse, error)
func (*Service) ListRecentThreadToolCalls ¶
func (s *Service) ListRecentThreadToolCalls(ctx context.Context, meta *session.Meta, threadID string, limit int) ([]threadstore.ToolCallRecord, error)
func (*Service) ListRunEvents ¶
func (*Service) ListRunEventsWithQuery ¶
func (s *Service) ListRunEventsWithQuery(ctx context.Context, meta *session.Meta, runID string, query ListRunEventsQuery) (*ListRunEventsResponse, error)
func (*Service) ListSkillSources ¶
func (s *Service) ListSkillSources() (*SkillSourcesView, error)
func (*Service) ListSkillsCatalog ¶
func (s *Service) ListSkillsCatalog() (*SkillCatalog, error)
func (*Service) ListThreadMessages ¶
func (*Service) ListThreads ¶
func (*Service) OpenUpload ¶
func (*Service) PatchSkillToggles ¶
func (s *Service) PatchSkillToggles(patches []SkillTogglePatch) (*SkillCatalog, error)
func (*Service) PrepareDesktopModelSource ¶ added in v0.6.8
func (s *Service) PrepareDesktopModelSource(session DesktopModelSourceSession) (*AIRuntimeStatus, error)
func (*Service) RegisterRPC ¶
func (*Service) RegisterRPCWithAccessGate ¶
func (*Service) ReinstallSkills ¶
func (s *Service) ReinstallSkills(paths []string, overwrite bool) (*SkillReinstallResult, error)
func (*Service) ReloadSkillsCatalog ¶
func (s *Service) ReloadSkillsCatalog() (*SkillCatalog, error)
func (*Service) RenameThread ¶
func (*Service) ReorderFollowups ¶
func (*Service) ResolveFlowerFileActionOpenTarget ¶ added in v0.7.1
func (s *Service) ResolveFlowerFileActionOpenTarget(ctx context.Context, meta *session.Meta, req FlowerFileActionOpenRequest) (FlowerFileActionOpenTarget, error)
func (*Service) RuntimeStatus ¶ added in v0.6.4
func (s *Service) RuntimeStatus(ctx context.Context) *AIRuntimeStatus
func (*Service) SaveUpload ¶
func (*Service) SendUserTurn ¶
func (s *Service) SendUserTurn(ctx context.Context, meta *session.Meta, req SendUserTurnRequest) (SendUserTurnResponse, error)
func (*Service) ServeDesktopModelSourceRPC ¶ added in v0.6.8
func (*Service) SetCurrentModelID ¶
func (s *Service) SetCurrentModelID(modelID string, persist func(next *config.AIConfig) error) error
SetCurrentModelID updates current_model_id while keeping the provider/model registry unchanged.
Unlike UpdateConfig, this method is lightweight and allowed while runs are active because it only changes the current model for future chats.
func (*Service) SetThreadExecutionMode ¶
func (*Service) SetThreadModel ¶
func (*Service) SetThreadPinned ¶ added in v0.7.1
func (*Service) StartRun ¶
func (s *Service) StartRun(ctx context.Context, meta *session.Meta, runID string, req RunStartRequest, w http.ResponseWriter) error
func (*Service) StartRunDetached ¶
func (*Service) StartRunDetachedWithPersisted ¶
func (*Service) StopThread ¶
func (*Service) SubmitFlowerApproval ¶ added in v0.7.1
func (s *Service) SubmitFlowerApproval(meta *session.Meta, req SubmitFlowerApprovalRequest) (*SubmitFlowerApprovalResponse, error)
func (*Service) SubmitRequestUserInputResponse ¶ added in v0.7.1
func (s *Service) SubmitRequestUserInputResponse(ctx context.Context, meta *session.Meta, req SubmitRequestUserInputResponseRequest) (SubmitRequestUserInputResponseResponse, error)
func (*Service) SubscribeSummary ¶
func (*Service) SubscribeThread ¶
func (*Service) ToolTargetPolicy ¶ added in v0.7.1
func (s *Service) ToolTargetPolicy() ToolTargetPolicy
func (*Service) UpdateConfig ¶
UpdateConfig updates the in-memory AI config after persisting it via the provided callback.
Active runs keep their existing run-local config snapshot. The updated config applies to runs created after this method returns.
func (*Service) UpdateFilesystemScope ¶ added in v0.6.8
func (s *Service) UpdateFilesystemScope(scope *filesystemscope.Registry) error
UpdateFilesystemScope refreshes the in-memory filesystem roots for future runs.
func (*Service) UpdateFollowup ¶
func (*Service) UpsertFlowerThreadMetadata ¶ added in v0.7.1
func (s *Service) UpsertFlowerThreadMetadata(ctx context.Context, rec threadstore.FlowerThreadMetadata) error
func (*Service) ValidateGitHubSkillImport ¶
func (s *Service) ValidateGitHubSkillImport(req SkillGitHubImportRequest) (*SkillGitHubValidateResult, error)
type SkillActivation ¶
type SkillActivation struct {
ActivationID string `json:"activation_id"`
Name string `json:"name"`
RootDir string `json:"root_dir"`
Priority int `json:"priority"`
Content string `json:"content"`
ContentRef string `json:"content_ref"`
ModeHints []string `json:"mode_hints,omitempty"`
Dependencies []SkillMCPDependency `json:"dependencies,omitempty"`
ActivatedAt int64 `json:"activated_at_unix_ms"`
}
type SkillBrowseFileResult ¶
type SkillBrowseTreeEntry ¶
type SkillBrowseTreeResult ¶
type SkillBrowseTreeResult struct {
Root string `json:"root"`
Dir string `json:"dir"`
Entries []SkillBrowseTreeEntry `json:"entries"`
}
type SkillCatalog ¶
type SkillCatalog struct {
CatalogVersion int64 `json:"catalog_version"`
Skills []SkillCatalogEntry `json:"skills"`
Conflicts []SkillCatalogNotice `json:"conflicts,omitempty"`
Errors []SkillCatalogNotice `json:"errors,omitempty"`
}
type SkillCatalogEntry ¶
type SkillCatalogEntry struct {
ID string `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
Path string `json:"path"`
Scope string `json:"scope"`
Priority int `json:"priority,omitempty"`
ModeHints []string `json:"mode_hints,omitempty"`
AllowImplicitInvocation bool `json:"allow_implicit_invocation"`
Dependencies []SkillMCPDependency `json:"dependencies,omitempty"`
DependencyState string `json:"dependency_state,omitempty"`
Enabled bool `json:"enabled"`
Effective bool `json:"effective"`
ShadowedBy string `json:"shadowed_by,omitempty"`
}
type SkillCatalogNotice ¶
type SkillError ¶
type SkillError struct {
// contains filtered or unexported fields
}
func AsSkillError ¶
func AsSkillError(err error) (*SkillError, bool)
func (*SkillError) Code ¶
func (e *SkillError) Code() string
func (*SkillError) Error ¶
func (e *SkillError) Error() string
func (*SkillError) HTTPStatus ¶
func (e *SkillError) HTTPStatus() int
func (*SkillError) Unwrap ¶
func (e *SkillError) Unwrap() error
type SkillGitHubAuth ¶
type SkillGitHubCatalog ¶
type SkillGitHubCatalog struct {
Source SkillGitHubCatalogSource `json:"source"`
Skills []SkillGitHubCatalogItem `json:"skills"`
}
type SkillGitHubCatalogItem ¶
type SkillGitHubImportItem ¶
type SkillGitHubImportItem struct {
Name string `json:"name"`
Scope string `json:"scope"`
SkillPath string `json:"skill_path"`
SourceType SkillSourceType `json:"source_type"`
SourceID string `json:"source_id"`
InstallMode string `json:"install_mode"`
InstalledCommit string `json:"installed_commit,omitempty"`
}
type SkillGitHubImportRequest ¶
type SkillGitHubImportRequest struct {
Scope string `json:"scope"`
Repo string `json:"repo,omitempty"`
Ref string `json:"ref,omitempty"`
Paths []string `json:"paths,omitempty"`
URL string `json:"url,omitempty"`
Overwrite bool `json:"overwrite,omitempty"`
Auth SkillGitHubAuth `json:"auth,omitempty"`
}
type SkillGitHubImportResult ¶
type SkillGitHubImportResult struct {
Catalog SkillCatalog `json:"catalog"`
Imports []SkillGitHubImportItem `json:"imports"`
}
type SkillGitHubResolvedSkill ¶
type SkillGitHubResolvedSkill struct {
Name string `json:"name"`
Description string `json:"description"`
Scope string `json:"scope,omitempty"`
Repo string `json:"repo"`
Ref string `json:"ref"`
RepoPath string `json:"repo_path"`
TargetDir string `json:"target_dir"`
TargetSkillPath string `json:"target_skill_path"`
AlreadyExists bool `json:"already_exists"`
}
type SkillGitHubValidateResult ¶
type SkillGitHubValidateResult struct {
Resolved []SkillGitHubResolvedSkill `json:"resolved"`
}
type SkillMCPDependency ¶
type SkillMeta ¶
type SkillMeta struct {
Name string `json:"name"`
Description string `json:"description"`
Path string `json:"path"`
Scope string `json:"scope"`
Priority int `json:"priority,omitempty"`
ModeHints []string `json:"mode_hints,omitempty"`
AllowImplicitInvocation bool `json:"allow_implicit_invocation"`
Dependencies []SkillMCPDependency `json:"dependencies,omitempty"`
}
type SkillReinstallItem ¶
type SkillReinstallResult ¶
type SkillReinstallResult struct {
Catalog SkillCatalog `json:"catalog"`
Reinstalled []SkillReinstallItem `json:"reinstalled"`
}
type SkillSourceRecord ¶
type SkillSourceRecord struct {
SkillPath string `json:"skill_path"`
SourceType SkillSourceType `json:"source_type"`
SourceID string `json:"source_id"`
Repo string `json:"repo,omitempty"`
Ref string `json:"ref,omitempty"`
RepoPath string `json:"repo_path,omitempty"`
InstallMode string `json:"install_mode,omitempty"`
InstalledCommit string `json:"installed_commit,omitempty"`
InstalledAtUnixMs int64 `json:"installed_at_unix_ms,omitempty"`
LastCheckedAtUnixMs int64 `json:"last_checked_at_unix_ms,omitempty"`
}
type SkillSourceType ¶
type SkillSourceType string
const ( SkillSourceTypeLocalManual SkillSourceType = "local_manual" SkillSourceTypeGitHub SkillSourceType = "github_import" SkillSourceTypeSystem SkillSourceType = "system_bundle" )
type SkillSourcesView ¶
type SkillSourcesView struct {
Items []SkillSourceRecord `json:"items"`
}
type SkillTogglePatch ¶
type StopThreadRequest ¶
type StopThreadRequest struct {
ThreadID string `json:"thread_id"`
}
type StopThreadResponse ¶
type StopThreadResponse struct {
OK bool `json:"ok"`
RecoveredFollowups []FollowupItemView `json:"recovered_followups,omitempty"`
}
type StreamEvent ¶
type StreamEvent struct {
Type StreamEventType `json:"type"`
Text string `json:"text,omitempty"`
ToolCall *PartialToolCall `json:"tool_call,omitempty"`
Usage *PartialUsage `json:"usage,omitempty"`
FinishHint string `json:"finish_hint,omitempty"`
}
type StreamEventType ¶
type StreamEventType string
StreamEventType is the normalized stream event kind produced by provider adapters.
const ( StreamEventTextDelta StreamEventType = "text_delta" StreamEventToolCallStart StreamEventType = "tool_call_start" StreamEventToolCallDelta StreamEventType = "tool_call_delta" StreamEventToolCallEnd StreamEventType = "tool_call_end" StreamEventThinkingDelta StreamEventType = "thinking_delta" StreamEventUsage StreamEventType = "usage" StreamEventFinishReason StreamEventType = "finish_reason" )
type SubmitFlowerApprovalRequest ¶ added in v0.7.1
type SubmitFlowerApprovalResponse ¶ added in v0.7.1
type SubmitRequestUserInputResponseRequest ¶ added in v0.7.1
type SubmitRequestUserInputResponseRequest struct {
ThreadID string `json:"thread_id"`
Model string `json:"model,omitempty"`
Response RequestUserInputResponse `json:"response"`
Input RunInput `json:"input"`
Options RunOptions `json:"options"`
ExpectedRunID string `json:"expected_run_id,omitempty"`
SourceFollowupID string `json:"source_followup_id,omitempty"`
}
type SubmitRequestUserInputResponseResponse ¶ added in v0.7.1
type TargetToolCall ¶ added in v0.7.1
type TargetToolExecutor ¶ added in v0.7.1
type TargetToolExecutor interface {
ExecuteTargetTool(ctx context.Context, call TargetToolCall) (TargetToolResult, error)
}
type TargetToolResult ¶ added in v0.7.1
type TerminalToolOutput ¶
type TerminalToolOutput struct {
RunID string `json:"run_id"`
ToolID string `json:"tool_id"`
ToolName string `json:"tool_name"`
Status string `json:"status"`
Stdout string `json:"stdout"`
Stderr string `json:"stderr"`
ExitCode int `json:"exit_code"`
DurationMS int64 `json:"duration_ms"`
TimedOut bool `json:"timed_out"`
Truncated bool `json:"truncated"`
Cwd string `json:"cwd,omitempty"`
TimeoutMS int64 `json:"timeout_ms,omitempty"`
RequestedTimeoutMS int64 `json:"requested_timeout_ms,omitempty"`
TimeoutSource string `json:"timeout_source,omitempty"`
RawResult string `json:"raw_result,omitempty"`
}
type ThreadTodosView ¶
type ThreadView ¶
type ThreadView struct {
ThreadID string `json:"thread_id"`
Title string `json:"title"`
ModelID string `json:"model_id"`
ModelLocked bool `json:"model_locked"`
ExecutionMode string `json:"execution_mode"`
WorkingDir string `json:"working_dir"`
QueuedTurnCount int `json:"queued_turn_count"`
RunStatus string `json:"run_status"`
RunUpdatedAtUnixMs int64 `json:"run_updated_at_unix_ms"`
RunErrorCode string `json:"run_error_code,omitempty"`
RunError string `json:"run_error,omitempty"`
WaitingPrompt *RequestUserInputPrompt `json:"waiting_prompt,omitempty"`
LastContextRunID string `json:"last_context_run_id,omitempty"`
PinnedAtUnixMs int64 `json:"pinned_at_unix_ms,omitempty"`
CreatedAtUnixMs int64 `json:"created_at_unix_ms"`
UpdatedAtUnixMs int64 `json:"updated_at_unix_ms"`
LastMessageAtUnixMs int64 `json:"last_message_at_unix_ms"`
LastMessagePreview string `json:"last_message_preview"`
}
type TodoSummary ¶
type ToolApprovalRequest ¶
type ToolDef ¶
type ToolDef struct {
Name string `json:"name"`
Description string `json:"description,omitempty"`
InputSchema json.RawMessage `json:"input_schema,omitempty"`
ParallelSafe bool `json:"parallel_safe,omitempty"`
Mutating bool `json:"mutating,omitempty"`
RequiresApproval bool `json:"requires_approval,omitempty"`
Presentation aitools.ToolPresentationSpec `json:"presentation,omitempty"`
Source string `json:"source,omitempty"`
Namespace string `json:"namespace,omitempty"`
Priority int `json:"priority,omitempty"`
}
type ToolDetail ¶ added in v0.6.10
type ToolDetail struct {
RunID string `json:"run_id"`
ToolID string `json:"tool_id"`
ToolName string `json:"tool_name"`
Status string `json:"status"`
Args map[string]any `json:"args,omitempty"`
Result any `json:"result,omitempty"`
ErrorCode string `json:"error_code,omitempty"`
ErrorMessage string `json:"error_message,omitempty"`
Retryable bool `json:"retryable,omitempty"`
RecoveryAction string `json:"recovery_action,omitempty"`
StartedAtUnixMs int64 `json:"started_at_unix_ms,omitempty"`
EndedAtUnixMs int64 `json:"ended_at_unix_ms,omitempty"`
LatencyMS int64 `json:"latency_ms,omitempty"`
RawArgs string `json:"raw_args,omitempty"`
RawResult string `json:"raw_result,omitempty"`
}
type ToolHandler ¶
type ToolRegistry ¶
type ToolResult ¶
type ToolResult struct {
ToolID string `json:"tool_id,omitempty"`
ToolName string `json:"tool_name,omitempty"`
Status string `json:"status"`
Summary string `json:"summary,omitempty"`
Details string `json:"details,omitempty"`
Data any `json:"data,omitempty"`
Error *aitools.ToolError `json:"error,omitempty"`
Truncated bool `json:"truncated,omitempty"`
ContentRef string `json:"content_ref,omitempty"`
}
type ToolTargetPolicy ¶ added in v0.7.1
type TurnBudgets ¶
type TurnSnapshot ¶
type TurnSnapshot struct {
ToolCalls []ToolCall
ToolResults []ToolResult
FinishReason string
Assistant string
}
Source Files
¶
- activity_file_actions.go
- activity_timeline.go
- agent_contracts.go
- ask_user_signal.go
- builtin_tool_handlers.go
- context_action.go
- desktop_model_source.go
- finalization_reason.go
- floret_approval.go
- floret_control.go
- floret_events.go
- floret_provider.go
- floret_runtime.go
- floret_tools.go
- flower_live_projection.go
- flower_live_types.go
- limited_buffers.go
- model_gateway.go
- permissions.go
- persist_types.go
- persist_user.go
- prompt_builder.go
- prompt_local_time.go
- prompt_profiles.go
- prompt_workspace_context.go
- provider_continuation.go
- queued_turns.go
- realtime_sink.go
- reply_completion.go
- rpc.go
- run.go
- run_capability_contract.go
- run_error_code.go
- run_extensions.go
- run_mode.go
- run_todos.go
- send_user_turn.go
- service.go
- signal_policy.go
- skill_manager.go
- skill_manager_remote.go
- stop_thread.go
- stream.go
- structured_tools.go
- subagent_manager.go
- system_skills.go
- target_tool_policy.go
- task_complexity.go
- terminal_exec_proc_unix.go
- text_utils.go
- thread_actor.go
- thread_title.go
- threads.go
- todos.go
- tool_executor.go
- tool_filters.go
- tool_output.go
- tool_registry.go
- types.go
- unified_diff_apply.go
- upload_lifecycle.go
- uploads.go
- waiting_prompt.go
- waiting_prompt_state.go
- workspace_checkpoint.go