summaryrefslogtreecommitdiff
path: root/internal/api/validate.go
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-03-07 23:53:37 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-03-08 06:23:05 +0000
commit7bd258e8f356e66147d975dfddee23f0adc5c5c1 (patch)
tree04820fa855e884ac09b5a8c983e2d425db9db112 /internal/api/validate.go
parentebdb12fc37c9c8db460827fdba1aa10e5b208cb9 (diff)
feat(api): update elaborate and validate endpoints to use AgentConfig
Diffstat (limited to 'internal/api/validate.go')
-rw-r--r--internal/api/validate.go24
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)