변경 목적: - AX Agent의 도구 이름, 내부 설정, 스킬 정책, 실행 루프 사이의 불일치를 줄이고 전체 동작 품질을 높인다. - claw-code 수준의 일관된 동작 품질을 참고하되 AX 구조에 맞는 고유한 카탈로그·정규화 레이어로 재구성한다. 핵심 수정사항: - 도구 canonical id, legacy alias, 탭 노출, 설정 카테고리, read-only 분류를 중앙 카탈로그로 통합했다. - ToolRegistry, AgentLoopService, 병렬 실행 분류, 권한 처리, 훅 처리, 스킬 allowed-tools 해석이 같은 이름 체계를 사용하도록 정리했다. - Agent 설정/일반 설정/도움말의 도구 카드와 훅 편집기, 스킬 설명을 현재 런타임 구조에 맞게 갱신했다. - 컨텍스트 압축, intent gate, spawn agents, session learning, model prompt adapter, workspace context 관련 변경과 테스트 추가를 함께 반영했다. - 문서 이력과 비교/로드맵 문서를 최신 상태로 갱신했다. 검증 결과: - dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify_toolcat\ -p:IntermediateOutputPath=obj\verify_toolcat\ : 경고 0 / 오류 0 - dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter AgentToolCatalogTests -p:OutputPath=bin\verify_toolcat_tests\ -p:IntermediateOutputPath=obj\verify_toolcat_tests\ : 통과 8
56 lines
1.8 KiB
C#
56 lines
1.8 KiB
C#
using AxCopilot.Models;
|
|
using AxCopilot.Services.Agent;
|
|
using FluentAssertions;
|
|
using Xunit;
|
|
|
|
namespace AxCopilot.Tests.Services;
|
|
|
|
public class AgentTabSettingsResolverTests
|
|
{
|
|
[Theory]
|
|
[InlineData("Code", true, false)]
|
|
[InlineData("Cowork", false, true)]
|
|
[InlineData("Chat", false, false)]
|
|
[InlineData(null, false, false)]
|
|
public void TabDetection_ShouldMatchExpected(string? tab, bool isCode, bool isCowork)
|
|
{
|
|
AgentTabSettingsResolver.IsCodeTab(tab).Should().Be(isCode);
|
|
AgentTabSettingsResolver.IsCoworkTab(tab).Should().Be(isCowork);
|
|
}
|
|
|
|
[Fact]
|
|
public void IsPostToolVerificationEnabled_ShouldUseTabSpecificFlags()
|
|
{
|
|
var llm = new LlmSettings
|
|
{
|
|
EnableCoworkVerification = true,
|
|
Code = new CodeSettings
|
|
{
|
|
EnableCodeVerification = false,
|
|
}
|
|
};
|
|
|
|
AgentTabSettingsResolver.IsPostToolVerificationEnabled("Cowork", llm).Should().BeTrue();
|
|
AgentTabSettingsResolver.IsPostToolVerificationEnabled("Code", llm).Should().BeFalse();
|
|
AgentTabSettingsResolver.IsPostToolVerificationEnabled("Chat", llm).Should().BeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void EnumerateCodeTabDisabledTools_ShouldReflectCodeSettings()
|
|
{
|
|
var code = new CodeSettings
|
|
{
|
|
EnableWorktreeTools = true,
|
|
EnableTeamTools = false,
|
|
EnableCronTools = false,
|
|
};
|
|
|
|
var disabled = AgentTabSettingsResolver.EnumerateCodeTabDisabledTools(code).ToList();
|
|
|
|
disabled.Should().Contain(["enter_plan_mode", "exit_plan_mode"]);
|
|
disabled.Should().Contain(["team_create", "team_delete"]);
|
|
disabled.Should().Contain(["cron_create", "cron_delete", "cron_list"]);
|
|
disabled.Should().NotContain(["enter_worktree", "exit_worktree"]);
|
|
}
|
|
}
|