| 1 | namespace CascadeIDE.Models; |
| 2 | |
| 3 | /// <summary>AEE policy and runner (ADR 0148 §11). TOML: <c>[agent.environment]</c>.</summary> |
| 4 | public sealed class AgentEnvironmentSettings |
| 5 | { |
| 6 | public string DefaultVerifyPolicy { get; set; } = "standard"; |
| 7 | |
| 8 | public string DefaultSandboxProfile { get; set; } = "agent_ephemeral"; |
| 9 | |
| 10 | public int RunnerMaxConcurrency { get; set; } = 2; |
| 11 | |
| 12 | public int CoalesceWindowMs { get; set; } = 1500; |
| 13 | |
| 14 | /// <summary>deny | tests_only | allow_with_audit</summary> |
| 15 | public string ShellEscapeTier { get; set; } = "deny"; |
| 16 | |
| 17 | /// <summary>agent_ephemeral | agent_worktree | in_place — для длинных autonomous run (W6).</summary> |
| 18 | public string LongRunSandboxProfile { get; set; } = "agent_worktree"; |
| 19 | |
| 20 | /// <summary>supervised-inproc | supervised-worker-process | supervised-worker-daemon</summary> |
| 21 | public string BuildVerifyHost { get; set; } = "supervised-inproc"; |
| 22 | |
| 23 | /// <summary>Абсолютный путь к <c>CascadeIDE.BuildVerifyWorker.dll</c>; пусто = авто рядом с exe / repo tools.</summary> |
| 24 | public string? BuildVerifyWorkerAssemblyPath { get; set; } |
| 25 | |
| 26 | public AgentDevServiceContractSettings DevServices { get; set; } = new(); |
| 27 | |
| 28 | public AgentEnvironmentLadderSettings Ladder { get; set; } = new(); |
| 29 | |
| 30 | public AgentEnvironmentTimeAccountingSettings TimeAccounting { get; set; } = new(); |
| 31 | } |
| 32 | |
| 33 | public sealed class AgentEnvironmentLadderSettings |
| 34 | { |
| 35 | public bool DiagnoseFilesEnabled { get; set; } = true; |
| 36 | |
| 37 | public bool TestFullRequireExplicit { get; set; } = true; |
| 38 | |
| 39 | /// <summary>open_tabs | open_tabs_and_git_dirty_cs — см. <c>AgentDiagnoseFilesCsScopeParser</c> (ADR 0148).</summary> |
| 40 | public string DiagnoseFilesCsScope { get; set; } = "open_tabs_and_git_dirty_cs"; |
| 41 | |
| 42 | /// <summary>Макс. доп. <c>.cs</c>-файлов из git diff (рабочее дерево + индекс).</summary> |
| 43 | public int DiagnoseFilesGitDirtyMaxFiles { get; set; } = 48; |
| 44 | |
| 45 | /// <summary>Добавлять в diagnose.files пути из solution warm-up (открытые/активный .cs), читая с диска если не во вкладках.</summary> |
| 46 | public bool DiagnoseFilesIncludeWarmupCs { get; set; } = true; |
| 47 | |
| 48 | /// <summary>Лимит доп. warmup-путей; 0 = как <c>solution_warmup.max_open_document_files</c>.</summary> |
| 49 | public int DiagnoseFilesWarmupMaxFiles { get; set; } |
| 50 | |
| 51 | /// <summary>test.scoped: только тесты, затронутые git-dirty <c>.cs</c> (ADR 0148 F).</summary> |
| 52 | public bool TestScopedTouchedTestsOnly { get; set; } = true; |
| 53 | } |
| 54 | |
| 55 | public sealed class AgentEnvironmentTimeAccountingSettings |
| 56 | { |
| 57 | public bool ShowInChat { get; set; } = true; |
| 58 | |
| 59 | public bool PfdInstrumentEnabled { get; set; } = true; |
| 60 | |
| 61 | /// <summary>Краткие строки build/test в чат (W3).</summary> |
| 62 | public bool ShowTaskProgressInChat { get; set; } = true; |
| 63 | |
| 64 | /// <summary>0 = выкл; иначе порог без фокуса CIDE для idle_user (W3+).</summary> |
| 65 | public int IdleUserThresholdMs { get; set; } |
| 66 | } |
| 67 | |