Initial commit to new repository

This commit is contained in:
2026-04-03 18:22:19 +09:00
commit 4458bb0f52
7672 changed files with 452440 additions and 0 deletions

View File

@@ -0,0 +1,75 @@
using AxCopilot.Models;
namespace AxCopilot.Services.Agent;
public partial class AgentLoopService
{
private static (bool ShouldRun, List<LlmService.ContentBlock> ParallelBatch, List<LlmService.ContentBlock> SequentialBatch)
CreateParallelExecutionPlan(bool parallelEnabled, List<LlmService.ContentBlock> toolCalls)
{
if (!parallelEnabled || toolCalls.Count <= 1)
return (false, new List<LlmService.ContentBlock>(), toolCalls);
var (parallelBatch, sequentialBatch) = ClassifyToolCalls(toolCalls);
return (true, parallelBatch, sequentialBatch);
}
private static (
string? LastFailedToolSignature,
int RepeatedFailedToolSignatureCount,
int ConsecutiveErrors,
bool CanRetry)
ComputeFailureTransitionState(
string currentToolCallSignature,
string? lastFailedToolSignature,
int repeatedFailedToolSignatureCount,
int consecutiveErrors,
int maxRetry)
{
if (string.Equals(lastFailedToolSignature, currentToolCallSignature, StringComparison.Ordinal))
repeatedFailedToolSignatureCount++;
else
{
lastFailedToolSignature = currentToolCallSignature;
repeatedFailedToolSignatureCount = 1;
}
consecutiveErrors++;
var canRetry = consecutiveErrors <= maxRetry;
return (lastFailedToolSignature, repeatedFailedToolSignatureCount, consecutiveErrors, canRetry);
}
private static bool ShouldRunPostToolVerification(
string? activeTab,
string? toolName,
bool toolSucceeded,
bool codeVerificationEnabled,
bool coworkVerificationEnabled)
{
if (!toolSucceeded || string.IsNullOrWhiteSpace(toolName))
return false;
if (string.Equals(activeTab, "Code", StringComparison.OrdinalIgnoreCase))
return codeVerificationEnabled && IsCodeVerificationTarget(toolName);
return coworkVerificationEnabled && IsDocumentCreationTool(toolName);
}
private static (bool ShouldContinue, string? TerminalResponse, string? ToolResultMessage) EvaluateDevStepDecision(string? decision)
{
if (string.Equals(decision, "중단", StringComparison.Ordinal))
return (false, "사용자가 개발자 모드에서 실행을 중단했습니다.", null);
if (string.Equals(decision, "건너뛰기", StringComparison.Ordinal))
return (true, null, "[SKIPPED by developer] 사용자가 이 도구 실행을 건너뛰었습니다.");
return (false, null, null);
}
private static (bool ShouldContinue, string? TerminalResponse, string? ToolResultMessage) EvaluateScopeDecision(string? decision)
{
if (string.Equals(decision, "취소", StringComparison.Ordinal))
return (false, "사용자가 작업을 취소했습니다.", null);
if (string.Equals(decision, "건너뛰기", StringComparison.Ordinal))
return (true, null, "[SKIPPED] 사용자가 이 작업을 건너뛰었습니다.");
return (false, null, null);
}
}