Add clone clearup to manager

Change-Id: I40362105fbd0c9a72c4211699e7b12d3d6c95229
diff --git a/server/agent/agent.go b/server/agent/agent.go
index fba80b7..3c092d5 100644
--- a/server/agent/agent.go
+++ b/server/agent/agent.go
@@ -184,7 +184,7 @@
 		return fmt.Errorf("failed to generate subtasks for task: %w", err)
 	}
 
-	solutionURL, err2 := a.taskManager.ProposeSubTasks(ctx, task, analysis)
+	solutionURL, err2 := a.taskManager.ProposeSubTasks(ctx, task, analysis, a.Name)
 	if err2 != nil {
 		return fmt.Errorf("failed to propose subtasks for task: %w", err2)
 	}
diff --git a/server/agent/manager.go b/server/agent/manager.go
index ea7474d..db8f27c 100644
--- a/server/agent/manager.go
+++ b/server/agent/manager.go
@@ -167,5 +167,6 @@
 				slog.String("error", err.Error()))
 		}
 	}
-	return nil
+
+	return m.taskManager.Close()
 }
diff --git a/server/config.yaml b/server/config.yaml
index 17287d6..cc65043 100644
--- a/server/config.yaml
+++ b/server/config.yaml
@@ -43,7 +43,7 @@
   #   max_tokens: 4000
   #   system_prompt_file: "/Users/shota/github/staff/operations/agents/beckend-engineer/system.md"
   - name: "ceo"
-    role: "CEO"
+    role: "ceo"
     model: "gpt-4"
     temperature: 0.3
     max_tokens: 4000
diff --git a/server/tm/git_tm/git_task_manager.go b/server/tm/git_tm/git_task_manager.go
index cca9da8..add69ef 100644
--- a/server/tm/git_tm/git_task_manager.go
+++ b/server/tm/git_tm/git_task_manager.go
@@ -534,12 +534,12 @@
 }
 
 // GenerateSubtaskPR creates a PR with the proposed subtasks
-func (gtm *GitTaskManager) ProposeSubTasks(ctx context.Context, task *tm.Task, analysis *tm.SubtaskAnalysis) (string, error) {
+func (gtm *GitTaskManager) ProposeSubTasks(ctx context.Context, task *tm.Task, analysis *tm.SubtaskAnalysis, agentName string) (string, error) {
 	branchName := generateBranchName("subtasks", task)
 	gtm.logger.Info("Creating subtask PR", slog.String("branch", branchName))
 
 	// Create Git branch and commit subtask proposal
-	if err := gtm.createSubtaskBranch(ctx, analysis, branchName); err != nil {
+	if err := gtm.createSubtaskBranch(ctx, analysis, branchName, agentName); err != nil {
 		return "", fmt.Errorf("failed to create subtask branch: %w", err)
 	}
 
@@ -556,7 +556,7 @@
 	}
 
 	// Determine base branch (try main first, fallback to master)
-	baseBranch := gtm.determineBaseBranch(ctx)
+	baseBranch := gtm.determineBaseBranch(ctx, agentName)
 	gtm.logger.Info("Using base branch", slog.String("base_branch", baseBranch))
 
 	// Create the pull request
@@ -611,9 +611,13 @@
 	return pr.URL, nil
 }
 
+func (gtm *GitTaskManager) Close() error {
+	return gtm.git.CleanupAllClones()
+}
+
 // createSubtaskBranch creates a Git branch with subtask proposal content
-func (gtm *GitTaskManager) createSubtaskBranch(ctx context.Context, analysis *tm.SubtaskAnalysis, branchName string) error {
-	clonePath, err := gtm.git.GetAgentClonePath("subtask-service")
+func (gtm *GitTaskManager) createSubtaskBranch(ctx context.Context, analysis *tm.SubtaskAnalysis, branchName, agentName string) error {
+	clonePath, err := gtm.git.GetAgentClonePath(agentName)
 	if err != nil {
 		return fmt.Errorf("failed to get clone path: %w", err)
 	}
@@ -932,9 +936,9 @@
 	return content.String()
 }
 
-func (gtm *GitTaskManager) determineBaseBranch(ctx context.Context) string {
+func (gtm *GitTaskManager) determineBaseBranch(ctx context.Context, agentName string) string {
 	// Get clone path to check branches
-	clonePath, err := gtm.git.GetAgentClonePath("subtask-service")
+	clonePath, err := gtm.git.GetAgentClonePath(agentName)
 	if err != nil {
 		gtm.logger.Warn("Failed to get clone path for base branch detection", slog.String("error", err.Error()))
 		return "main"
diff --git a/server/tm/interface.go b/server/tm/interface.go
index f50abb1..398cb74 100644
--- a/server/tm/interface.go
+++ b/server/tm/interface.go
@@ -24,6 +24,7 @@
 	GetTasksByPriority(ctx context.Context, priority TaskPriority, page, pageSize int) (*TaskList, error)
 
 	// Proposals
-	ProposeSubTasks(ctx context.Context, task *Task, analysis *SubtaskAnalysis) (string, error)
+	ProposeSubTasks(ctx context.Context, task *Task, analysis *SubtaskAnalysis, agentName string) (string, error)
 	ProposeSolution(ctx context.Context, task *Task, solution, agentName string) (string, error)
+	Close() error
 }
diff --git a/server/workspace/agent-subtask-service b/server/workspace/agent-subtask-service
deleted file mode 160000
index 40c460a..0000000
--- a/server/workspace/agent-subtask-service
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 40c460a0faca29d90591ec77a1a0263d2b6d31f0