Add subtask generation decision
Change-Id: If43efa882de08bc262fe6117af7307e97c4dfeda
diff --git a/server/llm/fake/fake.go b/server/llm/fake/fake.go
index 3735821..58185b3 100644
--- a/server/llm/fake/fake.go
+++ b/server/llm/fake/fake.go
@@ -186,6 +186,20 @@
"estimated_total_hours": 102,
"risk_assessment": "Main risks include scope creep, API integration complexity, and potential database performance issues. Mitigation strategies include regular stakeholder reviews, comprehensive API documentation, and early performance testing."
}`,
+
+ `{
+ "needs_subtasks": true,
+ "reasoning": "This task appears to be complex and multi-faceted, requiring different specialized skills including backend development, frontend work, database management, and testing. Breaking it down into subtasks would allow for better parallel execution and specialized agent assignment.",
+ "complexity_score": 8,
+ "required_skills": ["backend_development", "frontend_development", "database_design", "api_development", "testing", "deployment"]
+}`,
+
+ `{
+ "needs_subtasks": false,
+ "reasoning": "This task is straightforward and can be completed by a single agent with existing capabilities. The scope is well-defined and doesn't require multiple specialized skills or extensive coordination.",
+ "complexity_score": 3,
+ "required_skills": ["basic_development"]
+}`,
}
return &FakeProvider{
@@ -199,22 +213,34 @@
// Simulate API delay
time.Sleep(500 * time.Millisecond)
- // Check if this is a subtask analysis request
- isSubtaskRequest := false
+ // Check the type of request to provide appropriate response
+ isSubtaskAnalysisRequest := false
+ isSubtaskDecisionRequest := false
for _, msg := range req.Messages {
- if strings.Contains(msg.Content, "subtasks") || strings.Contains(msg.Content, "JSON") {
- isSubtaskRequest = true
+ if strings.Contains(msg.Content, "break it down into subtasks") || strings.Contains(msg.Content, "subtask analysis") {
+ isSubtaskAnalysisRequest = true
+ break
+ } else if strings.Contains(msg.Content, "needs to be broken down") || strings.Contains(msg.Content, "evaluate whether") {
+ isSubtaskDecisionRequest = true
break
}
}
var response string
- if isSubtaskRequest && len(f.responses) > 3 {
- // Always use the JSON subtask response for subtask requests
- response = f.responses[3] // The JSON response is at index 3
+ if isSubtaskAnalysisRequest && len(f.responses) > 3 {
+ // Use the detailed subtask analysis JSON response
+ response = f.responses[3] // The detailed JSON response is at index 3
+ } else if isSubtaskDecisionRequest && len(f.responses) > 4 {
+ // Use alternating decision responses
+ if f.index%2 == 0 {
+ response = f.responses[4] // "needs_subtasks": true
+ } else {
+ response = f.responses[5] // "needs_subtasks": false
+ }
+ f.index++
} else {
- // Get the next response (cycle through responses)
- response = f.responses[f.index%len(f.responses)]
+ // Get the next regular response (cycle through first 3)
+ response = f.responses[f.index%3] // Only cycle through first 3 responses
f.index++
}