Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/aiursoftweb_agentbot.json
T

1 line
32 KiB
JSON

{"repo": "aiursoftweb/agentbot", "files": {"src/Aiursoft.AgentBot/Configuration/AgentBotOptions.cs": {"7a6cd7b9b0aa7663913a636d35c86f317c37df56": {"t": 1785746197.0532427, "n": 3511, "h": "13f2b5a677445557", "c": "namespace Aiursoft.AgentBot.Configuration;\n\npublic enum AiEngine\n{\n Claude,\n Codex\n}\n\npublic enum ReplyLanguage\n{\n En,\n Zh\n}\n\n/// <summary>\n/// Configuration options for the Agent Bot.\n/// </summary>\npublic class AgentBotOptions\n{\n public string WorkspaceFolder { get; set; } = Path.Combine(\n Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),\n \"NugetNinjaWorkspace\");\n\n public TimeSpan AiTimeout { get; set; } = TimeSpan.FromMinutes(35);\n\n public int ForkWaitDelayMs { get; set; } = 5000;\n\n /// <summary>\n /// The AI engine backend to use: \"Claude\" or \"Codex\".\n /// </summary>\n public AiEngine Engine { get; set; } = AiEngine.Codex;\n\n /// <summary>\n /// Preferred language for user-facing Issue and merge request content.\n /// </summary>\n public ReplyLanguage ReplyLanguage { get; set; } = ReplyLanguage.En;\n\n public static ReplyLanguage ParseReplyLanguage(string? configuredLanguage)\n {\n return configuredLanguage?.Trim().ToLowerInvariant() switch\n {\n null or \"\" or \"en\" => ReplyLanguage.En,\n \"zh\" => ReplyLanguage.Zh,\n _ => throw new InvalidOperationException(\n $\"BOT_REPLY_LANGUAGE must be either 'en' or 'zh', but was '{configuredLanguage}'.\")\n };\n }\n\n public static void RejectRemovedEngine(string? configuredEngine)\n {\n if (string.Equals(configuredEngine, \"Gemini\", StringComparison.OrdinalIgnoreCase))\n {\n throw new NotSupportedException(\n \"The Gemini AI engine is no longer supported. Configure AgentBot:Engine as Claude or Codex.\");\n }\n }\n\n /// <summary>\n /// The AI model to use (passed to --model parameter).\n /// </summary>\n public string? Model { get; set; }\n\n /// <summary>\n /// API key for the AI provider. Set as the provider-specific environment variable (for example, ANTHROPIC_API_KEY).\n /// Codex uses the persisted ChatGPT login under CODEX_HOME instead.\n /// </summary>\n public string? ApiKey { get; set; }\n\n /// <summary>\n /// Custom API endpoint for the AI provider (e.g., \"https://api.deepseek.com/anthropic\" for Claude via DeepSeek).\n /// Only used when Engine is Claude. Sets ANTHROPIC_BASE_URL.\n /// </summary>\n public string? ApiEndpoint { get; set; }\n\n public bool LocalizationEnabled { get; set; } = false;\n\n /// <summary>\n /// The Ollama API endpoint for localization (e.g., \"https://api.deepseek.com/chat/completions\").\n /// </summary>\n public string? OllamaApiEndpoint { get; set; }\n\n /// <summary>\n /// The Ollama model to use for localization (e.g., \"deepseek-chat\").\n /// </summary>\n public string? OllamaModel { get; set; }\n\n /// <summary>\n /// The API key for Ollama API.\n /// </summary>\n public string? OllamaApiKey { get; set; }\n\n public int LocalizationConcurrentRequests { get; set; } = 8;\n\n public string[] LocalizationTargetLanguages { get; set; } = [];\n\n /// <summary>\n /// GitLab username of the reviewer to auto-assign on newly created MRs.\n /// Leave empty to skip reviewer assignment.\n /// </summary>\n public string? Reviewer { get; set; }\n\n /// <summary>\n /// Require GitLab issues to converge on an approved plan before implementation.\n /// Planning behavior is enforced through the Codex prompt; process isolation is provided by the outer container.\n /// </summary>\n public bool PlanningModeEnabled { get; set; } = true;\n}\n"}, "5334c000b8f5557325cc7f185be339b915f196d7": {"t": 1785760530.651963, "n": 3511, "h": "13f2b5a677445557", "c": "namespace Aiursoft.AgentBot.Configuration;\n\npublic enum AiEngine\n{\n Claude,\n Codex\n}\n\npublic enum ReplyLanguage\n{\n En,\n Zh\n}\n\n/// <summary>\n/// Configuration options for the Agent Bot.\n/// </summary>\npublic class AgentBotOptions\n{\n public string WorkspaceFolder { get; set; } = Path.Combine(\n Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),\n \"NugetNinjaWorkspace\");\n\n public TimeSpan AiTimeout { get; set; } = TimeSpan.FromMinutes(35);\n\n public int ForkWaitDelayMs { get; set; } = 5000;\n\n /// <summary>\n /// The AI engine backend to use: \"Claude\" or \"Codex\".\n /// </summary>\n public AiEngine Engine { get; set; } = AiEngine.Codex;\n\n /// <summary>\n /// Preferred language for user-facing Issue and merge request content.\n /// </summary>\n public ReplyLanguage ReplyLanguage { get; set; } = ReplyLanguage.En;\n\n public static ReplyLanguage ParseReplyLanguage(string? configuredLanguage)\n {\n return configuredLanguage?.Trim().ToLowerInvariant() switch\n {\n null or \"\" or \"en\" => ReplyLanguage.En,\n \"zh\" => ReplyLanguage.Zh,\n _ => throw new InvalidOperationException(\n $\"BOT_REPLY_LANGUAGE must be either 'en' or 'zh', but was '{configuredLanguage}'.\")\n };\n }\n\n public static void RejectRemovedEngine(string? configuredEngine)\n {\n if (string.Equals(configuredEngine, \"Gemini\", StringComparison.OrdinalIgnoreCase))\n {\n throw new NotSupportedException(\n \"The Gemini AI engine is no longer supported. Configure AgentBot:Engine as Claude or Codex.\");\n }\n }\n\n /// <summary>\n /// The AI model to use (passed to --model parameter).\n /// </summary>\n public string? Model { get; set; }\n\n /// <summary>\n /// API key for the AI provider. Set as the provider-specific environment variable (for example, ANTHROPIC_API_KEY).\n /// Codex uses the persisted ChatGPT login under CODEX_HOME instead.\n /// </summary>\n public string? ApiKey { get; set; }\n\n /// <summary>\n /// Custom API endpoint for the AI provider (e.g., \"https://api.deepseek.com/anthropic\" for Claude via DeepSeek).\n /// Only used when Engine is Claude. Sets ANTHROPIC_BASE_URL.\n /// </summary>\n public string? ApiEndpoint { get; set; }\n\n public bool LocalizationEnabled { get; set; } = false;\n\n /// <summary>\n /// The Ollama API endpoint for localization (e.g., \"https://api.deepseek.com/chat/completions\").\n /// </summary>\n public string? OllamaApiEndpoint { get; set; }\n\n /// <summary>\n /// The Ollama model to use for localization (e.g., \"deepseek-chat\").\n /// </summary>\n public string? OllamaModel { get; set; }\n\n /// <summary>\n /// The API key for Ollama API.\n /// </summary>\n public string? OllamaApiKey { get; set; }\n\n public int LocalizationConcurrentRequests { get; set; } = 8;\n\n public string[] LocalizationTargetLanguages { get; set; } = [];\n\n /// <summary>\n /// GitLab username of the reviewer to auto-assign on newly created MRs.\n /// Leave empty to skip reviewer assignment.\n /// </summary>\n public string? Reviewer { get; set; }\n\n /// <summary>\n /// Require GitLab issues to converge on an approved plan before implementation.\n /// Planning behavior is enforced through the Codex prompt; process isolation is provided by the outer container.\n /// </summary>\n public bool PlanningModeEnabled { get; set; } = true;\n}\n"}, "a52c2958098cf613d5a15e00207d575760e5ac34": {"t": 1785760531.9718862, "n": 3631, "h": "4aaadb45f05707dd", "c": "namespace Aiursoft.AgentBot.Configuration;\n\npublic enum AiEngine\n{\n Claude,\n Codex\n}\n\npublic enum ReplyLanguage\n{\n En,\n Zh\n}\n\n/// <summary>\n/// Configuration options for the Agent Bot.\n/// </summary>\npublic class AgentBotOptions\n{\n public string WorkspaceFolder { get; set; } = Path.Combine(\n Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),\n \"NugetNinjaWorkspace\");\n\n public TimeSpan AiTimeout { get; set; } = TimeSpan.FromMinutes(35);\n\n public int ForkWaitDelayMs { get; set; } = 5000;\n\n /// <summary>\n /// The AI engine backend to use: \"Claude\" or \"Codex\".\n /// </summary>\n public AiEngine Engine { get; set; } = AiEngine.Codex;\n\n /// <summary>\n /// Preferred language for user-facing Issue and merge request content.\n /// </summary>\n public ReplyLanguage ReplyLanguage { get; set; } = global::Aiursoft.AgentBot.Configuration.ReplyLanguage.En;\n\n public static ReplyLanguage ParseReplyLanguage(string? configuredLanguage)\n {\n return configuredLanguage?.Trim().ToLowerInvariant() switch\n {\n null or \"\" or \"en\" => global::Aiursoft.AgentBot.Configuration.ReplyLanguage.En,\n \"zh\" => global::Aiursoft.AgentBot.Configuration.ReplyLanguage.Zh,\n _ => throw new InvalidOperationException(\n $\"BOT_REPLY_LANGUAGE must be either 'en' or 'zh', but was '{configuredLanguage}'.\")\n };\n }\n\n public static void RejectRemovedEngine(string? configuredEngine)\n {\n if (string.Equals(configuredEngine, \"Gemini\", StringComparison.OrdinalIgnoreCase))\n {\n throw new NotSupportedException(\n \"The Gemini AI engine is no longer supported. Configure AgentBot:Engine as Claude or Codex.\");\n }\n }\n\n /// <summary>\n /// The AI model to use (passed to --model parameter).\n /// </summary>\n public string? Model { get; set; }\n\n /// <summary>\n /// API key for the AI provider. Set as the provider-specific environment variable (for example, ANTHROPIC_API_KEY).\n /// Codex uses the persisted ChatGPT login under CODEX_HOME instead.\n /// </summary>\n public string? ApiKey { get; set; }\n\n /// <summary>\n /// Custom API endpoint for the AI provider (e.g., \"https://api.deepseek.com/anthropic\" for Claude via DeepSeek).\n /// Only used when Engine is Claude. Sets ANTHROPIC_BASE_URL.\n /// </summary>\n public string? ApiEndpoint { get; set; }\n\n public bool LocalizationEnabled { get; set; } = false;\n\n /// <summary>\n /// The Ollama API endpoint for localization (e.g., \"https://api.deepseek.com/chat/completions\").\n /// </summary>\n public string? OllamaApiEndpoint { get; set; }\n\n /// <summary>\n /// The Ollama model to use for localization (e.g., \"deepseek-chat\").\n /// </summary>\n public string? OllamaModel { get; set; }\n\n /// <summary>\n /// The API key for Ollama API.\n /// </summary>\n public string? OllamaApiKey { get; set; }\n\n public int LocalizationConcurrentRequests { get; set; } = 8;\n\n public string[] LocalizationTargetLanguages { get; set; } = [];\n\n /// <summary>\n /// GitLab username of the reviewer to auto-assign on newly created MRs.\n /// Leave empty to skip reviewer assignment.\n /// </summary>\n public string? Reviewer { get; set; }\n\n /// <summary>\n /// Require GitLab issues to converge on an approved plan before implementation.\n /// Planning behavior is enforced through the Codex prompt; process isolation is provided by the outer container.\n /// </summary>\n public bool PlanningModeEnabled { get; set; } = true;\n}\n"}, "91abc3247bbdb9575214359e6c539b1d35650b89": {"t": 1785760533.7313523, "n": 2853, "h": "6e7c7f818adac571", "c": "namespace Aiursoft.AgentBot.Configuration;\n\npublic enum AiEngine\n{\n Claude,\n Codex\n}\n\n/// <summary>\n/// Configuration options for the Agent Bot.\n/// </summary>\npublic class AgentBotOptions\n{\n public string WorkspaceFolder { get; set; } = Path.Combine(\n Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),\n \"NugetNinjaWorkspace\");\n\n public TimeSpan AiTimeout { get; set; } = TimeSpan.FromMinutes(35);\n\n public int ForkWaitDelayMs { get; set; } = 5000;\n\n /// <summary>\n /// The AI engine backend to use: \"Claude\" or \"Codex\".\n /// </summary>\n public AiEngine Engine { get; set; } = AiEngine.Codex;\n\n public static void RejectRemovedEngine(string? configuredEngine)\n {\n if (string.Equals(configuredEngine, \"Gemini\", StringComparison.OrdinalIgnoreCase))\n {\n throw new NotSupportedException(\n \"The Gemini AI engine is no longer supported. Configure AgentBot:Engine as Claude or Codex.\");\n }\n }\n\n /// <summary>\n /// The AI model to use (passed to --model parameter).\n /// </summary>\n public string? Model { get; set; }\n\n /// <summary>\n /// API key for the AI provider. Set as the provider-specific environment variable (for example, ANTHROPIC_API_KEY).\n /// Codex uses the persisted ChatGPT login under CODEX_HOME instead.\n /// </summary>\n public string? ApiKey { get; set; }\n\n /// <summary>\n /// Custom API endpoint for the AI provider (e.g., \"https://api.deepseek.com/anthropic\" for Claude via DeepSeek).\n /// Only used when Engine is Claude. Sets ANTHROPIC_BASE_URL.\n /// </summary>\n public string? ApiEndpoint { get; set; }\n\n public bool LocalizationEnabled { get; set; } = false;\n\n /// <summary>\n /// The Ollama API endpoint for localization (e.g., \"https://api.deepseek.com/chat/completions\").\n /// </summary>\n public string? OllamaApiEndpoint { get; set; }\n\n /// <summary>\n /// The Ollama model to use for localization (e.g., \"deepseek-chat\").\n /// </summary>\n public string? OllamaModel { get; set; }\n\n /// <summary>\n /// The API key for Ollama API.\n /// </summary>\n public string? OllamaApiKey { get; set; }\n\n public int LocalizationConcurrentRequests { get; set; } = 8;\n\n public string[] LocalizationTargetLanguages { get; set; } = [];\n\n /// <summary>\n /// GitLab username of the reviewer to auto-assign on newly created MRs.\n /// Leave empty to skip reviewer assignment.\n /// </summary>\n public string? Reviewer { get; set; }\n\n /// <summary>\n /// Require GitLab issues to converge on an approved plan before implementation.\n /// Planning behavior is enforced through the Codex prompt; process isolation is provided by the outer container.\n /// </summary>\n public bool PlanningModeEnabled { get; set; } = true;\n}\n"}, "5aa8d24c78cf11fc617a3ce8c6274540c86e62d9": {"t": 1785760535.0643892, "n": 2831, "h": "4fed78c7da96e2a5", "c": "namespace Aiursoft.AgentBot.Configuration;\n\npublic enum AiEngine\n{\n Claude,\n Codex\n}\n\n/// <summary>\n/// Configuration options for the Agent Bot.\n/// </summary>\npublic class AgentBotOptions\n{\n public string WorkspaceFolder { get; set; } = Path.Combine(\n Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),\n \"NugetNinjaWorkspace\");\n\n public TimeSpan AiTimeout { get; set; } = TimeSpan.FromMinutes(35);\n\n public int ForkWaitDelayMs { get; set; } = 5000;\n\n /// <summary>\n /// The AI engine backend to use: \"Claude\" or \"Codex\".\n /// </summary>\n public AiEngine Engine { get; set; } = AiEngine.Codex;\n\n public static void RejectRemovedEngine(string? configuredEngine)\n {\n if (string.Equals(configuredEngine, \"Gemini\", StringComparison.OrdinalIgnoreCase))\n {\n throw new NotSupportedException(\n \"The Gemini AI engine is no longer supported. Configure AgentBot:Engine as Claude or Codex.\");\n }\n }\n\n /// <summary>\n /// The AI model to use (passed to --model parameter).\n /// </summary>\n public string? Model { get; set; }\n\n /// <summary>\n /// API key for the AI provider. Set as the provider-specific environment variable (for example, ANTHROPIC_API_KEY).\n /// Codex uses the persisted ChatGPT login under CODEX_HOME instead.\n /// </summary>\n public string? ApiKey { get; set; }\n\n /// <summary>\n /// Custom API endpoint for the AI provider (e.g., \"https://api.deepseek.com/anthropic\" for Claude via DeepSeek).\n /// Only used when Engine is Claude. Sets ANTHROPIC_BASE_URL.\n /// </summary>\n public string? ApiEndpoint { get; set; }\n\n public bool LocalizationEnabled { get; set; } = false;\n\n /// <summary>\n /// The Ollama API endpoint for localization (e.g., \"https://api.deepseek.com/chat/completions\").\n /// </summary>\n public string? OllamaApiEndpoint { get; set; }\n\n /// <summary>\n /// The Ollama model to use for localization (e.g., \"deepseek-chat\").\n /// </summary>\n public string? OllamaModel { get; set; }\n\n /// <summary>\n /// The API key for Ollama API.\n /// </summary>\n public string? OllamaApiKey { get; set; }\n\n public int LocalizationConcurrentRequests { get; set; } = 8;\n\n public string[] LocalizationTargetLanguages { get; set; } = [];\n\n /// <summary>\n /// GitLab username of the reviewer to auto-assign on newly created MRs.\n /// Leave empty to skip reviewer assignment.\n /// </summary>\n public string? Reviewer { get; set; }\n\n /// <summary>\n /// Require GitLab issues to converge on an approved plan before implementation.\n /// The first implementation is enforced for Codex, whose CLI provides a read-only sandbox.\n /// </summary>\n public bool PlanningModeEnabled { get; set; } = true;\n}\n"}, "56fef96861fecb43d9732de900eed220ba8960c9": {"t": 1785760536.6153817, "n": 2806, "h": "2c5810f7141ec5c9", "c": "namespace Aiursoft.AgentBot.Configuration;\n\npublic enum AiEngine\n{\n Claude,\n Codex\n}\n\n/// <summary>\n/// Configuration options for the Agent Bot.\n/// </summary>\npublic class AgentBotOptions\n{\n public string WorkspaceFolder { get; set; } = Path.Combine(\n Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),\n \"NugetNinjaWorkspace\");\n\n public TimeSpan AiTimeout { get; set; } = TimeSpan.FromMinutes(35);\n\n public int ForkWaitDelayMs { get; set; } = 5000;\n\n /// <summary>\n /// The AI engine backend to use: \"Claude\" or \"Codex\".\n /// </summary>\n public AiEngine Engine { get; set; } = AiEngine.Codex;\n\n public static void RejectRemovedEngine(string? configuredEngine)\n {\n if (string.Equals(configuredEngine, \"Gemini\", StringComparison.OrdinalIgnoreCase))\n {\n throw new NotSupportedException(\n \"The Gemini AI engine is no longer supported. Configure AgentBot:Engine as Claude or Codex.\");\n }\n }\n\n /// <summary>\n /// The AI model to use (passed to --model parameter).\n /// </summary>\n public string? Model { get; set; }\n\n /// <summary>\n /// API key for the AI provider. Set as the provider-specific environment variable (for example, ANTHROPIC_API_KEY).\n /// Codex uses the persisted ChatGPT login under CODEX_HOME instead.\n /// </summary>\n public string? ApiKey { get; set; }\n\n /// <summary>\n /// Custom API endpoint for the AI provider (e.g., \"https://api.deepseek.com/anthropic\" for Claude via DeepSeek).\n /// Only used when Engine is Claude. Sets ANTHROPIC_BASE_URL.\n /// </summary>\n public string? ApiEndpoint { get; set; }\n\n public bool LocalizationEnabled { get; set; } = false;\n\n /// <summary>\n /// The Ollama API endpoint for localization (e.g., \"https://api.deepseek.com/chat/completions\").\n /// </summary>\n public string? OllamaApiEndpoint { get; set; }\n\n /// <summary>\n /// The Ollama model to use for localization (e.g., \"deepseek-chat\").\n /// </summary>\n public string? OllamaModel { get; set; }\n\n /// <summary>\n /// The API key for Ollama API.\n /// </summary>\n public string? OllamaApiKey { get; set; }\n\n public int LocalizationConcurrentRequests { get; set; } = 8;\n\n public string[] LocalizationTargetLanguages { get; set; } = [];\n\n /// <summary>\n /// GitLab username of the reviewer to auto-assign on newly created MRs.\n /// Leave empty to skip reviewer assignment.\n /// </summary>\n public string? Reviewer { get; set; }\n\n /// <summary>\n /// Require GitLab issues to converge on an approved plan before implementation.\n /// Planning is enforced for Codex with its CLI read-only sandbox.\n /// </summary>\n public bool PlanningModeEnabled { get; set; } = true;\n}\n"}, "1a4fc77c75f6f6aec087a138690ae5e1b6aadb4f": {"t": 1785760537.9196682, "n": 2831, "h": "4fed78c7da96e2a5", "c": "namespace Aiursoft.AgentBot.Configuration;\n\npublic enum AiEngine\n{\n Claude,\n Codex\n}\n\n/// <summary>\n/// Configuration options for the Agent Bot.\n/// </summary>\npublic class AgentBotOptions\n{\n public string WorkspaceFolder { get; set; } = Path.Combine(\n Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),\n \"NugetNinjaWorkspace\");\n\n public TimeSpan AiTimeout { get; set; } = TimeSpan.FromMinutes(35);\n\n public int ForkWaitDelayMs { get; set; } = 5000;\n\n /// <summary>\n /// The AI engine backend to use: \"Claude\" or \"Codex\".\n /// </summary>\n public AiEngine Engine { get; set; } = AiEngine.Codex;\n\n public static void RejectRemovedEngine(string? configuredEngine)\n {\n if (string.Equals(configuredEngine, \"Gemini\", StringComparison.OrdinalIgnoreCase))\n {\n throw new NotSupportedException(\n \"The Gemini AI engine is no longer supported. Configure AgentBot:Engine as Claude or Codex.\");\n }\n }\n\n /// <summary>\n /// The AI model to use (passed to --model parameter).\n /// </summary>\n public string? Model { get; set; }\n\n /// <summary>\n /// API key for the AI provider. Set as the provider-specific environment variable (for example, ANTHROPIC_API_KEY).\n /// Codex uses the persisted ChatGPT login under CODEX_HOME instead.\n /// </summary>\n public string? ApiKey { get; set; }\n\n /// <summary>\n /// Custom API endpoint for the AI provider (e.g., \"https://api.deepseek.com/anthropic\" for Claude via DeepSeek).\n /// Only used when Engine is Claude. Sets ANTHROPIC_BASE_URL.\n /// </summary>\n public string? ApiEndpoint { get; set; }\n\n public bool LocalizationEnabled { get; set; } = false;\n\n /// <summary>\n /// The Ollama API endpoint for localization (e.g., \"https://api.deepseek.com/chat/completions\").\n /// </summary>\n public string? OllamaApiEndpoint { get; set; }\n\n /// <summary>\n /// The Ollama model to use for localization (e.g., \"deepseek-chat\").\n /// </summary>\n public string? OllamaModel { get; set; }\n\n /// <summary>\n /// The API key for Ollama API.\n /// </summary>\n public string? OllamaApiKey { get; set; }\n\n public int LocalizationConcurrentRequests { get; set; } = 8;\n\n public string[] LocalizationTargetLanguages { get; set; } = [];\n\n /// <summary>\n /// GitLab username of the reviewer to auto-assign on newly created MRs.\n /// Leave empty to skip reviewer assignment.\n /// </summary>\n public string? Reviewer { get; set; }\n\n /// <summary>\n /// Require GitLab issues to converge on an approved plan before implementation.\n /// The first implementation is enforced for Codex, whose CLI provides a read-only sandbox.\n /// </summary>\n public bool PlanningModeEnabled { get; set; } = true;\n}\n"}, "da297ec1b444041226ad47d6c9894e514702c52d": {"t": 1785760539.207001, "n": 2498, "h": "601732dbf9f5b073", "c": "namespace Aiursoft.AgentBot.Configuration;\n\npublic enum AiEngine\n{\n Gemini,\n Claude,\n Codex\n}\n\n/// <summary>\n/// Configuration options for the Agent Bot.\n/// </summary>\npublic class AgentBotOptions\n{\n public string WorkspaceFolder { get; set; } = Path.Combine(\n Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),\n \"NugetNinjaWorkspace\");\n\n public TimeSpan AiTimeout { get; set; } = TimeSpan.FromMinutes(35);\n\n public int ForkWaitDelayMs { get; set; } = 5000;\n\n /// <summary>\n /// The AI engine backend to use: \"Gemini\", \"Claude\", or \"Codex\".\n /// </summary>\n public AiEngine Engine { get; set; } = AiEngine.Gemini;\n\n /// <summary>\n /// The AI model to use (passed to --model parameter).\n /// </summary>\n public string? Model { get; set; }\n\n /// <summary>\n /// API key for the AI provider. Set as provider-specific env var (GEMINI_API_KEY, ANTHROPIC_API_KEY, etc.).\n /// Codex uses the persisted ChatGPT login under CODEX_HOME instead.\n /// </summary>\n public string? ApiKey { get; set; }\n\n /// <summary>\n /// Custom API endpoint for the AI provider (e.g., \"https://api.deepseek.com/anthropic\" for Claude via DeepSeek).\n /// Only used when Engine is Claude. Sets ANTHROPIC_BASE_URL.\n /// </summary>\n public string? ApiEndpoint { get; set; }\n\n public bool LocalizationEnabled { get; set; } = false;\n\n /// <summary>\n /// The Ollama API endpoint for localization (e.g., \"https://api.deepseek.com/chat/completions\").\n /// </summary>\n public string? OllamaApiEndpoint { get; set; }\n\n /// <summary>\n /// The Ollama model to use for localization (e.g., \"deepseek-chat\").\n /// </summary>\n public string? OllamaModel { get; set; }\n\n /// <summary>\n /// The API key for Ollama API.\n /// </summary>\n public string? OllamaApiKey { get; set; }\n\n public int LocalizationConcurrentRequests { get; set; } = 8;\n\n public string[] LocalizationTargetLanguages { get; set; } = [];\n\n /// <summary>\n /// GitLab username of the reviewer to auto-assign on newly created MRs.\n /// Leave empty to skip reviewer assignment.\n /// </summary>\n public string? Reviewer { get; set; }\n\n /// <summary>\n /// Require GitLab issues to converge on an approved plan before implementation.\n /// The first implementation is enforced for Codex, whose CLI provides a read-only sandbox.\n /// </summary>\n public bool PlanningModeEnabled { get; set; } = true;\n}\n"}, "dce1f418831833c636d242ca27df84bb6dcb9931": {"t": 1785760540.563513, "n": 2221, "h": "b5e63355356dd5b6", "c": "namespace Aiursoft.AgentBot.Configuration;\n\npublic enum AiEngine\n{\n Gemini,\n Claude,\n Codex\n}\n\n/// <summary>\n/// Configuration options for the Agent Bot.\n/// </summary>\npublic class AgentBotOptions\n{\n public string WorkspaceFolder { get; set; } = Path.Combine(\n Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),\n \"NugetNinjaWorkspace\");\n\n public TimeSpan AiTimeout { get; set; } = TimeSpan.FromMinutes(35);\n\n public int ForkWaitDelayMs { get; set; } = 5000;\n\n /// <summary>\n /// The AI engine backend to use: \"Gemini\", \"Claude\", or \"Codex\".\n /// </summary>\n public AiEngine Engine { get; set; } = AiEngine.Gemini;\n\n /// <summary>\n /// The AI model to use (passed to --model parameter).\n /// </summary>\n public string? Model { get; set; }\n\n /// <summary>\n /// API key for the AI provider. Set as provider-specific env var (GEMINI_API_KEY, ANTHROPIC_API_KEY, etc.).\n /// Codex uses the persisted ChatGPT login under CODEX_HOME instead.\n /// </summary>\n public string? ApiKey { get; set; }\n\n /// <summary>\n /// Custom API endpoint for the AI provider (e.g., \"https://api.deepseek.com/anthropic\" for Claude via DeepSeek).\n /// Only used when Engine is Claude. Sets ANTHROPIC_BASE_URL.\n /// </summary>\n public string? ApiEndpoint { get; set; }\n\n public bool LocalizationEnabled { get; set; } = false;\n\n /// <summary>\n /// The Ollama API endpoint for localization (e.g., \"https://api.deepseek.com/chat/completions\").\n /// </summary>\n public string? OllamaApiEndpoint { get; set; }\n\n /// <summary>\n /// The Ollama model to use for localization (e.g., \"deepseek-chat\").\n /// </summary>\n public string? OllamaModel { get; set; }\n\n /// <summary>\n /// The API key for Ollama API.\n /// </summary>\n public string? OllamaApiKey { get; set; }\n\n public int LocalizationConcurrentRequests { get; set; } = 8;\n\n public string[] LocalizationTargetLanguages { get; set; } = [];\n\n /// <summary>\n /// GitLab username of the reviewer to auto-assign on newly created MRs.\n /// Leave empty to skip reviewer assignment.\n /// </summary>\n public string? Reviewer { get; set; }\n}\n"}, "1e6ac4182cdbb4beb63eeedac1ad3d8d7e14ece6": {"t": 1785760541.8409195, "n": 2127, "h": "ddfa94ec8684b8c7", "c": "namespace Aiursoft.AgentBot.Configuration;\n\npublic enum AiEngine\n{\n Gemini,\n Claude\n}\n\n/// <summary>\n/// Configuration options for the Agent Bot.\n/// </summary>\npublic class AgentBotOptions\n{\n public string WorkspaceFolder { get; set; } = Path.Combine(\n Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),\n \"NugetNinjaWorkspace\");\n\n public TimeSpan AiTimeout { get; set; } = TimeSpan.FromMinutes(35);\n\n public int ForkWaitDelayMs { get; set; } = 5000;\n\n /// <summary>\n /// The AI engine backend to use: \"Gemini\" or \"Claude\".\n /// </summary>\n public AiEngine Engine { get; set; } = AiEngine.Gemini;\n\n /// <summary>\n /// The AI model to use (passed to --model parameter).\n /// </summary>\n public string? Model { get; set; }\n\n /// <summary>\n /// API key for the AI provider. Set as provider-specific env var (GEMINI_API_KEY, ANTHROPIC_API_KEY, etc.).\n /// </summary>\n public string? ApiKey { get; set; }\n\n /// <summary>\n /// Custom API endpoint for the AI provider (e.g., \"https://api.deepseek.com/anthropic\" for Claude via DeepSeek).\n /// Only used when Engine is Claude. Sets ANTHROPIC_BASE_URL.\n /// </summary>\n public string? ApiEndpoint { get; set; }\n\n public bool LocalizationEnabled { get; set; } = false;\n\n /// <summary>\n /// The Ollama API endpoint for localization (e.g., \"https://api.deepseek.com/chat/completions\").\n /// </summary>\n public string? OllamaApiEndpoint { get; set; }\n\n /// <summary>\n /// The Ollama model to use for localization (e.g., \"deepseek-chat\").\n /// </summary>\n public string? OllamaModel { get; set; }\n\n /// <summary>\n /// The API key for Ollama API.\n /// </summary>\n public string? OllamaApiKey { get; set; }\n\n public int LocalizationConcurrentRequests { get; set; } = 8;\n\n public string[] LocalizationTargetLanguages { get; set; } = [];\n\n /// <summary>\n /// GitLab username of the reviewer to auto-assign on newly created MRs.\n /// Leave empty to skip reviewer assignment.\n /// </summary>\n public string? Reviewer { get; set; }\n}\n"}, "f953571a6151c2fc598df4a36ff1bde8144fb349": {"t": 1785760543.3745375, "n": 1921, "h": "1d42c8ffc2a06a6d", "c": "namespace Aiursoft.AgentBot.Configuration;\n\npublic enum AiEngine\n{\n Gemini,\n Claude\n}\n\n/// <summary>\n/// Configuration options for the Agent Bot.\n/// </summary>\npublic class AgentBotOptions\n{\n public string WorkspaceFolder { get; set; } = Path.Combine(\n Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),\n \"NugetNinjaWorkspace\");\n\n public TimeSpan AiTimeout { get; set; } = TimeSpan.FromMinutes(35);\n\n public int ForkWaitDelayMs { get; set; } = 5000;\n\n /// <summary>\n /// The AI engine backend to use: \"Gemini\" or \"Claude\".\n /// </summary>\n public AiEngine Engine { get; set; } = AiEngine.Gemini;\n\n /// <summary>\n /// The AI model to use (passed to --model parameter).\n /// </summary>\n public string? Model { get; set; }\n\n /// <summary>\n /// API key for the AI provider. Set as provider-specific env var (GEMINI_API_KEY, ANTHROPIC_API_KEY, etc.).\n /// </summary>\n public string? ApiKey { get; set; }\n\n /// <summary>\n /// Custom API endpoint for the AI provider (e.g., \"https://api.deepseek.com/anthropic\" for Claude via DeepSeek).\n /// Only used when Engine is Claude. Sets ANTHROPIC_BASE_URL.\n /// </summary>\n public string? ApiEndpoint { get; set; }\n\n public bool LocalizationEnabled { get; set; } = false;\n\n /// <summary>\n /// The Ollama API endpoint for localization (e.g., \"https://api.deepseek.com/chat/completions\").\n /// </summary>\n public string? OllamaApiEndpoint { get; set; }\n\n /// <summary>\n /// The Ollama model to use for localization (e.g., \"deepseek-chat\").\n /// </summary>\n public string? OllamaModel { get; set; }\n\n /// <summary>\n /// The API key for Ollama API.\n /// </summary>\n public string? OllamaApiKey { get; set; }\n\n public int LocalizationConcurrentRequests { get; set; } = 8;\n\n public string[] LocalizationTargetLanguages { get; set; } = [];\n}\n"}}}}