import os from typing import TypedDict, List, Dict, Any, Optional from enum import Enum # 1) Core Tasks class Available_Tasks(Enum): LAPTOP_CHOOSE = "LAPTOP_CHOOSE" QUESTION = "QUESTION" # EAG of well known ROADMAP = "ROADMAP" PROGRAMMING = "PROGRAMMING" GENERAL = "GENERAL" # last option with notice HELLO = "HELLO" # this is to generally detect hello , but in use update_context prompt control to not classify it as core type # 2) Task Steps task_steps = { Available_Tasks.GENERAL.value : [], Available_Tasks.LAPTOP_CHOOSE.value : ["price","usage","other_concern"], Available_Tasks.QUESTION.value : [], Available_Tasks.PROGRAMMING.value : [], Available_Tasks.ROADMAP.value : ["career","level","experience","skills"], Available_Tasks.HELLO.value : [] } # 3) Tasks State class ProblemState(TypedDict): # main question: str answer: Optional[str] node_output_article : Optional[str] memory: List[Dict[str, Any]] # filled by list of Human/Sytem messages ... as in gui # to do lists # same as defined in task_Steps question_type : Optional[str] # --> must be of Available_Tasks values price : Optional[str] usage : Optional[str] other_concern : Optional[str] career : Optional[str] level : Optional[str] experience : Optional[List[str]] skills : Optional[List[str]] all_ok : Optional[bool] # Models llm: Optional[Any] rag_model: Optional[Any]