| 1 | #nullable enable |
| 2 | |
| 3 | using CascadeIDE.Contracts; |
| 4 | using CascadeIDE.Models; |
| 5 | using CascadeIDE.Services; |
| 6 | |
| 7 | namespace CascadeIDE.Features.EnvironmentReadiness.DataAcquisition; |
| 8 | |
| 9 | /// <summary> |
| 10 | /// Снимок переменных окружения, которые Cascade IDE реально читает для заметок/knowledge и отладки (ADR 0023, DAL). |
| 11 | /// Значения не логируем целиком в UI — только факты проверки пути. |
| 12 | /// </summary> |
| 13 | public readonly record struct EnvironmentReadinessEnvSnapshot( |
| 14 | string? AgentNotesFile, |
| 15 | string? AgentNotesConfigPath, |
| 16 | string? NetcoreDbgPath) |
| 17 | { |
| 18 | public static EnvironmentReadinessEnvSnapshot FromCurrentProcess() => |
| 19 | new( |
| 20 | Environment.GetEnvironmentVariable(WellKnownEnv.AgentNotesFile), |
| 21 | null, |
| 22 | Environment.GetEnvironmentVariable(WellKnownEnv.NetcoreDbgPath)); |
| 23 | |
| 24 | public static EnvironmentReadinessEnvSnapshot FromSettings(CascadeIdeSettings settings) => |
| 25 | new( |
| 26 | Environment.GetEnvironmentVariable(WellKnownEnv.AgentNotesFile), |
| 27 | AgentNotesRuntimeLoader.ResolveConfigPath(settings), |
| 28 | Environment.GetEnvironmentVariable(WellKnownEnv.NetcoreDbgPath)); |
| 29 | } |
| 30 | |
| 31 | /// <summary>Имена переменных — в одном месте (совпадают с AgentNotes.Core и разрешением netcoredbg в отладке).</summary> |
| 32 | [IoBoundary] |
| 33 | public static class WellKnownEnv |
| 34 | { |
| 35 | public const string AgentNotesFile = "AGENT_NOTES_FILE"; |
| 36 | public const string NetcoreDbgPath = "NETCOREDBG_PATH"; |
| 37 | |
| 38 | /// <summary>Sentinel <c>executable_env</c> / <c>cursor_acp_path_env</c> (ADR 0149) — не переменная <c>PATH</c> процесса.</summary> |
| 39 | public const string SettingsPathLookupSentinel = SettingsEnvResolver.PathLookupSentinel; |
| 40 | |
| 41 | /// <summary>Опционально: именованная переменная с абсолютным путём, если не в PATH.</summary> |
| 42 | public const string CascadeIntercomServerExe = "CASCADE_INTERCOM_SERVER_EXE"; |
| 43 | public const string CascadeIntercomBaseUrl = "CASCADE_INTERCOM_BASE_URL"; |
| 44 | public const string CursorAcpAgentPath = "CURSOR_ACP_AGENT_PATH"; |
| 45 | } |
| 46 | |