diff options
Diffstat (limited to 'internal/api/validate.go')
| -rw-r--r-- | internal/api/validate.go | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/internal/api/validate.go b/internal/api/validate.go index d8ebde9..a3b2cf0 100644 --- a/internal/api/validate.go +++ b/internal/api/validate.go @@ -12,7 +12,7 @@ import ( const validateTimeout = 20 * time.Second -const validateSystemPrompt = `You are a task instruction reviewer for Claudomator, an AI task runner that executes tasks by running Claude as a subprocess. +const validateSystemPrompt = `You are a task instruction reviewer for Claudomator, an AI task runner that executes tasks by running Claude or Gemini as a subprocess. Analyze the given task name and instructions for clarity and completeness. @@ -54,11 +54,12 @@ func (s *Server) validateBinaryPath() string { func (s *Server) handleValidateTask(w http.ResponseWriter, r *http.Request) { var input struct { Name string `json:"name"` - Claude struct { + Agent struct { + Type string `json:"type"` Instructions string `json:"instructions"` WorkingDir string `json:"working_dir"` AllowedTools []string `json:"allowed_tools"` - } `json:"claude"` + } `json:"agent"` } if err := json.NewDecoder(r.Body).Decode(&input); err != nil { writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid JSON: " + err.Error()}) @@ -68,17 +69,22 @@ func (s *Server) handleValidateTask(w http.ResponseWriter, r *http.Request) { writeJSON(w, http.StatusBadRequest, map[string]string{"error": "name is required"}) return } - if input.Claude.Instructions == "" { + if input.Agent.Instructions == "" { writeJSON(w, http.StatusBadRequest, map[string]string{"error": "instructions are required"}) return } - userMsg := fmt.Sprintf("Task name: %s\n\nInstructions:\n%s", input.Name, input.Claude.Instructions) - if input.Claude.WorkingDir != "" { - userMsg += fmt.Sprintf("\n\nWorking directory: %s", input.Claude.WorkingDir) + agentType := input.Agent.Type + if agentType == "" { + agentType = "claude" } - if len(input.Claude.AllowedTools) > 0 { - userMsg += fmt.Sprintf("\n\nAllowed tools: %v", input.Claude.AllowedTools) + + userMsg := fmt.Sprintf("Task name: %s\nAgent: %s\n\nInstructions:\n%s", input.Name, agentType, input.Agent.Instructions) + if input.Agent.WorkingDir != "" { + userMsg += fmt.Sprintf("\n\nWorking directory: %s", input.Agent.WorkingDir) + } + if len(input.Agent.AllowedTools) > 0 { + userMsg += fmt.Sprintf("\n\nAllowed tools: %v", input.Agent.AllowedTools) } ctx, cancel := context.WithTimeout(r.Context(), validateTimeout) |
