using AiAgent.Core.Helpers; using System.Reflection; namespace AiAgent.Core.Constant { public static class ProgramConstants { //public static string Success => "Success"; //public static string Failed => "Failed"; public enum Results { Success, Failed, NotExecuted } public static class ApiKeys { public static string Paying => "AIzaSyAUDf2q2zYmlsLrBSYNYsg28UoRlmF4QlM"; // Paying public static int FreeKeyIndex {get; set;} = Random.Shared.Next(Free.Length); public static string[] Free => ["AIzaSyBETxwR-PdffnMAN8JUNd4jQvXi8A3_FoY", "AIzaSyAsphWA1WPfht3DbL2BBTa5bSknyIU1oHA", "AIzaSyBr7Hz70vQCnFYA7ij7_vmkLCbi2d6B1Pw"]; // Free public static string GetNextFreeKey() { var key = Free[FreeKeyIndex]; FreeKeyIndex = (FreeKeyIndex + 1) % Free.Length; return key; } } public static string ArchiveID => "8107b54413e719fc16c9cf4cc6de7373"; public static string GeminiFlash25Lite => "gemini-2.5-flash-lite"; public static string GeminiFlashLatest => "gemini-flash-latest"; public static string GeminiPro25 => "gemini-2.5-pro"; public static string Grok4FastReason => "grok/grok-4-fast-reasoning"; public static string Grok4latest => "grok/grok-4-latest"; public static string DeepSeekChat => "deepseek/deepseek-chat"; public static string ExePath => Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); public static string Input => Path.Combine(ExePath, "Input"); public static string Output => Path.Combine(ExePath, "Output"); public static string Archive => Path.Combine(ExePath, "Archive"); public static string RSSSourcesWorld => Path.Combine(Input, "2 - Input - RSS Sources - World.txt"); //public static string RSSSourcesWorld => Path.Combine(Input, "2 - Input - RSS Source - Environment.txt"); public static string FindBestArticle => Path.Combine(Input, "4 - Input - Find Best Article.txt"); public static string AggregateNewsFeed => Path.Combine(Input, "4a - Input - Cluster News Feed.txt"); public static string FilterNewsAggregated => Path.Combine(Input, "4b - Input - Filter News Articles.txt"); public static string PickMostCitedArticle => Path.Combine(Input, "4c - Input - Pick the article with the most sources.txt"); public static string ArticleWritingQuery => Path.Combine(Input, "5 - Input - Article Writing Query.txt"); public static string FindArticleTitle => Path.Combine(Input, "5a - Input - Find Article Title.txt"); public static string FindArticleFactList => Path.Combine(Input, "6 - Input - Find Article Fact List.txt"); public static string FactCheckingQuery => Path.Combine(Input, "7 - Input - Fact-Checking.txt"); public static string ImageGenerationPrompt => Path.Combine(Input, "9a - Generate the image prompt.txt"); public static string ImageGenerationQuery => Path.Combine(Input, "9b - Generate the article image.txt"); public static string GoogleTracker => Path.Combine(Input, "10a - Google Tracker.txt"); public static string TodayDate => Path.Combine(Output, "1 - Output - Today's Date.txt"); public static string FetchedArticle => Path.Combine(Output, "2 - Output - Fetched Articles.txt"); public static string PublishedArticles => Path.Combine(Output, "3 - Output - Published Articles Archive.txt"); public static string AggregatedArticles => Path.Combine(Output, "4a - Output - Aggregated Articles.txt"); public static string FilteredArticles => Path.Combine(Output, "4b - Output - Filtered Articles.txt"); public static string MostCitedArticle => Path.Combine(Output, "4 - Output - Most Cited Article.txt"); public static string FullArticle => Path.Combine(Output, "5 - Output - Full Article.txt"); public static string ArticleMetadata => Path.Combine(Output, "5a - Output - Article Metadata.txt"); public static string ArticleFactList => Path.Combine(Output, "6 - Output - Article Fact List.txt"); public static string FactedCheckedGemini => Path.Combine(Output, "7a - Output - Fact-Checks Gemini.txt"); public static string FactedCheckedGrok => Path.Combine(Output, "7b - Output - Fact-Checks Grok.txt"); public static string CompiledFactChecks => Path.Combine(Output, "8 - Output - Compiled Fact Checks.txt"); public static string ImageRequirements => Path.Combine(Output, "9a - Output - Image Requirements.txt"); public static string FinalHTMLArticle => Path.Combine(Output, "10 - Output - HTML Article.html"); public static string OnlineHtmlFileName { get; set; } public static string QueryLog => Path.Combine(Archive, "Queries.csv"); public static string WebpageChanges => Path.Combine(Output, "Landing Page Changes.txt"); public static string? ArticleImageName => $"Image_{ArticleDateTime:yyyyMMdd_HHmmss}.jpg"; public static string? ArticleImagePath => ArticleImageName is null ? null : Path.Combine(Output, ArticleImageName); public static DateTime ArticleDateTime => File.Exists(TodayDate) ? DateTime.Parse(File.ReadAllText(TodayDate)) : throw new FileNotFoundException("Today's Date file not found."); } } //public static string ExampleHTMLArticle => Path.Combine(Input, "4 - Input - Example HTML Article.html"); //public static string GroupedArticle => Path.Combine(Output, "Grouped Articles.txt"); //public static string UnpublishedArticle => Path.Combine(Output, "Unpublished Grouped Articles.txt"); //public static string CompleteArticleWritingQuery => Path.Combine(Output, "Complete Article Writing Query.txt");