@@ -36,11 +36,9 @@ def validate_complexity_payload(payload: object) -> list[DiagnosticIssue]:
3636 story_id = story .get ("storyId" )
3737 if not isinstance (story_id , str ) or not story_id .strip ():
3838 issues .append (_issue ("missing_field" , f"{ field } .storyId" , "non-empty string" , story_id , "Complexity storyId must be a non-empty string" ))
39- complexity = story .get ("complexity" )
40- if complexity is None :
41- complexity = {}
42- elif not isinstance (complexity , dict ):
43- issues .append (_issue ("invalid_type" , f"{ field } .complexity" , "object" , complexity , "Complexity must be an object" ))
39+ complexity , issue = _story_complexity (story , field )
40+ if issue :
41+ issues .append (issue )
4442 continue
4543 level = str (complexity .get ("level" ) or "medium" ).strip ().lower ()
4644 if level not in COMPLEXITY_LEVELS :
@@ -132,8 +130,8 @@ def build_agents_file(
132130 raise AgentPlanInputError ("complexity-file" , ValueError (message )) from None
133131
134132 stories = []
135- for story in complexity_payload .get ("stories" , []):
136- level = _story_complexity_level (story )
133+ for index , story in enumerate ( complexity_payload .get ("stories" , []) ):
134+ level = _story_complexity_level (story , f"stories[ { index } ]" )
137135 stories .append ({"storyId" : story .get ("storyId" ), "title" : str (story .get ("title" ) or "" ), "complexity" : level , "tasks" : _tasks_for (config , level )})
138136 try :
139137 epic = find_frontmatter_value (state_file , "epic" )
@@ -198,12 +196,19 @@ def _load_agents_plan_payload(path: str) -> tuple[dict[str, Any], list[Diagnosti
198196 return payload , []
199197
200198
201- def _story_complexity_level (story : dict [str , Any ]) -> str :
199+ def _story_complexity (story : dict [str , Any ], field : str ) -> tuple [ dict [ str , Any ], DiagnosticIssue | None ] :
202200 complexity = story .get ("complexity" )
203201 if complexity is None :
204- return "medium"
202+ return {}, None
205203 if not isinstance (complexity , dict ):
206- raise AgentPlanInputError ("complexity-file" , ValueError ("Complexity must be an object" ))
204+ return {}, _issue ("invalid_type" , f"{ field } .complexity" , "object" , complexity , "Complexity must be an object" )
205+ return complexity , None
206+
207+
208+ def _story_complexity_level (story : dict [str , Any ], field : str ) -> str :
209+ complexity , issue = _story_complexity (story , field )
210+ if issue :
211+ raise AgentPlanInputError ("complexity-file" , ValueError (legacy_issue_message (issue )))
207212 return str (complexity .get ("level" ) or "medium" ).strip ().lower () or "medium"
208213
209214
0 commit comments