from pydantic import Field from typing_extensions import ( Annotated ) import operator from typing import ( Optional, Annotated, Sequence, List ) from dataclasses import dataclass from typing import Optional from langchain_core.messages import ( BaseMessage, ) from ea4all.src.ea4all_gra.data import ( ListRequirement, ListObjective, UserJourney, StakeholderList, BusinessCapability, ) from ea4all.src.ea4all_gra.state import InputState # Task-1 Graph State @dataclass(kw_only=True) class Task1State(InputState): """ Represents the BusinessOutput state of our graph. Attributes: message: a message is added after each team member finishes team_members: the team members are tracked so they are aware of the others' skill-sets next: used to route work. The supervisor calls a function that will update this every time it makes a decision requirement: list of business requirements intent: business objective, goal userjourney: list of user journeys stakeholder: list of stakeholder and their concerns capability: list of business capabilities to deliver intent and requirements """ #messages: Optional[Annotated[Sequence[BaseMessage], operator.add]] business_query: str team_members: Optional[List[str]] requirement: Optional[ListRequirement] intent: Optional[ListObjective] userjourney: Optional[UserJourney] stakeholder: Optional[StakeholderList] biz_capability: Optional[BusinessCapability] next: Optional[str]