코드 탭 워크스페이스 권한 정합성 수정 및 회귀 테스트 추가
- AgentLoopService에 RuntimeWorkFolderOverride를 추가해 Code/Cowork 실행이 settings 기본 경로보다 현재 대화 WorkFolder를 우선 사용하도록 정리 - ChatWindow에서 RunAgentLoopAsync 실행 시 conversation.WorkFolder를 루프에 직접 주입하고 사내 모드 권한 안내도 같은 런타임 워크스페이스 기준으로 맞춤 - AgentLoopE2ETests에 워크스페이스 override 우선 적용, 사내 모드 내부 경로 무승인, 외부 경로 승인 강제 회귀를 추가 - 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_workspace_permission_fix\\ -p:IntermediateOutputPath=obj\\verify_workspace_permission_fix\\ / 경고 0 오류 0 - 검증: dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter FullyQualifiedName~RunAsync_CodeRuntimeWorkspaceOverride_PrefersConversationWorkspaceOverSettingsFolder|FullyQualifiedName~RunAsync_InternalMode_BypassPermissions_AllowsWorkspaceWriteWithoutPrompt|FullyQualifiedName~RunAsync_InternalMode_BypassPermissions_RequestsApprovalForPathOutsideWorkspace|FullyQualifiedName~RunAsync_EmptyWorkspace_BlocksExternalFallbackAndRecoversToFileWrite|FullyQualifiedName~RunAsync_EmptyWorkspace_DisallowsSkillManagerAndRecoversToFileWrite|FullyQualifiedName~RunAsync_TextEmbeddedToolCall_RecoversAndExecutesFileWrite / 통과 6
This commit is contained in:
@@ -105,6 +105,13 @@ public partial class AgentLoopService
|
||||
/// <summary>현재 활성 탭 (파일명 타임스탬프 등 탭별 동작 제어용).</summary>
|
||||
public string ActiveTab { get; set; } = "Chat";
|
||||
|
||||
/// <summary>
|
||||
/// 현재 실행 턴에 강제로 사용할 워크스페이스 루트.
|
||||
/// UI/대화 메타데이터의 WorkFolder를 settings 기반 기본 경로보다 우선 적용해
|
||||
/// 권한 검사와 실제 도구 실행이 같은 폴더를 바라보도록 맞춥니다.
|
||||
/// </summary>
|
||||
public string? RuntimeWorkFolderOverride { get; set; }
|
||||
|
||||
/// <summary>현재 대화 ID (감사 로그 기록용).</summary>
|
||||
private string _conversationId = "";
|
||||
|
||||
@@ -4463,7 +4470,9 @@ public partial class AgentLoopService
|
||||
private AgentContext BuildContext()
|
||||
{
|
||||
var llm = _settings.Settings.Llm;
|
||||
var baseWorkFolder = ResolveTabWorkFolder(llm, ActiveTab);
|
||||
var baseWorkFolder = !string.IsNullOrWhiteSpace(RuntimeWorkFolderOverride)
|
||||
? RuntimeWorkFolderOverride
|
||||
: ResolveTabWorkFolder(llm, ActiveTab);
|
||||
var runtimeWorkFolder = ResolveRuntimeWorkFolder(baseWorkFolder);
|
||||
return new AgentContext
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user