Documentation
¶
Index ¶
- Constants
- Variables
- type InvalidReasoningEffortError
- type ReasoningOptionsResolver
- type Service
- func (s *Service) Delete(ctx context.Context, botID string) error
- func (s *Service) GetBot(ctx context.Context, botID string) (Settings, error)
- func (s *Service) GetCommandUILanguage(ctx context.Context, botID string) (string, error)
- func (s *Service) SetBotAgents(service *botagents.Service)
- func (s *Service) SetReasoningOptionsResolver(resolver ReasoningOptionsResolver)
- func (s *Service) UpsertBot(ctx context.Context, botID string, req UpsertRequest) (Settings, error)
- type Settings
- type ToolApprovalConfig
- type ToolApprovalExecPolicy
- type ToolApprovalFilePolicy
- type ToolApprovalMode
- type UpsertRequest
Constants ¶
View Source
const ( DefaultLanguage = "auto" DefaultCommandUILanguage = "auto" DefaultReasoningEffort = "medium" ChatRuntimeModel = string(runtimekind.Model) ChatRuntimeACPAgent = string(runtimekind.ACPAgent) ChatRuntimeCodex = string(runtimekind.Codex) ChatRuntimeClaudeCode = string(runtimekind.ClaudeCode) DefaultACPProjectPath = "/data" DefaultACPProjectMode = "project" )
Variables ¶
View Source
var ( ErrModelIDAmbiguous = errors.New("model_id is ambiguous across providers") ErrInvalidModelRef = errors.New("invalid model reference") )
Functions ¶
This section is empty.
Types ¶
type InvalidReasoningEffortError ¶
func (*InvalidReasoningEffortError) Error ¶
func (e *InvalidReasoningEffortError) Error() string
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
func NewService ¶
func (*Service) GetCommandUILanguage ¶
GetCommandUILanguage returns just the command_ui_language setting for a bot. Avoids the second getDefaultEffect query that GetBot triggers — the locale is resolved once per slash command + once per interactive callback tap, so keeping it single-query matters for paginated lists where users tap Prev/Next repeatedly. Returns the raw value (caller is responsible for i18n.Resolve to map "auto"/unknown → server default).
func (*Service) SetBotAgents ¶
func (*Service) SetReasoningOptionsResolver ¶
func (s *Service) SetReasoningOptionsResolver(resolver ReasoningOptionsResolver)
type Settings ¶
type Settings struct {
ChatModelID string `json:"chat_model_id"`
DefaultBotAgentID string `json:"default_bot_agent_id,omitempty"`
ChatRuntime string `json:"chat_runtime"`
ChatACPAgentID string `json:"chat_acp_agent_id,omitempty"`
ChatACPProjectPath string `json:"chat_acp_project_path,omitempty"`
ChatACPProjectMode string `json:"chat_acp_project_mode,omitempty"`
ImageModelID string `json:"image_model_id"`
SearchProviderID string `json:"search_provider_id"`
FetchProviderID string `json:"fetch_provider_id"`
MemoryProviderID string `json:"memory_provider_id"`
TtsModelID string `json:"tts_model_id"`
TranscriptionModelID string `json:"transcription_model_id"`
VideoModelID string `json:"video_model_id"`
Language string `json:"language"`
CommandUILanguage string `json:"command_ui_language"`
AclDefaultEffect string `json:"acl_default_effect"`
Timezone string `json:"timezone"`
// ReasoningEffort is the single on/off source for reasoning:
// models.ReasoningEffortDisable means no reasoning, any other value is a tier.
ReasoningEffort string `json:"reasoning_effort"`
CompactionEnabled bool `json:"compaction_enabled"`
CompactionThreshold int `json:"compaction_threshold"`
CompactionTargetPercent *int `json:"compaction_target_percent" extensions:"x-nullable"`
CompactionModelID string `json:"compaction_model_id,omitempty"`
DiscussProbeModelID string `json:"discuss_probe_model_id,omitempty"`
PersistFullToolResults bool `json:"persist_full_tool_results"`
ShowToolCallsInIM bool `json:"show_tool_calls_in_im"`
ToolApprovalConfig ToolApprovalConfig `json:"tool_approval_config"`
DisplayEnabled bool `json:"display_enabled"`
OverlayEnabled bool `json:"overlay_enabled"`
OverlayProvider string `json:"overlay_provider,omitempty"`
OverlayConfig map[string]any `json:"overlay_config,omitempty"`
}
type ToolApprovalConfig ¶
type ToolApprovalConfig struct {
Enabled bool `json:"enabled"`
Read ToolApprovalFilePolicy `json:"read"`
Write ToolApprovalFilePolicy `json:"write"`
Exec ToolApprovalExecPolicy `json:"exec"`
}
func DefaultToolApprovalConfig ¶
func DefaultToolApprovalConfig() ToolApprovalConfig
func NormalizeToolApprovalConfig ¶
func NormalizeToolApprovalConfig(cfg ToolApprovalConfig) ToolApprovalConfig
func (*ToolApprovalConfig) UnmarshalJSON ¶
func (c *ToolApprovalConfig) UnmarshalJSON(data []byte) error
type ToolApprovalExecPolicy ¶
type ToolApprovalExecPolicy struct {
Mode ToolApprovalMode `json:"mode,omitempty"`
RequireApproval bool `json:"require_approval"`
BypassCommands []string `json:"bypass_commands"`
ForceReviewCommands []string `json:"force_review_commands"`
}
type ToolApprovalFilePolicy ¶
type ToolApprovalFilePolicy struct {
Mode ToolApprovalMode `json:"mode,omitempty"`
RequireApproval bool `json:"require_approval"`
BypassGlobs []string `json:"bypass_globs"`
ForceReviewGlobs []string `json:"force_review_globs"`
}
type ToolApprovalMode ¶
type ToolApprovalMode string
const ( ToolApprovalAllow ToolApprovalMode = "allow" ToolApprovalAsk ToolApprovalMode = "ask" ToolApprovalDeny ToolApprovalMode = "deny" )
type UpsertRequest ¶
type UpsertRequest struct {
// Reference fields below use pointer semantics so autosaving clients can
// clear a selection: nil = keep current, "" = clear, value = set. The
// service mirrors each into a `<field>_set` SQL flag (same pattern as
// FetchProviderID / CompactionModelID); plain strings would make ""
// indistinguishable from "not sent".
ChatModelID *string `json:"chat_model_id,omitempty"`
DefaultBotAgentID *string `json:"default_bot_agent_id,omitempty"`
ChatRuntime *string `json:"chat_runtime,omitempty"`
ChatACPAgentID *string `json:"chat_acp_agent_id,omitempty"`
ChatACPProjectPath *string `json:"chat_acp_project_path,omitempty"`
ChatACPProjectMode *string `json:"chat_acp_project_mode,omitempty"`
ImageModelID *string `json:"image_model_id,omitempty"`
SearchProviderID *string `json:"search_provider_id,omitempty"`
FetchProviderID *string `json:"fetch_provider_id,omitempty"`
MemoryProviderID *string `json:"memory_provider_id,omitempty"`
TtsModelID *string `json:"tts_model_id,omitempty"`
TranscriptionModelID *string `json:"transcription_model_id,omitempty"`
VideoModelID *string `json:"video_model_id,omitempty"`
// Language follows the same pointer rule; "" normalizes to DefaultLanguage
// ("auto") rather than clearing the column.
Language *string `json:"language,omitempty"`
CommandUILanguage string `json:"command_ui_language,omitempty"`
AclDefaultEffect string `json:"acl_default_effect,omitempty"`
Timezone *string `json:"timezone,omitempty"`
ReasoningEffort *string `json:"reasoning_effort,omitempty"`
CompactionEnabled *bool `json:"compaction_enabled,omitempty"`
CompactionThreshold *int `json:"compaction_threshold,omitempty"`
CompactionTargetPercent *int `json:"compaction_target_percent,omitempty"`
CompactionModelID *string `json:"compaction_model_id,omitempty"`
DiscussProbeModelID string `json:"discuss_probe_model_id,omitempty"`
PersistFullToolResults *bool `json:"persist_full_tool_results,omitempty"`
ShowToolCallsInIM *bool `json:"show_tool_calls_in_im,omitempty"`
ToolApprovalConfig *ToolApprovalConfig `json:"tool_approval_config,omitempty"`
DisplayEnabled *bool `json:"display_enabled,omitempty"`
OverlayEnabled *bool `json:"overlay_enabled,omitempty"`
OverlayProvider *string `json:"overlay_provider,omitempty"`
OverlayConfig map[string]any `json:"overlay_config,omitempty"`
}
Click to show internal directories.
Click to hide internal directories.