| 1 | # CascadeIDE — заводские дефолты (шипнутый слой, ADR 0028). |
| 2 | # EmbeddedResource + Settings/defaults-settings.toml рядом с exe. |
| 3 | # Merge: %LocalAppData%\CascadeIDE\settings.toml поверх этого файла. |
| 4 | # |
| 5 | # Соглашение: |
| 6 | # - Пути/URL с каноном — явное значение (относительно CascadeIDE.exe, workspace или LocalAppData — см. комментарий). |
| 7 | # - Пустая строка только там, где «выключено / поиск в PATH / выбор позже» — всегда с комментарием. |
| 8 | # Расширенный пример: docs/samples/settings.toml |
| 9 | |
| 10 | [display.screens] |
| 11 | topology = "(F)" |
| 12 | |
| 13 | [display.presentation] |
| 14 | tier = "auto" |
| 15 | cockpit_min_total_width_px = 4800 |
| 16 | cockpit_min_anchor_width_px = 1280 |
| 17 | compact_intercom_placement = "side" |
| 18 | compact_auxiliary_panel_width_px = 380 |
| 19 | ultrawide_cockpit_enabled = true |
| 20 | tier_first_run_completed = false |
| 21 | |
| 22 | [display.screens.grammar] |
| 23 | brackets = "()" |
| 24 | between_screens = " " |
| 25 | between_zones = "+" |
| 26 | pfd = "P" |
| 27 | forward = "F" |
| 28 | mfd = "M" |
| 29 | |
| 30 | [display] |
| 31 | maximize_hosts_on_dedicated_screens = true |
| 32 | prefer_repo_instruments = false |
| 33 | |
| 34 | [display.pfd] |
| 35 | open_on_startup = false |
| 36 | |
| 37 | [display.mfd] |
| 38 | open_on_startup = false |
| 39 | |
| 40 | [display.skia] |
| 41 | zone_geometry_overlay = false |
| 42 | instrument_mount = false |
| 43 | |
| 44 | [display.mount] |
| 45 | default_style = "instrument_mount_v1" |
| 46 | enforce_eligibility = false |
| 47 | min_sa = 0.6 |
| 48 | min_performance = 0.6 |
| 49 | max_workload = 0.5 |
| 50 | require_scores = false |
| 51 | |
| 52 | [[display.mount.rules]] |
| 53 | surface = "main_window_docked_grid" |
| 54 | slot = "pfd" |
| 55 | instrument = "ide_health_status_v1" |
| 56 | style = "instrument_mount_v1" |
| 57 | sa_score = 0.8 |
| 58 | performance_score = 0.8 |
| 59 | workload_score = 0.2 |
| 60 | |
| 61 | [[display.mount.rules]] |
| 62 | surface = "main_window_plus_mfd_host_top_level" |
| 63 | slot = "mfd" |
| 64 | instrument = "ide_health_status_v1" |
| 65 | style = "instrument_mount_v1" |
| 66 | sa_score = 0.75 |
| 67 | performance_score = 0.72 |
| 68 | workload_score = 0.28 |
| 69 | |
| 70 | [display.instruments] |
| 71 | pfd_primary = "workspace_map" |
| 72 | pfd_status_strip = "background_status" |
| 73 | forward_status_strip = "background_status" |
| 74 | |
| 75 | [ai] |
| 76 | # local | acp | mcp_only | cloud |
| 77 | mode = "local" |
| 78 | |
| 79 | [ai.local] |
| 80 | backend = "ollama" |
| 81 | |
| 82 | [ai.local.ollama] |
| 83 | model = "qwen2.5-coder:7b" |
| 84 | |
| 85 | [ai.acp] |
| 86 | cursor_acp_path = "" |
| 87 | # PATH = поиск cursor-agent в PATH; иначе имя переменной с путём (ADR 0149) |
| 88 | cursor_acp_path_env = "PATH" |
| 89 | # Пусто = модель из session/new или дефолт ACP |
| 90 | cursor_acp_model_id = "" |
| 91 | |
| 92 | [ai.mcp_only] |
| 93 | |
| 94 | [ai.cloud] |
| 95 | active_provider = "anthropic" |
| 96 | |
| 97 | [ai.cloud.anthropic] |
| 98 | model = "claude-sonnet-4-20250514" |
| 99 | |
| 100 | [ai.cloud.openai] |
| 101 | base_url = "https://api.openai.com" |
| 102 | model = "gpt-4o" |
| 103 | |
| 104 | [ai.cloud.deepseek] |
| 105 | base_url = "https://api.deepseek.com" |
| 106 | model = "deepseek-chat" |
| 107 | |
| 108 | [ai.chat] |
| 109 | # mfd | window |
| 110 | settings_presentation = "mfd" |
| 111 | show_thinking_in_history = true |
| 112 | |
| 113 | [mcp] |
| 114 | acp_auto_inject_ide_mcp = true |
| 115 | external_servers_json = "[]" |
| 116 | # Пусто = только inline JSON выше; иначе путь относительно %LocalAppData%\CascadeIDE\ |
| 117 | external_servers_json_path = "" |
| 118 | |
| 119 | [hybrid_index] |
| 120 | enabled = true |
| 121 | # Относительно корня workspace |
| 122 | index_dir = ".hybrid-codebase-index" |
| 123 | debounce_ms = 750 |
| 124 | auto_reindex_on_solution_open = true |
| 125 | watch_files = true |
| 126 | scope_mode = "workspace+solution" |
| 127 | pause_when_mcp_stdio_host = false |
| 128 | |
| 129 | [solution_warmup] |
| 130 | enabled = true |
| 131 | warm_active_file_on_solution_open = true |
| 132 | warm_feed_anchors_after_symbol_sidecar = true |
| 133 | warm_open_documents = true |
| 134 | warm_recent_cs_files = true |
| 135 | max_parallel_file_jobs = 2 |
| 136 | max_open_document_files = 6 |
| 137 | show_background_status_on_pfd = true |
| 138 | |
| 139 | [command_palette.go_to_search] |
| 140 | backend = "rg" |
| 141 | |
| 142 | [agent.environment] |
| 143 | default_verify_policy = "standard" |
| 144 | default_sandbox_profile = "agent_ephemeral" |
| 145 | runner_max_concurrency = 2 |
| 146 | coalesce_window_ms = 1500 |
| 147 | # deny | tests_only | allow_with_audit |
| 148 | shell_escape_tier = "deny" |
| 149 | |
| 150 | # agent_worktree | agent_ephemeral | in_place — для batch/long autonomous verify (W6) |
| 151 | long_run_sandbox_profile = "agent_worktree" |
| 152 | # supervised-inproc | supervised-worker-process | supervised-worker-daemon (opt-in long-lived IPC) |
| 153 | build_verify_host = "supervised-inproc" |
| 154 | # Пусто = авто (рядом с CascadeIDE.exe или tools/ в dev) |
| 155 | # build_verify_worker_assembly_path = "" |
| 156 | |
| 157 | [agent.environment.dev_services] |
| 158 | require_config_override = true |
| 159 | gate_test_scoped_on_violation = true |
| 160 | |
| 161 | [agent.environment.ladder] |
| 162 | diagnose_files_enabled = true |
| 163 | test_full_require_explicit = true |
| 164 | test_scoped_touched_tests_only = true |
| 165 | # open_tabs — только вкладки; open_tabs_and_git_dirty_cs — + .cs из git diff / --cached в workspace. |
| 166 | diagnose_files_cs_scope = "open_tabs_and_git_dirty_cs" |
| 167 | diagnose_files_git_dirty_max_files = 48 |
| 168 | # + .cs из solution warm-up (открытые/активный), с диска если не во вкладке |
| 169 | diagnose_files_include_warmup_cs = true |
| 170 | # 0 = как solution_warmup.max_open_document_files |
| 171 | diagnose_files_warmup_max_files = 0 |
| 172 | |
| 173 | [agent.environment.time_accounting] |
| 174 | show_in_chat = true |
| 175 | pfd_instrument_enabled = true |
| 176 | show_task_progress_in_chat = true |
| 177 | # 0 = idle_user выкл |
| 178 | idle_user_threshold_ms = 0 |
| 179 | |
| 180 | [agent.harness] |
| 181 | load_hot_context_on_session_start = true |
| 182 | load_hot_context_on_topic_fork = true |
| 183 | checkpoint_enabled = true |
| 184 | checkpoint_threshold_user_turns = 40 |
| 185 | checkpoint_repeat_every_user_turns = 40 |
| 186 | auto_verify_after_cs_write = true |
| 187 | # interim 0082: MAF/cloud = in-proc; suppress second CascadeIDE for Cursor ACP |
| 188 | suppress_acp_ide_stdio_inject = true |
| 189 | checkpoint_on_context_pressure = true |
| 190 | context_pressure_thread_message_threshold = 60 |
| 191 | context_pressure_repeat_every_messages = 30 |
| 192 | inject_harness_telemetry_in_context = true |
| 193 | context_warn_pct = 75 |
| 194 | inject_topic_fork_brief = true |
| 195 | # topic_fork_brief_template = "" |
| 196 | |
| 197 | [agent_notes] |
| 198 | # Пусто = встроенный agent-notes; иначе путь относительно %LocalAppData%\CascadeIDE\ |
| 199 | config_path = "" |
| 200 | config_path_env = "" |
| 201 | # Пусто = без overlay; иначе каталог с knowledge/ поверх KB-Base |
| 202 | kb_base_overlay_path = "" |
| 203 | kb_base_overlay_path_env = "" |
| 204 | |
| 205 | [workspace] |
| 206 | pfd_expanded = false |
| 207 | show_terminal = true |
| 208 | show_git = false |
| 209 | show_instrumentation = true |
| 210 | mode = "Flight" |
| 211 | # Пусто = язык UI из ОС / thread culture |
| 212 | culture = "" |
| 213 | splitters_locked = false |
| 214 | # editor | intercom |
| 215 | primary_work_surface = "intercom" |
| 216 | |
| 217 | [workspace.solution_explorer] |
| 218 | track_active_item = true |
| 219 | compact_tree = true |
| 220 | |
| 221 | [code_navigation_map] |
| 222 | # list | graph | both |
| 223 | view = "graph" |
| 224 | # file | controlFlow |
| 225 | depth = "file" |
| 226 | # glance | normal | inspect |
| 227 | detail_level = "normal" |
| 228 | # radial | top_down | bottom_up — укладка related-files на PFD (не solution explorer) |
| 229 | related_graph_layout = "top_down" |
| 230 | # auto | vertical | horizontal — главная ось потока на мини-карте control-flow |
| 231 | control_flow_main_axis = "auto" |
| 232 | # intent (деф.) | detailed — зерно subgraph control-flow: намерение vs пошаговый CFG (ADR 0151) |
| 233 | control_flow_grain = "intent" |
| 234 | # id активного пресета: бандл → .cascade/workspace.toml → settings ([[code_navigation_map.condition_branch.presets]]) |
| 235 | condition_branch_label_preset = "plus_minus" |
| 236 | # при preset = custom — подписи на секции (не из таблицы): |
| 237 | # condition_branch_positive = "+" |
| 238 | # condition_branch_negative = "-" |
| 239 | # [[code_navigation_map.condition_branch.presets]] |
| 240 | # id = "ja" |
| 241 | # positive = "はい" |
| 242 | # negative = "いいえ" |
| 243 | |
| 244 | [languages.csharp] |
| 245 | # ParseOnly | OmniSharp | CSharpLs | Custom |
| 246 | mode = "OmniSharp" |
| 247 | |
| 248 | [languages.csharp.parse_only] |
| 249 | executable = "" |
| 250 | arguments = "" |
| 251 | |
| 252 | [languages.csharp.omni_sharp] |
| 253 | executable = "" |
| 254 | # PATH = явно искать OmniSharp в PATH (ADR 0149); иначе имя переменной с абсолютным путём |
| 255 | executable_env = "PATH" |
| 256 | arguments = "" |
| 257 | arguments_env = "" |
| 258 | |
| 259 | [languages.csharp.csharp_ls] |
| 260 | executable = "" |
| 261 | executable_env = "PATH" |
| 262 | arguments = "" |
| 263 | arguments_env = "" |
| 264 | |
| 265 | [languages.csharp.custom] |
| 266 | executable = "" |
| 267 | arguments = "" |
| 268 | |
| 269 | [languages.markdown] |
| 270 | # Off | Marksman | Custom |
| 271 | mode = "Marksman" |
| 272 | |
| 273 | [languages.markdown.off] |
| 274 | executable = "" |
| 275 | arguments = "" |
| 276 | |
| 277 | [languages.markdown.marksman] |
| 278 | executable = "" |
| 279 | executable_env = "PATH" |
| 280 | arguments = "" |
| 281 | arguments_env = "" |
| 282 | |
| 283 | [languages.markdown.custom] |
| 284 | executable = "" |
| 285 | arguments = "" |
| 286 | |
| 287 | [markdown.diagrams] |
| 288 | kroki = true |
| 289 | kroki_url = "https://kroki.io" |
| 290 | |
| 291 | [fonts.intercom] |
| 292 | prose_pt = 14 |
| 293 | prose_pt_forward = 14 |
| 294 | composer_pt = 16 |
| 295 | command_line_pt = 15 |
| 296 | chrome_title_pt = 14 |
| 297 | chrome_subtitle_pt = 11 |
| 298 | chrome_heading_pt = 15 |
| 299 | card_title_pt = 15 |
| 300 | panel_title_pt = 16 |
| 301 | panel_subtitle_pt = 12 |
| 302 | panel_label_pt = 13 |
| 303 | panel_input_pt = 15 |
| 304 | panel_body_pt = 16 |
| 305 | prose_family = "Segoe UI" |
| 306 | mono_family = "Cascadia Mono,Consolas" |
| 307 | chip_family = "Segoe UI" |
| 308 | chip_id_family = "Consolas" |
| 309 | slash_meta_family = "Consolas" |
| 310 | slash_args_family = "Consolas" |
| 311 | role_family = "Segoe UI" |
| 312 | gutter_family = "Cascadia Mono,Consolas" |
| 313 | |
| 314 | [fonts.editor] |
| 315 | size_pt = 14 |
| 316 | family = "Consolas,Cascadia Code,monospace" |
| 317 | |
| 318 | # Forward editor host (ADR 0162): avalonia_edit | monaco_webview2 |
| 319 | [editor] |
| 320 | forward_host = "monaco_webview2" |
| 321 | |
| 322 | [editor.inline_hints] |
| 323 | enabled = true |
| 324 | parameter_names = true |
| 325 | variable_types = true |
| 326 | |
| 327 | [editor.debug_hints] |
| 328 | enabled = true |
| 329 | show_assignments = true |
| 330 | show_conditions = true |
| 331 | |
| 332 | [intercom] |
| 333 | # comfortable | compact |
| 334 | feed_metrics = "comfortable" |
| 335 | # left | right | highlight_only |
| 336 | tci_validation_icon = "right" |
| 337 | |
| 338 | [intercom.attachments.code] |
| 339 | # reveal | select |
| 340 | navigate = "reveal" |
| 341 | # when_needed | never |
| 342 | reveal_load_solution = "when_needed" |
| 343 | |
| 344 | [intercom.transport] |
| 345 | enabled = false |
| 346 | base_url = "http://127.0.0.1:5080" |
| 347 | base_url_env = "" |
| 348 | local_server_path = "tools/intercom-service/IntercomService.exe" |
| 349 | local_server_path_env = "" |
| 350 | # Пусто = после Connect / resolve workspace (не путь к файлу) |
| 351 | team_id = "" |
| 352 | # Пусто = topic general на сервере |
| 353 | default_topic_id = "" |
| 354 | oauth_provider = "github" |
| 355 | # DEV: Bearer для curl/локальных тестов; пусто = только OAuth |
| 356 | dev_team_token = "" |
| 357 | sse_reconnect_backoff_ms = 1000 |
| 358 | auto_connect_on_send = true |
| 359 | sync_agent_channel_messages = true |
| 360 | |
| 361 | [logging.intercom] |
| 362 | send_trace = false |
| 363 | |