0.0 ? $val : PRV_DEFAULT_MONTHLY_BUDGET_USD; } /** * Get the list of peptide slugs/labels to probe. * * Each element is an associative array with 'slug' and 'label' keys. * * @return array */ public static function get_peptides(): array { $raw = get_option( 'prv_peptides', self::default_peptides() ); return is_array( $raw ) ? $raw : self::default_peptides(); } /** * Get the prompt intent templates. * * Each string may contain {peptide} as a placeholder. * * @return array */ public static function get_prompt_intents(): array { $raw = get_option( 'prv_prompt_intents', self::default_prompt_intents() ); return is_array( $raw ) ? $raw : self::default_prompt_intents(); } /** * Get the model identifiers to probe with. * * @return array */ public static function get_models(): array { $raw = get_option( 'prv_models', self::default_models() ); return is_array( $raw ) ? $raw : self::default_models(); } /** * Default set of ~12 high-interest peptides (slug + human-readable label). * * @return array */ private static function default_peptides(): array { return array( array( 'slug' => 'bpc-157', 'label' => 'BPC-157', ), array( 'slug' => 'tb-500', 'label' => 'TB-500', ), array( 'slug' => 'mk-677', 'label' => 'MK-677', ), array( 'slug' => 'cjc-1295', 'label' => 'CJC-1295', ), array( 'slug' => 'ghrp-6', 'label' => 'GHRP-6', ), array( 'slug' => 'ipamorelin', 'label' => 'Ipamorelin', ), array( 'slug' => 'semaglutide', 'label' => 'Semaglutide', ), array( 'slug' => 'tirzepatide', 'label' => 'Tirzepatide', ), array( 'slug' => 'selank', 'label' => 'Selank', ), array( 'slug' => 'semax', 'label' => 'Semax', ), array( 'slug' => 'nad-plus', 'label' => 'NAD+', ), array( 'slug' => 'aod-9604', 'label' => 'AOD-9604', ), ); } /** * Default prompt intent templates — three query styles per peptide. * * @return array */ private static function default_prompt_intents(): array { return array( 'what is {peptide}', '{peptide} benefits and dosage', '{peptide} reconstitution guide', ); } /** * Default models: Perplexity sonar (primary citation signal) + two * OpenRouter-routed search-capable models for breadth. * * @return array */ private static function default_models(): array { return array( 'perplexity/sonar', 'openai/gpt-4o-search-preview', 'google/gemini-2.0-flash-001', ); } }