- Added centralized error handling for "not found" scenarios in GetChat, UpdateChat, DeleteChat, and GetMessages functions, enhancing user feedback for missing resources. - Introduced isNotFoundError and respondNotFound utility functions to streamline error responses across chat-related operations. - Updated the setting package to include new endpoints for setup status and user preferences, improving API functionality and user experience.
257 lines
9.2 KiB
Go
257 lines
9.2 KiB
Go
package setting
|
|
|
|
// SystemInfoData is the top-level response for GET /setting/system.
|
|
type SystemInfoData struct {
|
|
App AppInfo `json:"app"`
|
|
Deployment string `json:"deployment"`
|
|
DeploymentLabel string `json:"deployment_label"`
|
|
LicenseKey string `json:"license_key,omitempty"`
|
|
Server VersionInfo `json:"server"`
|
|
Client VersionInfo `json:"client"`
|
|
Environment string `json:"environment"`
|
|
EnvironmentLabel string `json:"environment_label"`
|
|
Technical TechnicalInfo `json:"technical"`
|
|
Promotions []Promotion `json:"promotions,omitempty"`
|
|
}
|
|
|
|
// Promotion is a localized CTA banner returned by the API.
|
|
type Promotion struct {
|
|
ID string `json:"id"`
|
|
Title string `json:"title"`
|
|
Desc string `json:"desc"`
|
|
Link string `json:"link"`
|
|
Label string `json:"label"`
|
|
}
|
|
|
|
// AppInfo describes the running application.
|
|
type AppInfo struct {
|
|
Name string `json:"name"`
|
|
Short string `json:"short"`
|
|
Description string `json:"description"`
|
|
Logo string `json:"logo"`
|
|
Version string `json:"version"`
|
|
}
|
|
|
|
// VersionInfo carries build metadata for a component (engine / CUI).
|
|
type VersionInfo struct {
|
|
Version string `json:"version"`
|
|
BuildDate string `json:"build_date"`
|
|
CommitSHA string `json:"commit"`
|
|
}
|
|
|
|
// TechnicalInfo contains runtime / infrastructure details.
|
|
type TechnicalInfo struct {
|
|
Listen string `json:"listen"`
|
|
DBDriver string `json:"db_driver"`
|
|
SessionStore string `json:"session_store"`
|
|
}
|
|
|
|
// CheckUpdateResult is the response for POST /setting/system/check-update.
|
|
type CheckUpdateResult struct {
|
|
HasUpdate bool `json:"has_update"`
|
|
CurrentVersion string `json:"current_version"`
|
|
LatestVersion string `json:"latest_version,omitempty"`
|
|
DownloadURL string `json:"download_url,omitempty"`
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Cloud Service
|
|
// ---------------------------------------------------------------------------
|
|
|
|
// CloudRegion is a static entry loaded from cloud_presets.yml.
|
|
type CloudRegion struct {
|
|
Key string `json:"key" yaml:"key"`
|
|
Label map[string]string `json:"label" yaml:"label"`
|
|
APIURL string `json:"api_url" yaml:"api_url"`
|
|
Default bool `json:"default,omitempty" yaml:"default"`
|
|
}
|
|
|
|
// CloudPageData is the response for GET /setting/cloud.
|
|
type CloudPageData struct {
|
|
Regions []CloudRegion `json:"regions"`
|
|
Region string `json:"region"`
|
|
APIURL string `json:"api_url"`
|
|
APIKey string `json:"api_key"`
|
|
Status string `json:"status"`
|
|
}
|
|
|
|
// CloudTestResult is the response for POST /setting/cloud/test.
|
|
type CloudTestResult struct {
|
|
Success bool `json:"success"`
|
|
Message string `json:"message"`
|
|
LatencyMs int64 `json:"latency_ms,omitempty"`
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// LLM Providers
|
|
// ---------------------------------------------------------------------------
|
|
|
|
// LLMPageData is the aggregated response for GET /setting/llm.
|
|
type LLMPageData struct {
|
|
Providers []interface{} `json:"providers"`
|
|
Roles map[string]interface{} `json:"roles"`
|
|
PresetProviders []interface{} `json:"preset_providers"`
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Search & Scrape
|
|
// ---------------------------------------------------------------------------
|
|
|
|
type SearchProviderField struct {
|
|
Key string `json:"key" yaml:"key"`
|
|
Label map[string]string `json:"label" yaml:"label"`
|
|
Type string `json:"type" yaml:"type"`
|
|
Default string `json:"default,omitempty" yaml:"default"`
|
|
Placeholder string `json:"placeholder,omitempty" yaml:"placeholder"`
|
|
Hint map[string]string `json:"hint,omitempty" yaml:"hint"`
|
|
}
|
|
|
|
type SearchProviderPreset struct {
|
|
Key string `json:"key" yaml:"key"`
|
|
Name string `json:"name" yaml:"name"`
|
|
Description map[string]string `json:"description,omitempty" yaml:"description"`
|
|
Website string `json:"website,omitempty" yaml:"website"`
|
|
Tools []string `json:"tools" yaml:"tools"`
|
|
ToolLabels []map[string]string `json:"tool_labels" yaml:"tool_labels"`
|
|
Fields []SearchProviderField `json:"fields" yaml:"fields"`
|
|
IsCloud bool `json:"is_cloud,omitempty" yaml:"is_cloud"`
|
|
}
|
|
|
|
type SearchProviderConfig struct {
|
|
PresetKey string `json:"preset_key"`
|
|
Enabled bool `json:"enabled"`
|
|
FieldValues map[string]string `json:"field_values"`
|
|
Status string `json:"status"`
|
|
}
|
|
|
|
type SearchToolAssignment struct {
|
|
WebSearch *string `json:"web_search"`
|
|
WebScrape *string `json:"web_scrape"`
|
|
}
|
|
|
|
type SearchPageData struct {
|
|
Presets []SearchProviderPreset `json:"presets"`
|
|
Providers []SearchProviderConfig `json:"providers"`
|
|
ToolAssignment SearchToolAssignment `json:"tool_assignment"`
|
|
}
|
|
|
|
type SearchTestResult struct {
|
|
Success bool `json:"success"`
|
|
Message string `json:"message"`
|
|
LatencyMs int64 `json:"latency_ms,omitempty"`
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// SMTP
|
|
// ---------------------------------------------------------------------------
|
|
|
|
type SmtpPreset struct {
|
|
Key string `json:"key" yaml:"key"`
|
|
Name string `json:"name" yaml:"name"`
|
|
Host string `json:"host" yaml:"host"`
|
|
Port int `json:"port" yaml:"port"`
|
|
Encryption string `json:"encryption" yaml:"encryption"`
|
|
Hint map[string]string `json:"hint,omitempty" yaml:"hint"`
|
|
URL string `json:"url,omitempty" yaml:"url"`
|
|
Default bool `json:"default,omitempty" yaml:"default"`
|
|
}
|
|
|
|
type SmtpConfig struct {
|
|
Enabled bool `json:"enabled"`
|
|
PresetKey string `json:"preset_key"`
|
|
Host string `json:"host"`
|
|
Port int `json:"port"`
|
|
Encryption string `json:"encryption"`
|
|
Username string `json:"username"`
|
|
Password string `json:"password"`
|
|
FromName string `json:"from_name"`
|
|
FromEmail string `json:"from_email"`
|
|
Status string `json:"status"`
|
|
LastSentAt string `json:"last_sent_at,omitempty"`
|
|
}
|
|
|
|
type SmtpPageData struct {
|
|
Presets []SmtpPreset `json:"presets"`
|
|
Config SmtpConfig `json:"config"`
|
|
}
|
|
|
|
type SmtpTestResult struct {
|
|
Success bool `json:"success"`
|
|
Message string `json:"message"`
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Sandbox
|
|
// ---------------------------------------------------------------------------
|
|
|
|
type ComputerNode struct {
|
|
NodeID string `json:"node_id"`
|
|
DisplayName string `json:"display_name"`
|
|
Kind string `json:"kind"`
|
|
OS string `json:"os"`
|
|
Arch string `json:"arch"`
|
|
CPU int `json:"cpu"`
|
|
MemoryGB int `json:"memory_gb"`
|
|
DockerVersion string `json:"docker_version,omitempty"`
|
|
RunningSandboxes int `json:"running_sandboxes"`
|
|
Online bool `json:"online"`
|
|
}
|
|
|
|
type SandboxRegistryConfig struct {
|
|
RegistryURL string `json:"registry_url"`
|
|
Username string `json:"username"`
|
|
Password string `json:"password"`
|
|
}
|
|
|
|
type SandboxImage struct {
|
|
ID string `json:"id"`
|
|
AssistantNames []string `json:"assistant_names"`
|
|
ImageName string `json:"image_name"`
|
|
Tag string `json:"tag"`
|
|
SizeMB int `json:"size_mb"`
|
|
Status string `json:"status"`
|
|
Progress *int `json:"progress,omitempty"`
|
|
ErrorMessage string `json:"error_message,omitempty"`
|
|
}
|
|
|
|
type SandboxPageData struct {
|
|
Nodes []ComputerNode `json:"nodes"`
|
|
Registry SandboxRegistryConfig `json:"registry"`
|
|
Images map[string][]SandboxImage `json:"images"`
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Setup Status
|
|
// ---------------------------------------------------------------------------
|
|
|
|
type Checkpoint struct {
|
|
Status string `json:"status"`
|
|
Required bool `json:"required"`
|
|
Label string `json:"label"`
|
|
Path string `json:"path"`
|
|
Detail string `json:"detail,omitempty"`
|
|
}
|
|
|
|
type SetupStatus struct {
|
|
Completed bool `json:"completed"`
|
|
Checkpoints map[string]Checkpoint `json:"checkpoints"`
|
|
OnboardingCompleted bool `json:"onboarding_completed"`
|
|
BannerDismissed bool `json:"banner_dismissed"`
|
|
}
|
|
|
|
type AssistantSetupStatus struct {
|
|
AssistantID string `json:"assistant_id"`
|
|
AssistantName string `json:"assistant_name"`
|
|
Ready bool `json:"ready"`
|
|
Checkpoints map[string]Checkpoint `json:"checkpoints"`
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// User Preference
|
|
// ---------------------------------------------------------------------------
|
|
|
|
type PreferenceData struct {
|
|
EmailNotification *bool `json:"email_notification,omitempty"`
|
|
BannerDismissed *bool `json:"banner_dismissed,omitempty"`
|
|
OnboardingCompleted *bool `json:"onboarding_completed,omitempty"`
|
|
}
|