package models import ( "encoding/json" "time" ) type User struct { ID string `json:"id"` Email string `json:"email"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type UserSettings struct { UserID string `json:"user_id"` WorkspaceID string `json:"workspace_id"` KanbanViewMode string `json:"kanban_view_mode"` WorkflowFilterID string `json:"workflow_filter_id"` RepositoryIDs []string `json:"repository_ids"` InitialSetupComplete bool `json:"initial_setup_complete"` PreferredShell string `json:"preferred_shell"` DefaultEditorID string `json:"default_editor_id"` EnablePreviewOnClick bool `json:"enable_preview_on_click"` ChatSubmitKey string `json:"chat_submit_key"` // "enter" | "cmd_enter" ReviewAutoMarkOnScroll bool `json:"review_auto_mark_on_scroll"` ShowReleaseNotification bool `json:"show_release_notification"` ReleaseNotesLastSeenVersion string `json:"release_notes_last_seen_version"` LspAutoStartLanguages []string `json:"lsp_auto_start_languages"` LspAutoInstallLanguages []string `json:"lsp_auto_install_languages"` LspServerConfigs map[string]map[string]interface{} `json:"lsp_server_configs"` SavedLayouts []SavedLayout `json:"saved_layouts"` SidebarViews []SidebarView `json:"sidebar_views"` DefaultUtilityAgentID string `json:"default_utility_agent_id"` // Default inference agent for utility agents DefaultUtilityModel string `json:"default_utility_model"` // Default model for utility agents KeyboardShortcuts map[string]interface{} `json:"keyboard_shortcuts"` // User-configured keyboard shortcut overrides TerminalLinkBehavior string `json:"terminal_link_behavior"` // "new_tab" | "browser_panel" TerminalFontFamily string `json:"terminal_font_family"` TerminalFontSize int `json:"terminal_font_size"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // SavedLayout represents a user-saved dockview layout configuration. type SavedLayout struct { ID string `json:"id"` Name string `json:"name"` IsDefault bool `json:"is_default"` Layout json.RawMessage `json:"layout"` CreatedAt string `json:"created_at"` } // SidebarView represents a user-saved sidebar filter/sort/group preset. // The payload is stored and returned as-is; the server does not interpret // clause values beyond passing them through. type SidebarView struct { ID string `json:"id"` Name string `json:"name"` Filters []SidebarViewClause `json:"filters"` Sort SidebarViewSort `json:"sort"` Group string `json:"group"` CollapsedGroups []string `json:"collapsed_groups"` } type SidebarViewClause struct { ID string `json:"id"` Dimension string `json:"dimension"` Op string `json:"op"` Value json.RawMessage `json:"value"` } type SidebarViewSort struct { Key string `json:"key"` Direction string `json:"direction"` }