1 line
24 KiB
JSON
1 line
24 KiB
JSON
{"repo": "ai-guiders/cascade-ide", "files": {"Models/AiSettings.cs": {"be6a6bf94415ad63a1ddde1aef9e12b3dba2c6a4": {"t": 1785746189.9684365, "n": 4002, "h": "f370791a957b12f5", "c": "using System.Text.Json.Serialization;\nusing CascadeIDE.Services;\n\nnamespace CascadeIDE.Models;\n\n/// <summary>Контур AI в <c>[ai]</c> (<c>settings.toml</c>). ADR 0083: <c>mode</c> и вложенные таблицы.</summary>\npublic sealed class AiSettings\n{\n /// <summary>Один из: <c>local</c>, <c>acp</c>, <c>mcp_only</c>, <c>cloud</c>.</summary>\n public string Mode { get; set; } = \"local\";\n\n public AiLocalSettings Local { get; set; } = new();\n\n public AiAcpSettings Acp { get; set; } = new();\n\n public AiMcpOnlySettings McpOnly { get; set; } = new();\n\n public AiCloudSettings Cloud { get; set; } = new();\n\n public AiChatSettings Chat { get; set; } = new();\n\n /// <summary>Ключ провайдера для существующего кода чата (Ollama, Anthropic, …).</summary>\n public string ResolveEffectiveProviderUiKey()\n {\n return NormalizeMode(Mode) switch\n {\n \"local\" => \"Ollama\",\n \"acp\" => \"CursorACP\",\n \"mcp_only\" => \"Ollama\",\n \"cloud\" => NormalizeCloudProvider(Cloud.ActiveProvider) switch\n {\n \"anthropic\" => \"Anthropic\",\n \"openai\" => \"OpenAI\",\n \"deepseek\" => \"DeepSeek\",\n _ => \"Anthropic\"\n },\n _ => \"Ollama\"\n };\n }\n\n public static string NormalizeMode(string? mode)\n {\n var m = (mode ?? \"local\").Trim().ToLowerInvariant();\n return m is \"local\" or \"acp\" or \"mcp_only\" or \"cloud\" ? m : \"local\";\n }\n\n public static string NormalizeCloudProvider(string? p)\n {\n var x = (p ?? \"anthropic\").Trim().ToLowerInvariant();\n return x is \"anthropic\" or \"openai\" or \"deepseek\" ? x : \"anthropic\";\n }\n}\n\n/// <summary>TOML: <c>[ai.local]</c> и <c>[ai.local.ollama]</c>.</summary>\npublic sealed class AiLocalSettings\n{\n /// <summary>Например <c>ollama</c>; должен совпадать с активной подтаблицей.</summary>\n public string Backend { get; set; } = \"ollama\";\n\n public AiLocalOllamaSettings Ollama { get; set; } = new();\n}\n\n/// <summary>TOML: <c>[ai.local.ollama]</c>.</summary>\npublic sealed class AiLocalOllamaSettings\n{\n public string Model { get; set; } = \"qwen2.5-coder:7b\";\n}\n\n/// <summary>TOML: <c>[ai.acp]</c>.</summary>\npublic sealed class AiAcpSettings\n{\n public string CursorAcpPath { get; set; } = \"\";\n\n /// <summary>TOML: <c>cursor_acp_path_env</c> — <c>PATH</c> или имя переменной с путём (ADR 0149).</summary>\n public string CursorAcpPathEnv { get; set; } = \"\";\n\n public string CursorAcpModelId { get; set; } = \"\";\n\n public string ResolveCursorAcpPath() =>\n SettingsEnvResolver.ResolveLaunchPath(CursorAcpPath, CursorAcpPathEnv);\n}\n\n/// <summary>TOML: <c>[ai.mcp_only]</c> — зарезервировано под флаги режима.</summary>\npublic sealed class AiMcpOnlySettings\n{\n}\n\n/// <summary>TOML: <c>[ai.cloud]</c> и <c>[ai.cloud.*]</c>.</summary>\npublic sealed class AiCloudSettings\n{\n public string ActiveProvider { get; set; } = \"anthropic\";\n\n [JsonPropertyName(\"anthropic\")]\n public AiCloudAnthropicSettings Anthropic { get; set; } = new();\n\n [JsonPropertyName(\"openai\")]\n public AiCloudOpenAiSettings OpenAi { get; set; } = new();\n\n [JsonPropertyName(\"deepseek\")]\n public AiCloudDeepSeekSettings DeepSeek { get; set; } = new();\n}\n\npublic sealed class AiCloudAnthropicSettings\n{\n public string Model { get; set; } = \"claude-sonnet-4-20250514\";\n}\n\npublic sealed class AiCloudOpenAiSettings\n{\n public string BaseUrl { get; set; } = \"https://api.openai.com\";\n\n public string Model { get; set; } = \"gpt-4o\";\n}\n\npublic sealed class AiCloudDeepSeekSettings\n{\n public string BaseUrl { get; set; } = \"https://api.deepseek.com\";\n\n public string Model { get; set; } = \"deepseek-chat\";\n}\n\n/// <summary>TOML: <c>[ai.chat]</c>.</summary>\npublic sealed class AiChatSettings\n{\n /// <summary><c>mfd</c> | <c>window</c>.</summary>\n public string SettingsPresentation { get; set; } = \"mfd\";\n\n public bool ShowThinkingInHistory { get; set; } = true;\n}\n"}, "d05466adeddbfc60c9ca858288a95515a4b724b4": {"t": 1785760473.8805573, "n": 4002, "h": "f370791a957b12f5", "c": "using System.Text.Json.Serialization;\nusing CascadeIDE.Services;\n\nnamespace CascadeIDE.Models;\n\n/// <summary>Контур AI в <c>[ai]</c> (<c>settings.toml</c>). ADR 0083: <c>mode</c> и вложенные таблицы.</summary>\npublic sealed class AiSettings\n{\n /// <summary>Один из: <c>local</c>, <c>acp</c>, <c>mcp_only</c>, <c>cloud</c>.</summary>\n public string Mode { get; set; } = \"local\";\n\n public AiLocalSettings Local { get; set; } = new();\n\n public AiAcpSettings Acp { get; set; } = new();\n\n public AiMcpOnlySettings McpOnly { get; set; } = new();\n\n public AiCloudSettings Cloud { get; set; } = new();\n\n public AiChatSettings Chat { get; set; } = new();\n\n /// <summary>Ключ провайдера для существующего кода чата (Ollama, Anthropic, …).</summary>\n public string ResolveEffectiveProviderUiKey()\n {\n return NormalizeMode(Mode) switch\n {\n \"local\" => \"Ollama\",\n \"acp\" => \"CursorACP\",\n \"mcp_only\" => \"Ollama\",\n \"cloud\" => NormalizeCloudProvider(Cloud.ActiveProvider) switch\n {\n \"anthropic\" => \"Anthropic\",\n \"openai\" => \"OpenAI\",\n \"deepseek\" => \"DeepSeek\",\n _ => \"Anthropic\"\n },\n _ => \"Ollama\"\n };\n }\n\n public static string NormalizeMode(string? mode)\n {\n var m = (mode ?? \"local\").Trim().ToLowerInvariant();\n return m is \"local\" or \"acp\" or \"mcp_only\" or \"cloud\" ? m : \"local\";\n }\n\n public static string NormalizeCloudProvider(string? p)\n {\n var x = (p ?? \"anthropic\").Trim().ToLowerInvariant();\n return x is \"anthropic\" or \"openai\" or \"deepseek\" ? x : \"anthropic\";\n }\n}\n\n/// <summary>TOML: <c>[ai.local]</c> и <c>[ai.local.ollama]</c>.</summary>\npublic sealed class AiLocalSettings\n{\n /// <summary>Например <c>ollama</c>; должен совпадать с активной подтаблицей.</summary>\n public string Backend { get; set; } = \"ollama\";\n\n public AiLocalOllamaSettings Ollama { get; set; } = new();\n}\n\n/// <summary>TOML: <c>[ai.local.ollama]</c>.</summary>\npublic sealed class AiLocalOllamaSettings\n{\n public string Model { get; set; } = \"qwen2.5-coder:7b\";\n}\n\n/// <summary>TOML: <c>[ai.acp]</c>.</summary>\npublic sealed class AiAcpSettings\n{\n public string CursorAcpPath { get; set; } = \"\";\n\n /// <summary>TOML: <c>cursor_acp_path_env</c> — <c>PATH</c> или имя переменной с путём (ADR 0149).</summary>\n public string CursorAcpPathEnv { get; set; } = \"\";\n\n public string CursorAcpModelId { get; set; } = \"\";\n\n public string ResolveCursorAcpPath() =>\n SettingsEnvResolver.ResolveLaunchPath(CursorAcpPath, CursorAcpPathEnv);\n}\n\n/// <summary>TOML: <c>[ai.mcp_only]</c> — зарезервировано под флаги режима.</summary>\npublic sealed class AiMcpOnlySettings\n{\n}\n\n/// <summary>TOML: <c>[ai.cloud]</c> и <c>[ai.cloud.*]</c>.</summary>\npublic sealed class AiCloudSettings\n{\n public string ActiveProvider { get; set; } = \"anthropic\";\n\n [JsonPropertyName(\"anthropic\")]\n public AiCloudAnthropicSettings Anthropic { get; set; } = new();\n\n [JsonPropertyName(\"openai\")]\n public AiCloudOpenAiSettings OpenAi { get; set; } = new();\n\n [JsonPropertyName(\"deepseek\")]\n public AiCloudDeepSeekSettings DeepSeek { get; set; } = new();\n}\n\npublic sealed class AiCloudAnthropicSettings\n{\n public string Model { get; set; } = \"claude-sonnet-4-20250514\";\n}\n\npublic sealed class AiCloudOpenAiSettings\n{\n public string BaseUrl { get; set; } = \"https://api.openai.com\";\n\n public string Model { get; set; } = \"gpt-4o\";\n}\n\npublic sealed class AiCloudDeepSeekSettings\n{\n public string BaseUrl { get; set; } = \"https://api.deepseek.com\";\n\n public string Model { get; set; } = \"deepseek-chat\";\n}\n\n/// <summary>TOML: <c>[ai.chat]</c>.</summary>\npublic sealed class AiChatSettings\n{\n /// <summary><c>mfd</c> | <c>window</c>.</summary>\n public string SettingsPresentation { get; set; } = \"mfd\";\n\n public bool ShowThinkingInHistory { get; set; } = true;\n}\n"}, "7d8ebb7a322607995e9bba7aebd99cfa9d8bf8ab": {"t": 1785760476.712415, "n": 3681, "h": "3075c0031591bf8a", "c": "using System.Text.Json.Serialization;\n\nnamespace CascadeIDE.Models;\n\n/// <summary>Контур AI в <c>[ai]</c> (<c>settings.toml</c>). ADR 0083: <c>mode</c> и вложенные таблицы.</summary>\npublic sealed class AiSettings\n{\n /// <summary>Один из: <c>local</c>, <c>acp</c>, <c>mcp_only</c>, <c>cloud</c>.</summary>\n public string Mode { get; set; } = \"local\";\n\n public AiLocalSettings Local { get; set; } = new();\n\n public AiAcpSettings Acp { get; set; } = new();\n\n public AiMcpOnlySettings McpOnly { get; set; } = new();\n\n public AiCloudSettings Cloud { get; set; } = new();\n\n public AiChatSettings Chat { get; set; } = new();\n\n /// <summary>Ключ провайдера для существующего кода чата (Ollama, Anthropic, …).</summary>\n public string ResolveEffectiveProviderUiKey()\n {\n return NormalizeMode(Mode) switch\n {\n \"local\" => \"Ollama\",\n \"acp\" => \"CursorACP\",\n \"mcp_only\" => \"Ollama\",\n \"cloud\" => NormalizeCloudProvider(Cloud.ActiveProvider) switch\n {\n \"anthropic\" => \"Anthropic\",\n \"openai\" => \"OpenAI\",\n \"deepseek\" => \"DeepSeek\",\n _ => \"Anthropic\"\n },\n _ => \"Ollama\"\n };\n }\n\n public static string NormalizeMode(string? mode)\n {\n var m = (mode ?? \"local\").Trim().ToLowerInvariant();\n return m is \"local\" or \"acp\" or \"mcp_only\" or \"cloud\" ? m : \"local\";\n }\n\n public static string NormalizeCloudProvider(string? p)\n {\n var x = (p ?? \"anthropic\").Trim().ToLowerInvariant();\n return x is \"anthropic\" or \"openai\" or \"deepseek\" ? x : \"anthropic\";\n }\n}\n\n/// <summary>TOML: <c>[ai.local]</c> и <c>[ai.local.ollama]</c>.</summary>\npublic sealed class AiLocalSettings\n{\n /// <summary>Например <c>ollama</c>; должен совпадать с активной подтаблицей.</summary>\n public string Backend { get; set; } = \"ollama\";\n\n public AiLocalOllamaSettings Ollama { get; set; } = new();\n}\n\n/// <summary>TOML: <c>[ai.local.ollama]</c>.</summary>\npublic sealed class AiLocalOllamaSettings\n{\n public string Model { get; set; } = \"qwen2.5-coder:7b\";\n}\n\n/// <summary>TOML: <c>[ai.acp]</c>.</summary>\npublic sealed class AiAcpSettings\n{\n public string CursorAcpPath { get; set; } = \"\";\n\n public string CursorAcpModelId { get; set; } = \"\";\n}\n\n/// <summary>TOML: <c>[ai.mcp_only]</c> — зарезервировано под флаги режима.</summary>\npublic sealed class AiMcpOnlySettings\n{\n}\n\n/// <summary>TOML: <c>[ai.cloud]</c> и <c>[ai.cloud.*]</c>.</summary>\npublic sealed class AiCloudSettings\n{\n public string ActiveProvider { get; set; } = \"anthropic\";\n\n [JsonPropertyName(\"anthropic\")]\n public AiCloudAnthropicSettings Anthropic { get; set; } = new();\n\n [JsonPropertyName(\"openai\")]\n public AiCloudOpenAiSettings OpenAi { get; set; } = new();\n\n [JsonPropertyName(\"deepseek\")]\n public AiCloudDeepSeekSettings DeepSeek { get; set; } = new();\n}\n\npublic sealed class AiCloudAnthropicSettings\n{\n public string Model { get; set; } = \"claude-sonnet-4-20250514\";\n}\n\npublic sealed class AiCloudOpenAiSettings\n{\n public string BaseUrl { get; set; } = \"https://api.openai.com\";\n\n public string Model { get; set; } = \"gpt-4o\";\n}\n\npublic sealed class AiCloudDeepSeekSettings\n{\n public string BaseUrl { get; set; } = \"https://api.deepseek.com\";\n\n public string Model { get; set; } = \"deepseek-chat\";\n}\n\n/// <summary>TOML: <c>[ai.chat]</c>.</summary>\npublic sealed class AiChatSettings\n{\n /// <summary><c>mfd</c> | <c>window</c>.</summary>\n public string SettingsPresentation { get; set; } = \"mfd\";\n\n public bool ShowThinkingInHistory { get; set; } = true;\n}\n"}, "93ccfed5b94f2a499e1c6d6822bf925eb4f805f1": {"t": 1785760478.9009008, "n": 1968, "h": "211a55aeb07059f2", "c": "namespace CascadeIDE.Models;\n\n/// <summary>AI-провайдеры, модели и путь Cursor ACP (<c>[ai]</c> в <c>settings.toml</c>).</summary>\npublic sealed class AiSettings\n{\n /// <summary>Ollama-модель по умолчанию для чата (TOML: <c>default_ollama_model</c>).</summary>\n public string DefaultOllamaModel { get; set; } = \"qwen2.5-coder:7b\";\n\n /// <summary>Активный провайдер: Ollama, Anthropic, OpenAI, DeepSeek, CursorACP (TOML: <c>provider</c>).</summary>\n public string Provider { get; set; } = \"Ollama\";\n\n public string AnthropicModel { get; set; } = \"claude-sonnet-4-20250514\";\n public string OpenAiBaseUrl { get; set; } = \"https://api.openai.com\";\n public string OpenAiModel { get; set; } = \"gpt-4o\";\n public string DeepSeekBaseUrl { get; set; } = \"https://api.deepseek.com\";\n public string DeepSeekModel { get; set; } = \"deepseek-chat\";\n\n /// <summary>Путь к <c>cursor-agent.cmd</c> или каталогу с <c>dist-package\\\\cursor-agent.cmd</c>; если пусто — поиск <c>cursor-agent</c> в PATH (TOML: <c>cursor_acp_path</c>).</summary>\n public string CursorAcpPath { get; set; } = \"\";\n\n /// <summary>\n /// Где показывать «Параметры AI и чата»: <c>mfd</c> — страница вторичного контура (зона Mfd); <c>window</c> — отдельное окно со всеми настройками (TOML: <c>ai_chat_settings_presentation</c>).\n /// </summary>\n public string AiChatSettingsPresentation { get; set; } = \"mfd\";\n\n /// <summary>\n /// Не вызывать встроенный провайдер (Ollama/облако/Cursor ACP) после отправки user-сообщения — ответы только через внешний MCP (<c>send_chat</c> с <c>role=assistant</c>). TOML: <c>chat_mcp_only</c>.\n /// </summary>\n public bool ChatMcpOnly { get; set; }\n\n /// <summary>\n /// Показывать reasoning/thinking сообщения в истории после завершения ответа. Если false — thinking виден только во время стриминга. TOML: <c>show_thinking_in_history</c>.\n /// </summary>\n public bool ShowThinkingInHistory { get; set; } = true;\n}\n"}, "9616a050ff590489a09f8ee186ba41fbba03d662": {"t": 1785760482.2228022, "n": 1646, "h": "d42cf59a400f9177", "c": "namespace CascadeIDE.Models;\n\n/// <summary>AI-провайдеры, модели и путь Cursor ACP (<c>[ai]</c> в <c>settings.toml</c>).</summary>\npublic sealed class AiSettings\n{\n /// <summary>Ollama-модель по умолчанию для чата (TOML: <c>default_ollama_model</c>).</summary>\n public string DefaultOllamaModel { get; set; } = \"qwen2.5-coder:7b\";\n\n /// <summary>Активный провайдер: Ollama, Anthropic, OpenAI, DeepSeek, CursorACP (TOML: <c>provider</c>).</summary>\n public string Provider { get; set; } = \"Ollama\";\n\n public string AnthropicModel { get; set; } = \"claude-sonnet-4-20250514\";\n public string OpenAiBaseUrl { get; set; } = \"https://api.openai.com\";\n public string OpenAiModel { get; set; } = \"gpt-4o\";\n public string DeepSeekBaseUrl { get; set; } = \"https://api.deepseek.com\";\n public string DeepSeekModel { get; set; } = \"deepseek-chat\";\n\n /// <summary>Путь к <c>cursor-agent.cmd</c> или каталогу с <c>dist-package\\\\cursor-agent.cmd</c> (TOML: <c>cursor_acp_path</c>).</summary>\n public string CursorAcpPath { get; set; } = \"\";\n\n /// <summary>\n /// Где показывать «Параметры AI и чата»: <c>mfd</c> — страница вторичного контура (зона Mfd); <c>window</c> — отдельное окно со всеми настройками (TOML: <c>ai_chat_settings_presentation</c>).\n /// </summary>\n public string AiChatSettingsPresentation { get; set; } = \"mfd\";\n\n /// <summary>\n /// Не вызывать встроенный провайдер (Ollama/облако/Cursor ACP) после отправки user-сообщения — ответы только через внешний MCP (<c>send_chat</c> с <c>role=assistant</c>). TOML: <c>chat_mcp_only</c>.\n /// </summary>\n public bool ChatMcpOnly { get; set; }\n}\n"}, "713be2241fe15695a3d44fa799a83ca54f71703a": {"t": 1785760483.6246045, "n": 1676, "h": "ed9c1d287d25a3f2", "c": "namespace CascadeIDE.Models;\r\n\r\n/// <summary>AI-провайдеры, модели и путь Cursor ACP (<c>[ai]</c> в <c>settings.toml</c>).</summary>\r\npublic sealed class AiSettings\r\n{\r\n /// <summary>Ollama-модель по умолчанию для чата (TOML: <c>default_ollama_model</c>).</summary>\r\n public string DefaultOllamaModel { get; set; } = \"qwen2.5-coder:7b\";\r\n\r\n /// <summary>Активный провайдер: Ollama, Anthropic, OpenAI, DeepSeek, CursorACP (TOML: <c>provider</c>).</summary>\r\n public string Provider { get; set; } = \"Ollama\";\r\n\r\n public string AnthropicModel { get; set; } = \"claude-sonnet-4-20250514\";\r\n public string OpenAiBaseUrl { get; set; } = \"https://api.openai.com\";\r\n public string OpenAiModel { get; set; } = \"gpt-4o\";\r\n public string DeepSeekBaseUrl { get; set; } = \"https://api.deepseek.com\";\r\n public string DeepSeekModel { get; set; } = \"deepseek-chat\";\r\n\r\n /// <summary>Путь к <c>cursor-agent.cmd</c> или каталогу с <c>dist-package\\\\cursor-agent.cmd</c> (TOML: <c>cursor_acp_path</c>).</summary>\r\n public string CursorAcpPath { get; set; } = \"\";\r\n\r\n /// <summary>\r\n /// Где показывать «Параметры AI и чата»: <c>mfd</c> — страница вторичного контура (зона Mfd); <c>window</c> — отдельное окно со всеми настройками (TOML: <c>ai_chat_settings_presentation</c>).\r\n /// </summary>\r\n public string AiChatSettingsPresentation { get; set; } = \"mfd\";\r\n\r\n /// <summary>\r\n /// Не вызывать встроенный провайдер (Ollama/облако/Cursor ACP) после отправки user-сообщения — ответы только через внешний MCP (<c>send_chat</c> с <c>role=assistant</c>). TOML: <c>chat_mcp_only</c>.\r\n /// </summary>\r\n public bool ChatMcpOnly { get; set; }\r\n}\r\n"}, "b728906672d4341efff115bc806386763288954e": {"t": 1785760485.8993125, "n": 1646, "h": "d42cf59a400f9177", "c": "namespace CascadeIDE.Models;\n\n/// <summary>AI-провайдеры, модели и путь Cursor ACP (<c>[ai]</c> в <c>settings.toml</c>).</summary>\npublic sealed class AiSettings\n{\n /// <summary>Ollama-модель по умолчанию для чата (TOML: <c>default_ollama_model</c>).</summary>\n public string DefaultOllamaModel { get; set; } = \"qwen2.5-coder:7b\";\n\n /// <summary>Активный провайдер: Ollama, Anthropic, OpenAI, DeepSeek, CursorACP (TOML: <c>provider</c>).</summary>\n public string Provider { get; set; } = \"Ollama\";\n\n public string AnthropicModel { get; set; } = \"claude-sonnet-4-20250514\";\n public string OpenAiBaseUrl { get; set; } = \"https://api.openai.com\";\n public string OpenAiModel { get; set; } = \"gpt-4o\";\n public string DeepSeekBaseUrl { get; set; } = \"https://api.deepseek.com\";\n public string DeepSeekModel { get; set; } = \"deepseek-chat\";\n\n /// <summary>Путь к <c>cursor-agent.cmd</c> или каталогу с <c>dist-package\\\\cursor-agent.cmd</c> (TOML: <c>cursor_acp_path</c>).</summary>\n public string CursorAcpPath { get; set; } = \"\";\n\n /// <summary>\n /// Где показывать «Параметры AI и чата»: <c>mfd</c> — страница вторичного контура (зона Mfd); <c>window</c> — отдельное окно со всеми настройками (TOML: <c>ai_chat_settings_presentation</c>).\n /// </summary>\n public string AiChatSettingsPresentation { get; set; } = \"mfd\";\n\n /// <summary>\n /// Не вызывать встроенный провайдер (Ollama/облако/Cursor ACP) после отправки user-сообщения — ответы только через внешний MCP (<c>send_chat</c> с <c>role=assistant</c>). TOML: <c>chat_mcp_only</c>.\n /// </summary>\n public bool ChatMcpOnly { get; set; }\n}\n"}, "3493c2d1f08263e575de65a4aec1ea6fc7e58e67": {"t": 1785760489.6121445, "n": 1362, "h": "9e8c48922bde5689", "c": "namespace CascadeIDE.Models;\n\n/// <summary>AI-провайдеры, модели и путь Cursor ACP (<c>[ai]</c> в <c>settings.toml</c>).</summary>\npublic sealed class AiSettings\n{\n /// <summary>Ollama-модель по умолчанию для чата (TOML: <c>default_ollama_model</c>).</summary>\n public string DefaultOllamaModel { get; set; } = \"qwen2.5-coder:7b\";\n\n /// <summary>Активный провайдер: Ollama, Anthropic, OpenAI, DeepSeek, CursorACP (TOML: <c>provider</c>).</summary>\n public string Provider { get; set; } = \"Ollama\";\n\n public string AnthropicModel { get; set; } = \"claude-sonnet-4-20250514\";\n public string OpenAiBaseUrl { get; set; } = \"https://api.openai.com\";\n public string OpenAiModel { get; set; } = \"gpt-4o\";\n public string DeepSeekBaseUrl { get; set; } = \"https://api.deepseek.com\";\n public string DeepSeekModel { get; set; } = \"deepseek-chat\";\n\n /// <summary>Путь к <c>cursor-agent.cmd</c> или каталогу с <c>dist-package\\\\cursor-agent.cmd</c> (TOML: <c>cursor_acp_path</c>).</summary>\n public string CursorAcpPath { get; set; } = \"\";\n\n /// <summary>\n /// Где показывать «Параметры AI и чата»: <c>mfd</c> — страница вторичного контура (зона Mfd); <c>window</c> — отдельное окно со всеми настройками (TOML: <c>ai_chat_settings_presentation</c>).\n /// </summary>\n public string AiChatSettingsPresentation { get; set; } = \"mfd\";\n}\n"}, "715bc9a08e27e31f5efee1369f27ae4c509046e3": {"t": 1785760490.8713155, "n": 1099, "h": "e4d8b2c6f25bc92b", "c": "namespace CascadeIDE.Models;\r\r\n\r\r\n/// <summary>AI-провайдеры, модели и путь Cursor ACP (<c>[ai]</c> в <c>settings.toml</c>).</summary>\r\r\npublic sealed class AiSettings\r\r\n{\r\r\n /// <summary>Ollama-модель по умолчанию для чата (TOML: <c>default_ollama_model</c>).</summary>\r\r\n public string DefaultOllamaModel { get; set; } = \"qwen2.5-coder:7b\";\r\r\n\r\r\n /// <summary>Активный провайдер: Ollama, Anthropic, OpenAI, DeepSeek, CursorACP (TOML: <c>provider</c>).</summary>\r\r\n public string Provider { get; set; } = \"Ollama\";\r\r\n\r\r\n public string AnthropicModel { get; set; } = \"claude-sonnet-4-20250514\";\r\r\n public string OpenAiBaseUrl { get; set; } = \"https://api.openai.com\";\r\r\n public string OpenAiModel { get; set; } = \"gpt-4o\";\r\r\n public string DeepSeekBaseUrl { get; set; } = \"https://api.deepseek.com\";\r\r\n public string DeepSeekModel { get; set; } = \"deepseek-chat\";\r\r\n\r\r\n /// <summary>Путь к <c>cursor-agent.cmd</c> или каталогу с <c>dist-package\\\\cursor-agent.cmd</c> (TOML: <c>cursor_acp_path</c>).</summary>\r\r\n public string CursorAcpPath { get; set; } = \"\";\r\r\n}\r\r\n"}}}} |