use crate::schema; use super::billing::{BillingMetadata, BonusGrantsInfo}; #[derive(cynic::QueryFragment, Debug, Clone)] pub struct Workspace { pub uid: cynic::Id, pub name: String, pub stripe_customer_id: Option, pub members: Vec, pub teams: Vec, pub billing_metadata: BillingMetadata, pub bonus_grants_info: BonusGrantsInfo, pub settings: WorkspaceSettings, pub has_billing_history: bool, pub invite_code: Option, pub pending_email_invites: Vec, pub invite_link_domain_restrictions: Vec, pub is_eligible_for_discovery: bool, pub feature_model_choice: FeatureModelChoice, pub total_requests_used_since_last_refresh: i32, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct FeatureModelChoice { pub agent_mode: AvailableLlms, pub planning: AvailableLlms, pub coding: AvailableLlms, pub cli_agent: AvailableLlms, pub computer_use_agent: AvailableLlms, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct AvailableLlms { pub default_id: String, pub choices: Vec, pub preferred_codex_model_id: Option, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct RoutingHostConfig { pub enabled: bool, pub model_routing_host: LlmModelHost, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct LlmInfo { pub display_name: String, pub base_model_name: String, pub id: String, pub reasoning_level: Option, pub usage_metadata: LlmUsageMetadata, pub description: Option, pub disable_reason: Option, pub vision_supported: bool, pub spec: Option, pub provider: LlmProvider, pub host_configs: Vec, pub pricing: LlmPricing, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct LlmPricing { pub discount_percentage: Option, } #[derive(cynic::Enum, Clone, Debug)] pub enum LlmProvider { Openai, Anthropic, Google, Xai, Unknown, #[cynic(fallback)] Other(String), } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct LlmSpec { pub cost: f64, pub quality: f64, pub speed: f64, } #[derive(cynic::Enum, Clone, Debug)] pub enum DisableReason { AdminDisabled, OutOfRequests, ProviderOutage, RequiresUpgrade, #[cynic(fallback)] Other(String), } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct LlmUsageMetadata { pub credit_multiplier: Option, pub request_multiplier: i32, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct WorkspaceMember { pub uid: cynic::Id, pub email: String, pub role: MembershipRole, pub usage_info: WorkspaceMemberUsageInfo, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct WorkspaceMemberUsageInfo { pub is_unlimited: bool, pub request_limit: i32, pub requests_used_since_last_refresh: i32, pub is_request_limit_prorated: bool, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct CodebaseContextSettings { pub enabled: bool, pub setting: AdminEnablementSetting, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct WorkspaceSettings { pub is_discoverable: bool, pub is_invite_link_enabled: bool, pub llm_settings: LlmSettings, pub telemetry_settings: TelemetrySettings, pub ugc_collection_settings: UgcCollectionSettings, pub cloud_conversation_storage_settings: CloudConversationStorageSettings, pub ai_permissions_settings: AiPermissionsSettings, pub link_sharing_settings: LinkSharingSettings, pub secret_redaction_settings: SecretRedactionSettings, pub ai_autonomy_settings: AiAutonomySettings, pub usage_based_pricing_settings: UsageBasedPricingSettings, pub addon_credits_settings: AddonCreditsSettings, pub codebase_context_settings: CodebaseContextSettings, pub sandboxed_agent_settings: Option, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct TelemetrySettings { pub force_enabled: bool, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct UgcCollectionSettings { pub setting: UgcCollectionEnablementSetting, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct CloudConversationStorageSettings { pub setting: AdminEnablementSetting, } #[derive(cynic::Enum, Clone, Debug)] pub enum UgcCollectionEnablementSetting { Disable, Enable, RespectUserSetting, #[cynic(fallback)] Other(String), } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct AiPermissionsSettings { pub allow_ai_in_remote_sessions: bool, pub remote_session_regex_list: Vec, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct LinkSharingSettings { pub anyone_with_link_sharing_enabled: bool, pub direct_link_sharing_enabled: bool, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct SecretRedactionRegex { pub name: Option, pub pattern: String, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct SecretRedactionSettings { pub enabled: bool, pub regexes: Vec, } #[derive(cynic::Enum, Clone, Debug)] pub enum AdminEnablementSetting { Disable, Enable, RespectUserSetting, #[cynic(fallback)] Other(String), } #[derive(cynic::Enum, Clone, Debug)] pub enum AiAutonomyValue { AgentDecides, AlwaysAllow, AlwaysAsk, RespectUserSetting, #[cynic(fallback)] Other(String), } #[derive(cynic::Enum, Clone, Debug)] pub enum WriteToPtyAutonomyValue { AlwaysAllow, AlwaysAsk, AskOnFirstWrite, RespectUserSetting, #[cynic(fallback)] Other(String), } #[derive(cynic::Enum, Clone, Debug)] pub enum ComputerUseAutonomyValue { Never, AlwaysAsk, AlwaysAllow, RespectUserSetting, #[cynic(fallback)] Other(String), } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct AiAutonomySettings { pub apply_code_diffs_setting: Option, pub read_files_setting: Option, pub read_files_allowlist: Option>, pub create_plans_setting: Option, pub execute_commands_setting: Option, pub execute_commands_allowlist: Option>, pub execute_commands_denylist: Option>, pub write_to_pty_setting: Option, pub computer_use_setting: Option, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct SandboxedAgentSettings { pub execute_commands_denylist: Option>, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct Team { pub uid: cynic::Id, pub name: String, pub members: Vec, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct TeamMember { pub uid: cynic::Id, pub email: String, pub role: MembershipRole, } #[derive(cynic::Enum, Clone, Debug, PartialEq, Eq, Copy)] pub enum MembershipRole { Admin, Owner, User, #[cynic(fallback)] Unknown, } #[derive(cynic::Enum, Clone, Debug)] pub enum LlmModelHost { AwsBedrock, DirectApi, #[cynic(fallback)] Other(String), } #[derive(cynic::Enum, Clone, Debug)] pub enum HostEnablementSetting { Enforce, RespectUserSetting, #[cynic(fallback)] Other(String), } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct LlmHostSettings { pub enabled: bool, pub opt_out_of_new_models: bool, pub enablement_setting: Option, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct LlmHostSettingsEntry { pub host: LlmModelHost, pub settings: LlmHostSettings, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct LlmSettings { pub enabled: bool, pub host_configs: Vec, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct InviteLinkDomainRestriction { pub uid: cynic::Id, pub domain: String, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct EmailInvite { pub email: String, pub expired: bool, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct UsageBasedPricingSettings { pub enabled: bool, pub max_monthly_spend_cents: Option, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct AddonCreditsSettings { pub auto_reload_enabled: bool, pub max_monthly_spend_cents: Option, pub selected_auto_reload_credit_denomination: Option, }