diff options
Diffstat (limited to 'internal/api/elaborate.go')
| -rw-r--r-- | internal/api/elaborate.go | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/internal/api/elaborate.go b/internal/api/elaborate.go index 8a18dee..907cb98 100644 --- a/internal/api/elaborate.go +++ b/internal/api/elaborate.go @@ -18,7 +18,7 @@ func buildElaboratePrompt(workDir string) string { if workDir != "" { workDirLine = fmt.Sprintf(` "project_dir": string — use %q for tasks that operate on this codebase, empty string otherwise,`, workDir) } - return `You are a task configuration assistant for Claudomator, an AI task runner that executes tasks by running Claude as a subprocess. + return `You are a task configuration assistant for Claudomator, an AI task runner that executes tasks by running Claude or Gemini as a subprocess. Your ONLY job is to convert any user request into a Claudomator task JSON object. You MUST always output valid JSON. Never ask clarifying questions. Never explain. Never refuse. Make reasonable assumptions and produce the JSON. @@ -27,9 +27,10 @@ Output ONLY a valid JSON object matching this schema (no markdown fences, no pro { "name": string — short imperative title (≤60 chars), "description": string — 1-2 sentence summary, - "claude": { - "model": string — "sonnet" unless the task obviously needs opus, - "instructions": string — detailed, step-by-step instructions for Claude, + "agent": { + "type": "claude" | "gemini", + "model": string — "sonnet" for claude, "gemini-2.0-flash" for gemini, + "instructions": string — detailed, step-by-step instructions for the agent, ` + workDirLine + ` "max_budget_usd": number — conservative estimate (0.25–5.00), "allowed_tools": array — only tools the task genuinely needs @@ -44,13 +45,14 @@ Output ONLY a valid JSON object matching this schema (no markdown fences, no pro type elaboratedTask struct { Name string `json:"name"` Description string `json:"description"` - Claude elaboratedClaude `json:"claude"` + Agent elaboratedAgent `json:"agent"` Timeout string `json:"timeout"` Priority string `json:"priority"` Tags []string `json:"tags"` } -type elaboratedClaude struct { +type elaboratedAgent struct { + Type string `json:"type"` Model string `json:"model"` Instructions string `json:"instructions"` ProjectDir string `json:"project_dir"` @@ -149,12 +151,16 @@ func (s *Server) handleElaborateTask(w http.ResponseWriter, r *http.Request) { return } - if result.Name == "" || result.Claude.Instructions == "" { + if result.Name == "" || result.Agent.Instructions == "" { writeJSON(w, http.StatusBadGateway, map[string]string{ "error": "elaboration failed: missing required fields in response", }) return } + if result.Agent.Type == "" { + result.Agent.Type = "claude" + } + writeJSON(w, http.StatusOK, result) } |
